diff --git a/core/.eslintrc.json b/core/.eslintrc.json
index 30ee0e48bd..1be0438f3b 100644
--- a/core/.eslintrc.json
+++ b/core/.eslintrc.json
@@ -45,6 +45,7 @@
       "requireReturn": false
     }],
     "no-unused-vars": ["warn"],
-    "operator-linebreak": ["error", "after", { "overrides": { "?": "ignore", ":": "ignore" } }]
+    "operator-linebreak": ["error", "after", { "overrides": { "?": "ignore", ":": "ignore" } }],
+    "yml/indent": ["error", 2]
   }
 }
diff --git a/core/.stylelintrc.json b/core/.stylelintrc.json
index e4379aaf36..606735f2dc 100644
--- a/core/.stylelintrc.json
+++ b/core/.stylelintrc.json
@@ -464,7 +464,7 @@
     "selector-pseudo-element-colon-notation": null,
     "shorthand-property-no-redundant-values": null,
     "string-quotes": "double",
-    "unit-allowed-list": ["ch", "deg", "em", "ex", "fr", "ms", "rem", "%", "s", "px", "vw", "vh"],
+    "unit-allowed-list": ["ch", "deg", "dpcm", "em", "ex", "fr", "ms", "rem", "%", "s", "px", "vw", "vh"],
     "value-keyword-case": ["lower", {
       "camelCaseSvgKeywords": true,
       "ignoreProperties": [
diff --git a/core/MAINTAINERS.txt b/core/MAINTAINERS.txt
index b4683f4f99..757ae6ac10 100644
--- a/core/MAINTAINERS.txt
+++ b/core/MAINTAINERS.txt
@@ -158,9 +158,10 @@ Cron
 
 CSS
 - John Albin Wilkins 'JohnAlbin' https://www.drupal.org/u/johnalbin
+- Mike Herchel 'mherchel' https://www.drupal.org/u/mherchel
 
 Database API
-- ?
+- David Bekker 'daffie' https://www.drupal.org/u/daffie
 
   MySQL DB driver
   - David Strauss 'David Strauss' https://www.drupal.org/u/david-strauss
diff --git a/core/assets/scaffold/files/default.services.yml b/core/assets/scaffold/files/default.services.yml
index ff6797d954..b4d27e05a5 100644
--- a/core/assets/scaffold/files/default.services.yml
+++ b/core/assets/scaffold/files/default.services.yml
@@ -93,6 +93,21 @@ parameters:
     # Disabling the Twig cache is not recommended in production environments.
     # @default true
     cache: true
+    # File extensions:
+    #
+    # List of file extensions the Twig system is allowed to load via the
+    # twig.loader.filesystem service. Files with other extensions will not be
+    # loaded unless they are added here. For example, to allow a file named
+    # 'example.partial' to be loaded, add 'partial' to this list. To load files
+    # with no extension, add an empty string '' to the list.
+    #
+    # @default ['css', 'html', 'js', 'svg', 'twig']
+    allowed_file_extensions:
+      - css
+      - html
+      - js
+      - svg
+      - twig
   renderer.config:
     # Renderer required cache contexts:
     #
@@ -132,6 +147,14 @@ parameters:
       #
       # @default []
       tags: []
+    # Renderer cache debug:
+    #
+    # Allows cache debugging output for each rendered element.
+    #
+    # Enabling render cache debugging is not recommended in production
+    # environments.
+    # @default false
+    debug: false
   # Cacheability debugging:
   #
   # Responses with cacheability metadata (CacheableResponseInterface instances)
@@ -146,15 +169,15 @@ parameters:
   # @default false
   http.response.debug_cacheability_headers: false
   factory.keyvalue: {}
-    # Default key/value storage service to use.
-    # @default keyvalue.database
-    # default: keyvalue.database
-    # Collection-specific overrides.
-    # state: keyvalue.database
+  # Default key/value storage service to use.
+  # @default keyvalue.database
+  # default: keyvalue.database
+  # Collection-specific overrides.
+  # state: keyvalue.database
   factory.keyvalue.expirable: {}
-    # Default key/value expirable storage service to use.
-    # @default keyvalue.database.expirable
-    # default: keyvalue.database.expirable
+  # Default key/value expirable storage service to use.
+  # @default keyvalue.database.expirable
+  # default: keyvalue.database.expirable
   # Allowed protocols for URL generation.
   filter_protocols:
     - http
@@ -181,7 +204,8 @@ parameters:
     allowedHeaders: []
     # Specify allowed request methods, specify ['*'] to allow all possible ones.
     allowedMethods: []
-    # Configure requests allowed from specific origins.
+    # Configure requests allowed from specific origins. Do not include trailing
+    # slashes with URLs.
     allowedOrigins: ['*']
     # Sets the Access-Control-Expose-Headers header.
     exposedHeaders: false
diff --git a/core/assets/scaffold/files/default.settings.php b/core/assets/scaffold/files/default.settings.php
index 5784a9c752..ee3b49c0a8 100644
--- a/core/assets/scaffold/files/default.settings.php
+++ b/core/assets/scaffold/files/default.settings.php
@@ -765,6 +765,49 @@
  */
 $settings['migrate_node_migrate_type_classic'] = FALSE;
 
+/**
+ * The default settings for migration sources.
+ *
+ * These settings are used as the default settings on the Credential form at
+ * /upgrade/credentials.
+ *
+ * - migrate_source_version - The version of the source database. This can be
+ *   '6' or '7'. Defaults to '7'.
+ * - migrate_source_connection - The key in the $databases array for the source
+ *   site.
+ * - migrate_file_public_path - The location of the source Drupal 6 or Drupal 7
+ *   public files. This can be a local file directory containing the source
+ *   Drupal 6 or Drupal 7 site (e.g /var/www/docroot), or the site address
+ *   (e.g http://example.com).
+ * - migrate_file_private_path - The location of the source Drupal 7 private
+ *   files. This can be a local file directory containing the source Drupal 7
+ *   site (e.g /var/www/docroot), or empty to use the same value as Public
+ *   files directory.
+ *
+ * Sample configuration for a drupal 6 source site with the source files in a
+ * local directory.
+ *
+ * @code
+ * $settings['migrate_source_version'] = '6';
+ * $settings['migrate_source_connection'] = 'migrate';
+ * $settings['migrate_file_public_path'] = '/var/www/drupal6';
+ * @endcode
+ *
+ * Sample configuration for a drupal 7 source site with public source files on
+ * the source site and the private files in a local directory.
+ *
+ * @code
+ * $settings['migrate_source_version'] = '7';
+ * $settings['migrate_source_connection'] = 'migrate';
+ * $settings['migrate_file_public_path'] = 'https://drupal7.com';
+ * $settings['migrate_file_private_path'] = '/var/www/drupal7';
+ * @endcode
+ */
+# $settings['migrate_source_connection'] = '';
+# $settings['migrate_source_version'] = '';
+# $settings['migrate_file_public_path'] = '';
+# $settings['migrate_file_private_path'] = '';
+
 /**
  * Load local development override configuration, if available.
  *
diff --git a/core/assets/scaffold/files/htaccess b/core/assets/scaffold/files/htaccess
index 7e38f73369..28f04c56f5 100644
--- a/core/assets/scaffold/files/htaccess
+++ b/core/assets/scaffold/files/htaccess
@@ -35,7 +35,7 @@ AddEncoding gzip svgz
   # Enable expirations.
   ExpiresActive On
 
-  # Cache all files for 2 weeks after access (A).
+  # Cache all files and redirects for 2 weeks after access (A).
   ExpiresDefault A1209600
 
   <FilesMatch \.php$>
@@ -151,12 +151,12 @@ AddEncoding gzip svgz
     # Serve gzip compressed CSS files if they exist and the client accepts gzip.
     RewriteCond %{HTTP:Accept-encoding} gzip
     RewriteCond %{REQUEST_FILENAME}\.gz -s
-    RewriteRule ^(.*)\.css $1\.css\.gz [QSA]
+    RewriteRule ^(.*css_[a-zA-Z0-9-_])\.css$ $1\.css\.gz [QSA]
 
     # Serve gzip compressed JS files if they exist and the client accepts gzip.
     RewriteCond %{HTTP:Accept-encoding} gzip
     RewriteCond %{REQUEST_FILENAME}\.gz -s
-    RewriteRule ^(.*)\.js $1\.js\.gz [QSA]
+    RewriteRule ^(.*js_[a-zA-Z0-9-_])\.js$ $1\.js\.gz [QSA]
 
     # Serve correct content types, and prevent double compression.
     RewriteRule \.css\.gz$ - [T=text/css,E=no-gzip:1,E=no-brotli:1]
diff --git a/core/assets/scaffold/files/robots.txt b/core/assets/scaffold/files/robots.txt
index 18f8df8e69..ebcd04b96c 100644
--- a/core/assets/scaffold/files/robots.txt
+++ b/core/assets/scaffold/files/robots.txt
@@ -49,6 +49,8 @@ Disallow: /user/register
 Disallow: /user/password
 Disallow: /user/login
 Disallow: /user/logout
+Disallow: /media/oembed
+Disallow: /*/media/oembed
 # Paths (no clean URLs)
 Disallow: /index.php/admin/
 Disallow: /index.php/comment/reply/
@@ -59,3 +61,5 @@ Disallow: /index.php/user/password
 Disallow: /index.php/user/register
 Disallow: /index.php/user/login
 Disallow: /index.php/user/logout
+Disallow: /index.php/media/oembed
+Disallow: /index.php/*/media/oembed
diff --git a/core/assets/vendor/ckeditor5/alignment/translations/es-co.js b/core/assets/vendor/ckeditor5/alignment/translations/es-co.js
new file mode 100644
index 0000000000..71100cddc9
--- /dev/null
+++ b/core/assets/vendor/ckeditor5/alignment/translations/es-co.js
@@ -0,0 +1 @@
+!function(i){const e=i["es-co"]=i["es-co"]||{};e.dictionary=Object.assign(e.dictionary||{},{"Align center":"Centrar","Align left":"Alinear a la izquierda","Align right":"Alinear a la derecha",Justify:"Justificar","Text alignment":"Alineación de texto","Text alignment toolbar":"Herramientas de alineación de texto"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/basic-styles/basic-styles.js b/core/assets/vendor/ckeditor5/basic-styles/basic-styles.js
index 47eae76d0d..931d36fc00 100644
--- a/core/assets/vendor/ckeditor5/basic-styles/basic-styles.js
+++ b/core/assets/vendor/ckeditor5/basic-styles/basic-styles.js
@@ -2,4 +2,4 @@
 /*!
  * @license Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
  * For licensing, see LICENSE.md.
- */(()=>{var t={415:(t,e,i)=>{"use strict";i.d(e,{Z:()=>r});var n=i(609),s=i.n(n)()((function(t){return t[1]}));s.push([t.id,".ck-content code{background-color:hsla(0,0%,78%,.3);border-radius:2px;padding:.15em}.ck.ck-editor__editable .ck-code_selected{background-color:hsla(0,0%,78%,.5)}",""]);const r=s},609:t=>{"use strict";t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var i=t(e);return e[2]?"@media ".concat(e[2]," {").concat(i,"}"):i})).join("")},e.i=function(t,i,n){"string"==typeof t&&(t=[[null,t,""]]);var s={};if(n)for(var r=0;r<this.length;r++){var o=this[r][0];null!=o&&(s[o]=!0)}for(var c=0;c<t.length;c++){var a=[].concat(t[c]);n&&s[a[0]]||(i&&(a[2]?a[2]="".concat(i," and ").concat(a[2]):a[2]=i),e.push(a))}},e}},62:(t,e,i)=>{"use strict";var n,s=function(){return void 0===n&&(n=Boolean(window&&document&&document.all&&!window.atob)),n},r=function(){var t={};return function(e){if(void 0===t[e]){var i=document.querySelector(e);if(window.HTMLIFrameElement&&i instanceof window.HTMLIFrameElement)try{i=i.contentDocument.head}catch(t){i=null}t[e]=i}return t[e]}}(),o=[];function c(t){for(var e=-1,i=0;i<o.length;i++)if(o[i].identifier===t){e=i;break}return e}function a(t,e){for(var i={},n=[],s=0;s<t.length;s++){var r=t[s],a=e.base?r[0]+e.base:r[0],l=i[a]||0,u="".concat(a," ").concat(l);i[a]=l+1;var d=c(u),g={css:r[1],media:r[2],sourceMap:r[3]};-1!==d?(o[d].references++,o[d].updater(g)):o.push({identifier:u,updater:b(g,e),references:1}),n.push(u)}return n}function l(t){var e=document.createElement("style"),n=t.attributes||{};if(void 0===n.nonce){var s=i.nc;s&&(n.nonce=s)}if(Object.keys(n).forEach((function(t){e.setAttribute(t,n[t])})),"function"==typeof t.insert)t.insert(e);else{var o=r(t.insert||"head");if(!o)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");o.appendChild(e)}return e}var u,d=(u=[],function(t,e){return u[t]=e,u.filter(Boolean).join("\n")});function g(t,e,i,n){var s=i?"":n.media?"@media ".concat(n.media," {").concat(n.css,"}"):n.css;if(t.styleSheet)t.styleSheet.cssText=d(e,s);else{var r=document.createTextNode(s),o=t.childNodes;o[e]&&t.removeChild(o[e]),o.length?t.insertBefore(r,o[e]):t.appendChild(r)}}function m(t,e,i){var n=i.css,s=i.media,r=i.sourceMap;if(s?t.setAttribute("media",s):t.removeAttribute("media"),r&&"undefined"!=typeof btoa&&(n+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(r))))," */")),t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}var p=null,h=0;function b(t,e){var i,n,s;if(e.singleton){var r=h++;i=p||(p=l(e)),n=g.bind(null,i,r,!1),s=g.bind(null,i,r,!0)}else i=l(e),n=m.bind(null,i,e),s=function(){!function(t){if(null===t.parentNode)return!1;t.parentNode.removeChild(t)}(i)};return n(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;n(t=e)}else s()}}t.exports=function(t,e){(e=e||{}).singleton||"boolean"==typeof e.singleton||(e.singleton=s());var i=a(t=t||[],e);return function(t){if(t=t||[],"[object Array]"===Object.prototype.toString.call(t)){for(var n=0;n<i.length;n++){var s=c(i[n]);o[s].references--}for(var r=a(t,e),l=0;l<i.length;l++){var u=c(i[l]);0===o[u].references&&(o[u].updater(),o.splice(u,1))}i=r}}}},704:(t,e,i)=>{t.exports=i(79)("./src/core.js")},181:(t,e,i)=>{t.exports=i(79)("./src/typing.js")},273:(t,e,i)=>{t.exports=i(79)("./src/ui.js")},79:t=>{"use strict";t.exports=CKEditor5.dll}},e={};function i(n){var s=e[n];if(void 0!==s)return s.exports;var r=e[n]={id:n,exports:{}};return t[n](r,r.exports,i),r.exports}i.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return i.d(e,{a:e}),e},i.d=(t,e)=>{for(var n in e)i.o(e,n)&&!i.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),i.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.nc=void 0;var n={};(()=>{"use strict";i.r(n),i.d(n,{Bold:()=>l,BoldEditing:()=>r,BoldUI:()=>a,Code:()=>f,CodeEditing:()=>g,CodeUI:()=>w,Italic:()=>T,ItalicEditing:()=>y,ItalicUI:()=>E,Strikethrough:()=>N,StrikethroughEditing:()=>A,StrikethroughUI:()=>I,Subscript:()=>F,SubscriptEditing:()=>B,SubscriptUI:()=>U,Superscript:()=>j,SuperscriptEditing:()=>M,SuperscriptUI:()=>R,Underline:()=>q,UnderlineEditing:()=>K,UnderlineUI:()=>H});var t=i(704);class e extends t.Command{constructor(t,e){super(t),this.attributeKey=e}refresh(){const t=this.editor.model,e=t.document;this.value=this._getValueFromFirstAllowedNode(),this.isEnabled=t.schema.checkAttributeInSelection(e.selection,this.attributeKey)}execute(t={}){const e=this.editor.model,i=e.document.selection,n=void 0===t.forceValue?!this.value:t.forceValue;e.change((t=>{if(i.isCollapsed)n?t.setSelectionAttribute(this.attributeKey,!0):t.removeSelectionAttribute(this.attributeKey);else{const s=e.schema.getValidRanges(i.getRanges(),this.attributeKey);for(const e of s)n?t.setAttribute(this.attributeKey,n,e):t.removeAttribute(this.attributeKey,e)}}))}_getValueFromFirstAllowedNode(){const t=this.editor.model,e=t.schema,i=t.document.selection;if(i.isCollapsed)return i.hasAttribute(this.attributeKey);for(const t of i.getRanges())for(const i of t.getItems())if(e.checkAttribute(i,this.attributeKey))return i.hasAttribute(this.attributeKey);return!1}}const s="bold";class r extends t.Plugin{static get pluginName(){return"BoldEditing"}init(){const t=this.editor;t.model.schema.extend("$text",{allowAttributes:s}),t.model.schema.setAttributeProperties(s,{isFormatting:!0,copyOnEnter:!0}),t.conversion.attributeToElement({model:s,view:"strong",upcastAlso:["b",t=>{const e=t.getStyle("font-weight");return e?"bold"==e||Number(e)>=600?{name:!0,styles:["font-weight"]}:void 0:null}]}),t.commands.add(s,new e(t,s)),t.keystrokes.set("CTRL+B",s)}}var o=i(273);const c="bold";class a extends t.Plugin{static get pluginName(){return"BoldUI"}init(){const t=this.editor,e=t.t;t.ui.componentFactory.add(c,(i=>{const n=t.commands.get(c),s=new o.ButtonView(i);return s.set({label:e("Bold"),icon:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M10.187 17H5.773c-.637 0-1.092-.138-1.364-.415-.273-.277-.409-.718-.409-1.323V4.738c0-.617.14-1.062.419-1.332.279-.27.73-.406 1.354-.406h4.68c.69 0 1.288.041 1.793.124.506.083.96.242 1.36.478.341.197.644.447.906.75a3.262 3.262 0 0 1 .808 2.162c0 1.401-.722 2.426-2.167 3.075C15.05 10.175 16 11.315 16 13.01a3.756 3.756 0 0 1-2.296 3.504 6.1 6.1 0 0 1-1.517.377c-.571.073-1.238.11-2 .11zm-.217-6.217H7v4.087h3.069c1.977 0 2.965-.69 2.965-2.072 0-.707-.256-1.22-.768-1.537-.512-.319-1.277-.478-2.296-.478zM7 5.13v3.619h2.606c.729 0 1.292-.067 1.69-.2a1.6 1.6 0 0 0 .91-.765c.165-.267.247-.566.247-.897 0-.707-.26-1.176-.778-1.409-.519-.232-1.31-.348-2.375-.348H7z"/></svg>',keystroke:"CTRL+B",tooltip:!0,isToggleable:!0}),s.bind("isOn","isEnabled").to(n,"value","isEnabled"),this.listenTo(s,"execute",(()=>{t.execute(c),t.editing.view.focus()})),s}))}}class l extends t.Plugin{static get requires(){return[r,a]}static get pluginName(){return"Bold"}}var u=i(181);const d="code";class g extends t.Plugin{static get pluginName(){return"CodeEditing"}static get requires(){return[u.TwoStepCaretMovement]}init(){const t=this.editor;t.model.schema.extend("$text",{allowAttributes:d}),t.model.schema.setAttributeProperties(d,{isFormatting:!0,copyOnEnter:!1}),t.conversion.attributeToElement({model:d,view:"code",upcastAlso:{styles:{"word-wrap":"break-word"}}}),t.commands.add(d,new e(t,d)),t.plugins.get(u.TwoStepCaretMovement).registerAttribute(d),(0,u.inlineHighlight)(t,d,"code","ck-code_selected")}}var m=i(62),p=i.n(m),h=i(415),b={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};p()(h.Z,b);h.Z.locals;const v="code";class w extends t.Plugin{static get pluginName(){return"CodeUI"}init(){const t=this.editor,e=t.t;t.ui.componentFactory.add(v,(i=>{const n=t.commands.get(v),s=new o.ButtonView(i);return s.set({label:e("Code"),icon:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m12.5 5.7 5.2 3.9v1.3l-5.6 4c-.1.2-.3.2-.5.2-.3-.1-.6-.7-.6-1l.3-.4 4.7-3.5L11.5 7l-.2-.2c-.1-.3-.1-.6 0-.8.2-.2.5-.4.8-.4a.8.8 0 0 1 .4.1zm-5.2 0L2 9.6v1.3l5.6 4c.1.2.3.2.5.2.3-.1.7-.7.6-1 0-.1 0-.3-.2-.4l-5-3.5L8.2 7l.2-.2c.1-.3.1-.6 0-.8-.2-.2-.5-.4-.8-.4a.8.8 0 0 0-.3.1z"/></svg>',tooltip:!0,isToggleable:!0}),s.bind("isOn","isEnabled").to(n,"value","isEnabled"),this.listenTo(s,"execute",(()=>{t.execute(v),t.editing.view.focus()})),s}))}}class f extends t.Plugin{static get requires(){return[g,w]}static get pluginName(){return"Code"}}const x="italic";class y extends t.Plugin{static get pluginName(){return"ItalicEditing"}init(){const t=this.editor;t.model.schema.extend("$text",{allowAttributes:x}),t.model.schema.setAttributeProperties(x,{isFormatting:!0,copyOnEnter:!0}),t.conversion.attributeToElement({model:x,view:"i",upcastAlso:["em",{styles:{"font-style":"italic"}}]}),t.commands.add(x,new e(t,x)),t.keystrokes.set("CTRL+I",x)}}const S="italic";class E extends t.Plugin{static get pluginName(){return"ItalicUI"}init(){const t=this.editor,e=t.t;t.ui.componentFactory.add(S,(i=>{const n=t.commands.get(S),s=new o.ButtonView(i);return s.set({label:e("Italic"),icon:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m9.586 14.633.021.004c-.036.335.095.655.393.962.082.083.173.15.274.201h1.474a.6.6 0 1 1 0 1.2H5.304a.6.6 0 0 1 0-1.2h1.15c.474-.07.809-.182 1.005-.334.157-.122.291-.32.404-.597l2.416-9.55a1.053 1.053 0 0 0-.281-.823 1.12 1.12 0 0 0-.442-.296H8.15a.6.6 0 0 1 0-1.2h6.443a.6.6 0 1 1 0 1.2h-1.195c-.376.056-.65.155-.823.296-.215.175-.423.439-.623.79l-2.366 9.347z"/></svg>',keystroke:"CTRL+I",tooltip:!0,isToggleable:!0}),s.bind("isOn","isEnabled").to(n,"value","isEnabled"),this.listenTo(s,"execute",(()=>{t.execute(S),t.editing.view.focus()})),s}))}}class T extends t.Plugin{static get requires(){return[y,E]}static get pluginName(){return"Italic"}}const k="strikethrough";class A extends t.Plugin{static get pluginName(){return"StrikethroughEditing"}init(){const t=this.editor;t.model.schema.extend("$text",{allowAttributes:k}),t.model.schema.setAttributeProperties(k,{isFormatting:!0,copyOnEnter:!0}),t.conversion.attributeToElement({model:k,view:"s",upcastAlso:["del","strike",{styles:{"text-decoration":"line-through"}}]}),t.commands.add(k,new e(t,k)),t.keystrokes.set("CTRL+SHIFT+X","strikethrough")}}const C="strikethrough";class I extends t.Plugin{static get pluginName(){return"StrikethroughUI"}init(){const t=this.editor,e=t.t;t.ui.componentFactory.add(C,(i=>{const n=t.commands.get(C),s=new o.ButtonView(i);return s.set({label:e("Strikethrough"),icon:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M7 16.4c-.8-.4-1.5-.9-2.2-1.5a.6.6 0 0 1-.2-.5l.3-.6h1c1 1.2 2.1 1.7 3.7 1.7 1 0 1.8-.3 2.3-.6.6-.4.6-1.2.6-1.3.2-1.2-.9-2.1-.9-2.1h2.1c.3.7.4 1.2.4 1.7v.8l-.6 1.2c-.6.8-1.1 1-1.6 1.2a6 6 0 0 1-2.4.6c-1 0-1.8-.3-2.5-.6zM6.8 9 6 8.3c-.4-.5-.5-.8-.5-1.6 0-.7.1-1.3.5-1.8.4-.6 1-1 1.6-1.3a6.3 6.3 0 0 1 4.7 0 4 4 0 0 1 1.7 1l.3.7c0 .1.2.4-.2.7-.4.2-.9.1-1 0a3 3 0 0 0-1.2-1c-.4-.2-1-.3-2-.4-.7 0-1.4.2-2 .6-.8.6-1 .8-1 1.5 0 .8.5 1 1.2 1.5.6.4 1.1.7 1.9 1H6.8z"/><path d="M3 10.5V9h14v1.5z"/></svg>',keystroke:"CTRL+SHIFT+X",tooltip:!0,isToggleable:!0}),s.bind("isOn","isEnabled").to(n,"value","isEnabled"),this.listenTo(s,"execute",(()=>{t.execute(C),t.editing.view.focus()})),s}))}}class N extends t.Plugin{static get requires(){return[A,I]}static get pluginName(){return"Strikethrough"}}const P="subscript";class B extends t.Plugin{static get pluginName(){return"SubscriptEditing"}init(){const t=this.editor;t.model.schema.extend("$text",{allowAttributes:P}),t.model.schema.setAttributeProperties(P,{isFormatting:!0,copyOnEnter:!0}),t.conversion.attributeToElement({model:P,view:"sub",upcastAlso:[{styles:{"vertical-align":"sub"}}]}),t.commands.add(P,new e(t,P))}}const O="subscript";class U extends t.Plugin{static get pluginName(){return"SubscriptUI"}init(){const t=this.editor,e=t.t;t.ui.componentFactory.add(O,(i=>{const n=t.commands.get(O),s=new o.ButtonView(i);return s.set({label:e("Subscript"),icon:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m7.03 10.349 3.818-3.819a.8.8 0 1 1 1.132 1.132L8.16 11.48l3.819 3.818a.8.8 0 1 1-1.132 1.132L7.03 12.61l-3.818 3.82a.8.8 0 1 1-1.132-1.132L5.9 11.48 2.08 7.662A.8.8 0 1 1 3.212 6.53l3.818 3.82zm8.147 7.829h2.549c.254 0 .447.05.58.152a.49.49 0 0 1 .201.413.54.54 0 0 1-.159.393c-.105.108-.266.162-.48.162h-3.594c-.245 0-.435-.066-.572-.197a.621.621 0 0 1-.205-.463c0-.114.044-.265.132-.453a1.62 1.62 0 0 1 .288-.444c.433-.436.824-.81 1.172-1.122.348-.312.597-.517.747-.615.267-.183.49-.368.667-.553.177-.185.312-.375.405-.57.093-.194.139-.384.139-.57a1.008 1.008 0 0 0-.554-.917 1.197 1.197 0 0 0-.56-.133c-.426 0-.761.182-1.005.546a2.332 2.332 0 0 0-.164.39 1.609 1.609 0 0 1-.258.488c-.096.114-.237.17-.423.17a.558.558 0 0 1-.405-.156.568.568 0 0 1-.161-.427c0-.218.05-.446.151-.683.101-.238.252-.453.452-.646s.454-.349.762-.467a2.998 2.998 0 0 1 1.081-.178c.498 0 .923.076 1.274.228a1.916 1.916 0 0 1 1.004 1.032 1.984 1.984 0 0 1-.156 1.794c-.2.32-.405.572-.613.754-.208.182-.558.468-1.048.857-.49.39-.826.691-1.008.906a2.703 2.703 0 0 0-.24.309z"/></svg>',tooltip:!0,isToggleable:!0}),s.bind("isOn","isEnabled").to(n,"value","isEnabled"),this.listenTo(s,"execute",(()=>{t.execute(O),t.editing.view.focus()})),s}))}}class F extends t.Plugin{static get requires(){return[B,U]}static get pluginName(){return"Subscript"}}const L="superscript";class M extends t.Plugin{static get pluginName(){return"SuperscriptEditing"}init(){const t=this.editor;t.model.schema.extend("$text",{allowAttributes:L}),t.model.schema.setAttributeProperties(L,{isFormatting:!0,copyOnEnter:!0}),t.conversion.attributeToElement({model:L,view:"sup",upcastAlso:[{styles:{"vertical-align":"super"}}]}),t.commands.add(L,new e(t,L))}}const V="superscript";class R extends t.Plugin{static get pluginName(){return"SuperscriptUI"}init(){const t=this.editor,e=t.t;t.ui.componentFactory.add(V,(i=>{const n=t.commands.get(V),s=new o.ButtonView(i);return s.set({label:e("Superscript"),icon:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M15.677 8.678h2.549c.254 0 .447.05.58.152a.49.49 0 0 1 .201.413.54.54 0 0 1-.159.393c-.105.108-.266.162-.48.162h-3.594c-.245 0-.435-.066-.572-.197a.621.621 0 0 1-.205-.463c0-.114.044-.265.132-.453a1.62 1.62 0 0 1 .288-.444c.433-.436.824-.81 1.172-1.122.348-.312.597-.517.747-.615.267-.183.49-.368.667-.553.177-.185.312-.375.405-.57.093-.194.139-.384.139-.57a1.008 1.008 0 0 0-.554-.917 1.197 1.197 0 0 0-.56-.133c-.426 0-.761.182-1.005.546a2.332 2.332 0 0 0-.164.39 1.609 1.609 0 0 1-.258.488c-.096.114-.237.17-.423.17a.558.558 0 0 1-.405-.156.568.568 0 0 1-.161-.427c0-.218.05-.446.151-.683.101-.238.252-.453.452-.646s.454-.349.762-.467a2.998 2.998 0 0 1 1.081-.178c.498 0 .923.076 1.274.228a1.916 1.916 0 0 1 1.004 1.032 1.984 1.984 0 0 1-.156 1.794c-.2.32-.405.572-.613.754-.208.182-.558.468-1.048.857-.49.39-.826.691-1.008.906a2.703 2.703 0 0 0-.24.309zM7.03 10.349l3.818-3.819a.8.8 0 1 1 1.132 1.132L8.16 11.48l3.819 3.818a.8.8 0 1 1-1.132 1.132L7.03 12.61l-3.818 3.82a.8.8 0 1 1-1.132-1.132L5.9 11.48 2.08 7.662A.8.8 0 1 1 3.212 6.53l3.818 3.82z"/></svg>',tooltip:!0,isToggleable:!0}),s.bind("isOn","isEnabled").to(n,"value","isEnabled"),this.listenTo(s,"execute",(()=>{t.execute(V),t.editing.view.focus()})),s}))}}class j extends t.Plugin{static get requires(){return[M,R]}static get pluginName(){return"Superscript"}}const z="underline";class K extends t.Plugin{static get pluginName(){return"UnderlineEditing"}init(){const t=this.editor;t.model.schema.extend("$text",{allowAttributes:z}),t.model.schema.setAttributeProperties(z,{isFormatting:!0,copyOnEnter:!0}),t.conversion.attributeToElement({model:z,view:"u",upcastAlso:{styles:{"text-decoration":"underline"}}}),t.commands.add(z,new e(t,z)),t.keystrokes.set("CTRL+U","underline")}}const _="underline";class H extends t.Plugin{static get pluginName(){return"UnderlineUI"}init(){const t=this.editor,e=t.t;t.ui.componentFactory.add(_,(i=>{const n=t.commands.get(_),s=new o.ButtonView(i);return s.set({label:e("Underline"),icon:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M3 18v-1.5h14V18zm2.2-8V3.6c0-.4.4-.6.8-.6.3 0 .7.2.7.6v6.2c0 2 1.3 2.8 3.2 2.8 1.9 0 3.4-.9 3.4-2.9V3.6c0-.3.4-.5.8-.5.3 0 .7.2.7.5V10c0 2.7-2.2 4-4.9 4-2.6 0-4.7-1.2-4.7-4z"/></svg>',keystroke:"CTRL+U",tooltip:!0,isToggleable:!0}),s.bind("isOn","isEnabled").to(n,"value","isEnabled"),this.listenTo(s,"execute",(()=>{t.execute(_),t.editing.view.focus()})),s}))}}class q extends t.Plugin{static get requires(){return[K,H]}static get pluginName(){return"Underline"}}})(),(window.CKEditor5=window.CKEditor5||{}).basicStyles=n})();
\ No newline at end of file
+ */(()=>{var t={415:(t,e,i)=>{"use strict";i.d(e,{Z:()=>r});var n=i(609),s=i.n(n)()((function(t){return t[1]}));s.push([t.id,".ck-content code{background-color:hsla(0,0%,78%,.3);border-radius:2px;padding:.15em}.ck.ck-editor__editable .ck-code_selected{background-color:hsla(0,0%,78%,.5)}",""]);const r=s},609:t=>{"use strict";t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var i=t(e);return e[2]?"@media ".concat(e[2]," {").concat(i,"}"):i})).join("")},e.i=function(t,i,n){"string"==typeof t&&(t=[[null,t,""]]);var s={};if(n)for(var r=0;r<this.length;r++){var o=this[r][0];null!=o&&(s[o]=!0)}for(var a=0;a<t.length;a++){var c=[].concat(t[a]);n&&s[c[0]]||(i&&(c[2]?c[2]="".concat(i," and ").concat(c[2]):c[2]=i),e.push(c))}},e}},62:(t,e,i)=>{"use strict";var n,s=function(){return void 0===n&&(n=Boolean(window&&document&&document.all&&!window.atob)),n},r=function(){var t={};return function(e){if(void 0===t[e]){var i=document.querySelector(e);if(window.HTMLIFrameElement&&i instanceof window.HTMLIFrameElement)try{i=i.contentDocument.head}catch(t){i=null}t[e]=i}return t[e]}}(),o=[];function a(t){for(var e=-1,i=0;i<o.length;i++)if(o[i].identifier===t){e=i;break}return e}function c(t,e){for(var i={},n=[],s=0;s<t.length;s++){var r=t[s],c=e.base?r[0]+e.base:r[0],l=i[c]||0,u="".concat(c," ").concat(l);i[c]=l+1;var d=a(u),g={css:r[1],media:r[2],sourceMap:r[3]};-1!==d?(o[d].references++,o[d].updater(g)):o.push({identifier:u,updater:b(g,e),references:1}),n.push(u)}return n}function l(t){var e=document.createElement("style"),n=t.attributes||{};if(void 0===n.nonce){var s=i.nc;s&&(n.nonce=s)}if(Object.keys(n).forEach((function(t){e.setAttribute(t,n[t])})),"function"==typeof t.insert)t.insert(e);else{var o=r(t.insert||"head");if(!o)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");o.appendChild(e)}return e}var u,d=(u=[],function(t,e){return u[t]=e,u.filter(Boolean).join("\n")});function g(t,e,i,n){var s=i?"":n.media?"@media ".concat(n.media," {").concat(n.css,"}"):n.css;if(t.styleSheet)t.styleSheet.cssText=d(e,s);else{var r=document.createTextNode(s),o=t.childNodes;o[e]&&t.removeChild(o[e]),o.length?t.insertBefore(r,o[e]):t.appendChild(r)}}function m(t,e,i){var n=i.css,s=i.media,r=i.sourceMap;if(s?t.setAttribute("media",s):t.removeAttribute("media"),r&&"undefined"!=typeof btoa&&(n+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(r))))," */")),t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}var p=null,h=0;function b(t,e){var i,n,s;if(e.singleton){var r=h++;i=p||(p=l(e)),n=g.bind(null,i,r,!1),s=g.bind(null,i,r,!0)}else i=l(e),n=m.bind(null,i,e),s=function(){!function(t){if(null===t.parentNode)return!1;t.parentNode.removeChild(t)}(i)};return n(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;n(t=e)}else s()}}t.exports=function(t,e){(e=e||{}).singleton||"boolean"==typeof e.singleton||(e.singleton=s());var i=c(t=t||[],e);return function(t){if(t=t||[],"[object Array]"===Object.prototype.toString.call(t)){for(var n=0;n<i.length;n++){var s=a(i[n]);o[s].references--}for(var r=c(t,e),l=0;l<i.length;l++){var u=a(i[l]);0===o[u].references&&(o[u].updater(),o.splice(u,1))}i=r}}}},704:(t,e,i)=>{t.exports=i(79)("./src/core.js")},181:(t,e,i)=>{t.exports=i(79)("./src/typing.js")},273:(t,e,i)=>{t.exports=i(79)("./src/ui.js")},79:t=>{"use strict";t.exports=CKEditor5.dll}},e={};function i(n){var s=e[n];if(void 0!==s)return s.exports;var r=e[n]={id:n,exports:{}};return t[n](r,r.exports,i),r.exports}i.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return i.d(e,{a:e}),e},i.d=(t,e)=>{for(var n in e)i.o(e,n)&&!i.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),i.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.nc=void 0;var n={};(()=>{"use strict";i.r(n),i.d(n,{Bold:()=>l,BoldEditing:()=>r,BoldUI:()=>c,Code:()=>f,CodeEditing:()=>g,CodeUI:()=>w,Italic:()=>T,ItalicEditing:()=>y,ItalicUI:()=>E,Strikethrough:()=>N,StrikethroughEditing:()=>A,StrikethroughUI:()=>I,Subscript:()=>F,SubscriptEditing:()=>B,SubscriptUI:()=>U,Superscript:()=>j,SuperscriptEditing:()=>M,SuperscriptUI:()=>V,Underline:()=>H,UnderlineEditing:()=>z,UnderlineUI:()=>q});var t=i(704);class e extends t.Command{constructor(t,e){super(t),this.attributeKey=e}refresh(){const t=this.editor.model,e=t.document;this.value=this._getValueFromFirstAllowedNode(),this.isEnabled=t.schema.checkAttributeInSelection(e.selection,this.attributeKey)}execute(t={}){const e=this.editor.model,i=e.document.selection,n=void 0===t.forceValue?!this.value:t.forceValue;e.change((t=>{if(i.isCollapsed)n?t.setSelectionAttribute(this.attributeKey,!0):t.removeSelectionAttribute(this.attributeKey);else{const s=e.schema.getValidRanges(i.getRanges(),this.attributeKey);for(const e of s)n?t.setAttribute(this.attributeKey,n,e):t.removeAttribute(this.attributeKey,e)}}))}_getValueFromFirstAllowedNode(){const t=this.editor.model,e=t.schema,i=t.document.selection;if(i.isCollapsed)return i.hasAttribute(this.attributeKey);for(const t of i.getRanges())for(const i of t.getItems())if(e.checkAttribute(i,this.attributeKey))return i.hasAttribute(this.attributeKey);return!1}}const s="bold";class r extends t.Plugin{static get pluginName(){return"BoldEditing"}init(){const t=this.editor;t.model.schema.extend("$text",{allowAttributes:s}),t.model.schema.setAttributeProperties(s,{isFormatting:!0,copyOnEnter:!0}),t.conversion.attributeToElement({model:s,view:"strong",upcastAlso:["b",t=>{const e=t.getStyle("font-weight");return e?"bold"==e||Number(e)>=600?{name:!0,styles:["font-weight"]}:void 0:null}]}),t.commands.add(s,new e(t,s)),t.keystrokes.set("CTRL+B",s)}}var o=i(273);const a="bold";class c extends t.Plugin{static get pluginName(){return"BoldUI"}init(){const e=this.editor,i=e.t;e.ui.componentFactory.add(a,(n=>{const s=e.commands.get(a),r=new o.ButtonView(n);return r.set({label:i("Bold"),icon:t.icons.bold,keystroke:"CTRL+B",tooltip:!0,isToggleable:!0}),r.bind("isOn","isEnabled").to(s,"value","isEnabled"),this.listenTo(r,"execute",(()=>{e.execute(a),e.editing.view.focus()})),r}))}}class l extends t.Plugin{static get requires(){return[r,c]}static get pluginName(){return"Bold"}}var u=i(181);const d="code";class g extends t.Plugin{static get pluginName(){return"CodeEditing"}static get requires(){return[u.TwoStepCaretMovement]}init(){const t=this.editor;t.model.schema.extend("$text",{allowAttributes:d}),t.model.schema.setAttributeProperties(d,{isFormatting:!0,copyOnEnter:!1}),t.conversion.attributeToElement({model:d,view:"code",upcastAlso:{styles:{"word-wrap":"break-word"}}}),t.commands.add(d,new e(t,d)),t.plugins.get(u.TwoStepCaretMovement).registerAttribute(d),(0,u.inlineHighlight)(t,d,"code","ck-code_selected")}}var m=i(62),p=i.n(m),h=i(415),b={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};p()(h.Z,b);h.Z.locals;const v="code";class w extends t.Plugin{static get pluginName(){return"CodeUI"}init(){const t=this.editor,e=t.t;t.ui.componentFactory.add(v,(i=>{const n=t.commands.get(v),s=new o.ButtonView(i);return s.set({label:e("Code"),icon:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m12.5 5.7 5.2 3.9v1.3l-5.6 4c-.1.2-.3.2-.5.2-.3-.1-.6-.7-.6-1l.3-.4 4.7-3.5L11.5 7l-.2-.2c-.1-.3-.1-.6 0-.8.2-.2.5-.4.8-.4a.8.8 0 0 1 .4.1zm-5.2 0L2 9.6v1.3l5.6 4c.1.2.3.2.5.2.3-.1.7-.7.6-1 0-.1 0-.3-.2-.4l-5-3.5L8.2 7l.2-.2c.1-.3.1-.6 0-.8-.2-.2-.5-.4-.8-.4a.8.8 0 0 0-.3.1z"/></svg>',tooltip:!0,isToggleable:!0}),s.bind("isOn","isEnabled").to(n,"value","isEnabled"),this.listenTo(s,"execute",(()=>{t.execute(v),t.editing.view.focus()})),s}))}}class f extends t.Plugin{static get requires(){return[g,w]}static get pluginName(){return"Code"}}const x="italic";class y extends t.Plugin{static get pluginName(){return"ItalicEditing"}init(){const t=this.editor;t.model.schema.extend("$text",{allowAttributes:x}),t.model.schema.setAttributeProperties(x,{isFormatting:!0,copyOnEnter:!0}),t.conversion.attributeToElement({model:x,view:"i",upcastAlso:["em",{styles:{"font-style":"italic"}}]}),t.commands.add(x,new e(t,x)),t.keystrokes.set("CTRL+I",x)}}const S="italic";class E extends t.Plugin{static get pluginName(){return"ItalicUI"}init(){const t=this.editor,e=t.t;t.ui.componentFactory.add(S,(i=>{const n=t.commands.get(S),s=new o.ButtonView(i);return s.set({label:e("Italic"),icon:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m9.586 14.633.021.004c-.036.335.095.655.393.962.082.083.173.15.274.201h1.474a.6.6 0 1 1 0 1.2H5.304a.6.6 0 0 1 0-1.2h1.15c.474-.07.809-.182 1.005-.334.157-.122.291-.32.404-.597l2.416-9.55a1.053 1.053 0 0 0-.281-.823 1.12 1.12 0 0 0-.442-.296H8.15a.6.6 0 0 1 0-1.2h6.443a.6.6 0 1 1 0 1.2h-1.195c-.376.056-.65.155-.823.296-.215.175-.423.439-.623.79l-2.366 9.347z"/></svg>',keystroke:"CTRL+I",tooltip:!0,isToggleable:!0}),s.bind("isOn","isEnabled").to(n,"value","isEnabled"),this.listenTo(s,"execute",(()=>{t.execute(S),t.editing.view.focus()})),s}))}}class T extends t.Plugin{static get requires(){return[y,E]}static get pluginName(){return"Italic"}}const k="strikethrough";class A extends t.Plugin{static get pluginName(){return"StrikethroughEditing"}init(){const t=this.editor;t.model.schema.extend("$text",{allowAttributes:k}),t.model.schema.setAttributeProperties(k,{isFormatting:!0,copyOnEnter:!0}),t.conversion.attributeToElement({model:k,view:"s",upcastAlso:["del","strike",{styles:{"text-decoration":"line-through"}}]}),t.commands.add(k,new e(t,k)),t.keystrokes.set("CTRL+SHIFT+X","strikethrough")}}const C="strikethrough";class I extends t.Plugin{static get pluginName(){return"StrikethroughUI"}init(){const t=this.editor,e=t.t;t.ui.componentFactory.add(C,(i=>{const n=t.commands.get(C),s=new o.ButtonView(i);return s.set({label:e("Strikethrough"),icon:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M7 16.4c-.8-.4-1.5-.9-2.2-1.5a.6.6 0 0 1-.2-.5l.3-.6h1c1 1.2 2.1 1.7 3.7 1.7 1 0 1.8-.3 2.3-.6.6-.4.6-1.2.6-1.3.2-1.2-.9-2.1-.9-2.1h2.1c.3.7.4 1.2.4 1.7v.8l-.6 1.2c-.6.8-1.1 1-1.6 1.2a6 6 0 0 1-2.4.6c-1 0-1.8-.3-2.5-.6zM6.8 9 6 8.3c-.4-.5-.5-.8-.5-1.6 0-.7.1-1.3.5-1.8.4-.6 1-1 1.6-1.3a6.3 6.3 0 0 1 4.7 0 4 4 0 0 1 1.7 1l.3.7c0 .1.2.4-.2.7-.4.2-.9.1-1 0a3 3 0 0 0-1.2-1c-.4-.2-1-.3-2-.4-.7 0-1.4.2-2 .6-.8.6-1 .8-1 1.5 0 .8.5 1 1.2 1.5.6.4 1.1.7 1.9 1H6.8z"/><path d="M3 10.5V9h14v1.5z"/></svg>',keystroke:"CTRL+SHIFT+X",tooltip:!0,isToggleable:!0}),s.bind("isOn","isEnabled").to(n,"value","isEnabled"),this.listenTo(s,"execute",(()=>{t.execute(C),t.editing.view.focus()})),s}))}}class N extends t.Plugin{static get requires(){return[A,I]}static get pluginName(){return"Strikethrough"}}const P="subscript";class B extends t.Plugin{static get pluginName(){return"SubscriptEditing"}init(){const t=this.editor;t.model.schema.extend("$text",{allowAttributes:P}),t.model.schema.setAttributeProperties(P,{isFormatting:!0,copyOnEnter:!0}),t.conversion.attributeToElement({model:P,view:"sub",upcastAlso:[{styles:{"vertical-align":"sub"}}]}),t.commands.add(P,new e(t,P))}}const O="subscript";class U extends t.Plugin{static get pluginName(){return"SubscriptUI"}init(){const t=this.editor,e=t.t;t.ui.componentFactory.add(O,(i=>{const n=t.commands.get(O),s=new o.ButtonView(i);return s.set({label:e("Subscript"),icon:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m7.03 10.349 3.818-3.819a.8.8 0 1 1 1.132 1.132L8.16 11.48l3.819 3.818a.8.8 0 1 1-1.132 1.132L7.03 12.61l-3.818 3.82a.8.8 0 1 1-1.132-1.132L5.9 11.48 2.08 7.662A.8.8 0 1 1 3.212 6.53l3.818 3.82zm8.147 7.829h2.549c.254 0 .447.05.58.152a.49.49 0 0 1 .201.413.54.54 0 0 1-.159.393c-.105.108-.266.162-.48.162h-3.594c-.245 0-.435-.066-.572-.197a.621.621 0 0 1-.205-.463c0-.114.044-.265.132-.453a1.62 1.62 0 0 1 .288-.444c.433-.436.824-.81 1.172-1.122.348-.312.597-.517.747-.615.267-.183.49-.368.667-.553.177-.185.312-.375.405-.57.093-.194.139-.384.139-.57a1.008 1.008 0 0 0-.554-.917 1.197 1.197 0 0 0-.56-.133c-.426 0-.761.182-1.005.546a2.332 2.332 0 0 0-.164.39 1.609 1.609 0 0 1-.258.488c-.096.114-.237.17-.423.17a.558.558 0 0 1-.405-.156.568.568 0 0 1-.161-.427c0-.218.05-.446.151-.683.101-.238.252-.453.452-.646s.454-.349.762-.467a2.998 2.998 0 0 1 1.081-.178c.498 0 .923.076 1.274.228a1.916 1.916 0 0 1 1.004 1.032 1.984 1.984 0 0 1-.156 1.794c-.2.32-.405.572-.613.754-.208.182-.558.468-1.048.857-.49.39-.826.691-1.008.906a2.703 2.703 0 0 0-.24.309z"/></svg>',tooltip:!0,isToggleable:!0}),s.bind("isOn","isEnabled").to(n,"value","isEnabled"),this.listenTo(s,"execute",(()=>{t.execute(O),t.editing.view.focus()})),s}))}}class F extends t.Plugin{static get requires(){return[B,U]}static get pluginName(){return"Subscript"}}const L="superscript";class M extends t.Plugin{static get pluginName(){return"SuperscriptEditing"}init(){const t=this.editor;t.model.schema.extend("$text",{allowAttributes:L}),t.model.schema.setAttributeProperties(L,{isFormatting:!0,copyOnEnter:!0}),t.conversion.attributeToElement({model:L,view:"sup",upcastAlso:[{styles:{"vertical-align":"super"}}]}),t.commands.add(L,new e(t,L))}}const R="superscript";class V extends t.Plugin{static get pluginName(){return"SuperscriptUI"}init(){const t=this.editor,e=t.t;t.ui.componentFactory.add(R,(i=>{const n=t.commands.get(R),s=new o.ButtonView(i);return s.set({label:e("Superscript"),icon:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M15.677 8.678h2.549c.254 0 .447.05.58.152a.49.49 0 0 1 .201.413.54.54 0 0 1-.159.393c-.105.108-.266.162-.48.162h-3.594c-.245 0-.435-.066-.572-.197a.621.621 0 0 1-.205-.463c0-.114.044-.265.132-.453a1.62 1.62 0 0 1 .288-.444c.433-.436.824-.81 1.172-1.122.348-.312.597-.517.747-.615.267-.183.49-.368.667-.553.177-.185.312-.375.405-.57.093-.194.139-.384.139-.57a1.008 1.008 0 0 0-.554-.917 1.197 1.197 0 0 0-.56-.133c-.426 0-.761.182-1.005.546a2.332 2.332 0 0 0-.164.39 1.609 1.609 0 0 1-.258.488c-.096.114-.237.17-.423.17a.558.558 0 0 1-.405-.156.568.568 0 0 1-.161-.427c0-.218.05-.446.151-.683.101-.238.252-.453.452-.646s.454-.349.762-.467a2.998 2.998 0 0 1 1.081-.178c.498 0 .923.076 1.274.228a1.916 1.916 0 0 1 1.004 1.032 1.984 1.984 0 0 1-.156 1.794c-.2.32-.405.572-.613.754-.208.182-.558.468-1.048.857-.49.39-.826.691-1.008.906a2.703 2.703 0 0 0-.24.309zM7.03 10.349l3.818-3.819a.8.8 0 1 1 1.132 1.132L8.16 11.48l3.819 3.818a.8.8 0 1 1-1.132 1.132L7.03 12.61l-3.818 3.82a.8.8 0 1 1-1.132-1.132L5.9 11.48 2.08 7.662A.8.8 0 1 1 3.212 6.53l3.818 3.82z"/></svg>',tooltip:!0,isToggleable:!0}),s.bind("isOn","isEnabled").to(n,"value","isEnabled"),this.listenTo(s,"execute",(()=>{t.execute(R),t.editing.view.focus()})),s}))}}class j extends t.Plugin{static get requires(){return[M,V]}static get pluginName(){return"Superscript"}}const K="underline";class z extends t.Plugin{static get pluginName(){return"UnderlineEditing"}init(){const t=this.editor;t.model.schema.extend("$text",{allowAttributes:K}),t.model.schema.setAttributeProperties(K,{isFormatting:!0,copyOnEnter:!0}),t.conversion.attributeToElement({model:K,view:"u",upcastAlso:{styles:{"text-decoration":"underline"}}}),t.commands.add(K,new e(t,K)),t.keystrokes.set("CTRL+U","underline")}}const _="underline";class q extends t.Plugin{static get pluginName(){return"UnderlineUI"}init(){const t=this.editor,e=t.t;t.ui.componentFactory.add(_,(i=>{const n=t.commands.get(_),s=new o.ButtonView(i);return s.set({label:e("Underline"),icon:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M3 18v-1.5h14V18zm2.2-8V3.6c0-.4.4-.6.8-.6.3 0 .7.2.7.6v6.2c0 2 1.3 2.8 3.2 2.8 1.9 0 3.4-.9 3.4-2.9V3.6c0-.3.4-.5.8-.5.3 0 .7.2.7.5V10c0 2.7-2.2 4-4.9 4-2.6 0-4.7-1.2-4.7-4z"/></svg>',keystroke:"CTRL+U",tooltip:!0,isToggleable:!0}),s.bind("isOn","isEnabled").to(n,"value","isEnabled"),this.listenTo(s,"execute",(()=>{t.execute(_),t.editing.view.focus()})),s}))}}class H extends t.Plugin{static get requires(){return[z,q]}static get pluginName(){return"Underline"}}})(),(window.CKEditor5=window.CKEditor5||{}).basicStyles=n})();
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/basic-styles/translations/es-co.js b/core/assets/vendor/ckeditor5/basic-styles/translations/es-co.js
new file mode 100644
index 0000000000..4d1fe73c29
--- /dev/null
+++ b/core/assets/vendor/ckeditor5/basic-styles/translations/es-co.js
@@ -0,0 +1 @@
+!function(i){const o=i["es-co"]=i["es-co"]||{};o.dictionary=Object.assign(o.dictionary||{},{Bold:"Negrita",Code:"Código",Italic:"Cursiva",Strikethrough:"Tachado",Subscript:"Subíndice",Superscript:"Superíndice",Underline:"Subrayado"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/block-quote/translations/es-co.js b/core/assets/vendor/ckeditor5/block-quote/translations/es-co.js
new file mode 100644
index 0000000000..370b102e92
--- /dev/null
+++ b/core/assets/vendor/ckeditor5/block-quote/translations/es-co.js
@@ -0,0 +1 @@
+!function(o){const i=o["es-co"]=o["es-co"]||{};i.dictionary=Object.assign(i.dictionary||{},{"Block quote":"Cita de bloque"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/ckeditor5-dll/ckeditor5-dll.js b/core/assets/vendor/ckeditor5/ckeditor5-dll/ckeditor5-dll.js
index 82722fe678..8b19679004 100644
--- a/core/assets/vendor/ckeditor5/ckeditor5-dll/ckeditor5-dll.js
+++ b/core/assets/vendor/ckeditor5/ckeditor5-dll/ckeditor5-dll.js
@@ -2,4 +2,4 @@
 /*!
  * @license Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
  * For licensing, see LICENSE.md.
- */(()=>{var e={"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-clipboard/theme/clipboard.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,'.ck.ck-editor__editable .ck.ck-clipboard-drop-target-position{display:inline;pointer-events:none;position:relative}.ck.ck-editor__editable .ck.ck-clipboard-drop-target-position span{position:absolute;width:0}.ck.ck-editor__editable .ck-widget:-webkit-drag>.ck-widget__selection-handle,.ck.ck-editor__editable .ck-widget:-webkit-drag>.ck-widget__type-around{display:none}:root{--ck-clipboard-drop-target-dot-width:12px;--ck-clipboard-drop-target-dot-height:8px;--ck-clipboard-drop-target-color:var(--ck-color-focus-border)}.ck.ck-editor__editable .ck.ck-clipboard-drop-target-position span{background:var(--ck-clipboard-drop-target-color);border:1px solid var(--ck-clipboard-drop-target-color);bottom:calc(var(--ck-clipboard-drop-target-dot-height)*-.5);margin-left:-1px;top:calc(var(--ck-clipboard-drop-target-dot-height)*-.5)}.ck.ck-editor__editable .ck.ck-clipboard-drop-target-position span:after{border-color:var(--ck-clipboard-drop-target-color) transparent transparent transparent;border-style:solid;border-width:calc(var(--ck-clipboard-drop-target-dot-height)) calc(var(--ck-clipboard-drop-target-dot-width)*.5) 0 calc(var(--ck-clipboard-drop-target-dot-width)*.5);content:"";display:block;height:0;left:50%;position:absolute;top:calc(var(--ck-clipboard-drop-target-dot-height)*-.5);transform:translateX(-50%);width:0}.ck.ck-editor__editable .ck-widget.ck-clipboard-drop-target-range{outline:var(--ck-widget-outline-thickness) solid var(--ck-clipboard-drop-target-color)!important}.ck.ck-editor__editable .ck-widget:-webkit-drag{zoom:.6;outline:none!important}',""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-engine/theme/placeholder.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck .ck-placeholder,.ck.ck-placeholder{position:relative}.ck .ck-placeholder:before,.ck.ck-placeholder:before{content:attr(data-placeholder);left:0;pointer-events:none;position:absolute;right:0}.ck.ck-read-only .ck-placeholder:before{display:none}.ck.ck-reset_all .ck-placeholder{position:relative}.ck .ck-placeholder:before,.ck.ck-placeholder:before{color:var(--ck-color-engine-placeholder-text);cursor:text}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-engine/theme/renderer.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck.ck-editor__editable span[data-ck-unsafe-element]{display:none}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/button/button.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck.ck-button,a.ck.ck-button{align-items:center;display:inline-flex;justify-content:left;position:relative;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.ck.ck-button .ck-button__label,a.ck.ck-button .ck-button__label{display:none}.ck.ck-button.ck-button_with-text .ck-button__label,a.ck.ck-button.ck-button_with-text .ck-button__label{display:inline-block}.ck.ck-button:not(.ck-button_with-text),a.ck.ck-button:not(.ck-button_with-text){justify-content:center}.ck.ck-button,a.ck.ck-button{background:var(--ck-color-button-default-background)}.ck.ck-button:not(.ck-disabled):hover,a.ck.ck-button:not(.ck-disabled):hover{background:var(--ck-color-button-default-hover-background)}.ck.ck-button:not(.ck-disabled):active,a.ck.ck-button:not(.ck-disabled):active{background:var(--ck-color-button-default-active-background)}.ck.ck-button.ck-disabled,a.ck.ck-button.ck-disabled{background:var(--ck-color-button-default-disabled-background)}.ck.ck-button,a.ck.ck-button{border-radius:0}.ck-rounded-corners .ck.ck-button,.ck-rounded-corners a.ck.ck-button,.ck.ck-button.ck-rounded-corners,a.ck.ck-button.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-button,a.ck.ck-button{-webkit-appearance:none;border:1px solid transparent;cursor:default;font-size:inherit;line-height:1;min-height:var(--ck-ui-component-min-height);min-width:var(--ck-ui-component-min-height);padding:var(--ck-spacing-tiny);text-align:center;transition:box-shadow .2s ease-in-out,border .2s ease-in-out;vertical-align:middle;white-space:nowrap}.ck.ck-button:active,.ck.ck-button:focus,a.ck.ck-button:active,a.ck.ck-button:focus{border:var(--ck-focus-ring);box-shadow:var(--ck-focus-outer-shadow),0 0;outline:none}.ck.ck-button .ck-button__icon use,.ck.ck-button .ck-button__icon use *,a.ck.ck-button .ck-button__icon use,a.ck.ck-button .ck-button__icon use *{color:inherit}.ck.ck-button .ck-button__label,a.ck.ck-button .ck-button__label{color:inherit;cursor:inherit;font-size:inherit;font-weight:inherit;vertical-align:middle}[dir=ltr] .ck.ck-button .ck-button__label,[dir=ltr] a.ck.ck-button .ck-button__label{text-align:left}[dir=rtl] .ck.ck-button .ck-button__label,[dir=rtl] a.ck.ck-button .ck-button__label{text-align:right}.ck.ck-button .ck-button__keystroke,a.ck.ck-button .ck-button__keystroke{color:inherit}[dir=ltr] .ck.ck-button .ck-button__keystroke,[dir=ltr] a.ck.ck-button .ck-button__keystroke{margin-left:var(--ck-spacing-large)}[dir=rtl] .ck.ck-button .ck-button__keystroke,[dir=rtl] a.ck.ck-button .ck-button__keystroke{margin-right:var(--ck-spacing-large)}.ck.ck-button .ck-button__keystroke,a.ck.ck-button .ck-button__keystroke{font-weight:700;opacity:.7}.ck.ck-button.ck-disabled:active,.ck.ck-button.ck-disabled:focus,a.ck.ck-button.ck-disabled:active,a.ck.ck-button.ck-disabled:focus{box-shadow:var(--ck-focus-disabled-outer-shadow),0 0}.ck.ck-button.ck-disabled .ck-button__icon,.ck.ck-button.ck-disabled .ck-button__label,a.ck.ck-button.ck-disabled .ck-button__icon,a.ck.ck-button.ck-disabled .ck-button__label{opacity:var(--ck-disabled-opacity)}.ck.ck-button.ck-disabled .ck-button__keystroke,a.ck.ck-button.ck-disabled .ck-button__keystroke{opacity:.3}.ck.ck-button.ck-button_with-text,a.ck.ck-button.ck-button_with-text{padding:var(--ck-spacing-tiny) var(--ck-spacing-standard)}[dir=ltr] .ck.ck-button.ck-button_with-text .ck-button__icon,[dir=ltr] a.ck.ck-button.ck-button_with-text .ck-button__icon{margin-left:calc(var(--ck-spacing-small)*-1);margin-right:var(--ck-spacing-small)}[dir=rtl] .ck.ck-button.ck-button_with-text .ck-button__icon,[dir=rtl] a.ck.ck-button.ck-button_with-text .ck-button__icon{margin-left:var(--ck-spacing-small);margin-right:calc(var(--ck-spacing-small)*-1)}.ck.ck-button.ck-button_with-keystroke .ck-button__label,a.ck.ck-button.ck-button_with-keystroke .ck-button__label{flex-grow:1}.ck.ck-button.ck-on,a.ck.ck-button.ck-on{background:var(--ck-color-button-on-background)}.ck.ck-button.ck-on:not(.ck-disabled):hover,a.ck.ck-button.ck-on:not(.ck-disabled):hover{background:var(--ck-color-button-on-hover-background)}.ck.ck-button.ck-on:not(.ck-disabled):active,a.ck.ck-button.ck-on:not(.ck-disabled):active{background:var(--ck-color-button-on-active-background)}.ck.ck-button.ck-on.ck-disabled,a.ck.ck-button.ck-on.ck-disabled{background:var(--ck-color-button-on-disabled-background)}.ck.ck-button.ck-on,a.ck.ck-button.ck-on{color:var(--ck-color-button-on-color)}.ck.ck-button.ck-button-save,a.ck.ck-button.ck-button-save{color:var(--ck-color-button-save)}.ck.ck-button.ck-button-cancel,a.ck.ck-button.ck-button-cancel{color:var(--ck-color-button-cancel)}.ck.ck-button-action,a.ck.ck-button-action{background:var(--ck-color-button-action-background)}.ck.ck-button-action:not(.ck-disabled):hover,a.ck.ck-button-action:not(.ck-disabled):hover{background:var(--ck-color-button-action-hover-background)}.ck.ck-button-action:not(.ck-disabled):active,a.ck.ck-button-action:not(.ck-disabled):active{background:var(--ck-color-button-action-active-background)}.ck.ck-button-action.ck-disabled,a.ck.ck-button-action.ck-disabled{background:var(--ck-color-button-action-disabled-background)}.ck.ck-button-action,a.ck.ck-button-action{color:var(--ck-color-button-action-text)}.ck.ck-button-bold,a.ck.ck-button-bold{font-weight:700}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/button/switchbutton.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck.ck-button.ck-switchbutton .ck-button__toggle,.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner{display:block}:root{--ck-switch-button-toggle-width:2.6153846154em;--ck-switch-button-toggle-inner-size:calc(1.07692em + 1px);--ck-switch-button-translation:calc(var(--ck-switch-button-toggle-width) - var(--ck-switch-button-toggle-inner-size) - 2px);--ck-switch-button-inner-hover-shadow:0 0 0 5px var(--ck-color-switch-button-inner-shadow)}[dir=ltr] .ck.ck-button.ck-switchbutton .ck-button__label{margin-right:calc(var(--ck-spacing-large)*2)}[dir=rtl] .ck.ck-button.ck-switchbutton .ck-button__label{margin-left:calc(var(--ck-spacing-large)*2)}.ck.ck-button.ck-switchbutton .ck-button__toggle{border-radius:0}.ck-rounded-corners .ck.ck-button.ck-switchbutton .ck-button__toggle,.ck.ck-button.ck-switchbutton .ck-button__toggle.ck-rounded-corners{border-radius:var(--ck-border-radius)}[dir=ltr] .ck.ck-button.ck-switchbutton .ck-button__toggle{margin-left:auto}[dir=rtl] .ck.ck-button.ck-switchbutton .ck-button__toggle{margin-right:auto}.ck.ck-button.ck-switchbutton .ck-button__toggle{background:var(--ck-color-switch-button-off-background);border:1px solid transparent;transition:background .4s ease,box-shadow .2s ease-in-out,outline .2s ease-in-out;width:var(--ck-switch-button-toggle-width)}.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner{border-radius:0}.ck-rounded-corners .ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner,.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner.ck-rounded-corners{border-radius:var(--ck-border-radius);border-radius:calc(var(--ck-border-radius)*.5)}.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner{background:var(--ck-color-switch-button-inner-background);height:var(--ck-switch-button-toggle-inner-size);transition:all .3s ease;width:var(--ck-switch-button-toggle-inner-size)}.ck.ck-button.ck-switchbutton .ck-button__toggle:hover{background:var(--ck-color-switch-button-off-hover-background)}.ck.ck-button.ck-switchbutton .ck-button__toggle:hover .ck-button__toggle__inner{box-shadow:var(--ck-switch-button-inner-hover-shadow)}.ck.ck-button.ck-switchbutton.ck-disabled .ck-button__toggle{opacity:var(--ck-disabled-opacity)}.ck.ck-button.ck-switchbutton:focus{border-color:transparent;box-shadow:none;outline:none}.ck.ck-button.ck-switchbutton:focus .ck-button__toggle{box-shadow:0 0 0 1px var(--ck-color-base-background),0 0 0 5px var(--ck-color-focus-outer-shadow);outline:var(--ck-focus-ring);outline-offset:1px}.ck.ck-button.ck-switchbutton.ck-on .ck-button__toggle{background:var(--ck-color-switch-button-on-background)}.ck.ck-button.ck-switchbutton.ck-on .ck-button__toggle:hover{background:var(--ck-color-switch-button-on-hover-background)}[dir=ltr] .ck.ck-button.ck-switchbutton.ck-on .ck-button__toggle .ck-button__toggle__inner{transform:translateX(var( --ck-switch-button-translation ))}[dir=rtl] .ck.ck-button.ck-switchbutton.ck-on .ck-button__toggle .ck-button__toggle__inner{transform:translateX(calc(var( --ck-switch-button-translation )*-1))}.ck.ck-button.ck-switchbutton.ck-on:active,.ck.ck-button.ck-switchbutton:active{background:transparent}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/colorgrid/colorgrid.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck.ck-color-grid{display:grid}:root{--ck-color-grid-tile-size:24px;--ck-color-color-grid-check-icon:#166fd4}.ck.ck-color-grid{grid-gap:5px;padding:8px}.ck.ck-color-grid__tile{border:0;height:var(--ck-color-grid-tile-size);min-height:var(--ck-color-grid-tile-size);min-width:var(--ck-color-grid-tile-size);padding:0;transition:box-shadow .2s ease;width:var(--ck-color-grid-tile-size)}.ck.ck-color-grid__tile.ck-disabled{cursor:unset;transition:unset}.ck.ck-color-grid__tile.ck-color-table__color-tile_bordered{box-shadow:0 0 0 1px var(--ck-color-base-border)}.ck.ck-color-grid__tile .ck.ck-icon{color:var(--ck-color-color-grid-check-icon);display:none}.ck.ck-color-grid__tile.ck-on{box-shadow:inset 0 0 0 1px var(--ck-color-base-background),0 0 0 2px var(--ck-color-base-text)}.ck.ck-color-grid__tile.ck-on .ck.ck-icon{display:block}.ck.ck-color-grid__tile.ck-on,.ck.ck-color-grid__tile:focus:not(.ck-disabled),.ck.ck-color-grid__tile:hover:not(.ck-disabled){border:0}.ck.ck-color-grid__tile:focus:not(.ck-disabled),.ck.ck-color-grid__tile:hover:not(.ck-disabled){box-shadow:inset 0 0 0 1px var(--ck-color-base-background),0 0 0 2px var(--ck-color-focus-border)}.ck.ck-color-grid__label{padding:0 var(--ck-spacing-standard)}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/dropdown/dropdown.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,":root{--ck-dropdown-max-width:75vw}.ck.ck-dropdown{display:inline-block;position:relative}.ck.ck-dropdown .ck-dropdown__arrow{pointer-events:none;z-index:var(--ck-z-default)}.ck.ck-dropdown .ck-button.ck-dropdown__button{width:100%}.ck.ck-dropdown .ck-dropdown__panel{display:none;max-width:var(--ck-dropdown-max-width);position:absolute;z-index:var(--ck-z-modal)}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel-visible{display:inline-block}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_n,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_ne,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nme,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nmw,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nw{bottom:100%}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_s,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_se,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_sme,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_smw,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_sw{bottom:auto;top:100%}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_ne,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_se{left:0}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nw,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_sw{right:0}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_n,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_s{left:50%;transform:translateX(-50%)}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nmw,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_smw{left:75%;transform:translateX(-75%)}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nme,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_sme{left:25%;transform:translateX(-25%)}.ck.ck-toolbar .ck-dropdown__panel{z-index:calc(var(--ck-z-modal) + 1)}:root{--ck-dropdown-arrow-size:calc(var(--ck-icon-size)*0.5)}.ck.ck-dropdown{font-size:inherit}.ck.ck-dropdown .ck-dropdown__arrow{width:var(--ck-dropdown-arrow-size)}[dir=ltr] .ck.ck-dropdown .ck-dropdown__arrow{margin-left:var(--ck-spacing-standard);right:var(--ck-spacing-standard)}[dir=rtl] .ck.ck-dropdown .ck-dropdown__arrow{left:var(--ck-spacing-standard);margin-right:var(--ck-spacing-small)}.ck.ck-dropdown.ck-disabled .ck-dropdown__arrow{opacity:var(--ck-disabled-opacity)}[dir=ltr] .ck.ck-dropdown .ck-button.ck-dropdown__button:not(.ck-button_with-text){padding-left:var(--ck-spacing-small)}[dir=rtl] .ck.ck-dropdown .ck-button.ck-dropdown__button:not(.ck-button_with-text){padding-right:var(--ck-spacing-small)}.ck.ck-dropdown .ck-button.ck-dropdown__button .ck-button__label{overflow:hidden;text-overflow:ellipsis;width:7em}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-disabled .ck-button__label{opacity:var(--ck-disabled-opacity)}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-on{border-bottom-left-radius:0;border-bottom-right-radius:0}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-dropdown__button_label-width_auto .ck-button__label{width:auto}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-off:active,.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-on:active{box-shadow:none}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-off:active:focus,.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-on:active:focus{box-shadow:var(--ck-focus-outer-shadow),0 0}.ck.ck-dropdown__panel{border-radius:0}.ck-rounded-corners .ck.ck-dropdown__panel,.ck.ck-dropdown__panel.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-dropdown__panel{background:var(--ck-color-dropdown-panel-background);border:1px solid var(--ck-color-dropdown-panel-border);bottom:0;box-shadow:var(--ck-drop-shadow),0 0;min-width:100%}.ck.ck-dropdown__panel.ck-dropdown__panel_se{border-top-left-radius:0}.ck.ck-dropdown__panel.ck-dropdown__panel_sw{border-top-right-radius:0}.ck.ck-dropdown__panel.ck-dropdown__panel_ne{border-bottom-left-radius:0}.ck.ck-dropdown__panel.ck-dropdown__panel_nw{border-bottom-right-radius:0}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/dropdown/listdropdown.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck.ck-dropdown .ck-dropdown__panel .ck-list{border-radius:0}.ck-rounded-corners .ck.ck-dropdown .ck-dropdown__panel .ck-list,.ck.ck-dropdown .ck-dropdown__panel .ck-list.ck-rounded-corners{border-radius:var(--ck-border-radius);border-top-left-radius:0}.ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:first-child .ck-button{border-radius:0}.ck-rounded-corners .ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:first-child .ck-button,.ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:first-child .ck-button.ck-rounded-corners{border-radius:var(--ck-border-radius);border-bottom-left-radius:0;border-bottom-right-radius:0;border-top-left-radius:0}.ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:last-child .ck-button{border-radius:0}.ck-rounded-corners .ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:last-child .ck-button,.ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:last-child .ck-button.ck-rounded-corners{border-radius:var(--ck-border-radius);border-top-left-radius:0;border-top-right-radius:0}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/dropdown/splitbutton.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,'.ck.ck-splitbutton{font-size:inherit}.ck.ck-splitbutton .ck-splitbutton__action:focus{z-index:calc(var(--ck-z-default) + 1)}:root{--ck-color-split-button-hover-background:#ebebeb;--ck-color-split-button-hover-border:#b3b3b3}[dir=ltr] .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__action,[dir=ltr] .ck.ck-splitbutton:hover>.ck-splitbutton__action{border-bottom-right-radius:unset;border-top-right-radius:unset}[dir=rtl] .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__action,[dir=rtl] .ck.ck-splitbutton:hover>.ck-splitbutton__action{border-bottom-left-radius:unset;border-top-left-radius:unset}.ck.ck-splitbutton>.ck-splitbutton__arrow{min-width:unset}[dir=ltr] .ck.ck-splitbutton>.ck-splitbutton__arrow{border-bottom-left-radius:unset;border-top-left-radius:unset}[dir=rtl] .ck.ck-splitbutton>.ck-splitbutton__arrow{border-bottom-right-radius:unset;border-top-right-radius:unset}.ck.ck-splitbutton>.ck-splitbutton__arrow svg{width:var(--ck-dropdown-arrow-size)}.ck.ck-splitbutton.ck-splitbutton_open>.ck-button:not(.ck-on):not(.ck-disabled):not(:hover),.ck.ck-splitbutton:hover>.ck-button:not(.ck-on):not(.ck-disabled):not(:hover){background:var(--ck-color-split-button-hover-background)}.ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled):after,.ck.ck-splitbutton:hover>.ck-splitbutton__arrow:not(.ck-disabled):after{background-color:var(--ck-color-split-button-hover-border);content:"";height:100%;position:absolute;width:1px}[dir=ltr] .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled):after,[dir=ltr] .ck.ck-splitbutton:hover>.ck-splitbutton__arrow:not(.ck-disabled):after{left:-1px}[dir=rtl] .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled):after,[dir=rtl] .ck.ck-splitbutton:hover>.ck-splitbutton__arrow:not(.ck-disabled):after{right:-1px}.ck.ck-splitbutton.ck-splitbutton_open{border-radius:0}.ck-rounded-corners .ck.ck-splitbutton.ck-splitbutton_open,.ck.ck-splitbutton.ck-splitbutton_open.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck-rounded-corners .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__action,.ck.ck-splitbutton.ck-splitbutton_open.ck-rounded-corners>.ck-splitbutton__action{border-bottom-left-radius:0}.ck-rounded-corners .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__arrow,.ck.ck-splitbutton.ck-splitbutton_open.ck-rounded-corners>.ck-splitbutton__arrow{border-bottom-right-radius:0}',""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/dropdown/toolbardropdown.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,":root{--ck-toolbar-dropdown-max-width:60vw}.ck.ck-toolbar-dropdown>.ck-dropdown__panel{max-width:var(--ck-toolbar-dropdown-max-width);width:max-content}.ck.ck-toolbar-dropdown>.ck-dropdown__panel .ck-button:focus{z-index:calc(var(--ck-z-default) + 1)}.ck.ck-toolbar-dropdown .ck-toolbar{border:0}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/editorui/editorui.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,":root{--ck-color-editable-blur-selection:#d9d9d9}.ck.ck-editor__editable:not(.ck-editor__nested-editable){border-radius:0}.ck-rounded-corners .ck.ck-editor__editable:not(.ck-editor__nested-editable),.ck.ck-editor__editable.ck-rounded-corners:not(.ck-editor__nested-editable){border-radius:var(--ck-border-radius)}.ck.ck-editor__editable.ck-focused:not(.ck-editor__nested-editable){border:var(--ck-focus-ring);box-shadow:var(--ck-inner-shadow),0 0;outline:none}.ck.ck-editor__editable_inline{border:1px solid transparent;overflow:auto;padding:0 var(--ck-spacing-standard)}.ck.ck-editor__editable_inline[dir=ltr]{text-align:left}.ck.ck-editor__editable_inline[dir=rtl]{text-align:right}.ck.ck-editor__editable_inline>:first-child{margin-top:var(--ck-spacing-large)}.ck.ck-editor__editable_inline>:last-child{margin-bottom:var(--ck-spacing-large)}.ck.ck-editor__editable_inline.ck-blurred ::selection{background:var(--ck-color-editable-blur-selection)}.ck.ck-balloon-panel.ck-toolbar-container[class*=arrow_n]:after{border-bottom-color:var(--ck-color-base-foreground)}.ck.ck-balloon-panel.ck-toolbar-container[class*=arrow_s]:after{border-top-color:var(--ck-color-base-foreground)}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/formheader/formheader.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck.ck-form__header{align-items:center;display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-between}:root{--ck-form-header-height:38px}.ck.ck-form__header{border-bottom:1px solid var(--ck-color-base-border);height:var(--ck-form-header-height);line-height:var(--ck-form-header-height);padding:var(--ck-spacing-small) var(--ck-spacing-large)}.ck.ck-form__header .ck-form__header__label{font-weight:700}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/icon/icon.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck.ck-icon{vertical-align:middle}:root{--ck-icon-size:calc(var(--ck-line-height-base)*var(--ck-font-size-normal))}.ck.ck-icon{font-size:.8333350694em;height:var(--ck-icon-size);width:var(--ck-icon-size);will-change:transform}.ck.ck-icon,.ck.ck-icon *{color:inherit;cursor:inherit}.ck.ck-icon :not([fill]){fill:currentColor}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/input/input.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,":root{--ck-input-width:18em;--ck-input-text-width:var(--ck-input-width)}.ck.ck-input{border-radius:0}.ck-rounded-corners .ck.ck-input,.ck.ck-input.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-input{background:var(--ck-color-input-background);border:1px solid var(--ck-color-input-border);min-height:var(--ck-ui-component-min-height);min-width:var(--ck-input-width);padding:var(--ck-spacing-extra-tiny) var(--ck-spacing-medium);transition:box-shadow .1s ease-in-out,border .1s ease-in-out}.ck.ck-input:focus{border:var(--ck-focus-ring);box-shadow:var(--ck-focus-outer-shadow),0 0;outline:none}.ck.ck-input[readonly]{background:var(--ck-color-input-disabled-background);border:1px solid var(--ck-color-input-disabled-border);color:var(--ck-color-input-disabled-text)}.ck.ck-input[readonly]:focus{box-shadow:var(--ck-focus-disabled-outer-shadow),0 0}.ck.ck-input.ck-error{animation:ck-input-shake .3s ease both;border-color:var(--ck-color-input-error-border)}.ck.ck-input.ck-error:focus{box-shadow:var(--ck-focus-error-outer-shadow),0 0}@keyframes ck-input-shake{20%{transform:translateX(-2px)}40%{transform:translateX(2px)}60%{transform:translateX(-1px)}80%{transform:translateX(1px)}}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/label/label.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck.ck-label{display:block}.ck.ck-voice-label{display:none}.ck.ck-label{font-weight:700}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/labeledfield/labeledfieldview.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper{display:flex;position:relative}.ck.ck-labeled-field-view .ck.ck-label{display:block;position:absolute}:root{--ck-labeled-field-view-transition:.1s cubic-bezier(0,0,0.24,0.95);--ck-labeled-field-empty-unfocused-max-width:100% - 2 * var(--ck-spacing-medium);--ck-color-labeled-field-label-background:var(--ck-color-base-background)}.ck.ck-labeled-field-view{border-radius:0}.ck-rounded-corners .ck.ck-labeled-field-view,.ck.ck-labeled-field-view.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper{width:100%}.ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{top:0}[dir=ltr] .ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{left:0}[dir=rtl] .ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{right:0}.ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{background:var(--ck-color-labeled-field-label-background);font-weight:400;line-height:normal;max-width:100%;overflow:hidden;padding:0 calc(var(--ck-font-size-tiny)*.5);pointer-events:none;text-overflow:ellipsis;transform:translate(var(--ck-spacing-medium),-6px) scale(.75);transform-origin:0 0;transition:transform var(--ck-labeled-field-view-transition),padding var(--ck-labeled-field-view-transition),background var(--ck-labeled-field-view-transition)}.ck.ck-labeled-field-view.ck-error .ck-input:not([readonly])+.ck.ck-label,.ck.ck-labeled-field-view.ck-error>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{color:var(--ck-color-base-error)}.ck.ck-labeled-field-view .ck-labeled-field-view__status{font-size:var(--ck-font-size-small);margin-top:var(--ck-spacing-small);white-space:normal}.ck.ck-labeled-field-view .ck-labeled-field-view__status.ck-labeled-field-view__status_error{color:var(--ck-color-base-error)}.ck.ck-labeled-field-view.ck-disabled>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label,.ck.ck-labeled-field-view.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused)>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{color:var(--ck-color-input-disabled-text)}[dir=ltr] .ck.ck-labeled-field-view.ck-disabled.ck-labeled-field-view_empty>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label,[dir=ltr] .ck.ck-labeled-field-view.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused):not(.ck-labeled-field-view_placeholder)>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{transform:translate(var(--ck-spacing-medium),calc(var(--ck-font-size-base)*.6)) scale(1)}[dir=rtl] .ck.ck-labeled-field-view.ck-disabled.ck-labeled-field-view_empty>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label,[dir=rtl] .ck.ck-labeled-field-view.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused):not(.ck-labeled-field-view_placeholder)>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{transform:translate(calc(var(--ck-spacing-medium)*-1),calc(var(--ck-font-size-base)*.6)) scale(1)}.ck.ck-labeled-field-view.ck-disabled.ck-labeled-field-view_empty>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label,.ck.ck-labeled-field-view.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused):not(.ck-labeled-field-view_placeholder)>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{background:transparent;max-width:calc(var(--ck-labeled-field-empty-unfocused-max-width));padding:0}.ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper>.ck-dropdown>.ck.ck-button{background:transparent}.ck.ck-labeled-field-view.ck-labeled-field-view_empty>.ck.ck-labeled-field-view__input-wrapper>.ck-dropdown>.ck-button>.ck-button__label{opacity:0}.ck.ck-labeled-field-view.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused):not(.ck-labeled-field-view_placeholder)>.ck.ck-labeled-field-view__input-wrapper>.ck-dropdown+.ck-label{max-width:calc(var(--ck-labeled-field-empty-unfocused-max-width) - var(--ck-dropdown-arrow-size) - var(--ck-spacing-standard))}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/list/list.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck.ck-list{display:flex;flex-direction:column;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.ck.ck-list .ck-list__item,.ck.ck-list .ck-list__separator{display:block}.ck.ck-list .ck-list__item>:focus{position:relative;z-index:var(--ck-z-default)}.ck.ck-list{border-radius:0}.ck-rounded-corners .ck.ck-list,.ck.ck-list.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-list{background:var(--ck-color-list-background);list-style-type:none}.ck.ck-list__item{cursor:default;min-width:12em}.ck.ck-list__item .ck-button{border-radius:0;min-height:unset;padding:calc(var(--ck-line-height-base)*.2*var(--ck-font-size-base)) calc(var(--ck-line-height-base)*.4*var(--ck-font-size-base));text-align:left;width:100%}.ck.ck-list__item .ck-button .ck-button__label{line-height:calc(var(--ck-line-height-base)*1.2*var(--ck-font-size-base))}.ck.ck-list__item .ck-button:active{box-shadow:none}.ck.ck-list__item .ck-button.ck-on{background:var(--ck-color-list-button-on-background);color:var(--ck-color-list-button-on-text)}.ck.ck-list__item .ck-button.ck-on:active{box-shadow:none}.ck.ck-list__item .ck-button.ck-on:hover:not(.ck-disabled){background:var(--ck-color-list-button-on-background-focus)}.ck.ck-list__item .ck-button.ck-on:focus:not(.ck-switchbutton):not(.ck-disabled){border-color:var(--ck-color-base-background)}.ck.ck-list__item .ck-button:hover:not(.ck-disabled){background:var(--ck-color-list-button-hover-background)}.ck.ck-list__item .ck-switchbutton.ck-on{background:var(--ck-color-list-background);color:inherit}.ck.ck-list__item .ck-switchbutton.ck-on:hover:not(.ck-disabled){background:var(--ck-color-list-button-hover-background);color:inherit}.ck.ck-list__separator{background:var(--ck-color-base-border);height:1px;width:100%}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/panel/balloonpanel.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,':root{--ck-balloon-panel-arrow-z-index:calc(var(--ck-z-default) - 3)}.ck.ck-balloon-panel{display:none;position:absolute;z-index:var(--ck-z-modal)}.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:after,.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:before{content:"";position:absolute}.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:before{z-index:var(--ck-balloon-panel-arrow-z-index)}.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:after{z-index:calc(var(--ck-balloon-panel-arrow-z-index) + 1)}.ck.ck-balloon-panel[class*=arrow_n]:before{z-index:var(--ck-balloon-panel-arrow-z-index)}.ck.ck-balloon-panel[class*=arrow_n]:after{z-index:calc(var(--ck-balloon-panel-arrow-z-index) + 1)}.ck.ck-balloon-panel[class*=arrow_s]:before{z-index:var(--ck-balloon-panel-arrow-z-index)}.ck.ck-balloon-panel[class*=arrow_s]:after{z-index:calc(var(--ck-balloon-panel-arrow-z-index) + 1)}.ck.ck-balloon-panel.ck-balloon-panel_visible{display:block}:root{--ck-balloon-border-width:1px;--ck-balloon-arrow-offset:2px;--ck-balloon-arrow-height:10px;--ck-balloon-arrow-half-width:8px;--ck-balloon-arrow-drop-shadow:0 2px 2px var(--ck-color-shadow-drop)}.ck.ck-balloon-panel{border-radius:0}.ck-rounded-corners .ck.ck-balloon-panel,.ck.ck-balloon-panel.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-balloon-panel{background:var(--ck-color-panel-background);border:var(--ck-balloon-border-width) solid var(--ck-color-panel-border);box-shadow:var(--ck-drop-shadow),0 0;min-height:15px}.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:after,.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:before{border-style:solid;height:0;width:0}.ck.ck-balloon-panel[class*=arrow_n]:after,.ck.ck-balloon-panel[class*=arrow_n]:before{border-width:0 var(--ck-balloon-arrow-half-width) var(--ck-balloon-arrow-height) var(--ck-balloon-arrow-half-width)}.ck.ck-balloon-panel[class*=arrow_n]:before{border-color:transparent transparent var(--ck-color-panel-border) transparent;margin-top:calc(var(--ck-balloon-border-width)*-1)}.ck.ck-balloon-panel[class*=arrow_n]:after{border-color:transparent transparent var(--ck-color-panel-background) transparent;margin-top:calc(var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width))}.ck.ck-balloon-panel[class*=arrow_s]:after,.ck.ck-balloon-panel[class*=arrow_s]:before{border-width:var(--ck-balloon-arrow-height) var(--ck-balloon-arrow-half-width) 0 var(--ck-balloon-arrow-half-width)}.ck.ck-balloon-panel[class*=arrow_s]:before{border-color:var(--ck-color-panel-border) transparent transparent;filter:drop-shadow(var(--ck-balloon-arrow-drop-shadow));margin-bottom:calc(var(--ck-balloon-border-width)*-1)}.ck.ck-balloon-panel[class*=arrow_s]:after{border-color:var(--ck-color-panel-background) transparent transparent transparent;margin-bottom:calc(var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width))}.ck.ck-balloon-panel[class*=arrow_e]:after,.ck.ck-balloon-panel[class*=arrow_e]:before{border-width:var(--ck-balloon-arrow-half-width) 0 var(--ck-balloon-arrow-half-width) var(--ck-balloon-arrow-height)}.ck.ck-balloon-panel[class*=arrow_e]:before{border-color:transparent transparent transparent var(--ck-color-panel-border);margin-right:calc(var(--ck-balloon-border-width)*-1)}.ck.ck-balloon-panel[class*=arrow_e]:after{border-color:transparent transparent transparent var(--ck-color-panel-background);margin-right:calc(var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width))}.ck.ck-balloon-panel[class*=arrow_w]:after,.ck.ck-balloon-panel[class*=arrow_w]:before{border-width:var(--ck-balloon-arrow-half-width) var(--ck-balloon-arrow-height) var(--ck-balloon-arrow-half-width) 0}.ck.ck-balloon-panel[class*=arrow_w]:before{border-color:transparent var(--ck-color-panel-border) transparent transparent;margin-left:calc(var(--ck-balloon-border-width)*-1)}.ck.ck-balloon-panel[class*=arrow_w]:after{border-color:transparent var(--ck-color-panel-background) transparent transparent;margin-left:calc(var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width))}.ck.ck-balloon-panel.ck-balloon-panel_arrow_n:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_n:before{left:50%;margin-left:calc(var(--ck-balloon-arrow-half-width)*-1);top:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_nw:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_nw:before{left:calc(var(--ck-balloon-arrow-half-width)*2);top:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_ne:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_ne:before{right:calc(var(--ck-balloon-arrow-half-width)*2);top:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_s:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_s:before{bottom:calc(var(--ck-balloon-arrow-height)*-1);left:50%;margin-left:calc(var(--ck-balloon-arrow-half-width)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_sw:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_sw:before{bottom:calc(var(--ck-balloon-arrow-height)*-1);left:calc(var(--ck-balloon-arrow-half-width)*2)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_se:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_se:before{bottom:calc(var(--ck-balloon-arrow-height)*-1);right:calc(var(--ck-balloon-arrow-half-width)*2)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_sme:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_sme:before{bottom:calc(var(--ck-balloon-arrow-height)*-1);margin-right:calc(var(--ck-balloon-arrow-half-width)*2);right:25%}.ck.ck-balloon-panel.ck-balloon-panel_arrow_smw:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_smw:before{bottom:calc(var(--ck-balloon-arrow-height)*-1);left:25%;margin-left:calc(var(--ck-balloon-arrow-half-width)*2)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_nme:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_nme:before{margin-right:calc(var(--ck-balloon-arrow-half-width)*2);right:25%;top:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_nmw:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_nmw:before{left:25%;margin-left:calc(var(--ck-balloon-arrow-half-width)*2);top:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_e:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_e:before{margin-top:calc(var(--ck-balloon-arrow-half-width)*-1);right:calc(var(--ck-balloon-arrow-height)*-1);top:50%}.ck.ck-balloon-panel.ck-balloon-panel_arrow_w:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_w:before{left:calc(var(--ck-balloon-arrow-height)*-1);margin-top:calc(var(--ck-balloon-arrow-half-width)*-1);top:50%}',""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/panel/balloonrotator.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck .ck-balloon-rotator__navigation{align-items:center;display:flex;justify-content:center}.ck .ck-balloon-rotator__content .ck-toolbar{justify-content:center}.ck .ck-balloon-rotator__navigation{background:var(--ck-color-toolbar-background);border-bottom:1px solid var(--ck-color-toolbar-border);padding:0 var(--ck-spacing-small)}.ck .ck-balloon-rotator__navigation>*{margin-bottom:var(--ck-spacing-small);margin-right:var(--ck-spacing-small);margin-top:var(--ck-spacing-small)}.ck .ck-balloon-rotator__navigation .ck-balloon-rotator__counter{margin-left:var(--ck-spacing-small);margin-right:var(--ck-spacing-standard)}.ck .ck-balloon-rotator__content .ck.ck-annotation-wrapper{box-shadow:none}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/panel/fakepanel.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck .ck-fake-panel{position:absolute;z-index:calc(var(--ck-z-modal) - 1)}.ck .ck-fake-panel div{position:absolute}.ck .ck-fake-panel div:first-child{z-index:2}.ck .ck-fake-panel div:nth-child(2){z-index:1}:root{--ck-balloon-fake-panel-offset-horizontal:6px;--ck-balloon-fake-panel-offset-vertical:6px}.ck .ck-fake-panel div{background:var(--ck-color-panel-background);border:1px solid var(--ck-color-panel-border);border-radius:var(--ck-border-radius);box-shadow:var(--ck-drop-shadow),0 0;height:100%;min-height:15px;width:100%}.ck .ck-fake-panel div:first-child{margin-left:var(--ck-balloon-fake-panel-offset-horizontal);margin-top:var(--ck-balloon-fake-panel-offset-vertical)}.ck .ck-fake-panel div:nth-child(2){margin-left:calc(var(--ck-balloon-fake-panel-offset-horizontal)*2);margin-top:calc(var(--ck-balloon-fake-panel-offset-vertical)*2)}.ck .ck-fake-panel div:nth-child(3){margin-left:calc(var(--ck-balloon-fake-panel-offset-horizontal)*3);margin-top:calc(var(--ck-balloon-fake-panel-offset-vertical)*3)}.ck .ck-balloon-panel_arrow_s+.ck-fake-panel,.ck .ck-balloon-panel_arrow_se+.ck-fake-panel,.ck .ck-balloon-panel_arrow_sw+.ck-fake-panel{--ck-balloon-fake-panel-offset-vertical:-6px}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/panel/stickypanel.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck.ck-sticky-panel .ck-sticky-panel__content_sticky{position:fixed;top:0;z-index:var(--ck-z-modal)}.ck.ck-sticky-panel .ck-sticky-panel__content_sticky_bottom-limit{position:absolute;top:auto}.ck.ck-sticky-panel .ck-sticky-panel__content_sticky{border-top-left-radius:0;border-top-right-radius:0;border-width:0 1px 1px;box-shadow:var(--ck-drop-shadow),0 0}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/toolbar/blocktoolbar.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck.ck-block-toolbar-button{position:absolute;z-index:var(--ck-z-default)}:root{--ck-color-block-toolbar-button:var(--ck-color-text);--ck-block-toolbar-button-size:var(--ck-font-size-normal)}.ck.ck-block-toolbar-button{color:var(--ck-color-block-toolbar-button);font-size:var(--ck-block-toolbar-size)}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/toolbar/toolbar.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck.ck-toolbar{align-items:center;display:flex;flex-flow:row nowrap;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.ck.ck-toolbar>.ck-toolbar__items{align-items:center;display:flex;flex-flow:row wrap;flex-grow:1}.ck.ck-toolbar .ck.ck-toolbar__separator{display:inline-block}.ck.ck-toolbar .ck.ck-toolbar__separator:first-child,.ck.ck-toolbar .ck.ck-toolbar__separator:last-child{display:none}.ck.ck-toolbar .ck-toolbar__line-break{flex-basis:100%}.ck.ck-toolbar.ck-toolbar_grouping>.ck-toolbar__items{flex-wrap:nowrap}.ck.ck-toolbar.ck-toolbar_vertical>.ck-toolbar__items{flex-direction:column}.ck.ck-toolbar.ck-toolbar_floating>.ck-toolbar__items{flex-wrap:nowrap}.ck.ck-toolbar>.ck.ck-toolbar__grouped-dropdown>.ck-dropdown__button .ck-dropdown__arrow{display:none}.ck.ck-toolbar{border-radius:0}.ck-rounded-corners .ck.ck-toolbar,.ck.ck-toolbar.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-toolbar{background:var(--ck-color-toolbar-background);border:1px solid var(--ck-color-toolbar-border);padding:0 var(--ck-spacing-small)}.ck.ck-toolbar .ck.ck-toolbar__separator{align-self:stretch;background:var(--ck-color-toolbar-border);margin-bottom:var(--ck-spacing-small);margin-top:var(--ck-spacing-small);min-width:1px;width:1px}.ck.ck-toolbar .ck-toolbar__line-break{height:0}.ck.ck-toolbar>.ck-toolbar__items>:not(.ck-toolbar__line-break){margin-right:var(--ck-spacing-small)}.ck.ck-toolbar>.ck-toolbar__items:empty+.ck.ck-toolbar__separator{display:none}.ck.ck-toolbar>.ck-toolbar__items>:not(.ck-toolbar__line-break),.ck.ck-toolbar>.ck.ck-toolbar__grouped-dropdown{margin-bottom:var(--ck-spacing-small);margin-top:var(--ck-spacing-small)}.ck.ck-toolbar.ck-toolbar_vertical{padding:0}.ck.ck-toolbar.ck-toolbar_vertical>.ck-toolbar__items>.ck{border-radius:0;margin:0;width:100%}.ck.ck-toolbar.ck-toolbar_compact{padding:0}.ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>*{margin:0}.ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>:not(:first-child):not(:last-child){border-radius:0}.ck.ck-toolbar>.ck.ck-toolbar__grouped-dropdown>.ck.ck-button.ck-dropdown__button{padding-left:var(--ck-spacing-tiny)}.ck-toolbar-container .ck.ck-toolbar{border:0}.ck.ck-toolbar[dir=rtl]>.ck-toolbar__items>.ck,[dir=rtl] .ck.ck-toolbar>.ck-toolbar__items>.ck{margin-right:0}.ck.ck-toolbar[dir=rtl]:not(.ck-toolbar_compact)>.ck-toolbar__items>.ck,[dir=rtl] .ck.ck-toolbar:not(.ck-toolbar_compact)>.ck-toolbar__items>.ck{margin-left:var(--ck-spacing-small)}.ck.ck-toolbar[dir=rtl]>.ck-toolbar__items>.ck:last-child,[dir=rtl] .ck.ck-toolbar>.ck-toolbar__items>.ck:last-child{margin-left:0}.ck.ck-toolbar.ck-toolbar_compact[dir=rtl]>.ck-toolbar__items>.ck:first-child,[dir=rtl] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.ck.ck-toolbar.ck-toolbar_compact[dir=rtl]>.ck-toolbar__items>.ck:last-child,[dir=rtl] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:last-child{border-bottom-right-radius:0;border-top-right-radius:0}.ck.ck-toolbar.ck-toolbar_grouping[dir=rtl]>.ck-toolbar__items:not(:empty):not(:only-child),.ck.ck-toolbar[dir=rtl]>.ck.ck-toolbar__separator,[dir=rtl] .ck.ck-toolbar.ck-toolbar_grouping>.ck-toolbar__items:not(:empty):not(:only-child),[dir=rtl] .ck.ck-toolbar>.ck.ck-toolbar__separator{margin-left:var(--ck-spacing-small)}.ck.ck-toolbar[dir=ltr]>.ck-toolbar__items>.ck:last-child,[dir=ltr] .ck.ck-toolbar>.ck-toolbar__items>.ck:last-child{margin-right:0}.ck.ck-toolbar.ck-toolbar_compact[dir=ltr]>.ck-toolbar__items>.ck:first-child,[dir=ltr] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:first-child{border-bottom-right-radius:0;border-top-right-radius:0}.ck.ck-toolbar.ck-toolbar_compact[dir=ltr]>.ck-toolbar__items>.ck:last-child,[dir=ltr] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:last-child{border-bottom-left-radius:0;border-top-left-radius:0}.ck.ck-toolbar.ck-toolbar_grouping[dir=ltr]>.ck-toolbar__items:not(:empty):not(:only-child),.ck.ck-toolbar[dir=ltr]>.ck.ck-toolbar__separator,[dir=ltr] .ck.ck-toolbar.ck-toolbar_grouping>.ck-toolbar__items:not(:empty):not(:only-child),[dir=ltr] .ck.ck-toolbar>.ck.ck-toolbar__separator{margin-right:var(--ck-spacing-small)}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/tooltip/tooltip.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck.ck-balloon-panel.ck-tooltip{--ck-balloon-border-width:0px;--ck-balloon-arrow-offset:0px;--ck-balloon-arrow-half-width:4px;--ck-balloon-arrow-height:4px;--ck-color-panel-background:var(--ck-color-tooltip-background);padding:0 var(--ck-spacing-medium);pointer-events:none;z-index:calc(var(--ck-z-modal) + 100)}.ck.ck-balloon-panel.ck-tooltip .ck-tooltip__text{color:var(--ck-color-tooltip-text);font-size:.9em;line-height:1.5}.ck.ck-balloon-panel.ck-tooltip{box-shadow:none}.ck.ck-balloon-panel.ck-tooltip:before{display:none}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/globals/globals.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck-hidden{display:none!important}.ck-reset_all :not(.ck-reset_all-excluded *),.ck.ck-reset,.ck.ck-reset_all{box-sizing:border-box;height:auto;position:static;width:auto}:root{--ck-z-default:1;--ck-z-modal:calc(var(--ck-z-default) + 999)}.ck-transitions-disabled,.ck-transitions-disabled *{transition:none!important}:root{--ck-color-base-foreground:#fafafa;--ck-color-base-background:#fff;--ck-color-base-border:#ccced1;--ck-color-base-action:#53a336;--ck-color-base-focus:#6cb5f9;--ck-color-base-text:#333;--ck-color-base-active:#2977ff;--ck-color-base-active-focus:#0d65ff;--ck-color-base-error:#db3700;--ck-color-focus-border-coordinates:218,81.8%,56.9%;--ck-color-focus-border:hsl(var(--ck-color-focus-border-coordinates));--ck-color-focus-outer-shadow:#cae1fc;--ck-color-focus-disabled-shadow:rgba(119,186,248,.3);--ck-color-focus-error-shadow:rgba(255,64,31,.3);--ck-color-text:var(--ck-color-base-text);--ck-color-shadow-drop:rgba(0,0,0,.15);--ck-color-shadow-drop-active:rgba(0,0,0,.2);--ck-color-shadow-inner:rgba(0,0,0,.1);--ck-color-button-default-background:transparent;--ck-color-button-default-hover-background:#f0f0f0;--ck-color-button-default-active-background:#f0f0f0;--ck-color-button-default-disabled-background:transparent;--ck-color-button-on-background:#f0f7ff;--ck-color-button-on-hover-background:#dbecff;--ck-color-button-on-active-background:#dbecff;--ck-color-button-on-disabled-background:#f0f2f4;--ck-color-button-on-color:#2977ff;--ck-color-button-action-background:var(--ck-color-base-action);--ck-color-button-action-hover-background:#4d9d30;--ck-color-button-action-active-background:#4d9d30;--ck-color-button-action-disabled-background:#7ec365;--ck-color-button-action-text:var(--ck-color-base-background);--ck-color-button-save:#008a00;--ck-color-button-cancel:#db3700;--ck-color-switch-button-off-background:#939393;--ck-color-switch-button-off-hover-background:#7d7d7d;--ck-color-switch-button-on-background:var(--ck-color-button-action-background);--ck-color-switch-button-on-hover-background:#4d9d30;--ck-color-switch-button-inner-background:var(--ck-color-base-background);--ck-color-switch-button-inner-shadow:rgba(0,0,0,.1);--ck-color-dropdown-panel-background:var(--ck-color-base-background);--ck-color-dropdown-panel-border:var(--ck-color-base-border);--ck-color-input-background:var(--ck-color-base-background);--ck-color-input-border:var(--ck-color-base-border);--ck-color-input-error-border:var(--ck-color-base-error);--ck-color-input-text:var(--ck-color-base-text);--ck-color-input-disabled-background:#f2f2f2;--ck-color-input-disabled-border:var(--ck-color-base-border);--ck-color-input-disabled-text:#757575;--ck-color-list-background:var(--ck-color-base-background);--ck-color-list-button-hover-background:var(--ck-color-button-default-hover-background);--ck-color-list-button-on-background:var(--ck-color-button-on-color);--ck-color-list-button-on-background-focus:var(--ck-color-button-on-color);--ck-color-list-button-on-text:var(--ck-color-base-background);--ck-color-panel-background:var(--ck-color-base-background);--ck-color-panel-border:var(--ck-color-base-border);--ck-color-toolbar-background:var(--ck-color-base-background);--ck-color-toolbar-border:var(--ck-color-base-border);--ck-color-tooltip-background:var(--ck-color-base-text);--ck-color-tooltip-text:var(--ck-color-base-background);--ck-color-engine-placeholder-text:#707070;--ck-color-upload-bar-background:#6cb5f9;--ck-color-link-default:#0000f0;--ck-color-link-selected-background:rgba(31,176,255,.1);--ck-color-link-fake-selection:rgba(31,176,255,.3);--ck-disabled-opacity:.5;--ck-focus-outer-shadow-geometry:0 0 0 3px;--ck-focus-outer-shadow:var(--ck-focus-outer-shadow-geometry) var(--ck-color-focus-outer-shadow);--ck-focus-disabled-outer-shadow:var(--ck-focus-outer-shadow-geometry) var(--ck-color-focus-disabled-shadow);--ck-focus-error-outer-shadow:var(--ck-focus-outer-shadow-geometry) var(--ck-color-focus-error-shadow);--ck-focus-ring:1px solid var(--ck-color-focus-border);--ck-font-size-base:13px;--ck-line-height-base:1.84615;--ck-font-face:Helvetica,Arial,Tahoma,Verdana,Sans-Serif;--ck-font-size-tiny:0.7em;--ck-font-size-small:0.75em;--ck-font-size-normal:1em;--ck-font-size-big:1.4em;--ck-font-size-large:1.8em;--ck-ui-component-min-height:2.3em}.ck-reset_all :not(.ck-reset_all-excluded *),.ck.ck-reset,.ck.ck-reset_all{word-wrap:break-word;background:transparent;border:0;margin:0;padding:0;text-decoration:none;transition:none;vertical-align:middle}.ck-reset_all :not(.ck-reset_all-excluded *),.ck.ck-reset_all{border-collapse:collapse;color:var(--ck-color-text);cursor:auto;float:none;font:normal normal normal var(--ck-font-size-base)/var(--ck-line-height-base) var(--ck-font-face);text-align:left;white-space:nowrap}.ck-reset_all .ck-rtl :not(.ck-reset_all-excluded *){text-align:right}.ck-reset_all iframe:not(.ck-reset_all-excluded *){vertical-align:inherit}.ck-reset_all textarea:not(.ck-reset_all-excluded *){white-space:pre-wrap}.ck-reset_all input[type=password]:not(.ck-reset_all-excluded *),.ck-reset_all input[type=text]:not(.ck-reset_all-excluded *),.ck-reset_all textarea:not(.ck-reset_all-excluded *){cursor:text}.ck-reset_all input[type=password][disabled]:not(.ck-reset_all-excluded *),.ck-reset_all input[type=text][disabled]:not(.ck-reset_all-excluded *),.ck-reset_all textarea[disabled]:not(.ck-reset_all-excluded *){cursor:default}.ck-reset_all fieldset:not(.ck-reset_all-excluded *){border:2px groove #dfdee3;padding:10px}.ck-reset_all button:not(.ck-reset_all-excluded *)::-moz-focus-inner{border:0;padding:0}.ck[dir=rtl],.ck[dir=rtl] .ck{text-align:right}:root{--ck-border-radius:2px;--ck-inner-shadow:2px 2px 3px var(--ck-color-shadow-inner) inset;--ck-drop-shadow:0 1px 2px 1px var(--ck-color-shadow-drop);--ck-drop-shadow-active:0 3px 6px 1px var(--ck-color-shadow-drop-active);--ck-spacing-unit:0.6em;--ck-spacing-large:calc(var(--ck-spacing-unit)*1.5);--ck-spacing-standard:var(--ck-spacing-unit);--ck-spacing-medium:calc(var(--ck-spacing-unit)*0.8);--ck-spacing-small:calc(var(--ck-spacing-unit)*0.5);--ck-spacing-tiny:calc(var(--ck-spacing-unit)*0.3);--ck-spacing-extra-tiny:calc(var(--ck-spacing-unit)*0.16)}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-widget/theme/widget.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,":root{--ck-color-resizer:var(--ck-color-focus-border);--ck-color-resizer-tooltip-background:#262626;--ck-color-resizer-tooltip-text:#f2f2f2;--ck-resizer-border-radius:var(--ck-border-radius);--ck-resizer-tooltip-offset:10px;--ck-resizer-tooltip-height:calc(var(--ck-spacing-small)*2 + 10px)}.ck .ck-widget,.ck .ck-widget.ck-widget_with-selection-handle{position:relative}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle{position:absolute}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle .ck-icon{display:block}.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected>.ck-widget__selection-handle,.ck .ck-widget.ck-widget_with-selection-handle:hover>.ck-widget__selection-handle{visibility:visible}.ck .ck-size-view{background:var(--ck-color-resizer-tooltip-background);border:1px solid var(--ck-color-resizer-tooltip-text);border-radius:var(--ck-resizer-border-radius);color:var(--ck-color-resizer-tooltip-text);display:block;font-size:var(--ck-font-size-tiny);height:var(--ck-resizer-tooltip-height);line-height:var(--ck-resizer-tooltip-height);padding:0 var(--ck-spacing-small)}.ck .ck-size-view.ck-orientation-above-center,.ck .ck-size-view.ck-orientation-bottom-left,.ck .ck-size-view.ck-orientation-bottom-right,.ck .ck-size-view.ck-orientation-top-left,.ck .ck-size-view.ck-orientation-top-right{position:absolute}.ck .ck-size-view.ck-orientation-top-left{left:var(--ck-resizer-tooltip-offset);top:var(--ck-resizer-tooltip-offset)}.ck .ck-size-view.ck-orientation-top-right{right:var(--ck-resizer-tooltip-offset);top:var(--ck-resizer-tooltip-offset)}.ck .ck-size-view.ck-orientation-bottom-right{bottom:var(--ck-resizer-tooltip-offset);right:var(--ck-resizer-tooltip-offset)}.ck .ck-size-view.ck-orientation-bottom-left{bottom:var(--ck-resizer-tooltip-offset);left:var(--ck-resizer-tooltip-offset)}.ck .ck-size-view.ck-orientation-above-center{left:50%;top:calc(var(--ck-resizer-tooltip-height)*-1);transform:translate(-50%)}:root{--ck-widget-outline-thickness:3px;--ck-widget-handler-icon-size:16px;--ck-widget-handler-animation-duration:200ms;--ck-widget-handler-animation-curve:ease;--ck-color-widget-blurred-border:#dedede;--ck-color-widget-hover-border:#ffc83d;--ck-color-widget-editable-focus-background:var(--ck-color-base-background);--ck-color-widget-drag-handler-icon-color:var(--ck-color-base-background)}.ck .ck-widget{outline-color:transparent;outline-style:solid;outline-width:var(--ck-widget-outline-thickness);transition:outline-color var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve)}.ck .ck-widget.ck-widget_selected,.ck .ck-widget.ck-widget_selected:hover{outline:var(--ck-widget-outline-thickness) solid var(--ck-color-focus-border)}.ck .ck-widget:hover{outline-color:var(--ck-color-widget-hover-border)}.ck .ck-editor__nested-editable{border:1px solid transparent}.ck .ck-editor__nested-editable.ck-editor__nested-editable_focused,.ck .ck-editor__nested-editable:focus{background-color:var(--ck-color-widget-editable-focus-background);border:var(--ck-focus-ring);box-shadow:var(--ck-inner-shadow),0 0;outline:none}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle{background-color:transparent;border-radius:var(--ck-border-radius) var(--ck-border-radius) 0 0;box-sizing:border-box;left:calc(0px - var(--ck-widget-outline-thickness));opacity:0;padding:4px;top:0;transform:translateY(-100%);transition:background-color var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve),visibility var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve),opacity var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve)}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle .ck-icon{color:var(--ck-color-widget-drag-handler-icon-color);height:var(--ck-widget-handler-icon-size);width:var(--ck-widget-handler-icon-size)}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle .ck-icon .ck-icon__selected-indicator{opacity:0;transition:opacity .3s var(--ck-widget-handler-animation-curve)}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle:hover .ck-icon .ck-icon__selected-indicator{opacity:1}.ck .ck-widget.ck-widget_with-selection-handle:hover>.ck-widget__selection-handle{background-color:var(--ck-color-widget-hover-border);opacity:1}.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected:hover>.ck-widget__selection-handle,.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected>.ck-widget__selection-handle{background-color:var(--ck-color-focus-border);opacity:1}.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected:hover>.ck-widget__selection-handle .ck-icon .ck-icon__selected-indicator,.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected>.ck-widget__selection-handle .ck-icon .ck-icon__selected-indicator{opacity:1}.ck[dir=rtl] .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle{left:auto;right:calc(0px - var(--ck-widget-outline-thickness))}.ck.ck-editor__editable.ck-read-only .ck-widget{transition:none}.ck.ck-editor__editable.ck-read-only .ck-widget:not(.ck-widget_selected){--ck-widget-outline-thickness:0px}.ck.ck-editor__editable.ck-read-only .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle,.ck.ck-editor__editable.ck-read-only .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle:hover{background:var(--ck-color-widget-blurred-border)}.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected,.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected:hover{outline-color:var(--ck-color-widget-blurred-border)}.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected.ck-widget_with-selection-handle:hover>.ck-widget__selection-handle,.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected.ck-widget_with-selection-handle:hover>.ck-widget__selection-handle:hover,.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected.ck-widget_with-selection-handle>.ck-widget__selection-handle,.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected.ck-widget_with-selection-handle>.ck-widget__selection-handle:hover{background:var(--ck-color-widget-blurred-border)}.ck.ck-editor__editable blockquote>.ck-widget.ck-widget_with-selection-handle:first-child,.ck.ck-editor__editable>.ck-widget.ck-widget_with-selection-handle:first-child{margin-top:calc(1em + var(--ck-widget-handler-icon-size))}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-widget/theme/widgetresize.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck .ck-widget_with-resizer{position:relative}.ck .ck-widget__resizer{display:none;left:0;pointer-events:none;position:absolute;top:0}.ck-focused .ck-widget_with-resizer.ck-widget_selected>.ck-widget__resizer{display:block}.ck .ck-widget__resizer__handle{pointer-events:all;position:absolute}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-bottom-right,.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-top-left{cursor:nwse-resize}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-bottom-left,.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-top-right{cursor:nesw-resize}:root{--ck-resizer-size:10px;--ck-resizer-offset:calc(var(--ck-resizer-size)/-2 - 2px);--ck-resizer-border-width:1px}.ck .ck-widget__resizer{outline:1px solid var(--ck-color-resizer)}.ck .ck-widget__resizer__handle{background:var(--ck-color-focus-border);border:var(--ck-resizer-border-width) solid #fff;border-radius:var(--ck-resizer-border-radius);height:var(--ck-resizer-size);width:var(--ck-resizer-size)}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-top-left{left:var(--ck-resizer-offset);top:var(--ck-resizer-offset)}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-top-right{right:var(--ck-resizer-offset);top:var(--ck-resizer-offset)}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-bottom-right{bottom:var(--ck-resizer-offset);right:var(--ck-resizer-offset)}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-bottom-left{bottom:var(--ck-resizer-offset);left:var(--ck-resizer-offset)}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-widget/theme/widgettypearound.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,'.ck .ck-widget .ck-widget__type-around__button{display:block;overflow:hidden;position:absolute;z-index:var(--ck-z-default)}.ck .ck-widget .ck-widget__type-around__button svg{left:50%;position:absolute;top:50%;z-index:calc(var(--ck-z-default) + 2)}.ck .ck-widget .ck-widget__type-around__button.ck-widget__type-around__button_before{left:min(10%,30px);top:calc(var(--ck-widget-outline-thickness)*-.5);transform:translateY(-50%)}.ck .ck-widget .ck-widget__type-around__button.ck-widget__type-around__button_after{bottom:calc(var(--ck-widget-outline-thickness)*-.5);right:min(10%,30px);transform:translateY(50%)}.ck .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button:after,.ck .ck-widget>.ck-widget__type-around>.ck-widget__type-around__button:hover:after{content:"";display:block;left:1px;position:absolute;top:1px;z-index:calc(var(--ck-z-default) + 1)}.ck .ck-widget>.ck-widget__type-around>.ck-widget__type-around__fake-caret{display:none;left:0;position:absolute;right:0}.ck .ck-widget:hover>.ck-widget__type-around>.ck-widget__type-around__fake-caret{left:calc(var(--ck-widget-outline-thickness)*-1);right:calc(var(--ck-widget-outline-thickness)*-1)}.ck .ck-widget.ck-widget_type-around_show-fake-caret_before>.ck-widget__type-around>.ck-widget__type-around__fake-caret{display:block;top:calc(var(--ck-widget-outline-thickness)*-1 - 1px)}.ck .ck-widget.ck-widget_type-around_show-fake-caret_after>.ck-widget__type-around>.ck-widget__type-around__fake-caret{bottom:calc(var(--ck-widget-outline-thickness)*-1 - 1px);display:block}.ck.ck-editor__editable.ck-read-only .ck-widget__type-around,.ck.ck-editor__editable.ck-restricted-editing_mode_restricted .ck-widget__type-around,.ck.ck-editor__editable.ck-widget__type-around_disabled .ck-widget__type-around{display:none}:root{--ck-widget-type-around-button-size:20px;--ck-color-widget-type-around-button-active:var(--ck-color-focus-border);--ck-color-widget-type-around-button-hover:var(--ck-color-widget-hover-border);--ck-color-widget-type-around-button-blurred-editable:var(--ck-color-widget-blurred-border);--ck-color-widget-type-around-button-radar-start-alpha:0;--ck-color-widget-type-around-button-radar-end-alpha:.3;--ck-color-widget-type-around-button-icon:var(--ck-color-base-background)}.ck .ck-widget .ck-widget__type-around__button{background:var(--ck-color-widget-type-around-button);border-radius:100px;height:var(--ck-widget-type-around-button-size);opacity:0;pointer-events:none;transition:opacity var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve),background var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve);width:var(--ck-widget-type-around-button-size)}.ck .ck-widget .ck-widget__type-around__button svg{height:8px;margin-top:1px;transform:translate(-50%,-50%);transition:transform .5s ease;width:10px}.ck .ck-widget .ck-widget__type-around__button svg *{stroke-dasharray:10;stroke-dashoffset:0;fill:none;stroke:var(--ck-color-widget-type-around-button-icon);stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round}.ck .ck-widget .ck-widget__type-around__button svg line{stroke-dasharray:7}.ck .ck-widget .ck-widget__type-around__button:hover{animation:ck-widget-type-around-button-sonar 1s ease infinite}.ck .ck-widget .ck-widget__type-around__button:hover svg polyline{animation:ck-widget-type-around-arrow-dash 2s linear}.ck .ck-widget .ck-widget__type-around__button:hover svg line{animation:ck-widget-type-around-arrow-tip-dash 2s linear}.ck .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button,.ck .ck-widget:hover>.ck-widget__type-around>.ck-widget__type-around__button{opacity:1;pointer-events:auto}.ck .ck-widget:not(.ck-widget_selected)>.ck-widget__type-around>.ck-widget__type-around__button{background:var(--ck-color-widget-type-around-button-hover)}.ck .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button,.ck .ck-widget>.ck-widget__type-around>.ck-widget__type-around__button:hover{background:var(--ck-color-widget-type-around-button-active)}.ck .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button:after,.ck .ck-widget>.ck-widget__type-around>.ck-widget__type-around__button:hover:after{background:linear-gradient(135deg,hsla(0,0%,100%,0),hsla(0,0%,100%,.3));border-radius:100px;height:calc(var(--ck-widget-type-around-button-size) - 2px);width:calc(var(--ck-widget-type-around-button-size) - 2px)}.ck .ck-widget.ck-widget_with-selection-handle>.ck-widget__type-around>.ck-widget__type-around__button_before{margin-left:20px}.ck .ck-widget .ck-widget__type-around__fake-caret{animation:ck-widget-type-around-fake-caret-pulse 1s linear infinite normal forwards;background:var(--ck-color-base-text);height:1px;outline:1px solid hsla(0,0%,100%,.5);pointer-events:none}.ck .ck-widget.ck-widget_selected.ck-widget_type-around_show-fake-caret_after,.ck .ck-widget.ck-widget_selected.ck-widget_type-around_show-fake-caret_before{outline-color:transparent}.ck .ck-widget.ck-widget_type-around_show-fake-caret_after.ck-widget_selected:hover,.ck .ck-widget.ck-widget_type-around_show-fake-caret_before.ck-widget_selected:hover{outline-color:var(--ck-color-widget-hover-border)}.ck .ck-widget.ck-widget_type-around_show-fake-caret_after>.ck-widget__type-around>.ck-widget__type-around__button,.ck .ck-widget.ck-widget_type-around_show-fake-caret_before>.ck-widget__type-around>.ck-widget__type-around__button{opacity:0;pointer-events:none}.ck .ck-widget.ck-widget_type-around_show-fake-caret_after.ck-widget_selected.ck-widget_with-resizer>.ck-widget__resizer,.ck .ck-widget.ck-widget_type-around_show-fake-caret_after.ck-widget_with-selection-handle.ck-widget_selected:hover>.ck-widget__selection-handle,.ck .ck-widget.ck-widget_type-around_show-fake-caret_after.ck-widget_with-selection-handle.ck-widget_selected>.ck-widget__selection-handle,.ck .ck-widget.ck-widget_type-around_show-fake-caret_before.ck-widget_selected.ck-widget_with-resizer>.ck-widget__resizer,.ck .ck-widget.ck-widget_type-around_show-fake-caret_before.ck-widget_with-selection-handle.ck-widget_selected:hover>.ck-widget__selection-handle,.ck .ck-widget.ck-widget_type-around_show-fake-caret_before.ck-widget_with-selection-handle.ck-widget_selected>.ck-widget__selection-handle{opacity:0}.ck[dir=rtl] .ck-widget.ck-widget_with-selection-handle .ck-widget__type-around>.ck-widget__type-around__button_before{margin-left:0;margin-right:20px}.ck-editor__nested-editable.ck-editor__editable_selected .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button,.ck-editor__nested-editable.ck-editor__editable_selected .ck-widget:hover>.ck-widget__type-around>.ck-widget__type-around__button{opacity:0;pointer-events:none}.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button:not(:hover){background:var(--ck-color-widget-type-around-button-blurred-editable)}.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button:not(:hover) svg *{stroke:#999}@keyframes ck-widget-type-around-arrow-dash{0%{stroke-dashoffset:10}20%,to{stroke-dashoffset:0}}@keyframes ck-widget-type-around-arrow-tip-dash{0%,20%{stroke-dashoffset:7}40%,to{stroke-dashoffset:0}}@keyframes ck-widget-type-around-button-sonar{0%{box-shadow:0 0 0 0 hsla(var(--ck-color-focus-border-coordinates),var(--ck-color-widget-type-around-button-radar-start-alpha))}50%{box-shadow:0 0 0 5px hsla(var(--ck-color-focus-border-coordinates),var(--ck-color-widget-type-around-button-radar-end-alpha))}to{box-shadow:0 0 0 5px hsla(var(--ck-color-focus-border-coordinates),var(--ck-color-widget-type-around-button-radar-start-alpha))}}@keyframes ck-widget-type-around-fake-caret-pulse{0%{opacity:1}49%{opacity:1}50%{opacity:0}99%{opacity:0}to{opacity:1}}',""]);const r=i},"./node_modules/css-loader/dist/runtime/api.js":e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var s=e(t);return t[2]?"@media ".concat(t[2]," {").concat(s,"}"):s})).join("")},t.i=function(e,s,o){"string"==typeof e&&(e=[[null,e,""]]);var i={};if(o)for(var r=0;r<this.length;r++){var n=this[r][0];null!=n&&(i[n]=!0)}for(var a=0;a<e.length;a++){var c=[].concat(e[a]);o&&i[c[0]]||(s&&(c[2]?c[2]="".concat(s," and ").concat(c[2]):c[2]=s),t.push(c))}},t}},"./packages/ckeditor5-core/theme/icons/pilcrow.svg":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M6.999 2H15a1 1 0 0 1 0 2h-1.004v13a1 1 0 1 1-2 0V4H8.999v13a1 1 0 1 1-2 0v-7A4 4 0 0 1 3 6a4 4 0 0 1 3.999-4z"/></svg>'},"./packages/ckeditor5-core/theme/icons/three-vertical-dots.svg":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><circle cx="9.5" cy="4.5" r="1.5"/><circle cx="9.5" cy="10.5" r="1.5"/><circle cx="9.5" cy="16.5" r="1.5"/></svg>'},"./packages/ckeditor5-ui/theme/icons/dropdown-arrow.svg":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o='<svg viewBox="0 0 10 10" xmlns="http://www.w3.org/2000/svg"><path d="M.941 4.523a.75.75 0 1 1 1.06-1.06l3.006 3.005 3.005-3.005a.75.75 0 1 1 1.06 1.06l-3.549 3.55a.75.75 0 0 1-1.168-.136L.941 4.523z"/></svg>'},"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js":(e,t,s)=>{"use strict";var o,i=function(){return void 0===o&&(o=Boolean(window&&document&&document.all&&!window.atob)),o},r=function(){var e={};return function(t){if(void 0===e[t]){var s=document.querySelector(t);if(window.HTMLIFrameElement&&s instanceof window.HTMLIFrameElement)try{s=s.contentDocument.head}catch(e){s=null}e[t]=s}return e[t]}}(),n=[];function a(e){for(var t=-1,s=0;s<n.length;s++)if(n[s].identifier===e){t=s;break}return t}function c(e,t){for(var s={},o=[],i=0;i<e.length;i++){var r=e[i],c=t.base?r[0]+t.base:r[0],l=s[c]||0,d="".concat(c," ").concat(l);s[c]=l+1;var h=a(d),u={css:r[1],media:r[2],sourceMap:r[3]};-1!==h?(n[h].references++,n[h].updater(u)):n.push({identifier:d,updater:m(u,t),references:1}),o.push(d)}return o}function l(e){var t=document.createElement("style"),o=e.attributes||{};if(void 0===o.nonce){var i=s.nc;i&&(o.nonce=i)}if(Object.keys(o).forEach((function(e){t.setAttribute(e,o[e])})),"function"==typeof e.insert)e.insert(t);else{var n=r(e.insert||"head");if(!n)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");n.appendChild(t)}return t}var d,h=(d=[],function(e,t){return d[e]=t,d.filter(Boolean).join("\n")});function u(e,t,s,o){var i=s?"":o.media?"@media ".concat(o.media," {").concat(o.css,"}"):o.css;if(e.styleSheet)e.styleSheet.cssText=h(t,i);else{var r=document.createTextNode(i),n=e.childNodes;n[t]&&e.removeChild(n[t]),n.length?e.insertBefore(r,n[t]):e.appendChild(r)}}function p(e,t,s){var o=s.css,i=s.media,r=s.sourceMap;if(i?e.setAttribute("media",i):e.removeAttribute("media"),r&&"undefined"!=typeof btoa&&(o+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(r))))," */")),e.styleSheet)e.styleSheet.cssText=o;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(o))}}var g=null,f=0;function m(e,t){var s,o,i;if(t.singleton){var r=f++;s=g||(g=l(t)),o=u.bind(null,s,r,!1),i=u.bind(null,s,r,!0)}else s=l(t),o=p.bind(null,s,t),i=function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(s)};return o(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;o(e=t)}else i()}}e.exports=function(e,t){(t=t||{}).singleton||"boolean"==typeof t.singleton||(t.singleton=i());var s=c(e=e||[],t);return function(e){if(e=e||[],"[object Array]"===Object.prototype.toString.call(e)){for(var o=0;o<s.length;o++){var i=a(s[o]);n[i].references--}for(var r=c(e,t),l=0;l<s.length;l++){var d=a(s[l]);0===n[d].references&&(n[d].updater(),n.splice(d,1))}s=r}}}},"./packages/ckeditor5-engine/src/controller/datacontroller.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>Z});var o=s("./packages/ckeditor5-utils/src/observablemixin.ts"),i=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),r=s("./packages/ckeditor5-utils/src/emittermixin.ts"),n=s("./packages/ckeditor5-engine/src/conversion/mapper.ts"),a=s("./packages/ckeditor5-engine/src/conversion/downcastdispatcher.ts"),c=s("./packages/ckeditor5-engine/src/conversion/downcasthelpers.ts"),l=s("./node_modules/lodash-es/isArray.js");class d{constructor(){this._consumables=new Map}add(e,t){let s;e.is("$text")||e.is("documentFragment")?this._consumables.set(e,!0):(this._consumables.has(e)?s=this._consumables.get(e):(s=new u(e),this._consumables.set(e,s)),s.add(t))}test(e,t){const s=this._consumables.get(e);return void 0===s?null:e.is("$text")||e.is("documentFragment")?s:s.test(t)}consume(e,t){return!!this.test(e,t)&&(e.is("$text")||e.is("documentFragment")?this._consumables.set(e,!1):this._consumables.get(e).consume(t),!0)}revert(e,t){const s=this._consumables.get(e);void 0!==s&&(e.is("$text")||e.is("documentFragment")?this._consumables.set(e,!0):s.revert(t))}static consumablesFromElement(e){const t={element:e,name:!0,attributes:[],classes:[],styles:[]},s=e.getAttributeKeys();for(const e of s)"style"!=e&&"class"!=e&&t.attributes.push(e);const o=e.getClassNames();for(const e of o)t.classes.push(e);const i=e.getStyleNames();for(const e of i)t.styles.push(e);return t}static createFrom(e,t){if(t||(t=new d),e.is("$text"))return t.add(e),t;e.is("element")&&t.add(e,d.consumablesFromElement(e)),e.is("documentFragment")&&t.add(e);for(const s of e.getChildren())t=d.createFrom(s,t);return t}}const h=["attributes","classes","styles"];class u{constructor(e){this.element=e,this._canConsumeName=null,this._consumables={attributes:new Map,styles:new Map,classes:new Map}}add(e){e.name&&(this._canConsumeName=!0);for(const t of h)t in e&&this._add(t,e[t])}test(e){if(e.name&&!this._canConsumeName)return this._canConsumeName;for(const t of h)if(t in e){const s=this._test(t,e[t]);if(!0!==s)return s}return!0}consume(e){e.name&&(this._canConsumeName=!1);for(const t of h)t in e&&this._consume(t,e[t])}revert(e){e.name&&(this._canConsumeName=!0);for(const t of h)t in e&&this._revert(t,e[t])}_add(e,t){const s=(0,l.Z)(t)?t:[t],o=this._consumables[e];for(const t of s){if("attributes"===e&&("class"===t||"style"===t))throw new i.ZP("viewconsumable-invalid-attribute",this);if(o.set(t,!0),"styles"===e)for(const e of this.element.document.stylesProcessor.getRelatedStyles(t))o.set(e,!0)}}_test(e,t){const s=(0,l.Z)(t)?t:[t],o=this._consumables[e];for(const t of s)if("attributes"!==e||"class"!==t&&"style"!==t){const e=o.get(t);if(void 0===e)return null;if(!e)return!1}else{const e="class"==t?"classes":"styles",s=this._test(e,[...this._consumables[e].keys()]);if(!0!==s)return s}return!0}_consume(e,t){const s=(0,l.Z)(t)?t:[t],o=this._consumables[e];for(const t of s)if("attributes"!==e||"class"!==t&&"style"!==t){if(o.set(t,!1),"styles"==e)for(const e of this.element.document.stylesProcessor.getRelatedStyles(t))o.set(e,!1)}else{const e="class"==t?"classes":"styles";this._consume(e,[...this._consumables[e].keys()])}}_revert(e,t){const s=(0,l.Z)(t)?t:[t],o=this._consumables[e];for(const t of s)if("attributes"!==e||"class"!==t&&"style"!==t){!1===o.get(t)&&o.set(t,!0)}else{const e="class"==t?"classes":"styles";this._revert(e,[...this._consumables[e].keys()])}}}var p=s("./packages/ckeditor5-engine/src/model/range.ts"),g=s("./packages/ckeditor5-engine/src/model/position.ts"),f=s("./packages/ckeditor5-engine/src/model/schema.ts"),m=s("./packages/ckeditor5-engine/src/model/utils/autoparagraphing.ts");class k extends r.Q5{constructor(e){super(),this._splitParts=new Map,this._cursorParents=new Map,this._modelCursor=null,this._emptyElementsToKeep=new Set,this.conversionApi={...e,consumable:null,writer:null,store:null,convertItem:(e,t)=>this._convertItem(e,t),convertChildren:(e,t)=>this._convertChildren(e,t),safeInsert:(e,t)=>this._safeInsert(e,t),updateConversionResult:(e,t)=>this._updateConversionResult(e,t),splitToAllowedParent:(e,t)=>this._splitToAllowedParent(e,t),getSplitParts:e=>this._getSplitParts(e),keepEmptyElement:e=>this._keepEmptyElement(e)}}convert(e,t,s=["$root"]){this.fire("viewCleanup",e),this._modelCursor=function(e,t){let s;for(const o of new f.G(e)){const e={};for(const t of o.getAttributeKeys())e[t]=o.getAttribute(t);const i=t.createElement(o.name,e);s&&t.insert(i,s),s=g.ZP._createAt(i,0)}return s}(s,t),this.conversionApi.writer=t,this.conversionApi.consumable=d.createFrom(e),this.conversionApi.store={};const{modelRange:o}=this._convertItem(e,this._modelCursor),i=t.createDocumentFragment();if(o){this._removeEmptyElements();for(const e of Array.from(this._modelCursor.parent.getChildren()))t.append(e,i);i.markers=function(e,t){const s=new Set,o=new Map,i=p.Z._createIn(e).getItems();for(const e of i)e.is("element","$marker")&&s.add(e);for(const e of s){const s=e.getAttribute("data-name"),i=t.createPositionBefore(e);o.has(s)?o.get(s).end=i.clone():o.set(s,new p.Z(i.clone())),t.remove(e)}return o}(i,t)}return this._modelCursor=null,this._splitParts.clear(),this._cursorParents.clear(),this._emptyElementsToKeep.clear(),this.conversionApi.writer=null,this.conversionApi.store=null,i}_convertItem(e,t){const s={viewItem:e,modelCursor:t,modelRange:null};if(e.is("element")?this.fire(`element:${e.name}`,s,this.conversionApi):e.is("$text")?this.fire("text",s,this.conversionApi):this.fire("documentFragment",s,this.conversionApi),s.modelRange&&!(s.modelRange instanceof p.Z))throw new i.ZP("view-conversion-dispatcher-incorrect-result",this);return{modelRange:s.modelRange,modelCursor:s.modelCursor}}_convertChildren(e,t){let s=t.is("position")?t:g.ZP._createAt(t,0);const o=new p.Z(s);for(const t of Array.from(e.getChildren())){const e=this._convertItem(t,s);e.modelRange instanceof p.Z&&(o.end=e.modelRange.end,s=e.modelCursor)}return{modelRange:o,modelCursor:s}}_safeInsert(e,t){const s=this._splitToAllowedParent(e,t);return!!s&&(this.conversionApi.writer.insert(e,s.position),!0)}_updateConversionResult(e,t){const s=this._getSplitParts(e),o=this.conversionApi.writer;t.modelRange||(t.modelRange=o.createRange(o.createPositionBefore(e),o.createPositionAfter(s[s.length-1])));const i=this._cursorParents.get(e);t.modelCursor=i?o.createPositionAt(i,0):t.modelRange.end}_splitToAllowedParent(e,t){const{schema:s,writer:o}=this.conversionApi;let i=s.findAllowedParent(t,e);if(i){if(i===t.parent)return{position:t};this._modelCursor.parent.getAncestors().includes(i)&&(i=null)}if(!i)return(0,m.gg)(t,e,s)?{position:(0,m.zX)(t,o)}:null;const r=this.conversionApi.writer.split(t,i),n=[];for(const e of r.range.getWalker())if("elementEnd"==e.type)n.push(e.item);else{const t=n.pop(),s=e.item;this._registerSplitPair(t,s)}const a=r.range.end.parent;return this._cursorParents.set(e,a),{position:r.position,cursorParent:a}}_registerSplitPair(e,t){this._splitParts.has(e)||this._splitParts.set(e,[e]);const s=this._splitParts.get(e);this._splitParts.set(t,s),s.push(t)}_getSplitParts(e){let t;return t=this._splitParts.has(e)?this._splitParts.get(e):[e],t}_keepEmptyElement(e){this._emptyElementsToKeep.add(e)}_removeEmptyElements(){let e=!1;for(const t of this._splitParts.keys())t.isEmpty&&!this._emptyElementsToKeep.has(t)&&(this.conversionApi.writer.remove(t),this._splitParts.delete(t),e=!0);e&&this._removeEmptyElements()}}var b=s("./packages/ckeditor5-engine/src/conversion/upcasthelpers.ts"),_=s("./packages/ckeditor5-engine/src/view/documentfragment.ts"),w=s("./packages/ckeditor5-engine/src/view/document.ts"),v=s("./packages/ckeditor5-engine/src/view/downcastwriter.ts"),y=s("./packages/ckeditor5-engine/src/dataprocessor/htmldataprocessor.ts");class Z extends r.Q5{constructor(e,t){super(),this.model=e,this.mapper=new n.Z,this.downcastDispatcher=new a.Z({mapper:this.mapper,schema:e.schema}),this.downcastDispatcher.on("insert:$text",(0,c.Om)(),{priority:"lowest"}),this.downcastDispatcher.on("insert",(0,c.o6)(),{priority:"lowest"}),this.upcastDispatcher=new k({schema:e.schema}),this.viewDocument=new w.Z(t),this.stylesProcessor=t,this.htmlProcessor=new y.Z(this.viewDocument),this.processor=this.htmlProcessor,this._viewWriter=new v.Z(this.viewDocument),this.upcastDispatcher.on("text",(0,b.s8)(),{priority:"lowest"}),this.upcastDispatcher.on("element",(0,b._p)(),{priority:"lowest"}),this.upcastDispatcher.on("documentFragment",(0,b._p)(),{priority:"lowest"}),o.y.prototype.decorate.call(this,"init"),o.y.prototype.decorate.call(this,"set"),o.y.prototype.decorate.call(this,"get"),this.on("init",(()=>{this.fire("ready")}),{priority:"lowest"}),this.on("ready",(()=>{this.model.enqueueChange({isUndoable:!1},m._m)}),{priority:"lowest"})}get(e={}){const{rootName:t="main",trim:s="empty"}=e;if(!this._checkIfRootsExists([t]))throw new i.ZP("datacontroller-get-non-existent-root",this);const o=this.model.document.getRoot(t);return"empty"!==s||this.model.hasContent(o,{ignoreWhitespaces:!0})?this.stringify(o,e):""}stringify(e,t={}){const s=this.toView(e,t);return this.processor.toData(s)}toView(e,t={}){const s=this.viewDocument,o=this._viewWriter;this.mapper.clearBindings();const i=p.Z._createIn(e),r=new _.Z(s);this.mapper.bindElements(e,r);const n=e.is("documentFragment")?e.markers:function(e){const t=[],s=e.root.document;if(!s)return new Map;const o=p.Z._createIn(e);for(const e of s.model.markers){const s=e.getRange(),i=s.isCollapsed,r=s.start.isEqual(o.start)||s.end.isEqual(o.end);if(i&&r)t.push([e.name,s]);else{const i=o.getIntersection(s);i&&t.push([e.name,i])}}return t.sort((([e,t],[s,o])=>{if("after"!==t.end.compareWith(o.start))return 1;if("before"!==t.start.compareWith(o.end))return-1;switch(t.start.compareWith(o.start)){case"before":return 1;case"after":return-1;default:switch(t.end.compareWith(o.end)){case"before":return 1;case"after":return-1;default:return s.localeCompare(e)}}})),new Map(t)}(e);return this.downcastDispatcher.convert(i,n,o,t),r}init(e){if(this.model.document.version)throw new i.ZP("datacontroller-init-document-not-empty",this);let t={};if("string"==typeof e?t.main=e:t=e,!this._checkIfRootsExists(Object.keys(t)))throw new i.ZP("datacontroller-init-non-existent-root",this);return this.model.enqueueChange({isUndoable:!1},(e=>{for(const s of Object.keys(t)){const o=this.model.document.getRoot(s);e.insert(this.parse(t[s],o),o,0)}})),Promise.resolve()}set(e,t={}){let s={};if("string"==typeof e?s.main=e:s=e,!this._checkIfRootsExists(Object.keys(s)))throw new i.ZP("datacontroller-set-non-existent-root",this);this.model.enqueueChange(t.batchType||{},(e=>{e.setSelection(null),e.removeSelectionAttribute(this.model.document.selection.getAttributeKeys());for(const t of Object.keys(s)){const o=this.model.document.getRoot(t);e.remove(e.createRangeIn(o)),e.insert(this.parse(s[t],o),o,0)}}))}parse(e,t="$root"){const s=this.processor.toView(e);return this.toModel(s,t)}toModel(e,t="$root"){return this.model.change((s=>this.upcastDispatcher.convert(e,s,t)))}addStyleProcessorRules(e){e(this.stylesProcessor)}registerRawContentMatcher(e){this.processor&&this.processor!==this.htmlProcessor&&this.processor.registerRawContentMatcher(e),this.htmlProcessor.registerRawContentMatcher(e)}destroy(){this.stopListening()}_checkIfRootsExists(e){for(const t of e)if(!this.model.document.getRootNames().includes(t))return!1;return!0}}},"./packages/ckeditor5-engine/src/controller/editingcontroller.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>F});var o=s("./packages/ckeditor5-engine/src/view/editableelement.ts");const i=Symbol("rootName");class r extends o.Z{constructor(e,t){super(e,t),this.rootName="main"}get rootName(){return this.getCustomProperty(i)}set rootName(e){this._setCustomProperty(i,e)}set _name(e){this.name=e}}r.prototype.is=function(e,t){return t?t===this.name&&("rootElement"===e||"view:rootElement"===e||"editableElement"===e||"view:editableElement"===e||"containerElement"===e||"view:containerElement"===e||"element"===e||"view:element"===e):"rootElement"===e||"view:rootElement"===e||"editableElement"===e||"view:editableElement"===e||"containerElement"===e||"view:containerElement"===e||"element"===e||"view:element"===e||"node"===e||"view:node"===e};var n=s("./packages/ckeditor5-engine/src/view/document.ts"),a=s("./packages/ckeditor5-engine/src/view/downcastwriter.ts"),c=s("./packages/ckeditor5-engine/src/view/renderer.ts"),l=s("./packages/ckeditor5-engine/src/view/domconverter.ts"),d=s("./packages/ckeditor5-engine/src/view/position.ts"),h=s("./packages/ckeditor5-engine/src/view/range.ts"),u=s("./packages/ckeditor5-engine/src/view/selection.ts"),p=s("./packages/ckeditor5-engine/src/view/observer/observer.ts"),g=s("./packages/ckeditor5-engine/src/view/filler.ts"),f=s("./node_modules/lodash-es/_baseIsEqual.js");const m=function(e,t,s){var o=(s="function"==typeof s?s:void 0)?s(e,t):void 0;return void 0===o?(0,f.Z)(e,t,void 0,s):!!o};class k extends p.Z{constructor(e){super(e),this._config={childList:!0,characterData:!0,characterDataOldValue:!0,subtree:!0},this.domConverter=e.domConverter,this.renderer=e._renderer,this._domElements=[],this._mutationObserver=new window.MutationObserver(this._onMutations.bind(this))}flush(){this._onMutations(this._mutationObserver.takeRecords())}observe(e){this._domElements.push(e),this.isEnabled&&this._mutationObserver.observe(e,this._config)}enable(){super.enable();for(const e of this._domElements)this._mutationObserver.observe(e,this._config)}disable(){super.disable(),this._mutationObserver.disconnect()}destroy(){super.destroy(),this._mutationObserver.disconnect()}_onMutations(e){if(0===e.length)return;const t=this.domConverter,s=new Map,o=new Set;for(const s of e)if("childList"===s.type){const e=t.mapDomToView(s.target);if(e&&(e.is("uiElement")||e.is("rawElement")))continue;e&&!this._isBogusBrMutation(s)&&o.add(e)}for(const i of e){const e=t.mapDomToView(i.target);if((!e||!e.is("uiElement")&&!e.is("rawElement"))&&"characterData"===i.type){const e=t.findCorrespondingViewText(i.target);e&&!o.has(e.parent)?s.set(e,{type:"text",oldText:e.data,newText:(0,g.th)(i.target),node:e}):!e&&(0,g.Sw)(i.target)&&o.add(t.mapDomToView(i.target.parentNode))}}const i=[];for(const e of s.values())this.renderer.markToSync("text",e.node),i.push(e);for(const e of o){const s=t.mapViewToDom(e),o=Array.from(e.getChildren()),r=Array.from(t.domChildrenToView(s,{withChildren:!1}));m(o,r,a)||(this.renderer.markToSync("children",e),i.push({type:"children",oldChildren:o,newChildren:r,node:e}))}const r=e[0].target.ownerDocument.getSelection();let n=null;if(r&&r.anchorNode){const e=t.domPositionToView(r.anchorNode,r.anchorOffset),s=t.domPositionToView(r.focusNode,r.focusOffset);e&&s&&(n=new u.Z(e),n.setFocus(s))}function a(e,t){if(!Array.isArray(e))return e===t||!(!e.is("$text")||!t.is("$text"))&&e.data===t.data}i.length&&(this.document.fire("mutations",i,n),this.view.forceRender())}_isBogusBrMutation(e){let t=null;return null===e.nextSibling&&0===e.removedNodes.length&&1==e.addedNodes.length&&(t=this.domConverter.domToView(e.addedNodes[0],{withChildren:!1})),t&&t.is("element","br")}}var b=s("./packages/ckeditor5-engine/src/view/observer/domeventobserver.ts"),_=s("./packages/ckeditor5-utils/src/keyboard.ts");class w extends b.Z{constructor(e){super(e),this.domEventType=["keydown","keyup"]}onDomEvent(e){const t={keyCode:e.keyCode,altKey:e.altKey,ctrlKey:e.ctrlKey,shiftKey:e.shiftKey,metaKey:e.metaKey,get keystroke(){return(0,_.Cq)(this)}};this.fire(e.type,e,t)}}var v=s("./node_modules/lodash-es/debounce.js");class y extends p.Z{constructor(e){super(e),this._fireSelectionChangeDoneDebounced=(0,v.Z)((e=>{this.document.fire("selectionChangeDone",e)}),200)}observe(){const e=this.document;e.on("arrowKey",((t,s)=>{e.selection.isFake&&this.isEnabled&&s.preventDefault()}),{context:"$capture"}),e.on("arrowKey",((t,s)=>{e.selection.isFake&&this.isEnabled&&this._handleSelectionMove(s.keyCode)}),{priority:"lowest"})}destroy(){super.destroy(),this._fireSelectionChangeDoneDebounced.cancel()}_handleSelectionMove(e){const t=this.document.selection,s=new u.Z(t.getRanges(),{backward:t.isBackward,fake:!1});e!=_.Do.arrowleft&&e!=_.Do.arrowup||s.setTo(s.getFirstPosition()),e!=_.Do.arrowright&&e!=_.Do.arrowdown||s.setTo(s.getLastPosition());const o={oldSelection:t,newSelection:s,domSelection:null};this.document.fire("selectionChange",o),this._fireSelectionChangeDoneDebounced(o)}}class Z extends p.Z{constructor(e){super(e),this.mutationObserver=e.getObserver(k),this.selection=this.document.selection,this.domConverter=e.domConverter,this._documents=new WeakSet,this._fireSelectionChangeDoneDebounced=(0,v.Z)((e=>{this.document.fire("selectionChangeDone",e)}),200),this._clearInfiniteLoopInterval=setInterval((()=>this._clearInfiniteLoop()),1e3),this._documentIsSelectingInactivityTimeoutDebounced=(0,v.Z)((()=>this.document.isSelecting=!1),5e3),this._loopbackCounter=0}observe(e){const t=e.ownerDocument,s=()=>{this.document.isSelecting=!1,this._documentIsSelectingInactivityTimeoutDebounced.cancel()};this.listenTo(e,"selectstart",(()=>{this.document.isSelecting=!0,this._documentIsSelectingInactivityTimeoutDebounced()}),{priority:"highest"}),this.listenTo(e,"keydown",s,{priority:"highest"}),this.listenTo(e,"keyup",s,{priority:"highest"}),this._documents.has(t)||(this.listenTo(t,"mouseup",s,{priority:"highest"}),this.listenTo(t,"selectionchange",((e,s)=>{this._handleSelectionChange(s,t),this._documentIsSelectingInactivityTimeoutDebounced()})),this._documents.add(t))}destroy(){super.destroy(),clearInterval(this._clearInfiniteLoopInterval),this._fireSelectionChangeDoneDebounced.cancel(),this._documentIsSelectingInactivityTimeoutDebounced.cancel()}_handleSelectionChange(e,t){if(!this.isEnabled)return;const s=t.defaultView.getSelection();if(this.checkShouldIgnoreEventFromTarget(s.anchorNode))return;this.mutationObserver.flush();const o=this.domConverter.domSelectionToView(s);if(0!=o.rangeCount){if(this.view.hasDomSelection=!0,!(this.selection.isEqual(o)&&this.domConverter.isDomSelectionCorrect(s)||++this._loopbackCounter>60))if(this.selection.isSimilar(o))this.view.forceRender();else{const e={oldSelection:this.selection,newSelection:o,domSelection:s};this.document.fire("selectionChange",e),this._fireSelectionChangeDoneDebounced(e)}}else this.view.hasDomSelection=!1}_clearInfiniteLoop(){this._loopbackCounter=0}}class P extends b.Z{constructor(e){super(e),this.domEventType=["focus","blur"],this.useCapture=!0;const t=this.document;t.on("focus",(()=>{t.isFocused=!0,this._renderTimeoutId=setTimeout((()=>e.change((()=>{}))),50)})),t.on("blur",((s,o)=>{const i=t.selection.editableElement;null!==i&&i!==o.target||(t.isFocused=!1,e.change((()=>{})))}))}onDomEvent(e){this.fire(e.type,e)}destroy(){this._renderTimeoutId&&clearTimeout(this._renderTimeoutId),super.destroy()}}class x extends b.Z{constructor(e){super(e),this.domEventType=["compositionstart","compositionupdate","compositionend"];const t=this.document;t.on("compositionstart",(()=>{t.isComposing=!0})),t.on("compositionend",(()=>{t.isComposing=!1}))}onDomEvent(e){this.fire(e.type,e)}}class T extends b.Z{constructor(e){super(e),this.domEventType=["beforeinput"]}onDomEvent(e){this.fire(e.type,e)}}var A=s("./packages/ckeditor5-engine/src/view/observer/bubblingeventinfo.ts"),C=s("./packages/ckeditor5-utils/src/index.ts");class E extends p.Z{constructor(e){super(e),this.document.on("keydown",((e,t)=>{if(this.isEnabled&&(0,C.dj)(t.keyCode)){const s=new A.Z(this.document,"arrowKey",this.document.selection.getFirstRange());this.document.fire(s,t),s.stop.called&&e.stop()}}))}observe(){}}class S extends p.Z{constructor(e){super(e);const t=this.document;t.on("keydown",((e,s)=>{if(!this.isEnabled||s.keyCode!=_.Do.tab||s.ctrlKey)return;const o=new A.Z(t,"tab",t.selection.getFirstRange());t.fire(o,s),o.stop.called&&e.stop()}))}observe(){}}var j=s("./packages/ckeditor5-utils/src/observablemixin.ts"),O=s("./packages/ckeditor5-utils/src/dom/scroll.ts"),R=s("./packages/ckeditor5-engine/src/view/uielement.ts"),M=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),N=s("./packages/ckeditor5-utils/src/env.ts");class V extends j.y{constructor(e){super(),this.document=new n.Z(e),this.domConverter=new l.Z(this.document),this.domRoots=new Map,this.set("isRenderingInProgress",!1),this.set("hasDomSelection",!1),this._renderer=new c.Z(this.domConverter,this.document.selection),this._renderer.bind("isFocused","isSelecting").to(this.document,"isFocused","isSelecting"),this._initialDomRootAttributes=new WeakMap,this._observers=new Map,this._ongoingChange=!1,this._postFixersInProgress=!1,this._renderingDisabled=!1,this._hasChangedSinceTheLastRendering=!1,this._writer=new a.Z(this.document),this.addObserver(k),this.addObserver(Z),this.addObserver(P),this.addObserver(w),this.addObserver(y),this.addObserver(x),this.addObserver(E),this.addObserver(S),N.ZP.isAndroid&&this.addObserver(T),(0,g.mm)(this),(0,R.h)(this),this.on("render",(()=>{this._render(),this.document.fire("layoutChanged"),this._hasChangedSinceTheLastRendering=!1})),this.listenTo(this.document.selection,"change",(()=>{this._hasChangedSinceTheLastRendering=!0})),this.listenTo(this.document,"change:isFocused",(()=>{this._hasChangedSinceTheLastRendering=!0}))}attachDomRoot(e,t="main"){const s=this.document.getRoot(t);s._name=e.tagName.toLowerCase();const o={};for(const{name:t,value:i}of Array.from(e.attributes))o[t]=i,"class"===t?this._writer.addClass(i.split(" "),s):this._writer.setAttribute(t,i,s);this._initialDomRootAttributes.set(e,o);const i=()=>{this._writer.setAttribute("contenteditable",(!s.isReadOnly).toString(),s),s.isReadOnly?this._writer.addClass("ck-read-only",s):this._writer.removeClass("ck-read-only",s)};i(),this.domRoots.set(t,e),this.domConverter.bindElements(e,s),this._renderer.markToSync("children",s),this._renderer.markToSync("attributes",s),this._renderer.domDocuments.add(e.ownerDocument),s.on("change:children",((e,t)=>this._renderer.markToSync("children",t))),s.on("change:attributes",((e,t)=>this._renderer.markToSync("attributes",t))),s.on("change:text",((e,t)=>this._renderer.markToSync("text",t))),s.on("change:isReadOnly",(()=>this.change(i))),s.on("change",(()=>{this._hasChangedSinceTheLastRendering=!0}));for(const s of this._observers.values())s.observe(e,t)}detachDomRoot(e){const t=this.domRoots.get(e);Array.from(t.attributes).forEach((({name:e})=>t.removeAttribute(e)));const s=this._initialDomRootAttributes.get(t);for(const e in s)t.setAttribute(e,s[e]);this.domRoots.delete(e),this.domConverter.unbindDomElement(t)}getDomRoot(e="main"){return this.domRoots.get(e)}addObserver(e){let t=this._observers.get(e);if(t)return t;t=new e(this),this._observers.set(e,t);for(const[e,s]of this.domRoots)t.observe(s,e);return t.enable(),t}getObserver(e){return this._observers.get(e)}disableObservers(){for(const e of this._observers.values())e.disable()}enableObservers(){for(const e of this._observers.values())e.enable()}scrollToTheSelection(){const e=this.document.selection.getFirstRange();e&&(0,O.m)({target:this.domConverter.viewRangeToDom(e),viewportOffset:20})}focus(){if(!this.document.isFocused){const e=this.document.selection.editableElement;e&&(this.domConverter.focus(e),this.forceRender())}}change(e){if(this.isRenderingInProgress||this._postFixersInProgress)throw new M.ZP("cannot-change-view-tree",this);try{if(this._ongoingChange)return e(this._writer);this._ongoingChange=!0;const t=e(this._writer);return this._ongoingChange=!1,!this._renderingDisabled&&this._hasChangedSinceTheLastRendering&&(this._postFixersInProgress=!0,this.document._callPostFixers(this._writer),this._postFixersInProgress=!1,this.fire("render")),t}catch(e){M.ZP.rethrowUnexpectedError(e,this)}}forceRender(){this._hasChangedSinceTheLastRendering=!0,this.change((()=>{}))}destroy(){for(const e of this._observers.values())e.destroy();this.document.destroy(),this.stopListening()}createPositionAt(e,t){return d.Z._createAt(e,t)}createPositionAfter(e){return d.Z._createAfter(e)}createPositionBefore(e){return d.Z._createBefore(e)}createRange(...e){return new h.Z(...e)}createRangeOn(e){return h.Z._createOn(e)}createRangeIn(e){return h.Z._createIn(e)}createSelection(...e){return new u.Z(...e)}_disableRendering(e){this._renderingDisabled=e,0==e&&this.change((()=>{}))}_render(){this.isRenderingInProgress=!0,this.disableObservers(),this._renderer.render(),this.enableObservers(),this.isRenderingInProgress=!1}}var I=s("./packages/ckeditor5-engine/src/conversion/mapper.ts"),D=s("./packages/ckeditor5-engine/src/conversion/downcastdispatcher.ts"),z=s("./packages/ckeditor5-engine/src/conversion/downcasthelpers.ts"),B=s("./packages/ckeditor5-engine/src/conversion/upcasthelpers.ts");class F extends j.y{constructor(e,t){super(),this.model=e,this.view=new V(t),this.mapper=new I.Z,this.downcastDispatcher=new D.Z({mapper:this.mapper,schema:e.schema});const s=this.model.document,o=s.selection,i=this.model.markers;this.listenTo(this.model,"_beforeChanges",(()=>{this.view._disableRendering(!0)}),{priority:"highest"}),this.listenTo(this.model,"_afterChanges",(()=>{this.view._disableRendering(!1)}),{priority:"lowest"}),this.listenTo(s,"change",(()=>{this.view.change((e=>{this.downcastDispatcher.convertChanges(s.differ,i,e),this.downcastDispatcher.convertSelection(o,i,e)}))}),{priority:"low"}),this.listenTo(this.view.document,"selectionChange",(0,B.Fo)(this.model,this.mapper)),this.downcastDispatcher.on("insert:$text",(0,z.Om)(),{priority:"lowest"}),this.downcastDispatcher.on("insert",(0,z.o6)(),{priority:"lowest"}),this.downcastDispatcher.on("remove",(0,z.Od)(),{priority:"low"}),this.downcastDispatcher.on("selection",(0,z.iO)(),{priority:"high"}),this.downcastDispatcher.on("selection",(0,z.k3)(),{priority:"low"}),this.downcastDispatcher.on("selection",(0,z.GM)(),{priority:"low"}),this.view.document.roots.bindTo(this.model.document.roots).using((e=>{if("$graveyard"==e.rootName)return null;const t=new r(this.view.document,e.name);return t.rootName=e.rootName,this.mapper.bindElements(e,t),t}))}destroy(){this.view.destroy(),this.stopListening()}reconvertMarker(e){const t="string"==typeof e?e:e.name,s=this.model.markers.get(t);if(!s)throw new M.ZP("editingcontroller-reconvertmarker-marker-not-exist",this,{markerName:t});this.model.change((()=>{this.model.markers._refresh(s)}))}reconvertItem(e){this.model.change((()=>{this.model.document.differ._refreshItem(e)}))}}},"./packages/ckeditor5-engine/src/conversion/conversion.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>a});var o=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),i=s("./packages/ckeditor5-engine/src/conversion/upcasthelpers.ts"),r=s("./packages/ckeditor5-engine/src/conversion/downcasthelpers.ts"),n=s("./packages/ckeditor5-utils/src/toarray.ts");class a{constructor(e,t){this._helpers=new Map,this._downcast=(0,n.Z)(e),this._createConversionHelpers({name:"downcast",dispatchers:this._downcast,isDowncast:!0}),this._upcast=(0,n.Z)(t),this._createConversionHelpers({name:"upcast",dispatchers:this._upcast,isDowncast:!1})}addAlias(e,t){const s=this._downcast.includes(t);if(!this._upcast.includes(t)&&!s)throw new o.ZP("conversion-add-alias-dispatcher-not-registered",this);this._createConversionHelpers({name:e,dispatchers:[t],isDowncast:s})}for(e){if(!this._helpers.has(e))throw new o.ZP("conversion-for-unknown-group",this);return this._helpers.get(e)}elementToElement(e){this.for("downcast").elementToElement(e);for(const{model:t,view:s}of c(e))this.for("upcast").elementToElement({model:t,view:s,converterPriority:e.converterPriority})}attributeToElement(e){this.for("downcast").attributeToElement(e);for(const{model:t,view:s}of c(e))this.for("upcast").elementToAttribute({view:s,model:t,converterPriority:e.converterPriority})}attributeToAttribute(e){this.for("downcast").attributeToAttribute(e);for(const{model:t,view:s}of c(e))this.for("upcast").attributeToAttribute({view:s,model:t})}_createConversionHelpers({name:e,dispatchers:t,isDowncast:s}){if(this._helpers.has(e))throw new o.ZP("conversion-group-exists",this);const n=s?new r.ZP(t):new i.ZP(t);this._helpers.set(e,n)}}function*c(e){if(e.model.values)for(const t of e.model.values){const s={key:e.model.key,value:t},o=e.view[t],i=e.upcastAlso?e.upcastAlso[t]:void 0;yield*l(s,o,i)}else yield*l(e.model,e.view,e.upcastAlso)}function*l(e,t,s){if(yield{model:e,view:t},s)for(const t of(0,n.Z)(s))yield{model:e,view:t}}},"./packages/ckeditor5-engine/src/conversion/conversionhelpers.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});class o{constructor(e){this._dispatchers=e}add(e){for(const t of this._dispatchers)e(t);return this}}},"./packages/ckeditor5-engine/src/conversion/downcastdispatcher.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>l});var o=s("./packages/ckeditor5-engine/src/model/textproxy.ts"),i=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class r{constructor(){this._consumable=new Map,this._textProxyRegistry=new Map}add(e,t){t=n(t),e instanceof o.Z&&(e=this._getSymbolForTextProxy(e)),this._consumable.has(e)||this._consumable.set(e,new Map),this._consumable.get(e).set(t,!0)}consume(e,t){return t=n(t),e instanceof o.Z&&(e=this._getSymbolForTextProxy(e)),!!this.test(e,t)&&(this._consumable.get(e).set(t,!1),!0)}test(e,t){t=n(t),e instanceof o.Z&&(e=this._getSymbolForTextProxy(e));const s=this._consumable.get(e);if(void 0===s)return null;const i=s.get(t);return void 0===i?null:i}revert(e,t){t=n(t),e instanceof o.Z&&(e=this._getSymbolForTextProxy(e));const s=this.test(e,t);return!1===s?(this._consumable.get(e).set(t,!0),!0):!0!==s&&null}verifyAllConsumed(e){const t=[];for(const[s,o]of this._consumable)for(const[i,r]of o){const o=i.split(":")[0];r&&e==o&&t.push({event:i,item:s.name||s.description})}if(t.length)throw new i.ZP("conversion-model-consumable-not-consumed",null,{items:t})}_getSymbolForTextProxy(e){let t=null;const s=this._textProxyRegistry.get(e.startOffset);if(s){const o=s.get(e.endOffset);o&&(t=o.get(e.parent))}return t||(t=this._addSymbolForTextProxy(e)),t}_addSymbolForTextProxy(e){const t=e.startOffset,s=e.endOffset,o=e.parent,i=Symbol("$textProxy:"+e.data);let r,n;return r=this._textProxyRegistry.get(t),r||(r=new Map,this._textProxyRegistry.set(t,r)),n=r.get(s),n||(n=new Map,r.set(s,n)),n.set(o,i),i}}function n(e){const t=e.split(":");return"insert"==t[0]?t[0]:"addMarker"==t[0]||"removeMarker"==t[0]?e:t.length>1?t[0]+":"+t[1]:t[0]}var a=s("./packages/ckeditor5-engine/src/model/range.ts"),c=s("./packages/ckeditor5-utils/src/emittermixin.ts");class l extends c.Q5{constructor(e){super(),this._conversionApi={dispatcher:this,...e},this._firedEventsMap=new WeakMap}convertChanges(e,t,s){const o=this._createConversionApi(s,e.getRefreshedItems());for(const t of e.getMarkersToRemove())this._convertMarkerRemove(t.name,t.range,o);const i=this._reduceChanges(e.getChanges());for(const e of i)"insert"===e.type?this._convertInsert(a.Z._createFromPositionAndShift(e.position,e.length),o):"reinsert"===e.type?this._convertReinsert(a.Z._createFromPositionAndShift(e.position,e.length),o):"remove"===e.type?this._convertRemove(e.position,e.length,e.name,o):this._convertAttribute(e.range,e.attributeKey,e.attributeOldValue,e.attributeNewValue,o);for(const e of o.mapper.flushUnboundMarkerNames()){const s=t.get(e).getRange();this._convertMarkerRemove(e,s,o),this._convertMarkerAdd(e,s,o)}for(const t of e.getMarkersToAdd())this._convertMarkerAdd(t.name,t.range,o);o.mapper.flushDeferredBindings(),o.consumable.verifyAllConsumed("insert")}convert(e,t,s,o={}){const i=this._createConversionApi(s,void 0,o);this._convertInsert(e,i);for(const[e,s]of t)this._convertMarkerAdd(e,s,i);i.consumable.verifyAllConsumed("insert")}convertSelection(e,t,s){const o=Array.from(t.getMarkersAtPosition(e.getFirstPosition())),i=this._createConversionApi(s);if(this._addConsumablesForSelection(i.consumable,e,o),this.fire("selection",{selection:e},i),e.isCollapsed){for(const t of o){const s=t.getRange();if(!d(e.getFirstPosition(),t,i.mapper))continue;const o={item:e,markerName:t.name,markerRange:s};i.consumable.test(e,"addMarker:"+t.name)&&this.fire(`addMarker:${t.name}`,o,i)}for(const t of e.getAttributeKeys()){const s={item:e,range:e.getFirstRange(),attributeKey:t,attributeOldValue:null,attributeNewValue:e.getAttribute(t)};i.consumable.test(e,"attribute:"+s.attributeKey)&&this.fire(`attribute:${s.attributeKey}:$text`,s,i)}}}_convertInsert(e,t,s={}){s.doNotAddConsumables||this._addConsumablesForInsert(t.consumable,Array.from(e));for(const s of Array.from(e.getWalker({shallow:!0})).map(h))this._testAndFire("insert",s,t)}_convertRemove(e,t,s,o){this.fire(`remove:${s}`,{position:e,length:t},o)}_convertAttribute(e,t,s,o,i){this._addConsumablesForRange(i.consumable,e,`attribute:${t}`);for(const r of e){const e={item:r.item,range:a.Z._createFromPositionAndShift(r.previousPosition,r.length),attributeKey:t,attributeOldValue:s,attributeNewValue:o};this._testAndFire(`attribute:${t}`,e,i)}}_convertReinsert(e,t){const s=Array.from(e.getWalker({shallow:!0}));this._addConsumablesForInsert(t.consumable,s);for(const e of s.map(h))this._testAndFire("insert",{...e,reconversion:!0},t)}_convertMarkerAdd(e,t,s){if("$graveyard"==t.root.rootName)return;const o=`addMarker:${e}`;if(s.consumable.add(t,o),this.fire(o,{markerName:e,markerRange:t},s),s.consumable.consume(t,o)){this._addConsumablesForRange(s.consumable,t,o);for(const i of t.getItems()){if(!s.consumable.test(i,o))continue;const r={item:i,range:a.Z._createOn(i),markerName:e,markerRange:t};this.fire(o,r,s)}}}_convertMarkerRemove(e,t,s){"$graveyard"!=t.root.rootName&&this.fire(`removeMarker:${e}`,{markerName:e,markerRange:t},s)}_reduceChanges(e){const t={changes:e};return this.fire("reduceChanges",t),t.changes}_addConsumablesForInsert(e,t){for(const s of t){const t=s.item;if(null===e.test(t,"insert")){e.add(t,"insert");for(const s of t.getAttributeKeys())e.add(t,"attribute:"+s)}}return e}_addConsumablesForRange(e,t,s){for(const o of t.getItems())e.add(o,s);return e}_addConsumablesForSelection(e,t,s){e.add(t,"selection");for(const o of s)e.add(t,"addMarker:"+o.name);for(const s of t.getAttributeKeys())e.add(t,"attribute:"+s);return e}_testAndFire(e,t,s){const o=function(e,t){const s=t.item.is("element")?t.item.name:"$text";return`${e}:${s}`}(e,t),i=t.item.is("$textProxy")?s.consumable._getSymbolForTextProxy(t.item):t.item,r=this._firedEventsMap.get(s),n=r.get(i);if(n){if(n.has(o))return;n.add(o)}else r.set(i,new Set([o]));this.fire(o,t,s)}_testAndFireAddAttributes(e,t){const s={item:e,range:a.Z._createOn(e)};for(const e of s.item.getAttributeKeys())s.attributeKey=e,s.attributeOldValue=null,s.attributeNewValue=s.item.getAttribute(e),this._testAndFire(`attribute:${e}`,s,t)}_createConversionApi(e,t=new Set,s={}){const o={...this._conversionApi,consumable:new r,writer:e,options:s,convertItem:e=>this._convertInsert(a.Z._createOn(e),o),convertChildren:e=>this._convertInsert(a.Z._createIn(e),o,{doNotAddConsumables:!0}),convertAttributes:e=>this._testAndFireAddAttributes(e,o),canReuseView:e=>!t.has(o.mapper.toModelElement(e))};return this._firedEventsMap.set(o,new Map),o}}function d(e,t,s){const o=t.getRange(),i=Array.from(e.getAncestors());i.shift(),i.reverse();return!i.some((e=>{if(o.containsItem(e)){return!!s.toViewElement(e).getCustomProperty("addHighlight")}}))}function h(e){return{item:e.item,range:a.Z._createFromPositionAndShift(e.previousPosition,e.length)}}},"./packages/ckeditor5-engine/src/conversion/downcasthelpers.ts":(e,t,s)=>{"use strict";s.d(t,{GM:()=>_,Od:()=>m,Om:()=>g,ZP:()=>p,iO:()=>w,k3:()=>b,o6:()=>f});var o=s("./packages/ckeditor5-engine/src/model/range.ts"),i=s("./packages/ckeditor5-engine/src/model/selection.ts"),r=s("./packages/ckeditor5-engine/src/model/documentselection.ts"),n=s("./packages/ckeditor5-engine/src/model/element.ts"),a=s("./packages/ckeditor5-engine/src/model/position.ts"),c=s("./packages/ckeditor5-engine/src/view/attributeelement.ts"),l=s("./packages/ckeditor5-engine/src/conversion/conversionhelpers.ts"),d=s("./node_modules/lodash-es/cloneDeep.js"),h=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),u=s("./packages/ckeditor5-utils/src/toarray.ts");class p extends l.Z{elementToElement(e){return this.add(function(e){const t=y(e.model),s=Z(e.view,"container");t.attributes.length&&(t.children=!0);return o=>{o.on(`insert:${t.name}`,function(e,t=j){return(s,o,i)=>{if(!t(o.item,i.consumable,{preflight:!0}))return;const r=e(o.item,i,o);if(!r)return;t(o.item,i.consumable);const n=i.mapper.toViewPosition(o.range.start);i.mapper.bindElements(o.item,r),i.writer.insert(n,r),i.convertAttributes(o.item),E(r,o.item.getChildren(),i,{reconversion:o.reconversion})}}(s,C(t)),{priority:e.converterPriority||"normal"}),(t.children||t.attributes.length)&&o.on("reduceChanges",A(t),{priority:"low"})}}(e))}elementToStructure(e){return this.add(function(e){const t=y(e.model),s=Z(e.view,"container");return t.children=!0,o=>{if(o._conversionApi.schema.checkChild(t.name,"$text"))throw new h.ZP("conversion-element-to-structure-disallowed-text",o,{elementName:t.name});var i,r;o.on(`insert:${t.name}`,(i=s,r=C(t),(e,t,s)=>{if(!r(t.item,s.consumable,{preflight:!0}))return;const o=new Map;s.writer._registerSlotFactory(function(e,t,s){return(o,i="children")=>{const r=o.createContainerElement("$slot");let n=null;if("children"===i)n=Array.from(e.getChildren());else{if("function"!=typeof i)throw new h.ZP("conversion-slot-mode-unknown",s.dispatcher,{modeOrFilter:i});n=Array.from(e.getChildren()).filter((e=>i(e)))}return t.set(r,n),r}}(t.item,o,s));const n=i(t.item,s,t);if(s.writer._clearSlotFactory(),!n)return;!function(e,t,s){const o=Array.from(t.values()).flat(),i=new Set(o);if(i.size!=o.length)throw new h.ZP("conversion-slot-filter-overlap",s.dispatcher,{element:e});if(i.size!=e.childCount)throw new h.ZP("conversion-slot-filter-incomplete",s.dispatcher,{element:e})}(t.item,o,s),r(t.item,s.consumable);const a=s.mapper.toViewPosition(t.range.start);s.mapper.bindElements(t.item,n),s.writer.insert(a,n),s.convertAttributes(t.item),function(e,t,s,o){s.mapper.on("modelToViewPosition",n,{priority:"highest"});let i=null,r=null;for([i,r]of t)E(e,r,s,o),s.writer.move(s.writer.createRangeIn(i),s.writer.createPositionBefore(i)),s.writer.remove(i);function n(e,t){const s=t.modelPosition.nodeAfter,o=r.indexOf(s);o<0||(t.viewPosition=t.mapper.findPositionIn(i,o))}s.mapper.off("modelToViewPosition",n)}(n,o,s,{reconversion:t.reconversion})}),{priority:e.converterPriority||"normal"}),o.on("reduceChanges",A(t),{priority:"low"})}}(e))}attributeToElement(e){return this.add(function(e){let t=(e=(0,d.Z)(e)).model;"string"==typeof t&&(t={key:t});let s=`attribute:${t.key}`;t.name&&(s+=":"+t.name);if(t.values)for(const s of t.values)e.view[s]=Z(e.view[s],"attribute");else e.view=Z(e.view,"attribute");const o=P(e);return t=>{t.on(s,function(e){return(t,s,o)=>{if(!o.consumable.test(s.item,t.name))return;const n=e(s.attributeOldValue,o,s),a=e(s.attributeNewValue,o,s);if(!n&&!a)return;o.consumable.consume(s.item,t.name);const c=o.writer,l=c.document.selection;if(s.item instanceof i.Z||s.item instanceof r.Z)c.wrap(l.getFirstRange(),a);else{let e=o.mapper.toViewRange(s.range);null!==s.attributeOldValue&&n&&(e=c.unwrap(e,n)),null!==s.attributeNewValue&&a&&c.wrap(e,a)}}}(o),{priority:e.converterPriority||"normal"})}}(e))}attributeToAttribute(e){return this.add(function(e){let t=(e=(0,d.Z)(e)).model;"string"==typeof t&&(t={key:t});let s=`attribute:${t.key}`;t.name&&(s+=":"+t.name);if(t.values)for(const s of t.values)e.view[s]=x(e.view[s]);else e.view=x(e.view);const o=P(e);return t=>{var i;t.on(s,(i=o,(e,t,s)=>{if(!s.consumable.test(t.item,e.name))return;const o=i(t.attributeOldValue,s,t),r=i(t.attributeNewValue,s,t);if(!o&&!r)return;s.consumable.consume(t.item,e.name);const n=s.mapper.toViewElement(t.item),a=s.writer;if(!n)throw new h.ZP("conversion-attribute-to-attribute-on-text",s.dispatcher,t);if(null!==t.attributeOldValue&&o)if("class"==o.key){const e=(0,u.Z)(o.value);for(const t of e)a.removeClass(t,n)}else if("style"==o.key){const e=Object.keys(o.value);for(const t of e)a.removeStyle(t,n)}else a.removeAttribute(o.key,n);if(null!==t.attributeNewValue&&r)if("class"==r.key){const e=(0,u.Z)(r.value);for(const t of e)a.addClass(t,n)}else if("style"==r.key){const e=Object.keys(r.value);for(const t of e)a.setStyle(t,r.value[t],n)}else a.setAttribute(r.key,r.value,n)}),{priority:e.converterPriority||"normal"})}}(e))}markerToElement(e){return this.add(function(e){const t=Z(e.view,"ui");return s=>{var o;s.on(`addMarker:${e.model}`,(o=t,(e,t,s)=>{t.isOpening=!0;const i=o(t,s);t.isOpening=!1;const r=o(t,s);if(!i||!r)return;const n=t.markerRange;if(n.isCollapsed&&!s.consumable.consume(n,e.name))return;for(const t of n)if(!s.consumable.consume(t.item,e.name))return;const a=s.mapper,c=s.writer;c.insert(a.toViewPosition(n.start),i),s.mapper.bindElementToMarker(i,t.markerName),n.isCollapsed||(c.insert(a.toViewPosition(n.end),r),s.mapper.bindElementToMarker(r,t.markerName)),e.stop()}),{priority:e.converterPriority||"normal"}),s.on(`removeMarker:${e.model}`,((e,t,s)=>{const o=s.mapper.markerNameToElements(t.markerName);if(o){for(const e of o)s.mapper.unbindElementFromMarkerName(e,t.markerName),s.writer.clear(s.writer.createRangeOn(e),e);s.writer.clearClonedElementsGroup(t.markerName),e.stop()}}),{priority:e.converterPriority||"normal"})}}(e))}markerToHighlight(e){return this.add(function(e){return t=>{var s;t.on(`addMarker:${e.model}`,(s=e.view,(e,t,o)=>{if(!t.item)return;if(!(t.item instanceof i.Z||t.item instanceof r.Z||t.item.is("$textProxy")))return;const n=T(s,t,o);if(!n)return;if(!o.consumable.consume(t.item,e.name))return;const a=o.writer,c=k(a,n),l=a.document.selection;if(t.item instanceof i.Z||t.item instanceof r.Z)a.wrap(l.getFirstRange(),c);else{const e=o.mapper.toViewRange(t.range),s=a.wrap(e,c);for(const e of s.getItems())if(e.is("attributeElement")&&e.isSimilar(c)){o.mapper.bindElementToMarker(e,t.markerName);break}}}),{priority:e.converterPriority||"normal"}),t.on(`addMarker:${e.model}`,function(e){return(t,s,i)=>{if(!s.item)return;if(!(s.item instanceof n.Z))return;const r=T(e,s,i);if(!r)return;if(!i.consumable.test(s.item,t.name))return;const a=i.mapper.toViewElement(s.item);if(a&&a.getCustomProperty("addHighlight")){i.consumable.consume(s.item,t.name);for(const e of o.Z._createIn(s.item))i.consumable.consume(e.item,t.name);a.getCustomProperty("addHighlight")(a,r,i.writer),i.mapper.bindElementToMarker(a,s.markerName)}}}(e.view),{priority:e.converterPriority||"normal"}),t.on(`removeMarker:${e.model}`,function(e){return(t,s,o)=>{if(s.markerRange.isCollapsed)return;const i=T(e,s,o);if(!i)return;const r=k(o.writer,i),n=o.mapper.markerNameToElements(s.markerName);if(n){for(const e of n)if(o.mapper.unbindElementFromMarkerName(e,s.markerName),e.is("attributeElement"))o.writer.unwrap(o.writer.createRangeOn(e),r);else{e.getCustomProperty("removeHighlight")(e,i.id,o.writer)}o.writer.clearClonedElementsGroup(s.markerName),t.stop()}}}(e.view),{priority:e.converterPriority||"normal"})}}(e))}markerToData(e){return this.add(function(e){const t=(e=(0,d.Z)(e)).model;let s=e.view;s||(s=s=>({group:t,name:s.substr(e.model.length+1)}));return o=>{var i;o.on(`addMarker:${t}`,(i=s,(e,t,s)=>{const o=i(t.markerName,s);if(!o)return;const r=t.markerRange;s.consumable.consume(r,e.name)&&(v(r,!1,s,t,o),v(r,!0,s,t,o),e.stop())}),{priority:e.converterPriority||"normal"}),o.on(`removeMarker:${t}`,function(e){return(t,s,o)=>{const i=e(s.markerName,o);if(!i)return;const r=o.mapper.markerNameToElements(s.markerName);if(r){for(const e of r)o.mapper.unbindElementFromMarkerName(e,s.markerName),e.is("containerElement")?(n(`data-${i.group}-start-before`,e),n(`data-${i.group}-start-after`,e),n(`data-${i.group}-end-before`,e),n(`data-${i.group}-end-after`,e)):o.writer.clear(o.writer.createRangeOn(e),e);o.writer.clearClonedElementsGroup(s.markerName),t.stop()}function n(e,t){if(t.hasAttribute(e)){const s=new Set(t.getAttribute(e).split(","));s.delete(i.name),0==s.size?o.writer.removeAttribute(e,t):o.writer.setAttribute(e,Array.from(s).join(","),t)}}}}(s),{priority:e.converterPriority||"normal"})}}(e))}}function g(){return(e,t,s)=>{if(!s.consumable.consume(t.item,e.name))return;const o=s.writer,i=s.mapper.toViewPosition(t.range.start),r=o.createText(t.item.data);o.insert(i,r)}}function f(){return(e,t,s)=>{s.convertAttributes(t.item),t.reconversion||!t.item.is("element")||t.item.isEmpty||s.convertChildren(t.item)}}function m(){return(e,t,s)=>{const o=s.mapper.toViewPosition(t.position),i=t.position.getShiftedBy(t.length),r=s.mapper.toViewPosition(i,{isPhantom:!0}),n=s.writer.createRange(o,r),a=s.writer.remove(n.getTrimmed());for(const e of s.writer.createRangeIn(a).getItems())s.mapper.unbindViewElement(e,{defer:!0})}}function k(e,t){const s=e.createAttributeElement("span",t.attributes);return t.classes&&s._addClass(t.classes),"number"==typeof t.priority&&(s._priority=t.priority),s._id=t.id,s}function b(){return(e,t,s)=>{const o=t.selection;if(o.isCollapsed)return;if(!s.consumable.consume(o,"selection"))return;const i=[];for(const e of o.getRanges())i.push(s.mapper.toViewRange(e));s.writer.setSelection(i,{backward:o.isBackward})}}function _(){return(e,t,s)=>{const o=t.selection;if(!o.isCollapsed)return;if(!s.consumable.consume(o,"selection"))return;const i=s.writer,r=o.getFirstPosition(),n=s.mapper.toViewPosition(r),a=i.breakAttributes(n);i.setSelection(a)}}function w(){return(e,t,s)=>{const o=s.writer,i=o.document.selection;for(const e of i.getRanges())e.isCollapsed&&e.end.parent.isAttached()&&s.writer.mergeAttributes(e.start);o.setSelection(null)}}function v(e,t,s,o,i){const r=t?e.start:e.end,n=r.nodeAfter&&r.nodeAfter.is("element")?r.nodeAfter:null,a=r.nodeBefore&&r.nodeBefore.is("element")?r.nodeBefore:null;if(n||a){let e,r;t&&n||!t&&!a?(e=n,r=!0):(e=a,r=!1);const c=s.mapper.toViewElement(e);if(c)return void function(e,t,s,o,i,r){const n=`data-${r.group}-${t?"start":"end"}-${s?"before":"after"}`,a=e.hasAttribute(n)?e.getAttribute(n).split(","):[];a.unshift(r.name),o.writer.setAttribute(n,a.join(","),e),o.mapper.bindElementToMarker(e,i.markerName)}(c,t,r,s,o,i)}!function(e,t,s,o,i){const r=`${i.group}-${t?"start":"end"}`,n=i.name?{name:i.name}:null,a=s.writer.createUIElement(r,n);s.writer.insert(e,a),s.mapper.bindElementToMarker(a,o.markerName)}(s.mapper.toViewPosition(r),t,s,o,i)}function y(e){return"string"==typeof e&&(e={name:e}),e.attributes?Array.isArray(e.attributes)||(e.attributes=[e.attributes]):e.attributes=[],e.children=!!e.children,e}function Z(e,t){return"function"==typeof e?e:(s,o)=>function(e,t,s){"string"==typeof e&&(e={name:e});let o;const i=t.writer,r=Object.assign({},e.attributes);if("container"==s)o=i.createContainerElement(e.name,r);else if("attribute"==s){const t={priority:e.priority||c.Z.DEFAULT_PRIORITY};o=i.createAttributeElement(e.name,r,t)}else o=i.createUIElement(e.name,r);if(e.styles){const t=Object.keys(e.styles);for(const s of t)i.setStyle(s,e.styles[s],o)}if(e.classes){const t=e.classes;if("string"==typeof t)i.addClass(t,o);else for(const e of t)i.addClass(e,o)}return o}(e,o,t)}function P(e){return e.model.values?(t,s,o)=>{const i=e.view[t];return i?i(t,s,o):null}:e.view}function x(e){return"string"==typeof e?t=>({key:e,value:t}):"object"==typeof e?e.value?()=>e:t=>({key:e.key,value:t}):e}function T(e,t,s){const o="function"==typeof e?e(t,s):e;return o?(o.priority||(o.priority=10),o.id||(o.id=t.markerName),o):null}function A(e){const t=function(e){return(t,s)=>{if(!t.is("element",e.name))return!1;if("attribute"==s.type){if(e.attributes.includes(s.attributeKey))return!0}else if(e.children)return!0;return!1}}(e);return(e,s)=>{const o=[];s.reconvertedElements||(s.reconvertedElements=new Set);for(const e of s.changes){const i="attribute"==e.type?e.range.start.nodeAfter:e.position.parent;if(i&&t(i,e)){if(!s.reconvertedElements.has(i)){s.reconvertedElements.add(i);const e=a.ZP._createBefore(i);o.push({type:"remove",name:i.name,position:e,length:1},{type:"reinsert",name:i.name,position:e,length:1})}}else o.push(e)}s.changes=o}}function C(e){return(t,s,o={})=>{const i=["insert"];for(const s of e.attributes)t.hasAttribute(s)&&i.push(`attribute:${s}`);return!!i.every((e=>s.test(t,e)))&&(o.preflight||i.forEach((e=>s.consume(t,e))),!0)}}function E(e,t,s,o){for(const i of t)S(e.root,i,s,o)||s.convertItem(i)}function S(e,t,s,o){const{writer:i,mapper:r}=s;if(!o.reconversion)return!1;const n=r.toViewElement(t);return!(!n||n.root==e)&&(!!s.canReuseView(n)&&(i.move(i.createRangeOn(n),r.toViewPosition(a.ZP._createBefore(t))),!0))}function j(e,t,{preflight:s}={}){return s?t.test(e,"insert"):t.consume(e,"insert")}},"./packages/ckeditor5-engine/src/conversion/mapper.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>d});var o=s("./packages/ckeditor5-engine/src/model/position.ts"),i=s("./packages/ckeditor5-engine/src/model/range.ts"),r=s("./packages/ckeditor5-engine/src/view/position.ts"),n=s("./packages/ckeditor5-engine/src/view/range.ts"),a=s("./packages/ckeditor5-engine/src/view/text.ts"),c=s("./packages/ckeditor5-utils/src/emittermixin.ts"),l=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class d extends c.Q5{constructor(){super(),this._modelToViewMapping=new WeakMap,this._viewToModelMapping=new WeakMap,this._viewToModelLengthCallbacks=new Map,this._markerNameToElements=new Map,this._elementToMarkerNames=new Map,this._deferredBindingRemovals=new Map,this._unboundMarkerNames=new Set,this.on("modelToViewPosition",((e,t)=>{if(t.viewPosition)return;const s=this._modelToViewMapping.get(t.modelPosition.parent);if(!s)throw new l.ZP("mapping-model-position-view-parent-not-found",this,{modelPosition:t.modelPosition});t.viewPosition=this.findPositionIn(s,t.modelPosition.offset)}),{priority:"low"}),this.on("viewToModelPosition",((e,t)=>{if(t.modelPosition)return;const s=this.findMappedViewAncestor(t.viewPosition),i=this._viewToModelMapping.get(s),r=this._toModelOffset(t.viewPosition.parent,t.viewPosition.offset,s);t.modelPosition=o.ZP._createAt(i,r)}),{priority:"low"})}bindElements(e,t){this._modelToViewMapping.set(e,t),this._viewToModelMapping.set(t,e)}unbindViewElement(e,t={}){const s=this.toModelElement(e);if(this._elementToMarkerNames.has(e))for(const t of this._elementToMarkerNames.get(e))this._unboundMarkerNames.add(t);t.defer?this._deferredBindingRemovals.set(e,e.root):(this._viewToModelMapping.delete(e),this._modelToViewMapping.get(s)==e&&this._modelToViewMapping.delete(s))}unbindModelElement(e){const t=this.toViewElement(e);this._modelToViewMapping.delete(e),this._viewToModelMapping.get(t)==e&&this._viewToModelMapping.delete(t)}bindElementToMarker(e,t){const s=this._markerNameToElements.get(t)||new Set;s.add(e);const o=this._elementToMarkerNames.get(e)||new Set;o.add(t),this._markerNameToElements.set(t,s),this._elementToMarkerNames.set(e,o)}unbindElementFromMarkerName(e,t){const s=this._markerNameToElements.get(t);s&&(s.delete(e),0==s.size&&this._markerNameToElements.delete(t));const o=this._elementToMarkerNames.get(e);o&&(o.delete(t),0==o.size&&this._elementToMarkerNames.delete(e))}flushUnboundMarkerNames(){const e=Array.from(this._unboundMarkerNames);return this._unboundMarkerNames.clear(),e}flushDeferredBindings(){for(const[e,t]of this._deferredBindingRemovals)e.root==t&&this.unbindViewElement(e);this._deferredBindingRemovals=new Map}clearBindings(){this._modelToViewMapping=new WeakMap,this._viewToModelMapping=new WeakMap,this._markerNameToElements=new Map,this._elementToMarkerNames=new Map,this._unboundMarkerNames=new Set,this._deferredBindingRemovals=new Map}toModelElement(e){return this._viewToModelMapping.get(e)}toViewElement(e){return this._modelToViewMapping.get(e)}toModelRange(e){return new i.Z(this.toModelPosition(e.start),this.toModelPosition(e.end))}toViewRange(e){return new n.Z(this.toViewPosition(e.start),this.toViewPosition(e.end))}toModelPosition(e){const t={viewPosition:e,mapper:this};return this.fire("viewToModelPosition",t),t.modelPosition}toViewPosition(e,t={}){const s={modelPosition:e,mapper:this,isPhantom:t.isPhantom};return this.fire("modelToViewPosition",s),s.viewPosition}markerNameToElements(e){const t=this._markerNameToElements.get(e);if(!t)return null;const s=new Set;for(const e of t)if(e.is("attributeElement"))for(const t of e.getElementsWithSameId())s.add(t);else s.add(e);return s}registerViewToModelLength(e,t){this._viewToModelLengthCallbacks.set(e,t)}findMappedViewAncestor(e){let t=e.parent;for(;!this._viewToModelMapping.has(t);)t=t.parent;return t}_toModelOffset(e,t,s){if(s!=e){return this._toModelOffset(e.parent,e.index,s)+this._toModelOffset(e,t,e)}if(e.is("$text"))return t;let o=0;for(let s=0;s<t;s++)o+=this.getModelLength(e.getChild(s));return o}getModelLength(e){if(this._viewToModelLengthCallbacks.get(e.name)){return this._viewToModelLengthCallbacks.get(e.name)(e)}if(this._viewToModelMapping.has(e))return 1;if(e.is("$text"))return e.data.length;if(e.is("uiElement"))return 0;{let t=0;for(const s of e.getChildren())t+=this.getModelLength(s);return t}}findPositionIn(e,t){let s,o=0,i=0,n=0;if(e.is("$text"))return new r.Z(e,t);for(;i<t;)s=e.getChild(n),o=this.getModelLength(s),i+=o,n++;return i==t?this._moveViewPositionToTextNode(new r.Z(e,n)):this.findPositionIn(s,t-(i-o))}_moveViewPositionToTextNode(e){const t=e.nodeBefore,s=e.nodeAfter;return t instanceof a.Z?new r.Z(t,t.data.length):s instanceof a.Z?new r.Z(s,0):e}}},"./packages/ckeditor5-engine/src/conversion/upcasthelpers.ts":(e,t,s)=>{"use strict";s.d(t,{Fo:()=>h,ZP:()=>c,_p:()=>l,s8:()=>d});var o=s("./packages/ckeditor5-engine/src/view/matcher.ts"),i=s("./packages/ckeditor5-engine/src/conversion/conversionhelpers.ts"),r=s("./node_modules/lodash-es/cloneDeep.js"),n=s("./packages/ckeditor5-utils/src/priorities.ts"),a=s("./packages/ckeditor5-engine/src/model/utils/autoparagraphing.ts");class c extends i.Z{elementToElement(e){return this.add(u(e))}elementToAttribute(e){return this.add(function(e){f(e=(0,r.Z)(e));const t=m(e,!1),s=p(e.view),o=s?`element:${s}`:"element";return s=>{s.on(o,t,{priority:e.converterPriority||"low"})}}(e))}attributeToAttribute(e){return this.add(function(e){e=(0,r.Z)(e);let t=null;("string"==typeof e.view||e.view.key)&&(t=function(e){"string"==typeof e.view&&(e.view={key:e.view});const t=e.view.key;let s;if("class"==t||"style"==t){s={["class"==t?"classes":"styles"]:e.view.value}}else{s={attributes:{[t]:void 0===e.view.value?/[\s\S]*/:e.view.value}}}e.view.name&&(s.name=e.view.name);return e.view=s,t}(e));f(e,t);const s=m(e,!0);return t=>{t.on("element",s,{priority:e.converterPriority||"low"})}}(e))}elementToMarker(e){return this.add(function(e){const t=function(e){return(t,s)=>{const o="string"==typeof e?e:e(t,s);return s.writer.createElement("$marker",{"data-name":o})}}(e.model);return u({...e,model:t})}(e))}dataToMarker(e){return this.add(function(e){(e=(0,r.Z)(e)).model||(e.model=t=>t?e.view+":"+t:e.view);const t={view:e.view,model:e.model},s=g(k(t,"start")),o=g(k(t,"end"));return i=>{i.on(`element:${e.view}-start`,s,{priority:e.converterPriority||"normal"}),i.on(`element:${e.view}-end`,o,{priority:e.converterPriority||"normal"});const r=n.Z.get("low"),a=n.Z.get("highest"),c=n.Z.get(e.converterPriority)/a;i.on("element",function(e){return(t,s,o)=>{const i=`data-${e.view}`;function r(t,i){for(const r of i){const i=e.model(r,o),n=o.writer.createElement("$marker",{"data-name":i});o.writer.insert(n,t),s.modelCursor.isEqual(t)?s.modelCursor=s.modelCursor.getShiftedBy(1):s.modelCursor=s.modelCursor._getTransformedByInsertion(t,1),s.modelRange=s.modelRange._getTransformedByInsertion(t,1)[0]}}(o.consumable.test(s.viewItem,{attributes:i+"-end-after"})||o.consumable.test(s.viewItem,{attributes:i+"-start-after"})||o.consumable.test(s.viewItem,{attributes:i+"-end-before"})||o.consumable.test(s.viewItem,{attributes:i+"-start-before"}))&&(s.modelRange||Object.assign(s,o.convertChildren(s.viewItem,s.modelCursor)),o.consumable.consume(s.viewItem,{attributes:i+"-end-after"})&&r(s.modelRange.end,s.viewItem.getAttribute(i+"-end-after").split(",")),o.consumable.consume(s.viewItem,{attributes:i+"-start-after"})&&r(s.modelRange.end,s.viewItem.getAttribute(i+"-start-after").split(",")),o.consumable.consume(s.viewItem,{attributes:i+"-end-before"})&&r(s.modelRange.start,s.viewItem.getAttribute(i+"-end-before").split(",")),o.consumable.consume(s.viewItem,{attributes:i+"-start-before"})&&r(s.modelRange.start,s.viewItem.getAttribute(i+"-start-before").split(",")))}}(t),{priority:r+c})}}(e))}}function l(){return(e,t,s)=>{if(!t.modelRange&&s.consumable.consume(t.viewItem,{name:!0})){const{modelRange:e,modelCursor:o}=s.convertChildren(t.viewItem,t.modelCursor);t.modelRange=e,t.modelCursor=o}}}function d(){return(e,t,{schema:s,consumable:o,writer:i})=>{let r=t.modelCursor;if(!o.test(t.viewItem))return;if(!s.checkChild(r,"$text")){if(!(0,a.gg)(r,"$text",s))return;if(0==t.viewItem.data.trim().length)return;r=(0,a.zX)(r,i)}o.consume(t.viewItem);const n=i.createText(t.viewItem.data);i.insert(n,r),t.modelRange=i.createRange(r,r.getShiftedBy(n.offsetSize)),t.modelCursor=t.modelRange.end}}function h(e,t){return(s,o)=>{const i=o.newSelection,r=[];for(const e of i.getRanges())r.push(t.toModelRange(e));const n=e.createSelection(r,{backward:i.isBackward});n.isEqual(e.document.selection)||e.change((e=>{e.setSelection(n)}))}}function u(e){const t=g(e=(0,r.Z)(e)),s=p(e.view),o=s?`element:${s}`:"element";return s=>{s.on(o,t,{priority:e.converterPriority||"normal"})}}function p(e){return"string"==typeof e?e:"object"==typeof e&&"string"==typeof e.name?e.name:null}function g(e){const t=new o.Z(e.view);return(s,o,i)=>{const r=t.match(o.viewItem);if(!r)return;const n=r.match;if(n.name=!0,!i.consumable.test(o.viewItem,n))return;const a=function(e,t,s){return e instanceof Function?e(t,s):s.writer.createElement(e)}(e.model,o.viewItem,i);a&&i.safeInsert(a,o.modelCursor)&&(i.consumable.consume(o.viewItem,n),i.convertChildren(o.viewItem,a),i.updateConversionResult(a,o))}}function f(e,t=null){const s=null===t||(e=>e.getAttribute(t)),o="object"!=typeof e.model?e.model:e.model.key,i="object"!=typeof e.model||void 0===e.model.value?s:e.model.value;e.model={key:o,value:i}}function m(e,t){const s=new o.Z(e.view);return(o,i,r)=>{if(!i.modelRange&&t)return;const n=s.match(i.viewItem);if(!n)return;if(!function(e,t){const s="function"==typeof e?e(t):e;if("object"==typeof s&&!p(s))return!1;return!s.classes&&!s.attributes&&!s.styles}(e.view,i.viewItem)?delete n.match.name:n.match.name=!0,!r.consumable.test(i.viewItem,n.match))return;const a=e.model.key,c="function"==typeof e.model.value?e.model.value(i.viewItem,r):e.model.value;if(null===c)return;i.modelRange||Object.assign(i,r.convertChildren(i.viewItem,i.modelCursor));const l=function(e,t,s,o){let i=!1;for(const r of Array.from(e.getItems({shallow:s})))o.schema.checkAttribute(r,t.key)&&(i=!0,r.hasAttribute(t.key)||o.writer.setAttribute(t.key,t.value,r));return i}(i.modelRange,{key:a,value:c},t,r);l&&(r.consumable.test(i.viewItem,{name:!0})&&(n.match.name=!0),r.consumable.consume(i.viewItem,n.match))}}function k(e,t){return{view:`${e.view}-${t}`,model:(t,s)=>{const o=t.getAttribute("name"),i=e.model(o,s);return s.writer.createElement("$marker",{"data-name":i})}}}},"./packages/ckeditor5-engine/src/dataprocessor/htmldataprocessor.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});class o{getHtml(e){const t=document.implementation.createHTMLDocument("").createElement("div");return t.appendChild(e),t.innerHTML}}var i=s("./packages/ckeditor5-engine/src/view/domconverter.ts");class r{constructor(e){this.domParser=new DOMParser,this.domConverter=new i.Z(e,{renderingMode:"data"}),this.htmlWriter=new o}toData(e){const t=this.domConverter.viewToDom(e);return this.htmlWriter.getHtml(t)}toView(e){const t=this._toDom(e);return this.domConverter.domToView(t)}registerRawContentMatcher(e){this.domConverter.registerRawContentMatcher(e)}useFillerType(e){this.domConverter.blockFillerMode="marked"==e?"markedNbsp":"nbsp"}_toDom(e){e.match(/<(?:html|body|head|meta)(?:\s[^>]*)?>/i)||(e=`<body>${e}</body>`);const t=this.domParser.parseFromString(e,"text/html"),s=t.createDocumentFragment(),o=t.body.childNodes;for(;o.length>0;)s.appendChild(o[0]);return s}}},"./packages/ckeditor5-engine/src/model/documentfragment.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>l});var o=s("./packages/ckeditor5-engine/src/model/typecheckable.ts"),i=s("./packages/ckeditor5-engine/src/model/element.ts"),r=s("./packages/ckeditor5-engine/src/model/nodelist.ts"),n=s("./packages/ckeditor5-engine/src/model/text.ts"),a=s("./packages/ckeditor5-engine/src/model/textproxy.ts"),c=s("./packages/ckeditor5-utils/src/isiterable.ts");class l extends o.Z{constructor(e){super(),this.markers=new Map,this._children=new r.Z,e&&this._insertChild(0,e)}[Symbol.iterator](){return this.getChildren()}get childCount(){return this._children.length}get maxOffset(){return this._children.maxOffset}get isEmpty(){return 0===this.childCount}get nextSibling(){return null}get previousSibling(){return null}get root(){return this}get parent(){return null}get document(){return null}getAncestors(){return[]}getChild(e){return this._children.getNode(e)}getChildren(){return this._children[Symbol.iterator]()}getChildIndex(e){return this._children.getNodeIndex(e)}getChildStartOffset(e){return this._children.getNodeStartOffset(e)}getPath(){return[]}getNodeByPath(e){let t=this;for(const s of e)t=t.getChild(t.offsetToIndex(s));return t}offsetToIndex(e){return this._children.offsetToIndex(e)}toJSON(){const e=[];for(const t of this._children)e.push(t.toJSON());return e}static fromJSON(e){const t=[];for(const s of e)s.name?t.push(i.Z.fromJSON(s)):t.push(n.Z.fromJSON(s));return new l(t)}_appendChild(e){this._insertChild(this.childCount,e)}_insertChild(e,t){const s=function(e){if("string"==typeof e)return[new n.Z(e)];(0,c.Z)(e)||(e=[e]);return Array.from(e).map((e=>"string"==typeof e?new n.Z(e):e instanceof a.Z?new n.Z(e.data,e.getAttributes()):e))}(t);for(const e of s)null!==e.parent&&e._remove(),e.parent=this;this._children._insertNodes(e,s)}_removeChildren(e,t=1){const s=this._children._removeNodes(e,t);for(const e of s)e.parent=null;return s}}l.prototype.is=function(e){return"documentFragment"===e||"model:documentFragment"===e}},"./packages/ckeditor5-engine/src/model/documentselection.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>g});var o=s("./packages/ckeditor5-engine/src/model/typecheckable.ts"),i=s("./packages/ckeditor5-engine/src/model/liverange.ts"),r=s("./packages/ckeditor5-engine/src/model/selection.ts"),n=s("./packages/ckeditor5-engine/src/model/text.ts"),a=s("./packages/ckeditor5-engine/src/model/textproxy.ts"),c=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),l=s("./packages/ckeditor5-utils/src/collection.ts"),d=s("./packages/ckeditor5-utils/src/emittermixin.ts"),h=s("./packages/ckeditor5-utils/src/tomap.ts"),u=s("./packages/ckeditor5-utils/src/uid.ts");const p="selection:";class g extends((0,d.ZP)(o.Z)){constructor(e){super(),this._selection=new f(e),this._selection.delegate("change:range").to(this),this._selection.delegate("change:attribute").to(this),this._selection.delegate("change:marker").to(this)}get isCollapsed(){return this._selection.isCollapsed}get anchor(){return this._selection.anchor}get focus(){return this._selection.focus}get rangeCount(){return this._selection.rangeCount}get hasOwnRange(){return this._selection.hasOwnRange}get isBackward(){return this._selection.isBackward}get isGravityOverridden(){return this._selection.isGravityOverridden}get markers(){return this._selection.markers}get _ranges(){return this._selection._ranges}getRanges(){return this._selection.getRanges()}getFirstPosition(){return this._selection.getFirstPosition()}getLastPosition(){return this._selection.getLastPosition()}getFirstRange(){return this._selection.getFirstRange()}getLastRange(){return this._selection.getLastRange()}getSelectedBlocks(){return this._selection.getSelectedBlocks()}getSelectedElement(){return this._selection.getSelectedElement()}containsEntireContent(e){return this._selection.containsEntireContent(e)}destroy(){this._selection.destroy()}getAttributeKeys(){return this._selection.getAttributeKeys()}getAttributes(){return this._selection.getAttributes()}getAttribute(e){return this._selection.getAttribute(e)}hasAttribute(e){return this._selection.hasAttribute(e)}refresh(){this._selection.updateMarkers(),this._selection._updateAttributes(!1)}observeMarkers(e){this._selection.observeMarkers(e)}_setFocus(e,t){this._selection.setFocus(e,t)}_setTo(...e){this._selection.setTo(...e)}_setAttribute(e,t){this._selection.setAttribute(e,t)}_removeAttribute(e){this._selection.removeAttribute(e)}_getStoredAttributes(){return this._selection.getStoredAttributes()}_overrideGravity(){return this._selection.overrideGravity()}_restoreGravity(e){this._selection.restoreGravity(e)}static _getStoreAttributeKey(e){return p+e}static _isStoreAttributeKey(e){return e.startsWith(p)}}g.prototype.is=function(e){return"selection"===e||"model:selection"==e||"documentSelection"==e||"model:documentSelection"==e};class f extends r.Z{constructor(e){super(),this.markers=new l.Z({idProperty:"name"}),this._model=e.model,this._document=e,this._attributePriority=new Map,this._selectionRestorePosition=null,this._hasChangedRange=!1,this._overriddenGravityRegister=new Set,this._observedMarkers=new Set,this.listenTo(this._model,"applyOperation",((e,t)=>{const s=t[0];s.isDocumentOperation&&"marker"!=s.type&&"rename"!=s.type&&"noop"!=s.type&&(0==this._ranges.length&&this._selectionRestorePosition&&this._fixGraveyardSelection(this._selectionRestorePosition),this._selectionRestorePosition=null,this._hasChangedRange&&(this._hasChangedRange=!1,this.fire("change:range",{directChange:!1})))}),{priority:"lowest"}),this.on("change:range",(()=>{this._validateSelectionRanges(this.getRanges())})),this.listenTo(this._model.markers,"update",((e,t,s,o)=>{this._updateMarker(t,o)})),this.listenTo(this._document,"change",((e,t)=>{!function(e,t){const s=e.document.differ;for(const o of s.getChanges()){if("insert"!=o.type)continue;const s=o.position.parent;o.length===s.maxOffset&&e.enqueueChange(t,(e=>{const t=Array.from(s.getAttributeKeys()).filter((e=>e.startsWith(p)));for(const o of t)e.removeAttribute(o,s)}))}}(this._model,t)}))}get isCollapsed(){return 0===this._ranges.length?this._document._getDefaultRange().isCollapsed:super.isCollapsed}get anchor(){return super.anchor||this._document._getDefaultRange().start}get focus(){return super.focus||this._document._getDefaultRange().end}get rangeCount(){return this._ranges.length?this._ranges.length:1}get hasOwnRange(){return this._ranges.length>0}get isGravityOverridden(){return!!this._overriddenGravityRegister.size}destroy(){for(let e=0;e<this._ranges.length;e++)this._ranges[e].detach();this.stopListening()}*getRanges(){this._ranges.length?yield*super.getRanges():yield this._document._getDefaultRange()}getFirstRange(){return super.getFirstRange()||this._document._getDefaultRange()}getLastRange(){return super.getLastRange()||this._document._getDefaultRange()}setTo(...e){super.setTo(...e),this._updateAttributes(!0),this.updateMarkers()}setFocus(e,t){super.setFocus(e,t),this._updateAttributes(!0),this.updateMarkers()}setAttribute(e,t){if(this._setAttribute(e,t)){const t=[e];this.fire("change:attribute",{attributeKeys:t,directChange:!0})}}removeAttribute(e){if(this._removeAttribute(e)){const t=[e];this.fire("change:attribute",{attributeKeys:t,directChange:!0})}}overrideGravity(){const e=(0,u.Z)();return this._overriddenGravityRegister.add(e),1===this._overriddenGravityRegister.size&&this._updateAttributes(!0),e}restoreGravity(e){if(!this._overriddenGravityRegister.has(e))throw new c.ZP("document-selection-gravity-wrong-restore",this,{uid:e});this._overriddenGravityRegister.delete(e),this.isGravityOverridden||this._updateAttributes(!0)}observeMarkers(e){this._observedMarkers.add(e),this.updateMarkers()}_replaceAllRanges(e){this._validateSelectionRanges(e),super._replaceAllRanges(e)}_popRange(){this._ranges.pop().detach()}_pushRange(e){const t=this._prepareRange(e);t&&this._ranges.push(t)}_validateSelectionRanges(e){for(const t of e)if(!this._document._validateSelectionRange(t))throw new c.ZP("document-selection-wrong-position",this,{range:t})}_prepareRange(e){if(this._checkRange(e),e.root==this._document.graveyard)return;const t=i.Z.fromRange(e);return t.on("change:range",((e,s,o)=>{if(this._hasChangedRange=!0,t.root==this._document.graveyard){this._selectionRestorePosition=o.deletionPosition;const e=this._ranges.indexOf(t);this._ranges.splice(e,1),t.detach()}})),t}updateMarkers(){if(!this._observedMarkers.size)return;const e=[];let t=!1;for(const t of this._model.markers){const s=t.name.split(":",1)[0];if(!this._observedMarkers.has(s))continue;const o=t.getRange();for(const s of this.getRanges())o.containsRange(s,!s.isCollapsed)&&e.push(t)}const s=Array.from(this.markers);for(const s of e)this.markers.has(s)||(this.markers.add(s),t=!0);for(const s of Array.from(this.markers))e.includes(s)||(this.markers.remove(s),t=!0);t&&this.fire("change:marker",{oldMarkers:s,directChange:!1})}_updateMarker(e,t){const s=e.name.split(":",1)[0];if(!this._observedMarkers.has(s))return;let o=!1;const i=Array.from(this.markers),r=this.markers.has(e);if(t){let s=!1;for(const e of this.getRanges())if(t.containsRange(e,!e.isCollapsed)){s=!0;break}s&&!r?(this.markers.add(e),o=!0):!s&&r&&(this.markers.remove(e),o=!0)}else r&&(this.markers.remove(e),o=!0);o&&this.fire("change:marker",{oldMarkers:i,directChange:!1})}_updateAttributes(e){const t=(0,h.Z)(this._getSurroundingAttributes()),s=(0,h.Z)(this.getAttributes());if(e)this._attributePriority=new Map,this._attrs=new Map;else for(const[e,t]of this._attributePriority)"low"==t&&(this._attrs.delete(e),this._attributePriority.delete(e));this._setAttributesTo(t);const o=[];for(const[e,t]of this.getAttributes())s.has(e)&&s.get(e)===t||o.push(e);for(const[e]of s)this.hasAttribute(e)||o.push(e);o.length>0&&this.fire("change:attribute",{attributeKeys:o,directChange:!1})}_setAttribute(e,t,s=!0){const o=s?"normal":"low";if("low"==o&&"normal"==this._attributePriority.get(e))return!1;return super.getAttribute(e)!==t&&(this._attrs.set(e,t),this._attributePriority.set(e,o),!0)}_removeAttribute(e,t=!0){const s=t?"normal":"low";return("low"!=s||"normal"!=this._attributePriority.get(e))&&(this._attributePriority.set(e,s),!!super.hasAttribute(e)&&(this._attrs.delete(e),!0))}_setAttributesTo(e){const t=new Set;for(const[t,s]of this.getAttributes())e.get(t)!==s&&this._removeAttribute(t,!1);for(const[s,o]of e){this._setAttribute(s,o,!1)&&t.add(s)}return t}*getStoredAttributes(){const e=this.getFirstPosition().parent;if(this.isCollapsed&&e.isEmpty)for(const t of e.getAttributeKeys())if(t.startsWith(p)){const s=t.substr(p.length);yield[s,e.getAttribute(t)]}}_getSurroundingAttributes(){const e=this.getFirstPosition(),t=this._model.schema;let s=null;if(this.isCollapsed){const o=e.textNode?e.textNode:e.nodeBefore,i=e.textNode?e.textNode:e.nodeAfter;if(this.isGravityOverridden||(s=m(o)),s||(s=m(i)),!this.isGravityOverridden&&!s){let e=o;for(;e&&!t.isInline(e)&&!s;)e=e.previousSibling,s=m(e)}if(!s){let e=i;for(;e&&!t.isInline(e)&&!s;)e=e.nextSibling,s=m(e)}s||(s=this.getStoredAttributes())}else{const e=this.getFirstRange();for(const o of e){if(o.item.is("element")&&t.isObject(o.item))break;if("text"==o.type){s=o.item.getAttributes();break}}}return s}_fixGraveyardSelection(e){const t=this._model.schema.getNearestSelectionRange(e);t&&this._pushRange(t)}}function m(e){return e instanceof a.Z||e instanceof n.Z?e.getAttributes():null}},"./packages/ckeditor5-engine/src/model/element.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>c});var o=s("./packages/ckeditor5-engine/src/model/node.ts"),i=s("./packages/ckeditor5-engine/src/model/nodelist.ts"),r=s("./packages/ckeditor5-engine/src/model/text.ts"),n=s("./packages/ckeditor5-engine/src/model/textproxy.ts"),a=s("./packages/ckeditor5-utils/src/isiterable.ts");class c extends o.Z{constructor(e,t,s){super(t),this.name=e,this._children=new i.Z,s&&this._insertChild(0,s)}get childCount(){return this._children.length}get maxOffset(){return this._children.maxOffset}get isEmpty(){return 0===this.childCount}getChild(e){return this._children.getNode(e)}getChildren(){return this._children[Symbol.iterator]()}getChildIndex(e){return this._children.getNodeIndex(e)}getChildStartOffset(e){return this._children.getNodeStartOffset(e)}offsetToIndex(e){return this._children.offsetToIndex(e)}getNodeByPath(e){let t=this;for(const s of e)t=t.getChild(t.offsetToIndex(s));return t}findAncestor(e,t={}){let s=t.includeSelf?this:this.parent;for(;s;){if(s.name===e)return s;s=s.parent}return null}toJSON(){const e=super.toJSON();if(e.name=this.name,this._children.length>0){e.children=[];for(const t of this._children)e.children.push(t.toJSON())}return e}_clone(e=!1){const t=e?Array.from(this._children).map((e=>e._clone(!0))):void 0;return new c(this.name,this.getAttributes(),t)}_appendChild(e){this._insertChild(this.childCount,e)}_insertChild(e,t){const s=function(e){if("string"==typeof e)return[new r.Z(e)];(0,a.Z)(e)||(e=[e]);return Array.from(e).map((e=>"string"==typeof e?new r.Z(e):e instanceof n.Z?new r.Z(e.data,e.getAttributes()):e))}(t);for(const e of s)null!==e.parent&&e._remove(),e.parent=this;this._children._insertNodes(e,s)}_removeChildren(e,t=1){const s=this._children._removeNodes(e,t);for(const e of s)e.parent=null;return s}static fromJSON(e){let t;if(e.children){t=[];for(const s of e.children)s.name?t.push(c.fromJSON(s)):t.push(r.Z.fromJSON(s))}return new c(e.name,e.attributes,t)}}c.prototype.is=function(e,t){return t?t===this.name&&("element"===e||"model:element"===e):"element"===e||"model:element"===e||"node"===e||"model:node"===e}},"./packages/ckeditor5-engine/src/model/history.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./packages/ckeditor5-utils/src/index.ts");class i{constructor(){this._operations=[],this._undoPairs=new Map,this._undoneOperations=new Set,this._baseVersionToOperationIndex=new Map,this._version=0,this._gaps=new Map}get version(){return this._version}set version(e){this._operations.length&&e>this._version+1&&this._gaps.set(this._version,e),this._version=e}get lastOperation(){return this._operations[this._operations.length-1]}addOperation(e){if(e.baseVersion!==this.version)throw new o.Bb("model-document-history-addoperation-incorrect-version",this,{operation:e,historyVersion:this.version});this._operations.push(e),this._version++,this._baseVersionToOperationIndex.set(e.baseVersion,this._operations.length-1)}getOperations(e,t=this.version){if(!this._operations.length)return[];const s=this._operations[0];void 0===e&&(e=s.baseVersion);let o=t-1;for(const[t,s]of this._gaps)e>t&&e<s&&(e=s),o>t&&o<s&&(o=t-1);if(o<s.baseVersion||e>this.lastOperation.baseVersion)return[];let i=this._baseVersionToOperationIndex.get(e);void 0===i&&(i=0);let r=this._baseVersionToOperationIndex.get(o);return void 0===r&&(r=this._operations.length-1),this._operations.slice(i,r+1)}getOperation(e){const t=this._baseVersionToOperationIndex.get(e);if(void 0!==t)return this._operations[t]}setOperationAsUndone(e,t){this._undoPairs.set(t,e),this._undoneOperations.add(e)}isUndoingOperation(e){return this._undoPairs.has(e)}isUndoneOperation(e){return this._undoneOperations.has(e)}getUndoneOperation(e){return this._undoPairs.get(e)}reset(){this._version=0,this._undoPairs=new Map,this._operations=[],this._undoneOperations=new Set,this._gaps=new Map,this._baseVersionToOperationIndex=new Map}}},"./packages/ckeditor5-engine/src/model/liveposition.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>n});var o=s("./packages/ckeditor5-engine/src/model/position.ts"),i=s("./packages/ckeditor5-utils/src/emittermixin.ts"),r=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class n extends((0,i.ZP)(o.ZP)){constructor(e,t,s="toNone"){if(super(e,t,s),!this.root.is("rootElement"))throw new r.ZP("model-liveposition-root-not-rootelement",e);a.call(this)}detach(){this.stopListening()}toPosition(){return new o.ZP(this.root,this.path.slice(),this.stickiness)}static fromPosition(e,t){return new this(e.root,e.path.slice(),t||e.stickiness)}}function a(){this.listenTo(this.root.document.model,"applyOperation",((e,t)=>{const s=t[0];s.isDocumentOperation&&c.call(this,s)}),{priority:"low"})}function c(e){const t=this.getTransformedByOperation(e);if(!this.isEqual(t)){const e=this.toPosition();this.path=t.path,this.root=t.root,this.fire("change",e)}}n.prototype.is=function(e){return"livePosition"===e||"model:livePosition"===e||"position"==e||"model:position"===e}},"./packages/ckeditor5-engine/src/model/liverange.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./packages/ckeditor5-engine/src/model/range.ts"),i=s("./packages/ckeditor5-utils/src/emittermixin.ts");class r extends((0,i.ZP)(o.Z)){constructor(e,t){super(e,t),n.call(this)}detach(){this.stopListening()}toRange(){return new o.Z(this.start,this.end)}static fromRange(e){return new r(e.start,e.end)}}function n(){this.listenTo(this.root.document.model,"applyOperation",((e,t)=>{const s=t[0];s.isDocumentOperation&&a.call(this,s)}),{priority:"low"})}function a(e){const t=this.getTransformedByOperation(e),s=o.Z._createFromRanges(t),i=!s.isEqual(this),r=function(e,t){switch(t.type){case"insert":return e.containsPosition(t.position);case"move":case"remove":case"reinsert":case"merge":return e.containsPosition(t.sourcePosition)||e.start.isEqual(t.sourcePosition)||e.containsPosition(t.targetPosition);case"split":return e.containsPosition(t.splitPosition)||e.containsPosition(t.insertionPosition)}return!1}(this,e);let n=null;if(i){"$graveyard"==s.root.rootName&&(n="remove"==e.type?e.sourcePosition:e.deletionPosition);const t=this.toRange();this.start=s.start,this.end=s.end,this.fire("change:range",t,{deletionPosition:n})}else r&&this.fire("change:content",this.toRange(),{deletionPosition:n})}r.prototype.is=function(e){return"liveRange"===e||"model:liveRange"===e||"range"==e||"model:range"===e}},"./packages/ckeditor5-engine/src/model/model.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>ye});var o=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class i{constructor(e={}){"string"==typeof e&&(e="transparent"===e?{isUndoable:!1}:{},(0,o.KE)("batch-constructor-deprecated-string-type"));const{isUndoable:t=!0,isLocal:s=!0,isUndo:i=!1,isTyping:r=!1}=e;this.operations=[],this.isUndoable=t,this.isLocal=s,this.isUndo=i,this.isTyping=r}get type(){return(0,o.KE)("batch-type-deprecated"),"default"}get baseVersion(){for(const e of this.operations)if(null!==e.baseVersion)return e.baseVersion;return null}addOperation(e){return e.batch=this,this.operations.push(e),e}}var r=s("./packages/ckeditor5-engine/src/model/position.ts"),n=s("./packages/ckeditor5-engine/src/model/range.ts");class a{constructor(e){this._markerCollection=e,this._changesInElement=new Map,this._elementSnapshots=new Map,this._changedMarkers=new Map,this._changeCount=0,this._cachedChanges=null,this._cachedChangesWithGraveyard=null,this._refreshedItems=new Set}get isEmpty(){return 0==this._changesInElement.size&&0==this._changedMarkers.size}bufferOperation(e){const t=e;switch(t.type){case"insert":if(this._isInInsertedElement(t.position.parent))return;this._markInsert(t.position.parent,t.position.offset,t.nodes.maxOffset);break;case"addAttribute":case"removeAttribute":case"changeAttribute":for(const e of t.range.getItems({shallow:!0}))this._isInInsertedElement(e.parent)||this._markAttribute(e);break;case"remove":case"move":case"reinsert":{if(t.sourcePosition.isEqual(t.targetPosition)||t.sourcePosition.getShiftedBy(t.howMany).isEqual(t.targetPosition))return;const e=this._isInInsertedElement(t.sourcePosition.parent),s=this._isInInsertedElement(t.targetPosition.parent);e||this._markRemove(t.sourcePosition.parent,t.sourcePosition.offset,t.howMany),s||this._markInsert(t.targetPosition.parent,t.getMovedRangeStart().offset,t.howMany);break}case"rename":{if(this._isInInsertedElement(t.position.parent))return;this._markRemove(t.position.parent,t.position.offset,1),this._markInsert(t.position.parent,t.position.offset,1);const e=n.Z._createFromPositionAndShift(t.position,1);for(const t of this._markerCollection.getMarkersIntersectingRange(e)){const e=t.getData();this.bufferMarkerChange(t.name,e,e)}break}case"split":{const e=t.splitPosition.parent;this._isInInsertedElement(e)||this._markRemove(e,t.splitPosition.offset,t.howMany),this._isInInsertedElement(t.insertionPosition.parent)||this._markInsert(t.insertionPosition.parent,t.insertionPosition.offset,1),t.graveyardPosition&&this._markRemove(t.graveyardPosition.parent,t.graveyardPosition.offset,1);break}case"merge":{const e=t.sourcePosition.parent;this._isInInsertedElement(e.parent)||this._markRemove(e.parent,e.startOffset,1);const s=t.graveyardPosition.parent;this._markInsert(s,t.graveyardPosition.offset,1);const o=t.targetPosition.parent;this._isInInsertedElement(o)||this._markInsert(o,t.targetPosition.offset,e.maxOffset);break}}this._cachedChanges=null}bufferMarkerChange(e,t,s){const o=this._changedMarkers.get(e);o?(o.newMarkerData=s,null==o.oldMarkerData.range&&null==s.range&&this._changedMarkers.delete(e)):this._changedMarkers.set(e,{newMarkerData:s,oldMarkerData:t})}getMarkersToRemove(){const e=[];for(const[t,s]of this._changedMarkers)null!=s.oldMarkerData.range&&e.push({name:t,range:s.oldMarkerData.range});return e}getMarkersToAdd(){const e=[];for(const[t,s]of this._changedMarkers)null!=s.newMarkerData.range&&e.push({name:t,range:s.newMarkerData.range});return e}getChangedMarkers(){return Array.from(this._changedMarkers).map((([e,t])=>({name:e,data:{oldRange:t.oldMarkerData.range,newRange:t.newMarkerData.range}})))}hasDataChanges(){if(this._changesInElement.size>0)return!0;for(const{newMarkerData:e,oldMarkerData:t}of this._changedMarkers.values()){if(e.affectsData!==t.affectsData)return!0;if(e.affectsData){const s=e.range&&!t.range,o=!e.range&&t.range,i=e.range&&t.range&&!e.range.isEqual(t.range);if(s||o||i)return!0}}return!1}getChanges(e={}){if(this._cachedChanges)return e.includeChangesInGraveyard?this._cachedChangesWithGraveyard.slice():this._cachedChanges.slice();let t=[];for(const e of this._changesInElement.keys()){const s=this._changesInElement.get(e).sort(((e,t)=>e.offset===t.offset?e.type!=t.type?"remove"==e.type?-1:1:0:e.offset<t.offset?-1:1)),o=this._elementSnapshots.get(e),i=c(e.getChildren()),a=l(o.length,s);let d=0,h=0;for(const s of a)if("i"===s)t.push(this._getInsertDiff(e,d,i[d])),d++;else if("r"===s)t.push(this._getRemoveDiff(e,d,o[h])),h++;else if("a"===s){const s=i[d].attributes,a=o[h].attributes;let c;if("$text"==i[d].name)c=new n.Z(r.ZP._createAt(e,d),r.ZP._createAt(e,d+1));else{const t=e.offsetToIndex(d);c=new n.Z(r.ZP._createAt(e,d),r.ZP._createAt(e.getChild(t),0))}t.push(...this._getAttributesDiff(c,a,s)),d++,h++}else d++,h++}t.sort(((e,t)=>e.position.root!=t.position.root?e.position.root.rootName<t.position.root.rootName?-1:1:e.position.isEqual(t.position)?e.changeCount-t.changeCount:e.position.isBefore(t.position)?-1:1));for(let e=1,s=0;e<t.length;e++){const o=t[s],i=t[e],r="remove"==o.type&&"remove"==i.type&&"$text"==o.name&&"$text"==i.name&&o.position.isEqual(i.position),n="insert"==o.type&&"insert"==i.type&&"$text"==o.name&&"$text"==i.name&&o.position.parent==i.position.parent&&o.position.offset+o.length==i.position.offset,a="attribute"==o.type&&"attribute"==i.type&&o.position.parent==i.position.parent&&o.range.isFlat&&i.range.isFlat&&o.position.offset+o.length==i.position.offset&&o.attributeKey==i.attributeKey&&o.attributeOldValue==i.attributeOldValue&&o.attributeNewValue==i.attributeNewValue;r||n||a?(o.length++,a&&(o.range.end=o.range.end.getShiftedBy(1)),t[e]=null):s=e}t=t.filter((e=>e));for(const e of t)delete e.changeCount,"attribute"==e.type&&(delete e.position,delete e.length);return this._changeCount=0,this._cachedChangesWithGraveyard=t,this._cachedChanges=t.filter(d),e.includeChangesInGraveyard?this._cachedChangesWithGraveyard.slice():this._cachedChanges.slice()}getRefreshedItems(){return new Set(this._refreshedItems)}reset(){this._changesInElement.clear(),this._elementSnapshots.clear(),this._changedMarkers.clear(),this._refreshedItems=new Set,this._cachedChanges=null}_refreshItem(e){if(this._isInInsertedElement(e.parent))return;this._markRemove(e.parent,e.startOffset,e.offsetSize),this._markInsert(e.parent,e.startOffset,e.offsetSize),this._refreshedItems.add(e);const t=n.Z._createOn(e);for(const e of this._markerCollection.getMarkersIntersectingRange(t)){const t=e.getData();this.bufferMarkerChange(e.name,t,t)}this._cachedChanges=null}_markInsert(e,t,s){const o={type:"insert",offset:t,howMany:s,count:this._changeCount++};this._markChange(e,o)}_markRemove(e,t,s){const o={type:"remove",offset:t,howMany:s,count:this._changeCount++};this._markChange(e,o),this._removeAllNestedChanges(e,t,s)}_markAttribute(e){const t={type:"attribute",offset:e.startOffset,howMany:e.offsetSize,count:this._changeCount++};this._markChange(e.parent,t)}_markChange(e,t){this._makeSnapshot(e);const s=this._getChangesForElement(e);this._handleChange(t,s),s.push(t);for(let e=0;e<s.length;e++)s[e].howMany<1&&(s.splice(e,1),e--)}_getChangesForElement(e){let t;return this._changesInElement.has(e)?t=this._changesInElement.get(e):(t=[],this._changesInElement.set(e,t)),t}_makeSnapshot(e){this._elementSnapshots.has(e)||this._elementSnapshots.set(e,c(e.getChildren()))}_handleChange(e,t){e.nodesToHandle=e.howMany;for(const s of t){const o=e.offset+e.howMany,i=s.offset+s.howMany;if("insert"==e.type&&("insert"==s.type&&(e.offset<=s.offset?s.offset+=e.howMany:e.offset<i&&(s.howMany+=e.nodesToHandle,e.nodesToHandle=0)),"remove"==s.type&&e.offset<s.offset&&(s.offset+=e.howMany),"attribute"==s.type))if(e.offset<=s.offset)s.offset+=e.howMany;else if(e.offset<i){const i=s.howMany;s.howMany=e.offset-s.offset,t.unshift({type:"attribute",offset:o,howMany:i-s.howMany,count:this._changeCount++})}if("remove"==e.type){if("insert"==s.type)if(o<=s.offset)s.offset-=e.howMany;else if(o<=i)if(e.offset<s.offset){const t=o-s.offset;s.offset=e.offset,s.howMany-=t,e.nodesToHandle-=t}else s.howMany-=e.nodesToHandle,e.nodesToHandle=0;else if(e.offset<=s.offset)e.nodesToHandle-=s.howMany,s.howMany=0;else if(e.offset<i){const t=i-e.offset;s.howMany-=t,e.nodesToHandle-=t}if("remove"==s.type&&(o<=s.offset?s.offset-=e.howMany:e.offset<s.offset&&(e.nodesToHandle+=s.howMany,s.howMany=0)),"attribute"==s.type)if(o<=s.offset)s.offset-=e.howMany;else if(e.offset<s.offset){const t=o-s.offset;s.offset=e.offset,s.howMany-=t}else if(e.offset<i)if(o<=i){const o=s.howMany;s.howMany=e.offset-s.offset;const i=o-s.howMany-e.nodesToHandle;t.unshift({type:"attribute",offset:e.offset,howMany:i,count:this._changeCount++})}else s.howMany-=i-e.offset}if("attribute"==e.type){if("insert"==s.type)if(e.offset<s.offset&&o>s.offset){if(o>i){const e={type:"attribute",offset:i,howMany:o-i,count:this._changeCount++};this._handleChange(e,t),t.push(e)}e.nodesToHandle=s.offset-e.offset,e.howMany=e.nodesToHandle}else e.offset>=s.offset&&e.offset<i&&(o>i?(e.nodesToHandle=o-i,e.offset=i):e.nodesToHandle=0);if("remove"==s.type&&e.offset<s.offset&&o>s.offset){const i={type:"attribute",offset:s.offset,howMany:o-s.offset,count:this._changeCount++};this._handleChange(i,t),t.push(i),e.nodesToHandle=s.offset-e.offset,e.howMany=e.nodesToHandle}"attribute"==s.type&&(e.offset>=s.offset&&o<=i?(e.nodesToHandle=0,e.howMany=0,e.offset=0):e.offset<=s.offset&&o>=i&&(s.howMany=0))}}e.howMany=e.nodesToHandle,delete e.nodesToHandle}_getInsertDiff(e,t,s){return{type:"insert",position:r.ZP._createAt(e,t),name:s.name,attributes:new Map(s.attributes),length:1,changeCount:this._changeCount++}}_getRemoveDiff(e,t,s){return{type:"remove",position:r.ZP._createAt(e,t),name:s.name,attributes:new Map(s.attributes),length:1,changeCount:this._changeCount++}}_getAttributesDiff(e,t,s){const o=[];s=new Map(s);for(const[i,r]of t){const t=s.has(i)?s.get(i):null;t!==r&&o.push({type:"attribute",position:e.start,range:e.clone(),length:1,attributeKey:i,attributeOldValue:r,attributeNewValue:t,changeCount:this._changeCount++}),s.delete(i)}for(const[t,i]of s)o.push({type:"attribute",position:e.start,range:e.clone(),length:1,attributeKey:t,attributeOldValue:null,attributeNewValue:i,changeCount:this._changeCount++});return o}_isInInsertedElement(e){const t=e.parent;if(!t)return!1;const s=this._changesInElement.get(t),o=e.startOffset;if(s)for(const e of s)if("insert"==e.type&&o>=e.offset&&o<e.offset+e.howMany)return!0;return this._isInInsertedElement(t)}_removeAllNestedChanges(e,t,s){const o=new n.Z(r.ZP._createAt(e,t),r.ZP._createAt(e,t+s));for(const e of o.getItems({shallow:!0}))e.is("element")&&(this._elementSnapshots.delete(e),this._changesInElement.delete(e),this._removeAllNestedChanges(e,0,e.maxOffset))}}function c(e){const t=[];for(const s of e)if(s.is("$text"))for(let e=0;e<s.data.length;e++)t.push({name:"$text",attributes:new Map(s.getAttributes())});else t.push({name:s.name,attributes:new Map(s.getAttributes())});return t}function l(e,t){const s=[];let o=0,i=0;for(const e of t){if(e.offset>o){for(let t=0;t<e.offset-o;t++)s.push("e");i+=e.offset-o}if("insert"==e.type){for(let t=0;t<e.howMany;t++)s.push("i");o=e.offset+e.howMany}else if("remove"==e.type){for(let t=0;t<e.howMany;t++)s.push("r");o=e.offset,i+=e.howMany}else s.push(..."a".repeat(e.howMany).split("")),o=e.offset+e.howMany,i+=e.howMany}if(i<e)for(let t=0;t<e-i-o;t++)s.push("e");return s}function d(e){const t="position"in e&&"$graveyard"==e.position.root.rootName,s="range"in e&&"$graveyard"==e.range.root.rootName;return!t&&!s}var h=s("./packages/ckeditor5-engine/src/model/documentselection.ts"),u=s("./packages/ckeditor5-engine/src/model/history.ts"),p=s("./packages/ckeditor5-engine/src/model/element.ts");class g extends p.Z{constructor(e,t,s="main"){super(t),this._document=e,this.rootName=s}get document(){return this._document}toJSON(){return this.rootName}}g.prototype.is=function(e,t){return t?t===this.name&&("rootElement"===e||"model:rootElement"===e||"element"===e||"model:element"===e):"rootElement"===e||"model:rootElement"===e||"element"===e||"model:element"===e||"node"===e||"model:node"===e};var f=s("./packages/ckeditor5-utils/src/collection.ts"),m=s("./packages/ckeditor5-utils/src/emittermixin.ts");function k(e,t){return!!(s=e.charAt(t-1))&&1==s.length&&/[\ud800-\udbff]/.test(s)&&function(e){return!!e&&1==e.length&&/[\udc00-\udfff]/.test(e)}(e.charAt(t));var s}function b(e,t){return!!(s=e.charAt(t))&&1==s.length&&/[\u0300-\u036f\u1ab0-\u1aff\u1dc0-\u1dff\u20d0-\u20ff\ufe20-\ufe2f]/.test(s);var s}const _=function(){const e=/\p{Regional_Indicator}{2}/u.source,t="(?:"+[/\p{Emoji}[\u{E0020}-\u{E007E}]+\u{E007F}/u,/\p{Emoji}\u{FE0F}?\u{20E3}/u,/\p{Emoji}\u{FE0F}/u,/(?=\p{General_Category=Other_Symbol})\p{Emoji}\p{Emoji_Modifier}*/u].map((e=>e.source)).join("|")+")";return new RegExp(`${e}|${t}(?:‍${t})*`,"ug")}();function w(e,t){const s=String(e).matchAll(_);return Array.from(s).some((e=>e.index<t&&t<e.index+e[0].length))}var v=s("./node_modules/lodash-es/clone.js");const y="$graveyard";class Z extends m.Q5{constructor(e){super(),this.model=e,this.history=new u.Z,this.selection=new h.Z(this),this.roots=new f.Z({idProperty:"rootName"}),this.differ=new a(e.markers),this._postFixers=new Set,this._hasSelectionChangedFromTheLastChangeBlock=!1,this.createRoot("$root",y),this.listenTo(e,"applyOperation",((e,t)=>{const s=t[0];s.isDocumentOperation&&this.differ.bufferOperation(s)}),{priority:"high"}),this.listenTo(e,"applyOperation",((e,t)=>{const s=t[0];s.isDocumentOperation&&this.history.addOperation(s)}),{priority:"low"}),this.listenTo(this.selection,"change",(()=>{this._hasSelectionChangedFromTheLastChangeBlock=!0})),this.listenTo(e.markers,"update",((e,t,s,o,i)=>{const r={...t.getData(),range:o};this.differ.bufferMarkerChange(t.name,i,r),null===s&&t.on("change",((e,s)=>{const o=t.getData();this.differ.bufferMarkerChange(t.name,{...o,range:s},o)}))}))}get version(){return this.history.version}set version(e){this.history.version=e}get graveyard(){return this.getRoot(y)}createRoot(e="$root",t="main"){if(this.roots.get(t))throw new o.ZP("model-document-createroot-name-exists",this,{name:t});const s=new g(this,e,t);return this.roots.add(s),s}destroy(){this.selection.destroy(),this.stopListening()}getRoot(e="main"){return this.roots.get(e)}getRootNames(){return Array.from(this.roots,(e=>e.rootName)).filter((e=>e!=y))}registerPostFixer(e){this._postFixers.add(e)}toJSON(){const e=(0,v.Z)(this);return e.selection="[engine.model.DocumentSelection]",e.model="[engine.model.Model]",e}_handleChangeBlock(e){this._hasDocumentChangedFromTheLastChangeBlock()&&(this._callPostFixers(e),this.selection.refresh(),this.differ.hasDataChanges()?this.fire("change:data",e.batch):this.fire("change",e.batch),this.selection.refresh(),this.differ.reset()),this._hasSelectionChangedFromTheLastChangeBlock=!1}_hasDocumentChangedFromTheLastChangeBlock(){return!this.differ.isEmpty||this._hasSelectionChangedFromTheLastChangeBlock}_getDefaultRoot(){for(const e of this.roots)if(e!==this.graveyard)return e;return this.graveyard}_getDefaultRange(){const e=this._getDefaultRoot(),t=this.model,s=t.schema,o=t.createPositionFromPath(e,[0]);return s.getNearestSelectionRange(o)||t.createRange(o)}_validateSelectionRange(e){return P(e.start)&&P(e.end)}_callPostFixers(e){let t=!1;do{for(const s of this._postFixers)if(this.selection.refresh(),t=s(e),t)break}while(t)}}function P(e){const t=e.textNode;if(t){const s=t.data,o=e.offset-t.startOffset;return!k(s,o)&&!b(s,o)}return!0}var x=s("./packages/ckeditor5-engine/src/model/typecheckable.ts"),T=s("./packages/ckeditor5-engine/src/model/liverange.ts");class A extends m.Q5{constructor(){super(),this._markers=new Map}[Symbol.iterator](){return this._markers.values()}has(e){const t=e instanceof C?e.name:e;return this._markers.has(t)}get(e){return this._markers.get(e)||null}_set(e,t,s=!1,i=!1){const r=e instanceof C?e.name:e;if(r.includes(","))throw new o.ZP("markercollection-incorrect-marker-name",this);const n=this._markers.get(r);if(n){const e=n.getData(),o=n.getRange();let a=!1;return o.isEqual(t)||(n._attachLiveRange(T.Z.fromRange(t)),a=!0),s!=n.managedUsingOperations&&(n._managedUsingOperations=s,a=!0),"boolean"==typeof i&&i!=n.affectsData&&(n._affectsData=i,a=!0),a&&this.fire(`update:${r}`,n,o,t,e),n}const a=T.Z.fromRange(t),c=new C(r,a,s,i);return this._markers.set(r,c),this.fire(`update:${r}`,c,null,t,{...c.getData(),range:null}),c}_remove(e){const t=e instanceof C?e.name:e,s=this._markers.get(t);return!!s&&(this._markers.delete(t),this.fire(`update:${t}`,s,s.getRange(),null,s.getData()),this._destroyMarker(s),!0)}_refresh(e){const t=e instanceof C?e.name:e,s=this._markers.get(t);if(!s)throw new o.ZP("markercollection-refresh-marker-not-exists",this);const i=s.getRange();this.fire(`update:${t}`,s,i,i,s.getData())}*getMarkersAtPosition(e){for(const t of this)t.getRange().containsPosition(e)&&(yield t)}*getMarkersIntersectingRange(e){for(const t of this)null!==t.getRange().getIntersection(e)&&(yield t)}destroy(){for(const e of this._markers.values())this._destroyMarker(e);this._markers=null,this.stopListening()}*getMarkersGroup(e){for(const t of this._markers.values())t.name.startsWith(e+":")&&(yield t)}_destroyMarker(e){e.stopListening(),e._detachLiveRange()}}class C extends((0,m.ZP)(x.Z)){constructor(e,t,s,o){super(),this.name=e,this._liveRange=this._attachLiveRange(t),this._managedUsingOperations=s,this._affectsData=o}get managedUsingOperations(){if(!this._liveRange)throw new o.ZP("marker-destroyed",this);return this._managedUsingOperations}get affectsData(){if(!this._liveRange)throw new o.ZP("marker-destroyed",this);return this._affectsData}getData(){return{range:this.getRange(),affectsData:this.affectsData,managedUsingOperations:this.managedUsingOperations}}getStart(){if(!this._liveRange)throw new o.ZP("marker-destroyed",this);return this._liveRange.start.clone()}getEnd(){if(!this._liveRange)throw new o.ZP("marker-destroyed",this);return this._liveRange.end.clone()}getRange(){if(!this._liveRange)throw new o.ZP("marker-destroyed",this);return this._liveRange.toRange()}_attachLiveRange(e){return this._liveRange&&this._detachLiveRange(),e.delegate("change:range").to(this),e.delegate("change:content").to(this),this._liveRange=e,e}_detachLiveRange(){this._liveRange.stopDelegating("change:range",this),this._liveRange.stopDelegating("change:content",this),this._liveRange.detach(),this._liveRange=null}}C.prototype.is=function(e){return"marker"===e||"model:marker"===e};var E=s("./packages/ckeditor5-engine/src/model/selection.ts"),S=s("./packages/ckeditor5-engine/src/model/operation/operationfactory.ts"),j=s("./packages/ckeditor5-engine/src/model/schema.ts"),O=s("./packages/ckeditor5-engine/src/model/operation/attributeoperation.ts"),R=s("./packages/ckeditor5-engine/src/model/operation/operation.ts"),M=s("./packages/ckeditor5-engine/src/model/operation/utils.ts");class N extends R.Z{constructor(e,t){super(null),this.sourcePosition=e.clone(),this.howMany=t}get type(){return"detach"}toJSON(){const e=super.toJSON();return e.sourcePosition=this.sourcePosition.toJSON(),e}_validate(){if(this.sourcePosition.root.document)throw new o.ZP("detach-operation-on-document-node",this)}_execute(){(0,M.X9)(n.Z._createFromPositionAndShift(this.sourcePosition,this.howMany))}static get className(){return"DetachOperation"}}var V=s("./packages/ckeditor5-engine/src/model/operation/insertoperation.ts"),I=s("./packages/ckeditor5-engine/src/model/operation/markeroperation.ts"),D=s("./packages/ckeditor5-engine/src/model/operation/mergeoperation.ts"),z=s("./packages/ckeditor5-engine/src/model/operation/moveoperation.ts"),B=s("./packages/ckeditor5-engine/src/model/operation/renameoperation.ts"),F=s("./packages/ckeditor5-engine/src/model/operation/rootattributeoperation.ts"),L=s("./packages/ckeditor5-engine/src/model/operation/splitoperation.ts"),W=s("./packages/ckeditor5-engine/src/model/documentfragment.ts"),$=s("./packages/ckeditor5-engine/src/model/text.ts"),q=s("./packages/ckeditor5-utils/src/tomap.ts");class H{constructor(e,t){this.model=e,this.batch=t}createText(e,t){return new $.Z(e,t)}createElement(e,t){return new p.Z(e,t)}createDocumentFragment(){return new W.Z}cloneElement(e,t=!0){return e._clone(t)}insert(e,t,s=0){if(this._assertWriterUsedCorrectly(),e instanceof $.Z&&""==e.data)return;const i=r.ZP._createAt(t,s);if(e.parent){if(Q(e.root,i.root))return void this.move(n.Z._createOn(e),i);if(e.root.document)throw new o.ZP("model-writer-insert-forbidden-move",this);this.remove(e)}const a=i.root.document?i.root.document.version:null,c=new V.Z(i,e,a);if(e instanceof $.Z&&(c.shouldReceiveAttributes=!0),this.batch.addOperation(c),this.model.applyOperation(c),e instanceof W.Z)for(const[t,s]of e.markers){const e=r.ZP._createAt(s.root,0),o={range:new n.Z(s.start._getCombined(e,i),s.end._getCombined(e,i)),usingOperation:!0,affectsData:!0};this.model.markers.has(t)?this.updateMarker(t,o):this.addMarker(t,o)}}insertText(e,t,s,o){t instanceof W.Z||t instanceof p.Z||t instanceof r.ZP?this.insert(this.createText(e),t,s):this.insert(this.createText(e,t),s,o)}insertElement(e,t,s,o){t instanceof W.Z||t instanceof p.Z||t instanceof r.ZP?this.insert(this.createElement(e),t,s):this.insert(this.createElement(e,t),s,o)}append(e,t){this.insert(e,t,"end")}appendText(e,t,s){t instanceof W.Z||t instanceof p.Z?this.insert(this.createText(e),t,"end"):this.insert(this.createText(e,t),s,"end")}appendElement(e,t,s){t instanceof W.Z||t instanceof p.Z?this.insert(this.createElement(e),t,"end"):this.insert(this.createElement(e,t),s,"end")}setAttribute(e,t,s){if(this._assertWriterUsedCorrectly(),s instanceof n.Z){const o=s.getMinimalFlatRanges();for(const s of o)U(this,e,t,s)}else K(this,e,t,s)}setAttributes(e,t){for(const[s,o]of(0,q.Z)(e))this.setAttribute(s,o,t)}removeAttribute(e,t){if(this._assertWriterUsedCorrectly(),t instanceof n.Z){const s=t.getMinimalFlatRanges();for(const t of s)U(this,e,null,t)}else K(this,e,null,t)}clearAttributes(e){this._assertWriterUsedCorrectly();const t=e=>{for(const t of e.getAttributeKeys())this.removeAttribute(t,e)};if(e instanceof n.Z)for(const s of e.getItems())t(s);else t(e)}move(e,t,s){if(this._assertWriterUsedCorrectly(),!(e instanceof n.Z))throw new o.ZP("writer-move-invalid-range",this);if(!e.isFlat)throw new o.ZP("writer-move-range-not-flat",this);const i=r.ZP._createAt(t,s);if(i.isEqual(e.start))return;if(this._addOperationForAffectedMarkers("move",e),!Q(e.root,i.root))throw new o.ZP("writer-move-different-document",this);const a=e.root.document?e.root.document.version:null,c=new z.Z(e.start,e.end.offset-e.start.offset,i,a);this.batch.addOperation(c),this.model.applyOperation(c)}remove(e){this._assertWriterUsedCorrectly();const t=(e instanceof n.Z?e:n.Z._createOn(e)).getMinimalFlatRanges().reverse();for(const e of t)this._addOperationForAffectedMarkers("move",e),J(e.start,e.end.offset-e.start.offset,this.batch,this.model)}merge(e){this._assertWriterUsedCorrectly();const t=e.nodeBefore,s=e.nodeAfter;if(this._addOperationForAffectedMarkers("merge",e),!(t instanceof p.Z))throw new o.ZP("writer-merge-no-element-before",this);if(!(s instanceof p.Z))throw new o.ZP("writer-merge-no-element-after",this);e.root.document?this._merge(e):this._mergeDetached(e)}createPositionFromPath(e,t,s){return this.model.createPositionFromPath(e,t,s)}createPositionAt(e,t){return this.model.createPositionAt(e,t)}createPositionAfter(e){return this.model.createPositionAfter(e)}createPositionBefore(e){return this.model.createPositionBefore(e)}createRange(e,t){return this.model.createRange(e,t)}createRangeIn(e){return this.model.createRangeIn(e)}createRangeOn(e){return this.model.createRangeOn(e)}createSelection(...e){return this.model.createSelection(...e)}_mergeDetached(e){const t=e.nodeBefore,s=e.nodeAfter;this.move(n.Z._createIn(s),r.ZP._createAt(t,"end")),this.remove(s)}_merge(e){const t=r.ZP._createAt(e.nodeBefore,"end"),s=r.ZP._createAt(e.nodeAfter,0),o=e.root.document.graveyard,i=new r.ZP(o,[0]),n=e.root.document.version,a=new D.Z(s,e.nodeAfter.maxOffset,t,i,n);this.batch.addOperation(a),this.model.applyOperation(a)}rename(e,t){if(this._assertWriterUsedCorrectly(),!(e instanceof p.Z))throw new o.ZP("writer-rename-not-element-instance",this);const s=e.root.document?e.root.document.version:null,i=new B.Z(r.ZP._createBefore(e),e.name,t,s);this.batch.addOperation(i),this.model.applyOperation(i)}split(e,t){this._assertWriterUsedCorrectly();let s,i,a=e.parent;if(!a.parent)throw new o.ZP("writer-split-element-no-parent",this);if(t||(t=a.parent),!e.parent.getAncestors({includeSelf:!0}).includes(t))throw new o.ZP("writer-split-invalid-limit-element",this);do{const t=a.root.document?a.root.document.version:null,o=a.maxOffset-e.offset,r=L.Z.getInsertionPosition(e),n=new L.Z(e,o,r,null,t);this.batch.addOperation(n),this.model.applyOperation(n),s||i||(s=a,i=e.parent.nextSibling),a=(e=this.createPositionAfter(e.parent)).parent}while(a!==t);return{position:e,range:new n.Z(r.ZP._createAt(s,"end"),r.ZP._createAt(i,0))}}wrap(e,t){if(this._assertWriterUsedCorrectly(),!e.isFlat)throw new o.ZP("writer-wrap-range-not-flat",this);const s=t instanceof p.Z?t:new p.Z(t);if(s.childCount>0)throw new o.ZP("writer-wrap-element-not-empty",this);if(null!==s.parent)throw new o.ZP("writer-wrap-element-attached",this);this.insert(s,e.start);const i=new n.Z(e.start.getShiftedBy(1),e.end.getShiftedBy(1));this.move(i,r.ZP._createAt(s,0))}unwrap(e){if(this._assertWriterUsedCorrectly(),null===e.parent)throw new o.ZP("writer-unwrap-element-no-parent",this);this.move(n.Z._createIn(e),this.createPositionAfter(e)),this.remove(e)}addMarker(e,t){if(this._assertWriterUsedCorrectly(),!t||"boolean"!=typeof t.usingOperation)throw new o.ZP("writer-addmarker-no-usingoperation",this);const s=t.usingOperation,i=t.range,r=void 0!==t.affectsData&&t.affectsData;if(this.model.markers.has(e))throw new o.ZP("writer-addmarker-marker-exists",this);if(!i)throw new o.ZP("writer-addmarker-no-range",this);return s?(G(this,e,null,i,r),this.model.markers.get(e)):this.model.markers._set(e,i,s,r)}updateMarker(e,t){this._assertWriterUsedCorrectly();const s="string"==typeof e?e:e.name,i=this.model.markers.get(s);if(!i)throw new o.ZP("writer-updatemarker-marker-not-exists",this);if(!t)return(0,o.KE)("writer-updatemarker-reconvert-using-editingcontroller",{markerName:s}),void this.model.markers._refresh(i);const r="boolean"==typeof t.usingOperation,n="boolean"==typeof t.affectsData,a=n?t.affectsData:i.affectsData;if(!r&&!t.range&&!n)throw new o.ZP("writer-updatemarker-wrong-options",this);const c=i.getRange(),l=t.range?t.range:c;r&&t.usingOperation!==i.managedUsingOperations?t.usingOperation?G(this,s,null,l,a):(G(this,s,c,null,a),this.model.markers._set(s,l,void 0,a)):i.managedUsingOperations?G(this,s,c,l,a):this.model.markers._set(s,l,void 0,a)}removeMarker(e){this._assertWriterUsedCorrectly();const t="string"==typeof e?e:e.name;if(!this.model.markers.has(t))throw new o.ZP("writer-removemarker-no-marker",this);const s=this.model.markers.get(t);if(!s.managedUsingOperations)return void this.model.markers._remove(t);G(this,t,s.getRange(),null,s.affectsData)}setSelection(...e){this._assertWriterUsedCorrectly(),this.model.document.selection._setTo(...e)}setSelectionFocus(e,t){this._assertWriterUsedCorrectly(),this.model.document.selection._setFocus(e,t)}setSelectionAttribute(e,t){if(this._assertWriterUsedCorrectly(),"string"==typeof e)this._setSelectionAttribute(e,t);else for(const[t,s]of(0,q.Z)(e))this._setSelectionAttribute(t,s)}removeSelectionAttribute(e){if(this._assertWriterUsedCorrectly(),"string"==typeof e)this._removeSelectionAttribute(e);else for(const t of e)this._removeSelectionAttribute(t)}overrideSelectionGravity(){return this.model.document.selection._overrideGravity()}restoreSelectionGravity(e){this.model.document.selection._restoreGravity(e)}_setSelectionAttribute(e,t){const s=this.model.document.selection;if(s.isCollapsed&&s.anchor.parent.isEmpty){const o=h.Z._getStoreAttributeKey(e);this.setAttribute(o,t,s.anchor.parent)}s._setAttribute(e,t)}_removeSelectionAttribute(e){const t=this.model.document.selection;if(t.isCollapsed&&t.anchor.parent.isEmpty){const s=h.Z._getStoreAttributeKey(e);this.removeAttribute(s,t.anchor.parent)}t._removeAttribute(e)}_assertWriterUsedCorrectly(){if(this.model._currentWriter!==this)throw new o.ZP("writer-incorrect-use",this)}_addOperationForAffectedMarkers(e,t){for(const s of this.model.markers){if(!s.managedUsingOperations)continue;const o=s.getRange();let i=!1;if("move"===e){const e=t;i=e.containsPosition(o.start)||e.start.isEqual(o.start)||e.containsPosition(o.end)||e.end.isEqual(o.end)}else{const e=t,s=e.nodeBefore,r=e.nodeAfter,n=o.start.parent==s&&o.start.isAtEnd,a=o.end.parent==r&&0==o.end.offset,c=o.end.nodeAfter==r,l=o.start.nodeAfter==r;i=n||a||c||l}i&&this.updateMarker(s.name,{range:o})}}}function U(e,t,s,o){const i=e.model,a=i.document;let c,l,d,h=o.start;for(const e of o.getWalker({shallow:!0}))d=e.item.getAttribute(t),c&&l!=d&&(l!=s&&u(),h=c),c=e.nextPosition,l=d;function u(){const o=new n.Z(h,c),r=o.root.document?a.version:null,d=new O.Z(o,t,l,s,r);e.batch.addOperation(d),i.applyOperation(d)}c instanceof r.ZP&&c!=h&&l!=s&&u()}function K(e,t,s,o){const i=e.model,a=i.document,c=o.getAttribute(t);let l,d;if(c!=s){if(o.root===o){const e=o.document?a.version:null;d=new F.Z(o,t,c,s,e)}else{l=new n.Z(r.ZP._createBefore(o),e.createPositionAfter(o));const i=l.root.document?a.version:null;d=new O.Z(l,t,c,s,i)}e.batch.addOperation(d),i.applyOperation(d)}}function G(e,t,s,o,i){const r=e.model,n=r.document,a=new I.Z(t,s,o,r.markers,!!i,n.version);e.batch.addOperation(a),r.applyOperation(a)}function J(e,t,s,o){let i;if(e.root.document){const s=o.document,n=new r.ZP(s.graveyard,[0]);i=new z.Z(e,t,n,s.version)}else i=new N(e,t);s.addOperation(i),o.applyOperation(i)}function Q(e,t){return e===t||e instanceof g&&t instanceof g}var X=s("./packages/ckeditor5-engine/src/model/utils/autoparagraphing.ts");function Y(e){e.document.registerPostFixer((t=>function(e,t){const s=t.document.selection,o=t.schema,i=[];let r=!1;for(const e of s.getRanges()){const t=ee(e,o);t&&!t.isEqual(e)?(i.push(t),r=!0):i.push(e)}r&&e.setSelection(function(e){const t=[...e],s=new Set;let o=1;for(;o<t.length;){const e=t[o],i=t.slice(0,o);for(const[r,n]of i.entries())if(!s.has(r))if(e.isEqual(n))s.add(r);else if(e.isIntersecting(n)){s.add(r),s.add(o);const i=e.getJoined(n);t.push(i)}o++}return t.filter(((e,t)=>!s.has(t)))}(i),{backward:s.isBackward});return!1}(t,e)))}function ee(e,t){return e.isCollapsed?function(e,t){const s=e.start,o=t.getNearestSelectionRange(s);if(!o){const e=s.getAncestors().reverse().find((e=>t.isObject(e)));return e?n.Z._createOn(e):null}if(!o.isCollapsed)return o;const i=o.start;if(s.isEqual(i))return null;return new n.Z(i)}(e,t):function(e,t){const{start:s,end:o}=e,i=t.checkChild(s,"$text"),a=t.checkChild(o,"$text"),c=t.getLimitElement(s),l=t.getLimitElement(o);if(c===l){if(i&&a)return null;if(function(e,t,s){const o=e.nodeAfter&&!s.isLimit(e.nodeAfter)||s.checkChild(e,"$text"),i=t.nodeBefore&&!s.isLimit(t.nodeBefore)||s.checkChild(t,"$text");return o||i}(s,o,t)){const e=s.nodeAfter&&t.isSelectable(s.nodeAfter)?null:t.getNearestSelectionRange(s,"forward"),i=o.nodeBefore&&t.isSelectable(o.nodeBefore)?null:t.getNearestSelectionRange(o,"backward"),r=e?e.start:s,a=i?i.end:o;return new n.Z(r,a)}}const d=c&&!c.is("rootElement"),h=l&&!l.is("rootElement");if(d||h){const e=s.nodeAfter&&o.nodeBefore&&s.nodeAfter.parent===o.nodeBefore.parent,i=d&&(!e||!se(s.nodeAfter,t)),a=h&&(!e||!se(o.nodeBefore,t));let u=s,p=o;return i&&(u=r.ZP._createBefore(te(c,t))),a&&(p=r.ZP._createAfter(te(l,t))),new n.Z(u,p)}return null}(e,t)}function te(e,t){let s=e,o=s;for(;t.isLimit(o)&&o.parent;)s=o,o=o.parent;return s}function se(e,t){return e&&t.isSelectable(e)}var oe=s("./packages/ckeditor5-engine/src/model/liveposition.ts");function ie(e,t,s={}){if(t.isCollapsed)return;const o=t.getFirstRange();if("$graveyard"==o.root.rootName)return;const i=e.schema;e.change((e=>{if(!s.doNotResetEntireContent&&function(e,t){const s=e.getLimitElement(t);if(!t.containsEntireContent(s))return!1;const o=t.getFirstRange();if(o.start.parent==o.end.parent)return!1;return e.checkChild(s,"paragraph")}(i,t))return void function(e,t){const s=e.model.schema.getLimitElement(t);e.remove(e.createRangeIn(s)),ce(e,e.createPositionAt(s,0),t)}(e,t);const r={};if(!s.doNotAutoparagraph){const e=t.getSelectedElement();e&&Object.assign(r,i.getAttributesWithProperty(e,"copyOnReplace",!0))}const[n,a]=function(e){const t=e.root.document.model,s=e.start;let o=e.end;if(t.hasContent(e,{ignoreMarkers:!0})){const s=function(e){const t=e.parent,s=t.root.document.model.schema,o=t.getAncestors({parentFirst:!0,includeSelf:!0});for(const e of o){if(s.isLimit(e))return null;if(s.isBlock(e))return e}}(o);if(s&&o.isTouching(t.createPositionAt(s,0))){const s=t.createSelection(e);t.modifySelection(s,{direction:"backward"});const i=s.getLastPosition(),r=t.createRange(i,o);t.hasContent(r,{ignoreMarkers:!0})||(o=i)}}return[oe.Z.fromPosition(s,"toPrevious"),oe.Z.fromPosition(o,"toNext")]}(o);n.isTouching(a)||e.remove(e.createRange(n,a)),s.leaveUnmerged||(!function(e,t,s){const o=e.model;if(!ae(e.model.schema,t,s))return;const[i,r]=function(e,t){const s=e.getAncestors(),o=t.getAncestors();let i=0;for(;s[i]&&s[i]==o[i];)i++;return[s[i],o[i]]}(t,s);if(!i||!r)return;!o.hasContent(i,{ignoreMarkers:!0})&&o.hasContent(r,{ignoreMarkers:!0})?ne(e,t,s,i.parent):re(e,t,s,i.parent)}(e,n,a),i.removeDisallowedAttributes(n.parent.getChildren(),e)),le(e,t,n),!s.doNotAutoparagraph&&function(e,t){const s=e.checkChild(t,"$text"),o=e.checkChild(t,"paragraph");return!s&&o}(i,n)&&ce(e,n,t,r),n.detach(),a.detach()}))}function re(e,t,s,o){const i=t.parent,r=s.parent;if(i!=o&&r!=o){for(t=e.createPositionAfter(i),(s=e.createPositionBefore(r)).isEqual(t)||e.insert(r,t),e.merge(t);s.parent.isEmpty;){const t=s.parent;s=e.createPositionBefore(t),e.remove(t)}ae(e.model.schema,t,s)&&re(e,t,s,o)}}function ne(e,t,s,o){const i=t.parent,r=s.parent;if(i!=o&&r!=o){for(t=e.createPositionAfter(i),(s=e.createPositionBefore(r)).isEqual(t)||e.insert(i,s);t.parent.isEmpty;){const s=t.parent;t=e.createPositionBefore(s),e.remove(s)}s=e.createPositionBefore(r),function(e,t){const s=t.nodeBefore,o=t.nodeAfter;s.name!=o.name&&e.rename(s,o.name);e.clearAttributes(s),e.setAttributes(Object.fromEntries(o.getAttributes()),s),e.merge(t)}(e,s),ae(e.model.schema,t,s)&&ne(e,t,s,o)}}function ae(e,t,s){const o=t.parent,i=s.parent;return o!=i&&(!e.isLimit(o)&&!e.isLimit(i)&&function(e,t,s){const o=new n.Z(e,t);for(const e of o.getWalker())if(s.isLimit(e.item))return!1;return!0}(t,s,e))}function ce(e,t,s,o={}){const i=e.createElement("paragraph");e.model.schema.setAllowedAttributes(i,o,e),e.insert(i,t),le(e,s,e.createPositionAt(i,0))}function le(e,t,s){t instanceof h.Z?e.setSelection(s):t.setTo(s)}function de(e,t){const s=[];Array.from(e.getItems({direction:"backward"})).map((e=>t.createRangeOn(e))).filter((t=>(t.start.isAfter(e.start)||t.start.isEqual(e.start))&&(t.end.isBefore(e.end)||t.end.isEqual(e.end)))).forEach((e=>{s.push(e.start.parent),t.remove(e)})),s.forEach((e=>{let s=e;for(;s.parent&&s.isEmpty;){const e=t.createRangeOn(s);s=s.parent,t.remove(e)}}))}class he{constructor(e,t,s){this.model=e,this.writer=t,this.position=s,this.canMergeWith=new Set([this.position.parent]),this.schema=e.schema,this._documentFragment=t.createDocumentFragment(),this._documentFragmentPosition=t.createPositionAt(this._documentFragment,0),this._firstNode=null,this._lastNode=null,this._lastAutoParagraph=null,this._filterAttributesOf=[],this._affectedStart=null,this._affectedEnd=null}handleNodes(e){for(const t of Array.from(e))this._handleNode(t);this._insertPartialFragment(),this._lastAutoParagraph&&this._updateLastNodeFromAutoParagraph(this._lastAutoParagraph),this._mergeOnRight(),this.schema.removeDisallowedAttributes(this._filterAttributesOf,this.writer),this._filterAttributesOf=[]}_updateLastNodeFromAutoParagraph(e){const t=this.writer.createPositionAfter(this._lastNode),s=this.writer.createPositionAfter(e);if(s.isAfter(t)){if(this._lastNode=e,this.position.parent!=e||!this.position.isAtEnd)throw new o.ZP("insertcontent-invalid-insertion-position",this);this.position=s,this._setAffectedBoundaries(this.position)}}getSelectionRange(){return this._nodeToSelect?n.Z._createOn(this._nodeToSelect):this.model.schema.getNearestSelectionRange(this.position)}getAffectedRange(){return this._affectedStart?new n.Z(this._affectedStart,this._affectedEnd):null}destroy(){this._affectedStart&&this._affectedStart.detach(),this._affectedEnd&&this._affectedEnd.detach()}_handleNode(e){if(this.schema.isObject(e))return void this._handleObject(e);let t=this._checkAndAutoParagraphToAllowedPosition(e);t||(t=this._checkAndSplitToAllowedPosition(e),t)?(this._appendToFragment(e),this._firstNode||(this._firstNode=e),this._lastNode=e):this._handleDisallowedNode(e)}_insertPartialFragment(){if(this._documentFragment.isEmpty)return;const e=oe.Z.fromPosition(this.position,"toNext");this._setAffectedBoundaries(this.position),this._documentFragment.getChild(0)==this._firstNode&&(this.writer.insert(this._firstNode,this.position),this._mergeOnLeft(),this.position=e.toPosition()),this._documentFragment.isEmpty||this.writer.insert(this._documentFragment,this.position),this._documentFragmentPosition=this.writer.createPositionAt(this._documentFragment,0),this.position=e.toPosition(),e.detach()}_handleObject(e){this._checkAndSplitToAllowedPosition(e)?this._appendToFragment(e):this._tryAutoparagraphing(e)}_handleDisallowedNode(e){e.is("element")?this.handleNodes(e.getChildren()):this._tryAutoparagraphing(e)}_appendToFragment(e){if(!this.schema.checkChild(this.position,e))throw new o.ZP("insertcontent-wrong-position",this,{node:e,position:this.position});this.writer.insert(e,this._documentFragmentPosition),this._documentFragmentPosition=this._documentFragmentPosition.getShiftedBy(e.offsetSize),this.schema.isObject(e)&&!this.schema.checkChild(this.position,"$text")?this._nodeToSelect=e:this._nodeToSelect=null,this._filterAttributesOf.push(e)}_setAffectedBoundaries(e){this._affectedStart||(this._affectedStart=oe.Z.fromPosition(e,"toPrevious")),this._affectedEnd&&!this._affectedEnd.isBefore(e)||(this._affectedEnd&&this._affectedEnd.detach(),this._affectedEnd=oe.Z.fromPosition(e,"toNext"))}_mergeOnLeft(){const e=this._firstNode;if(!(e instanceof p.Z))return;if(!this._canMergeLeft(e))return;const t=oe.Z._createBefore(e);t.stickiness="toNext";const s=oe.Z.fromPosition(this.position,"toNext");this._affectedStart.isEqual(t)&&(this._affectedStart.detach(),this._affectedStart=oe.Z._createAt(t.nodeBefore,"end","toPrevious")),this._firstNode===this._lastNode&&(this._firstNode=t.nodeBefore,this._lastNode=t.nodeBefore),this.writer.merge(t),t.isEqual(this._affectedEnd)&&this._firstNode===this._lastNode&&(this._affectedEnd.detach(),this._affectedEnd=oe.Z._createAt(t.nodeBefore,"end","toNext")),this.position=s.toPosition(),s.detach(),this._filterAttributesOf.push(this.position.parent),t.detach()}_mergeOnRight(){const e=this._lastNode;if(!(e instanceof p.Z))return;if(!this._canMergeRight(e))return;const t=oe.Z._createAfter(e);if(t.stickiness="toNext",!this.position.isEqual(t))throw new o.ZP("insertcontent-invalid-insertion-position",this);this.position=r.ZP._createAt(t.nodeBefore,"end");const s=oe.Z.fromPosition(this.position,"toPrevious");this._affectedEnd.isEqual(t)&&(this._affectedEnd.detach(),this._affectedEnd=oe.Z._createAt(t.nodeBefore,"end","toNext")),this._firstNode===this._lastNode&&(this._firstNode=t.nodeBefore,this._lastNode=t.nodeBefore),this.writer.merge(t),t.getShiftedBy(-1).isEqual(this._affectedStart)&&this._firstNode===this._lastNode&&(this._affectedStart.detach(),this._affectedStart=oe.Z._createAt(t.nodeBefore,0,"toPrevious")),this.position=s.toPosition(),s.detach(),this._filterAttributesOf.push(this.position.parent),t.detach()}_canMergeLeft(e){const t=e.previousSibling;return t instanceof p.Z&&this.canMergeWith.has(t)&&this.model.schema.checkMerge(t,e)}_canMergeRight(e){const t=e.nextSibling;return t instanceof p.Z&&this.canMergeWith.has(t)&&this.model.schema.checkMerge(e,t)}_tryAutoparagraphing(e){const t=this.writer.createElement("paragraph");this._getAllowedIn(this.position.parent,t)&&this.schema.checkChild(t,e)&&(t._appendChild(e),this._handleNode(t))}_checkAndAutoParagraphToAllowedPosition(e){if(this.schema.checkChild(this.position.parent,e))return!0;if(!this.schema.checkChild(this.position.parent,"paragraph")||!this.schema.checkChild("paragraph",e))return!1;this._insertPartialFragment();const t=this.writer.createElement("paragraph");return this.writer.insert(t,this.position),this._setAffectedBoundaries(this.position),this._lastAutoParagraph=t,this.position=this.writer.createPositionAt(t,0),!0}_checkAndSplitToAllowedPosition(e){const t=this._getAllowedIn(this.position.parent,e);if(!t)return!1;for(t!=this.position.parent&&this._insertPartialFragment();t!=this.position.parent;)if(this.position.isAtStart){const e=this.position.parent;this.position=this.writer.createPositionBefore(e),e.isEmpty&&e.parent===t&&this.writer.remove(e)}else if(this.position.isAtEnd)this.position=this.writer.createPositionAfter(this.position.parent);else{const e=this.writer.createPositionAfter(this.position.parent);this._setAffectedBoundaries(this.position),this.writer.split(this.position),this.position=e,this.canMergeWith.add(this.position.nodeAfter)}return!0}_getAllowedIn(e,t){return this.schema.checkChild(e,t)?e:this.schema.isLimit(e)?null:this._getAllowedIn(e.parent,t)}}var ue=s("./packages/ckeditor5-engine/src/model/utils/findoptimalinsertionrange.ts"),pe=s("./packages/ckeditor5-utils/src/first.ts");function ge(e,t,s,i,r={}){if(!e.schema.isObject(t))throw new o.ZP("insertobject-element-not-an-object",e,{object:t});let n;n=s?s instanceof E.Z||s instanceof h.Z?s:e.createSelection(s,i):e.document.selection;let a=n;r.findOptimalPosition&&e.schema.isBlock(t)&&(a=e.createSelection((0,ue.K)(n,e,r.findOptimalPosition)));const c=(0,pe.Z)(n.getSelectedBlocks()),l={};return c&&Object.assign(l,e.schema.getAttributesWithProperty(c,"copyOnReplace",!0)),e.change((s=>{a.isCollapsed||e.deleteContent(a,{doNotAutoparagraph:!0});let i=t;const n=a.anchor.parent;!e.schema.checkChild(n,t)&&e.schema.checkChild(n,"paragraph")&&e.schema.checkChild("paragraph",t)&&(i=s.createElement("paragraph"),s.insert(t,i)),e.schema.setAllowedAttributes(i,l,s);const c=e.insertContent(i,a);return c.isCollapsed||r.setSelection&&function(e,t,s,i){const r=e.model;if("after"==s){let s=t.nextSibling;!(s&&r.schema.checkChild(s,"$text"))&&r.schema.checkChild(t.parent,"paragraph")&&(s=e.createElement("paragraph"),r.schema.setAllowedAttributes(s,i,e),r.insertContent(s,e.createPositionAfter(t))),s&&e.setSelection(s,0)}else{if("on"!=s)throw new o.ZP("insertobject-invalid-place-parameter-value",r);e.setSelection(t,"on")}}(s,t,r.setSelection,l),c}))}var fe=s("./packages/ckeditor5-engine/src/model/treewalker.ts");const me=' ,.?!:;"-()';function ke(e,t){const{isForward:s,walker:o,unit:i,schema:n,treatEmojiAsSingleUnit:a}=e,{type:c,item:l,nextPosition:d}=t;if("text"==c)return"word"===e.unit?function(e,t){let s=e.position.textNode;if(s){let o=e.position.offset-s.startOffset;for(;!_e(s.data,o,t)&&!we(s,o,t);){e.next();const i=t?e.position.nodeAfter:e.position.nodeBefore;if(i&&i.is("$text")){const o=i.data.charAt(t?0:i.data.length-1);me.includes(o)||(e.next(),s=e.position.textNode)}o=e.position.offset-s.startOffset}}return e.position}(o,s):function(e,t,s){const o=e.position.textNode;if(o){const i=o.data;let r=e.position.offset-o.startOffset;for(;k(i,r)||"character"==t&&b(i,r)||s&&w(i,r);)e.next(),r=e.position.offset-o.startOffset}return e.position}(o,i,a);if(c==(s?"elementStart":"elementEnd")){if(n.isSelectable(l))return r.ZP._createAt(l,s?"after":"before");if(n.checkChild(d,"$text"))return d}else{if(n.isLimit(l))return void o.skip((()=>!0));if(n.checkChild(d,"$text"))return d}}function be(e,t){const s=e.root,o=r.ZP._createAt(s,t?"end":0);return t?new n.Z(e,o):new n.Z(o,e)}function _e(e,t,s){const o=t+(s?0:-1);return me.includes(e.charAt(o))}function we(e,t,s){return t===(s?e.endOffset:0)}var ve=s("./packages/ckeditor5-utils/src/observablemixin.ts");class ye extends ve.y{constructor(){super(),this.markers=new A,this.document=new Z(this),this.schema=new j.Z,this._pendingChanges=[],this._currentWriter=null,["insertContent","insertObject","deleteContent","modifySelection","getSelectedContent","applyOperation"].forEach((e=>this.decorate(e))),this.on("applyOperation",((e,t)=>{t[0]._validate()}),{priority:"highest"}),this.schema.register("$root",{isLimit:!0}),this.schema.register("$container",{allowIn:["$root","$container"]}),this.schema.register("$block",{allowIn:["$root","$container"],isBlock:!0}),this.schema.register("$blockObject",{allowWhere:"$block",isBlock:!0,isObject:!0}),this.schema.register("$inlineObject",{allowWhere:"$text",allowAttributesOf:"$text",isInline:!0,isObject:!0}),this.schema.register("$text",{allowIn:"$block",isInline:!0,isContent:!0}),this.schema.register("$clipboardHolder",{allowContentOf:"$root",allowChildren:"$text",isLimit:!0}),this.schema.register("$documentFragment",{allowContentOf:"$root",allowChildren:"$text",isLimit:!0}),this.schema.register("$marker"),this.schema.addChildCheck(((e,t)=>{if("$marker"===t.name)return!0})),Y(this),this.document.registerPostFixer(X._m)}change(e){try{return 0===this._pendingChanges.length?(this._pendingChanges.push({batch:new i,callback:e}),this._runPendingChanges()[0]):e(this._currentWriter)}catch(e){o.ZP.rethrowUnexpectedError(e,this)}}enqueueChange(e,t){try{e?"function"==typeof e?(t=e,e=new i):e instanceof i||(e=new i(e)):e=new i,this._pendingChanges.push({batch:e,callback:t}),1==this._pendingChanges.length&&this._runPendingChanges()}catch(e){o.ZP.rethrowUnexpectedError(e,this)}}applyOperation(e){e._execute()}insertContent(e,t,s){return function(e,t,s,o){return e.change((i=>{let r;r=s?s instanceof E.Z||s instanceof h.Z?s:i.createSelection(s,o):e.document.selection,r.isCollapsed||e.deleteContent(r,{doNotAutoparagraph:!0});const n=new he(e,i,r.anchor);let a;a=t.is("documentFragment")?t.getChildren():[t],n.handleNodes(a);const c=n.getSelectionRange();c&&(r instanceof h.Z?i.setSelection(c):r.setTo(c));const l=n.getAffectedRange()||e.createRange(r.anchor);return n.destroy(),l}))}(this,e,t,s)}insertObject(e,t,s,o){return ge(this,e,t,s,o)}deleteContent(e,t){ie(this,e,t)}modifySelection(e,t){!function(e,t,s={}){const o=e.schema,i="backward"!=s.direction,r=s.unit?s.unit:"character",n=!!s.treatEmojiAsSingleUnit,a=t.focus,c=new fe.Z({boundaries:be(a,i),singleCharacters:!0,direction:i?"forward":"backward"}),l={walker:c,schema:o,isForward:i,unit:r,treatEmojiAsSingleUnit:n};let d;for(;d=c.next();){if(d.done)return;const s=ke(l,d.value);if(s)return void(t instanceof h.Z?e.change((e=>{e.setSelectionFocus(s)})):t.setFocus(s))}}(this,e,t)}getSelectedContent(e){return function(e,t){return e.change((e=>{const s=e.createDocumentFragment(),o=t.getFirstRange();if(!o||o.isCollapsed)return s;const i=o.start.root,r=o.start.getCommonPath(o.end),n=i.getNodeByPath(r);let a;a=o.start.parent==o.end.parent?o:e.createRange(e.createPositionAt(n,o.start.path[r.length]),e.createPositionAt(n,o.end.path[r.length]+1));const c=a.end.offset-a.start.offset;for(const t of a.getItems({shallow:!0}))t.is("$textProxy")?e.appendText(t.data,t.getAttributes(),s):e.append(e.cloneElement(t,!0),s);if(a!=o){const t=o._getTransformedByMove(a.start,e.createPositionAt(s,0),c)[0],i=e.createRange(e.createPositionAt(s,0),t.start);de(e.createRange(t.end,e.createPositionAt(s,"end")),e),de(i,e)}return s}))}(this,e)}hasContent(e,t={}){const s=e instanceof n.Z?e:n.Z._createIn(e);if(s.isCollapsed)return!1;const{ignoreWhitespaces:o=!1,ignoreMarkers:i=!1}=t;if(!i)for(const e of this.markers.getMarkersIntersectingRange(s))if(e.affectsData)return!0;for(const e of s.getItems())if(this.schema.isContent(e)){if(!e.is("$textProxy"))return!0;if(!o)return!0;if(-1!==e.data.search(/\S/))return!0}return!1}createPositionFromPath(e,t,s){return new r.ZP(e,t,s)}createPositionAt(e,t){return r.ZP._createAt(e,t)}createPositionAfter(e){return r.ZP._createAfter(e)}createPositionBefore(e){return r.ZP._createBefore(e)}createRange(e,t){return new n.Z(e,t)}createRangeIn(e){return n.Z._createIn(e)}createRangeOn(e){return n.Z._createOn(e)}createSelection(...e){return new E.Z(...e)}createBatch(e){return new i(e)}createOperationFromJSON(e){return S.Z.fromJSON(e,this.document)}destroy(){this.document.destroy(),this.stopListening()}_runPendingChanges(){const e=[];this.fire("_beforeChanges");try{for(;this._pendingChanges.length;){const t=this._pendingChanges[0].batch;this._currentWriter=new H(this,t);const s=this._pendingChanges[0].callback(this._currentWriter);e.push(s),this.document._handleChangeBlock(this._currentWriter),this._pendingChanges.shift(),this._currentWriter=null}}finally{this._pendingChanges.length=0,this._currentWriter=null,this.fire("_afterChanges")}return e}}},"./packages/ckeditor5-engine/src/model/node.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>a});var o=s("./packages/ckeditor5-engine/src/model/typecheckable.ts"),i=s("./packages/ckeditor5-utils/src/tomap.ts"),r=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),n=s("./packages/ckeditor5-utils/src/comparearrays.ts");s("./packages/ckeditor5-utils/src/version.ts");class a extends o.Z{constructor(e){super(),this.parent=null,this._attrs=(0,i.Z)(e)}get document(){return null}get index(){let e;if(!this.parent)return null;if(null===(e=this.parent.getChildIndex(this)))throw new r.ZP("model-node-not-found-in-parent",this);return e}get startOffset(){let e;if(!this.parent)return null;if(null===(e=this.parent.getChildStartOffset(this)))throw new r.ZP("model-node-not-found-in-parent",this);return e}get offsetSize(){return 1}get endOffset(){return this.parent?this.startOffset+this.offsetSize:null}get nextSibling(){const e=this.index;return null!==e&&this.parent.getChild(e+1)||null}get previousSibling(){const e=this.index;return null!==e&&this.parent.getChild(e-1)||null}get root(){let e=this;for(;e.parent;)e=e.parent;return e}isAttached(){return this.root.is("rootElement")}getPath(){const e=[];let t=this;for(;t.parent;)e.unshift(t.startOffset),t=t.parent;return e}getAncestors(e={}){const t=[];let s=e.includeSelf?this:this.parent;for(;s;)t[e.parentFirst?"push":"unshift"](s),s=s.parent;return t}getCommonAncestor(e,t={}){const s=this.getAncestors(t),o=e.getAncestors(t);let i=0;for(;s[i]==o[i]&&s[i];)i++;return 0===i?null:s[i-1]}isBefore(e){if(this==e)return!1;if(this.root!==e.root)return!1;const t=this.getPath(),s=e.getPath(),o=(0,n.Z)(t,s);switch(o){case"prefix":return!0;case"extension":return!1;default:return t[o]<s[o]}}isAfter(e){return this!=e&&(this.root===e.root&&!this.isBefore(e))}hasAttribute(e){return this._attrs.has(e)}getAttribute(e){return this._attrs.get(e)}getAttributes(){return this._attrs.entries()}getAttributeKeys(){return this._attrs.keys()}toJSON(){const e={};return this._attrs.size&&(e.attributes=Array.from(this._attrs).reduce(((e,t)=>(e[t[0]]=t[1],e)),{})),e}_clone(e){return new a(this._attrs)}_remove(){this.parent._removeChildren(this.index)}_setAttribute(e,t){this._attrs.set(e,t)}_setAttributesTo(e){this._attrs=(0,i.Z)(e)}_removeAttribute(e){return this._attrs.delete(e)}_clearAttributes(){this._attrs.clear()}}a.prototype.is=function(e){return"node"===e||"model:node"===e}},"./packages/ckeditor5-engine/src/model/nodelist.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./packages/ckeditor5-engine/src/model/node.ts"),i=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class r{constructor(e){this._nodes=[],e&&this._insertNodes(0,e)}[Symbol.iterator](){return this._nodes[Symbol.iterator]()}get length(){return this._nodes.length}get maxOffset(){return this._nodes.reduce(((e,t)=>e+t.offsetSize),0)}getNode(e){return this._nodes[e]||null}getNodeIndex(e){const t=this._nodes.indexOf(e);return-1==t?null:t}getNodeStartOffset(e){const t=this.getNodeIndex(e);return null===t?null:this._nodes.slice(0,t).reduce(((e,t)=>e+t.offsetSize),0)}indexToOffset(e){if(e==this._nodes.length)return this.maxOffset;const t=this._nodes[e];if(!t)throw new i.ZP("model-nodelist-index-out-of-bounds",this);return this.getNodeStartOffset(t)}offsetToIndex(e){let t=0;for(const s of this._nodes){if(e>=t&&e<t+s.offsetSize)return this.getNodeIndex(s);t+=s.offsetSize}if(t!=e)throw new i.ZP("model-nodelist-offset-out-of-bounds",this,{offset:e,nodeList:this});return this.length}_insertNodes(e,t){for(const e of t)if(!(e instanceof o.Z))throw new i.ZP("model-nodelist-insertnodes-not-node",this);this._nodes.splice(e,0,...t)}_removeNodes(e,t=1){return this._nodes.splice(e,t)}toJSON(){return this._nodes.map((e=>e.toJSON()))}}},"./packages/ckeditor5-engine/src/model/operation/attributeoperation.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>l});var o=s("./packages/ckeditor5-engine/src/model/operation/operation.ts"),i=s("./packages/ckeditor5-engine/src/model/operation/utils.ts"),r=s("./packages/ckeditor5-engine/src/model/range.ts"),n=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),a=s("./node_modules/lodash-es/_baseIsEqual.js");const c=function(e,t){return(0,a.Z)(e,t)};class l extends o.Z{constructor(e,t,s,o,i){super(i),this.range=e.clone(),this.key=t,this.oldValue=void 0===s?null:s,this.newValue=void 0===o?null:o}get type(){return null===this.oldValue?"addAttribute":null===this.newValue?"removeAttribute":"changeAttribute"}clone(){return new l(this.range,this.key,this.oldValue,this.newValue,this.baseVersion)}getReversed(){return new l(this.range,this.key,this.newValue,this.oldValue,this.baseVersion+1)}toJSON(){const e=super.toJSON();return e.range=this.range.toJSON(),e}_validate(){if(!this.range.isFlat)throw new n.ZP("attribute-operation-range-not-flat",this);for(const e of this.range.getItems({shallow:!0})){if(null!==this.oldValue&&!c(e.getAttribute(this.key),this.oldValue))throw new n.ZP("attribute-operation-wrong-old-value",this,{item:e,key:this.key,value:this.oldValue});if(null===this.oldValue&&null!==this.newValue&&e.hasAttribute(this.key))throw new n.ZP("attribute-operation-attribute-exists",this,{node:e,key:this.key})}}_execute(){c(this.oldValue,this.newValue)||(0,i.pX)(this.range,this.key,this.newValue)}static get className(){return"AttributeOperation"}static fromJSON(e,t){return new l(r.Z.fromJSON(e.range,t),e.key,e.oldValue,e.newValue,e.baseVersion)}}},"./packages/ckeditor5-engine/src/model/operation/insertoperation.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>h});var o=s("./packages/ckeditor5-engine/src/model/operation/operation.ts"),i=s("./packages/ckeditor5-engine/src/model/position.ts"),r=s("./packages/ckeditor5-engine/src/model/nodelist.ts"),n=s("./packages/ckeditor5-engine/src/model/operation/moveoperation.ts"),a=s("./packages/ckeditor5-engine/src/model/operation/utils.ts"),c=s("./packages/ckeditor5-engine/src/model/text.ts"),l=s("./packages/ckeditor5-engine/src/model/element.ts"),d=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class h extends o.Z{constructor(e,t,s){super(s),this.position=e.clone(),this.position.stickiness="toNone",this.nodes=new r.Z((0,a.So)(t)),this.shouldReceiveAttributes=!1}get type(){return"insert"}get howMany(){return this.nodes.maxOffset}clone(){const e=new r.Z([...this.nodes].map((e=>e._clone(!0)))),t=new h(this.position,e,this.baseVersion);return t.shouldReceiveAttributes=this.shouldReceiveAttributes,t}getReversed(){const e=this.position.root.document.graveyard,t=new i.ZP(e,[0]);return new n.Z(this.position,this.nodes.maxOffset,t,this.baseVersion+1)}_validate(){const e=this.position.parent;if(!e||e.maxOffset<this.position.offset)throw new d.ZP("insert-operation-position-invalid",this)}_execute(){const e=this.nodes;this.nodes=new r.Z([...e].map((e=>e._clone(!0)))),(0,a.fj)(this.position,e)}toJSON(){const e=super.toJSON();return e.position=this.position.toJSON(),e.nodes=this.nodes.toJSON(),e}static get className(){return"InsertOperation"}static fromJSON(e,t){const s=[];for(const t of e.nodes)t.name?s.push(l.Z.fromJSON(t)):s.push(c.Z.fromJSON(t));const o=new h(i.ZP.fromJSON(e.position,t),s,e.baseVersion);return o.shouldReceiveAttributes=e.shouldReceiveAttributes,o}}},"./packages/ckeditor5-engine/src/model/operation/markeroperation.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./packages/ckeditor5-engine/src/model/operation/operation.ts"),i=s("./packages/ckeditor5-engine/src/model/range.ts");class r extends o.Z{constructor(e,t,s,o,i,r){super(r),this.name=e,this.oldRange=t?t.clone():null,this.newRange=s?s.clone():null,this.affectsData=i,this._markers=o}get type(){return"marker"}clone(){return new r(this.name,this.oldRange,this.newRange,this._markers,this.affectsData,this.baseVersion)}getReversed(){return new r(this.name,this.newRange,this.oldRange,this._markers,this.affectsData,this.baseVersion+1)}_execute(){this.newRange?this._markers._set(this.name,this.newRange,!0,this.affectsData):this._markers._remove(this.name)}toJSON(){const e=super.toJSON();return this.oldRange&&(e.oldRange=this.oldRange.toJSON()),this.newRange&&(e.newRange=this.newRange.toJSON()),delete e._markers,e}static get className(){return"MarkerOperation"}static fromJSON(e,t){return new r(e.name,e.oldRange?i.Z.fromJSON(e.oldRange,t):null,e.newRange?i.Z.fromJSON(e.newRange,t):null,t.model.markers,e.affectsData,e.baseVersion)}}},"./packages/ckeditor5-engine/src/model/operation/mergeoperation.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>l});var o=s("./packages/ckeditor5-engine/src/model/operation/operation.ts"),i=s("./packages/ckeditor5-engine/src/model/operation/splitoperation.ts"),r=s("./packages/ckeditor5-engine/src/model/position.ts"),n=s("./packages/ckeditor5-engine/src/model/range.ts"),a=s("./packages/ckeditor5-engine/src/model/operation/utils.ts"),c=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class l extends o.Z{constructor(e,t,s,o,i){super(i),this.sourcePosition=e.clone(),this.sourcePosition.stickiness="toPrevious",this.howMany=t,this.targetPosition=s.clone(),this.targetPosition.stickiness="toNext",this.graveyardPosition=o.clone()}get type(){return"merge"}get deletionPosition(){return new r.ZP(this.sourcePosition.root,this.sourcePosition.path.slice(0,-1))}get movedRange(){const e=this.sourcePosition.getShiftedBy(Number.POSITIVE_INFINITY);return new n.Z(this.sourcePosition,e)}clone(){return new l(this.sourcePosition,this.howMany,this.targetPosition,this.graveyardPosition,this.baseVersion)}getReversed(){const e=this.targetPosition._getTransformedByMergeOperation(this),t=this.sourcePosition.path.slice(0,-1),s=new r.ZP(this.sourcePosition.root,t)._getTransformedByMergeOperation(this);return new i.Z(e,this.howMany,s,this.graveyardPosition,this.baseVersion+1)}_validate(){const e=this.sourcePosition.parent,t=this.targetPosition.parent;if(!e.parent)throw new c.ZP("merge-operation-source-position-invalid",this);if(!t.parent)throw new c.ZP("merge-operation-target-position-invalid",this);if(this.howMany!=e.maxOffset)throw new c.ZP("merge-operation-how-many-invalid",this)}_execute(){const e=this.sourcePosition.parent,t=n.Z._createIn(e);(0,a.XF)(t,this.targetPosition),(0,a.XF)(n.Z._createOn(e),this.graveyardPosition)}toJSON(){const e=super.toJSON();return e.sourcePosition=e.sourcePosition.toJSON(),e.targetPosition=e.targetPosition.toJSON(),e.graveyardPosition=e.graveyardPosition.toJSON(),e}static get className(){return"MergeOperation"}static fromJSON(e,t){const s=r.ZP.fromJSON(e.sourcePosition,t),o=r.ZP.fromJSON(e.targetPosition,t),i=r.ZP.fromJSON(e.graveyardPosition,t);return new this(s,e.howMany,o,i,e.baseVersion)}}},"./packages/ckeditor5-engine/src/model/operation/moveoperation.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>l});var o=s("./packages/ckeditor5-engine/src/model/operation/operation.ts"),i=s("./packages/ckeditor5-engine/src/model/position.ts"),r=s("./packages/ckeditor5-engine/src/model/range.ts"),n=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),a=s("./packages/ckeditor5-utils/src/comparearrays.ts"),c=s("./packages/ckeditor5-engine/src/model/operation/utils.ts");class l extends o.Z{constructor(e,t,s,o){super(o),this.sourcePosition=e.clone(),this.sourcePosition.stickiness="toNext",this.howMany=t,this.targetPosition=s.clone(),this.targetPosition.stickiness="toNone"}get type(){return"$graveyard"==this.targetPosition.root.rootName?"remove":"$graveyard"==this.sourcePosition.root.rootName?"reinsert":"move"}clone(){return new l(this.sourcePosition,this.howMany,this.targetPosition,this.baseVersion)}getMovedRangeStart(){return this.targetPosition._getTransformedByDeletion(this.sourcePosition,this.howMany)}getReversed(){const e=this.sourcePosition._getTransformedByInsertion(this.targetPosition,this.howMany);return new l(this.getMovedRangeStart(),this.howMany,e,this.baseVersion+1)}_validate(){const e=this.sourcePosition.parent,t=this.targetPosition.parent,s=this.sourcePosition.offset,o=this.targetPosition.offset;if(s+this.howMany>e.maxOffset)throw new n.ZP("move-operation-nodes-do-not-exist",this);if(e===t&&s<o&&o<s+this.howMany)throw new n.ZP("move-operation-range-into-itself",this);if(this.sourcePosition.root==this.targetPosition.root&&"prefix"==(0,a.Z)(this.sourcePosition.getParentPath(),this.targetPosition.getParentPath())){const e=this.sourcePosition.path.length-1;if(this.targetPosition.path[e]>=s&&this.targetPosition.path[e]<s+this.howMany)throw new n.ZP("move-operation-node-into-itself",this)}}_execute(){(0,c.XF)(r.Z._createFromPositionAndShift(this.sourcePosition,this.howMany),this.targetPosition)}toJSON(){const e=super.toJSON();return e.sourcePosition=this.sourcePosition.toJSON(),e.targetPosition=this.targetPosition.toJSON(),e}static get className(){return"MoveOperation"}static fromJSON(e,t){const s=i.ZP.fromJSON(e.sourcePosition,t),o=i.ZP.fromJSON(e.targetPosition,t);return new this(s,e.howMany,o,e.baseVersion)}}},"./packages/ckeditor5-engine/src/model/operation/nooperation.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./packages/ckeditor5-engine/src/model/operation/operation.ts");class i extends o.Z{get type(){return"noop"}clone(){return new i(this.baseVersion)}getReversed(){return new i(this.baseVersion+1)}_execute(){}static get className(){return"NoOperation"}}},"./packages/ckeditor5-engine/src/model/operation/operation.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});class o{constructor(e){this.baseVersion=e,this.isDocumentOperation=null!==this.baseVersion,this.batch=null}_validate(){}toJSON(){const e=Object.assign({},this);return e.__className=this.constructor.className,delete e.batch,delete e.isDocumentOperation,e}static get className(){return"Operation"}static fromJSON(e,t){return new this(e.baseVersion)}}},"./packages/ckeditor5-engine/src/model/operation/operationfactory.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>g});var o=s("./packages/ckeditor5-engine/src/model/operation/attributeoperation.ts"),i=s("./packages/ckeditor5-engine/src/model/operation/insertoperation.ts"),r=s("./packages/ckeditor5-engine/src/model/operation/markeroperation.ts"),n=s("./packages/ckeditor5-engine/src/model/operation/moveoperation.ts"),a=s("./packages/ckeditor5-engine/src/model/operation/nooperation.ts"),c=s("./packages/ckeditor5-engine/src/model/operation/operation.ts"),l=s("./packages/ckeditor5-engine/src/model/operation/renameoperation.ts"),d=s("./packages/ckeditor5-engine/src/model/operation/rootattributeoperation.ts"),h=s("./packages/ckeditor5-engine/src/model/operation/splitoperation.ts"),u=s("./packages/ckeditor5-engine/src/model/operation/mergeoperation.ts");const p={};p[o.Z.className]=o.Z,p[i.Z.className]=i.Z,p[r.Z.className]=r.Z,p[n.Z.className]=n.Z,p[a.Z.className]=a.Z,p[c.Z.className]=c.Z,p[l.Z.className]=l.Z,p[d.Z.className]=d.Z,p[h.Z.className]=h.Z,p[u.Z.className]=u.Z;class g{static fromJSON(e,t){return p[e.__className].fromJSON(e,t)}}},"./packages/ckeditor5-engine/src/model/operation/renameoperation.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>a});var o=s("./packages/ckeditor5-engine/src/model/operation/operation.ts"),i=s("./packages/ckeditor5-engine/src/model/element.ts"),r=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),n=s("./packages/ckeditor5-engine/src/model/position.ts");class a extends o.Z{constructor(e,t,s,o){super(o),this.position=e,this.position.stickiness="toNext",this.oldName=t,this.newName=s}get type(){return"rename"}clone(){return new a(this.position.clone(),this.oldName,this.newName,this.baseVersion)}getReversed(){return new a(this.position.clone(),this.newName,this.oldName,this.baseVersion+1)}_validate(){const e=this.position.nodeAfter;if(!(e instanceof i.Z))throw new r.ZP("rename-operation-wrong-position",this);if(e.name!==this.oldName)throw new r.ZP("rename-operation-wrong-name",this)}_execute(){this.position.nodeAfter.name=this.newName}toJSON(){const e=super.toJSON();return e.position=this.position.toJSON(),e}static get className(){return"RenameOperation"}static fromJSON(e,t){return new a(n.ZP.fromJSON(e.position,t),e.oldName,e.newName,e.baseVersion)}}},"./packages/ckeditor5-engine/src/model/operation/rootattributeoperation.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./packages/ckeditor5-engine/src/model/operation/operation.ts"),i=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class r extends o.Z{constructor(e,t,s,o,i){super(i),this.root=e,this.key=t,this.oldValue=s,this.newValue=o}get type(){return null===this.oldValue?"addRootAttribute":null===this.newValue?"removeRootAttribute":"changeRootAttribute"}clone(){return new r(this.root,this.key,this.oldValue,this.newValue,this.baseVersion)}getReversed(){return new r(this.root,this.key,this.newValue,this.oldValue,this.baseVersion+1)}_validate(){if(this.root!=this.root.root||this.root.is("documentFragment"))throw new i.ZP("rootattribute-operation-not-a-root",this,{root:this.root,key:this.key});if(null!==this.oldValue&&this.root.getAttribute(this.key)!==this.oldValue)throw new i.ZP("rootattribute-operation-wrong-old-value",this,{root:this.root,key:this.key});if(null===this.oldValue&&null!==this.newValue&&this.root.hasAttribute(this.key))throw new i.ZP("rootattribute-operation-attribute-exists",this,{root:this.root,key:this.key})}_execute(){null!==this.newValue?this.root._setAttribute(this.key,this.newValue):this.root._removeAttribute(this.key)}toJSON(){const e=super.toJSON();return e.root=this.root.toJSON(),e}static get className(){return"RootAttributeOperation"}static fromJSON(e,t){if(!t.getRoot(e.root))throw new i.ZP("rootattribute-operation-fromjson-no-root",this,{rootName:e.root});return new r(t.getRoot(e.root),e.key,e.oldValue,e.newValue,e.baseVersion)}}},"./packages/ckeditor5-engine/src/model/operation/splitoperation.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>l});var o=s("./packages/ckeditor5-engine/src/model/operation/operation.ts"),i=s("./packages/ckeditor5-engine/src/model/operation/mergeoperation.ts"),r=s("./packages/ckeditor5-engine/src/model/position.ts"),n=s("./packages/ckeditor5-engine/src/model/range.ts"),a=s("./packages/ckeditor5-engine/src/model/operation/utils.ts"),c=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class l extends o.Z{constructor(e,t,s,o,i){super(i),this.splitPosition=e.clone(),this.splitPosition.stickiness="toNext",this.howMany=t,this.insertionPosition=s,this.graveyardPosition=o?o.clone():null,this.graveyardPosition&&(this.graveyardPosition.stickiness="toNext")}get type(){return"split"}get moveTargetPosition(){const e=this.insertionPosition.path.slice();return e.push(0),new r.ZP(this.insertionPosition.root,e)}get movedRange(){const e=this.splitPosition.getShiftedBy(Number.POSITIVE_INFINITY);return new n.Z(this.splitPosition,e)}clone(){return new l(this.splitPosition,this.howMany,this.insertionPosition,this.graveyardPosition,this.baseVersion)}getReversed(){const e=this.splitPosition.root.document.graveyard,t=new r.ZP(e,[0]);return new i.Z(this.moveTargetPosition,this.howMany,this.splitPosition,t,this.baseVersion+1)}_validate(){const e=this.splitPosition.parent,t=this.splitPosition.offset;if(!e||e.maxOffset<t)throw new c.ZP("split-operation-position-invalid",this);if(!e.parent)throw new c.ZP("split-operation-split-in-root",this);if(this.howMany!=e.maxOffset-this.splitPosition.offset)throw new c.ZP("split-operation-how-many-invalid",this);if(this.graveyardPosition&&!this.graveyardPosition.nodeAfter)throw new c.ZP("split-operation-graveyard-position-invalid",this)}_execute(){const e=this.splitPosition.parent;if(this.graveyardPosition)(0,a.XF)(n.Z._createFromPositionAndShift(this.graveyardPosition,1),this.insertionPosition);else{const t=e._clone();(0,a.fj)(this.insertionPosition,t)}const t=new n.Z(r.ZP._createAt(e,this.splitPosition.offset),r.ZP._createAt(e,e.maxOffset));(0,a.XF)(t,this.moveTargetPosition)}toJSON(){const e=super.toJSON();return e.splitPosition=this.splitPosition.toJSON(),e.insertionPosition=this.insertionPosition.toJSON(),this.graveyardPosition&&(e.graveyardPosition=this.graveyardPosition.toJSON()),e}static get className(){return"SplitOperation"}static getInsertionPosition(e){const t=e.path.slice(0,-1);return t[t.length-1]++,new r.ZP(e.root,t,"toPrevious")}static fromJSON(e,t){const s=r.ZP.fromJSON(e.splitPosition,t),o=r.ZP.fromJSON(e.insertionPosition,t),i=e.graveyardPosition?r.ZP.fromJSON(e.graveyardPosition,t):null;return new this(s,e.howMany,o,i,e.baseVersion)}}},"./packages/ckeditor5-engine/src/model/operation/transform.ts":(e,t,s)=>{"use strict";s.d(t,{R:()=>_});var o=s("./packages/ckeditor5-engine/src/model/operation/insertoperation.ts"),i=s("./packages/ckeditor5-engine/src/model/operation/attributeoperation.ts"),r=s("./packages/ckeditor5-engine/src/model/operation/renameoperation.ts"),n=s("./packages/ckeditor5-engine/src/model/operation/markeroperation.ts"),a=s("./packages/ckeditor5-engine/src/model/operation/moveoperation.ts"),c=s("./packages/ckeditor5-engine/src/model/operation/rootattributeoperation.ts"),l=s("./packages/ckeditor5-engine/src/model/operation/mergeoperation.ts"),d=s("./packages/ckeditor5-engine/src/model/operation/splitoperation.ts"),h=s("./packages/ckeditor5-engine/src/model/operation/nooperation.ts"),u=s("./packages/ckeditor5-engine/src/model/range.ts"),p=s("./packages/ckeditor5-engine/src/model/position.ts"),g=s("./packages/ckeditor5-utils/src/comparearrays.ts");const f=new Map;function m(e,t,s){let o=f.get(e);o||(o=new Map,f.set(e,o)),o.set(t,s)}function k(e){return[e]}function b(e,t,s={}){const o=function(e,t){const s=f.get(e);return s&&s.has(t)?s.get(t):k}(e.constructor,t.constructor);try{return o(e=e.clone(),t,s)}catch(e){throw e}}function _(e,t,s){e=e.slice(),t=t.slice();const o=new w(s.document,s.useRelations,s.forceWeakRemove);o.setOriginalOperations(e),o.setOriginalOperations(t);const i=o.originalOperations;if(0==e.length||0==t.length)return{operationsA:e,operationsB:t,originalOperations:i};const r=new WeakMap;for(const t of e)r.set(t,0);const n={nextBaseVersionA:e[e.length-1].baseVersion+1,nextBaseVersionB:t[t.length-1].baseVersion+1,originalOperationsACount:e.length,originalOperationsBCount:t.length};let a=0;for(;a<e.length;){const s=e[a],i=r.get(s);if(i==t.length){a++;continue}const n=t[i],c=b(s,n,o.getContext(s,n,!0)),l=b(n,s,o.getContext(n,s,!1));o.updateRelation(s,n),o.setOriginalOperations(c,s),o.setOriginalOperations(l,n);for(const e of c)r.set(e,i+l.length);e.splice(a,1,...c),t.splice(i,1,...l)}if(s.padWithNoOps){const s=e.length-n.originalOperationsACount,o=t.length-n.originalOperationsBCount;y(e,o-s),y(t,s-o)}return v(e,n.nextBaseVersionB),v(t,n.nextBaseVersionA),{operationsA:e,operationsB:t,originalOperations:i}}class w{constructor(e,t,s=!1){this.originalOperations=new Map,this._history=e.history,this._useRelations=t,this._forceWeakRemove=!!s,this._relations=new Map}setOriginalOperations(e,t=null){const s=t?this.originalOperations.get(t):null;for(const t of e)this.originalOperations.set(t,s||t)}updateRelation(e,t){if(e instanceof a.Z)t instanceof l.Z?e.targetPosition.isEqual(t.sourcePosition)||t.movedRange.containsPosition(e.targetPosition)?this._setRelation(e,t,"insertAtSource"):e.targetPosition.isEqual(t.deletionPosition)?this._setRelation(e,t,"insertBetween"):e.targetPosition.isAfter(t.sourcePosition)&&this._setRelation(e,t,"moveTargetAfter"):t instanceof a.Z&&(e.targetPosition.isEqual(t.sourcePosition)||e.targetPosition.isBefore(t.sourcePosition)?this._setRelation(e,t,"insertBefore"):this._setRelation(e,t,"insertAfter"));else if(e instanceof d.Z){if(t instanceof l.Z)e.splitPosition.isBefore(t.sourcePosition)&&this._setRelation(e,t,"splitBefore");else if(t instanceof a.Z)if(e.splitPosition.isEqual(t.sourcePosition)||e.splitPosition.isBefore(t.sourcePosition))this._setRelation(e,t,"splitBefore");else{const s=u.Z._createFromPositionAndShift(t.sourcePosition,t.howMany);if(e.splitPosition.hasSameParentAs(t.sourcePosition)&&s.containsPosition(e.splitPosition)){const o=s.end.offset-e.splitPosition.offset,i=e.splitPosition.offset-s.start.offset;this._setRelation(e,t,{howMany:o,offset:i})}}}else if(e instanceof l.Z)t instanceof l.Z?(e.targetPosition.isEqual(t.sourcePosition)||this._setRelation(e,t,"mergeTargetNotMoved"),e.sourcePosition.isEqual(t.targetPosition)&&this._setRelation(e,t,"mergeSourceNotMoved"),e.sourcePosition.isEqual(t.sourcePosition)&&this._setRelation(e,t,"mergeSameElement")):t instanceof d.Z&&e.sourcePosition.isEqual(t.splitPosition)&&this._setRelation(e,t,"splitAtSource");else if(e instanceof n.Z){const s=e.newRange;if(!s)return;if(t instanceof a.Z){const o=u.Z._createFromPositionAndShift(t.sourcePosition,t.howMany),i=o.containsPosition(s.start)||o.start.isEqual(s.start),r=o.containsPosition(s.end)||o.end.isEqual(s.end);!i&&!r||o.containsRange(s)||this._setRelation(e,t,{side:i?"left":"right",path:i?s.start.path.slice():s.end.path.slice()})}else if(t instanceof l.Z){const o=s.start.isEqual(t.targetPosition),i=s.start.isEqual(t.deletionPosition),r=s.end.isEqual(t.deletionPosition),n=s.end.isEqual(t.sourcePosition);(o||i||r||n)&&this._setRelation(e,t,{wasInLeftElement:o,wasStartBeforeMergedElement:i,wasEndBeforeMergedElement:r,wasInRightElement:n})}}}getContext(e,t,s){return{aIsStrong:s,aWasUndone:this._wasUndone(e),bWasUndone:this._wasUndone(t),abRelation:this._useRelations?this._getRelation(e,t):null,baRelation:this._useRelations?this._getRelation(t,e):null,forceWeakRemove:this._forceWeakRemove}}_wasUndone(e){const t=this.originalOperations.get(e);return t.wasUndone||this._history.isUndoneOperation(t)}_getRelation(e,t){const s=this.originalOperations.get(t),o=this._history.getUndoneOperation(s);if(!o)return null;const i=this.originalOperations.get(e),r=this._relations.get(i);return r&&r.get(o)||null}_setRelation(e,t,s){const o=this.originalOperations.get(e),i=this.originalOperations.get(t);let r=this._relations.get(o);r||(r=new Map,this._relations.set(o,r)),r.set(i,s)}}function v(e,t){for(const s of e)s.baseVersion=t++}function y(e,t){for(let s=0;s<t;s++)e.push(new h.Z(0))}function Z(e,t,s){const o=e.nodes.getNode(0).getAttribute(t);if(o==s)return null;const r=new u.Z(e.position,e.position.getShiftedBy(e.howMany));return new i.Z(r,t,o,s,0)}function P(e,t){return null===e.targetPosition._getTransformedByDeletion(t.sourcePosition,t.howMany)}function x(e,t){const s=[];for(let o=0;o<e.length;o++){const i=e[o],r=new a.Z(i.start,i.end.offset-i.start.offset,t,0);s.push(r);for(let t=o+1;t<e.length;t++)e[t]=e[t]._getTransformedByMove(r.sourcePosition,r.targetPosition,r.howMany)[0];t=t._getTransformedByMove(r.sourcePosition,r.targetPosition,r.howMany)}return s}m(i.Z,i.Z,((e,t,s)=>{if(e.key===t.key&&e.range.start.hasSameParentAs(t.range.start)){const o=e.range.getDifference(t.range).map((t=>new i.Z(t,e.key,e.oldValue,e.newValue,0))),r=e.range.getIntersection(t.range);return r&&s.aIsStrong&&o.push(new i.Z(r,t.key,t.newValue,e.newValue,0)),0==o.length?[new h.Z(0)]:o}return[e]})),m(i.Z,o.Z,((e,t)=>{if(e.range.start.hasSameParentAs(t.position)&&e.range.containsPosition(t.position)){const s=e.range._getTransformedByInsertion(t.position,t.howMany,!t.shouldReceiveAttributes).map((t=>new i.Z(t,e.key,e.oldValue,e.newValue,e.baseVersion)));if(t.shouldReceiveAttributes){const o=Z(t,e.key,e.oldValue);o&&s.unshift(o)}return s}return e.range=e.range._getTransformedByInsertion(t.position,t.howMany,!1)[0],[e]})),m(i.Z,l.Z,((e,t)=>{const s=[];e.range.start.hasSameParentAs(t.deletionPosition)&&(e.range.containsPosition(t.deletionPosition)||e.range.start.isEqual(t.deletionPosition))&&s.push(u.Z._createFromPositionAndShift(t.graveyardPosition,1));const o=e.range._getTransformedByMergeOperation(t);return o.isCollapsed||s.push(o),s.map((t=>new i.Z(t,e.key,e.oldValue,e.newValue,e.baseVersion)))})),m(i.Z,a.Z,((e,t)=>function(e,t){const s=u.Z._createFromPositionAndShift(t.sourcePosition,t.howMany);let o=null,i=[];s.containsRange(e,!0)?o=e:e.start.hasSameParentAs(s.start)?(i=e.getDifference(s),o=e.getIntersection(s)):i=[e];const r=[];for(let e of i){e=e._getTransformedByDeletion(t.sourcePosition,t.howMany);const s=t.getMovedRangeStart(),o=e.start.hasSameParentAs(s),i=e._getTransformedByInsertion(s,t.howMany,o);r.push(...i)}o&&r.push(o._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany,!1)[0]);return r}(e.range,t).map((t=>new i.Z(t,e.key,e.oldValue,e.newValue,e.baseVersion))))),m(i.Z,d.Z,((e,t)=>{if(e.range.end.isEqual(t.insertionPosition))return t.graveyardPosition||e.range.end.offset++,[e];if(e.range.start.hasSameParentAs(t.splitPosition)&&e.range.containsPosition(t.splitPosition)){const s=e.clone();return s.range=new u.Z(t.moveTargetPosition.clone(),e.range.end._getCombined(t.splitPosition,t.moveTargetPosition)),e.range.end=t.splitPosition.clone(),e.range.end.stickiness="toPrevious",[e,s]}return e.range=e.range._getTransformedBySplitOperation(t),[e]})),m(o.Z,i.Z,((e,t)=>{const s=[e];if(e.shouldReceiveAttributes&&e.position.hasSameParentAs(t.range.start)&&t.range.containsPosition(e.position)){const o=Z(e,t.key,t.newValue);o&&s.push(o)}return s})),m(o.Z,o.Z,((e,t,s)=>(e.position.isEqual(t.position)&&s.aIsStrong||(e.position=e.position._getTransformedByInsertOperation(t)),[e]))),m(o.Z,a.Z,((e,t)=>(e.position=e.position._getTransformedByMoveOperation(t),[e]))),m(o.Z,d.Z,((e,t)=>(e.position=e.position._getTransformedBySplitOperation(t),[e]))),m(o.Z,l.Z,((e,t)=>(e.position=e.position._getTransformedByMergeOperation(t),[e]))),m(n.Z,o.Z,((e,t)=>(e.oldRange&&(e.oldRange=e.oldRange._getTransformedByInsertOperation(t)[0]),e.newRange&&(e.newRange=e.newRange._getTransformedByInsertOperation(t)[0]),[e]))),m(n.Z,n.Z,((e,t,s)=>{if(e.name==t.name){if(!s.aIsStrong)return[new h.Z(0)];e.oldRange=t.newRange?t.newRange.clone():null}return[e]})),m(n.Z,l.Z,((e,t)=>(e.oldRange&&(e.oldRange=e.oldRange._getTransformedByMergeOperation(t)),e.newRange&&(e.newRange=e.newRange._getTransformedByMergeOperation(t)),[e]))),m(n.Z,a.Z,((e,t,s)=>{if(e.oldRange&&(e.oldRange=u.Z._createFromRanges(e.oldRange._getTransformedByMoveOperation(t))),e.newRange){if(s.abRelation){const o=u.Z._createFromRanges(e.newRange._getTransformedByMoveOperation(t));if("left"==s.abRelation.side&&t.targetPosition.isEqual(e.newRange.start))return e.newRange.end=o.end,e.newRange.start.path=s.abRelation.path,[e];if("right"==s.abRelation.side&&t.targetPosition.isEqual(e.newRange.end))return e.newRange.start=o.start,e.newRange.end.path=s.abRelation.path,[e]}e.newRange=u.Z._createFromRanges(e.newRange._getTransformedByMoveOperation(t))}return[e]})),m(n.Z,d.Z,((e,t,s)=>{if(e.oldRange&&(e.oldRange=e.oldRange._getTransformedBySplitOperation(t)),e.newRange){if(s.abRelation){const o=e.newRange._getTransformedBySplitOperation(t);return e.newRange.start.isEqual(t.splitPosition)&&s.abRelation.wasStartBeforeMergedElement?e.newRange.start=p.ZP._createAt(t.insertionPosition):e.newRange.start.isEqual(t.splitPosition)&&!s.abRelation.wasInLeftElement&&(e.newRange.start=p.ZP._createAt(t.moveTargetPosition)),e.newRange.end.isEqual(t.splitPosition)&&s.abRelation.wasInRightElement?e.newRange.end=p.ZP._createAt(t.moveTargetPosition):e.newRange.end.isEqual(t.splitPosition)&&s.abRelation.wasEndBeforeMergedElement?e.newRange.end=p.ZP._createAt(t.insertionPosition):e.newRange.end=o.end,[e]}e.newRange=e.newRange._getTransformedBySplitOperation(t)}return[e]})),m(l.Z,o.Z,((e,t)=>(e.sourcePosition.hasSameParentAs(t.position)&&(e.howMany+=t.howMany),e.sourcePosition=e.sourcePosition._getTransformedByInsertOperation(t),e.targetPosition=e.targetPosition._getTransformedByInsertOperation(t),[e]))),m(l.Z,l.Z,((e,t,s)=>{if(e.sourcePosition.isEqual(t.sourcePosition)&&e.targetPosition.isEqual(t.targetPosition)){if(s.bWasUndone){const s=t.graveyardPosition.path.slice();return s.push(0),e.sourcePosition=new p.ZP(t.graveyardPosition.root,s),e.howMany=0,[e]}return[new h.Z(0)]}if(e.sourcePosition.isEqual(t.sourcePosition)&&!e.targetPosition.isEqual(t.targetPosition)&&!s.bWasUndone&&"splitAtSource"!=s.abRelation){const o="$graveyard"==e.targetPosition.root.rootName,i="$graveyard"==t.targetPosition.root.rootName,r=o&&!i;if(i&&!o||!r&&s.aIsStrong){const s=t.targetPosition._getTransformedByMergeOperation(t),o=e.targetPosition._getTransformedByMergeOperation(t);return[new a.Z(s,e.howMany,o,0)]}return[new h.Z(0)]}return e.sourcePosition.hasSameParentAs(t.targetPosition)&&(e.howMany+=t.howMany),e.sourcePosition=e.sourcePosition._getTransformedByMergeOperation(t),e.targetPosition=e.targetPosition._getTransformedByMergeOperation(t),e.graveyardPosition.isEqual(t.graveyardPosition)&&s.aIsStrong||(e.graveyardPosition=e.graveyardPosition._getTransformedByMergeOperation(t)),[e]})),m(l.Z,a.Z,((e,t,s)=>{const o=u.Z._createFromPositionAndShift(t.sourcePosition,t.howMany);return"remove"==t.type&&!s.bWasUndone&&!s.forceWeakRemove&&e.deletionPosition.hasSameParentAs(t.sourcePosition)&&o.containsPosition(e.sourcePosition)?[new h.Z(0)]:(e.sourcePosition.hasSameParentAs(t.targetPosition)&&(e.howMany+=t.howMany),e.sourcePosition.hasSameParentAs(t.sourcePosition)&&(e.howMany-=t.howMany),e.sourcePosition=e.sourcePosition._getTransformedByMoveOperation(t),e.targetPosition=e.targetPosition._getTransformedByMoveOperation(t),e.graveyardPosition.isEqual(t.targetPosition)||(e.graveyardPosition=e.graveyardPosition._getTransformedByMoveOperation(t)),[e])})),m(l.Z,d.Z,((e,t,s)=>{if(t.graveyardPosition&&(e.graveyardPosition=e.graveyardPosition._getTransformedByDeletion(t.graveyardPosition,1),e.deletionPosition.isEqual(t.graveyardPosition)&&(e.howMany=t.howMany)),e.targetPosition.isEqual(t.splitPosition)){const o=0!=t.howMany,i=t.graveyardPosition&&e.deletionPosition.isEqual(t.graveyardPosition);if(o||i||"mergeTargetNotMoved"==s.abRelation)return e.sourcePosition=e.sourcePosition._getTransformedBySplitOperation(t),[e]}if(e.sourcePosition.isEqual(t.splitPosition)){if("mergeSourceNotMoved"==s.abRelation)return e.howMany=0,e.targetPosition=e.targetPosition._getTransformedBySplitOperation(t),[e];if("mergeSameElement"==s.abRelation||e.sourcePosition.offset>0)return e.sourcePosition=t.moveTargetPosition.clone(),e.targetPosition=e.targetPosition._getTransformedBySplitOperation(t),[e]}return e.sourcePosition.hasSameParentAs(t.splitPosition)&&(e.howMany=t.splitPosition.offset),e.sourcePosition=e.sourcePosition._getTransformedBySplitOperation(t),e.targetPosition=e.targetPosition._getTransformedBySplitOperation(t),[e]})),m(a.Z,o.Z,((e,t)=>{const s=u.Z._createFromPositionAndShift(e.sourcePosition,e.howMany)._getTransformedByInsertOperation(t,!1)[0];return e.sourcePosition=s.start,e.howMany=s.end.offset-s.start.offset,e.targetPosition.isEqual(t.position)||(e.targetPosition=e.targetPosition._getTransformedByInsertOperation(t)),[e]})),m(a.Z,a.Z,((e,t,s)=>{const o=u.Z._createFromPositionAndShift(e.sourcePosition,e.howMany),i=u.Z._createFromPositionAndShift(t.sourcePosition,t.howMany);let r,n=s.aIsStrong,a=!s.aIsStrong;if("insertBefore"==s.abRelation||"insertAfter"==s.baRelation?a=!0:"insertAfter"!=s.abRelation&&"insertBefore"!=s.baRelation||(a=!1),r=e.targetPosition.isEqual(t.targetPosition)&&a?e.targetPosition._getTransformedByDeletion(t.sourcePosition,t.howMany):e.targetPosition._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany),P(e,t)&&P(t,e))return[t.getReversed()];if(o.containsPosition(t.targetPosition)&&o.containsRange(i,!0))return o.start=o.start._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany),o.end=o.end._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany),x([o],r);if(i.containsPosition(e.targetPosition)&&i.containsRange(o,!0))return o.start=o.start._getCombined(t.sourcePosition,t.getMovedRangeStart()),o.end=o.end._getCombined(t.sourcePosition,t.getMovedRangeStart()),x([o],r);const c=(0,g.Z)(e.sourcePosition.getParentPath(),t.sourcePosition.getParentPath());if("prefix"==c||"extension"==c)return o.start=o.start._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany),o.end=o.end._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany),x([o],r);"remove"!=e.type||"remove"==t.type||s.aWasUndone||s.forceWeakRemove?"remove"==e.type||"remove"!=t.type||s.bWasUndone||s.forceWeakRemove||(n=!1):n=!0;const l=[],d=o.getDifference(i);for(const e of d){e.start=e.start._getTransformedByDeletion(t.sourcePosition,t.howMany),e.end=e.end._getTransformedByDeletion(t.sourcePosition,t.howMany);const s="same"==(0,g.Z)(e.start.getParentPath(),t.getMovedRangeStart().getParentPath()),o=e._getTransformedByInsertion(t.getMovedRangeStart(),t.howMany,s);l.push(...o)}const p=o.getIntersection(i);return null!==p&&n&&(p.start=p.start._getCombined(t.sourcePosition,t.getMovedRangeStart()),p.end=p.end._getCombined(t.sourcePosition,t.getMovedRangeStart()),0===l.length?l.push(p):1==l.length?i.start.isBefore(o.start)||i.start.isEqual(o.start)?l.unshift(p):l.push(p):l.splice(1,0,p)),0===l.length?[new h.Z(e.baseVersion)]:x(l,r)})),m(a.Z,d.Z,((e,t,s)=>{let o=e.targetPosition.clone();e.targetPosition.isEqual(t.insertionPosition)&&t.graveyardPosition&&"moveTargetAfter"!=s.abRelation||(o=e.targetPosition._getTransformedBySplitOperation(t));const i=u.Z._createFromPositionAndShift(e.sourcePosition,e.howMany);if(i.end.isEqual(t.insertionPosition))return t.graveyardPosition||e.howMany++,e.targetPosition=o,[e];if(i.start.hasSameParentAs(t.splitPosition)&&i.containsPosition(t.splitPosition)){let e=new u.Z(t.splitPosition,i.end);e=e._getTransformedBySplitOperation(t);return x([new u.Z(i.start,t.splitPosition),e],o)}e.targetPosition.isEqual(t.splitPosition)&&"insertAtSource"==s.abRelation&&(o=t.moveTargetPosition),e.targetPosition.isEqual(t.insertionPosition)&&"insertBetween"==s.abRelation&&(o=e.targetPosition);const r=[i._getTransformedBySplitOperation(t)];if(t.graveyardPosition){const o=i.start.isEqual(t.graveyardPosition)||i.containsPosition(t.graveyardPosition);e.howMany>1&&o&&!s.aWasUndone&&r.push(u.Z._createFromPositionAndShift(t.insertionPosition,1))}return x(r,o)})),m(a.Z,l.Z,((e,t,s)=>{const o=u.Z._createFromPositionAndShift(e.sourcePosition,e.howMany);if(t.deletionPosition.hasSameParentAs(e.sourcePosition)&&o.containsPosition(t.sourcePosition))if("remove"!=e.type||s.forceWeakRemove){if(1==e.howMany)return s.bWasUndone?(e.sourcePosition=t.graveyardPosition.clone(),e.targetPosition=e.targetPosition._getTransformedByMergeOperation(t),[e]):[new h.Z(0)]}else if(!s.aWasUndone){const s=[];let o=t.graveyardPosition.clone(),i=t.targetPosition._getTransformedByMergeOperation(t);e.howMany>1&&(s.push(new a.Z(e.sourcePosition,e.howMany-1,e.targetPosition,0)),o=o._getTransformedByMove(e.sourcePosition,e.targetPosition,e.howMany-1),i=i._getTransformedByMove(e.sourcePosition,e.targetPosition,e.howMany-1));const r=t.deletionPosition._getCombined(e.sourcePosition,e.targetPosition),n=new a.Z(o,1,r,0),c=n.getMovedRangeStart().path.slice();c.push(0);const l=new p.ZP(n.targetPosition.root,c);i=i._getTransformedByMove(o,r,1);const d=new a.Z(i,t.howMany,l,0);return s.push(n),s.push(d),s}const i=u.Z._createFromPositionAndShift(e.sourcePosition,e.howMany)._getTransformedByMergeOperation(t);return e.sourcePosition=i.start,e.howMany=i.end.offset-i.start.offset,e.targetPosition=e.targetPosition._getTransformedByMergeOperation(t),[e]})),m(r.Z,o.Z,((e,t)=>(e.position=e.position._getTransformedByInsertOperation(t),[e]))),m(r.Z,l.Z,((e,t)=>e.position.isEqual(t.deletionPosition)?(e.position=t.graveyardPosition.clone(),e.position.stickiness="toNext",[e]):(e.position=e.position._getTransformedByMergeOperation(t),[e]))),m(r.Z,a.Z,((e,t)=>(e.position=e.position._getTransformedByMoveOperation(t),[e]))),m(r.Z,r.Z,((e,t,s)=>{if(e.position.isEqual(t.position)){if(!s.aIsStrong)return[new h.Z(0)];e.oldName=t.newName}return[e]})),m(r.Z,d.Z,((e,t)=>{const s=e.position.path,o=t.splitPosition.getParentPath();if("same"==(0,g.Z)(s,o)&&!t.graveyardPosition){const t=new r.Z(e.position.getShiftedBy(1),e.oldName,e.newName,0);return[e,t]}return e.position=e.position._getTransformedBySplitOperation(t),[e]})),m(c.Z,c.Z,((e,t,s)=>{if(e.root===t.root&&e.key===t.key){if(!s.aIsStrong||e.newValue===t.newValue)return[new h.Z(0)];e.oldValue=t.newValue}return[e]})),m(d.Z,o.Z,((e,t)=>(e.splitPosition.hasSameParentAs(t.position)&&e.splitPosition.offset<t.position.offset&&(e.howMany+=t.howMany),e.splitPosition=e.splitPosition._getTransformedByInsertOperation(t),e.insertionPosition=e.insertionPosition._getTransformedByInsertOperation(t),[e]))),m(d.Z,l.Z,((e,t,s)=>{if(!e.graveyardPosition&&!s.bWasUndone&&e.splitPosition.hasSameParentAs(t.sourcePosition)){const s=t.graveyardPosition.path.slice();s.push(0);const o=new p.ZP(t.graveyardPosition.root,s),i=d.Z.getInsertionPosition(new p.ZP(t.graveyardPosition.root,s)),r=new d.Z(o,0,i,null,0);return e.splitPosition=e.splitPosition._getTransformedByMergeOperation(t),e.insertionPosition=d.Z.getInsertionPosition(e.splitPosition),e.graveyardPosition=r.insertionPosition.clone(),e.graveyardPosition.stickiness="toNext",[r,e]}return e.splitPosition.hasSameParentAs(t.deletionPosition)&&!e.splitPosition.isAfter(t.deletionPosition)&&e.howMany--,e.splitPosition.hasSameParentAs(t.targetPosition)&&(e.howMany+=t.howMany),e.splitPosition=e.splitPosition._getTransformedByMergeOperation(t),e.insertionPosition=d.Z.getInsertionPosition(e.splitPosition),e.graveyardPosition&&(e.graveyardPosition=e.graveyardPosition._getTransformedByMergeOperation(t)),[e]})),m(d.Z,a.Z,((e,t,s)=>{const o=u.Z._createFromPositionAndShift(t.sourcePosition,t.howMany);if(e.graveyardPosition){const i=o.start.isEqual(e.graveyardPosition)||o.containsPosition(e.graveyardPosition);if(!s.bWasUndone&&i){const s=e.splitPosition._getTransformedByMoveOperation(t),o=e.graveyardPosition._getTransformedByMoveOperation(t),i=o.path.slice();i.push(0);const r=new p.ZP(o.root,i);return[new a.Z(s,e.howMany,r,0)]}e.graveyardPosition=e.graveyardPosition._getTransformedByMoveOperation(t)}const i=e.splitPosition.isEqual(t.targetPosition);if(i&&("insertAtSource"==s.baRelation||"splitBefore"==s.abRelation))return e.howMany+=t.howMany,e.splitPosition=e.splitPosition._getTransformedByDeletion(t.sourcePosition,t.howMany),e.insertionPosition=d.Z.getInsertionPosition(e.splitPosition),[e];if(i&&s.abRelation&&s.abRelation.howMany){const{howMany:t,offset:o}=s.abRelation;return e.howMany+=t,e.splitPosition=e.splitPosition.getShiftedBy(o),[e]}if(e.splitPosition.hasSameParentAs(t.sourcePosition)&&o.containsPosition(e.splitPosition)){const s=t.howMany-(e.splitPosition.offset-t.sourcePosition.offset);return e.howMany-=s,e.splitPosition.hasSameParentAs(t.targetPosition)&&e.splitPosition.offset<t.targetPosition.offset&&(e.howMany+=t.howMany),e.splitPosition=t.sourcePosition.clone(),e.insertionPosition=d.Z.getInsertionPosition(e.splitPosition),[e]}return t.sourcePosition.isEqual(t.targetPosition)||(e.splitPosition.hasSameParentAs(t.sourcePosition)&&e.splitPosition.offset<=t.sourcePosition.offset&&(e.howMany-=t.howMany),e.splitPosition.hasSameParentAs(t.targetPosition)&&e.splitPosition.offset<t.targetPosition.offset&&(e.howMany+=t.howMany)),e.splitPosition.stickiness="toNone",e.splitPosition=e.splitPosition._getTransformedByMoveOperation(t),e.splitPosition.stickiness="toNext",e.graveyardPosition?e.insertionPosition=e.insertionPosition._getTransformedByMoveOperation(t):e.insertionPosition=d.Z.getInsertionPosition(e.splitPosition),[e]})),m(d.Z,d.Z,((e,t,s)=>{if(e.splitPosition.isEqual(t.splitPosition)){if(!e.graveyardPosition&&!t.graveyardPosition)return[new h.Z(0)];if(e.graveyardPosition&&t.graveyardPosition&&e.graveyardPosition.isEqual(t.graveyardPosition))return[new h.Z(0)];if("splitBefore"==s.abRelation)return e.howMany=0,e.graveyardPosition=e.graveyardPosition._getTransformedBySplitOperation(t),[e]}if(e.graveyardPosition&&t.graveyardPosition&&e.graveyardPosition.isEqual(t.graveyardPosition)){const o="$graveyard"==e.splitPosition.root.rootName,i="$graveyard"==t.splitPosition.root.rootName,r=o&&!i;if(i&&!o||!r&&s.aIsStrong){const s=[];return t.howMany&&s.push(new a.Z(t.moveTargetPosition,t.howMany,t.splitPosition,0)),e.howMany&&s.push(new a.Z(e.splitPosition,e.howMany,e.moveTargetPosition,0)),s}return[new h.Z(0)]}if(e.graveyardPosition&&(e.graveyardPosition=e.graveyardPosition._getTransformedBySplitOperation(t)),e.splitPosition.isEqual(t.insertionPosition)&&"splitBefore"==s.abRelation)return e.howMany++,[e];if(t.splitPosition.isEqual(e.insertionPosition)&&"splitBefore"==s.baRelation){const s=t.insertionPosition.path.slice();s.push(0);const o=new p.ZP(t.insertionPosition.root,s);return[e,new a.Z(e.insertionPosition,1,o,0)]}return e.splitPosition.hasSameParentAs(t.splitPosition)&&e.splitPosition.offset<t.splitPosition.offset&&(e.howMany-=t.howMany),e.splitPosition=e.splitPosition._getTransformedBySplitOperation(t),e.insertionPosition=d.Z.getInsertionPosition(e.splitPosition),[e]}))},"./packages/ckeditor5-engine/src/model/operation/utils.ts":(e,t,s)=>{"use strict";s.d(t,{So:()=>p,X9:()=>d,XF:()=>h,fj:()=>l,pX:()=>u});var o=s("./packages/ckeditor5-engine/src/model/node.ts"),i=s("./packages/ckeditor5-engine/src/model/range.ts"),r=s("./packages/ckeditor5-engine/src/model/text.ts"),n=s("./packages/ckeditor5-engine/src/model/textproxy.ts"),a=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),c=s("./packages/ckeditor5-utils/src/isiterable.ts");function l(e,t){const s=p(t),o=s.reduce(((e,t)=>e+t.offsetSize),0),r=e.parent;f(e);const n=e.index;return r._insertChild(n,s),g(r,n+s.length),g(r,n),new i.Z(e,e.getShiftedBy(o))}function d(e){if(!e.isFlat)throw new a.ZP("operation-utils-remove-range-not-flat",this);const t=e.start.parent;f(e.start),f(e.end);const s=t._removeChildren(e.start.index,e.end.index-e.start.index);return g(t,e.start.index),s}function h(e,t){if(!e.isFlat)throw new a.ZP("operation-utils-move-range-not-flat",this);const s=d(e);return l(t=t._getTransformedByDeletion(e.start,e.end.offset-e.start.offset),s)}function u(e,t,s){f(e.start),f(e.end);for(const o of e.getItems({shallow:!0})){const e=o.is("$textProxy")?o.textNode:o;null!==s?e._setAttribute(t,s):e._removeAttribute(t),g(e.parent,e.index)}g(e.end.parent,e.end.index)}function p(e){const t=[];!function e(s){if("string"==typeof s)t.push(new r.Z(s));else if(s instanceof n.Z)t.push(new r.Z(s.data,s.getAttributes()));else if(s instanceof o.Z)t.push(s);else if((0,c.Z)(s))for(const t of s)e(t)}(e);for(let e=1;e<t.length;e++){const s=t[e],o=t[e-1];s instanceof r.Z&&o instanceof r.Z&&m(s,o)&&(t.splice(e-1,2,new r.Z(o.data+s.data,o.getAttributes())),e--)}return t}function g(e,t){const s=e.getChild(t-1),o=e.getChild(t);if(s&&o&&s.is("$text")&&o.is("$text")&&m(s,o)){const i=new r.Z(s.data+o.data,s.getAttributes());e._removeChildren(t-1,2),e._insertChild(t-1,i)}}function f(e){const t=e.textNode,s=e.parent;if(t){const o=e.offset-t.startOffset,i=t.index;s._removeChildren(i,1);const n=new r.Z(t.data.substr(0,o),t.getAttributes()),a=new r.Z(t.data.substr(o),t.getAttributes());s._insertChild(i,[n,a])}}function m(e,t){const s=e.getAttributes(),o=t.getAttributes();for(const e of s){if(e[1]!==t.getAttribute(e[0]))return!1;o.next()}return o.next().done}},"./packages/ckeditor5-engine/src/model/position.ts":(e,t,s)=>{"use strict";s.d(t,{Rt:()=>c,Ux:()=>l,YV:()=>d,ZP:()=>a});var o=s("./packages/ckeditor5-engine/src/model/typecheckable.ts"),i=s("./packages/ckeditor5-engine/src/model/treewalker.ts"),r=s("./packages/ckeditor5-utils/src/comparearrays.ts"),n=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");s("./packages/ckeditor5-utils/src/version.ts");class a extends o.Z{constructor(e,t,s="toNone"){if(super(),!e.is("element")&&!e.is("documentFragment"))throw new n.ZP("model-position-root-invalid",e);if(!(t instanceof Array)||0===t.length)throw new n.ZP("model-position-path-incorrect-format",e,{path:t});e.is("rootElement")?t=t.slice():(t=[...e.getPath(),...t],e=e.root),this.root=e,this.path=t,this.stickiness=s}get offset(){return this.path[this.path.length-1]}set offset(e){this.path[this.path.length-1]=e}get parent(){let e=this.root;for(let t=0;t<this.path.length-1;t++)if(e=e.getChild(e.offsetToIndex(this.path[t])),!e)throw new n.ZP("model-position-path-incorrect",this,{position:this});if(e.is("$text"))throw new n.ZP("model-position-path-incorrect",this,{position:this});return e}get index(){return this.parent.offsetToIndex(this.offset)}get textNode(){return c(this,this.parent)}get nodeAfter(){const e=this.parent;return l(this,e,c(this,e))}get nodeBefore(){const e=this.parent;return d(this,e,c(this,e))}get isAtStart(){return 0===this.offset}get isAtEnd(){return this.offset==this.parent.maxOffset}compareWith(e){if(this.root!=e.root)return"different";const t=(0,r.Z)(this.path,e.path);switch(t){case"same":return"same";case"prefix":return"before";case"extension":return"after";default:return this.path[t]<e.path[t]?"before":"after"}}getLastMatchingPosition(e,t={}){t.startPosition=this;const s=new i.Z(t);return s.skip(e),s.position}getParentPath(){return this.path.slice(0,-1)}getAncestors(){const e=this.parent;return e.is("documentFragment")?[e]:e.getAncestors({includeSelf:!0})}findAncestor(e){const t=this.parent;return t.is("element")?t.findAncestor(e,{includeSelf:!0}):null}getCommonPath(e){if(this.root!=e.root)return[];const t=(0,r.Z)(this.path,e.path),s="string"==typeof t?Math.min(this.path.length,e.path.length):t;return this.path.slice(0,s)}getCommonAncestor(e){const t=this.getAncestors(),s=e.getAncestors();let o=0;for(;t[o]==s[o]&&t[o];)o++;return 0===o?null:t[o-1]}getShiftedBy(e){const t=this.clone(),s=t.offset+e;return t.offset=s<0?0:s,t}isAfter(e){return"after"==this.compareWith(e)}isBefore(e){return"before"==this.compareWith(e)}isEqual(e){return"same"==this.compareWith(e)}isTouching(e){let t=null,s=null;switch(this.compareWith(e)){case"same":return!0;case"before":t=a._createAt(this),s=a._createAt(e);break;case"after":t=a._createAt(e),s=a._createAt(this);break;default:return!1}let o=t.parent;for(;t.path.length+s.path.length;){if(t.isEqual(s))return!0;if(t.path.length>s.path.length){if(t.offset!==o.maxOffset)return!1;t.path=t.path.slice(0,-1),o=o.parent,t.offset++}else{if(0!==s.offset)return!1;s.path=s.path.slice(0,-1)}}throw new Error("unreachable code")}hasSameParentAs(e){if(this.root!==e.root)return!1;const t=this.getParentPath(),s=e.getParentPath();return"same"==(0,r.Z)(t,s)}getTransformedByOperation(e){let t;switch(e.type){case"insert":t=this._getTransformedByInsertOperation(e);break;case"move":case"remove":case"reinsert":t=this._getTransformedByMoveOperation(e);break;case"split":t=this._getTransformedBySplitOperation(e);break;case"merge":t=this._getTransformedByMergeOperation(e);break;default:t=a._createAt(this)}return t}_getTransformedByInsertOperation(e){return this._getTransformedByInsertion(e.position,e.howMany)}_getTransformedByMoveOperation(e){return this._getTransformedByMove(e.sourcePosition,e.targetPosition,e.howMany)}_getTransformedBySplitOperation(e){const t=e.movedRange;return t.containsPosition(this)||t.start.isEqual(this)&&"toNext"==this.stickiness?this._getCombined(e.splitPosition,e.moveTargetPosition):e.graveyardPosition?this._getTransformedByMove(e.graveyardPosition,e.insertionPosition,1):this._getTransformedByInsertion(e.insertionPosition,1)}_getTransformedByMergeOperation(e){const t=e.movedRange;let s;return t.containsPosition(this)||t.start.isEqual(this)?(s=this._getCombined(e.sourcePosition,e.targetPosition),e.sourcePosition.isBefore(e.targetPosition)&&(s=s._getTransformedByDeletion(e.deletionPosition,1))):s=this.isEqual(e.deletionPosition)?a._createAt(e.deletionPosition):this._getTransformedByMove(e.deletionPosition,e.graveyardPosition,1),s}_getTransformedByDeletion(e,t){const s=a._createAt(this);if(this.root!=e.root)return s;if("same"==(0,r.Z)(e.getParentPath(),this.getParentPath())){if(e.offset<this.offset){if(e.offset+t>this.offset)return null;s.offset-=t}}else if("prefix"==(0,r.Z)(e.getParentPath(),this.getParentPath())){const o=e.path.length-1;if(e.offset<=this.path[o]){if(e.offset+t>this.path[o])return null;s.path[o]-=t}}return s}_getTransformedByInsertion(e,t){const s=a._createAt(this);if(this.root!=e.root)return s;if("same"==(0,r.Z)(e.getParentPath(),this.getParentPath()))(e.offset<this.offset||e.offset==this.offset&&"toPrevious"!=this.stickiness)&&(s.offset+=t);else if("prefix"==(0,r.Z)(e.getParentPath(),this.getParentPath())){const o=e.path.length-1;e.offset<=this.path[o]&&(s.path[o]+=t)}return s}_getTransformedByMove(e,t,s){if(t=t._getTransformedByDeletion(e,s),e.isEqual(t))return a._createAt(this);const o=this._getTransformedByDeletion(e,s);return null===o||e.isEqual(this)&&"toNext"==this.stickiness||e.getShiftedBy(s).isEqual(this)&&"toPrevious"==this.stickiness?this._getCombined(e,t):o._getTransformedByInsertion(t,s)}_getCombined(e,t){const s=e.path.length-1,o=a._createAt(t);return o.stickiness=this.stickiness,o.offset=o.offset+this.path[s]-e.offset,o.path=[...o.path,...this.path.slice(s+1)],o}toJSON(){return{root:this.root.toJSON(),path:Array.from(this.path),stickiness:this.stickiness}}clone(){return new this.constructor(this.root,this.path,this.stickiness)}static _createAt(e,t,s="toNone"){if(e instanceof a)return new a(e.root,e.path,e.stickiness);{const o=e;if("end"==t)t=o.maxOffset;else{if("before"==t)return this._createBefore(o,s);if("after"==t)return this._createAfter(o,s);if(0!==t&&!t)throw new n.ZP("model-createpositionat-offset-required",[this,e])}if(!o.is("element")&&!o.is("documentFragment"))throw new n.ZP("model-position-parent-incorrect",[this,e]);const i=o.getPath();return i.push(t),new this(o.root,i,s)}}static _createAfter(e,t){if(!e.parent)throw new n.ZP("model-position-after-root",[this,e],{root:e});return this._createAt(e.parent,e.endOffset,t)}static _createBefore(e,t){if(!e.parent)throw new n.ZP("model-position-before-root",e,{root:e});return this._createAt(e.parent,e.startOffset,t)}static fromJSON(e,t){if("$graveyard"===e.root){const s=new a(t.graveyard,e.path);return s.stickiness=e.stickiness,s}if(!t.getRoot(e.root))throw new n.ZP("model-position-fromjson-no-root",t,{rootName:e.root});return new a(t.getRoot(e.root),e.path,e.stickiness)}}function c(e,t){const s=t.getChild(t.offsetToIndex(e.offset));return s&&s.is("$text")&&s.startOffset<e.offset?s:null}function l(e,t,s){return null!==s?null:t.getChild(t.offsetToIndex(e.offset))}function d(e,t,s){return null!==s?null:t.getChild(t.offsetToIndex(e.offset)-1)}a.prototype.is=function(e){return"position"===e||"model:position"===e}},"./packages/ckeditor5-engine/src/model/range.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>c});var o=s("./packages/ckeditor5-engine/src/model/typecheckable.ts"),i=s("./packages/ckeditor5-engine/src/model/position.ts"),r=s("./packages/ckeditor5-engine/src/model/treewalker.ts"),n=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),a=s("./packages/ckeditor5-utils/src/comparearrays.ts");class c extends o.Z{constructor(e,t){super(),this.start=i.ZP._createAt(e),this.end=t?i.ZP._createAt(t):i.ZP._createAt(e),this.start.stickiness=this.isCollapsed?"toNone":"toNext",this.end.stickiness=this.isCollapsed?"toNone":"toPrevious"}*[Symbol.iterator](){yield*new r.Z({boundaries:this,ignoreElementEnd:!0})}get isCollapsed(){return this.start.isEqual(this.end)}get isFlat(){const e=this.start.getParentPath(),t=this.end.getParentPath();return"same"==(0,a.Z)(e,t)}get root(){return this.start.root}containsPosition(e){return e.isAfter(this.start)&&e.isBefore(this.end)}containsRange(e,t=!1){e.isCollapsed&&(t=!1);const s=this.containsPosition(e.start)||t&&this.start.isEqual(e.start),o=this.containsPosition(e.end)||t&&this.end.isEqual(e.end);return s&&o}containsItem(e){const t=i.ZP._createBefore(e);return this.containsPosition(t)||this.start.isEqual(t)}isEqual(e){return this.start.isEqual(e.start)&&this.end.isEqual(e.end)}isIntersecting(e){return this.start.isBefore(e.end)&&this.end.isAfter(e.start)}getDifference(e){const t=[];return this.isIntersecting(e)?(this.containsPosition(e.start)&&t.push(new c(this.start,e.start)),this.containsPosition(e.end)&&t.push(new c(e.end,this.end))):t.push(new c(this.start,this.end)),t}getIntersection(e){if(this.isIntersecting(e)){let t=this.start,s=this.end;return this.containsPosition(e.start)&&(t=e.start),this.containsPosition(e.end)&&(s=e.end),new c(t,s)}return null}getJoined(e,t=!1){let s=this.isIntersecting(e);if(s||(s=this.start.isBefore(e.start)?t?this.end.isTouching(e.start):this.end.isEqual(e.start):t?e.end.isTouching(this.start):e.end.isEqual(this.start)),!s)return null;let o=this.start,i=this.end;return e.start.isBefore(o)&&(o=e.start),e.end.isAfter(i)&&(i=e.end),new c(o,i)}getMinimalFlatRanges(){const e=[],t=this.start.getCommonPath(this.end).length,s=i.ZP._createAt(this.start);let o=s.parent;for(;s.path.length>t+1;){const t=o.maxOffset-s.offset;0!==t&&e.push(new c(s,s.getShiftedBy(t))),s.path=s.path.slice(0,-1),s.offset++,o=o.parent}for(;s.path.length<=this.end.path.length;){const t=this.end.path[s.path.length-1],o=t-s.offset;0!==o&&e.push(new c(s,s.getShiftedBy(o))),s.offset=t,s.path.push(0)}return e}getWalker(e={}){return e.boundaries=this,new r.Z(e)}*getItems(e={}){e.boundaries=this,e.ignoreElementEnd=!0;const t=new r.Z(e);for(const e of t)yield e.item}*getPositions(e={}){e.boundaries=this;const t=new r.Z(e);yield t.position;for(const e of t)yield e.nextPosition}getTransformedByOperation(e){switch(e.type){case"insert":return this._getTransformedByInsertOperation(e);case"move":case"remove":case"reinsert":return this._getTransformedByMoveOperation(e);case"split":return[this._getTransformedBySplitOperation(e)];case"merge":return[this._getTransformedByMergeOperation(e)]}return[new c(this.start,this.end)]}getTransformedByOperations(e){const t=[new c(this.start,this.end)];for(const s of e)for(let e=0;e<t.length;e++){const o=t[e].getTransformedByOperation(s);t.splice(e,1,...o),e+=o.length-1}for(let e=0;e<t.length;e++){const s=t[e];for(let o=e+1;o<t.length;o++){const e=t[o];(s.containsRange(e)||e.containsRange(s)||s.isEqual(e))&&t.splice(o,1)}}return t}getCommonAncestor(){return this.start.getCommonAncestor(this.end)}getContainedElement(){if(this.isCollapsed)return null;const e=this.start.nodeAfter,t=this.end.nodeBefore;return e&&e.is("element")&&e===t?e:null}toJSON(){return{start:this.start.toJSON(),end:this.end.toJSON()}}clone(){return new this.constructor(this.start,this.end)}_getTransformedByInsertOperation(e,t=!1){return this._getTransformedByInsertion(e.position,e.howMany,t)}_getTransformedByMoveOperation(e,t=!1){const s=e.sourcePosition,o=e.howMany,i=e.targetPosition;return this._getTransformedByMove(s,i,o,t)}_getTransformedBySplitOperation(e){const t=this.start._getTransformedBySplitOperation(e);let s=this.end._getTransformedBySplitOperation(e);return this.end.isEqual(e.insertionPosition)&&(s=this.end.getShiftedBy(1)),t.root!=s.root&&(s=this.end.getShiftedBy(-1)),new c(t,s)}_getTransformedByMergeOperation(e){if(this.start.isEqual(e.targetPosition)&&this.end.isEqual(e.deletionPosition))return new c(this.start);let t=this.start._getTransformedByMergeOperation(e),s=this.end._getTransformedByMergeOperation(e);return t.root!=s.root&&(s=this.end.getShiftedBy(-1)),t.isAfter(s)?(e.sourcePosition.isBefore(e.targetPosition)?(t=i.ZP._createAt(s),t.offset=0):(e.deletionPosition.isEqual(t)||(s=e.deletionPosition),t=e.targetPosition),new c(t,s)):new c(t,s)}_getTransformedByInsertion(e,t,s=!1){if(s&&this.containsPosition(e))return[new c(this.start,e),new c(e.getShiftedBy(t),this.end._getTransformedByInsertion(e,t))];{const s=new c(this.start,this.end);return s.start=s.start._getTransformedByInsertion(e,t),s.end=s.end._getTransformedByInsertion(e,t),[s]}}_getTransformedByMove(e,t,s,o=!1){if(this.isCollapsed){const o=this.start._getTransformedByMove(e,t,s);return[new c(o)]}const i=c._createFromPositionAndShift(e,s),r=t._getTransformedByDeletion(e,s);if(this.containsPosition(t)&&!o&&(i.containsPosition(this.start)||i.containsPosition(this.end))){const o=this.start._getTransformedByMove(e,t,s),i=this.end._getTransformedByMove(e,t,s);return[new c(o,i)]}let n;const a=this.getDifference(i);let l=null;const d=this.getIntersection(i);if(1==a.length?l=new c(a[0].start._getTransformedByDeletion(e,s),a[0].end._getTransformedByDeletion(e,s)):2==a.length&&(l=new c(this.start,this.end._getTransformedByDeletion(e,s))),n=l?l._getTransformedByInsertion(r,s,null!==d||o):[],d){const e=new c(d.start._getCombined(i.start,r),d.end._getCombined(i.start,r));2==n.length?n.splice(1,0,e):n.push(e)}return n}_getTransformedByDeletion(e,t){let s=this.start._getTransformedByDeletion(e,t),o=this.end._getTransformedByDeletion(e,t);return null==s&&null==o?null:(null==s&&(s=e),null==o&&(o=e),new c(s,o))}static _createFromPositionAndShift(e,t){const s=e,o=e.getShiftedBy(t);return t>0?new this(s,o):new this(o,s)}static _createIn(e){return new this(i.ZP._createAt(e,0),i.ZP._createAt(e,e.maxOffset))}static _createOn(e){return this._createFromPositionAndShift(i.ZP._createBefore(e),e.offsetSize)}static _createFromRanges(e){if(0===e.length)throw new n.ZP("range-create-from-ranges-empty-array",null);if(1==e.length)return e[0].clone();const t=e[0];e.sort(((e,t)=>e.start.isAfter(t.start)?1:-1));const s=e.indexOf(t),o=new this(t.start,t.end);if(s>0)for(let t=s-1;e[t].end.isEqual(o.start);t++)o.start=i.ZP._createAt(e[t].start);for(let t=s+1;t<e.length&&e[t].start.isEqual(o.end);t++)o.end=i.ZP._createAt(e[t].end);return o}static fromJSON(e,t){return new this(i.ZP.fromJSON(e.start,t),i.ZP.fromJSON(e.end,t))}}c.prototype.is=function(e){return"range"===e||"model:range"===e}},"./packages/ckeditor5-engine/src/model/schema.ts":(e,t,s)=>{"use strict";s.d(t,{G:()=>h,Z:()=>d});var o=s("./packages/ckeditor5-engine/src/model/element.ts"),i=s("./packages/ckeditor5-engine/src/model/position.ts"),r=s("./packages/ckeditor5-engine/src/model/range.ts"),n=s("./packages/ckeditor5-engine/src/model/text.ts"),a=s("./packages/ckeditor5-engine/src/model/treewalker.ts"),c=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),l=s("./packages/ckeditor5-utils/src/observablemixin.ts");class d extends l.y{constructor(){super(),this._sourceDefinitions={},this._attributeProperties={},this.decorate("checkChild"),this.decorate("checkAttribute"),this.on("checkAttribute",((e,t)=>{t[0]=new h(t[0])}),{priority:"highest"}),this.on("checkChild",((e,t)=>{t[0]=new h(t[0]),t[1]=this.getDefinition(t[1])}),{priority:"highest"})}register(e,t){if(this._sourceDefinitions[e])throw new c.ZP("schema-cannot-register-item-twice",this,{itemName:e});this._sourceDefinitions[e]=[Object.assign({},t)],this._clearCache()}extend(e,t){if(!this._sourceDefinitions[e])throw new c.ZP("schema-cannot-extend-missing-item",this,{itemName:e});this._sourceDefinitions[e].push(Object.assign({},t)),this._clearCache()}getDefinitions(){return this._compiledDefinitions||this._compile(),this._compiledDefinitions}getDefinition(e){let t;return t="string"==typeof e?e:"is"in e&&(e.is("$text")||e.is("$textProxy"))?"$text":e.name,this.getDefinitions()[t]}isRegistered(e){return!!this.getDefinition(e)}isBlock(e){const t=this.getDefinition(e);return!(!t||!t.isBlock)}isLimit(e){const t=this.getDefinition(e);return!!t&&!(!t.isLimit&&!t.isObject)}isObject(e){const t=this.getDefinition(e);return!!t&&!!(t.isObject||t.isLimit&&t.isSelectable&&t.isContent)}isInline(e){const t=this.getDefinition(e);return!(!t||!t.isInline)}isSelectable(e){const t=this.getDefinition(e);return!!t&&!(!t.isSelectable&&!t.isObject)}isContent(e){const t=this.getDefinition(e);return!!t&&!(!t.isContent&&!t.isObject)}checkChild(e,t){return!!t&&this._checkContextMatch(t,e)}checkAttribute(e,t){const s=this.getDefinition(e.last);return!!s&&s.allowAttributes.includes(t)}checkMerge(e,t){if(e instanceof i.ZP){const t=e.nodeBefore,s=e.nodeAfter;if(!(t instanceof o.Z))throw new c.ZP("schema-check-merge-no-element-before",this);if(!(s instanceof o.Z))throw new c.ZP("schema-check-merge-no-element-after",this);return this.checkMerge(t,s)}for(const s of t.getChildren())if(!this.checkChild(e,s))return!1;return!0}addChildCheck(e){this.on("checkChild",((t,[s,o])=>{if(!o)return;const i=e(s,o);"boolean"==typeof i&&(t.stop(),t.return=i)}),{priority:"high"})}addAttributeCheck(e){this.on("checkAttribute",((t,[s,o])=>{const i=e(s,o);"boolean"==typeof i&&(t.stop(),t.return=i)}),{priority:"high"})}setAttributeProperties(e,t){this._attributeProperties[e]=Object.assign(this.getAttributeProperties(e),t)}getAttributeProperties(e){return this._attributeProperties[e]||{}}getLimitElement(e){let t;if(e instanceof i.ZP)t=e.parent;else{t=(e instanceof r.Z?[e]:Array.from(e.getRanges())).reduce(((e,t)=>{const s=t.getCommonAncestor();return e?e.getCommonAncestor(s,{includeSelf:!0}):s}),null)}for(;!this.isLimit(t)&&t.parent;)t=t.parent;return t}checkAttributeInSelection(e,t){if(e.isCollapsed){const s=[...e.getFirstPosition().getAncestors(),new n.Z("",e.getAttributes())];return this.checkAttribute(s,t)}{const s=e.getRanges();for(const e of s)for(const s of e)if(this.checkAttribute(s.item,t))return!0}return!1}*getValidRanges(e,t){e=function*(e){for(const t of e)yield*t.getMinimalFlatRanges()}(e);for(const s of e)yield*this._getValidRangesForRange(s,t)}getNearestSelectionRange(e,t="both"){if(this.checkChild(e,"$text"))return new r.Z(e);let s,o;const i=e.getAncestors().reverse().find((e=>this.isLimit(e)))||e.root;"both"!=t&&"backward"!=t||(s=new a.Z({boundaries:r.Z._createIn(i),startPosition:e,direction:"backward"})),"both"!=t&&"forward"!=t||(o=new a.Z({boundaries:r.Z._createIn(i),startPosition:e}));for(const e of function*(e,t){let s=!1;for(;!s;){if(s=!0,e){const t=e.next();t.done||(s=!1,yield{walker:e,value:t.value})}if(t){const e=t.next();e.done||(s=!1,yield{walker:t,value:e.value})}}}(s,o)){const t=e.walker==s?"elementEnd":"elementStart",o=e.value;if(o.type==t&&this.isObject(o.item))return r.Z._createOn(o.item);if(this.checkChild(o.nextPosition,"$text"))return new r.Z(o.nextPosition)}return null}findAllowedParent(e,t){let s=e.parent;for(;s;){if(this.checkChild(s,t))return s;if(this.isLimit(s))return null;s=s.parent}return null}setAllowedAttributes(e,t,s){const o=s.model;for(const[i,r]of Object.entries(t))o.schema.checkAttribute(e,i)&&s.setAttribute(i,r,e)}removeDisallowedAttributes(e,t){for(const s of e)if(s.is("$text"))P(this,s,t);else{const e=r.Z._createIn(s).getPositions();for(const s of e){P(this,s.nodeBefore||s.parent,t)}}}getAttributesWithProperty(e,t,s){const o={};for(const[i,r]of e.getAttributes()){const e=this.getAttributeProperties(i);void 0!==e[t]&&(void 0!==s&&s!==e[t]||(o[i]=r))}return o}createContext(e){return new h(e)}_clearCache(){this._compiledDefinitions=null}_compile(){const e={},t=this._sourceDefinitions,s=Object.keys(t);for(const o of s)e[o]=u(t[o],o);for(const t of s)p(e,t);for(const t of s)g(e,t);for(const t of s)f(e,t);for(const t of s)m(e,t),k(e,t);for(const t of s)b(e,t),_(e,t),w(e,t);this._compiledDefinitions=e}_checkContextMatch(e,t,s=t.length-1){const o=t.getItem(s);if(e.allowIn.includes(o.name)){if(0==s)return!0;{const e=this.getDefinition(o);return this._checkContextMatch(e,t,s-1)}}return!1}*_getValidRangesForRange(e,t){let s=e.start,o=e.start;for(const n of e.getItems({shallow:!0}))n.is("element")&&(yield*this._getValidRangesForRange(r.Z._createIn(n),t)),this.checkAttribute(n,t)||(s.isEqual(o)||(yield new r.Z(s,o)),s=i.ZP._createAfter(n)),o=i.ZP._createAfter(n);s.isEqual(o)||(yield new r.Z(s,o))}}class h{constructor(e){if(e instanceof h)return e;let t;t="string"==typeof e?[e]:Array.isArray(e)?e:e.getAncestors({includeSelf:!0}),this._items=t.map(Z)}get length(){return this._items.length}get last(){return this._items[this._items.length-1]}[Symbol.iterator](){return this._items[Symbol.iterator]()}push(e){const t=new h([e]);return t._items=[...this._items,...t._items],t}getItem(e){return this._items[e]}*getNames(){yield*this._items.map((e=>e.name))}endsWith(e){return Array.from(this.getNames()).join(" ").endsWith(e)}startsWith(e){return Array.from(this.getNames()).join(" ").startsWith(e)}}function u(e,t){const s={name:t,allowIn:[],allowContentOf:[],allowWhere:[],allowAttributes:[],allowAttributesOf:[],allowChildren:[],inheritTypesFrom:[]};return function(e,t){for(const s of e){const e=Object.keys(s).filter((e=>e.startsWith("is")));for(const o of e)t[o]=!!s[o]}}(e,s),v(e,s,"allowIn"),v(e,s,"allowContentOf"),v(e,s,"allowWhere"),v(e,s,"allowAttributes"),v(e,s,"allowAttributesOf"),v(e,s,"allowChildren"),v(e,s,"inheritTypesFrom"),function(e,t){for(const s of e){const e=s.inheritAllFrom;e&&(t.allowContentOf.push(e),t.allowWhere.push(e),t.allowAttributesOf.push(e),t.inheritTypesFrom.push(e))}}(e,s),s}function p(e,t){const s=e[t];for(const o of s.allowChildren){const s=e[o];s&&s.allowIn.push(t)}s.allowChildren.length=0}function g(e,t){for(const s of e[t].allowContentOf)if(e[s]){y(e,s).forEach((e=>{e.allowIn.push(t)}))}delete e[t].allowContentOf}function f(e,t){for(const s of e[t].allowWhere){const o=e[s];if(o){const s=o.allowIn;e[t].allowIn.push(...s)}}delete e[t].allowWhere}function m(e,t){for(const s of e[t].allowAttributesOf){const o=e[s];if(o){const s=o.allowAttributes;e[t].allowAttributes.push(...s)}}delete e[t].allowAttributesOf}function k(e,t){const s=e[t];for(const t of s.inheritTypesFrom){const o=e[t];if(o){const e=Object.keys(o).filter((e=>e.startsWith("is")));for(const t of e)t in s||(s[t]=o[t])}}delete s.inheritTypesFrom}function b(e,t){const s=e[t],o=s.allowIn.filter((t=>e[t]));s.allowIn=Array.from(new Set(o))}function _(e,t){const s=e[t];for(const o of s.allowIn){e[o].allowChildren.push(t)}}function w(e,t){const s=e[t];s.allowAttributes=Array.from(new Set(s.allowAttributes))}function v(e,t,s){for(const o of e){const e=o[s];"string"==typeof e?t[s].push(e):Array.isArray(e)&&t[s].push(...e)}}function y(e,t){const s=e[t];return(o=e,Object.keys(o).map((e=>o[e]))).filter((e=>e.allowIn.includes(s.name)));var o}function Z(e){return"string"==typeof e||e.is("documentFragment")?{name:"string"==typeof e?e:"$documentFragment",*getAttributeKeys(){},getAttribute(){}}:{name:e.is("element")?e.name:"$text",*getAttributeKeys(){yield*e.getAttributeKeys()},getAttribute:t=>e.getAttribute(t)}}function P(e,t,s){for(const o of t.getAttributeKeys())e.checkAttribute(t,o)||s.removeAttribute(o,t)}},"./packages/ckeditor5-engine/src/model/selection.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>d});var o=s("./packages/ckeditor5-engine/src/model/typecheckable.ts"),i=s("./packages/ckeditor5-engine/src/model/node.ts"),r=s("./packages/ckeditor5-engine/src/model/position.ts"),n=s("./packages/ckeditor5-engine/src/model/range.ts"),a=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),c=s("./packages/ckeditor5-utils/src/emittermixin.ts"),l=s("./packages/ckeditor5-utils/src/isiterable.ts");class d extends((0,c.ZP)(o.Z)){constructor(...e){super(),this._lastRangeBackward=!1,this._ranges=[],this._attrs=new Map,e.length&&this.setTo(...e)}get anchor(){if(this._ranges.length>0){const e=this._ranges[this._ranges.length-1];return this._lastRangeBackward?e.end:e.start}return null}get focus(){if(this._ranges.length>0){const e=this._ranges[this._ranges.length-1];return this._lastRangeBackward?e.start:e.end}return null}get isCollapsed(){return 1===this._ranges.length&&this._ranges[0].isCollapsed}get rangeCount(){return this._ranges.length}get isBackward(){return!this.isCollapsed&&this._lastRangeBackward}isEqual(e){if(this.rangeCount!=e.rangeCount)return!1;if(0===this.rangeCount)return!0;if(!this.anchor.isEqual(e.anchor)||!this.focus.isEqual(e.focus))return!1;for(const t of this._ranges){let s=!1;for(const o of e._ranges)if(t.isEqual(o)){s=!0;break}if(!s)return!1}return!0}*getRanges(){for(const e of this._ranges)yield new n.Z(e.start,e.end)}getFirstRange(){let e=null;for(const t of this._ranges)e&&!t.start.isBefore(e.start)||(e=t);return e?new n.Z(e.start,e.end):null}getLastRange(){let e=null;for(const t of this._ranges)e&&!t.end.isAfter(e.end)||(e=t);return e?new n.Z(e.start,e.end):null}getFirstPosition(){const e=this.getFirstRange();return e?e.start.clone():null}getLastPosition(){const e=this.getLastRange();return e?e.end.clone():null}setTo(...e){let[t,s,o]=e;if("object"==typeof s&&(o=s,s=void 0),null===t)this._setRanges([]);else if(t instanceof d)this._setRanges(t.getRanges(),t.isBackward);else if(t&&"function"==typeof t.getRanges)this._setRanges(t.getRanges(),t.isBackward);else if(t instanceof n.Z)this._setRanges([t],!!o&&!!o.backward);else if(t instanceof r.ZP)this._setRanges([new n.Z(t)]);else if(t instanceof i.Z){const e=!!o&&!!o.backward;let i;if("in"==s)i=n.Z._createIn(t);else if("on"==s)i=n.Z._createOn(t);else{if(void 0===s)throw new a.ZP("model-selection-setto-required-second-parameter",[this,t]);i=new n.Z(r.ZP._createAt(t,s))}this._setRanges([i],e)}else{if(!(0,l.Z)(t))throw new a.ZP("model-selection-setto-not-selectable",[this,t]);this._setRanges(t,o&&!!o.backward)}}_setRanges(e,t=!1){const s=Array.from(e),o=s.some((t=>{if(!(t instanceof n.Z))throw new a.ZP("model-selection-set-ranges-not-range",[this,e]);return this._ranges.every((e=>!e.isEqual(t)))}));(s.length!==this._ranges.length||o)&&(this._replaceAllRanges(s),this._lastRangeBackward=!!t,this.fire("change:range",{directChange:!0}))}setFocus(e,t){if(null===this.anchor)throw new a.ZP("model-selection-setfocus-no-ranges",[this,e]);const s=r.ZP._createAt(e,t);if("same"==s.compareWith(this.focus))return;const o=this.anchor;this._ranges.length&&this._popRange(),"before"==s.compareWith(o)?(this._pushRange(new n.Z(s,o)),this._lastRangeBackward=!0):(this._pushRange(new n.Z(o,s)),this._lastRangeBackward=!1),this.fire("change:range",{directChange:!0})}getAttribute(e){return this._attrs.get(e)}getAttributes(){return this._attrs.entries()}getAttributeKeys(){return this._attrs.keys()}hasAttribute(e){return this._attrs.has(e)}removeAttribute(e){this.hasAttribute(e)&&(this._attrs.delete(e),this.fire("change:attribute",{attributeKeys:[e],directChange:!0}))}setAttribute(e,t){this.getAttribute(e)!==t&&(this._attrs.set(e,t),this.fire("change:attribute",{attributeKeys:[e],directChange:!0}))}getSelectedElement(){return 1!==this.rangeCount?null:this.getFirstRange().getContainedElement()}*getSelectedBlocks(){const e=new WeakSet;for(const t of this.getRanges()){const s=p(t.start,e);s&&g(s,t)&&(yield s);for(const s of t.getWalker()){const o=s.item;"elementEnd"==s.type&&u(o,e,t)&&(yield o)}const o=p(t.end,e);o&&!t.end.isTouching(r.ZP._createAt(o,0))&&g(o,t)&&(yield o)}}containsEntireContent(e=this.anchor.root){const t=r.ZP._createAt(e,0),s=r.ZP._createAt(e,"end");return t.isTouching(this.getFirstPosition())&&s.isTouching(this.getLastPosition())}_pushRange(e){this._checkRange(e),this._ranges.push(new n.Z(e.start,e.end))}_checkRange(e){for(let t=0;t<this._ranges.length;t++)if(e.isIntersecting(this._ranges[t]))throw new a.ZP("model-selection-range-intersects",[this,e],{addedRange:e,intersectingRange:this._ranges[t]})}_replaceAllRanges(e){this._removeAllRanges();for(const t of e)this._pushRange(t)}_removeAllRanges(){for(;this._ranges.length>0;)this._popRange()}_popRange(){this._ranges.pop()}}function h(e,t){return!t.has(e)&&(t.add(e),e.root.document.model.schema.isBlock(e)&&e.parent)}function u(e,t,s){return h(e,t)&&g(e,s)}function p(e,t){const s=e.parent.root.document.model.schema,o=e.parent.getAncestors({parentFirst:!0,includeSelf:!0});let i=!1;const r=o.find((e=>!i&&(i=s.isLimit(e),!i&&h(e,t))));return o.forEach((e=>t.add(e))),r}function g(e,t){const s=function(e){const t=e.root.document.model.schema;let s=e.parent;for(;s;){if(t.isBlock(s))return s;s=s.parent}}(e);if(!s)return!0;return!t.containsRange(n.Z._createOn(s),!0)}d.prototype.is=function(e){return"selection"===e||"model:selection"===e}},"./packages/ckeditor5-engine/src/model/text.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./packages/ckeditor5-engine/src/model/node.ts");class i extends o.Z{constructor(e,t){super(t),this._data=e||""}get offsetSize(){return this.data.length}get data(){return this._data}toJSON(){const e=super.toJSON();return e.data=this.data,e}_clone(){return new i(this.data,this.getAttributes())}static fromJSON(e){return new i(e.data,e.attributes)}}i.prototype.is=function(e){return"$text"===e||"model:$text"===e||"text"===e||"model:text"===e||"node"===e||"model:node"===e}},"./packages/ckeditor5-engine/src/model/textproxy.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./packages/ckeditor5-engine/src/model/typecheckable.ts"),i=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class r extends o.Z{constructor(e,t,s){if(super(),this.textNode=e,t<0||t>e.offsetSize)throw new i.ZP("model-textproxy-wrong-offsetintext",this);if(s<0||t+s>e.offsetSize)throw new i.ZP("model-textproxy-wrong-length",this);this.data=e.data.substring(t,t+s),this.offsetInText=t}get startOffset(){return null!==this.textNode.startOffset?this.textNode.startOffset+this.offsetInText:null}get offsetSize(){return this.data.length}get endOffset(){return null!==this.startOffset?this.startOffset+this.offsetSize:null}get isPartial(){return this.offsetSize!==this.textNode.offsetSize}get parent(){return this.textNode.parent}get root(){return this.textNode.root}getPath(){const e=this.textNode.getPath();return e.length>0&&(e[e.length-1]+=this.offsetInText),e}getAncestors(e={}){const t=[];let s=e.includeSelf?this:this.parent;for(;s;)t[e.parentFirst?"push":"unshift"](s),s=s.parent;return t}hasAttribute(e){return this.textNode.hasAttribute(e)}getAttribute(e){return this.textNode.getAttribute(e)}getAttributes(){return this.textNode.getAttributes()}getAttributeKeys(){return this.textNode.getAttributeKeys()}}r.prototype.is=function(e){return"$textProxy"===e||"model:$textProxy"===e||"textProxy"===e||"model:textProxy"===e}},"./packages/ckeditor5-engine/src/model/treewalker.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>c});var o=s("./packages/ckeditor5-engine/src/model/element.ts"),i=s("./packages/ckeditor5-engine/src/model/position.ts"),r=s("./packages/ckeditor5-engine/src/model/text.ts"),n=s("./packages/ckeditor5-engine/src/model/textproxy.ts"),a=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class c{constructor(e={}){if(!e.boundaries&&!e.startPosition)throw new a.ZP("model-tree-walker-no-start-position",null);const t=e.direction||"forward";if("forward"!=t&&"backward"!=t)throw new a.ZP("model-tree-walker-unknown-direction",e,{direction:t});this.direction=t,this.boundaries=e.boundaries||null,e.startPosition?this.position=e.startPosition.clone():this.position=i.ZP._createAt(this.boundaries["backward"==this.direction?"end":"start"]),this.position.stickiness="toNone",this.singleCharacters=!!e.singleCharacters,this.shallow=!!e.shallow,this.ignoreElementEnd=!!e.ignoreElementEnd,this._boundaryStartParent=this.boundaries?this.boundaries.start.parent:null,this._boundaryEndParent=this.boundaries?this.boundaries.end.parent:null,this._visitedParent=this.position.parent}[Symbol.iterator](){return this}skip(e){let t,s,o,i;do{o=this.position,i=this._visitedParent,({done:t,value:s}=this.next())}while(!t&&e(s));t||(this.position=o,this._visitedParent=i)}next(){return"forward"==this.direction?this._next():this._previous()}_next(){const e=this.position,t=this.position.clone(),s=this._visitedParent;if(null===s.parent&&t.offset===s.maxOffset)return{done:!0,value:void 0};if(s===this._boundaryEndParent&&t.offset==this.boundaries.end.offset)return{done:!0,value:void 0};const a=(0,i.Rt)(t,s),c=a||(0,i.Ux)(t,s,a);if(c instanceof o.Z)return this.shallow?t.offset++:(t.path.push(0),this._visitedParent=c),this.position=t,l("elementStart",c,e,t,1);if(c instanceof r.Z){let o;if(this.singleCharacters)o=1;else{let e=c.endOffset;this._boundaryEndParent==s&&this.boundaries.end.offset<e&&(e=this.boundaries.end.offset),o=e-t.offset}const i=t.offset-c.startOffset,r=new n.Z(c,i,o);return t.offset+=o,this.position=t,l("text",r,e,t,o)}return t.path.pop(),t.offset++,this.position=t,this._visitedParent=s.parent,this.ignoreElementEnd?this._next():l("elementEnd",s,e,t)}_previous(){const e=this.position,t=this.position.clone(),s=this._visitedParent;if(null===s.parent&&0===t.offset)return{done:!0,value:void 0};if(s==this._boundaryStartParent&&t.offset==this.boundaries.start.offset)return{done:!0,value:void 0};const a=t.parent,c=(0,i.Rt)(t,a),d=c||(0,i.YV)(t,a,c);if(d instanceof o.Z)return t.offset--,this.shallow?(this.position=t,l("elementStart",d,e,t,1)):(t.path.push(d.maxOffset),this.position=t,this._visitedParent=d,this.ignoreElementEnd?this._previous():l("elementEnd",d,e,t));if(d instanceof r.Z){let o;if(this.singleCharacters)o=1;else{let e=d.startOffset;this._boundaryStartParent==s&&this.boundaries.start.offset>e&&(e=this.boundaries.start.offset),o=t.offset-e}const i=t.offset-d.startOffset,r=new n.Z(d,i-o,o);return t.offset-=o,this.position=t,l("text",r,e,t,o)}return t.path.pop(),this.position=t,this._visitedParent=s.parent,l("elementStart",s,e,t,1)}}function l(e,t,s,o,i){return{done:!1,value:{type:e,item:t,previousPosition:s,nextPosition:o,length:i}}}},"./packages/ckeditor5-engine/src/model/typecheckable.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});class o{is(){throw new Error("is() method is abstract")}}},"./packages/ckeditor5-engine/src/model/utils/autoparagraphing.ts":(e,t,s)=>{"use strict";function o(e){const{schema:t,document:s}=e.model;for(const o of s.getRootNames()){const i=s.getRoot(o);if(i.isEmpty&&!t.checkChild(i,"$text")&&t.checkChild(i,"paragraph"))return e.insertElement("paragraph",i),!0}return!1}function i(e,t,s){const o=s.createContext(e);return!!s.checkChild(o,"paragraph")&&!!s.checkChild(o.push("paragraph"),t)}function r(e,t){const s=t.createElement("paragraph");return t.insert(s,e),t.createPositionAt(s,0)}s.d(t,{_m:()=>o,gg:()=>i,zX:()=>r})},"./packages/ckeditor5-engine/src/model/utils/findoptimalinsertionrange.ts":(e,t,s)=>{"use strict";s.d(t,{K:()=>i});var o=s("./packages/ckeditor5-utils/src/first.ts");function i(e,t,s="auto"){const i=e.getSelectedElement();if(i&&t.schema.isObject(i)&&!t.schema.isInline(i))return"before"==s||"after"==s?t.createRange(t.createPositionAt(i,s)):t.createRangeOn(i);const r=(0,o.Z)(e.getSelectedBlocks());if(!r)return t.createRange(e.focus);if(r.isEmpty)return t.createRange(t.createPositionAt(r,0));const n=t.createPositionAfter(r);return e.focus.isTouching(n)?t.createRange(n):t.createRange(t.createPositionBefore(r))}},"./packages/ckeditor5-engine/src/view/attributeelement.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./packages/ckeditor5-engine/src/view/element.ts"),i=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class r extends o.Z{constructor(...e){super(...e),this.getFillerOffset=n,this._priority=10,this._id=null,this._clonesGroup=null}get priority(){return this._priority}get id(){return this._id}getElementsWithSameId(){if(null===this.id)throw new i.ZP("attribute-element-get-elements-with-same-id-no-id",this);return new Set(this._clonesGroup)}isSimilar(e){return null!==this.id||null!==e.id?this.id===e.id:super.isSimilar(e)&&this.priority==e.priority}_clone(e=!1){const t=super._clone(e);return t._priority=this._priority,t._id=this._id,t}}function n(){if(a(this))return null;let e=this.parent;for(;e&&e.is("attributeElement");){if(a(e)>1)return null;e=e.parent}return!e||a(e)>1?null:this.childCount}function a(e){return Array.from(e.getChildren()).filter((e=>!e.is("uiElement"))).length}r.DEFAULT_PRIORITY=10,r.prototype.is=function(e,t){return t?t===this.name&&("attributeElement"===e||"view:attributeElement"===e||"element"===e||"view:element"===e):"attributeElement"===e||"view:attributeElement"===e||"element"===e||"view:element"===e||"node"===e||"view:node"===e}},"./packages/ckeditor5-engine/src/view/containerelement.ts":(e,t,s)=>{"use strict";s.d(t,{Y:()=>r,Z:()=>i});var o=s("./packages/ckeditor5-engine/src/view/element.ts");class i extends o.Z{constructor(...e){super(...e),this.getFillerOffset=r}}function r(){const e=[...this.getChildren()],t=e[this.childCount-1];if(t&&t.is("element","br"))return this.childCount;for(const t of e)if(!t.is("uiElement"))return null;return this.childCount}i.prototype.is=function(e,t){return t?t===this.name&&("containerElement"===e||"view:containerElement"===e||"element"===e||"view:element"===e):"containerElement"===e||"view:containerElement"===e||"element"===e||"view:element"===e||"node"===e||"view:node"===e}},"./packages/ckeditor5-engine/src/view/document.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>k});var o=s("./packages/ckeditor5-engine/src/view/documentselection.ts"),i=s("./packages/ckeditor5-utils/src/collection.ts"),r=s("./packages/ckeditor5-utils/src/eventinfo.ts"),n=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),a=s("./packages/ckeditor5-utils/src/emittermixin.ts"),c=s("./packages/ckeditor5-utils/src/toarray.ts"),l=s("./packages/ckeditor5-engine/src/view/observer/bubblingeventinfo.ts");const d=Symbol("bubbling contexts");function h(e){return class extends e{fire(e,...t){try{const s=e instanceof r.Z?e:new r.Z(this,e),o=f(this);if(!o.size)return;if(u(s,"capturing",this),p(o,"$capture",s,...t))return s.return;const i=s.startRange||this.selection.getFirstRange(),n=i?i.getContainedElement():null,a=!!n&&Boolean(g(o,n));let c=n||function(e){if(!e)return null;const t=e.start.parent,s=e.end.parent,o=t.getPath(),i=s.getPath();return o.length>i.length?t:s}(i);if(u(s,"atTarget",c),!a){if(p(o,"$text",s,...t))return s.return;u(s,"bubbling",c)}for(;c;){if(c.is("rootElement")){if(p(o,"$root",s,...t))return s.return}else if(c.is("element")&&p(o,c.name,s,...t))return s.return;if(p(o,c,s,...t))return s.return;c=c.parent,u(s,"bubbling",c)}return u(s,"bubbling",this),p(o,"$document",s,...t),s.return}catch(e){n.ZP.rethrowUnexpectedError(e,this)}}_addEventListener(e,t,s){const o=(0,c.Z)(s.context||"$document"),i=f(this);for(const r of o){let o=i.get(r);o||(o=new a.Q5,i.set(r,o)),this.listenTo(o,e,t,s)}}_removeEventListener(e,t){const s=f(this);for(const o of s.values())this.stopListening(o,e,t)}}}{const e=h(Object);["fire","_addEventListener","_removeEventListener"].forEach((t=>{h[t]=e.prototype[t]}))}function u(e,t,s){e instanceof l.Z&&(e._eventPhase=t,e._currentTarget=s)}function p(e,t,s,...o){const i="string"==typeof t?e.get(t):g(e,t);return!!i&&(i.fire(s,...o),s.stop.called)}function g(e,t){for(const[s,o]of e)if("function"==typeof s&&s(t))return o;return null}function f(e){return e[d]||(e[d]=new Map),e[d]}var m=s("./packages/ckeditor5-utils/src/observablemixin.ts");class k extends(h(m.y)){constructor(e){super(),this.selection=new o.Z,this.roots=new i.Z({idProperty:"rootName"}),this.stylesProcessor=e,this.set("isReadOnly",!1),this.set("isFocused",!1),this.set("isSelecting",!1),this.set("isComposing",!1),this._postFixers=new Set}getRoot(e="main"){return this.roots.get(e)}registerPostFixer(e){this._postFixers.add(e)}destroy(){this.roots.map((e=>e.destroy())),this.stopListening()}_callPostFixers(e){let t=!1;do{for(const s of this._postFixers)if(t=s(e),t)break}while(t)}}},"./packages/ckeditor5-engine/src/view/documentfragment.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>c});var o=s("./packages/ckeditor5-engine/src/view/typecheckable.ts"),i=s("./packages/ckeditor5-engine/src/view/text.ts"),r=s("./packages/ckeditor5-engine/src/view/textproxy.ts"),n=s("./packages/ckeditor5-utils/src/isiterable.ts"),a=s("./packages/ckeditor5-utils/src/emittermixin.ts");class c extends((0,a.ZP)(o.Z)){constructor(e,t){super(),this.document=e,this._children=[],t&&this._insertChild(0,t)}[Symbol.iterator](){return this._children[Symbol.iterator]()}get childCount(){return this._children.length}get isEmpty(){return 0===this.childCount}get root(){return this}get parent(){return null}_appendChild(e){return this._insertChild(this.childCount,e)}getChild(e){return this._children[e]}getChildIndex(e){return this._children.indexOf(e)}getChildren(){return this._children[Symbol.iterator]()}_insertChild(e,t){this._fireChange("children",this);let s=0;const o=function(e,t){if("string"==typeof t)return[new i.Z(e,t)];(0,n.Z)(t)||(t=[t]);return Array.from(t).map((t=>"string"==typeof t?new i.Z(e,t):t instanceof r.Z?new i.Z(e,t.data):t))}(this.document,t);for(const t of o)null!==t.parent&&t._remove(),t.parent=this,this._children.splice(e,0,t),e++,s++;return s}_removeChildren(e,t=1){this._fireChange("children",this);for(let s=e;s<e+t;s++)this._children[s].parent=null;return this._children.splice(e,t)}_fireChange(e,t){this.fire("change:"+e,t)}}c.prototype.is=function(e){return"documentFragment"===e||"view:documentFragment"===e}},"./packages/ckeditor5-engine/src/view/documentselection.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>n});var o=s("./packages/ckeditor5-engine/src/view/typecheckable.ts"),i=s("./packages/ckeditor5-engine/src/view/selection.ts"),r=s("./packages/ckeditor5-utils/src/emittermixin.ts");class n extends((0,r.ZP)(o.Z)){constructor(...e){super(),this._selection=new i.Z,this._selection.delegate("change").to(this),e.length&&this._selection.setTo(...e)}get isFake(){return this._selection.isFake}get fakeSelectionLabel(){return this._selection.fakeSelectionLabel}get anchor(){return this._selection.anchor}get focus(){return this._selection.focus}get isCollapsed(){return this._selection.isCollapsed}get rangeCount(){return this._selection.rangeCount}get isBackward(){return this._selection.isBackward}get editableElement(){return this._selection.editableElement}get _ranges(){return this._selection._ranges}*getRanges(){yield*this._selection.getRanges()}getFirstRange(){return this._selection.getFirstRange()}getLastRange(){return this._selection.getLastRange()}getFirstPosition(){return this._selection.getFirstPosition()}getLastPosition(){return this._selection.getLastPosition()}getSelectedElement(){return this._selection.getSelectedElement()}isEqual(e){return this._selection.isEqual(e)}isSimilar(e){return this._selection.isSimilar(e)}_setTo(...e){this._selection.setTo(...e)}_setFocus(e,t){this._selection.setFocus(e,t)}}n.prototype.is=function(e){return"selection"===e||"documentSelection"==e||"view:selection"==e||"view:documentSelection"==e}},"./packages/ckeditor5-engine/src/view/domconverter.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>P});var o=s("./packages/ckeditor5-engine/src/view/text.ts"),i=s("./packages/ckeditor5-engine/src/view/element.ts"),r=s("./packages/ckeditor5-engine/src/view/uielement.ts"),n=s("./packages/ckeditor5-engine/src/view/position.ts"),a=s("./packages/ckeditor5-engine/src/view/range.ts"),c=s("./packages/ckeditor5-engine/src/view/selection.ts"),l=s("./packages/ckeditor5-engine/src/view/documentfragment.ts"),d=s("./packages/ckeditor5-engine/src/view/treewalker.ts"),h=s("./packages/ckeditor5-engine/src/view/matcher.ts"),u=s("./packages/ckeditor5-engine/src/view/filler.ts"),p=s("./packages/ckeditor5-utils/src/dom/global.ts"),g=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");function f(e){let t=0;for(;e.previousSibling;)e=e.previousSibling,t++;return t}function m(e){const t=[];let s=e;for(;s&&s.nodeType!=Node.DOCUMENT_NODE;)t.unshift(s),s=s.parentNode;return t}var k=s("./packages/ckeditor5-utils/src/dom/istext.ts"),b=s("./packages/ckeditor5-utils/src/dom/iscomment.ts");const _=(0,u.yl)(p.Z.document),w=(0,u.N3)(p.Z.document),v=(0,u.PQ)(p.Z.document),y="data-ck-unsafe-attribute-",Z="data-ck-unsafe-element";class P{constructor(e,t={}){this.document=e,this.renderingMode=t.renderingMode||"editing",this.blockFillerMode=t.blockFillerMode||("editing"===this.renderingMode?"br":"nbsp"),this.preElements=["pre"],this.blockElements=["address","article","aside","blockquote","caption","center","dd","details","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","legend","li","main","menu","nav","ol","p","pre","section","summary","table","tbody","td","tfoot","th","thead","tr","ul"],this.inlineObjectElements=["object","iframe","input","button","textarea","select","option","video","embed","audio","img","canvas"],this.unsafeElements=["script","style"],this._domDocument="editing"===this.renderingMode?p.Z.document:p.Z.document.implementation.createHTMLDocument(""),this._domToViewMapping=new WeakMap,this._viewToDomMapping=new WeakMap,this._fakeSelectionMapping=new WeakMap,this._rawContentElementMatcher=new h.Z,this._encounteredRawContentDomNodes=new WeakSet}bindFakeSelection(e,t){this._fakeSelectionMapping.set(e,new c.Z(t))}fakeSelectionToView(e){return this._fakeSelectionMapping.get(e)}bindElements(e,t){this._domToViewMapping.set(e,t),this._viewToDomMapping.set(t,e)}unbindDomElement(e){const t=this._domToViewMapping.get(e);if(t){this._domToViewMapping.delete(e),this._viewToDomMapping.delete(t);for(const t of Array.from(e.children))this.unbindDomElement(t)}}bindDocumentFragments(e,t){this._domToViewMapping.set(e,t),this._viewToDomMapping.set(t,e)}shouldRenderAttribute(e,t,s){return"data"===this.renderingMode||!(e=e.toLowerCase()).startsWith("on")&&(("srcdoc"!==e||!t.match(/\bon\S+\s*=|javascript:|<\s*\/*script/i))&&("img"===s&&("src"===e||"srcset"===e)||("source"===s&&"srcset"===e||!t.match(/^\s*(javascript:|data:(image\/svg|text\/x?html))/i))))}setContentOf(e,t){if("data"===this.renderingMode)return void(e.innerHTML=t);const s=(new DOMParser).parseFromString(t,"text/html"),o=s.createDocumentFragment(),i=s.body.childNodes;for(;i.length>0;)o.appendChild(i[0]);const r=s.createTreeWalker(o,NodeFilter.SHOW_ELEMENT),n=[];let a;for(;a=r.nextNode();)n.push(a);for(const e of n){for(const t of e.getAttributeNames())this.setDomElementAttribute(e,t,e.getAttribute(t));const t=e.tagName.toLowerCase();this._shouldRenameElement(t)&&(A(t),e.replaceWith(this._createReplacementDomElement(t,e)))}for(;e.firstChild;)e.firstChild.remove();e.append(o)}viewToDom(e,t={}){if(e.is("$text")){const t=this._processDataFromViewText(e);return this._domDocument.createTextNode(t)}{if(this.mapViewToDom(e))return this.mapViewToDom(e);let s;if(e.is("documentFragment"))s=this._domDocument.createDocumentFragment(),t.bind&&this.bindDocumentFragments(s,e);else{if(e.is("uiElement"))return s="$comment"===e.name?this._domDocument.createComment(e.getCustomProperty("$rawContent")):e.render(this._domDocument,this),t.bind&&this.bindElements(s,e),s;this._shouldRenameElement(e.name)?(A(e.name),s=this._createReplacementDomElement(e.name)):s=e.hasAttribute("xmlns")?this._domDocument.createElementNS(e.getAttribute("xmlns"),e.name):this._domDocument.createElement(e.name),e.is("rawElement")&&e.render(s,this),t.bind&&this.bindElements(s,e);for(const t of e.getAttributeKeys())this.setDomElementAttribute(s,t,e.getAttribute(t),e)}if(!1!==t.withChildren)for(const o of this.viewChildrenToDom(e,t))s.appendChild(o);return s}}setDomElementAttribute(e,t,s,o){const i=this.shouldRenderAttribute(t,s,e.tagName.toLowerCase())||o&&o.shouldRenderUnsafeAttribute(t);i||(0,g.KE)("domconverter-unsafe-attribute-detected",{domElement:e,key:t,value:s}),e.hasAttribute(t)&&!i?e.removeAttribute(t):e.hasAttribute(y+t)&&i&&e.removeAttribute(y+t),e.setAttribute(i?t:y+t,s)}removeDomElementAttribute(e,t){t!=Z&&(e.removeAttribute(t),e.removeAttribute(y+t))}*viewChildrenToDom(e,t={}){const s=e.getFillerOffset&&e.getFillerOffset();let o=0;for(const i of e.getChildren()){s===o&&(yield this._getBlockFiller());const e=i.is("element")&&i.getCustomProperty("dataPipeline:transparentRendering");e&&"data"==this.renderingMode?yield*this.viewChildrenToDom(i,t):(e&&(0,g.KE)("domconverter-transparent-rendering-unsupported-in-editing-pipeline",{viewElement:i}),yield this.viewToDom(i,t)),o++}s===o&&(yield this._getBlockFiller())}viewRangeToDom(e){const t=this.viewPositionToDom(e.start),s=this.viewPositionToDom(e.end),o=this._domDocument.createRange();return o.setStart(t.parent,t.offset),o.setEnd(s.parent,s.offset),o}viewPositionToDom(e){const t=e.parent;if(t.is("$text")){const s=this.findCorrespondingDomText(t);if(!s)return null;let o=e.offset;return(0,u.Sw)(s)&&(o+=u.b_),{parent:s,offset:o}}{let s,o,i;if(0===e.offset){if(s=this.mapViewToDom(t),!s)return null;i=s.childNodes[0]}else{const t=e.nodeBefore;if(o=t.is("$text")?this.findCorrespondingDomText(t):this.mapViewToDom(t),!o)return null;s=o.parentNode,i=o.nextSibling}if((0,k.Z)(i)&&(0,u.Sw)(i))return{parent:i,offset:u.b_};return{parent:s,offset:o?f(o)+1:0}}}domToView(e,t={}){if(this.isBlockFiller(e))return null;const s=this.getHostViewElement(e);if(s)return s;if((0,b.Z)(e)&&t.skipComments)return null;if((0,k.Z)(e)){if((0,u.Qh)(e))return null;{const t=this._processDataFromDomText(e);return""===t?null:new o.Z(this.document,t)}}{if(this.mapDomToView(e))return this.mapDomToView(e);let s;if(this.isDocumentFragment(e))s=new l.Z(this.document),t.bind&&this.bindDocumentFragments(e,s);else{s=this._createViewElement(e,t),t.bind&&this.bindElements(e,s);const o=e.attributes;if(o)for(let e=o.length,t=0;t<e;t++)s._setAttribute(o[t].name,o[t].value);if(this._isViewElementWithRawContent(s,t)||(0,b.Z)(e)){const t=(0,b.Z)(e)?e.data:e.innerHTML;return s._setCustomProperty("$rawContent",t),this._encounteredRawContentDomNodes.add(e),s}}if(!1!==t.withChildren)for(const o of this.domChildrenToView(e,t))s._appendChild(o);return s}}*domChildrenToView(e,t){for(let s=0;s<e.childNodes.length;s++){const o=e.childNodes[s],i=this.domToView(o,t);null!==i&&(yield i)}}domSelectionToView(e){if(1===e.rangeCount){let t=e.getRangeAt(0).startContainer;(0,k.Z)(t)&&(t=t.parentNode);const s=this.fakeSelectionToView(t);if(s)return s}const t=this.isDomSelectionBackward(e),s=[];for(let t=0;t<e.rangeCount;t++){const o=e.getRangeAt(t),i=this.domRangeToView(o);i&&s.push(i)}return new c.Z(s,{backward:t})}domRangeToView(e){const t=this.domPositionToView(e.startContainer,e.startOffset),s=this.domPositionToView(e.endContainer,e.endOffset);return t&&s?new a.Z(t,s):null}domPositionToView(e,t=0){if(this.isBlockFiller(e))return this.domPositionToView(e.parentNode,f(e));const s=this.mapDomToView(e);if(s&&(s.is("uiElement")||s.is("rawElement")))return n.Z._createBefore(s);if((0,k.Z)(e)){if((0,u.Qh)(e))return this.domPositionToView(e.parentNode,f(e));const s=this.findCorrespondingViewText(e);let o=t;return s?((0,u.Sw)(e)&&(o-=u.b_,o=o<0?0:o),new n.Z(s,o)):null}if(0===t){const t=this.mapDomToView(e);if(t)return new n.Z(t,0)}else{const s=e.childNodes[t-1],o=(0,k.Z)(s)?this.findCorrespondingViewText(s):this.mapDomToView(s);if(o&&o.parent)return new n.Z(o.parent,o.index+1)}return null}mapDomToView(e){return this.getHostViewElement(e)||this._domToViewMapping.get(e)}findCorrespondingViewText(e){if((0,u.Qh)(e))return null;const t=this.getHostViewElement(e);if(t)return t;const s=e.previousSibling;if(s){if(!this.isElement(s))return null;const e=this.mapDomToView(s);if(e){const t=e.nextSibling;return t instanceof o.Z?t:null}}else{const t=this.mapDomToView(e.parentNode);if(t){const e=t.getChild(0);return e instanceof o.Z?e:null}}return null}mapViewToDom(e){return this._viewToDomMapping.get(e)}findCorrespondingDomText(e){const t=e.previousSibling;return t&&this.mapViewToDom(t)?this.mapViewToDom(t).nextSibling:!t&&e.parent&&this.mapViewToDom(e.parent)?this.mapViewToDom(e.parent).childNodes[0]:null}focus(e){const t=this.mapViewToDom(e);if(t&&t.ownerDocument.activeElement!==t){const{scrollX:e,scrollY:s}=p.Z.window,o=[];x(t,(e=>{const{scrollLeft:t,scrollTop:s}=e;o.push([t,s])})),t.focus(),x(t,(e=>{const[t,s]=o.shift();e.scrollLeft=t,e.scrollTop=s})),p.Z.window.scrollTo(e,s)}}isElement(e){return e&&e.nodeType==Node.ELEMENT_NODE}isDocumentFragment(e){return e&&e.nodeType==Node.DOCUMENT_FRAGMENT_NODE}isBlockFiller(e){return"br"==this.blockFillerMode?e.isEqualNode(_):!("BR"!==e.tagName||!T(e,this.blockElements)||1!==e.parentNode.childNodes.length)||(e.isEqualNode(v)||function(e,t){return e.isEqualNode(w)&&T(e,t)&&1===e.parentNode.childNodes.length}(e,this.blockElements))}isDomSelectionBackward(e){if(e.isCollapsed)return!1;const t=this._domDocument.createRange();t.setStart(e.anchorNode,e.anchorOffset),t.setEnd(e.focusNode,e.focusOffset);const s=t.collapsed;return t.detach(),s}getHostViewElement(e){const t=m(e);for(t.pop();t.length;){const e=t.pop(),s=this._domToViewMapping.get(e);if(s&&(s.is("uiElement")||s.is("rawElement")))return s}return null}isDomSelectionCorrect(e){return this._isDomSelectionPositionCorrect(e.anchorNode,e.anchorOffset)&&this._isDomSelectionPositionCorrect(e.focusNode,e.focusOffset)}registerRawContentMatcher(e){this._rawContentElementMatcher.add(e)}_getBlockFiller(){switch(this.blockFillerMode){case"nbsp":return(0,u.N3)(this._domDocument);case"markedNbsp":return(0,u.PQ)(this._domDocument);case"br":return(0,u.yl)(this._domDocument)}}_isDomSelectionPositionCorrect(e,t){if((0,k.Z)(e)&&(0,u.Sw)(e)&&t<u.b_)return!1;if(this.isElement(e)&&(0,u.Sw)(e.childNodes[t]))return!1;const s=this.mapDomToView(e);return!s||!s.is("uiElement")&&!s.is("rawElement")}_processDataFromViewText(e){let t=e.data;if(e.getAncestors().some((e=>this.preElements.includes(e.name))))return t;if(" "==t.charAt(0)){const s=this._getTouchingInlineViewNode(e,!1);!(s&&s.is("$textProxy")&&this._nodeEndsWithSpace(s))&&s||(t=" "+t.substr(1))}if(" "==t.charAt(t.length-1)){const s=this._getTouchingInlineViewNode(e,!0),o=s&&s.is("$textProxy")&&" "==s.data.charAt(0);" "!=t.charAt(t.length-2)&&s&&!o||(t=t.substr(0,t.length-1)+" ")}return t.replace(/ {2}/g,"  ")}_nodeEndsWithSpace(e){if(e.getAncestors().some((e=>this.preElements.includes(e.name))))return!1;const t=this._processDataFromViewText(e);return" "==t.charAt(t.length-1)}_processDataFromDomText(e){let t=e.data;if(function(e,t){return m(e).some((e=>e.tagName&&t.includes(e.tagName.toLowerCase())))}(e,this.preElements))return(0,u.th)(e);t=t.replace(/[ \n\t\r]{1,}/g," ");const s=this._getTouchingInlineDomNode(e,!1),o=this._getTouchingInlineDomNode(e,!0),i=this._checkShouldLeftTrimDomText(e,s),r=this._checkShouldRightTrimDomText(e,o);i&&(t=t.replace(/^ /,"")),r&&(t=t.replace(/ $/,"")),t=(0,u.th)(new Text(t)),t=t.replace(/ \u00A0/g,"  ");const n=o&&this.isElement(o)&&"BR"!=o.tagName,a=o&&(0,k.Z)(o)&&" "==o.data.charAt(0);return(/( |\u00A0)\u00A0$/.test(t)||!o||n||a)&&(t=t.replace(/\u00A0$/," ")),(i||s&&this.isElement(s)&&"BR"!=s.tagName)&&(t=t.replace(/^\u00A0/," ")),t}_checkShouldLeftTrimDomText(e,t){return!t||(this.isElement(t)?"BR"===t.tagName:!this._encounteredRawContentDomNodes.has(e.previousSibling)&&/[^\S\u00A0]/.test(t.data.charAt(t.data.length-1)))}_checkShouldRightTrimDomText(e,t){return!t&&!(0,u.Sw)(e)}_getTouchingInlineViewNode(e,t){const s=new d.Z({startPosition:t?n.Z._createAfter(e):n.Z._createBefore(e),direction:t?"forward":"backward"});for(const e of s){if(e.item.is("element")&&this.inlineObjectElements.includes(e.item.name))return e.item;if(e.item.is("containerElement"))return null;if(e.item.is("element","br"))return null;if(e.item.is("$textProxy"))return e.item}return null}_getTouchingInlineDomNode(e,t){if(!e.parentNode)return null;const s=t?"firstChild":"lastChild",o=t?"nextSibling":"previousSibling";let i=!0,r=e;do{if(!i&&r[s]?r=r[s]:r[o]?(r=r[o],i=!1):(r=r.parentNode,i=!0),!r||this._isBlockElement(r))return null}while(!(0,k.Z)(r)&&"BR"!=r.tagName&&!this._isInlineObjectElement(r));return r}_isBlockElement(e){return this.isElement(e)&&this.blockElements.includes(e.tagName.toLowerCase())}_isInlineObjectElement(e){return this.isElement(e)&&this.inlineObjectElements.includes(e.tagName.toLowerCase())}_createViewElement(e,t){if((0,b.Z)(e))return new r.Z(this.document,"$comment");const s=t.keepOriginalCase?e.tagName:e.tagName.toLowerCase();return new i.Z(this.document,s)}_isViewElementWithRawContent(e,t){return!1!==t.withChildren&&!!this._rawContentElementMatcher.match(e)}_shouldRenameElement(e){const t=e.toLowerCase();return"editing"===this.renderingMode&&this.unsafeElements.includes(t)}_createReplacementDomElement(e,t){const s=this._domDocument.createElement("span");if(s.setAttribute(Z,e),t){for(;t.firstChild;)s.appendChild(t.firstChild);for(const e of t.getAttributeNames())s.setAttribute(e,t.getAttribute(e))}return s}}function x(e,t){let s=e;for(;s;)t(s),s=s.parentElement}function T(e,t){const s=e.parentNode;return!!s&&!!s.tagName&&t.includes(s.tagName.toLowerCase())}function A(e){"script"===e&&(0,g.KE)("domconverter-unsafe-script-element-detected"),"style"===e&&(0,g.KE)("domconverter-unsafe-style-element-detected")}},"./packages/ckeditor5-engine/src/view/downcastwriter.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>k});var o=s("./packages/ckeditor5-engine/src/view/position.ts"),i=s("./packages/ckeditor5-engine/src/view/range.ts"),r=s("./packages/ckeditor5-engine/src/view/selection.ts"),n=s("./packages/ckeditor5-engine/src/view/containerelement.ts"),a=s("./packages/ckeditor5-engine/src/view/attributeelement.ts"),c=s("./packages/ckeditor5-engine/src/view/emptyelement.ts"),l=s("./packages/ckeditor5-engine/src/view/uielement.ts"),d=s("./packages/ckeditor5-engine/src/view/rawelement.ts"),h=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),u=s("./packages/ckeditor5-engine/src/view/documentfragment.ts"),p=s("./packages/ckeditor5-utils/src/isiterable.ts"),g=s("./packages/ckeditor5-engine/src/view/text.ts"),f=s("./packages/ckeditor5-engine/src/view/editableelement.ts"),m=s("./node_modules/lodash-es/isPlainObject.js");class k{constructor(e){this.document=e,this._cloneGroups=new Map,this._slotFactory=null}setSelection(...e){this.document.selection._setTo(...e)}setSelectionFocus(...e){this.document.selection._setFocus(...e)}createDocumentFragment(e){return new u.Z(this.document,e)}createText(e){return new g.Z(this.document,e)}createAttributeElement(e,t,s={}){const o=new a.Z(this.document,e,t);return"number"==typeof s.priority&&(o._priority=s.priority),s.id&&(o._id=s.id),s.renderUnsafeAttributes&&o._unsafeAttributesToRender.push(...s.renderUnsafeAttributes),o}createContainerElement(e,t,s={},o={}){let i=null;(0,m.Z)(s)?o=s:i=s;const r=new n.Z(this.document,e,t,i);return o.renderUnsafeAttributes&&r._unsafeAttributesToRender.push(...o.renderUnsafeAttributes),r}createEditableElement(e,t,s={}){const o=new f.Z(this.document,e,t);return s.renderUnsafeAttributes&&o._unsafeAttributesToRender.push(...s.renderUnsafeAttributes),o}createEmptyElement(e,t,s={}){const o=new c.Z(this.document,e,t);return s.renderUnsafeAttributes&&o._unsafeAttributesToRender.push(...s.renderUnsafeAttributes),o}createUIElement(e,t,s){const o=new l.Z(this.document,e,t);return s&&(o.render=s),o}createRawElement(e,t,s,o={}){const i=new d.Z(this.document,e,t);return s&&(i.render=s),o.renderUnsafeAttributes&&i._unsafeAttributesToRender.push(...o.renderUnsafeAttributes),i}setAttribute(e,t,s){s._setAttribute(e,t)}removeAttribute(e,t){t._removeAttribute(e)}addClass(e,t){t._addClass(e)}removeClass(e,t){t._removeClass(e)}setStyle(e,t,s){(0,m.Z)(e)&&void 0===s?t._setStyle(e):s._setStyle(e,t)}removeStyle(e,t){t._removeStyle(e)}setCustomProperty(e,t,s){s._setCustomProperty(e,t)}removeCustomProperty(e,t){return t._removeCustomProperty(e)}breakAttributes(e){return e instanceof o.Z?this._breakAttributes(e):this._breakAttributesRange(e)}breakContainer(e){const t=e.parent;if(!t.is("containerElement"))throw new h.ZP("view-writer-break-non-container-element",this.document);if(!t.parent)throw new h.ZP("view-writer-break-root",this.document);if(e.isAtStart)return o.Z._createBefore(t);if(!e.isAtEnd){const s=t._clone(!1);this.insert(o.Z._createAfter(t),s);const r=new i.Z(e,o.Z._createAt(t,"end")),n=new o.Z(s,0);this.move(r,n)}return o.Z._createAfter(t)}mergeAttributes(e){const t=e.offset,s=e.parent;if(s.is("$text"))return e;if(s.is("attributeElement")&&0===s.childCount){const e=s.parent,t=s.index;return s._remove(),this._removeFromClonedElementsGroup(s),this.mergeAttributes(new o.Z(e,t))}const i=s.getChild(t-1),r=s.getChild(t);if(!i||!r)return e;if(i.is("$text")&&r.is("$text"))return y(i,r);if(i.is("attributeElement")&&r.is("attributeElement")&&i.isSimilar(r)){const e=i.childCount;return i._appendChild(r.getChildren()),r._remove(),this._removeFromClonedElementsGroup(r),this.mergeAttributes(new o.Z(i,e))}return e}mergeContainers(e){const t=e.nodeBefore,s=e.nodeAfter;if(!(t&&s&&t.is("containerElement")&&s.is("containerElement")))throw new h.ZP("view-writer-merge-containers-invalid-position",this.document);const r=t.getChild(t.childCount-1),n=r instanceof g.Z?o.Z._createAt(r,"end"):o.Z._createAt(t,"end");return this.move(i.Z._createIn(s),o.Z._createAt(t,"end")),this.remove(i.Z._createOn(s)),n}insert(e,t){P(t=(0,p.Z)(t)?[...t]:[t],this.document);const s=t.reduce(((e,t)=>{const s=e[e.length-1],o=!t.is("uiElement");return s&&s.breakAttributes==o?s.nodes.push(t):e.push({breakAttributes:o,nodes:[t]}),e}),[]);let o=null,r=e;for(const{nodes:e,breakAttributes:t}of s){const s=this._insertNodes(r,e,t);o||(o=s.start),r=s.end}return o?new i.Z(o,r):new i.Z(e)}remove(e){const t=e instanceof i.Z?e:i.Z._createOn(e);if(T(t,this.document),t.isCollapsed)return new u.Z(this.document);const{start:s,end:o}=this._breakAttributesRange(t,!0),r=s.parent,n=o.offset-s.offset,a=r._removeChildren(s.offset,n);for(const e of a)this._removeFromClonedElementsGroup(e);const c=this.mergeAttributes(s);return t.start=c,t.end=c.clone(),new u.Z(this.document,a)}clear(e,t){T(e,this.document);const s=e.getWalker({direction:"backward",ignoreElementEnd:!0});for(const o of s){const s=o.item;let r;if(s.is("element")&&t.isSimilar(s))r=i.Z._createOn(s);else if(!o.nextPosition.isAfter(e.start)&&s.is("$textProxy")){const e=s.getAncestors().find((e=>e.is("element")&&t.isSimilar(e)));e&&(r=i.Z._createIn(e))}r&&(r.end.isAfter(e.end)&&(r.end=e.end),r.start.isBefore(e.start)&&(r.start=e.start),this.remove(r))}}move(e,t){let s;if(t.isAfter(e.end)){const o=(t=this._breakAttributes(t,!0)).parent,i=o.childCount;e=this._breakAttributesRange(e,!0),s=this.remove(e),t.offset+=o.childCount-i}else s=this.remove(e);return this.insert(t,s)}wrap(e,t){if(!(t instanceof a.Z))throw new h.ZP("view-writer-wrap-invalid-attribute",this.document);if(T(e,this.document),e.isCollapsed){let o=e.start;o.parent.is("element")&&(s=o.parent,!Array.from(s.getChildren()).some((e=>!e.is("uiElement"))))&&(o=o.getLastMatchingPosition((e=>e.item.is("uiElement")))),o=this._wrapPosition(o,t);const r=this.document.selection;return r.isCollapsed&&r.getFirstPosition().isEqual(e.start)&&this.setSelection(o),new i.Z(o)}return this._wrapRange(e,t);var s}unwrap(e,t){if(!(t instanceof a.Z))throw new h.ZP("view-writer-unwrap-invalid-attribute",this.document);if(T(e,this.document),e.isCollapsed)return e;const{start:s,end:o}=this._breakAttributesRange(e,!0),r=s.parent,n=this._unwrapChildren(r,s.offset,o.offset,t),c=this.mergeAttributes(n.start);c.isEqual(n.start)||n.end.offset--;const l=this.mergeAttributes(n.end);return new i.Z(c,l)}rename(e,t){const s=new n.Z(this.document,e,t.getAttributes());return this.insert(o.Z._createAfter(t),s),this.move(i.Z._createIn(t),o.Z._createAt(s,0)),this.remove(i.Z._createOn(t)),s}clearClonedElementsGroup(e){this._cloneGroups.delete(e)}createPositionAt(e,t){return o.Z._createAt(e,t)}createPositionAfter(e){return o.Z._createAfter(e)}createPositionBefore(e){return o.Z._createBefore(e)}createRange(...e){return new i.Z(...e)}createRangeOn(e){return i.Z._createOn(e)}createRangeIn(e){return i.Z._createIn(e)}createSelection(...e){return new r.Z(...e)}createSlot(e){if(!this._slotFactory)throw new h.ZP("view-writer-invalid-create-slot-context",this.document);return this._slotFactory(this,e)}_registerSlotFactory(e){this._slotFactory=e}_clearSlotFactory(){this._slotFactory=null}_insertNodes(e,t,s){let o,r;if(o=s?b(e):e.parent.is("$text")?e.parent.parent:e.parent,!o)throw new h.ZP("view-writer-invalid-position-container",this.document);r=s?this._breakAttributes(e,!0):e.parent.is("$text")?v(e):e;const n=o._insertChild(r.offset,t);for(const e of t)this._addToClonedElementsGroup(e);const a=r.getShiftedBy(n),c=this.mergeAttributes(r);c.isEqual(r)||a.offset--;const l=this.mergeAttributes(a);return new i.Z(c,l)}_wrapChildren(e,t,s,r){let n=t;const a=[];for(;n<s;){const t=e.getChild(n),s=t.is("$text"),i=t.is("attributeElement");if(i&&this._wrapAttributeElement(r,t))a.push(new o.Z(e,n));else if(s||!i||_(r,t)){const s=r._clone();t._remove(),s._appendChild(t),e._insertChild(n,s),this._addToClonedElementsGroup(s),a.push(new o.Z(e,n))}else this._wrapChildren(t,0,t.childCount,r);n++}let c=0;for(const e of a){if(e.offset-=c,e.offset==t)continue;this.mergeAttributes(e).isEqual(e)||(c++,s--)}return i.Z._createFromParentsAndOffsets(e,t,e,s)}_unwrapChildren(e,t,s,r){let n=t;const a=[];for(;n<s;){const t=e.getChild(n);if(t.is("attributeElement"))if(t.isSimilar(r)){const i=t.getChildren(),r=t.childCount;t._remove(),e._insertChild(n,i),this._removeFromClonedElementsGroup(t),a.push(new o.Z(e,n),new o.Z(e,n+r)),n+=r,s+=r-1}else this._unwrapAttributeElement(r,t)?(a.push(new o.Z(e,n),new o.Z(e,n+1)),n++):(this._unwrapChildren(t,0,t.childCount,r),n++);else n++}let c=0;for(const e of a){if(e.offset-=c,e.offset==t||e.offset==s)continue;this.mergeAttributes(e).isEqual(e)||(c++,s--)}return i.Z._createFromParentsAndOffsets(e,t,e,s)}_wrapRange(e,t){const{start:s,end:o}=this._breakAttributesRange(e,!0),r=s.parent,n=this._wrapChildren(r,s.offset,o.offset,t),a=this.mergeAttributes(n.start);a.isEqual(n.start)||n.end.offset--;const c=this.mergeAttributes(n.end);return new i.Z(a,c)}_wrapPosition(e,t){if(t.isSimilar(e.parent))return w(e.clone());e.parent.is("$text")&&(e=v(e));const s=this.createAttributeElement("_wrapPosition-fake-element");s._priority=Number.POSITIVE_INFINITY,s.isSimilar=()=>!1,e.parent._insertChild(e.offset,s);const r=new i.Z(e,e.getShiftedBy(1));this.wrap(r,t);const n=new o.Z(s.parent,s.index);s._remove();const a=n.nodeBefore,c=n.nodeAfter;return a instanceof g.Z&&c instanceof g.Z?y(a,c):w(n)}_wrapAttributeElement(e,t){if(!A(e,t))return!1;if(e.name!==t.name||e.priority!==t.priority)return!1;for(const s of e.getAttributeKeys())if("class"!==s&&"style"!==s&&t.hasAttribute(s)&&t.getAttribute(s)!==e.getAttribute(s))return!1;for(const s of e.getStyleNames())if(t.hasStyle(s)&&t.getStyle(s)!==e.getStyle(s))return!1;for(const s of e.getAttributeKeys())"class"!==s&&"style"!==s&&(t.hasAttribute(s)||this.setAttribute(s,e.getAttribute(s),t));for(const s of e.getStyleNames())t.hasStyle(s)||this.setStyle(s,e.getStyle(s),t);for(const s of e.getClassNames())t.hasClass(s)||this.addClass(s,t);return!0}_unwrapAttributeElement(e,t){if(!A(e,t))return!1;if(e.name!==t.name||e.priority!==t.priority)return!1;for(const s of e.getAttributeKeys())if("class"!==s&&"style"!==s&&(!t.hasAttribute(s)||t.getAttribute(s)!==e.getAttribute(s)))return!1;if(!t.hasClass(...e.getClassNames()))return!1;for(const s of e.getStyleNames())if(!t.hasStyle(s)||t.getStyle(s)!==e.getStyle(s))return!1;for(const s of e.getAttributeKeys())"class"!==s&&"style"!==s&&this.removeAttribute(s,t);return this.removeClass(Array.from(e.getClassNames()),t),this.removeStyle(Array.from(e.getStyleNames()),t),!0}_breakAttributesRange(e,t=!1){const s=e.start,o=e.end;if(T(e,this.document),e.isCollapsed){const s=this._breakAttributes(e.start,t);return new i.Z(s,s)}const r=this._breakAttributes(o,t),n=r.parent.childCount,a=this._breakAttributes(s,t);return r.offset+=r.parent.childCount-n,new i.Z(a,r)}_breakAttributes(e,t=!1){const s=e.offset,i=e.parent;if(e.parent.is("emptyElement"))throw new h.ZP("view-writer-cannot-break-empty-element",this.document);if(e.parent.is("uiElement"))throw new h.ZP("view-writer-cannot-break-ui-element",this.document);if(e.parent.is("rawElement"))throw new h.ZP("view-writer-cannot-break-raw-element",this.document);if(!t&&i.is("$text")&&x(i.parent))return e.clone();if(x(i))return e.clone();if(i.is("$text"))return this._breakAttributes(v(e),t);if(s==i.childCount){const e=new o.Z(i.parent,i.index+1);return this._breakAttributes(e,t)}if(0===s){const e=new o.Z(i.parent,i.index);return this._breakAttributes(e,t)}{const e=i.index+1,r=i._clone();i.parent._insertChild(e,r),this._addToClonedElementsGroup(r);const n=i.childCount-s,a=i._removeChildren(s,n);r._appendChild(a);const c=new o.Z(i.parent,e);return this._breakAttributes(c,t)}}_addToClonedElementsGroup(e){if(!e.root.is("rootElement"))return;if(e.is("element"))for(const t of e.getChildren())this._addToClonedElementsGroup(t);const t=e.id;if(!t)return;let s=this._cloneGroups.get(t);s||(s=new Set,this._cloneGroups.set(t,s)),s.add(e),e._clonesGroup=s}_removeFromClonedElementsGroup(e){if(e.is("element"))for(const t of e.getChildren())this._removeFromClonedElementsGroup(t);const t=e.id;if(!t)return;const s=this._cloneGroups.get(t);s&&s.delete(e)}}function b(e){let t=e.parent;for(;!x(t);){if(!t)return;t=t.parent}return t}function _(e,t){return e.priority<t.priority||!(e.priority>t.priority)&&e.getIdentity()<t.getIdentity()}function w(e){const t=e.nodeBefore;if(t&&t.is("$text"))return new o.Z(t,t.data.length);const s=e.nodeAfter;return s&&s.is("$text")?new o.Z(s,0):e}function v(e){if(e.offset==e.parent.data.length)return new o.Z(e.parent.parent,e.parent.index+1);if(0===e.offset)return new o.Z(e.parent.parent,e.parent.index);const t=e.parent.data.slice(e.offset);return e.parent._data=e.parent.data.slice(0,e.offset),e.parent.parent._insertChild(e.parent.index+1,new g.Z(e.root.document,t)),new o.Z(e.parent.parent,e.parent.index+1)}function y(e,t){const s=e.data.length;return e._data+=t.data,t._remove(),new o.Z(e,s)}const Z=[g.Z,a.Z,n.Z,c.Z,d.Z,l.Z];function P(e,t){for(const s of e){if(!Z.some((e=>s instanceof e)))throw new h.ZP("view-writer-insert-invalid-node-type",t);s.is("$text")||P(s.getChildren(),t)}}function x(e){return e&&(e.is("containerElement")||e.is("documentFragment"))}function T(e,t){const s=b(e.start),o=b(e.end);if(!s||!o||s!==o)throw new h.ZP("view-writer-invalid-range-container",t)}function A(e,t){return null===e.id&&null===t.id}},"./packages/ckeditor5-engine/src/view/editableelement.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./packages/ckeditor5-engine/src/view/containerelement.ts"),i=s("./packages/ckeditor5-utils/src/observablemixin.ts");class r extends((0,i.Z)(o.Z)){constructor(...e){super(...e);const t=e[0];this.set("isReadOnly",!1),this.set("isFocused",!1),this.bind("isReadOnly").to(t),this.bind("isFocused").to(t,"isFocused",(e=>e&&t.selection.editableElement==this)),this.listenTo(t.selection,"change",(()=>{this.isFocused=t.isFocused&&t.selection.editableElement==this}))}destroy(){this.stopListening()}}r.prototype.is=function(e,t){return t?t===this.name&&("editableElement"===e||"view:editableElement"===e||"containerElement"===e||"view:containerElement"===e||"element"===e||"view:element"===e):"editableElement"===e||"view:editableElement"===e||"containerElement"===e||"view:containerElement"===e||"element"===e||"view:element"===e||"node"===e||"view:node"===e}},"./packages/ckeditor5-engine/src/view/element.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>u});var o=s("./packages/ckeditor5-engine/src/view/node.ts"),i=s("./packages/ckeditor5-engine/src/view/text.ts"),r=s("./packages/ckeditor5-engine/src/view/textproxy.ts"),n=s("./packages/ckeditor5-utils/src/tomap.ts"),a=s("./packages/ckeditor5-utils/src/toarray.ts"),c=s("./packages/ckeditor5-utils/src/isiterable.ts"),l=s("./packages/ckeditor5-engine/src/view/matcher.ts"),d=s("./packages/ckeditor5-engine/src/view/stylesmap.ts"),h=s("./node_modules/lodash-es/isPlainObject.js");class u extends o.Z{constructor(e,t,s,o){if(super(e),this.name=t,this._attrs=function(e){const t=(0,n.Z)(e);for(const[e,s]of t)null===s?t.delete(e):"string"!=typeof s&&t.set(e,String(s));return t}(s),this._children=[],o&&this._insertChild(0,o),this._classes=new Set,this._attrs.has("class")){const e=this._attrs.get("class");p(this._classes,e),this._attrs.delete("class")}this._styles=new d.Z(this.document.stylesProcessor),this._attrs.has("style")&&(this._styles.setTo(this._attrs.get("style")),this._attrs.delete("style")),this._customProperties=new Map,this._unsafeAttributesToRender=[]}get childCount(){return this._children.length}get isEmpty(){return 0===this._children.length}getChild(e){return this._children[e]}getChildIndex(e){return this._children.indexOf(e)}getChildren(){return this._children[Symbol.iterator]()}*getAttributeKeys(){this._classes.size>0&&(yield"class"),this._styles.isEmpty||(yield"style"),yield*this._attrs.keys()}*getAttributes(){yield*this._attrs.entries(),this._classes.size>0&&(yield["class",this.getAttribute("class")]),this._styles.isEmpty||(yield["style",this.getAttribute("style")])}getAttribute(e){if("class"==e)return this._classes.size>0?[...this._classes].join(" "):void 0;if("style"==e){const e=this._styles.toString();return""==e?void 0:e}return this._attrs.get(e)}hasAttribute(e){return"class"==e?this._classes.size>0:"style"==e?!this._styles.isEmpty:this._attrs.has(e)}isSimilar(e){if(!(e instanceof u))return!1;if(this===e)return!0;if(this.name!=e.name)return!1;if(this._attrs.size!==e._attrs.size||this._classes.size!==e._classes.size||this._styles.size!==e._styles.size)return!1;for(const[t,s]of this._attrs)if(!e._attrs.has(t)||e._attrs.get(t)!==s)return!1;for(const t of this._classes)if(!e._classes.has(t))return!1;for(const t of this._styles.getStyleNames())if(!e._styles.has(t)||e._styles.getAsString(t)!==this._styles.getAsString(t))return!1;return!0}hasClass(...e){for(const t of e)if(!this._classes.has(t))return!1;return!0}getClassNames(){return this._classes.keys()}getStyle(e){return this._styles.getAsString(e)}getNormalizedStyle(e){return this._styles.getNormalized(e)}getStyleNames(e){return this._styles.getStyleNames(e)}hasStyle(...e){for(const t of e)if(!this._styles.has(t))return!1;return!0}findAncestor(...e){const t=new l.Z(...e);let s=this.parent;for(;s&&!s.is("documentFragment");){if(t.match(s))return s;s=s.parent}return null}getCustomProperty(e){return this._customProperties.get(e)}*getCustomProperties(){yield*this._customProperties.entries()}getIdentity(){const e=Array.from(this._classes).sort().join(","),t=this._styles.toString(),s=Array.from(this._attrs).map((e=>`${e[0]}="${e[1]}"`)).sort().join(" ");return this.name+(""==e?"":` class="${e}"`)+(t?` style="${t}"`:"")+(""==s?"":` ${s}`)}shouldRenderUnsafeAttribute(e){return this._unsafeAttributesToRender.includes(e)}_clone(e=!1){const t=[];if(e)for(const s of this.getChildren())t.push(s._clone(e));const s=new this.constructor(this.document,this.name,this._attrs,t);return s._classes=new Set(this._classes),s._styles.set(this._styles.getNormalized()),s._customProperties=new Map(this._customProperties),s.getFillerOffset=this.getFillerOffset,s._unsafeAttributesToRender=this._unsafeAttributesToRender,s}_appendChild(e){return this._insertChild(this.childCount,e)}_insertChild(e,t){this._fireChange("children",this);let s=0;const o=function(e,t){if("string"==typeof t)return[new i.Z(e,t)];(0,c.Z)(t)||(t=[t]);return Array.from(t).map((t=>"string"==typeof t?new i.Z(e,t):t instanceof r.Z?new i.Z(e,t.data):t))}(this.document,t);for(const t of o)null!==t.parent&&t._remove(),t.parent=this,t.document=this.document,this._children.splice(e,0,t),e++,s++;return s}_removeChildren(e,t=1){this._fireChange("children",this);for(let s=e;s<e+t;s++)this._children[s].parent=null;return this._children.splice(e,t)}_setAttribute(e,t){t=String(t),this._fireChange("attributes",this),"class"==e?p(this._classes,t):"style"==e?this._styles.setTo(t):this._attrs.set(e,t)}_removeAttribute(e){return this._fireChange("attributes",this),"class"==e?this._classes.size>0&&(this._classes.clear(),!0):"style"==e?!this._styles.isEmpty&&(this._styles.clear(),!0):this._attrs.delete(e)}_addClass(e){this._fireChange("attributes",this);for(const t of(0,a.Z)(e))this._classes.add(t)}_removeClass(e){this._fireChange("attributes",this);for(const t of(0,a.Z)(e))this._classes.delete(t)}_setStyle(e,t){this._fireChange("attributes",this),(0,h.Z)(e)?this._styles.set(e):this._styles.set(e,t)}_removeStyle(e){this._fireChange("attributes",this);for(const t of(0,a.Z)(e))this._styles.remove(t)}_setCustomProperty(e,t){this._customProperties.set(e,t)}_removeCustomProperty(e){return this._customProperties.delete(e)}}function p(e,t){const s=t.split(/\s+/);e.clear(),s.forEach((t=>e.add(t)))}u.prototype.is=function(e,t){return t?t===this.name&&("element"===e||"view:element"===e):"element"===e||"view:element"===e||"node"===e||"view:node"===e}},"./packages/ckeditor5-engine/src/view/emptyelement.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>n});var o=s("./packages/ckeditor5-engine/src/view/element.ts"),i=s("./packages/ckeditor5-engine/src/view/node.ts"),r=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class n extends o.Z{constructor(e,t,s,o){super(e,t,s,o),this.getFillerOffset=a}_insertChild(e,t){if(t&&(t instanceof i.Z||Array.from(t).length>0))throw new r.ZP("view-emptyelement-cannot-add",[this,t]);return 0}}function a(){return null}n.prototype.is=function(e,t){return t?t===this.name&&("emptyElement"===e||"view:emptyElement"===e||"element"===e||"view:element"===e):"emptyElement"===e||"view:emptyElement"===e||"element"===e||"view:element"===e||"node"===e||"view:node"===e}},"./packages/ckeditor5-engine/src/view/filler.ts":(e,t,s)=>{"use strict";s.d(t,{N3:()=>r,PQ:()=>n,Pj:()=>l,Qh:()=>h,Sw:()=>d,b_:()=>c,mm:()=>p,th:()=>u,yl:()=>a});var o=s("./packages/ckeditor5-utils/src/keyboard.ts"),i=s("./packages/ckeditor5-utils/src/dom/istext.ts");const r=e=>e.createTextNode(" "),n=e=>{const t=e.createElement("span");return t.dataset.ckeFiller="true",t.innerText=" ",t},a=e=>{const t=e.createElement("br");return t.dataset.ckeFiller="true",t},c=7,l="⁠".repeat(c);function d(e){return(0,i.Z)(e)&&e.data.substr(0,c)===l}function h(e){return e.data.length==c&&d(e)}function u(e){return d(e)?e.data.slice(c):e.data}function p(e){e.document.on("arrowKey",g,{priority:"low"})}function g(e,t){if(t.keyCode==o.Do.arrowleft){const e=t.domTarget.ownerDocument.defaultView.getSelection();if(1==e.rangeCount&&e.getRangeAt(0).collapsed){const t=e.getRangeAt(0).startContainer,s=e.getRangeAt(0).startOffset;d(t)&&s<=c&&e.collapse(t,0)}}}},"./packages/ckeditor5-engine/src/view/matcher.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/lodash-es/isPlainObject.js"),i=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class r{constructor(...e){this._patterns=[],this.add(...e)}add(...e){for(let t of e)("string"==typeof t||t instanceof RegExp)&&(t={name:t}),this._patterns.push(t)}match(...e){for(const t of e)for(const e of this._patterns){const s=n(t,e);if(s)return{element:t,pattern:e,match:s}}return null}matchAll(...e){const t=[];for(const s of e)for(const e of this._patterns){const o=n(s,e);o&&t.push({element:s,pattern:e,match:o})}return t.length>0?t:null}getElementName(){if(1!==this._patterns.length)return null;const e=this._patterns[0],t=e.name;return"function"==typeof e||!t||t instanceof RegExp?null:t}}function n(e,t){if("function"==typeof t)return t(e);const s={};return t.name&&(s.name=function(e,t){if(e instanceof RegExp)return!!t.match(e);return e===t}(t.name,e.name),!s.name)||t.attributes&&(s.attributes=function(e,t){const s=new Set(t.getAttributeKeys());(0,o.Z)(e)?(void 0!==e.style&&(0,i.KE)("matcher-pattern-deprecated-attributes-style-key",e),void 0!==e.class&&(0,i.KE)("matcher-pattern-deprecated-attributes-class-key",e)):(s.delete("style"),s.delete("class"));return a(e,s,(e=>t.getAttribute(e)))}(t.attributes,e),!s.attributes)||t.classes&&(s.classes=function(e,t){return a(e,t.getClassNames(),(()=>{}))}(t.classes,e),!s.classes)||t.styles&&(s.styles=function(e,t){return a(e,t.getStyleNames(!0),(e=>t.getStyle(e)))}(t.styles,e),!s.styles)?null:s}function a(e,t,s){const r=function(e){if(Array.isArray(e))return e.map((e=>(0,o.Z)(e)?(void 0!==e.key&&void 0!==e.value||(0,i.KE)("matcher-pattern-missing-key-or-value",e),[e.key,e.value]):[e,!0]));if((0,o.Z)(e))return Object.entries(e);return[[e,!0]]}(e),n=Array.from(t),a=[];if(r.forEach((([e,t])=>{n.forEach((o=>{(function(e,t){return!0===e||e===t||e instanceof RegExp&&t.match(e)})(e,o)&&function(e,t,s){if(!0===e)return!0;const o=s(t);return e===o||e instanceof RegExp&&!!String(o).match(e)}(t,o,s)&&a.push(o)}))})),r.length&&!(a.length<r.length))return a}},"./packages/ckeditor5-engine/src/view/node.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>c});var o=s("./packages/ckeditor5-engine/src/view/typecheckable.ts"),i=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),r=s("./packages/ckeditor5-utils/src/emittermixin.ts"),n=s("./packages/ckeditor5-utils/src/comparearrays.ts"),a=s("./node_modules/lodash-es/clone.js");s("./packages/ckeditor5-utils/src/version.ts");class c extends((0,r.ZP)(o.Z)){constructor(e){super(),this.document=e,this.parent=null}get index(){let e;if(!this.parent)return null;if(-1==(e=this.parent.getChildIndex(this)))throw new i.ZP("view-node-not-found-in-parent",this);return e}get nextSibling(){const e=this.index;return null!==e&&this.parent.getChild(e+1)||null}get previousSibling(){const e=this.index;return null!==e&&this.parent.getChild(e-1)||null}get root(){let e=this;for(;e.parent;)e=e.parent;return e}isAttached(){return this.root.is("rootElement")}getPath(){const e=[];let t=this;for(;t.parent;)e.unshift(t.index),t=t.parent;return e}getAncestors(e={}){const t=[];let s=e.includeSelf?this:this.parent;for(;s;)t[e.parentFirst?"push":"unshift"](s),s=s.parent;return t}getCommonAncestor(e,t={}){const s=this.getAncestors(t),o=e.getAncestors(t);let i=0;for(;s[i]==o[i]&&s[i];)i++;return 0===i?null:s[i-1]}isBefore(e){if(this==e)return!1;if(this.root!==e.root)return!1;const t=this.getPath(),s=e.getPath(),o=(0,n.Z)(t,s);switch(o){case"prefix":return!0;case"extension":return!1;default:return t[o]<s[o]}}isAfter(e){return this!=e&&(this.root===e.root&&!this.isBefore(e))}_remove(){this.parent._removeChildren(this.index)}_fireChange(e,t){this.fire(`change:${e}`,t),this.parent&&this.parent._fireChange(e,t)}toJSON(){const e=(0,a.Z)(this);return delete e.parent,e}}c.prototype.is=function(e){return"node"===e||"view:node"===e}},"./packages/ckeditor5-engine/src/view/observer/bubblingeventinfo.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./packages/ckeditor5-utils/src/eventinfo.ts");class i extends o.Z{constructor(e,t,s){super(e,t),this.startRange=s,this._eventPhase="none",this._currentTarget=null}get eventPhase(){return this._eventPhase}get currentTarget(){return this._currentTarget}}},"./packages/ckeditor5-engine/src/view/observer/domeventdata.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./node_modules/lodash-es/assignIn.js");class i{constructor(e,t,s){this.view=e,this.document=e.document,this.domEvent=t,this.domTarget=t.target,(0,o.Z)(this,s)}get target(){return this.view.domConverter.mapDomToView(this.domTarget)}preventDefault(){this.domEvent.preventDefault()}stopPropagation(){this.domEvent.stopPropagation()}}},"./packages/ckeditor5-engine/src/view/observer/domeventobserver.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./packages/ckeditor5-engine/src/view/observer/observer.ts"),i=s("./packages/ckeditor5-engine/src/view/observer/domeventdata.ts");class r extends o.Z{constructor(e){super(e),this.useCapture=!1}observe(e){("string"==typeof this.domEventType?[this.domEventType]:this.domEventType).forEach((t=>{this.listenTo(e,t,((e,t)=>{this.isEnabled&&!this.checkShouldIgnoreEventFromTarget(t.target)&&this.onDomEvent(t)}),{useCapture:this.useCapture})}))}fire(e,t,s){this.isEnabled&&this.document.fire(e,new i.Z(this.view,t,s))}}},"./packages/ckeditor5-engine/src/view/observer/mouseobserver.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./packages/ckeditor5-engine/src/view/observer/domeventobserver.ts");class i extends o.Z{constructor(e){super(e),this.domEventType=["mousedown","mouseup","mouseover","mouseout"]}onDomEvent(e){this.fire(e.type,e)}}},"./packages/ckeditor5-engine/src/view/observer/observer.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./packages/ckeditor5-utils/src/dom/emittermixin.ts");class i extends o.Q{constructor(e){super(),this.view=e,this.document=e.document,this.isEnabled=!1}enable(){this.isEnabled=!0}disable(){this.isEnabled=!1}destroy(){this.disable(),this.stopListening()}checkShouldIgnoreEventFromTarget(e){return e&&3===e.nodeType&&(e=e.parentNode),!(!e||1!==e.nodeType)&&e.matches("[data-cke-ignore-events], [data-cke-ignore-events] *")}}},"./packages/ckeditor5-engine/src/view/position.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>c});var o=s("./packages/ckeditor5-engine/src/view/typecheckable.ts"),i=s("./packages/ckeditor5-utils/src/comparearrays.ts"),r=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),n=s("./packages/ckeditor5-engine/src/view/editableelement.ts"),a=(s("./packages/ckeditor5-utils/src/version.ts"),s("./packages/ckeditor5-engine/src/view/treewalker.ts"));class c extends o.Z{constructor(e,t){super(),this.parent=e,this.offset=t}get nodeAfter(){return this.parent.is("$text")?null:this.parent.getChild(this.offset)||null}get nodeBefore(){return this.parent.is("$text")?null:this.parent.getChild(this.offset-1)||null}get isAtStart(){return 0===this.offset}get isAtEnd(){const e=this.parent.is("$text")?this.parent.data.length:this.parent.childCount;return this.offset===e}get root(){return this.parent.root}get editableElement(){let e=this.parent;for(;!(e instanceof n.Z);){if(!e.parent)return null;e=e.parent}return e}getShiftedBy(e){const t=c._createAt(this),s=t.offset+e;return t.offset=s<0?0:s,t}getLastMatchingPosition(e,t={}){t.startPosition=this;const s=new a.Z(t);return s.skip(e),s.position}getAncestors(){return this.parent.is("documentFragment")?[this.parent]:this.parent.getAncestors({includeSelf:!0})}getCommonAncestor(e){const t=this.getAncestors(),s=e.getAncestors();let o=0;for(;t[o]==s[o]&&t[o];)o++;return 0===o?null:t[o-1]}isEqual(e){return this.parent==e.parent&&this.offset==e.offset}isBefore(e){return"before"==this.compareWith(e)}isAfter(e){return"after"==this.compareWith(e)}compareWith(e){if(this.root!==e.root)return"different";if(this.isEqual(e))return"same";const t=this.parent.is("node")?this.parent.getPath():[],s=e.parent.is("node")?e.parent.getPath():[];t.push(this.offset),s.push(e.offset);const o=(0,i.Z)(t,s);switch(o){case"prefix":return"before";case"extension":return"after";default:return t[o]<s[o]?"before":"after"}}getWalker(e={}){return e.startPosition=this,new a.Z(e)}clone(){return new c(this.parent,this.offset)}static _createAt(e,t){if(e instanceof c)return new this(e.parent,e.offset);{const s=e;if("end"==t)t=s.is("$text")?s.data.length:s.childCount;else{if("before"==t)return this._createBefore(s);if("after"==t)return this._createAfter(s);if(0!==t&&!t)throw new r.ZP("view-createpositionat-offset-required",s)}return new c(s,t)}}static _createAfter(e){if(e.is("$textProxy"))return new c(e.textNode,e.offsetInText+e.data.length);if(!e.parent)throw new r.ZP("view-position-after-root",e,{root:e});return new c(e.parent,e.index+1)}static _createBefore(e){if(e.is("$textProxy"))return new c(e.textNode,e.offsetInText);if(!e.parent)throw new r.ZP("view-position-before-root",e,{root:e});return new c(e.parent,e.index)}}c.prototype.is=function(e){return"position"===e||"view:position"===e}},"./packages/ckeditor5-engine/src/view/range.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>n});var o=s("./packages/ckeditor5-engine/src/view/typecheckable.ts"),i=s("./packages/ckeditor5-engine/src/view/position.ts"),r=s("./packages/ckeditor5-engine/src/view/treewalker.ts");class n extends o.Z{constructor(e,t=null){super(),this.start=e.clone(),this.end=t?t.clone():e.clone()}*[Symbol.iterator](){yield*new r.Z({boundaries:this,ignoreElementEnd:!0})}get isCollapsed(){return this.start.isEqual(this.end)}get isFlat(){return this.start.parent===this.end.parent}get root(){return this.start.root}getEnlarged(){let e=this.start.getLastMatchingPosition(a,{direction:"backward"}),t=this.end.getLastMatchingPosition(a);return e.parent.is("$text")&&e.isAtStart&&(e=i.Z._createBefore(e.parent)),t.parent.is("$text")&&t.isAtEnd&&(t=i.Z._createAfter(t.parent)),new n(e,t)}getTrimmed(){let e=this.start.getLastMatchingPosition(a);if(e.isAfter(this.end)||e.isEqual(this.end))return new n(e,e);let t=this.end.getLastMatchingPosition(a,{direction:"backward"});const s=e.nodeAfter,o=t.nodeBefore;return s&&s.is("$text")&&(e=new i.Z(s,0)),o&&o.is("$text")&&(t=new i.Z(o,o.data.length)),new n(e,t)}isEqual(e){return this==e||this.start.isEqual(e.start)&&this.end.isEqual(e.end)}containsPosition(e){return e.isAfter(this.start)&&e.isBefore(this.end)}containsRange(e,t=!1){e.isCollapsed&&(t=!1);const s=this.containsPosition(e.start)||t&&this.start.isEqual(e.start),o=this.containsPosition(e.end)||t&&this.end.isEqual(e.end);return s&&o}getDifference(e){const t=[];return this.isIntersecting(e)?(this.containsPosition(e.start)&&t.push(new n(this.start,e.start)),this.containsPosition(e.end)&&t.push(new n(e.end,this.end))):t.push(this.clone()),t}getIntersection(e){if(this.isIntersecting(e)){let t=this.start,s=this.end;return this.containsPosition(e.start)&&(t=e.start),this.containsPosition(e.end)&&(s=e.end),new n(t,s)}return null}getWalker(e={}){return e.boundaries=this,new r.Z(e)}getCommonAncestor(){return this.start.getCommonAncestor(this.end)}getContainedElement(){if(this.isCollapsed)return null;let e=this.start.nodeAfter,t=this.end.nodeBefore;return this.start.parent.is("$text")&&this.start.isAtEnd&&this.start.parent.nextSibling&&(e=this.start.parent.nextSibling),this.end.parent.is("$text")&&this.end.isAtStart&&this.end.parent.previousSibling&&(t=this.end.parent.previousSibling),e&&e.is("element")&&e===t?e:null}clone(){return new n(this.start,this.end)}*getItems(e={}){e.boundaries=this,e.ignoreElementEnd=!0;const t=new r.Z(e);for(const e of t)yield e.item}*getPositions(e={}){e.boundaries=this;const t=new r.Z(e);yield t.position;for(const e of t)yield e.nextPosition}isIntersecting(e){return this.start.isBefore(e.end)&&this.end.isAfter(e.start)}static _createFromParentsAndOffsets(e,t,s,o){return new this(new i.Z(e,t),new i.Z(s,o))}static _createFromPositionAndShift(e,t){const s=e,o=e.getShiftedBy(t);return t>0?new this(s,o):new this(o,s)}static _createIn(e){return this._createFromParentsAndOffsets(e,0,e,e.childCount)}static _createOn(e){const t=e.is("$textProxy")?e.offsetSize:1;return this._createFromPositionAndShift(i.Z._createBefore(e),t)}}function a(e){return!(!e.item.is("attributeElement")&&!e.item.is("uiElement"))}n.prototype.is=function(e){return"range"===e||"view:range"===e}},"./packages/ckeditor5-engine/src/view/rawelement.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>n});var o=s("./packages/ckeditor5-engine/src/view/element.ts"),i=s("./packages/ckeditor5-engine/src/view/node.ts"),r=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class n extends o.Z{constructor(...e){super(...e),this.getFillerOffset=a}_insertChild(e,t){if(t&&(t instanceof i.Z||Array.from(t).length>0))throw new r.ZP("view-rawelement-cannot-add",[this,t]);return 0}render(){}}function a(){return null}n.prototype.is=function(e,t){return t?t===this.name&&("rawElement"===e||"view:rawElement"===e||"element"===e||"view:element"===e):"rawElement"===e||"view:rawElement"===e||e===this.name||e==="view:"+this.name||"element"===e||"view:element"===e||"node"===e||"view:node"===e}},"./packages/ckeditor5-engine/src/view/renderer.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>w});var o=s("./packages/ckeditor5-engine/src/view/text.ts"),i=s("./packages/ckeditor5-engine/src/view/position.ts"),r=s("./packages/ckeditor5-engine/src/view/filler.ts"),n=s("./packages/ckeditor5-utils/src/diff.ts");function a(e,t,s){e.insertBefore(s,e.childNodes[t]||null)}function c(e){const t=e.parentNode;t&&t.removeChild(e)}var l=s("./packages/ckeditor5-utils/src/observablemixin.ts"),d=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),h=s("./packages/ckeditor5-utils/src/dom/istext.ts"),u=s("./packages/ckeditor5-utils/src/dom/iscomment.ts"),p=s("./packages/ckeditor5-utils/src/dom/isnode.ts"),g=s("./packages/ckeditor5-utils/src/fastdiff.ts"),f=s("./packages/ckeditor5-utils/src/env.ts"),m=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),k=s.n(m),b=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-engine/theme/renderer.css"),_={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};k()(b.Z,_);b.Z.locals;class w extends l.y{constructor(e,t){super(),this.domDocuments=new Set,this.domConverter=e,this.markedAttributes=new Set,this.markedChildren=new Set,this.markedTexts=new Set,this.selection=t,this.set("isFocused",!1),this.set("isSelecting",!1),f.ZP.isBlink&&!f.ZP.isAndroid&&this.on("change:isSelecting",(()=>{this.isSelecting||this.render()})),this._inlineFiller=null,this._fakeSelectionContainer=null}markToSync(e,t){if("text"===e)this.domConverter.mapViewToDom(t.parent)&&this.markedTexts.add(t);else{if(!this.domConverter.mapViewToDom(t))return;if("attributes"===e)this.markedAttributes.add(t);else{if("children"!==e)throw new d.ZP("view-renderer-unknown-type",this);this.markedChildren.add(t)}}}render(){let e=null;const t=!(f.ZP.isBlink&&!f.ZP.isAndroid)||!this.isSelecting;for(const e of this.markedChildren)this._updateChildrenMappings(e);t?(this._inlineFiller&&!this._isSelectionInInlineFiller()&&this._removeInlineFiller(),this._inlineFiller?e=this._getInlineFillerPosition():this._needsInlineFillerAtSelection()&&(e=this.selection.getFirstPosition(),this.markedChildren.add(e.parent))):this._inlineFiller&&this._inlineFiller.parentNode&&(e=this.domConverter.domPositionToView(this._inlineFiller),e&&e.parent.is("$text")&&(e=i.Z._createBefore(e.parent)));for(const e of this.markedAttributes)this._updateAttrs(e);for(const t of this.markedChildren)this._updateChildren(t,{inlineFillerPosition:e});for(const t of this.markedTexts)!this.markedChildren.has(t.parent)&&this.domConverter.mapViewToDom(t.parent)&&this._updateText(t,{inlineFillerPosition:e});if(t)if(e){const t=this.domConverter.viewPositionToDom(e),s=t.parent.ownerDocument;(0,r.Sw)(t.parent)?this._inlineFiller=t.parent:this._inlineFiller=v(s,t.parent,t.offset)}else this._inlineFiller=null;this._updateFocus(),this._updateSelection(),this.markedTexts.clear(),this.markedAttributes.clear(),this.markedChildren.clear()}_updateChildrenMappings(e){if(!this.domConverter.mapViewToDom(e))return;const t=Array.from(this.domConverter.mapViewToDom(e).childNodes),s=Array.from(this.domConverter.viewChildrenToDom(e,{withChildren:!1})),o=this._diffNodeLists(t,s),i=this._findReplaceActions(o,t,s);if(-1!==i.indexOf("replace")){const o={equal:0,insert:0,delete:0};for(const r of i)if("replace"===r){const i=o.equal+o.insert,r=o.equal+o.delete,n=e.getChild(i);!n||n.is("uiElement")||n.is("rawElement")||this._updateElementMappings(n,t[r]),c(s[i]),o.equal++}else o[r]++}}_updateElementMappings(e,t){this.domConverter.unbindDomElement(t),this.domConverter.bindElements(t,e),this.markedChildren.add(e),this.markedAttributes.add(e)}_getInlineFillerPosition(){const e=this.selection.getFirstPosition();return e.parent.is("$text")?i.Z._createBefore(e.parent):e}_isSelectionInInlineFiller(){if(1!=this.selection.rangeCount||!this.selection.isCollapsed)return!1;const e=this.selection.getFirstPosition(),t=this.domConverter.viewPositionToDom(e);return!!(t&&(0,h.Z)(t.parent)&&(0,r.Sw)(t.parent))}_removeInlineFiller(){const e=this._inlineFiller;if(!(0,r.Sw)(e))throw new d.ZP("view-renderer-filler-was-lost",this);(0,r.Qh)(e)?e.remove():e.data=e.data.substr(r.b_),this._inlineFiller=null}_needsInlineFillerAtSelection(){if(1!=this.selection.rangeCount||!this.selection.isCollapsed)return!1;const e=this.selection.getFirstPosition(),t=e.parent,s=e.offset;if(!this.domConverter.mapViewToDom(t.root))return!1;if(!t.is("element"))return!1;if(!function(e){if("false"==e.getAttribute("contenteditable"))return!1;const t=e.findAncestor((e=>e.hasAttribute("contenteditable")));return!t||"true"==t.getAttribute("contenteditable")}(t))return!1;if(s===t.getFillerOffset())return!1;const i=e.nodeBefore,r=e.nodeAfter;return!(i instanceof o.Z||r instanceof o.Z)}_updateText(e,t){const s=this.domConverter.findCorrespondingDomText(e),o=this.domConverter.viewToDom(e),i=s.data;let n=o.data;const a=t.inlineFillerPosition;if(a&&a.parent==e.parent&&a.offset==e.index&&(n=r.Pj+n),i!=n){const e=(0,g.Z)(i,n);for(const t of e)"insert"===t.type?s.insertData(t.index,t.values.join("")):s.deleteData(t.index,t.howMany)}}_updateAttrs(e){const t=this.domConverter.mapViewToDom(e);if(!t)return;const s=Array.from(t.attributes).map((e=>e.name)),o=e.getAttributeKeys();for(const s of o)this.domConverter.setDomElementAttribute(t,s,e.getAttribute(s),e);for(const o of s)e.hasAttribute(o)||this.domConverter.removeDomElementAttribute(t,o)}_updateChildren(e,t){const s=this.domConverter.mapViewToDom(e);if(!s)return;const o=t.inlineFillerPosition,i=this.domConverter.mapViewToDom(e).childNodes,r=Array.from(this.domConverter.viewChildrenToDom(e,{bind:!0}));o&&o.parent===e&&v(s.ownerDocument,r,o.offset);const n=this._diffNodeLists(i,r);let l=0;const d=new Set;for(const e of n)"delete"===e?(d.add(i[l]),c(i[l])):"equal"===e&&l++;l=0;for(const e of n)"insert"===e?(a(s,l,r[l]),l++):"equal"===e&&(this._markDescendantTextToSync(this.domConverter.domToView(r[l])),l++);for(const e of d)e.parentNode||this.domConverter.unbindDomElement(e)}_diffNodeLists(e,t){return e=function(e,t){const s=Array.from(e);if(0==s.length||!t)return s;s[s.length-1]==t&&s.pop();return s}(e,this._fakeSelectionContainer),(0,n.Z)(e,t,Z.bind(null,this.domConverter))}_findReplaceActions(e,t,s){if(-1===e.indexOf("insert")||-1===e.indexOf("delete"))return e;let o=[],i=[],r=[];const a={equal:0,insert:0,delete:0};for(const c of e)"insert"===c?r.push(s[a.equal+a.insert]):"delete"===c?i.push(t[a.equal+a.delete]):(o=o.concat((0,n.Z)(i,r,y).map((e=>"equal"===e?"replace":e))),o.push("equal"),i=[],r=[]),a[c]++;return o.concat((0,n.Z)(i,r,y).map((e=>"equal"===e?"replace":e)))}_markDescendantTextToSync(e){if(e)if(e.is("$text"))this.markedTexts.add(e);else if(e.is("element"))for(const t of e.getChildren())this._markDescendantTextToSync(t)}_updateSelection(){if(f.ZP.isBlink&&!f.ZP.isAndroid&&this.isSelecting&&!this.markedChildren.size)return;if(0===this.selection.rangeCount)return this._removeDomSelection(),void this._removeFakeSelection();const e=this.domConverter.mapViewToDom(this.selection.editableElement);this.isFocused&&e&&(this.selection.isFake?this._updateFakeSelection(e):(this._removeFakeSelection(),this._updateDomSelection(e)))}_updateFakeSelection(e){const t=e.ownerDocument;this._fakeSelectionContainer||(this._fakeSelectionContainer=function(e){const t=e.createElement("div");return t.className="ck-fake-selection-container",Object.assign(t.style,{position:"fixed",top:0,left:"-9999px",width:"42px"}),t.textContent=" ",t}(t));const s=this._fakeSelectionContainer;if(this.domConverter.bindFakeSelection(s,this.selection),!this._fakeSelectionNeedsUpdate(e))return;s.parentElement&&s.parentElement==e||e.appendChild(s),s.textContent=this.selection.fakeSelectionLabel||" ";const o=t.getSelection(),i=t.createRange();o.removeAllRanges(),i.selectNodeContents(s),o.addRange(i)}_updateDomSelection(e){const t=e.ownerDocument.defaultView.getSelection();if(!this._domSelectionNeedsUpdate(t))return;const s=this.domConverter.viewPositionToDom(this.selection.anchor),o=this.domConverter.viewPositionToDom(this.selection.focus);t.collapse(s.parent,s.offset),t.extend(o.parent,o.offset),f.ZP.isGecko&&function(e,t){const s=e.parent;if(s.nodeType!=Node.ELEMENT_NODE||e.offset!=s.childNodes.length-1)return;const o=s.childNodes[e.offset];o&&"BR"==o.tagName&&t.addRange(t.getRangeAt(0))}(o,t)}_domSelectionNeedsUpdate(e){if(!this.domConverter.isDomSelectionCorrect(e))return!0;const t=e&&this.domConverter.domSelectionToView(e);return(!t||!this.selection.isEqual(t))&&!(!this.selection.isCollapsed&&this.selection.isSimilar(t))}_fakeSelectionNeedsUpdate(e){const t=this._fakeSelectionContainer,s=e.ownerDocument.getSelection();return!t||t.parentElement!==e||(s.anchorNode!==t&&!t.contains(s.anchorNode)||t.textContent!==this.selection.fakeSelectionLabel)}_removeDomSelection(){for(const e of this.domDocuments){const t=e.getSelection();if(t.rangeCount){const s=e.activeElement,o=this.domConverter.mapDomToView(s);s&&o&&t.removeAllRanges()}}}_removeFakeSelection(){const e=this._fakeSelectionContainer;e&&e.remove()}_updateFocus(){if(this.isFocused){const e=this.selection.editableElement;e&&this.domConverter.focus(e)}}}function v(e,t,s){const o=t instanceof Array?t:t.childNodes,i=o[s];if((0,h.Z)(i))return i.data=r.Pj+i.data,i;{const i=e.createTextNode(r.Pj);return Array.isArray(t)?o.splice(s,0,i):a(t,s,i),i}}function y(e,t){return(0,p.Z)(e)&&(0,p.Z)(t)&&!(0,h.Z)(e)&&!(0,h.Z)(t)&&!(0,u.Z)(e)&&!(0,u.Z)(t)&&e.tagName.toLowerCase()===t.tagName.toLowerCase()}function Z(e,t,s){return t===s||((0,h.Z)(t)&&(0,h.Z)(s)?t.data===s.data:!(!e.isBlockFiller(t)||!e.isBlockFiller(s)))}},"./packages/ckeditor5-engine/src/view/selection.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>u});var o=s("./packages/ckeditor5-engine/src/view/typecheckable.ts"),i=s("./packages/ckeditor5-engine/src/view/range.ts"),r=s("./packages/ckeditor5-engine/src/view/position.ts"),n=s("./packages/ckeditor5-engine/src/view/node.ts"),a=s("./packages/ckeditor5-engine/src/view/documentselection.ts"),c=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),l=s("./packages/ckeditor5-utils/src/count.ts"),d=s("./packages/ckeditor5-utils/src/isiterable.ts"),h=s("./packages/ckeditor5-utils/src/emittermixin.ts");class u extends((0,h.ZP)(o.Z)){constructor(...e){super(),this._ranges=[],this._lastRangeBackward=!1,this._isFake=!1,this._fakeSelectionLabel="",e.length&&this.setTo(...e)}get isFake(){return this._isFake}get fakeSelectionLabel(){return this._fakeSelectionLabel}get anchor(){if(!this._ranges.length)return null;const e=this._ranges[this._ranges.length-1];return(this._lastRangeBackward?e.end:e.start).clone()}get focus(){if(!this._ranges.length)return null;const e=this._ranges[this._ranges.length-1];return(this._lastRangeBackward?e.start:e.end).clone()}get isCollapsed(){return 1===this.rangeCount&&this._ranges[0].isCollapsed}get rangeCount(){return this._ranges.length}get isBackward(){return!this.isCollapsed&&this._lastRangeBackward}get editableElement(){return this.anchor?this.anchor.editableElement:null}*getRanges(){for(const e of this._ranges)yield e.clone()}getFirstRange(){let e=null;for(const t of this._ranges)e&&!t.start.isBefore(e.start)||(e=t);return e?e.clone():null}getLastRange(){let e=null;for(const t of this._ranges)e&&!t.end.isAfter(e.end)||(e=t);return e?e.clone():null}getFirstPosition(){const e=this.getFirstRange();return e?e.start.clone():null}getLastPosition(){const e=this.getLastRange();return e?e.end.clone():null}isEqual(e){if(this.isFake!=e.isFake)return!1;if(this.isFake&&this.fakeSelectionLabel!=e.fakeSelectionLabel)return!1;if(this.rangeCount!=e.rangeCount)return!1;if(0===this.rangeCount)return!0;if(!this.anchor.isEqual(e.anchor)||!this.focus.isEqual(e.focus))return!1;for(const t of this._ranges){let s=!1;for(const o of e._ranges)if(t.isEqual(o)){s=!0;break}if(!s)return!1}return!0}isSimilar(e){if(this.isBackward!=e.isBackward)return!1;const t=(0,l.Z)(this.getRanges());if(t!=(0,l.Z)(e.getRanges()))return!1;if(0==t)return!0;for(let t of this.getRanges()){t=t.getTrimmed();let s=!1;for(let o of e.getRanges())if(o=o.getTrimmed(),t.start.isEqual(o.start)&&t.end.isEqual(o.end)){s=!0;break}if(!s)return!1}return!0}getSelectedElement(){return 1!==this.rangeCount?null:this.getFirstRange().getContainedElement()}setTo(...e){let[t,s,o]=e;if("object"==typeof s&&(o=s,s=void 0),null===t)this._setRanges([]),this._setFakeOptions(o);else if(t instanceof u||t instanceof a.Z)this._setRanges(t.getRanges(),t.isBackward),this._setFakeOptions({fake:t.isFake,label:t.fakeSelectionLabel});else if(t instanceof i.Z)this._setRanges([t],o&&o.backward),this._setFakeOptions(o);else if(t instanceof r.Z)this._setRanges([new i.Z(t)]),this._setFakeOptions(o);else if(t instanceof n.Z){const e=!!o&&!!o.backward;let n;if(void 0===s)throw new c.ZP("view-selection-setto-required-second-parameter",this);n="in"==s?i.Z._createIn(t):"on"==s?i.Z._createOn(t):new i.Z(r.Z._createAt(t,s)),this._setRanges([n],e),this._setFakeOptions(o)}else{if(!(0,d.Z)(t))throw new c.ZP("view-selection-setto-not-selectable",this);this._setRanges(t,o&&o.backward),this._setFakeOptions(o)}this.fire("change")}setFocus(e,t){if(null===this.anchor)throw new c.ZP("view-selection-setfocus-no-ranges",this);const s=r.Z._createAt(e,t);if("same"==s.compareWith(this.focus))return;const o=this.anchor;this._ranges.pop(),"before"==s.compareWith(o)?this._addRange(new i.Z(s,o),!0):this._addRange(new i.Z(o,s)),this.fire("change")}_setRanges(e,t=!1){e=Array.from(e),this._ranges=[];for(const t of e)this._addRange(t);this._lastRangeBackward=!!t}_setFakeOptions(e={}){this._isFake=!!e.fake,this._fakeSelectionLabel=e.fake&&e.label||""}_addRange(e,t=!1){if(!(e instanceof i.Z))throw new c.ZP("view-selection-add-range-not-range",this);this._pushRange(e),this._lastRangeBackward=!!t}_pushRange(e){for(const t of this._ranges)if(e.isIntersecting(t))throw new c.ZP("view-selection-range-intersects",this,{addedRange:e,intersectingRange:t});this._ranges.push(new i.Z(e.start,e.end))}}u.prototype.is=function(e){return"selection"===e||"view:selection"===e}},"./packages/ckeditor5-engine/src/view/stylesmap.ts":(e,t,s)=>{"use strict";s.d(t,{A:()=>ee,Z:()=>Y});var o=s("./node_modules/lodash-es/isObject.js"),i=s("./node_modules/lodash-es/isArray.js"),r=s("./node_modules/lodash-es/isSymbol.js"),n=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,a=/^\w*$/;const c=function(e,t){if((0,i.Z)(e))return!1;var s=typeof e;return!("number"!=s&&"symbol"!=s&&"boolean"!=s&&null!=e&&!(0,r.Z)(e))||(a.test(e)||!n.test(e)||null!=t&&e in Object(t))};var l=s("./node_modules/lodash-es/_MapCache.js");function d(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError("Expected a function");var s=function(){var o=arguments,i=t?t.apply(this,o):o[0],r=s.cache;if(r.has(i))return r.get(i);var n=e.apply(this,o);return s.cache=r.set(i,n)||r,n};return s.cache=new(d.Cache||l.Z),s}d.Cache=l.Z;const h=d;var u=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,p=/\\(\\)?/g;const g=function(e){var t=h(e,(function(e){return 500===s.size&&s.clear(),e})),s=t.cache;return t}((function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(u,(function(e,s,o,i){t.push(o?i.replace(p,"$1"):s||e)})),t}));var f=s("./node_modules/lodash-es/toString.js");const m=function(e,t){return(0,i.Z)(e)?e:c(e,t)?[e]:g((0,f.Z)(e))};const k=function(e){var t=null==e?0:e.length;return t?e[t-1]:void 0};const b=function(e){if("string"==typeof e||(0,r.Z)(e))return e;var t=e+"";return"0"==t&&1/e==-Infinity?"-0":t};const _=function(e,t){for(var s=0,o=(t=m(t,e)).length;null!=e&&s<o;)e=e[b(t[s++])];return s&&s==o?e:void 0};const w=function(e,t,s){var o=-1,i=e.length;t<0&&(t=-t>i?0:i+t),(s=s>i?i:s)<0&&(s+=i),i=t>s?0:s-t>>>0,t>>>=0;for(var r=Array(i);++o<i;)r[o]=e[o+t];return r};const v=function(e,t){return t.length<2?e:_(e,w(t,0,-1))};const y=function(e,t){return t=m(t,e),null==(e=v(e,t))||delete e[b(k(t))]};const Z=function(e,t){return null==e||y(e,t)};const P=function(e,t,s){var o=null==e?void 0:_(e,t);return void 0===o?s:o};var x=s("./node_modules/lodash-es/_Stack.js"),T=s("./node_modules/lodash-es/_baseAssignValue.js"),A=s("./node_modules/lodash-es/eq.js");const C=function(e,t,s){(void 0!==s&&!(0,A.Z)(e[t],s)||void 0===s&&!(t in e))&&(0,T.Z)(e,t,s)};const E=function(e){return function(t,s,o){for(var i=-1,r=Object(t),n=o(t),a=n.length;a--;){var c=n[e?a:++i];if(!1===s(r[c],c,r))break}return t}}();var S=s("./node_modules/lodash-es/_cloneBuffer.js"),j=s("./node_modules/lodash-es/_cloneTypedArray.js"),O=s("./node_modules/lodash-es/_copyArray.js"),R=s("./node_modules/lodash-es/_initCloneObject.js"),M=s("./node_modules/lodash-es/isArguments.js"),N=s("./node_modules/lodash-es/isArrayLike.js"),V=s("./node_modules/lodash-es/isObjectLike.js");const I=function(e){return(0,V.Z)(e)&&(0,N.Z)(e)};var D=s("./node_modules/lodash-es/isBuffer.js"),z=s("./node_modules/lodash-es/isFunction.js"),B=s("./node_modules/lodash-es/isPlainObject.js"),F=s("./node_modules/lodash-es/isTypedArray.js");const L=function(e,t){if(("constructor"!==t||"function"!=typeof e[t])&&"__proto__"!=t)return e[t]};var W=s("./node_modules/lodash-es/_copyObject.js"),$=s("./node_modules/lodash-es/keysIn.js");const q=function(e){return(0,W.Z)(e,(0,$.Z)(e))};const H=function(e,t,s,r,n,a,c){var l=L(e,s),d=L(t,s),h=c.get(d);if(h)C(e,s,h);else{var u=a?a(l,d,s+"",e,t,c):void 0,p=void 0===u;if(p){var g=(0,i.Z)(d),f=!g&&(0,D.Z)(d),m=!g&&!f&&(0,F.Z)(d);u=d,g||f||m?(0,i.Z)(l)?u=l:I(l)?u=(0,O.Z)(l):f?(p=!1,u=(0,S.Z)(d,!0)):m?(p=!1,u=(0,j.Z)(d,!0)):u=[]:(0,B.Z)(d)||(0,M.Z)(d)?(u=l,(0,M.Z)(l)?u=q(l):(0,o.Z)(l)&&!(0,z.Z)(l)||(u=(0,R.Z)(d))):p=!1}p&&(c.set(d,u),n(u,d,r,a,c),c.delete(d)),C(e,s,u)}};const U=function e(t,s,i,r,n){t!==s&&E(s,(function(a,c){if(n||(n=new x.Z),(0,o.Z)(a))H(t,s,c,i,e,r,n);else{var l=r?r(L(t,c),a,c+"",t,s,n):void 0;void 0===l&&(l=a),C(t,c,l)}}),$.Z)};const K=(0,s("./node_modules/lodash-es/_createAssigner.js").Z)((function(e,t,s){U(e,t,s)}));var G=s("./node_modules/lodash-es/_assignValue.js"),J=s("./node_modules/lodash-es/_isIndex.js");const Q=function(e,t,s,i){if(!(0,o.Z)(e))return e;for(var r=-1,n=(t=m(t,e)).length,a=n-1,c=e;null!=c&&++r<n;){var l=b(t[r]),d=s;if("__proto__"===l||"constructor"===l||"prototype"===l)return e;if(r!=a){var h=c[l];void 0===(d=i?i(h,l,c):void 0)&&(d=(0,o.Z)(h)?h:(0,J.Z)(t[r+1])?[]:{})}(0,G.Z)(c,l,d),c=c[l]}return e};const X=function(e,t,s){return null==e?e:Q(e,t,s)};class Y{constructor(e){this._styles={},this._styleProcessor=e}get isEmpty(){const e=Object.entries(this._styles);return!Array.from(e).length}get size(){return this.isEmpty?0:this.getStyleNames().length}setTo(e){this.clear();const t=Array.from(function(e){let t=null,s=0,o=0,i=null;const r=new Map;if(""===e)return r;";"!=e.charAt(e.length-1)&&(e+=";");for(let n=0;n<e.length;n++){const a=e.charAt(n);if(null===t)switch(a){case":":i||(i=e.substr(s,n-s),o=n+1);break;case'"':case"'":t=a;break;case";":{const t=e.substr(o,n-o);i&&r.set(i.trim(),t.trim()),i=null,s=n+1;break}}else a===t&&(t=null)}return r}(e).entries());for(const[e,s]of t)this._styleProcessor.toNormalizedForm(e,s,this._styles)}has(e){if(this.isEmpty)return!1;const t=this._styleProcessor.getReducedForm(e,this._styles).find((([t])=>t===e));return Array.isArray(t)}set(e,t){if((0,o.Z)(e))for(const[t,s]of Object.entries(e))this._styleProcessor.toNormalizedForm(t,s,this._styles);else this._styleProcessor.toNormalizedForm(e,t,this._styles)}remove(e){const t=te(e);Z(this._styles,t),delete this._styles[e],this._cleanEmptyObjectsOnPath(t)}getNormalized(e){return this._styleProcessor.getNormalized(e,this._styles)}toString(){return this.isEmpty?"":this._getStylesEntries().map((e=>e.join(":"))).sort().join(";")+";"}getAsString(e){if(this.isEmpty)return;if(this._styles[e]&&!(0,o.Z)(this._styles[e]))return this._styles[e];const t=this._styleProcessor.getReducedForm(e,this._styles).find((([t])=>t===e));return Array.isArray(t)?t[1]:void 0}getStyleNames(e=!1){if(this.isEmpty)return[];if(e)return this._styleProcessor.getStyleNames(this._styles);return this._getStylesEntries().map((([e])=>e))}clear(){this._styles={}}_getStylesEntries(){const e=[],t=Object.keys(this._styles);for(const s of t)e.push(...this._styleProcessor.getReducedForm(s,this._styles));return e}_cleanEmptyObjectsOnPath(e){const t=e.split(".");if(!(t.length>1))return;const s=t.splice(0,t.length-1).join("."),o=P(this._styles,s);if(!o)return;!Array.from(Object.keys(o)).length&&this.remove(s)}}class ee{constructor(){this._normalizers=new Map,this._extractors=new Map,this._reducers=new Map,this._consumables=new Map}toNormalizedForm(e,t,s){if((0,o.Z)(t))se(s,te(e),t);else if(this._normalizers.has(e)){const o=this._normalizers.get(e),{path:i,value:r}=o(t);se(s,i,r)}else se(s,e,t)}getNormalized(e,t){if(!e)return K({},t);if(void 0!==t[e])return t[e];if(this._extractors.has(e)){const s=this._extractors.get(e);if("string"==typeof s)return P(t,s);const o=s(e,t);if(o)return o}return P(t,te(e))}getReducedForm(e,t){const s=this.getNormalized(e,t);if(void 0===s)return[];if(this._reducers.has(e)){return this._reducers.get(e)(s)}return[[e,s]]}getStyleNames(e){const t=Array.from(this._consumables.keys()).filter((t=>{const s=this.getNormalized(t,e);return s&&"object"==typeof s?Object.keys(s).length:s})),s=new Set([...t,...Object.keys(e)]);return Array.from(s.values())}getRelatedStyles(e){return this._consumables.get(e)||[]}setNormalizer(e,t){this._normalizers.set(e,t)}setExtractor(e,t){this._extractors.set(e,t)}setReducer(e,t){this._reducers.set(e,t)}setStyleRelation(e,t){this._mapStyleNames(e,t);for(const s of t)this._mapStyleNames(s,[e])}_mapStyleNames(e,t){this._consumables.has(e)||this._consumables.set(e,[]),this._consumables.get(e).push(...t)}}function te(e){return e.replace("-",".")}function se(e,t,s){let i=s;(0,o.Z)(s)&&(i=K({},P(e,t),s)),X(e,t,i)}},"./packages/ckeditor5-engine/src/view/text.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./packages/ckeditor5-engine/src/view/node.ts");class i extends o.Z{constructor(e,t){super(e),this._textData=t}get data(){return this._textData}get _data(){return this.data}set _data(e){this._fireChange("text",this),this._textData=e}isSimilar(e){return e instanceof i&&(this===e||this.data===e.data)}_clone(){return new i(this.document,this.data)}}i.prototype.is=function(e){return"$text"===e||"view:$text"===e||"text"===e||"view:text"===e||"node"===e||"view:node"===e}},"./packages/ckeditor5-engine/src/view/textproxy.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./packages/ckeditor5-engine/src/view/typecheckable.ts"),i=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class r extends o.Z{constructor(e,t,s){if(super(),this.textNode=e,t<0||t>e.data.length)throw new i.ZP("view-textproxy-wrong-offsetintext",this);if(s<0||t+s>e.data.length)throw new i.ZP("view-textproxy-wrong-length",this);this.data=e.data.substring(t,t+s),this.offsetInText=t}get offsetSize(){return this.data.length}get isPartial(){return this.data.length!==this.textNode.data.length}get parent(){return this.textNode.parent}get root(){return this.textNode.root}get document(){return this.textNode.document}getAncestors(e={}){const t=[];let s=e.includeSelf?this.textNode:this.parent;for(;null!==s;)t[e.parentFirst?"push":"unshift"](s),s=s.parent;return t}}r.prototype.is=function(e){return"$textProxy"===e||"view:$textProxy"===e||"textProxy"===e||"view:textProxy"===e}},"./packages/ckeditor5-engine/src/view/treewalker.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>c});var o=s("./packages/ckeditor5-engine/src/view/element.ts"),i=s("./packages/ckeditor5-engine/src/view/text.ts"),r=s("./packages/ckeditor5-engine/src/view/textproxy.ts"),n=s("./packages/ckeditor5-engine/src/view/position.ts"),a=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class c{constructor(e={}){if(!e.boundaries&&!e.startPosition)throw new a.ZP("view-tree-walker-no-start-position",null);if(e.direction&&"forward"!=e.direction&&"backward"!=e.direction)throw new a.ZP("view-tree-walker-unknown-direction",e.startPosition,{direction:e.direction});this.boundaries=e.boundaries||null,e.startPosition?this.position=n.Z._createAt(e.startPosition):this.position=n.Z._createAt(e.boundaries["backward"==e.direction?"end":"start"]),this.direction=e.direction||"forward",this.singleCharacters=!!e.singleCharacters,this.shallow=!!e.shallow,this.ignoreElementEnd=!!e.ignoreElementEnd,this._boundaryStartParent=this.boundaries?this.boundaries.start.parent:null,this._boundaryEndParent=this.boundaries?this.boundaries.end.parent:null}[Symbol.iterator](){return this}skip(e){let t,s,o;do{o=this.position,({done:t,value:s}=this.next())}while(!t&&e(s));t||(this.position=o)}next(){return"forward"==this.direction?this._next():this._previous()}_next(){let e=this.position.clone();const t=this.position,s=e.parent;if(null===s.parent&&e.offset===s.childCount)return{done:!0,value:void 0};if(s===this._boundaryEndParent&&e.offset==this.boundaries.end.offset)return{done:!0,value:void 0};let a;if(s instanceof i.Z){if(e.isAtEnd)return this.position=n.Z._createAfter(s),this._next();a=s.data[e.offset]}else a=s.getChild(e.offset);if(a instanceof o.Z)return this.shallow?e.offset++:e=new n.Z(a,0),this.position=e,this._formatReturnValue("elementStart",a,t,e,1);if(a instanceof i.Z){if(this.singleCharacters)return e=new n.Z(a,0),this.position=e,this._next();{let s,o=a.data.length;return a==this._boundaryEndParent?(o=this.boundaries.end.offset,s=new r.Z(a,0,o),e=n.Z._createAfter(s)):(s=new r.Z(a,0,a.data.length),e.offset++),this.position=e,this._formatReturnValue("text",s,t,e,o)}}if("string"==typeof a){let o;if(this.singleCharacters)o=1;else{o=(s===this._boundaryEndParent?this.boundaries.end.offset:s.data.length)-e.offset}const i=new r.Z(s,e.offset,o);return e.offset+=o,this.position=e,this._formatReturnValue("text",i,t,e,o)}return e=n.Z._createAfter(s),this.position=e,this.ignoreElementEnd?this._next():this._formatReturnValue("elementEnd",s,t,e)}_previous(){let e=this.position.clone();const t=this.position,s=e.parent;if(null===s.parent&&0===e.offset)return{done:!0,value:void 0};if(s==this._boundaryStartParent&&e.offset==this.boundaries.start.offset)return{done:!0,value:void 0};let a;if(s instanceof i.Z){if(e.isAtStart)return this.position=n.Z._createBefore(s),this._previous();a=s.data[e.offset-1]}else a=s.getChild(e.offset-1);if(a instanceof o.Z)return this.shallow?(e.offset--,this.position=e,this._formatReturnValue("elementStart",a,t,e,1)):(e=new n.Z(a,a.childCount),this.position=e,this.ignoreElementEnd?this._previous():this._formatReturnValue("elementEnd",a,t,e));if(a instanceof i.Z){if(this.singleCharacters)return e=new n.Z(a,a.data.length),this.position=e,this._previous();{let s,o=a.data.length;if(a==this._boundaryStartParent){const t=this.boundaries.start.offset;s=new r.Z(a,t,a.data.length-t),o=s.data.length,e=n.Z._createBefore(s)}else s=new r.Z(a,0,a.data.length),e.offset--;return this.position=e,this._formatReturnValue("text",s,t,e,o)}}if("string"==typeof a){let o;if(this.singleCharacters)o=1;else{const t=s===this._boundaryStartParent?this.boundaries.start.offset:0;o=e.offset-t}e.offset-=o;const i=new r.Z(s,e.offset,o);return this.position=e,this._formatReturnValue("text",i,t,e,o)}return e=n.Z._createBefore(s),this.position=e,this._formatReturnValue("elementStart",s,t,e,1)}_formatReturnValue(e,t,s,o,i){return t instanceof r.Z&&(t.offsetInText+t.data.length==t.textNode.data.length&&("forward"!=this.direction||this.boundaries&&this.boundaries.end.isEqual(this.position)?s=n.Z._createAfter(t.textNode):(o=n.Z._createAfter(t.textNode),this.position=o)),0===t.offsetInText&&("backward"!=this.direction||this.boundaries&&this.boundaries.start.isEqual(this.position)?s=n.Z._createBefore(t.textNode):(o=n.Z._createBefore(t.textNode),this.position=o))),{done:!1,value:{type:e,item:t,previousPosition:s,nextPosition:o,length:i}}}}},"./packages/ckeditor5-engine/src/view/typecheckable.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});class o{is(){throw new Error("is() method is abstract")}}},"./packages/ckeditor5-engine/src/view/uielement.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>a,h:()=>c});var o=s("./packages/ckeditor5-engine/src/view/element.ts"),i=s("./packages/ckeditor5-engine/src/view/node.ts"),r=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),n=s("./packages/ckeditor5-utils/src/keyboard.ts");class a extends o.Z{constructor(...e){super(...e),this.getFillerOffset=l}_insertChild(e,t){if(t&&(t instanceof i.Z||Array.from(t).length>0))throw new r.ZP("view-uielement-cannot-add",[this,t]);return 0}render(e,t){return this.toDomElement(e)}toDomElement(e){const t=e.createElement(this.name);for(const e of this.getAttributeKeys())t.setAttribute(e,this.getAttribute(e));return t}}function c(e){e.document.on("arrowKey",((t,s)=>function(e,t,s){if(t.keyCode==n.Do.arrowright){const e=t.domTarget.ownerDocument.defaultView.getSelection(),o=1==e.rangeCount&&e.getRangeAt(0).collapsed;if(o||t.shiftKey){const t=e.focusNode,i=e.focusOffset,r=s.domPositionToView(t,i);if(null===r)return;let n=!1;const a=r.getLastMatchingPosition((e=>(e.item.is("uiElement")&&(n=!0),!(!e.item.is("uiElement")&&!e.item.is("attributeElement")))));if(n){const t=s.viewPositionToDom(a);o?e.collapse(t.parent,t.offset):e.extend(t.parent,t.offset)}}}}(0,s,e.domConverter)),{priority:"low"})}function l(){return null}a.prototype.is=function(e,t){return t?t===this.name&&("uiElement"===e||"view:uiElement"===e||"element"===e||"view:element"===e):"uiElement"===e||"view:uiElement"===e||"element"===e||"view:element"===e||"node"===e||"view:node"===e}},"./packages/ckeditor5-utils/src/ckeditorerror.ts":(e,t,s)=>{"use strict";s.d(t,{H:()=>r,KE:()=>i,ZP:()=>o});class o extends Error{constructor(e,t,s){super(function(e,t){const s=new WeakSet,o=(e,t)=>{if("object"==typeof t&&null!==t){if(s.has(t))return`[object ${t.constructor.name}]`;s.add(t)}return t},i=t?` ${JSON.stringify(t,o)}`:"",r=n(e);return e+i+r}(e,s)),this.name="CKEditorError",this.context=t,this.data=s}is(e){return"CKEditorError"===e}static rethrowUnexpectedError(e,t){if(e.is&&e.is("CKEditorError"))throw e;const s=new o(e.message,t);throw s.stack=e.stack,s}}function i(e,t){console.warn(...a(e,t))}function r(e,t){console.error(...a(e,t))}function n(e){return`\nRead more: https://ckeditor.com/docs/ckeditor5/latest/support/error-codes.html#error-${e}`}function a(e,t){const s=n(e);return t?[e,t,s]:[e,s]}},"./packages/ckeditor5-utils/src/collection.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>a});var o=s("./packages/ckeditor5-utils/src/emittermixin.ts"),i=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),r=s("./packages/ckeditor5-utils/src/uid.ts"),n=s("./packages/ckeditor5-utils/src/isiterable.ts");class a extends o.Q5{constructor(e={},t={}){super();const s=(0,n.Z)(e);if(s||(t=e),this._items=[],this._itemMap=new Map,this._idProperty=t.idProperty||"id",this._bindToExternalToInternalMap=new WeakMap,this._bindToInternalToExternalMap=new WeakMap,this._skippedIndexesFromExternal=[],s)for(const t of e)this._items.push(t),this._itemMap.set(this._getItemIdBeforeAdding(t),t)}get length(){return this._items.length}get first(){return this._items[0]||null}get last(){return this._items[this.length-1]||null}add(e,t){return this.addMany([e],t)}addMany(e,t){if(void 0===t)t=this._items.length;else if(t>this._items.length||t<0)throw new i.ZP("collection-add-item-invalid-index",this);let s=0;for(const o of e){const e=this._getItemIdBeforeAdding(o),i=t+s;this._items.splice(i,0,o),this._itemMap.set(e,o),this.fire("add",o,i),s++}return this.fire("change",{added:e,removed:[],index:t}),this}get(e){let t;if("string"==typeof e)t=this._itemMap.get(e);else{if("number"!=typeof e)throw new i.ZP("collection-get-invalid-arg",this);t=this._items[e]}return t||null}has(e){if("string"==typeof e)return this._itemMap.has(e);{const t=e[this._idProperty];return t&&this._itemMap.has(t)}}getIndex(e){let t;return t="string"==typeof e?this._itemMap.get(e):e,t?this._items.indexOf(t):-1}remove(e){const[t,s]=this._remove(e);return this.fire("change",{added:[],removed:[t],index:s}),t}map(e,t){return this._items.map(e,t)}find(e,t){return this._items.find(e,t)}filter(e,t){return this._items.filter(e,t)}clear(){this._bindToCollection&&(this.stopListening(this._bindToCollection),this._bindToCollection=null);const e=Array.from(this._items);for(;this.length;)this._remove(0);this.fire("change",{added:[],removed:e,index:0})}bindTo(e){if(this._bindToCollection)throw new i.ZP("collection-bind-to-rebind",this);return this._bindToCollection=e,{as:e=>{this._setUpBindToBinding((t=>new e(t)))},using:e=>{"function"==typeof e?this._setUpBindToBinding(e):this._setUpBindToBinding((t=>t[e]))}}}_setUpBindToBinding(e){const t=this._bindToCollection,s=(s,o,i)=>{const r=t._bindToCollection==this,n=t._bindToInternalToExternalMap.get(o);if(r&&n)this._bindToExternalToInternalMap.set(o,n),this._bindToInternalToExternalMap.set(n,o);else{const s=e(o);if(!s)return void this._skippedIndexesFromExternal.push(i);let r=i;for(const e of this._skippedIndexesFromExternal)i>e&&r--;for(const e of t._skippedIndexesFromExternal)r>=e&&r++;this._bindToExternalToInternalMap.set(o,s),this._bindToInternalToExternalMap.set(s,o),this.add(s,r);for(let e=0;e<t._skippedIndexesFromExternal.length;e++)r<=t._skippedIndexesFromExternal[e]&&t._skippedIndexesFromExternal[e]++}};for(const e of t)s(0,e,t.getIndex(e));this.listenTo(t,"add",s),this.listenTo(t,"remove",((e,t,s)=>{const o=this._bindToExternalToInternalMap.get(t);o&&this.remove(o),this._skippedIndexesFromExternal=this._skippedIndexesFromExternal.reduce(((e,t)=>(s<t&&e.push(t-1),s>t&&e.push(t),e)),[])}))}_getItemIdBeforeAdding(e){const t=this._idProperty;let s;if(t in e){if(s=e[t],"string"!=typeof s)throw new i.ZP("collection-add-invalid-id",this);if(this.get(s))throw new i.ZP("collection-add-item-already-exists",this)}else e[t]=s=(0,r.Z)();return s}_remove(e){let t,s,o,r=!1;const n=this._idProperty;if("string"==typeof e?(s=e,o=this._itemMap.get(s),r=!o,o&&(t=this._items.indexOf(o))):"number"==typeof e?(t=e,o=this._items[t],r=!o,o&&(s=o[n])):(o=e,s=o[n],t=this._items.indexOf(o),r=-1==t||!this._itemMap.get(s)),r)throw new i.ZP("collection-remove-404",this);this._items.splice(t,1),this._itemMap.delete(s);const a=this._bindToInternalToExternalMap.get(o);return this._bindToInternalToExternalMap.delete(o),this._bindToExternalToInternalMap.delete(a),this.fire("remove",o,t),[o,t]}[Symbol.iterator](){return this._items[Symbol.iterator]()}}},"./packages/ckeditor5-utils/src/comparearrays.ts":(e,t,s)=>{"use strict";function o(e,t){const s=Math.min(e.length,t.length);for(let o=0;o<s;o++)if(e[o]!=t[o])return o;return e.length==t.length?"same":e.length<t.length?"prefix":"extension"}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/count.ts":(e,t,s)=>{"use strict";function o(e){let t=0;for(const s of e)t++;return t}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/diff.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./packages/ckeditor5-utils/src/fastdiff.ts");function i(e,t,s){s=s||function(e,t){return e===t};const o=e.length,r=t.length;if(o>200||r>200||o+r>300)return i.fastDiff(e,t,s,!0);let n,a;if(r<o){const s=e;e=t,t=s,n="delete",a="insert"}else n="insert",a="delete";const c=e.length,l=t.length,d=l-c,h={},u={};function p(o){const i=(void 0!==u[o-1]?u[o-1]:-1)+1,r=void 0!==u[o+1]?u[o+1]:-1,d=i>r?-1:1;h[o+d]&&(h[o]=h[o+d].slice(0)),h[o]||(h[o]=[]),h[o].push(i>r?n:a);let p=Math.max(i,r),g=p-o;for(;g<c&&p<l&&s(e[g],t[p]);)g++,p++,h[o].push("equal");return p}let g,f=0;do{for(g=-f;g<d;g++)u[g]=p(g);for(g=d+f;g>d;g--)u[g]=p(g);u[d]=p(d),f++}while(u[d]!==l);return h[d].slice(1)}i.fastDiff=o.Z},"./packages/ckeditor5-utils/src/dom/createelement.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>c});var o=s("./packages/ckeditor5-utils/src/isiterable.ts"),i=s("./node_modules/lodash-es/_baseGetTag.js"),r=s("./node_modules/lodash-es/isArray.js"),n=s("./node_modules/lodash-es/isObjectLike.js");const a=function(e){return"string"==typeof e||!(0,r.Z)(e)&&(0,n.Z)(e)&&"[object String]"==(0,i.Z)(e)};function c(e,t,s={},i=[]){const r=s&&s.xmlns,n=r?e.createElementNS(r,t):e.createElement(t);for(const e in s)n.setAttribute(e,s[e]);!a(i)&&(0,o.Z)(i)||(i=[i]);for(let t of i)a(t)&&(t=e.createTextNode(t)),n.appendChild(t);return n}},"./packages/ckeditor5-utils/src/dom/emittermixin.ts":(e,t,s)=>{"use strict";s.d(t,{Q:()=>c,Z:()=>a});var o=s("./packages/ckeditor5-utils/src/emittermixin.ts"),i=s("./packages/ckeditor5-utils/src/uid.ts"),r=s("./packages/ckeditor5-utils/src/dom/isnode.ts"),n=s("./packages/ckeditor5-utils/src/dom/iswindow.ts");function a(e){return class extends e{listenTo(e,t,s,i={}){if((0,r.Z)(e)||(0,n.Z)(e)){const o={capture:!!i.useCapture,passive:!!i.usePassive},r=this._getProxyEmitter(e,o)||new l(e,o);this.listenTo(r,t,s,i)}else o.Q5.prototype.listenTo.call(this,e,t,s,i)}stopListening(e,t,s){if((0,r.Z)(e)||(0,n.Z)(e)){const o=this._getAllProxyEmitters(e);for(const e of o)this.stopListening(e,t,s)}else o.Q5.prototype.stopListening.call(this,e,t,s)}_getProxyEmitter(e,t){return(0,o.Rl)(this,d(e,t))}_getAllProxyEmitters(e){return[{capture:!1,passive:!1},{capture:!1,passive:!0},{capture:!0,passive:!1},{capture:!0,passive:!0}].map((t=>this._getProxyEmitter(e,t))).filter((e=>!!e))}}}const c=a(o.Q5);["_getProxyEmitter","_getAllProxyEmitters","on","once","off","listenTo","stopListening","fire","delegate","stopDelegating","_addEventListener","_removeEventListener"].forEach((e=>{a[e]=c.prototype[e]}));class l extends o.Q5{constructor(e,t){super(),(0,o.Hv)(this,d(e,t)),this._domNode=e,this._options=t}attach(e){if(this._domListeners&&this._domListeners[e])return;const t=this._createDomListener(e);this._domNode.addEventListener(e,t,this._options),this._domListeners||(this._domListeners={}),this._domListeners[e]=t}detach(e){let t;!this._domListeners[e]||(t=this._events[e])&&t.callbacks.length||this._domListeners[e].removeListener()}_addEventListener(e,t,s){this.attach(e),o.Q5.prototype._addEventListener.call(this,e,t,s)}_removeEventListener(e,t){o.Q5.prototype._removeEventListener.call(this,e,t),this.detach(e)}_createDomListener(e){const t=t=>{this.fire(e,t)};return t.removeListener=()=>{this._domNode.removeEventListener(e,t,this._options),delete this._domListeners[e]},t}}function d(e,t){let s=function(e){return e["data-ck-expando"]||(e["data-ck-expando"]=(0,i.Z)())}(e);for(const e of Object.keys(t).sort())t[e]&&(s+="-"+e);return s}},"./packages/ckeditor5-utils/src/dom/getborderwidths.ts":(e,t,s)=>{"use strict";function o(e){const t=e.ownerDocument.defaultView.getComputedStyle(e);return{top:parseInt(t.borderTopWidth,10),right:parseInt(t.borderRightWidth,10),bottom:parseInt(t.borderBottomWidth,10),left:parseInt(t.borderLeftWidth,10)}}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/dom/global.ts":(e,t,s)=>{"use strict";let o;s.d(t,{Z:()=>i});try{o={window,document}}catch(e){o={window:{},document:{}}}const i=o},"./packages/ckeditor5-utils/src/dom/iscomment.ts":(e,t,s)=>{"use strict";function o(e){return e&&e.nodeType===Node.COMMENT_NODE}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/dom/isnode.ts":(e,t,s)=>{"use strict";function o(e){if(e){if(e.defaultView)return e instanceof e.defaultView.Document;if(e.ownerDocument&&e.ownerDocument.defaultView)return e instanceof e.ownerDocument.defaultView.Node}return!1}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/dom/isrange.ts":(e,t,s)=>{"use strict";function o(e){return"[object Range]"==Object.prototype.toString.apply(e)}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/dom/istext.ts":(e,t,s)=>{"use strict";function o(e){return"[object Text]"==Object.prototype.toString.call(e)}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/dom/isvisible.ts":(e,t,s)=>{"use strict";function o(e){return!!(e&&e.getClientRects&&e.getClientRects().length)}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/dom/iswindow.ts":(e,t,s)=>{"use strict";function o(e){const t=Object.prototype.toString.apply(e);return"[object Window]"==t||"[object global]"==t}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/dom/position.ts":(e,t,s)=>{"use strict";s.d(t,{x:()=>a});var o=s("./packages/ckeditor5-utils/src/dom/global.ts"),i=s("./packages/ckeditor5-utils/src/dom/rect.ts");var r=s("./packages/ckeditor5-utils/src/dom/getborderwidths.ts"),n=s("./node_modules/lodash-es/isFunction.js");function a({element:e,target:t,positions:s,limiter:r,fitInViewport:a,viewportOffsetConfig:c}){(0,n.Z)(t)&&(t=t()),(0,n.Z)(r)&&(r=r());const d=function(e){return e&&e.parentNode?e.offsetParent===o.Z.document.body?null:e.offsetParent:null}(e),h=new i.Z(e),u=new i.Z(t);let p;const g=a&&function(e){e=Object.assign({top:0,bottom:0,left:0,right:0},e);const t=new i.Z(o.Z.window);return t.top+=e.top,t.height-=e.top,t.bottom-=e.bottom,t.height-=e.bottom,t}(c)||null,f={targetRect:u,elementRect:h,positionedElementAncestor:d,viewportRect:g};if(r||a){const e=r&&new i.Z(r).getVisible();Object.assign(f,{limiterRect:e,viewportRect:g}),p=function(e,t){const{elementRect:s}=t,o=s.getArea(),i=e.map((e=>new l(e,t))).filter((e=>!!e.name));let r=0,n=null;for(const e of i){const{limiterIntersectionArea:t,viewportIntersectionArea:s}=e;if(t===o)return e;const i=s**2+t**2;i>r&&(r=i,n=e)}return n}(s,f)||new l(s[0],f)}else p=new l(s[0],f);return p}function c(e){const{scrollX:t,scrollY:s}=o.Z.window;return e.clone().moveBy(t,s)}class l{constructor(e,t){const s=e(t.targetRect,t.elementRect,t.viewportRect);if(!s)return;const{left:o,top:i,name:r,config:n}=s;this.name=r,this.config=n,this._positioningFunctionCorrdinates={left:o,top:i},this._options=t}get left(){return this._absoluteRect.left}get top(){return this._absoluteRect.top}get limiterIntersectionArea(){const e=this._options.limiterRect;if(e){const t=this._options.viewportRect;if(!t)return e.getIntersectionArea(this._rect);{const s=e.getIntersection(t);if(s)return s.getIntersectionArea(this._rect)}}return 0}get viewportIntersectionArea(){const e=this._options.viewportRect;return e?e.getIntersectionArea(this._rect):0}get _rect(){return this._cachedRect||(this._cachedRect=this._options.elementRect.clone().moveTo(this._positioningFunctionCorrdinates.left,this._positioningFunctionCorrdinates.top)),this._cachedRect}get _absoluteRect(){return this._cachedAbsoluteRect||(this._cachedAbsoluteRect=c(this._rect),this._options.positionedElementAncestor&&function(e,t){const s=c(new i.Z(t)),o=(0,r.Z)(t);let n=0,a=0;n-=s.left,a-=s.top,n+=t.scrollLeft,a+=t.scrollTop,n-=o.left,a-=o.top,e.moveBy(n,a)}(this._cachedAbsoluteRect,this._options.positionedElementAncestor)),this._cachedAbsoluteRect}}},"./packages/ckeditor5-utils/src/dom/rect.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>l});var o=s("./packages/ckeditor5-utils/src/dom/isrange.ts"),i=s("./packages/ckeditor5-utils/src/dom/iswindow.ts"),r=s("./packages/ckeditor5-utils/src/dom/getborderwidths.ts"),n=s("./packages/ckeditor5-utils/src/dom/istext.ts"),a=s("./node_modules/lodash-es/isElement.js");const c=["top","right","bottom","left","width","height"];class l{constructor(e){const t=(0,o.Z)(e);if(Object.defineProperty(this,"_source",{value:e._source||e,writable:!0,enumerable:!1}),u(e)||t)if(t){const t=l.getDomRangeRects(e);d(this,l.getBoundingRect(t))}else d(this,e.getBoundingClientRect());else if((0,i.Z)(e)){const{innerWidth:t,innerHeight:s}=e;d(this,{top:0,right:t,bottom:s,left:0,width:t,height:s})}else d(this,e)}clone(){return new l(this)}moveTo(e,t){return this.top=t,this.right=e+this.width,this.bottom=t+this.height,this.left=e,this}moveBy(e,t){return this.top+=t,this.right+=e,this.left+=e,this.bottom+=t,this}getIntersection(e){const t={top:Math.max(this.top,e.top),right:Math.min(this.right,e.right),bottom:Math.min(this.bottom,e.bottom),left:Math.max(this.left,e.left),width:0,height:0};return t.width=t.right-t.left,t.height=t.bottom-t.top,t.width<0||t.height<0?null:new l(t)}getIntersectionArea(e){const t=this.getIntersection(e);return t?t.getArea():0}getArea(){return this.width*this.height}getVisible(){const e=this._source;let t=this.clone();if(!h(e)){let s=e.parentNode||e.commonAncestorContainer;for(;s&&!h(s);){const e=new l(s),o=t.getIntersection(e);if(!o)return null;o.getArea()<t.getArea()&&(t=o),s=s.parentNode}}return t}isEqual(e){for(const t of c)if(this[t]!==e[t])return!1;return!0}contains(e){const t=this.getIntersection(e);return!(!t||!t.isEqual(e))}excludeScrollbarsAndBorders(){const e=this._source;let t,s,o;if((0,i.Z)(e))t=e.innerWidth-e.document.documentElement.clientWidth,s=e.innerHeight-e.document.documentElement.clientHeight,o=e.getComputedStyle(e.document.documentElement).direction;else{const i=(0,r.Z)(e);t=e.offsetWidth-e.clientWidth-i.left-i.right,s=e.offsetHeight-e.clientHeight-i.top-i.bottom,o=e.ownerDocument.defaultView.getComputedStyle(e).direction,this.left+=i.left,this.top+=i.top,this.right-=i.right,this.bottom-=i.bottom,this.width=this.right-this.left,this.height=this.bottom-this.top}return this.width-=t,"ltr"===o?this.right-=t:this.left+=t,this.height-=s,this.bottom-=s,this}static getDomRangeRects(e){const t=[],s=Array.from(e.getClientRects());if(s.length)for(const e of s)t.push(new l(e));else{let s=e.startContainer;(0,n.Z)(s)&&(s=s.parentNode);const o=new l(s.getBoundingClientRect());o.right=o.left,o.width=0,t.push(o)}return t}static getBoundingRect(e){const t={left:Number.POSITIVE_INFINITY,top:Number.POSITIVE_INFINITY,right:Number.NEGATIVE_INFINITY,bottom:Number.NEGATIVE_INFINITY,width:0,height:0};let s=0;for(const o of e)s++,t.left=Math.min(t.left,o.left),t.top=Math.min(t.top,o.top),t.right=Math.max(t.right,o.right),t.bottom=Math.max(t.bottom,o.bottom);return 0==s?null:(t.width=t.right-t.left,t.height=t.bottom-t.top,new l(t))}}function d(e,t){for(const s of c)e[s]=t[s]}function h(e){return!!u(e)&&e===e.ownerDocument.body}function u(e){return(0,a.Z)(e)}},"./packages/ckeditor5-utils/src/dom/resizeobserver.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./packages/ckeditor5-utils/src/dom/global.ts");class i{constructor(e,t){i._observerInstance||i._createObserver(),this._element=e,this._callback=t,i._addElementCallback(e,t),i._observerInstance.observe(e)}destroy(){i._deleteElementCallback(this._element,this._callback)}static _addElementCallback(e,t){i._elementCallbacks||(i._elementCallbacks=new Map);let s=i._elementCallbacks.get(e);s||(s=new Set,i._elementCallbacks.set(e,s)),s.add(t)}static _deleteElementCallback(e,t){const s=i._getElementCallbacks(e);s&&(s.delete(t),s.size||(i._elementCallbacks.delete(e),i._observerInstance.unobserve(e))),i._elementCallbacks&&!i._elementCallbacks.size&&(i._observerInstance=null,i._elementCallbacks=null)}static _getElementCallbacks(e){return i._elementCallbacks?i._elementCallbacks.get(e):null}static _createObserver(){i._observerInstance=new o.Z.window.ResizeObserver((e=>{for(const t of e){const e=i._getElementCallbacks(t.target);if(e)for(const s of e)s(t)}}))}}i._observerInstance=null,i._elementCallbacks=null},"./packages/ckeditor5-utils/src/dom/scroll.ts":(e,t,s)=>{"use strict";s.d(t,{F:()=>a,m:()=>n});var o=s("./packages/ckeditor5-utils/src/dom/isrange.ts"),i=s("./packages/ckeditor5-utils/src/dom/rect.ts"),r=s("./packages/ckeditor5-utils/src/dom/istext.ts");function n({target:e,viewportOffset:t=0}){const s=g(e);let o=s,i=null;for(;o;){let r;r=f(o==s?e:i),l(r,(()=>m(e,o)));const n=m(e,o);if(c(o,n,t),o.parent!=o){if(i=o.frameElement,o=o.parent,!i)return}else o=null}}function a(e){l(f(e),(()=>new i.Z(e)))}function c(e,t,s){const o=t.clone().moveBy(0,s),r=t.clone().moveBy(0,-s),n=new i.Z(e).excludeScrollbarsAndBorders();if(![r,o].every((e=>n.contains(e)))){let{scrollX:i,scrollY:a}=e;h(r,n)?a-=n.top-t.top+s:d(o,n)&&(a+=t.bottom-n.bottom+s),u(t,n)?i-=n.left-t.left+s:p(t,n)&&(i+=t.right-n.right+s),e.scrollTo(i,a)}}function l(e,t){const s=g(e);let o,r;for(;e!=s.document.body;)r=t(),o=new i.Z(e).excludeScrollbarsAndBorders(),o.contains(r)||(h(r,o)?e.scrollTop-=o.top-r.top:d(r,o)&&(e.scrollTop+=r.bottom-o.bottom),u(r,o)?e.scrollLeft-=o.left-r.left:p(r,o)&&(e.scrollLeft+=r.right-o.right)),e=e.parentNode}function d(e,t){return e.bottom>t.bottom}function h(e,t){return e.top<t.top}function u(e,t){return e.left<t.left}function p(e,t){return e.right>t.right}function g(e){return(0,o.Z)(e)?e.startContainer.ownerDocument.defaultView:e.ownerDocument.defaultView}function f(e){if((0,o.Z)(e)){let t=e.commonAncestorContainer;return(0,r.Z)(t)&&(t=t.parentNode),t}return e.parentNode}function m(e,t){const s=g(e),o=new i.Z(e);if(s===t)return o;{let e=s;for(;e!=t;){const t=e.frameElement,s=new i.Z(t).excludeScrollbarsAndBorders();o.moveBy(s.left,s.top),e=e.parent}}return o}},"./packages/ckeditor5-utils/src/dom/setdatainelement.ts":(e,t,s)=>{"use strict";function o(e,t){e instanceof HTMLTextAreaElement&&(e.value=t),e.innerHTML=t}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/dom/tounit.ts":(e,t,s)=>{"use strict";function o(e){return t=>t+e}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/emittermixin.ts":(e,t,s)=>{"use strict";s.d(t,{Hv:()=>g,Q5:()=>u,Rl:()=>p,ZP:()=>h});var o=s("./packages/ckeditor5-utils/src/eventinfo.ts"),i=s("./packages/ckeditor5-utils/src/uid.ts"),r=s("./packages/ckeditor5-utils/src/priorities.ts"),n=s("./packages/ckeditor5-utils/src/inserttopriorityarray.ts"),a=(s("./packages/ckeditor5-utils/src/version.ts"),s("./packages/ckeditor5-utils/src/ckeditorerror.ts"));const c=Symbol("listeningTo"),l=Symbol("emitterId"),d=Symbol("delegations");function h(e){return class extends e{on(e,t,s){this.listenTo(this,e,t,s)}once(e,t,s){let o=!1;this.listenTo(this,e,((e,...s)=>{o||(o=!0,e.off(),t.call(this,e,...s))}),s)}off(e,t){this.stopListening(this,e,t)}listenTo(e,t,s,o={}){let i,r;this[c]||(this[c]={});const n=this[c];f(e)||g(e);const a=f(e);(i=n[a])||(i=n[a]={emitter:e,callbacks:{}}),(r=i.callbacks[t])||(r=i.callbacks[t]=[]),r.push(s),function(e,t,s,o,i){t._addEventListener?t._addEventListener(s,o,i):e._addEventListener.call(t,s,o,i)}(this,e,t,s,o)}stopListening(e,t,s){const o=this[c];let i=e&&f(e);const r=o&&i?o[i]:void 0,n=r&&t?r.callbacks[t]:void 0;if(!(!o||e&&!r||t&&!n))if(s){w(this,e,t,s);-1!==n.indexOf(s)&&(1===n.length?delete r.callbacks[t]:w(this,e,t,s))}else if(n){for(;s=n.pop();)w(this,e,t,s);delete r.callbacks[t]}else if(r){for(t in r.callbacks)this.stopListening(e,t);delete o[i]}else{for(i in o)this.stopListening(o[i].emitter);delete this[c]}}fire(e,...t){try{const s=e instanceof o.Z?e:new o.Z(this,e),i=s.name;let r=b(this,i);if(s.path.push(this),r){const e=[s,...t];r=Array.from(r);for(let t=0;t<r.length&&(r[t].callback.apply(this,e),s.off.called&&(delete s.off.called,this._removeEventListener(i,r[t].callback)),!s.stop.called);t++);}const n=this[d];if(n){const e=n.get(i),o=n.get("*");e&&_(e,s,t),o&&_(o,s,t)}return s.return}catch(e){a.ZP.rethrowUnexpectedError(e,this)}}delegate(...e){return{to:(t,s)=>{this[d]||(this[d]=new Map),e.forEach((e=>{const o=this[d].get(e);o?o.set(t,s):this[d].set(e,new Map([[t,s]]))}))}}}stopDelegating(e,t){if(this[d])if(e)if(t){const s=this[d].get(e);s&&s.delete(t)}else this[d].delete(e);else this[d].clear()}_addEventListener(e,t,s){!function(e,t){const s=m(e);if(s[t])return;let o=t,i=null;const r=[];for(;""!==o&&!s[o];)s[o]={callbacks:[],childEvents:[]},r.push(s[o]),i&&s[o].childEvents.push(i),i=o,o=o.substr(0,o.lastIndexOf(":"));if(""!==o){for(const e of r)e.callbacks=s[o].callbacks.slice();s[o].childEvents.push(i)}}(this,e);const o=k(this,e),i={callback:t,priority:r.Z.get(s.priority)};for(const e of o)(0,n.Z)(e,i)}_removeEventListener(e,t){const s=k(this,e);for(const e of s)for(let s=0;s<e.length;s++)e[s].callback==t&&(e.splice(s,1),s--)}}}const u=h(Object);function p(e,t){const s=e[c];return s&&s[t]?s[t].emitter:null}function g(e,t){e[l]||(e[l]=t||(0,i.Z)())}function f(e){return e[l]}function m(e){return e._events||Object.defineProperty(e,"_events",{value:{}}),e._events}function k(e,t){const s=m(e)[t];if(!s)return[];let o=[s.callbacks];for(let t=0;t<s.childEvents.length;t++){const i=k(e,s.childEvents[t]);o=o.concat(i)}return o}function b(e,t){let s;return e._events&&(s=e._events[t])&&s.callbacks.length?s.callbacks:t.indexOf(":")>-1?b(e,t.substr(0,t.lastIndexOf(":"))):null}function _(e,t,s){for(let[i,r]of e){r?"function"==typeof r&&(r=r(t.name)):r=t.name;const e=new o.Z(t.source,r);e.path=[...t.path],i.fire(e,...s)}}function w(e,t,s,o){t._removeEventListener?t._removeEventListener(s,o):e._removeEventListener.call(t,s,o)}["on","once","off","listenTo","stopListening","fire","delegate","stopDelegating","_addEventListener","_removeEventListener"].forEach((e=>{h[e]=u.prototype[e]}))},"./packages/ckeditor5-utils/src/env.ts":(e,t,s)=>{"use strict";s.d(t,{ZP:()=>r});const o=function(){try{return navigator.userAgent.toLowerCase()}catch(e){return""}}(),i={isMac:n(o),isWindows:function(e){return e.indexOf("windows")>-1}(o),isGecko:function(e){return!!e.match(/gecko\/\d+/)}(o),isSafari:function(e){return e.indexOf(" applewebkit/")>-1&&-1===e.indexOf("chrome")}(o),isiOS:function(e){return!!e.match(/iphone|ipad/i)||n(e)&&navigator.maxTouchPoints>0}(o),isAndroid:function(e){return e.indexOf("android")>-1}(o),isBlink:function(e){return e.indexOf("chrome/")>-1&&e.indexOf("edge/")<0}(o),features:{isRegExpUnicodePropertySupported:function(){let e=!1;try{e=0==="ć".search(new RegExp("[\\p{L}]","u"))}catch(e){}return e}()}},r=i;function n(e){return e.indexOf("macintosh")>-1}},"./packages/ckeditor5-utils/src/eventinfo.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});const o=function(){return function e(){e.called=!0}};class i{constructor(e,t){this.source=e,this.name=t,this.path=[],this.stop=o(),this.off=o()}}},"./packages/ckeditor5-utils/src/fastdiff.ts":(e,t,s)=>{"use strict";function o(e,t,s,o=!1){s=s||function(e,t){return e===t};const n=Array.isArray(e)?e:Array.prototype.slice.call(e),a=Array.isArray(t)?t:Array.prototype.slice.call(t),c=function(e,t,s){const o=i(e,t,s);if(-1===o)return{firstIndex:-1,lastIndexOld:-1,lastIndexNew:-1};const n=r(e,o),a=r(t,o),c=i(n,a,s),l=e.length-c,d=t.length-c;return{firstIndex:o,lastIndexOld:l,lastIndexNew:d}}(n,a,s);return o?function(e,t){const{firstIndex:s,lastIndexOld:o,lastIndexNew:i}=e;if(-1===s)return Array(t).fill("equal");let r=[];s>0&&(r=r.concat(Array(s).fill("equal")));i-s>0&&(r=r.concat(Array(i-s).fill("insert")));o-s>0&&(r=r.concat(Array(o-s).fill("delete")));i<t&&(r=r.concat(Array(t-i).fill("equal")));return r}(c,a.length):function(e,t){const s=[],{firstIndex:o,lastIndexOld:i,lastIndexNew:r}=t;r-o>0&&s.push({index:o,type:"insert",values:e.slice(o,r)});i-o>0&&s.push({index:o+(r-o),type:"delete",howMany:i-o});return s}(a,c)}function i(e,t,s){for(let o=0;o<Math.max(e.length,t.length);o++)if(void 0===e[o]||void 0===t[o]||!s(e[o],t[o]))return o;return-1}function r(e,t){return e.slice(t).reverse()}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/first.ts":(e,t,s)=>{"use strict";function o(e){const t=e.next();return t.done?null:t.value}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/focustracker.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>n});var o=s("./packages/ckeditor5-utils/src/dom/emittermixin.ts"),i=s("./packages/ckeditor5-utils/src/observablemixin.ts"),r=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class n extends((0,o.Z)(i.y)){constructor(){super(),this.set("isFocused",!1),this.set("focusedElement",null),this._elements=new Set,this._nextEventLoopTimeout=null}add(e){if(this._elements.has(e))throw new r.ZP("focustracker-add-element-already-exist",this);this.listenTo(e,"focus",(()=>this._focus(e)),{useCapture:!0}),this.listenTo(e,"blur",(()=>this._blur()),{useCapture:!0}),this._elements.add(e)}remove(e){e===this.focusedElement&&this._blur(),this._elements.has(e)&&(this.stopListening(e),this._elements.delete(e))}destroy(){this.stopListening()}_focus(e){clearTimeout(this._nextEventLoopTimeout),this.focusedElement=e,this.isFocused=!0}_blur(){clearTimeout(this._nextEventLoopTimeout),this._nextEventLoopTimeout=setTimeout((()=>{this.focusedElement=null,this.isFocused=!1}),0)}}},"./packages/ckeditor5-utils/src/index.ts":(e,t,s)=>{"use strict";s.d(t,{Bb:()=>c.ZP,FE:()=>Z.Z,Xu:()=>h.Z,a6:()=>l,ln:()=>n.ZP,Rh:()=>x.Z,VD:()=>T.Z,go:()=>y.Z,Re:()=>a.Z,UL:()=>g.Z,do:()=>f.Z,az:()=>d.Z,Hg:()=>i.Z,OB:()=>o.ZP,Ps:()=>P.Z,Cq:()=>w.Cq,yy:()=>p,XU:()=>w.XU,j9:()=>v.j,mA:()=>w.mA,CO:()=>u.Z,dj:()=>w.dj,Zt:()=>w.Zt,pn:()=>b.Z,Do:()=>w.Do,H:()=>c.H,KE:()=>c.KE,CD:()=>r.Z,Zz:()=>w.Zz,tA:()=>E.Z,F0:()=>_.F,mR:()=>_.m,jS:()=>m.Z,qo:()=>A.Z,qL:()=>C.Z,nn:()=>k.Z,hQ:()=>S.Z,i8:()=>j.Z});var o=s("./packages/ckeditor5-utils/src/env.ts"),i=s("./packages/ckeditor5-utils/src/diff.ts"),r=s("./packages/ckeditor5-utils/src/mix.ts"),n=s("./packages/ckeditor5-utils/src/emittermixin.ts"),a=s("./packages/ckeditor5-utils/src/observablemixin.ts"),c=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class l{constructor(){this._replacedElements=[]}replace(e,t){this._replacedElements.push({element:e,newElement:t}),e.style.display="none",t&&e.parentNode.insertBefore(t,e.nextSibling)}restore(){this._replacedElements.forEach((({element:e,newElement:t})=>{e.style.display="",t&&t.remove()})),this._replacedElements=[]}}var d=s("./packages/ckeditor5-utils/src/dom/createelement.ts"),h=s("./packages/ckeditor5-utils/src/dom/emittermixin.ts"),u=s("./packages/ckeditor5-utils/src/dom/global.ts");function p(e){return e instanceof HTMLTextAreaElement?e.value:e.innerHTML}var g=s("./packages/ckeditor5-utils/src/dom/rect.ts"),f=s("./packages/ckeditor5-utils/src/dom/resizeobserver.ts"),m=s("./packages/ckeditor5-utils/src/dom/setdatainelement.ts"),k=s("./packages/ckeditor5-utils/src/dom/tounit.ts"),b=s("./packages/ckeditor5-utils/src/dom/isvisible.ts"),_=s("./packages/ckeditor5-utils/src/dom/scroll.ts"),w=s("./packages/ckeditor5-utils/src/keyboard.ts"),v=s("./packages/ckeditor5-utils/src/language.ts"),y=s("./packages/ckeditor5-utils/src/locale.ts"),Z=s("./packages/ckeditor5-utils/src/collection.ts"),P=s("./packages/ckeditor5-utils/src/first.ts"),x=s("./packages/ckeditor5-utils/src/focustracker.ts"),T=s("./packages/ckeditor5-utils/src/keystrokehandler.ts"),A=s("./packages/ckeditor5-utils/src/toarray.ts"),C=s("./packages/ckeditor5-utils/src/tomap.ts"),E=s("./packages/ckeditor5-utils/src/priorities.ts"),S=s("./packages/ckeditor5-utils/src/uid.ts"),j=s("./packages/ckeditor5-utils/src/version.ts")},"./packages/ckeditor5-utils/src/inserttopriorityarray.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./packages/ckeditor5-utils/src/priorities.ts");function i(e,t){const s=o.Z.get(t.priority);for(let i=0;i<e.length;i++)if(o.Z.get(e[i].priority)<s)return void e.splice(i,0,t);e.push(t)}},"./packages/ckeditor5-utils/src/isiterable.ts":(e,t,s)=>{"use strict";function o(e){return!(!e||!e[Symbol.iterator])}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/keyboard.ts":(e,t,s)=>{"use strict";s.d(t,{Cq:()=>l,Do:()=>a,XU:()=>h,Zt:()=>g,Zz:()=>d,dj:()=>u,mA:()=>p});var o=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),i=s("./packages/ckeditor5-utils/src/env.ts");const r={ctrl:"⌃",cmd:"⌘",alt:"⌥",shift:"⇧"},n={ctrl:"Ctrl+",alt:"Alt+",shift:"Shift+"},a=function(){const e={arrowleft:37,arrowup:38,arrowright:39,arrowdown:40,backspace:8,delete:46,enter:13,space:32,esc:27,tab:9,ctrl:1114112,shift:2228224,alt:4456448,cmd:8912896};for(let t=65;t<=90;t++){const s=String.fromCharCode(t);e[s.toLowerCase()]=t}for(let t=48;t<=57;t++)e[t-48]=t;for(let t=112;t<=123;t++)e["f"+(t-111)]=t;for(const t of"`-=[];',./\\")e[t]=t.charCodeAt(0);return e}(),c=Object.fromEntries(Object.entries(a).map((([e,t])=>[t,e.charAt(0).toUpperCase()+e.slice(1)])));function l(e){let t;if("string"==typeof e){if(t=a[e.toLowerCase()],!t)throw new o.ZP("keyboard-unknown-key",null,{key:e})}else t=e.keyCode+(e.altKey?a.alt:0)+(e.ctrlKey?a.ctrl:0)+(e.shiftKey?a.shift:0)+(e.metaKey?a.cmd:0);return t}function d(e){return"string"==typeof e&&(e=function(e){return e.split("+").map((e=>e.trim()))}(e)),e.map((e=>"string"==typeof e?function(e){if(e.endsWith("!"))return l(e.slice(0,-1));const t=l(e);return i.ZP.isMac&&t==a.ctrl?a.cmd:t}(e):e)).reduce(((e,t)=>t+e),0)}function h(e){let t=d(e);return Object.entries(i.ZP.isMac?r:n).reduce(((e,[s,o])=>(0!=(t&a[s])&&(t&=~a[s],e+=o),e)),"")+(t?c[t]:"")}function u(e){return e==a.arrowright||e==a.arrowleft||e==a.arrowup||e==a.arrowdown}function p(e,t){const s="ltr"===t;switch(e){case a.arrowleft:return s?"left":"right";case a.arrowright:return s?"right":"left";case a.arrowup:return"up";case a.arrowdown:return"down"}}function g(e,t){const s=p(e,t);return"down"===s||"right"===s}},"./packages/ckeditor5-utils/src/keystrokehandler.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./packages/ckeditor5-utils/src/dom/emittermixin.ts"),i=s("./packages/ckeditor5-utils/src/keyboard.ts");class r{constructor(){this._listener=Object.create(o.Z)}listenTo(e){this._listener.listenTo(e,"keydown",((e,t)=>{this._listener.fire("_keydown:"+(0,i.Cq)(t),t)}))}set(e,t,s={}){const o=(0,i.Zz)(e),r=s.priority;this._listener.listenTo(this._listener,"_keydown:"+o,((e,s)=>{t(s,(()=>{s.preventDefault(),s.stopPropagation(),e.stop()})),e.return=!0}),{priority:r})}press(e){return!!this._listener.fire("_keydown:"+(0,i.Cq)(e),e)}destroy(){this._listener.stopListening()}}},"./packages/ckeditor5-utils/src/language.ts":(e,t,s)=>{"use strict";s.d(t,{j:()=>i});const o=["ar","ara","fa","per","fas","he","heb","ku","kur","ug","uig"];function i(e){return o.includes(e)?"rtl":"ltr"}},"./packages/ckeditor5-utils/src/locale.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>c});var o=s("./packages/ckeditor5-utils/src/toarray.ts"),i=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),r=s("./packages/ckeditor5-utils/src/dom/global.ts");function n(e,t,s=1){if("number"!=typeof s)throw new i.ZP("translation-service-quantity-not-a-number",null,{quantity:s});const o=Object.keys(r.Z.window.CKEDITOR_TRANSLATIONS).length;1===o&&(e=Object.keys(r.Z.window.CKEDITOR_TRANSLATIONS)[0]);const n=t.id||t.string;if(0===o||!function(e,t){return!!r.Z.window.CKEDITOR_TRANSLATIONS[e]&&!!r.Z.window.CKEDITOR_TRANSLATIONS[e].dictionary[t]}(e,n))return 1!==s?t.plural:t.string;const a=r.Z.window.CKEDITOR_TRANSLATIONS[e].dictionary,c=r.Z.window.CKEDITOR_TRANSLATIONS[e].getPluralForm||(e=>1===e?0:1),l=a[n];if("string"==typeof l)return l;return l[Number(c(s))]}r.Z.window.CKEDITOR_TRANSLATIONS||(r.Z.window.CKEDITOR_TRANSLATIONS={});var a=s("./packages/ckeditor5-utils/src/language.ts");class c{constructor(e={}){this.uiLanguage=e.uiLanguage||"en",this.contentLanguage=e.contentLanguage||this.uiLanguage,this.uiLanguageDirection=(0,a.j)(this.uiLanguage),this.contentLanguageDirection=(0,a.j)(this.contentLanguage),this.t=(e,t)=>this._t(e,t)}get language(){return console.warn("locale-deprecated-language-property: The Locale#language property has been deprecated and will be removed in the near future. Please use #uiLanguage and #contentLanguage properties instead."),this.uiLanguage}_t(e,t=[]){t=(0,o.Z)(t),"string"==typeof e&&(e={string:e});const s=!!e.plural?t[0]:1;return function(e,t){return e.replace(/%(\d+)/g,((e,s)=>s<t.length?t[s]:e))}(n(this.uiLanguage,e,s),t)}}},"./packages/ckeditor5-utils/src/mix.ts":(e,t,s)=>{"use strict";function o(e,...t){t.forEach((t=>{const s=Object.getOwnPropertyNames(t),o=Object.getOwnPropertySymbols(t);s.concat(o).forEach((s=>{if(s in e.prototype)return;if("function"==typeof t&&("length"==s||"name"==s||"prototype"==s))return;const o=Object.getOwnPropertyDescriptor(t,s);o.enumerable=!1,Object.defineProperty(e.prototype,s,o)}))}))}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/observablemixin.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>h,y:()=>u});var o=s("./packages/ckeditor5-utils/src/emittermixin.ts"),i=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),r=s("./node_modules/lodash-es/isObject.js");const n=Symbol("observableProperties"),a=Symbol("boundObservables"),c=Symbol("boundProperties"),l=Symbol("decoratedMethods"),d=Symbol("decoratedOriginal");function h(e){return class extends e{set(e,t){if((0,r.Z)(e))return void Object.keys(e).forEach((t=>{this.set(t,e[t])}),this);p(this);const s=this[n];if(e in this&&!s.has(e))throw new i.ZP("observable-set-cannot-override",this);Object.defineProperty(this,e,{enumerable:!0,configurable:!0,get:()=>s.get(e),set(t){const o=s.get(e);let i=this.fire(`set:${e}`,e,t,o);void 0===i&&(i=t),o===i&&s.has(e)||(s.set(e,i),this.fire(`change:${e}`,e,i,o))}}),this[e]=t}bind(...e){if(!e.length||!m(e))throw new i.ZP("observable-bind-wrong-properties",this);if(new Set(e).size!==e.length)throw new i.ZP("observable-bind-duplicate-properties",this);p(this);const t=this[c];e.forEach((e=>{if(t.has(e))throw new i.ZP("observable-bind-rebind",this)}));const s=new Map;return e.forEach((e=>{const o={property:e,to:[]};t.set(e,o),s.set(e,o)})),{to:g,toMany:f,_observable:this,_bindProperties:e,_to:[],_bindings:s}}unbind(...e){if(!this[n])return;const t=this[c],s=this[a];if(e.length){if(!m(e))throw new i.ZP("observable-unbind-wrong-properties",this);e.forEach((e=>{const o=t.get(e);o&&(o.to.forEach((([e,t])=>{const i=s.get(e),r=i[t];r.delete(o),r.size||delete i[t],Object.keys(i).length||(s.delete(e),this.stopListening(e,"change"))})),t.delete(e))}))}else s.forEach(((e,t)=>{this.stopListening(t,"change")})),s.clear(),t.clear()}decorate(e){p(this);const t=this[e];if(!t)throw new i.ZP("observablemixin-cannot-decorate-undefined",this,{object:this,methodName:e});this.on(e,((e,s)=>{e.return=t.apply(this,s)})),this[e]=function(...t){return this.fire(e,t)},this[e][d]=t,this[l]||(this[l]=[]),this[l].push(e)}stopListening(e,t,s){if(!e&&this[l]){for(const e of this[l])this[e]=this[e][d];delete this[l]}o.Q5.prototype.stopListening.call(this,e,t,s)}}}const u=h(o.Q5);function p(e){e[n]||(Object.defineProperty(e,n,{value:new Map}),Object.defineProperty(e,a,{value:new Map}),Object.defineProperty(e,c,{value:new Map}))}function g(...e){const t=function(...e){if(!e.length)throw new i.ZP("observable-bind-to-parse-error",null);const t={to:[]};let s;"function"==typeof e[e.length-1]&&(t.callback=e.pop());return e.forEach((e=>{if("string"==typeof e)s.properties.push(e);else{if("object"!=typeof e)throw new i.ZP("observable-bind-to-parse-error",null);s={observable:e,properties:[]},t.to.push(s)}})),t}(...e),s=Array.from(this._bindings.keys()),o=s.length;if(!t.callback&&t.to.length>1)throw new i.ZP("observable-bind-to-no-callback",this);if(o>1&&t.callback)throw new i.ZP("observable-bind-to-extra-callback",this);var r;t.to.forEach((e=>{if(e.properties.length&&e.properties.length!==o)throw new i.ZP("observable-bind-to-properties-length",this);e.properties.length||(e.properties=this._bindProperties)})),this._to=t.to,t.callback&&(this._bindings.get(s[0]).callback=t.callback),r=this._observable,this._to.forEach((e=>{const t=r[a];let s;t.get(e.observable)||r.listenTo(e.observable,"change",((o,i)=>{s=t.get(e.observable)[i],s&&s.forEach((e=>{k(r,e.property)}))}))})),function(e){let t;e._bindings.forEach(((s,o)=>{e._to.forEach((i=>{t=i.properties[s.callback?0:e._bindProperties.indexOf(o)],s.to.push([i.observable,t]),function(e,t,s,o){const i=e[a],r=i.get(s),n=r||{};n[o]||(n[o]=new Set);n[o].add(t),r||i.set(s,n)}(e._observable,s,i.observable,t)}))}))}(this),this._bindProperties.forEach((e=>{k(this._observable,e)}))}function f(e,t,s){if(this._bindings.size>1)throw new i.ZP("observable-bind-to-many-not-one-binding",this);this.to(...function(e,t){const s=e.map((e=>[e,t]));return Array.prototype.concat.apply([],s)}(e,t),s)}function m(e){return e.every((e=>"string"==typeof e))}function k(e,t){const s=e[c].get(t);let o;s.callback?o=s.callback.apply(e,s.to.map((e=>e[0][e[1]]))):(o=s.to[0],o=o[0][o[1]]),Object.prototype.hasOwnProperty.call(e,t)?e[t]=o:e.set(t,o)}["set","bind","unbind","decorate","on","once","off","listenTo","stopListening","fire","delegate","stopDelegating","_addEventListener","_removeEventListener"].forEach((e=>{h[e]=u.prototype[e]}))},"./packages/ckeditor5-utils/src/priorities.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o={get(e="normal"){return"number"!=typeof e?this[e]||this.normal:e},highest:1e5,high:1e3,normal:0,low:-1e3,lowest:-1e5}},"./packages/ckeditor5-utils/src/toarray.ts":(e,t,s)=>{"use strict";function o(e){return Array.isArray(e)?e:[e]}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/tomap.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./packages/ckeditor5-utils/src/isiterable.ts");function i(e){return(0,o.Z)(e)?new Map(e):function(e){const t=new Map;for(const s in e)t.set(s,e[s]);return t}(e)}},"./packages/ckeditor5-utils/src/uid.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});const o=new Array(256).fill("").map(((e,t)=>("0"+t.toString(16)).slice(-2)));function i(){const e=4294967296*Math.random()>>>0,t=4294967296*Math.random()>>>0,s=4294967296*Math.random()>>>0,i=4294967296*Math.random()>>>0;return"e"+o[e>>0&255]+o[e>>8&255]+o[e>>16&255]+o[e>>24&255]+o[t>>0&255]+o[t>>8&255]+o[t>>16&255]+o[t>>24&255]+o[s>>0&255]+o[s>>8&255]+o[s>>16&255]+o[s>>24&255]+o[i>>0&255]+o[i>>8&255]+o[i>>16&255]+o[i>>24&255]}},"./packages/ckeditor5-utils/src/version.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");const i="35.1.0",r=i,n="object"==typeof window?window:s.g;if(n.CKEDITOR_VERSION)throw new o.ZP("ckeditor-duplicated-modules",null);n.CKEDITOR_VERSION=i},"./packages/ckeditor5-core/src/command.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./packages/ckeditor5-utils/src/observablemixin.ts"),i=s("./packages/ckeditor5-utils/src/mix.ts");class r{constructor(e){this.editor=e,this.set("value",void 0),this.set("isEnabled",!1),this.affectsData=!0,this._disableStack=new Set,this.decorate("execute"),this.listenTo(this.editor.model.document,"change",(()=>{this.refresh()})),this.on("execute",(e=>{this.isEnabled||e.stop()}),{priority:"high"}),this.listenTo(e,"change:isReadOnly",((e,t,s)=>{s&&this.affectsData?this.forceDisabled("readOnlyMode"):this.clearForceDisabled("readOnlyMode")}))}refresh(){this.isEnabled=!0}forceDisabled(e){this._disableStack.add(e),1==this._disableStack.size&&(this.on("set:isEnabled",n,{priority:"highest"}),this.isEnabled=!1)}clearForceDisabled(e){this._disableStack.delete(e),0==this._disableStack.size&&(this.off("set:isEnabled",n),this.refresh())}execute(){}destroy(){this.stopListening()}}function n(e){e.return=!1,e.stop()}(0,i.Z)(r,o.Z)},"./packages/ckeditor5-core/src/contextplugin.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./packages/ckeditor5-utils/src/observablemixin.ts"),i=s("./packages/ckeditor5-utils/src/mix.ts");class r{constructor(e){this.context=e}destroy(){this.stopListening()}static get isContextPlugin(){return!0}}(0,i.Z)(r,o.Z)},"./packages/ckeditor5-core/src/pendingactions.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>a});var o=s("./packages/ckeditor5-core/src/contextplugin.js"),i=s("./packages/ckeditor5-utils/src/observablemixin.ts"),r=s("./packages/ckeditor5-utils/src/collection.ts"),n=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class a extends o.Z{static get pluginName(){return"PendingActions"}init(){this.set("hasAny",!1),this._actions=new r.Z({idProperty:"_id"}),this._actions.delegate("add","remove").to(this)}add(e){if("string"!=typeof e)throw new n.ZP("pendingactions-add-invalid-message",this);const t=Object.create(i.Z);return t.set("message",e),this._actions.add(t),this.hasAny=!0,t}remove(e){this._actions.remove(e),this.hasAny=!!this._actions.length}get first(){return this._actions.get(0)}[Symbol.iterator](){return this._actions[Symbol.iterator]()}}},"./packages/ckeditor5-core/src/plugin.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./packages/ckeditor5-utils/src/observablemixin.ts"),i=s("./packages/ckeditor5-utils/src/mix.ts");class r{constructor(e){this.editor=e,this.set("isEnabled",!0),this._disableStack=new Set}forceDisabled(e){this._disableStack.add(e),1==this._disableStack.size&&(this.on("set:isEnabled",n,{priority:"highest"}),this.isEnabled=!1)}clearForceDisabled(e){this._disableStack.delete(e),0==this._disableStack.size&&(this.off("set:isEnabled",n),this.isEnabled=!0)}destroy(){this.stopListening()}static get isContextPlugin(){return!1}}function n(e){e.return=!1,e.stop()}(0,i.Z)(r,o.Z)},"./packages/ckeditor5-enter/src/enter.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>l});var o=s("./packages/ckeditor5-core/src/plugin.js"),i=s("./packages/ckeditor5-core/src/command.js"),r=s("./packages/ckeditor5-enter/src/utils.js");class n extends i.Z{execute(){const e=this.editor.model,t=e.document;e.change((s=>{!function(e,t,s,o){const i=s.isCollapsed,n=s.getFirstRange(),c=n.start.parent,l=n.end.parent;if(o.isLimit(c)||o.isLimit(l))return void(i||c!=l||e.deleteContent(s));if(i){const e=(0,r.G)(t.model.schema,s.getAttributes());a(t,n.start),t.setSelectionAttribute(e)}else{const o=!(n.start.isAtStart&&n.end.isAtEnd),i=c==l;e.deleteContent(s,{leaveUnmerged:o}),o&&(i?a(t,s.focus):t.setSelection(l,0))}}(this.editor.model,s,t.selection,e.schema),this.fire("afterExecute",{writer:s})}))}}function a(e,t){e.split(t),e.setSelection(t.parent.nextSibling,0)}var c=s("./packages/ckeditor5-enter/src/enterobserver.js");class l extends o.Z{static get pluginName(){return"Enter"}init(){const e=this.editor,t=e.editing.view,s=t.document;t.addObserver(c.Z),e.commands.add("enter",new n(e)),this.listenTo(s,"enter",((s,o)=>{o.preventDefault(),o.isSoft||(e.execute("enter"),t.scrollToTheSelection())}),{priority:"low"})}}},"./packages/ckeditor5-enter/src/enterobserver.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>a});var o=s("./packages/ckeditor5-engine/src/view/observer/observer.ts"),i=s("./packages/ckeditor5-engine/src/view/observer/domeventdata.ts"),r=s("./packages/ckeditor5-engine/src/view/observer/bubblingeventinfo.ts"),n=s("./packages/ckeditor5-utils/src/keyboard.ts");class a extends o.Z{constructor(e){super(e);const t=this.document;t.on("keydown",((e,s)=>{if(this.isEnabled&&s.keyCode==n.Do.enter){const o=new r.Z(t,"enter",t.selection.getFirstRange());t.fire(o,new i.Z(t,s.domEvent,{isSoft:s.shiftKey})),o.stop.called&&e.stop()}}))}observe(){}}},"./packages/ckeditor5-enter/src/utils.js":(e,t,s)=>{"use strict";function*o(e,t){for(const s of t)s&&e.getAttributeProperties(s[0]).copyOnEnter&&(yield s)}s.d(t,{G:()=>o})},"./packages/ckeditor5-typing/src/delete.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>f});var o=s("./packages/ckeditor5-core/src/plugin.js"),i=s("./packages/ckeditor5-core/src/command.js"),r=s("./packages/ckeditor5-utils/src/count.ts"),n=s("./packages/ckeditor5-typing/src/utils/changebuffer.js");class a extends i.Z{constructor(e,t){super(e),this.direction=t,this._buffer=new n.Z(e.model,e.config.get("typing.undoStep"))}get buffer(){return this._buffer}execute(e={}){const t=this.editor.model,s=t.document;t.enqueueChange(this._buffer.batch,(o=>{this._buffer.lock();const i=o.createSelection(e.selection||s.selection),n=e.sequence||1,a=i.isCollapsed;if(i.isCollapsed&&t.modifySelection(i,{direction:this.direction,unit:e.unit,treatEmojiAsSingleUnit:!0}),this._shouldEntireContentBeReplacedWithParagraph(n))return void this._replaceEntireContentWithParagraph(o);if(this._shouldReplaceFirstBlockWithParagraph(i,n))return void this.editor.execute("paragraph",{selection:i});if(i.isCollapsed)return;let c=0;i.getFirstRange().getMinimalFlatRanges().forEach((e=>{c+=(0,r.Z)(e.getWalker({singleCharacters:!0,ignoreElementEnd:!0,shallow:!0}))})),t.deleteContent(i,{doNotResetEntireContent:a,direction:this.direction}),this._buffer.input(c),o.setSelection(i),this._buffer.unlock()}))}_shouldEntireContentBeReplacedWithParagraph(e){if(e>1)return!1;const t=this.editor.model,s=t.document.selection,o=t.schema.getLimitElement(s);if(!(s.isCollapsed&&s.containsEntireContent(o)))return!1;if(!t.schema.checkChild(o,"paragraph"))return!1;const i=o.getChild(0);return!i||"paragraph"!==i.name}_replaceEntireContentWithParagraph(e){const t=this.editor.model,s=t.document.selection,o=t.schema.getLimitElement(s),i=e.createElement("paragraph");e.remove(e.createRangeIn(o)),e.insert(i,o),e.setSelection(i,0)}_shouldReplaceFirstBlockWithParagraph(e,t){const s=this.editor.model;if(t>1||"backward"!=this.direction)return!1;if(!e.isCollapsed)return!1;const o=e.getFirstPosition(),i=s.schema.getLimitElement(o),r=i.getChild(0);return o.parent==r&&(!!e.containsEntireContent(r)&&(!!s.schema.checkChild(i,"paragraph")&&"paragraph"!=r.name))}}var c=s("./packages/ckeditor5-engine/src/view/observer/observer.ts"),l=s("./packages/ckeditor5-engine/src/view/observer/domeventdata.ts"),d=s("./packages/ckeditor5-engine/src/view/observer/bubblingeventinfo.ts"),h=s("./packages/ckeditor5-utils/src/keyboard.ts"),u=s("./packages/ckeditor5-utils/src/env.ts"),p=s("./packages/ckeditor5-typing/src/utils/utils.js");class g extends c.Z{constructor(e){super(e);const t=e.document;let s=0;function o(e,s,o){const i=new d.Z(t,"delete",t.selection.getFirstRange());t.fire(i,new l.Z(t,s,o)),i.stop.called&&e.stop()}t.on("keyup",((e,t)=>{t.keyCode!=h.Do.delete&&t.keyCode!=h.Do.backspace||(s=0)})),t.on("keydown",((e,i)=>{if(u.ZP.isWindows&&(0,p.Uw)(i,t))return;const r={};if(i.keyCode==h.Do.delete)r.direction="forward",r.unit="character";else{if(i.keyCode!=h.Do.backspace)return;r.direction="backward",r.unit="codePoint"}const n=u.ZP.isMac?i.altKey:i.ctrlKey;r.unit=n?"word":r.unit,r.sequence=++s,o(e,i.domEvent,r)})),u.ZP.isAndroid&&t.on("beforeinput",((t,s)=>{if("deleteContentBackward"!=s.domEvent.inputType)return;const i={unit:"codepoint",direction:"backward",sequence:1},r=s.domTarget.ownerDocument.defaultView.getSelection();r.anchorNode==r.focusNode&&r.anchorOffset+1!=r.focusOffset&&(i.selectionToRemove=e.domConverter.domSelectionToView(r)),o(t,s.domEvent,i)}))}observe(){}}class f extends o.Z{static get pluginName(){return"Delete"}init(){const e=this.editor,t=e.editing.view,s=t.document,o=e.model.document;t.addObserver(g),this._undoOnBackspace=!1;const i=new a(e,"forward");if(e.commands.add("deleteForward",i),e.commands.add("forwardDelete",i),e.commands.add("delete",new a(e,"backward")),this.listenTo(s,"delete",((s,o)=>{const i={unit:o.unit,sequence:o.sequence};if(o.selectionToRemove){const t=e.model.createSelection(),s=[];for(const t of o.selectionToRemove.getRanges())s.push(e.editing.mapper.toModelRange(t));t.setTo(s),i.selection=t}e.execute("forward"==o.direction?"deleteForward":"delete",i),o.preventDefault(),t.scrollToTheSelection()}),{priority:"low"}),u.ZP.isAndroid){let e=null;this.listenTo(s,"delete",((t,s)=>{const o=s.domTarget.ownerDocument.defaultView.getSelection();e={anchorNode:o.anchorNode,anchorOffset:o.anchorOffset,focusNode:o.focusNode,focusOffset:o.focusOffset}}),{priority:"lowest"}),this.listenTo(s,"keyup",((t,s)=>{if(e){const t=s.domTarget.ownerDocument.defaultView.getSelection();t.collapse(e.anchorNode,e.anchorOffset),t.extend(e.focusNode,e.focusOffset),e=null}}))}this.editor.plugins.has("UndoEditing")&&(this.listenTo(s,"delete",((t,s)=>{this._undoOnBackspace&&"backward"==s.direction&&1==s.sequence&&"codePoint"==s.unit&&(this._undoOnBackspace=!1,e.execute("undo"),s.preventDefault(),t.stop())}),{context:"$capture"}),this.listenTo(o,"change",(()=>{this._undoOnBackspace=!1})))}requestUndoOnBackspace(){this.editor.plugins.has("UndoEditing")&&(this._undoOnBackspace=!0)}}},"./packages/ckeditor5-typing/src/utils/changebuffer.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});class o{constructor(e,t=20){this.model=e,this.size=0,this.limit=t,this.isLocked=!1,this._changeCallback=(e,t)=>{t.isLocal&&t.isUndoable&&t!==this._batch&&this._reset(!0)},this._selectionChangeCallback=()=>{this._reset()},this.model.document.on("change",this._changeCallback),this.model.document.selection.on("change:range",this._selectionChangeCallback),this.model.document.selection.on("change:attribute",this._selectionChangeCallback)}get batch(){return this._batch||(this._batch=this.model.createBatch({isTyping:!0})),this._batch}input(e){this.size+=e,this.size>=this.limit&&this._reset(!0)}lock(){this.isLocked=!0}unlock(){this.isLocked=!1}destroy(){this.model.document.off("change",this._changeCallback),this.model.document.selection.off("change:range",this._selectionChangeCallback),this.model.document.selection.off("change:attribute",this._selectionChangeCallback)}_reset(e){this.isLocked&&!e||(this._batch=null,this.size=0)}}},"./packages/ckeditor5-typing/src/utils/injectunsafekeystrokeshandling.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>n,u:()=>c});var o=s("./packages/ckeditor5-utils/src/keyboard.ts"),i=s("./packages/ckeditor5-utils/src/env.ts"),r=s("./packages/ckeditor5-typing/src/utils/utils.js");function n(e){let t=null;const s=e.model,o=e.editing.view,n=e.commands.get("input");function a(e){if(i.ZP.isWindows&&(0,r.Uw)(e,o.document))return;const a=s.document,d=o.document.isComposing,h=t&&t.isEqual(a.selection);t=null,n.isEnabled&&(c(e)||a.selection.isCollapsed||d&&229===e.keyCode||!d&&229===e.keyCode&&h||l())}function l(){const e=n.buffer;e.lock();const t=e.batch;s.enqueueChange(t,(()=>{s.deleteContent(s.document.selection)})),e.unlock()}i.ZP.isAndroid?o.document.on("beforeinput",((e,t)=>a(t)),{priority:"lowest"}):o.document.on("keydown",((e,t)=>a(t)),{priority:"lowest"}),o.document.on("compositionstart",(function(){const e=s.document,t=1!==e.selection.rangeCount||e.selection.getFirstRange().isFlat;if(e.selection.isCollapsed||t)return;l()}),{priority:"lowest"}),o.document.on("compositionend",(()=>{t=s.createSelection(s.document.selection)}),{priority:"lowest"})}const a=[(0,o.Cq)("arrowUp"),(0,o.Cq)("arrowRight"),(0,o.Cq)("arrowDown"),(0,o.Cq)("arrowLeft"),9,16,17,18,19,20,27,33,34,35,36,45,91,93,144,145,173,174,175,176,177,178,179,255];for(let e=112;e<=135;e++)a.push(e);function c(e){return!(!e.ctrlKey&&!e.metaKey)||a.includes(e.keyCode)}},"./packages/ckeditor5-typing/src/utils/utils.js":(e,t,s)=>{"use strict";s.d(t,{E9:()=>r,xG:()=>n,Uw:()=>c});var o=s("./packages/ckeditor5-utils/src/diff.ts");var i=s("./packages/ckeditor5-utils/src/keyboard.ts");function r(e){if(0==e.length)return!1;for(const t of e)if("children"===t.type&&!n(t))return!0;return!1}function n(e){if(e.newChildren.length-e.oldChildren.length!=1)return;const t=function(e,t){const s=[];let o=0,i=null;return e.forEach((e=>{"equal"==e?(r(),o++):"insert"==e?(i&&"insert"==i.type?i.values.push(t[o]):(r(),i={type:"insert",index:o,values:[t[o]]}),o++):i&&"delete"==i.type?i.howMany++:(r(),i={type:"delete",index:o,howMany:1})})),r(),s;function r(){i&&(s.push(i),i=null)}}((0,o.Z)(e.oldChildren,e.newChildren,a),e.newChildren);if(t.length>1)return;const s=t[0];return s.values[0]&&s.values[0].is("$text")?s:void 0}function a(e,t){return e&&e.is("$text")&&t&&t.is("$text")?e.data===t.data:e===t}function c(e,t){const s=t.selection,o=e.shiftKey&&e.keyCode===i.Do.delete,r=!s.isCollapsed;return o&&r}},"./packages/ckeditor5-ui/src/bindings/clickoutsidehandler.js":(e,t,s)=>{"use strict";function o({emitter:e,activator:t,callback:s,contextElements:o}){e.listenTo(document,"mousedown",((e,i)=>{if(!t())return;const r="function"==typeof i.composedPath?i.composedPath():[];for(const e of o)if(e.contains(i.target)||r.includes(e))return;s()}))}s.d(t,{Z:()=>o})},"./packages/ckeditor5-ui/src/button/buttonview.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>u});var o=s("./packages/ckeditor5-ui/src/view.js"),i=s("./packages/ckeditor5-ui/src/icon/iconview.js"),r=s("./packages/ckeditor5-utils/src/uid.ts"),n=s("./packages/ckeditor5-utils/src/keyboard.ts"),a=s("./packages/ckeditor5-utils/src/env.ts"),c=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),l=s.n(c),d=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/button/button.css"),h={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};l()(d.Z,h);d.Z.locals;class u extends o.Z{constructor(e){super(e);const t=this.bindTemplate,s=(0,r.Z)();this.set("class"),this.set("labelStyle"),this.set("icon"),this.set("isEnabled",!0),this.set("isOn",!1),this.set("isVisible",!0),this.set("isToggleable",!1),this.set("keystroke"),this.set("label"),this.set("tabindex",-1),this.set("tooltip"),this.set("tooltipPosition","s"),this.set("type","button"),this.set("withText",!1),this.set("withKeystroke",!1),this.children=this.createCollection(),this.labelView=this._createLabelView(s),this.iconView=new i.Z,this.iconView.extendTemplate({attributes:{class:"ck-button__icon"}}),this.keystrokeView=this._createKeystrokeView(),this.bind("_tooltipString").to(this,"tooltip",this,"label",this,"keystroke",this._getTooltipString.bind(this));const o={tag:"button",attributes:{class:["ck","ck-button",t.to("class"),t.if("isEnabled","ck-disabled",(e=>!e)),t.if("isVisible","ck-hidden",(e=>!e)),t.to("isOn",(e=>e?"ck-on":"ck-off")),t.if("withText","ck-button_with-text"),t.if("withKeystroke","ck-button_with-keystroke")],type:t.to("type",(e=>e||"button")),tabindex:t.to("tabindex"),"aria-labelledby":`ck-editor__aria-label_${s}`,"aria-disabled":t.if("isEnabled",!0,(e=>!e)),"aria-pressed":t.to("isOn",(e=>!!this.isToggleable&&String(!!e))),"data-cke-tooltip-text":t.to("_tooltipString"),"data-cke-tooltip-position":t.to("tooltipPosition")},children:this.children,on:{click:t.to((e=>{this.isEnabled?this.fire("execute"):e.preventDefault()}))}};a.ZP.isSafari&&(o.on.mousedown=t.to((e=>{this.focus(),e.preventDefault()}))),this.setTemplate(o)}render(){super.render(),this.icon&&(this.iconView.bind("content").to(this,"icon"),this.children.add(this.iconView)),this.children.add(this.labelView),this.withKeystroke&&this.keystroke&&this.children.add(this.keystrokeView)}focus(){this.element.focus()}_createLabelView(e){const t=new o.Z,s=this.bindTemplate;return t.setTemplate({tag:"span",attributes:{class:["ck","ck-button__label"],style:s.to("labelStyle"),id:`ck-editor__aria-label_${e}`},children:[{text:this.bindTemplate.to("label")}]}),t}_createKeystrokeView(){const e=new o.Z;return e.setTemplate({tag:"span",attributes:{class:["ck","ck-button__keystroke"]},children:[{text:this.bindTemplate.to("keystroke",(e=>(0,n.XU)(e)))}]}),e}_getTooltipString(e,t,s){return e?"string"==typeof e?e:(s&&(s=(0,n.XU)(s)),e instanceof Function?e(t,s):`${t}${s?` (${s})`:""}`):""}}},"./packages/ckeditor5-ui/src/button/switchbuttonview.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>l});var o=s("./packages/ckeditor5-ui/src/view.js"),i=s("./packages/ckeditor5-ui/src/button/buttonview.js"),r=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),n=s.n(r),a=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/button/switchbutton.css"),c={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n()(a.Z,c);a.Z.locals;class l extends i.Z{constructor(e){super(e),this.isToggleable=!0,this.toggleSwitchView=this._createToggleView(),this.extendTemplate({attributes:{class:"ck-switchbutton"}})}render(){super.render(),this.children.add(this.toggleSwitchView)}_createToggleView(){const e=new o.Z;return e.setTemplate({tag:"span",attributes:{class:["ck","ck-button__toggle"]},children:[{tag:"span",attributes:{class:["ck","ck-button__toggle__inner"]}}]}),e}}},"./packages/ckeditor5-ui/src/dropdown/button/dropdownbuttonview.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>n});var o=s("./packages/ckeditor5-ui/src/button/buttonview.js"),i=s("./packages/ckeditor5-ui/theme/icons/dropdown-arrow.svg"),r=s("./packages/ckeditor5-ui/src/icon/iconview.js");class n extends o.Z{constructor(e){super(e),this.arrowView=this._createArrowView(),this.extendTemplate({attributes:{"aria-haspopup":!0,"aria-expanded":this.bindTemplate.to("isOn",(e=>String(e)))}}),this.delegate("execute").to(this,"open")}render(){super.render(),this.children.add(this.arrowView)}_createArrowView(){const e=new r.Z;return e.content=i.Z,e.extendTemplate({attributes:{class:"ck-dropdown__arrow"}}),e}}},"./packages/ckeditor5-ui/src/dropdown/utils.js":(e,t,s)=>{"use strict";s.d(t,{Pm:()=>A,up:()=>T,t9:()=>x,Mh:()=>C});var o=s("./packages/ckeditor5-ui/src/view.js"),i=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class r extends o.Z{constructor(e){super(e);const t=this.bindTemplate;this.set("isVisible",!1),this.set("position","se"),this.children=this.createCollection(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-reset","ck-dropdown__panel",t.to("position",(e=>`ck-dropdown__panel_${e}`)),t.if("isVisible","ck-dropdown__panel-visible")]},children:this.children,on:{selectstart:t.to((e=>e.preventDefault()))}})}focus(){this.children.length&&("function"==typeof this.children.first.focus?this.children.first.focus():(0,i.KE)("ui-dropdown-panel-focus-child-missing-focus",{childView:this.children.first,dropdownPanel:this}))}focusLast(){if(this.children.length){const e=this.children.last;"function"==typeof e.focusLast?e.focusLast():e.focus()}}}var n=s("./packages/ckeditor5-utils/src/keystrokehandler.ts"),a=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),c=s.n(a),l=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/dropdown/dropdown.css"),d={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};c()(l.Z,d);l.Z.locals;var h=s("./packages/ckeditor5-utils/src/dom/position.ts");class u extends o.Z{constructor(e,t,s){super(e);const o=this.bindTemplate;this.buttonView=t,this.panelView=s,this.set("isOpen",!1),this.set("isEnabled",!0),this.set("class"),this.set("id"),this.set("panelPosition","auto"),this.keystrokes=new n.Z,this.setTemplate({tag:"div",attributes:{class:["ck","ck-dropdown",o.to("class"),o.if("isEnabled","ck-disabled",(e=>!e))],id:o.to("id"),"aria-describedby":o.to("ariaDescribedById")},children:[t,s]}),t.extendTemplate({attributes:{class:["ck-dropdown__button"],"data-cke-tooltip-disabled":o.to("isOpen")}})}render(){super.render(),this.listenTo(this.buttonView,"open",(()=>{this.isOpen=!this.isOpen})),this.panelView.bind("isVisible").to(this,"isOpen"),this.on("change:isOpen",(()=>{this.isOpen?("auto"===this.panelPosition?this.panelView.position=u._getOptimalPosition({element:this.panelView.element,target:this.buttonView.element,fitInViewport:!0,positions:this._panelPositions}).name:this.panelView.position=this.panelPosition,this.panelView.focus()):this.focus()})),this.keystrokes.listenTo(this.element);const e=(e,t)=>{this.isOpen&&(this.isOpen=!1,t())};this.keystrokes.set("arrowdown",((e,t)=>{this.buttonView.isEnabled&&!this.isOpen&&(this.isOpen=!0,t())})),this.keystrokes.set("arrowright",((e,t)=>{this.isOpen&&t()})),this.keystrokes.set("arrowleft",e),this.keystrokes.set("esc",e)}focus(){this.buttonView.focus()}get _panelPositions(){const{south:e,north:t,southEast:s,southWest:o,northEast:i,northWest:r,southMiddleEast:n,southMiddleWest:a,northMiddleEast:c,northMiddleWest:l}=u.defaultPanelPositions;return"rtl"!==this.locale.uiLanguageDirection?[s,o,n,a,e,i,r,c,l,t]:[o,s,a,n,e,r,i,l,c,t]}}u.defaultPanelPositions={south:(e,t)=>({top:e.bottom,left:e.left-(t.width-e.width)/2,name:"s"}),southEast:e=>({top:e.bottom,left:e.left,name:"se"}),southWest:(e,t)=>({top:e.bottom,left:e.left-t.width+e.width,name:"sw"}),southMiddleEast:(e,t)=>({top:e.bottom,left:e.left-(t.width-e.width)/4,name:"sme"}),southMiddleWest:(e,t)=>({top:e.bottom,left:e.left-3*(t.width-e.width)/4,name:"smw"}),north:(e,t)=>({top:e.top-t.height,left:e.left-(t.width-e.width)/2,name:"n"}),northEast:(e,t)=>({top:e.top-t.height,left:e.left,name:"ne"}),northWest:(e,t)=>({top:e.top-t.height,left:e.left-t.width+e.width,name:"nw"}),northMiddleEast:(e,t)=>({top:e.top-t.height,left:e.left-(t.width-e.width)/4,name:"nme"}),northMiddleWest:(e,t)=>({top:e.top-t.height,left:e.left-3*(t.width-e.width)/4,name:"nmw"})},u._getOptimalPosition=h.x;var p=s("./packages/ckeditor5-ui/src/dropdown/button/dropdownbuttonview.js"),g=s("./packages/ckeditor5-ui/src/toolbar/toolbarview.js"),f=s("./packages/ckeditor5-ui/src/list/listview.js"),m=s("./packages/ckeditor5-ui/src/list/listitemview.js");class k extends o.Z{constructor(e){super(e),this.setTemplate({tag:"li",attributes:{class:["ck","ck-list__separator"]}})}}var b=s("./packages/ckeditor5-ui/src/button/buttonview.js"),_=s("./packages/ckeditor5-ui/src/button/switchbuttonview.js"),w=s("./packages/ckeditor5-ui/src/bindings/clickoutsidehandler.js"),v=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/dropdown/toolbardropdown.css"),y={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};c()(v.Z,y);v.Z.locals;var Z=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/dropdown/listdropdown.css"),P={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};c()(Z.Z,P);Z.Z.locals;function x(e,t=p.Z){const s=new t(e),o=new r(e),i=new u(e,s,o);return s.bind("isEnabled").to(i),s instanceof p.Z?s.bind("isOn").to(i,"isOpen"):s.arrowView.bind("isOn").to(i,"isOpen"),function(e){(function(e){e.on("render",(()=>{(0,w.Z)({emitter:e,activator:()=>e.isOpen,callback:()=>{e.isOpen=!1},contextElements:[e.element]})}))})(e),function(e){e.on("execute",(t=>{t.source instanceof _.Z||(e.isOpen=!1)}))}(e),function(e){e.keystrokes.set("arrowdown",((t,s)=>{e.isOpen&&(e.panelView.focus(),s())})),e.keystrokes.set("arrowup",((t,s)=>{e.isOpen&&(e.panelView.focusLast(),s())}))}(e)}(i),i}function T(e,t,s={}){const o=e.locale,i=o.t,r=e.toolbarView=new g.Z(o);r.set("ariaLabel",i("Dropdown toolbar")),e.extendTemplate({attributes:{class:["ck-toolbar-dropdown"]}}),t.map((e=>r.items.add(e))),s.enableActiveItemFocusOnDropdownOpen&&C(e,(()=>r.items.find((e=>e.isOn)))),e.panelView.children.add(r),r.items.delegate("execute").to(e)}function A(e,t){const s=e.locale,o=e.listView=new f.Z(s);o.items.bindTo(t).using((({type:e,model:t})=>{if("separator"===e)return new k(s);if("button"===e||"switchbutton"===e){const o=new m.Z(s);let i;return i="button"===e?new b.Z(s):new _.Z(s),i.bind(...Object.keys(t)).to(t),i.delegate("execute").to(o),o.children.add(i),o}})),e.panelView.children.add(o),o.items.delegate("execute").to(e),C(e,(()=>o.items.find((e=>e instanceof m.Z&&e.children.first.isOn))))}function C(e,t){e.on("change:isOpen",(()=>{if(!e.isOpen)return;const s=t();s&&("function"==typeof s.focus?s.focus():(0,i.KE)("ui-dropdown-focus-child-on-open-child-missing-focus",{view:s}))}),{priority:"low"})}},"./packages/ckeditor5-ui/src/focuscycler.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./packages/ckeditor5-utils/src/dom/isvisible.ts");class i{constructor(e){if(Object.assign(this,e),e.actions&&e.keystrokeHandler)for(const t in e.actions){let s=e.actions[t];"string"==typeof s&&(s=[s]);for(const o of s)e.keystrokeHandler.set(o,((e,s)=>{this[t](),s()}))}}get first(){return this.focusables.find(r)||null}get last(){return this.focusables.filter(r).slice(-1)[0]||null}get next(){return this._getFocusableItem(1)}get previous(){return this._getFocusableItem(-1)}get current(){let e=null;return null===this.focusTracker.focusedElement?null:(this.focusables.find(((t,s)=>{const o=t.element===this.focusTracker.focusedElement;return o&&(e=s),o})),e)}focusFirst(){this._focus(this.first)}focusLast(){this._focus(this.last)}focusNext(){this._focus(this.next)}focusPrevious(){this._focus(this.previous)}_focus(e){e&&e.focus()}_getFocusableItem(e){const t=this.current,s=this.focusables.length;if(!s)return null;if(null===t)return this[1===e?"first":"last"];let o=(t+s+e)%s;do{const t=this.focusables.get(o);if(r(t))return t;o=(o+s+e)%s}while(o!==t);return null}}function r(e){return!(!e.focus||!(0,o.Z)(e.element))}},"./packages/ckeditor5-ui/src/icon/iconview.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>c});var o=s("./packages/ckeditor5-ui/src/view.js"),i=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),r=s.n(i),n=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/icon/icon.css"),a={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};r()(n.Z,a);n.Z.locals;class c extends o.Z{constructor(){super();const e=this.bindTemplate;this.set("content",""),this.set("viewBox","0 0 20 20"),this.set("fillColor",""),this.setTemplate({tag:"svg",ns:"http://www.w3.org/2000/svg",attributes:{class:["ck","ck-icon"],viewBox:e.to("viewBox")}})}render(){super.render(),this._updateXMLContent(),this._colorFillPaths(),this.on("change:content",(()=>{this._updateXMLContent(),this._colorFillPaths()})),this.on("change:fillColor",(()=>{this._colorFillPaths()}))}_updateXMLContent(){if(this.content){const e=(new DOMParser).parseFromString(this.content.trim(),"image/svg+xml").querySelector("svg"),t=e.getAttribute("viewBox");for(t&&(this.viewBox=t);this.element.firstChild;)this.element.removeChild(this.element.firstChild);for(;e.childNodes.length>0;)this.element.appendChild(e.childNodes[0])}}_colorFillPaths(){this.fillColor&&this.element.querySelectorAll(".ck-icon__fill").forEach((e=>{e.style.fill=this.fillColor}))}}},"./packages/ckeditor5-ui/src/list/listitemview.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./packages/ckeditor5-ui/src/view.js");class i extends o.Z{constructor(e){super(e);const t=this.bindTemplate;this.set("isVisible",!0),this.children=this.createCollection(),this.setTemplate({tag:"li",attributes:{class:["ck","ck-list__item",t.if("isVisible","ck-hidden",(e=>!e))]},children:this.children})}focus(){this.children.first.focus()}}},"./packages/ckeditor5-ui/src/list/listview.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>h});var o=s("./packages/ckeditor5-ui/src/view.js"),i=s("./packages/ckeditor5-utils/src/focustracker.ts"),r=s("./packages/ckeditor5-ui/src/focuscycler.js"),n=s("./packages/ckeditor5-utils/src/keystrokehandler.ts"),a=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),c=s.n(a),l=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/list/list.css"),d={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};c()(l.Z,d);l.Z.locals;class h extends o.Z{constructor(){super(),this.items=this.createCollection(),this.focusTracker=new i.Z,this.keystrokes=new n.Z,this._focusCycler=new r.Z({focusables:this.items,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"arrowup",focusNext:"arrowdown"}}),this.setTemplate({tag:"ul",attributes:{class:["ck","ck-reset","ck-list"]},children:this.items})}render(){super.render();for(const e of this.items)this.focusTracker.add(e.element);this.items.on("add",((e,t)=>{this.focusTracker.add(t.element)})),this.items.on("remove",((e,t)=>{this.focusTracker.remove(t.element)})),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}focusLast(){this._focusCycler.focusLast()}}},"./packages/ckeditor5-ui/src/panel/balloon/balloonpanelview.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>f,M:()=>k});var o=s("./packages/ckeditor5-ui/src/view.js"),i=s("./packages/ckeditor5-utils/src/dom/position.ts"),r=s("./packages/ckeditor5-utils/src/dom/isrange.ts"),n=s("./packages/ckeditor5-utils/src/dom/tounit.ts"),a=s("./packages/ckeditor5-utils/src/dom/global.ts"),c=s("./node_modules/lodash-es/isElement.js"),l=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),d=s.n(l),h=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/panel/balloonpanel.css"),u={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};d()(h.Z,u);h.Z.locals;const p=(0,n.Z)("px"),g=a.Z.document.body;class f extends o.Z{constructor(e){super(e);const t=this.bindTemplate;this.set("top",0),this.set("left",0),this.set("position","arrow_nw"),this.set("isVisible",!1),this.set("withArrow",!0),this.set("class"),this.content=this.createCollection(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-balloon-panel",t.to("position",(e=>`ck-balloon-panel_${e}`)),t.if("isVisible","ck-balloon-panel_visible"),t.if("withArrow","ck-balloon-panel_with-arrow"),t.to("class")],style:{top:t.to("top",p),left:t.to("left",p)}},children:this.content})}show(){this.isVisible=!0}hide(){this.isVisible=!1}attachTo(e){this.show();const t=f.defaultPositions,s=Object.assign({},{element:this.element,positions:[t.southArrowNorth,t.southArrowNorthMiddleWest,t.southArrowNorthMiddleEast,t.southArrowNorthWest,t.southArrowNorthEast,t.northArrowSouth,t.northArrowSouthMiddleWest,t.northArrowSouthMiddleEast,t.northArrowSouthWest,t.northArrowSouthEast,t.viewportStickyNorth],limiter:g,fitInViewport:!0},e),o=f._getOptimalPosition(s),i=parseInt(o.left),r=parseInt(o.top),{name:n,config:a={}}=o,{withArrow:c=!0}=a;Object.assign(this,{top:r,left:i,position:n,withArrow:c})}pin(e){this.unpin(),this._pinWhenIsVisibleCallback=()=>{this.isVisible?this._startPinning(e):this._stopPinning()},this._startPinning(e),this.listenTo(this,"change:isVisible",this._pinWhenIsVisibleCallback)}unpin(){this._pinWhenIsVisibleCallback&&(this._stopPinning(),this.stopListening(this,"change:isVisible",this._pinWhenIsVisibleCallback),this._pinWhenIsVisibleCallback=null,this.hide())}_startPinning(e){this.attachTo(e);const t=m(e.target),s=e.limiter?m(e.limiter):g;this.listenTo(a.Z.document,"scroll",((o,i)=>{const r=i.target,n=t&&r.contains(t),a=s&&r.contains(s);!n&&!a&&t&&s||this.attachTo(e)}),{useCapture:!0}),this.listenTo(a.Z.window,"resize",(()=>{this.attachTo(e)}))}_stopPinning(){this.stopListening(a.Z.document,"scroll"),this.stopListening(a.Z.window,"resize")}}function m(e){return(0,c.Z)(e)?e:(0,r.Z)(e)?e.commonAncestorContainer:"function"==typeof e?m(e()):null}function k({sideOffset:e=f.arrowSideOffset,heightOffset:t=f.arrowHeightOffset,stickyVerticalOffset:s=f.stickyVerticalOffset,config:o}={}){return{northWestArrowSouthWest:(t,s)=>({top:i(t,s),left:t.left-e,name:"arrow_sw",...o&&{config:o}}),northWestArrowSouthMiddleWest:(t,s)=>({top:i(t,s),left:t.left-.25*s.width-e,name:"arrow_smw",...o&&{config:o}}),northWestArrowSouth:(e,t)=>({top:i(e,t),left:e.left-t.width/2,name:"arrow_s",...o&&{config:o}}),northWestArrowSouthMiddleEast:(t,s)=>({top:i(t,s),left:t.left-.75*s.width+e,name:"arrow_sme",...o&&{config:o}}),northWestArrowSouthEast:(t,s)=>({top:i(t,s),left:t.left-s.width+e,name:"arrow_se",...o&&{config:o}}),northArrowSouthWest:(t,s)=>({top:i(t,s),left:t.left+t.width/2-e,name:"arrow_sw",...o&&{config:o}}),northArrowSouthMiddleWest:(t,s)=>({top:i(t,s),left:t.left+t.width/2-.25*s.width-e,name:"arrow_smw",...o&&{config:o}}),northArrowSouth:(e,t)=>({top:i(e,t),left:e.left+e.width/2-t.width/2,name:"arrow_s",...o&&{config:o}}),northArrowSouthMiddleEast:(t,s)=>({top:i(t,s),left:t.left+t.width/2-.75*s.width+e,name:"arrow_sme",...o&&{config:o}}),northArrowSouthEast:(t,s)=>({top:i(t,s),left:t.left+t.width/2-s.width+e,name:"arrow_se",...o&&{config:o}}),northEastArrowSouthWest:(t,s)=>({top:i(t,s),left:t.right-e,name:"arrow_sw",...o&&{config:o}}),northEastArrowSouthMiddleWest:(t,s)=>({top:i(t,s),left:t.right-.25*s.width-e,name:"arrow_smw",...o&&{config:o}}),northEastArrowSouth:(e,t)=>({top:i(e,t),left:e.right-t.width/2,name:"arrow_s",...o&&{config:o}}),northEastArrowSouthMiddleEast:(t,s)=>({top:i(t,s),left:t.right-.75*s.width+e,name:"arrow_sme",...o&&{config:o}}),northEastArrowSouthEast:(t,s)=>({top:i(t,s),left:t.right-s.width+e,name:"arrow_se",...o&&{config:o}}),southWestArrowNorthWest:(t,s)=>({top:r(t),left:t.left-e,name:"arrow_nw",...o&&{config:o}}),southWestArrowNorthMiddleWest:(t,s)=>({top:r(t),left:t.left-.25*s.width-e,name:"arrow_nmw",...o&&{config:o}}),southWestArrowNorth:(e,t)=>({top:r(e),left:e.left-t.width/2,name:"arrow_n",...o&&{config:o}}),southWestArrowNorthMiddleEast:(t,s)=>({top:r(t),left:t.left-.75*s.width+e,name:"arrow_nme",...o&&{config:o}}),southWestArrowNorthEast:(t,s)=>({top:r(t),left:t.left-s.width+e,name:"arrow_ne",...o&&{config:o}}),southArrowNorthWest:(t,s)=>({top:r(t),left:t.left+t.width/2-e,name:"arrow_nw",...o&&{config:o}}),southArrowNorthMiddleWest:(t,s)=>({top:r(t),left:t.left+t.width/2-.25*s.width-e,name:"arrow_nmw",...o&&{config:o}}),southArrowNorth:(e,t)=>({top:r(e),left:e.left+e.width/2-t.width/2,name:"arrow_n",...o&&{config:o}}),southArrowNorthMiddleEast:(t,s)=>({top:r(t),left:t.left+t.width/2-.75*s.width+e,name:"arrow_nme",...o&&{config:o}}),southArrowNorthEast:(t,s)=>({top:r(t),left:t.left+t.width/2-s.width+e,name:"arrow_ne",...o&&{config:o}}),southEastArrowNorthWest:(t,s)=>({top:r(t),left:t.right-e,name:"arrow_nw",...o&&{config:o}}),southEastArrowNorthMiddleWest:(t,s)=>({top:r(t),left:t.right-.25*s.width-e,name:"arrow_nmw",...o&&{config:o}}),southEastArrowNorth:(e,t)=>({top:r(e),left:e.right-t.width/2,name:"arrow_n",...o&&{config:o}}),southEastArrowNorthMiddleEast:(t,s)=>({top:r(t),left:t.right-.75*s.width+e,name:"arrow_nme",...o&&{config:o}}),southEastArrowNorthEast:(t,s)=>({top:r(t),left:t.right-s.width+e,name:"arrow_ne",...o&&{config:o}}),westArrowEast:(e,s)=>({top:e.top+e.height/2-s.height/2,left:e.left-s.width-t,name:"arrow_e",...o&&{config:o}}),eastArrowWest:(e,s)=>({top:e.top+e.height/2-s.height/2,left:e.right+t,name:"arrow_w",...o&&{config:o}}),viewportStickyNorth:(e,t,i)=>e.getIntersection(i)?{top:i.top+s,left:e.left+e.width/2-t.width/2,name:"arrowless",config:{withArrow:!1,...o}}:null};function i(e,s){return e.top-s.height-t}function r(e){return e.bottom+t}}f.arrowSideOffset=25,f.arrowHeightOffset=10,f.stickyVerticalOffset=20,f._getOptimalPosition=i.x,f.defaultPositions=k()},"./packages/ckeditor5-ui/src/panel/balloon/contextualballoon.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>b});var o=s("./packages/ckeditor5-core/src/plugin.js"),i=s("./packages/ckeditor5-ui/src/panel/balloon/balloonpanelview.js"),r=s("./packages/ckeditor5-ui/src/view.js"),n=s("./packages/ckeditor5-ui/src/button/buttonview.js"),a=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),c=s("./packages/ckeditor5-utils/src/focustracker.ts"),l=s("./packages/ckeditor5-utils/src/dom/tounit.ts"),d=s("./packages/ckeditor5-utils/src/dom/rect.ts");var h=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),u=s.n(h),p=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/panel/balloonrotator.css"),g={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};u()(p.Z,g);p.Z.locals;var f=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/panel/fakepanel.css"),m={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};u()(f.Z,m);f.Z.locals;const k=(0,l.Z)("px");class b extends o.Z{static get pluginName(){return"ContextualBalloon"}constructor(e){super(e),this.positionLimiter=()=>{const e=this.editor.editing.view,t=e.document.selection.editableElement;return t?e.domConverter.mapViewToDom(t.root):null},this.set("visibleView",null),this.view=new i.Z(e.locale),e.ui.view.body.add(this.view),e.ui.focusTracker.add(this.view.element),this._viewToStack=new Map,this._idToStack=new Map,this.set("_numberOfStacks",0),this.set("_singleViewMode",!1),this._rotatorView=this._createRotatorView(),this._fakePanelsView=this._createFakePanelsView()}destroy(){super.destroy(),this.view.destroy(),this._rotatorView.destroy(),this._fakePanelsView.destroy()}hasView(e){return Array.from(this._viewToStack.keys()).includes(e)}add(e){if(this.hasView(e.view))throw new a.ZP("contextualballoon-add-view-exist",[this,e]);const t=e.stackId||"main";if(!this._idToStack.has(t))return this._idToStack.set(t,new Map([[e.view,e]])),this._viewToStack.set(e.view,this._idToStack.get(t)),this._numberOfStacks=this._idToStack.size,void(this._visibleStack&&!e.singleViewMode||this.showStack(t));const s=this._idToStack.get(t);e.singleViewMode&&this.showStack(t),s.set(e.view,e),this._viewToStack.set(e.view,s),s===this._visibleStack&&this._showView(e)}remove(e){if(!this.hasView(e))throw new a.ZP("contextualballoon-remove-view-not-exist",[this,e]);const t=this._viewToStack.get(e);this._singleViewMode&&this.visibleView===e&&(this._singleViewMode=!1),this.visibleView===e&&(1===t.size?this._idToStack.size>1?this._showNextStack():(this.view.hide(),this.visibleView=null,this._rotatorView.hideView()):this._showView(Array.from(t.values())[t.size-2])),1===t.size?(this._idToStack.delete(this._getStackId(t)),this._numberOfStacks=this._idToStack.size):t.delete(e),this._viewToStack.delete(e)}updatePosition(e){e&&(this._visibleStack.get(this.visibleView).position=e),this.view.pin(this._getBalloonPosition()),this._fakePanelsView.updatePosition()}showStack(e){this.visibleStack=e;const t=this._idToStack.get(e);if(!t)throw new a.ZP("contextualballoon-showstack-stack-not-exist",this);this._visibleStack!==t&&this._showView(Array.from(t.values()).pop())}get _visibleStack(){return this._viewToStack.get(this.visibleView)}_getStackId(e){return Array.from(this._idToStack.entries()).find((t=>t[1]===e))[0]}_showNextStack(){const e=Array.from(this._idToStack.values());let t=e.indexOf(this._visibleStack)+1;e[t]||(t=0),this.showStack(this._getStackId(e[t]))}_showPrevStack(){const e=Array.from(this._idToStack.values());let t=e.indexOf(this._visibleStack)-1;e[t]||(t=e.length-1),this.showStack(this._getStackId(e[t]))}_createRotatorView(){const e=new _(this.editor.locale),t=this.editor.locale.t;return this.view.content.add(e),e.bind("isNavigationVisible").to(this,"_numberOfStacks",this,"_singleViewMode",((e,t)=>!t&&e>1)),e.on("change:isNavigationVisible",(()=>this.updatePosition()),{priority:"low"}),e.bind("counter").to(this,"visibleView",this,"_numberOfStacks",((e,s)=>{if(s<2)return"";const o=Array.from(this._idToStack.values()).indexOf(this._visibleStack)+1;return t("%0 of %1",[o,s])})),e.buttonNextView.on("execute",(()=>{e.focusTracker.isFocused&&this.editor.editing.view.focus(),this._showNextStack()})),e.buttonPrevView.on("execute",(()=>{e.focusTracker.isFocused&&this.editor.editing.view.focus(),this._showPrevStack()})),e}_createFakePanelsView(){const e=new w(this.editor.locale,this.view);return e.bind("numberOfPanels").to(this,"_numberOfStacks",this,"_singleViewMode",((e,t)=>!t&&e>=2?Math.min(e-1,2):0)),e.listenTo(this.view,"change:top",(()=>e.updatePosition())),e.listenTo(this.view,"change:left",(()=>e.updatePosition())),this.editor.ui.view.body.add(e),e}_showView({view:e,balloonClassName:t="",withArrow:s=!0,singleViewMode:o=!1}){this.view.class=t,this.view.withArrow=s,this._rotatorView.showView(e),this.visibleView=e,this.view.pin(this._getBalloonPosition()),this._fakePanelsView.updatePosition(),o&&(this._singleViewMode=!0)}_getBalloonPosition(){let e=Array.from(this._visibleStack.values()).pop().position;return e&&(e.limiter||(e=Object.assign({},e,{limiter:this.positionLimiter})),e=Object.assign({},e,{viewportOffsetConfig:this.editor.ui.viewportOffset})),e}}class _ extends r.Z{constructor(e){super(e);const t=e.t,s=this.bindTemplate;this.set("isNavigationVisible",!0),this.focusTracker=new c.Z,this.buttonPrevView=this._createButtonView(t("Previous"),'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M11.463 5.187a.888.888 0 1 1 1.254 1.255L9.16 10l3.557 3.557a.888.888 0 1 1-1.254 1.255L7.26 10.61a.888.888 0 0 1 .16-1.382l4.043-4.042z"/></svg>'),this.buttonNextView=this._createButtonView(t("Next"),'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M8.537 14.813a.888.888 0 1 1-1.254-1.255L10.84 10 7.283 6.442a.888.888 0 1 1 1.254-1.255L12.74 9.39a.888.888 0 0 1-.16 1.382l-4.043 4.042z"/></svg>'),this.content=this.createCollection(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-balloon-rotator"],"z-index":"-1"},children:[{tag:"div",attributes:{class:["ck-balloon-rotator__navigation",s.to("isNavigationVisible",(e=>e?"":"ck-hidden"))]},children:[this.buttonPrevView,{tag:"span",attributes:{class:["ck-balloon-rotator__counter"]},children:[{text:s.to("counter")}]},this.buttonNextView]},{tag:"div",attributes:{class:"ck-balloon-rotator__content"},children:this.content}]})}render(){super.render(),this.focusTracker.add(this.element)}destroy(){super.destroy(),this.focusTracker.destroy()}showView(e){this.hideView(),this.content.add(e)}hideView(){this.content.clear()}_createButtonView(e,t){const s=new n.Z(this.locale);return s.set({label:e,icon:t,tooltip:!0}),s}}class w extends r.Z{constructor(e,t){super(e);const s=this.bindTemplate;this.set("top",0),this.set("left",0),this.set("height",0),this.set("width",0),this.set("numberOfPanels",0),this.content=this.createCollection(),this._balloonPanelView=t,this.setTemplate({tag:"div",attributes:{class:["ck-fake-panel",s.to("numberOfPanels",(e=>e?"":"ck-hidden"))],style:{top:s.to("top",k),left:s.to("left",k),width:s.to("width",k),height:s.to("height",k)}},children:this.content}),this.on("change:numberOfPanels",((e,t,s,o)=>{s>o?this._addPanels(s-o):this._removePanels(o-s),this.updatePosition()}))}_addPanels(e){for(;e--;){const e=new r.Z;e.setTemplate({tag:"div"}),this.content.add(e),this.registerChild(e)}}_removePanels(e){for(;e--;){const e=this.content.last;this.content.remove(e),this.deregisterChild(e),e.destroy()}}updatePosition(){if(this.numberOfPanels){const{top:e,left:t}=this._balloonPanelView,{width:s,height:o}=new d.Z(this._balloonPanelView.element);Object.assign(this,{top:e,left:t,width:s,height:o})}}}},"./packages/ckeditor5-ui/src/template.js":(e,t,s)=>{"use strict";s.d(t,{ZP:()=>u});var o=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),i=s("./packages/ckeditor5-utils/src/mix.ts"),r=s("./packages/ckeditor5-utils/src/emittermixin.ts"),n=s("./packages/ckeditor5-ui/src/view.js"),a=s("./packages/ckeditor5-ui/src/viewcollection.js"),c=s("./packages/ckeditor5-utils/src/dom/isnode.ts"),l=s("./node_modules/lodash-es/isObject.js"),d=s("./node_modules/lodash-es/cloneDeepWith.js"),h=s("./packages/ckeditor5-utils/src/toarray.ts");class u{constructor(e){Object.assign(this,y(v(e))),this._isRendered=!1,this._revertData=null}render(){const e=this._renderNode({intoFragment:!0});return this._isRendered=!0,e}apply(e){return this._revertData={children:[],bindings:[],attributes:{}},this._renderNode({node:e,isApplying:!0,revertData:this._revertData}),e}revert(e){if(!this._revertData)throw new o.ZP("ui-template-revert-not-applied",[this,e]);this._revertTemplateFromNode(e,this._revertData)}*getViews(){yield*function*e(t){if(t.children)for(const s of t.children)C(s)?yield s:E(s)&&(yield*e(s))}(this)}static bind(e,t){return{to:(s,o)=>new g({eventNameOrFunction:s,attribute:s,observable:e,emitter:t,callback:o}),if:(s,o,i)=>new f({observable:e,emitter:t,attribute:s,valueIfTrue:o,callback:i})}}static extend(e,t){if(e._isRendered)throw new o.ZP("template-extend-render",[this,e]);T(e,y(v(t)))}_renderNode(e){let t;if(t=e.node?this.tag&&this.text:this.tag?this.text:!this.text,t)throw new o.ZP("ui-template-wrong-syntax",this);return this.text?this._renderText(e):this._renderElement(e)}_renderElement(e){let t=e.node;return t||(t=e.node=document.createElementNS(this.ns||"http://www.w3.org/1999/xhtml",this.tag)),this._renderAttributes(e),this._renderElementChildren(e),this._setUpListeners(e),t}_renderText(e){let t=e.node;return t?e.revertData.text=t.textContent:t=e.node=document.createTextNode(""),m(this.text)?this._bindToObservable({schema:this.text,updater:b(t),data:e}):t.textContent=this.text.join(""),t}_renderAttributes(e){let t,s,o,i;if(!this.attributes)return;const r=e.node,n=e.revertData;for(t in this.attributes)if(o=r.getAttribute(t),s=this.attributes[t],n&&(n.attributes[t]=o),i=(0,l.Z)(s[0])&&s[0].ns?s[0].ns:null,m(s)){const a=i?s[0].value:s;n&&j(t)&&a.unshift(o),this._bindToObservable({schema:a,updater:_(r,t,i),data:e})}else"style"==t&&"string"!=typeof s[0]?this._renderStyleAttribute(s[0],e):(n&&o&&j(t)&&s.unshift(o),s=s.map((e=>e&&e.value||e)).reduce(((e,t)=>e.concat(t)),[]).reduce(P,""),A(s)||r.setAttributeNS(i,t,s))}_renderStyleAttribute(e,t){const s=t.node;for(const o in e){const i=e[o];m(i)?this._bindToObservable({schema:[i],updater:w(s,o),data:t}):s.style[o]=i}}_renderElementChildren(e){const t=e.node,s=e.intoFragment?document.createDocumentFragment():t,o=e.isApplying;let i=0;for(const r of this.children)if(S(r)){if(!o){r.setParent(t);for(const e of r)s.appendChild(e.element)}}else if(C(r))o||(r.isRendered||r.render(),s.appendChild(r.element));else if((0,c.Z)(r))s.appendChild(r);else if(o){const t={children:[],bindings:[],attributes:{}};e.revertData.children.push(t),r._renderNode({node:s.childNodes[i++],isApplying:!0,revertData:t})}else s.appendChild(r.render());e.intoFragment&&t.appendChild(s)}_setUpListeners(e){if(this.eventListeners)for(const t in this.eventListeners){const s=this.eventListeners[t].map((s=>{const[o,i]=t.split("@");return s.activateDomEventListener(o,i,e)}));e.revertData&&e.revertData.bindings.push(s)}}_bindToObservable({schema:e,updater:t,data:s}){const o=s.revertData;k(e,t,s);const i=e.filter((e=>!A(e))).filter((e=>e.observable)).map((o=>o.activateAttributeListener(e,t,s)));o&&o.bindings.push(i)}_revertTemplateFromNode(e,t){for(const e of t.bindings)for(const t of e)t();if(t.text)e.textContent=t.text;else{for(const s in t.attributes){const o=t.attributes[s];null===o?e.removeAttribute(s):e.setAttribute(s,o)}for(let s=0;s<t.children.length;++s)this._revertTemplateFromNode(e.childNodes[s],t.children[s])}}}(0,i.Z)(u,r.ZP);class p{constructor(e){Object.assign(this,e)}getValue(e){const t=this.observable[this.attribute];return this.callback?this.callback(t,e):t}activateAttributeListener(e,t,s){const o=()=>k(e,t,s);return this.emitter.listenTo(this.observable,"change:"+this.attribute,o),()=>{this.emitter.stopListening(this.observable,"change:"+this.attribute,o)}}}class g extends p{activateDomEventListener(e,t,s){const o=(e,s)=>{t&&!s.target.matches(t)||("function"==typeof this.eventNameOrFunction?this.eventNameOrFunction(s):this.observable.fire(this.eventNameOrFunction,s))};return this.emitter.listenTo(s.node,e,o),()=>{this.emitter.stopListening(s.node,e,o)}}}class f extends p{getValue(e){return!A(super.getValue(e))&&(this.valueIfTrue||!0)}}function m(e){return!!e&&(e.value&&(e=e.value),Array.isArray(e)?e.some(m):e instanceof p)}function k(e,t,{node:s}){let o=function(e,t){return e.map((e=>e instanceof p?e.getValue(t):e))}(e,s);o=1==e.length&&e[0]instanceof f?o[0]:o.reduce(P,""),A(o)?t.remove():t.set(o)}function b(e){return{set(t){e.textContent=t},remove(){e.textContent=""}}}function _(e,t,s){return{set(o){e.setAttributeNS(s,t,o)},remove(){e.removeAttributeNS(s,t)}}}function w(e,t){return{set(s){e.style[t]=s},remove(){e.style[t]=null}}}function v(e){return(0,d.Z)(e,(e=>{if(e&&(e instanceof p||E(e)||C(e)||S(e)))return e}))}function y(e){if("string"==typeof e?e=function(e){return{text:[e]}}(e):e.text&&function(e){e.text=(0,h.Z)(e.text)}(e),e.on&&(e.eventListeners=function(e){for(const t in e)Z(e,t);return e}(e.on),delete e.on),!e.text){e.attributes&&function(e){for(const t in e)e[t].value&&(e[t].value=(0,h.Z)(e[t].value)),Z(e,t)}(e.attributes);const t=[];if(e.children)if(S(e.children))t.push(e.children);else for(const s of e.children)E(s)||C(s)||(0,c.Z)(s)?t.push(s):t.push(new u(s));e.children=t}return e}function Z(e,t){e[t]=(0,h.Z)(e[t])}function P(e,t){return A(t)?e:A(e)?t:`${e} ${t}`}function x(e,t){for(const s in t)e[s]?e[s].push(...t[s]):e[s]=t[s]}function T(e,t){if(t.attributes&&(e.attributes||(e.attributes={}),x(e.attributes,t.attributes)),t.eventListeners&&(e.eventListeners||(e.eventListeners={}),x(e.eventListeners,t.eventListeners)),t.text&&e.text.push(...t.text),t.children&&t.children.length){if(e.children.length!=t.children.length)throw new o.ZP("ui-template-extend-children-mismatch",e);let s=0;for(const o of t.children)T(e.children[s++],o)}}function A(e){return!e&&0!==e}function C(e){return e instanceof n.Z}function E(e){return e instanceof u}function S(e){return e instanceof a.Z}function j(e){return"class"==e||"style"==e}},"./packages/ckeditor5-ui/src/toolbar/normalizetoolbarconfig.js":(e,t,s)=>{"use strict";function o(e){return Array.isArray(e)?{items:e,removeItems:[]}:e?Object.assign({items:[],removeItems:[]},e):{items:[],removeItems:[]}}s.d(t,{Z:()=>o})},"./packages/ckeditor5-ui/src/toolbar/toolbarseparatorview.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./packages/ckeditor5-ui/src/view.js");class i extends o.Z{constructor(e){super(e),this.setTemplate({tag:"span",attributes:{class:["ck","ck-toolbar__separator"]}})}}},"./packages/ckeditor5-ui/src/toolbar/toolbarview.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>y});var o=s("./packages/ckeditor5-ui/src/view.js"),i=s("./packages/ckeditor5-utils/src/focustracker.ts"),r=s("./packages/ckeditor5-ui/src/focuscycler.js"),n=s("./packages/ckeditor5-utils/src/keystrokehandler.ts"),a=s("./packages/ckeditor5-ui/src/toolbar/toolbarseparatorview.js");class c extends o.Z{constructor(e){super(e),this.setTemplate({tag:"span",attributes:{class:["ck","ck-toolbar__line-break"]}})}}var l=s("./packages/ckeditor5-utils/src/dom/resizeobserver.ts");function d(e){return e.bindTemplate.to((t=>{t.target===e.element&&t.preventDefault()}))}var h=s("./packages/ckeditor5-utils/src/dom/rect.ts"),u=s("./packages/ckeditor5-utils/src/dom/isvisible.ts"),p=s("./packages/ckeditor5-utils/src/dom/global.ts"),g=s("./packages/ckeditor5-ui/src/dropdown/utils.js"),f=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),m=s("./packages/ckeditor5-ui/src/toolbar/normalizetoolbarconfig.js"),k=s("./packages/ckeditor5-core/theme/icons/three-vertical-dots.svg"),b=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),_=s.n(b),w=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/toolbar/toolbar.css"),v={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};_()(w.Z,v);w.Z.locals;class y extends o.Z{constructor(e,t){super(e);const s=this.bindTemplate,o=this.t;this.options=t||{},this.set("ariaLabel",o("Editor toolbar")),this.set("maxWidth","auto"),this.items=this.createCollection(),this.focusTracker=new i.Z,this.keystrokes=new n.Z,this.set("class"),this.set("isCompact",!1),this.itemsView=new Z(e),this.children=this.createCollection(),this.children.add(this.itemsView),this.focusables=this.createCollection();const a="rtl"===e.uiLanguageDirection;this._focusCycler=new r.Z({focusables:this.focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:[a?"arrowright":"arrowleft","arrowup"],focusNext:[a?"arrowleft":"arrowright","arrowdown"]}});const c=["ck","ck-toolbar",s.to("class"),s.if("isCompact","ck-toolbar_compact")];this.options.shouldGroupWhenFull&&this.options.isFloating&&c.push("ck-toolbar_floating"),this.setTemplate({tag:"div",attributes:{class:c,role:"toolbar","aria-label":s.to("ariaLabel"),style:{maxWidth:s.to("maxWidth")}},children:this.children,on:{mousedown:d(this)}}),this._behavior=this.options.shouldGroupWhenFull?new x(this):new P(this)}render(){super.render();for(const e of this.items)this.focusTracker.add(e.element);this.items.on("add",((e,t)=>{this.focusTracker.add(t.element)})),this.items.on("remove",((e,t)=>{this.focusTracker.remove(t.element)})),this.keystrokes.listenTo(this.element),this._behavior.render(this)}destroy(){return this._behavior.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy(),super.destroy()}focus(){this._focusCycler.focusFirst()}focusLast(){this._focusCycler.focusLast()}fillFromConfig(e,t){const s=(0,m.Z)(e),o=s.items.filter(((e,o,i)=>"|"===e||-1===s.removeItems.indexOf(e)&&("-"===e?!this.options.shouldGroupWhenFull||((0,f.KE)("toolbarview-line-break-ignored-when-grouping-items",i),!1):!!t.has(e)||((0,f.KE)("toolbarview-item-unavailable",{name:e}),!1)))),i=this._cleanSeparators(o).map((e=>"|"===e?new a.Z:"-"===e?new c:t.create(e)));this.items.addMany(i)}_cleanSeparators(e){const t=e=>"-"!==e&&"|"!==e,s=e.length,o=e.findIndex(t),i=s-e.slice().reverse().findIndex(t);return e.slice(o,i).filter(((e,s,o)=>{if(t(e))return!0;return!(s>0&&o[s-1]===e)}))}}class Z extends o.Z{constructor(e){super(e),this.children=this.createCollection(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-toolbar__items"]},children:this.children})}}class P{constructor(e){const t=e.bindTemplate;e.set("isVertical",!1),e.itemsView.children.bindTo(e.items).using((e=>e)),e.focusables.bindTo(e.items).using((e=>e)),e.extendTemplate({attributes:{class:[t.if("isVertical","ck-toolbar_vertical")]}})}render(){}destroy(){}}class x{constructor(e){this.view=e,this.viewChildren=e.children,this.viewFocusables=e.focusables,this.viewItemsView=e.itemsView,this.viewFocusTracker=e.focusTracker,this.viewLocale=e.locale,this.ungroupedItems=e.createCollection(),this.groupedItems=e.createCollection(),this.groupedItemsDropdown=this._createGroupedItemsDropdown(),this.resizeObserver=null,this.cachedPadding=null,this.shouldUpdateGroupingOnNextResize=!1,e.itemsView.children.bindTo(this.ungroupedItems).using((e=>e)),this.ungroupedItems.on("add",this._updateFocusCycleableItems.bind(this)),this.ungroupedItems.on("remove",this._updateFocusCycleableItems.bind(this)),e.children.on("add",this._updateFocusCycleableItems.bind(this)),e.children.on("remove",this._updateFocusCycleableItems.bind(this)),e.items.on("change",((e,t)=>{const s=t.index;for(const e of t.removed)s>=this.ungroupedItems.length?this.groupedItems.remove(e):this.ungroupedItems.remove(e);for(let e=s;e<s+t.added.length;e++){const o=t.added[e-s];e>this.ungroupedItems.length?this.groupedItems.add(o,e-this.ungroupedItems.length):this.ungroupedItems.add(o,e)}this._updateGrouping()})),e.extendTemplate({attributes:{class:["ck-toolbar_grouping"]}})}render(e){this.viewElement=e.element,this._enableGroupingOnResize(),this._enableGroupingOnMaxWidthChange(e)}destroy(){this.groupedItemsDropdown.destroy(),this.resizeObserver.destroy()}_updateGrouping(){if(!this.viewElement.ownerDocument.body.contains(this.viewElement))return;if(!(0,u.Z)(this.viewElement))return void(this.shouldUpdateGroupingOnNextResize=!0);const e=this.groupedItems.length;let t;for(;this._areItemsOverflowing;)this._groupLastItem(),t=!0;if(!t&&this.groupedItems.length){for(;this.groupedItems.length&&!this._areItemsOverflowing;)this._ungroupFirstItem();this._areItemsOverflowing&&this._groupLastItem()}this.groupedItems.length!==e&&this.view.fire("groupedItemsUpdate")}get _areItemsOverflowing(){if(!this.ungroupedItems.length)return!1;const e=this.viewElement,t=this.viewLocale.uiLanguageDirection,s=new h.Z(e.lastChild),o=new h.Z(e);if(!this.cachedPadding){const s=p.Z.window.getComputedStyle(e),o="ltr"===t?"paddingRight":"paddingLeft";this.cachedPadding=Number.parseInt(s[o])}return"ltr"===t?s.right>o.right-this.cachedPadding:s.left<o.left+this.cachedPadding}_enableGroupingOnResize(){let e;this.resizeObserver=new l.Z(this.viewElement,(t=>{e&&e===t.contentRect.width&&!this.shouldUpdateGroupingOnNextResize||(this.shouldUpdateGroupingOnNextResize=!1,this._updateGrouping(),e=t.contentRect.width)})),this._updateGrouping()}_enableGroupingOnMaxWidthChange(e){e.on("change:maxWidth",(()=>{this._updateGrouping()}))}_groupLastItem(){this.groupedItems.length||(this.viewChildren.add(new a.Z),this.viewChildren.add(this.groupedItemsDropdown),this.viewFocusTracker.add(this.groupedItemsDropdown.element)),this.groupedItems.add(this.ungroupedItems.remove(this.ungroupedItems.last),0)}_ungroupFirstItem(){this.ungroupedItems.add(this.groupedItems.remove(this.groupedItems.first)),this.groupedItems.length||(this.viewChildren.remove(this.groupedItemsDropdown),this.viewChildren.remove(this.viewChildren.last),this.viewFocusTracker.remove(this.groupedItemsDropdown.element))}_createGroupedItemsDropdown(){const e=this.viewLocale,t=e.t,s=(0,g.t9)(e);return s.class="ck-toolbar__grouped-dropdown",s.panelPosition="ltr"===e.uiLanguageDirection?"sw":"se",(0,g.up)(s,[]),s.buttonView.set({label:t("Show more items"),tooltip:!0,tooltipPosition:"rtl"===e.uiLanguageDirection?"se":"sw",icon:k.Z}),s.toolbarView.items.bindTo(this.groupedItems).using((e=>e)),s}_updateFocusCycleableItems(){this.viewFocusables.clear(),this.ungroupedItems.map((e=>{this.viewFocusables.add(e)})),this.groupedItems.length&&this.viewFocusables.add(this.groupedItemsDropdown)}}},"./packages/ckeditor5-ui/src/tooltipmanager.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>g});var o=s("./packages/ckeditor5-ui/src/view.js"),i=s("./packages/ckeditor5-ui/src/panel/balloon/balloonpanelview.js"),r=s("./packages/ckeditor5-utils/src/dom/emittermixin.ts"),n=s("./packages/ckeditor5-utils/src/index.ts"),a=s("./node_modules/lodash-es/debounce.js"),c=s("./node_modules/lodash-es/isElement.js"),l=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),d=s.n(l),h=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/tooltip/tooltip.css"),u={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};d()(h.Z,u);h.Z.locals;const p="ck-tooltip";class g{constructor(e){if(g._editors.add(e),g._instance)return g._instance;g._instance=this,this.tooltipTextView=new o.Z(e.locale),this.tooltipTextView.set("text",""),this.tooltipTextView.setTemplate({tag:"span",attributes:{class:["ck","ck-tooltip__text"]},children:[{text:this.tooltipTextView.bindTemplate.to("text")}]}),this.balloonPanelView=new i.Z(e.locale),this.balloonPanelView.class=p,this.balloonPanelView.content.add(this.tooltipTextView),this._currentElementWithTooltip=null,this._currentTooltipPosition=null,this._pinTooltipDebounced=(0,a.Z)(this._pinTooltip,600),this.listenTo(n.CO.document,"mouseenter",this._onEnterOrFocus.bind(this),{useCapture:!0}),this.listenTo(n.CO.document,"mouseleave",this._onLeaveOrBlur.bind(this),{useCapture:!0}),this.listenTo(n.CO.document,"focus",this._onEnterOrFocus.bind(this),{useCapture:!0}),this.listenTo(n.CO.document,"blur",this._onLeaveOrBlur.bind(this),{useCapture:!0}),this.listenTo(n.CO.document,"scroll",this._onScroll.bind(this),{useCapture:!0}),this._watchdogExcluded=!0}destroy(e){g._editors.delete(e),this.stopListening(e.ui),g._editors.size||(this._unpinTooltip(),this.balloonPanelView.destroy(),this.stopListening(),g._instance=null)}_onEnterOrFocus(e,{target:t}){const s=f(t);var o;s&&(s!==this._currentElementWithTooltip&&(this._unpinTooltip(),this._pinTooltipDebounced(s,{text:(o=s).dataset.ckeTooltipText,position:o.dataset.ckeTooltipPosition||"s",cssClass:o.dataset.ckeTooltipClass||""})))}_onLeaveOrBlur(e,{target:t,relatedTarget:s}){if("mouseleave"===e.name){if(!(0,c.Z)(t))return;if(this._currentElementWithTooltip&&t!==this._currentElementWithTooltip)return;const e=f(t),o=f(s);e&&e!==o&&this._unpinTooltip()}else{if(this._currentElementWithTooltip&&t!==this._currentElementWithTooltip)return;this._unpinTooltip()}}_onScroll(e,{target:t}){this._currentElementWithTooltip&&(t.contains(this.balloonPanelView.element)&&t.contains(this._currentElementWithTooltip)||this._unpinTooltip())}_pinTooltip(e,{text:t,position:s,cssClass:o}){const i=(0,n.Ps)(g._editors.values()).ui.view.body;i.has(this.balloonPanelView)||i.add(this.balloonPanelView),this.tooltipTextView.text=t,this.balloonPanelView.pin({target:e,positions:g.getPositioningFunctions(s)}),this.balloonPanelView.class=[p,o].filter((e=>e)).join(" ");for(const e of g._editors)this.listenTo(e.ui,"update",this._updateTooltipPosition.bind(this),{priority:"low"});this._currentElementWithTooltip=e,this._currentTooltipPosition=s}_unpinTooltip(){this._pinTooltipDebounced.cancel(),this.balloonPanelView.unpin();for(const e of g._editors)this.stopListening(e.ui,"update");this._currentElementWithTooltip=null,this._currentTooltipPosition=null}_updateTooltipPosition(){(0,n.pn)(this._currentElementWithTooltip)?this.balloonPanelView.pin({target:this._currentElementWithTooltip,positions:g.getPositioningFunctions(this._currentTooltipPosition)}):this._unpinTooltip()}static getPositioningFunctions(e){const t=g.defaultBalloonPositions;return{s:[t.southArrowNorth,t.southArrowNorthEast,t.southArrowNorthWest],n:[t.northArrowSouth],e:[t.eastArrowWest],w:[t.westArrowEast],sw:[t.southArrowNorthEast],se:[t.southArrowNorthWest]}[e]}}function f(e){return(0,c.Z)(e)?e.closest("[data-cke-tooltip-text]:not([data-cke-tooltip-disabled])"):null}(0,n.CD)(g,r.Z),g.defaultBalloonPositions=(0,i.M)({heightOffset:5,sideOffset:13}),g._instance=null,g._editors=new Set},"./packages/ckeditor5-ui/src/view.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>f});var o=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),i=s("./packages/ckeditor5-ui/src/viewcollection.js"),r=s("./packages/ckeditor5-ui/src/template.js"),n=s("./packages/ckeditor5-utils/src/dom/emittermixin.ts"),a=s("./packages/ckeditor5-utils/src/observablemixin.ts"),c=s("./packages/ckeditor5-utils/src/collection.ts"),l=s("./packages/ckeditor5-utils/src/mix.ts"),d=s("./packages/ckeditor5-utils/src/isiterable.ts"),h=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),u=s.n(h),p=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/globals/globals.css"),g={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};u()(p.Z,g);p.Z.locals;class f{constructor(e){this.element=null,this.isRendered=!1,this.locale=e,this.t=e&&e.t,this._viewCollections=new c.Z,this._unboundChildren=this.createCollection(),this._viewCollections.on("add",((t,s)=>{s.locale=e})),this.decorate("render")}get bindTemplate(){return this._bindTemplate?this._bindTemplate:this._bindTemplate=r.ZP.bind(this,this)}createCollection(e){const t=new i.Z(e);return this._viewCollections.add(t),t}registerChild(e){(0,d.Z)(e)||(e=[e]);for(const t of e)this._unboundChildren.add(t)}deregisterChild(e){(0,d.Z)(e)||(e=[e]);for(const t of e)this._unboundChildren.remove(t)}setTemplate(e){this.template=new r.ZP(e)}extendTemplate(e){r.ZP.extend(this.template,e)}render(){if(this.isRendered)throw new o.ZP("ui-view-render-already-rendered",this);this.template&&(this.element=this.template.render(),this.registerChild(this.template.getViews())),this.isRendered=!0}destroy(){this.stopListening(),this._viewCollections.map((e=>e.destroy())),this.template&&this.template._revertData&&this.template.revert(this.element)}}(0,l.Z)(f,n.Z),(0,l.Z)(f,a.Z)},"./packages/ckeditor5-ui/src/viewcollection.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),i=s("./packages/ckeditor5-utils/src/collection.ts");class r extends i.Z{constructor(e=[]){super(e,{idProperty:"viewUid"}),this.on("add",((e,t,s)=>{this._renderViewIntoCollectionParent(t,s)})),this.on("remove",((e,t)=>{t.element&&this._parentElement&&t.element.remove()})),this._parentElement=null}destroy(){this.map((e=>e.destroy()))}setParent(e){this._parentElement=e;for(const e of this)this._renderViewIntoCollectionParent(e)}delegate(...e){if(!e.length||!e.every((e=>"string"==typeof e)))throw new o.ZP("ui-viewcollection-delegate-wrong-events",this);return{to:t=>{for(const s of this)for(const o of e)s.delegate(o).to(t);this.on("add",((s,o)=>{for(const s of e)o.delegate(s).to(t)})),this.on("remove",((s,o)=>{for(const s of e)o.stopDelegating(s,t)}))}}}_renderViewIntoCollectionParent(e,t){e.isRendered||e.render(),e.element&&this._parentElement&&this._parentElement.insertBefore(e.element,this._parentElement.children[t])}}},"./packages/ckeditor5-widget/src/utils.js":(e,t,s)=>{"use strict";s.d(t,{s4:()=>f,Uo:()=>m,KT:()=>x,id:()=>Z,Qd:()=>k,em:()=>v,l6:()=>y,XC:()=>b,sC:()=>P,$n:()=>T});var o=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),i=s("./packages/ckeditor5-utils/src/toarray.ts"),r=s("./packages/ckeditor5-engine/src/model/utils/findoptimalinsertionrange.ts"),n=s("./packages/ckeditor5-utils/src/emittermixin.ts"),a=s("./packages/ckeditor5-utils/src/mix.ts");class c{constructor(){this._stack=[]}add(e,t){const s=this._stack,o=s[0];this._insertDescriptor(e);const i=s[0];o===i||l(o,i)||this.fire("change:top",{oldDescriptor:o,newDescriptor:i,writer:t})}remove(e,t){const s=this._stack,o=s[0];this._removeDescriptor(e);const i=s[0];o===i||l(o,i)||this.fire("change:top",{oldDescriptor:o,newDescriptor:i,writer:t})}_insertDescriptor(e){const t=this._stack,s=t.findIndex((t=>t.id===e.id));if(l(e,t[s]))return;s>-1&&t.splice(s,1);let o=0;for(;t[o]&&d(t[o],e);)o++;t.splice(o,0,e)}_removeDescriptor(e){const t=this._stack,s=t.findIndex((t=>t.id===e));s>-1&&t.splice(s,1)}}function l(e,t){return e&&t&&e.priority==t.priority&&h(e.classes)==h(t.classes)}function d(e,t){return e.priority>t.priority||!(e.priority<t.priority)&&h(e.classes)>h(t.classes)}function h(e){return Array.isArray(e)?e.sort().join(","):e}(0,a.Z)(c,n.ZP);var u=s("./packages/ckeditor5-widget/src/widgettypearound/utils.js"),p=s("./packages/ckeditor5-ui/src/icon/iconview.js");const g='<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="M4 0v1H1v3H0V.5A.5.5 0 0 1 .5 0H4zm8 0h3.5a.5.5 0 0 1 .5.5V4h-1V1h-3V0zM4 16H.5a.5.5 0 0 1-.5-.5V12h1v3h3v1zm8 0v-1h3v-3h1v3.5a.5.5 0 0 1-.5.5H12z"/><path fill-opacity=".256" d="M1 1h14v14H1z"/><g class="ck-icon__selected-indicator"><path d="M7 0h2v1H7V0zM0 7h1v2H0V7zm15 0h1v2h-1V7zm-8 8h2v1H7v-1z"/><path fill-opacity=".254" d="M1 1h14v14H1z"/></g></svg>',f="ck-widget",m="ck-widget_selected";function k(e){return!!e.is("element")&&!!e.getCustomProperty("widget")}function b(e,t,s={}){if(!e.is("containerElement"))throw new o.ZP("widget-to-widget-wrong-element-type",null,{element:e});return t.setAttribute("contenteditable","false",e),t.addClass(f,e),t.setCustomProperty("widget",!0,e),e.getFillerOffset=A,s.label&&y(e,s.label,t),s.hasSelectionHandle&&function(e,t){const s=t.createUIElement("div",{class:"ck ck-widget__selection-handle"},(function(e){const t=this.toDomElement(e),s=new p.Z;return s.set("content",g),s.render(),t.appendChild(s.element),t}));t.insert(t.createPositionAt(e,0),s),t.addClass(["ck-widget_with-selection-handle"],e)}(e,t),v(e,t),e}function _(e,t,s){if(t.classes&&s.addClass((0,i.Z)(t.classes),e),t.attributes)for(const o in t.attributes)s.setAttribute(o,t.attributes[o],e)}function w(e,t,s){if(t.classes&&s.removeClass((0,i.Z)(t.classes),e),t.attributes)for(const o in t.attributes)s.removeAttribute(o,e)}function v(e,t,s=_,o=w){const i=new c;i.on("change:top",((t,i)=>{i.oldDescriptor&&o(e,i.oldDescriptor,i.writer),i.newDescriptor&&s(e,i.newDescriptor,i.writer)})),t.setCustomProperty("addHighlight",((e,t,s)=>i.add(t,s)),e),t.setCustomProperty("removeHighlight",((e,t,s)=>i.remove(t,s)),e)}function y(e,t,s){s.setCustomProperty("widgetLabel",t,e)}function Z(e){const t=e.getCustomProperty("widgetLabel");return t?"function"==typeof t?t():t:""}function P(e,t,s={}){return t.addClass(["ck-editor__editable","ck-editor__nested-editable"],e),t.setAttribute("role","textbox",e),s.label&&t.setAttribute("aria-label",s.label,e),t.setAttribute("contenteditable",e.isReadOnly?"false":"true",e),e.on("change:isReadOnly",((s,o,i)=>{t.setAttribute("contenteditable",i?"false":"true",e)})),e.on("change:isFocused",((s,o,i)=>{i?t.addClass("ck-editor__nested-editable_focused",e):t.removeClass("ck-editor__nested-editable_focused",e)})),v(e,t),e}function x(e,t){const s=e.getSelectedElement();if(s){const o=(0,u.tB)(e);if(o)return t.createRange(t.createPositionAt(s,o))}return(0,r.K)(e,t)}function T(e,t){return(s,o)=>{const{mapper:i,viewPosition:r}=o,n=i.findMappedViewAncestor(r);if(!t(n))return;const a=i.toModelElement(n);o.modelPosition=e.createPositionAt(a,r.isAtStart?"before":"after")}}function A(){return null}},"./packages/ckeditor5-widget/src/widget.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>b});var o=s("./packages/ckeditor5-core/src/plugin.js"),i=s("./packages/ckeditor5-engine/src/view/observer/mouseobserver.ts"),r=s("./packages/ckeditor5-widget/src/widgettypearound/widgettypearound.js"),n=s("./packages/ckeditor5-typing/src/delete.js"),a=s("./packages/ckeditor5-utils/src/env.ts"),c=s("./packages/ckeditor5-utils/src/keyboard.ts"),l=s("./packages/ckeditor5-utils/src/dom/rect.ts");function d(e){const t=e.model;return(s,o)=>{const i=o.keyCode==c.Do.arrowup,r=o.keyCode==c.Do.arrowdown,n=o.shiftKey,a=t.document.selection;if(!i&&!r)return;const d=r;if(n&&function(e,t){return!e.isCollapsed&&e.isBackward==t}(a,d))return;const p=function(e,t,s){const o=e.model;if(s){const e=t.isCollapsed?t.focus:t.getLastPosition(),s=h(o,e,"forward");if(!s)return null;const i=o.createRange(e,s),r=u(o.schema,i,"backward");return r?o.createRange(e,r):null}{const e=t.isCollapsed?t.focus:t.getFirstPosition(),s=h(o,e,"backward");if(!s)return null;const i=o.createRange(s,e),r=u(o.schema,i,"forward");return r?o.createRange(r,e):null}}(e,a,d);if(p){if(p.isCollapsed){if(a.isCollapsed)return;if(n)return}(p.isCollapsed||function(e,t,s){const o=e.model,i=e.view.domConverter;if(s){const e=o.createSelection(t.start);o.modifySelection(e),e.focus.isAtEnd||t.start.isEqual(e.focus)||(t=o.createRange(e.focus,t.end))}const r=e.mapper.toViewRange(t),n=i.viewRangeToDom(r),a=l.Z.getDomRangeRects(n);let c;for(const e of a)if(void 0!==c){if(Math.round(e.top)>=c)return!1;c=Math.max(c,Math.round(e.bottom))}else c=Math.round(e.bottom);return!0}(e,p,d))&&(t.change((e=>{const s=d?p.end:p.start;if(n){const o=t.createSelection(a.anchor);o.setFocus(s),e.setSelection(o)}else e.setSelection(s)})),s.stop(),o.preventDefault(),o.stopPropagation())}}}function h(e,t,s){const o=e.schema,i=e.createRangeIn(t.root),r="forward"==s?"elementStart":"elementEnd";for(const{previousPosition:e,item:n,type:a}of i.getWalker({startPosition:t,direction:s})){if(o.isLimit(n)&&!o.isInline(n))return e;if(a==r&&o.isBlock(n))return null}return null}function u(e,t,s){const o="backward"==s?t.end:t.start;if(e.checkChild(o,"$text"))return o;for(const{nextPosition:o}of t.getWalker({direction:s}))if(e.checkChild(o,"$text"))return o;return null}var p=s("./packages/ckeditor5-widget/src/utils.js"),g=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),f=s.n(g),m=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-widget/theme/widget.css"),k={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};f()(m.Z,k);m.Z.locals;class b extends o.Z{static get pluginName(){return"Widget"}static get requires(){return[r.Z,n.Z]}init(){const e=this.editor,t=e.editing.view,s=t.document;this._previouslySelected=new Set,this.editor.editing.downcastDispatcher.on("selection",((t,s,o)=>{const i=o.writer,r=s.selection;if(r.isCollapsed)return;const n=r.getSelectedElement();if(!n)return;const a=e.editing.mapper.toViewElement(n);(0,p.Qd)(a)&&o.consumable.consume(r,"selection")&&i.setSelection(i.createRangeOn(a),{fake:!0,label:(0,p.id)(a)})})),this.editor.editing.downcastDispatcher.on("selection",((e,t,s)=>{this._clearPreviouslySelectedWidgets(s.writer);const o=s.writer,i=o.document.selection;let r=null;for(const e of i.getRanges())for(const t of e){const e=t.item;(0,p.Qd)(e)&&!_(e,r)&&(o.addClass(p.Uo,e),this._previouslySelected.add(e),r=e)}}),{priority:"low"}),t.addObserver(i.Z),this.listenTo(s,"mousedown",((...e)=>this._onMousedown(...e))),this.listenTo(s,"arrowKey",((...e)=>{this._handleSelectionChangeOnArrowKeyPress(...e)}),{context:[p.Qd,"$text"]}),this.listenTo(s,"arrowKey",((...e)=>{this._preventDefaultOnArrowKeyPress(...e)}),{context:"$root"}),this.listenTo(s,"arrowKey",d(this.editor.editing),{context:"$text"}),this.listenTo(s,"delete",((e,t)=>{this._handleDelete("forward"==t.direction)&&(t.preventDefault(),e.stop())}),{context:"$root"})}_onMousedown(e,t){const s=this.editor,o=s.editing.view,i=o.document;let r=t.target;if(function(e){for(;e;){if(e.is("editableElement")&&!e.is("rootElement"))return!0;if((0,p.Qd)(e))return!1;e=e.parent}return!1}(r)){if((a.ZP.isSafari||a.ZP.isGecko)&&t.domEvent.detail>=3){const e=s.editing.mapper,o=r.is("attributeElement")?r.findAncestor((e=>!e.is("attributeElement"))):r,i=e.toModelElement(o);t.preventDefault(),this.editor.model.change((e=>{e.setSelection(i,"in")}))}return}if(!(0,p.Qd)(r)&&(r=r.findAncestor(p.Qd),!r))return;a.ZP.isAndroid&&t.preventDefault(),i.isFocused||o.focus();const n=s.editing.mapper.toModelElement(r);this._setSelectionOverElement(n)}_handleSelectionChangeOnArrowKeyPress(e,t){const s=t.keyCode,o=this.editor.model,i=o.schema,r=o.document.selection,n=r.getSelectedElement(),a=(0,c.mA)(s,this.editor.locale.contentLanguageDirection),l="down"==a||"right"==a,d="up"==a||"down"==a;if(n&&i.isObject(n)){const s=l?r.getLastPosition():r.getFirstPosition(),n=i.getNearestSelectionRange(s,l?"forward":"backward");return void(n&&(o.change((e=>{e.setSelection(n)})),t.preventDefault(),e.stop()))}if(!r.isCollapsed&&!t.shiftKey){const s=r.getFirstPosition(),n=r.getLastPosition(),a=s.nodeAfter,c=n.nodeBefore;return void((a&&i.isObject(a)||c&&i.isObject(c))&&(o.change((e=>{e.setSelection(l?n:s)})),t.preventDefault(),e.stop()))}if(!r.isCollapsed)return;const h=this._getObjectElementNextToSelection(l);if(h&&i.isObject(h)){if(i.isInline(h)&&d)return;this._setSelectionOverElement(h),t.preventDefault(),e.stop()}}_preventDefaultOnArrowKeyPress(e,t){const s=this.editor.model,o=s.schema,i=s.document.selection.getSelectedElement();i&&o.isObject(i)&&(t.preventDefault(),e.stop())}_handleDelete(e){if(this.editor.isReadOnly)return;const t=this.editor.model.document.selection;if(!t.isCollapsed)return;const s=this._getObjectElementNextToSelection(e);return s?(this.editor.model.change((e=>{let o=t.anchor.parent;for(;o.isEmpty;){const t=o;o=t.parent,e.remove(t)}this._setSelectionOverElement(s)})),!0):void 0}_setSelectionOverElement(e){this.editor.model.change((t=>{t.setSelection(t.createRangeOn(e))}))}_getObjectElementNextToSelection(e){const t=this.editor.model,s=t.schema,o=t.document.selection,i=t.createSelection(o);if(t.modifySelection(i,{direction:e?"forward":"backward"}),i.isEqual(o))return null;const r=e?i.focus.nodeBefore:i.focus.nodeAfter;return r&&s.isObject(r)?r:null}_clearPreviouslySelectedWidgets(e){for(const t of this._previouslySelected)e.removeClass(p.Uo,t);this._previouslySelected.clear()}}function _(e,t){return!!t&&Array.from(e.getAncestors()).includes(t)}},"./packages/ckeditor5-widget/src/widgettypearound/utils.js":(e,t,s)=>{"use strict";s.d(t,{Xr:()=>n,_m:()=>r,aU:()=>a,bi:()=>i,t:()=>c,tB:()=>l});var o=s("./packages/ckeditor5-widget/src/utils.js");const i="widget-type-around";function r(e,t,s){return e&&(0,o.Qd)(e)&&!s.isInline(t)}function n(e){return e.closest(".ck-widget__type-around__button")}function a(e){return e.classList.contains("ck-widget__type-around__button_before")?"before":"after"}function c(e,t){const s=e.closest(".ck-widget");return t.mapDomToView(s)}function l(e){return e.getAttribute(i)}},"./packages/ckeditor5-widget/src/widgettypearound/widgettypearound.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>b});var o=s("./packages/ckeditor5-core/src/plugin.js"),i=s("./packages/ckeditor5-ui/src/template.js"),r=s("./packages/ckeditor5-enter/src/enter.js"),n=s("./packages/ckeditor5-typing/src/delete.js"),a=s("./packages/ckeditor5-utils/src/keyboard.ts"),c=s("./packages/ckeditor5-widget/src/widgettypearound/utils.js"),l=s("./packages/ckeditor5-typing/src/utils/injectunsafekeystrokeshandling.js"),d=s("./packages/ckeditor5-widget/src/utils.js");var h=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),u=s.n(h),p=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-widget/theme/widgettypearound.css"),g={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};u()(p.Z,g);p.Z.locals;const f=["before","after"],m=(new DOMParser).parseFromString('<svg viewBox="0 0 10 8" xmlns="http://www.w3.org/2000/svg"><path d="M9.055.263v3.972h-6.77M1 4.216l2-2.038m-2 2 2 2.038"/></svg>',"image/svg+xml").firstChild,k="ck-widget__type-around_disabled";class b extends o.Z{static get pluginName(){return"WidgetTypeAround"}static get requires(){return[r.Z,n.Z]}constructor(e){super(e),this._currentFakeCaretModelElement=null}init(){const e=this.editor,t=e.editing.view;this.on("change:isEnabled",((s,o,i)=>{t.change((e=>{for(const s of t.document.roots)i?e.removeClass(k,s):e.addClass(k,s)})),i||e.model.change((e=>{e.removeSelectionAttribute(c.bi)}))})),this._enableTypeAroundUIInjection(),this._enableInsertingParagraphsOnButtonClick(),this._enableInsertingParagraphsOnEnterKeypress(),this._enableInsertingParagraphsOnTypingKeystroke(),this._enableTypeAroundFakeCaretActivationUsingKeyboardArrows(),this._enableDeleteIntegration(),this._enableInsertContentIntegration(),this._enableInsertObjectIntegration(),this._enableDeleteContentIntegration()}destroy(){this._currentFakeCaretModelElement=null}_insertParagraph(e,t){const s=this.editor,o=s.editing.view,i=s.model.schema.getAttributesWithProperty(e,"copyOnReplace",!0);s.execute("insertParagraph",{position:s.model.createPositionAt(e,t),attributes:i}),o.focus(),o.scrollToTheSelection()}_listenToIfEnabled(e,t,s,o){this.listenTo(e,t,((...e)=>{this.isEnabled&&s(...e)}),o)}_insertParagraphAccordingToFakeCaretPosition(){const e=this.editor.model.document.selection,t=(0,c.tB)(e);if(!t)return!1;const s=e.getSelectedElement();return this._insertParagraph(s,t),!0}_enableTypeAroundUIInjection(){const e=this.editor,t=e.model.schema,s=e.locale.t,o={before:s("Insert paragraph before block"),after:s("Insert paragraph after block")};e.editing.downcastDispatcher.on("insert",((e,s,r)=>{const n=r.mapper.toViewElement(s.item);(0,c._m)(n,s.item,t)&&function(e,t,s){const o=e.createUIElement("div",{class:"ck ck-reset_all ck-widget__type-around"},(function(e){const s=this.toDomElement(e);return function(e,t){for(const s of f){const o=new i.ZP({tag:"div",attributes:{class:["ck","ck-widget__type-around__button",`ck-widget__type-around__button_${s}`],title:t[s]},children:[e.ownerDocument.importNode(m,!0)]});e.appendChild(o.render())}}(s,t),function(e){const t=new i.ZP({tag:"div",attributes:{class:["ck","ck-widget__type-around__fake-caret"]}});e.appendChild(t.render())}(s),s}));e.insert(e.createPositionAt(s,"end"),o)}(r.writer,o,n)}),{priority:"low"})}_enableTypeAroundFakeCaretActivationUsingKeyboardArrows(){const e=this.editor,t=e.model,s=t.document.selection,o=t.schema,i=e.editing.view;function r(e){return`ck-widget_type-around_show-fake-caret_${e}`}this._listenToIfEnabled(i.document,"arrowKey",((e,t)=>{this._handleArrowKeyPress(e,t)}),{context:[d.Qd,"$text"],priority:"high"}),this._listenToIfEnabled(s,"change:range",((t,s)=>{s.directChange&&e.model.change((e=>{e.removeSelectionAttribute(c.bi)}))})),this._listenToIfEnabled(t.document,"change:data",(()=>{const t=s.getSelectedElement();if(t){const s=e.editing.mapper.toViewElement(t);if((0,c._m)(s,t,o))return}e.model.change((e=>{e.removeSelectionAttribute(c.bi)}))})),this._listenToIfEnabled(e.editing.downcastDispatcher,"selection",((e,t,s)=>{const i=s.writer;if(this._currentFakeCaretModelElement){const e=s.mapper.toViewElement(this._currentFakeCaretModelElement);e&&(i.removeClass(f.map(r),e),this._currentFakeCaretModelElement=null)}const n=t.selection.getSelectedElement();if(!n)return;const a=s.mapper.toViewElement(n);if(!(0,c._m)(a,n,o))return;const l=(0,c.tB)(t.selection);l&&(i.addClass(r(l),a),this._currentFakeCaretModelElement=n)})),this._listenToIfEnabled(e.ui.focusTracker,"change:isFocused",((t,s,o)=>{o||e.model.change((e=>{e.removeSelectionAttribute(c.bi)}))}))}_handleArrowKeyPress(e,t){const s=this.editor,o=s.model,i=o.document.selection,r=o.schema,n=s.editing.view,l=t.keyCode,d=(0,a.Zt)(l,s.locale.contentLanguageDirection),h=n.document.selection.getSelectedElement(),u=s.editing.mapper.toModelElement(h);let p;(0,c._m)(h,u,r)?p=this._handleArrowKeyPressOnSelectedWidget(d):i.isCollapsed?p=this._handleArrowKeyPressWhenSelectionNextToAWidget(d):t.shiftKey||(p=this._handleArrowKeyPressWhenNonCollapsedSelection(d)),p&&(t.preventDefault(),e.stop())}_handleArrowKeyPressOnSelectedWidget(e){const t=this.editor.model,s=t.document.selection,o=(0,c.tB)(s);return t.change((t=>{if(!o)return t.setSelectionAttribute(c.bi,e?"after":"before"),!0;if(!(o===(e?"after":"before")))return t.removeSelectionAttribute(c.bi),!0;return!1}))}_handleArrowKeyPressWhenSelectionNextToAWidget(e){const t=this.editor,s=t.model,o=s.schema,i=t.plugins.get("Widget"),r=i._getObjectElementNextToSelection(e),n=t.editing.mapper.toViewElement(r);return!!(0,c._m)(n,r,o)&&(s.change((t=>{i._setSelectionOverElement(r),t.setSelectionAttribute(c.bi,e?"before":"after")})),!0)}_handleArrowKeyPressWhenNonCollapsedSelection(e){const t=this.editor,s=t.model,o=s.schema,i=t.editing.mapper,r=s.document.selection,n=e?r.getLastPosition().nodeBefore:r.getFirstPosition().nodeAfter,a=i.toViewElement(n);return!!(0,c._m)(a,n,o)&&(s.change((t=>{t.setSelection(n,"on"),t.setSelectionAttribute(c.bi,e?"after":"before")})),!0)}_enableInsertingParagraphsOnButtonClick(){const e=this.editor,t=e.editing.view;this._listenToIfEnabled(t.document,"mousedown",((s,o)=>{const i=(0,c.Xr)(o.domTarget);if(!i)return;const r=(0,c.aU)(i),n=(0,c.t)(i,t.domConverter),a=e.editing.mapper.toModelElement(n);this._insertParagraph(a,r),o.preventDefault(),s.stop()}))}_enableInsertingParagraphsOnEnterKeypress(){const e=this.editor,t=e.model.document.selection,s=e.editing.view;this._listenToIfEnabled(s.document,"enter",((s,o)=>{if("atTarget"!=s.eventPhase)return;const i=t.getSelectedElement(),r=e.editing.mapper.toViewElement(i),n=e.model.schema;let a;this._insertParagraphAccordingToFakeCaretPosition()?a=!0:(0,c._m)(r,i,n)&&(this._insertParagraph(i,o.isSoft?"before":"after"),a=!0),a&&(o.preventDefault(),s.stop())}),{context:d.Qd})}_enableInsertingParagraphsOnTypingKeystroke(){const e=this.editor.editing.view,t=[a.Do.enter,a.Do.delete,a.Do.backspace];this._listenToIfEnabled(e.document,"keydown",((e,s)=>{t.includes(s.keyCode)||(0,l.u)(s)||this._insertParagraphAccordingToFakeCaretPosition()}),{priority:"high"})}_enableDeleteIntegration(){const e=this.editor,t=e.editing.view,s=e.model,o=s.schema;this._listenToIfEnabled(t.document,"delete",((t,i)=>{if("atTarget"!=t.eventPhase)return;const r=(0,c.tB)(s.document.selection);if(!r)return;const n=i.direction,a=s.document.selection.getSelectedElement(),l="forward"==n;if("before"===r===l)e.execute("delete",{selection:s.createSelection(a,"on")});else{const t=o.getNearestSelectionRange(s.createPositionAt(a,r),n);if(t)if(t.isCollapsed){const i=s.createSelection(t.start);if(s.modifySelection(i,{direction:n}),i.focus.isEqual(t.start)){const e=function(e,t){let s=t;for(const o of t.getAncestors({parentFirst:!0})){if(o.childCount>1||e.isLimit(o))break;s=o}return s}(o,t.start.parent);s.deleteContent(s.createSelection(e,"on"),{doNotAutoparagraph:!0})}else s.change((s=>{s.setSelection(t),e.execute(l?"deleteForward":"delete")}))}else s.change((s=>{s.setSelection(t),e.execute(l?"deleteForward":"delete")}))}i.preventDefault(),t.stop()}),{context:d.Qd})}_enableInsertContentIntegration(){const e=this.editor,t=this.editor.model,s=t.document.selection;this._listenToIfEnabled(e.model,"insertContent",((e,[o,i])=>{if(i&&!i.is("documentSelection"))return;const r=(0,c.tB)(s);return r?(e.stop(),t.change((e=>{const i=s.getSelectedElement(),n=t.createPositionAt(i,r),a=e.createSelection(n),c=t.insertContent(o,a);return e.setSelection(a),c}))):void 0}),{priority:"high"})}_enableInsertObjectIntegration(){const e=this.editor,t=this.editor.model.document.selection;this._listenToIfEnabled(e.model,"insertObject",((e,s)=>{const[,o,,i={}]=s;if(o&&!o.is("documentSelection"))return;const r=(0,c.tB)(t);r&&(i.findOptimalPosition=r,s[3]=i)}),{priority:"high"})}_enableDeleteContentIntegration(){const e=this.editor,t=this.editor.model.document.selection;this._listenToIfEnabled(e.model,"deleteContent",((e,[s])=>{if(s&&!s.is("documentSelection"))return;(0,c.tB)(t)&&e.stop()}),{priority:"high"})}}},"./src/clipboard.js":(e,t,s)=>{"use strict";s.r(t),s.d(t,{Clipboard:()=>C,ClipboardPipeline:()=>d,DragDrop:()=>y,PastePlainText:()=>A});var o=s("./packages/ckeditor5-core/src/plugin.js"),i=s("./packages/ckeditor5-utils/src/eventinfo.ts"),r=s("./packages/ckeditor5-engine/src/view/observer/domeventobserver.ts");class n{constructor(e){this.files=function(e){const t=Array.from(e.files||[]),s=Array.from(e.items||[]);if(t.length)return t;return s.filter((e=>"file"===e.kind)).map((e=>e.getAsFile()))}(e),this._native=e}get types(){return this._native.types}getData(e){return this._native.getData(e)}setData(e,t){this._native.setData(e,t)}set effectAllowed(e){this._native.effectAllowed=e}get effectAllowed(){return this._native.effectAllowed}set dropEffect(e){this._native.dropEffect=e}get dropEffect(){return this._native.dropEffect}get isCanceled(){return"none"==this._native.dropEffect||!!this._native.mozUserCancelled}}class a extends r.Z{constructor(e){super(e);const t=this.document;function s(e){return(s,o)=>{o.preventDefault();const r=o.dropRange?[o.dropRange]:null,n=new i.Z(t,e);t.fire(n,{dataTransfer:o.dataTransfer,method:s.name,targetRanges:r,target:o.target}),n.stop.called&&o.stopPropagation()}}this.domEventType=["paste","copy","cut","drop","dragover","dragstart","dragend","dragenter","dragleave"],this.listenTo(t,"paste",s("clipboardInput"),{priority:"low"}),this.listenTo(t,"drop",s("clipboardInput"),{priority:"low"}),this.listenTo(t,"dragover",s("dragging"),{priority:"low"})}onDomEvent(e){const t={dataTransfer:new n(e.clipboardData?e.clipboardData:e.dataTransfer)};"drop"!=e.type&&"dragover"!=e.type||(t.dropRange=function(e,t){const s=t.target.ownerDocument,o=t.clientX,i=t.clientY;let r;s.caretRangeFromPoint&&s.caretRangeFromPoint(o,i)?r=s.caretRangeFromPoint(o,i):t.rangeParent&&(r=s.createRange(),r.setStart(t.rangeParent,t.rangeOffset),r.collapse(!0));if(r)return e.domConverter.domRangeToView(r);return null}(this.view,e)),this.fire(e.type,e,t)}}const c=["figcaption","li"];function l(e){let t="";if(e.is("$text")||e.is("$textProxy"))t=e.data;else if(e.is("element","img")&&e.hasAttribute("alt"))t=e.getAttribute("alt");else if(e.is("element","br"))t="\n";else{let s=null;for(const o of e.getChildren()){const e=l(o);s&&(s.is("containerElement")||o.is("containerElement"))&&(c.includes(s.name)||c.includes(o.name)?t+="\n":t+="\n\n"),t+=e,s=o}}return t}class d extends o.Z{static get pluginName(){return"ClipboardPipeline"}init(){this.editor.editing.view.addObserver(a),this._setupPasteDrop(),this._setupCopyCut()}_setupPasteDrop(){const e=this.editor,t=e.model,s=e.editing.view,o=s.document;this.listenTo(o,"clipboardInput",(t=>{e.isReadOnly&&t.stop()}),{priority:"highest"}),this.listenTo(o,"clipboardInput",((e,t)=>{const o=t.dataTransfer;let r=t.content||"";var n;r||(o.getData("text/html")?r=function(e){return e.replace(/<span(?: class="Apple-converted-space"|)>(\s+)<\/span>/g,((e,t)=>1==t.length?" ":t)).replace(/<!--[\s\S]*?-->/g,"")}(o.getData("text/html")):o.getData("text/plain")&&(((n=(n=o.getData("text/plain")).replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/\r?\n\r?\n/g,"</p><p>").replace(/\r?\n/g,"<br>").replace(/^\s/,"&nbsp;").replace(/\s$/,"&nbsp;").replace(/\s\s/g," &nbsp;")).includes("</p><p>")||n.includes("<br>"))&&(n=`<p>${n}</p>`),r=n),r=this.editor.data.htmlProcessor.toView(r));const a=new i.Z(this,"inputTransformation");this.fire(a,{content:r,dataTransfer:o,targetRanges:t.targetRanges,method:t.method}),a.stop.called&&e.stop(),s.scrollToTheSelection()}),{priority:"low"}),this.listenTo(this,"inputTransformation",((e,s)=>{if(s.content.isEmpty)return;const o=this.editor.data.toModel(s.content,"$clipboardHolder");0!=o.childCount&&(e.stop(),t.change((()=>{this.fire("contentInsertion",{content:o,method:s.method,dataTransfer:s.dataTransfer,targetRanges:s.targetRanges})})))}),{priority:"low"}),this.listenTo(this,"contentInsertion",((e,s)=>{s.resultRange=t.insertContent(s.content)}),{priority:"low"})}_setupCopyCut(){const e=this.editor,t=e.model.document,s=e.editing.view.document;function o(o,i){const r=i.dataTransfer;i.preventDefault();const n=e.data.toView(e.model.getSelectedContent(t.selection));s.fire("clipboardOutput",{dataTransfer:r,content:n,method:o.name})}this.listenTo(s,"copy",o,{priority:"low"}),this.listenTo(s,"cut",((t,s)=>{e.isReadOnly?s.preventDefault():o(t,s)}),{priority:"low"}),this.listenTo(s,"clipboardOutput",((s,o)=>{o.content.isEmpty||(o.dataTransfer.setData("text/html",this.editor.data.htmlProcessor.toData(o.content)),o.dataTransfer.setData("text/plain",l(o.content))),"cut"==o.method&&e.model.deleteContent(t.selection)}),{priority:"low"})}}var h=s("./packages/ckeditor5-engine/src/model/liverange.ts"),u=s("./packages/ckeditor5-engine/src/view/observer/mouseobserver.ts"),p=s("./packages/ckeditor5-widget/src/widget.js"),g=s("./packages/ckeditor5-utils/src/uid.ts"),f=s("./packages/ckeditor5-utils/src/env.ts"),m=s("./packages/ckeditor5-widget/src/utils.js"),k=s("./node_modules/lodash-es/throttle.js"),b=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),_=s.n(b),w=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-clipboard/theme/clipboard.css"),v={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};_()(w.Z,v);w.Z.locals;class y extends o.Z{static get pluginName(){return"DragDrop"}static get requires(){return[d,p.Z]}init(){const e=this.editor,t=e.editing.view;this._draggedRange=null,this._draggingUid="",this._draggableElement=null,this._updateDropMarkerThrottled=(0,k.Z)((e=>this._updateDropMarker(e)),40),this._removeDropMarkerDelayed=x((()=>this._removeDropMarker()),40),this._clearDraggableAttributesDelayed=x((()=>this._clearDraggableAttributes()),40),t.addObserver(a),t.addObserver(u.Z),this._setupDragging(),this._setupContentInsertionIntegration(),this._setupClipboardInputIntegration(),this._setupDropMarker(),this._setupDraggableAttributeHandling(),this.listenTo(e,"change:isReadOnly",((e,t,s)=>{s?this.forceDisabled("readOnlyMode"):this.clearForceDisabled("readOnlyMode")})),this.on("change:isEnabled",((e,t,s)=>{s||this._finalizeDragging(!1)})),f.ZP.isAndroid&&this.forceDisabled("noAndroidSupport")}destroy(){return this._draggedRange&&(this._draggedRange.detach(),this._draggedRange=null),this._updateDropMarkerThrottled.cancel(),this._removeDropMarkerDelayed.cancel(),this._clearDraggableAttributesDelayed.cancel(),super.destroy()}_setupDragging(){const e=this.editor,t=e.model,s=t.document,o=e.editing.view,i=o.document;this.listenTo(i,"dragstart",((o,r)=>{const n=s.selection;if(r.target&&r.target.is("editableElement"))return void r.preventDefault();const a=r.target?T(r.target):null;if(a){const s=e.editing.mapper.toModelElement(a);this._draggedRange=h.Z.fromRange(t.createRangeOn(s)),e.plugins.has("WidgetToolbarRepository")&&e.plugins.get("WidgetToolbarRepository").forceDisabled("dragDrop")}else if(!i.selection.isCollapsed){const e=i.selection.getSelectedElement();e&&(0,m.Qd)(e)||(this._draggedRange=h.Z.fromRange(n.getFirstRange()))}if(!this._draggedRange)return void r.preventDefault();this._draggingUid=(0,g.Z)(),r.dataTransfer.effectAllowed=this.isEnabled?"copyMove":"copy",r.dataTransfer.setData("application/ckeditor5-dragging-uid",this._draggingUid);const c=t.createSelection(this._draggedRange.toRange()),l=e.data.toView(t.getSelectedContent(c));i.fire("clipboardOutput",{dataTransfer:r.dataTransfer,content:l,method:o.name}),this.isEnabled||(this._draggedRange.detach(),this._draggedRange=null,this._draggingUid="")}),{priority:"low"}),this.listenTo(i,"dragend",((e,t)=>{this._finalizeDragging(!t.dataTransfer.isCanceled&&"move"==t.dataTransfer.dropEffect)}),{priority:"low"}),this.listenTo(i,"dragenter",(()=>{this.isEnabled&&o.focus()})),this.listenTo(i,"dragleave",(()=>{this._removeDropMarkerDelayed()})),this.listenTo(i,"dragging",((t,s)=>{if(!this.isEnabled)return void(s.dataTransfer.dropEffect="none");this._removeDropMarkerDelayed.cancel();const o=Z(e,s.targetRanges,s.target);this._draggedRange||(s.dataTransfer.dropEffect="copy"),f.ZP.isGecko||("copy"==s.dataTransfer.effectAllowed?s.dataTransfer.dropEffect="copy":["all","copyMove"].includes(s.dataTransfer.effectAllowed)&&(s.dataTransfer.dropEffect="move")),o&&this._updateDropMarkerThrottled(o)}),{priority:"low"})}_setupClipboardInputIntegration(){const e=this.editor,t=e.editing.view.document;this.listenTo(t,"clipboardInput",((t,s)=>{if("drop"!=s.method)return;const o=Z(e,s.targetRanges,s.target);if(this._removeDropMarker(),!o)return this._finalizeDragging(!1),void t.stop();this._draggedRange&&this._draggingUid!=s.dataTransfer.getData("application/ckeditor5-dragging-uid")&&(this._draggedRange.detach(),this._draggedRange=null,this._draggingUid="");if("move"==P(s.dataTransfer)&&this._draggedRange&&this._draggedRange.containsRange(o,!0))return this._finalizeDragging(!1),void t.stop();s.targetRanges=[e.editing.mapper.toViewRange(o)]}),{priority:"high"})}_setupContentInsertionIntegration(){const e=this.editor.plugins.get(d);e.on("contentInsertion",((e,t)=>{if(!this.isEnabled||"drop"!==t.method)return;const s=t.targetRanges.map((e=>this.editor.editing.mapper.toModelRange(e)));this.editor.model.change((e=>e.setSelection(s)))}),{priority:"high"}),e.on("contentInsertion",((e,t)=>{if(!this.isEnabled||"drop"!==t.method)return;const s="move"==P(t.dataTransfer),o=!t.resultRange||!t.resultRange.isCollapsed;this._finalizeDragging(o&&s)}),{priority:"lowest"})}_setupDraggableAttributeHandling(){const e=this.editor,t=e.editing.view,s=t.document;this.listenTo(s,"mousedown",((o,i)=>{if(f.ZP.isAndroid||!i)return;this._clearDraggableAttributesDelayed.cancel();let r=T(i.target);if(f.ZP.isBlink&&!e.isReadOnly&&!r&&!s.selection.isCollapsed){const e=s.selection.getSelectedElement();e&&(0,m.Qd)(e)||(r=s.selection.editableElement)}r&&(t.change((e=>{e.setAttribute("draggable","true",r)})),this._draggableElement=e.editing.mapper.toModelElement(r))})),this.listenTo(s,"mouseup",(()=>{f.ZP.isAndroid||this._clearDraggableAttributesDelayed()}))}_clearDraggableAttributes(){const e=this.editor.editing;e.view.change((t=>{this._draggableElement&&"$graveyard"!=this._draggableElement.root.rootName&&t.removeAttribute("draggable",e.mapper.toViewElement(this._draggableElement)),this._draggableElement=null}))}_setupDropMarker(){const e=this.editor;e.conversion.for("editingDowncast").markerToHighlight({model:"drop-target",view:{classes:["ck-clipboard-drop-target-range"]}}),e.conversion.for("editingDowncast").markerToElement({model:"drop-target",view:(t,{writer:s})=>{if(e.model.schema.checkChild(t.markerRange.start,"$text"))return s.createUIElement("span",{class:"ck ck-clipboard-drop-target-position"},(function(e){const t=this.toDomElement(e);return t.append("⁠",e.createElement("span"),"⁠"),t}))}})}_updateDropMarker(e){const t=this.editor,s=t.model.markers;t.model.change((t=>{s.has("drop-target")?s.get("drop-target").getRange().isEqual(e)||t.updateMarker("drop-target",{range:e}):t.addMarker("drop-target",{range:e,usingOperation:!1,affectsData:!1})}))}_removeDropMarker(){const e=this.editor.model;this._removeDropMarkerDelayed.cancel(),this._updateDropMarkerThrottled.cancel(),e.markers.has("drop-target")&&e.change((e=>{e.removeMarker("drop-target")}))}_finalizeDragging(e){const t=this.editor,s=t.model;this._removeDropMarker(),this._clearDraggableAttributes(),t.plugins.has("WidgetToolbarRepository")&&t.plugins.get("WidgetToolbarRepository").clearForceDisabled("dragDrop"),this._draggingUid="",this._draggedRange&&(e&&this.isEnabled&&s.deleteContent(s.createSelection(this._draggedRange),{doNotAutoparagraph:!0}),this._draggedRange.detach(),this._draggedRange=null)}}function Z(e,t,s){const o=e.model,i=e.editing.mapper;let r=null;const n=t?t[0].start:null;if(s.is("uiElement")&&(s=s.parent),r=function(e,t){const s=e.model,o=e.editing.mapper;if((0,m.Qd)(t))return s.createRangeOn(o.toModelElement(t));if(!t.is("editableElement")){const e=t.findAncestor((e=>(0,m.Qd)(e)||e.is("editableElement")));if((0,m.Qd)(e))return s.createRangeOn(o.toModelElement(e))}return null}(e,s),r)return r;const a=function(e,t){const s=e.editing.mapper,o=e.editing.view,i=s.toModelElement(t);if(i)return i;const r=o.createPositionBefore(t),n=s.findMappedViewAncestor(r);return s.toModelElement(n)}(e,s),c=n?i.toModelPosition(n):null;return c?(r=function(e,t,s){const o=e.model;if(!o.schema.checkChild(s,"$block"))return null;const i=o.createPositionAt(s,0),r=t.path.slice(0,i.path.length),n=o.createPositionFromPath(t.root,r).nodeAfter;if(n&&o.schema.isObject(n))return o.createRangeOn(n);return null}(e,c,a),r||(r=o.schema.getNearestSelectionRange(c,f.ZP.isGecko?"forward":"backward"),r||function(e,t){const s=e.model;for(;t;){if(s.schema.isObject(t))return s.createRangeOn(t);t=t.parent}}(e,c.parent))):function(e,t){const s=e.model,o=s.schema,i=s.createPositionAt(t,0);return o.getNearestSelectionRange(i,"forward")}(e,a)}function P(e){return f.ZP.isGecko?e.dropEffect:["all","copyMove"].includes(e.effectAllowed)?"move":"copy"}function x(e,t){let s;function o(...i){o.cancel(),s=setTimeout((()=>e(...i)),t)}return o.cancel=()=>{clearTimeout(s)},o}function T(e){if(e.is("editableElement"))return null;if(e.hasClass("ck-widget__selection-handle"))return e.findAncestor(m.Qd);if((0,m.Qd)(e))return e;const t=e.findAncestor((e=>(0,m.Qd)(e)||e.is("editableElement")));return(0,m.Qd)(t)?t:null}class A extends o.Z{static get pluginName(){return"PastePlainText"}static get requires(){return[d]}init(){const e=this.editor,t=e.model,s=e.editing.view,o=s.document,i=t.document.selection;let r=!1;s.addObserver(a),this.listenTo(o,"keydown",((e,t)=>{r=t.shiftKey})),e.plugins.get(d).on("contentInsertion",((e,s)=>{(r||function(e,t){if(e.childCount>1)return!1;const s=e.getChild(0);if(t.isObject(s))return!1;return 0==[...s.getAttributeKeys()].length}(s.content,t.schema))&&t.change((e=>{const o=Array.from(i.getAttributes()).filter((([e])=>t.schema.getAttributeProperties(e).isFormatting));i.isCollapsed||t.deleteContent(i,{doNotAutoparagraph:!0}),o.push(...i.getAttributes());const r=e.createRangeIn(s.content);for(const t of r.getItems())t.is("$textProxy")&&e.setAttributes(o,t)}))}))}}class C extends o.Z{static get pluginName(){return"Clipboard"}static get requires(){return[d,y,A]}}},"./src/core.js":(e,t,s)=>{"use strict";s.r(t),s.d(t,{Command:()=>i.Z,Context:()=>_,ContextPlugin:()=>w.Z,DataApiMixin:()=>B,Editor:()=>S,EditorUI:()=>V,ElementApiMixin:()=>L,MultiCommand:()=>n,PendingActions:()=>$.Z,Plugin:()=>o.Z,attachToForm:()=>z,icons:()=>U,secureSourceElement:()=>W});var o=s("./packages/ckeditor5-core/src/plugin.js"),i=s("./packages/ckeditor5-core/src/command.js"),r=s("./packages/ckeditor5-utils/src/inserttopriorityarray.ts");class n extends i.Z{constructor(e){super(e),this._childCommandsDefinitions=[]}refresh(){}execute(...e){const t=this._getFirstEnabledCommand();return!!t&&t.execute(e)}registerChildCommand(e,t={priority:"normal"}){(0,r.Z)(this._childCommandsDefinitions,{command:e,priority:t.priority}),e.on("change:isEnabled",(()=>this._checkEnabled())),this._checkEnabled()}_checkEnabled(){this.isEnabled=!!this._getFirstEnabledCommand()}_getFirstEnabledCommand(){const e=this._childCommandsDefinitions.find((({command:e})=>e.isEnabled));return e&&e.command}}var a=s("./node_modules/lodash-es/isPlainObject.js"),c=s("./node_modules/lodash-es/cloneDeepWith.js"),l=s("./node_modules/lodash-es/isElement.js");class d{constructor(e,t){this._config={},t&&this.define(h(t)),e&&this._setObjectToTarget(this._config,e)}set(e,t){this._setToTarget(this._config,e,t)}define(e,t){this._setToTarget(this._config,e,t,!0)}get(e){return this._getFromSource(this._config,e)}*names(){for(const e of Object.keys(this._config))yield e}_setToTarget(e,t,s,o=!1){if((0,a.Z)(t))return void this._setObjectToTarget(e,t,o);const i=t.split(".");t=i.pop();for(const t of i)(0,a.Z)(e[t])||(e[t]={}),e=e[t];if((0,a.Z)(s))return(0,a.Z)(e[t])||(e[t]={}),e=e[t],void this._setObjectToTarget(e,s,o);o&&void 0!==e[t]||(e[t]=s)}_getFromSource(e,t){const s=t.split(".");t=s.pop();for(const t of s){if(!(0,a.Z)(e[t])){e=null;break}e=e[t]}return e?h(e[t]):void 0}_setObjectToTarget(e,t,s){Object.keys(t).forEach((o=>{this._setToTarget(e,o,t[o],s)}))}}function h(e){return(0,c.Z)(e,u)}function u(e){return(0,l.Z)(e)?e:void 0}var p=s("./packages/ckeditor5-utils/src/collection.ts"),g=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),f=s("./packages/ckeditor5-utils/src/emittermixin.ts"),m=s("./packages/ckeditor5-utils/src/mix.ts");class k{constructor(e,t=[],s=[]){this._context=e,this._plugins=new Map,this._availablePlugins=new Map;for(const e of t)e.pluginName&&this._availablePlugins.set(e.pluginName,e);this._contextPlugins=new Map;for(const[e,t]of s)this._contextPlugins.set(e,t),this._contextPlugins.set(t,e),e.pluginName&&this._availablePlugins.set(e.pluginName,e)}*[Symbol.iterator](){for(const e of this._plugins)"function"==typeof e[0]&&(yield e)}get(e){const t=this._plugins.get(e);if(!t){let t=e;throw"function"==typeof e&&(t=e.pluginName||e.name),new g.ZP("plugincollection-plugin-not-loaded",this._context,{plugin:t})}return t}has(e){return this._plugins.has(e)}init(e,t=[],s=[]){const o=this,i=this._context;!function e(t,s=new Set){t.forEach((t=>{a(t)&&(s.has(t)||(s.add(t),t.pluginName&&!o._availablePlugins.has(t.pluginName)&&o._availablePlugins.set(t.pluginName,t),t.requires&&e(t.requires,s)))}))}(e),h(e);const r=[...function e(t,s=new Set){return t.map((e=>a(e)?e:o._availablePlugins.get(e))).reduce(((t,o)=>s.has(o)?t:(s.add(o),o.requires&&(h(o.requires,o),e(o.requires,s).forEach((e=>t.add(e)))),t.add(o))),new Set)}(e.filter((e=>!l(e,t))))];!function(e,t){for(const s of t){if("function"!=typeof s)throw new g.ZP("plugincollection-replace-plugin-invalid-type",null,{pluginItem:s});const t=s.pluginName;if(!t)throw new g.ZP("plugincollection-replace-plugin-missing-name",null,{pluginItem:s});if(s.requires&&s.requires.length)throw new g.ZP("plugincollection-plugin-for-replacing-cannot-have-dependencies",null,{pluginName:t});const i=o._availablePlugins.get(t);if(!i)throw new g.ZP("plugincollection-plugin-for-replacing-not-exist",null,{pluginName:t});const r=e.indexOf(i);if(-1===r){if(o._contextPlugins.has(i))return;throw new g.ZP("plugincollection-plugin-for-replacing-not-loaded",null,{pluginName:t})}if(i.requires&&i.requires.length)throw new g.ZP("plugincollection-replaced-plugin-cannot-have-dependencies",null,{pluginName:t});e.splice(r,1,s),o._availablePlugins.set(t,s)}}(r,s);const n=function(e){return e.map((e=>{const t=o._contextPlugins.get(e)||new e(i);return o._add(e,t),t}))}(r);return u(n,"init").then((()=>u(n,"afterInit"))).then((()=>n));function a(e){return"function"==typeof e}function c(e){return a(e)&&e.isContextPlugin}function l(e,t){return t.some((t=>t===e||(d(e)===t||d(t)===e)))}function d(e){return a(e)?e.pluginName||e.name:e}function h(e,s=null){e.map((e=>a(e)?e:o._availablePlugins.get(e)||e)).forEach((e=>{!function(e,t){if(a(e))return;if(t)throw new g.ZP("plugincollection-soft-required",i,{missingPlugin:e,requiredBy:d(t)});throw new g.ZP("plugincollection-plugin-not-found",i,{plugin:e})}(e,s),function(e,t){if(!c(t))return;if(c(e))return;throw new g.ZP("plugincollection-context-required",i,{plugin:d(e),requiredBy:d(t)})}(e,s),function(e,s){if(!s)return;if(!l(e,t))return;throw new g.ZP("plugincollection-required",i,{plugin:d(e),requiredBy:d(s)})}(e,s)}))}function u(e,t){return e.reduce(((e,s)=>s[t]?o._contextPlugins.has(s)?e:e.then(s[t].bind(s)):e),Promise.resolve())}}destroy(){const e=[];for(const[,t]of this)"function"!=typeof t.destroy||this._contextPlugins.has(t)||e.push(t.destroy());return Promise.all(e)}_add(e,t){this._plugins.set(e,t);const s=e.pluginName;if(s){if(this._plugins.has(s))throw new g.ZP("plugincollection-plugin-name-conflict",null,{pluginName:s,plugin1:this._plugins.get(s).constructor,plugin2:e});this._plugins.set(s,t)}}}(0,m.Z)(k,f.ZP);var b=s("./packages/ckeditor5-utils/src/locale.ts");class _{constructor(e){this.config=new d(e,this.constructor.defaultConfig);const t=this.constructor.builtinPlugins;this.config.define("plugins",t),this.plugins=new k(this,t);const s=this.config.get("language")||{};this.locale=new b.Z({uiLanguage:"string"==typeof s?s:s.ui,contentLanguage:this.config.get("language.content")}),this.t=this.locale.t,this.editors=new p.Z,this._contextOwner=null}initPlugins(){const e=this.config.get("plugins")||[],t=this.config.get("substitutePlugins")||[];for(const s of e.concat(t)){if("function"!=typeof s)throw new g.ZP("context-initplugins-constructor-only",null,{Plugin:s});if(!0!==s.isContextPlugin)throw new g.ZP("context-initplugins-invalid-plugin",null,{Plugin:s})}return this.plugins.init(e,[],t)}destroy(){return Promise.all(Array.from(this.editors,(e=>e.destroy()))).then((()=>this.plugins.destroy()))}_addEditor(e,t){if(this._contextOwner)throw new g.ZP("context-addeditor-private-context");this.editors.add(e),t&&(this._contextOwner=e)}_removeEditor(e){return this.editors.has(e)&&this.editors.remove(e),this._contextOwner===e?this.destroy():Promise.resolve()}_getEditorConfig(){const e={};for(const t of this.config.names())["plugins","removePlugins","extraPlugins"].includes(t)||(e[t]=this.config.get(t));return e}static create(e){return new Promise((t=>{const s=new this(e);t(s.initPlugins().then((()=>s)))}))}}var w=s("./packages/ckeditor5-core/src/contextplugin.js"),v=s("./packages/ckeditor5-engine/src/controller/editingcontroller.ts");class y{constructor(){this._commands=new Map}add(e,t){this._commands.set(e,t)}get(e){return this._commands.get(e)}execute(e,...t){const s=this.get(e);if(!s)throw new g.ZP("commandcollection-command-not-found",this,{commandName:e});return s.execute(...t)}*names(){yield*this._commands.keys()}*commands(){yield*this._commands.values()}[Symbol.iterator](){return this._commands[Symbol.iterator]()}destroy(){for(const e of this.commands())e.destroy()}}var Z=s("./packages/ckeditor5-engine/src/controller/datacontroller.ts"),P=s("./packages/ckeditor5-engine/src/conversion/conversion.ts"),x=s("./packages/ckeditor5-engine/src/model/model.ts"),T=s("./packages/ckeditor5-utils/src/keystrokehandler.ts");class A extends T.Z{constructor(e){super(),this.editor=e}set(e,t,s={}){if("string"==typeof t){const e=t;t=(t,s)=>{this.editor.execute(e),s()}}super.set(e,t,s)}}var C=s("./packages/ckeditor5-utils/src/observablemixin.ts"),E=s("./packages/ckeditor5-engine/src/view/stylesmap.ts");class S{constructor(e={}){const t=e.language||this.constructor.defaultConfig&&this.constructor.defaultConfig.language;this._context=e.context||new _({language:t}),this._context._addEditor(this,!e.context);const s=Array.from(this.constructor.builtinPlugins||[]);this.config=new d(e,this.constructor.defaultConfig),this.config.define("plugins",s),this.config.define(this._context._getEditorConfig()),this.plugins=new k(this,s,this._context.plugins),this.locale=this._context.locale,this.t=this.locale.t,this._readOnlyLocks=new Set,this.commands=new y,this.set("state","initializing"),this.once("ready",(()=>this.state="ready"),{priority:"high"}),this.once("destroy",(()=>this.state="destroyed"),{priority:"high"}),this.model=new x.Z;const o=new E.A;this.data=new Z.Z(this.model,o),this.editing=new v.Z(this.model,o),this.editing.view.document.bind("isReadOnly").to(this),this.conversion=new P.Z([this.editing.downcastDispatcher,this.data.downcastDispatcher],this.data.upcastDispatcher),this.conversion.addAlias("dataDowncast",this.data.downcastDispatcher),this.conversion.addAlias("editingDowncast",this.editing.downcastDispatcher),this.keystrokes=new A(this),this.keystrokes.listenTo(this.editing.view.document)}get isReadOnly(){return this._readOnlyLocks.size>0}set isReadOnly(e){throw new g.ZP("editor-isreadonly-has-no-setter")}enableReadOnlyMode(e){if("string"!=typeof e&&"symbol"!=typeof e)throw new g.ZP("editor-read-only-lock-id-invalid",null,{lockId:e});this._readOnlyLocks.has(e)||(this._readOnlyLocks.add(e),1===this._readOnlyLocks.size&&this.fire("change:isReadOnly","isReadOnly",!0,!1))}disableReadOnlyMode(e){if("string"!=typeof e&&"symbol"!=typeof e)throw new g.ZP("editor-read-only-lock-id-invalid",null,{lockId:e});this._readOnlyLocks.has(e)&&(this._readOnlyLocks.delete(e),0===this._readOnlyLocks.size&&this.fire("change:isReadOnly","isReadOnly",!1,!0))}initPlugins(){const e=this.config,t=e.get("plugins"),s=e.get("removePlugins")||[],o=e.get("extraPlugins")||[],i=e.get("substitutePlugins")||[];return this.plugins.init(t.concat(o),s,i)}destroy(){let e=Promise.resolve();return"initializing"==this.state&&(e=new Promise((e=>this.once("ready",e)))),e.then((()=>{this.fire("destroy"),this.stopListening(),this.commands.destroy()})).then((()=>this.plugins.destroy())).then((()=>{this.model.destroy(),this.data.destroy(),this.editing.destroy(),this.keystrokes.destroy()})).then((()=>this._context._removeEditor(this)))}execute(...e){try{return this.commands.execute(...e)}catch(e){g.ZP.rethrowUnexpectedError(e,this)}}focus(){this.editing.view.focus()}}(0,m.Z)(S,C.Z);class j{constructor(e){this.editor=e,this._components=new Map}*names(){for(const e of this._components.values())yield e.originalName}add(e,t){this._components.set(O(e),{callback:t,originalName:e})}create(e){if(!this.has(e))throw new g.ZP("componentfactory-item-missing",this,{name:e});return this._components.get(O(e)).callback(this.editor.locale)}has(e){return this._components.has(O(e))}}function O(e){return String(e).toLowerCase()}var R=s("./packages/ckeditor5-utils/src/focustracker.ts"),M=s("./packages/ckeditor5-ui/src/tooltipmanager.js"),N=s("./packages/ckeditor5-utils/src/dom/isvisible.ts");class V{constructor(e){this.editor=e,this.componentFactory=new j(e),this.focusTracker=new R.Z,this.tooltipManager=new M.Z(e),this.set("viewportOffset",this._readViewportOffsetFromConfig()),this.isReady=!1,this.once("ready",(()=>{this.isReady=!0})),this._editableElementsMap=new Map,this._focusableToolbarDefinitions=[],this.listenTo(e.editing.view.document,"layoutChanged",(()=>this.update())),this._initFocusTracking()}get element(){return null}update(){this.fire("update")}destroy(){this.stopListening(),this.focusTracker.destroy(),this.tooltipManager.destroy(this.editor);for(const e of this._editableElementsMap.values())e.ckeditorInstance=null;this._editableElementsMap=new Map,this._focusableToolbarDefinitions=[]}setEditableElement(e,t){this._editableElementsMap.set(e,t),t.ckeditorInstance||(t.ckeditorInstance=this.editor),this.focusTracker.add(t);const s=()=>{this.editor.editing.view.getDomRoot(e)||this.editor.keystrokes.listenTo(t)};this.isReady?s():this.once("ready",s)}getEditableElement(e="main"){return this._editableElementsMap.get(e)}getEditableElementsNames(){return this._editableElementsMap.keys()}addToolbar(e,t={}){e.isRendered?(this.focusTracker.add(e.element),this.editor.keystrokes.listenTo(e.element)):e.once("render",(()=>{this.focusTracker.add(e.element),this.editor.keystrokes.listenTo(e.element)})),this._focusableToolbarDefinitions.push({toolbarView:e,options:t})}get _editableElements(){return console.warn("editor-ui-deprecated-editable-elements: The EditorUI#_editableElements property has been deprecated and will be removed in the near future.",{editorUI:this}),this._editableElementsMap}_readViewportOffsetFromConfig(){const e=this.editor,t=e.config.get("ui.viewportOffset");if(t)return t;const s=e.config.get("toolbar.viewportTopOffset");return s?(console.warn("editor-ui-deprecated-viewport-offset-config: The `toolbar.vieportTopOffset` configuration option is deprecated. It will be removed from future CKEditor versions. Use `ui.viewportOffset.top` instead."),{top:s}):{top:0}}_initFocusTracking(){const e=this.editor,t=e.editing.view;let s,o;e.keystrokes.set("Alt+F10",((e,i)=>{const r=this.focusTracker.focusedElement;Array.from(this._editableElementsMap.values()).includes(r)&&!Array.from(t.domRoots.values()).includes(r)&&(s=r);const n=this._getCurrentFocusedToolbarDefinition();n&&o||(o=this._getFocusableCandidateToolbarDefinitions(n));for(let e=0;e<o.length;e++){const e=o.shift();if(o.push(e),e!==n&&this._focusFocusableCandidateToolbar(e)){n&&n.options.afterBlur&&n.options.afterBlur();break}}i()})),e.keystrokes.set("Esc",((t,o)=>{const i=this._getCurrentFocusedToolbarDefinition();i&&(s?(s.focus(),s=null):e.editing.view.focus(),i.options.afterBlur&&i.options.afterBlur(),o())}))}_getFocusableCandidateToolbarDefinitions(){const e=[];for(const t of this._focusableToolbarDefinitions){const{toolbarView:s,options:o}=t;((0,N.Z)(s.element)||o.beforeFocus)&&e.push(t)}return e.sort(((e,t)=>I(e)-I(t))),e}_getCurrentFocusedToolbarDefinition(){for(const e of this._focusableToolbarDefinitions)if(e.toolbarView.element&&e.toolbarView.element.contains(this.focusTracker.focusedElement))return e;return null}_focusFocusableCandidateToolbar(e){const{toolbarView:t,options:{beforeFocus:s}}=e;return s&&s(),!!(0,N.Z)(t.element)&&(t.focus(),!0)}}function I(e){const{toolbarView:t,options:s}=e;let o=10;return(0,N.Z)(t.element)&&o--,s.isContextual&&o--,o}(0,m.Z)(V,C.Z);var D=s("./node_modules/lodash-es/isFunction.js");function z(e){if(!(0,D.Z)(e.updateSourceElement))throw new g.ZP("attachtoform-missing-elementapi-interface",e);const t=e.sourceElement;if(t&&"textarea"===t.tagName.toLowerCase()&&t.form){let s;const o=t.form,i=()=>e.updateSourceElement();(0,D.Z)(o.submit)&&(s=o.submit,o.submit=()=>{i(),s.apply(o)}),o.addEventListener("submit",i),e.on("destroy",(()=>{o.removeEventListener("submit",i),s&&(o.submit=s)}))}}const B={setData(e){this.data.set(e)},getData(e){return this.data.get(e)}};var F=s("./packages/ckeditor5-utils/src/dom/setdatainelement.ts");const L={updateSourceElement(e=this.data.get()){if(!this.sourceElement)throw new g.ZP("editor-missing-sourceelement",this);const t=this.config.get("updateSourceElementOnDestroy"),s=this.sourceElement instanceof HTMLTextAreaElement;t||s?(0,F.Z)(this.sourceElement,e):(0,F.Z)(this.sourceElement,"")}};function W(e){const t=e.sourceElement;if(t){if(t.ckeditorInstance)throw new g.ZP("editor-source-element-already-used",e);t.ckeditorInstance=e,e.once("destroy",(()=>{delete t.ckeditorInstance}))}}var $=s("./packages/ckeditor5-core/src/pendingactions.js");var q=s("./packages/ckeditor5-core/theme/icons/pilcrow.svg");var H=s("./packages/ckeditor5-core/theme/icons/three-vertical-dots.svg");const U={cancel:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m11.591 10.177 4.243 4.242a1 1 0 0 1-1.415 1.415l-4.242-4.243-4.243 4.243a1 1 0 0 1-1.414-1.415l4.243-4.242L4.52 5.934A1 1 0 0 1 5.934 4.52l4.243 4.243 4.242-4.243a1 1 0 1 1 1.415 1.414l-4.243 4.243z"/></svg>',caption:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2 16h9a1 1 0 0 1 0 2H2a1 1 0 0 1 0-2z"/><path d="M17 1a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h14zm0 1.5H3a.5.5 0 0 0-.492.41L2.5 3v9a.5.5 0 0 0 .41.492L3 12.5h14a.5.5 0 0 0 .492-.41L17.5 12V3a.5.5 0 0 0-.41-.492L17 2.5z" fill-opacity=".6"/></svg>',check:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M6.972 16.615a.997.997 0 0 1-.744-.292l-4.596-4.596a1 1 0 1 1 1.414-1.414l3.926 3.926 9.937-9.937a1 1 0 0 1 1.414 1.415L7.717 16.323a.997.997 0 0 1-.745.292z"/></svg>',cog:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m11.333 2 .19 2.263a5.899 5.899 0 0 1 1.458.604L14.714 3.4 16.6 5.286l-1.467 1.733c.263.452.468.942.605 1.46L18 8.666v2.666l-2.263.19a5.899 5.899 0 0 1-.604 1.458l1.467 1.733-1.886 1.886-1.733-1.467a5.899 5.899 0 0 1-1.46.605L11.334 18H8.667l-.19-2.263a5.899 5.899 0 0 1-1.458-.604L5.286 16.6 3.4 14.714l1.467-1.733a5.899 5.899 0 0 1-.604-1.458L2 11.333V8.667l2.262-.189a5.899 5.899 0 0 1 .605-1.459L3.4 5.286 5.286 3.4l1.733 1.467a5.899 5.899 0 0 1 1.46-.605L8.666 2h2.666zM10 6.267a3.733 3.733 0 1 0 0 7.466 3.733 3.733 0 0 0 0-7.466z"/></svg>',eraser:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m8.636 9.531-2.758 3.94a.5.5 0 0 0 .122.696l3.224 2.284h1.314l2.636-3.736L8.636 9.53zm.288 8.451L5.14 15.396a2 2 0 0 1-.491-2.786l6.673-9.53a2 2 0 0 1 2.785-.49l3.742 2.62a2 2 0 0 1 .491 2.785l-7.269 10.053-2.147-.066z"/><path d="M4 18h5.523v-1H4zm-2 0h1v-1H2z"/></svg>',lowVision:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M5.085 6.22 2.943 4.078a.75.75 0 1 1 1.06-1.06l2.592 2.59A11.094 11.094 0 0 1 10 5.068c4.738 0 8.578 3.101 8.578 5.083 0 1.197-1.401 2.803-3.555 3.887l1.714 1.713a.75.75 0 0 1-.09 1.138.488.488 0 0 1-.15.084.75.75 0 0 1-.821-.16L6.17 7.304c-.258.11-.51.233-.757.365l6.239 6.24-.006.005.78.78c-.388.094-.78.166-1.174.215l-1.11-1.11h.011L4.55 8.197a7.2 7.2 0 0 0-.665.514l-.112.098 4.897 4.897-.005.006 1.276 1.276a10.164 10.164 0 0 1-1.477-.117l-.479-.479-.009.009-4.863-4.863-.022.031a2.563 2.563 0 0 0-.124.2c-.043.077-.08.158-.108.241a.534.534 0 0 0-.028.133.29.29 0 0 0 .008.072.927.927 0 0 0 .082.226c.067.133.145.26.234.379l3.242 3.365.025.01.59.623c-3.265-.918-5.59-3.155-5.59-4.668 0-1.194 1.448-2.838 3.663-3.93zm7.07.531a4.632 4.632 0 0 1 1.108 5.992l.345.344.046-.018a9.313 9.313 0 0 0 2-1.112c.256-.187.5-.392.727-.613.137-.134.27-.277.392-.431.072-.091.141-.185.203-.286.057-.093.107-.19.148-.292a.72.72 0 0 0 .036-.12.29.29 0 0 0 .008-.072.492.492 0 0 0-.028-.133.999.999 0 0 0-.036-.096 2.165 2.165 0 0 0-.071-.145 2.917 2.917 0 0 0-.125-.2 3.592 3.592 0 0 0-.263-.335 5.444 5.444 0 0 0-.53-.523 7.955 7.955 0 0 0-1.054-.768 9.766 9.766 0 0 0-1.879-.891c-.337-.118-.68-.219-1.027-.301zm-2.85.21-.069.002a.508.508 0 0 0-.254.097.496.496 0 0 0-.104.679.498.498 0 0 0 .326.199l.045.005c.091.003.181.003.272.012a2.45 2.45 0 0 1 2.017 1.513c.024.061.043.125.069.185a.494.494 0 0 0 .45.287h.008a.496.496 0 0 0 .35-.158.482.482 0 0 0 .13-.335.638.638 0 0 0-.048-.219 3.379 3.379 0 0 0-.36-.723 3.438 3.438 0 0 0-2.791-1.543l-.028-.001h-.013z"/></svg>',image:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M6.91 10.54c.26-.23.64-.21.88.03l3.36 3.14 2.23-2.06a.64.64 0 0 1 .87 0l2.52 2.97V4.5H3.2v10.12l3.71-4.08zm10.27-7.51c.6 0 1.09.47 1.09 1.05v11.84c0 .59-.49 1.06-1.09 1.06H2.79c-.6 0-1.09-.47-1.09-1.06V4.08c0-.58.49-1.05 1.1-1.05h14.38zm-5.22 5.56a1.96 1.96 0 1 1 3.4-1.96 1.96 1.96 0 0 1-3.4 1.96z"/></svg>',alignBottom:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m9.239 13.938-2.88-1.663a.75.75 0 0 1 .75-1.3L9 12.067V4.75a.75.75 0 1 1 1.5 0v7.318l1.89-1.093a.75.75 0 0 1 .75 1.3l-2.879 1.663a.752.752 0 0 1-.511.187.752.752 0 0 1-.511-.187zM4.25 17a.75.75 0 1 1 0-1.5h10.5a.75.75 0 0 1 0 1.5H4.25z"/></svg>',alignMiddle:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M9.75 11.875a.752.752 0 0 1 .508.184l2.883 1.666a.75.75 0 0 1-.659 1.344l-.091-.044-1.892-1.093.001 4.318a.75.75 0 1 1-1.5 0v-4.317l-1.89 1.092a.75.75 0 0 1-.75-1.3l2.879-1.663a.752.752 0 0 1 .51-.187zM15.25 9a.75.75 0 1 1 0 1.5H4.75a.75.75 0 1 1 0-1.5h10.5zM9.75.375a.75.75 0 0 1 .75.75v4.318l1.89-1.093.092-.045a.75.75 0 0 1 .659 1.344l-2.883 1.667a.752.752 0 0 1-.508.184.752.752 0 0 1-.511-.187L6.359 5.65a.75.75 0 0 1 .75-1.299L9 5.442V1.125a.75.75 0 0 1 .75-.75z"/></svg>',alignTop:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m10.261 7.062 2.88 1.663a.75.75 0 0 1-.75 1.3L10.5 8.933v7.317a.75.75 0 1 1-1.5 0V8.932l-1.89 1.093a.75.75 0 0 1-.75-1.3l2.879-1.663a.752.752 0 0 1 .511-.187.752.752 0 0 1 .511.187zM15.25 4a.75.75 0 1 1 0 1.5H4.75a.75.75 0 0 1 0-1.5h10.5z"/></svg>',alignLeft:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2 3.75c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0 8c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0 4c0 .414.336.75.75.75h9.929a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0-8c0 .414.336.75.75.75h9.929a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75z"/></svg>',alignCenter:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2 3.75c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0 8c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm2.286 4c0 .414.336.75.75.75h9.928a.75.75 0 1 0 0-1.5H5.036a.75.75 0 0 0-.75.75zm0-8c0 .414.336.75.75.75h9.928a.75.75 0 1 0 0-1.5H5.036a.75.75 0 0 0-.75.75z"/></svg>',alignRight:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M18 3.75a.75.75 0 0 1-.75.75H2.75a.75.75 0 1 1 0-1.5h14.5a.75.75 0 0 1 .75.75zm0 8a.75.75 0 0 1-.75.75H2.75a.75.75 0 1 1 0-1.5h14.5a.75.75 0 0 1 .75.75zm0 4a.75.75 0 0 1-.75.75H7.321a.75.75 0 1 1 0-1.5h9.929a.75.75 0 0 1 .75.75zm0-8a.75.75 0 0 1-.75.75H7.321a.75.75 0 1 1 0-1.5h9.929a.75.75 0 0 1 .75.75z"/></svg>',alignJustify:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2 3.75c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0 8c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0 4c0 .414.336.75.75.75h9.929a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0-8c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75z"/></svg>',objectLeft:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path opacity=".5" d="M2 3h16v1.5H2zm11.5 9H18v1.5h-4.5zm0-3H18v1.5h-4.5zm0-3H18v1.5h-4.5zM2 15h16v1.5H2z"/><path d="M12.003 7v5.5a1 1 0 0 1-1 1H2.996a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h8.007a1 1 0 0 1 1 1zm-1.506.5H3.5V12h6.997V7.5z"/></svg>',objectCenter:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path opacity=".5" d="M2 3h16v1.5H2zm0 12h16v1.5H2z"/><path d="M15.003 7v5.5a1 1 0 0 1-1 1H5.996a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h8.007a1 1 0 0 1 1 1zm-1.506.5H6.5V12h6.997V7.5z"/></svg>',objectRight:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path opacity=".5" d="M2 3h16v1.5H2zm0 12h16v1.5H2zm0-9h5v1.5H2zm0 3h5v1.5H2zm0 3h5v1.5H2z"/><path d="M18.003 7v5.5a1 1 0 0 1-1 1H8.996a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h8.007a1 1 0 0 1 1 1zm-1.506.5H9.5V12h6.997V7.5z"/></svg>',objectFullWidth:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path opacity=".5" d="M2 3h16v1.5H2zm0 12h16v1.5H2z"/><path d="M18 7v5.5a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1zm-1.505.5H3.504V12h12.991V7.5z"/></svg>',objectInline:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path opacity=".5" d="M2 3h16v1.5H2zm11.5 9H18v1.5h-4.5zM2 15h16v1.5H2z"/><path d="M12.003 7v5.5a1 1 0 0 1-1 1H2.996a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h8.007a1 1 0 0 1 1 1zm-1.506.5H3.5V12h6.997V7.5z"/></svg>',objectBlockLeft:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path opacity=".5" d="M2 3h16v1.5H2zm0 12h16v1.5H2z"/><path d="M12.003 7v5.5a1 1 0 0 1-1 1H2.996a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h8.007a1 1 0 0 1 1 1zm-1.506.5H3.5V12h6.997V7.5z"/></svg>',objectBlockRight:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path opacity=".5" d="M2 3h16v1.5H2zm0 12h16v1.5H2z"/><path d="M18.003 7v5.5a1 1 0 0 1-1 1H8.996a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h8.007a1 1 0 0 1 1 1zm-1.506.5H9.5V12h6.997V7.5z"/></svg>',objectSizeFull:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path d="M2.5 17v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zM1 15.5v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm0-2v1h-1v-1h1zm-19 0v1H0v-1h1zM14.5 2v1h-1V2h1zm2 0v1h-1V2h1zm2 0v1h-1V2h1zm-8 0v1h-1V2h1zm-2 0v1h-1V2h1zm-2 0v1h-1V2h1zm-2 0v1h-1V2h1zm8 0v1h-1V2h1zm-10 0v1h-1V2h1z"/><path d="M18.095 2H1.905C.853 2 0 2.895 0 4v12c0 1.105.853 2 1.905 2h16.19C19.147 18 20 17.105 20 16V4c0-1.105-.853-2-1.905-2zm0 1.5c.263 0 .476.224.476.5v12c0 .276-.213.5-.476.5H1.905a.489.489 0 0 1-.476-.5V4c0-.276.213-.5.476-.5h16.19z"/></svg>',objectSizeLarge:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path d="M2.5 17v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zM1 15.5v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm0-2v1h-1v-1h1zm-19 0v1H0v-1h1zM14.5 2v1h-1V2h1zm2 0v1h-1V2h1zm2 0v1h-1V2h1zm-8 0v1h-1V2h1zm-2 0v1h-1V2h1zm-2 0v1h-1V2h1zm-2 0v1h-1V2h1zm8 0v1h-1V2h1zm-10 0v1h-1V2h1z"/><path d="M13 6H2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2zm0 1.5a.5.5 0 0 1 .5.5v8a.5.5 0 0 1-.5.5H2a.5.5 0 0 1-.5-.5V8a.5.5 0 0 1 .5-.5h11z"/></svg>',objectSizeSmall:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path d="M2.5 17v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zM1 15.5v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm0-2v1h-1v-1h1zm-19 0v1H0v-1h1zM14.5 2v1h-1V2h1zm2 0v1h-1V2h1zm2 0v1h-1V2h1zm-8 0v1h-1V2h1zm-2 0v1h-1V2h1zm-2 0v1h-1V2h1zm-2 0v1h-1V2h1zm8 0v1h-1V2h1zm-10 0v1h-1V2h1z"/><path d="M7 10H2a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h5a2 2 0 0 0 2-2v-4a2 2 0 0 0-2-2zm0 1.5a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5H2a.5.5 0 0 1-.5-.5v-4a.5.5 0 0 1 .5-.5h5z"/></svg>',objectSizeMedium:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path d="M2.5 17v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zM1 15.5v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm0-2v1h-1v-1h1zm-19 0v1H0v-1h1zM14.5 2v1h-1V2h1zm2 0v1h-1V2h1zm2 0v1h-1V2h1zm-8 0v1h-1V2h1zm-2 0v1h-1V2h1zm-2 0v1h-1V2h1zm-2 0v1h-1V2h1zm8 0v1h-1V2h1zm-10 0v1h-1V2h1z"/><path d="M10 8H2a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2v-6a2 2 0 0 0-2-2zm0 1.5a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-.5.5H2a.5.5 0 0 1-.5-.5v-6a.5.5 0 0 1 .5-.5h8z"/></svg>',pencil:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m7.3 17.37-.061.088a1.518 1.518 0 0 1-.934.535l-4.178.663-.806-4.153a1.495 1.495 0 0 1 .187-1.058l.056-.086L8.77 2.639c.958-1.351 2.803-1.076 4.296-.03 1.497 1.047 2.387 2.693 1.433 4.055L7.3 17.37zM9.14 4.728l-5.545 8.346 3.277 2.294 5.544-8.346L9.14 4.728zM6.07 16.512l-3.276-2.295.53 2.73 2.746-.435zM9.994 3.506 13.271 5.8c.316-.452-.16-1.333-1.065-1.966-.905-.634-1.895-.78-2.212-.328zM8 18.5 9.375 17H19v1.5H8z"/></svg>',pilcrow:q.Z,quote:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M3 10.423a6.5 6.5 0 0 1 6.056-6.408l.038.67C6.448 5.423 5.354 7.663 5.22 10H9c.552 0 .5.432.5.986v4.511c0 .554-.448.503-1 .503h-5c-.552 0-.5-.449-.5-1.003v-4.574zm8 0a6.5 6.5 0 0 1 6.056-6.408l.038.67c-2.646.739-3.74 2.979-3.873 5.315H17c.552 0 .5.432.5.986v4.511c0 .554-.448.503-1 .503h-5c-.552 0-.5-.449-.5-1.003v-4.574z"/></svg>',threeVerticalDots:H.Z}},"./src/engine.js":(e,t,s)=>{"use strict";s.r(t),s.d(t,{ClickObserver:()=>K,Conversion:()=>b.Z,DataController:()=>k.Z,DocumentFragment:()=>O.Z,DocumentSelection:()=>P.Z,DomConverter:()=>N.Z,DomEventData:()=>oe.Z,DomEventObserver:()=>U.Z,DowncastWriter:()=>J.Z,EditingController:()=>m.Z,Element:()=>S.Z,History:()=>R.Z,HtmlDataProcessor:()=>_.Z,InsertOperation:()=>w.Z,LivePosition:()=>A.Z,LiveRange:()=>T.Z,MarkerOperation:()=>v.Z,Matcher:()=>se.Z,Model:()=>C.Z,MouseObserver:()=>G.Z,Observer:()=>H.Z,OperationFactory:()=>y.Z,Position:()=>j.ZP,Range:()=>x.Z,Renderer:()=>V.Z,StylesProcessor:()=>ie.A,Text:()=>M.Z,TreeWalker:()=>E.Z,UpcastWriter:()=>te,ViewAttributeElement:()=>F.Z,ViewContainerElement:()=>B.Z,ViewDocument:()=>I.Z,ViewDocumentFragment:()=>q.Z,ViewElement:()=>z.Z,ViewEmptyElement:()=>L.Z,ViewRawElement:()=>W.Z,ViewText:()=>D.Z,ViewUIElement:()=>$.Z,addBackgroundRules:()=>je,addBorderRules:()=>Oe,addMarginRules:()=>Le,addPaddingRules:()=>We,disablePlaceholder:()=>l,enablePlaceholder:()=>c,getBoxSidesShorthandValue:()=>Ce,getBoxSidesValueReducer:()=>Ae,getBoxSidesValues:()=>Te,getFillerOffset:()=>B.Y,getPositionShorthandNormalizer:()=>Ee,getShorthandValues:()=>Se,hidePlaceholder:()=>h,isAttachment:()=>Ze,isColor:()=>he,isLength:()=>fe,isLineStyle:()=>pe,isPercentage:()=>ke,isPosition:()=>ve,isRepeat:()=>_e,isURL:()=>xe,needsPlaceholder:()=>u,showPlaceholder:()=>d,transformSets:()=>Z.R});var o=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),i=s.n(o),r=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-engine/theme/placeholder.css"),n={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i()(r.Z,n);r.Z.locals;const a=new WeakMap;function c(e){const{view:t,element:s,text:o,isDirectHost:i=!0,keepOnFocus:r=!1}=e,n=t.document;a.has(n)||(a.set(n,new Map),n.registerPostFixer((e=>p(n,e)))),a.get(n).set(s,{text:o,isDirectHost:i,keepOnFocus:r,hostElement:i?s:null}),t.change((e=>p(n,e)))}function l(e,t){const s=t.document;e.change((e=>{if(!a.has(s))return;const o=a.get(s),i=o.get(t);e.removeAttribute("data-placeholder",i.hostElement),h(e,i.hostElement),o.delete(t)}))}function d(e,t){return!t.hasClass("ck-placeholder")&&(e.addClass("ck-placeholder",t),!0)}function h(e,t){return!!t.hasClass("ck-placeholder")&&(e.removeClass("ck-placeholder",t),!0)}function u(e,t){if(!e.isAttached())return!1;const s=Array.from(e.getChildren()).some((e=>!e.is("uiElement")));if(s)return!1;if(t)return!0;const o=e.document;if(!o.isFocused)return!0;const i=o.selection.anchor;return!!i&&i.parent!==e}function p(e,t){const s=a.get(e),o=[];let i=!1;for(const[e,r]of s)r.isDirectHost&&(o.push(e),g(t,e,r)&&(i=!0));for(const[e,r]of s){if(r.isDirectHost)continue;const s=f(e);s&&(o.includes(s)||(r.hostElement=s,g(t,e,r)&&(i=!0)))}return i}function g(e,t,s){const{text:o,isDirectHost:i,hostElement:r}=s;let n=!1;r.getAttribute("data-placeholder")!==o&&(e.setAttribute("data-placeholder",o,r),n=!0);return(i||1==t.childCount)&&u(r,s.keepOnFocus)?d(e,r)&&(n=!0):h(e,r)&&(n=!0),n}function f(e){if(e.childCount){const t=e.getChild(0);if(t.is("element")&&!t.is("uiElement")&&!t.is("attributeElement"))return t}return null}var m=s("./packages/ckeditor5-engine/src/controller/editingcontroller.ts"),k=s("./packages/ckeditor5-engine/src/controller/datacontroller.ts"),b=s("./packages/ckeditor5-engine/src/conversion/conversion.ts"),_=s("./packages/ckeditor5-engine/src/dataprocessor/htmldataprocessor.ts"),w=s("./packages/ckeditor5-engine/src/model/operation/insertoperation.ts"),v=s("./packages/ckeditor5-engine/src/model/operation/markeroperation.ts"),y=s("./packages/ckeditor5-engine/src/model/operation/operationfactory.ts"),Z=s("./packages/ckeditor5-engine/src/model/operation/transform.ts"),P=s("./packages/ckeditor5-engine/src/model/documentselection.ts"),x=s("./packages/ckeditor5-engine/src/model/range.ts"),T=s("./packages/ckeditor5-engine/src/model/liverange.ts"),A=s("./packages/ckeditor5-engine/src/model/liveposition.ts"),C=s("./packages/ckeditor5-engine/src/model/model.ts"),E=s("./packages/ckeditor5-engine/src/model/treewalker.ts"),S=s("./packages/ckeditor5-engine/src/model/element.ts"),j=s("./packages/ckeditor5-engine/src/model/position.ts"),O=s("./packages/ckeditor5-engine/src/model/documentfragment.ts"),R=s("./packages/ckeditor5-engine/src/model/history.ts"),M=s("./packages/ckeditor5-engine/src/model/text.ts"),N=s("./packages/ckeditor5-engine/src/view/domconverter.ts"),V=s("./packages/ckeditor5-engine/src/view/renderer.ts"),I=s("./packages/ckeditor5-engine/src/view/document.ts"),D=s("./packages/ckeditor5-engine/src/view/text.ts"),z=s("./packages/ckeditor5-engine/src/view/element.ts"),B=s("./packages/ckeditor5-engine/src/view/containerelement.ts"),F=s("./packages/ckeditor5-engine/src/view/attributeelement.ts"),L=s("./packages/ckeditor5-engine/src/view/emptyelement.ts"),W=s("./packages/ckeditor5-engine/src/view/rawelement.ts"),$=s("./packages/ckeditor5-engine/src/view/uielement.ts"),q=s("./packages/ckeditor5-engine/src/view/documentfragment.ts"),H=s("./packages/ckeditor5-engine/src/view/observer/observer.ts"),U=s("./packages/ckeditor5-engine/src/view/observer/domeventobserver.ts");class K extends U.Z{constructor(e){super(e),this.domEventType="click"}onDomEvent(e){this.fire(e.type,e)}}var G=s("./packages/ckeditor5-engine/src/view/observer/mouseobserver.ts"),J=s("./packages/ckeditor5-engine/src/view/downcastwriter.ts"),Q=s("./node_modules/lodash-es/isPlainObject.js"),X=s("./packages/ckeditor5-engine/src/view/position.ts"),Y=s("./packages/ckeditor5-engine/src/view/range.ts"),ee=s("./packages/ckeditor5-engine/src/view/selection.ts");class te{constructor(e){this.document=e}createDocumentFragment(e){return new q.Z(this.document,e)}createElement(e,t,s){return new z.Z(this.document,e,t,s)}createText(e){return new D.Z(this.document,e)}clone(e,t=!1){return e._clone(t)}appendChild(e,t){return t._appendChild(e)}insertChild(e,t,s){return s._insertChild(e,t)}removeChildren(e,t,s){return s._removeChildren(e,t)}remove(e){const t=e.parent;return t?this.removeChildren(t.getChildIndex(e),1,t):[]}replace(e,t){const s=e.parent;if(s){const o=s.getChildIndex(e);return this.removeChildren(o,1,s),this.insertChild(o,t,s),!0}return!1}unwrapElement(e){const t=e.parent;if(t){const s=t.getChildIndex(e);this.remove(e),this.insertChild(s,e.getChildren(),t)}}rename(e,t){const s=new z.Z(this.document,e,t.getAttributes(),t.getChildren());return this.replace(t,s)?s:null}setAttribute(e,t,s){s._setAttribute(e,t)}removeAttribute(e,t){t._removeAttribute(e)}addClass(e,t){t._addClass(e)}removeClass(e,t){t._removeClass(e)}setStyle(e,t,s){(0,Q.Z)(e)&&void 0===s?t._setStyle(e):s._setStyle(e,t)}removeStyle(e,t){t._removeStyle(e)}setCustomProperty(e,t,s){s._setCustomProperty(e,t)}removeCustomProperty(e,t){return t._removeCustomProperty(e)}createPositionAt(e,t){return X.Z._createAt(e,t)}createPositionAfter(e){return X.Z._createAfter(e)}createPositionBefore(e){return X.Z._createBefore(e)}createRange(e,t){return new Y.Z(e,t)}createRangeOn(e){return Y.Z._createOn(e)}createRangeIn(e){return Y.Z._createIn(e)}createSelection(...e){return new ee.Z(...e)}}var se=s("./packages/ckeditor5-engine/src/view/matcher.ts"),oe=s("./packages/ckeditor5-engine/src/view/observer/domeventdata.ts"),ie=s("./packages/ckeditor5-engine/src/view/stylesmap.ts");const re=/^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i,ne=/^rgb\([ ]?([0-9]{1,3}[ %]?,[ ]?){2,3}[0-9]{1,3}[ %]?\)$/i,ae=/^rgba\([ ]?([0-9]{1,3}[ %]?,[ ]?){3}(1|[0-9]+%|[0]?\.?[0-9]+)\)$/i,ce=/^hsl\([ ]?([0-9]{1,3}[ %]?[,]?[ ]*){3}(1|[0-9]+%|[0]?\.?[0-9]+)?\)$/i,le=/^hsla\([ ]?([0-9]{1,3}[ %]?,[ ]?){2,3}(1|[0-9]+%|[0]?\.?[0-9]+)\)$/i,de=new Set(["black","silver","gray","white","maroon","red","purple","fuchsia","green","lime","olive","yellow","navy","blue","teal","aqua","orange","aliceblue","antiquewhite","aquamarine","azure","beige","bisque","blanchedalmond","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","gainsboro","ghostwhite","gold","goldenrod","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","limegreen","linen","magenta","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","oldlace","olivedrab","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","thistle","tomato","turquoise","violet","wheat","whitesmoke","yellowgreen","activeborder","activecaption","appworkspace","background","buttonface","buttonhighlight","buttonshadow","buttontext","captiontext","graytext","highlight","highlighttext","inactiveborder","inactivecaption","inactivecaptiontext","infobackground","infotext","menu","menutext","scrollbar","threeddarkshadow","threedface","threedhighlight","threedlightshadow","threedshadow","window","windowframe","windowtext","rebeccapurple","currentcolor","transparent"]);function he(e){return e.startsWith("#")?re.test(e):e.startsWith("rgb")?ne.test(e)||ae.test(e):e.startsWith("hsl")?ce.test(e)||le.test(e):de.has(e.toLowerCase())}const ue=["none","hidden","dotted","dashed","solid","double","groove","ridge","inset","outset"];function pe(e){return ue.includes(e)}const ge=/^([+-]?[0-9]*([.][0-9]+)?(px|cm|mm|in|pc|pt|ch|em|ex|rem|vh|vw|vmin|vmax)|0)$/;function fe(e){return ge.test(e)}const me=/^[+-]?[0-9]*([.][0-9]+)?%$/;function ke(e){return me.test(e)}const be=["repeat-x","repeat-y","repeat","space","round","no-repeat"];function _e(e){return be.includes(e)}const we=["center","top","bottom","left","right"];function ve(e){return we.includes(e)}const ye=["fixed","scroll","local"];function Ze(e){return ye.includes(e)}const Pe=/^url\(/;function xe(e){return Pe.test(e)}function Te(e=""){if(""===e)return{top:void 0,right:void 0,bottom:void 0,left:void 0};const t=Se(e),s=t[0],o=t[2]||s,i=t[1]||s;return{top:s,bottom:o,right:i,left:t[3]||i}}function Ae(e){return t=>{const{top:s,right:o,bottom:i,left:r}=t,n=[];return[s,o,r,i].every((e=>!!e))?n.push([e,Ce(t)]):(s&&n.push([e+"-top",s]),o&&n.push([e+"-right",o]),i&&n.push([e+"-bottom",i]),r&&n.push([e+"-left",r])),n}}function Ce({top:e,right:t,bottom:s,left:o}){const i=[];return o!==t?i.push(e,t,s,o):s!==e?i.push(e,t,s):t!==e?i.push(e,t):i.push(e),i.join(" ")}function Ee(e){return t=>({path:e,value:Te(t)})}function Se(e){return e.replace(/, /g,",").split(" ").map((e=>e.replace(/,/g,", ")))}function je(e){e.setNormalizer("background",(e=>{const t={},s=Se(e);for(const e of s)_e(e)?(t.repeat=t.repeat||[],t.repeat.push(e)):ve(e)?(t.position=t.position||[],t.position.push(e)):Ze(e)?t.attachment=e:he(e)?t.color=e:xe(e)&&(t.image=e);return{path:"background",value:t}})),e.setNormalizer("background-color",(e=>({path:"background.color",value:e}))),e.setReducer("background",(e=>{const t=[];return t.push(["background-color",e.color]),t})),e.setStyleRelation("background",["background-color"])}function Oe(e){e.setNormalizer("border",(e=>{const{color:t,style:s,width:o}=ze(e);return{path:"border",value:{color:Te(t),style:Te(s),width:Te(o)}}})),e.setNormalizer("border-top",Re("top")),e.setNormalizer("border-right",Re("right")),e.setNormalizer("border-bottom",Re("bottom")),e.setNormalizer("border-left",Re("left")),e.setNormalizer("border-color",Me("color")),e.setNormalizer("border-width",Me("width")),e.setNormalizer("border-style",Me("style")),e.setNormalizer("border-top-color",Ve("color","top")),e.setNormalizer("border-top-style",Ve("style","top")),e.setNormalizer("border-top-width",Ve("width","top")),e.setNormalizer("border-right-color",Ve("color","right")),e.setNormalizer("border-right-style",Ve("style","right")),e.setNormalizer("border-right-width",Ve("width","right")),e.setNormalizer("border-bottom-color",Ve("color","bottom")),e.setNormalizer("border-bottom-style",Ve("style","bottom")),e.setNormalizer("border-bottom-width",Ve("width","bottom")),e.setNormalizer("border-left-color",Ve("color","left")),e.setNormalizer("border-left-style",Ve("style","left")),e.setNormalizer("border-left-width",Ve("width","left")),e.setExtractor("border-top",Ie("top")),e.setExtractor("border-right",Ie("right")),e.setExtractor("border-bottom",Ie("bottom")),e.setExtractor("border-left",Ie("left")),e.setExtractor("border-top-color","border.color.top"),e.setExtractor("border-right-color","border.color.right"),e.setExtractor("border-bottom-color","border.color.bottom"),e.setExtractor("border-left-color","border.color.left"),e.setExtractor("border-top-width","border.width.top"),e.setExtractor("border-right-width","border.width.right"),e.setExtractor("border-bottom-width","border.width.bottom"),e.setExtractor("border-left-width","border.width.left"),e.setExtractor("border-top-style","border.style.top"),e.setExtractor("border-right-style","border.style.right"),e.setExtractor("border-bottom-style","border.style.bottom"),e.setExtractor("border-left-style","border.style.left"),e.setReducer("border-color",Ae("border-color")),e.setReducer("border-style",Ae("border-style")),e.setReducer("border-width",Ae("border-width")),e.setReducer("border-top",Be("top")),e.setReducer("border-right",Be("right")),e.setReducer("border-bottom",Be("bottom")),e.setReducer("border-left",Be("left")),e.setReducer("border",function(){return t=>{const s=De(t,"top"),o=De(t,"right"),i=De(t,"bottom"),r=De(t,"left"),n=[s,o,i,r],a={width:e(n,"width"),style:e(n,"style"),color:e(n,"color")},c=Fe(a,"all");if(c.length)return c;const l=Object.entries(a).reduce(((e,[t,s])=>(s&&(e.push([`border-${t}`,s]),n.forEach((e=>delete e[t]))),e)),[]);return[...l,...Fe(s,"top"),...Fe(o,"right"),...Fe(i,"bottom"),...Fe(r,"left")]};function e(e,t){return e.map((e=>e[t])).reduce(((e,t)=>e==t?e:null))}}()),e.setStyleRelation("border",["border-color","border-style","border-width","border-top","border-right","border-bottom","border-left","border-top-color","border-right-color","border-bottom-color","border-left-color","border-top-style","border-right-style","border-bottom-style","border-left-style","border-top-width","border-right-width","border-bottom-width","border-left-width"]),e.setStyleRelation("border-color",["border-top-color","border-right-color","border-bottom-color","border-left-color"]),e.setStyleRelation("border-style",["border-top-style","border-right-style","border-bottom-style","border-left-style"]),e.setStyleRelation("border-width",["border-top-width","border-right-width","border-bottom-width","border-left-width"]),e.setStyleRelation("border-top",["border-top-color","border-top-style","border-top-width"]),e.setStyleRelation("border-right",["border-right-color","border-right-style","border-right-width"]),e.setStyleRelation("border-bottom",["border-bottom-color","border-bottom-style","border-bottom-width"]),e.setStyleRelation("border-left",["border-left-color","border-left-style","border-left-width"])}function Re(e){return t=>{const{color:s,style:o,width:i}=ze(t),r={};return void 0!==s&&(r.color={[e]:s}),void 0!==o&&(r.style={[e]:o}),void 0!==i&&(r.width={[e]:i}),{path:"border",value:r}}}function Me(e){return t=>({path:"border",value:Ne(t,e)})}function Ne(e,t){return{[t]:Te(e)}}function Ve(e,t){return s=>({path:"border",value:{[e]:{[t]:s}}})}function Ie(e){return(t,s)=>{if(s.border)return De(s.border,e)}}function De(e,t){const s={};return e.width&&e.width[t]&&(s.width=e.width[t]),e.style&&e.style[t]&&(s.style=e.style[t]),e.color&&e.color[t]&&(s.color=e.color[t]),s}function ze(e){const t={},s=Se(e);for(const e of s)fe(e)||/thin|medium|thick/.test(e)?t.width=e:pe(e)?t.style=e:t.color=e;return t}function Be(e){return t=>Fe(t,e)}function Fe(e,t){const s=[];if(e&&e.width&&s.push("width"),e&&e.style&&s.push("style"),e&&e.color&&s.push("color"),3==s.length){const o=s.map((t=>e[t])).join(" ");return["all"==t?["border",o]:[`border-${t}`,o]]}return"all"==t?[]:s.map((s=>[`border-${t}-${s}`,e[s]]))}function Le(e){e.setNormalizer("margin",Ee("margin")),e.setNormalizer("margin-top",(e=>({path:"margin.top",value:e}))),e.setNormalizer("margin-right",(e=>({path:"margin.right",value:e}))),e.setNormalizer("margin-bottom",(e=>({path:"margin.bottom",value:e}))),e.setNormalizer("margin-left",(e=>({path:"margin.left",value:e}))),e.setReducer("margin",Ae("margin")),e.setStyleRelation("margin",["margin-top","margin-right","margin-bottom","margin-left"])}function We(e){e.setNormalizer("padding",Ee("padding")),e.setNormalizer("padding-top",(e=>({path:"padding.top",value:e}))),e.setNormalizer("padding-right",(e=>({path:"padding.right",value:e}))),e.setNormalizer("padding-bottom",(e=>({path:"padding.bottom",value:e}))),e.setNormalizer("padding-left",(e=>({path:"padding.left",value:e}))),e.setReducer("padding",Ae("padding")),e.setStyleRelation("padding",["padding-top","padding-right","padding-bottom","padding-left"])}},"./src/enter.js":(e,t,s)=>{"use strict";s.r(t),s.d(t,{Enter:()=>o.Z,ShiftEnter:()=>h});var o=s("./packages/ckeditor5-enter/src/enter.js"),i=s("./packages/ckeditor5-core/src/command.js"),r=s("./packages/ckeditor5-enter/src/utils.js");class n extends i.Z{execute(){const e=this.editor.model,t=e.document;e.change((s=>{!function(e,t,s){const o=s.isCollapsed,i=s.getFirstRange(),n=i.start.parent,c=i.end.parent,l=n==c;if(o){const o=(0,r.G)(e.schema,s.getAttributes());a(e,t,i.end),t.removeSelectionAttribute(s.getAttributeKeys()),t.setSelectionAttribute(o)}else{const o=!(i.start.isAtStart&&i.end.isAtEnd);e.deleteContent(s,{leaveUnmerged:o}),l?a(e,t,s.focus):o&&t.setSelection(c,0)}}(e,s,t.selection),this.fire("afterExecute",{writer:s})}))}refresh(){const e=this.editor.model,t=e.document;this.isEnabled=function(e,t){if(t.rangeCount>1)return!1;const s=t.anchor;if(!s||!e.checkChild(s,"softBreak"))return!1;const o=t.getFirstRange(),i=o.start.parent,r=o.end.parent;if((c(i,e)||c(r,e))&&i!==r)return!1;return!0}(e.schema,t.selection)}}function a(e,t,s){const o=t.createElement("softBreak");e.insertContent(o,s),t.setSelection(o,"after")}function c(e,t){return!e.is("rootElement")&&(t.isLimit(e)||c(e.parent,t))}var l=s("./packages/ckeditor5-enter/src/enterobserver.js"),d=s("./packages/ckeditor5-core/src/plugin.js");class h extends d.Z{static get pluginName(){return"ShiftEnter"}init(){const e=this.editor,t=e.model.schema,s=e.conversion,o=e.editing.view,i=o.document;t.register("softBreak",{allowWhere:"$text",isInline:!0}),s.for("upcast").elementToElement({model:"softBreak",view:"br"}),s.for("downcast").elementToElement({model:"softBreak",view:(e,{writer:t})=>t.createEmptyElement("br")}),o.addObserver(l.Z),e.commands.add("shiftEnter",new n(e)),this.listenTo(i,"enter",((t,s)=>{s.preventDefault(),s.isSoft&&(e.execute("shiftEnter"),o.scrollToTheSelection())}),{priority:"low"})}}},"./src/paragraph.js":(e,t,s)=>{"use strict";s.r(t),s.d(t,{Paragraph:()=>l,ParagraphButtonUI:()=>h});var o=s("./packages/ckeditor5-core/src/command.js"),i=s("./packages/ckeditor5-utils/src/first.ts");class r extends o.Z{refresh(){const e=this.editor.model,t=e.document,s=(0,i.Z)(t.selection.getSelectedBlocks());this.value=!!s&&s.is("element","paragraph"),this.isEnabled=!!s&&n(s,e.schema)}execute(e={}){const t=this.editor.model,s=t.document;t.change((o=>{const i=(e.selection||s.selection).getSelectedBlocks();for(const e of i)!e.is("element","paragraph")&&n(e,t.schema)&&o.rename(e,"paragraph")}))}}function n(e,t){return t.checkChild(e.parent,"paragraph")&&!t.isObject(e)}class a extends o.Z{execute(e){const t=this.editor.model,s=e.attributes;let o=e.position;t.change((e=>{const i=e.createElement("paragraph");if(s&&t.schema.setAllowedAttributes(i,s,e),!t.schema.checkChild(o.parent,i)){const s=t.schema.findAllowedParent(o,i);if(!s)return;o=e.split(o,s).position}t.insertContent(i,o),e.setSelection(i,"in")}))}}var c=s("./packages/ckeditor5-core/src/plugin.js");class l extends c.Z{static get pluginName(){return"Paragraph"}init(){const e=this.editor,t=e.model;e.commands.add("paragraph",new r(e)),e.commands.add("insertParagraph",new a(e)),t.schema.register("paragraph",{inheritAllFrom:"$block"}),e.conversion.elementToElement({model:"paragraph",view:"p"}),e.conversion.for("upcast").elementToElement({model:(e,{writer:t})=>l.paragraphLikeElements.has(e.name)?e.isEmpty?null:t.createElement("paragraph"):null,view:/.+/,converterPriority:"low"})}}l.paragraphLikeElements=new Set(["blockquote","dd","div","dt","h1","h2","h3","h4","h5","h6","li","p","td","th"]);var d=s("./packages/ckeditor5-ui/src/button/buttonview.js");class h extends c.Z{init(){const e=this.editor,t=e.t;e.ui.componentFactory.add("paragraph",(s=>{const o=new d.Z(s),i=e.commands.get("paragraph");return o.label=t("Paragraph"),o.icon='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M10.5 5.5H7v5h3.5a2.5 2.5 0 1 0 0-5zM5 3h6.5v.025a5 5 0 0 1 0 9.95V13H7v4a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1z"/></svg>',o.tooltip=!0,o.isToggleable=!0,o.bind("isEnabled").to(i),o.bind("isOn").to(i,"value"),o.on("execute",(()=>{e.execute("paragraph")})),o}))}}},"./src/select-all.js":(e,t,s)=>{"use strict";s.r(t),s.d(t,{SelectAll:()=>u,SelectAllEditing:()=>l,SelectAllUI:()=>h});var o=s("./packages/ckeditor5-core/src/plugin.js"),i=s("./packages/ckeditor5-utils/src/keyboard.ts"),r=s("./packages/ckeditor5-core/src/command.js");class n extends r.Z{constructor(e){super(e),this.affectsData=!1}execute(){const e=this.editor.model,t=e.document.selection;let s=e.schema.getLimitElement(t);if(t.containsEntireContent(s)||!a(e.schema,s))do{if(s=s.parent,!s)return}while(!a(e.schema,s));e.change((e=>{e.setSelection(s,"in")}))}}function a(e,t){return e.isLimit(t)&&(e.checkChild(t,"$text")||e.checkChild(t,"paragraph"))}const c=(0,i.Zz)("Ctrl+A");class l extends o.Z{static get pluginName(){return"SelectAllEditing"}init(){const e=this.editor,t=e.editing.view.document;e.commands.add("selectAll",new n(e)),this.listenTo(t,"keydown",((t,s)=>{(0,i.Cq)(s)===c&&(e.execute("selectAll"),s.preventDefault())}))}}var d=s("./packages/ckeditor5-ui/src/button/buttonview.js");class h extends o.Z{static get pluginName(){return"SelectAllUI"}init(){const e=this.editor;e.ui.componentFactory.add("selectAll",(t=>{const s=e.commands.get("selectAll"),o=new d.Z(t),i=t.t;return o.set({label:i("Select all"),icon:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path d="M.75 15.5a.75.75 0 0 1 .75.75V18l.008.09A.5.5 0 0 0 2 18.5h1.75a.75.75 0 1 1 0 1.5H1.5l-.144-.007a1.5 1.5 0 0 1-1.35-1.349L0 18.5v-2.25a.75.75 0 0 1 .75-.75zm18.5 0a.75.75 0 0 1 .75.75v2.25l-.007.144a1.5 1.5 0 0 1-1.349 1.35L18.5 20h-2.25a.75.75 0 1 1 0-1.5H18a.5.5 0 0 0 .492-.41L18.5 18v-1.75a.75.75 0 0 1 .75-.75zm-10.45 3c.11 0 .2.09.2.2v1.1a.2.2 0 0 1-.2.2H7.2a.2.2 0 0 1-.2-.2v-1.1c0-.11.09-.2.2-.2h1.6zm4 0c.11 0 .2.09.2.2v1.1a.2.2 0 0 1-.2.2h-1.6a.2.2 0 0 1-.2-.2v-1.1c0-.11.09-.2.2-.2h1.6zm.45-5.5a.75.75 0 1 1 0 1.5h-8.5a.75.75 0 1 1 0-1.5h8.5zM1.3 11c.11 0 .2.09.2.2v1.6a.2.2 0 0 1-.2.2H.2a.2.2 0 0 1-.2-.2v-1.6c0-.11.09-.2.2-.2h1.1zm18.5 0c.11 0 .2.09.2.2v1.6a.2.2 0 0 1-.2.2h-1.1a.2.2 0 0 1-.2-.2v-1.6c0-.11.09-.2.2-.2h1.1zm-4.55-2a.75.75 0 1 1 0 1.5H4.75a.75.75 0 1 1 0-1.5h10.5zM1.3 7c.11 0 .2.09.2.2v1.6a.2.2 0 0 1-.2.2H.2a.2.2 0 0 1-.2-.2V7.2c0-.11.09-.2.2-.2h1.1zm18.5 0c.11 0 .2.09.2.2v1.6a.2.2 0 0 1-.2.2h-1.1a.2.2 0 0 1-.2-.2V7.2c0-.11.09-.2.2-.2h1.1zm-4.55-2a.75.75 0 1 1 0 1.5h-2.5a.75.75 0 1 1 0-1.5h2.5zm-5 0a.75.75 0 1 1 0 1.5h-5.5a.75.75 0 0 1 0-1.5h5.5zm-6.5-5a.75.75 0 0 1 0 1.5H2a.5.5 0 0 0-.492.41L1.5 2v1.75a.75.75 0 0 1-1.5 0V1.5l.007-.144A1.5 1.5 0 0 1 1.356.006L1.5 0h2.25zM18.5 0l.144.007a1.5 1.5 0 0 1 1.35 1.349L20 1.5v2.25a.75.75 0 1 1-1.5 0V2l-.008-.09A.5.5 0 0 0 18 1.5h-1.75a.75.75 0 1 1 0-1.5h2.25zM8.8 0c.11 0 .2.09.2.2v1.1a.2.2 0 0 1-.2.2H7.2a.2.2 0 0 1-.2-.2V.2c0-.11.09-.2.2-.2h1.6zm4 0c.11 0 .2.09.2.2v1.1a.2.2 0 0 1-.2.2h-1.6a.2.2 0 0 1-.2-.2V.2c0-.11.09-.2.2-.2h1.6z"/></svg>',keystroke:"Ctrl+A",tooltip:!0}),o.bind("isOn","isEnabled").to(s,"value","isEnabled"),this.listenTo(o,"execute",(()=>{e.execute("selectAll"),e.editing.view.focus()})),o}))}}class u extends o.Z{static get requires(){return[l,h]}static get pluginName(){return"SelectAll"}}},"./src/typing.js":(e,t,s)=>{"use strict";s.r(t),s.d(t,{Delete:()=>f.Z,Input:()=>g,TextTransformation:()=>M,TextWatcher:()=>w,TwoStepCaretMovement:()=>y,Typing:()=>m,findAttributeRange:()=>z,getLastTextLine:()=>_,inlineHighlight:()=>F,isNonTypingKeystroke:()=>a.u});var o=s("./packages/ckeditor5-core/src/plugin.js"),i=s("./packages/ckeditor5-core/src/command.js"),r=s("./packages/ckeditor5-typing/src/utils/changebuffer.js");class n extends i.Z{constructor(e,t){super(e),this._buffer=new r.Z(e.model,t)}get buffer(){return this._buffer}destroy(){super.destroy(),this._buffer.destroy()}execute(e={}){const t=this.editor.model,s=t.document,o=e.text||"",i=o.length,r=e.range?t.createSelection(e.range):s.selection,n=e.resultRange;t.enqueueChange(this._buffer.batch,(e=>{this._buffer.lock(),t.deleteContent(r),o&&t.insertContent(e.createText(o,s.selection.getAttributes()),r),n?e.setSelection(n):r.is("documentSelection")||e.setSelection(r),this._buffer.unlock(),this._buffer.input(i)}))}}var a=s("./packages/ckeditor5-typing/src/utils/injectunsafekeystrokeshandling.js"),c=s("./packages/ckeditor5-utils/src/diff.ts"),l=s("./packages/ckeditor5-engine/src/view/domconverter.ts"),d=s("./packages/ckeditor5-typing/src/utils/utils.js");class h{constructor(e){this.editor=e,this.editing=this.editor.editing}handle(e,t){if((0,d.E9)(e))this._handleContainerChildrenMutations(e,t);else for(const s of e)this._handleTextMutation(s,t),this._handleTextNodeInsertion(s)}_handleContainerChildrenMutations(e,t){const s=function(e){const t=e.map((e=>e.node)).reduce(((e,t)=>e.getCommonAncestor(t,{includeSelf:!0})));if(!t)return;return t.getAncestors({includeSelf:!0,parentFirst:!0}).find((e=>e.is("containerElement")||e.is("rootElement")))}(e);if(!s)return;const o=this.editor.editing.view.domConverter.mapViewToDom(s),i=new l.Z(this.editor.editing.view.document),r=this.editor.data.toModel(i.domToView(o)).getChild(0),n=this.editor.editing.mapper.toModelElement(s);if(!n)return;const a=Array.from(r.getChildren()),d=Array.from(n.getChildren()),h=a[a.length-1],g=d[d.length-1],f=h&&h.is("element","softBreak"),m=g&&!g.is("element","softBreak");f&&m&&a.pop();const k=this.editor.model.schema;if(!u(a,k)||!u(d,k))return;const b=a.map((e=>e.is("$text")?e.data:"@")).join("").replace(/\u00A0/g," "),_=d.map((e=>e.is("$text")?e.data:"@")).join("").replace(/\u00A0/g," ");if(_===b)return;const w=(0,c.Z)(_,b),{firstChangeAt:v,insertions:y,deletions:Z}=p(w);let P=null;t&&(P=this.editing.mapper.toModelRange(t.getFirstRange()));const x=b.substr(v,y),T=this.editor.model.createRange(this.editor.model.createPositionAt(n,v),this.editor.model.createPositionAt(n,v+Z));this.editor.execute("input",{text:x,range:T,resultRange:P})}_handleTextMutation(e,t){if("text"!=e.type)return;const s=e.newText.replace(/\u00A0/g," "),o=e.oldText.replace(/\u00A0/g," ");if(o===s)return;const i=(0,c.Z)(o,s),{firstChangeAt:r,insertions:n,deletions:a}=p(i);let l=null;t&&(l=this.editing.mapper.toModelRange(t.getFirstRange()));const d=this.editing.view.createPositionAt(e.node,r),h=this.editing.mapper.toModelPosition(d),u=this.editor.model.createRange(h,h.getShiftedBy(a)),g=s.substr(r,n);this.editor.execute("input",{text:g,range:u,resultRange:l})}_handleTextNodeInsertion(e){if("children"!=e.type)return;const t=(0,d.xG)(e),s=this.editing.view.createPositionAt(e.node,t.index),o=this.editing.mapper.toModelPosition(s),i=t.values[0].data;this.editor.execute("input",{text:i.replace(/\u00A0/g," "),range:this.editor.model.createRange(o)})}}function u(e,t){return e.every((e=>t.isInline(e)))}function p(e){let t=null,s=null;for(let o=0;o<e.length;o++){"equal"!=e[o]&&(t=null===t?o:t,s=o)}let o=0,i=0;for(let r=t;r<=s;r++)"insert"!=e[r]&&o++,"delete"!=e[r]&&i++;return{insertions:i,deletions:o,firstChangeAt:t}}class g extends o.Z{static get pluginName(){return"Input"}init(){const e=this.editor,t=new n(e,e.config.get("typing.undoStep")||20);e.commands.add("input",t),(0,a.Z)(e),function(e){e.editing.view.document.on("mutations",((t,s,o)=>{new h(e).handle(s,o)}))}(e)}}var f=s("./packages/ckeditor5-typing/src/delete.js");class m extends o.Z{static get requires(){return[g,f.Z]}static get pluginName(){return"Typing"}}var k=s("./packages/ckeditor5-utils/src/mix.ts"),b=s("./packages/ckeditor5-utils/src/observablemixin.ts");function _(e,t){let s=e.start;return{text:Array.from(e.getItems()).reduce(((e,o)=>o.is("$text")||o.is("$textProxy")?e+o.data:(s=t.createPositionAfter(o),"")),""),range:t.createRange(s,e.end)}}class w{constructor(e,t){this.model=e,this.testCallback=t,this.hasMatch=!1,this.set("isEnabled",!0),this.on("change:isEnabled",(()=>{this.isEnabled?this._startListening():(this.stopListening(e.document.selection),this.stopListening(e.document))})),this._startListening()}_startListening(){const e=this.model.document;this.listenTo(e.selection,"change:range",((t,{directChange:s})=>{s&&(e.selection.isCollapsed?this._evaluateTextBeforeSelection("selection"):this.hasMatch&&(this.fire("unmatched"),this.hasMatch=!1))})),this.listenTo(e,"change:data",((e,t)=>{!t.isUndo&&t.isLocal&&this._evaluateTextBeforeSelection("data",{batch:t})}))}_evaluateTextBeforeSelection(e,t={}){const s=this.model,o=s.document.selection,i=s.createRange(s.createPositionAt(o.focus.parent,0),o.focus),{text:r,range:n}=_(i,s),a=this.testCallback(r);if(!a&&this.hasMatch&&this.fire("unmatched"),this.hasMatch=!!a,a){const s=Object.assign(t,{text:r,range:n});"object"==typeof a&&Object.assign(s,a),this.fire(`matched:${e}`,s)}}}(0,k.Z)(w,b.Z);var v=s("./packages/ckeditor5-utils/src/keyboard.ts");class y extends o.Z{static get pluginName(){return"TwoStepCaretMovement"}constructor(e){super(e),this.attributes=new Set,this._overrideUid=null}init(){const e=this.editor,t=e.model,s=e.editing.view,o=e.locale,i=t.document.selection;this.listenTo(s.document,"arrowKey",((e,t)=>{if(!i.isCollapsed)return;if(t.shiftKey||t.altKey||t.ctrlKey)return;const s=t.keyCode==v.Do.arrowright,r=t.keyCode==v.Do.arrowleft;if(!s&&!r)return;const n=o.contentLanguageDirection;let a=!1;a="ltr"===n&&s||"rtl"===n&&r?this._handleForwardMovement(t):this._handleBackwardMovement(t),!0===a&&e.stop()}),{context:"$text",priority:"highest"}),this._isNextGravityRestorationSkipped=!1,this.listenTo(i,"change:range",((e,t)=>{this._isNextGravityRestorationSkipped?this._isNextGravityRestorationSkipped=!1:this._isGravityOverridden&&(!t.directChange&&T(i.getFirstPosition(),this.attributes)||this._restoreGravity())}))}registerAttribute(e){this.attributes.add(e)}_handleForwardMovement(e){const t=this.attributes,s=this.editor.model.document.selection,o=s.getFirstPosition();return!this._isGravityOverridden&&((!o.isAtStart||!Z(s,t))&&(T(o,t)?(x(e),this._overrideGravity(),!0):void 0))}_handleBackwardMovement(e){const t=this.attributes,s=this.editor.model,o=s.document.selection,i=o.getFirstPosition();return this._isGravityOverridden?(x(e),this._restoreGravity(),P(s,t,i),!0):i.isAtStart?!!Z(o,t)&&(x(e),P(s,t,i),!0):function(e,t){return T(e.getShiftedBy(-1),t)}(i,t)?i.isAtEnd&&!Z(o,t)&&T(i,t)?(x(e),P(s,t,i),!0):(this._isNextGravityRestorationSkipped=!0,this._overrideGravity(),!1):void 0}get _isGravityOverridden(){return!!this._overrideUid}_overrideGravity(){this._overrideUid=this.editor.model.change((e=>e.overrideSelectionGravity()))}_restoreGravity(){this.editor.model.change((e=>{e.restoreSelectionGravity(this._overrideUid),this._overrideUid=null}))}}function Z(e,t){for(const s of t)if(e.hasAttribute(s))return!0;return!1}function P(e,t,s){const o=s.nodeBefore;e.change((e=>{o?e.setSelectionAttribute(o.getAttributes()):e.removeSelectionAttribute(t)}))}function x(e){e.preventDefault()}function T(e,t){const{nodeBefore:s,nodeAfter:o}=e;for(const e of t){const t=s?s.getAttribute(e):void 0;if((o?o.getAttribute(e):void 0)!==t)return!0}return!1}var A=s("./node_modules/lodash-es/toString.js"),C=/[\\^$.*+?()[\]{}|]/g,E=RegExp(C.source);const S=function(e){return(e=(0,A.Z)(e))&&E.test(e)?e.replace(C,"\\$&"):e},j={copyright:{from:"(c)",to:"©"},registeredTrademark:{from:"(r)",to:"®"},trademark:{from:"(tm)",to:"™"},oneHalf:{from:/(^|[^/a-z0-9])(1\/2)([^/a-z0-9])$/i,to:[null,"½",null]},oneThird:{from:/(^|[^/a-z0-9])(1\/3)([^/a-z0-9])$/i,to:[null,"⅓",null]},twoThirds:{from:/(^|[^/a-z0-9])(2\/3)([^/a-z0-9])$/i,to:[null,"⅔",null]},oneForth:{from:/(^|[^/a-z0-9])(1\/4)([^/a-z0-9])$/i,to:[null,"¼",null]},threeQuarters:{from:/(^|[^/a-z0-9])(3\/4)([^/a-z0-9])$/i,to:[null,"¾",null]},lessThanOrEqual:{from:"<=",to:"≤"},greaterThanOrEqual:{from:">=",to:"≥"},notEqual:{from:"!=",to:"≠"},arrowLeft:{from:"<-",to:"←"},arrowRight:{from:"->",to:"→"},horizontalEllipsis:{from:"...",to:"…"},enDash:{from:/(^| )(--)( )$/,to:[null,"–",null]},emDash:{from:/(^| )(---)( )$/,to:[null,"—",null]},quotesPrimary:{from:D('"'),to:[null,"“",null,"”"]},quotesSecondary:{from:D("'"),to:[null,"‘",null,"’"]},quotesPrimaryEnGb:{from:D("'"),to:[null,"‘",null,"’"]},quotesSecondaryEnGb:{from:D('"'),to:[null,"“",null,"”"]},quotesPrimaryPl:{from:D('"'),to:[null,"„",null,"”"]},quotesSecondaryPl:{from:D("'"),to:[null,"‚",null,"’"]}},O={symbols:["copyright","registeredTrademark","trademark"],mathematical:["oneHalf","oneThird","twoThirds","oneForth","threeQuarters","lessThanOrEqual","greaterThanOrEqual","notEqual","arrowLeft","arrowRight"],typography:["horizontalEllipsis","enDash","emDash"],quotes:["quotesPrimary","quotesSecondary"]},R=["symbols","mathematical","typography","quotes"];class M extends o.Z{static get requires(){return["Delete","Input"]}static get pluginName(){return"TextTransformation"}constructor(e){super(e),e.config.define("typing",{transformations:{include:R}})}init(){const e=this.editor.model.document.selection;e.on("change:range",(()=>{this.isEnabled=!e.anchor.parent.is("element","codeBlock")})),this._enableTransformationWatchers()}_enableTransformationWatchers(){const e=this.editor,t=e.model,s=e.plugins.get("Delete"),o=function(e){const t=e.extra||[],s=e.remove||[],o=e=>!s.includes(e);return function(e){const t=new Set;for(const s of e)if(O[s])for(const e of O[s])t.add(e);else t.add(s);return Array.from(t)}(e.include.concat(t).filter(o)).filter(o).map((e=>j[e]||e)).filter((e=>"object"==typeof e)).map((e=>({from:N(e.from),to:V(e.to)})))}(e.config.get("typing.transformations")),i=new w(e.model,(e=>{for(const t of o){if(t.from.test(e))return{normalizedTransformation:t}}}));i.on("matched:data",((e,o)=>{if(!o.batch.isTyping)return;const{from:i,to:r}=o.normalizedTransformation,n=i.exec(o.text),a=r(n.slice(1)),c=o.range;let l=n.index;t.enqueueChange((e=>{for(let s=1;s<n.length;s++){const o=n[s],i=a[s-1];if(null==i){l+=o.length;continue}const r=c.start.getShiftedBy(l),d=t.createRange(r,r.getShiftedBy(o.length)),h=I(r);t.insertContent(e.createText(i,h),d),l+=i.length}t.enqueueChange((()=>{s.requestUndoOnBackspace()}))}))})),i.bind("isEnabled").to(this)}}function N(e){return"string"==typeof e?new RegExp(`(${S(e)})$`):e}function V(e){return"string"==typeof e?()=>[e]:e instanceof Array?()=>e:e}function I(e){return(e.textNode?e.textNode:e.nodeAfter).getAttributes()}function D(e){return new RegExp(`(^|\\s)(${e})([^${e}]*)(${e})$`)}function z(e,t,s,o){return o.createRange(B(e,t,s,!0,o),B(e,t,s,!1,o))}function B(e,t,s,o,i){let r=e.textNode||(o?e.nodeBefore:e.nodeAfter),n=null;for(;r&&r.getAttribute(t)==s;)n=r,r=o?r.previousSibling:r.nextSibling;return n?i.createPositionAt(n,o?"before":"after"):e}function F(e,t,s,o){const i=e.editing.view,r=new Set;i.document.registerPostFixer((i=>{const n=e.model.document.selection;let a=!1;if(n.hasAttribute(t)){const c=z(n.getFirstPosition(),t,n.getAttribute(t),e.model),l=e.editing.mapper.toViewRange(c);for(const e of l.getItems())e.is("element",s)&&!e.hasClass(o)&&(i.addClass(o,e),r.add(e),a=!0)}return a})),e.conversion.for("editingDowncast").add((e=>{function t(){i.change((e=>{for(const t of r.values())e.removeClass(o,t),r.delete(t)}))}e.on("insert",t,{priority:"highest"}),e.on("remove",t,{priority:"highest"}),e.on("attribute",t,{priority:"highest"}),e.on("selection",t,{priority:"highest"})}))}},"./src/ui.js":(e,t,s)=>{"use strict";s.r(t),s.d(t,{BalloonPanelView:()=>ue.Z,BalloonToolbar:()=>Se,BlockToolbar:()=>De,BodyCollection:()=>d,BoxedEditorUIView:()=>D,ButtonView:()=>h.Z,ColorGridView:()=>P,ColorTileView:()=>k,ContextualBalloon:()=>pe.Z,DropdownButtonView:()=>x.Z,EditorUIView:()=>R,FocusCycler:()=>$.Z,FormHeaderView:()=>W,IconView:()=>q.Z,IframeView:()=>Q,InlineEditableUIView:()=>B,InputNumberView:()=>J,InputTextView:()=>G,InputView:()=>K,LabelView:()=>I,LabeledFieldView:()=>ee,ListItemView:()=>ie.Z,ListView:()=>re.Z,Model:()=>he,Notification:()=>ae,SplitButtonView:()=>E,StickyPanelView:()=>_e,SwitchButtonView:()=>u.Z,Template:()=>a.ZP,ToolbarSeparatorView:()=>ye.Z,ToolbarView:()=>ve.Z,TooltipManager:()=>we.Z,View:()=>m.Z,ViewCollection:()=>c.Z,addKeyboardHandlingForGrid:()=>n,addListToDropdown:()=>S.Pm,addToolbarToDropdown:()=>S.up,clickOutsideHandler:()=>o.Z,createDropdown:()=>S.t9,createLabeledDropdown:()=>oe,createLabeledInputNumber:()=>se,createLabeledInputText:()=>te,focusChildOnDropdownOpen:()=>S.Mh,getLocalizedColorOptions:()=>p,injectCssTransitionDisabler:()=>i,normalizeColorOptions:()=>g,normalizeSingleColorDefinition:()=>f,normalizeToolbarConfig:()=>Ze.Z,submitHandler:()=>r});var o=s("./packages/ckeditor5-ui/src/bindings/clickoutsidehandler.js");function i(e){e.set("_isCssTransitionsDisabled",!1),e.disableCssTransitions=()=>{e._isCssTransitionsDisabled=!0},e.enableCssTransitions=()=>{e._isCssTransitionsDisabled=!1},e.extendTemplate({attributes:{class:[e.bindTemplate.if("_isCssTransitionsDisabled","ck-transitions-disabled")]}})}function r({view:e}){e.listenTo(e.element,"submit",((t,s)=>{s.preventDefault(),e.fire("submit")}),{useCapture:!0})}function n({keystrokeHandler:e,focusTracker:t,gridItems:s,numberOfColumns:o}){const i="number"==typeof o?()=>o:o;function r(e){return o=>{const i=s.find((e=>e.element===t.focusedElement)),r=s.getIndex(i),n=e(r,s);s.get(n).focus(),o.stopPropagation(),o.preventDefault()}}e.set("arrowright",r(((e,t)=>e===t.length-1?0:e+1))),e.set("arrowleft",r(((e,t)=>0===e?t.length-1:e-1))),e.set("arrowup",r(((e,t)=>{let s=e-i();return s<0&&(s=e+i()*Math.floor(t.length/i()),s>t.length-1&&(s-=i())),s}))),e.set("arrowdown",r(((e,t)=>{let s=e+i();return s>t.length-1&&(s=e%i()),s})))}var a=s("./packages/ckeditor5-ui/src/template.js"),c=s("./packages/ckeditor5-ui/src/viewcollection.js"),l=s("./packages/ckeditor5-utils/src/dom/createelement.ts");class d extends c.Z{constructor(e,t=[]){super(t),this.locale=e}attachToDom(){this._bodyCollectionContainer=new a.ZP({tag:"div",attributes:{class:["ck","ck-reset_all","ck-body","ck-rounded-corners"],dir:this.locale.uiLanguageDirection},children:this}).render();let e=document.querySelector(".ck-body-wrapper");e||(e=(0,l.Z)(document,"div",{class:"ck-body-wrapper"}),document.body.appendChild(e)),e.appendChild(this._bodyCollectionContainer)}detachFromDom(){super.destroy(),this._bodyCollectionContainer&&this._bodyCollectionContainer.remove();const e=document.querySelector(".ck-body-wrapper");e&&0==e.childElementCount&&e.remove()}}var h=s("./packages/ckeditor5-ui/src/button/buttonview.js"),u=s("./packages/ckeditor5-ui/src/button/switchbuttonview.js");function p(e,t){const s=e.t,o={Black:s("Black"),"Dim grey":s("Dim grey"),Grey:s("Grey"),"Light grey":s("Light grey"),White:s("White"),Red:s("Red"),Orange:s("Orange"),Yellow:s("Yellow"),"Light green":s("Light green"),Green:s("Green"),Aquamarine:s("Aquamarine"),Turquoise:s("Turquoise"),"Light blue":s("Light blue"),Blue:s("Blue"),Purple:s("Purple")};return t.map((e=>{const t=o[e.label];return t&&t!=e.label&&(e.label=t),e}))}function g(e){return e.map(f).filter((e=>!!e))}function f(e){return"string"==typeof e?{model:e,label:e,hasBorder:!1,view:{name:"span",styles:{color:e}}}:{model:e.color,label:e.label||e.color,hasBorder:void 0!==e.hasBorder&&e.hasBorder,view:{name:"span",styles:{color:`${e.color}`}}}}var m=s("./packages/ckeditor5-ui/src/view.js");class k extends h.Z{constructor(e){super(e);const t=this.bindTemplate;this.set("color"),this.set("hasBorder"),this.icon='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path class="ck-icon__fill" d="M16.935 5.328a2 2 0 0 1 0 2.829l-7.778 7.778a2 2 0 0 1-2.829 0L3.5 13.107a1.999 1.999 0 1 1 2.828-2.829l.707.707a1 1 0 0 0 1.414 0l5.658-5.657a2 2 0 0 1 2.828 0z"/><path d="M14.814 6.035 8.448 12.4a1 1 0 0 1-1.414 0l-1.413-1.415A1 1 0 1 0 4.207 12.4l2.829 2.829a1 1 0 0 0 1.414 0l7.778-7.778a1 1 0 1 0-1.414-1.415z"/></svg>',this.extendTemplate({attributes:{style:{backgroundColor:t.to("color")},class:["ck","ck-color-grid__tile",t.if("hasBorder","ck-color-table__color-tile_bordered")]}})}render(){super.render(),this.iconView.fillColor="hsl(0, 0%, 100%)"}}var b=s("./packages/ckeditor5-utils/src/focustracker.ts"),_=s("./packages/ckeditor5-utils/src/keystrokehandler.ts"),w=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),v=s.n(w),y=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/colorgrid/colorgrid.css"),Z={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};v()(y.Z,Z);y.Z.locals;class P extends m.Z{constructor(e,t){super(e);const s=t&&t.colorDefinitions||[],o={};this.columns=t&&t.columns?t.columns:5,o.gridTemplateColumns=`repeat( ${this.columns}, 1fr)`,this.set("selectedColor"),this.items=this.createCollection(),this.focusTracker=new b.Z,this.keystrokes=new _.Z,this.items.on("add",((e,t)=>{t.isOn=t.color===this.selectedColor})),s.forEach((e=>{const t=new k;t.set({color:e.color,label:e.label,tooltip:!0,hasBorder:e.options.hasBorder}),t.on("execute",(()=>{this.fire("execute",{value:e.color,hasBorder:e.options.hasBorder,label:e.label})})),this.items.add(t)})),this.setTemplate({tag:"div",children:this.items,attributes:{class:["ck","ck-color-grid"],style:o}}),this.on("change:selectedColor",((e,t,s)=>{for(const e of this.items)e.isOn=e.color===s}))}focus(){this.items.length&&this.items.first.focus()}focusLast(){this.items.length&&this.items.last.focus()}render(){super.render();for(const e of this.items)this.focusTracker.add(e.element);this.items.on("add",((e,t)=>{this.focusTracker.add(t.element)})),this.items.on("remove",((e,t)=>{this.focusTracker.remove(t.element)})),this.keystrokes.listenTo(this.element),n({keystrokeHandler:this.keystrokes,focusTracker:this.focusTracker,gridItems:this.items,numberOfColumns:this.columns})}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}}var x=s("./packages/ckeditor5-ui/src/dropdown/button/dropdownbuttonview.js"),T=s("./packages/ckeditor5-ui/theme/icons/dropdown-arrow.svg"),A=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/dropdown/splitbutton.css"),C={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};v()(A.Z,C);A.Z.locals;class E extends m.Z{constructor(e){super(e);const t=this.bindTemplate;this.set("class"),this.set("icon"),this.set("isEnabled",!0),this.set("isOn",!1),this.set("isToggleable",!1),this.set("isVisible",!0),this.set("keystroke"),this.set("label"),this.set("tabindex",-1),this.set("tooltip"),this.set("tooltipPosition","s"),this.set("type","button"),this.set("withText",!1),this.children=this.createCollection(),this.actionView=this._createActionView(),this.arrowView=this._createArrowView(),this.keystrokes=new _.Z,this.focusTracker=new b.Z,this.setTemplate({tag:"div",attributes:{class:["ck","ck-splitbutton",t.to("class"),t.if("isVisible","ck-hidden",(e=>!e)),this.arrowView.bindTemplate.if("isOn","ck-splitbutton_open")]},children:this.children})}render(){super.render(),this.children.add(this.actionView),this.children.add(this.arrowView),this.focusTracker.add(this.actionView.element),this.focusTracker.add(this.arrowView.element),this.keystrokes.listenTo(this.element),this.keystrokes.set("arrowright",((e,t)=>{this.focusTracker.focusedElement===this.actionView.element&&(this.arrowView.focus(),t())})),this.keystrokes.set("arrowleft",((e,t)=>{this.focusTracker.focusedElement===this.arrowView.element&&(this.actionView.focus(),t())}))}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this.actionView.focus()}_createActionView(){const e=new h.Z;return e.bind("icon","isEnabled","isOn","isToggleable","keystroke","label","tabindex","tooltip","tooltipPosition","type","withText").to(this),e.extendTemplate({attributes:{class:"ck-splitbutton__action"}}),e.delegate("execute").to(this),e}_createArrowView(){const e=new h.Z,t=e.bindTemplate;return e.icon=T.Z,e.extendTemplate({attributes:{class:["ck-splitbutton__arrow"],"data-cke-tooltip-disabled":t.to("isOn"),"aria-haspopup":!0,"aria-expanded":t.to("isOn",(e=>String(e)))}}),e.bind("isEnabled").to(this),e.bind("label").to(this),e.bind("tooltip").to(this),e.delegate("execute").to(this,"open"),e}}var S=s("./packages/ckeditor5-ui/src/dropdown/utils.js"),j=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/editorui/editorui.css"),O={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};v()(j.Z,O);j.Z.locals;class R extends m.Z{constructor(e){super(e),this.body=new d(e)}render(){super.render(),this.body.attachToDom()}destroy(){return this.body.detachFromDom(),super.destroy()}}var M=s("./packages/ckeditor5-utils/src/uid.ts"),N=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/label/label.css"),V={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};v()(N.Z,V);N.Z.locals;class I extends m.Z{constructor(e){super(e),this.set("text"),this.set("for"),this.id=`ck-editor__label_${(0,M.Z)()}`;const t=this.bindTemplate;this.setTemplate({tag:"label",attributes:{class:["ck","ck-label"],id:this.id,for:t.to("for")},children:[{text:t.to("text")}]})}}class D extends R{constructor(e){super(e),this.top=this.createCollection(),this.main=this.createCollection(),this._voiceLabelView=this._createVoiceLabel(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-reset","ck-editor","ck-rounded-corners"],role:"application",dir:e.uiLanguageDirection,lang:e.uiLanguage,"aria-labelledby":this._voiceLabelView.id},children:[this._voiceLabelView,{tag:"div",attributes:{class:["ck","ck-editor__top","ck-reset_all"],role:"presentation"},children:this.top},{tag:"div",attributes:{class:["ck","ck-editor__main"],role:"presentation"},children:this.main}]})}_createVoiceLabel(){const e=this.t,t=new I;return t.text=e("Rich Text Editor"),t.extendTemplate({attributes:{class:"ck-voice-label"}}),t}}class z extends m.Z{constructor(e,t,s){super(e),this.setTemplate({tag:"div",attributes:{class:["ck","ck-content","ck-editor__editable","ck-rounded-corners"],lang:e.contentLanguage,dir:e.contentLanguageDirection}}),this.name=null,this.set("isFocused",!1),this._editableElement=s,this._hasExternalElement=!!this._editableElement,this._editingView=t}render(){super.render(),this._hasExternalElement?this.template.apply(this.element=this._editableElement):this._editableElement=this.element,this.on("change:isFocused",(()=>this._updateIsFocusedClasses())),this._updateIsFocusedClasses()}destroy(){this._hasExternalElement&&this.template.revert(this._editableElement),super.destroy()}_updateIsFocusedClasses(){const e=this._editingView;function t(t){e.change((s=>{const o=e.document.getRoot(t.name);s.addClass(t.isFocused?"ck-focused":"ck-blurred",o),s.removeClass(t.isFocused?"ck-blurred":"ck-focused",o)}))}e.isRenderingInProgress?function s(o){e.once("change:isRenderingInProgress",((e,i,r)=>{r?s(o):t(o)}))}(this):t(this)}}class B extends z{constructor(e,t,s,o={}){super(e,t,s);const i=e.t;this.extendTemplate({attributes:{role:"textbox",class:"ck-editor__editable_inline"}}),this._generateLabel=o.label||(()=>i("Editor editing area: %0",this.name))}render(){super.render();const e=this._editingView;e.change((t=>{const s=e.document.getRoot(this.name);t.setAttribute("aria-label",this._generateLabel(this),s)}))}}var F=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/formheader/formheader.css"),L={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};v()(F.Z,L);F.Z.locals;class W extends m.Z{constructor(e,t={}){super(e);const s=this.bindTemplate;this.set("label",t.label||""),this.set("class",t.class||null),this.children=this.createCollection(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-form__header",s.to("class")]},children:this.children});const o=new m.Z(e);o.setTemplate({tag:"span",attributes:{class:["ck","ck-form__header__label"]},children:[{text:s.to("label")}]}),this.children.add(o)}}var $=s("./packages/ckeditor5-ui/src/focuscycler.js"),q=s("./packages/ckeditor5-ui/src/icon/iconview.js"),H=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/input/input.css"),U={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};v()(H.Z,U);H.Z.locals;class K extends m.Z{constructor(e){super(e),this.set("value"),this.set("id"),this.set("placeholder"),this.set("isReadOnly",!1),this.set("hasError",!1),this.set("ariaDescribedById"),this.focusTracker=new b.Z,this.bind("isFocused").to(this.focusTracker),this.set("isEmpty",!0),this.set("inputMode","text");const t=this.bindTemplate;this.setTemplate({tag:"input",attributes:{class:["ck","ck-input",t.if("isFocused","ck-input_focused"),t.if("isEmpty","ck-input-text_empty"),t.if("hasError","ck-error")],id:t.to("id"),placeholder:t.to("placeholder"),readonly:t.to("isReadOnly"),inputmode:t.to("inputMode"),"aria-invalid":t.if("hasError",!0),"aria-describedby":t.to("ariaDescribedById")},on:{input:t.to(((...e)=>{this.fire("input",...e),this._updateIsEmpty()})),change:t.to(this._updateIsEmpty.bind(this))}})}render(){super.render(),this.focusTracker.add(this.element),this._setDomElementValue(this.value),this._updateIsEmpty(),this.on("change:value",((e,t,s)=>{this._setDomElementValue(s),this._updateIsEmpty()}))}destroy(){super.destroy(),this.focusTracker.destroy()}select(){this.element.select()}focus(){this.element.focus()}_updateIsEmpty(){this.isEmpty=!this.element.value}_setDomElementValue(e){this.element.value=e||0===e?e:""}}class G extends K{constructor(e){super(e),this.extendTemplate({attributes:{type:"text",class:["ck-input-text"]}})}}class J extends K{constructor(e,{min:t,max:s,step:o}={}){super(e);const i=this.bindTemplate;this.set("min",t),this.set("max",s),this.set("step",o),this.extendTemplate({attributes:{type:"number",class:["ck-input-number"],min:i.to("min"),max:i.to("max"),step:i.to("step")}})}}class Q extends m.Z{constructor(e){super(e);const t=this.bindTemplate;this.setTemplate({tag:"iframe",attributes:{class:["ck","ck-reset_all"],sandbox:"allow-same-origin allow-scripts"},on:{load:t.to("loaded")}})}render(){return new Promise((e=>{this.on("loaded",e),super.render()}))}}var X=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/labeledfield/labeledfieldview.css"),Y={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};v()(X.Z,Y);X.Z.locals;class ee extends m.Z{constructor(e,t){super(e);const s=`ck-labeled-field-view-${(0,M.Z)()}`,o=`ck-labeled-field-view-status-${(0,M.Z)()}`;this.fieldView=t(this,s,o),this.set("label"),this.set("isEnabled",!0),this.set("isEmpty",!0),this.set("isFocused",!1),this.set("errorText",null),this.set("infoText",null),this.set("class"),this.set("placeholder"),this.labelView=this._createLabelView(s),this.statusView=this._createStatusView(o),this.bind("_statusText").to(this,"errorText",this,"infoText",((e,t)=>e||t));const i=this.bindTemplate;this.setTemplate({tag:"div",attributes:{class:["ck","ck-labeled-field-view",i.to("class"),i.if("isEnabled","ck-disabled",(e=>!e)),i.if("isEmpty","ck-labeled-field-view_empty"),i.if("isFocused","ck-labeled-field-view_focused"),i.if("placeholder","ck-labeled-field-view_placeholder"),i.if("errorText","ck-error")]},children:[{tag:"div",attributes:{class:["ck","ck-labeled-field-view__input-wrapper"]},children:[this.fieldView,this.labelView]},this.statusView]})}_createLabelView(e){const t=new I(this.locale);return t.for=e,t.bind("text").to(this,"label"),t}_createStatusView(e){const t=new m.Z(this.locale),s=this.bindTemplate;return t.setTemplate({tag:"div",attributes:{class:["ck","ck-labeled-field-view__status",s.if("errorText","ck-labeled-field-view__status_error"),s.if("_statusText","ck-hidden",(e=>!e))],id:e,role:s.if("errorText","alert")},children:[{text:s.to("_statusText")}]}),t}focus(){this.fieldView.focus()}}function te(e,t,s){const o=new G(e.locale);return o.set({id:t,ariaDescribedById:s}),o.bind("isReadOnly").to(e,"isEnabled",(e=>!e)),o.bind("hasError").to(e,"errorText",(e=>!!e)),o.on("input",(()=>{e.errorText=null})),e.bind("isEmpty","isFocused","placeholder").to(o),o}function se(e,t,s){const o=new J(e.locale);return o.set({id:t,ariaDescribedById:s,inputMode:"numeric"}),o.bind("isReadOnly").to(e,"isEnabled",(e=>!e)),o.bind("hasError").to(e,"errorText",(e=>!!e)),o.on("input",(()=>{e.errorText=null})),e.bind("isEmpty","isFocused","placeholder").to(o),o}function oe(e,t,s){const o=(0,S.t9)(e.locale);return o.set({id:t,ariaDescribedById:s}),o.bind("isEnabled").to(e),o}var ie=s("./packages/ckeditor5-ui/src/list/listitemview.js"),re=s("./packages/ckeditor5-ui/src/list/listview.js"),ne=s("./packages/ckeditor5-core/src/contextplugin.js");class ae extends ne.Z{static get pluginName(){return"Notification"}init(){this.on("show:warning",((e,t)=>{window.alert(t.message)}),{priority:"lowest"})}showSuccess(e,t={}){this._showNotification({message:e,type:"success",namespace:t.namespace,title:t.title})}showInfo(e,t={}){this._showNotification({message:e,type:"info",namespace:t.namespace,title:t.title})}showWarning(e,t={}){this._showNotification({message:e,type:"warning",namespace:t.namespace,title:t.title})}_showNotification(e){const t=`show:${e.type}`+(e.namespace?`:${e.namespace}`:"");this.fire(t,{message:e.message,type:e.type,title:e.title||""})}}var ce=s("./packages/ckeditor5-utils/src/mix.ts"),le=s("./packages/ckeditor5-utils/src/observablemixin.ts"),de=s("./node_modules/lodash-es/assignIn.js");class he{constructor(e,t){t&&(0,de.Z)(this,t),e&&this.set(e)}}(0,ce.Z)(he,le.Z);var ue=s("./packages/ckeditor5-ui/src/panel/balloon/balloonpanelview.js"),pe=s("./packages/ckeditor5-ui/src/panel/balloon/contextualballoon.js"),ge=s("./packages/ckeditor5-utils/src/dom/global.ts"),fe=s("./packages/ckeditor5-utils/src/dom/tounit.ts"),me=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/panel/stickypanel.css"),ke={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};v()(me.Z,ke);me.Z.locals;const be=(0,fe.Z)("px");class _e extends m.Z{constructor(e){super(e);const t=this.bindTemplate;this.set("isActive",!1),this.set("isSticky",!1),this.set("limiterElement",null),this.set("limiterBottomOffset",50),this.set("viewportTopOffset",0),this.set("_marginLeft",null),this.set("_isStickyToTheLimiter",!1),this.set("_hasViewportTopOffset",!1),this.content=this.createCollection(),this._contentPanelPlaceholder=new a.ZP({tag:"div",attributes:{class:["ck","ck-sticky-panel__placeholder"],style:{display:t.to("isSticky",(e=>e?"block":"none")),height:t.to("isSticky",(e=>e?be(this._panelRect.height):null))}}}).render(),this._contentPanel=new a.ZP({tag:"div",attributes:{class:["ck","ck-sticky-panel__content",t.if("isSticky","ck-sticky-panel__content_sticky"),t.if("_isStickyToTheLimiter","ck-sticky-panel__content_sticky_bottom-limit")],style:{width:t.to("isSticky",(e=>e?be(this._contentPanelPlaceholder.getBoundingClientRect().width):null)),top:t.to("_hasViewportTopOffset",(e=>e?be(this.viewportTopOffset):null)),bottom:t.to("_isStickyToTheLimiter",(e=>e?be(this.limiterBottomOffset):null)),marginLeft:t.to("_marginLeft")}},children:this.content}).render(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-sticky-panel"]},children:[this._contentPanelPlaceholder,this._contentPanel]})}render(){super.render(),this._checkIfShouldBeSticky(),this.listenTo(ge.Z.window,"scroll",(()=>{this._checkIfShouldBeSticky()})),this.listenTo(this,"change:isActive",(()=>{this._checkIfShouldBeSticky()}))}_checkIfShouldBeSticky(){const e=this._panelRect=this._contentPanel.getBoundingClientRect();let t;this.limiterElement?(t=this._limiterRect=this.limiterElement.getBoundingClientRect(),this.isSticky=this.isActive&&t.top<this.viewportTopOffset&&this._panelRect.height+this.limiterBottomOffset<t.height):this.isSticky=!1,this.isSticky?(this._isStickyToTheLimiter=t.bottom<e.height+this.limiterBottomOffset+this.viewportTopOffset,this._hasViewportTopOffset=!this._isStickyToTheLimiter&&!!this.viewportTopOffset,this._marginLeft=this._isStickyToTheLimiter?null:be(-ge.Z.window.scrollX)):(this._isStickyToTheLimiter=!1,this._hasViewportTopOffset=!1,this._marginLeft=null)}}var we=s("./packages/ckeditor5-ui/src/tooltipmanager.js"),ve=s("./packages/ckeditor5-ui/src/toolbar/toolbarview.js"),ye=s("./packages/ckeditor5-ui/src/toolbar/toolbarseparatorview.js"),Ze=s("./packages/ckeditor5-ui/src/toolbar/normalizetoolbarconfig.js"),Pe=s("./packages/ckeditor5-core/src/plugin.js"),xe=s("./packages/ckeditor5-utils/src/dom/rect.ts"),Te=s("./node_modules/lodash-es/debounce.js"),Ae=s("./packages/ckeditor5-utils/src/dom/resizeobserver.ts"),Ce=s("./packages/ckeditor5-utils/src/index.ts");const Ee=(0,fe.Z)("px");class Se extends Pe.Z{static get pluginName(){return"BalloonToolbar"}static get requires(){return[pe.Z]}constructor(e){super(e),this._balloonConfig=(0,Ze.Z)(e.config.get("balloonToolbar")),this.toolbarView=this._createToolbarView(),this.focusTracker=new b.Z,e.ui.once("ready",(()=>{this.focusTracker.add(e.ui.getEditableElement()),this.focusTracker.add(this.toolbarView.element)})),e.ui.addToolbar(this.toolbarView,{beforeFocus:()=>this.show(!0),afterBlur:()=>this.hide(),isContextual:!0}),this._resizeObserver=null,this._balloon=e.plugins.get(pe.Z),this._fireSelectionChangeDebounced=(0,Te.Z)((()=>this.fire("_selectionChangeDebounced")),200),this.decorate("show")}init(){const e=this.editor,t=e.model.document.selection;this.listenTo(this.focusTracker,"change:isFocused",((e,t,s)=>{const o=this._balloon.visibleView===this.toolbarView;!s&&o?this.hide():s&&this.show()})),this.listenTo(t,"change:range",((e,s)=>{(s.directChange||t.isCollapsed)&&this.hide(),this._fireSelectionChangeDebounced()})),this.listenTo(this,"_selectionChangeDebounced",(()=>{this.editor.editing.view.document.isFocused&&this.show()})),this._balloonConfig.shouldNotGroupWhenFull||this.listenTo(e,"ready",(()=>{const t=e.ui.view.editable.element;this._resizeObserver=new Ae.Z(t,(()=>{this.toolbarView.maxWidth=Ee(.9*new xe.Z(t).width)}))})),this.listenTo(this.toolbarView,"groupedItemsUpdate",(()=>{this._updatePosition()}))}afterInit(){const e=this.editor.ui.componentFactory;this.toolbarView.fillFromConfig(this._balloonConfig,e)}_createToolbarView(){const e=this.editor.locale.t,t=!this._balloonConfig.shouldNotGroupWhenFull,s=new ve.Z(this.editor.locale,{shouldGroupWhenFull:t,isFloating:!0});return s.ariaLabel=e("Editor contextual toolbar"),s.render(),s}show(e=!1){const t=this.editor,s=t.model.document.selection,o=t.model.schema;this._balloon.hasView(this.toolbarView)||s.isCollapsed&&!e||function(e,t){if(1===e.rangeCount)return!1;return[...e.getRanges()].every((e=>{const s=e.getContainedElement();return s&&t.isSelectable(s)}))}(s,o)||Array.from(this.toolbarView.items).every((e=>void 0!==e.isEnabled&&!e.isEnabled))||(this.listenTo(this.editor.ui,"update",(()=>{this._updatePosition()})),this._balloon.add({view:this.toolbarView,position:this._getBalloonPositionData(),balloonClassName:"ck-toolbar-container"}))}hide(){this._balloon.hasView(this.toolbarView)&&(this.stopListening(this.editor.ui,"update"),this._balloon.remove(this.toolbarView))}_getBalloonPositionData(){const e=this.editor.editing.view,t=e.document,s=t.selection,o=t.selection.isBackward;return{target:()=>{const t=o?s.getFirstRange():s.getLastRange(),i=xe.Z.getDomRangeRects(e.domConverter.viewRangeToDom(t));return o?i[0]:(i.length>1&&0===i[i.length-1].width&&i.pop(),i[i.length-1])},positions:this._getBalloonPositions(o)}}_updatePosition(){this._balloon.updatePosition(this._getBalloonPositionData())}destroy(){super.destroy(),this.stopListening(),this._fireSelectionChangeDebounced.cancel(),this.toolbarView.destroy(),this.focusTracker.destroy(),this._resizeObserver&&this._resizeObserver.destroy()}_getBalloonPositions(e){const t=Ce.OB.isSafari&&Ce.OB.isiOS?(0,ue.M)({heightOffset:Math.max(ue.Z.arrowHeightOffset,Math.round(20/Ce.CO.window.visualViewport.scale))}):ue.Z.defaultPositions;return e?[t.northWestArrowSouth,t.northWestArrowSouthWest,t.northWestArrowSouthEast,t.northWestArrowSouthMiddleEast,t.northWestArrowSouthMiddleWest,t.southWestArrowNorth,t.southWestArrowNorthWest,t.southWestArrowNorthEast,t.southWestArrowNorthMiddleWest,t.southWestArrowNorthMiddleEast]:[t.southEastArrowNorth,t.southEastArrowNorthEast,t.southEastArrowNorthWest,t.southEastArrowNorthMiddleEast,t.southEastArrowNorthMiddleWest,t.northEastArrowSouth,t.northEastArrowSouthEast,t.northEastArrowSouthWest,t.northEastArrowSouthMiddleEast,t.northEastArrowSouthMiddleWest]}}var je=s("./packages/ckeditor5-core/theme/icons/pilcrow.svg"),Oe=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/toolbar/blocktoolbar.css"),Re={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};v()(Oe.Z,Re);Oe.Z.locals;const Me=(0,fe.Z)("px");class Ne extends h.Z{constructor(e){super(e);const t=this.bindTemplate;this.isVisible=!1,this.isToggleable=!0,this.set("top",0),this.set("left",0),this.extendTemplate({attributes:{class:"ck-block-toolbar-button",style:{top:t.to("top",(e=>Me(e))),left:t.to("left",(e=>Me(e)))}}})}}var Ve=s("./packages/ckeditor5-utils/src/dom/position.ts");const Ie=(0,fe.Z)("px");class De extends Pe.Z{static get pluginName(){return"BlockToolbar"}constructor(e){super(e),this._blockToolbarConfig=(0,Ze.Z)(this.editor.config.get("blockToolbar")),this.toolbarView=this._createToolbarView(),this.panelView=this._createPanelView(),this.buttonView=this._createButtonView(),this._resizeObserver=null,(0,o.Z)({emitter:this.panelView,contextElements:[this.panelView.element,this.buttonView.element],activator:()=>this.panelView.isVisible,callback:()=>this._hidePanel()})}init(){const e=this.editor;this.listenTo(e.model.document.selection,"change:range",((e,t)=>{t.directChange&&this._hidePanel()})),this.listenTo(e.ui,"update",(()=>this._updateButton())),this.listenTo(e,"change:isReadOnly",(()=>this._updateButton()),{priority:"low"}),this.listenTo(e.ui.focusTracker,"change:isFocused",(()=>this._updateButton())),this.listenTo(this.buttonView,"change:isVisible",((e,t,s)=>{s?this.buttonView.listenTo(window,"resize",(()=>this._updateButton())):(this.buttonView.stopListening(window,"resize"),this._hidePanel())})),e.ui.addToolbar(this.toolbarView,{beforeFocus:()=>this._showPanel(),afterBlur:()=>this._hidePanel()})}afterInit(){const e=this.editor.ui.componentFactory,t=this._blockToolbarConfig;this.toolbarView.fillFromConfig(t,e);for(const e of this.toolbarView.items)e.on("execute",(()=>this._hidePanel(!0)),{priority:"high"});t.shouldNotGroupWhenFull||this.listenTo(this.editor,"ready",(()=>{const e=this.editor.ui.view.editable.element;this._resizeObserver=new Ae.Z(e,(()=>{this.toolbarView.maxWidth=this._getToolbarMaxWidth()}))}))}destroy(){super.destroy(),this.panelView.destroy(),this.buttonView.destroy(),this.toolbarView.destroy(),this._resizeObserver&&this._resizeObserver.destroy()}_createToolbarView(){const e=this.editor.locale.t,t=!this._blockToolbarConfig.shouldNotGroupWhenFull,s=new ve.Z(this.editor.locale,{shouldGroupWhenFull:t,isFloating:!0});return s.ariaLabel=e("Editor block content toolbar"),s.focusTracker.on("change:isFocused",((e,t,s)=>{s||this._hidePanel()})),s}_createPanelView(){const e=this.editor,t=new ue.Z(e.locale);return t.content.add(this.toolbarView),t.class="ck-toolbar-container",e.ui.view.body.add(t),e.ui.focusTracker.add(t.element),this.toolbarView.keystrokes.set("Esc",((e,t)=>{this._hidePanel(!0),t()})),t}_createButtonView(){const e=this.editor,t=e.t,s=new Ne(e.locale);return s.set({label:t("Edit block"),icon:je.Z,withText:!1}),s.bind("isOn").to(this.panelView,"isVisible"),s.bind("tooltip").to(this.panelView,"isVisible",(e=>!e)),this.listenTo(s,"execute",(()=>{this.panelView.isVisible?this._hidePanel(!0):this._showPanel()})),e.ui.view.body.add(s),e.ui.focusTracker.add(s.element),s}_updateButton(){const e=this.editor,t=e.model,s=e.editing.view;if(!e.ui.focusTracker.isFocused)return void this._hideButton();if(e.isReadOnly)return void this._hideButton();const o=Array.from(t.document.selection.getSelectedBlocks())[0];if(!o||Array.from(this.toolbarView.items).every((e=>!e.isEnabled)))return void this._hideButton();const i=s.domConverter.mapViewToDom(e.editing.mapper.toViewElement(o));this.buttonView.isVisible=!0,this._attachButtonToElement(i),this.panelView.isVisible&&this._showPanel()}_hideButton(){this.buttonView.isVisible=!1}_showPanel(){if(!this.buttonView.isVisible)return;const e=this.panelView.isVisible;this.panelView.show(),this.toolbarView.maxWidth=this._getToolbarMaxWidth(),this.panelView.pin({target:this.buttonView.element,limiter:this.editor.ui.getEditableElement()}),e||this.toolbarView.items.get(0).focus()}_hidePanel(e){this.panelView.isVisible=!1,e&&this.editor.editing.view.focus()}_attachButtonToElement(e){const t=window.getComputedStyle(e),s=new xe.Z(this.editor.ui.getEditableElement()),o=parseInt(t.paddingTop,10),i=parseInt(t.lineHeight,10)||1.2*parseInt(t.fontSize,10),r=(0,Ve.x)({element:this.buttonView.element,target:e,positions:[(e,t)=>{let r;return r="ltr"===this.editor.locale.uiLanguageDirection?s.left-t.width:s.right,{top:e.top+o+(i-t.height)/2,left:r}}]});this.buttonView.top=r.top,this.buttonView.left=r.left}_getToolbarMaxWidth(){const e=this.editor.ui.view.editable.element,t=new xe.Z(e),s=new xe.Z(this.buttonView.element),o="rtl"===this.editor.locale.uiLanguageDirection?s.left-t.right+s.width:t.left-s.left;return Ie(t.width+o)}}},"./src/undo.js":(e,t,s)=>{"use strict";s.r(t),s.d(t,{Undo:()=>m,UndoEditing:()=>h,UndoUi:()=>f});var o=s("./packages/ckeditor5-core/src/plugin.js"),i=s("./packages/ckeditor5-core/src/command.js"),r=s("./packages/ckeditor5-engine/src/model/operation/transform.ts");class n extends i.Z{constructor(e){super(e),this._stack=[],this._createdBatches=new WeakSet,this.refresh(),this.listenTo(e.data,"set",((e,t)=>{t[1]={...t[1]};const s=t[1];s.batchType||(s.batchType={isUndoable:!1})}),{priority:"high"}),this.listenTo(e.data,"set",((e,t)=>{t[1].batchType.isUndoable||this.clearStack()}))}refresh(){this.isEnabled=this._stack.length>0}addBatch(e){const t=this.editor.model.document.selection,s={ranges:t.hasOwnRange?Array.from(t.getRanges()):[],isBackward:t.isBackward};this._stack.push({batch:e,selection:s}),this.refresh()}clearStack(){this._stack=[],this.refresh()}_restoreSelection(e,t,s){const o=this.editor.model,i=o.document,r=[],n=e.map((e=>e.getTransformedByOperations(s))),l=n.flat();for(const e of n){const t=e.filter((e=>e.root!=i.graveyard)).filter((e=>!c(e,l)));t.length&&(a(t),r.push(t[0]))}r.length&&o.change((e=>{e.setSelection(r,{backward:t})}))}_undo(e,t){const s=this.editor.model,o=s.document;this._createdBatches.add(t);const i=e.operations.slice().filter((e=>e.isDocumentOperation));i.reverse();for(const e of i){const i=e.baseVersion+1,n=Array.from(o.history.getOperations(i)),a=(0,r.R)([e.getReversed()],n,{useRelations:!0,document:this.editor.model.document,padWithNoOps:!1,forceWeakRemove:!0}).operationsA;for(const i of a)t.addOperation(i),s.applyOperation(i),o.history.setOperationAsUndone(e,i)}}}function a(e){e.sort(((e,t)=>e.start.isBefore(t.start)?-1:1));for(let t=1;t<e.length;t++){const s=e[t-1].getJoined(e[t],!0);s&&(t--,e.splice(t,2,s))}}function c(e,t){return t.some((t=>t!==e&&t.containsRange(e,!0)))}class l extends n{execute(e=null){const t=e?this._stack.findIndex((t=>t.batch==e)):this._stack.length-1,s=this._stack.splice(t,1)[0],o=this.editor.model.createBatch({isUndo:!0});this.editor.model.enqueueChange(o,(()=>{this._undo(s.batch,o);const e=this.editor.model.document.history.getOperations(s.batch.baseVersion);this._restoreSelection(s.selection.ranges,s.selection.isBackward,e),this.fire("revert",s.batch,o)})),this.refresh()}}class d extends n{execute(){const e=this._stack.pop(),t=this.editor.model.createBatch({isUndo:!0});this.editor.model.enqueueChange(t,(()=>{const s=e.batch.operations[e.batch.operations.length-1].baseVersion+1,o=this.editor.model.document.history.getOperations(s);this._restoreSelection(e.selection.ranges,e.selection.isBackward,o),this._undo(e.batch,t)})),this.refresh()}}class h extends o.Z{static get pluginName(){return"UndoEditing"}constructor(e){super(e),this._batchRegistry=new WeakSet}init(){const e=this.editor;this._undoCommand=new l(e),this._redoCommand=new d(e),e.commands.add("undo",this._undoCommand),e.commands.add("redo",this._redoCommand),this.listenTo(e.model,"applyOperation",((e,t)=>{const s=t[0];if(!s.isDocumentOperation)return;const o=s.batch,i=this._redoCommand._createdBatches.has(o),r=this._undoCommand._createdBatches.has(o);this._batchRegistry.has(o)||(this._batchRegistry.add(o),o.isUndoable&&(i?this._undoCommand.addBatch(o):r||(this._undoCommand.addBatch(o),this._redoCommand.clearStack())))}),{priority:"highest"}),this.listenTo(this._undoCommand,"revert",((e,t,s)=>{this._redoCommand.addBatch(s)})),e.keystrokes.set("CTRL+Z","undo"),e.keystrokes.set("CTRL+Y","redo"),e.keystrokes.set("CTRL+SHIFT+Z","redo")}}var u=s("./packages/ckeditor5-ui/src/button/buttonview.js");const p='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m5.042 9.367 2.189 1.837a.75.75 0 0 1-.965 1.149l-3.788-3.18a.747.747 0 0 1-.21-.284.75.75 0 0 1 .17-.945L6.23 4.762a.75.75 0 1 1 .964 1.15L4.863 7.866h8.917A.75.75 0 0 1 14 7.9a4 4 0 1 1-1.477 7.718l.344-1.489a2.5 2.5 0 1 0 1.094-4.73l.008-.032H5.042z"/></svg>',g='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m14.958 9.367-2.189 1.837a.75.75 0 0 0 .965 1.149l3.788-3.18a.747.747 0 0 0 .21-.284.75.75 0 0 0-.17-.945L13.77 4.762a.75.75 0 1 0-.964 1.15l2.331 1.955H6.22A.75.75 0 0 0 6 7.9a4 4 0 1 0 1.477 7.718l-.344-1.489A2.5 2.5 0 1 1 6.039 9.4l-.008-.032h8.927z"/></svg>';class f extends o.Z{static get pluginName(){return"UndoUI"}init(){const e=this.editor,t=e.locale,s=e.t,o="ltr"==t.uiLanguageDirection?p:g,i="ltr"==t.uiLanguageDirection?g:p;this._addButton("undo",s("Undo"),"CTRL+Z",o),this._addButton("redo",s("Redo"),"CTRL+Y",i)}_addButton(e,t,s,o){const i=this.editor;i.ui.componentFactory.add(e,(r=>{const n=i.commands.get(e),a=new u.Z(r);return a.set({label:t,icon:o,keystroke:s,tooltip:!0}),a.bind("isEnabled").to(n,"isEnabled"),this.listenTo(a,"execute",(()=>{i.execute(e),i.editing.view.focus()})),a}))}}class m extends o.Z{static get requires(){return[h,f]}static get pluginName(){return"Undo"}}},"./src/upload.js":(e,t,s)=>{"use strict";s.r(t),s.d(t,{Base64UploadAdapter:()=>k,FileDialogButtonView:()=>f,FileRepository:()=>h,SimpleUploadAdapter:()=>_});var o=s("./packages/ckeditor5-core/src/plugin.js"),i=s("./packages/ckeditor5-core/src/pendingactions.js"),r=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),n=s("./packages/ckeditor5-utils/src/observablemixin.ts"),a=s("./packages/ckeditor5-utils/src/collection.ts"),c=s("./packages/ckeditor5-utils/src/mix.ts");class l{constructor(){const e=new window.FileReader;this._reader=e,this._data=void 0,this.set("loaded",0),e.onprogress=e=>{this.loaded=e.loaded}}get error(){return this._reader.error}get data(){return this._data}read(e){const t=this._reader;return this.total=e.size,new Promise(((s,o)=>{t.onload=()=>{const e=t.result;this._data=e,s(e)},t.onerror=()=>{o("error")},t.onabort=()=>{o("aborted")},this._reader.readAsDataURL(e)}))}abort(){this._reader.abort()}}(0,c.Z)(l,n.Z);var d=s("./packages/ckeditor5-utils/src/uid.ts");class h extends o.Z{static get pluginName(){return"FileRepository"}static get requires(){return[i.Z]}init(){this.loaders=new a.Z,this.loaders.on("add",(()=>this._updatePendingAction())),this.loaders.on("remove",(()=>this._updatePendingAction())),this._loadersMap=new Map,this._pendingAction=null,this.set("uploaded",0),this.set("uploadTotal",null),this.bind("uploadedPercent").to(this,"uploaded",this,"uploadTotal",((e,t)=>t?e/t*100:0))}getLoader(e){return this._loadersMap.get(e)||null}createLoader(e){if(!this.createUploadAdapter)return(0,r.KE)("filerepository-no-upload-adapter"),null;const t=new u(Promise.resolve(e),this.createUploadAdapter);return this.loaders.add(t),this._loadersMap.set(e,t),e instanceof Promise&&t.file.then((e=>{this._loadersMap.set(e,t)})).catch((()=>{})),t.on("change:uploaded",(()=>{let e=0;for(const t of this.loaders)e+=t.uploaded;this.uploaded=e})),t.on("change:uploadTotal",(()=>{let e=0;for(const t of this.loaders)t.uploadTotal&&(e+=t.uploadTotal);this.uploadTotal=e})),t}destroyLoader(e){const t=e instanceof u?e:this.getLoader(e);t._destroy(),this.loaders.remove(t),this._loadersMap.forEach(((e,s)=>{e===t&&this._loadersMap.delete(s)}))}_updatePendingAction(){const e=this.editor.plugins.get(i.Z);if(this.loaders.length){if(!this._pendingAction){const t=this.editor.t,s=e=>`${t("Upload in progress")} ${parseInt(e)}%.`;this._pendingAction=e.add(s(this.uploadedPercent)),this._pendingAction.bind("message").to(this,"uploadedPercent",s)}}else e.remove(this._pendingAction),this._pendingAction=null}}(0,c.Z)(h,n.Z);class u{constructor(e,t){this.id=(0,d.Z)(),this._filePromiseWrapper=this._createFilePromiseWrapper(e),this._adapter=t(this),this._reader=new l,this.set("status","idle"),this.set("uploaded",0),this.set("uploadTotal",null),this.bind("uploadedPercent").to(this,"uploaded",this,"uploadTotal",((e,t)=>t?e/t*100:0)),this.set("uploadResponse",null)}get file(){return this._filePromiseWrapper?this._filePromiseWrapper.promise.then((e=>this._filePromiseWrapper?e:null)):Promise.resolve(null)}get data(){return this._reader.data}read(){if("idle"!=this.status)throw new r.ZP("filerepository-read-wrong-status",this);return this.status="reading",this.file.then((e=>this._reader.read(e))).then((e=>{if("reading"!==this.status)throw this.status;return this.status="idle",e})).catch((e=>{if("aborted"===e)throw this.status="aborted","aborted";throw this.status="error",this._reader.error?this._reader.error:e}))}upload(){if("idle"!=this.status)throw new r.ZP("filerepository-upload-wrong-status",this);return this.status="uploading",this.file.then((()=>this._adapter.upload())).then((e=>(this.uploadResponse=e,this.status="idle",e))).catch((e=>{if("aborted"===this.status)throw"aborted";throw this.status="error",e}))}abort(){const e=this.status;this.status="aborted",this._filePromiseWrapper.isFulfilled?"reading"==e?this._reader.abort():"uploading"==e&&this._adapter.abort&&this._adapter.abort():(this._filePromiseWrapper.promise.catch((()=>{})),this._filePromiseWrapper.rejecter("aborted")),this._destroy()}_destroy(){this._filePromiseWrapper=void 0,this._reader=void 0,this._adapter=void 0,this.uploadResponse=void 0}_createFilePromiseWrapper(e){const t={};return t.promise=new Promise(((s,o)=>{t.rejecter=o,t.isFulfilled=!1,e.then((e=>{t.isFulfilled=!0,s(e)})).catch((e=>{t.isFulfilled=!0,o(e)}))})),t}}(0,c.Z)(u,n.Z);var p=s("./packages/ckeditor5-ui/src/button/buttonview.js"),g=s("./packages/ckeditor5-ui/src/view.js");class f extends g.Z{constructor(e){super(e),this.buttonView=new p.Z(e),this._fileInputView=new m(e),this._fileInputView.bind("acceptedType").to(this),this._fileInputView.bind("allowMultipleFiles").to(this),this._fileInputView.delegate("done").to(this),this.setTemplate({tag:"span",attributes:{class:"ck-file-dialog-button"},children:[this.buttonView,this._fileInputView]}),this.buttonView.on("execute",(()=>{this._fileInputView.open()}))}focus(){this.buttonView.focus()}}class m extends g.Z{constructor(e){super(e),this.set("acceptedType"),this.set("allowMultipleFiles",!1);const t=this.bindTemplate;this.setTemplate({tag:"input",attributes:{class:["ck-hidden"],type:"file",tabindex:"-1",accept:t.to("acceptedType"),multiple:t.to("allowMultipleFiles")},on:{change:t.to((()=>{this.element&&this.element.files&&this.element.files.length&&this.fire("done",this.element.files),this.element.value=""}))}})}open(){this.element.click()}}class k extends o.Z{static get requires(){return[h]}static get pluginName(){return"Base64UploadAdapter"}init(){this.editor.plugins.get(h).createUploadAdapter=e=>new b(e)}}class b{constructor(e){this.loader=e}upload(){return new Promise(((e,t)=>{const s=this.reader=new window.FileReader;s.addEventListener("load",(()=>{e({default:s.result})})),s.addEventListener("error",(e=>{t(e)})),s.addEventListener("abort",(()=>{t()})),this.loader.file.then((e=>{s.readAsDataURL(e)}))}))}abort(){this.reader.abort()}}class _ extends o.Z{static get requires(){return[h]}static get pluginName(){return"SimpleUploadAdapter"}init(){const e=this.editor.config.get("simpleUpload");e&&(e.uploadUrl?this.editor.plugins.get(h).createUploadAdapter=t=>new w(t,e):(0,r.KE)("simple-upload-adapter-missing-uploadurl"))}}class w{constructor(e,t){this.loader=e,this.options=t}upload(){return this.loader.file.then((e=>new Promise(((t,s)=>{this._initRequest(),this._initListeners(t,s,e),this._sendRequest(e)}))))}abort(){this.xhr&&this.xhr.abort()}_initRequest(){const e=this.xhr=new XMLHttpRequest;e.open("POST",this.options.uploadUrl,!0),e.responseType="json"}_initListeners(e,t,s){const o=this.xhr,i=this.loader,r=`Couldn't upload file: ${s.name}.`;o.addEventListener("error",(()=>t(r))),o.addEventListener("abort",(()=>t())),o.addEventListener("load",(()=>{const s=o.response;if(!s||s.error)return t(s&&s.error&&s.error.message?s.error.message:r);const i=s.url?{default:s.url}:s.urls;e({...s,urls:i})})),o.upload&&o.upload.addEventListener("progress",(e=>{e.lengthComputable&&(i.uploadTotal=e.total,i.uploaded=e.loaded)}))}_sendRequest(e){const t=this.options.headers||{},s=this.options.withCredentials||!1;for(const e of Object.keys(t))this.xhr.setRequestHeader(e,t[e]);this.xhr.withCredentials=s;const o=new FormData;o.append("upload",e),this.xhr.send(o)}}},"./src/utils.js":(e,t,s)=>{"use strict";s.r(t),s.d(t,{CKEditorError:()=>o.Bb,Collection:()=>o.FE,DomEmitterMixin:()=>o.Xu,ElementReplacer:()=>o.a6,EmitterMixin:()=>o.ln,FocusTracker:()=>o.Rh,KeystrokeHandler:()=>o.VD,Locale:()=>o.go,ObservableMixin:()=>o.Re,Rect:()=>o.UL,ResizeObserver:()=>o.do,createElement:()=>o.az,diff:()=>o.Hg,env:()=>o.OB,first:()=>o.Ps,getCode:()=>o.Cq,getDataFromElement:()=>o.yy,getEnvKeystrokeText:()=>o.XU,getLanguageDirection:()=>o.j9,getLocalizedArrowKeyCodeDirection:()=>o.mA,global:()=>o.CO,isArrowKeyCode:()=>o.dj,isForwardArrowKeyCode:()=>o.Zt,isVisible:()=>o.pn,keyCodes:()=>o.Do,logError:()=>o.H,logWarning:()=>o.KE,mix:()=>o.CD,parseKeystroke:()=>o.Zz,priorities:()=>o.tA,scrollAncestorsToShowTarget:()=>o.F0,scrollViewportToShowTarget:()=>o.mR,setDataInElement:()=>o.jS,toArray:()=>o.qo,toMap:()=>o.qL,toUnit:()=>o.nn,uid:()=>o.hQ,version:()=>o.i8});var o=s("./packages/ckeditor5-utils/src/index.ts")},"./src/widget.js":(e,t,s)=>{"use strict";s.r(t),s.d(t,{WIDGET_CLASS_NAME:()=>c.s4,WIDGET_SELECTED_CLASS_NAME:()=>c.Uo,Widget:()=>o.Z,WidgetResize:()=>j,WidgetToolbarRepository:()=>d,WidgetTypeAround:()=>O.Z,findOptimalInsertionRange:()=>c.KT,getLabel:()=>c.id,isWidget:()=>c.Qd,setHighlightHandling:()=>c.em,setLabel:()=>c.l6,toWidget:()=>c.XC,toWidgetEditable:()=>c.sC,viewToModelPositionOutsideModelElement:()=>c.$n});var o=s("./packages/ckeditor5-widget/src/widget.js"),i=s("./packages/ckeditor5-core/src/plugin.js"),r=s("./packages/ckeditor5-ui/src/panel/balloon/contextualballoon.js"),n=s("./packages/ckeditor5-ui/src/toolbar/toolbarview.js"),a=s("./packages/ckeditor5-ui/src/panel/balloon/balloonpanelview.js"),c=s("./packages/ckeditor5-widget/src/utils.js"),l=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class d extends i.Z{static get requires(){return[r.Z]}static get pluginName(){return"WidgetToolbarRepository"}init(){const e=this.editor;if(e.plugins.has("BalloonToolbar")){const t=e.plugins.get("BalloonToolbar");this.listenTo(t,"show",(t=>{(function(e){const t=e.getSelectedElement();return!(!t||!(0,c.Qd)(t))})(e.editing.view.document.selection)&&t.stop()}),{priority:"high"})}this._toolbarDefinitions=new Map,this._balloon=this.editor.plugins.get("ContextualBalloon"),this.on("change:isEnabled",(()=>{this._updateToolbarsVisibility()})),this.listenTo(e.ui,"update",(()=>{this._updateToolbarsVisibility()})),this.listenTo(e.ui.focusTracker,"change:isFocused",(()=>{this._updateToolbarsVisibility()}),{priority:"low"})}destroy(){super.destroy();for(const e of this._toolbarDefinitions.values())e.view.destroy()}register(e,{ariaLabel:t,items:s,getRelatedElement:o,balloonClassName:i="ck-toolbar-container"}){if(!s.length)return void(0,l.KE)("widget-toolbar-no-items",{toolbarId:e});const r=this.editor,a=r.t,c=new n.Z(r.locale);if(c.ariaLabel=t||a("Widget toolbar"),this._toolbarDefinitions.has(e))throw new l.ZP("widget-toolbar-duplicated",this,{toolbarId:e});c.fillFromConfig(s,r.ui.componentFactory);const d={view:c,getRelatedElement:o,balloonClassName:i};r.ui.addToolbar(c,{isContextual:!0,beforeFocus:()=>{const e=o(r.editing.view.document.selection);e&&this._showToolbar(d,e)},afterBlur:()=>{this._hideToolbar(d)}}),this._toolbarDefinitions.set(e,d)}_updateToolbarsVisibility(){let e=0,t=null,s=null;for(const o of this._toolbarDefinitions.values()){const i=o.getRelatedElement(this.editor.editing.view.document.selection);if(this.isEnabled&&i)if(this.editor.ui.focusTracker.isFocused){const r=i.getAncestors().length;r>e&&(e=r,t=i,s=o)}else this._isToolbarVisible(o)&&this._hideToolbar(o);else this._isToolbarInBalloon(o)&&this._hideToolbar(o)}s&&this._showToolbar(s,t)}_hideToolbar(e){this._balloon.remove(e.view),this.stopListening(this._balloon,"change:visibleView")}_showToolbar(e,t){this._isToolbarVisible(e)?h(this.editor,t):this._isToolbarInBalloon(e)||(this._balloon.add({view:e.view,position:u(this.editor,t),balloonClassName:e.balloonClassName}),this.listenTo(this._balloon,"change:visibleView",(()=>{for(const e of this._toolbarDefinitions.values())if(this._isToolbarVisible(e)){const t=e.getRelatedElement(this.editor.editing.view.document.selection);h(this.editor,t)}})))}_isToolbarVisible(e){return this._balloon.visibleView===e.view}_isToolbarInBalloon(e){return this._balloon.hasView(e.view)}}function h(e,t){const s=e.plugins.get("ContextualBalloon"),o=u(e,t);s.updatePosition(o)}function u(e,t){const s=e.editing.view,o=a.Z.defaultPositions;return{target:s.domConverter.mapViewToDom(t),positions:[o.northArrowSouth,o.northArrowSouthWest,o.northArrowSouthEast,o.southArrowNorth,o.southArrowNorthWest,o.southArrowNorthEast,o.viewportStickyNorth]}}var p=s("./packages/ckeditor5-ui/src/template.js"),g=s("./packages/ckeditor5-utils/src/dom/rect.ts"),f=s("./packages/ckeditor5-utils/src/comparearrays.ts"),m=s("./packages/ckeditor5-utils/src/observablemixin.ts"),k=s("./packages/ckeditor5-utils/src/mix.ts");class b{constructor(e){this.set("activeHandlePosition",null),this.set("proposedWidthPercents",null),this.set("proposedWidth",null),this.set("proposedHeight",null),this.set("proposedHandleHostWidth",null),this.set("proposedHandleHostHeight",null),this._options=e,this._referenceCoordinates=null}begin(e,t,s){const o=new g.Z(t);this.activeHandlePosition=function(e){const t=["top-left","top-right","bottom-right","bottom-left"];for(const s of t)if(e.classList.contains(_(s)))return s}(e),this._referenceCoordinates=function(e,t){const s=new g.Z(e),o=t.split("-"),i={x:"right"==o[1]?s.right:s.left,y:"bottom"==o[0]?s.bottom:s.top};return i.x+=e.ownerDocument.defaultView.scrollX,i.y+=e.ownerDocument.defaultView.scrollY,i}(t,function(e){const t=e.split("-"),s={top:"bottom",bottom:"top",left:"right",right:"left"};return`${s[t[0]]}-${s[t[1]]}`}(this.activeHandlePosition)),this.originalWidth=o.width,this.originalHeight=o.height,this.aspectRatio=o.width/o.height;const i=s.style.width;i&&i.match(/^\d+(\.\d*)?%$/)?this.originalWidthPercents=parseFloat(i):this.originalWidthPercents=function(e,t){const s=e.parentElement,o=parseFloat(s.ownerDocument.defaultView.getComputedStyle(s).width);return t.width/o*100}(s,o)}update(e){this.proposedWidth=e.width,this.proposedHeight=e.height,this.proposedWidthPercents=e.widthPercents,this.proposedHandleHostWidth=e.handleHostWidth,this.proposedHandleHostHeight=e.handleHostHeight}}function _(e){return`ck-widget__resizer__handle-${e}`}(0,k.Z)(b,m.Z);var w=s("./packages/ckeditor5-ui/src/view.js");class v extends w.Z{constructor(){super();const e=this.bindTemplate;this.setTemplate({tag:"div",attributes:{class:["ck","ck-size-view",e.to("_viewPosition",(e=>e?`ck-orientation-${e}`:""))],style:{display:e.if("_isVisible","none",(e=>!e))}},children:[{text:e.to("_label")}]})}_bindToState(e,t){this.bind("_isVisible").to(t,"proposedWidth",t,"proposedHeight",((e,t)=>null!==e&&null!==t)),this.bind("_label").to(t,"proposedHandleHostWidth",t,"proposedHandleHostHeight",t,"proposedWidthPercents",((t,s,o)=>"px"===e.unit?`${t}×${s}`:`${o}%`)),this.bind("_viewPosition").to(t,"activeHandlePosition",t,"proposedHandleHostWidth",t,"proposedHandleHostHeight",((e,t,s)=>t<50||s<50?"above-center":e))}_dismiss(){this.unbind(),this._isVisible=!1}}class y{constructor(e){this._options=e,this._viewResizerWrapper=null,this.set("isEnabled",!0),this.decorate("begin"),this.decorate("cancel"),this.decorate("commit"),this.decorate("updateSize"),this.on("commit",(e=>{this.state.proposedWidth||this.state.proposedWidthPercents||(this._cleanup(),e.stop())}),{priority:"high"}),this.on("change:isEnabled",(()=>{this.isEnabled&&this.redraw()}))}attach(){const e=this,t=this._options.viewElement;this._options.editor.editing.view.change((s=>{const o=s.createUIElement("div",{class:"ck ck-reset_all ck-widget__resizer"},(function(t){const s=this.toDomElement(t);return e._appendHandles(s),e._appendSizeUI(s),e.on("change:isEnabled",((e,t,o)=>{s.style.display=o?"":"none"})),s.style.display=e.isEnabled?"":"none",s}));s.insert(s.createPositionAt(t,"end"),o),s.addClass("ck-widget_with-resizer",t),this._viewResizerWrapper=o}))}begin(e){this.state=new b(this._options),this._sizeView._bindToState(this._options,this.state),this._initialViewWidth=this._options.viewElement.getStyle("width"),this.state.begin(e,this._getHandleHost(),this._getResizeHost())}updateSize(e){const t=this._proposeNewSize(e);this._options.editor.editing.view.change((e=>{const s=this._options.unit||"%",o=("%"===s?t.widthPercents:t.width)+s;e.setStyle("width",o,this._options.viewElement)}));const s=this._getHandleHost(),o=new g.Z(s);t.handleHostWidth=Math.round(o.width),t.handleHostHeight=Math.round(o.height);const i=new g.Z(s);t.width=Math.round(i.width),t.height=Math.round(i.height),this.redraw(o),this.state.update(t)}commit(){const e=this._options.unit||"%",t=("%"===e?this.state.proposedWidthPercents:this.state.proposedWidth)+e;this._options.editor.editing.view.change((()=>{this._cleanup(),this._options.onCommit(t)}))}cancel(){this._cleanup()}destroy(){this.cancel()}redraw(e){const t=this._domResizerWrapper;if(!((s=t)&&s.ownerDocument&&s.ownerDocument.contains(s)))return;var s;const o=t.parentElement,i=this._getHandleHost(),r=this._viewResizerWrapper,n=[r.getStyle("width"),r.getStyle("height"),r.getStyle("left"),r.getStyle("top")];let a;if(o.isSameNode(i)){const t=e||new g.Z(i);a=[t.width+"px",t.height+"px",void 0,void 0]}else a=[i.offsetWidth+"px",i.offsetHeight+"px",i.offsetLeft+"px",i.offsetTop+"px"];"same"!==(0,f.Z)(n,a)&&this._options.editor.editing.view.change((e=>{e.setStyle({width:a[0],height:a[1],left:a[2],top:a[3]},r)}))}containsHandle(e){return this._domResizerWrapper.contains(e)}static isResizeHandle(e){return e.classList.contains("ck-widget__resizer__handle")}_cleanup(){this._sizeView._dismiss();this._options.editor.editing.view.change((e=>{e.setStyle("width",this._initialViewWidth,this._options.viewElement)}))}_proposeNewSize(e){const t=this.state,s={x:(o=e).pageX,y:o.pageY};var o;const i=!this._options.isCentered||this._options.isCentered(this),r={x:t._referenceCoordinates.x-(s.x+t.originalWidth),y:s.y-t.originalHeight-t._referenceCoordinates.y};i&&t.activeHandlePosition.endsWith("-right")&&(r.x=s.x-(t._referenceCoordinates.x+t.originalWidth)),i&&(r.x*=2);const n={width:Math.abs(t.originalWidth+r.x),height:Math.abs(t.originalHeight+r.y)};n.dominant=n.width/t.aspectRatio>n.height?"width":"height",n.max=n[n.dominant];const a={width:n.width,height:n.height};return"width"==n.dominant?a.height=a.width/t.aspectRatio:a.width=a.height*t.aspectRatio,{width:Math.round(a.width),height:Math.round(a.height),widthPercents:Math.min(Math.round(t.originalWidthPercents/t.originalWidth*a.width*100)/100,100)}}_getResizeHost(){const e=this._domResizerWrapper.parentElement;return this._options.getResizeHost(e)}_getHandleHost(){const e=this._domResizerWrapper.parentElement;return this._options.getHandleHost(e)}get _domResizerWrapper(){return this._options.editor.editing.view.domConverter.mapViewToDom(this._viewResizerWrapper)}_appendHandles(e){const t=["top-left","top-right","bottom-right","bottom-left"];for(const o of t)e.appendChild(new p.ZP({tag:"div",attributes:{class:"ck-widget__resizer__handle "+(s=o,`ck-widget__resizer__handle-${s}`)}}).render());var s}_appendSizeUI(e){this._sizeView=new v,this._sizeView.render(),e.appendChild(this._sizeView.element)}}(0,k.Z)(y,m.Z);var Z=s("./packages/ckeditor5-utils/src/dom/emittermixin.ts"),P=s("./packages/ckeditor5-utils/src/dom/global.ts"),x=s("./packages/ckeditor5-engine/src/view/observer/mouseobserver.ts"),T=s("./node_modules/lodash-es/throttle.js"),A=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),C=s.n(A),E=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-widget/theme/widgetresize.css"),S={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};C()(E.Z,S);E.Z.locals;class j extends i.Z{static get pluginName(){return"WidgetResize"}init(){const e=this.editor.editing,t=P.Z.window.document;this.set("visibleResizer",null),this.set("_activeResizer",null),this._resizers=new Map,e.view.addObserver(x.Z),this._observer=Object.create(Z.Z),this.listenTo(e.view.document,"mousedown",this._mouseDownListener.bind(this),{priority:"high"}),this._observer.listenTo(t,"mousemove",this._mouseMoveListener.bind(this)),this._observer.listenTo(t,"mouseup",this._mouseUpListener.bind(this));const s=()=>{this.visibleResizer&&this.visibleResizer.redraw()};this._redrawFocusedResizerThrottled=(0,T.Z)(s,200),this.on("change:visibleResizer",s),this.editor.ui.on("update",this._redrawFocusedResizerThrottled),this.editor.model.document.on("change",(()=>{for(const[e,t]of this._resizers)e.isAttached()||(this._resizers.delete(e),t.destroy())}),{priority:"lowest"}),this._observer.listenTo(P.Z.window,"resize",this._redrawFocusedResizerThrottled);const o=this.editor.editing.view.document.selection;o.on("change",(()=>{const e=o.getSelectedElement();this.visibleResizer=this.getResizerByViewElement(e)||null}))}destroy(){this._observer.stopListening();for(const e of this._resizers.values())e.destroy();this._redrawFocusedResizerThrottled.cancel()}attachTo(e){const t=new y(e),s=this.editor.plugins;if(t.attach(),s.has("WidgetToolbarRepository")){const e=s.get("WidgetToolbarRepository");t.on("begin",(()=>{e.forceDisabled("resize")}),{priority:"lowest"}),t.on("cancel",(()=>{e.clearForceDisabled("resize")}),{priority:"highest"}),t.on("commit",(()=>{e.clearForceDisabled("resize")}),{priority:"highest"})}this._resizers.set(e.viewElement,t);const o=this.editor.editing.view.document.selection.getSelectedElement();return this.getResizerByViewElement(o)==t&&(this.visibleResizer=t),t}getResizerByViewElement(e){return this._resizers.get(e)}_getResizerByHandle(e){for(const t of this._resizers.values())if(t.containsHandle(e))return t}_mouseDownListener(e,t){const s=t.domTarget;y.isResizeHandle(s)&&(this._activeResizer=this._getResizerByHandle(s),this._activeResizer&&(this._activeResizer.begin(s),e.stop(),t.preventDefault()))}_mouseMoveListener(e,t){this._activeResizer&&this._activeResizer.updateSize(t)}_mouseUpListener(){this._activeResizer&&(this._activeResizer.commit(),this._activeResizer=null)}}(0,k.Z)(j,m.Z);var O=s("./packages/ckeditor5-widget/src/widgettypearound/widgettypearound.js")},"?7cdd":(e,t,s)=>{e.exports=s},"./node_modules/lodash-es/_ListCache.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>u});const o=function(){this.__data__=[],this.size=0};var i=s("./node_modules/lodash-es/eq.js");const r=function(e,t){for(var s=e.length;s--;)if((0,i.Z)(e[s][0],t))return s;return-1};var n=Array.prototype.splice;const a=function(e){var t=this.__data__,s=r(t,e);return!(s<0)&&(s==t.length-1?t.pop():n.call(t,s,1),--this.size,!0)};const c=function(e){var t=this.__data__,s=r(t,e);return s<0?void 0:t[s][1]};const l=function(e){return r(this.__data__,e)>-1};const d=function(e,t){var s=this.__data__,o=r(s,e);return o<0?(++this.size,s.push([e,t])):s[o][1]=t,this};function h(e){var t=-1,s=null==e?0:e.length;for(this.clear();++t<s;){var o=e[t];this.set(o[0],o[1])}}h.prototype.clear=o,h.prototype.delete=a,h.prototype.get=c,h.prototype.has=l,h.prototype.set=d;const u=h},"./node_modules/lodash-es/_Map.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/lodash-es/_getNative.js"),i=s("./node_modules/lodash-es/_root.js");const r=(0,o.Z)(i.Z,"Map")},"./node_modules/lodash-es/_MapCache.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>Z});const o=(0,s("./node_modules/lodash-es/_getNative.js").Z)(Object,"create");const i=function(){this.__data__=o?o(null):{},this.size=0};const r=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t};var n=Object.prototype.hasOwnProperty;const a=function(e){var t=this.__data__;if(o){var s=t[e];return"__lodash_hash_undefined__"===s?void 0:s}return n.call(t,e)?t[e]:void 0};var c=Object.prototype.hasOwnProperty;const l=function(e){var t=this.__data__;return o?void 0!==t[e]:c.call(t,e)};const d=function(e,t){var s=this.__data__;return this.size+=this.has(e)?0:1,s[e]=o&&void 0===t?"__lodash_hash_undefined__":t,this};function h(e){var t=-1,s=null==e?0:e.length;for(this.clear();++t<s;){var o=e[t];this.set(o[0],o[1])}}h.prototype.clear=i,h.prototype.delete=r,h.prototype.get=a,h.prototype.has=l,h.prototype.set=d;const u=h;var p=s("./node_modules/lodash-es/_ListCache.js"),g=s("./node_modules/lodash-es/_Map.js");const f=function(){this.size=0,this.__data__={hash:new u,map:new(g.Z||p.Z),string:new u}};const m=function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e};const k=function(e,t){var s=e.__data__;return m(t)?s["string"==typeof t?"string":"hash"]:s.map};const b=function(e){var t=k(this,e).delete(e);return this.size-=t?1:0,t};const _=function(e){return k(this,e).get(e)};const w=function(e){return k(this,e).has(e)};const v=function(e,t){var s=k(this,e),o=s.size;return s.set(e,t),this.size+=s.size==o?0:1,this};function y(e){var t=-1,s=null==e?0:e.length;for(this.clear();++t<s;){var o=e[t];this.set(o[0],o[1])}}y.prototype.clear=f,y.prototype.delete=b,y.prototype.get=_,y.prototype.has=w,y.prototype.set=v;const Z=y},"./node_modules/lodash-es/_Stack.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>u});var o=s("./node_modules/lodash-es/_ListCache.js");const i=function(){this.__data__=new o.Z,this.size=0};const r=function(e){var t=this.__data__,s=t.delete(e);return this.size=t.size,s};const n=function(e){return this.__data__.get(e)};const a=function(e){return this.__data__.has(e)};var c=s("./node_modules/lodash-es/_Map.js"),l=s("./node_modules/lodash-es/_MapCache.js");const d=function(e,t){var s=this.__data__;if(s instanceof o.Z){var i=s.__data__;if(!c.Z||i.length<199)return i.push([e,t]),this.size=++s.size,this;s=this.__data__=new l.Z(i)}return s.set(e,t),this.size=s.size,this};function h(e){var t=this.__data__=new o.Z(e);this.size=t.size}h.prototype.clear=i,h.prototype.delete=r,h.prototype.get=n,h.prototype.has=a,h.prototype.set=d;const u=h},"./node_modules/lodash-es/_Symbol.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o=s("./node_modules/lodash-es/_root.js").Z.Symbol},"./node_modules/lodash-es/_Uint8Array.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o=s("./node_modules/lodash-es/_root.js").Z.Uint8Array},"./node_modules/lodash-es/_arrayLikeKeys.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>d});const o=function(e,t){for(var s=-1,o=Array(e);++s<e;)o[s]=t(s);return o};var i=s("./node_modules/lodash-es/isArguments.js"),r=s("./node_modules/lodash-es/isArray.js"),n=s("./node_modules/lodash-es/isBuffer.js"),a=s("./node_modules/lodash-es/_isIndex.js"),c=s("./node_modules/lodash-es/isTypedArray.js"),l=Object.prototype.hasOwnProperty;const d=function(e,t){var s=(0,r.Z)(e),d=!s&&(0,i.Z)(e),h=!s&&!d&&(0,n.Z)(e),u=!s&&!d&&!h&&(0,c.Z)(e),p=s||d||h||u,g=p?o(e.length,String):[],f=g.length;for(var m in e)!t&&!l.call(e,m)||p&&("length"==m||h&&("offset"==m||"parent"==m)||u&&("buffer"==m||"byteLength"==m||"byteOffset"==m)||(0,a.Z)(m,f))||g.push(m);return g}},"./node_modules/lodash-es/_arrayPush.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o=function(e,t){for(var s=-1,o=t.length,i=e.length;++s<o;)e[i+s]=t[s];return e}},"./node_modules/lodash-es/_assignValue.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>n});var o=s("./node_modules/lodash-es/_baseAssignValue.js"),i=s("./node_modules/lodash-es/eq.js"),r=Object.prototype.hasOwnProperty;const n=function(e,t,s){var n=e[t];r.call(e,t)&&(0,i.Z)(n,s)&&(void 0!==s||t in e)||(0,o.Z)(e,t,s)}},"./node_modules/lodash-es/_baseAssignValue.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./node_modules/lodash-es/_defineProperty.js");const i=function(e,t,s){"__proto__"==t&&o.Z?(0,o.Z)(e,t,{configurable:!0,enumerable:!0,value:s,writable:!0}):e[t]=s}},"./node_modules/lodash-es/_baseClone.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>Y});var o=s("./node_modules/lodash-es/_Stack.js");const i=function(e,t){for(var s=-1,o=null==e?0:e.length;++s<o&&!1!==t(e[s],s,e););return e};var r=s("./node_modules/lodash-es/_assignValue.js"),n=s("./node_modules/lodash-es/_copyObject.js"),a=s("./node_modules/lodash-es/keys.js");const c=function(e,t){return e&&(0,n.Z)(t,(0,a.Z)(t),e)};var l=s("./node_modules/lodash-es/keysIn.js");const d=function(e,t){return e&&(0,n.Z)(t,(0,l.Z)(t),e)};var h=s("./node_modules/lodash-es/_cloneBuffer.js"),u=s("./node_modules/lodash-es/_copyArray.js"),p=s("./node_modules/lodash-es/_getSymbols.js");const g=function(e,t){return(0,n.Z)(e,(0,p.Z)(e),t)};var f=s("./node_modules/lodash-es/_arrayPush.js"),m=s("./node_modules/lodash-es/_getPrototype.js"),k=s("./node_modules/lodash-es/stubArray.js");const b=Object.getOwnPropertySymbols?function(e){for(var t=[];e;)(0,f.Z)(t,(0,p.Z)(e)),e=(0,m.Z)(e);return t}:k.Z;const _=function(e,t){return(0,n.Z)(e,b(e),t)};var w=s("./node_modules/lodash-es/_getAllKeys.js"),v=s("./node_modules/lodash-es/_baseGetAllKeys.js");const y=function(e){return(0,v.Z)(e,l.Z,b)};var Z=s("./node_modules/lodash-es/_getTag.js"),P=Object.prototype.hasOwnProperty;const x=function(e){var t=e.length,s=new e.constructor(t);return t&&"string"==typeof e[0]&&P.call(e,"index")&&(s.index=e.index,s.input=e.input),s};var T=s("./node_modules/lodash-es/_cloneArrayBuffer.js");const A=function(e,t){var s=t?(0,T.Z)(e.buffer):e.buffer;return new e.constructor(s,e.byteOffset,e.byteLength)};var C=/\w*$/;const E=function(e){var t=new e.constructor(e.source,C.exec(e));return t.lastIndex=e.lastIndex,t};var S=s("./node_modules/lodash-es/_Symbol.js"),j=S.Z?S.Z.prototype:void 0,O=j?j.valueOf:void 0;const R=function(e){return O?Object(O.call(e)):{}};var M=s("./node_modules/lodash-es/_cloneTypedArray.js");const N=function(e,t,s){var o=e.constructor;switch(t){case"[object ArrayBuffer]":return(0,T.Z)(e);case"[object Boolean]":case"[object Date]":return new o(+e);case"[object DataView]":return A(e,s);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return(0,M.Z)(e,s);case"[object Map]":case"[object Set]":return new o;case"[object Number]":case"[object String]":return new o(e);case"[object RegExp]":return E(e);case"[object Symbol]":return R(e)}};var V=s("./node_modules/lodash-es/_initCloneObject.js"),I=s("./node_modules/lodash-es/isArray.js"),D=s("./node_modules/lodash-es/isBuffer.js"),z=s("./node_modules/lodash-es/isObjectLike.js");const B=function(e){return(0,z.Z)(e)&&"[object Map]"==(0,Z.Z)(e)};var F=s("./node_modules/lodash-es/_baseUnary.js"),L=s("./node_modules/lodash-es/_nodeUtil.js"),W=L.Z&&L.Z.isMap;const $=W?(0,F.Z)(W):B;var q=s("./node_modules/lodash-es/isObject.js");const H=function(e){return(0,z.Z)(e)&&"[object Set]"==(0,Z.Z)(e)};var U=L.Z&&L.Z.isSet;const K=U?(0,F.Z)(U):H;var G="[object Arguments]",J="[object Function]",Q="[object Object]",X={};X[G]=X["[object Array]"]=X["[object ArrayBuffer]"]=X["[object DataView]"]=X["[object Boolean]"]=X["[object Date]"]=X["[object Float32Array]"]=X["[object Float64Array]"]=X["[object Int8Array]"]=X["[object Int16Array]"]=X["[object Int32Array]"]=X["[object Map]"]=X["[object Number]"]=X[Q]=X["[object RegExp]"]=X["[object Set]"]=X["[object String]"]=X["[object Symbol]"]=X["[object Uint8Array]"]=X["[object Uint8ClampedArray]"]=X["[object Uint16Array]"]=X["[object Uint32Array]"]=!0,X["[object Error]"]=X[J]=X["[object WeakMap]"]=!1;const Y=function e(t,s,n,p,f,m){var k,b=1&s,v=2&s,P=4&s;if(n&&(k=f?n(t,p,f,m):n(t)),void 0!==k)return k;if(!(0,q.Z)(t))return t;var T=(0,I.Z)(t);if(T){if(k=x(t),!b)return(0,u.Z)(t,k)}else{var A=(0,Z.Z)(t),C=A==J||"[object GeneratorFunction]"==A;if((0,D.Z)(t))return(0,h.Z)(t,b);if(A==Q||A==G||C&&!f){if(k=v||C?{}:(0,V.Z)(t),!b)return v?_(t,d(k,t)):g(t,c(k,t))}else{if(!X[A])return f?t:{};k=N(t,A,b)}}m||(m=new o.Z);var E=m.get(t);if(E)return E;m.set(t,k),K(t)?t.forEach((function(o){k.add(e(o,s,n,o,t,m))})):$(t)&&t.forEach((function(o,i){k.set(i,e(o,s,n,i,t,m))}));var S=P?v?y:w.Z:v?l.Z:a.Z,j=T?void 0:S(t);return i(j||t,(function(o,i){j&&(o=t[i=o]),(0,r.Z)(k,i,e(o,s,n,i,t,m))})),k}},"./node_modules/lodash-es/_baseGetAllKeys.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/lodash-es/_arrayPush.js"),i=s("./node_modules/lodash-es/isArray.js");const r=function(e,t,s){var r=t(e);return(0,i.Z)(e)?r:(0,o.Z)(r,s(e))}},"./node_modules/lodash-es/_baseGetTag.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>u});var o=s("./node_modules/lodash-es/_Symbol.js"),i=Object.prototype,r=i.hasOwnProperty,n=i.toString,a=o.Z?o.Z.toStringTag:void 0;const c=function(e){var t=r.call(e,a),s=e[a];try{e[a]=void 0;var o=!0}catch(e){}var i=n.call(e);return o&&(t?e[a]=s:delete e[a]),i};var l=Object.prototype.toString;const d=function(e){return l.call(e)};var h=o.Z?o.Z.toStringTag:void 0;const u=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":h&&h in Object(e)?c(e):d(e)}},"./node_modules/lodash-es/_baseIsEqual.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>R});var o=s("./node_modules/lodash-es/_Stack.js"),i=s("./node_modules/lodash-es/_MapCache.js");const r=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this};const n=function(e){return this.__data__.has(e)};function a(e){var t=-1,s=null==e?0:e.length;for(this.__data__=new i.Z;++t<s;)this.add(e[t])}a.prototype.add=a.prototype.push=r,a.prototype.has=n;const c=a;const l=function(e,t){for(var s=-1,o=null==e?0:e.length;++s<o;)if(t(e[s],s,e))return!0;return!1};const d=function(e,t){return e.has(t)};const h=function(e,t,s,o,i,r){var n=1&s,a=e.length,h=t.length;if(a!=h&&!(n&&h>a))return!1;var u=r.get(e),p=r.get(t);if(u&&p)return u==t&&p==e;var g=-1,f=!0,m=2&s?new c:void 0;for(r.set(e,t),r.set(t,e);++g<a;){var k=e[g],b=t[g];if(o)var _=n?o(b,k,g,t,e,r):o(k,b,g,e,t,r);if(void 0!==_){if(_)continue;f=!1;break}if(m){if(!l(t,(function(e,t){if(!d(m,t)&&(k===e||i(k,e,s,o,r)))return m.push(t)}))){f=!1;break}}else if(k!==b&&!i(k,b,s,o,r)){f=!1;break}}return r.delete(e),r.delete(t),f};var u=s("./node_modules/lodash-es/_Symbol.js"),p=s("./node_modules/lodash-es/_Uint8Array.js"),g=s("./node_modules/lodash-es/eq.js");const f=function(e){var t=-1,s=Array(e.size);return e.forEach((function(e,o){s[++t]=[o,e]})),s};const m=function(e){var t=-1,s=Array(e.size);return e.forEach((function(e){s[++t]=e})),s};var k=u.Z?u.Z.prototype:void 0,b=k?k.valueOf:void 0;const _=function(e,t,s,o,i,r,n){switch(s){case"[object DataView]":if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case"[object ArrayBuffer]":return!(e.byteLength!=t.byteLength||!r(new p.Z(e),new p.Z(t)));case"[object Boolean]":case"[object Date]":case"[object Number]":return(0,g.Z)(+e,+t);case"[object Error]":return e.name==t.name&&e.message==t.message;case"[object RegExp]":case"[object String]":return e==t+"";case"[object Map]":var a=f;case"[object Set]":var c=1&o;if(a||(a=m),e.size!=t.size&&!c)return!1;var l=n.get(e);if(l)return l==t;o|=2,n.set(e,t);var d=h(a(e),a(t),o,i,r,n);return n.delete(e),d;case"[object Symbol]":if(b)return b.call(e)==b.call(t)}return!1};var w=s("./node_modules/lodash-es/_getAllKeys.js"),v=Object.prototype.hasOwnProperty;const y=function(e,t,s,o,i,r){var n=1&s,a=(0,w.Z)(e),c=a.length;if(c!=(0,w.Z)(t).length&&!n)return!1;for(var l=c;l--;){var d=a[l];if(!(n?d in t:v.call(t,d)))return!1}var h=r.get(e),u=r.get(t);if(h&&u)return h==t&&u==e;var p=!0;r.set(e,t),r.set(t,e);for(var g=n;++l<c;){var f=e[d=a[l]],m=t[d];if(o)var k=n?o(m,f,d,t,e,r):o(f,m,d,e,t,r);if(!(void 0===k?f===m||i(f,m,s,o,r):k)){p=!1;break}g||(g="constructor"==d)}if(p&&!g){var b=e.constructor,_=t.constructor;b==_||!("constructor"in e)||!("constructor"in t)||"function"==typeof b&&b instanceof b&&"function"==typeof _&&_ instanceof _||(p=!1)}return r.delete(e),r.delete(t),p};var Z=s("./node_modules/lodash-es/_getTag.js"),P=s("./node_modules/lodash-es/isArray.js"),x=s("./node_modules/lodash-es/isBuffer.js"),T=s("./node_modules/lodash-es/isTypedArray.js"),A="[object Arguments]",C="[object Array]",E="[object Object]",S=Object.prototype.hasOwnProperty;const j=function(e,t,s,i,r,n){var a=(0,P.Z)(e),c=(0,P.Z)(t),l=a?C:(0,Z.Z)(e),d=c?C:(0,Z.Z)(t),u=(l=l==A?E:l)==E,p=(d=d==A?E:d)==E,g=l==d;if(g&&(0,x.Z)(e)){if(!(0,x.Z)(t))return!1;a=!0,u=!1}if(g&&!u)return n||(n=new o.Z),a||(0,T.Z)(e)?h(e,t,s,i,r,n):_(e,t,l,s,i,r,n);if(!(1&s)){var f=u&&S.call(e,"__wrapped__"),m=p&&S.call(t,"__wrapped__");if(f||m){var k=f?e.value():e,b=m?t.value():t;return n||(n=new o.Z),r(k,b,s,i,n)}}return!!g&&(n||(n=new o.Z),y(e,t,s,i,r,n))};var O=s("./node_modules/lodash-es/isObjectLike.js");const R=function e(t,s,o,i,r){return t===s||(null==t||null==s||!(0,O.Z)(t)&&!(0,O.Z)(s)?t!=t&&s!=s:j(t,s,o,i,e,r))}},"./node_modules/lodash-es/_baseUnary.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o=function(e){return function(t){return e(t)}}},"./node_modules/lodash-es/_cloneArrayBuffer.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./node_modules/lodash-es/_Uint8Array.js");const i=function(e){var t=new e.constructor(e.byteLength);return new o.Z(t).set(new o.Z(e)),t}},"./node_modules/lodash-es/_cloneBuffer.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>c});var o=s("./node_modules/lodash-es/_root.js"),i="object"==typeof exports&&exports&&!exports.nodeType&&exports,r=i&&"object"==typeof module&&module&&!module.nodeType&&module,n=r&&r.exports===i?o.Z.Buffer:void 0,a=n?n.allocUnsafe:void 0;const c=function(e,t){if(t)return e.slice();var s=e.length,o=a?a(s):new e.constructor(s);return e.copy(o),o}},"./node_modules/lodash-es/_cloneTypedArray.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./node_modules/lodash-es/_cloneArrayBuffer.js");const i=function(e,t){var s=t?(0,o.Z)(e.buffer):e.buffer;return new e.constructor(s,e.byteOffset,e.length)}},"./node_modules/lodash-es/_copyArray.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o=function(e,t){var s=-1,o=e.length;for(t||(t=Array(o));++s<o;)t[s]=e[s];return t}},"./node_modules/lodash-es/_copyObject.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/lodash-es/_assignValue.js"),i=s("./node_modules/lodash-es/_baseAssignValue.js");const r=function(e,t,s,r){var n=!s;s||(s={});for(var a=-1,c=t.length;++a<c;){var l=t[a],d=r?r(s[l],e[l],l,s,e):void 0;void 0===d&&(d=e[l]),n?(0,i.Z)(s,l,d):(0,o.Z)(s,l,d)}return s}},"./node_modules/lodash-es/_createAssigner.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>b});const o=function(e){return e};const i=function(e,t,s){switch(s.length){case 0:return e.call(t);case 1:return e.call(t,s[0]);case 2:return e.call(t,s[0],s[1]);case 3:return e.call(t,s[0],s[1],s[2])}return e.apply(t,s)};var r=Math.max;const n=function(e,t,s){return t=r(void 0===t?e.length-1:t,0),function(){for(var o=arguments,n=-1,a=r(o.length-t,0),c=Array(a);++n<a;)c[n]=o[t+n];n=-1;for(var l=Array(t+1);++n<t;)l[n]=o[n];return l[t]=s(c),i(e,this,l)}};const a=function(e){return function(){return e}};var c=s("./node_modules/lodash-es/_defineProperty.js");const l=c.Z?function(e,t){return(0,c.Z)(e,"toString",{configurable:!0,enumerable:!1,value:a(t),writable:!0})}:o;var d=Date.now;const h=function(e){var t=0,s=0;return function(){var o=d(),i=16-(o-s);if(s=o,i>0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}(l);const u=function(e,t){return h(n(e,t,o),e+"")};var p=s("./node_modules/lodash-es/eq.js"),g=s("./node_modules/lodash-es/isArrayLike.js"),f=s("./node_modules/lodash-es/_isIndex.js"),m=s("./node_modules/lodash-es/isObject.js");const k=function(e,t,s){if(!(0,m.Z)(s))return!1;var o=typeof t;return!!("number"==o?(0,g.Z)(s)&&(0,f.Z)(t,s.length):"string"==o&&t in s)&&(0,p.Z)(s[t],e)};const b=function(e){return u((function(t,s){var o=-1,i=s.length,r=i>1?s[i-1]:void 0,n=i>2?s[2]:void 0;for(r=e.length>3&&"function"==typeof r?(i--,r):void 0,n&&k(s[0],s[1],n)&&(r=i<3?void 0:r,i=1),t=Object(t);++o<i;){var a=s[o];a&&e(t,a,o,r)}return t}))}},"./node_modules/lodash-es/_defineProperty.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./node_modules/lodash-es/_getNative.js");const i=function(){try{var e=(0,o.Z)(Object,"defineProperty");return e({},"",{}),e}catch(e){}}()},"./node_modules/lodash-es/_freeGlobal.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o="object"==typeof global&&global&&global.Object===Object&&global},"./node_modules/lodash-es/_getAllKeys.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>n});var o=s("./node_modules/lodash-es/_baseGetAllKeys.js"),i=s("./node_modules/lodash-es/_getSymbols.js"),r=s("./node_modules/lodash-es/keys.js");const n=function(e){return(0,o.Z)(e,r.Z,i.Z)}},"./node_modules/lodash-es/_getNative.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>b});var o=s("./node_modules/lodash-es/isFunction.js");const i=s("./node_modules/lodash-es/_root.js").Z["__core-js_shared__"];var r,n=(r=/[^.]+$/.exec(i&&i.keys&&i.keys.IE_PROTO||""))?"Symbol(src)_1."+r:"";const a=function(e){return!!n&&n in e};var c=s("./node_modules/lodash-es/isObject.js"),l=s("./node_modules/lodash-es/_toSource.js"),d=/^\[object .+?Constructor\]$/,h=Function.prototype,u=Object.prototype,p=h.toString,g=u.hasOwnProperty,f=RegExp("^"+p.call(g).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");const m=function(e){return!(!(0,c.Z)(e)||a(e))&&((0,o.Z)(e)?f:d).test((0,l.Z)(e))};const k=function(e,t){return null==e?void 0:e[t]};const b=function(e,t){var s=k(e,t);return m(s)?s:void 0}},"./node_modules/lodash-es/_getPrototype.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o=(0,s("./node_modules/lodash-es/_overArg.js").Z)(Object.getPrototypeOf,Object)},"./node_modules/lodash-es/_getSymbols.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>a});const o=function(e,t){for(var s=-1,o=null==e?0:e.length,i=0,r=[];++s<o;){var n=e[s];t(n,s,e)&&(r[i++]=n)}return r};var i=s("./node_modules/lodash-es/stubArray.js"),r=Object.prototype.propertyIsEnumerable,n=Object.getOwnPropertySymbols;const a=n?function(e){return null==e?[]:(e=Object(e),o(n(e),(function(t){return r.call(e,t)})))}:i.Z},"./node_modules/lodash-es/_getTag.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>Z});var o=s("./node_modules/lodash-es/_getNative.js"),i=s("./node_modules/lodash-es/_root.js");const r=(0,o.Z)(i.Z,"DataView");var n=s("./node_modules/lodash-es/_Map.js");const a=(0,o.Z)(i.Z,"Promise");const c=(0,o.Z)(i.Z,"Set");const l=(0,o.Z)(i.Z,"WeakMap");var d=s("./node_modules/lodash-es/_baseGetTag.js"),h=s("./node_modules/lodash-es/_toSource.js"),u="[object Map]",p="[object Promise]",g="[object Set]",f="[object WeakMap]",m="[object DataView]",k=(0,h.Z)(r),b=(0,h.Z)(n.Z),_=(0,h.Z)(a),w=(0,h.Z)(c),v=(0,h.Z)(l),y=d.Z;(r&&y(new r(new ArrayBuffer(1)))!=m||n.Z&&y(new n.Z)!=u||a&&y(a.resolve())!=p||c&&y(new c)!=g||l&&y(new l)!=f)&&(y=function(e){var t=(0,d.Z)(e),s="[object Object]"==t?e.constructor:void 0,o=s?(0,h.Z)(s):"";if(o)switch(o){case k:return m;case b:return u;case _:return p;case w:return g;case v:return f}return t});const Z=y},"./node_modules/lodash-es/_initCloneObject.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>c});var o=s("./node_modules/lodash-es/isObject.js"),i=Object.create;const r=function(){function e(){}return function(t){if(!(0,o.Z)(t))return{};if(i)return i(t);e.prototype=t;var s=new e;return e.prototype=void 0,s}}();var n=s("./node_modules/lodash-es/_getPrototype.js"),a=s("./node_modules/lodash-es/_isPrototype.js");const c=function(e){return"function"!=typeof e.constructor||(0,a.Z)(e)?{}:r((0,n.Z)(e))}},"./node_modules/lodash-es/_isIndex.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=/^(?:0|[1-9]\d*)$/;const i=function(e,t){var s=typeof e;return!!(t=null==t?9007199254740991:t)&&("number"==s||"symbol"!=s&&o.test(e))&&e>-1&&e%1==0&&e<t}},"./node_modules/lodash-es/_isPrototype.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=Object.prototype;const i=function(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||o)}},"./node_modules/lodash-es/_nodeUtil.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>a});var o=s("./node_modules/lodash-es/_freeGlobal.js"),i="object"==typeof exports&&exports&&!exports.nodeType&&exports,r=i&&"object"==typeof module&&module&&!module.nodeType&&module,n=r&&r.exports===i&&o.Z.process;const a=function(){try{var e=r&&r.require&&r.require("util").types;return e||n&&n.binding&&n.binding("util")}catch(e){}}()},"./node_modules/lodash-es/_overArg.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o=function(e,t){return function(s){return e(t(s))}}},"./node_modules/lodash-es/_root.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/lodash-es/_freeGlobal.js"),i="object"==typeof self&&self&&self.Object===Object&&self;const r=o.Z||i||Function("return this")()},"./node_modules/lodash-es/_toSource.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=Function.prototype.toString;const i=function(e){if(null!=e){try{return o.call(e)}catch(e){}try{return e+""}catch(e){}}return""}},"./node_modules/lodash-es/assignIn.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>n});var o=s("./node_modules/lodash-es/_copyObject.js"),i=s("./node_modules/lodash-es/_createAssigner.js"),r=s("./node_modules/lodash-es/keysIn.js");const n=(0,i.Z)((function(e,t){(0,o.Z)(t,(0,r.Z)(t),e)}))},"./node_modules/lodash-es/clone.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./node_modules/lodash-es/_baseClone.js");const i=function(e){return(0,o.Z)(e,4)}},"./node_modules/lodash-es/cloneDeep.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./node_modules/lodash-es/_baseClone.js");const i=function(e){return(0,o.Z)(e,5)}},"./node_modules/lodash-es/cloneDeepWith.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./node_modules/lodash-es/_baseClone.js");const i=function(e,t){return t="function"==typeof t?t:void 0,(0,o.Z)(e,5,t)}},"./node_modules/lodash-es/debounce.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>b});var o=s("./node_modules/lodash-es/isObject.js"),i=s("./node_modules/lodash-es/_root.js");const r=function(){return i.Z.Date.now()};var n=/\s/;const a=function(e){for(var t=e.length;t--&&n.test(e.charAt(t)););return t};var c=/^\s+/;const l=function(e){return e?e.slice(0,a(e)+1).replace(c,""):e};var d=s("./node_modules/lodash-es/isSymbol.js"),h=/^[-+]0x[0-9a-f]+$/i,u=/^0b[01]+$/i,p=/^0o[0-7]+$/i,g=parseInt;const f=function(e){if("number"==typeof e)return e;if((0,d.Z)(e))return NaN;if((0,o.Z)(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=(0,o.Z)(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=l(e);var s=u.test(e);return s||p.test(e)?g(e.slice(2),s?2:8):h.test(e)?NaN:+e};var m=Math.max,k=Math.min;const b=function(e,t,s){var i,n,a,c,l,d,h=0,u=!1,p=!1,g=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function b(t){var s=i,o=n;return i=n=void 0,h=t,c=e.apply(o,s)}function _(e){return h=e,l=setTimeout(v,t),u?b(e):c}function w(e){var s=e-d;return void 0===d||s>=t||s<0||p&&e-h>=a}function v(){var e=r();if(w(e))return y(e);l=setTimeout(v,function(e){var s=t-(e-d);return p?k(s,a-(e-h)):s}(e))}function y(e){return l=void 0,g&&i?b(e):(i=n=void 0,c)}function Z(){var e=r(),s=w(e);if(i=arguments,n=this,d=e,s){if(void 0===l)return _(d);if(p)return clearTimeout(l),l=setTimeout(v,t),b(d)}return void 0===l&&(l=setTimeout(v,t)),c}return t=f(t)||0,(0,o.Z)(s)&&(u=!!s.leading,a=(p="maxWait"in s)?m(f(s.maxWait)||0,t):a,g="trailing"in s?!!s.trailing:g),Z.cancel=function(){void 0!==l&&clearTimeout(l),h=0,i=d=n=l=void 0},Z.flush=function(){return void 0===l?c:y(r())},Z}},"./node_modules/lodash-es/eq.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o=function(e,t){return e===t||e!=e&&t!=t}},"./node_modules/lodash-es/isArguments.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>l});var o=s("./node_modules/lodash-es/_baseGetTag.js"),i=s("./node_modules/lodash-es/isObjectLike.js");const r=function(e){return(0,i.Z)(e)&&"[object Arguments]"==(0,o.Z)(e)};var n=Object.prototype,a=n.hasOwnProperty,c=n.propertyIsEnumerable;const l=r(function(){return arguments}())?r:function(e){return(0,i.Z)(e)&&a.call(e,"callee")&&!c.call(e,"callee")}},"./node_modules/lodash-es/isArray.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o=Array.isArray},"./node_modules/lodash-es/isArrayLike.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/lodash-es/isFunction.js"),i=s("./node_modules/lodash-es/isLength.js");const r=function(e){return null!=e&&(0,i.Z)(e.length)&&!(0,o.Z)(e)}},"./node_modules/lodash-es/isBuffer.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>c});var o=s("./node_modules/lodash-es/_root.js");const i=function(){return!1};var r="object"==typeof exports&&exports&&!exports.nodeType&&exports,n=r&&"object"==typeof module&&module&&!module.nodeType&&module,a=n&&n.exports===r?o.Z.Buffer:void 0;const c=(a?a.isBuffer:void 0)||i},"./node_modules/lodash-es/isElement.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/lodash-es/isObjectLike.js"),i=s("./node_modules/lodash-es/isPlainObject.js");const r=function(e){return(0,o.Z)(e)&&1===e.nodeType&&!(0,i.Z)(e)}},"./node_modules/lodash-es/isFunction.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/lodash-es/_baseGetTag.js"),i=s("./node_modules/lodash-es/isObject.js");const r=function(e){if(!(0,i.Z)(e))return!1;var t=(0,o.Z)(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}},"./node_modules/lodash-es/isLength.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o=function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}},"./node_modules/lodash-es/isObject.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},"./node_modules/lodash-es/isObjectLike.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o=function(e){return null!=e&&"object"==typeof e}},"./node_modules/lodash-es/isPlainObject.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>h});var o=s("./node_modules/lodash-es/_baseGetTag.js"),i=s("./node_modules/lodash-es/_getPrototype.js"),r=s("./node_modules/lodash-es/isObjectLike.js"),n=Function.prototype,a=Object.prototype,c=n.toString,l=a.hasOwnProperty,d=c.call(Object);const h=function(e){if(!(0,r.Z)(e)||"[object Object]"!=(0,o.Z)(e))return!1;var t=(0,i.Z)(e);if(null===t)return!0;var s=l.call(t,"constructor")&&t.constructor;return"function"==typeof s&&s instanceof s&&c.call(s)==d}},"./node_modules/lodash-es/isSymbol.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/lodash-es/_baseGetTag.js"),i=s("./node_modules/lodash-es/isObjectLike.js");const r=function(e){return"symbol"==typeof e||(0,i.Z)(e)&&"[object Symbol]"==(0,o.Z)(e)}},"./node_modules/lodash-es/isTypedArray.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>h});var o=s("./node_modules/lodash-es/_baseGetTag.js"),i=s("./node_modules/lodash-es/isLength.js"),r=s("./node_modules/lodash-es/isObjectLike.js"),n={};n["[object Float32Array]"]=n["[object Float64Array]"]=n["[object Int8Array]"]=n["[object Int16Array]"]=n["[object Int32Array]"]=n["[object Uint8Array]"]=n["[object Uint8ClampedArray]"]=n["[object Uint16Array]"]=n["[object Uint32Array]"]=!0,n["[object Arguments]"]=n["[object Array]"]=n["[object ArrayBuffer]"]=n["[object Boolean]"]=n["[object DataView]"]=n["[object Date]"]=n["[object Error]"]=n["[object Function]"]=n["[object Map]"]=n["[object Number]"]=n["[object Object]"]=n["[object RegExp]"]=n["[object Set]"]=n["[object String]"]=n["[object WeakMap]"]=!1;const a=function(e){return(0,r.Z)(e)&&(0,i.Z)(e.length)&&!!n[(0,o.Z)(e)]};var c=s("./node_modules/lodash-es/_baseUnary.js"),l=s("./node_modules/lodash-es/_nodeUtil.js"),d=l.Z&&l.Z.isTypedArray;const h=d?(0,c.Z)(d):a},"./node_modules/lodash-es/keys.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>l});var o=s("./node_modules/lodash-es/_arrayLikeKeys.js"),i=s("./node_modules/lodash-es/_isPrototype.js");const r=(0,s("./node_modules/lodash-es/_overArg.js").Z)(Object.keys,Object);var n=Object.prototype.hasOwnProperty;const a=function(e){if(!(0,i.Z)(e))return r(e);var t=[];for(var s in Object(e))n.call(e,s)&&"constructor"!=s&&t.push(s);return t};var c=s("./node_modules/lodash-es/isArrayLike.js");const l=function(e){return(0,c.Z)(e)?(0,o.Z)(e):a(e)}},"./node_modules/lodash-es/keysIn.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>d});var o=s("./node_modules/lodash-es/_arrayLikeKeys.js"),i=s("./node_modules/lodash-es/isObject.js"),r=s("./node_modules/lodash-es/_isPrototype.js");const n=function(e){var t=[];if(null!=e)for(var s in Object(e))t.push(s);return t};var a=Object.prototype.hasOwnProperty;const c=function(e){if(!(0,i.Z)(e))return n(e);var t=(0,r.Z)(e),s=[];for(var o in e)("constructor"!=o||!t&&a.call(e,o))&&s.push(o);return s};var l=s("./node_modules/lodash-es/isArrayLike.js");const d=function(e){return(0,l.Z)(e)?(0,o.Z)(e,!0):c(e)}},"./node_modules/lodash-es/stubArray.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o=function(){return[]}},"./node_modules/lodash-es/throttle.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/lodash-es/debounce.js"),i=s("./node_modules/lodash-es/isObject.js");const r=function(e,t,s){var r=!0,n=!0;if("function"!=typeof e)throw new TypeError("Expected a function");return(0,i.Z)(s)&&(r="leading"in s?!!s.leading:r,n="trailing"in s?!!s.trailing:n),(0,o.Z)(e,t,{leading:r,maxWait:t,trailing:n})}},"./node_modules/lodash-es/toString.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>d});var o=s("./node_modules/lodash-es/_Symbol.js");const i=function(e,t){for(var s=-1,o=null==e?0:e.length,i=Array(o);++s<o;)i[s]=t(e[s],s,e);return i};var r=s("./node_modules/lodash-es/isArray.js"),n=s("./node_modules/lodash-es/isSymbol.js"),a=o.Z?o.Z.prototype:void 0,c=a?a.toString:void 0;const l=function e(t){if("string"==typeof t)return t;if((0,r.Z)(t))return i(t,e)+"";if((0,n.Z)(t))return c?c.call(t):"";var s=t+"";return"0"==s&&1/t==-Infinity?"-0":s};const d=function(e){return null==e?"":l(e)}}},t={};function s(o){var i=t[o];if(void 0!==i)return i.exports;var r=t[o]={id:o,exports:{}};return e[o](r,r.exports,s),r.exports}s.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return s.d(t,{a:t}),t},s.d=(e,t)=>{for(var o in t)s.o(t,o)&&!s.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},s.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),s.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),s.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.nc=void 0;var o=s("?7cdd");(window.CKEditor5=window.CKEditor5||{}).dll=o})(),function(e){e.CKEditor5=e.CKEditor5||{};const t=["utils","core","engine","ui","clipboard","enter","paragraph","select-all","typing","undo","upload","widget"];for(const s of t){const t=s.replace(/-([a-z])/g,((e,t)=>t.toUpperCase()));e.CKEditor5[t]=e.CKEditor5.dll(`./src/${s}.js`)}}(window);
\ No newline at end of file
+ */(()=>{var e={"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-clipboard/theme/clipboard.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,'.ck.ck-editor__editable .ck.ck-clipboard-drop-target-position{display:inline;pointer-events:none;position:relative}.ck.ck-editor__editable .ck.ck-clipboard-drop-target-position span{position:absolute;width:0}.ck.ck-editor__editable .ck-widget:-webkit-drag>.ck-widget__selection-handle,.ck.ck-editor__editable .ck-widget:-webkit-drag>.ck-widget__type-around{display:none}:root{--ck-clipboard-drop-target-dot-width:12px;--ck-clipboard-drop-target-dot-height:8px;--ck-clipboard-drop-target-color:var(--ck-color-focus-border)}.ck.ck-editor__editable .ck.ck-clipboard-drop-target-position span{background:var(--ck-clipboard-drop-target-color);border:1px solid var(--ck-clipboard-drop-target-color);bottom:calc(var(--ck-clipboard-drop-target-dot-height)*-.5);margin-left:-1px;top:calc(var(--ck-clipboard-drop-target-dot-height)*-.5)}.ck.ck-editor__editable .ck.ck-clipboard-drop-target-position span:after{border-color:var(--ck-clipboard-drop-target-color) transparent transparent transparent;border-style:solid;border-width:calc(var(--ck-clipboard-drop-target-dot-height)) calc(var(--ck-clipboard-drop-target-dot-width)*.5) 0 calc(var(--ck-clipboard-drop-target-dot-width)*.5);content:"";display:block;height:0;left:50%;position:absolute;top:calc(var(--ck-clipboard-drop-target-dot-height)*-.5);transform:translateX(-50%);width:0}.ck.ck-editor__editable .ck-widget.ck-clipboard-drop-target-range{outline:var(--ck-widget-outline-thickness) solid var(--ck-clipboard-drop-target-color)!important}.ck.ck-editor__editable .ck-widget:-webkit-drag{zoom:.6;outline:none!important}',""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-engine/theme/placeholder.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck .ck-placeholder,.ck.ck-placeholder{position:relative}.ck .ck-placeholder:before,.ck.ck-placeholder:before{content:attr(data-placeholder);left:0;pointer-events:none;position:absolute;right:0}.ck.ck-read-only .ck-placeholder:before{display:none}.ck.ck-reset_all .ck-placeholder{position:relative}.ck .ck-placeholder:before,.ck.ck-placeholder:before{color:var(--ck-color-engine-placeholder-text);cursor:text}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-engine/theme/renderer.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck.ck-editor__editable span[data-ck-unsafe-element]{display:none}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/button/button.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck.ck-button,a.ck.ck-button{align-items:center;display:inline-flex;justify-content:left;position:relative;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.ck.ck-button .ck-button__label,a.ck.ck-button .ck-button__label{display:none}.ck.ck-button.ck-button_with-text .ck-button__label,a.ck.ck-button.ck-button_with-text .ck-button__label{display:inline-block}.ck.ck-button:not(.ck-button_with-text),a.ck.ck-button:not(.ck-button_with-text){justify-content:center}.ck.ck-button,a.ck.ck-button{background:var(--ck-color-button-default-background)}.ck.ck-button:not(.ck-disabled):hover,a.ck.ck-button:not(.ck-disabled):hover{background:var(--ck-color-button-default-hover-background)}.ck.ck-button:not(.ck-disabled):active,a.ck.ck-button:not(.ck-disabled):active{background:var(--ck-color-button-default-active-background)}.ck.ck-button.ck-disabled,a.ck.ck-button.ck-disabled{background:var(--ck-color-button-default-disabled-background)}.ck.ck-button,a.ck.ck-button{border-radius:0}.ck-rounded-corners .ck.ck-button,.ck-rounded-corners a.ck.ck-button,.ck.ck-button.ck-rounded-corners,a.ck.ck-button.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-button,a.ck.ck-button{-webkit-appearance:none;border:1px solid transparent;cursor:default;font-size:inherit;line-height:1;min-height:var(--ck-ui-component-min-height);min-width:var(--ck-ui-component-min-height);padding:var(--ck-spacing-tiny);text-align:center;transition:box-shadow .2s ease-in-out,border .2s ease-in-out;vertical-align:middle;white-space:nowrap}.ck.ck-button:active,.ck.ck-button:focus,a.ck.ck-button:active,a.ck.ck-button:focus{border:var(--ck-focus-ring);box-shadow:var(--ck-focus-outer-shadow),0 0;outline:none}.ck.ck-button .ck-button__icon use,.ck.ck-button .ck-button__icon use *,a.ck.ck-button .ck-button__icon use,a.ck.ck-button .ck-button__icon use *{color:inherit}.ck.ck-button .ck-button__label,a.ck.ck-button .ck-button__label{color:inherit;cursor:inherit;font-size:inherit;font-weight:inherit;vertical-align:middle}[dir=ltr] .ck.ck-button .ck-button__label,[dir=ltr] a.ck.ck-button .ck-button__label{text-align:left}[dir=rtl] .ck.ck-button .ck-button__label,[dir=rtl] a.ck.ck-button .ck-button__label{text-align:right}.ck.ck-button .ck-button__keystroke,a.ck.ck-button .ck-button__keystroke{color:inherit}[dir=ltr] .ck.ck-button .ck-button__keystroke,[dir=ltr] a.ck.ck-button .ck-button__keystroke{margin-left:var(--ck-spacing-large)}[dir=rtl] .ck.ck-button .ck-button__keystroke,[dir=rtl] a.ck.ck-button .ck-button__keystroke{margin-right:var(--ck-spacing-large)}.ck.ck-button .ck-button__keystroke,a.ck.ck-button .ck-button__keystroke{font-weight:700;opacity:.7}.ck.ck-button.ck-disabled:active,.ck.ck-button.ck-disabled:focus,a.ck.ck-button.ck-disabled:active,a.ck.ck-button.ck-disabled:focus{box-shadow:var(--ck-focus-disabled-outer-shadow),0 0}.ck.ck-button.ck-disabled .ck-button__icon,.ck.ck-button.ck-disabled .ck-button__label,a.ck.ck-button.ck-disabled .ck-button__icon,a.ck.ck-button.ck-disabled .ck-button__label{opacity:var(--ck-disabled-opacity)}.ck.ck-button.ck-disabled .ck-button__keystroke,a.ck.ck-button.ck-disabled .ck-button__keystroke{opacity:.3}.ck.ck-button.ck-button_with-text,a.ck.ck-button.ck-button_with-text{padding:var(--ck-spacing-tiny) var(--ck-spacing-standard)}[dir=ltr] .ck.ck-button.ck-button_with-text .ck-button__icon,[dir=ltr] a.ck.ck-button.ck-button_with-text .ck-button__icon{margin-left:calc(var(--ck-spacing-small)*-1);margin-right:var(--ck-spacing-small)}[dir=rtl] .ck.ck-button.ck-button_with-text .ck-button__icon,[dir=rtl] a.ck.ck-button.ck-button_with-text .ck-button__icon{margin-left:var(--ck-spacing-small);margin-right:calc(var(--ck-spacing-small)*-1)}.ck.ck-button.ck-button_with-keystroke .ck-button__label,a.ck.ck-button.ck-button_with-keystroke .ck-button__label{flex-grow:1}.ck.ck-button.ck-on,a.ck.ck-button.ck-on{background:var(--ck-color-button-on-background)}.ck.ck-button.ck-on:not(.ck-disabled):hover,a.ck.ck-button.ck-on:not(.ck-disabled):hover{background:var(--ck-color-button-on-hover-background)}.ck.ck-button.ck-on:not(.ck-disabled):active,a.ck.ck-button.ck-on:not(.ck-disabled):active{background:var(--ck-color-button-on-active-background)}.ck.ck-button.ck-on.ck-disabled,a.ck.ck-button.ck-on.ck-disabled{background:var(--ck-color-button-on-disabled-background)}.ck.ck-button.ck-on,a.ck.ck-button.ck-on{color:var(--ck-color-button-on-color)}.ck.ck-button.ck-button-save,a.ck.ck-button.ck-button-save{color:var(--ck-color-button-save)}.ck.ck-button.ck-button-cancel,a.ck.ck-button.ck-button-cancel{color:var(--ck-color-button-cancel)}.ck.ck-button-action,a.ck.ck-button-action{background:var(--ck-color-button-action-background)}.ck.ck-button-action:not(.ck-disabled):hover,a.ck.ck-button-action:not(.ck-disabled):hover{background:var(--ck-color-button-action-hover-background)}.ck.ck-button-action:not(.ck-disabled):active,a.ck.ck-button-action:not(.ck-disabled):active{background:var(--ck-color-button-action-active-background)}.ck.ck-button-action.ck-disabled,a.ck.ck-button-action.ck-disabled{background:var(--ck-color-button-action-disabled-background)}.ck.ck-button-action,a.ck.ck-button-action{color:var(--ck-color-button-action-text)}.ck.ck-button-bold,a.ck.ck-button-bold{font-weight:700}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/button/switchbutton.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck.ck-button.ck-switchbutton .ck-button__toggle,.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner{display:block}:root{--ck-switch-button-toggle-width:2.6153846154em;--ck-switch-button-toggle-inner-size:calc(1.07692em + 1px);--ck-switch-button-translation:calc(var(--ck-switch-button-toggle-width) - var(--ck-switch-button-toggle-inner-size) - 2px);--ck-switch-button-inner-hover-shadow:0 0 0 5px var(--ck-color-switch-button-inner-shadow)}[dir=ltr] .ck.ck-button.ck-switchbutton .ck-button__label{margin-right:calc(var(--ck-spacing-large)*2)}[dir=rtl] .ck.ck-button.ck-switchbutton .ck-button__label{margin-left:calc(var(--ck-spacing-large)*2)}.ck.ck-button.ck-switchbutton .ck-button__toggle{border-radius:0}.ck-rounded-corners .ck.ck-button.ck-switchbutton .ck-button__toggle,.ck.ck-button.ck-switchbutton .ck-button__toggle.ck-rounded-corners{border-radius:var(--ck-border-radius)}[dir=ltr] .ck.ck-button.ck-switchbutton .ck-button__toggle{margin-left:auto}[dir=rtl] .ck.ck-button.ck-switchbutton .ck-button__toggle{margin-right:auto}.ck.ck-button.ck-switchbutton .ck-button__toggle{background:var(--ck-color-switch-button-off-background);border:1px solid transparent;transition:background .4s ease,box-shadow .2s ease-in-out,outline .2s ease-in-out;width:var(--ck-switch-button-toggle-width)}.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner{border-radius:0}.ck-rounded-corners .ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner,.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner.ck-rounded-corners{border-radius:var(--ck-border-radius);border-radius:calc(var(--ck-border-radius)*.5)}.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner{background:var(--ck-color-switch-button-inner-background);height:var(--ck-switch-button-toggle-inner-size);transition:all .3s ease;width:var(--ck-switch-button-toggle-inner-size)}.ck.ck-button.ck-switchbutton .ck-button__toggle:hover{background:var(--ck-color-switch-button-off-hover-background)}.ck.ck-button.ck-switchbutton .ck-button__toggle:hover .ck-button__toggle__inner{box-shadow:var(--ck-switch-button-inner-hover-shadow)}.ck.ck-button.ck-switchbutton.ck-disabled .ck-button__toggle{opacity:var(--ck-disabled-opacity)}.ck.ck-button.ck-switchbutton:focus{border-color:transparent;box-shadow:none;outline:none}.ck.ck-button.ck-switchbutton:focus .ck-button__toggle{box-shadow:0 0 0 1px var(--ck-color-base-background),0 0 0 5px var(--ck-color-focus-outer-shadow);outline:var(--ck-focus-ring);outline-offset:1px}.ck.ck-button.ck-switchbutton.ck-on .ck-button__toggle{background:var(--ck-color-switch-button-on-background)}.ck.ck-button.ck-switchbutton.ck-on .ck-button__toggle:hover{background:var(--ck-color-switch-button-on-hover-background)}[dir=ltr] .ck.ck-button.ck-switchbutton.ck-on .ck-button__toggle .ck-button__toggle__inner{transform:translateX(var( --ck-switch-button-translation ))}[dir=rtl] .ck.ck-button.ck-switchbutton.ck-on .ck-button__toggle .ck-button__toggle__inner{transform:translateX(calc(var( --ck-switch-button-translation )*-1))}.ck.ck-button.ck-switchbutton.ck-on:active,.ck.ck-button.ck-switchbutton:active{background:transparent}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/colorgrid/colorgrid.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck.ck-color-grid{display:grid}:root{--ck-color-grid-tile-size:24px;--ck-color-color-grid-check-icon:#166fd4}.ck.ck-color-grid{grid-gap:5px;padding:8px}.ck.ck-color-grid__tile{border:0;height:var(--ck-color-grid-tile-size);min-height:var(--ck-color-grid-tile-size);min-width:var(--ck-color-grid-tile-size);padding:0;transition:box-shadow .2s ease;width:var(--ck-color-grid-tile-size)}.ck.ck-color-grid__tile.ck-disabled{cursor:unset;transition:unset}.ck.ck-color-grid__tile.ck-color-table__color-tile_bordered{box-shadow:0 0 0 1px var(--ck-color-base-border)}.ck.ck-color-grid__tile .ck.ck-icon{color:var(--ck-color-color-grid-check-icon);display:none}.ck.ck-color-grid__tile.ck-on{box-shadow:inset 0 0 0 1px var(--ck-color-base-background),0 0 0 2px var(--ck-color-base-text)}.ck.ck-color-grid__tile.ck-on .ck.ck-icon{display:block}.ck.ck-color-grid__tile.ck-on,.ck.ck-color-grid__tile:focus:not(.ck-disabled),.ck.ck-color-grid__tile:hover:not(.ck-disabled){border:0}.ck.ck-color-grid__tile:focus:not(.ck-disabled),.ck.ck-color-grid__tile:hover:not(.ck-disabled){box-shadow:inset 0 0 0 1px var(--ck-color-base-background),0 0 0 2px var(--ck-color-focus-border)}.ck.ck-color-grid__label{padding:0 var(--ck-spacing-standard)}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/dropdown/dropdown.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,":root{--ck-dropdown-max-width:75vw}.ck.ck-dropdown{display:inline-block;position:relative}.ck.ck-dropdown .ck-dropdown__arrow{pointer-events:none;z-index:var(--ck-z-default)}.ck.ck-dropdown .ck-button.ck-dropdown__button{width:100%}.ck.ck-dropdown .ck-dropdown__panel{display:none;max-width:var(--ck-dropdown-max-width);position:absolute;z-index:var(--ck-z-modal)}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel-visible{display:inline-block}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_n,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_ne,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nme,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nmw,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nw{bottom:100%}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_s,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_se,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_sme,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_smw,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_sw{bottom:auto;top:100%}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_ne,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_se{left:0}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nw,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_sw{right:0}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_n,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_s{left:50%;transform:translateX(-50%)}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nmw,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_smw{left:75%;transform:translateX(-75%)}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nme,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_sme{left:25%;transform:translateX(-25%)}.ck.ck-toolbar .ck-dropdown__panel{z-index:calc(var(--ck-z-modal) + 1)}:root{--ck-dropdown-arrow-size:calc(var(--ck-icon-size)*0.5)}.ck.ck-dropdown{font-size:inherit}.ck.ck-dropdown .ck-dropdown__arrow{width:var(--ck-dropdown-arrow-size)}[dir=ltr] .ck.ck-dropdown .ck-dropdown__arrow{margin-left:var(--ck-spacing-standard);right:var(--ck-spacing-standard)}[dir=rtl] .ck.ck-dropdown .ck-dropdown__arrow{left:var(--ck-spacing-standard);margin-right:var(--ck-spacing-small)}.ck.ck-dropdown.ck-disabled .ck-dropdown__arrow{opacity:var(--ck-disabled-opacity)}[dir=ltr] .ck.ck-dropdown .ck-button.ck-dropdown__button:not(.ck-button_with-text){padding-left:var(--ck-spacing-small)}[dir=rtl] .ck.ck-dropdown .ck-button.ck-dropdown__button:not(.ck-button_with-text){padding-right:var(--ck-spacing-small)}.ck.ck-dropdown .ck-button.ck-dropdown__button .ck-button__label{overflow:hidden;text-overflow:ellipsis;width:7em}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-disabled .ck-button__label{opacity:var(--ck-disabled-opacity)}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-on{border-bottom-left-radius:0;border-bottom-right-radius:0}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-dropdown__button_label-width_auto .ck-button__label{width:auto}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-off:active,.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-on:active{box-shadow:none}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-off:active:focus,.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-on:active:focus{box-shadow:var(--ck-focus-outer-shadow),0 0}.ck.ck-dropdown__panel{border-radius:0}.ck-rounded-corners .ck.ck-dropdown__panel,.ck.ck-dropdown__panel.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-dropdown__panel{background:var(--ck-color-dropdown-panel-background);border:1px solid var(--ck-color-dropdown-panel-border);bottom:0;box-shadow:var(--ck-drop-shadow),0 0;min-width:100%}.ck.ck-dropdown__panel.ck-dropdown__panel_se{border-top-left-radius:0}.ck.ck-dropdown__panel.ck-dropdown__panel_sw{border-top-right-radius:0}.ck.ck-dropdown__panel.ck-dropdown__panel_ne{border-bottom-left-radius:0}.ck.ck-dropdown__panel.ck-dropdown__panel_nw{border-bottom-right-radius:0}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/dropdown/listdropdown.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck.ck-dropdown .ck-dropdown__panel .ck-list{border-radius:0}.ck-rounded-corners .ck.ck-dropdown .ck-dropdown__panel .ck-list,.ck.ck-dropdown .ck-dropdown__panel .ck-list.ck-rounded-corners{border-radius:var(--ck-border-radius);border-top-left-radius:0}.ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:first-child .ck-button{border-radius:0}.ck-rounded-corners .ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:first-child .ck-button,.ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:first-child .ck-button.ck-rounded-corners{border-radius:var(--ck-border-radius);border-bottom-left-radius:0;border-bottom-right-radius:0;border-top-left-radius:0}.ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:last-child .ck-button{border-radius:0}.ck-rounded-corners .ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:last-child .ck-button,.ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:last-child .ck-button.ck-rounded-corners{border-radius:var(--ck-border-radius);border-top-left-radius:0;border-top-right-radius:0}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/dropdown/splitbutton.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,'.ck.ck-splitbutton{font-size:inherit}.ck.ck-splitbutton .ck-splitbutton__action:focus{z-index:calc(var(--ck-z-default) + 1)}:root{--ck-color-split-button-hover-background:#ebebeb;--ck-color-split-button-hover-border:#b3b3b3}[dir=ltr] .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__action,[dir=ltr] .ck.ck-splitbutton:hover>.ck-splitbutton__action{border-bottom-right-radius:unset;border-top-right-radius:unset}[dir=rtl] .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__action,[dir=rtl] .ck.ck-splitbutton:hover>.ck-splitbutton__action{border-bottom-left-radius:unset;border-top-left-radius:unset}.ck.ck-splitbutton>.ck-splitbutton__arrow{min-width:unset}[dir=ltr] .ck.ck-splitbutton>.ck-splitbutton__arrow{border-bottom-left-radius:unset;border-top-left-radius:unset}[dir=rtl] .ck.ck-splitbutton>.ck-splitbutton__arrow{border-bottom-right-radius:unset;border-top-right-radius:unset}.ck.ck-splitbutton>.ck-splitbutton__arrow svg{width:var(--ck-dropdown-arrow-size)}.ck.ck-splitbutton.ck-splitbutton_open>.ck-button:not(.ck-on):not(.ck-disabled):not(:hover),.ck.ck-splitbutton:hover>.ck-button:not(.ck-on):not(.ck-disabled):not(:hover){background:var(--ck-color-split-button-hover-background)}.ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled):after,.ck.ck-splitbutton:hover>.ck-splitbutton__arrow:not(.ck-disabled):after{background-color:var(--ck-color-split-button-hover-border);content:"";height:100%;position:absolute;width:1px}[dir=ltr] .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled):after,[dir=ltr] .ck.ck-splitbutton:hover>.ck-splitbutton__arrow:not(.ck-disabled):after{left:-1px}[dir=rtl] .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled):after,[dir=rtl] .ck.ck-splitbutton:hover>.ck-splitbutton__arrow:not(.ck-disabled):after{right:-1px}.ck.ck-splitbutton.ck-splitbutton_open{border-radius:0}.ck-rounded-corners .ck.ck-splitbutton.ck-splitbutton_open,.ck.ck-splitbutton.ck-splitbutton_open.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck-rounded-corners .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__action,.ck.ck-splitbutton.ck-splitbutton_open.ck-rounded-corners>.ck-splitbutton__action{border-bottom-left-radius:0}.ck-rounded-corners .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__arrow,.ck.ck-splitbutton.ck-splitbutton_open.ck-rounded-corners>.ck-splitbutton__arrow{border-bottom-right-radius:0}',""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/dropdown/toolbardropdown.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,":root{--ck-toolbar-dropdown-max-width:60vw}.ck.ck-toolbar-dropdown>.ck-dropdown__panel{max-width:var(--ck-toolbar-dropdown-max-width);width:max-content}.ck.ck-toolbar-dropdown>.ck-dropdown__panel .ck-button:focus{z-index:calc(var(--ck-z-default) + 1)}.ck.ck-toolbar-dropdown .ck-toolbar{border:0}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/editorui/editorui.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,":root{--ck-color-editable-blur-selection:#d9d9d9}.ck.ck-editor__editable:not(.ck-editor__nested-editable){border-radius:0}.ck-rounded-corners .ck.ck-editor__editable:not(.ck-editor__nested-editable),.ck.ck-editor__editable.ck-rounded-corners:not(.ck-editor__nested-editable){border-radius:var(--ck-border-radius)}.ck.ck-editor__editable.ck-focused:not(.ck-editor__nested-editable){border:var(--ck-focus-ring);box-shadow:var(--ck-inner-shadow),0 0;outline:none}.ck.ck-editor__editable_inline{border:1px solid transparent;overflow:auto;padding:0 var(--ck-spacing-standard)}.ck.ck-editor__editable_inline[dir=ltr]{text-align:left}.ck.ck-editor__editable_inline[dir=rtl]{text-align:right}.ck.ck-editor__editable_inline>:first-child{margin-top:var(--ck-spacing-large)}.ck.ck-editor__editable_inline>:last-child{margin-bottom:var(--ck-spacing-large)}.ck.ck-editor__editable_inline.ck-blurred ::selection{background:var(--ck-color-editable-blur-selection)}.ck.ck-balloon-panel.ck-toolbar-container[class*=arrow_n]:after{border-bottom-color:var(--ck-color-base-foreground)}.ck.ck-balloon-panel.ck-toolbar-container[class*=arrow_s]:after{border-top-color:var(--ck-color-base-foreground)}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/formheader/formheader.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck.ck-form__header{align-items:center;display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-between}:root{--ck-form-header-height:38px}.ck.ck-form__header{border-bottom:1px solid var(--ck-color-base-border);height:var(--ck-form-header-height);line-height:var(--ck-form-header-height);padding:var(--ck-spacing-small) var(--ck-spacing-large)}.ck.ck-form__header .ck-form__header__label{font-weight:700}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/icon/icon.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck.ck-icon{vertical-align:middle}:root{--ck-icon-size:calc(var(--ck-line-height-base)*var(--ck-font-size-normal))}.ck.ck-icon{font-size:.8333350694em;height:var(--ck-icon-size);width:var(--ck-icon-size);will-change:transform}.ck.ck-icon,.ck.ck-icon *{color:inherit;cursor:inherit}.ck.ck-icon :not([fill]){fill:currentColor}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/input/input.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,":root{--ck-input-width:18em;--ck-input-text-width:var(--ck-input-width)}.ck.ck-input{border-radius:0}.ck-rounded-corners .ck.ck-input,.ck.ck-input.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-input{background:var(--ck-color-input-background);border:1px solid var(--ck-color-input-border);min-height:var(--ck-ui-component-min-height);min-width:var(--ck-input-width);padding:var(--ck-spacing-extra-tiny) var(--ck-spacing-medium);transition:box-shadow .1s ease-in-out,border .1s ease-in-out}.ck.ck-input:focus{border:var(--ck-focus-ring);box-shadow:var(--ck-focus-outer-shadow),0 0;outline:none}.ck.ck-input[readonly]{background:var(--ck-color-input-disabled-background);border:1px solid var(--ck-color-input-disabled-border);color:var(--ck-color-input-disabled-text)}.ck.ck-input[readonly]:focus{box-shadow:var(--ck-focus-disabled-outer-shadow),0 0}.ck.ck-input.ck-error{animation:ck-input-shake .3s ease both;border-color:var(--ck-color-input-error-border)}.ck.ck-input.ck-error:focus{box-shadow:var(--ck-focus-error-outer-shadow),0 0}@keyframes ck-input-shake{20%{transform:translateX(-2px)}40%{transform:translateX(2px)}60%{transform:translateX(-1px)}80%{transform:translateX(1px)}}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/label/label.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck.ck-label{display:block}.ck.ck-voice-label{display:none}.ck.ck-label{font-weight:700}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/labeledfield/labeledfieldview.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper{display:flex;position:relative}.ck.ck-labeled-field-view .ck.ck-label{display:block;position:absolute}:root{--ck-labeled-field-view-transition:.1s cubic-bezier(0,0,0.24,0.95);--ck-labeled-field-empty-unfocused-max-width:100% - 2 * var(--ck-spacing-medium);--ck-color-labeled-field-label-background:var(--ck-color-base-background)}.ck.ck-labeled-field-view{border-radius:0}.ck-rounded-corners .ck.ck-labeled-field-view,.ck.ck-labeled-field-view.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper{width:100%}.ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{top:0}[dir=ltr] .ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{left:0}[dir=rtl] .ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{right:0}.ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{background:var(--ck-color-labeled-field-label-background);font-weight:400;line-height:normal;max-width:100%;overflow:hidden;padding:0 calc(var(--ck-font-size-tiny)*.5);pointer-events:none;text-overflow:ellipsis;transform:translate(var(--ck-spacing-medium),-6px) scale(.75);transform-origin:0 0;transition:transform var(--ck-labeled-field-view-transition),padding var(--ck-labeled-field-view-transition),background var(--ck-labeled-field-view-transition)}.ck.ck-labeled-field-view.ck-error .ck-input:not([readonly])+.ck.ck-label,.ck.ck-labeled-field-view.ck-error>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{color:var(--ck-color-base-error)}.ck.ck-labeled-field-view .ck-labeled-field-view__status{font-size:var(--ck-font-size-small);margin-top:var(--ck-spacing-small);white-space:normal}.ck.ck-labeled-field-view .ck-labeled-field-view__status.ck-labeled-field-view__status_error{color:var(--ck-color-base-error)}.ck.ck-labeled-field-view.ck-disabled>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label,.ck.ck-labeled-field-view.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused)>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{color:var(--ck-color-input-disabled-text)}[dir=ltr] .ck.ck-labeled-field-view.ck-disabled.ck-labeled-field-view_empty>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label,[dir=ltr] .ck.ck-labeled-field-view.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused):not(.ck-labeled-field-view_placeholder)>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{transform:translate(var(--ck-spacing-medium),calc(var(--ck-font-size-base)*.6)) scale(1)}[dir=rtl] .ck.ck-labeled-field-view.ck-disabled.ck-labeled-field-view_empty>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label,[dir=rtl] .ck.ck-labeled-field-view.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused):not(.ck-labeled-field-view_placeholder)>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{transform:translate(calc(var(--ck-spacing-medium)*-1),calc(var(--ck-font-size-base)*.6)) scale(1)}.ck.ck-labeled-field-view.ck-disabled.ck-labeled-field-view_empty>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label,.ck.ck-labeled-field-view.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused):not(.ck-labeled-field-view_placeholder)>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{background:transparent;max-width:calc(var(--ck-labeled-field-empty-unfocused-max-width));padding:0}.ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper>.ck-dropdown>.ck.ck-button{background:transparent}.ck.ck-labeled-field-view.ck-labeled-field-view_empty>.ck.ck-labeled-field-view__input-wrapper>.ck-dropdown>.ck-button>.ck-button__label{opacity:0}.ck.ck-labeled-field-view.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused):not(.ck-labeled-field-view_placeholder)>.ck.ck-labeled-field-view__input-wrapper>.ck-dropdown+.ck-label{max-width:calc(var(--ck-labeled-field-empty-unfocused-max-width) - var(--ck-dropdown-arrow-size) - var(--ck-spacing-standard))}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/list/list.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck.ck-list{display:flex;flex-direction:column;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.ck.ck-list .ck-list__item,.ck.ck-list .ck-list__separator{display:block}.ck.ck-list .ck-list__item>:focus{position:relative;z-index:var(--ck-z-default)}.ck.ck-list{border-radius:0}.ck-rounded-corners .ck.ck-list,.ck.ck-list.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-list{background:var(--ck-color-list-background);list-style-type:none}.ck.ck-list__item{cursor:default;min-width:12em}.ck.ck-list__item .ck-button{border-radius:0;min-height:unset;padding:calc(var(--ck-line-height-base)*.2*var(--ck-font-size-base)) calc(var(--ck-line-height-base)*.4*var(--ck-font-size-base));text-align:left;width:100%}.ck.ck-list__item .ck-button .ck-button__label{line-height:calc(var(--ck-line-height-base)*1.2*var(--ck-font-size-base))}.ck.ck-list__item .ck-button:active{box-shadow:none}.ck.ck-list__item .ck-button.ck-on{background:var(--ck-color-list-button-on-background);color:var(--ck-color-list-button-on-text)}.ck.ck-list__item .ck-button.ck-on:active{box-shadow:none}.ck.ck-list__item .ck-button.ck-on:hover:not(.ck-disabled){background:var(--ck-color-list-button-on-background-focus)}.ck.ck-list__item .ck-button.ck-on:focus:not(.ck-switchbutton):not(.ck-disabled){border-color:var(--ck-color-base-background)}.ck.ck-list__item .ck-button:hover:not(.ck-disabled){background:var(--ck-color-list-button-hover-background)}.ck.ck-list__item .ck-switchbutton.ck-on{background:var(--ck-color-list-background);color:inherit}.ck.ck-list__item .ck-switchbutton.ck-on:hover:not(.ck-disabled){background:var(--ck-color-list-button-hover-background);color:inherit}.ck.ck-list__separator{background:var(--ck-color-base-border);height:1px;width:100%}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/panel/balloonpanel.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,':root{--ck-balloon-panel-arrow-z-index:calc(var(--ck-z-default) - 3)}.ck.ck-balloon-panel{display:none;position:absolute;z-index:var(--ck-z-modal)}.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:after,.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:before{content:"";position:absolute}.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:before{z-index:var(--ck-balloon-panel-arrow-z-index)}.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:after{z-index:calc(var(--ck-balloon-panel-arrow-z-index) + 1)}.ck.ck-balloon-panel[class*=arrow_n]:before{z-index:var(--ck-balloon-panel-arrow-z-index)}.ck.ck-balloon-panel[class*=arrow_n]:after{z-index:calc(var(--ck-balloon-panel-arrow-z-index) + 1)}.ck.ck-balloon-panel[class*=arrow_s]:before{z-index:var(--ck-balloon-panel-arrow-z-index)}.ck.ck-balloon-panel[class*=arrow_s]:after{z-index:calc(var(--ck-balloon-panel-arrow-z-index) + 1)}.ck.ck-balloon-panel.ck-balloon-panel_visible{display:block}:root{--ck-balloon-border-width:1px;--ck-balloon-arrow-offset:2px;--ck-balloon-arrow-height:10px;--ck-balloon-arrow-half-width:8px;--ck-balloon-arrow-drop-shadow:0 2px 2px var(--ck-color-shadow-drop)}.ck.ck-balloon-panel{border-radius:0}.ck-rounded-corners .ck.ck-balloon-panel,.ck.ck-balloon-panel.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-balloon-panel{background:var(--ck-color-panel-background);border:var(--ck-balloon-border-width) solid var(--ck-color-panel-border);box-shadow:var(--ck-drop-shadow),0 0;min-height:15px}.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:after,.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:before{border-style:solid;height:0;width:0}.ck.ck-balloon-panel[class*=arrow_n]:after,.ck.ck-balloon-panel[class*=arrow_n]:before{border-width:0 var(--ck-balloon-arrow-half-width) var(--ck-balloon-arrow-height) var(--ck-balloon-arrow-half-width)}.ck.ck-balloon-panel[class*=arrow_n]:before{border-color:transparent transparent var(--ck-color-panel-border) transparent;margin-top:calc(var(--ck-balloon-border-width)*-1)}.ck.ck-balloon-panel[class*=arrow_n]:after{border-color:transparent transparent var(--ck-color-panel-background) transparent;margin-top:calc(var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width))}.ck.ck-balloon-panel[class*=arrow_s]:after,.ck.ck-balloon-panel[class*=arrow_s]:before{border-width:var(--ck-balloon-arrow-height) var(--ck-balloon-arrow-half-width) 0 var(--ck-balloon-arrow-half-width)}.ck.ck-balloon-panel[class*=arrow_s]:before{border-color:var(--ck-color-panel-border) transparent transparent;filter:drop-shadow(var(--ck-balloon-arrow-drop-shadow));margin-bottom:calc(var(--ck-balloon-border-width)*-1)}.ck.ck-balloon-panel[class*=arrow_s]:after{border-color:var(--ck-color-panel-background) transparent transparent transparent;margin-bottom:calc(var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width))}.ck.ck-balloon-panel[class*=arrow_e]:after,.ck.ck-balloon-panel[class*=arrow_e]:before{border-width:var(--ck-balloon-arrow-half-width) 0 var(--ck-balloon-arrow-half-width) var(--ck-balloon-arrow-height)}.ck.ck-balloon-panel[class*=arrow_e]:before{border-color:transparent transparent transparent var(--ck-color-panel-border);margin-right:calc(var(--ck-balloon-border-width)*-1)}.ck.ck-balloon-panel[class*=arrow_e]:after{border-color:transparent transparent transparent var(--ck-color-panel-background);margin-right:calc(var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width))}.ck.ck-balloon-panel[class*=arrow_w]:after,.ck.ck-balloon-panel[class*=arrow_w]:before{border-width:var(--ck-balloon-arrow-half-width) var(--ck-balloon-arrow-height) var(--ck-balloon-arrow-half-width) 0}.ck.ck-balloon-panel[class*=arrow_w]:before{border-color:transparent var(--ck-color-panel-border) transparent transparent;margin-left:calc(var(--ck-balloon-border-width)*-1)}.ck.ck-balloon-panel[class*=arrow_w]:after{border-color:transparent var(--ck-color-panel-background) transparent transparent;margin-left:calc(var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width))}.ck.ck-balloon-panel.ck-balloon-panel_arrow_n:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_n:before{left:50%;margin-left:calc(var(--ck-balloon-arrow-half-width)*-1);top:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_nw:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_nw:before{left:calc(var(--ck-balloon-arrow-half-width)*2);top:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_ne:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_ne:before{right:calc(var(--ck-balloon-arrow-half-width)*2);top:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_s:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_s:before{bottom:calc(var(--ck-balloon-arrow-height)*-1);left:50%;margin-left:calc(var(--ck-balloon-arrow-half-width)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_sw:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_sw:before{bottom:calc(var(--ck-balloon-arrow-height)*-1);left:calc(var(--ck-balloon-arrow-half-width)*2)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_se:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_se:before{bottom:calc(var(--ck-balloon-arrow-height)*-1);right:calc(var(--ck-balloon-arrow-half-width)*2)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_sme:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_sme:before{bottom:calc(var(--ck-balloon-arrow-height)*-1);margin-right:calc(var(--ck-balloon-arrow-half-width)*2);right:25%}.ck.ck-balloon-panel.ck-balloon-panel_arrow_smw:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_smw:before{bottom:calc(var(--ck-balloon-arrow-height)*-1);left:25%;margin-left:calc(var(--ck-balloon-arrow-half-width)*2)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_nme:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_nme:before{margin-right:calc(var(--ck-balloon-arrow-half-width)*2);right:25%;top:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_nmw:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_nmw:before{left:25%;margin-left:calc(var(--ck-balloon-arrow-half-width)*2);top:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_e:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_e:before{margin-top:calc(var(--ck-balloon-arrow-half-width)*-1);right:calc(var(--ck-balloon-arrow-height)*-1);top:50%}.ck.ck-balloon-panel.ck-balloon-panel_arrow_w:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_w:before{left:calc(var(--ck-balloon-arrow-height)*-1);margin-top:calc(var(--ck-balloon-arrow-half-width)*-1);top:50%}',""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/panel/balloonrotator.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck .ck-balloon-rotator__navigation{align-items:center;display:flex;justify-content:center}.ck .ck-balloon-rotator__content .ck-toolbar{justify-content:center}.ck .ck-balloon-rotator__navigation{background:var(--ck-color-toolbar-background);border-bottom:1px solid var(--ck-color-toolbar-border);padding:0 var(--ck-spacing-small)}.ck .ck-balloon-rotator__navigation>*{margin-bottom:var(--ck-spacing-small);margin-right:var(--ck-spacing-small);margin-top:var(--ck-spacing-small)}.ck .ck-balloon-rotator__navigation .ck-balloon-rotator__counter{margin-left:var(--ck-spacing-small);margin-right:var(--ck-spacing-standard)}.ck .ck-balloon-rotator__content .ck.ck-annotation-wrapper{box-shadow:none}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/panel/fakepanel.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck .ck-fake-panel{position:absolute;z-index:calc(var(--ck-z-modal) - 1)}.ck .ck-fake-panel div{position:absolute}.ck .ck-fake-panel div:first-child{z-index:2}.ck .ck-fake-panel div:nth-child(2){z-index:1}:root{--ck-balloon-fake-panel-offset-horizontal:6px;--ck-balloon-fake-panel-offset-vertical:6px}.ck .ck-fake-panel div{background:var(--ck-color-panel-background);border:1px solid var(--ck-color-panel-border);border-radius:var(--ck-border-radius);box-shadow:var(--ck-drop-shadow),0 0;height:100%;min-height:15px;width:100%}.ck .ck-fake-panel div:first-child{margin-left:var(--ck-balloon-fake-panel-offset-horizontal);margin-top:var(--ck-balloon-fake-panel-offset-vertical)}.ck .ck-fake-panel div:nth-child(2){margin-left:calc(var(--ck-balloon-fake-panel-offset-horizontal)*2);margin-top:calc(var(--ck-balloon-fake-panel-offset-vertical)*2)}.ck .ck-fake-panel div:nth-child(3){margin-left:calc(var(--ck-balloon-fake-panel-offset-horizontal)*3);margin-top:calc(var(--ck-balloon-fake-panel-offset-vertical)*3)}.ck .ck-balloon-panel_arrow_s+.ck-fake-panel,.ck .ck-balloon-panel_arrow_se+.ck-fake-panel,.ck .ck-balloon-panel_arrow_sw+.ck-fake-panel{--ck-balloon-fake-panel-offset-vertical:-6px}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/panel/stickypanel.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck.ck-sticky-panel .ck-sticky-panel__content_sticky{position:fixed;top:0;z-index:var(--ck-z-modal)}.ck.ck-sticky-panel .ck-sticky-panel__content_sticky_bottom-limit{position:absolute;top:auto}.ck.ck-sticky-panel .ck-sticky-panel__content_sticky{border-top-left-radius:0;border-top-right-radius:0;border-width:0 1px 1px;box-shadow:var(--ck-drop-shadow),0 0}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/toolbar/blocktoolbar.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck.ck-block-toolbar-button{position:absolute;z-index:var(--ck-z-default)}:root{--ck-color-block-toolbar-button:var(--ck-color-text);--ck-block-toolbar-button-size:var(--ck-font-size-normal)}.ck.ck-block-toolbar-button{color:var(--ck-color-block-toolbar-button);font-size:var(--ck-block-toolbar-size)}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/toolbar/toolbar.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck.ck-toolbar{align-items:center;display:flex;flex-flow:row nowrap;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.ck.ck-toolbar>.ck-toolbar__items{align-items:center;display:flex;flex-flow:row wrap;flex-grow:1}.ck.ck-toolbar .ck.ck-toolbar__separator{display:inline-block}.ck.ck-toolbar .ck.ck-toolbar__separator:first-child,.ck.ck-toolbar .ck.ck-toolbar__separator:last-child{display:none}.ck.ck-toolbar .ck-toolbar__line-break{flex-basis:100%}.ck.ck-toolbar.ck-toolbar_grouping>.ck-toolbar__items{flex-wrap:nowrap}.ck.ck-toolbar.ck-toolbar_vertical>.ck-toolbar__items{flex-direction:column}.ck.ck-toolbar.ck-toolbar_floating>.ck-toolbar__items{flex-wrap:nowrap}.ck.ck-toolbar>.ck.ck-toolbar__grouped-dropdown>.ck-dropdown__button .ck-dropdown__arrow{display:none}.ck.ck-toolbar{border-radius:0}.ck-rounded-corners .ck.ck-toolbar,.ck.ck-toolbar.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-toolbar{background:var(--ck-color-toolbar-background);border:1px solid var(--ck-color-toolbar-border);padding:0 var(--ck-spacing-small)}.ck.ck-toolbar .ck.ck-toolbar__separator{align-self:stretch;background:var(--ck-color-toolbar-border);margin-bottom:var(--ck-spacing-small);margin-top:var(--ck-spacing-small);min-width:1px;width:1px}.ck.ck-toolbar .ck-toolbar__line-break{height:0}.ck.ck-toolbar>.ck-toolbar__items>:not(.ck-toolbar__line-break){margin-right:var(--ck-spacing-small)}.ck.ck-toolbar>.ck-toolbar__items:empty+.ck.ck-toolbar__separator{display:none}.ck.ck-toolbar>.ck-toolbar__items>:not(.ck-toolbar__line-break),.ck.ck-toolbar>.ck.ck-toolbar__grouped-dropdown{margin-bottom:var(--ck-spacing-small);margin-top:var(--ck-spacing-small)}.ck.ck-toolbar.ck-toolbar_vertical{padding:0}.ck.ck-toolbar.ck-toolbar_vertical>.ck-toolbar__items>.ck{border-radius:0;margin:0;width:100%}.ck.ck-toolbar.ck-toolbar_compact{padding:0}.ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>*{margin:0}.ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>:not(:first-child):not(:last-child){border-radius:0}.ck.ck-toolbar>.ck.ck-toolbar__grouped-dropdown>.ck.ck-button.ck-dropdown__button{padding-left:var(--ck-spacing-tiny)}.ck.ck-toolbar .ck-toolbar__nested-toolbar-dropdown>.ck-dropdown__panel{min-width:auto}.ck.ck-toolbar .ck-toolbar__nested-toolbar-dropdown>.ck-button>.ck-button__label{max-width:7em;width:auto}.ck-toolbar-container .ck.ck-toolbar{border:0}.ck.ck-toolbar[dir=rtl]>.ck-toolbar__items>.ck,[dir=rtl] .ck.ck-toolbar>.ck-toolbar__items>.ck{margin-right:0}.ck.ck-toolbar[dir=rtl]:not(.ck-toolbar_compact)>.ck-toolbar__items>.ck,[dir=rtl] .ck.ck-toolbar:not(.ck-toolbar_compact)>.ck-toolbar__items>.ck{margin-left:var(--ck-spacing-small)}.ck.ck-toolbar[dir=rtl]>.ck-toolbar__items>.ck:last-child,[dir=rtl] .ck.ck-toolbar>.ck-toolbar__items>.ck:last-child{margin-left:0}.ck.ck-toolbar.ck-toolbar_compact[dir=rtl]>.ck-toolbar__items>.ck:first-child,[dir=rtl] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.ck.ck-toolbar.ck-toolbar_compact[dir=rtl]>.ck-toolbar__items>.ck:last-child,[dir=rtl] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:last-child{border-bottom-right-radius:0;border-top-right-radius:0}.ck.ck-toolbar.ck-toolbar_grouping[dir=rtl]>.ck-toolbar__items:not(:empty):not(:only-child),.ck.ck-toolbar[dir=rtl]>.ck.ck-toolbar__separator,[dir=rtl] .ck.ck-toolbar.ck-toolbar_grouping>.ck-toolbar__items:not(:empty):not(:only-child),[dir=rtl] .ck.ck-toolbar>.ck.ck-toolbar__separator{margin-left:var(--ck-spacing-small)}.ck.ck-toolbar[dir=ltr]>.ck-toolbar__items>.ck:last-child,[dir=ltr] .ck.ck-toolbar>.ck-toolbar__items>.ck:last-child{margin-right:0}.ck.ck-toolbar.ck-toolbar_compact[dir=ltr]>.ck-toolbar__items>.ck:first-child,[dir=ltr] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:first-child{border-bottom-right-radius:0;border-top-right-radius:0}.ck.ck-toolbar.ck-toolbar_compact[dir=ltr]>.ck-toolbar__items>.ck:last-child,[dir=ltr] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:last-child{border-bottom-left-radius:0;border-top-left-radius:0}.ck.ck-toolbar.ck-toolbar_grouping[dir=ltr]>.ck-toolbar__items:not(:empty):not(:only-child),.ck.ck-toolbar[dir=ltr]>.ck.ck-toolbar__separator,[dir=ltr] .ck.ck-toolbar.ck-toolbar_grouping>.ck-toolbar__items:not(:empty):not(:only-child),[dir=ltr] .ck.ck-toolbar>.ck.ck-toolbar__separator{margin-right:var(--ck-spacing-small)}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/tooltip/tooltip.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck.ck-balloon-panel.ck-tooltip{--ck-balloon-border-width:0px;--ck-balloon-arrow-offset:0px;--ck-balloon-arrow-half-width:4px;--ck-balloon-arrow-height:4px;--ck-color-panel-background:var(--ck-color-tooltip-background);padding:0 var(--ck-spacing-medium);pointer-events:none;z-index:calc(var(--ck-z-modal) + 100)}.ck.ck-balloon-panel.ck-tooltip .ck-tooltip__text{color:var(--ck-color-tooltip-text);font-size:.9em;line-height:1.5}.ck.ck-balloon-panel.ck-tooltip{box-shadow:none}.ck.ck-balloon-panel.ck-tooltip:before{display:none}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/globals/globals.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck-hidden{display:none!important}.ck-reset_all :not(.ck-reset_all-excluded *),.ck.ck-reset,.ck.ck-reset_all{box-sizing:border-box;height:auto;position:static;width:auto}:root{--ck-z-default:1;--ck-z-modal:calc(var(--ck-z-default) + 999)}.ck-transitions-disabled,.ck-transitions-disabled *{transition:none!important}:root{--ck-color-base-foreground:#fafafa;--ck-color-base-background:#fff;--ck-color-base-border:#ccced1;--ck-color-base-action:#53a336;--ck-color-base-focus:#6cb5f9;--ck-color-base-text:#333;--ck-color-base-active:#2977ff;--ck-color-base-active-focus:#0d65ff;--ck-color-base-error:#db3700;--ck-color-focus-border-coordinates:218,81.8%,56.9%;--ck-color-focus-border:hsl(var(--ck-color-focus-border-coordinates));--ck-color-focus-outer-shadow:#cae1fc;--ck-color-focus-disabled-shadow:rgba(119,186,248,.3);--ck-color-focus-error-shadow:rgba(255,64,31,.3);--ck-color-text:var(--ck-color-base-text);--ck-color-shadow-drop:rgba(0,0,0,.15);--ck-color-shadow-drop-active:rgba(0,0,0,.2);--ck-color-shadow-inner:rgba(0,0,0,.1);--ck-color-button-default-background:transparent;--ck-color-button-default-hover-background:#f0f0f0;--ck-color-button-default-active-background:#f0f0f0;--ck-color-button-default-disabled-background:transparent;--ck-color-button-on-background:#f0f7ff;--ck-color-button-on-hover-background:#dbecff;--ck-color-button-on-active-background:#dbecff;--ck-color-button-on-disabled-background:#f0f2f4;--ck-color-button-on-color:#2977ff;--ck-color-button-action-background:var(--ck-color-base-action);--ck-color-button-action-hover-background:#4d9d30;--ck-color-button-action-active-background:#4d9d30;--ck-color-button-action-disabled-background:#7ec365;--ck-color-button-action-text:var(--ck-color-base-background);--ck-color-button-save:#008a00;--ck-color-button-cancel:#db3700;--ck-color-switch-button-off-background:#939393;--ck-color-switch-button-off-hover-background:#7d7d7d;--ck-color-switch-button-on-background:var(--ck-color-button-action-background);--ck-color-switch-button-on-hover-background:#4d9d30;--ck-color-switch-button-inner-background:var(--ck-color-base-background);--ck-color-switch-button-inner-shadow:rgba(0,0,0,.1);--ck-color-dropdown-panel-background:var(--ck-color-base-background);--ck-color-dropdown-panel-border:var(--ck-color-base-border);--ck-color-input-background:var(--ck-color-base-background);--ck-color-input-border:var(--ck-color-base-border);--ck-color-input-error-border:var(--ck-color-base-error);--ck-color-input-text:var(--ck-color-base-text);--ck-color-input-disabled-background:#f2f2f2;--ck-color-input-disabled-border:var(--ck-color-base-border);--ck-color-input-disabled-text:#757575;--ck-color-list-background:var(--ck-color-base-background);--ck-color-list-button-hover-background:var(--ck-color-button-default-hover-background);--ck-color-list-button-on-background:var(--ck-color-button-on-color);--ck-color-list-button-on-background-focus:var(--ck-color-button-on-color);--ck-color-list-button-on-text:var(--ck-color-base-background);--ck-color-panel-background:var(--ck-color-base-background);--ck-color-panel-border:var(--ck-color-base-border);--ck-color-toolbar-background:var(--ck-color-base-background);--ck-color-toolbar-border:var(--ck-color-base-border);--ck-color-tooltip-background:var(--ck-color-base-text);--ck-color-tooltip-text:var(--ck-color-base-background);--ck-color-engine-placeholder-text:#707070;--ck-color-upload-bar-background:#6cb5f9;--ck-color-link-default:#0000f0;--ck-color-link-selected-background:rgba(31,176,255,.1);--ck-color-link-fake-selection:rgba(31,176,255,.3);--ck-disabled-opacity:.5;--ck-focus-outer-shadow-geometry:0 0 0 3px;--ck-focus-outer-shadow:var(--ck-focus-outer-shadow-geometry) var(--ck-color-focus-outer-shadow);--ck-focus-disabled-outer-shadow:var(--ck-focus-outer-shadow-geometry) var(--ck-color-focus-disabled-shadow);--ck-focus-error-outer-shadow:var(--ck-focus-outer-shadow-geometry) var(--ck-color-focus-error-shadow);--ck-focus-ring:1px solid var(--ck-color-focus-border);--ck-font-size-base:13px;--ck-line-height-base:1.84615;--ck-font-face:Helvetica,Arial,Tahoma,Verdana,Sans-Serif;--ck-font-size-tiny:0.7em;--ck-font-size-small:0.75em;--ck-font-size-normal:1em;--ck-font-size-big:1.4em;--ck-font-size-large:1.8em;--ck-ui-component-min-height:2.3em}.ck-reset_all :not(.ck-reset_all-excluded *),.ck.ck-reset,.ck.ck-reset_all{word-wrap:break-word;background:transparent;border:0;margin:0;padding:0;text-decoration:none;transition:none;vertical-align:middle}.ck-reset_all :not(.ck-reset_all-excluded *),.ck.ck-reset_all{border-collapse:collapse;color:var(--ck-color-text);cursor:auto;float:none;font:normal normal normal var(--ck-font-size-base)/var(--ck-line-height-base) var(--ck-font-face);text-align:left;white-space:nowrap}.ck-reset_all .ck-rtl :not(.ck-reset_all-excluded *){text-align:right}.ck-reset_all iframe:not(.ck-reset_all-excluded *){vertical-align:inherit}.ck-reset_all textarea:not(.ck-reset_all-excluded *){white-space:pre-wrap}.ck-reset_all input[type=password]:not(.ck-reset_all-excluded *),.ck-reset_all input[type=text]:not(.ck-reset_all-excluded *),.ck-reset_all textarea:not(.ck-reset_all-excluded *){cursor:text}.ck-reset_all input[type=password][disabled]:not(.ck-reset_all-excluded *),.ck-reset_all input[type=text][disabled]:not(.ck-reset_all-excluded *),.ck-reset_all textarea[disabled]:not(.ck-reset_all-excluded *){cursor:default}.ck-reset_all fieldset:not(.ck-reset_all-excluded *){border:2px groove #dfdee3;padding:10px}.ck-reset_all button:not(.ck-reset_all-excluded *)::-moz-focus-inner{border:0;padding:0}.ck[dir=rtl],.ck[dir=rtl] .ck{text-align:right}:root{--ck-border-radius:2px;--ck-inner-shadow:2px 2px 3px var(--ck-color-shadow-inner) inset;--ck-drop-shadow:0 1px 2px 1px var(--ck-color-shadow-drop);--ck-drop-shadow-active:0 3px 6px 1px var(--ck-color-shadow-drop-active);--ck-spacing-unit:0.6em;--ck-spacing-large:calc(var(--ck-spacing-unit)*1.5);--ck-spacing-standard:var(--ck-spacing-unit);--ck-spacing-medium:calc(var(--ck-spacing-unit)*0.8);--ck-spacing-small:calc(var(--ck-spacing-unit)*0.5);--ck-spacing-tiny:calc(var(--ck-spacing-unit)*0.3);--ck-spacing-extra-tiny:calc(var(--ck-spacing-unit)*0.16)}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-widget/theme/widget.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,":root{--ck-color-resizer:var(--ck-color-focus-border);--ck-color-resizer-tooltip-background:#262626;--ck-color-resizer-tooltip-text:#f2f2f2;--ck-resizer-border-radius:var(--ck-border-radius);--ck-resizer-tooltip-offset:10px;--ck-resizer-tooltip-height:calc(var(--ck-spacing-small)*2 + 10px)}.ck .ck-widget,.ck .ck-widget.ck-widget_with-selection-handle{position:relative}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle{position:absolute}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle .ck-icon{display:block}.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected>.ck-widget__selection-handle,.ck .ck-widget.ck-widget_with-selection-handle:hover>.ck-widget__selection-handle{visibility:visible}.ck .ck-size-view{background:var(--ck-color-resizer-tooltip-background);border:1px solid var(--ck-color-resizer-tooltip-text);border-radius:var(--ck-resizer-border-radius);color:var(--ck-color-resizer-tooltip-text);display:block;font-size:var(--ck-font-size-tiny);height:var(--ck-resizer-tooltip-height);line-height:var(--ck-resizer-tooltip-height);padding:0 var(--ck-spacing-small)}.ck .ck-size-view.ck-orientation-above-center,.ck .ck-size-view.ck-orientation-bottom-left,.ck .ck-size-view.ck-orientation-bottom-right,.ck .ck-size-view.ck-orientation-top-left,.ck .ck-size-view.ck-orientation-top-right{position:absolute}.ck .ck-size-view.ck-orientation-top-left{left:var(--ck-resizer-tooltip-offset);top:var(--ck-resizer-tooltip-offset)}.ck .ck-size-view.ck-orientation-top-right{right:var(--ck-resizer-tooltip-offset);top:var(--ck-resizer-tooltip-offset)}.ck .ck-size-view.ck-orientation-bottom-right{bottom:var(--ck-resizer-tooltip-offset);right:var(--ck-resizer-tooltip-offset)}.ck .ck-size-view.ck-orientation-bottom-left{bottom:var(--ck-resizer-tooltip-offset);left:var(--ck-resizer-tooltip-offset)}.ck .ck-size-view.ck-orientation-above-center{left:50%;top:calc(var(--ck-resizer-tooltip-height)*-1);transform:translate(-50%)}:root{--ck-widget-outline-thickness:3px;--ck-widget-handler-icon-size:16px;--ck-widget-handler-animation-duration:200ms;--ck-widget-handler-animation-curve:ease;--ck-color-widget-blurred-border:#dedede;--ck-color-widget-hover-border:#ffc83d;--ck-color-widget-editable-focus-background:var(--ck-color-base-background);--ck-color-widget-drag-handler-icon-color:var(--ck-color-base-background)}.ck .ck-widget{outline-color:transparent;outline-style:solid;outline-width:var(--ck-widget-outline-thickness);transition:outline-color var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve)}.ck .ck-widget.ck-widget_selected,.ck .ck-widget.ck-widget_selected:hover{outline:var(--ck-widget-outline-thickness) solid var(--ck-color-focus-border)}.ck .ck-widget:hover{outline-color:var(--ck-color-widget-hover-border)}.ck .ck-editor__nested-editable{border:1px solid transparent}.ck .ck-editor__nested-editable.ck-editor__nested-editable_focused,.ck .ck-editor__nested-editable:focus{background-color:var(--ck-color-widget-editable-focus-background);border:var(--ck-focus-ring);box-shadow:var(--ck-inner-shadow),0 0;outline:none}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle{background-color:transparent;border-radius:var(--ck-border-radius) var(--ck-border-radius) 0 0;box-sizing:border-box;left:calc(0px - var(--ck-widget-outline-thickness));opacity:0;padding:4px;top:0;transform:translateY(-100%);transition:background-color var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve),visibility var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve),opacity var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve)}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle .ck-icon{color:var(--ck-color-widget-drag-handler-icon-color);height:var(--ck-widget-handler-icon-size);width:var(--ck-widget-handler-icon-size)}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle .ck-icon .ck-icon__selected-indicator{opacity:0;transition:opacity .3s var(--ck-widget-handler-animation-curve)}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle:hover .ck-icon .ck-icon__selected-indicator{opacity:1}.ck .ck-widget.ck-widget_with-selection-handle:hover>.ck-widget__selection-handle{background-color:var(--ck-color-widget-hover-border);opacity:1}.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected:hover>.ck-widget__selection-handle,.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected>.ck-widget__selection-handle{background-color:var(--ck-color-focus-border);opacity:1}.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected:hover>.ck-widget__selection-handle .ck-icon .ck-icon__selected-indicator,.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected>.ck-widget__selection-handle .ck-icon .ck-icon__selected-indicator{opacity:1}.ck[dir=rtl] .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle{left:auto;right:calc(0px - var(--ck-widget-outline-thickness))}.ck.ck-editor__editable.ck-read-only .ck-widget{transition:none}.ck.ck-editor__editable.ck-read-only .ck-widget:not(.ck-widget_selected){--ck-widget-outline-thickness:0px}.ck.ck-editor__editable.ck-read-only .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle,.ck.ck-editor__editable.ck-read-only .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle:hover{background:var(--ck-color-widget-blurred-border)}.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected,.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected:hover{outline-color:var(--ck-color-widget-blurred-border)}.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected.ck-widget_with-selection-handle:hover>.ck-widget__selection-handle,.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected.ck-widget_with-selection-handle:hover>.ck-widget__selection-handle:hover,.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected.ck-widget_with-selection-handle>.ck-widget__selection-handle,.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected.ck-widget_with-selection-handle>.ck-widget__selection-handle:hover{background:var(--ck-color-widget-blurred-border)}.ck.ck-editor__editable blockquote>.ck-widget.ck-widget_with-selection-handle:first-child,.ck.ck-editor__editable>.ck-widget.ck-widget_with-selection-handle:first-child{margin-top:calc(1em + var(--ck-widget-handler-icon-size))}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-widget/theme/widgetresize.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck .ck-widget_with-resizer{position:relative}.ck .ck-widget__resizer{display:none;left:0;pointer-events:none;position:absolute;top:0}.ck-focused .ck-widget_with-resizer.ck-widget_selected>.ck-widget__resizer{display:block}.ck .ck-widget__resizer__handle{pointer-events:all;position:absolute}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-bottom-right,.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-top-left{cursor:nwse-resize}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-bottom-left,.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-top-right{cursor:nesw-resize}:root{--ck-resizer-size:10px;--ck-resizer-offset:calc(var(--ck-resizer-size)/-2 - 2px);--ck-resizer-border-width:1px}.ck .ck-widget__resizer{outline:1px solid var(--ck-color-resizer)}.ck .ck-widget__resizer__handle{background:var(--ck-color-focus-border);border:var(--ck-resizer-border-width) solid #fff;border-radius:var(--ck-resizer-border-radius);height:var(--ck-resizer-size);width:var(--ck-resizer-size)}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-top-left{left:var(--ck-resizer-offset);top:var(--ck-resizer-offset)}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-top-right{right:var(--ck-resizer-offset);top:var(--ck-resizer-offset)}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-bottom-right{bottom:var(--ck-resizer-offset);right:var(--ck-resizer-offset)}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-bottom-left{bottom:var(--ck-resizer-offset);left:var(--ck-resizer-offset)}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-widget/theme/widgettypearound.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,'.ck .ck-widget .ck-widget__type-around__button{display:block;overflow:hidden;position:absolute;z-index:var(--ck-z-default)}.ck .ck-widget .ck-widget__type-around__button svg{left:50%;position:absolute;top:50%;z-index:calc(var(--ck-z-default) + 2)}.ck .ck-widget .ck-widget__type-around__button.ck-widget__type-around__button_before{left:min(10%,30px);top:calc(var(--ck-widget-outline-thickness)*-.5);transform:translateY(-50%)}.ck .ck-widget .ck-widget__type-around__button.ck-widget__type-around__button_after{bottom:calc(var(--ck-widget-outline-thickness)*-.5);right:min(10%,30px);transform:translateY(50%)}.ck .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button:after,.ck .ck-widget>.ck-widget__type-around>.ck-widget__type-around__button:hover:after{content:"";display:block;left:1px;position:absolute;top:1px;z-index:calc(var(--ck-z-default) + 1)}.ck .ck-widget>.ck-widget__type-around>.ck-widget__type-around__fake-caret{display:none;left:0;position:absolute;right:0}.ck .ck-widget:hover>.ck-widget__type-around>.ck-widget__type-around__fake-caret{left:calc(var(--ck-widget-outline-thickness)*-1);right:calc(var(--ck-widget-outline-thickness)*-1)}.ck .ck-widget.ck-widget_type-around_show-fake-caret_before>.ck-widget__type-around>.ck-widget__type-around__fake-caret{display:block;top:calc(var(--ck-widget-outline-thickness)*-1 - 1px)}.ck .ck-widget.ck-widget_type-around_show-fake-caret_after>.ck-widget__type-around>.ck-widget__type-around__fake-caret{bottom:calc(var(--ck-widget-outline-thickness)*-1 - 1px);display:block}.ck.ck-editor__editable.ck-read-only .ck-widget__type-around,.ck.ck-editor__editable.ck-restricted-editing_mode_restricted .ck-widget__type-around,.ck.ck-editor__editable.ck-widget__type-around_disabled .ck-widget__type-around{display:none}:root{--ck-widget-type-around-button-size:20px;--ck-color-widget-type-around-button-active:var(--ck-color-focus-border);--ck-color-widget-type-around-button-hover:var(--ck-color-widget-hover-border);--ck-color-widget-type-around-button-blurred-editable:var(--ck-color-widget-blurred-border);--ck-color-widget-type-around-button-radar-start-alpha:0;--ck-color-widget-type-around-button-radar-end-alpha:.3;--ck-color-widget-type-around-button-icon:var(--ck-color-base-background)}.ck .ck-widget .ck-widget__type-around__button{background:var(--ck-color-widget-type-around-button);border-radius:100px;height:var(--ck-widget-type-around-button-size);opacity:0;pointer-events:none;transition:opacity var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve),background var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve);width:var(--ck-widget-type-around-button-size)}.ck .ck-widget .ck-widget__type-around__button svg{height:8px;margin-top:1px;transform:translate(-50%,-50%);transition:transform .5s ease;width:10px}.ck .ck-widget .ck-widget__type-around__button svg *{stroke-dasharray:10;stroke-dashoffset:0;fill:none;stroke:var(--ck-color-widget-type-around-button-icon);stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round}.ck .ck-widget .ck-widget__type-around__button svg line{stroke-dasharray:7}.ck .ck-widget .ck-widget__type-around__button:hover{animation:ck-widget-type-around-button-sonar 1s ease infinite}.ck .ck-widget .ck-widget__type-around__button:hover svg polyline{animation:ck-widget-type-around-arrow-dash 2s linear}.ck .ck-widget .ck-widget__type-around__button:hover svg line{animation:ck-widget-type-around-arrow-tip-dash 2s linear}.ck .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button,.ck .ck-widget:hover>.ck-widget__type-around>.ck-widget__type-around__button{opacity:1;pointer-events:auto}.ck .ck-widget:not(.ck-widget_selected)>.ck-widget__type-around>.ck-widget__type-around__button{background:var(--ck-color-widget-type-around-button-hover)}.ck .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button,.ck .ck-widget>.ck-widget__type-around>.ck-widget__type-around__button:hover{background:var(--ck-color-widget-type-around-button-active)}.ck .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button:after,.ck .ck-widget>.ck-widget__type-around>.ck-widget__type-around__button:hover:after{background:linear-gradient(135deg,hsla(0,0%,100%,0),hsla(0,0%,100%,.3));border-radius:100px;height:calc(var(--ck-widget-type-around-button-size) - 2px);width:calc(var(--ck-widget-type-around-button-size) - 2px)}.ck .ck-widget.ck-widget_with-selection-handle>.ck-widget__type-around>.ck-widget__type-around__button_before{margin-left:20px}.ck .ck-widget .ck-widget__type-around__fake-caret{animation:ck-widget-type-around-fake-caret-pulse 1s linear infinite normal forwards;background:var(--ck-color-base-text);height:1px;outline:1px solid hsla(0,0%,100%,.5);pointer-events:none}.ck .ck-widget.ck-widget_selected.ck-widget_type-around_show-fake-caret_after,.ck .ck-widget.ck-widget_selected.ck-widget_type-around_show-fake-caret_before{outline-color:transparent}.ck .ck-widget.ck-widget_type-around_show-fake-caret_after.ck-widget_selected:hover,.ck .ck-widget.ck-widget_type-around_show-fake-caret_before.ck-widget_selected:hover{outline-color:var(--ck-color-widget-hover-border)}.ck .ck-widget.ck-widget_type-around_show-fake-caret_after>.ck-widget__type-around>.ck-widget__type-around__button,.ck .ck-widget.ck-widget_type-around_show-fake-caret_before>.ck-widget__type-around>.ck-widget__type-around__button{opacity:0;pointer-events:none}.ck .ck-widget.ck-widget_type-around_show-fake-caret_after.ck-widget_selected.ck-widget_with-resizer>.ck-widget__resizer,.ck .ck-widget.ck-widget_type-around_show-fake-caret_after.ck-widget_with-selection-handle.ck-widget_selected:hover>.ck-widget__selection-handle,.ck .ck-widget.ck-widget_type-around_show-fake-caret_after.ck-widget_with-selection-handle.ck-widget_selected>.ck-widget__selection-handle,.ck .ck-widget.ck-widget_type-around_show-fake-caret_before.ck-widget_selected.ck-widget_with-resizer>.ck-widget__resizer,.ck .ck-widget.ck-widget_type-around_show-fake-caret_before.ck-widget_with-selection-handle.ck-widget_selected:hover>.ck-widget__selection-handle,.ck .ck-widget.ck-widget_type-around_show-fake-caret_before.ck-widget_with-selection-handle.ck-widget_selected>.ck-widget__selection-handle{opacity:0}.ck[dir=rtl] .ck-widget.ck-widget_with-selection-handle .ck-widget__type-around>.ck-widget__type-around__button_before{margin-left:0;margin-right:20px}.ck-editor__nested-editable.ck-editor__editable_selected .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button,.ck-editor__nested-editable.ck-editor__editable_selected .ck-widget:hover>.ck-widget__type-around>.ck-widget__type-around__button{opacity:0;pointer-events:none}.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button:not(:hover){background:var(--ck-color-widget-type-around-button-blurred-editable)}.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button:not(:hover) svg *{stroke:#999}@keyframes ck-widget-type-around-arrow-dash{0%{stroke-dashoffset:10}20%,to{stroke-dashoffset:0}}@keyframes ck-widget-type-around-arrow-tip-dash{0%,20%{stroke-dashoffset:7}40%,to{stroke-dashoffset:0}}@keyframes ck-widget-type-around-button-sonar{0%{box-shadow:0 0 0 0 hsla(var(--ck-color-focus-border-coordinates),var(--ck-color-widget-type-around-button-radar-start-alpha))}50%{box-shadow:0 0 0 5px hsla(var(--ck-color-focus-border-coordinates),var(--ck-color-widget-type-around-button-radar-end-alpha))}to{box-shadow:0 0 0 5px hsla(var(--ck-color-focus-border-coordinates),var(--ck-color-widget-type-around-button-radar-start-alpha))}}@keyframes ck-widget-type-around-fake-caret-pulse{0%{opacity:1}49%{opacity:1}50%{opacity:0}99%{opacity:0}to{opacity:1}}',""]);const r=i},"./node_modules/css-loader/dist/runtime/api.js":e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var s=e(t);return t[2]?"@media ".concat(t[2]," {").concat(s,"}"):s})).join("")},t.i=function(e,s,o){"string"==typeof e&&(e=[[null,e,""]]);var i={};if(o)for(var r=0;r<this.length;r++){var n=this[r][0];null!=n&&(i[n]=!0)}for(var a=0;a<e.length;a++){var c=[].concat(e[a]);o&&i[c[0]]||(s&&(c[2]?c[2]="".concat(s," and ").concat(c[2]):c[2]=s),t.push(c))}},t}},"./packages/ckeditor5-core/theme/icons/paragraph.svg":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M10.5 5.5H7v5h3.5a2.5 2.5 0 1 0 0-5zM5 3h6.5v.025a5 5 0 0 1 0 9.95V13H7v4a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1z"/></svg>'},"./packages/ckeditor5-core/theme/icons/pilcrow.svg":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M6.999 2H15a1 1 0 0 1 0 2h-1.004v13a1 1 0 1 1-2 0V4H8.999v13a1 1 0 1 1-2 0v-7A4 4 0 0 1 3 6a4 4 0 0 1 3.999-4z"/></svg>'},"./packages/ckeditor5-core/theme/icons/three-vertical-dots.svg":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><circle cx="9.5" cy="4.5" r="1.5"/><circle cx="9.5" cy="10.5" r="1.5"/><circle cx="9.5" cy="16.5" r="1.5"/></svg>'},"./packages/ckeditor5-ui/theme/icons/dropdown-arrow.svg":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o='<svg viewBox="0 0 10 10" xmlns="http://www.w3.org/2000/svg"><path d="M.941 4.523a.75.75 0 1 1 1.06-1.06l3.006 3.005 3.005-3.005a.75.75 0 1 1 1.06 1.06l-3.549 3.55a.75.75 0 0 1-1.168-.136L.941 4.523z"/></svg>'},"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js":(e,t,s)=>{"use strict";var o,i=function(){return void 0===o&&(o=Boolean(window&&document&&document.all&&!window.atob)),o},r=function(){var e={};return function(t){if(void 0===e[t]){var s=document.querySelector(t);if(window.HTMLIFrameElement&&s instanceof window.HTMLIFrameElement)try{s=s.contentDocument.head}catch(e){s=null}e[t]=s}return e[t]}}(),n=[];function a(e){for(var t=-1,s=0;s<n.length;s++)if(n[s].identifier===e){t=s;break}return t}function c(e,t){for(var s={},o=[],i=0;i<e.length;i++){var r=e[i],c=t.base?r[0]+t.base:r[0],l=s[c]||0,d="".concat(c," ").concat(l);s[c]=l+1;var h=a(d),u={css:r[1],media:r[2],sourceMap:r[3]};-1!==h?(n[h].references++,n[h].updater(u)):n.push({identifier:d,updater:m(u,t),references:1}),o.push(d)}return o}function l(e){var t=document.createElement("style"),o=e.attributes||{};if(void 0===o.nonce){var i=s.nc;i&&(o.nonce=i)}if(Object.keys(o).forEach((function(e){t.setAttribute(e,o[e])})),"function"==typeof e.insert)e.insert(t);else{var n=r(e.insert||"head");if(!n)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");n.appendChild(t)}return t}var d,h=(d=[],function(e,t){return d[e]=t,d.filter(Boolean).join("\n")});function u(e,t,s,o){var i=s?"":o.media?"@media ".concat(o.media," {").concat(o.css,"}"):o.css;if(e.styleSheet)e.styleSheet.cssText=h(t,i);else{var r=document.createTextNode(i),n=e.childNodes;n[t]&&e.removeChild(n[t]),n.length?e.insertBefore(r,n[t]):e.appendChild(r)}}function p(e,t,s){var o=s.css,i=s.media,r=s.sourceMap;if(i?e.setAttribute("media",i):e.removeAttribute("media"),r&&"undefined"!=typeof btoa&&(o+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(r))))," */")),e.styleSheet)e.styleSheet.cssText=o;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(o))}}var g=null,f=0;function m(e,t){var s,o,i;if(t.singleton){var r=f++;s=g||(g=l(t)),o=u.bind(null,s,r,!1),i=u.bind(null,s,r,!0)}else s=l(t),o=p.bind(null,s,t),i=function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(s)};return o(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;o(e=t)}else i()}}e.exports=function(e,t){(t=t||{}).singleton||"boolean"==typeof t.singleton||(t.singleton=i());var s=c(e=e||[],t);return function(e){if(e=e||[],"[object Array]"===Object.prototype.toString.call(e)){for(var o=0;o<s.length;o++){var i=a(s[o]);n[i].references--}for(var r=c(e,t),l=0;l<s.length;l++){var d=a(s[l]);0===n[d].references&&(n[d].updater(),n.splice(d,1))}s=r}}}},"./packages/ckeditor5-engine/src/controller/datacontroller.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>Z});var o=s("./packages/ckeditor5-utils/src/observablemixin.ts"),i=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),r=s("./packages/ckeditor5-utils/src/emittermixin.ts"),n=s("./packages/ckeditor5-engine/src/conversion/mapper.ts"),a=s("./packages/ckeditor5-engine/src/conversion/downcastdispatcher.ts"),c=s("./packages/ckeditor5-engine/src/conversion/downcasthelpers.ts"),l=s("./node_modules/lodash-es/isArray.js");class d{constructor(){this._consumables=new Map}add(e,t){let s;e.is("$text")||e.is("documentFragment")?this._consumables.set(e,!0):(this._consumables.has(e)?s=this._consumables.get(e):(s=new u(e),this._consumables.set(e,s)),s.add(t))}test(e,t){const s=this._consumables.get(e);return void 0===s?null:e.is("$text")||e.is("documentFragment")?s:s.test(t)}consume(e,t){return!!this.test(e,t)&&(e.is("$text")||e.is("documentFragment")?this._consumables.set(e,!1):this._consumables.get(e).consume(t),!0)}revert(e,t){const s=this._consumables.get(e);void 0!==s&&(e.is("$text")||e.is("documentFragment")?this._consumables.set(e,!0):s.revert(t))}static consumablesFromElement(e){const t={element:e,name:!0,attributes:[],classes:[],styles:[]},s=e.getAttributeKeys();for(const e of s)"style"!=e&&"class"!=e&&t.attributes.push(e);const o=e.getClassNames();for(const e of o)t.classes.push(e);const i=e.getStyleNames();for(const e of i)t.styles.push(e);return t}static createFrom(e,t){if(t||(t=new d),e.is("$text"))return t.add(e),t;e.is("element")&&t.add(e,d.consumablesFromElement(e)),e.is("documentFragment")&&t.add(e);for(const s of e.getChildren())t=d.createFrom(s,t);return t}}const h=["attributes","classes","styles"];class u{constructor(e){this.element=e,this._canConsumeName=null,this._consumables={attributes:new Map,styles:new Map,classes:new Map}}add(e){e.name&&(this._canConsumeName=!0);for(const t of h)t in e&&this._add(t,e[t])}test(e){if(e.name&&!this._canConsumeName)return this._canConsumeName;for(const t of h)if(t in e){const s=this._test(t,e[t]);if(!0!==s)return s}return!0}consume(e){e.name&&(this._canConsumeName=!1);for(const t of h)t in e&&this._consume(t,e[t])}revert(e){e.name&&(this._canConsumeName=!0);for(const t of h)t in e&&this._revert(t,e[t])}_add(e,t){const s=(0,l.Z)(t)?t:[t],o=this._consumables[e];for(const t of s){if("attributes"===e&&("class"===t||"style"===t))throw new i.ZP("viewconsumable-invalid-attribute",this);if(o.set(t,!0),"styles"===e)for(const e of this.element.document.stylesProcessor.getRelatedStyles(t))o.set(e,!0)}}_test(e,t){const s=(0,l.Z)(t)?t:[t],o=this._consumables[e];for(const t of s)if("attributes"!==e||"class"!==t&&"style"!==t){const e=o.get(t);if(void 0===e)return null;if(!e)return!1}else{const e="class"==t?"classes":"styles",s=this._test(e,[...this._consumables[e].keys()]);if(!0!==s)return s}return!0}_consume(e,t){const s=(0,l.Z)(t)?t:[t],o=this._consumables[e];for(const t of s)if("attributes"!==e||"class"!==t&&"style"!==t){if(o.set(t,!1),"styles"==e)for(const e of this.element.document.stylesProcessor.getRelatedStyles(t))o.set(e,!1)}else{const e="class"==t?"classes":"styles";this._consume(e,[...this._consumables[e].keys()])}}_revert(e,t){const s=(0,l.Z)(t)?t:[t],o=this._consumables[e];for(const t of s)if("attributes"!==e||"class"!==t&&"style"!==t){!1===o.get(t)&&o.set(t,!0)}else{const e="class"==t?"classes":"styles";this._revert(e,[...this._consumables[e].keys()])}}}var p=s("./packages/ckeditor5-engine/src/model/range.ts"),g=s("./packages/ckeditor5-engine/src/model/position.ts"),f=s("./packages/ckeditor5-engine/src/model/schema.ts"),m=s("./packages/ckeditor5-engine/src/model/utils/autoparagraphing.ts");class k extends r.Q5{constructor(e){super(),this._splitParts=new Map,this._cursorParents=new Map,this._modelCursor=null,this._emptyElementsToKeep=new Set,this.conversionApi={...e,consumable:null,writer:null,store:null,convertItem:(e,t)=>this._convertItem(e,t),convertChildren:(e,t)=>this._convertChildren(e,t),safeInsert:(e,t)=>this._safeInsert(e,t),updateConversionResult:(e,t)=>this._updateConversionResult(e,t),splitToAllowedParent:(e,t)=>this._splitToAllowedParent(e,t),getSplitParts:e=>this._getSplitParts(e),keepEmptyElement:e=>this._keepEmptyElement(e)}}convert(e,t,s=["$root"]){this.fire("viewCleanup",e),this._modelCursor=function(e,t){let s;for(const o of new f.G(e)){const e={};for(const t of o.getAttributeKeys())e[t]=o.getAttribute(t);const i=t.createElement(o.name,e);s&&t.insert(i,s),s=g.ZP._createAt(i,0)}return s}(s,t),this.conversionApi.writer=t,this.conversionApi.consumable=d.createFrom(e),this.conversionApi.store={};const{modelRange:o}=this._convertItem(e,this._modelCursor),i=t.createDocumentFragment();if(o){this._removeEmptyElements();for(const e of Array.from(this._modelCursor.parent.getChildren()))t.append(e,i);i.markers=function(e,t){const s=new Set,o=new Map,i=p.Z._createIn(e).getItems();for(const e of i)e.is("element","$marker")&&s.add(e);for(const e of s){const s=e.getAttribute("data-name"),i=t.createPositionBefore(e);o.has(s)?o.get(s).end=i.clone():o.set(s,new p.Z(i.clone())),t.remove(e)}return o}(i,t)}return this._modelCursor=null,this._splitParts.clear(),this._cursorParents.clear(),this._emptyElementsToKeep.clear(),this.conversionApi.writer=null,this.conversionApi.store=null,i}_convertItem(e,t){const s={viewItem:e,modelCursor:t,modelRange:null};if(e.is("element")?this.fire(`element:${e.name}`,s,this.conversionApi):e.is("$text")?this.fire("text",s,this.conversionApi):this.fire("documentFragment",s,this.conversionApi),s.modelRange&&!(s.modelRange instanceof p.Z))throw new i.ZP("view-conversion-dispatcher-incorrect-result",this);return{modelRange:s.modelRange,modelCursor:s.modelCursor}}_convertChildren(e,t){let s=t.is("position")?t:g.ZP._createAt(t,0);const o=new p.Z(s);for(const t of Array.from(e.getChildren())){const e=this._convertItem(t,s);e.modelRange instanceof p.Z&&(o.end=e.modelRange.end,s=e.modelCursor)}return{modelRange:o,modelCursor:s}}_safeInsert(e,t){const s=this._splitToAllowedParent(e,t);return!!s&&(this.conversionApi.writer.insert(e,s.position),!0)}_updateConversionResult(e,t){const s=this._getSplitParts(e),o=this.conversionApi.writer;t.modelRange||(t.modelRange=o.createRange(o.createPositionBefore(e),o.createPositionAfter(s[s.length-1])));const i=this._cursorParents.get(e);t.modelCursor=i?o.createPositionAt(i,0):t.modelRange.end}_splitToAllowedParent(e,t){const{schema:s,writer:o}=this.conversionApi;let i=s.findAllowedParent(t,e);if(i){if(i===t.parent)return{position:t};this._modelCursor.parent.getAncestors().includes(i)&&(i=null)}if(!i)return(0,m.gg)(t,e,s)?{position:(0,m.zX)(t,o)}:null;const r=this.conversionApi.writer.split(t,i),n=[];for(const e of r.range.getWalker())if("elementEnd"==e.type)n.push(e.item);else{const t=n.pop(),s=e.item;this._registerSplitPair(t,s)}const a=r.range.end.parent;return this._cursorParents.set(e,a),{position:r.position,cursorParent:a}}_registerSplitPair(e,t){this._splitParts.has(e)||this._splitParts.set(e,[e]);const s=this._splitParts.get(e);this._splitParts.set(t,s),s.push(t)}_getSplitParts(e){let t;return t=this._splitParts.has(e)?this._splitParts.get(e):[e],t}_keepEmptyElement(e){this._emptyElementsToKeep.add(e)}_removeEmptyElements(){let e=!1;for(const t of this._splitParts.keys())t.isEmpty&&!this._emptyElementsToKeep.has(t)&&(this.conversionApi.writer.remove(t),this._splitParts.delete(t),e=!0);e&&this._removeEmptyElements()}}var b=s("./packages/ckeditor5-engine/src/conversion/upcasthelpers.ts"),_=s("./packages/ckeditor5-engine/src/view/documentfragment.ts"),w=s("./packages/ckeditor5-engine/src/view/document.ts"),v=s("./packages/ckeditor5-engine/src/view/downcastwriter.ts"),y=s("./packages/ckeditor5-engine/src/dataprocessor/htmldataprocessor.ts");class Z extends r.Q5{constructor(e,t){super(),this.model=e,this.mapper=new n.Z,this.downcastDispatcher=new a.Z({mapper:this.mapper,schema:e.schema}),this.downcastDispatcher.on("insert:$text",(0,c.Om)(),{priority:"lowest"}),this.downcastDispatcher.on("insert",(0,c.o6)(),{priority:"lowest"}),this.upcastDispatcher=new k({schema:e.schema}),this.viewDocument=new w.Z(t),this.stylesProcessor=t,this.htmlProcessor=new y.Z(this.viewDocument),this.processor=this.htmlProcessor,this._viewWriter=new v.Z(this.viewDocument),this.upcastDispatcher.on("text",(0,b.s8)(),{priority:"lowest"}),this.upcastDispatcher.on("element",(0,b._p)(),{priority:"lowest"}),this.upcastDispatcher.on("documentFragment",(0,b._p)(),{priority:"lowest"}),o.y.prototype.decorate.call(this,"init"),o.y.prototype.decorate.call(this,"set"),o.y.prototype.decorate.call(this,"get"),this.on("init",(()=>{this.fire("ready")}),{priority:"lowest"}),this.on("ready",(()=>{this.model.enqueueChange({isUndoable:!1},m._m)}),{priority:"lowest"})}get(e={}){const{rootName:t="main",trim:s="empty"}=e;if(!this._checkIfRootsExists([t]))throw new i.ZP("datacontroller-get-non-existent-root",this);const o=this.model.document.getRoot(t);return"empty"!==s||this.model.hasContent(o,{ignoreWhitespaces:!0})?this.stringify(o,e):""}stringify(e,t={}){const s=this.toView(e,t);return this.processor.toData(s)}toView(e,t={}){const s=this.viewDocument,o=this._viewWriter;this.mapper.clearBindings();const i=p.Z._createIn(e),r=new _.Z(s);this.mapper.bindElements(e,r);const n=e.is("documentFragment")?e.markers:function(e){const t=[],s=e.root.document;if(!s)return new Map;const o=p.Z._createIn(e);for(const e of s.model.markers){const s=e.getRange(),i=s.isCollapsed,r=s.start.isEqual(o.start)||s.end.isEqual(o.end);if(i&&r)t.push([e.name,s]);else{const i=o.getIntersection(s);i&&t.push([e.name,i])}}return t.sort((([e,t],[s,o])=>{if("after"!==t.end.compareWith(o.start))return 1;if("before"!==t.start.compareWith(o.end))return-1;switch(t.start.compareWith(o.start)){case"before":return 1;case"after":return-1;default:switch(t.end.compareWith(o.end)){case"before":return 1;case"after":return-1;default:return s.localeCompare(e)}}})),new Map(t)}(e);return this.downcastDispatcher.convert(i,n,o,t),r}init(e){if(this.model.document.version)throw new i.ZP("datacontroller-init-document-not-empty",this);let t={};if("string"==typeof e?t.main=e:t=e,!this._checkIfRootsExists(Object.keys(t)))throw new i.ZP("datacontroller-init-non-existent-root",this);return this.model.enqueueChange({isUndoable:!1},(e=>{for(const s of Object.keys(t)){const o=this.model.document.getRoot(s);e.insert(this.parse(t[s],o),o,0)}})),Promise.resolve()}set(e,t={}){let s={};if("string"==typeof e?s.main=e:s=e,!this._checkIfRootsExists(Object.keys(s)))throw new i.ZP("datacontroller-set-non-existent-root",this);this.model.enqueueChange(t.batchType||{},(e=>{e.setSelection(null),e.removeSelectionAttribute(this.model.document.selection.getAttributeKeys());for(const t of Object.keys(s)){const o=this.model.document.getRoot(t);e.remove(e.createRangeIn(o)),e.insert(this.parse(s[t],o),o,0)}}))}parse(e,t="$root"){const s=this.processor.toView(e);return this.toModel(s,t)}toModel(e,t="$root"){return this.model.change((s=>this.upcastDispatcher.convert(e,s,t)))}addStyleProcessorRules(e){e(this.stylesProcessor)}registerRawContentMatcher(e){this.processor&&this.processor!==this.htmlProcessor&&this.processor.registerRawContentMatcher(e),this.htmlProcessor.registerRawContentMatcher(e)}destroy(){this.stopListening()}_checkIfRootsExists(e){for(const t of e)if(!this.model.document.getRootNames().includes(t))return!1;return!0}}},"./packages/ckeditor5-engine/src/controller/editingcontroller.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>F});var o=s("./packages/ckeditor5-engine/src/view/editableelement.ts");const i=Symbol("rootName");class r extends o.Z{constructor(e,t){super(e,t),this.rootName="main"}get rootName(){return this.getCustomProperty(i)}set rootName(e){this._setCustomProperty(i,e)}set _name(e){this.name=e}}r.prototype.is=function(e,t){return t?t===this.name&&("rootElement"===e||"view:rootElement"===e||"editableElement"===e||"view:editableElement"===e||"containerElement"===e||"view:containerElement"===e||"element"===e||"view:element"===e):"rootElement"===e||"view:rootElement"===e||"editableElement"===e||"view:editableElement"===e||"containerElement"===e||"view:containerElement"===e||"element"===e||"view:element"===e||"node"===e||"view:node"===e};var n=s("./packages/ckeditor5-engine/src/view/document.ts"),a=s("./packages/ckeditor5-engine/src/view/downcastwriter.ts"),c=s("./packages/ckeditor5-engine/src/view/renderer.ts"),l=s("./packages/ckeditor5-engine/src/view/domconverter.ts"),d=s("./packages/ckeditor5-engine/src/view/position.ts"),h=s("./packages/ckeditor5-engine/src/view/range.ts"),u=s("./packages/ckeditor5-engine/src/view/selection.ts"),p=s("./packages/ckeditor5-engine/src/view/observer/observer.ts"),g=s("./packages/ckeditor5-engine/src/view/filler.ts"),f=s("./node_modules/lodash-es/_baseIsEqual.js");const m=function(e,t,s){var o=(s="function"==typeof s?s:void 0)?s(e,t):void 0;return void 0===o?(0,f.Z)(e,t,void 0,s):!!o};class k extends p.Z{constructor(e){super(e),this._config={childList:!0,characterData:!0,characterDataOldValue:!0,subtree:!0},this.domConverter=e.domConverter,this.renderer=e._renderer,this._domElements=[],this._mutationObserver=new window.MutationObserver(this._onMutations.bind(this))}flush(){this._onMutations(this._mutationObserver.takeRecords())}observe(e){this._domElements.push(e),this.isEnabled&&this._mutationObserver.observe(e,this._config)}enable(){super.enable();for(const e of this._domElements)this._mutationObserver.observe(e,this._config)}disable(){super.disable(),this._mutationObserver.disconnect()}destroy(){super.destroy(),this._mutationObserver.disconnect()}_onMutations(e){if(0===e.length)return;const t=this.domConverter,s=new Map,o=new Set;for(const s of e)if("childList"===s.type){const e=t.mapDomToView(s.target);if(e&&(e.is("uiElement")||e.is("rawElement")))continue;e&&!this._isBogusBrMutation(s)&&o.add(e)}for(const i of e){const e=t.mapDomToView(i.target);if((!e||!e.is("uiElement")&&!e.is("rawElement"))&&"characterData"===i.type){const e=t.findCorrespondingViewText(i.target);e&&!o.has(e.parent)?s.set(e,{type:"text",oldText:e.data,newText:(0,g.th)(i.target),node:e}):!e&&(0,g.Sw)(i.target)&&o.add(t.mapDomToView(i.target.parentNode))}}const i=[];for(const e of s.values())this.renderer.markToSync("text",e.node),i.push(e);for(const e of o){const s=t.mapViewToDom(e),o=Array.from(e.getChildren()),r=Array.from(t.domChildrenToView(s,{withChildren:!1}));m(o,r,a)||(this.renderer.markToSync("children",e),i.push({type:"children",oldChildren:o,newChildren:r,node:e}))}const r=e[0].target.ownerDocument.getSelection();let n=null;if(r&&r.anchorNode){const e=t.domPositionToView(r.anchorNode,r.anchorOffset),s=t.domPositionToView(r.focusNode,r.focusOffset);e&&s&&(n=new u.Z(e),n.setFocus(s))}function a(e,t){if(!Array.isArray(e))return e===t||!(!e.is("$text")||!t.is("$text"))&&e.data===t.data}i.length&&(this.document.fire("mutations",i,n),this.view.forceRender())}_isBogusBrMutation(e){let t=null;return null===e.nextSibling&&0===e.removedNodes.length&&1==e.addedNodes.length&&(t=this.domConverter.domToView(e.addedNodes[0],{withChildren:!1})),t&&t.is("element","br")}}var b=s("./packages/ckeditor5-engine/src/view/observer/domeventobserver.ts"),_=s("./packages/ckeditor5-utils/src/keyboard.ts");class w extends b.Z{constructor(e){super(e),this.domEventType=["keydown","keyup"]}onDomEvent(e){const t={keyCode:e.keyCode,altKey:e.altKey,ctrlKey:e.ctrlKey,shiftKey:e.shiftKey,metaKey:e.metaKey,get keystroke(){return(0,_.Cq)(this)}};this.fire(e.type,e,t)}}var v=s("./node_modules/lodash-es/debounce.js");class y extends p.Z{constructor(e){super(e),this._fireSelectionChangeDoneDebounced=(0,v.Z)((e=>{this.document.fire("selectionChangeDone",e)}),200)}observe(){const e=this.document;e.on("arrowKey",((t,s)=>{e.selection.isFake&&this.isEnabled&&s.preventDefault()}),{context:"$capture"}),e.on("arrowKey",((t,s)=>{e.selection.isFake&&this.isEnabled&&this._handleSelectionMove(s.keyCode)}),{priority:"lowest"})}destroy(){super.destroy(),this._fireSelectionChangeDoneDebounced.cancel()}_handleSelectionMove(e){const t=this.document.selection,s=new u.Z(t.getRanges(),{backward:t.isBackward,fake:!1});e!=_.Do.arrowleft&&e!=_.Do.arrowup||s.setTo(s.getFirstPosition()),e!=_.Do.arrowright&&e!=_.Do.arrowdown||s.setTo(s.getLastPosition());const o={oldSelection:t,newSelection:s,domSelection:null};this.document.fire("selectionChange",o),this._fireSelectionChangeDoneDebounced(o)}}class Z extends p.Z{constructor(e){super(e),this.mutationObserver=e.getObserver(k),this.selection=this.document.selection,this.domConverter=e.domConverter,this._documents=new WeakSet,this._fireSelectionChangeDoneDebounced=(0,v.Z)((e=>{this.document.fire("selectionChangeDone",e)}),200),this._clearInfiniteLoopInterval=setInterval((()=>this._clearInfiniteLoop()),1e3),this._documentIsSelectingInactivityTimeoutDebounced=(0,v.Z)((()=>this.document.isSelecting=!1),5e3),this._loopbackCounter=0}observe(e){const t=e.ownerDocument,s=()=>{this.document.isSelecting&&(this._handleSelectionChange(null,t),this.document.isSelecting=!1,this._documentIsSelectingInactivityTimeoutDebounced.cancel())};this.listenTo(e,"selectstart",(()=>{this.document.isSelecting=!0,this._documentIsSelectingInactivityTimeoutDebounced()}),{priority:"highest"}),this.listenTo(e,"keydown",s,{priority:"highest",useCapture:!0}),this.listenTo(e,"keyup",s,{priority:"highest",useCapture:!0}),this._documents.has(t)||(this.listenTo(t,"mouseup",s,{priority:"highest",useCapture:!0}),this.listenTo(t,"selectionchange",((e,s)=>{this._handleSelectionChange(s,t),this._documentIsSelectingInactivityTimeoutDebounced()})),this._documents.add(t))}destroy(){super.destroy(),clearInterval(this._clearInfiniteLoopInterval),this._fireSelectionChangeDoneDebounced.cancel(),this._documentIsSelectingInactivityTimeoutDebounced.cancel()}_handleSelectionChange(e,t){if(!this.isEnabled)return;const s=t.defaultView.getSelection();if(this.checkShouldIgnoreEventFromTarget(s.anchorNode))return;this.mutationObserver.flush();const o=this.domConverter.domSelectionToView(s);if(0!=o.rangeCount){if(this.view.hasDomSelection=!0,!(this.selection.isEqual(o)&&this.domConverter.isDomSelectionCorrect(s)||++this._loopbackCounter>60))if(this.selection.isSimilar(o))this.view.forceRender();else{const e={oldSelection:this.selection,newSelection:o,domSelection:s};this.document.fire("selectionChange",e),this._fireSelectionChangeDoneDebounced(e)}}else this.view.hasDomSelection=!1}_clearInfiniteLoop(){this._loopbackCounter=0}}class P extends b.Z{constructor(e){super(e),this.domEventType=["focus","blur"],this.useCapture=!0;const t=this.document;t.on("focus",(()=>{t.isFocused=!0,this._renderTimeoutId=setTimeout((()=>e.change((()=>{}))),50)})),t.on("blur",((s,o)=>{const i=t.selection.editableElement;null!==i&&i!==o.target||(t.isFocused=!1,e.change((()=>{})))}))}onDomEvent(e){this.fire(e.type,e)}destroy(){this._renderTimeoutId&&clearTimeout(this._renderTimeoutId),super.destroy()}}class x extends b.Z{constructor(e){super(e),this.domEventType=["compositionstart","compositionupdate","compositionend"];const t=this.document;t.on("compositionstart",(()=>{t.isComposing=!0})),t.on("compositionend",(()=>{t.isComposing=!1}))}onDomEvent(e){this.fire(e.type,e)}}class T extends b.Z{constructor(e){super(e),this.domEventType=["beforeinput"]}onDomEvent(e){this.fire(e.type,e)}}var A=s("./packages/ckeditor5-engine/src/view/observer/bubblingeventinfo.ts"),C=s("./packages/ckeditor5-utils/src/index.ts");class E extends p.Z{constructor(e){super(e),this.document.on("keydown",((e,t)=>{if(this.isEnabled&&(0,C.dj)(t.keyCode)){const s=new A.Z(this.document,"arrowKey",this.document.selection.getFirstRange());this.document.fire(s,t),s.stop.called&&e.stop()}}))}observe(){}}class S extends p.Z{constructor(e){super(e);const t=this.document;t.on("keydown",((e,s)=>{if(!this.isEnabled||s.keyCode!=_.Do.tab||s.ctrlKey)return;const o=new A.Z(t,"tab",t.selection.getFirstRange());t.fire(o,s),o.stop.called&&e.stop()}))}observe(){}}var j=s("./packages/ckeditor5-utils/src/observablemixin.ts"),O=s("./packages/ckeditor5-utils/src/dom/scroll.ts"),R=s("./packages/ckeditor5-engine/src/view/uielement.ts"),M=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),N=s("./packages/ckeditor5-utils/src/env.ts");class V extends j.y{constructor(e){super(),this.document=new n.Z(e),this.domConverter=new l.Z(this.document),this.domRoots=new Map,this.set("isRenderingInProgress",!1),this.set("hasDomSelection",!1),this._renderer=new c.Z(this.domConverter,this.document.selection),this._renderer.bind("isFocused","isSelecting").to(this.document,"isFocused","isSelecting"),this._initialDomRootAttributes=new WeakMap,this._observers=new Map,this._ongoingChange=!1,this._postFixersInProgress=!1,this._renderingDisabled=!1,this._hasChangedSinceTheLastRendering=!1,this._writer=new a.Z(this.document),this.addObserver(k),this.addObserver(Z),this.addObserver(P),this.addObserver(w),this.addObserver(y),this.addObserver(x),this.addObserver(E),this.addObserver(S),N.ZP.isAndroid&&this.addObserver(T),(0,g.mm)(this),(0,R.h)(this),this.on("render",(()=>{this._render(),this.document.fire("layoutChanged"),this._hasChangedSinceTheLastRendering=!1})),this.listenTo(this.document.selection,"change",(()=>{this._hasChangedSinceTheLastRendering=!0})),this.listenTo(this.document,"change:isFocused",(()=>{this._hasChangedSinceTheLastRendering=!0}))}attachDomRoot(e,t="main"){const s=this.document.getRoot(t);s._name=e.tagName.toLowerCase();const o={};for(const{name:t,value:i}of Array.from(e.attributes))o[t]=i,"class"===t?this._writer.addClass(i.split(" "),s):this._writer.setAttribute(t,i,s);this._initialDomRootAttributes.set(e,o);const i=()=>{this._writer.setAttribute("contenteditable",(!s.isReadOnly).toString(),s),s.isReadOnly?this._writer.addClass("ck-read-only",s):this._writer.removeClass("ck-read-only",s)};i(),this.domRoots.set(t,e),this.domConverter.bindElements(e,s),this._renderer.markToSync("children",s),this._renderer.markToSync("attributes",s),this._renderer.domDocuments.add(e.ownerDocument),s.on("change:children",((e,t)=>this._renderer.markToSync("children",t))),s.on("change:attributes",((e,t)=>this._renderer.markToSync("attributes",t))),s.on("change:text",((e,t)=>this._renderer.markToSync("text",t))),s.on("change:isReadOnly",(()=>this.change(i))),s.on("change",(()=>{this._hasChangedSinceTheLastRendering=!0}));for(const s of this._observers.values())s.observe(e,t)}detachDomRoot(e){const t=this.domRoots.get(e);Array.from(t.attributes).forEach((({name:e})=>t.removeAttribute(e)));const s=this._initialDomRootAttributes.get(t);for(const e in s)t.setAttribute(e,s[e]);this.domRoots.delete(e),this.domConverter.unbindDomElement(t)}getDomRoot(e="main"){return this.domRoots.get(e)}addObserver(e){let t=this._observers.get(e);if(t)return t;t=new e(this),this._observers.set(e,t);for(const[e,s]of this.domRoots)t.observe(s,e);return t.enable(),t}getObserver(e){return this._observers.get(e)}disableObservers(){for(const e of this._observers.values())e.disable()}enableObservers(){for(const e of this._observers.values())e.enable()}scrollToTheSelection(){const e=this.document.selection.getFirstRange();e&&(0,O.m)({target:this.domConverter.viewRangeToDom(e),viewportOffset:20})}focus(){if(!this.document.isFocused){const e=this.document.selection.editableElement;e&&(this.domConverter.focus(e),this.forceRender())}}change(e){if(this.isRenderingInProgress||this._postFixersInProgress)throw new M.ZP("cannot-change-view-tree",this);try{if(this._ongoingChange)return e(this._writer);this._ongoingChange=!0;const t=e(this._writer);return this._ongoingChange=!1,!this._renderingDisabled&&this._hasChangedSinceTheLastRendering&&(this._postFixersInProgress=!0,this.document._callPostFixers(this._writer),this._postFixersInProgress=!1,this.fire("render")),t}catch(e){M.ZP.rethrowUnexpectedError(e,this)}}forceRender(){this._hasChangedSinceTheLastRendering=!0,this.change((()=>{}))}destroy(){for(const e of this._observers.values())e.destroy();this.document.destroy(),this.stopListening()}createPositionAt(e,t){return d.Z._createAt(e,t)}createPositionAfter(e){return d.Z._createAfter(e)}createPositionBefore(e){return d.Z._createBefore(e)}createRange(...e){return new h.Z(...e)}createRangeOn(e){return h.Z._createOn(e)}createRangeIn(e){return h.Z._createIn(e)}createSelection(...e){return new u.Z(...e)}_disableRendering(e){this._renderingDisabled=e,0==e&&this.change((()=>{}))}_render(){this.isRenderingInProgress=!0,this.disableObservers(),this._renderer.render(),this.enableObservers(),this.isRenderingInProgress=!1}}var I=s("./packages/ckeditor5-engine/src/conversion/mapper.ts"),D=s("./packages/ckeditor5-engine/src/conversion/downcastdispatcher.ts"),z=s("./packages/ckeditor5-engine/src/conversion/downcasthelpers.ts"),B=s("./packages/ckeditor5-engine/src/conversion/upcasthelpers.ts");class F extends j.y{constructor(e,t){super(),this.model=e,this.view=new V(t),this.mapper=new I.Z,this.downcastDispatcher=new D.Z({mapper:this.mapper,schema:e.schema});const s=this.model.document,o=s.selection,i=this.model.markers;this.listenTo(this.model,"_beforeChanges",(()=>{this.view._disableRendering(!0)}),{priority:"highest"}),this.listenTo(this.model,"_afterChanges",(()=>{this.view._disableRendering(!1)}),{priority:"lowest"}),this.listenTo(s,"change",(()=>{this.view.change((e=>{this.downcastDispatcher.convertChanges(s.differ,i,e),this.downcastDispatcher.convertSelection(o,i,e)}))}),{priority:"low"}),this.listenTo(this.view.document,"selectionChange",(0,B.Fo)(this.model,this.mapper)),this.downcastDispatcher.on("insert:$text",(0,z.Om)(),{priority:"lowest"}),this.downcastDispatcher.on("insert",(0,z.o6)(),{priority:"lowest"}),this.downcastDispatcher.on("remove",(0,z.Od)(),{priority:"low"}),this.downcastDispatcher.on("selection",(0,z.iO)(),{priority:"high"}),this.downcastDispatcher.on("selection",(0,z.k3)(),{priority:"low"}),this.downcastDispatcher.on("selection",(0,z.GM)(),{priority:"low"}),this.view.document.roots.bindTo(this.model.document.roots).using((e=>{if("$graveyard"==e.rootName)return null;const t=new r(this.view.document,e.name);return t.rootName=e.rootName,this.mapper.bindElements(e,t),t}))}destroy(){this.view.destroy(),this.stopListening()}reconvertMarker(e){const t="string"==typeof e?e:e.name,s=this.model.markers.get(t);if(!s)throw new M.ZP("editingcontroller-reconvertmarker-marker-not-exist",this,{markerName:t});this.model.change((()=>{this.model.markers._refresh(s)}))}reconvertItem(e){this.model.change((()=>{this.model.document.differ._refreshItem(e)}))}}},"./packages/ckeditor5-engine/src/conversion/conversion.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>a});var o=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),i=s("./packages/ckeditor5-engine/src/conversion/upcasthelpers.ts"),r=s("./packages/ckeditor5-engine/src/conversion/downcasthelpers.ts"),n=s("./packages/ckeditor5-utils/src/toarray.ts");class a{constructor(e,t){this._helpers=new Map,this._downcast=(0,n.Z)(e),this._createConversionHelpers({name:"downcast",dispatchers:this._downcast,isDowncast:!0}),this._upcast=(0,n.Z)(t),this._createConversionHelpers({name:"upcast",dispatchers:this._upcast,isDowncast:!1})}addAlias(e,t){const s=this._downcast.includes(t);if(!this._upcast.includes(t)&&!s)throw new o.ZP("conversion-add-alias-dispatcher-not-registered",this);this._createConversionHelpers({name:e,dispatchers:[t],isDowncast:s})}for(e){if(!this._helpers.has(e))throw new o.ZP("conversion-for-unknown-group",this);return this._helpers.get(e)}elementToElement(e){this.for("downcast").elementToElement(e);for(const{model:t,view:s}of c(e))this.for("upcast").elementToElement({model:t,view:s,converterPriority:e.converterPriority})}attributeToElement(e){this.for("downcast").attributeToElement(e);for(const{model:t,view:s}of c(e))this.for("upcast").elementToAttribute({view:s,model:t,converterPriority:e.converterPriority})}attributeToAttribute(e){this.for("downcast").attributeToAttribute(e);for(const{model:t,view:s}of c(e))this.for("upcast").attributeToAttribute({view:s,model:t})}_createConversionHelpers({name:e,dispatchers:t,isDowncast:s}){if(this._helpers.has(e))throw new o.ZP("conversion-group-exists",this);const n=s?new r.ZP(t):new i.ZP(t);this._helpers.set(e,n)}}function*c(e){if(e.model.values)for(const t of e.model.values){const s={key:e.model.key,value:t},o=e.view[t],i=e.upcastAlso?e.upcastAlso[t]:void 0;yield*l(s,o,i)}else yield*l(e.model,e.view,e.upcastAlso)}function*l(e,t,s){if(yield{model:e,view:t},s)for(const t of(0,n.Z)(s))yield{model:e,view:t}}},"./packages/ckeditor5-engine/src/conversion/conversionhelpers.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});class o{constructor(e){this._dispatchers=e}add(e){for(const t of this._dispatchers)e(t);return this}}},"./packages/ckeditor5-engine/src/conversion/downcastdispatcher.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>l});var o=s("./packages/ckeditor5-engine/src/model/textproxy.ts"),i=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class r{constructor(){this._consumable=new Map,this._textProxyRegistry=new Map}add(e,t){t=n(t),e instanceof o.Z&&(e=this._getSymbolForTextProxy(e)),this._consumable.has(e)||this._consumable.set(e,new Map),this._consumable.get(e).set(t,!0)}consume(e,t){return t=n(t),e instanceof o.Z&&(e=this._getSymbolForTextProxy(e)),!!this.test(e,t)&&(this._consumable.get(e).set(t,!1),!0)}test(e,t){t=n(t),e instanceof o.Z&&(e=this._getSymbolForTextProxy(e));const s=this._consumable.get(e);if(void 0===s)return null;const i=s.get(t);return void 0===i?null:i}revert(e,t){t=n(t),e instanceof o.Z&&(e=this._getSymbolForTextProxy(e));const s=this.test(e,t);return!1===s?(this._consumable.get(e).set(t,!0),!0):!0!==s&&null}verifyAllConsumed(e){const t=[];for(const[s,o]of this._consumable)for(const[i,r]of o){const o=i.split(":")[0];r&&e==o&&t.push({event:i,item:s.name||s.description})}if(t.length)throw new i.ZP("conversion-model-consumable-not-consumed",null,{items:t})}_getSymbolForTextProxy(e){let t=null;const s=this._textProxyRegistry.get(e.startOffset);if(s){const o=s.get(e.endOffset);o&&(t=o.get(e.parent))}return t||(t=this._addSymbolForTextProxy(e)),t}_addSymbolForTextProxy(e){const t=e.startOffset,s=e.endOffset,o=e.parent,i=Symbol("$textProxy:"+e.data);let r,n;return r=this._textProxyRegistry.get(t),r||(r=new Map,this._textProxyRegistry.set(t,r)),n=r.get(s),n||(n=new Map,r.set(s,n)),n.set(o,i),i}}function n(e){const t=e.split(":");return"insert"==t[0]?t[0]:"addMarker"==t[0]||"removeMarker"==t[0]?e:t.length>1?t[0]+":"+t[1]:t[0]}var a=s("./packages/ckeditor5-engine/src/model/range.ts"),c=s("./packages/ckeditor5-utils/src/emittermixin.ts");class l extends c.Q5{constructor(e){super(),this._conversionApi={dispatcher:this,...e},this._firedEventsMap=new WeakMap}convertChanges(e,t,s){const o=this._createConversionApi(s,e.getRefreshedItems());for(const t of e.getMarkersToRemove())this._convertMarkerRemove(t.name,t.range,o);const i=this._reduceChanges(e.getChanges());for(const e of i)"insert"===e.type?this._convertInsert(a.Z._createFromPositionAndShift(e.position,e.length),o):"reinsert"===e.type?this._convertReinsert(a.Z._createFromPositionAndShift(e.position,e.length),o):"remove"===e.type?this._convertRemove(e.position,e.length,e.name,o):this._convertAttribute(e.range,e.attributeKey,e.attributeOldValue,e.attributeNewValue,o);for(const e of o.mapper.flushUnboundMarkerNames()){const s=t.get(e).getRange();this._convertMarkerRemove(e,s,o),this._convertMarkerAdd(e,s,o)}for(const t of e.getMarkersToAdd())this._convertMarkerAdd(t.name,t.range,o);o.mapper.flushDeferredBindings(),o.consumable.verifyAllConsumed("insert")}convert(e,t,s,o={}){const i=this._createConversionApi(s,void 0,o);this._convertInsert(e,i);for(const[e,s]of t)this._convertMarkerAdd(e,s,i);i.consumable.verifyAllConsumed("insert")}convertSelection(e,t,s){const o=Array.from(t.getMarkersAtPosition(e.getFirstPosition())),i=this._createConversionApi(s);if(this._addConsumablesForSelection(i.consumable,e,o),this.fire("selection",{selection:e},i),e.isCollapsed){for(const t of o){const s=t.getRange();if(!d(e.getFirstPosition(),t,i.mapper))continue;const o={item:e,markerName:t.name,markerRange:s};i.consumable.test(e,"addMarker:"+t.name)&&this.fire(`addMarker:${t.name}`,o,i)}for(const t of e.getAttributeKeys()){const s={item:e,range:e.getFirstRange(),attributeKey:t,attributeOldValue:null,attributeNewValue:e.getAttribute(t)};i.consumable.test(e,"attribute:"+s.attributeKey)&&this.fire(`attribute:${s.attributeKey}:$text`,s,i)}}}_convertInsert(e,t,s={}){s.doNotAddConsumables||this._addConsumablesForInsert(t.consumable,Array.from(e));for(const s of Array.from(e.getWalker({shallow:!0})).map(h))this._testAndFire("insert",s,t)}_convertRemove(e,t,s,o){this.fire(`remove:${s}`,{position:e,length:t},o)}_convertAttribute(e,t,s,o,i){this._addConsumablesForRange(i.consumable,e,`attribute:${t}`);for(const r of e){const e={item:r.item,range:a.Z._createFromPositionAndShift(r.previousPosition,r.length),attributeKey:t,attributeOldValue:s,attributeNewValue:o};this._testAndFire(`attribute:${t}`,e,i)}}_convertReinsert(e,t){const s=Array.from(e.getWalker({shallow:!0}));this._addConsumablesForInsert(t.consumable,s);for(const e of s.map(h))this._testAndFire("insert",{...e,reconversion:!0},t)}_convertMarkerAdd(e,t,s){if("$graveyard"==t.root.rootName)return;const o=`addMarker:${e}`;if(s.consumable.add(t,o),this.fire(o,{markerName:e,markerRange:t},s),s.consumable.consume(t,o)){this._addConsumablesForRange(s.consumable,t,o);for(const i of t.getItems()){if(!s.consumable.test(i,o))continue;const r={item:i,range:a.Z._createOn(i),markerName:e,markerRange:t};this.fire(o,r,s)}}}_convertMarkerRemove(e,t,s){"$graveyard"!=t.root.rootName&&this.fire(`removeMarker:${e}`,{markerName:e,markerRange:t},s)}_reduceChanges(e){const t={changes:e};return this.fire("reduceChanges",t),t.changes}_addConsumablesForInsert(e,t){for(const s of t){const t=s.item;if(null===e.test(t,"insert")){e.add(t,"insert");for(const s of t.getAttributeKeys())e.add(t,"attribute:"+s)}}return e}_addConsumablesForRange(e,t,s){for(const o of t.getItems())e.add(o,s);return e}_addConsumablesForSelection(e,t,s){e.add(t,"selection");for(const o of s)e.add(t,"addMarker:"+o.name);for(const s of t.getAttributeKeys())e.add(t,"attribute:"+s);return e}_testAndFire(e,t,s){const o=function(e,t){const s=t.item.is("element")?t.item.name:"$text";return`${e}:${s}`}(e,t),i=t.item.is("$textProxy")?s.consumable._getSymbolForTextProxy(t.item):t.item,r=this._firedEventsMap.get(s),n=r.get(i);if(n){if(n.has(o))return;n.add(o)}else r.set(i,new Set([o]));this.fire(o,t,s)}_testAndFireAddAttributes(e,t){const s={item:e,range:a.Z._createOn(e)};for(const e of s.item.getAttributeKeys())s.attributeKey=e,s.attributeOldValue=null,s.attributeNewValue=s.item.getAttribute(e),this._testAndFire(`attribute:${e}`,s,t)}_createConversionApi(e,t=new Set,s={}){const o={...this._conversionApi,consumable:new r,writer:e,options:s,convertItem:e=>this._convertInsert(a.Z._createOn(e),o),convertChildren:e=>this._convertInsert(a.Z._createIn(e),o,{doNotAddConsumables:!0}),convertAttributes:e=>this._testAndFireAddAttributes(e,o),canReuseView:e=>!t.has(o.mapper.toModelElement(e))};return this._firedEventsMap.set(o,new Map),o}}function d(e,t,s){const o=t.getRange(),i=Array.from(e.getAncestors());i.shift(),i.reverse();return!i.some((e=>{if(o.containsItem(e)){return!!s.toViewElement(e).getCustomProperty("addHighlight")}}))}function h(e){return{item:e.item,range:a.Z._createFromPositionAndShift(e.previousPosition,e.length)}}},"./packages/ckeditor5-engine/src/conversion/downcasthelpers.ts":(e,t,s)=>{"use strict";s.d(t,{GM:()=>_,Od:()=>m,Om:()=>g,ZP:()=>p,iO:()=>w,k3:()=>b,o6:()=>f});var o=s("./packages/ckeditor5-engine/src/model/range.ts"),i=s("./packages/ckeditor5-engine/src/model/selection.ts"),r=s("./packages/ckeditor5-engine/src/model/documentselection.ts"),n=s("./packages/ckeditor5-engine/src/model/element.ts"),a=s("./packages/ckeditor5-engine/src/model/position.ts"),c=s("./packages/ckeditor5-engine/src/view/attributeelement.ts"),l=s("./packages/ckeditor5-engine/src/conversion/conversionhelpers.ts"),d=s("./node_modules/lodash-es/cloneDeep.js"),h=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),u=s("./packages/ckeditor5-utils/src/toarray.ts");class p extends l.Z{elementToElement(e){return this.add(function(e){const t=y(e.model),s=Z(e.view,"container");t.attributes.length&&(t.children=!0);return o=>{o.on(`insert:${t.name}`,function(e,t=j){return(s,o,i)=>{if(!t(o.item,i.consumable,{preflight:!0}))return;const r=e(o.item,i,o);if(!r)return;t(o.item,i.consumable);const n=i.mapper.toViewPosition(o.range.start);i.mapper.bindElements(o.item,r),i.writer.insert(n,r),i.convertAttributes(o.item),E(r,o.item.getChildren(),i,{reconversion:o.reconversion})}}(s,C(t)),{priority:e.converterPriority||"normal"}),(t.children||t.attributes.length)&&o.on("reduceChanges",A(t),{priority:"low"})}}(e))}elementToStructure(e){return this.add(function(e){const t=y(e.model),s=Z(e.view,"container");return t.children=!0,o=>{if(o._conversionApi.schema.checkChild(t.name,"$text"))throw new h.ZP("conversion-element-to-structure-disallowed-text",o,{elementName:t.name});var i,r;o.on(`insert:${t.name}`,(i=s,r=C(t),(e,t,s)=>{if(!r(t.item,s.consumable,{preflight:!0}))return;const o=new Map;s.writer._registerSlotFactory(function(e,t,s){return(o,i="children")=>{const r=o.createContainerElement("$slot");let n=null;if("children"===i)n=Array.from(e.getChildren());else{if("function"!=typeof i)throw new h.ZP("conversion-slot-mode-unknown",s.dispatcher,{modeOrFilter:i});n=Array.from(e.getChildren()).filter((e=>i(e)))}return t.set(r,n),r}}(t.item,o,s));const n=i(t.item,s,t);if(s.writer._clearSlotFactory(),!n)return;!function(e,t,s){const o=Array.from(t.values()).flat(),i=new Set(o);if(i.size!=o.length)throw new h.ZP("conversion-slot-filter-overlap",s.dispatcher,{element:e});if(i.size!=e.childCount)throw new h.ZP("conversion-slot-filter-incomplete",s.dispatcher,{element:e})}(t.item,o,s),r(t.item,s.consumable);const a=s.mapper.toViewPosition(t.range.start);s.mapper.bindElements(t.item,n),s.writer.insert(a,n),s.convertAttributes(t.item),function(e,t,s,o){s.mapper.on("modelToViewPosition",n,{priority:"highest"});let i=null,r=null;for([i,r]of t)E(e,r,s,o),s.writer.move(s.writer.createRangeIn(i),s.writer.createPositionBefore(i)),s.writer.remove(i);function n(e,t){const s=t.modelPosition.nodeAfter,o=r.indexOf(s);o<0||(t.viewPosition=t.mapper.findPositionIn(i,o))}s.mapper.off("modelToViewPosition",n)}(n,o,s,{reconversion:t.reconversion})}),{priority:e.converterPriority||"normal"}),o.on("reduceChanges",A(t),{priority:"low"})}}(e))}attributeToElement(e){return this.add(function(e){let t=(e=(0,d.Z)(e)).model;"string"==typeof t&&(t={key:t});let s=`attribute:${t.key}`;t.name&&(s+=":"+t.name);if(t.values)for(const s of t.values)e.view[s]=Z(e.view[s],"attribute");else e.view=Z(e.view,"attribute");const o=P(e);return t=>{t.on(s,function(e){return(t,s,o)=>{if(!o.consumable.test(s.item,t.name))return;const n=e(s.attributeOldValue,o,s),a=e(s.attributeNewValue,o,s);if(!n&&!a)return;o.consumable.consume(s.item,t.name);const c=o.writer,l=c.document.selection;if(s.item instanceof i.Z||s.item instanceof r.Z)c.wrap(l.getFirstRange(),a);else{let e=o.mapper.toViewRange(s.range);null!==s.attributeOldValue&&n&&(e=c.unwrap(e,n)),null!==s.attributeNewValue&&a&&c.wrap(e,a)}}}(o),{priority:e.converterPriority||"normal"})}}(e))}attributeToAttribute(e){return this.add(function(e){let t=(e=(0,d.Z)(e)).model;"string"==typeof t&&(t={key:t});let s=`attribute:${t.key}`;t.name&&(s+=":"+t.name);if(t.values)for(const s of t.values)e.view[s]=x(e.view[s]);else e.view=x(e.view);const o=P(e);return t=>{var i;t.on(s,(i=o,(e,t,s)=>{if(!s.consumable.test(t.item,e.name))return;const o=i(t.attributeOldValue,s,t),r=i(t.attributeNewValue,s,t);if(!o&&!r)return;s.consumable.consume(t.item,e.name);const n=s.mapper.toViewElement(t.item),a=s.writer;if(!n)throw new h.ZP("conversion-attribute-to-attribute-on-text",s.dispatcher,t);if(null!==t.attributeOldValue&&o)if("class"==o.key){const e=(0,u.Z)(o.value);for(const t of e)a.removeClass(t,n)}else if("style"==o.key){const e=Object.keys(o.value);for(const t of e)a.removeStyle(t,n)}else a.removeAttribute(o.key,n);if(null!==t.attributeNewValue&&r)if("class"==r.key){const e=(0,u.Z)(r.value);for(const t of e)a.addClass(t,n)}else if("style"==r.key){const e=Object.keys(r.value);for(const t of e)a.setStyle(t,r.value[t],n)}else a.setAttribute(r.key,r.value,n)}),{priority:e.converterPriority||"normal"})}}(e))}markerToElement(e){return this.add(function(e){const t=Z(e.view,"ui");return s=>{var o;s.on(`addMarker:${e.model}`,(o=t,(e,t,s)=>{t.isOpening=!0;const i=o(t,s);t.isOpening=!1;const r=o(t,s);if(!i||!r)return;const n=t.markerRange;if(n.isCollapsed&&!s.consumable.consume(n,e.name))return;for(const t of n)if(!s.consumable.consume(t.item,e.name))return;const a=s.mapper,c=s.writer;c.insert(a.toViewPosition(n.start),i),s.mapper.bindElementToMarker(i,t.markerName),n.isCollapsed||(c.insert(a.toViewPosition(n.end),r),s.mapper.bindElementToMarker(r,t.markerName)),e.stop()}),{priority:e.converterPriority||"normal"}),s.on(`removeMarker:${e.model}`,((e,t,s)=>{const o=s.mapper.markerNameToElements(t.markerName);if(o){for(const e of o)s.mapper.unbindElementFromMarkerName(e,t.markerName),s.writer.clear(s.writer.createRangeOn(e),e);s.writer.clearClonedElementsGroup(t.markerName),e.stop()}}),{priority:e.converterPriority||"normal"})}}(e))}markerToHighlight(e){return this.add(function(e){return t=>{var s;t.on(`addMarker:${e.model}`,(s=e.view,(e,t,o)=>{if(!t.item)return;if(!(t.item instanceof i.Z||t.item instanceof r.Z||t.item.is("$textProxy")))return;const n=T(s,t,o);if(!n)return;if(!o.consumable.consume(t.item,e.name))return;const a=o.writer,c=k(a,n),l=a.document.selection;if(t.item instanceof i.Z||t.item instanceof r.Z)a.wrap(l.getFirstRange(),c);else{const e=o.mapper.toViewRange(t.range),s=a.wrap(e,c);for(const e of s.getItems())if(e.is("attributeElement")&&e.isSimilar(c)){o.mapper.bindElementToMarker(e,t.markerName);break}}}),{priority:e.converterPriority||"normal"}),t.on(`addMarker:${e.model}`,function(e){return(t,s,i)=>{if(!s.item)return;if(!(s.item instanceof n.Z))return;const r=T(e,s,i);if(!r)return;if(!i.consumable.test(s.item,t.name))return;const a=i.mapper.toViewElement(s.item);if(a&&a.getCustomProperty("addHighlight")){i.consumable.consume(s.item,t.name);for(const e of o.Z._createIn(s.item))i.consumable.consume(e.item,t.name);a.getCustomProperty("addHighlight")(a,r,i.writer),i.mapper.bindElementToMarker(a,s.markerName)}}}(e.view),{priority:e.converterPriority||"normal"}),t.on(`removeMarker:${e.model}`,function(e){return(t,s,o)=>{if(s.markerRange.isCollapsed)return;const i=T(e,s,o);if(!i)return;const r=k(o.writer,i),n=o.mapper.markerNameToElements(s.markerName);if(n){for(const e of n)if(o.mapper.unbindElementFromMarkerName(e,s.markerName),e.is("attributeElement"))o.writer.unwrap(o.writer.createRangeOn(e),r);else{e.getCustomProperty("removeHighlight")(e,i.id,o.writer)}o.writer.clearClonedElementsGroup(s.markerName),t.stop()}}}(e.view),{priority:e.converterPriority||"normal"})}}(e))}markerToData(e){return this.add(function(e){const t=(e=(0,d.Z)(e)).model;let s=e.view;s||(s=s=>({group:t,name:s.substr(e.model.length+1)}));return o=>{var i;o.on(`addMarker:${t}`,(i=s,(e,t,s)=>{const o=i(t.markerName,s);if(!o)return;const r=t.markerRange;s.consumable.consume(r,e.name)&&(v(r,!1,s,t,o),v(r,!0,s,t,o),e.stop())}),{priority:e.converterPriority||"normal"}),o.on(`removeMarker:${t}`,function(e){return(t,s,o)=>{const i=e(s.markerName,o);if(!i)return;const r=o.mapper.markerNameToElements(s.markerName);if(r){for(const e of r)o.mapper.unbindElementFromMarkerName(e,s.markerName),e.is("containerElement")?(n(`data-${i.group}-start-before`,e),n(`data-${i.group}-start-after`,e),n(`data-${i.group}-end-before`,e),n(`data-${i.group}-end-after`,e)):o.writer.clear(o.writer.createRangeOn(e),e);o.writer.clearClonedElementsGroup(s.markerName),t.stop()}function n(e,t){if(t.hasAttribute(e)){const s=new Set(t.getAttribute(e).split(","));s.delete(i.name),0==s.size?o.writer.removeAttribute(e,t):o.writer.setAttribute(e,Array.from(s).join(","),t)}}}}(s),{priority:e.converterPriority||"normal"})}}(e))}}function g(){return(e,t,s)=>{if(!s.consumable.consume(t.item,e.name))return;const o=s.writer,i=s.mapper.toViewPosition(t.range.start),r=o.createText(t.item.data);o.insert(i,r)}}function f(){return(e,t,s)=>{s.convertAttributes(t.item),t.reconversion||!t.item.is("element")||t.item.isEmpty||s.convertChildren(t.item)}}function m(){return(e,t,s)=>{const o=s.mapper.toViewPosition(t.position),i=t.position.getShiftedBy(t.length),r=s.mapper.toViewPosition(i,{isPhantom:!0}),n=s.writer.createRange(o,r),a=s.writer.remove(n.getTrimmed());for(const e of s.writer.createRangeIn(a).getItems())s.mapper.unbindViewElement(e,{defer:!0})}}function k(e,t){const s=e.createAttributeElement("span",t.attributes);return t.classes&&s._addClass(t.classes),"number"==typeof t.priority&&(s._priority=t.priority),s._id=t.id,s}function b(){return(e,t,s)=>{const o=t.selection;if(o.isCollapsed)return;if(!s.consumable.consume(o,"selection"))return;const i=[];for(const e of o.getRanges())i.push(s.mapper.toViewRange(e));s.writer.setSelection(i,{backward:o.isBackward})}}function _(){return(e,t,s)=>{const o=t.selection;if(!o.isCollapsed)return;if(!s.consumable.consume(o,"selection"))return;const i=s.writer,r=o.getFirstPosition(),n=s.mapper.toViewPosition(r),a=i.breakAttributes(n);i.setSelection(a)}}function w(){return(e,t,s)=>{const o=s.writer,i=o.document.selection;for(const e of i.getRanges())e.isCollapsed&&e.end.parent.isAttached()&&s.writer.mergeAttributes(e.start);o.setSelection(null)}}function v(e,t,s,o,i){const r=t?e.start:e.end,n=r.nodeAfter&&r.nodeAfter.is("element")?r.nodeAfter:null,a=r.nodeBefore&&r.nodeBefore.is("element")?r.nodeBefore:null;if(n||a){let e,r;t&&n||!t&&!a?(e=n,r=!0):(e=a,r=!1);const c=s.mapper.toViewElement(e);if(c)return void function(e,t,s,o,i,r){const n=`data-${r.group}-${t?"start":"end"}-${s?"before":"after"}`,a=e.hasAttribute(n)?e.getAttribute(n).split(","):[];a.unshift(r.name),o.writer.setAttribute(n,a.join(","),e),o.mapper.bindElementToMarker(e,i.markerName)}(c,t,r,s,o,i)}!function(e,t,s,o,i){const r=`${i.group}-${t?"start":"end"}`,n=i.name?{name:i.name}:null,a=s.writer.createUIElement(r,n);s.writer.insert(e,a),s.mapper.bindElementToMarker(a,o.markerName)}(s.mapper.toViewPosition(r),t,s,o,i)}function y(e){return"string"==typeof e&&(e={name:e}),e.attributes?Array.isArray(e.attributes)||(e.attributes=[e.attributes]):e.attributes=[],e.children=!!e.children,e}function Z(e,t){return"function"==typeof e?e:(s,o)=>function(e,t,s){"string"==typeof e&&(e={name:e});let o;const i=t.writer,r=Object.assign({},e.attributes);if("container"==s)o=i.createContainerElement(e.name,r);else if("attribute"==s){const t={priority:e.priority||c.Z.DEFAULT_PRIORITY};o=i.createAttributeElement(e.name,r,t)}else o=i.createUIElement(e.name,r);if(e.styles){const t=Object.keys(e.styles);for(const s of t)i.setStyle(s,e.styles[s],o)}if(e.classes){const t=e.classes;if("string"==typeof t)i.addClass(t,o);else for(const e of t)i.addClass(e,o)}return o}(e,o,t)}function P(e){return e.model.values?(t,s,o)=>{const i=e.view[t];return i?i(t,s,o):null}:e.view}function x(e){return"string"==typeof e?t=>({key:e,value:t}):"object"==typeof e?e.value?()=>e:t=>({key:e.key,value:t}):e}function T(e,t,s){const o="function"==typeof e?e(t,s):e;return o?(o.priority||(o.priority=10),o.id||(o.id=t.markerName),o):null}function A(e){const t=function(e){return(t,s)=>{if(!t.is("element",e.name))return!1;if("attribute"==s.type){if(e.attributes.includes(s.attributeKey))return!0}else if(e.children)return!0;return!1}}(e);return(e,s)=>{const o=[];s.reconvertedElements||(s.reconvertedElements=new Set);for(const e of s.changes){const i="attribute"==e.type?e.range.start.nodeAfter:e.position.parent;if(i&&t(i,e)){if(!s.reconvertedElements.has(i)){s.reconvertedElements.add(i);const e=a.ZP._createBefore(i);o.push({type:"remove",name:i.name,position:e,length:1},{type:"reinsert",name:i.name,position:e,length:1})}}else o.push(e)}s.changes=o}}function C(e){return(t,s,o={})=>{const i=["insert"];for(const s of e.attributes)t.hasAttribute(s)&&i.push(`attribute:${s}`);return!!i.every((e=>s.test(t,e)))&&(o.preflight||i.forEach((e=>s.consume(t,e))),!0)}}function E(e,t,s,o){for(const i of t)S(e.root,i,s,o)||s.convertItem(i)}function S(e,t,s,o){const{writer:i,mapper:r}=s;if(!o.reconversion)return!1;const n=r.toViewElement(t);return!(!n||n.root==e)&&(!!s.canReuseView(n)&&(i.move(i.createRangeOn(n),r.toViewPosition(a.ZP._createBefore(t))),!0))}function j(e,t,{preflight:s}={}){return s?t.test(e,"insert"):t.consume(e,"insert")}},"./packages/ckeditor5-engine/src/conversion/mapper.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>d});var o=s("./packages/ckeditor5-engine/src/model/position.ts"),i=s("./packages/ckeditor5-engine/src/model/range.ts"),r=s("./packages/ckeditor5-engine/src/view/position.ts"),n=s("./packages/ckeditor5-engine/src/view/range.ts"),a=s("./packages/ckeditor5-engine/src/view/text.ts"),c=s("./packages/ckeditor5-utils/src/emittermixin.ts"),l=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class d extends c.Q5{constructor(){super(),this._modelToViewMapping=new WeakMap,this._viewToModelMapping=new WeakMap,this._viewToModelLengthCallbacks=new Map,this._markerNameToElements=new Map,this._elementToMarkerNames=new Map,this._deferredBindingRemovals=new Map,this._unboundMarkerNames=new Set,this.on("modelToViewPosition",((e,t)=>{if(t.viewPosition)return;const s=this._modelToViewMapping.get(t.modelPosition.parent);if(!s)throw new l.ZP("mapping-model-position-view-parent-not-found",this,{modelPosition:t.modelPosition});t.viewPosition=this.findPositionIn(s,t.modelPosition.offset)}),{priority:"low"}),this.on("viewToModelPosition",((e,t)=>{if(t.modelPosition)return;const s=this.findMappedViewAncestor(t.viewPosition),i=this._viewToModelMapping.get(s),r=this._toModelOffset(t.viewPosition.parent,t.viewPosition.offset,s);t.modelPosition=o.ZP._createAt(i,r)}),{priority:"low"})}bindElements(e,t){this._modelToViewMapping.set(e,t),this._viewToModelMapping.set(t,e)}unbindViewElement(e,t={}){const s=this.toModelElement(e);if(this._elementToMarkerNames.has(e))for(const t of this._elementToMarkerNames.get(e))this._unboundMarkerNames.add(t);t.defer?this._deferredBindingRemovals.set(e,e.root):(this._viewToModelMapping.delete(e),this._modelToViewMapping.get(s)==e&&this._modelToViewMapping.delete(s))}unbindModelElement(e){const t=this.toViewElement(e);this._modelToViewMapping.delete(e),this._viewToModelMapping.get(t)==e&&this._viewToModelMapping.delete(t)}bindElementToMarker(e,t){const s=this._markerNameToElements.get(t)||new Set;s.add(e);const o=this._elementToMarkerNames.get(e)||new Set;o.add(t),this._markerNameToElements.set(t,s),this._elementToMarkerNames.set(e,o)}unbindElementFromMarkerName(e,t){const s=this._markerNameToElements.get(t);s&&(s.delete(e),0==s.size&&this._markerNameToElements.delete(t));const o=this._elementToMarkerNames.get(e);o&&(o.delete(t),0==o.size&&this._elementToMarkerNames.delete(e))}flushUnboundMarkerNames(){const e=Array.from(this._unboundMarkerNames);return this._unboundMarkerNames.clear(),e}flushDeferredBindings(){for(const[e,t]of this._deferredBindingRemovals)e.root==t&&this.unbindViewElement(e);this._deferredBindingRemovals=new Map}clearBindings(){this._modelToViewMapping=new WeakMap,this._viewToModelMapping=new WeakMap,this._markerNameToElements=new Map,this._elementToMarkerNames=new Map,this._unboundMarkerNames=new Set,this._deferredBindingRemovals=new Map}toModelElement(e){return this._viewToModelMapping.get(e)}toViewElement(e){return this._modelToViewMapping.get(e)}toModelRange(e){return new i.Z(this.toModelPosition(e.start),this.toModelPosition(e.end))}toViewRange(e){return new n.Z(this.toViewPosition(e.start),this.toViewPosition(e.end))}toModelPosition(e){const t={viewPosition:e,mapper:this};return this.fire("viewToModelPosition",t),t.modelPosition}toViewPosition(e,t={}){const s={modelPosition:e,mapper:this,isPhantom:t.isPhantom};return this.fire("modelToViewPosition",s),s.viewPosition}markerNameToElements(e){const t=this._markerNameToElements.get(e);if(!t)return null;const s=new Set;for(const e of t)if(e.is("attributeElement"))for(const t of e.getElementsWithSameId())s.add(t);else s.add(e);return s}registerViewToModelLength(e,t){this._viewToModelLengthCallbacks.set(e,t)}findMappedViewAncestor(e){let t=e.parent;for(;!this._viewToModelMapping.has(t);)t=t.parent;return t}_toModelOffset(e,t,s){if(s!=e){return this._toModelOffset(e.parent,e.index,s)+this._toModelOffset(e,t,e)}if(e.is("$text"))return t;let o=0;for(let s=0;s<t;s++)o+=this.getModelLength(e.getChild(s));return o}getModelLength(e){if(this._viewToModelLengthCallbacks.get(e.name)){return this._viewToModelLengthCallbacks.get(e.name)(e)}if(this._viewToModelMapping.has(e))return 1;if(e.is("$text"))return e.data.length;if(e.is("uiElement"))return 0;{let t=0;for(const s of e.getChildren())t+=this.getModelLength(s);return t}}findPositionIn(e,t){let s,o=0,i=0,n=0;if(e.is("$text"))return new r.Z(e,t);for(;i<t;)s=e.getChild(n),o=this.getModelLength(s),i+=o,n++;return i==t?this._moveViewPositionToTextNode(new r.Z(e,n)):this.findPositionIn(s,t-(i-o))}_moveViewPositionToTextNode(e){const t=e.nodeBefore,s=e.nodeAfter;return t instanceof a.Z?new r.Z(t,t.data.length):s instanceof a.Z?new r.Z(s,0):e}}},"./packages/ckeditor5-engine/src/conversion/upcasthelpers.ts":(e,t,s)=>{"use strict";s.d(t,{Fo:()=>h,ZP:()=>c,_p:()=>l,s8:()=>d});var o=s("./packages/ckeditor5-engine/src/view/matcher.ts"),i=s("./packages/ckeditor5-engine/src/conversion/conversionhelpers.ts"),r=s("./node_modules/lodash-es/cloneDeep.js"),n=s("./packages/ckeditor5-utils/src/priorities.ts"),a=s("./packages/ckeditor5-engine/src/model/utils/autoparagraphing.ts");class c extends i.Z{elementToElement(e){return this.add(u(e))}elementToAttribute(e){return this.add(function(e){f(e=(0,r.Z)(e));const t=m(e,!1),s=p(e.view),o=s?`element:${s}`:"element";return s=>{s.on(o,t,{priority:e.converterPriority||"low"})}}(e))}attributeToAttribute(e){return this.add(function(e){e=(0,r.Z)(e);let t=null;("string"==typeof e.view||e.view.key)&&(t=function(e){"string"==typeof e.view&&(e.view={key:e.view});const t=e.view.key;let s;if("class"==t||"style"==t){s={["class"==t?"classes":"styles"]:e.view.value}}else{s={attributes:{[t]:void 0===e.view.value?/[\s\S]*/:e.view.value}}}e.view.name&&(s.name=e.view.name);return e.view=s,t}(e));f(e,t);const s=m(e,!0);return t=>{t.on("element",s,{priority:e.converterPriority||"low"})}}(e))}elementToMarker(e){return this.add(function(e){const t=function(e){return(t,s)=>{const o="string"==typeof e?e:e(t,s);return s.writer.createElement("$marker",{"data-name":o})}}(e.model);return u({...e,model:t})}(e))}dataToMarker(e){return this.add(function(e){(e=(0,r.Z)(e)).model||(e.model=t=>t?e.view+":"+t:e.view);const t={view:e.view,model:e.model},s=g(k(t,"start")),o=g(k(t,"end"));return i=>{i.on(`element:${e.view}-start`,s,{priority:e.converterPriority||"normal"}),i.on(`element:${e.view}-end`,o,{priority:e.converterPriority||"normal"});const r=n.Z.get("low"),a=n.Z.get("highest"),c=n.Z.get(e.converterPriority)/a;i.on("element",function(e){return(t,s,o)=>{const i=`data-${e.view}`;function r(t,i){for(const r of i){const i=e.model(r,o),n=o.writer.createElement("$marker",{"data-name":i});o.writer.insert(n,t),s.modelCursor.isEqual(t)?s.modelCursor=s.modelCursor.getShiftedBy(1):s.modelCursor=s.modelCursor._getTransformedByInsertion(t,1),s.modelRange=s.modelRange._getTransformedByInsertion(t,1)[0]}}(o.consumable.test(s.viewItem,{attributes:i+"-end-after"})||o.consumable.test(s.viewItem,{attributes:i+"-start-after"})||o.consumable.test(s.viewItem,{attributes:i+"-end-before"})||o.consumable.test(s.viewItem,{attributes:i+"-start-before"}))&&(s.modelRange||Object.assign(s,o.convertChildren(s.viewItem,s.modelCursor)),o.consumable.consume(s.viewItem,{attributes:i+"-end-after"})&&r(s.modelRange.end,s.viewItem.getAttribute(i+"-end-after").split(",")),o.consumable.consume(s.viewItem,{attributes:i+"-start-after"})&&r(s.modelRange.end,s.viewItem.getAttribute(i+"-start-after").split(",")),o.consumable.consume(s.viewItem,{attributes:i+"-end-before"})&&r(s.modelRange.start,s.viewItem.getAttribute(i+"-end-before").split(",")),o.consumable.consume(s.viewItem,{attributes:i+"-start-before"})&&r(s.modelRange.start,s.viewItem.getAttribute(i+"-start-before").split(",")))}}(t),{priority:r+c})}}(e))}}function l(){return(e,t,s)=>{if(!t.modelRange&&s.consumable.consume(t.viewItem,{name:!0})){const{modelRange:e,modelCursor:o}=s.convertChildren(t.viewItem,t.modelCursor);t.modelRange=e,t.modelCursor=o}}}function d(){return(e,t,{schema:s,consumable:o,writer:i})=>{let r=t.modelCursor;if(!o.test(t.viewItem))return;if(!s.checkChild(r,"$text")){if(!(0,a.gg)(r,"$text",s))return;if(0==t.viewItem.data.trim().length)return;r=(0,a.zX)(r,i)}o.consume(t.viewItem);const n=i.createText(t.viewItem.data);i.insert(n,r),t.modelRange=i.createRange(r,r.getShiftedBy(n.offsetSize)),t.modelCursor=t.modelRange.end}}function h(e,t){return(s,o)=>{const i=o.newSelection,r=[];for(const e of i.getRanges())r.push(t.toModelRange(e));const n=e.createSelection(r,{backward:i.isBackward});n.isEqual(e.document.selection)||e.change((e=>{e.setSelection(n)}))}}function u(e){const t=g(e=(0,r.Z)(e)),s=p(e.view),o=s?`element:${s}`:"element";return s=>{s.on(o,t,{priority:e.converterPriority||"normal"})}}function p(e){return"string"==typeof e?e:"object"==typeof e&&"string"==typeof e.name?e.name:null}function g(e){const t=new o.Z(e.view);return(s,o,i)=>{const r=t.match(o.viewItem);if(!r)return;const n=r.match;if(n.name=!0,!i.consumable.test(o.viewItem,n))return;const a=function(e,t,s){return e instanceof Function?e(t,s):s.writer.createElement(e)}(e.model,o.viewItem,i);a&&i.safeInsert(a,o.modelCursor)&&(i.consumable.consume(o.viewItem,n),i.convertChildren(o.viewItem,a),i.updateConversionResult(a,o))}}function f(e,t=null){const s=null===t||(e=>e.getAttribute(t)),o="object"!=typeof e.model?e.model:e.model.key,i="object"!=typeof e.model||void 0===e.model.value?s:e.model.value;e.model={key:o,value:i}}function m(e,t){const s=new o.Z(e.view);return(o,i,r)=>{if(!i.modelRange&&t)return;const n=s.match(i.viewItem);if(!n)return;if(!function(e,t){const s="function"==typeof e?e(t):e;if("object"==typeof s&&!p(s))return!1;return!s.classes&&!s.attributes&&!s.styles}(e.view,i.viewItem)?delete n.match.name:n.match.name=!0,!r.consumable.test(i.viewItem,n.match))return;const a=e.model.key,c="function"==typeof e.model.value?e.model.value(i.viewItem,r):e.model.value;if(null===c)return;i.modelRange||Object.assign(i,r.convertChildren(i.viewItem,i.modelCursor));const l=function(e,t,s,o){let i=!1;for(const r of Array.from(e.getItems({shallow:s})))o.schema.checkAttribute(r,t.key)&&(i=!0,r.hasAttribute(t.key)||o.writer.setAttribute(t.key,t.value,r));return i}(i.modelRange,{key:a,value:c},t,r);l&&(r.consumable.test(i.viewItem,{name:!0})&&(n.match.name=!0),r.consumable.consume(i.viewItem,n.match))}}function k(e,t){return{view:`${e.view}-${t}`,model:(t,s)=>{const o=t.getAttribute("name"),i=e.model(o,s);return s.writer.createElement("$marker",{"data-name":i})}}}},"./packages/ckeditor5-engine/src/dataprocessor/htmldataprocessor.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});class o{getHtml(e){const t=document.implementation.createHTMLDocument("").createElement("div");return t.appendChild(e),t.innerHTML}}var i=s("./packages/ckeditor5-engine/src/view/domconverter.ts");class r{constructor(e){this.domParser=new DOMParser,this.domConverter=new i.Z(e,{renderingMode:"data"}),this.htmlWriter=new o}toData(e){const t=this.domConverter.viewToDom(e);return this.htmlWriter.getHtml(t)}toView(e){const t=this._toDom(e);return this.domConverter.domToView(t)}registerRawContentMatcher(e){this.domConverter.registerRawContentMatcher(e)}useFillerType(e){this.domConverter.blockFillerMode="marked"==e?"markedNbsp":"nbsp"}_toDom(e){e.match(/<(?:html|body|head|meta)(?:\s[^>]*)?>/i)||(e=`<body>${e}</body>`);const t=this.domParser.parseFromString(e,"text/html"),s=t.createDocumentFragment(),o=t.body.childNodes;for(;o.length>0;)s.appendChild(o[0]);return s}}},"./packages/ckeditor5-engine/src/index.ts":(e,t,s)=>{"use strict";s.d(t,{KU:()=>K,uz:()=>b.Z,Yc:()=>k.Z,f4:()=>O.Z,uj:()=>P.Z,pG:()=>N.Z,dK:()=>oe.Z,qZ:()=>U.Z,qD:()=>J.Z,jH:()=>m.Z,W_:()=>S.Z,Ay:()=>R.Z,X5:()=>_.Z,IZ:()=>w.Z,jP:()=>A.Z,iE:()=>T.Z,zj:()=>v.Z,xO:()=>se.Z,Hn:()=>C.Z,dM:()=>G.Z,Qj:()=>H.Z,Bz:()=>y.Z,Ly:()=>j.ZP,e6:()=>x.Z,Th:()=>V.Z,A_:()=>ie.A,xv:()=>M.Z,Po:()=>E.Z,yj:()=>te,m1:()=>F.Z,By:()=>B.Z,Ux:()=>I.Z,y_:()=>q.Z,y9:()=>z.Z,pc:()=>L.Z,wx:()=>W.Z,Xj:()=>D.Z,dq:()=>$.Z,QR:()=>je,sI:()=>Oe,vt:()=>Le,J8:()=>We,DA:()=>l,ID:()=>c,I8:()=>Ce,mq:()=>Ae,oz:()=>Te,YG:()=>B.Y,m0:()=>Ee,uT:()=>Se,$_:()=>h,SB:()=>Ze,D5:()=>he,G9:()=>fe,IT:()=>pe,zz:()=>ke,WK:()=>ve,Zb:()=>_e,PX:()=>xe,Q7:()=>u,NJ:()=>d,Rf:()=>Z.R});var o=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),i=s.n(o),r=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-engine/theme/placeholder.css"),n={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i()(r.Z,n);r.Z.locals;const a=new WeakMap;function c(e){const{view:t,element:s,text:o,isDirectHost:i=!0,keepOnFocus:r=!1}=e,n=t.document;a.has(n)||(a.set(n,new Map),n.registerPostFixer((e=>p(n,e)))),a.get(n).set(s,{text:o,isDirectHost:i,keepOnFocus:r,hostElement:i?s:null}),t.change((e=>p(n,e)))}function l(e,t){const s=t.document;e.change((e=>{if(!a.has(s))return;const o=a.get(s),i=o.get(t);e.removeAttribute("data-placeholder",i.hostElement),h(e,i.hostElement),o.delete(t)}))}function d(e,t){return!t.hasClass("ck-placeholder")&&(e.addClass("ck-placeholder",t),!0)}function h(e,t){return!!t.hasClass("ck-placeholder")&&(e.removeClass("ck-placeholder",t),!0)}function u(e,t){if(!e.isAttached())return!1;const s=Array.from(e.getChildren()).some((e=>!e.is("uiElement")));if(s)return!1;if(t)return!0;const o=e.document;if(!o.isFocused)return!0;const i=o.selection.anchor;return!!i&&i.parent!==e}function p(e,t){const s=a.get(e),o=[];let i=!1;for(const[e,r]of s)r.isDirectHost&&(o.push(e),g(t,e,r)&&(i=!0));for(const[e,r]of s){if(r.isDirectHost)continue;const s=f(e);s&&(o.includes(s)||(r.hostElement=s,g(t,e,r)&&(i=!0)))}return i}function g(e,t,s){const{text:o,isDirectHost:i,hostElement:r}=s;let n=!1;r.getAttribute("data-placeholder")!==o&&(e.setAttribute("data-placeholder",o,r),n=!0);return(i||1==t.childCount)&&u(r,s.keepOnFocus)?d(e,r)&&(n=!0):h(e,r)&&(n=!0),n}function f(e){if(e.childCount){const t=e.getChild(0);if(t.is("element")&&!t.is("uiElement")&&!t.is("attributeElement"))return t}return null}var m=s("./packages/ckeditor5-engine/src/controller/editingcontroller.ts"),k=s("./packages/ckeditor5-engine/src/controller/datacontroller.ts"),b=s("./packages/ckeditor5-engine/src/conversion/conversion.ts"),_=s("./packages/ckeditor5-engine/src/dataprocessor/htmldataprocessor.ts"),w=s("./packages/ckeditor5-engine/src/model/operation/insertoperation.ts"),v=s("./packages/ckeditor5-engine/src/model/operation/markeroperation.ts"),y=s("./packages/ckeditor5-engine/src/model/operation/operationfactory.ts"),Z=s("./packages/ckeditor5-engine/src/model/operation/transform.ts"),P=s("./packages/ckeditor5-engine/src/model/documentselection.ts"),x=s("./packages/ckeditor5-engine/src/model/range.ts"),T=s("./packages/ckeditor5-engine/src/model/liverange.ts"),A=s("./packages/ckeditor5-engine/src/model/liveposition.ts"),C=s("./packages/ckeditor5-engine/src/model/model.ts"),E=s("./packages/ckeditor5-engine/src/model/treewalker.ts"),S=s("./packages/ckeditor5-engine/src/model/element.ts"),j=s("./packages/ckeditor5-engine/src/model/position.ts"),O=s("./packages/ckeditor5-engine/src/model/documentfragment.ts"),R=s("./packages/ckeditor5-engine/src/model/history.ts"),M=s("./packages/ckeditor5-engine/src/model/text.ts"),N=s("./packages/ckeditor5-engine/src/view/domconverter.ts"),V=s("./packages/ckeditor5-engine/src/view/renderer.ts"),I=s("./packages/ckeditor5-engine/src/view/document.ts"),D=s("./packages/ckeditor5-engine/src/view/text.ts"),z=s("./packages/ckeditor5-engine/src/view/element.ts"),B=s("./packages/ckeditor5-engine/src/view/containerelement.ts"),F=s("./packages/ckeditor5-engine/src/view/attributeelement.ts"),L=s("./packages/ckeditor5-engine/src/view/emptyelement.ts"),W=s("./packages/ckeditor5-engine/src/view/rawelement.ts"),$=s("./packages/ckeditor5-engine/src/view/uielement.ts"),q=s("./packages/ckeditor5-engine/src/view/documentfragment.ts"),H=s("./packages/ckeditor5-engine/src/view/observer/observer.ts"),U=s("./packages/ckeditor5-engine/src/view/observer/domeventobserver.ts");class K extends U.Z{constructor(e){super(e),this.domEventType="click"}onDomEvent(e){this.fire(e.type,e)}}var G=s("./packages/ckeditor5-engine/src/view/observer/mouseobserver.ts"),J=s("./packages/ckeditor5-engine/src/view/downcastwriter.ts"),Q=s("./node_modules/lodash-es/isPlainObject.js"),X=s("./packages/ckeditor5-engine/src/view/position.ts"),Y=s("./packages/ckeditor5-engine/src/view/range.ts"),ee=s("./packages/ckeditor5-engine/src/view/selection.ts");class te{constructor(e){this.document=e}createDocumentFragment(e){return new q.Z(this.document,e)}createElement(e,t,s){return new z.Z(this.document,e,t,s)}createText(e){return new D.Z(this.document,e)}clone(e,t=!1){return e._clone(t)}appendChild(e,t){return t._appendChild(e)}insertChild(e,t,s){return s._insertChild(e,t)}removeChildren(e,t,s){return s._removeChildren(e,t)}remove(e){const t=e.parent;return t?this.removeChildren(t.getChildIndex(e),1,t):[]}replace(e,t){const s=e.parent;if(s){const o=s.getChildIndex(e);return this.removeChildren(o,1,s),this.insertChild(o,t,s),!0}return!1}unwrapElement(e){const t=e.parent;if(t){const s=t.getChildIndex(e);this.remove(e),this.insertChild(s,e.getChildren(),t)}}rename(e,t){const s=new z.Z(this.document,e,t.getAttributes(),t.getChildren());return this.replace(t,s)?s:null}setAttribute(e,t,s){s._setAttribute(e,t)}removeAttribute(e,t){t._removeAttribute(e)}addClass(e,t){t._addClass(e)}removeClass(e,t){t._removeClass(e)}setStyle(e,t,s){(0,Q.Z)(e)&&void 0===s?t._setStyle(e):s._setStyle(e,t)}removeStyle(e,t){t._removeStyle(e)}setCustomProperty(e,t,s){s._setCustomProperty(e,t)}removeCustomProperty(e,t){return t._removeCustomProperty(e)}createPositionAt(e,t){return X.Z._createAt(e,t)}createPositionAfter(e){return X.Z._createAfter(e)}createPositionBefore(e){return X.Z._createBefore(e)}createRange(e,t){return new Y.Z(e,t)}createRangeOn(e){return Y.Z._createOn(e)}createRangeIn(e){return Y.Z._createIn(e)}createSelection(...e){return new ee.Z(...e)}}var se=s("./packages/ckeditor5-engine/src/view/matcher.ts"),oe=s("./packages/ckeditor5-engine/src/view/observer/domeventdata.ts"),ie=s("./packages/ckeditor5-engine/src/view/stylesmap.ts");const re=/^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i,ne=/^rgb\([ ]?([0-9]{1,3}[ %]?,[ ]?){2,3}[0-9]{1,3}[ %]?\)$/i,ae=/^rgba\([ ]?([0-9]{1,3}[ %]?,[ ]?){3}(1|[0-9]+%|[0]?\.?[0-9]+)\)$/i,ce=/^hsl\([ ]?([0-9]{1,3}[ %]?[,]?[ ]*){3}(1|[0-9]+%|[0]?\.?[0-9]+)?\)$/i,le=/^hsla\([ ]?([0-9]{1,3}[ %]?,[ ]?){2,3}(1|[0-9]+%|[0]?\.?[0-9]+)\)$/i,de=new Set(["black","silver","gray","white","maroon","red","purple","fuchsia","green","lime","olive","yellow","navy","blue","teal","aqua","orange","aliceblue","antiquewhite","aquamarine","azure","beige","bisque","blanchedalmond","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","gainsboro","ghostwhite","gold","goldenrod","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","limegreen","linen","magenta","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","oldlace","olivedrab","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","thistle","tomato","turquoise","violet","wheat","whitesmoke","yellowgreen","activeborder","activecaption","appworkspace","background","buttonface","buttonhighlight","buttonshadow","buttontext","captiontext","graytext","highlight","highlighttext","inactiveborder","inactivecaption","inactivecaptiontext","infobackground","infotext","menu","menutext","scrollbar","threeddarkshadow","threedface","threedhighlight","threedlightshadow","threedshadow","window","windowframe","windowtext","rebeccapurple","currentcolor","transparent"]);function he(e){return e.startsWith("#")?re.test(e):e.startsWith("rgb")?ne.test(e)||ae.test(e):e.startsWith("hsl")?ce.test(e)||le.test(e):de.has(e.toLowerCase())}const ue=["none","hidden","dotted","dashed","solid","double","groove","ridge","inset","outset"];function pe(e){return ue.includes(e)}const ge=/^([+-]?[0-9]*([.][0-9]+)?(px|cm|mm|in|pc|pt|ch|em|ex|rem|vh|vw|vmin|vmax)|0)$/;function fe(e){return ge.test(e)}const me=/^[+-]?[0-9]*([.][0-9]+)?%$/;function ke(e){return me.test(e)}const be=["repeat-x","repeat-y","repeat","space","round","no-repeat"];function _e(e){return be.includes(e)}const we=["center","top","bottom","left","right"];function ve(e){return we.includes(e)}const ye=["fixed","scroll","local"];function Ze(e){return ye.includes(e)}const Pe=/^url\(/;function xe(e){return Pe.test(e)}function Te(e=""){if(""===e)return{top:void 0,right:void 0,bottom:void 0,left:void 0};const t=Se(e),s=t[0],o=t[2]||s,i=t[1]||s;return{top:s,bottom:o,right:i,left:t[3]||i}}function Ae(e){return t=>{const{top:s,right:o,bottom:i,left:r}=t,n=[];return[s,o,r,i].every((e=>!!e))?n.push([e,Ce(t)]):(s&&n.push([e+"-top",s]),o&&n.push([e+"-right",o]),i&&n.push([e+"-bottom",i]),r&&n.push([e+"-left",r])),n}}function Ce({top:e,right:t,bottom:s,left:o}){const i=[];return o!==t?i.push(e,t,s,o):s!==e?i.push(e,t,s):t!==e?i.push(e,t):i.push(e),i.join(" ")}function Ee(e){return t=>({path:e,value:Te(t)})}function Se(e){return e.replace(/, /g,",").split(" ").map((e=>e.replace(/,/g,", ")))}function je(e){e.setNormalizer("background",(e=>{const t={},s=Se(e);for(const e of s)_e(e)?(t.repeat=t.repeat||[],t.repeat.push(e)):ve(e)?(t.position=t.position||[],t.position.push(e)):Ze(e)?t.attachment=e:he(e)?t.color=e:xe(e)&&(t.image=e);return{path:"background",value:t}})),e.setNormalizer("background-color",(e=>({path:"background.color",value:e}))),e.setReducer("background",(e=>{const t=[];return t.push(["background-color",e.color]),t})),e.setStyleRelation("background",["background-color"])}function Oe(e){e.setNormalizer("border",(e=>{const{color:t,style:s,width:o}=ze(e);return{path:"border",value:{color:Te(t),style:Te(s),width:Te(o)}}})),e.setNormalizer("border-top",Re("top")),e.setNormalizer("border-right",Re("right")),e.setNormalizer("border-bottom",Re("bottom")),e.setNormalizer("border-left",Re("left")),e.setNormalizer("border-color",Me("color")),e.setNormalizer("border-width",Me("width")),e.setNormalizer("border-style",Me("style")),e.setNormalizer("border-top-color",Ve("color","top")),e.setNormalizer("border-top-style",Ve("style","top")),e.setNormalizer("border-top-width",Ve("width","top")),e.setNormalizer("border-right-color",Ve("color","right")),e.setNormalizer("border-right-style",Ve("style","right")),e.setNormalizer("border-right-width",Ve("width","right")),e.setNormalizer("border-bottom-color",Ve("color","bottom")),e.setNormalizer("border-bottom-style",Ve("style","bottom")),e.setNormalizer("border-bottom-width",Ve("width","bottom")),e.setNormalizer("border-left-color",Ve("color","left")),e.setNormalizer("border-left-style",Ve("style","left")),e.setNormalizer("border-left-width",Ve("width","left")),e.setExtractor("border-top",Ie("top")),e.setExtractor("border-right",Ie("right")),e.setExtractor("border-bottom",Ie("bottom")),e.setExtractor("border-left",Ie("left")),e.setExtractor("border-top-color","border.color.top"),e.setExtractor("border-right-color","border.color.right"),e.setExtractor("border-bottom-color","border.color.bottom"),e.setExtractor("border-left-color","border.color.left"),e.setExtractor("border-top-width","border.width.top"),e.setExtractor("border-right-width","border.width.right"),e.setExtractor("border-bottom-width","border.width.bottom"),e.setExtractor("border-left-width","border.width.left"),e.setExtractor("border-top-style","border.style.top"),e.setExtractor("border-right-style","border.style.right"),e.setExtractor("border-bottom-style","border.style.bottom"),e.setExtractor("border-left-style","border.style.left"),e.setReducer("border-color",Ae("border-color")),e.setReducer("border-style",Ae("border-style")),e.setReducer("border-width",Ae("border-width")),e.setReducer("border-top",Be("top")),e.setReducer("border-right",Be("right")),e.setReducer("border-bottom",Be("bottom")),e.setReducer("border-left",Be("left")),e.setReducer("border",function(){return t=>{const s=De(t,"top"),o=De(t,"right"),i=De(t,"bottom"),r=De(t,"left"),n=[s,o,i,r],a={width:e(n,"width"),style:e(n,"style"),color:e(n,"color")},c=Fe(a,"all");if(c.length)return c;const l=Object.entries(a).reduce(((e,[t,s])=>(s&&(e.push([`border-${t}`,s]),n.forEach((e=>delete e[t]))),e)),[]);return[...l,...Fe(s,"top"),...Fe(o,"right"),...Fe(i,"bottom"),...Fe(r,"left")]};function e(e,t){return e.map((e=>e[t])).reduce(((e,t)=>e==t?e:null))}}()),e.setStyleRelation("border",["border-color","border-style","border-width","border-top","border-right","border-bottom","border-left","border-top-color","border-right-color","border-bottom-color","border-left-color","border-top-style","border-right-style","border-bottom-style","border-left-style","border-top-width","border-right-width","border-bottom-width","border-left-width"]),e.setStyleRelation("border-color",["border-top-color","border-right-color","border-bottom-color","border-left-color"]),e.setStyleRelation("border-style",["border-top-style","border-right-style","border-bottom-style","border-left-style"]),e.setStyleRelation("border-width",["border-top-width","border-right-width","border-bottom-width","border-left-width"]),e.setStyleRelation("border-top",["border-top-color","border-top-style","border-top-width"]),e.setStyleRelation("border-right",["border-right-color","border-right-style","border-right-width"]),e.setStyleRelation("border-bottom",["border-bottom-color","border-bottom-style","border-bottom-width"]),e.setStyleRelation("border-left",["border-left-color","border-left-style","border-left-width"])}function Re(e){return t=>{const{color:s,style:o,width:i}=ze(t),r={};return void 0!==s&&(r.color={[e]:s}),void 0!==o&&(r.style={[e]:o}),void 0!==i&&(r.width={[e]:i}),{path:"border",value:r}}}function Me(e){return t=>({path:"border",value:Ne(t,e)})}function Ne(e,t){return{[t]:Te(e)}}function Ve(e,t){return s=>({path:"border",value:{[e]:{[t]:s}}})}function Ie(e){return(t,s)=>{if(s.border)return De(s.border,e)}}function De(e,t){const s={};return e.width&&e.width[t]&&(s.width=e.width[t]),e.style&&e.style[t]&&(s.style=e.style[t]),e.color&&e.color[t]&&(s.color=e.color[t]),s}function ze(e){const t={},s=Se(e);for(const e of s)fe(e)||/thin|medium|thick/.test(e)?t.width=e:pe(e)?t.style=e:t.color=e;return t}function Be(e){return t=>Fe(t,e)}function Fe(e,t){const s=[];if(e&&e.width&&s.push("width"),e&&e.style&&s.push("style"),e&&e.color&&s.push("color"),3==s.length){const o=s.map((t=>e[t])).join(" ");return["all"==t?["border",o]:[`border-${t}`,o]]}return"all"==t?[]:s.map((s=>[`border-${t}-${s}`,e[s]]))}function Le(e){e.setNormalizer("margin",Ee("margin")),e.setNormalizer("margin-top",(e=>({path:"margin.top",value:e}))),e.setNormalizer("margin-right",(e=>({path:"margin.right",value:e}))),e.setNormalizer("margin-bottom",(e=>({path:"margin.bottom",value:e}))),e.setNormalizer("margin-left",(e=>({path:"margin.left",value:e}))),e.setReducer("margin",Ae("margin")),e.setStyleRelation("margin",["margin-top","margin-right","margin-bottom","margin-left"])}function We(e){e.setNormalizer("padding",Ee("padding")),e.setNormalizer("padding-top",(e=>({path:"padding.top",value:e}))),e.setNormalizer("padding-right",(e=>({path:"padding.right",value:e}))),e.setNormalizer("padding-bottom",(e=>({path:"padding.bottom",value:e}))),e.setNormalizer("padding-left",(e=>({path:"padding.left",value:e}))),e.setReducer("padding",Ae("padding")),e.setStyleRelation("padding",["padding-top","padding-right","padding-bottom","padding-left"])}},"./packages/ckeditor5-engine/src/model/documentfragment.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>l});var o=s("./packages/ckeditor5-engine/src/model/typecheckable.ts"),i=s("./packages/ckeditor5-engine/src/model/element.ts"),r=s("./packages/ckeditor5-engine/src/model/nodelist.ts"),n=s("./packages/ckeditor5-engine/src/model/text.ts"),a=s("./packages/ckeditor5-engine/src/model/textproxy.ts"),c=s("./packages/ckeditor5-utils/src/isiterable.ts");class l extends o.Z{constructor(e){super(),this.markers=new Map,this._children=new r.Z,e&&this._insertChild(0,e)}[Symbol.iterator](){return this.getChildren()}get childCount(){return this._children.length}get maxOffset(){return this._children.maxOffset}get isEmpty(){return 0===this.childCount}get nextSibling(){return null}get previousSibling(){return null}get root(){return this}get parent(){return null}get document(){return null}getAncestors(){return[]}getChild(e){return this._children.getNode(e)}getChildren(){return this._children[Symbol.iterator]()}getChildIndex(e){return this._children.getNodeIndex(e)}getChildStartOffset(e){return this._children.getNodeStartOffset(e)}getPath(){return[]}getNodeByPath(e){let t=this;for(const s of e)t=t.getChild(t.offsetToIndex(s));return t}offsetToIndex(e){return this._children.offsetToIndex(e)}toJSON(){const e=[];for(const t of this._children)e.push(t.toJSON());return e}static fromJSON(e){const t=[];for(const s of e)s.name?t.push(i.Z.fromJSON(s)):t.push(n.Z.fromJSON(s));return new l(t)}_appendChild(e){this._insertChild(this.childCount,e)}_insertChild(e,t){const s=function(e){if("string"==typeof e)return[new n.Z(e)];(0,c.Z)(e)||(e=[e]);return Array.from(e).map((e=>"string"==typeof e?new n.Z(e):e instanceof a.Z?new n.Z(e.data,e.getAttributes()):e))}(t);for(const e of s)null!==e.parent&&e._remove(),e.parent=this;this._children._insertNodes(e,s)}_removeChildren(e,t=1){const s=this._children._removeNodes(e,t);for(const e of s)e.parent=null;return s}}l.prototype.is=function(e){return"documentFragment"===e||"model:documentFragment"===e}},"./packages/ckeditor5-engine/src/model/documentselection.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>g});var o=s("./packages/ckeditor5-engine/src/model/typecheckable.ts"),i=s("./packages/ckeditor5-engine/src/model/liverange.ts"),r=s("./packages/ckeditor5-engine/src/model/selection.ts"),n=s("./packages/ckeditor5-engine/src/model/text.ts"),a=s("./packages/ckeditor5-engine/src/model/textproxy.ts"),c=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),l=s("./packages/ckeditor5-utils/src/collection.ts"),d=s("./packages/ckeditor5-utils/src/emittermixin.ts"),h=s("./packages/ckeditor5-utils/src/tomap.ts"),u=s("./packages/ckeditor5-utils/src/uid.ts");const p="selection:";class g extends((0,d.ZP)(o.Z)){constructor(e){super(),this._selection=new f(e),this._selection.delegate("change:range").to(this),this._selection.delegate("change:attribute").to(this),this._selection.delegate("change:marker").to(this)}get isCollapsed(){return this._selection.isCollapsed}get anchor(){return this._selection.anchor}get focus(){return this._selection.focus}get rangeCount(){return this._selection.rangeCount}get hasOwnRange(){return this._selection.hasOwnRange}get isBackward(){return this._selection.isBackward}get isGravityOverridden(){return this._selection.isGravityOverridden}get markers(){return this._selection.markers}get _ranges(){return this._selection._ranges}getRanges(){return this._selection.getRanges()}getFirstPosition(){return this._selection.getFirstPosition()}getLastPosition(){return this._selection.getLastPosition()}getFirstRange(){return this._selection.getFirstRange()}getLastRange(){return this._selection.getLastRange()}getSelectedBlocks(){return this._selection.getSelectedBlocks()}getSelectedElement(){return this._selection.getSelectedElement()}containsEntireContent(e){return this._selection.containsEntireContent(e)}destroy(){this._selection.destroy()}getAttributeKeys(){return this._selection.getAttributeKeys()}getAttributes(){return this._selection.getAttributes()}getAttribute(e){return this._selection.getAttribute(e)}hasAttribute(e){return this._selection.hasAttribute(e)}refresh(){this._selection.updateMarkers(),this._selection._updateAttributes(!1)}observeMarkers(e){this._selection.observeMarkers(e)}_setFocus(e,t){this._selection.setFocus(e,t)}_setTo(...e){this._selection.setTo(...e)}_setAttribute(e,t){this._selection.setAttribute(e,t)}_removeAttribute(e){this._selection.removeAttribute(e)}_getStoredAttributes(){return this._selection.getStoredAttributes()}_overrideGravity(){return this._selection.overrideGravity()}_restoreGravity(e){this._selection.restoreGravity(e)}static _getStoreAttributeKey(e){return p+e}static _isStoreAttributeKey(e){return e.startsWith(p)}}g.prototype.is=function(e){return"selection"===e||"model:selection"==e||"documentSelection"==e||"model:documentSelection"==e};class f extends r.Z{constructor(e){super(),this.markers=new l.Z({idProperty:"name"}),this._model=e.model,this._document=e,this._attributePriority=new Map,this._selectionRestorePosition=null,this._hasChangedRange=!1,this._overriddenGravityRegister=new Set,this._observedMarkers=new Set,this.listenTo(this._model,"applyOperation",((e,t)=>{const s=t[0];s.isDocumentOperation&&"marker"!=s.type&&"rename"!=s.type&&"noop"!=s.type&&(0==this._ranges.length&&this._selectionRestorePosition&&this._fixGraveyardSelection(this._selectionRestorePosition),this._selectionRestorePosition=null,this._hasChangedRange&&(this._hasChangedRange=!1,this.fire("change:range",{directChange:!1})))}),{priority:"lowest"}),this.on("change:range",(()=>{this._validateSelectionRanges(this.getRanges())})),this.listenTo(this._model.markers,"update",((e,t,s,o)=>{this._updateMarker(t,o)})),this.listenTo(this._document,"change",((e,t)=>{!function(e,t){const s=e.document.differ;for(const o of s.getChanges()){if("insert"!=o.type)continue;const s=o.position.parent;o.length===s.maxOffset&&e.enqueueChange(t,(e=>{const t=Array.from(s.getAttributeKeys()).filter((e=>e.startsWith(p)));for(const o of t)e.removeAttribute(o,s)}))}}(this._model,t)}))}get isCollapsed(){return 0===this._ranges.length?this._document._getDefaultRange().isCollapsed:super.isCollapsed}get anchor(){return super.anchor||this._document._getDefaultRange().start}get focus(){return super.focus||this._document._getDefaultRange().end}get rangeCount(){return this._ranges.length?this._ranges.length:1}get hasOwnRange(){return this._ranges.length>0}get isGravityOverridden(){return!!this._overriddenGravityRegister.size}destroy(){for(let e=0;e<this._ranges.length;e++)this._ranges[e].detach();this.stopListening()}*getRanges(){this._ranges.length?yield*super.getRanges():yield this._document._getDefaultRange()}getFirstRange(){return super.getFirstRange()||this._document._getDefaultRange()}getLastRange(){return super.getLastRange()||this._document._getDefaultRange()}setTo(...e){super.setTo(...e),this._updateAttributes(!0),this.updateMarkers()}setFocus(e,t){super.setFocus(e,t),this._updateAttributes(!0),this.updateMarkers()}setAttribute(e,t){if(this._setAttribute(e,t)){const t=[e];this.fire("change:attribute",{attributeKeys:t,directChange:!0})}}removeAttribute(e){if(this._removeAttribute(e)){const t=[e];this.fire("change:attribute",{attributeKeys:t,directChange:!0})}}overrideGravity(){const e=(0,u.Z)();return this._overriddenGravityRegister.add(e),1===this._overriddenGravityRegister.size&&this._updateAttributes(!0),e}restoreGravity(e){if(!this._overriddenGravityRegister.has(e))throw new c.ZP("document-selection-gravity-wrong-restore",this,{uid:e});this._overriddenGravityRegister.delete(e),this.isGravityOverridden||this._updateAttributes(!0)}observeMarkers(e){this._observedMarkers.add(e),this.updateMarkers()}_replaceAllRanges(e){this._validateSelectionRanges(e),super._replaceAllRanges(e)}_popRange(){this._ranges.pop().detach()}_pushRange(e){const t=this._prepareRange(e);t&&this._ranges.push(t)}_validateSelectionRanges(e){for(const t of e)if(!this._document._validateSelectionRange(t))throw new c.ZP("document-selection-wrong-position",this,{range:t})}_prepareRange(e){if(this._checkRange(e),e.root==this._document.graveyard)return;const t=i.Z.fromRange(e);return t.on("change:range",((e,s,o)=>{if(this._hasChangedRange=!0,t.root==this._document.graveyard){this._selectionRestorePosition=o.deletionPosition;const e=this._ranges.indexOf(t);this._ranges.splice(e,1),t.detach()}})),t}updateMarkers(){if(!this._observedMarkers.size)return;const e=[];let t=!1;for(const t of this._model.markers){const s=t.name.split(":",1)[0];if(!this._observedMarkers.has(s))continue;const o=t.getRange();for(const s of this.getRanges())o.containsRange(s,!s.isCollapsed)&&e.push(t)}const s=Array.from(this.markers);for(const s of e)this.markers.has(s)||(this.markers.add(s),t=!0);for(const s of Array.from(this.markers))e.includes(s)||(this.markers.remove(s),t=!0);t&&this.fire("change:marker",{oldMarkers:s,directChange:!1})}_updateMarker(e,t){const s=e.name.split(":",1)[0];if(!this._observedMarkers.has(s))return;let o=!1;const i=Array.from(this.markers),r=this.markers.has(e);if(t){let s=!1;for(const e of this.getRanges())if(t.containsRange(e,!e.isCollapsed)){s=!0;break}s&&!r?(this.markers.add(e),o=!0):!s&&r&&(this.markers.remove(e),o=!0)}else r&&(this.markers.remove(e),o=!0);o&&this.fire("change:marker",{oldMarkers:i,directChange:!1})}_updateAttributes(e){const t=(0,h.Z)(this._getSurroundingAttributes()),s=(0,h.Z)(this.getAttributes());if(e)this._attributePriority=new Map,this._attrs=new Map;else for(const[e,t]of this._attributePriority)"low"==t&&(this._attrs.delete(e),this._attributePriority.delete(e));this._setAttributesTo(t);const o=[];for(const[e,t]of this.getAttributes())s.has(e)&&s.get(e)===t||o.push(e);for(const[e]of s)this.hasAttribute(e)||o.push(e);o.length>0&&this.fire("change:attribute",{attributeKeys:o,directChange:!1})}_setAttribute(e,t,s=!0){const o=s?"normal":"low";if("low"==o&&"normal"==this._attributePriority.get(e))return!1;return super.getAttribute(e)!==t&&(this._attrs.set(e,t),this._attributePriority.set(e,o),!0)}_removeAttribute(e,t=!0){const s=t?"normal":"low";return("low"!=s||"normal"!=this._attributePriority.get(e))&&(this._attributePriority.set(e,s),!!super.hasAttribute(e)&&(this._attrs.delete(e),!0))}_setAttributesTo(e){const t=new Set;for(const[t,s]of this.getAttributes())e.get(t)!==s&&this._removeAttribute(t,!1);for(const[s,o]of e){this._setAttribute(s,o,!1)&&t.add(s)}return t}*getStoredAttributes(){const e=this.getFirstPosition().parent;if(this.isCollapsed&&e.isEmpty)for(const t of e.getAttributeKeys())if(t.startsWith(p)){const s=t.substr(p.length);yield[s,e.getAttribute(t)]}}_getSurroundingAttributes(){const e=this.getFirstPosition(),t=this._model.schema;let s=null;if(this.isCollapsed){const o=e.textNode?e.textNode:e.nodeBefore,i=e.textNode?e.textNode:e.nodeAfter;if(this.isGravityOverridden||(s=m(o)),s||(s=m(i)),!this.isGravityOverridden&&!s){let e=o;for(;e&&!t.isInline(e)&&!s;)e=e.previousSibling,s=m(e)}if(!s){let e=i;for(;e&&!t.isInline(e)&&!s;)e=e.nextSibling,s=m(e)}s||(s=this.getStoredAttributes())}else{const e=this.getFirstRange();for(const o of e){if(o.item.is("element")&&t.isObject(o.item))break;if("text"==o.type){s=o.item.getAttributes();break}}}return s}_fixGraveyardSelection(e){const t=this._model.schema.getNearestSelectionRange(e);t&&this._pushRange(t)}}function m(e){return e instanceof a.Z||e instanceof n.Z?e.getAttributes():null}},"./packages/ckeditor5-engine/src/model/element.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>c});var o=s("./packages/ckeditor5-engine/src/model/node.ts"),i=s("./packages/ckeditor5-engine/src/model/nodelist.ts"),r=s("./packages/ckeditor5-engine/src/model/text.ts"),n=s("./packages/ckeditor5-engine/src/model/textproxy.ts"),a=s("./packages/ckeditor5-utils/src/isiterable.ts");class c extends o.Z{constructor(e,t,s){super(t),this.name=e,this._children=new i.Z,s&&this._insertChild(0,s)}get childCount(){return this._children.length}get maxOffset(){return this._children.maxOffset}get isEmpty(){return 0===this.childCount}getChild(e){return this._children.getNode(e)}getChildren(){return this._children[Symbol.iterator]()}getChildIndex(e){return this._children.getNodeIndex(e)}getChildStartOffset(e){return this._children.getNodeStartOffset(e)}offsetToIndex(e){return this._children.offsetToIndex(e)}getNodeByPath(e){let t=this;for(const s of e)t=t.getChild(t.offsetToIndex(s));return t}findAncestor(e,t={}){let s=t.includeSelf?this:this.parent;for(;s;){if(s.name===e)return s;s=s.parent}return null}toJSON(){const e=super.toJSON();if(e.name=this.name,this._children.length>0){e.children=[];for(const t of this._children)e.children.push(t.toJSON())}return e}_clone(e=!1){const t=e?Array.from(this._children).map((e=>e._clone(!0))):void 0;return new c(this.name,this.getAttributes(),t)}_appendChild(e){this._insertChild(this.childCount,e)}_insertChild(e,t){const s=function(e){if("string"==typeof e)return[new r.Z(e)];(0,a.Z)(e)||(e=[e]);return Array.from(e).map((e=>"string"==typeof e?new r.Z(e):e instanceof n.Z?new r.Z(e.data,e.getAttributes()):e))}(t);for(const e of s)null!==e.parent&&e._remove(),e.parent=this;this._children._insertNodes(e,s)}_removeChildren(e,t=1){const s=this._children._removeNodes(e,t);for(const e of s)e.parent=null;return s}static fromJSON(e){let t;if(e.children){t=[];for(const s of e.children)s.name?t.push(c.fromJSON(s)):t.push(r.Z.fromJSON(s))}return new c(e.name,e.attributes,t)}}c.prototype.is=function(e,t){return t?t===this.name&&("element"===e||"model:element"===e):"element"===e||"model:element"===e||"node"===e||"model:node"===e}},"./packages/ckeditor5-engine/src/model/history.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./packages/ckeditor5-utils/src/index.ts");class i{constructor(){this._operations=[],this._undoPairs=new Map,this._undoneOperations=new Set,this._baseVersionToOperationIndex=new Map,this._version=0,this._gaps=new Map}get version(){return this._version}set version(e){this._operations.length&&e>this._version+1&&this._gaps.set(this._version,e),this._version=e}get lastOperation(){return this._operations[this._operations.length-1]}addOperation(e){if(e.baseVersion!==this.version)throw new o.Bb("model-document-history-addoperation-incorrect-version",this,{operation:e,historyVersion:this.version});this._operations.push(e),this._version++,this._baseVersionToOperationIndex.set(e.baseVersion,this._operations.length-1)}getOperations(e,t=this.version){if(!this._operations.length)return[];const s=this._operations[0];void 0===e&&(e=s.baseVersion);let o=t-1;for(const[t,s]of this._gaps)e>t&&e<s&&(e=s),o>t&&o<s&&(o=t-1);if(o<s.baseVersion||e>this.lastOperation.baseVersion)return[];let i=this._baseVersionToOperationIndex.get(e);void 0===i&&(i=0);let r=this._baseVersionToOperationIndex.get(o);return void 0===r&&(r=this._operations.length-1),this._operations.slice(i,r+1)}getOperation(e){const t=this._baseVersionToOperationIndex.get(e);if(void 0!==t)return this._operations[t]}setOperationAsUndone(e,t){this._undoPairs.set(t,e),this._undoneOperations.add(e)}isUndoingOperation(e){return this._undoPairs.has(e)}isUndoneOperation(e){return this._undoneOperations.has(e)}getUndoneOperation(e){return this._undoPairs.get(e)}reset(){this._version=0,this._undoPairs=new Map,this._operations=[],this._undoneOperations=new Set,this._gaps=new Map,this._baseVersionToOperationIndex=new Map}}},"./packages/ckeditor5-engine/src/model/liveposition.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>n});var o=s("./packages/ckeditor5-engine/src/model/position.ts"),i=s("./packages/ckeditor5-utils/src/emittermixin.ts"),r=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class n extends((0,i.ZP)(o.ZP)){constructor(e,t,s="toNone"){if(super(e,t,s),!this.root.is("rootElement"))throw new r.ZP("model-liveposition-root-not-rootelement",e);a.call(this)}detach(){this.stopListening()}toPosition(){return new o.ZP(this.root,this.path.slice(),this.stickiness)}static fromPosition(e,t){return new this(e.root,e.path.slice(),t||e.stickiness)}}function a(){this.listenTo(this.root.document.model,"applyOperation",((e,t)=>{const s=t[0];s.isDocumentOperation&&c.call(this,s)}),{priority:"low"})}function c(e){const t=this.getTransformedByOperation(e);if(!this.isEqual(t)){const e=this.toPosition();this.path=t.path,this.root=t.root,this.fire("change",e)}}n.prototype.is=function(e){return"livePosition"===e||"model:livePosition"===e||"position"==e||"model:position"===e}},"./packages/ckeditor5-engine/src/model/liverange.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./packages/ckeditor5-engine/src/model/range.ts"),i=s("./packages/ckeditor5-utils/src/emittermixin.ts");class r extends((0,i.ZP)(o.Z)){constructor(e,t){super(e,t),n.call(this)}detach(){this.stopListening()}toRange(){return new o.Z(this.start,this.end)}static fromRange(e){return new r(e.start,e.end)}}function n(){this.listenTo(this.root.document.model,"applyOperation",((e,t)=>{const s=t[0];s.isDocumentOperation&&a.call(this,s)}),{priority:"low"})}function a(e){const t=this.getTransformedByOperation(e),s=o.Z._createFromRanges(t),i=!s.isEqual(this),r=function(e,t){switch(t.type){case"insert":return e.containsPosition(t.position);case"move":case"remove":case"reinsert":case"merge":return e.containsPosition(t.sourcePosition)||e.start.isEqual(t.sourcePosition)||e.containsPosition(t.targetPosition);case"split":return e.containsPosition(t.splitPosition)||e.containsPosition(t.insertionPosition)}return!1}(this,e);let n=null;if(i){"$graveyard"==s.root.rootName&&(n="remove"==e.type?e.sourcePosition:e.deletionPosition);const t=this.toRange();this.start=s.start,this.end=s.end,this.fire("change:range",t,{deletionPosition:n})}else r&&this.fire("change:content",this.toRange(),{deletionPosition:n})}r.prototype.is=function(e){return"liveRange"===e||"model:liveRange"===e||"range"==e||"model:range"===e}},"./packages/ckeditor5-engine/src/model/model.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>Ze});var o=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class i{constructor(e={}){"string"==typeof e&&(e="transparent"===e?{isUndoable:!1}:{},(0,o.KE)("batch-constructor-deprecated-string-type"));const{isUndoable:t=!0,isLocal:s=!0,isUndo:i=!1,isTyping:r=!1}=e;this.operations=[],this.isUndoable=t,this.isLocal=s,this.isUndo=i,this.isTyping=r}get type(){return(0,o.KE)("batch-type-deprecated"),"default"}get baseVersion(){for(const e of this.operations)if(null!==e.baseVersion)return e.baseVersion;return null}addOperation(e){return e.batch=this,this.operations.push(e),e}}var r=s("./packages/ckeditor5-engine/src/model/position.ts"),n=s("./packages/ckeditor5-engine/src/model/range.ts");class a{constructor(e){this._markerCollection=e,this._changesInElement=new Map,this._elementSnapshots=new Map,this._changedMarkers=new Map,this._changeCount=0,this._cachedChanges=null,this._cachedChangesWithGraveyard=null,this._refreshedItems=new Set}get isEmpty(){return 0==this._changesInElement.size&&0==this._changedMarkers.size}bufferOperation(e){const t=e;switch(t.type){case"insert":if(this._isInInsertedElement(t.position.parent))return;this._markInsert(t.position.parent,t.position.offset,t.nodes.maxOffset);break;case"addAttribute":case"removeAttribute":case"changeAttribute":for(const e of t.range.getItems({shallow:!0}))this._isInInsertedElement(e.parent)||this._markAttribute(e);break;case"remove":case"move":case"reinsert":{if(t.sourcePosition.isEqual(t.targetPosition)||t.sourcePosition.getShiftedBy(t.howMany).isEqual(t.targetPosition))return;const e=this._isInInsertedElement(t.sourcePosition.parent),s=this._isInInsertedElement(t.targetPosition.parent);e||this._markRemove(t.sourcePosition.parent,t.sourcePosition.offset,t.howMany),s||this._markInsert(t.targetPosition.parent,t.getMovedRangeStart().offset,t.howMany);break}case"rename":{if(this._isInInsertedElement(t.position.parent))return;this._markRemove(t.position.parent,t.position.offset,1),this._markInsert(t.position.parent,t.position.offset,1);const e=n.Z._createFromPositionAndShift(t.position,1);for(const t of this._markerCollection.getMarkersIntersectingRange(e)){const e=t.getData();this.bufferMarkerChange(t.name,e,e)}break}case"split":{const e=t.splitPosition.parent;this._isInInsertedElement(e)||this._markRemove(e,t.splitPosition.offset,t.howMany),this._isInInsertedElement(t.insertionPosition.parent)||this._markInsert(t.insertionPosition.parent,t.insertionPosition.offset,1),t.graveyardPosition&&this._markRemove(t.graveyardPosition.parent,t.graveyardPosition.offset,1);break}case"merge":{const e=t.sourcePosition.parent;this._isInInsertedElement(e.parent)||this._markRemove(e.parent,e.startOffset,1);const s=t.graveyardPosition.parent;this._markInsert(s,t.graveyardPosition.offset,1);const o=t.targetPosition.parent;this._isInInsertedElement(o)||this._markInsert(o,t.targetPosition.offset,e.maxOffset);break}}this._cachedChanges=null}bufferMarkerChange(e,t,s){const o=this._changedMarkers.get(e);o?(o.newMarkerData=s,null==o.oldMarkerData.range&&null==s.range&&this._changedMarkers.delete(e)):this._changedMarkers.set(e,{newMarkerData:s,oldMarkerData:t})}getMarkersToRemove(){const e=[];for(const[t,s]of this._changedMarkers)null!=s.oldMarkerData.range&&e.push({name:t,range:s.oldMarkerData.range});return e}getMarkersToAdd(){const e=[];for(const[t,s]of this._changedMarkers)null!=s.newMarkerData.range&&e.push({name:t,range:s.newMarkerData.range});return e}getChangedMarkers(){return Array.from(this._changedMarkers).map((([e,t])=>({name:e,data:{oldRange:t.oldMarkerData.range,newRange:t.newMarkerData.range}})))}hasDataChanges(){if(this._changesInElement.size>0)return!0;for(const{newMarkerData:e,oldMarkerData:t}of this._changedMarkers.values()){if(e.affectsData!==t.affectsData)return!0;if(e.affectsData){const s=e.range&&!t.range,o=!e.range&&t.range,i=e.range&&t.range&&!e.range.isEqual(t.range);if(s||o||i)return!0}}return!1}getChanges(e={}){if(this._cachedChanges)return e.includeChangesInGraveyard?this._cachedChangesWithGraveyard.slice():this._cachedChanges.slice();let t=[];for(const e of this._changesInElement.keys()){const s=this._changesInElement.get(e).sort(((e,t)=>e.offset===t.offset?e.type!=t.type?"remove"==e.type?-1:1:0:e.offset<t.offset?-1:1)),o=this._elementSnapshots.get(e),i=c(e.getChildren()),a=l(o.length,s);let d=0,h=0;for(const s of a)if("i"===s)t.push(this._getInsertDiff(e,d,i[d])),d++;else if("r"===s)t.push(this._getRemoveDiff(e,d,o[h])),h++;else if("a"===s){const s=i[d].attributes,a=o[h].attributes;let c;if("$text"==i[d].name)c=new n.Z(r.ZP._createAt(e,d),r.ZP._createAt(e,d+1));else{const t=e.offsetToIndex(d);c=new n.Z(r.ZP._createAt(e,d),r.ZP._createAt(e.getChild(t),0))}t.push(...this._getAttributesDiff(c,a,s)),d++,h++}else d++,h++}t.sort(((e,t)=>e.position.root!=t.position.root?e.position.root.rootName<t.position.root.rootName?-1:1:e.position.isEqual(t.position)?e.changeCount-t.changeCount:e.position.isBefore(t.position)?-1:1));for(let e=1,s=0;e<t.length;e++){const o=t[s],i=t[e],r="remove"==o.type&&"remove"==i.type&&"$text"==o.name&&"$text"==i.name&&o.position.isEqual(i.position),n="insert"==o.type&&"insert"==i.type&&"$text"==o.name&&"$text"==i.name&&o.position.parent==i.position.parent&&o.position.offset+o.length==i.position.offset,a="attribute"==o.type&&"attribute"==i.type&&o.position.parent==i.position.parent&&o.range.isFlat&&i.range.isFlat&&o.position.offset+o.length==i.position.offset&&o.attributeKey==i.attributeKey&&o.attributeOldValue==i.attributeOldValue&&o.attributeNewValue==i.attributeNewValue;r||n||a?(o.length++,a&&(o.range.end=o.range.end.getShiftedBy(1)),t[e]=null):s=e}t=t.filter((e=>e));for(const e of t)delete e.changeCount,"attribute"==e.type&&(delete e.position,delete e.length);return this._changeCount=0,this._cachedChangesWithGraveyard=t,this._cachedChanges=t.filter(d),e.includeChangesInGraveyard?this._cachedChangesWithGraveyard.slice():this._cachedChanges.slice()}getRefreshedItems(){return new Set(this._refreshedItems)}reset(){this._changesInElement.clear(),this._elementSnapshots.clear(),this._changedMarkers.clear(),this._refreshedItems=new Set,this._cachedChanges=null}_refreshItem(e){if(this._isInInsertedElement(e.parent))return;this._markRemove(e.parent,e.startOffset,e.offsetSize),this._markInsert(e.parent,e.startOffset,e.offsetSize),this._refreshedItems.add(e);const t=n.Z._createOn(e);for(const e of this._markerCollection.getMarkersIntersectingRange(t)){const t=e.getData();this.bufferMarkerChange(e.name,t,t)}this._cachedChanges=null}_markInsert(e,t,s){const o={type:"insert",offset:t,howMany:s,count:this._changeCount++};this._markChange(e,o)}_markRemove(e,t,s){const o={type:"remove",offset:t,howMany:s,count:this._changeCount++};this._markChange(e,o),this._removeAllNestedChanges(e,t,s)}_markAttribute(e){const t={type:"attribute",offset:e.startOffset,howMany:e.offsetSize,count:this._changeCount++};this._markChange(e.parent,t)}_markChange(e,t){this._makeSnapshot(e);const s=this._getChangesForElement(e);this._handleChange(t,s),s.push(t);for(let e=0;e<s.length;e++)s[e].howMany<1&&(s.splice(e,1),e--)}_getChangesForElement(e){let t;return this._changesInElement.has(e)?t=this._changesInElement.get(e):(t=[],this._changesInElement.set(e,t)),t}_makeSnapshot(e){this._elementSnapshots.has(e)||this._elementSnapshots.set(e,c(e.getChildren()))}_handleChange(e,t){e.nodesToHandle=e.howMany;for(const s of t){const o=e.offset+e.howMany,i=s.offset+s.howMany;if("insert"==e.type&&("insert"==s.type&&(e.offset<=s.offset?s.offset+=e.howMany:e.offset<i&&(s.howMany+=e.nodesToHandle,e.nodesToHandle=0)),"remove"==s.type&&e.offset<s.offset&&(s.offset+=e.howMany),"attribute"==s.type))if(e.offset<=s.offset)s.offset+=e.howMany;else if(e.offset<i){const i=s.howMany;s.howMany=e.offset-s.offset,t.unshift({type:"attribute",offset:o,howMany:i-s.howMany,count:this._changeCount++})}if("remove"==e.type){if("insert"==s.type)if(o<=s.offset)s.offset-=e.howMany;else if(o<=i)if(e.offset<s.offset){const t=o-s.offset;s.offset=e.offset,s.howMany-=t,e.nodesToHandle-=t}else s.howMany-=e.nodesToHandle,e.nodesToHandle=0;else if(e.offset<=s.offset)e.nodesToHandle-=s.howMany,s.howMany=0;else if(e.offset<i){const t=i-e.offset;s.howMany-=t,e.nodesToHandle-=t}if("remove"==s.type&&(o<=s.offset?s.offset-=e.howMany:e.offset<s.offset&&(e.nodesToHandle+=s.howMany,s.howMany=0)),"attribute"==s.type)if(o<=s.offset)s.offset-=e.howMany;else if(e.offset<s.offset){const t=o-s.offset;s.offset=e.offset,s.howMany-=t}else if(e.offset<i)if(o<=i){const o=s.howMany;s.howMany=e.offset-s.offset;const i=o-s.howMany-e.nodesToHandle;t.unshift({type:"attribute",offset:e.offset,howMany:i,count:this._changeCount++})}else s.howMany-=i-e.offset}if("attribute"==e.type){if("insert"==s.type)if(e.offset<s.offset&&o>s.offset){if(o>i){const e={type:"attribute",offset:i,howMany:o-i,count:this._changeCount++};this._handleChange(e,t),t.push(e)}e.nodesToHandle=s.offset-e.offset,e.howMany=e.nodesToHandle}else e.offset>=s.offset&&e.offset<i&&(o>i?(e.nodesToHandle=o-i,e.offset=i):e.nodesToHandle=0);if("remove"==s.type&&e.offset<s.offset&&o>s.offset){const i={type:"attribute",offset:s.offset,howMany:o-s.offset,count:this._changeCount++};this._handleChange(i,t),t.push(i),e.nodesToHandle=s.offset-e.offset,e.howMany=e.nodesToHandle}"attribute"==s.type&&(e.offset>=s.offset&&o<=i?(e.nodesToHandle=0,e.howMany=0,e.offset=0):e.offset<=s.offset&&o>=i&&(s.howMany=0))}}e.howMany=e.nodesToHandle,delete e.nodesToHandle}_getInsertDiff(e,t,s){return{type:"insert",position:r.ZP._createAt(e,t),name:s.name,attributes:new Map(s.attributes),length:1,changeCount:this._changeCount++}}_getRemoveDiff(e,t,s){return{type:"remove",position:r.ZP._createAt(e,t),name:s.name,attributes:new Map(s.attributes),length:1,changeCount:this._changeCount++}}_getAttributesDiff(e,t,s){const o=[];s=new Map(s);for(const[i,r]of t){const t=s.has(i)?s.get(i):null;t!==r&&o.push({type:"attribute",position:e.start,range:e.clone(),length:1,attributeKey:i,attributeOldValue:r,attributeNewValue:t,changeCount:this._changeCount++}),s.delete(i)}for(const[t,i]of s)o.push({type:"attribute",position:e.start,range:e.clone(),length:1,attributeKey:t,attributeOldValue:null,attributeNewValue:i,changeCount:this._changeCount++});return o}_isInInsertedElement(e){const t=e.parent;if(!t)return!1;const s=this._changesInElement.get(t),o=e.startOffset;if(s)for(const e of s)if("insert"==e.type&&o>=e.offset&&o<e.offset+e.howMany)return!0;return this._isInInsertedElement(t)}_removeAllNestedChanges(e,t,s){const o=new n.Z(r.ZP._createAt(e,t),r.ZP._createAt(e,t+s));for(const e of o.getItems({shallow:!0}))e.is("element")&&(this._elementSnapshots.delete(e),this._changesInElement.delete(e),this._removeAllNestedChanges(e,0,e.maxOffset))}}function c(e){const t=[];for(const s of e)if(s.is("$text"))for(let e=0;e<s.data.length;e++)t.push({name:"$text",attributes:new Map(s.getAttributes())});else t.push({name:s.name,attributes:new Map(s.getAttributes())});return t}function l(e,t){const s=[];let o=0,i=0;for(const e of t){if(e.offset>o){for(let t=0;t<e.offset-o;t++)s.push("e");i+=e.offset-o}if("insert"==e.type){for(let t=0;t<e.howMany;t++)s.push("i");o=e.offset+e.howMany}else if("remove"==e.type){for(let t=0;t<e.howMany;t++)s.push("r");o=e.offset,i+=e.howMany}else s.push(..."a".repeat(e.howMany).split("")),o=e.offset+e.howMany,i+=e.howMany}if(i<e)for(let t=0;t<e-i-o;t++)s.push("e");return s}function d(e){const t="position"in e&&"$graveyard"==e.position.root.rootName,s="range"in e&&"$graveyard"==e.range.root.rootName;return!t&&!s}var h=s("./packages/ckeditor5-engine/src/model/documentselection.ts"),u=s("./packages/ckeditor5-engine/src/model/history.ts"),p=s("./packages/ckeditor5-engine/src/model/element.ts");class g extends p.Z{constructor(e,t,s="main"){super(t),this._document=e,this.rootName=s}get document(){return this._document}toJSON(){return this.rootName}}g.prototype.is=function(e,t){return t?t===this.name&&("rootElement"===e||"model:rootElement"===e||"element"===e||"model:element"===e):"rootElement"===e||"model:rootElement"===e||"element"===e||"model:element"===e||"node"===e||"model:node"===e};var f=s("./packages/ckeditor5-utils/src/collection.ts"),m=s("./packages/ckeditor5-utils/src/emittermixin.ts");function k(e,t){return!!(s=e.charAt(t-1))&&1==s.length&&/[\ud800-\udbff]/.test(s)&&function(e){return!!e&&1==e.length&&/[\udc00-\udfff]/.test(e)}(e.charAt(t));var s}function b(e,t){return!!(s=e.charAt(t))&&1==s.length&&/[\u0300-\u036f\u1ab0-\u1aff\u1dc0-\u1dff\u20d0-\u20ff\ufe20-\ufe2f]/.test(s);var s}const _=function(){const e=/\p{Regional_Indicator}{2}/u.source,t="(?:"+[/\p{Emoji}[\u{E0020}-\u{E007E}]+\u{E007F}/u,/\p{Emoji}\u{FE0F}?\u{20E3}/u,/\p{Emoji}\u{FE0F}/u,/(?=\p{General_Category=Other_Symbol})\p{Emoji}\p{Emoji_Modifier}*/u].map((e=>e.source)).join("|")+")";return new RegExp(`${e}|${t}(?:‍${t})*`,"ug")}();function w(e,t){const s=String(e).matchAll(_);return Array.from(s).some((e=>e.index<t&&t<e.index+e[0].length))}var v=s("./node_modules/lodash-es/clone.js");const y="$graveyard";class Z extends m.Q5{constructor(e){super(),this.model=e,this.history=new u.Z,this.selection=new h.Z(this),this.roots=new f.Z({idProperty:"rootName"}),this.differ=new a(e.markers),this._postFixers=new Set,this._hasSelectionChangedFromTheLastChangeBlock=!1,this.createRoot("$root",y),this.listenTo(e,"applyOperation",((e,t)=>{const s=t[0];s.isDocumentOperation&&this.differ.bufferOperation(s)}),{priority:"high"}),this.listenTo(e,"applyOperation",((e,t)=>{const s=t[0];s.isDocumentOperation&&this.history.addOperation(s)}),{priority:"low"}),this.listenTo(this.selection,"change",(()=>{this._hasSelectionChangedFromTheLastChangeBlock=!0})),this.listenTo(e.markers,"update",((e,t,s,o,i)=>{const r={...t.getData(),range:o};this.differ.bufferMarkerChange(t.name,i,r),null===s&&t.on("change",((e,s)=>{const o=t.getData();this.differ.bufferMarkerChange(t.name,{...o,range:s},o)}))}))}get version(){return this.history.version}set version(e){this.history.version=e}get graveyard(){return this.getRoot(y)}createRoot(e="$root",t="main"){if(this.roots.get(t))throw new o.ZP("model-document-createroot-name-exists",this,{name:t});const s=new g(this,e,t);return this.roots.add(s),s}destroy(){this.selection.destroy(),this.stopListening()}getRoot(e="main"){return this.roots.get(e)}getRootNames(){return Array.from(this.roots,(e=>e.rootName)).filter((e=>e!=y))}registerPostFixer(e){this._postFixers.add(e)}toJSON(){const e=(0,v.Z)(this);return e.selection="[engine.model.DocumentSelection]",e.model="[engine.model.Model]",e}_handleChangeBlock(e){this._hasDocumentChangedFromTheLastChangeBlock()&&(this._callPostFixers(e),this.selection.refresh(),this.differ.hasDataChanges()?this.fire("change:data",e.batch):this.fire("change",e.batch),this.selection.refresh(),this.differ.reset()),this._hasSelectionChangedFromTheLastChangeBlock=!1}_hasDocumentChangedFromTheLastChangeBlock(){return!this.differ.isEmpty||this._hasSelectionChangedFromTheLastChangeBlock}_getDefaultRoot(){for(const e of this.roots)if(e!==this.graveyard)return e;return this.graveyard}_getDefaultRange(){const e=this._getDefaultRoot(),t=this.model,s=t.schema,o=t.createPositionFromPath(e,[0]);return s.getNearestSelectionRange(o)||t.createRange(o)}_validateSelectionRange(e){return P(e.start)&&P(e.end)}_callPostFixers(e){let t=!1;do{for(const s of this._postFixers)if(this.selection.refresh(),t=s(e),t)break}while(t)}}function P(e){const t=e.textNode;if(t){const s=t.data,o=e.offset-t.startOffset;return!k(s,o)&&!b(s,o)}return!0}var x=s("./packages/ckeditor5-engine/src/model/typecheckable.ts"),T=s("./packages/ckeditor5-engine/src/model/liverange.ts");class A extends m.Q5{constructor(){super(),this._markers=new Map}[Symbol.iterator](){return this._markers.values()}has(e){const t=e instanceof C?e.name:e;return this._markers.has(t)}get(e){return this._markers.get(e)||null}_set(e,t,s=!1,i=!1){const r=e instanceof C?e.name:e;if(r.includes(","))throw new o.ZP("markercollection-incorrect-marker-name",this);const n=this._markers.get(r);if(n){const e=n.getData(),o=n.getRange();let a=!1;return o.isEqual(t)||(n._attachLiveRange(T.Z.fromRange(t)),a=!0),s!=n.managedUsingOperations&&(n._managedUsingOperations=s,a=!0),"boolean"==typeof i&&i!=n.affectsData&&(n._affectsData=i,a=!0),a&&this.fire(`update:${r}`,n,o,t,e),n}const a=T.Z.fromRange(t),c=new C(r,a,s,i);return this._markers.set(r,c),this.fire(`update:${r}`,c,null,t,{...c.getData(),range:null}),c}_remove(e){const t=e instanceof C?e.name:e,s=this._markers.get(t);return!!s&&(this._markers.delete(t),this.fire(`update:${t}`,s,s.getRange(),null,s.getData()),this._destroyMarker(s),!0)}_refresh(e){const t=e instanceof C?e.name:e,s=this._markers.get(t);if(!s)throw new o.ZP("markercollection-refresh-marker-not-exists",this);const i=s.getRange();this.fire(`update:${t}`,s,i,i,s.getData())}*getMarkersAtPosition(e){for(const t of this)t.getRange().containsPosition(e)&&(yield t)}*getMarkersIntersectingRange(e){for(const t of this)null!==t.getRange().getIntersection(e)&&(yield t)}destroy(){for(const e of this._markers.values())this._destroyMarker(e);this._markers=null,this.stopListening()}*getMarkersGroup(e){for(const t of this._markers.values())t.name.startsWith(e+":")&&(yield t)}_destroyMarker(e){e.stopListening(),e._detachLiveRange()}}class C extends((0,m.ZP)(x.Z)){constructor(e,t,s,o){super(),this.name=e,this._liveRange=this._attachLiveRange(t),this._managedUsingOperations=s,this._affectsData=o}get managedUsingOperations(){if(!this._liveRange)throw new o.ZP("marker-destroyed",this);return this._managedUsingOperations}get affectsData(){if(!this._liveRange)throw new o.ZP("marker-destroyed",this);return this._affectsData}getData(){return{range:this.getRange(),affectsData:this.affectsData,managedUsingOperations:this.managedUsingOperations}}getStart(){if(!this._liveRange)throw new o.ZP("marker-destroyed",this);return this._liveRange.start.clone()}getEnd(){if(!this._liveRange)throw new o.ZP("marker-destroyed",this);return this._liveRange.end.clone()}getRange(){if(!this._liveRange)throw new o.ZP("marker-destroyed",this);return this._liveRange.toRange()}_attachLiveRange(e){return this._liveRange&&this._detachLiveRange(),e.delegate("change:range").to(this),e.delegate("change:content").to(this),this._liveRange=e,e}_detachLiveRange(){this._liveRange.stopDelegating("change:range",this),this._liveRange.stopDelegating("change:content",this),this._liveRange.detach(),this._liveRange=null}}C.prototype.is=function(e){return"marker"===e||"model:marker"===e};var E=s("./packages/ckeditor5-engine/src/model/selection.ts"),S=s("./packages/ckeditor5-engine/src/model/operation/operationfactory.ts"),j=s("./packages/ckeditor5-engine/src/model/schema.ts"),O=s("./packages/ckeditor5-engine/src/model/operation/attributeoperation.ts"),R=s("./packages/ckeditor5-engine/src/model/operation/operation.ts"),M=s("./packages/ckeditor5-engine/src/model/operation/utils.ts");class N extends R.Z{constructor(e,t){super(null),this.sourcePosition=e.clone(),this.howMany=t}get type(){return"detach"}toJSON(){const e=super.toJSON();return e.sourcePosition=this.sourcePosition.toJSON(),e}_validate(){if(this.sourcePosition.root.document)throw new o.ZP("detach-operation-on-document-node",this)}_execute(){(0,M.X9)(n.Z._createFromPositionAndShift(this.sourcePosition,this.howMany))}static get className(){return"DetachOperation"}}var V=s("./packages/ckeditor5-engine/src/model/operation/insertoperation.ts"),I=s("./packages/ckeditor5-engine/src/model/operation/markeroperation.ts"),D=s("./packages/ckeditor5-engine/src/model/operation/mergeoperation.ts"),z=s("./packages/ckeditor5-engine/src/model/operation/moveoperation.ts"),B=s("./packages/ckeditor5-engine/src/model/operation/renameoperation.ts"),F=s("./packages/ckeditor5-engine/src/model/operation/rootattributeoperation.ts"),L=s("./packages/ckeditor5-engine/src/model/operation/splitoperation.ts"),W=s("./packages/ckeditor5-engine/src/model/documentfragment.ts"),$=s("./packages/ckeditor5-engine/src/model/text.ts"),q=s("./packages/ckeditor5-utils/src/tomap.ts");class H{constructor(e,t){this.model=e,this.batch=t}createText(e,t){return new $.Z(e,t)}createElement(e,t){return new p.Z(e,t)}createDocumentFragment(){return new W.Z}cloneElement(e,t=!0){return e._clone(t)}insert(e,t,s=0){if(this._assertWriterUsedCorrectly(),e instanceof $.Z&&""==e.data)return;const i=r.ZP._createAt(t,s);if(e.parent){if(Q(e.root,i.root))return void this.move(n.Z._createOn(e),i);if(e.root.document)throw new o.ZP("model-writer-insert-forbidden-move",this);this.remove(e)}const a=i.root.document?i.root.document.version:null,c=new V.Z(i,e,a);if(e instanceof $.Z&&(c.shouldReceiveAttributes=!0),this.batch.addOperation(c),this.model.applyOperation(c),e instanceof W.Z)for(const[t,s]of e.markers){const e=r.ZP._createAt(s.root,0),o={range:new n.Z(s.start._getCombined(e,i),s.end._getCombined(e,i)),usingOperation:!0,affectsData:!0};this.model.markers.has(t)?this.updateMarker(t,o):this.addMarker(t,o)}}insertText(e,t,s,o){t instanceof W.Z||t instanceof p.Z||t instanceof r.ZP?this.insert(this.createText(e),t,s):this.insert(this.createText(e,t),s,o)}insertElement(e,t,s,o){t instanceof W.Z||t instanceof p.Z||t instanceof r.ZP?this.insert(this.createElement(e),t,s):this.insert(this.createElement(e,t),s,o)}append(e,t){this.insert(e,t,"end")}appendText(e,t,s){t instanceof W.Z||t instanceof p.Z?this.insert(this.createText(e),t,"end"):this.insert(this.createText(e,t),s,"end")}appendElement(e,t,s){t instanceof W.Z||t instanceof p.Z?this.insert(this.createElement(e),t,"end"):this.insert(this.createElement(e,t),s,"end")}setAttribute(e,t,s){if(this._assertWriterUsedCorrectly(),s instanceof n.Z){const o=s.getMinimalFlatRanges();for(const s of o)U(this,e,t,s)}else K(this,e,t,s)}setAttributes(e,t){for(const[s,o]of(0,q.Z)(e))this.setAttribute(s,o,t)}removeAttribute(e,t){if(this._assertWriterUsedCorrectly(),t instanceof n.Z){const s=t.getMinimalFlatRanges();for(const t of s)U(this,e,null,t)}else K(this,e,null,t)}clearAttributes(e){this._assertWriterUsedCorrectly();const t=e=>{for(const t of e.getAttributeKeys())this.removeAttribute(t,e)};if(e instanceof n.Z)for(const s of e.getItems())t(s);else t(e)}move(e,t,s){if(this._assertWriterUsedCorrectly(),!(e instanceof n.Z))throw new o.ZP("writer-move-invalid-range",this);if(!e.isFlat)throw new o.ZP("writer-move-range-not-flat",this);const i=r.ZP._createAt(t,s);if(i.isEqual(e.start))return;if(this._addOperationForAffectedMarkers("move",e),!Q(e.root,i.root))throw new o.ZP("writer-move-different-document",this);const a=e.root.document?e.root.document.version:null,c=new z.Z(e.start,e.end.offset-e.start.offset,i,a);this.batch.addOperation(c),this.model.applyOperation(c)}remove(e){this._assertWriterUsedCorrectly();const t=(e instanceof n.Z?e:n.Z._createOn(e)).getMinimalFlatRanges().reverse();for(const e of t)this._addOperationForAffectedMarkers("move",e),J(e.start,e.end.offset-e.start.offset,this.batch,this.model)}merge(e){this._assertWriterUsedCorrectly();const t=e.nodeBefore,s=e.nodeAfter;if(this._addOperationForAffectedMarkers("merge",e),!(t instanceof p.Z))throw new o.ZP("writer-merge-no-element-before",this);if(!(s instanceof p.Z))throw new o.ZP("writer-merge-no-element-after",this);e.root.document?this._merge(e):this._mergeDetached(e)}createPositionFromPath(e,t,s){return this.model.createPositionFromPath(e,t,s)}createPositionAt(e,t){return this.model.createPositionAt(e,t)}createPositionAfter(e){return this.model.createPositionAfter(e)}createPositionBefore(e){return this.model.createPositionBefore(e)}createRange(e,t){return this.model.createRange(e,t)}createRangeIn(e){return this.model.createRangeIn(e)}createRangeOn(e){return this.model.createRangeOn(e)}createSelection(...e){return this.model.createSelection(...e)}_mergeDetached(e){const t=e.nodeBefore,s=e.nodeAfter;this.move(n.Z._createIn(s),r.ZP._createAt(t,"end")),this.remove(s)}_merge(e){const t=r.ZP._createAt(e.nodeBefore,"end"),s=r.ZP._createAt(e.nodeAfter,0),o=e.root.document.graveyard,i=new r.ZP(o,[0]),n=e.root.document.version,a=new D.Z(s,e.nodeAfter.maxOffset,t,i,n);this.batch.addOperation(a),this.model.applyOperation(a)}rename(e,t){if(this._assertWriterUsedCorrectly(),!(e instanceof p.Z))throw new o.ZP("writer-rename-not-element-instance",this);const s=e.root.document?e.root.document.version:null,i=new B.Z(r.ZP._createBefore(e),e.name,t,s);this.batch.addOperation(i),this.model.applyOperation(i)}split(e,t){this._assertWriterUsedCorrectly();let s,i,a=e.parent;if(!a.parent)throw new o.ZP("writer-split-element-no-parent",this);if(t||(t=a.parent),!e.parent.getAncestors({includeSelf:!0}).includes(t))throw new o.ZP("writer-split-invalid-limit-element",this);do{const t=a.root.document?a.root.document.version:null,o=a.maxOffset-e.offset,r=L.Z.getInsertionPosition(e),n=new L.Z(e,o,r,null,t);this.batch.addOperation(n),this.model.applyOperation(n),s||i||(s=a,i=e.parent.nextSibling),a=(e=this.createPositionAfter(e.parent)).parent}while(a!==t);return{position:e,range:new n.Z(r.ZP._createAt(s,"end"),r.ZP._createAt(i,0))}}wrap(e,t){if(this._assertWriterUsedCorrectly(),!e.isFlat)throw new o.ZP("writer-wrap-range-not-flat",this);const s=t instanceof p.Z?t:new p.Z(t);if(s.childCount>0)throw new o.ZP("writer-wrap-element-not-empty",this);if(null!==s.parent)throw new o.ZP("writer-wrap-element-attached",this);this.insert(s,e.start);const i=new n.Z(e.start.getShiftedBy(1),e.end.getShiftedBy(1));this.move(i,r.ZP._createAt(s,0))}unwrap(e){if(this._assertWriterUsedCorrectly(),null===e.parent)throw new o.ZP("writer-unwrap-element-no-parent",this);this.move(n.Z._createIn(e),this.createPositionAfter(e)),this.remove(e)}addMarker(e,t){if(this._assertWriterUsedCorrectly(),!t||"boolean"!=typeof t.usingOperation)throw new o.ZP("writer-addmarker-no-usingoperation",this);const s=t.usingOperation,i=t.range,r=void 0!==t.affectsData&&t.affectsData;if(this.model.markers.has(e))throw new o.ZP("writer-addmarker-marker-exists",this);if(!i)throw new o.ZP("writer-addmarker-no-range",this);return s?(G(this,e,null,i,r),this.model.markers.get(e)):this.model.markers._set(e,i,s,r)}updateMarker(e,t){this._assertWriterUsedCorrectly();const s="string"==typeof e?e:e.name,i=this.model.markers.get(s);if(!i)throw new o.ZP("writer-updatemarker-marker-not-exists",this);if(!t)return(0,o.KE)("writer-updatemarker-reconvert-using-editingcontroller",{markerName:s}),void this.model.markers._refresh(i);const r="boolean"==typeof t.usingOperation,n="boolean"==typeof t.affectsData,a=n?t.affectsData:i.affectsData;if(!r&&!t.range&&!n)throw new o.ZP("writer-updatemarker-wrong-options",this);const c=i.getRange(),l=t.range?t.range:c;r&&t.usingOperation!==i.managedUsingOperations?t.usingOperation?G(this,s,null,l,a):(G(this,s,c,null,a),this.model.markers._set(s,l,void 0,a)):i.managedUsingOperations?G(this,s,c,l,a):this.model.markers._set(s,l,void 0,a)}removeMarker(e){this._assertWriterUsedCorrectly();const t="string"==typeof e?e:e.name;if(!this.model.markers.has(t))throw new o.ZP("writer-removemarker-no-marker",this);const s=this.model.markers.get(t);if(!s.managedUsingOperations)return void this.model.markers._remove(t);G(this,t,s.getRange(),null,s.affectsData)}setSelection(...e){this._assertWriterUsedCorrectly(),this.model.document.selection._setTo(...e)}setSelectionFocus(e,t){this._assertWriterUsedCorrectly(),this.model.document.selection._setFocus(e,t)}setSelectionAttribute(e,t){if(this._assertWriterUsedCorrectly(),"string"==typeof e)this._setSelectionAttribute(e,t);else for(const[t,s]of(0,q.Z)(e))this._setSelectionAttribute(t,s)}removeSelectionAttribute(e){if(this._assertWriterUsedCorrectly(),"string"==typeof e)this._removeSelectionAttribute(e);else for(const t of e)this._removeSelectionAttribute(t)}overrideSelectionGravity(){return this.model.document.selection._overrideGravity()}restoreSelectionGravity(e){this.model.document.selection._restoreGravity(e)}_setSelectionAttribute(e,t){const s=this.model.document.selection;if(s.isCollapsed&&s.anchor.parent.isEmpty){const o=h.Z._getStoreAttributeKey(e);this.setAttribute(o,t,s.anchor.parent)}s._setAttribute(e,t)}_removeSelectionAttribute(e){const t=this.model.document.selection;if(t.isCollapsed&&t.anchor.parent.isEmpty){const s=h.Z._getStoreAttributeKey(e);this.removeAttribute(s,t.anchor.parent)}t._removeAttribute(e)}_assertWriterUsedCorrectly(){if(this.model._currentWriter!==this)throw new o.ZP("writer-incorrect-use",this)}_addOperationForAffectedMarkers(e,t){for(const s of this.model.markers){if(!s.managedUsingOperations)continue;const o=s.getRange();let i=!1;if("move"===e){const e=t;i=e.containsPosition(o.start)||e.start.isEqual(o.start)||e.containsPosition(o.end)||e.end.isEqual(o.end)}else{const e=t,s=e.nodeBefore,r=e.nodeAfter,n=o.start.parent==s&&o.start.isAtEnd,a=o.end.parent==r&&0==o.end.offset,c=o.end.nodeAfter==r,l=o.start.nodeAfter==r;i=n||a||c||l}i&&this.updateMarker(s.name,{range:o})}}}function U(e,t,s,o){const i=e.model,a=i.document;let c,l,d,h=o.start;for(const e of o.getWalker({shallow:!0}))d=e.item.getAttribute(t),c&&l!=d&&(l!=s&&u(),h=c),c=e.nextPosition,l=d;function u(){const o=new n.Z(h,c),r=o.root.document?a.version:null,d=new O.Z(o,t,l,s,r);e.batch.addOperation(d),i.applyOperation(d)}c instanceof r.ZP&&c!=h&&l!=s&&u()}function K(e,t,s,o){const i=e.model,a=i.document,c=o.getAttribute(t);let l,d;if(c!=s){if(o.root===o){const e=o.document?a.version:null;d=new F.Z(o,t,c,s,e)}else{l=new n.Z(r.ZP._createBefore(o),e.createPositionAfter(o));const i=l.root.document?a.version:null;d=new O.Z(l,t,c,s,i)}e.batch.addOperation(d),i.applyOperation(d)}}function G(e,t,s,o,i){const r=e.model,n=r.document,a=new I.Z(t,s,o,r.markers,!!i,n.version);e.batch.addOperation(a),r.applyOperation(a)}function J(e,t,s,o){let i;if(e.root.document){const s=o.document,n=new r.ZP(s.graveyard,[0]);i=new z.Z(e,t,n,s.version)}else i=new N(e,t);s.addOperation(i),o.applyOperation(i)}function Q(e,t){return e===t||e instanceof g&&t instanceof g}var X=s("./packages/ckeditor5-engine/src/model/utils/autoparagraphing.ts");function Y(e){e.document.registerPostFixer((t=>function(e,t){const s=t.document.selection,o=t.schema,i=[];let r=!1;for(const e of s.getRanges()){const t=ee(e,o);t&&!t.isEqual(e)?(i.push(t),r=!0):i.push(e)}r&&e.setSelection(function(e){const t=[...e],s=new Set;let o=1;for(;o<t.length;){const e=t[o],i=t.slice(0,o);for(const[r,n]of i.entries())if(!s.has(r))if(e.isEqual(n))s.add(r);else if(e.isIntersecting(n)){s.add(r),s.add(o);const i=e.getJoined(n);t.push(i)}o++}return t.filter(((e,t)=>!s.has(t)))}(i),{backward:s.isBackward});return!1}(t,e)))}function ee(e,t){return e.isCollapsed?function(e,t){const s=e.start,o=t.getNearestSelectionRange(s);if(!o){const e=s.getAncestors().reverse().find((e=>t.isObject(e)));return e?n.Z._createOn(e):null}if(!o.isCollapsed)return o;const i=o.start;if(s.isEqual(i))return null;return new n.Z(i)}(e,t):function(e,t){const{start:s,end:o}=e,i=t.checkChild(s,"$text"),a=t.checkChild(o,"$text"),c=t.getLimitElement(s),l=t.getLimitElement(o);if(c===l){if(i&&a)return null;if(function(e,t,s){const o=e.nodeAfter&&!s.isLimit(e.nodeAfter)||s.checkChild(e,"$text"),i=t.nodeBefore&&!s.isLimit(t.nodeBefore)||s.checkChild(t,"$text");return o||i}(s,o,t)){const e=s.nodeAfter&&t.isSelectable(s.nodeAfter)?null:t.getNearestSelectionRange(s,"forward"),i=o.nodeBefore&&t.isSelectable(o.nodeBefore)?null:t.getNearestSelectionRange(o,"backward"),r=e?e.start:s,a=i?i.end:o;return new n.Z(r,a)}}const d=c&&!c.is("rootElement"),h=l&&!l.is("rootElement");if(d||h){const e=s.nodeAfter&&o.nodeBefore&&s.nodeAfter.parent===o.nodeBefore.parent,i=d&&(!e||!se(s.nodeAfter,t)),a=h&&(!e||!se(o.nodeBefore,t));let u=s,p=o;return i&&(u=r.ZP._createBefore(te(c,t))),a&&(p=r.ZP._createAfter(te(l,t))),new n.Z(u,p)}return null}(e,t)}function te(e,t){let s=e,o=s;for(;t.isLimit(o)&&o.parent;)s=o,o=o.parent;return s}function se(e,t){return e&&t.isSelectable(e)}var oe=s("./packages/ckeditor5-engine/src/model/liveposition.ts");function ie(e,t,s={}){if(t.isCollapsed)return;const o=t.getFirstRange();if("$graveyard"==o.root.rootName)return;const i=e.schema;e.change((e=>{if(!s.doNotResetEntireContent&&function(e,t){const s=e.getLimitElement(t);if(!t.containsEntireContent(s))return!1;const o=t.getFirstRange();if(o.start.parent==o.end.parent)return!1;return e.checkChild(s,"paragraph")}(i,t))return void function(e,t){const s=e.model.schema.getLimitElement(t);e.remove(e.createRangeIn(s)),ce(e,e.createPositionAt(s,0),t)}(e,t);const r={};if(!s.doNotAutoparagraph){const e=t.getSelectedElement();e&&Object.assign(r,i.getAttributesWithProperty(e,"copyOnReplace",!0))}const[n,a]=function(e){const t=e.root.document.model,s=e.start;let o=e.end;if(t.hasContent(e,{ignoreMarkers:!0})){const s=function(e){const t=e.parent,s=t.root.document.model.schema,o=t.getAncestors({parentFirst:!0,includeSelf:!0});for(const e of o){if(s.isLimit(e))return null;if(s.isBlock(e))return e}}(o);if(s&&o.isTouching(t.createPositionAt(s,0))){const s=t.createSelection(e);t.modifySelection(s,{direction:"backward"});const i=s.getLastPosition(),r=t.createRange(i,o);t.hasContent(r,{ignoreMarkers:!0})||(o=i)}}return[oe.Z.fromPosition(s,"toPrevious"),oe.Z.fromPosition(o,"toNext")]}(o);n.isTouching(a)||e.remove(e.createRange(n,a)),s.leaveUnmerged||(!function(e,t,s){const o=e.model;if(!ae(e.model.schema,t,s))return;const[i,r]=function(e,t){const s=e.getAncestors(),o=t.getAncestors();let i=0;for(;s[i]&&s[i]==o[i];)i++;return[s[i],o[i]]}(t,s);if(!i||!r)return;!o.hasContent(i,{ignoreMarkers:!0})&&o.hasContent(r,{ignoreMarkers:!0})?ne(e,t,s,i.parent):re(e,t,s,i.parent)}(e,n,a),i.removeDisallowedAttributes(n.parent.getChildren(),e)),le(e,t,n),!s.doNotAutoparagraph&&function(e,t){const s=e.checkChild(t,"$text"),o=e.checkChild(t,"paragraph");return!s&&o}(i,n)&&ce(e,n,t,r),n.detach(),a.detach()}))}function re(e,t,s,o){const i=t.parent,r=s.parent;if(i!=o&&r!=o){for(t=e.createPositionAfter(i),(s=e.createPositionBefore(r)).isEqual(t)||e.insert(r,t),e.merge(t);s.parent.isEmpty;){const t=s.parent;s=e.createPositionBefore(t),e.remove(t)}ae(e.model.schema,t,s)&&re(e,t,s,o)}}function ne(e,t,s,o){const i=t.parent,r=s.parent;if(i!=o&&r!=o){for(t=e.createPositionAfter(i),(s=e.createPositionBefore(r)).isEqual(t)||e.insert(i,s);t.parent.isEmpty;){const s=t.parent;t=e.createPositionBefore(s),e.remove(s)}s=e.createPositionBefore(r),function(e,t){const s=t.nodeBefore,o=t.nodeAfter;s.name!=o.name&&e.rename(s,o.name);e.clearAttributes(s),e.setAttributes(Object.fromEntries(o.getAttributes()),s),e.merge(t)}(e,s),ae(e.model.schema,t,s)&&ne(e,t,s,o)}}function ae(e,t,s){const o=t.parent,i=s.parent;return o!=i&&(!e.isLimit(o)&&!e.isLimit(i)&&function(e,t,s){const o=new n.Z(e,t);for(const e of o.getWalker())if(s.isLimit(e.item))return!1;return!0}(t,s,e))}function ce(e,t,s,o={}){const i=e.createElement("paragraph");e.model.schema.setAllowedAttributes(i,o,e),e.insert(i,t),le(e,s,e.createPositionAt(i,0))}function le(e,t,s){t instanceof h.Z?e.setSelection(s):t.setTo(s)}function de(e,t){const s=[];Array.from(e.getItems({direction:"backward"})).map((e=>t.createRangeOn(e))).filter((t=>(t.start.isAfter(e.start)||t.start.isEqual(e.start))&&(t.end.isBefore(e.end)||t.end.isEqual(e.end)))).forEach((e=>{s.push(e.start.parent),t.remove(e)})),s.forEach((e=>{let s=e;for(;s.parent&&s.isEmpty;){const e=t.createRangeOn(s);s=s.parent,t.remove(e)}}))}var he=s("./packages/ckeditor5-engine/src/index.ts");class ue{constructor(e,t,s){this.model=e,this.writer=t,this.position=s,this.canMergeWith=new Set([this.position.parent]),this.schema=e.schema,this._documentFragment=t.createDocumentFragment(),this._documentFragmentPosition=t.createPositionAt(this._documentFragment,0),this._firstNode=null,this._lastNode=null,this._lastAutoParagraph=null,this._filterAttributesOf=[],this._affectedStart=null,this._affectedEnd=null}handleNodes(e){for(const t of Array.from(e))this._handleNode(t);this._insertPartialFragment(),this._lastAutoParagraph&&this._updateLastNodeFromAutoParagraph(this._lastAutoParagraph),this._mergeOnRight(),this.schema.removeDisallowedAttributes(this._filterAttributesOf,this.writer),this._filterAttributesOf=[]}_updateLastNodeFromAutoParagraph(e){const t=this.writer.createPositionAfter(this._lastNode),s=this.writer.createPositionAfter(e);if(s.isAfter(t)){if(this._lastNode=e,this.position.parent!=e||!this.position.isAtEnd)throw new o.ZP("insertcontent-invalid-insertion-position",this);this.position=s,this._setAffectedBoundaries(this.position)}}getSelectionRange(){return this._nodeToSelect?n.Z._createOn(this._nodeToSelect):this.model.schema.getNearestSelectionRange(this.position)}getAffectedRange(){return this._affectedStart?new n.Z(this._affectedStart,this._affectedEnd):null}destroy(){this._affectedStart&&this._affectedStart.detach(),this._affectedEnd&&this._affectedEnd.detach()}_handleNode(e){if(this.schema.isObject(e))return void this._handleObject(e);let t=this._checkAndAutoParagraphToAllowedPosition(e);t||(t=this._checkAndSplitToAllowedPosition(e),t)?(this._appendToFragment(e),this._firstNode||(this._firstNode=e),this._lastNode=e):this._handleDisallowedNode(e)}_insertPartialFragment(){if(this._documentFragment.isEmpty)return;const e=oe.Z.fromPosition(this.position,"toNext");this._setAffectedBoundaries(this.position),this._documentFragment.getChild(0)==this._firstNode&&(this.writer.insert(this._firstNode,this.position),this._mergeOnLeft(),this.position=e.toPosition()),this._documentFragment.isEmpty||this.writer.insert(this._documentFragment,this.position),this._documentFragmentPosition=this.writer.createPositionAt(this._documentFragment,0),this.position=e.toPosition(),e.detach()}_handleObject(e){this._checkAndSplitToAllowedPosition(e)?this._appendToFragment(e):this._tryAutoparagraphing(e)}_handleDisallowedNode(e){e.is("element")?this.handleNodes(e.getChildren()):this._tryAutoparagraphing(e)}_appendToFragment(e){if(!this.schema.checkChild(this.position,e))throw new o.ZP("insertcontent-wrong-position",this,{node:e,position:this.position});this.writer.insert(e,this._documentFragmentPosition),this._documentFragmentPosition=this._documentFragmentPosition.getShiftedBy(e.offsetSize),this.schema.isObject(e)&&!this.schema.checkChild(this.position,"$text")?this._nodeToSelect=e:this._nodeToSelect=null,this._filterAttributesOf.push(e)}_setAffectedBoundaries(e){this._affectedStart||(this._affectedStart=oe.Z.fromPosition(e,"toPrevious")),this._affectedEnd&&!this._affectedEnd.isBefore(e)||(this._affectedEnd&&this._affectedEnd.detach(),this._affectedEnd=oe.Z.fromPosition(e,"toNext"))}_mergeOnLeft(){const e=this._firstNode;if(!(e instanceof p.Z))return;if(!this._canMergeLeft(e))return;const t=oe.Z._createBefore(e);t.stickiness="toNext";const s=oe.Z.fromPosition(this.position,"toNext");this._affectedStart.isEqual(t)&&(this._affectedStart.detach(),this._affectedStart=oe.Z._createAt(t.nodeBefore,"end","toPrevious")),this._firstNode===this._lastNode&&(this._firstNode=t.nodeBefore,this._lastNode=t.nodeBefore),this.writer.merge(t),t.isEqual(this._affectedEnd)&&this._firstNode===this._lastNode&&(this._affectedEnd.detach(),this._affectedEnd=oe.Z._createAt(t.nodeBefore,"end","toNext")),this.position=s.toPosition(),s.detach(),this._filterAttributesOf.push(this.position.parent),t.detach()}_mergeOnRight(){const e=this._lastNode;if(!(e instanceof p.Z))return;if(!this._canMergeRight(e))return;const t=oe.Z._createAfter(e);if(t.stickiness="toNext",!this.position.isEqual(t))throw new o.ZP("insertcontent-invalid-insertion-position",this);this.position=r.ZP._createAt(t.nodeBefore,"end");const s=oe.Z.fromPosition(this.position,"toPrevious");this._affectedEnd.isEqual(t)&&(this._affectedEnd.detach(),this._affectedEnd=oe.Z._createAt(t.nodeBefore,"end","toNext")),this._firstNode===this._lastNode&&(this._firstNode=t.nodeBefore,this._lastNode=t.nodeBefore),this.writer.merge(t),t.getShiftedBy(-1).isEqual(this._affectedStart)&&this._firstNode===this._lastNode&&(this._affectedStart.detach(),this._affectedStart=oe.Z._createAt(t.nodeBefore,0,"toPrevious")),this.position=s.toPosition(),s.detach(),this._filterAttributesOf.push(this.position.parent),t.detach()}_canMergeLeft(e){const t=e.previousSibling;return t instanceof p.Z&&this.canMergeWith.has(t)&&this.model.schema.checkMerge(t,e)}_canMergeRight(e){const t=e.nextSibling;return t instanceof p.Z&&this.canMergeWith.has(t)&&this.model.schema.checkMerge(e,t)}_tryAutoparagraphing(e){const t=this.writer.createElement("paragraph");this._getAllowedIn(this.position.parent,t)&&this.schema.checkChild(t,e)&&(t._appendChild(e),this._handleNode(t))}_checkAndAutoParagraphToAllowedPosition(e){if(this.schema.checkChild(this.position.parent,e))return!0;if(!this.schema.checkChild(this.position.parent,"paragraph")||!this.schema.checkChild("paragraph",e))return!1;this._insertPartialFragment();const t=this.writer.createElement("paragraph");return this.writer.insert(t,this.position),this._setAffectedBoundaries(this.position),this._lastAutoParagraph=t,this.position=this.writer.createPositionAt(t,0),!0}_checkAndSplitToAllowedPosition(e){const t=this._getAllowedIn(this.position.parent,e);if(!t)return!1;for(t!=this.position.parent&&this._insertPartialFragment();t!=this.position.parent;)if(this.position.isAtStart){const e=this.position.parent;this.position=this.writer.createPositionBefore(e),e.isEmpty&&e.parent===t&&this.writer.remove(e)}else if(this.position.isAtEnd)this.position=this.writer.createPositionAfter(this.position.parent);else{const e=this.writer.createPositionAfter(this.position.parent);this._setAffectedBoundaries(this.position),this.writer.split(this.position),this.position=e,this.canMergeWith.add(this.position.nodeAfter)}return!0}_getAllowedIn(e,t){return this.schema.checkChild(e,t)?e:this.schema.isLimit(e)?null:this._getAllowedIn(e.parent,t)}}var pe=s("./packages/ckeditor5-engine/src/model/utils/findoptimalinsertionrange.ts"),ge=s("./packages/ckeditor5-utils/src/first.ts");function fe(e,t,s,i,r={}){if(!e.schema.isObject(t))throw new o.ZP("insertobject-element-not-an-object",e,{object:t});let n;n=s?s instanceof E.Z||s instanceof h.Z?s:e.createSelection(s,i):e.document.selection;let a=n;r.findOptimalPosition&&e.schema.isBlock(t)&&(a=e.createSelection((0,pe.K)(n,e,r.findOptimalPosition)));const c=(0,ge.Z)(n.getSelectedBlocks()),l={};return c&&Object.assign(l,e.schema.getAttributesWithProperty(c,"copyOnReplace",!0)),e.change((s=>{a.isCollapsed||e.deleteContent(a,{doNotAutoparagraph:!0});let i=t;const n=a.anchor.parent;!e.schema.checkChild(n,t)&&e.schema.checkChild(n,"paragraph")&&e.schema.checkChild("paragraph",t)&&(i=s.createElement("paragraph"),s.insert(t,i)),e.schema.setAllowedAttributes(i,l,s);const c=e.insertContent(i,a);return c.isCollapsed||r.setSelection&&function(e,t,s,i){const r=e.model;if("after"==s){let s=t.nextSibling;!(s&&r.schema.checkChild(s,"$text"))&&r.schema.checkChild(t.parent,"paragraph")&&(s=e.createElement("paragraph"),r.schema.setAllowedAttributes(s,i,e),r.insertContent(s,e.createPositionAfter(t))),s&&e.setSelection(s,0)}else{if("on"!=s)throw new o.ZP("insertobject-invalid-place-parameter-value",r);e.setSelection(t,"on")}}(s,t,r.setSelection,l),c}))}var me=s("./packages/ckeditor5-engine/src/model/treewalker.ts");const ke=' ,.?!:;"-()';function be(e,t){const{isForward:s,walker:o,unit:i,schema:n,treatEmojiAsSingleUnit:a}=e,{type:c,item:l,nextPosition:d}=t;if("text"==c)return"word"===e.unit?function(e,t){let s=e.position.textNode;if(s){let o=e.position.offset-s.startOffset;for(;!we(s.data,o,t)&&!ve(s,o,t);){e.next();const i=t?e.position.nodeAfter:e.position.nodeBefore;if(i&&i.is("$text")){const o=i.data.charAt(t?0:i.data.length-1);ke.includes(o)||(e.next(),s=e.position.textNode)}o=e.position.offset-s.startOffset}}return e.position}(o,s):function(e,t,s){const o=e.position.textNode;if(o){const i=o.data;let r=e.position.offset-o.startOffset;for(;k(i,r)||"character"==t&&b(i,r)||s&&w(i,r);)e.next(),r=e.position.offset-o.startOffset}return e.position}(o,i,a);if(c==(s?"elementStart":"elementEnd")){if(n.isSelectable(l))return r.ZP._createAt(l,s?"after":"before");if(n.checkChild(d,"$text"))return d}else{if(n.isLimit(l))return void o.skip((()=>!0));if(n.checkChild(d,"$text"))return d}}function _e(e,t){const s=e.root,o=r.ZP._createAt(s,t?"end":0);return t?new n.Z(e,o):new n.Z(o,e)}function we(e,t,s){const o=t+(s?0:-1);return ke.includes(e.charAt(o))}function ve(e,t,s){return t===(s?e.endOffset:0)}var ye=s("./packages/ckeditor5-utils/src/observablemixin.ts");class Ze extends ye.y{constructor(){super(),this.markers=new A,this.document=new Z(this),this.schema=new j.Z,this._pendingChanges=[],this._currentWriter=null,["insertContent","insertObject","deleteContent","modifySelection","getSelectedContent","applyOperation"].forEach((e=>this.decorate(e))),this.on("applyOperation",((e,t)=>{t[0]._validate()}),{priority:"highest"}),this.schema.register("$root",{isLimit:!0}),this.schema.register("$container",{allowIn:["$root","$container"]}),this.schema.register("$block",{allowIn:["$root","$container"],isBlock:!0}),this.schema.register("$blockObject",{allowWhere:"$block",isBlock:!0,isObject:!0}),this.schema.register("$inlineObject",{allowWhere:"$text",allowAttributesOf:"$text",isInline:!0,isObject:!0}),this.schema.register("$text",{allowIn:"$block",isInline:!0,isContent:!0}),this.schema.register("$clipboardHolder",{allowContentOf:"$root",allowChildren:"$text",isLimit:!0}),this.schema.register("$documentFragment",{allowContentOf:"$root",allowChildren:"$text",isLimit:!0}),this.schema.register("$marker"),this.schema.addChildCheck(((e,t)=>{if("$marker"===t.name)return!0})),Y(this),this.document.registerPostFixer(X._m)}change(e){try{return 0===this._pendingChanges.length?(this._pendingChanges.push({batch:new i,callback:e}),this._runPendingChanges()[0]):e(this._currentWriter)}catch(e){o.ZP.rethrowUnexpectedError(e,this)}}enqueueChange(e,t){try{e?"function"==typeof e?(t=e,e=new i):e instanceof i||(e=new i(e)):e=new i,this._pendingChanges.push({batch:e,callback:t}),1==this._pendingChanges.length&&this._runPendingChanges()}catch(e){o.ZP.rethrowUnexpectedError(e,this)}}applyOperation(e){e._execute()}insertContent(e,t,s){return function(e,t,s,o){return e.change((i=>{let r;r=s?s instanceof E.Z||s instanceof h.Z?s:i.createSelection(s,o):e.document.selection,r.isCollapsed||e.deleteContent(r,{doNotAutoparagraph:!0});const a=new ue(e,i,r.anchor),c=[];let l;if(t.is("documentFragment")){if(t.markers.size){const e=[];for(const[s,o]of t.markers){const{start:t,end:i}=o,r=t.isEqual(i);e.push({position:t,name:s,isCollapsed:r},{position:i,name:s,isCollapsed:r})}e.sort((({position:e},{position:t})=>e.isBefore(t)?1:-1));for(const{position:s,name:o,isCollapsed:r}of e){let e=null,n=null;const a=s.parent===t&&s.isAtStart,l=s.parent===t&&s.isAtEnd;a||l?r&&(n=a?"start":"end"):(e=i.createElement("$marker"),i.insert(e,s)),c.push({name:o,element:e,collapsed:n})}}l=t.getChildren()}else l=[t];a.handleNodes(l);let d=a.getSelectionRange();if(t.is("documentFragment")&&c.length){const e=d?he.iE.fromRange(d):null,t={};for(let e=c.length-1;e>=0;e--){const{name:s,element:o,collapsed:r}=c[e],n=!t[s];if(n&&(t[s]=[]),o){const e=i.createPositionAt(o,"before");t[s].push(e),i.remove(o)}else{const e=a.getAffectedRange();if(!e){r&&t[s].push(a.position);continue}r?t[s].push(e[r]):t[s].push(n?e.start:e.end)}}for(const[e,[s,o]]of Object.entries(t))s&&o&&s.root===o.root&&i.addMarker(e,{usingOperation:!0,affectsData:!0,range:new n.Z(s,o)});e&&(d=e.toRange(),e.detach())}d&&(r instanceof h.Z?i.setSelection(d):r.setTo(d));const u=a.getAffectedRange()||e.createRange(r.anchor);return a.destroy(),u}))}(this,e,t,s)}insertObject(e,t,s,o){return fe(this,e,t,s,o)}deleteContent(e,t){ie(this,e,t)}modifySelection(e,t){!function(e,t,s={}){const o=e.schema,i="backward"!=s.direction,r=s.unit?s.unit:"character",n=!!s.treatEmojiAsSingleUnit,a=t.focus,c=new me.Z({boundaries:_e(a,i),singleCharacters:!0,direction:i?"forward":"backward"}),l={walker:c,schema:o,isForward:i,unit:r,treatEmojiAsSingleUnit:n};let d;for(;d=c.next();){if(d.done)return;const s=be(l,d.value);if(s)return void(t instanceof h.Z?e.change((e=>{e.setSelectionFocus(s)})):t.setFocus(s))}}(this,e,t)}getSelectedContent(e){return function(e,t){return e.change((e=>{const s=e.createDocumentFragment(),o=t.getFirstRange();if(!o||o.isCollapsed)return s;const i=o.start.root,r=o.start.getCommonPath(o.end),n=i.getNodeByPath(r);let a;a=o.start.parent==o.end.parent?o:e.createRange(e.createPositionAt(n,o.start.path[r.length]),e.createPositionAt(n,o.end.path[r.length]+1));const c=a.end.offset-a.start.offset;for(const t of a.getItems({shallow:!0}))t.is("$textProxy")?e.appendText(t.data,t.getAttributes(),s):e.append(e.cloneElement(t,!0),s);if(a!=o){const t=o._getTransformedByMove(a.start,e.createPositionAt(s,0),c)[0],i=e.createRange(e.createPositionAt(s,0),t.start);de(e.createRange(t.end,e.createPositionAt(s,"end")),e),de(i,e)}return s}))}(this,e)}hasContent(e,t={}){const s=e instanceof n.Z?e:n.Z._createIn(e);if(s.isCollapsed)return!1;const{ignoreWhitespaces:o=!1,ignoreMarkers:i=!1}=t;if(!i)for(const e of this.markers.getMarkersIntersectingRange(s))if(e.affectsData)return!0;for(const e of s.getItems())if(this.schema.isContent(e)){if(!e.is("$textProxy"))return!0;if(!o)return!0;if(-1!==e.data.search(/\S/))return!0}return!1}createPositionFromPath(e,t,s){return new r.ZP(e,t,s)}createPositionAt(e,t){return r.ZP._createAt(e,t)}createPositionAfter(e){return r.ZP._createAfter(e)}createPositionBefore(e){return r.ZP._createBefore(e)}createRange(e,t){return new n.Z(e,t)}createRangeIn(e){return n.Z._createIn(e)}createRangeOn(e){return n.Z._createOn(e)}createSelection(...e){return new E.Z(...e)}createBatch(e){return new i(e)}createOperationFromJSON(e){return S.Z.fromJSON(e,this.document)}destroy(){this.document.destroy(),this.stopListening()}_runPendingChanges(){const e=[];this.fire("_beforeChanges");try{for(;this._pendingChanges.length;){const t=this._pendingChanges[0].batch;this._currentWriter=new H(this,t);const s=this._pendingChanges[0].callback(this._currentWriter);e.push(s),this.document._handleChangeBlock(this._currentWriter),this._pendingChanges.shift(),this._currentWriter=null}}finally{this._pendingChanges.length=0,this._currentWriter=null,this.fire("_afterChanges")}return e}}},"./packages/ckeditor5-engine/src/model/node.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>a});var o=s("./packages/ckeditor5-engine/src/model/typecheckable.ts"),i=s("./packages/ckeditor5-utils/src/tomap.ts"),r=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),n=s("./packages/ckeditor5-utils/src/comparearrays.ts");s("./packages/ckeditor5-utils/src/version.ts");class a extends o.Z{constructor(e){super(),this.parent=null,this._attrs=(0,i.Z)(e)}get document(){return null}get index(){let e;if(!this.parent)return null;if(null===(e=this.parent.getChildIndex(this)))throw new r.ZP("model-node-not-found-in-parent",this);return e}get startOffset(){let e;if(!this.parent)return null;if(null===(e=this.parent.getChildStartOffset(this)))throw new r.ZP("model-node-not-found-in-parent",this);return e}get offsetSize(){return 1}get endOffset(){return this.parent?this.startOffset+this.offsetSize:null}get nextSibling(){const e=this.index;return null!==e&&this.parent.getChild(e+1)||null}get previousSibling(){const e=this.index;return null!==e&&this.parent.getChild(e-1)||null}get root(){let e=this;for(;e.parent;)e=e.parent;return e}isAttached(){return this.root.is("rootElement")}getPath(){const e=[];let t=this;for(;t.parent;)e.unshift(t.startOffset),t=t.parent;return e}getAncestors(e={}){const t=[];let s=e.includeSelf?this:this.parent;for(;s;)t[e.parentFirst?"push":"unshift"](s),s=s.parent;return t}getCommonAncestor(e,t={}){const s=this.getAncestors(t),o=e.getAncestors(t);let i=0;for(;s[i]==o[i]&&s[i];)i++;return 0===i?null:s[i-1]}isBefore(e){if(this==e)return!1;if(this.root!==e.root)return!1;const t=this.getPath(),s=e.getPath(),o=(0,n.Z)(t,s);switch(o){case"prefix":return!0;case"extension":return!1;default:return t[o]<s[o]}}isAfter(e){return this!=e&&(this.root===e.root&&!this.isBefore(e))}hasAttribute(e){return this._attrs.has(e)}getAttribute(e){return this._attrs.get(e)}getAttributes(){return this._attrs.entries()}getAttributeKeys(){return this._attrs.keys()}toJSON(){const e={};return this._attrs.size&&(e.attributes=Array.from(this._attrs).reduce(((e,t)=>(e[t[0]]=t[1],e)),{})),e}_clone(e){return new a(this._attrs)}_remove(){this.parent._removeChildren(this.index)}_setAttribute(e,t){this._attrs.set(e,t)}_setAttributesTo(e){this._attrs=(0,i.Z)(e)}_removeAttribute(e){return this._attrs.delete(e)}_clearAttributes(){this._attrs.clear()}}a.prototype.is=function(e){return"node"===e||"model:node"===e}},"./packages/ckeditor5-engine/src/model/nodelist.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./packages/ckeditor5-engine/src/model/node.ts"),i=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class r{constructor(e){this._nodes=[],e&&this._insertNodes(0,e)}[Symbol.iterator](){return this._nodes[Symbol.iterator]()}get length(){return this._nodes.length}get maxOffset(){return this._nodes.reduce(((e,t)=>e+t.offsetSize),0)}getNode(e){return this._nodes[e]||null}getNodeIndex(e){const t=this._nodes.indexOf(e);return-1==t?null:t}getNodeStartOffset(e){const t=this.getNodeIndex(e);return null===t?null:this._nodes.slice(0,t).reduce(((e,t)=>e+t.offsetSize),0)}indexToOffset(e){if(e==this._nodes.length)return this.maxOffset;const t=this._nodes[e];if(!t)throw new i.ZP("model-nodelist-index-out-of-bounds",this);return this.getNodeStartOffset(t)}offsetToIndex(e){let t=0;for(const s of this._nodes){if(e>=t&&e<t+s.offsetSize)return this.getNodeIndex(s);t+=s.offsetSize}if(t!=e)throw new i.ZP("model-nodelist-offset-out-of-bounds",this,{offset:e,nodeList:this});return this.length}_insertNodes(e,t){for(const e of t)if(!(e instanceof o.Z))throw new i.ZP("model-nodelist-insertnodes-not-node",this);this._nodes=function(e,t,s,o){if(Math.max(t.length,e.length)>1e4)return e.slice(0,s).concat(t).concat(e.slice(s+o,e.length));{const i=Array.from(e);return i.splice(s,o,...t),i}}(this._nodes,Array.from(t),e,0)}_removeNodes(e,t=1){return this._nodes.splice(e,t)}toJSON(){return this._nodes.map((e=>e.toJSON()))}}},"./packages/ckeditor5-engine/src/model/operation/attributeoperation.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>l});var o=s("./packages/ckeditor5-engine/src/model/operation/operation.ts"),i=s("./packages/ckeditor5-engine/src/model/operation/utils.ts"),r=s("./packages/ckeditor5-engine/src/model/range.ts"),n=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),a=s("./node_modules/lodash-es/_baseIsEqual.js");const c=function(e,t){return(0,a.Z)(e,t)};class l extends o.Z{constructor(e,t,s,o,i){super(i),this.range=e.clone(),this.key=t,this.oldValue=void 0===s?null:s,this.newValue=void 0===o?null:o}get type(){return null===this.oldValue?"addAttribute":null===this.newValue?"removeAttribute":"changeAttribute"}clone(){return new l(this.range,this.key,this.oldValue,this.newValue,this.baseVersion)}getReversed(){return new l(this.range,this.key,this.newValue,this.oldValue,this.baseVersion+1)}toJSON(){const e=super.toJSON();return e.range=this.range.toJSON(),e}_validate(){if(!this.range.isFlat)throw new n.ZP("attribute-operation-range-not-flat",this);for(const e of this.range.getItems({shallow:!0})){if(null!==this.oldValue&&!c(e.getAttribute(this.key),this.oldValue))throw new n.ZP("attribute-operation-wrong-old-value",this,{item:e,key:this.key,value:this.oldValue});if(null===this.oldValue&&null!==this.newValue&&e.hasAttribute(this.key))throw new n.ZP("attribute-operation-attribute-exists",this,{node:e,key:this.key})}}_execute(){c(this.oldValue,this.newValue)||(0,i.pX)(this.range,this.key,this.newValue)}static get className(){return"AttributeOperation"}static fromJSON(e,t){return new l(r.Z.fromJSON(e.range,t),e.key,e.oldValue,e.newValue,e.baseVersion)}}},"./packages/ckeditor5-engine/src/model/operation/insertoperation.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>h});var o=s("./packages/ckeditor5-engine/src/model/operation/operation.ts"),i=s("./packages/ckeditor5-engine/src/model/position.ts"),r=s("./packages/ckeditor5-engine/src/model/nodelist.ts"),n=s("./packages/ckeditor5-engine/src/model/operation/moveoperation.ts"),a=s("./packages/ckeditor5-engine/src/model/operation/utils.ts"),c=s("./packages/ckeditor5-engine/src/model/text.ts"),l=s("./packages/ckeditor5-engine/src/model/element.ts"),d=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class h extends o.Z{constructor(e,t,s){super(s),this.position=e.clone(),this.position.stickiness="toNone",this.nodes=new r.Z((0,a.So)(t)),this.shouldReceiveAttributes=!1}get type(){return"insert"}get howMany(){return this.nodes.maxOffset}clone(){const e=new r.Z([...this.nodes].map((e=>e._clone(!0)))),t=new h(this.position,e,this.baseVersion);return t.shouldReceiveAttributes=this.shouldReceiveAttributes,t}getReversed(){const e=this.position.root.document.graveyard,t=new i.ZP(e,[0]);return new n.Z(this.position,this.nodes.maxOffset,t,this.baseVersion+1)}_validate(){const e=this.position.parent;if(!e||e.maxOffset<this.position.offset)throw new d.ZP("insert-operation-position-invalid",this)}_execute(){const e=this.nodes;this.nodes=new r.Z([...e].map((e=>e._clone(!0)))),(0,a.fj)(this.position,e)}toJSON(){const e=super.toJSON();return e.position=this.position.toJSON(),e.nodes=this.nodes.toJSON(),e}static get className(){return"InsertOperation"}static fromJSON(e,t){const s=[];for(const t of e.nodes)t.name?s.push(l.Z.fromJSON(t)):s.push(c.Z.fromJSON(t));const o=new h(i.ZP.fromJSON(e.position,t),s,e.baseVersion);return o.shouldReceiveAttributes=e.shouldReceiveAttributes,o}}},"./packages/ckeditor5-engine/src/model/operation/markeroperation.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./packages/ckeditor5-engine/src/model/operation/operation.ts"),i=s("./packages/ckeditor5-engine/src/model/range.ts");class r extends o.Z{constructor(e,t,s,o,i,r){super(r),this.name=e,this.oldRange=t?t.clone():null,this.newRange=s?s.clone():null,this.affectsData=i,this._markers=o}get type(){return"marker"}clone(){return new r(this.name,this.oldRange,this.newRange,this._markers,this.affectsData,this.baseVersion)}getReversed(){return new r(this.name,this.newRange,this.oldRange,this._markers,this.affectsData,this.baseVersion+1)}_execute(){this.newRange?this._markers._set(this.name,this.newRange,!0,this.affectsData):this._markers._remove(this.name)}toJSON(){const e=super.toJSON();return this.oldRange&&(e.oldRange=this.oldRange.toJSON()),this.newRange&&(e.newRange=this.newRange.toJSON()),delete e._markers,e}static get className(){return"MarkerOperation"}static fromJSON(e,t){return new r(e.name,e.oldRange?i.Z.fromJSON(e.oldRange,t):null,e.newRange?i.Z.fromJSON(e.newRange,t):null,t.model.markers,e.affectsData,e.baseVersion)}}},"./packages/ckeditor5-engine/src/model/operation/mergeoperation.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>l});var o=s("./packages/ckeditor5-engine/src/model/operation/operation.ts"),i=s("./packages/ckeditor5-engine/src/model/operation/splitoperation.ts"),r=s("./packages/ckeditor5-engine/src/model/position.ts"),n=s("./packages/ckeditor5-engine/src/model/range.ts"),a=s("./packages/ckeditor5-engine/src/model/operation/utils.ts"),c=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class l extends o.Z{constructor(e,t,s,o,i){super(i),this.sourcePosition=e.clone(),this.sourcePosition.stickiness="toPrevious",this.howMany=t,this.targetPosition=s.clone(),this.targetPosition.stickiness="toNext",this.graveyardPosition=o.clone()}get type(){return"merge"}get deletionPosition(){return new r.ZP(this.sourcePosition.root,this.sourcePosition.path.slice(0,-1))}get movedRange(){const e=this.sourcePosition.getShiftedBy(Number.POSITIVE_INFINITY);return new n.Z(this.sourcePosition,e)}clone(){return new l(this.sourcePosition,this.howMany,this.targetPosition,this.graveyardPosition,this.baseVersion)}getReversed(){const e=this.targetPosition._getTransformedByMergeOperation(this),t=this.sourcePosition.path.slice(0,-1),s=new r.ZP(this.sourcePosition.root,t)._getTransformedByMergeOperation(this);return new i.Z(e,this.howMany,s,this.graveyardPosition,this.baseVersion+1)}_validate(){const e=this.sourcePosition.parent,t=this.targetPosition.parent;if(!e.parent)throw new c.ZP("merge-operation-source-position-invalid",this);if(!t.parent)throw new c.ZP("merge-operation-target-position-invalid",this);if(this.howMany!=e.maxOffset)throw new c.ZP("merge-operation-how-many-invalid",this)}_execute(){const e=this.sourcePosition.parent,t=n.Z._createIn(e);(0,a.XF)(t,this.targetPosition),(0,a.XF)(n.Z._createOn(e),this.graveyardPosition)}toJSON(){const e=super.toJSON();return e.sourcePosition=e.sourcePosition.toJSON(),e.targetPosition=e.targetPosition.toJSON(),e.graveyardPosition=e.graveyardPosition.toJSON(),e}static get className(){return"MergeOperation"}static fromJSON(e,t){const s=r.ZP.fromJSON(e.sourcePosition,t),o=r.ZP.fromJSON(e.targetPosition,t),i=r.ZP.fromJSON(e.graveyardPosition,t);return new this(s,e.howMany,o,i,e.baseVersion)}}},"./packages/ckeditor5-engine/src/model/operation/moveoperation.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>l});var o=s("./packages/ckeditor5-engine/src/model/operation/operation.ts"),i=s("./packages/ckeditor5-engine/src/model/position.ts"),r=s("./packages/ckeditor5-engine/src/model/range.ts"),n=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),a=s("./packages/ckeditor5-utils/src/comparearrays.ts"),c=s("./packages/ckeditor5-engine/src/model/operation/utils.ts");class l extends o.Z{constructor(e,t,s,o){super(o),this.sourcePosition=e.clone(),this.sourcePosition.stickiness="toNext",this.howMany=t,this.targetPosition=s.clone(),this.targetPosition.stickiness="toNone"}get type(){return"$graveyard"==this.targetPosition.root.rootName?"remove":"$graveyard"==this.sourcePosition.root.rootName?"reinsert":"move"}clone(){return new l(this.sourcePosition,this.howMany,this.targetPosition,this.baseVersion)}getMovedRangeStart(){return this.targetPosition._getTransformedByDeletion(this.sourcePosition,this.howMany)}getReversed(){const e=this.sourcePosition._getTransformedByInsertion(this.targetPosition,this.howMany);return new l(this.getMovedRangeStart(),this.howMany,e,this.baseVersion+1)}_validate(){const e=this.sourcePosition.parent,t=this.targetPosition.parent,s=this.sourcePosition.offset,o=this.targetPosition.offset;if(s+this.howMany>e.maxOffset)throw new n.ZP("move-operation-nodes-do-not-exist",this);if(e===t&&s<o&&o<s+this.howMany)throw new n.ZP("move-operation-range-into-itself",this);if(this.sourcePosition.root==this.targetPosition.root&&"prefix"==(0,a.Z)(this.sourcePosition.getParentPath(),this.targetPosition.getParentPath())){const e=this.sourcePosition.path.length-1;if(this.targetPosition.path[e]>=s&&this.targetPosition.path[e]<s+this.howMany)throw new n.ZP("move-operation-node-into-itself",this)}}_execute(){(0,c.XF)(r.Z._createFromPositionAndShift(this.sourcePosition,this.howMany),this.targetPosition)}toJSON(){const e=super.toJSON();return e.sourcePosition=this.sourcePosition.toJSON(),e.targetPosition=this.targetPosition.toJSON(),e}static get className(){return"MoveOperation"}static fromJSON(e,t){const s=i.ZP.fromJSON(e.sourcePosition,t),o=i.ZP.fromJSON(e.targetPosition,t);return new this(s,e.howMany,o,e.baseVersion)}}},"./packages/ckeditor5-engine/src/model/operation/nooperation.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./packages/ckeditor5-engine/src/model/operation/operation.ts");class i extends o.Z{get type(){return"noop"}clone(){return new i(this.baseVersion)}getReversed(){return new i(this.baseVersion+1)}_execute(){}static get className(){return"NoOperation"}}},"./packages/ckeditor5-engine/src/model/operation/operation.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});class o{constructor(e){this.baseVersion=e,this.isDocumentOperation=null!==this.baseVersion,this.batch=null}_validate(){}toJSON(){const e=Object.assign({},this);return e.__className=this.constructor.className,delete e.batch,delete e.isDocumentOperation,e}static get className(){return"Operation"}static fromJSON(e,t){return new this(e.baseVersion)}}},"./packages/ckeditor5-engine/src/model/operation/operationfactory.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>g});var o=s("./packages/ckeditor5-engine/src/model/operation/attributeoperation.ts"),i=s("./packages/ckeditor5-engine/src/model/operation/insertoperation.ts"),r=s("./packages/ckeditor5-engine/src/model/operation/markeroperation.ts"),n=s("./packages/ckeditor5-engine/src/model/operation/moveoperation.ts"),a=s("./packages/ckeditor5-engine/src/model/operation/nooperation.ts"),c=s("./packages/ckeditor5-engine/src/model/operation/operation.ts"),l=s("./packages/ckeditor5-engine/src/model/operation/renameoperation.ts"),d=s("./packages/ckeditor5-engine/src/model/operation/rootattributeoperation.ts"),h=s("./packages/ckeditor5-engine/src/model/operation/splitoperation.ts"),u=s("./packages/ckeditor5-engine/src/model/operation/mergeoperation.ts");const p={};p[o.Z.className]=o.Z,p[i.Z.className]=i.Z,p[r.Z.className]=r.Z,p[n.Z.className]=n.Z,p[a.Z.className]=a.Z,p[c.Z.className]=c.Z,p[l.Z.className]=l.Z,p[d.Z.className]=d.Z,p[h.Z.className]=h.Z,p[u.Z.className]=u.Z;class g{static fromJSON(e,t){return p[e.__className].fromJSON(e,t)}}},"./packages/ckeditor5-engine/src/model/operation/renameoperation.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>a});var o=s("./packages/ckeditor5-engine/src/model/operation/operation.ts"),i=s("./packages/ckeditor5-engine/src/model/element.ts"),r=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),n=s("./packages/ckeditor5-engine/src/model/position.ts");class a extends o.Z{constructor(e,t,s,o){super(o),this.position=e,this.position.stickiness="toNext",this.oldName=t,this.newName=s}get type(){return"rename"}clone(){return new a(this.position.clone(),this.oldName,this.newName,this.baseVersion)}getReversed(){return new a(this.position.clone(),this.newName,this.oldName,this.baseVersion+1)}_validate(){const e=this.position.nodeAfter;if(!(e instanceof i.Z))throw new r.ZP("rename-operation-wrong-position",this);if(e.name!==this.oldName)throw new r.ZP("rename-operation-wrong-name",this)}_execute(){this.position.nodeAfter.name=this.newName}toJSON(){const e=super.toJSON();return e.position=this.position.toJSON(),e}static get className(){return"RenameOperation"}static fromJSON(e,t){return new a(n.ZP.fromJSON(e.position,t),e.oldName,e.newName,e.baseVersion)}}},"./packages/ckeditor5-engine/src/model/operation/rootattributeoperation.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./packages/ckeditor5-engine/src/model/operation/operation.ts"),i=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class r extends o.Z{constructor(e,t,s,o,i){super(i),this.root=e,this.key=t,this.oldValue=s,this.newValue=o}get type(){return null===this.oldValue?"addRootAttribute":null===this.newValue?"removeRootAttribute":"changeRootAttribute"}clone(){return new r(this.root,this.key,this.oldValue,this.newValue,this.baseVersion)}getReversed(){return new r(this.root,this.key,this.newValue,this.oldValue,this.baseVersion+1)}_validate(){if(this.root!=this.root.root||this.root.is("documentFragment"))throw new i.ZP("rootattribute-operation-not-a-root",this,{root:this.root,key:this.key});if(null!==this.oldValue&&this.root.getAttribute(this.key)!==this.oldValue)throw new i.ZP("rootattribute-operation-wrong-old-value",this,{root:this.root,key:this.key});if(null===this.oldValue&&null!==this.newValue&&this.root.hasAttribute(this.key))throw new i.ZP("rootattribute-operation-attribute-exists",this,{root:this.root,key:this.key})}_execute(){null!==this.newValue?this.root._setAttribute(this.key,this.newValue):this.root._removeAttribute(this.key)}toJSON(){const e=super.toJSON();return e.root=this.root.toJSON(),e}static get className(){return"RootAttributeOperation"}static fromJSON(e,t){if(!t.getRoot(e.root))throw new i.ZP("rootattribute-operation-fromjson-no-root",this,{rootName:e.root});return new r(t.getRoot(e.root),e.key,e.oldValue,e.newValue,e.baseVersion)}}},"./packages/ckeditor5-engine/src/model/operation/splitoperation.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>l});var o=s("./packages/ckeditor5-engine/src/model/operation/operation.ts"),i=s("./packages/ckeditor5-engine/src/model/operation/mergeoperation.ts"),r=s("./packages/ckeditor5-engine/src/model/position.ts"),n=s("./packages/ckeditor5-engine/src/model/range.ts"),a=s("./packages/ckeditor5-engine/src/model/operation/utils.ts"),c=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class l extends o.Z{constructor(e,t,s,o,i){super(i),this.splitPosition=e.clone(),this.splitPosition.stickiness="toNext",this.howMany=t,this.insertionPosition=s,this.graveyardPosition=o?o.clone():null,this.graveyardPosition&&(this.graveyardPosition.stickiness="toNext")}get type(){return"split"}get moveTargetPosition(){const e=this.insertionPosition.path.slice();return e.push(0),new r.ZP(this.insertionPosition.root,e)}get movedRange(){const e=this.splitPosition.getShiftedBy(Number.POSITIVE_INFINITY);return new n.Z(this.splitPosition,e)}clone(){return new l(this.splitPosition,this.howMany,this.insertionPosition,this.graveyardPosition,this.baseVersion)}getReversed(){const e=this.splitPosition.root.document.graveyard,t=new r.ZP(e,[0]);return new i.Z(this.moveTargetPosition,this.howMany,this.splitPosition,t,this.baseVersion+1)}_validate(){const e=this.splitPosition.parent,t=this.splitPosition.offset;if(!e||e.maxOffset<t)throw new c.ZP("split-operation-position-invalid",this);if(!e.parent)throw new c.ZP("split-operation-split-in-root",this);if(this.howMany!=e.maxOffset-this.splitPosition.offset)throw new c.ZP("split-operation-how-many-invalid",this);if(this.graveyardPosition&&!this.graveyardPosition.nodeAfter)throw new c.ZP("split-operation-graveyard-position-invalid",this)}_execute(){const e=this.splitPosition.parent;if(this.graveyardPosition)(0,a.XF)(n.Z._createFromPositionAndShift(this.graveyardPosition,1),this.insertionPosition);else{const t=e._clone();(0,a.fj)(this.insertionPosition,t)}const t=new n.Z(r.ZP._createAt(e,this.splitPosition.offset),r.ZP._createAt(e,e.maxOffset));(0,a.XF)(t,this.moveTargetPosition)}toJSON(){const e=super.toJSON();return e.splitPosition=this.splitPosition.toJSON(),e.insertionPosition=this.insertionPosition.toJSON(),this.graveyardPosition&&(e.graveyardPosition=this.graveyardPosition.toJSON()),e}static get className(){return"SplitOperation"}static getInsertionPosition(e){const t=e.path.slice(0,-1);return t[t.length-1]++,new r.ZP(e.root,t,"toPrevious")}static fromJSON(e,t){const s=r.ZP.fromJSON(e.splitPosition,t),o=r.ZP.fromJSON(e.insertionPosition,t),i=e.graveyardPosition?r.ZP.fromJSON(e.graveyardPosition,t):null;return new this(s,e.howMany,o,i,e.baseVersion)}}},"./packages/ckeditor5-engine/src/model/operation/transform.ts":(e,t,s)=>{"use strict";s.d(t,{R:()=>_});var o=s("./packages/ckeditor5-engine/src/model/operation/insertoperation.ts"),i=s("./packages/ckeditor5-engine/src/model/operation/attributeoperation.ts"),r=s("./packages/ckeditor5-engine/src/model/operation/renameoperation.ts"),n=s("./packages/ckeditor5-engine/src/model/operation/markeroperation.ts"),a=s("./packages/ckeditor5-engine/src/model/operation/moveoperation.ts"),c=s("./packages/ckeditor5-engine/src/model/operation/rootattributeoperation.ts"),l=s("./packages/ckeditor5-engine/src/model/operation/mergeoperation.ts"),d=s("./packages/ckeditor5-engine/src/model/operation/splitoperation.ts"),h=s("./packages/ckeditor5-engine/src/model/operation/nooperation.ts"),u=s("./packages/ckeditor5-engine/src/model/range.ts"),p=s("./packages/ckeditor5-engine/src/model/position.ts"),g=s("./packages/ckeditor5-utils/src/comparearrays.ts");const f=new Map;function m(e,t,s){let o=f.get(e);o||(o=new Map,f.set(e,o)),o.set(t,s)}function k(e){return[e]}function b(e,t,s={}){const o=function(e,t){const s=f.get(e);return s&&s.has(t)?s.get(t):k}(e.constructor,t.constructor);try{return o(e=e.clone(),t,s)}catch(e){throw e}}function _(e,t,s){e=e.slice(),t=t.slice();const o=new w(s.document,s.useRelations,s.forceWeakRemove);o.setOriginalOperations(e),o.setOriginalOperations(t);const i=o.originalOperations;if(0==e.length||0==t.length)return{operationsA:e,operationsB:t,originalOperations:i};const r=new WeakMap;for(const t of e)r.set(t,0);const n={nextBaseVersionA:e[e.length-1].baseVersion+1,nextBaseVersionB:t[t.length-1].baseVersion+1,originalOperationsACount:e.length,originalOperationsBCount:t.length};let a=0;for(;a<e.length;){const s=e[a],i=r.get(s);if(i==t.length){a++;continue}const n=t[i],c=b(s,n,o.getContext(s,n,!0)),l=b(n,s,o.getContext(n,s,!1));o.updateRelation(s,n),o.setOriginalOperations(c,s),o.setOriginalOperations(l,n);for(const e of c)r.set(e,i+l.length);e.splice(a,1,...c),t.splice(i,1,...l)}if(s.padWithNoOps){const s=e.length-n.originalOperationsACount,o=t.length-n.originalOperationsBCount;y(e,o-s),y(t,s-o)}return v(e,n.nextBaseVersionB),v(t,n.nextBaseVersionA),{operationsA:e,operationsB:t,originalOperations:i}}class w{constructor(e,t,s=!1){this.originalOperations=new Map,this._history=e.history,this._useRelations=t,this._forceWeakRemove=!!s,this._relations=new Map}setOriginalOperations(e,t=null){const s=t?this.originalOperations.get(t):null;for(const t of e)this.originalOperations.set(t,s||t)}updateRelation(e,t){if(e instanceof a.Z)t instanceof l.Z?e.targetPosition.isEqual(t.sourcePosition)||t.movedRange.containsPosition(e.targetPosition)?this._setRelation(e,t,"insertAtSource"):e.targetPosition.isEqual(t.deletionPosition)?this._setRelation(e,t,"insertBetween"):e.targetPosition.isAfter(t.sourcePosition)&&this._setRelation(e,t,"moveTargetAfter"):t instanceof a.Z&&(e.targetPosition.isEqual(t.sourcePosition)||e.targetPosition.isBefore(t.sourcePosition)?this._setRelation(e,t,"insertBefore"):this._setRelation(e,t,"insertAfter"));else if(e instanceof d.Z){if(t instanceof l.Z)e.splitPosition.isBefore(t.sourcePosition)&&this._setRelation(e,t,"splitBefore");else if(t instanceof a.Z)if(e.splitPosition.isEqual(t.sourcePosition)||e.splitPosition.isBefore(t.sourcePosition))this._setRelation(e,t,"splitBefore");else{const s=u.Z._createFromPositionAndShift(t.sourcePosition,t.howMany);if(e.splitPosition.hasSameParentAs(t.sourcePosition)&&s.containsPosition(e.splitPosition)){const o=s.end.offset-e.splitPosition.offset,i=e.splitPosition.offset-s.start.offset;this._setRelation(e,t,{howMany:o,offset:i})}}}else if(e instanceof l.Z)t instanceof l.Z?(e.targetPosition.isEqual(t.sourcePosition)||this._setRelation(e,t,"mergeTargetNotMoved"),e.sourcePosition.isEqual(t.targetPosition)&&this._setRelation(e,t,"mergeSourceNotMoved"),e.sourcePosition.isEqual(t.sourcePosition)&&this._setRelation(e,t,"mergeSameElement")):t instanceof d.Z&&e.sourcePosition.isEqual(t.splitPosition)&&this._setRelation(e,t,"splitAtSource");else if(e instanceof n.Z){const s=e.newRange;if(!s)return;if(t instanceof a.Z){const o=u.Z._createFromPositionAndShift(t.sourcePosition,t.howMany),i=o.containsPosition(s.start)||o.start.isEqual(s.start),r=o.containsPosition(s.end)||o.end.isEqual(s.end);!i&&!r||o.containsRange(s)||this._setRelation(e,t,{side:i?"left":"right",path:i?s.start.path.slice():s.end.path.slice()})}else if(t instanceof l.Z){const o=s.start.isEqual(t.targetPosition),i=s.start.isEqual(t.deletionPosition),r=s.end.isEqual(t.deletionPosition),n=s.end.isEqual(t.sourcePosition);(o||i||r||n)&&this._setRelation(e,t,{wasInLeftElement:o,wasStartBeforeMergedElement:i,wasEndBeforeMergedElement:r,wasInRightElement:n})}}}getContext(e,t,s){return{aIsStrong:s,aWasUndone:this._wasUndone(e),bWasUndone:this._wasUndone(t),abRelation:this._useRelations?this._getRelation(e,t):null,baRelation:this._useRelations?this._getRelation(t,e):null,forceWeakRemove:this._forceWeakRemove}}_wasUndone(e){const t=this.originalOperations.get(e);return t.wasUndone||this._history.isUndoneOperation(t)}_getRelation(e,t){const s=this.originalOperations.get(t),o=this._history.getUndoneOperation(s);if(!o)return null;const i=this.originalOperations.get(e),r=this._relations.get(i);return r&&r.get(o)||null}_setRelation(e,t,s){const o=this.originalOperations.get(e),i=this.originalOperations.get(t);let r=this._relations.get(o);r||(r=new Map,this._relations.set(o,r)),r.set(i,s)}}function v(e,t){for(const s of e)s.baseVersion=t++}function y(e,t){for(let s=0;s<t;s++)e.push(new h.Z(0))}function Z(e,t,s){const o=e.nodes.getNode(0).getAttribute(t);if(o==s)return null;const r=new u.Z(e.position,e.position.getShiftedBy(e.howMany));return new i.Z(r,t,o,s,0)}function P(e,t){return null===e.targetPosition._getTransformedByDeletion(t.sourcePosition,t.howMany)}function x(e,t){const s=[];for(let o=0;o<e.length;o++){const i=e[o],r=new a.Z(i.start,i.end.offset-i.start.offset,t,0);s.push(r);for(let t=o+1;t<e.length;t++)e[t]=e[t]._getTransformedByMove(r.sourcePosition,r.targetPosition,r.howMany)[0];t=t._getTransformedByMove(r.sourcePosition,r.targetPosition,r.howMany)}return s}m(i.Z,i.Z,((e,t,s)=>{if(e.key===t.key&&e.range.start.hasSameParentAs(t.range.start)){const o=e.range.getDifference(t.range).map((t=>new i.Z(t,e.key,e.oldValue,e.newValue,0))),r=e.range.getIntersection(t.range);return r&&s.aIsStrong&&o.push(new i.Z(r,t.key,t.newValue,e.newValue,0)),0==o.length?[new h.Z(0)]:o}return[e]})),m(i.Z,o.Z,((e,t)=>{if(e.range.start.hasSameParentAs(t.position)&&e.range.containsPosition(t.position)){const s=e.range._getTransformedByInsertion(t.position,t.howMany,!t.shouldReceiveAttributes).map((t=>new i.Z(t,e.key,e.oldValue,e.newValue,e.baseVersion)));if(t.shouldReceiveAttributes){const o=Z(t,e.key,e.oldValue);o&&s.unshift(o)}return s}return e.range=e.range._getTransformedByInsertion(t.position,t.howMany,!1)[0],[e]})),m(i.Z,l.Z,((e,t)=>{const s=[];e.range.start.hasSameParentAs(t.deletionPosition)&&(e.range.containsPosition(t.deletionPosition)||e.range.start.isEqual(t.deletionPosition))&&s.push(u.Z._createFromPositionAndShift(t.graveyardPosition,1));const o=e.range._getTransformedByMergeOperation(t);return o.isCollapsed||s.push(o),s.map((t=>new i.Z(t,e.key,e.oldValue,e.newValue,e.baseVersion)))})),m(i.Z,a.Z,((e,t)=>function(e,t){const s=u.Z._createFromPositionAndShift(t.sourcePosition,t.howMany);let o=null,i=[];s.containsRange(e,!0)?o=e:e.start.hasSameParentAs(s.start)?(i=e.getDifference(s),o=e.getIntersection(s)):i=[e];const r=[];for(let e of i){e=e._getTransformedByDeletion(t.sourcePosition,t.howMany);const s=t.getMovedRangeStart(),o=e.start.hasSameParentAs(s),i=e._getTransformedByInsertion(s,t.howMany,o);r.push(...i)}o&&r.push(o._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany,!1)[0]);return r}(e.range,t).map((t=>new i.Z(t,e.key,e.oldValue,e.newValue,e.baseVersion))))),m(i.Z,d.Z,((e,t)=>{if(e.range.end.isEqual(t.insertionPosition))return t.graveyardPosition||e.range.end.offset++,[e];if(e.range.start.hasSameParentAs(t.splitPosition)&&e.range.containsPosition(t.splitPosition)){const s=e.clone();return s.range=new u.Z(t.moveTargetPosition.clone(),e.range.end._getCombined(t.splitPosition,t.moveTargetPosition)),e.range.end=t.splitPosition.clone(),e.range.end.stickiness="toPrevious",[e,s]}return e.range=e.range._getTransformedBySplitOperation(t),[e]})),m(o.Z,i.Z,((e,t)=>{const s=[e];if(e.shouldReceiveAttributes&&e.position.hasSameParentAs(t.range.start)&&t.range.containsPosition(e.position)){const o=Z(e,t.key,t.newValue);o&&s.push(o)}return s})),m(o.Z,o.Z,((e,t,s)=>(e.position.isEqual(t.position)&&s.aIsStrong||(e.position=e.position._getTransformedByInsertOperation(t)),[e]))),m(o.Z,a.Z,((e,t)=>(e.position=e.position._getTransformedByMoveOperation(t),[e]))),m(o.Z,d.Z,((e,t)=>(e.position=e.position._getTransformedBySplitOperation(t),[e]))),m(o.Z,l.Z,((e,t)=>(e.position=e.position._getTransformedByMergeOperation(t),[e]))),m(n.Z,o.Z,((e,t)=>(e.oldRange&&(e.oldRange=e.oldRange._getTransformedByInsertOperation(t)[0]),e.newRange&&(e.newRange=e.newRange._getTransformedByInsertOperation(t)[0]),[e]))),m(n.Z,n.Z,((e,t,s)=>{if(e.name==t.name){if(!s.aIsStrong)return[new h.Z(0)];e.oldRange=t.newRange?t.newRange.clone():null}return[e]})),m(n.Z,l.Z,((e,t)=>(e.oldRange&&(e.oldRange=e.oldRange._getTransformedByMergeOperation(t)),e.newRange&&(e.newRange=e.newRange._getTransformedByMergeOperation(t)),[e]))),m(n.Z,a.Z,((e,t,s)=>{if(e.oldRange&&(e.oldRange=u.Z._createFromRanges(e.oldRange._getTransformedByMoveOperation(t))),e.newRange){if(s.abRelation){const o=u.Z._createFromRanges(e.newRange._getTransformedByMoveOperation(t));if("left"==s.abRelation.side&&t.targetPosition.isEqual(e.newRange.start))return e.newRange.end=o.end,e.newRange.start.path=s.abRelation.path,[e];if("right"==s.abRelation.side&&t.targetPosition.isEqual(e.newRange.end))return e.newRange.start=o.start,e.newRange.end.path=s.abRelation.path,[e]}e.newRange=u.Z._createFromRanges(e.newRange._getTransformedByMoveOperation(t))}return[e]})),m(n.Z,d.Z,((e,t,s)=>{if(e.oldRange&&(e.oldRange=e.oldRange._getTransformedBySplitOperation(t)),e.newRange){if(s.abRelation){const o=e.newRange._getTransformedBySplitOperation(t);return e.newRange.start.isEqual(t.splitPosition)&&s.abRelation.wasStartBeforeMergedElement?e.newRange.start=p.ZP._createAt(t.insertionPosition):e.newRange.start.isEqual(t.splitPosition)&&!s.abRelation.wasInLeftElement&&(e.newRange.start=p.ZP._createAt(t.moveTargetPosition)),e.newRange.end.isEqual(t.splitPosition)&&s.abRelation.wasInRightElement?e.newRange.end=p.ZP._createAt(t.moveTargetPosition):e.newRange.end.isEqual(t.splitPosition)&&s.abRelation.wasEndBeforeMergedElement?e.newRange.end=p.ZP._createAt(t.insertionPosition):e.newRange.end=o.end,[e]}e.newRange=e.newRange._getTransformedBySplitOperation(t)}return[e]})),m(l.Z,o.Z,((e,t)=>(e.sourcePosition.hasSameParentAs(t.position)&&(e.howMany+=t.howMany),e.sourcePosition=e.sourcePosition._getTransformedByInsertOperation(t),e.targetPosition=e.targetPosition._getTransformedByInsertOperation(t),[e]))),m(l.Z,l.Z,((e,t,s)=>{if(e.sourcePosition.isEqual(t.sourcePosition)&&e.targetPosition.isEqual(t.targetPosition)){if(s.bWasUndone){const s=t.graveyardPosition.path.slice();return s.push(0),e.sourcePosition=new p.ZP(t.graveyardPosition.root,s),e.howMany=0,[e]}return[new h.Z(0)]}if(e.sourcePosition.isEqual(t.sourcePosition)&&!e.targetPosition.isEqual(t.targetPosition)&&!s.bWasUndone&&"splitAtSource"!=s.abRelation){const o="$graveyard"==e.targetPosition.root.rootName,i="$graveyard"==t.targetPosition.root.rootName,r=o&&!i;if(i&&!o||!r&&s.aIsStrong){const s=t.targetPosition._getTransformedByMergeOperation(t),o=e.targetPosition._getTransformedByMergeOperation(t);return[new a.Z(s,e.howMany,o,0)]}return[new h.Z(0)]}return e.sourcePosition.hasSameParentAs(t.targetPosition)&&(e.howMany+=t.howMany),e.sourcePosition=e.sourcePosition._getTransformedByMergeOperation(t),e.targetPosition=e.targetPosition._getTransformedByMergeOperation(t),e.graveyardPosition.isEqual(t.graveyardPosition)&&s.aIsStrong||(e.graveyardPosition=e.graveyardPosition._getTransformedByMergeOperation(t)),[e]})),m(l.Z,a.Z,((e,t,s)=>{const o=u.Z._createFromPositionAndShift(t.sourcePosition,t.howMany);return"remove"==t.type&&!s.bWasUndone&&!s.forceWeakRemove&&e.deletionPosition.hasSameParentAs(t.sourcePosition)&&o.containsPosition(e.sourcePosition)?[new h.Z(0)]:(e.sourcePosition.hasSameParentAs(t.targetPosition)&&(e.howMany+=t.howMany),e.sourcePosition.hasSameParentAs(t.sourcePosition)&&(e.howMany-=t.howMany),e.sourcePosition=e.sourcePosition._getTransformedByMoveOperation(t),e.targetPosition=e.targetPosition._getTransformedByMoveOperation(t),e.graveyardPosition.isEqual(t.targetPosition)||(e.graveyardPosition=e.graveyardPosition._getTransformedByMoveOperation(t)),[e])})),m(l.Z,d.Z,((e,t,s)=>{if(t.graveyardPosition&&(e.graveyardPosition=e.graveyardPosition._getTransformedByDeletion(t.graveyardPosition,1),e.deletionPosition.isEqual(t.graveyardPosition)&&(e.howMany=t.howMany)),e.targetPosition.isEqual(t.splitPosition)){const o=0!=t.howMany,i=t.graveyardPosition&&e.deletionPosition.isEqual(t.graveyardPosition);if(o||i||"mergeTargetNotMoved"==s.abRelation)return e.sourcePosition=e.sourcePosition._getTransformedBySplitOperation(t),[e]}if(e.sourcePosition.isEqual(t.splitPosition)){if("mergeSourceNotMoved"==s.abRelation)return e.howMany=0,e.targetPosition=e.targetPosition._getTransformedBySplitOperation(t),[e];if("mergeSameElement"==s.abRelation||e.sourcePosition.offset>0)return e.sourcePosition=t.moveTargetPosition.clone(),e.targetPosition=e.targetPosition._getTransformedBySplitOperation(t),[e]}return e.sourcePosition.hasSameParentAs(t.splitPosition)&&(e.howMany=t.splitPosition.offset),e.sourcePosition=e.sourcePosition._getTransformedBySplitOperation(t),e.targetPosition=e.targetPosition._getTransformedBySplitOperation(t),[e]})),m(a.Z,o.Z,((e,t)=>{const s=u.Z._createFromPositionAndShift(e.sourcePosition,e.howMany)._getTransformedByInsertOperation(t,!1)[0];return e.sourcePosition=s.start,e.howMany=s.end.offset-s.start.offset,e.targetPosition.isEqual(t.position)||(e.targetPosition=e.targetPosition._getTransformedByInsertOperation(t)),[e]})),m(a.Z,a.Z,((e,t,s)=>{const o=u.Z._createFromPositionAndShift(e.sourcePosition,e.howMany),i=u.Z._createFromPositionAndShift(t.sourcePosition,t.howMany);let r,n=s.aIsStrong,a=!s.aIsStrong;if("insertBefore"==s.abRelation||"insertAfter"==s.baRelation?a=!0:"insertAfter"!=s.abRelation&&"insertBefore"!=s.baRelation||(a=!1),r=e.targetPosition.isEqual(t.targetPosition)&&a?e.targetPosition._getTransformedByDeletion(t.sourcePosition,t.howMany):e.targetPosition._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany),P(e,t)&&P(t,e))return[t.getReversed()];if(o.containsPosition(t.targetPosition)&&o.containsRange(i,!0))return o.start=o.start._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany),o.end=o.end._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany),x([o],r);if(i.containsPosition(e.targetPosition)&&i.containsRange(o,!0))return o.start=o.start._getCombined(t.sourcePosition,t.getMovedRangeStart()),o.end=o.end._getCombined(t.sourcePosition,t.getMovedRangeStart()),x([o],r);const c=(0,g.Z)(e.sourcePosition.getParentPath(),t.sourcePosition.getParentPath());if("prefix"==c||"extension"==c)return o.start=o.start._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany),o.end=o.end._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany),x([o],r);"remove"!=e.type||"remove"==t.type||s.aWasUndone||s.forceWeakRemove?"remove"==e.type||"remove"!=t.type||s.bWasUndone||s.forceWeakRemove||(n=!1):n=!0;const l=[],d=o.getDifference(i);for(const e of d){e.start=e.start._getTransformedByDeletion(t.sourcePosition,t.howMany),e.end=e.end._getTransformedByDeletion(t.sourcePosition,t.howMany);const s="same"==(0,g.Z)(e.start.getParentPath(),t.getMovedRangeStart().getParentPath()),o=e._getTransformedByInsertion(t.getMovedRangeStart(),t.howMany,s);l.push(...o)}const p=o.getIntersection(i);return null!==p&&n&&(p.start=p.start._getCombined(t.sourcePosition,t.getMovedRangeStart()),p.end=p.end._getCombined(t.sourcePosition,t.getMovedRangeStart()),0===l.length?l.push(p):1==l.length?i.start.isBefore(o.start)||i.start.isEqual(o.start)?l.unshift(p):l.push(p):l.splice(1,0,p)),0===l.length?[new h.Z(e.baseVersion)]:x(l,r)})),m(a.Z,d.Z,((e,t,s)=>{let o=e.targetPosition.clone();e.targetPosition.isEqual(t.insertionPosition)&&t.graveyardPosition&&"moveTargetAfter"!=s.abRelation||(o=e.targetPosition._getTransformedBySplitOperation(t));const i=u.Z._createFromPositionAndShift(e.sourcePosition,e.howMany);if(i.end.isEqual(t.insertionPosition))return t.graveyardPosition||e.howMany++,e.targetPosition=o,[e];if(i.start.hasSameParentAs(t.splitPosition)&&i.containsPosition(t.splitPosition)){let e=new u.Z(t.splitPosition,i.end);e=e._getTransformedBySplitOperation(t);return x([new u.Z(i.start,t.splitPosition),e],o)}e.targetPosition.isEqual(t.splitPosition)&&"insertAtSource"==s.abRelation&&(o=t.moveTargetPosition),e.targetPosition.isEqual(t.insertionPosition)&&"insertBetween"==s.abRelation&&(o=e.targetPosition);const r=[i._getTransformedBySplitOperation(t)];if(t.graveyardPosition){const o=i.start.isEqual(t.graveyardPosition)||i.containsPosition(t.graveyardPosition);e.howMany>1&&o&&!s.aWasUndone&&r.push(u.Z._createFromPositionAndShift(t.insertionPosition,1))}return x(r,o)})),m(a.Z,l.Z,((e,t,s)=>{const o=u.Z._createFromPositionAndShift(e.sourcePosition,e.howMany);if(t.deletionPosition.hasSameParentAs(e.sourcePosition)&&o.containsPosition(t.sourcePosition))if("remove"!=e.type||s.forceWeakRemove){if(1==e.howMany)return s.bWasUndone?(e.sourcePosition=t.graveyardPosition.clone(),e.targetPosition=e.targetPosition._getTransformedByMergeOperation(t),[e]):[new h.Z(0)]}else if(!s.aWasUndone){const s=[];let o=t.graveyardPosition.clone(),i=t.targetPosition._getTransformedByMergeOperation(t);e.howMany>1&&(s.push(new a.Z(e.sourcePosition,e.howMany-1,e.targetPosition,0)),o=o._getTransformedByMove(e.sourcePosition,e.targetPosition,e.howMany-1),i=i._getTransformedByMove(e.sourcePosition,e.targetPosition,e.howMany-1));const r=t.deletionPosition._getCombined(e.sourcePosition,e.targetPosition),n=new a.Z(o,1,r,0),c=n.getMovedRangeStart().path.slice();c.push(0);const l=new p.ZP(n.targetPosition.root,c);i=i._getTransformedByMove(o,r,1);const d=new a.Z(i,t.howMany,l,0);return s.push(n),s.push(d),s}const i=u.Z._createFromPositionAndShift(e.sourcePosition,e.howMany)._getTransformedByMergeOperation(t);return e.sourcePosition=i.start,e.howMany=i.end.offset-i.start.offset,e.targetPosition=e.targetPosition._getTransformedByMergeOperation(t),[e]})),m(r.Z,o.Z,((e,t)=>(e.position=e.position._getTransformedByInsertOperation(t),[e]))),m(r.Z,l.Z,((e,t)=>e.position.isEqual(t.deletionPosition)?(e.position=t.graveyardPosition.clone(),e.position.stickiness="toNext",[e]):(e.position=e.position._getTransformedByMergeOperation(t),[e]))),m(r.Z,a.Z,((e,t)=>(e.position=e.position._getTransformedByMoveOperation(t),[e]))),m(r.Z,r.Z,((e,t,s)=>{if(e.position.isEqual(t.position)){if(!s.aIsStrong)return[new h.Z(0)];e.oldName=t.newName}return[e]})),m(r.Z,d.Z,((e,t)=>{const s=e.position.path,o=t.splitPosition.getParentPath();if("same"==(0,g.Z)(s,o)&&!t.graveyardPosition){const t=new r.Z(e.position.getShiftedBy(1),e.oldName,e.newName,0);return[e,t]}return e.position=e.position._getTransformedBySplitOperation(t),[e]})),m(c.Z,c.Z,((e,t,s)=>{if(e.root===t.root&&e.key===t.key){if(!s.aIsStrong||e.newValue===t.newValue)return[new h.Z(0)];e.oldValue=t.newValue}return[e]})),m(d.Z,o.Z,((e,t)=>(e.splitPosition.hasSameParentAs(t.position)&&e.splitPosition.offset<t.position.offset&&(e.howMany+=t.howMany),e.splitPosition=e.splitPosition._getTransformedByInsertOperation(t),e.insertionPosition=e.insertionPosition._getTransformedByInsertOperation(t),[e]))),m(d.Z,l.Z,((e,t,s)=>{if(!e.graveyardPosition&&!s.bWasUndone&&e.splitPosition.hasSameParentAs(t.sourcePosition)){const s=t.graveyardPosition.path.slice();s.push(0);const o=new p.ZP(t.graveyardPosition.root,s),i=d.Z.getInsertionPosition(new p.ZP(t.graveyardPosition.root,s)),r=new d.Z(o,0,i,null,0);return e.splitPosition=e.splitPosition._getTransformedByMergeOperation(t),e.insertionPosition=d.Z.getInsertionPosition(e.splitPosition),e.graveyardPosition=r.insertionPosition.clone(),e.graveyardPosition.stickiness="toNext",[r,e]}return e.splitPosition.hasSameParentAs(t.deletionPosition)&&!e.splitPosition.isAfter(t.deletionPosition)&&e.howMany--,e.splitPosition.hasSameParentAs(t.targetPosition)&&(e.howMany+=t.howMany),e.splitPosition=e.splitPosition._getTransformedByMergeOperation(t),e.insertionPosition=d.Z.getInsertionPosition(e.splitPosition),e.graveyardPosition&&(e.graveyardPosition=e.graveyardPosition._getTransformedByMergeOperation(t)),[e]})),m(d.Z,a.Z,((e,t,s)=>{const o=u.Z._createFromPositionAndShift(t.sourcePosition,t.howMany);if(e.graveyardPosition){const i=o.start.isEqual(e.graveyardPosition)||o.containsPosition(e.graveyardPosition);if(!s.bWasUndone&&i){const s=e.splitPosition._getTransformedByMoveOperation(t),o=e.graveyardPosition._getTransformedByMoveOperation(t),i=o.path.slice();i.push(0);const r=new p.ZP(o.root,i);return[new a.Z(s,e.howMany,r,0)]}e.graveyardPosition=e.graveyardPosition._getTransformedByMoveOperation(t)}const i=e.splitPosition.isEqual(t.targetPosition);if(i&&("insertAtSource"==s.baRelation||"splitBefore"==s.abRelation))return e.howMany+=t.howMany,e.splitPosition=e.splitPosition._getTransformedByDeletion(t.sourcePosition,t.howMany),e.insertionPosition=d.Z.getInsertionPosition(e.splitPosition),[e];if(i&&s.abRelation&&s.abRelation.howMany){const{howMany:t,offset:o}=s.abRelation;return e.howMany+=t,e.splitPosition=e.splitPosition.getShiftedBy(o),[e]}if(e.splitPosition.hasSameParentAs(t.sourcePosition)&&o.containsPosition(e.splitPosition)){const s=t.howMany-(e.splitPosition.offset-t.sourcePosition.offset);return e.howMany-=s,e.splitPosition.hasSameParentAs(t.targetPosition)&&e.splitPosition.offset<t.targetPosition.offset&&(e.howMany+=t.howMany),e.splitPosition=t.sourcePosition.clone(),e.insertionPosition=d.Z.getInsertionPosition(e.splitPosition),[e]}return t.sourcePosition.isEqual(t.targetPosition)||(e.splitPosition.hasSameParentAs(t.sourcePosition)&&e.splitPosition.offset<=t.sourcePosition.offset&&(e.howMany-=t.howMany),e.splitPosition.hasSameParentAs(t.targetPosition)&&e.splitPosition.offset<t.targetPosition.offset&&(e.howMany+=t.howMany)),e.splitPosition.stickiness="toNone",e.splitPosition=e.splitPosition._getTransformedByMoveOperation(t),e.splitPosition.stickiness="toNext",e.graveyardPosition?e.insertionPosition=e.insertionPosition._getTransformedByMoveOperation(t):e.insertionPosition=d.Z.getInsertionPosition(e.splitPosition),[e]})),m(d.Z,d.Z,((e,t,s)=>{if(e.splitPosition.isEqual(t.splitPosition)){if(!e.graveyardPosition&&!t.graveyardPosition)return[new h.Z(0)];if(e.graveyardPosition&&t.graveyardPosition&&e.graveyardPosition.isEqual(t.graveyardPosition))return[new h.Z(0)];if("splitBefore"==s.abRelation)return e.howMany=0,e.graveyardPosition=e.graveyardPosition._getTransformedBySplitOperation(t),[e]}if(e.graveyardPosition&&t.graveyardPosition&&e.graveyardPosition.isEqual(t.graveyardPosition)){const o="$graveyard"==e.splitPosition.root.rootName,i="$graveyard"==t.splitPosition.root.rootName,r=o&&!i;if(i&&!o||!r&&s.aIsStrong){const s=[];return t.howMany&&s.push(new a.Z(t.moveTargetPosition,t.howMany,t.splitPosition,0)),e.howMany&&s.push(new a.Z(e.splitPosition,e.howMany,e.moveTargetPosition,0)),s}return[new h.Z(0)]}if(e.graveyardPosition&&(e.graveyardPosition=e.graveyardPosition._getTransformedBySplitOperation(t)),e.splitPosition.isEqual(t.insertionPosition)&&"splitBefore"==s.abRelation)return e.howMany++,[e];if(t.splitPosition.isEqual(e.insertionPosition)&&"splitBefore"==s.baRelation){const s=t.insertionPosition.path.slice();s.push(0);const o=new p.ZP(t.insertionPosition.root,s);return[e,new a.Z(e.insertionPosition,1,o,0)]}return e.splitPosition.hasSameParentAs(t.splitPosition)&&e.splitPosition.offset<t.splitPosition.offset&&(e.howMany-=t.howMany),e.splitPosition=e.splitPosition._getTransformedBySplitOperation(t),e.insertionPosition=d.Z.getInsertionPosition(e.splitPosition),[e]}))},"./packages/ckeditor5-engine/src/model/operation/utils.ts":(e,t,s)=>{"use strict";s.d(t,{So:()=>p,X9:()=>d,XF:()=>h,fj:()=>l,pX:()=>u});var o=s("./packages/ckeditor5-engine/src/model/node.ts"),i=s("./packages/ckeditor5-engine/src/model/range.ts"),r=s("./packages/ckeditor5-engine/src/model/text.ts"),n=s("./packages/ckeditor5-engine/src/model/textproxy.ts"),a=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),c=s("./packages/ckeditor5-utils/src/isiterable.ts");function l(e,t){const s=p(t),o=s.reduce(((e,t)=>e+t.offsetSize),0),r=e.parent;f(e);const n=e.index;return r._insertChild(n,s),g(r,n+s.length),g(r,n),new i.Z(e,e.getShiftedBy(o))}function d(e){if(!e.isFlat)throw new a.ZP("operation-utils-remove-range-not-flat",this);const t=e.start.parent;f(e.start),f(e.end);const s=t._removeChildren(e.start.index,e.end.index-e.start.index);return g(t,e.start.index),s}function h(e,t){if(!e.isFlat)throw new a.ZP("operation-utils-move-range-not-flat",this);const s=d(e);return l(t=t._getTransformedByDeletion(e.start,e.end.offset-e.start.offset),s)}function u(e,t,s){f(e.start),f(e.end);for(const o of e.getItems({shallow:!0})){const e=o.is("$textProxy")?o.textNode:o;null!==s?e._setAttribute(t,s):e._removeAttribute(t),g(e.parent,e.index)}g(e.end.parent,e.end.index)}function p(e){const t=[];!function e(s){if("string"==typeof s)t.push(new r.Z(s));else if(s instanceof n.Z)t.push(new r.Z(s.data,s.getAttributes()));else if(s instanceof o.Z)t.push(s);else if((0,c.Z)(s))for(const t of s)e(t)}(e);for(let e=1;e<t.length;e++){const s=t[e],o=t[e-1];s instanceof r.Z&&o instanceof r.Z&&m(s,o)&&(t.splice(e-1,2,new r.Z(o.data+s.data,o.getAttributes())),e--)}return t}function g(e,t){const s=e.getChild(t-1),o=e.getChild(t);if(s&&o&&s.is("$text")&&o.is("$text")&&m(s,o)){const i=new r.Z(s.data+o.data,s.getAttributes());e._removeChildren(t-1,2),e._insertChild(t-1,i)}}function f(e){const t=e.textNode,s=e.parent;if(t){const o=e.offset-t.startOffset,i=t.index;s._removeChildren(i,1);const n=new r.Z(t.data.substr(0,o),t.getAttributes()),a=new r.Z(t.data.substr(o),t.getAttributes());s._insertChild(i,[n,a])}}function m(e,t){const s=e.getAttributes(),o=t.getAttributes();for(const e of s){if(e[1]!==t.getAttribute(e[0]))return!1;o.next()}return o.next().done}},"./packages/ckeditor5-engine/src/model/position.ts":(e,t,s)=>{"use strict";s.d(t,{Rt:()=>c,Ux:()=>l,YV:()=>d,ZP:()=>a});var o=s("./packages/ckeditor5-engine/src/model/typecheckable.ts"),i=s("./packages/ckeditor5-engine/src/model/treewalker.ts"),r=s("./packages/ckeditor5-utils/src/comparearrays.ts"),n=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");s("./packages/ckeditor5-utils/src/version.ts");class a extends o.Z{constructor(e,t,s="toNone"){if(super(),!e.is("element")&&!e.is("documentFragment"))throw new n.ZP("model-position-root-invalid",e);if(!(t instanceof Array)||0===t.length)throw new n.ZP("model-position-path-incorrect-format",e,{path:t});e.is("rootElement")?t=t.slice():(t=[...e.getPath(),...t],e=e.root),this.root=e,this.path=t,this.stickiness=s}get offset(){return this.path[this.path.length-1]}set offset(e){this.path[this.path.length-1]=e}get parent(){let e=this.root;for(let t=0;t<this.path.length-1;t++)if(e=e.getChild(e.offsetToIndex(this.path[t])),!e)throw new n.ZP("model-position-path-incorrect",this,{position:this});if(e.is("$text"))throw new n.ZP("model-position-path-incorrect",this,{position:this});return e}get index(){return this.parent.offsetToIndex(this.offset)}get textNode(){return c(this,this.parent)}get nodeAfter(){const e=this.parent;return l(this,e,c(this,e))}get nodeBefore(){const e=this.parent;return d(this,e,c(this,e))}get isAtStart(){return 0===this.offset}get isAtEnd(){return this.offset==this.parent.maxOffset}compareWith(e){if(this.root!=e.root)return"different";const t=(0,r.Z)(this.path,e.path);switch(t){case"same":return"same";case"prefix":return"before";case"extension":return"after";default:return this.path[t]<e.path[t]?"before":"after"}}getLastMatchingPosition(e,t={}){t.startPosition=this;const s=new i.Z(t);return s.skip(e),s.position}getParentPath(){return this.path.slice(0,-1)}getAncestors(){const e=this.parent;return e.is("documentFragment")?[e]:e.getAncestors({includeSelf:!0})}findAncestor(e){const t=this.parent;return t.is("element")?t.findAncestor(e,{includeSelf:!0}):null}getCommonPath(e){if(this.root!=e.root)return[];const t=(0,r.Z)(this.path,e.path),s="string"==typeof t?Math.min(this.path.length,e.path.length):t;return this.path.slice(0,s)}getCommonAncestor(e){const t=this.getAncestors(),s=e.getAncestors();let o=0;for(;t[o]==s[o]&&t[o];)o++;return 0===o?null:t[o-1]}getShiftedBy(e){const t=this.clone(),s=t.offset+e;return t.offset=s<0?0:s,t}isAfter(e){return"after"==this.compareWith(e)}isBefore(e){return"before"==this.compareWith(e)}isEqual(e){return"same"==this.compareWith(e)}isTouching(e){if(this.root!==e.root)return!1;const t=Math.min(this.path.length,e.path.length);for(let s=0;s<t;s++){const t=this.path[s]-e.path[s];if(t<-1||t>1)return!1;if(1===t)return h(e,this,s);if(-1===t)return h(this,e,s)}return this.path.length===e.path.length||(this.path.length>e.path.length?u(this.path,t):u(e.path,t))}hasSameParentAs(e){if(this.root!==e.root)return!1;const t=this.getParentPath(),s=e.getParentPath();return"same"==(0,r.Z)(t,s)}getTransformedByOperation(e){let t;switch(e.type){case"insert":t=this._getTransformedByInsertOperation(e);break;case"move":case"remove":case"reinsert":t=this._getTransformedByMoveOperation(e);break;case"split":t=this._getTransformedBySplitOperation(e);break;case"merge":t=this._getTransformedByMergeOperation(e);break;default:t=a._createAt(this)}return t}_getTransformedByInsertOperation(e){return this._getTransformedByInsertion(e.position,e.howMany)}_getTransformedByMoveOperation(e){return this._getTransformedByMove(e.sourcePosition,e.targetPosition,e.howMany)}_getTransformedBySplitOperation(e){const t=e.movedRange;return t.containsPosition(this)||t.start.isEqual(this)&&"toNext"==this.stickiness?this._getCombined(e.splitPosition,e.moveTargetPosition):e.graveyardPosition?this._getTransformedByMove(e.graveyardPosition,e.insertionPosition,1):this._getTransformedByInsertion(e.insertionPosition,1)}_getTransformedByMergeOperation(e){const t=e.movedRange;let s;return t.containsPosition(this)||t.start.isEqual(this)?(s=this._getCombined(e.sourcePosition,e.targetPosition),e.sourcePosition.isBefore(e.targetPosition)&&(s=s._getTransformedByDeletion(e.deletionPosition,1))):s=this.isEqual(e.deletionPosition)?a._createAt(e.deletionPosition):this._getTransformedByMove(e.deletionPosition,e.graveyardPosition,1),s}_getTransformedByDeletion(e,t){const s=a._createAt(this);if(this.root!=e.root)return s;if("same"==(0,r.Z)(e.getParentPath(),this.getParentPath())){if(e.offset<this.offset){if(e.offset+t>this.offset)return null;s.offset-=t}}else if("prefix"==(0,r.Z)(e.getParentPath(),this.getParentPath())){const o=e.path.length-1;if(e.offset<=this.path[o]){if(e.offset+t>this.path[o])return null;s.path[o]-=t}}return s}_getTransformedByInsertion(e,t){const s=a._createAt(this);if(this.root!=e.root)return s;if("same"==(0,r.Z)(e.getParentPath(),this.getParentPath()))(e.offset<this.offset||e.offset==this.offset&&"toPrevious"!=this.stickiness)&&(s.offset+=t);else if("prefix"==(0,r.Z)(e.getParentPath(),this.getParentPath())){const o=e.path.length-1;e.offset<=this.path[o]&&(s.path[o]+=t)}return s}_getTransformedByMove(e,t,s){if(t=t._getTransformedByDeletion(e,s),e.isEqual(t))return a._createAt(this);const o=this._getTransformedByDeletion(e,s);return null===o||e.isEqual(this)&&"toNext"==this.stickiness||e.getShiftedBy(s).isEqual(this)&&"toPrevious"==this.stickiness?this._getCombined(e,t):o._getTransformedByInsertion(t,s)}_getCombined(e,t){const s=e.path.length-1,o=a._createAt(t);return o.stickiness=this.stickiness,o.offset=o.offset+this.path[s]-e.offset,o.path=[...o.path,...this.path.slice(s+1)],o}toJSON(){return{root:this.root.toJSON(),path:Array.from(this.path),stickiness:this.stickiness}}clone(){return new this.constructor(this.root,this.path,this.stickiness)}static _createAt(e,t,s="toNone"){if(e instanceof a)return new a(e.root,e.path,e.stickiness);{const o=e;if("end"==t)t=o.maxOffset;else{if("before"==t)return this._createBefore(o,s);if("after"==t)return this._createAfter(o,s);if(0!==t&&!t)throw new n.ZP("model-createpositionat-offset-required",[this,e])}if(!o.is("element")&&!o.is("documentFragment"))throw new n.ZP("model-position-parent-incorrect",[this,e]);const i=o.getPath();return i.push(t),new this(o.root,i,s)}}static _createAfter(e,t){if(!e.parent)throw new n.ZP("model-position-after-root",[this,e],{root:e});return this._createAt(e.parent,e.endOffset,t)}static _createBefore(e,t){if(!e.parent)throw new n.ZP("model-position-before-root",e,{root:e});return this._createAt(e.parent,e.startOffset,t)}static fromJSON(e,t){if("$graveyard"===e.root){const s=new a(t.graveyard,e.path);return s.stickiness=e.stickiness,s}if(!t.getRoot(e.root))throw new n.ZP("model-position-fromjson-no-root",t,{rootName:e.root});return new a(t.getRoot(e.root),e.path,e.stickiness)}}function c(e,t){const s=t.getChild(t.offsetToIndex(e.offset));return s&&s.is("$text")&&s.startOffset<e.offset?s:null}function l(e,t,s){return null!==s?null:t.getChild(t.offsetToIndex(e.offset))}function d(e,t,s){return null!==s?null:t.getChild(t.offsetToIndex(e.offset)-1)}function h(e,t,s){return s+1!==e.path.length&&(!!u(t.path,s+1)&&!!function(e,t){let s=e.parent,o=e.path.length-1,i=0;for(;o>=t;){if(e.path[o]+i!==s.maxOffset)return!1;i=1,o--,s=s.parent}return!0}(e,s+1))}function u(e,t){for(;t<e.length;){if(0!==e[t])return!1;t++}return!0}a.prototype.is=function(e){return"position"===e||"model:position"===e}},"./packages/ckeditor5-engine/src/model/range.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>c});var o=s("./packages/ckeditor5-engine/src/model/typecheckable.ts"),i=s("./packages/ckeditor5-engine/src/model/position.ts"),r=s("./packages/ckeditor5-engine/src/model/treewalker.ts"),n=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),a=s("./packages/ckeditor5-utils/src/comparearrays.ts");class c extends o.Z{constructor(e,t){super(),this.start=i.ZP._createAt(e),this.end=t?i.ZP._createAt(t):i.ZP._createAt(e),this.start.stickiness=this.isCollapsed?"toNone":"toNext",this.end.stickiness=this.isCollapsed?"toNone":"toPrevious"}*[Symbol.iterator](){yield*new r.Z({boundaries:this,ignoreElementEnd:!0})}get isCollapsed(){return this.start.isEqual(this.end)}get isFlat(){const e=this.start.getParentPath(),t=this.end.getParentPath();return"same"==(0,a.Z)(e,t)}get root(){return this.start.root}containsPosition(e){return e.isAfter(this.start)&&e.isBefore(this.end)}containsRange(e,t=!1){e.isCollapsed&&(t=!1);const s=this.containsPosition(e.start)||t&&this.start.isEqual(e.start),o=this.containsPosition(e.end)||t&&this.end.isEqual(e.end);return s&&o}containsItem(e){const t=i.ZP._createBefore(e);return this.containsPosition(t)||this.start.isEqual(t)}isEqual(e){return this.start.isEqual(e.start)&&this.end.isEqual(e.end)}isIntersecting(e){return this.start.isBefore(e.end)&&this.end.isAfter(e.start)}getDifference(e){const t=[];return this.isIntersecting(e)?(this.containsPosition(e.start)&&t.push(new c(this.start,e.start)),this.containsPosition(e.end)&&t.push(new c(e.end,this.end))):t.push(new c(this.start,this.end)),t}getIntersection(e){if(this.isIntersecting(e)){let t=this.start,s=this.end;return this.containsPosition(e.start)&&(t=e.start),this.containsPosition(e.end)&&(s=e.end),new c(t,s)}return null}getJoined(e,t=!1){let s=this.isIntersecting(e);if(s||(s=this.start.isBefore(e.start)?t?this.end.isTouching(e.start):this.end.isEqual(e.start):t?e.end.isTouching(this.start):e.end.isEqual(this.start)),!s)return null;let o=this.start,i=this.end;return e.start.isBefore(o)&&(o=e.start),e.end.isAfter(i)&&(i=e.end),new c(o,i)}getMinimalFlatRanges(){const e=[],t=this.start.getCommonPath(this.end).length,s=i.ZP._createAt(this.start);let o=s.parent;for(;s.path.length>t+1;){const t=o.maxOffset-s.offset;0!==t&&e.push(new c(s,s.getShiftedBy(t))),s.path=s.path.slice(0,-1),s.offset++,o=o.parent}for(;s.path.length<=this.end.path.length;){const t=this.end.path[s.path.length-1],o=t-s.offset;0!==o&&e.push(new c(s,s.getShiftedBy(o))),s.offset=t,s.path.push(0)}return e}getWalker(e={}){return e.boundaries=this,new r.Z(e)}*getItems(e={}){e.boundaries=this,e.ignoreElementEnd=!0;const t=new r.Z(e);for(const e of t)yield e.item}*getPositions(e={}){e.boundaries=this;const t=new r.Z(e);yield t.position;for(const e of t)yield e.nextPosition}getTransformedByOperation(e){switch(e.type){case"insert":return this._getTransformedByInsertOperation(e);case"move":case"remove":case"reinsert":return this._getTransformedByMoveOperation(e);case"split":return[this._getTransformedBySplitOperation(e)];case"merge":return[this._getTransformedByMergeOperation(e)]}return[new c(this.start,this.end)]}getTransformedByOperations(e){const t=[new c(this.start,this.end)];for(const s of e)for(let e=0;e<t.length;e++){const o=t[e].getTransformedByOperation(s);t.splice(e,1,...o),e+=o.length-1}for(let e=0;e<t.length;e++){const s=t[e];for(let o=e+1;o<t.length;o++){const e=t[o];(s.containsRange(e)||e.containsRange(s)||s.isEqual(e))&&t.splice(o,1)}}return t}getCommonAncestor(){return this.start.getCommonAncestor(this.end)}getContainedElement(){if(this.isCollapsed)return null;const e=this.start.nodeAfter,t=this.end.nodeBefore;return e&&e.is("element")&&e===t?e:null}toJSON(){return{start:this.start.toJSON(),end:this.end.toJSON()}}clone(){return new this.constructor(this.start,this.end)}_getTransformedByInsertOperation(e,t=!1){return this._getTransformedByInsertion(e.position,e.howMany,t)}_getTransformedByMoveOperation(e,t=!1){const s=e.sourcePosition,o=e.howMany,i=e.targetPosition;return this._getTransformedByMove(s,i,o,t)}_getTransformedBySplitOperation(e){const t=this.start._getTransformedBySplitOperation(e);let s=this.end._getTransformedBySplitOperation(e);return this.end.isEqual(e.insertionPosition)&&(s=this.end.getShiftedBy(1)),t.root!=s.root&&(s=this.end.getShiftedBy(-1)),new c(t,s)}_getTransformedByMergeOperation(e){if(this.start.isEqual(e.targetPosition)&&this.end.isEqual(e.deletionPosition))return new c(this.start);let t=this.start._getTransformedByMergeOperation(e),s=this.end._getTransformedByMergeOperation(e);return t.root!=s.root&&(s=this.end.getShiftedBy(-1)),t.isAfter(s)?(e.sourcePosition.isBefore(e.targetPosition)?(t=i.ZP._createAt(s),t.offset=0):(e.deletionPosition.isEqual(t)||(s=e.deletionPosition),t=e.targetPosition),new c(t,s)):new c(t,s)}_getTransformedByInsertion(e,t,s=!1){if(s&&this.containsPosition(e))return[new c(this.start,e),new c(e.getShiftedBy(t),this.end._getTransformedByInsertion(e,t))];{const s=new c(this.start,this.end);return s.start=s.start._getTransformedByInsertion(e,t),s.end=s.end._getTransformedByInsertion(e,t),[s]}}_getTransformedByMove(e,t,s,o=!1){if(this.isCollapsed){const o=this.start._getTransformedByMove(e,t,s);return[new c(o)]}const i=c._createFromPositionAndShift(e,s),r=t._getTransformedByDeletion(e,s);if(this.containsPosition(t)&&!o&&(i.containsPosition(this.start)||i.containsPosition(this.end))){const o=this.start._getTransformedByMove(e,t,s),i=this.end._getTransformedByMove(e,t,s);return[new c(o,i)]}let n;const a=this.getDifference(i);let l=null;const d=this.getIntersection(i);if(1==a.length?l=new c(a[0].start._getTransformedByDeletion(e,s),a[0].end._getTransformedByDeletion(e,s)):2==a.length&&(l=new c(this.start,this.end._getTransformedByDeletion(e,s))),n=l?l._getTransformedByInsertion(r,s,null!==d||o):[],d){const e=new c(d.start._getCombined(i.start,r),d.end._getCombined(i.start,r));2==n.length?n.splice(1,0,e):n.push(e)}return n}_getTransformedByDeletion(e,t){let s=this.start._getTransformedByDeletion(e,t),o=this.end._getTransformedByDeletion(e,t);return null==s&&null==o?null:(null==s&&(s=e),null==o&&(o=e),new c(s,o))}static _createFromPositionAndShift(e,t){const s=e,o=e.getShiftedBy(t);return t>0?new this(s,o):new this(o,s)}static _createIn(e){return new this(i.ZP._createAt(e,0),i.ZP._createAt(e,e.maxOffset))}static _createOn(e){return this._createFromPositionAndShift(i.ZP._createBefore(e),e.offsetSize)}static _createFromRanges(e){if(0===e.length)throw new n.ZP("range-create-from-ranges-empty-array",null);if(1==e.length)return e[0].clone();const t=e[0];e.sort(((e,t)=>e.start.isAfter(t.start)?1:-1));const s=e.indexOf(t),o=new this(t.start,t.end);if(s>0)for(let t=s-1;e[t].end.isEqual(o.start);t++)o.start=i.ZP._createAt(e[t].start);for(let t=s+1;t<e.length&&e[t].start.isEqual(o.end);t++)o.end=i.ZP._createAt(e[t].end);return o}static fromJSON(e,t){return new this(i.ZP.fromJSON(e.start,t),i.ZP.fromJSON(e.end,t))}}c.prototype.is=function(e){return"range"===e||"model:range"===e}},"./packages/ckeditor5-engine/src/model/schema.ts":(e,t,s)=>{"use strict";s.d(t,{G:()=>h,Z:()=>d});var o=s("./packages/ckeditor5-engine/src/model/element.ts"),i=s("./packages/ckeditor5-engine/src/model/position.ts"),r=s("./packages/ckeditor5-engine/src/model/range.ts"),n=s("./packages/ckeditor5-engine/src/model/text.ts"),a=s("./packages/ckeditor5-engine/src/model/treewalker.ts"),c=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),l=s("./packages/ckeditor5-utils/src/observablemixin.ts");class d extends l.y{constructor(){super(),this._sourceDefinitions={},this._attributeProperties={},this.decorate("checkChild"),this.decorate("checkAttribute"),this.on("checkAttribute",((e,t)=>{t[0]=new h(t[0])}),{priority:"highest"}),this.on("checkChild",((e,t)=>{t[0]=new h(t[0]),t[1]=this.getDefinition(t[1])}),{priority:"highest"})}register(e,t){if(this._sourceDefinitions[e])throw new c.ZP("schema-cannot-register-item-twice",this,{itemName:e});this._sourceDefinitions[e]=[Object.assign({},t)],this._clearCache()}extend(e,t){if(!this._sourceDefinitions[e])throw new c.ZP("schema-cannot-extend-missing-item",this,{itemName:e});this._sourceDefinitions[e].push(Object.assign({},t)),this._clearCache()}getDefinitions(){return this._compiledDefinitions||this._compile(),this._compiledDefinitions}getDefinition(e){let t;return t="string"==typeof e?e:"is"in e&&(e.is("$text")||e.is("$textProxy"))?"$text":e.name,this.getDefinitions()[t]}isRegistered(e){return!!this.getDefinition(e)}isBlock(e){const t=this.getDefinition(e);return!(!t||!t.isBlock)}isLimit(e){const t=this.getDefinition(e);return!!t&&!(!t.isLimit&&!t.isObject)}isObject(e){const t=this.getDefinition(e);return!!t&&!!(t.isObject||t.isLimit&&t.isSelectable&&t.isContent)}isInline(e){const t=this.getDefinition(e);return!(!t||!t.isInline)}isSelectable(e){const t=this.getDefinition(e);return!!t&&!(!t.isSelectable&&!t.isObject)}isContent(e){const t=this.getDefinition(e);return!!t&&!(!t.isContent&&!t.isObject)}checkChild(e,t){return!!t&&this._checkContextMatch(t,e)}checkAttribute(e,t){const s=this.getDefinition(e.last);return!!s&&s.allowAttributes.includes(t)}checkMerge(e,t){if(e instanceof i.ZP){const t=e.nodeBefore,s=e.nodeAfter;if(!(t instanceof o.Z))throw new c.ZP("schema-check-merge-no-element-before",this);if(!(s instanceof o.Z))throw new c.ZP("schema-check-merge-no-element-after",this);return this.checkMerge(t,s)}for(const s of t.getChildren())if(!this.checkChild(e,s))return!1;return!0}addChildCheck(e){this.on("checkChild",((t,[s,o])=>{if(!o)return;const i=e(s,o);"boolean"==typeof i&&(t.stop(),t.return=i)}),{priority:"high"})}addAttributeCheck(e){this.on("checkAttribute",((t,[s,o])=>{const i=e(s,o);"boolean"==typeof i&&(t.stop(),t.return=i)}),{priority:"high"})}setAttributeProperties(e,t){this._attributeProperties[e]=Object.assign(this.getAttributeProperties(e),t)}getAttributeProperties(e){return this._attributeProperties[e]||{}}getLimitElement(e){let t;if(e instanceof i.ZP)t=e.parent;else{t=(e instanceof r.Z?[e]:Array.from(e.getRanges())).reduce(((e,t)=>{const s=t.getCommonAncestor();return e?e.getCommonAncestor(s,{includeSelf:!0}):s}),null)}for(;!this.isLimit(t)&&t.parent;)t=t.parent;return t}checkAttributeInSelection(e,t){if(e.isCollapsed){const s=[...e.getFirstPosition().getAncestors(),new n.Z("",e.getAttributes())];return this.checkAttribute(s,t)}{const s=e.getRanges();for(const e of s)for(const s of e)if(this.checkAttribute(s.item,t))return!0}return!1}*getValidRanges(e,t){e=function*(e){for(const t of e)yield*t.getMinimalFlatRanges()}(e);for(const s of e)yield*this._getValidRangesForRange(s,t)}getNearestSelectionRange(e,t="both"){if(this.checkChild(e,"$text"))return new r.Z(e);let s,o;const i=e.getAncestors().reverse().find((e=>this.isLimit(e)))||e.root;"both"!=t&&"backward"!=t||(s=new a.Z({boundaries:r.Z._createIn(i),startPosition:e,direction:"backward"})),"both"!=t&&"forward"!=t||(o=new a.Z({boundaries:r.Z._createIn(i),startPosition:e}));for(const e of function*(e,t){let s=!1;for(;!s;){if(s=!0,e){const t=e.next();t.done||(s=!1,yield{walker:e,value:t.value})}if(t){const e=t.next();e.done||(s=!1,yield{walker:t,value:e.value})}}}(s,o)){const t=e.walker==s?"elementEnd":"elementStart",o=e.value;if(o.type==t&&this.isObject(o.item))return r.Z._createOn(o.item);if(this.checkChild(o.nextPosition,"$text"))return new r.Z(o.nextPosition)}return null}findAllowedParent(e,t){let s=e.parent;for(;s;){if(this.checkChild(s,t))return s;if(this.isLimit(s))return null;s=s.parent}return null}setAllowedAttributes(e,t,s){const o=s.model;for(const[i,r]of Object.entries(t))o.schema.checkAttribute(e,i)&&s.setAttribute(i,r,e)}removeDisallowedAttributes(e,t){for(const s of e)if(s.is("$text"))P(this,s,t);else{const e=r.Z._createIn(s).getPositions();for(const s of e){P(this,s.nodeBefore||s.parent,t)}}}getAttributesWithProperty(e,t,s){const o={};for(const[i,r]of e.getAttributes()){const e=this.getAttributeProperties(i);void 0!==e[t]&&(void 0!==s&&s!==e[t]||(o[i]=r))}return o}createContext(e){return new h(e)}_clearCache(){this._compiledDefinitions=null}_compile(){const e={},t=this._sourceDefinitions,s=Object.keys(t);for(const o of s)e[o]=u(t[o],o);for(const t of s)p(e,t);for(const t of s)g(e,t);for(const t of s)f(e,t);for(const t of s)m(e,t),k(e,t);for(const t of s)b(e,t),_(e,t),w(e,t);this._compiledDefinitions=e}_checkContextMatch(e,t,s=t.length-1){const o=t.getItem(s);if(e.allowIn.includes(o.name)){if(0==s)return!0;{const e=this.getDefinition(o);return this._checkContextMatch(e,t,s-1)}}return!1}*_getValidRangesForRange(e,t){let s=e.start,o=e.start;for(const n of e.getItems({shallow:!0}))n.is("element")&&(yield*this._getValidRangesForRange(r.Z._createIn(n),t)),this.checkAttribute(n,t)||(s.isEqual(o)||(yield new r.Z(s,o)),s=i.ZP._createAfter(n)),o=i.ZP._createAfter(n);s.isEqual(o)||(yield new r.Z(s,o))}}class h{constructor(e){if(e instanceof h)return e;let t;t="string"==typeof e?[e]:Array.isArray(e)?e:e.getAncestors({includeSelf:!0}),this._items=t.map(Z)}get length(){return this._items.length}get last(){return this._items[this._items.length-1]}[Symbol.iterator](){return this._items[Symbol.iterator]()}push(e){const t=new h([e]);return t._items=[...this._items,...t._items],t}getItem(e){return this._items[e]}*getNames(){yield*this._items.map((e=>e.name))}endsWith(e){return Array.from(this.getNames()).join(" ").endsWith(e)}startsWith(e){return Array.from(this.getNames()).join(" ").startsWith(e)}}function u(e,t){const s={name:t,allowIn:[],allowContentOf:[],allowWhere:[],allowAttributes:[],allowAttributesOf:[],allowChildren:[],inheritTypesFrom:[]};return function(e,t){for(const s of e){const e=Object.keys(s).filter((e=>e.startsWith("is")));for(const o of e)t[o]=!!s[o]}}(e,s),v(e,s,"allowIn"),v(e,s,"allowContentOf"),v(e,s,"allowWhere"),v(e,s,"allowAttributes"),v(e,s,"allowAttributesOf"),v(e,s,"allowChildren"),v(e,s,"inheritTypesFrom"),function(e,t){for(const s of e){const e=s.inheritAllFrom;e&&(t.allowContentOf.push(e),t.allowWhere.push(e),t.allowAttributesOf.push(e),t.inheritTypesFrom.push(e))}}(e,s),s}function p(e,t){const s=e[t];for(const o of s.allowChildren){const s=e[o];s&&s.allowIn.push(t)}s.allowChildren.length=0}function g(e,t){for(const s of e[t].allowContentOf)if(e[s]){y(e,s).forEach((e=>{e.allowIn.push(t)}))}delete e[t].allowContentOf}function f(e,t){for(const s of e[t].allowWhere){const o=e[s];if(o){const s=o.allowIn;e[t].allowIn.push(...s)}}delete e[t].allowWhere}function m(e,t){for(const s of e[t].allowAttributesOf){const o=e[s];if(o){const s=o.allowAttributes;e[t].allowAttributes.push(...s)}}delete e[t].allowAttributesOf}function k(e,t){const s=e[t];for(const t of s.inheritTypesFrom){const o=e[t];if(o){const e=Object.keys(o).filter((e=>e.startsWith("is")));for(const t of e)t in s||(s[t]=o[t])}}delete s.inheritTypesFrom}function b(e,t){const s=e[t],o=s.allowIn.filter((t=>e[t]));s.allowIn=Array.from(new Set(o))}function _(e,t){const s=e[t];for(const o of s.allowIn){e[o].allowChildren.push(t)}}function w(e,t){const s=e[t];s.allowAttributes=Array.from(new Set(s.allowAttributes))}function v(e,t,s){for(const o of e){const e=o[s];"string"==typeof e?t[s].push(e):Array.isArray(e)&&t[s].push(...e)}}function y(e,t){const s=e[t];return(o=e,Object.keys(o).map((e=>o[e]))).filter((e=>e.allowIn.includes(s.name)));var o}function Z(e){return"string"==typeof e||e.is("documentFragment")?{name:"string"==typeof e?e:"$documentFragment",*getAttributeKeys(){},getAttribute(){}}:{name:e.is("element")?e.name:"$text",*getAttributeKeys(){yield*e.getAttributeKeys()},getAttribute:t=>e.getAttribute(t)}}function P(e,t,s){for(const o of t.getAttributeKeys())e.checkAttribute(t,o)||s.removeAttribute(o,t)}},"./packages/ckeditor5-engine/src/model/selection.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>d});var o=s("./packages/ckeditor5-engine/src/model/typecheckable.ts"),i=s("./packages/ckeditor5-engine/src/model/node.ts"),r=s("./packages/ckeditor5-engine/src/model/position.ts"),n=s("./packages/ckeditor5-engine/src/model/range.ts"),a=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),c=s("./packages/ckeditor5-utils/src/emittermixin.ts"),l=s("./packages/ckeditor5-utils/src/isiterable.ts");class d extends((0,c.ZP)(o.Z)){constructor(...e){super(),this._lastRangeBackward=!1,this._ranges=[],this._attrs=new Map,e.length&&this.setTo(...e)}get anchor(){if(this._ranges.length>0){const e=this._ranges[this._ranges.length-1];return this._lastRangeBackward?e.end:e.start}return null}get focus(){if(this._ranges.length>0){const e=this._ranges[this._ranges.length-1];return this._lastRangeBackward?e.start:e.end}return null}get isCollapsed(){return 1===this._ranges.length&&this._ranges[0].isCollapsed}get rangeCount(){return this._ranges.length}get isBackward(){return!this.isCollapsed&&this._lastRangeBackward}isEqual(e){if(this.rangeCount!=e.rangeCount)return!1;if(0===this.rangeCount)return!0;if(!this.anchor.isEqual(e.anchor)||!this.focus.isEqual(e.focus))return!1;for(const t of this._ranges){let s=!1;for(const o of e._ranges)if(t.isEqual(o)){s=!0;break}if(!s)return!1}return!0}*getRanges(){for(const e of this._ranges)yield new n.Z(e.start,e.end)}getFirstRange(){let e=null;for(const t of this._ranges)e&&!t.start.isBefore(e.start)||(e=t);return e?new n.Z(e.start,e.end):null}getLastRange(){let e=null;for(const t of this._ranges)e&&!t.end.isAfter(e.end)||(e=t);return e?new n.Z(e.start,e.end):null}getFirstPosition(){const e=this.getFirstRange();return e?e.start.clone():null}getLastPosition(){const e=this.getLastRange();return e?e.end.clone():null}setTo(...e){let[t,s,o]=e;if("object"==typeof s&&(o=s,s=void 0),null===t)this._setRanges([]);else if(t instanceof d)this._setRanges(t.getRanges(),t.isBackward);else if(t&&"function"==typeof t.getRanges)this._setRanges(t.getRanges(),t.isBackward);else if(t instanceof n.Z)this._setRanges([t],!!o&&!!o.backward);else if(t instanceof r.ZP)this._setRanges([new n.Z(t)]);else if(t instanceof i.Z){const e=!!o&&!!o.backward;let i;if("in"==s)i=n.Z._createIn(t);else if("on"==s)i=n.Z._createOn(t);else{if(void 0===s)throw new a.ZP("model-selection-setto-required-second-parameter",[this,t]);i=new n.Z(r.ZP._createAt(t,s))}this._setRanges([i],e)}else{if(!(0,l.Z)(t))throw new a.ZP("model-selection-setto-not-selectable",[this,t]);this._setRanges(t,o&&!!o.backward)}}_setRanges(e,t=!1){const s=Array.from(e),o=s.some((t=>{if(!(t instanceof n.Z))throw new a.ZP("model-selection-set-ranges-not-range",[this,e]);return this._ranges.every((e=>!e.isEqual(t)))}));(s.length!==this._ranges.length||o)&&(this._replaceAllRanges(s),this._lastRangeBackward=!!t,this.fire("change:range",{directChange:!0}))}setFocus(e,t){if(null===this.anchor)throw new a.ZP("model-selection-setfocus-no-ranges",[this,e]);const s=r.ZP._createAt(e,t);if("same"==s.compareWith(this.focus))return;const o=this.anchor;this._ranges.length&&this._popRange(),"before"==s.compareWith(o)?(this._pushRange(new n.Z(s,o)),this._lastRangeBackward=!0):(this._pushRange(new n.Z(o,s)),this._lastRangeBackward=!1),this.fire("change:range",{directChange:!0})}getAttribute(e){return this._attrs.get(e)}getAttributes(){return this._attrs.entries()}getAttributeKeys(){return this._attrs.keys()}hasAttribute(e){return this._attrs.has(e)}removeAttribute(e){this.hasAttribute(e)&&(this._attrs.delete(e),this.fire("change:attribute",{attributeKeys:[e],directChange:!0}))}setAttribute(e,t){this.getAttribute(e)!==t&&(this._attrs.set(e,t),this.fire("change:attribute",{attributeKeys:[e],directChange:!0}))}getSelectedElement(){return 1!==this.rangeCount?null:this.getFirstRange().getContainedElement()}*getSelectedBlocks(){const e=new WeakSet;for(const t of this.getRanges()){const s=p(t.start,e);s&&g(s,t)&&(yield s);for(const s of t.getWalker()){const o=s.item;"elementEnd"==s.type&&u(o,e,t)&&(yield o)}const o=p(t.end,e);o&&!t.end.isTouching(r.ZP._createAt(o,0))&&g(o,t)&&(yield o)}}containsEntireContent(e=this.anchor.root){const t=r.ZP._createAt(e,0),s=r.ZP._createAt(e,"end");return t.isTouching(this.getFirstPosition())&&s.isTouching(this.getLastPosition())}_pushRange(e){this._checkRange(e),this._ranges.push(new n.Z(e.start,e.end))}_checkRange(e){for(let t=0;t<this._ranges.length;t++)if(e.isIntersecting(this._ranges[t]))throw new a.ZP("model-selection-range-intersects",[this,e],{addedRange:e,intersectingRange:this._ranges[t]})}_replaceAllRanges(e){this._removeAllRanges();for(const t of e)this._pushRange(t)}_removeAllRanges(){for(;this._ranges.length>0;)this._popRange()}_popRange(){this._ranges.pop()}}function h(e,t){return!t.has(e)&&(t.add(e),e.root.document.model.schema.isBlock(e)&&e.parent)}function u(e,t,s){return h(e,t)&&g(e,s)}function p(e,t){const s=e.parent.root.document.model.schema,o=e.parent.getAncestors({parentFirst:!0,includeSelf:!0});let i=!1;const r=o.find((e=>!i&&(i=s.isLimit(e),!i&&h(e,t))));return o.forEach((e=>t.add(e))),r}function g(e,t){const s=function(e){const t=e.root.document.model.schema;let s=e.parent;for(;s;){if(t.isBlock(s))return s;s=s.parent}}(e);if(!s)return!0;return!t.containsRange(n.Z._createOn(s),!0)}d.prototype.is=function(e){return"selection"===e||"model:selection"===e}},"./packages/ckeditor5-engine/src/model/text.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./packages/ckeditor5-engine/src/model/node.ts");class i extends o.Z{constructor(e,t){super(t),this._data=e||""}get offsetSize(){return this.data.length}get data(){return this._data}toJSON(){const e=super.toJSON();return e.data=this.data,e}_clone(){return new i(this.data,this.getAttributes())}static fromJSON(e){return new i(e.data,e.attributes)}}i.prototype.is=function(e){return"$text"===e||"model:$text"===e||"text"===e||"model:text"===e||"node"===e||"model:node"===e}},"./packages/ckeditor5-engine/src/model/textproxy.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./packages/ckeditor5-engine/src/model/typecheckable.ts"),i=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class r extends o.Z{constructor(e,t,s){if(super(),this.textNode=e,t<0||t>e.offsetSize)throw new i.ZP("model-textproxy-wrong-offsetintext",this);if(s<0||t+s>e.offsetSize)throw new i.ZP("model-textproxy-wrong-length",this);this.data=e.data.substring(t,t+s),this.offsetInText=t}get startOffset(){return null!==this.textNode.startOffset?this.textNode.startOffset+this.offsetInText:null}get offsetSize(){return this.data.length}get endOffset(){return null!==this.startOffset?this.startOffset+this.offsetSize:null}get isPartial(){return this.offsetSize!==this.textNode.offsetSize}get parent(){return this.textNode.parent}get root(){return this.textNode.root}getPath(){const e=this.textNode.getPath();return e.length>0&&(e[e.length-1]+=this.offsetInText),e}getAncestors(e={}){const t=[];let s=e.includeSelf?this:this.parent;for(;s;)t[e.parentFirst?"push":"unshift"](s),s=s.parent;return t}hasAttribute(e){return this.textNode.hasAttribute(e)}getAttribute(e){return this.textNode.getAttribute(e)}getAttributes(){return this.textNode.getAttributes()}getAttributeKeys(){return this.textNode.getAttributeKeys()}}r.prototype.is=function(e){return"$textProxy"===e||"model:$textProxy"===e||"textProxy"===e||"model:textProxy"===e}},"./packages/ckeditor5-engine/src/model/treewalker.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>c});var o=s("./packages/ckeditor5-engine/src/model/element.ts"),i=s("./packages/ckeditor5-engine/src/model/position.ts"),r=s("./packages/ckeditor5-engine/src/model/text.ts"),n=s("./packages/ckeditor5-engine/src/model/textproxy.ts"),a=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class c{constructor(e={}){if(!e.boundaries&&!e.startPosition)throw new a.ZP("model-tree-walker-no-start-position",null);const t=e.direction||"forward";if("forward"!=t&&"backward"!=t)throw new a.ZP("model-tree-walker-unknown-direction",e,{direction:t});this.direction=t,this.boundaries=e.boundaries||null,e.startPosition?this.position=e.startPosition.clone():this.position=i.ZP._createAt(this.boundaries["backward"==this.direction?"end":"start"]),this.position.stickiness="toNone",this.singleCharacters=!!e.singleCharacters,this.shallow=!!e.shallow,this.ignoreElementEnd=!!e.ignoreElementEnd,this._boundaryStartParent=this.boundaries?this.boundaries.start.parent:null,this._boundaryEndParent=this.boundaries?this.boundaries.end.parent:null,this._visitedParent=this.position.parent}[Symbol.iterator](){return this}skip(e){let t,s,o,i;do{o=this.position,i=this._visitedParent,({done:t,value:s}=this.next())}while(!t&&e(s));t||(this.position=o,this._visitedParent=i)}next(){return"forward"==this.direction?this._next():this._previous()}_next(){const e=this.position,t=this.position.clone(),s=this._visitedParent;if(null===s.parent&&t.offset===s.maxOffset)return{done:!0,value:void 0};if(s===this._boundaryEndParent&&t.offset==this.boundaries.end.offset)return{done:!0,value:void 0};const a=(0,i.Rt)(t,s),c=a||(0,i.Ux)(t,s,a);if(c instanceof o.Z)return this.shallow?t.offset++:(t.path.push(0),this._visitedParent=c),this.position=t,l("elementStart",c,e,t,1);if(c instanceof r.Z){let o;if(this.singleCharacters)o=1;else{let e=c.endOffset;this._boundaryEndParent==s&&this.boundaries.end.offset<e&&(e=this.boundaries.end.offset),o=e-t.offset}const i=t.offset-c.startOffset,r=new n.Z(c,i,o);return t.offset+=o,this.position=t,l("text",r,e,t,o)}return t.path.pop(),t.offset++,this.position=t,this._visitedParent=s.parent,this.ignoreElementEnd?this._next():l("elementEnd",s,e,t)}_previous(){const e=this.position,t=this.position.clone(),s=this._visitedParent;if(null===s.parent&&0===t.offset)return{done:!0,value:void 0};if(s==this._boundaryStartParent&&t.offset==this.boundaries.start.offset)return{done:!0,value:void 0};const a=t.parent,c=(0,i.Rt)(t,a),d=c||(0,i.YV)(t,a,c);if(d instanceof o.Z)return t.offset--,this.shallow?(this.position=t,l("elementStart",d,e,t,1)):(t.path.push(d.maxOffset),this.position=t,this._visitedParent=d,this.ignoreElementEnd?this._previous():l("elementEnd",d,e,t));if(d instanceof r.Z){let o;if(this.singleCharacters)o=1;else{let e=d.startOffset;this._boundaryStartParent==s&&this.boundaries.start.offset>e&&(e=this.boundaries.start.offset),o=t.offset-e}const i=t.offset-d.startOffset,r=new n.Z(d,i-o,o);return t.offset-=o,this.position=t,l("text",r,e,t,o)}return t.path.pop(),this.position=t,this._visitedParent=s.parent,l("elementStart",s,e,t,1)}}function l(e,t,s,o,i){return{done:!1,value:{type:e,item:t,previousPosition:s,nextPosition:o,length:i}}}},"./packages/ckeditor5-engine/src/model/typecheckable.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});class o{is(){throw new Error("is() method is abstract")}}},"./packages/ckeditor5-engine/src/model/utils/autoparagraphing.ts":(e,t,s)=>{"use strict";function o(e){const{schema:t,document:s}=e.model;for(const o of s.getRootNames()){const i=s.getRoot(o);if(i.isEmpty&&!t.checkChild(i,"$text")&&t.checkChild(i,"paragraph"))return e.insertElement("paragraph",i),!0}return!1}function i(e,t,s){const o=s.createContext(e);return!!s.checkChild(o,"paragraph")&&!!s.checkChild(o.push("paragraph"),t)}function r(e,t){const s=t.createElement("paragraph");return t.insert(s,e),t.createPositionAt(s,0)}s.d(t,{_m:()=>o,gg:()=>i,zX:()=>r})},"./packages/ckeditor5-engine/src/model/utils/findoptimalinsertionrange.ts":(e,t,s)=>{"use strict";s.d(t,{K:()=>i});var o=s("./packages/ckeditor5-utils/src/first.ts");function i(e,t,s="auto"){const i=e.getSelectedElement();if(i&&t.schema.isObject(i)&&!t.schema.isInline(i))return"before"==s||"after"==s?t.createRange(t.createPositionAt(i,s)):t.createRangeOn(i);const r=(0,o.Z)(e.getSelectedBlocks());if(!r)return t.createRange(e.focus);if(r.isEmpty)return t.createRange(t.createPositionAt(r,0));const n=t.createPositionAfter(r);return e.focus.isTouching(n)?t.createRange(n):t.createRange(t.createPositionBefore(r))}},"./packages/ckeditor5-engine/src/view/attributeelement.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./packages/ckeditor5-engine/src/view/element.ts"),i=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class r extends o.Z{constructor(...e){super(...e),this.getFillerOffset=n,this._priority=10,this._id=null,this._clonesGroup=null}get priority(){return this._priority}get id(){return this._id}getElementsWithSameId(){if(null===this.id)throw new i.ZP("attribute-element-get-elements-with-same-id-no-id",this);return new Set(this._clonesGroup)}isSimilar(e){return null!==this.id||null!==e.id?this.id===e.id:super.isSimilar(e)&&this.priority==e.priority}_clone(e=!1){const t=super._clone(e);return t._priority=this._priority,t._id=this._id,t}}function n(){if(a(this))return null;let e=this.parent;for(;e&&e.is("attributeElement");){if(a(e)>1)return null;e=e.parent}return!e||a(e)>1?null:this.childCount}function a(e){return Array.from(e.getChildren()).filter((e=>!e.is("uiElement"))).length}r.DEFAULT_PRIORITY=10,r.prototype.is=function(e,t){return t?t===this.name&&("attributeElement"===e||"view:attributeElement"===e||"element"===e||"view:element"===e):"attributeElement"===e||"view:attributeElement"===e||"element"===e||"view:element"===e||"node"===e||"view:node"===e}},"./packages/ckeditor5-engine/src/view/containerelement.ts":(e,t,s)=>{"use strict";s.d(t,{Y:()=>r,Z:()=>i});var o=s("./packages/ckeditor5-engine/src/view/element.ts");class i extends o.Z{constructor(...e){super(...e),this.getFillerOffset=r}}function r(){const e=[...this.getChildren()],t=e[this.childCount-1];if(t&&t.is("element","br"))return this.childCount;for(const t of e)if(!t.is("uiElement"))return null;return this.childCount}i.prototype.is=function(e,t){return t?t===this.name&&("containerElement"===e||"view:containerElement"===e||"element"===e||"view:element"===e):"containerElement"===e||"view:containerElement"===e||"element"===e||"view:element"===e||"node"===e||"view:node"===e}},"./packages/ckeditor5-engine/src/view/document.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>k});var o=s("./packages/ckeditor5-engine/src/view/documentselection.ts"),i=s("./packages/ckeditor5-utils/src/collection.ts"),r=s("./packages/ckeditor5-utils/src/eventinfo.ts"),n=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),a=s("./packages/ckeditor5-utils/src/emittermixin.ts"),c=s("./packages/ckeditor5-utils/src/toarray.ts"),l=s("./packages/ckeditor5-engine/src/view/observer/bubblingeventinfo.ts");const d=Symbol("bubbling contexts");function h(e){return class extends e{fire(e,...t){try{const s=e instanceof r.Z?e:new r.Z(this,e),o=f(this);if(!o.size)return;if(u(s,"capturing",this),p(o,"$capture",s,...t))return s.return;const i=s.startRange||this.selection.getFirstRange(),n=i?i.getContainedElement():null,a=!!n&&Boolean(g(o,n));let c=n||function(e){if(!e)return null;const t=e.start.parent,s=e.end.parent,o=t.getPath(),i=s.getPath();return o.length>i.length?t:s}(i);if(u(s,"atTarget",c),!a){if(p(o,"$text",s,...t))return s.return;u(s,"bubbling",c)}for(;c;){if(c.is("rootElement")){if(p(o,"$root",s,...t))return s.return}else if(c.is("element")&&p(o,c.name,s,...t))return s.return;if(p(o,c,s,...t))return s.return;c=c.parent,u(s,"bubbling",c)}return u(s,"bubbling",this),p(o,"$document",s,...t),s.return}catch(e){n.ZP.rethrowUnexpectedError(e,this)}}_addEventListener(e,t,s){const o=(0,c.Z)(s.context||"$document"),i=f(this);for(const r of o){let o=i.get(r);o||(o=new a.Q5,i.set(r,o)),this.listenTo(o,e,t,s)}}_removeEventListener(e,t){const s=f(this);for(const o of s.values())this.stopListening(o,e,t)}}}{const e=h(Object);["fire","_addEventListener","_removeEventListener"].forEach((t=>{h[t]=e.prototype[t]}))}function u(e,t,s){e instanceof l.Z&&(e._eventPhase=t,e._currentTarget=s)}function p(e,t,s,...o){const i="string"==typeof t?e.get(t):g(e,t);return!!i&&(i.fire(s,...o),s.stop.called)}function g(e,t){for(const[s,o]of e)if("function"==typeof s&&s(t))return o;return null}function f(e){return e[d]||(e[d]=new Map),e[d]}var m=s("./packages/ckeditor5-utils/src/observablemixin.ts");class k extends(h(m.y)){constructor(e){super(),this.selection=new o.Z,this.roots=new i.Z({idProperty:"rootName"}),this.stylesProcessor=e,this.set("isReadOnly",!1),this.set("isFocused",!1),this.set("isSelecting",!1),this.set("isComposing",!1),this._postFixers=new Set}getRoot(e="main"){return this.roots.get(e)}registerPostFixer(e){this._postFixers.add(e)}destroy(){this.roots.map((e=>e.destroy())),this.stopListening()}_callPostFixers(e){let t=!1;do{for(const s of this._postFixers)if(t=s(e),t)break}while(t)}}},"./packages/ckeditor5-engine/src/view/documentfragment.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>c});var o=s("./packages/ckeditor5-engine/src/view/typecheckable.ts"),i=s("./packages/ckeditor5-engine/src/view/text.ts"),r=s("./packages/ckeditor5-engine/src/view/textproxy.ts"),n=s("./packages/ckeditor5-utils/src/isiterable.ts"),a=s("./packages/ckeditor5-utils/src/emittermixin.ts");class c extends((0,a.ZP)(o.Z)){constructor(e,t){super(),this.document=e,this._children=[],t&&this._insertChild(0,t)}[Symbol.iterator](){return this._children[Symbol.iterator]()}get childCount(){return this._children.length}get isEmpty(){return 0===this.childCount}get root(){return this}get parent(){return null}_appendChild(e){return this._insertChild(this.childCount,e)}getChild(e){return this._children[e]}getChildIndex(e){return this._children.indexOf(e)}getChildren(){return this._children[Symbol.iterator]()}_insertChild(e,t){this._fireChange("children",this);let s=0;const o=function(e,t){if("string"==typeof t)return[new i.Z(e,t)];(0,n.Z)(t)||(t=[t]);return Array.from(t).map((t=>"string"==typeof t?new i.Z(e,t):t instanceof r.Z?new i.Z(e,t.data):t))}(this.document,t);for(const t of o)null!==t.parent&&t._remove(),t.parent=this,this._children.splice(e,0,t),e++,s++;return s}_removeChildren(e,t=1){this._fireChange("children",this);for(let s=e;s<e+t;s++)this._children[s].parent=null;return this._children.splice(e,t)}_fireChange(e,t){this.fire("change:"+e,t)}}c.prototype.is=function(e){return"documentFragment"===e||"view:documentFragment"===e}},"./packages/ckeditor5-engine/src/view/documentselection.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>n});var o=s("./packages/ckeditor5-engine/src/view/typecheckable.ts"),i=s("./packages/ckeditor5-engine/src/view/selection.ts"),r=s("./packages/ckeditor5-utils/src/emittermixin.ts");class n extends((0,r.ZP)(o.Z)){constructor(...e){super(),this._selection=new i.Z,this._selection.delegate("change").to(this),e.length&&this._selection.setTo(...e)}get isFake(){return this._selection.isFake}get fakeSelectionLabel(){return this._selection.fakeSelectionLabel}get anchor(){return this._selection.anchor}get focus(){return this._selection.focus}get isCollapsed(){return this._selection.isCollapsed}get rangeCount(){return this._selection.rangeCount}get isBackward(){return this._selection.isBackward}get editableElement(){return this._selection.editableElement}get _ranges(){return this._selection._ranges}*getRanges(){yield*this._selection.getRanges()}getFirstRange(){return this._selection.getFirstRange()}getLastRange(){return this._selection.getLastRange()}getFirstPosition(){return this._selection.getFirstPosition()}getLastPosition(){return this._selection.getLastPosition()}getSelectedElement(){return this._selection.getSelectedElement()}isEqual(e){return this._selection.isEqual(e)}isSimilar(e){return this._selection.isSimilar(e)}_setTo(...e){this._selection.setTo(...e)}_setFocus(e,t){this._selection.setFocus(e,t)}}n.prototype.is=function(e){return"selection"===e||"documentSelection"==e||"view:selection"==e||"view:documentSelection"==e}},"./packages/ckeditor5-engine/src/view/domconverter.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>P});var o=s("./packages/ckeditor5-engine/src/view/text.ts"),i=s("./packages/ckeditor5-engine/src/view/element.ts"),r=s("./packages/ckeditor5-engine/src/view/uielement.ts"),n=s("./packages/ckeditor5-engine/src/view/position.ts"),a=s("./packages/ckeditor5-engine/src/view/range.ts"),c=s("./packages/ckeditor5-engine/src/view/selection.ts"),l=s("./packages/ckeditor5-engine/src/view/documentfragment.ts"),d=s("./packages/ckeditor5-engine/src/view/treewalker.ts"),h=s("./packages/ckeditor5-engine/src/view/matcher.ts"),u=s("./packages/ckeditor5-engine/src/view/filler.ts"),p=s("./packages/ckeditor5-utils/src/dom/global.ts"),g=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");function f(e){let t=0;for(;e.previousSibling;)e=e.previousSibling,t++;return t}function m(e){const t=[];let s=e;for(;s&&s.nodeType!=Node.DOCUMENT_NODE;)t.unshift(s),s=s.parentNode;return t}var k=s("./packages/ckeditor5-utils/src/dom/istext.ts"),b=s("./packages/ckeditor5-utils/src/dom/iscomment.ts");const _=(0,u.yl)(p.Z.document),w=(0,u.N3)(p.Z.document),v=(0,u.PQ)(p.Z.document),y="data-ck-unsafe-attribute-",Z="data-ck-unsafe-element";class P{constructor(e,t={}){this.document=e,this.renderingMode=t.renderingMode||"editing",this.blockFillerMode=t.blockFillerMode||("editing"===this.renderingMode?"br":"nbsp"),this.preElements=["pre"],this.blockElements=["address","article","aside","blockquote","caption","center","dd","details","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","legend","li","main","menu","nav","ol","p","pre","section","summary","table","tbody","td","tfoot","th","thead","tr","ul"],this.inlineObjectElements=["object","iframe","input","button","textarea","select","option","video","embed","audio","img","canvas"],this.unsafeElements=["script","style"],this._domDocument="editing"===this.renderingMode?p.Z.document:p.Z.document.implementation.createHTMLDocument(""),this._domToViewMapping=new WeakMap,this._viewToDomMapping=new WeakMap,this._fakeSelectionMapping=new WeakMap,this._rawContentElementMatcher=new h.Z,this._encounteredRawContentDomNodes=new WeakSet}bindFakeSelection(e,t){this._fakeSelectionMapping.set(e,new c.Z(t))}fakeSelectionToView(e){return this._fakeSelectionMapping.get(e)}bindElements(e,t){this._domToViewMapping.set(e,t),this._viewToDomMapping.set(t,e)}unbindDomElement(e){const t=this._domToViewMapping.get(e);if(t){this._domToViewMapping.delete(e),this._viewToDomMapping.delete(t);for(const t of Array.from(e.children))this.unbindDomElement(t)}}bindDocumentFragments(e,t){this._domToViewMapping.set(e,t),this._viewToDomMapping.set(t,e)}shouldRenderAttribute(e,t,s){return"data"===this.renderingMode||!(e=e.toLowerCase()).startsWith("on")&&(("srcdoc"!==e||!t.match(/\bon\S+\s*=|javascript:|<\s*\/*script/i))&&("img"===s&&("src"===e||"srcset"===e)||("source"===s&&"srcset"===e||!t.match(/^\s*(javascript:|data:(image\/svg|text\/x?html))/i))))}setContentOf(e,t){if("data"===this.renderingMode)return void(e.innerHTML=t);const s=(new DOMParser).parseFromString(t,"text/html"),o=s.createDocumentFragment(),i=s.body.childNodes;for(;i.length>0;)o.appendChild(i[0]);const r=s.createTreeWalker(o,NodeFilter.SHOW_ELEMENT),n=[];let a;for(;a=r.nextNode();)n.push(a);for(const e of n){for(const t of e.getAttributeNames())this.setDomElementAttribute(e,t,e.getAttribute(t));const t=e.tagName.toLowerCase();this._shouldRenameElement(t)&&(A(t),e.replaceWith(this._createReplacementDomElement(t,e)))}for(;e.firstChild;)e.firstChild.remove();e.append(o)}viewToDom(e,t={}){if(e.is("$text")){const t=this._processDataFromViewText(e);return this._domDocument.createTextNode(t)}{if(this.mapViewToDom(e))return this.mapViewToDom(e);let s;if(e.is("documentFragment"))s=this._domDocument.createDocumentFragment(),t.bind&&this.bindDocumentFragments(s,e);else{if(e.is("uiElement"))return s="$comment"===e.name?this._domDocument.createComment(e.getCustomProperty("$rawContent")):e.render(this._domDocument,this),t.bind&&this.bindElements(s,e),s;this._shouldRenameElement(e.name)?(A(e.name),s=this._createReplacementDomElement(e.name)):s=e.hasAttribute("xmlns")?this._domDocument.createElementNS(e.getAttribute("xmlns"),e.name):this._domDocument.createElement(e.name),e.is("rawElement")&&e.render(s,this),t.bind&&this.bindElements(s,e);for(const t of e.getAttributeKeys())this.setDomElementAttribute(s,t,e.getAttribute(t),e)}if(!1!==t.withChildren)for(const o of this.viewChildrenToDom(e,t))s.appendChild(o);return s}}setDomElementAttribute(e,t,s,o){const i=this.shouldRenderAttribute(t,s,e.tagName.toLowerCase())||o&&o.shouldRenderUnsafeAttribute(t);i||(0,g.KE)("domconverter-unsafe-attribute-detected",{domElement:e,key:t,value:s}),e.hasAttribute(t)&&!i?e.removeAttribute(t):e.hasAttribute(y+t)&&i&&e.removeAttribute(y+t),e.setAttribute(i?t:y+t,s)}removeDomElementAttribute(e,t){t!=Z&&(e.removeAttribute(t),e.removeAttribute(y+t))}*viewChildrenToDom(e,t={}){const s=e.getFillerOffset&&e.getFillerOffset();let o=0;for(const i of e.getChildren()){s===o&&(yield this._getBlockFiller());const e=i.is("element")&&i.getCustomProperty("dataPipeline:transparentRendering");e&&"data"==this.renderingMode?yield*this.viewChildrenToDom(i,t):(e&&(0,g.KE)("domconverter-transparent-rendering-unsupported-in-editing-pipeline",{viewElement:i}),yield this.viewToDom(i,t)),o++}s===o&&(yield this._getBlockFiller())}viewRangeToDom(e){const t=this.viewPositionToDom(e.start),s=this.viewPositionToDom(e.end),o=this._domDocument.createRange();return o.setStart(t.parent,t.offset),o.setEnd(s.parent,s.offset),o}viewPositionToDom(e){const t=e.parent;if(t.is("$text")){const s=this.findCorrespondingDomText(t);if(!s)return null;let o=e.offset;return(0,u.Sw)(s)&&(o+=u.b_),{parent:s,offset:o}}{let s,o,i;if(0===e.offset){if(s=this.mapViewToDom(t),!s)return null;i=s.childNodes[0]}else{const t=e.nodeBefore;if(o=t.is("$text")?this.findCorrespondingDomText(t):this.mapViewToDom(t),!o)return null;s=o.parentNode,i=o.nextSibling}if((0,k.Z)(i)&&(0,u.Sw)(i))return{parent:i,offset:u.b_};return{parent:s,offset:o?f(o)+1:0}}}domToView(e,t={}){if(this.isBlockFiller(e))return null;const s=this.getHostViewElement(e);if(s)return s;if((0,b.Z)(e)&&t.skipComments)return null;if((0,k.Z)(e)){if((0,u.Qh)(e))return null;{const t=this._processDataFromDomText(e);return""===t?null:new o.Z(this.document,t)}}{if(this.mapDomToView(e))return this.mapDomToView(e);let s;if(this.isDocumentFragment(e))s=new l.Z(this.document),t.bind&&this.bindDocumentFragments(e,s);else{s=this._createViewElement(e,t),t.bind&&this.bindElements(e,s);const o=e.attributes;if(o)for(let e=o.length,t=0;t<e;t++)s._setAttribute(o[t].name,o[t].value);if(this._isViewElementWithRawContent(s,t)||(0,b.Z)(e)){const t=(0,b.Z)(e)?e.data:e.innerHTML;return s._setCustomProperty("$rawContent",t),this._encounteredRawContentDomNodes.add(e),s}}if(!1!==t.withChildren)for(const o of this.domChildrenToView(e,t))s._appendChild(o);return s}}*domChildrenToView(e,t){for(let s=0;s<e.childNodes.length;s++){const o=e.childNodes[s],i=this.domToView(o,t);null!==i&&(yield i)}}domSelectionToView(e){if(1===e.rangeCount){let t=e.getRangeAt(0).startContainer;(0,k.Z)(t)&&(t=t.parentNode);const s=this.fakeSelectionToView(t);if(s)return s}const t=this.isDomSelectionBackward(e),s=[];for(let t=0;t<e.rangeCount;t++){const o=e.getRangeAt(t),i=this.domRangeToView(o);i&&s.push(i)}return new c.Z(s,{backward:t})}domRangeToView(e){const t=this.domPositionToView(e.startContainer,e.startOffset),s=this.domPositionToView(e.endContainer,e.endOffset);return t&&s?new a.Z(t,s):null}domPositionToView(e,t=0){if(this.isBlockFiller(e))return this.domPositionToView(e.parentNode,f(e));const s=this.mapDomToView(e);if(s&&(s.is("uiElement")||s.is("rawElement")))return n.Z._createBefore(s);if((0,k.Z)(e)){if((0,u.Qh)(e))return this.domPositionToView(e.parentNode,f(e));const s=this.findCorrespondingViewText(e);let o=t;return s?((0,u.Sw)(e)&&(o-=u.b_,o=o<0?0:o),new n.Z(s,o)):null}if(0===t){const t=this.mapDomToView(e);if(t)return new n.Z(t,0)}else{const s=e.childNodes[t-1],o=(0,k.Z)(s)?this.findCorrespondingViewText(s):this.mapDomToView(s);if(o&&o.parent)return new n.Z(o.parent,o.index+1)}return null}mapDomToView(e){return this.getHostViewElement(e)||this._domToViewMapping.get(e)}findCorrespondingViewText(e){if((0,u.Qh)(e))return null;const t=this.getHostViewElement(e);if(t)return t;const s=e.previousSibling;if(s){if(!this.isElement(s))return null;const e=this.mapDomToView(s);if(e){const t=e.nextSibling;return t instanceof o.Z?t:null}}else{const t=this.mapDomToView(e.parentNode);if(t){const e=t.getChild(0);return e instanceof o.Z?e:null}}return null}mapViewToDom(e){return this._viewToDomMapping.get(e)}findCorrespondingDomText(e){const t=e.previousSibling;return t&&this.mapViewToDom(t)?this.mapViewToDom(t).nextSibling:!t&&e.parent&&this.mapViewToDom(e.parent)?this.mapViewToDom(e.parent).childNodes[0]:null}focus(e){const t=this.mapViewToDom(e);if(t&&t.ownerDocument.activeElement!==t){const{scrollX:e,scrollY:s}=p.Z.window,o=[];x(t,(e=>{const{scrollLeft:t,scrollTop:s}=e;o.push([t,s])})),t.focus(),x(t,(e=>{const[t,s]=o.shift();e.scrollLeft=t,e.scrollTop=s})),p.Z.window.scrollTo(e,s)}}isElement(e){return e&&e.nodeType==Node.ELEMENT_NODE}isDocumentFragment(e){return e&&e.nodeType==Node.DOCUMENT_FRAGMENT_NODE}isBlockFiller(e){return"br"==this.blockFillerMode?e.isEqualNode(_):!("BR"!==e.tagName||!T(e,this.blockElements)||1!==e.parentNode.childNodes.length)||(e.isEqualNode(v)||function(e,t){return e.isEqualNode(w)&&T(e,t)&&1===e.parentNode.childNodes.length}(e,this.blockElements))}isDomSelectionBackward(e){if(e.isCollapsed)return!1;const t=this._domDocument.createRange();t.setStart(e.anchorNode,e.anchorOffset),t.setEnd(e.focusNode,e.focusOffset);const s=t.collapsed;return t.detach(),s}getHostViewElement(e){const t=m(e);for(t.pop();t.length;){const e=t.pop(),s=this._domToViewMapping.get(e);if(s&&(s.is("uiElement")||s.is("rawElement")))return s}return null}isDomSelectionCorrect(e){return this._isDomSelectionPositionCorrect(e.anchorNode,e.anchorOffset)&&this._isDomSelectionPositionCorrect(e.focusNode,e.focusOffset)}registerRawContentMatcher(e){this._rawContentElementMatcher.add(e)}_getBlockFiller(){switch(this.blockFillerMode){case"nbsp":return(0,u.N3)(this._domDocument);case"markedNbsp":return(0,u.PQ)(this._domDocument);case"br":return(0,u.yl)(this._domDocument)}}_isDomSelectionPositionCorrect(e,t){if((0,k.Z)(e)&&(0,u.Sw)(e)&&t<u.b_)return!1;if(this.isElement(e)&&(0,u.Sw)(e.childNodes[t]))return!1;const s=this.mapDomToView(e);return!s||!s.is("uiElement")&&!s.is("rawElement")}_processDataFromViewText(e){let t=e.data;if(e.getAncestors().some((e=>this.preElements.includes(e.name))))return t;if(" "==t.charAt(0)){const s=this._getTouchingInlineViewNode(e,!1);!(s&&s.is("$textProxy")&&this._nodeEndsWithSpace(s))&&s||(t=" "+t.substr(1))}if(" "==t.charAt(t.length-1)){const s=this._getTouchingInlineViewNode(e,!0),o=s&&s.is("$textProxy")&&" "==s.data.charAt(0);" "!=t.charAt(t.length-2)&&s&&!o||(t=t.substr(0,t.length-1)+" ")}return t.replace(/ {2}/g,"  ")}_nodeEndsWithSpace(e){if(e.getAncestors().some((e=>this.preElements.includes(e.name))))return!1;const t=this._processDataFromViewText(e);return" "==t.charAt(t.length-1)}_processDataFromDomText(e){let t=e.data;if(function(e,t){return m(e).some((e=>e.tagName&&t.includes(e.tagName.toLowerCase())))}(e,this.preElements))return(0,u.th)(e);t=t.replace(/[ \n\t\r]{1,}/g," ");const s=this._getTouchingInlineDomNode(e,!1),o=this._getTouchingInlineDomNode(e,!0),i=this._checkShouldLeftTrimDomText(e,s),r=this._checkShouldRightTrimDomText(e,o);i&&(t=t.replace(/^ /,"")),r&&(t=t.replace(/ $/,"")),t=(0,u.th)(new Text(t)),t=t.replace(/ \u00A0/g,"  ");const n=o&&this.isElement(o)&&"BR"!=o.tagName,a=o&&(0,k.Z)(o)&&" "==o.data.charAt(0);return(/( |\u00A0)\u00A0$/.test(t)||!o||n||a)&&(t=t.replace(/\u00A0$/," ")),(i||s&&this.isElement(s)&&"BR"!=s.tagName)&&(t=t.replace(/^\u00A0/," ")),t}_checkShouldLeftTrimDomText(e,t){return!t||(this.isElement(t)?"BR"===t.tagName:!this._encounteredRawContentDomNodes.has(e.previousSibling)&&/[^\S\u00A0]/.test(t.data.charAt(t.data.length-1)))}_checkShouldRightTrimDomText(e,t){return!t&&!(0,u.Sw)(e)}_getTouchingInlineViewNode(e,t){const s=new d.Z({startPosition:t?n.Z._createAfter(e):n.Z._createBefore(e),direction:t?"forward":"backward"});for(const e of s){if(e.item.is("element")&&this.inlineObjectElements.includes(e.item.name))return e.item;if(e.item.is("containerElement"))return null;if(e.item.is("element","br"))return null;if(e.item.is("$textProxy"))return e.item}return null}_getTouchingInlineDomNode(e,t){if(!e.parentNode)return null;const s=t?"firstChild":"lastChild",o=t?"nextSibling":"previousSibling";let i=!0,r=e;do{if(!i&&r[s]?r=r[s]:r[o]?(r=r[o],i=!1):(r=r.parentNode,i=!0),!r||this._isBlockElement(r))return null}while(!(0,k.Z)(r)&&"BR"!=r.tagName&&!this._isInlineObjectElement(r));return r}_isBlockElement(e){return this.isElement(e)&&this.blockElements.includes(e.tagName.toLowerCase())}_isInlineObjectElement(e){return this.isElement(e)&&this.inlineObjectElements.includes(e.tagName.toLowerCase())}_createViewElement(e,t){if((0,b.Z)(e))return new r.Z(this.document,"$comment");const s=t.keepOriginalCase?e.tagName:e.tagName.toLowerCase();return new i.Z(this.document,s)}_isViewElementWithRawContent(e,t){return!1!==t.withChildren&&!!this._rawContentElementMatcher.match(e)}_shouldRenameElement(e){const t=e.toLowerCase();return"editing"===this.renderingMode&&this.unsafeElements.includes(t)}_createReplacementDomElement(e,t){const s=this._domDocument.createElement("span");if(s.setAttribute(Z,e),t){for(;t.firstChild;)s.appendChild(t.firstChild);for(const e of t.getAttributeNames())s.setAttribute(e,t.getAttribute(e))}return s}}function x(e,t){let s=e;for(;s;)t(s),s=s.parentElement}function T(e,t){const s=e.parentNode;return!!s&&!!s.tagName&&t.includes(s.tagName.toLowerCase())}function A(e){"script"===e&&(0,g.KE)("domconverter-unsafe-script-element-detected"),"style"===e&&(0,g.KE)("domconverter-unsafe-style-element-detected")}},"./packages/ckeditor5-engine/src/view/downcastwriter.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>k});var o=s("./packages/ckeditor5-engine/src/view/position.ts"),i=s("./packages/ckeditor5-engine/src/view/range.ts"),r=s("./packages/ckeditor5-engine/src/view/selection.ts"),n=s("./packages/ckeditor5-engine/src/view/containerelement.ts"),a=s("./packages/ckeditor5-engine/src/view/attributeelement.ts"),c=s("./packages/ckeditor5-engine/src/view/emptyelement.ts"),l=s("./packages/ckeditor5-engine/src/view/uielement.ts"),d=s("./packages/ckeditor5-engine/src/view/rawelement.ts"),h=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),u=s("./packages/ckeditor5-engine/src/view/documentfragment.ts"),p=s("./packages/ckeditor5-utils/src/isiterable.ts"),g=s("./packages/ckeditor5-engine/src/view/text.ts"),f=s("./packages/ckeditor5-engine/src/view/editableelement.ts"),m=s("./node_modules/lodash-es/isPlainObject.js");class k{constructor(e){this.document=e,this._cloneGroups=new Map,this._slotFactory=null}setSelection(...e){this.document.selection._setTo(...e)}setSelectionFocus(...e){this.document.selection._setFocus(...e)}createDocumentFragment(e){return new u.Z(this.document,e)}createText(e){return new g.Z(this.document,e)}createAttributeElement(e,t,s={}){const o=new a.Z(this.document,e,t);return"number"==typeof s.priority&&(o._priority=s.priority),s.id&&(o._id=s.id),s.renderUnsafeAttributes&&o._unsafeAttributesToRender.push(...s.renderUnsafeAttributes),o}createContainerElement(e,t,s={},o={}){let i=null;(0,m.Z)(s)?o=s:i=s;const r=new n.Z(this.document,e,t,i);return o.renderUnsafeAttributes&&r._unsafeAttributesToRender.push(...o.renderUnsafeAttributes),r}createEditableElement(e,t,s={}){const o=new f.Z(this.document,e,t);return s.renderUnsafeAttributes&&o._unsafeAttributesToRender.push(...s.renderUnsafeAttributes),o}createEmptyElement(e,t,s={}){const o=new c.Z(this.document,e,t);return s.renderUnsafeAttributes&&o._unsafeAttributesToRender.push(...s.renderUnsafeAttributes),o}createUIElement(e,t,s){const o=new l.Z(this.document,e,t);return s&&(o.render=s),o}createRawElement(e,t,s,o={}){const i=new d.Z(this.document,e,t);return s&&(i.render=s),o.renderUnsafeAttributes&&i._unsafeAttributesToRender.push(...o.renderUnsafeAttributes),i}setAttribute(e,t,s){s._setAttribute(e,t)}removeAttribute(e,t){t._removeAttribute(e)}addClass(e,t){t._addClass(e)}removeClass(e,t){t._removeClass(e)}setStyle(e,t,s){(0,m.Z)(e)&&void 0===s?t._setStyle(e):s._setStyle(e,t)}removeStyle(e,t){t._removeStyle(e)}setCustomProperty(e,t,s){s._setCustomProperty(e,t)}removeCustomProperty(e,t){return t._removeCustomProperty(e)}breakAttributes(e){return e instanceof o.Z?this._breakAttributes(e):this._breakAttributesRange(e)}breakContainer(e){const t=e.parent;if(!t.is("containerElement"))throw new h.ZP("view-writer-break-non-container-element",this.document);if(!t.parent)throw new h.ZP("view-writer-break-root",this.document);if(e.isAtStart)return o.Z._createBefore(t);if(!e.isAtEnd){const s=t._clone(!1);this.insert(o.Z._createAfter(t),s);const r=new i.Z(e,o.Z._createAt(t,"end")),n=new o.Z(s,0);this.move(r,n)}return o.Z._createAfter(t)}mergeAttributes(e){const t=e.offset,s=e.parent;if(s.is("$text"))return e;if(s.is("attributeElement")&&0===s.childCount){const e=s.parent,t=s.index;return s._remove(),this._removeFromClonedElementsGroup(s),this.mergeAttributes(new o.Z(e,t))}const i=s.getChild(t-1),r=s.getChild(t);if(!i||!r)return e;if(i.is("$text")&&r.is("$text"))return y(i,r);if(i.is("attributeElement")&&r.is("attributeElement")&&i.isSimilar(r)){const e=i.childCount;return i._appendChild(r.getChildren()),r._remove(),this._removeFromClonedElementsGroup(r),this.mergeAttributes(new o.Z(i,e))}return e}mergeContainers(e){const t=e.nodeBefore,s=e.nodeAfter;if(!(t&&s&&t.is("containerElement")&&s.is("containerElement")))throw new h.ZP("view-writer-merge-containers-invalid-position",this.document);const r=t.getChild(t.childCount-1),n=r instanceof g.Z?o.Z._createAt(r,"end"):o.Z._createAt(t,"end");return this.move(i.Z._createIn(s),o.Z._createAt(t,"end")),this.remove(i.Z._createOn(s)),n}insert(e,t){P(t=(0,p.Z)(t)?[...t]:[t],this.document);const s=t.reduce(((e,t)=>{const s=e[e.length-1],o=!t.is("uiElement");return s&&s.breakAttributes==o?s.nodes.push(t):e.push({breakAttributes:o,nodes:[t]}),e}),[]);let o=null,r=e;for(const{nodes:e,breakAttributes:t}of s){const s=this._insertNodes(r,e,t);o||(o=s.start),r=s.end}return o?new i.Z(o,r):new i.Z(e)}remove(e){const t=e instanceof i.Z?e:i.Z._createOn(e);if(T(t,this.document),t.isCollapsed)return new u.Z(this.document);const{start:s,end:o}=this._breakAttributesRange(t,!0),r=s.parent,n=o.offset-s.offset,a=r._removeChildren(s.offset,n);for(const e of a)this._removeFromClonedElementsGroup(e);const c=this.mergeAttributes(s);return t.start=c,t.end=c.clone(),new u.Z(this.document,a)}clear(e,t){T(e,this.document);const s=e.getWalker({direction:"backward",ignoreElementEnd:!0});for(const o of s){const s=o.item;let r;if(s.is("element")&&t.isSimilar(s))r=i.Z._createOn(s);else if(!o.nextPosition.isAfter(e.start)&&s.is("$textProxy")){const e=s.getAncestors().find((e=>e.is("element")&&t.isSimilar(e)));e&&(r=i.Z._createIn(e))}r&&(r.end.isAfter(e.end)&&(r.end=e.end),r.start.isBefore(e.start)&&(r.start=e.start),this.remove(r))}}move(e,t){let s;if(t.isAfter(e.end)){const o=(t=this._breakAttributes(t,!0)).parent,i=o.childCount;e=this._breakAttributesRange(e,!0),s=this.remove(e),t.offset+=o.childCount-i}else s=this.remove(e);return this.insert(t,s)}wrap(e,t){if(!(t instanceof a.Z))throw new h.ZP("view-writer-wrap-invalid-attribute",this.document);if(T(e,this.document),e.isCollapsed){let o=e.start;o.parent.is("element")&&(s=o.parent,!Array.from(s.getChildren()).some((e=>!e.is("uiElement"))))&&(o=o.getLastMatchingPosition((e=>e.item.is("uiElement")))),o=this._wrapPosition(o,t);const r=this.document.selection;return r.isCollapsed&&r.getFirstPosition().isEqual(e.start)&&this.setSelection(o),new i.Z(o)}return this._wrapRange(e,t);var s}unwrap(e,t){if(!(t instanceof a.Z))throw new h.ZP("view-writer-unwrap-invalid-attribute",this.document);if(T(e,this.document),e.isCollapsed)return e;const{start:s,end:o}=this._breakAttributesRange(e,!0),r=s.parent,n=this._unwrapChildren(r,s.offset,o.offset,t),c=this.mergeAttributes(n.start);c.isEqual(n.start)||n.end.offset--;const l=this.mergeAttributes(n.end);return new i.Z(c,l)}rename(e,t){const s=new n.Z(this.document,e,t.getAttributes());return this.insert(o.Z._createAfter(t),s),this.move(i.Z._createIn(t),o.Z._createAt(s,0)),this.remove(i.Z._createOn(t)),s}clearClonedElementsGroup(e){this._cloneGroups.delete(e)}createPositionAt(e,t){return o.Z._createAt(e,t)}createPositionAfter(e){return o.Z._createAfter(e)}createPositionBefore(e){return o.Z._createBefore(e)}createRange(...e){return new i.Z(...e)}createRangeOn(e){return i.Z._createOn(e)}createRangeIn(e){return i.Z._createIn(e)}createSelection(...e){return new r.Z(...e)}createSlot(e){if(!this._slotFactory)throw new h.ZP("view-writer-invalid-create-slot-context",this.document);return this._slotFactory(this,e)}_registerSlotFactory(e){this._slotFactory=e}_clearSlotFactory(){this._slotFactory=null}_insertNodes(e,t,s){let o,r;if(o=s?b(e):e.parent.is("$text")?e.parent.parent:e.parent,!o)throw new h.ZP("view-writer-invalid-position-container",this.document);r=s?this._breakAttributes(e,!0):e.parent.is("$text")?v(e):e;const n=o._insertChild(r.offset,t);for(const e of t)this._addToClonedElementsGroup(e);const a=r.getShiftedBy(n),c=this.mergeAttributes(r);c.isEqual(r)||a.offset--;const l=this.mergeAttributes(a);return new i.Z(c,l)}_wrapChildren(e,t,s,r){let n=t;const a=[];for(;n<s;){const t=e.getChild(n),s=t.is("$text"),i=t.is("attributeElement");if(i&&this._wrapAttributeElement(r,t))a.push(new o.Z(e,n));else if(s||!i||_(r,t)){const s=r._clone();t._remove(),s._appendChild(t),e._insertChild(n,s),this._addToClonedElementsGroup(s),a.push(new o.Z(e,n))}else this._wrapChildren(t,0,t.childCount,r);n++}let c=0;for(const e of a){if(e.offset-=c,e.offset==t)continue;this.mergeAttributes(e).isEqual(e)||(c++,s--)}return i.Z._createFromParentsAndOffsets(e,t,e,s)}_unwrapChildren(e,t,s,r){let n=t;const a=[];for(;n<s;){const t=e.getChild(n);if(t.is("attributeElement"))if(t.isSimilar(r)){const i=t.getChildren(),r=t.childCount;t._remove(),e._insertChild(n,i),this._removeFromClonedElementsGroup(t),a.push(new o.Z(e,n),new o.Z(e,n+r)),n+=r,s+=r-1}else this._unwrapAttributeElement(r,t)?(a.push(new o.Z(e,n),new o.Z(e,n+1)),n++):(this._unwrapChildren(t,0,t.childCount,r),n++);else n++}let c=0;for(const e of a){if(e.offset-=c,e.offset==t||e.offset==s)continue;this.mergeAttributes(e).isEqual(e)||(c++,s--)}return i.Z._createFromParentsAndOffsets(e,t,e,s)}_wrapRange(e,t){const{start:s,end:o}=this._breakAttributesRange(e,!0),r=s.parent,n=this._wrapChildren(r,s.offset,o.offset,t),a=this.mergeAttributes(n.start);a.isEqual(n.start)||n.end.offset--;const c=this.mergeAttributes(n.end);return new i.Z(a,c)}_wrapPosition(e,t){if(t.isSimilar(e.parent))return w(e.clone());e.parent.is("$text")&&(e=v(e));const s=this.createAttributeElement("_wrapPosition-fake-element");s._priority=Number.POSITIVE_INFINITY,s.isSimilar=()=>!1,e.parent._insertChild(e.offset,s);const r=new i.Z(e,e.getShiftedBy(1));this.wrap(r,t);const n=new o.Z(s.parent,s.index);s._remove();const a=n.nodeBefore,c=n.nodeAfter;return a instanceof g.Z&&c instanceof g.Z?y(a,c):w(n)}_wrapAttributeElement(e,t){if(!A(e,t))return!1;if(e.name!==t.name||e.priority!==t.priority)return!1;for(const s of e.getAttributeKeys())if("class"!==s&&"style"!==s&&t.hasAttribute(s)&&t.getAttribute(s)!==e.getAttribute(s))return!1;for(const s of e.getStyleNames())if(t.hasStyle(s)&&t.getStyle(s)!==e.getStyle(s))return!1;for(const s of e.getAttributeKeys())"class"!==s&&"style"!==s&&(t.hasAttribute(s)||this.setAttribute(s,e.getAttribute(s),t));for(const s of e.getStyleNames())t.hasStyle(s)||this.setStyle(s,e.getStyle(s),t);for(const s of e.getClassNames())t.hasClass(s)||this.addClass(s,t);return!0}_unwrapAttributeElement(e,t){if(!A(e,t))return!1;if(e.name!==t.name||e.priority!==t.priority)return!1;for(const s of e.getAttributeKeys())if("class"!==s&&"style"!==s&&(!t.hasAttribute(s)||t.getAttribute(s)!==e.getAttribute(s)))return!1;if(!t.hasClass(...e.getClassNames()))return!1;for(const s of e.getStyleNames())if(!t.hasStyle(s)||t.getStyle(s)!==e.getStyle(s))return!1;for(const s of e.getAttributeKeys())"class"!==s&&"style"!==s&&this.removeAttribute(s,t);return this.removeClass(Array.from(e.getClassNames()),t),this.removeStyle(Array.from(e.getStyleNames()),t),!0}_breakAttributesRange(e,t=!1){const s=e.start,o=e.end;if(T(e,this.document),e.isCollapsed){const s=this._breakAttributes(e.start,t);return new i.Z(s,s)}const r=this._breakAttributes(o,t),n=r.parent.childCount,a=this._breakAttributes(s,t);return r.offset+=r.parent.childCount-n,new i.Z(a,r)}_breakAttributes(e,t=!1){const s=e.offset,i=e.parent;if(e.parent.is("emptyElement"))throw new h.ZP("view-writer-cannot-break-empty-element",this.document);if(e.parent.is("uiElement"))throw new h.ZP("view-writer-cannot-break-ui-element",this.document);if(e.parent.is("rawElement"))throw new h.ZP("view-writer-cannot-break-raw-element",this.document);if(!t&&i.is("$text")&&x(i.parent))return e.clone();if(x(i))return e.clone();if(i.is("$text"))return this._breakAttributes(v(e),t);if(s==i.childCount){const e=new o.Z(i.parent,i.index+1);return this._breakAttributes(e,t)}if(0===s){const e=new o.Z(i.parent,i.index);return this._breakAttributes(e,t)}{const e=i.index+1,r=i._clone();i.parent._insertChild(e,r),this._addToClonedElementsGroup(r);const n=i.childCount-s,a=i._removeChildren(s,n);r._appendChild(a);const c=new o.Z(i.parent,e);return this._breakAttributes(c,t)}}_addToClonedElementsGroup(e){if(!e.root.is("rootElement"))return;if(e.is("element"))for(const t of e.getChildren())this._addToClonedElementsGroup(t);const t=e.id;if(!t)return;let s=this._cloneGroups.get(t);s||(s=new Set,this._cloneGroups.set(t,s)),s.add(e),e._clonesGroup=s}_removeFromClonedElementsGroup(e){if(e.is("element"))for(const t of e.getChildren())this._removeFromClonedElementsGroup(t);const t=e.id;if(!t)return;const s=this._cloneGroups.get(t);s&&s.delete(e)}}function b(e){let t=e.parent;for(;!x(t);){if(!t)return;t=t.parent}return t}function _(e,t){return e.priority<t.priority||!(e.priority>t.priority)&&e.getIdentity()<t.getIdentity()}function w(e){const t=e.nodeBefore;if(t&&t.is("$text"))return new o.Z(t,t.data.length);const s=e.nodeAfter;return s&&s.is("$text")?new o.Z(s,0):e}function v(e){if(e.offset==e.parent.data.length)return new o.Z(e.parent.parent,e.parent.index+1);if(0===e.offset)return new o.Z(e.parent.parent,e.parent.index);const t=e.parent.data.slice(e.offset);return e.parent._data=e.parent.data.slice(0,e.offset),e.parent.parent._insertChild(e.parent.index+1,new g.Z(e.root.document,t)),new o.Z(e.parent.parent,e.parent.index+1)}function y(e,t){const s=e.data.length;return e._data+=t.data,t._remove(),new o.Z(e,s)}const Z=[g.Z,a.Z,n.Z,c.Z,d.Z,l.Z];function P(e,t){for(const s of e){if(!Z.some((e=>s instanceof e)))throw new h.ZP("view-writer-insert-invalid-node-type",t);s.is("$text")||P(s.getChildren(),t)}}function x(e){return e&&(e.is("containerElement")||e.is("documentFragment"))}function T(e,t){const s=b(e.start),o=b(e.end);if(!s||!o||s!==o)throw new h.ZP("view-writer-invalid-range-container",t)}function A(e,t){return null===e.id&&null===t.id}},"./packages/ckeditor5-engine/src/view/editableelement.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./packages/ckeditor5-engine/src/view/containerelement.ts"),i=s("./packages/ckeditor5-utils/src/observablemixin.ts");class r extends((0,i.Z)(o.Z)){constructor(...e){super(...e);const t=e[0];this.set("isReadOnly",!1),this.set("isFocused",!1),this.bind("isReadOnly").to(t),this.bind("isFocused").to(t,"isFocused",(e=>e&&t.selection.editableElement==this)),this.listenTo(t.selection,"change",(()=>{this.isFocused=t.isFocused&&t.selection.editableElement==this}))}destroy(){this.stopListening()}}r.prototype.is=function(e,t){return t?t===this.name&&("editableElement"===e||"view:editableElement"===e||"containerElement"===e||"view:containerElement"===e||"element"===e||"view:element"===e):"editableElement"===e||"view:editableElement"===e||"containerElement"===e||"view:containerElement"===e||"element"===e||"view:element"===e||"node"===e||"view:node"===e}},"./packages/ckeditor5-engine/src/view/element.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>u});var o=s("./packages/ckeditor5-engine/src/view/node.ts"),i=s("./packages/ckeditor5-engine/src/view/text.ts"),r=s("./packages/ckeditor5-engine/src/view/textproxy.ts"),n=s("./packages/ckeditor5-utils/src/tomap.ts"),a=s("./packages/ckeditor5-utils/src/toarray.ts"),c=s("./packages/ckeditor5-utils/src/isiterable.ts"),l=s("./packages/ckeditor5-engine/src/view/matcher.ts"),d=s("./packages/ckeditor5-engine/src/view/stylesmap.ts"),h=s("./node_modules/lodash-es/isPlainObject.js");class u extends o.Z{constructor(e,t,s,o){if(super(e),this.name=t,this._attrs=function(e){const t=(0,n.Z)(e);for(const[e,s]of t)null===s?t.delete(e):"string"!=typeof s&&t.set(e,String(s));return t}(s),this._children=[],o&&this._insertChild(0,o),this._classes=new Set,this._attrs.has("class")){const e=this._attrs.get("class");p(this._classes,e),this._attrs.delete("class")}this._styles=new d.Z(this.document.stylesProcessor),this._attrs.has("style")&&(this._styles.setTo(this._attrs.get("style")),this._attrs.delete("style")),this._customProperties=new Map,this._unsafeAttributesToRender=[]}get childCount(){return this._children.length}get isEmpty(){return 0===this._children.length}getChild(e){return this._children[e]}getChildIndex(e){return this._children.indexOf(e)}getChildren(){return this._children[Symbol.iterator]()}*getAttributeKeys(){this._classes.size>0&&(yield"class"),this._styles.isEmpty||(yield"style"),yield*this._attrs.keys()}*getAttributes(){yield*this._attrs.entries(),this._classes.size>0&&(yield["class",this.getAttribute("class")]),this._styles.isEmpty||(yield["style",this.getAttribute("style")])}getAttribute(e){if("class"==e)return this._classes.size>0?[...this._classes].join(" "):void 0;if("style"==e){const e=this._styles.toString();return""==e?void 0:e}return this._attrs.get(e)}hasAttribute(e){return"class"==e?this._classes.size>0:"style"==e?!this._styles.isEmpty:this._attrs.has(e)}isSimilar(e){if(!(e instanceof u))return!1;if(this===e)return!0;if(this.name!=e.name)return!1;if(this._attrs.size!==e._attrs.size||this._classes.size!==e._classes.size||this._styles.size!==e._styles.size)return!1;for(const[t,s]of this._attrs)if(!e._attrs.has(t)||e._attrs.get(t)!==s)return!1;for(const t of this._classes)if(!e._classes.has(t))return!1;for(const t of this._styles.getStyleNames())if(!e._styles.has(t)||e._styles.getAsString(t)!==this._styles.getAsString(t))return!1;return!0}hasClass(...e){for(const t of e)if(!this._classes.has(t))return!1;return!0}getClassNames(){return this._classes.keys()}getStyle(e){return this._styles.getAsString(e)}getNormalizedStyle(e){return this._styles.getNormalized(e)}getStyleNames(e){return this._styles.getStyleNames(e)}hasStyle(...e){for(const t of e)if(!this._styles.has(t))return!1;return!0}findAncestor(...e){const t=new l.Z(...e);let s=this.parent;for(;s&&!s.is("documentFragment");){if(t.match(s))return s;s=s.parent}return null}getCustomProperty(e){return this._customProperties.get(e)}*getCustomProperties(){yield*this._customProperties.entries()}getIdentity(){const e=Array.from(this._classes).sort().join(","),t=this._styles.toString(),s=Array.from(this._attrs).map((e=>`${e[0]}="${e[1]}"`)).sort().join(" ");return this.name+(""==e?"":` class="${e}"`)+(t?` style="${t}"`:"")+(""==s?"":` ${s}`)}shouldRenderUnsafeAttribute(e){return this._unsafeAttributesToRender.includes(e)}_clone(e=!1){const t=[];if(e)for(const s of this.getChildren())t.push(s._clone(e));const s=new this.constructor(this.document,this.name,this._attrs,t);return s._classes=new Set(this._classes),s._styles.set(this._styles.getNormalized()),s._customProperties=new Map(this._customProperties),s.getFillerOffset=this.getFillerOffset,s._unsafeAttributesToRender=this._unsafeAttributesToRender,s}_appendChild(e){return this._insertChild(this.childCount,e)}_insertChild(e,t){this._fireChange("children",this);let s=0;const o=function(e,t){if("string"==typeof t)return[new i.Z(e,t)];(0,c.Z)(t)||(t=[t]);return Array.from(t).map((t=>"string"==typeof t?new i.Z(e,t):t instanceof r.Z?new i.Z(e,t.data):t))}(this.document,t);for(const t of o)null!==t.parent&&t._remove(),t.parent=this,t.document=this.document,this._children.splice(e,0,t),e++,s++;return s}_removeChildren(e,t=1){this._fireChange("children",this);for(let s=e;s<e+t;s++)this._children[s].parent=null;return this._children.splice(e,t)}_setAttribute(e,t){t=String(t),this._fireChange("attributes",this),"class"==e?p(this._classes,t):"style"==e?this._styles.setTo(t):this._attrs.set(e,t)}_removeAttribute(e){return this._fireChange("attributes",this),"class"==e?this._classes.size>0&&(this._classes.clear(),!0):"style"==e?!this._styles.isEmpty&&(this._styles.clear(),!0):this._attrs.delete(e)}_addClass(e){this._fireChange("attributes",this);for(const t of(0,a.Z)(e))this._classes.add(t)}_removeClass(e){this._fireChange("attributes",this);for(const t of(0,a.Z)(e))this._classes.delete(t)}_setStyle(e,t){this._fireChange("attributes",this),(0,h.Z)(e)?this._styles.set(e):this._styles.set(e,t)}_removeStyle(e){this._fireChange("attributes",this);for(const t of(0,a.Z)(e))this._styles.remove(t)}_setCustomProperty(e,t){this._customProperties.set(e,t)}_removeCustomProperty(e){return this._customProperties.delete(e)}}function p(e,t){const s=t.split(/\s+/);e.clear(),s.forEach((t=>e.add(t)))}u.prototype.is=function(e,t){return t?t===this.name&&("element"===e||"view:element"===e):"element"===e||"view:element"===e||"node"===e||"view:node"===e}},"./packages/ckeditor5-engine/src/view/emptyelement.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>n});var o=s("./packages/ckeditor5-engine/src/view/element.ts"),i=s("./packages/ckeditor5-engine/src/view/node.ts"),r=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class n extends o.Z{constructor(e,t,s,o){super(e,t,s,o),this.getFillerOffset=a}_insertChild(e,t){if(t&&(t instanceof i.Z||Array.from(t).length>0))throw new r.ZP("view-emptyelement-cannot-add",[this,t]);return 0}}function a(){return null}n.prototype.is=function(e,t){return t?t===this.name&&("emptyElement"===e||"view:emptyElement"===e||"element"===e||"view:element"===e):"emptyElement"===e||"view:emptyElement"===e||"element"===e||"view:element"===e||"node"===e||"view:node"===e}},"./packages/ckeditor5-engine/src/view/filler.ts":(e,t,s)=>{"use strict";s.d(t,{N3:()=>r,PQ:()=>n,Pj:()=>l,Qh:()=>h,Sw:()=>d,b_:()=>c,mm:()=>p,th:()=>u,yl:()=>a});var o=s("./packages/ckeditor5-utils/src/keyboard.ts"),i=s("./packages/ckeditor5-utils/src/dom/istext.ts");const r=e=>e.createTextNode(" "),n=e=>{const t=e.createElement("span");return t.dataset.ckeFiller="true",t.innerText=" ",t},a=e=>{const t=e.createElement("br");return t.dataset.ckeFiller="true",t},c=7,l="⁠".repeat(c);function d(e){return(0,i.Z)(e)&&e.data.substr(0,c)===l}function h(e){return e.data.length==c&&d(e)}function u(e){return d(e)?e.data.slice(c):e.data}function p(e){e.document.on("arrowKey",g,{priority:"low"})}function g(e,t){if(t.keyCode==o.Do.arrowleft){const e=t.domTarget.ownerDocument.defaultView.getSelection();if(1==e.rangeCount&&e.getRangeAt(0).collapsed){const t=e.getRangeAt(0).startContainer,s=e.getRangeAt(0).startOffset;d(t)&&s<=c&&e.collapse(t,0)}}}},"./packages/ckeditor5-engine/src/view/matcher.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/lodash-es/isPlainObject.js"),i=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class r{constructor(...e){this._patterns=[],this.add(...e)}add(...e){for(let t of e)("string"==typeof t||t instanceof RegExp)&&(t={name:t}),this._patterns.push(t)}match(...e){for(const t of e)for(const e of this._patterns){const s=n(t,e);if(s)return{element:t,pattern:e,match:s}}return null}matchAll(...e){const t=[];for(const s of e)for(const e of this._patterns){const o=n(s,e);o&&t.push({element:s,pattern:e,match:o})}return t.length>0?t:null}getElementName(){if(1!==this._patterns.length)return null;const e=this._patterns[0],t=e.name;return"function"==typeof e||!t||t instanceof RegExp?null:t}}function n(e,t){if("function"==typeof t)return t(e);const s={};return t.name&&(s.name=function(e,t){if(e instanceof RegExp)return!!t.match(e);return e===t}(t.name,e.name),!s.name)||t.attributes&&(s.attributes=function(e,t){const s=new Set(t.getAttributeKeys());(0,o.Z)(e)?(void 0!==e.style&&(0,i.KE)("matcher-pattern-deprecated-attributes-style-key",e),void 0!==e.class&&(0,i.KE)("matcher-pattern-deprecated-attributes-class-key",e)):(s.delete("style"),s.delete("class"));return a(e,s,(e=>t.getAttribute(e)))}(t.attributes,e),!s.attributes)||t.classes&&(s.classes=function(e,t){return a(e,t.getClassNames(),(()=>{}))}(t.classes,e),!s.classes)||t.styles&&(s.styles=function(e,t){return a(e,t.getStyleNames(!0),(e=>t.getStyle(e)))}(t.styles,e),!s.styles)?null:s}function a(e,t,s){const r=function(e){if(Array.isArray(e))return e.map((e=>(0,o.Z)(e)?(void 0!==e.key&&void 0!==e.value||(0,i.KE)("matcher-pattern-missing-key-or-value",e),[e.key,e.value]):[e,!0]));if((0,o.Z)(e))return Object.entries(e);return[[e,!0]]}(e),n=Array.from(t),a=[];if(r.forEach((([e,t])=>{n.forEach((o=>{(function(e,t){return!0===e||e===t||e instanceof RegExp&&t.match(e)})(e,o)&&function(e,t,s){if(!0===e)return!0;const o=s(t);return e===o||e instanceof RegExp&&!!String(o).match(e)}(t,o,s)&&a.push(o)}))})),r.length&&!(a.length<r.length))return a}},"./packages/ckeditor5-engine/src/view/node.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>c});var o=s("./packages/ckeditor5-engine/src/view/typecheckable.ts"),i=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),r=s("./packages/ckeditor5-utils/src/emittermixin.ts"),n=s("./packages/ckeditor5-utils/src/comparearrays.ts"),a=s("./node_modules/lodash-es/clone.js");s("./packages/ckeditor5-utils/src/version.ts");class c extends((0,r.ZP)(o.Z)){constructor(e){super(),this.document=e,this.parent=null}get index(){let e;if(!this.parent)return null;if(-1==(e=this.parent.getChildIndex(this)))throw new i.ZP("view-node-not-found-in-parent",this);return e}get nextSibling(){const e=this.index;return null!==e&&this.parent.getChild(e+1)||null}get previousSibling(){const e=this.index;return null!==e&&this.parent.getChild(e-1)||null}get root(){let e=this;for(;e.parent;)e=e.parent;return e}isAttached(){return this.root.is("rootElement")}getPath(){const e=[];let t=this;for(;t.parent;)e.unshift(t.index),t=t.parent;return e}getAncestors(e={}){const t=[];let s=e.includeSelf?this:this.parent;for(;s;)t[e.parentFirst?"push":"unshift"](s),s=s.parent;return t}getCommonAncestor(e,t={}){const s=this.getAncestors(t),o=e.getAncestors(t);let i=0;for(;s[i]==o[i]&&s[i];)i++;return 0===i?null:s[i-1]}isBefore(e){if(this==e)return!1;if(this.root!==e.root)return!1;const t=this.getPath(),s=e.getPath(),o=(0,n.Z)(t,s);switch(o){case"prefix":return!0;case"extension":return!1;default:return t[o]<s[o]}}isAfter(e){return this!=e&&(this.root===e.root&&!this.isBefore(e))}_remove(){this.parent._removeChildren(this.index)}_fireChange(e,t){this.fire(`change:${e}`,t),this.parent&&this.parent._fireChange(e,t)}toJSON(){const e=(0,a.Z)(this);return delete e.parent,e}}c.prototype.is=function(e){return"node"===e||"view:node"===e}},"./packages/ckeditor5-engine/src/view/observer/bubblingeventinfo.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./packages/ckeditor5-utils/src/eventinfo.ts");class i extends o.Z{constructor(e,t,s){super(e,t),this.startRange=s,this._eventPhase="none",this._currentTarget=null}get eventPhase(){return this._eventPhase}get currentTarget(){return this._currentTarget}}},"./packages/ckeditor5-engine/src/view/observer/domeventdata.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./node_modules/lodash-es/assignIn.js");class i{constructor(e,t,s){this.view=e,this.document=e.document,this.domEvent=t,this.domTarget=t.target,(0,o.Z)(this,s)}get target(){return this.view.domConverter.mapDomToView(this.domTarget)}preventDefault(){this.domEvent.preventDefault()}stopPropagation(){this.domEvent.stopPropagation()}}},"./packages/ckeditor5-engine/src/view/observer/domeventobserver.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./packages/ckeditor5-engine/src/view/observer/observer.ts"),i=s("./packages/ckeditor5-engine/src/view/observer/domeventdata.ts");class r extends o.Z{constructor(e){super(e),this.useCapture=!1}observe(e){("string"==typeof this.domEventType?[this.domEventType]:this.domEventType).forEach((t=>{this.listenTo(e,t,((e,t)=>{this.isEnabled&&!this.checkShouldIgnoreEventFromTarget(t.target)&&this.onDomEvent(t)}),{useCapture:this.useCapture})}))}fire(e,t,s){this.isEnabled&&this.document.fire(e,new i.Z(this.view,t,s))}}},"./packages/ckeditor5-engine/src/view/observer/mouseobserver.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./packages/ckeditor5-engine/src/view/observer/domeventobserver.ts");class i extends o.Z{constructor(e){super(e),this.domEventType=["mousedown","mouseup","mouseover","mouseout"]}onDomEvent(e){this.fire(e.type,e)}}},"./packages/ckeditor5-engine/src/view/observer/observer.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./packages/ckeditor5-utils/src/dom/emittermixin.ts");class i extends o.Q{constructor(e){super(),this.view=e,this.document=e.document,this.isEnabled=!1}enable(){this.isEnabled=!0}disable(){this.isEnabled=!1}destroy(){this.disable(),this.stopListening()}checkShouldIgnoreEventFromTarget(e){return e&&3===e.nodeType&&(e=e.parentNode),!(!e||1!==e.nodeType)&&e.matches("[data-cke-ignore-events], [data-cke-ignore-events] *")}}},"./packages/ckeditor5-engine/src/view/position.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>c});var o=s("./packages/ckeditor5-engine/src/view/typecheckable.ts"),i=s("./packages/ckeditor5-utils/src/comparearrays.ts"),r=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),n=s("./packages/ckeditor5-engine/src/view/editableelement.ts"),a=(s("./packages/ckeditor5-utils/src/version.ts"),s("./packages/ckeditor5-engine/src/view/treewalker.ts"));class c extends o.Z{constructor(e,t){super(),this.parent=e,this.offset=t}get nodeAfter(){return this.parent.is("$text")?null:this.parent.getChild(this.offset)||null}get nodeBefore(){return this.parent.is("$text")?null:this.parent.getChild(this.offset-1)||null}get isAtStart(){return 0===this.offset}get isAtEnd(){const e=this.parent.is("$text")?this.parent.data.length:this.parent.childCount;return this.offset===e}get root(){return this.parent.root}get editableElement(){let e=this.parent;for(;!(e instanceof n.Z);){if(!e.parent)return null;e=e.parent}return e}getShiftedBy(e){const t=c._createAt(this),s=t.offset+e;return t.offset=s<0?0:s,t}getLastMatchingPosition(e,t={}){t.startPosition=this;const s=new a.Z(t);return s.skip(e),s.position}getAncestors(){return this.parent.is("documentFragment")?[this.parent]:this.parent.getAncestors({includeSelf:!0})}getCommonAncestor(e){const t=this.getAncestors(),s=e.getAncestors();let o=0;for(;t[o]==s[o]&&t[o];)o++;return 0===o?null:t[o-1]}isEqual(e){return this.parent==e.parent&&this.offset==e.offset}isBefore(e){return"before"==this.compareWith(e)}isAfter(e){return"after"==this.compareWith(e)}compareWith(e){if(this.root!==e.root)return"different";if(this.isEqual(e))return"same";const t=this.parent.is("node")?this.parent.getPath():[],s=e.parent.is("node")?e.parent.getPath():[];t.push(this.offset),s.push(e.offset);const o=(0,i.Z)(t,s);switch(o){case"prefix":return"before";case"extension":return"after";default:return t[o]<s[o]?"before":"after"}}getWalker(e={}){return e.startPosition=this,new a.Z(e)}clone(){return new c(this.parent,this.offset)}static _createAt(e,t){if(e instanceof c)return new this(e.parent,e.offset);{const s=e;if("end"==t)t=s.is("$text")?s.data.length:s.childCount;else{if("before"==t)return this._createBefore(s);if("after"==t)return this._createAfter(s);if(0!==t&&!t)throw new r.ZP("view-createpositionat-offset-required",s)}return new c(s,t)}}static _createAfter(e){if(e.is("$textProxy"))return new c(e.textNode,e.offsetInText+e.data.length);if(!e.parent)throw new r.ZP("view-position-after-root",e,{root:e});return new c(e.parent,e.index+1)}static _createBefore(e){if(e.is("$textProxy"))return new c(e.textNode,e.offsetInText);if(!e.parent)throw new r.ZP("view-position-before-root",e,{root:e});return new c(e.parent,e.index)}}c.prototype.is=function(e){return"position"===e||"view:position"===e}},"./packages/ckeditor5-engine/src/view/range.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>n});var o=s("./packages/ckeditor5-engine/src/view/typecheckable.ts"),i=s("./packages/ckeditor5-engine/src/view/position.ts"),r=s("./packages/ckeditor5-engine/src/view/treewalker.ts");class n extends o.Z{constructor(e,t=null){super(),this.start=e.clone(),this.end=t?t.clone():e.clone()}*[Symbol.iterator](){yield*new r.Z({boundaries:this,ignoreElementEnd:!0})}get isCollapsed(){return this.start.isEqual(this.end)}get isFlat(){return this.start.parent===this.end.parent}get root(){return this.start.root}getEnlarged(){let e=this.start.getLastMatchingPosition(a,{direction:"backward"}),t=this.end.getLastMatchingPosition(a);return e.parent.is("$text")&&e.isAtStart&&(e=i.Z._createBefore(e.parent)),t.parent.is("$text")&&t.isAtEnd&&(t=i.Z._createAfter(t.parent)),new n(e,t)}getTrimmed(){let e=this.start.getLastMatchingPosition(a);if(e.isAfter(this.end)||e.isEqual(this.end))return new n(e,e);let t=this.end.getLastMatchingPosition(a,{direction:"backward"});const s=e.nodeAfter,o=t.nodeBefore;return s&&s.is("$text")&&(e=new i.Z(s,0)),o&&o.is("$text")&&(t=new i.Z(o,o.data.length)),new n(e,t)}isEqual(e){return this==e||this.start.isEqual(e.start)&&this.end.isEqual(e.end)}containsPosition(e){return e.isAfter(this.start)&&e.isBefore(this.end)}containsRange(e,t=!1){e.isCollapsed&&(t=!1);const s=this.containsPosition(e.start)||t&&this.start.isEqual(e.start),o=this.containsPosition(e.end)||t&&this.end.isEqual(e.end);return s&&o}getDifference(e){const t=[];return this.isIntersecting(e)?(this.containsPosition(e.start)&&t.push(new n(this.start,e.start)),this.containsPosition(e.end)&&t.push(new n(e.end,this.end))):t.push(this.clone()),t}getIntersection(e){if(this.isIntersecting(e)){let t=this.start,s=this.end;return this.containsPosition(e.start)&&(t=e.start),this.containsPosition(e.end)&&(s=e.end),new n(t,s)}return null}getWalker(e={}){return e.boundaries=this,new r.Z(e)}getCommonAncestor(){return this.start.getCommonAncestor(this.end)}getContainedElement(){if(this.isCollapsed)return null;let e=this.start.nodeAfter,t=this.end.nodeBefore;return this.start.parent.is("$text")&&this.start.isAtEnd&&this.start.parent.nextSibling&&(e=this.start.parent.nextSibling),this.end.parent.is("$text")&&this.end.isAtStart&&this.end.parent.previousSibling&&(t=this.end.parent.previousSibling),e&&e.is("element")&&e===t?e:null}clone(){return new n(this.start,this.end)}*getItems(e={}){e.boundaries=this,e.ignoreElementEnd=!0;const t=new r.Z(e);for(const e of t)yield e.item}*getPositions(e={}){e.boundaries=this;const t=new r.Z(e);yield t.position;for(const e of t)yield e.nextPosition}isIntersecting(e){return this.start.isBefore(e.end)&&this.end.isAfter(e.start)}static _createFromParentsAndOffsets(e,t,s,o){return new this(new i.Z(e,t),new i.Z(s,o))}static _createFromPositionAndShift(e,t){const s=e,o=e.getShiftedBy(t);return t>0?new this(s,o):new this(o,s)}static _createIn(e){return this._createFromParentsAndOffsets(e,0,e,e.childCount)}static _createOn(e){const t=e.is("$textProxy")?e.offsetSize:1;return this._createFromPositionAndShift(i.Z._createBefore(e),t)}}function a(e){return!(!e.item.is("attributeElement")&&!e.item.is("uiElement"))}n.prototype.is=function(e){return"range"===e||"view:range"===e}},"./packages/ckeditor5-engine/src/view/rawelement.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>n});var o=s("./packages/ckeditor5-engine/src/view/element.ts"),i=s("./packages/ckeditor5-engine/src/view/node.ts"),r=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class n extends o.Z{constructor(...e){super(...e),this.getFillerOffset=a}_insertChild(e,t){if(t&&(t instanceof i.Z||Array.from(t).length>0))throw new r.ZP("view-rawelement-cannot-add",[this,t]);return 0}render(){}}function a(){return null}n.prototype.is=function(e,t){return t?t===this.name&&("rawElement"===e||"view:rawElement"===e||"element"===e||"view:element"===e):"rawElement"===e||"view:rawElement"===e||e===this.name||e==="view:"+this.name||"element"===e||"view:element"===e||"node"===e||"view:node"===e}},"./packages/ckeditor5-engine/src/view/renderer.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>w});var o=s("./packages/ckeditor5-engine/src/view/text.ts"),i=s("./packages/ckeditor5-engine/src/view/position.ts"),r=s("./packages/ckeditor5-engine/src/view/filler.ts"),n=s("./packages/ckeditor5-utils/src/diff.ts");function a(e,t,s){e.insertBefore(s,e.childNodes[t]||null)}function c(e){const t=e.parentNode;t&&t.removeChild(e)}var l=s("./packages/ckeditor5-utils/src/observablemixin.ts"),d=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),h=s("./packages/ckeditor5-utils/src/dom/istext.ts"),u=s("./packages/ckeditor5-utils/src/dom/iscomment.ts"),p=s("./packages/ckeditor5-utils/src/dom/isnode.ts"),g=s("./packages/ckeditor5-utils/src/fastdiff.ts"),f=s("./packages/ckeditor5-utils/src/env.ts"),m=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),k=s.n(m),b=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-engine/theme/renderer.css"),_={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};k()(b.Z,_);b.Z.locals;class w extends l.y{constructor(e,t){super(),this.domDocuments=new Set,this.domConverter=e,this.markedAttributes=new Set,this.markedChildren=new Set,this.markedTexts=new Set,this.selection=t,this.set("isFocused",!1),this.set("isSelecting",!1),f.ZP.isBlink&&!f.ZP.isAndroid&&this.on("change:isSelecting",(()=>{this.isSelecting||this.render()})),this._inlineFiller=null,this._fakeSelectionContainer=null}markToSync(e,t){if("text"===e)this.domConverter.mapViewToDom(t.parent)&&this.markedTexts.add(t);else{if(!this.domConverter.mapViewToDom(t))return;if("attributes"===e)this.markedAttributes.add(t);else{if("children"!==e)throw new d.ZP("view-renderer-unknown-type",this);this.markedChildren.add(t)}}}render(){let e=null;const t=!(f.ZP.isBlink&&!f.ZP.isAndroid)||!this.isSelecting;for(const e of this.markedChildren)this._updateChildrenMappings(e);t?(this._inlineFiller&&!this._isSelectionInInlineFiller()&&this._removeInlineFiller(),this._inlineFiller?e=this._getInlineFillerPosition():this._needsInlineFillerAtSelection()&&(e=this.selection.getFirstPosition(),this.markedChildren.add(e.parent))):this._inlineFiller&&this._inlineFiller.parentNode&&(e=this.domConverter.domPositionToView(this._inlineFiller),e&&e.parent.is("$text")&&(e=i.Z._createBefore(e.parent)));for(const e of this.markedAttributes)this._updateAttrs(e);for(const t of this.markedChildren)this._updateChildren(t,{inlineFillerPosition:e});for(const t of this.markedTexts)!this.markedChildren.has(t.parent)&&this.domConverter.mapViewToDom(t.parent)&&this._updateText(t,{inlineFillerPosition:e});if(t)if(e){const t=this.domConverter.viewPositionToDom(e),s=t.parent.ownerDocument;(0,r.Sw)(t.parent)?this._inlineFiller=t.parent:this._inlineFiller=v(s,t.parent,t.offset)}else this._inlineFiller=null;this._updateFocus(),this._updateSelection(),this.markedTexts.clear(),this.markedAttributes.clear(),this.markedChildren.clear()}_updateChildrenMappings(e){if(!this.domConverter.mapViewToDom(e))return;const t=Array.from(this.domConverter.mapViewToDom(e).childNodes),s=Array.from(this.domConverter.viewChildrenToDom(e,{withChildren:!1})),o=this._diffNodeLists(t,s),i=this._findReplaceActions(o,t,s);if(-1!==i.indexOf("replace")){const o={equal:0,insert:0,delete:0};for(const r of i)if("replace"===r){const i=o.equal+o.insert,r=o.equal+o.delete,n=e.getChild(i);!n||n.is("uiElement")||n.is("rawElement")||this._updateElementMappings(n,t[r]),c(s[i]),o.equal++}else o[r]++}}_updateElementMappings(e,t){this.domConverter.unbindDomElement(t),this.domConverter.bindElements(t,e),this.markedChildren.add(e),this.markedAttributes.add(e)}_getInlineFillerPosition(){const e=this.selection.getFirstPosition();return e.parent.is("$text")?i.Z._createBefore(e.parent):e}_isSelectionInInlineFiller(){if(1!=this.selection.rangeCount||!this.selection.isCollapsed)return!1;const e=this.selection.getFirstPosition(),t=this.domConverter.viewPositionToDom(e);return!!(t&&(0,h.Z)(t.parent)&&(0,r.Sw)(t.parent))}_removeInlineFiller(){const e=this._inlineFiller;if(!(0,r.Sw)(e))throw new d.ZP("view-renderer-filler-was-lost",this);(0,r.Qh)(e)?e.remove():e.data=e.data.substr(r.b_),this._inlineFiller=null}_needsInlineFillerAtSelection(){if(1!=this.selection.rangeCount||!this.selection.isCollapsed)return!1;const e=this.selection.getFirstPosition(),t=e.parent,s=e.offset;if(!this.domConverter.mapViewToDom(t.root))return!1;if(!t.is("element"))return!1;if(!function(e){if("false"==e.getAttribute("contenteditable"))return!1;const t=e.findAncestor((e=>e.hasAttribute("contenteditable")));return!t||"true"==t.getAttribute("contenteditable")}(t))return!1;if(s===t.getFillerOffset())return!1;const i=e.nodeBefore,r=e.nodeAfter;return!(i instanceof o.Z||r instanceof o.Z)}_updateText(e,t){const s=this.domConverter.findCorrespondingDomText(e),o=this.domConverter.viewToDom(e),i=s.data;let n=o.data;const a=t.inlineFillerPosition;if(a&&a.parent==e.parent&&a.offset==e.index&&(n=r.Pj+n),i!=n){const e=(0,g.Z)(i,n);for(const t of e)"insert"===t.type?s.insertData(t.index,t.values.join("")):s.deleteData(t.index,t.howMany)}}_updateAttrs(e){const t=this.domConverter.mapViewToDom(e);if(!t)return;const s=Array.from(t.attributes).map((e=>e.name)),o=e.getAttributeKeys();for(const s of o)this.domConverter.setDomElementAttribute(t,s,e.getAttribute(s),e);for(const o of s)e.hasAttribute(o)||this.domConverter.removeDomElementAttribute(t,o)}_updateChildren(e,t){const s=this.domConverter.mapViewToDom(e);if(!s)return;const o=t.inlineFillerPosition,i=this.domConverter.mapViewToDom(e).childNodes,r=Array.from(this.domConverter.viewChildrenToDom(e,{bind:!0}));o&&o.parent===e&&v(s.ownerDocument,r,o.offset);const n=this._diffNodeLists(i,r);let l=0;const d=new Set;for(const e of n)"delete"===e?(d.add(i[l]),c(i[l])):"equal"===e&&l++;l=0;for(const e of n)"insert"===e?(a(s,l,r[l]),l++):"equal"===e&&(this._markDescendantTextToSync(this.domConverter.domToView(r[l])),l++);for(const e of d)e.parentNode||this.domConverter.unbindDomElement(e)}_diffNodeLists(e,t){return e=function(e,t){const s=Array.from(e);if(0==s.length||!t)return s;s[s.length-1]==t&&s.pop();return s}(e,this._fakeSelectionContainer),(0,n.Z)(e,t,Z.bind(null,this.domConverter))}_findReplaceActions(e,t,s){if(-1===e.indexOf("insert")||-1===e.indexOf("delete"))return e;let o=[],i=[],r=[];const a={equal:0,insert:0,delete:0};for(const c of e)"insert"===c?r.push(s[a.equal+a.insert]):"delete"===c?i.push(t[a.equal+a.delete]):(o=o.concat((0,n.Z)(i,r,y).map((e=>"equal"===e?"replace":e))),o.push("equal"),i=[],r=[]),a[c]++;return o.concat((0,n.Z)(i,r,y).map((e=>"equal"===e?"replace":e)))}_markDescendantTextToSync(e){if(e)if(e.is("$text"))this.markedTexts.add(e);else if(e.is("element"))for(const t of e.getChildren())this._markDescendantTextToSync(t)}_updateSelection(){if(f.ZP.isBlink&&!f.ZP.isAndroid&&this.isSelecting&&!this.markedChildren.size)return;if(0===this.selection.rangeCount)return this._removeDomSelection(),void this._removeFakeSelection();const e=this.domConverter.mapViewToDom(this.selection.editableElement);this.isFocused&&e&&(this.selection.isFake?this._updateFakeSelection(e):(this._removeFakeSelection(),this._updateDomSelection(e)))}_updateFakeSelection(e){const t=e.ownerDocument;this._fakeSelectionContainer||(this._fakeSelectionContainer=function(e){const t=e.createElement("div");return t.className="ck-fake-selection-container",Object.assign(t.style,{position:"fixed",top:0,left:"-9999px",width:"42px"}),t.textContent=" ",t}(t));const s=this._fakeSelectionContainer;if(this.domConverter.bindFakeSelection(s,this.selection),!this._fakeSelectionNeedsUpdate(e))return;s.parentElement&&s.parentElement==e||e.appendChild(s),s.textContent=this.selection.fakeSelectionLabel||" ";const o=t.getSelection(),i=t.createRange();o.removeAllRanges(),i.selectNodeContents(s),o.addRange(i)}_updateDomSelection(e){const t=e.ownerDocument.defaultView.getSelection();if(!this._domSelectionNeedsUpdate(t))return;const s=this.domConverter.viewPositionToDom(this.selection.anchor),o=this.domConverter.viewPositionToDom(this.selection.focus);t.collapse(s.parent,s.offset),t.extend(o.parent,o.offset),f.ZP.isGecko&&function(e,t){const s=e.parent;if(s.nodeType!=Node.ELEMENT_NODE||e.offset!=s.childNodes.length-1)return;const o=s.childNodes[e.offset];o&&"BR"==o.tagName&&t.addRange(t.getRangeAt(0))}(o,t)}_domSelectionNeedsUpdate(e){if(!this.domConverter.isDomSelectionCorrect(e))return!0;const t=e&&this.domConverter.domSelectionToView(e);return(!t||!this.selection.isEqual(t))&&!(!this.selection.isCollapsed&&this.selection.isSimilar(t))}_fakeSelectionNeedsUpdate(e){const t=this._fakeSelectionContainer,s=e.ownerDocument.getSelection();return!t||t.parentElement!==e||(s.anchorNode!==t&&!t.contains(s.anchorNode)||t.textContent!==this.selection.fakeSelectionLabel)}_removeDomSelection(){for(const e of this.domDocuments){const t=e.getSelection();if(t.rangeCount){const s=e.activeElement,o=this.domConverter.mapDomToView(s);s&&o&&t.removeAllRanges()}}}_removeFakeSelection(){const e=this._fakeSelectionContainer;e&&e.remove()}_updateFocus(){if(this.isFocused){const e=this.selection.editableElement;e&&this.domConverter.focus(e)}}}function v(e,t,s){const o=t instanceof Array?t:t.childNodes,i=o[s];if((0,h.Z)(i))return i.data=r.Pj+i.data,i;{const i=e.createTextNode(r.Pj);return Array.isArray(t)?o.splice(s,0,i):a(t,s,i),i}}function y(e,t){return(0,p.Z)(e)&&(0,p.Z)(t)&&!(0,h.Z)(e)&&!(0,h.Z)(t)&&!(0,u.Z)(e)&&!(0,u.Z)(t)&&e.tagName.toLowerCase()===t.tagName.toLowerCase()}function Z(e,t,s){return t===s||((0,h.Z)(t)&&(0,h.Z)(s)?t.data===s.data:!(!e.isBlockFiller(t)||!e.isBlockFiller(s)))}},"./packages/ckeditor5-engine/src/view/selection.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>u});var o=s("./packages/ckeditor5-engine/src/view/typecheckable.ts"),i=s("./packages/ckeditor5-engine/src/view/range.ts"),r=s("./packages/ckeditor5-engine/src/view/position.ts"),n=s("./packages/ckeditor5-engine/src/view/node.ts"),a=s("./packages/ckeditor5-engine/src/view/documentselection.ts"),c=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),l=s("./packages/ckeditor5-utils/src/count.ts"),d=s("./packages/ckeditor5-utils/src/isiterable.ts"),h=s("./packages/ckeditor5-utils/src/emittermixin.ts");class u extends((0,h.ZP)(o.Z)){constructor(...e){super(),this._ranges=[],this._lastRangeBackward=!1,this._isFake=!1,this._fakeSelectionLabel="",e.length&&this.setTo(...e)}get isFake(){return this._isFake}get fakeSelectionLabel(){return this._fakeSelectionLabel}get anchor(){if(!this._ranges.length)return null;const e=this._ranges[this._ranges.length-1];return(this._lastRangeBackward?e.end:e.start).clone()}get focus(){if(!this._ranges.length)return null;const e=this._ranges[this._ranges.length-1];return(this._lastRangeBackward?e.start:e.end).clone()}get isCollapsed(){return 1===this.rangeCount&&this._ranges[0].isCollapsed}get rangeCount(){return this._ranges.length}get isBackward(){return!this.isCollapsed&&this._lastRangeBackward}get editableElement(){return this.anchor?this.anchor.editableElement:null}*getRanges(){for(const e of this._ranges)yield e.clone()}getFirstRange(){let e=null;for(const t of this._ranges)e&&!t.start.isBefore(e.start)||(e=t);return e?e.clone():null}getLastRange(){let e=null;for(const t of this._ranges)e&&!t.end.isAfter(e.end)||(e=t);return e?e.clone():null}getFirstPosition(){const e=this.getFirstRange();return e?e.start.clone():null}getLastPosition(){const e=this.getLastRange();return e?e.end.clone():null}isEqual(e){if(this.isFake!=e.isFake)return!1;if(this.isFake&&this.fakeSelectionLabel!=e.fakeSelectionLabel)return!1;if(this.rangeCount!=e.rangeCount)return!1;if(0===this.rangeCount)return!0;if(!this.anchor.isEqual(e.anchor)||!this.focus.isEqual(e.focus))return!1;for(const t of this._ranges){let s=!1;for(const o of e._ranges)if(t.isEqual(o)){s=!0;break}if(!s)return!1}return!0}isSimilar(e){if(this.isBackward!=e.isBackward)return!1;const t=(0,l.Z)(this.getRanges());if(t!=(0,l.Z)(e.getRanges()))return!1;if(0==t)return!0;for(let t of this.getRanges()){t=t.getTrimmed();let s=!1;for(let o of e.getRanges())if(o=o.getTrimmed(),t.start.isEqual(o.start)&&t.end.isEqual(o.end)){s=!0;break}if(!s)return!1}return!0}getSelectedElement(){return 1!==this.rangeCount?null:this.getFirstRange().getContainedElement()}setTo(...e){let[t,s,o]=e;if("object"==typeof s&&(o=s,s=void 0),null===t)this._setRanges([]),this._setFakeOptions(o);else if(t instanceof u||t instanceof a.Z)this._setRanges(t.getRanges(),t.isBackward),this._setFakeOptions({fake:t.isFake,label:t.fakeSelectionLabel});else if(t instanceof i.Z)this._setRanges([t],o&&o.backward),this._setFakeOptions(o);else if(t instanceof r.Z)this._setRanges([new i.Z(t)]),this._setFakeOptions(o);else if(t instanceof n.Z){const e=!!o&&!!o.backward;let n;if(void 0===s)throw new c.ZP("view-selection-setto-required-second-parameter",this);n="in"==s?i.Z._createIn(t):"on"==s?i.Z._createOn(t):new i.Z(r.Z._createAt(t,s)),this._setRanges([n],e),this._setFakeOptions(o)}else{if(!(0,d.Z)(t))throw new c.ZP("view-selection-setto-not-selectable",this);this._setRanges(t,o&&o.backward),this._setFakeOptions(o)}this.fire("change")}setFocus(e,t){if(null===this.anchor)throw new c.ZP("view-selection-setfocus-no-ranges",this);const s=r.Z._createAt(e,t);if("same"==s.compareWith(this.focus))return;const o=this.anchor;this._ranges.pop(),"before"==s.compareWith(o)?this._addRange(new i.Z(s,o),!0):this._addRange(new i.Z(o,s)),this.fire("change")}_setRanges(e,t=!1){e=Array.from(e),this._ranges=[];for(const t of e)this._addRange(t);this._lastRangeBackward=!!t}_setFakeOptions(e={}){this._isFake=!!e.fake,this._fakeSelectionLabel=e.fake&&e.label||""}_addRange(e,t=!1){if(!(e instanceof i.Z))throw new c.ZP("view-selection-add-range-not-range",this);this._pushRange(e),this._lastRangeBackward=!!t}_pushRange(e){for(const t of this._ranges)if(e.isIntersecting(t))throw new c.ZP("view-selection-range-intersects",this,{addedRange:e,intersectingRange:t});this._ranges.push(new i.Z(e.start,e.end))}}u.prototype.is=function(e){return"selection"===e||"view:selection"===e}},"./packages/ckeditor5-engine/src/view/stylesmap.ts":(e,t,s)=>{"use strict";s.d(t,{A:()=>ee,Z:()=>Y});var o=s("./node_modules/lodash-es/isObject.js"),i=s("./node_modules/lodash-es/isArray.js"),r=s("./node_modules/lodash-es/isSymbol.js"),n=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,a=/^\w*$/;const c=function(e,t){if((0,i.Z)(e))return!1;var s=typeof e;return!("number"!=s&&"symbol"!=s&&"boolean"!=s&&null!=e&&!(0,r.Z)(e))||(a.test(e)||!n.test(e)||null!=t&&e in Object(t))};var l=s("./node_modules/lodash-es/_MapCache.js");function d(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError("Expected a function");var s=function(){var o=arguments,i=t?t.apply(this,o):o[0],r=s.cache;if(r.has(i))return r.get(i);var n=e.apply(this,o);return s.cache=r.set(i,n)||r,n};return s.cache=new(d.Cache||l.Z),s}d.Cache=l.Z;const h=d;var u=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,p=/\\(\\)?/g;const g=function(e){var t=h(e,(function(e){return 500===s.size&&s.clear(),e})),s=t.cache;return t}((function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(u,(function(e,s,o,i){t.push(o?i.replace(p,"$1"):s||e)})),t}));var f=s("./node_modules/lodash-es/toString.js");const m=function(e,t){return(0,i.Z)(e)?e:c(e,t)?[e]:g((0,f.Z)(e))};const k=function(e){var t=null==e?0:e.length;return t?e[t-1]:void 0};const b=function(e){if("string"==typeof e||(0,r.Z)(e))return e;var t=e+"";return"0"==t&&1/e==-Infinity?"-0":t};const _=function(e,t){for(var s=0,o=(t=m(t,e)).length;null!=e&&s<o;)e=e[b(t[s++])];return s&&s==o?e:void 0};const w=function(e,t,s){var o=-1,i=e.length;t<0&&(t=-t>i?0:i+t),(s=s>i?i:s)<0&&(s+=i),i=t>s?0:s-t>>>0,t>>>=0;for(var r=Array(i);++o<i;)r[o]=e[o+t];return r};const v=function(e,t){return t.length<2?e:_(e,w(t,0,-1))};const y=function(e,t){return t=m(t,e),null==(e=v(e,t))||delete e[b(k(t))]};const Z=function(e,t){return null==e||y(e,t)};const P=function(e,t,s){var o=null==e?void 0:_(e,t);return void 0===o?s:o};var x=s("./node_modules/lodash-es/_Stack.js"),T=s("./node_modules/lodash-es/_baseAssignValue.js"),A=s("./node_modules/lodash-es/eq.js");const C=function(e,t,s){(void 0!==s&&!(0,A.Z)(e[t],s)||void 0===s&&!(t in e))&&(0,T.Z)(e,t,s)};const E=function(e){return function(t,s,o){for(var i=-1,r=Object(t),n=o(t),a=n.length;a--;){var c=n[e?a:++i];if(!1===s(r[c],c,r))break}return t}}();var S=s("./node_modules/lodash-es/_cloneBuffer.js"),j=s("./node_modules/lodash-es/_cloneTypedArray.js"),O=s("./node_modules/lodash-es/_copyArray.js"),R=s("./node_modules/lodash-es/_initCloneObject.js"),M=s("./node_modules/lodash-es/isArguments.js"),N=s("./node_modules/lodash-es/isArrayLike.js"),V=s("./node_modules/lodash-es/isObjectLike.js");const I=function(e){return(0,V.Z)(e)&&(0,N.Z)(e)};var D=s("./node_modules/lodash-es/isBuffer.js"),z=s("./node_modules/lodash-es/isFunction.js"),B=s("./node_modules/lodash-es/isPlainObject.js"),F=s("./node_modules/lodash-es/isTypedArray.js");const L=function(e,t){if(("constructor"!==t||"function"!=typeof e[t])&&"__proto__"!=t)return e[t]};var W=s("./node_modules/lodash-es/_copyObject.js"),$=s("./node_modules/lodash-es/keysIn.js");const q=function(e){return(0,W.Z)(e,(0,$.Z)(e))};const H=function(e,t,s,r,n,a,c){var l=L(e,s),d=L(t,s),h=c.get(d);if(h)C(e,s,h);else{var u=a?a(l,d,s+"",e,t,c):void 0,p=void 0===u;if(p){var g=(0,i.Z)(d),f=!g&&(0,D.Z)(d),m=!g&&!f&&(0,F.Z)(d);u=d,g||f||m?(0,i.Z)(l)?u=l:I(l)?u=(0,O.Z)(l):f?(p=!1,u=(0,S.Z)(d,!0)):m?(p=!1,u=(0,j.Z)(d,!0)):u=[]:(0,B.Z)(d)||(0,M.Z)(d)?(u=l,(0,M.Z)(l)?u=q(l):(0,o.Z)(l)&&!(0,z.Z)(l)||(u=(0,R.Z)(d))):p=!1}p&&(c.set(d,u),n(u,d,r,a,c),c.delete(d)),C(e,s,u)}};const U=function e(t,s,i,r,n){t!==s&&E(s,(function(a,c){if(n||(n=new x.Z),(0,o.Z)(a))H(t,s,c,i,e,r,n);else{var l=r?r(L(t,c),a,c+"",t,s,n):void 0;void 0===l&&(l=a),C(t,c,l)}}),$.Z)};const K=(0,s("./node_modules/lodash-es/_createAssigner.js").Z)((function(e,t,s){U(e,t,s)}));var G=s("./node_modules/lodash-es/_assignValue.js"),J=s("./node_modules/lodash-es/_isIndex.js");const Q=function(e,t,s,i){if(!(0,o.Z)(e))return e;for(var r=-1,n=(t=m(t,e)).length,a=n-1,c=e;null!=c&&++r<n;){var l=b(t[r]),d=s;if("__proto__"===l||"constructor"===l||"prototype"===l)return e;if(r!=a){var h=c[l];void 0===(d=i?i(h,l,c):void 0)&&(d=(0,o.Z)(h)?h:(0,J.Z)(t[r+1])?[]:{})}(0,G.Z)(c,l,d),c=c[l]}return e};const X=function(e,t,s){return null==e?e:Q(e,t,s)};class Y{constructor(e){this._styles={},this._styleProcessor=e}get isEmpty(){const e=Object.entries(this._styles);return!Array.from(e).length}get size(){return this.isEmpty?0:this.getStyleNames().length}setTo(e){this.clear();const t=Array.from(function(e){let t=null,s=0,o=0,i=null;const r=new Map;if(""===e)return r;";"!=e.charAt(e.length-1)&&(e+=";");for(let n=0;n<e.length;n++){const a=e.charAt(n);if(null===t)switch(a){case":":i||(i=e.substr(s,n-s),o=n+1);break;case'"':case"'":t=a;break;case";":{const t=e.substr(o,n-o);i&&r.set(i.trim(),t.trim()),i=null,s=n+1;break}}else a===t&&(t=null)}return r}(e).entries());for(const[e,s]of t)this._styleProcessor.toNormalizedForm(e,s,this._styles)}has(e){if(this.isEmpty)return!1;const t=this._styleProcessor.getReducedForm(e,this._styles).find((([t])=>t===e));return Array.isArray(t)}set(e,t){if((0,o.Z)(e))for(const[t,s]of Object.entries(e))this._styleProcessor.toNormalizedForm(t,s,this._styles);else this._styleProcessor.toNormalizedForm(e,t,this._styles)}remove(e){const t=te(e);Z(this._styles,t),delete this._styles[e],this._cleanEmptyObjectsOnPath(t)}getNormalized(e){return this._styleProcessor.getNormalized(e,this._styles)}toString(){return this.isEmpty?"":this._getStylesEntries().map((e=>e.join(":"))).sort().join(";")+";"}getAsString(e){if(this.isEmpty)return;if(this._styles[e]&&!(0,o.Z)(this._styles[e]))return this._styles[e];const t=this._styleProcessor.getReducedForm(e,this._styles).find((([t])=>t===e));return Array.isArray(t)?t[1]:void 0}getStyleNames(e=!1){if(this.isEmpty)return[];if(e)return this._styleProcessor.getStyleNames(this._styles);return this._getStylesEntries().map((([e])=>e))}clear(){this._styles={}}_getStylesEntries(){const e=[],t=Object.keys(this._styles);for(const s of t)e.push(...this._styleProcessor.getReducedForm(s,this._styles));return e}_cleanEmptyObjectsOnPath(e){const t=e.split(".");if(!(t.length>1))return;const s=t.splice(0,t.length-1).join("."),o=P(this._styles,s);if(!o)return;!Array.from(Object.keys(o)).length&&this.remove(s)}}class ee{constructor(){this._normalizers=new Map,this._extractors=new Map,this._reducers=new Map,this._consumables=new Map}toNormalizedForm(e,t,s){if((0,o.Z)(t))se(s,te(e),t);else if(this._normalizers.has(e)){const o=this._normalizers.get(e),{path:i,value:r}=o(t);se(s,i,r)}else se(s,e,t)}getNormalized(e,t){if(!e)return K({},t);if(void 0!==t[e])return t[e];if(this._extractors.has(e)){const s=this._extractors.get(e);if("string"==typeof s)return P(t,s);const o=s(e,t);if(o)return o}return P(t,te(e))}getReducedForm(e,t){const s=this.getNormalized(e,t);if(void 0===s)return[];if(this._reducers.has(e)){return this._reducers.get(e)(s)}return[[e,s]]}getStyleNames(e){const t=Array.from(this._consumables.keys()).filter((t=>{const s=this.getNormalized(t,e);return s&&"object"==typeof s?Object.keys(s).length:s})),s=new Set([...t,...Object.keys(e)]);return Array.from(s.values())}getRelatedStyles(e){return this._consumables.get(e)||[]}setNormalizer(e,t){this._normalizers.set(e,t)}setExtractor(e,t){this._extractors.set(e,t)}setReducer(e,t){this._reducers.set(e,t)}setStyleRelation(e,t){this._mapStyleNames(e,t);for(const s of t)this._mapStyleNames(s,[e])}_mapStyleNames(e,t){this._consumables.has(e)||this._consumables.set(e,[]),this._consumables.get(e).push(...t)}}function te(e){return e.replace("-",".")}function se(e,t,s){let i=s;(0,o.Z)(s)&&(i=K({},P(e,t),s)),X(e,t,i)}},"./packages/ckeditor5-engine/src/view/text.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./packages/ckeditor5-engine/src/view/node.ts");class i extends o.Z{constructor(e,t){super(e),this._textData=t}get data(){return this._textData}get _data(){return this.data}set _data(e){this._fireChange("text",this),this._textData=e}isSimilar(e){return e instanceof i&&(this===e||this.data===e.data)}_clone(){return new i(this.document,this.data)}}i.prototype.is=function(e){return"$text"===e||"view:$text"===e||"text"===e||"view:text"===e||"node"===e||"view:node"===e}},"./packages/ckeditor5-engine/src/view/textproxy.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./packages/ckeditor5-engine/src/view/typecheckable.ts"),i=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class r extends o.Z{constructor(e,t,s){if(super(),this.textNode=e,t<0||t>e.data.length)throw new i.ZP("view-textproxy-wrong-offsetintext",this);if(s<0||t+s>e.data.length)throw new i.ZP("view-textproxy-wrong-length",this);this.data=e.data.substring(t,t+s),this.offsetInText=t}get offsetSize(){return this.data.length}get isPartial(){return this.data.length!==this.textNode.data.length}get parent(){return this.textNode.parent}get root(){return this.textNode.root}get document(){return this.textNode.document}getAncestors(e={}){const t=[];let s=e.includeSelf?this.textNode:this.parent;for(;null!==s;)t[e.parentFirst?"push":"unshift"](s),s=s.parent;return t}}r.prototype.is=function(e){return"$textProxy"===e||"view:$textProxy"===e||"textProxy"===e||"view:textProxy"===e}},"./packages/ckeditor5-engine/src/view/treewalker.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>c});var o=s("./packages/ckeditor5-engine/src/view/element.ts"),i=s("./packages/ckeditor5-engine/src/view/text.ts"),r=s("./packages/ckeditor5-engine/src/view/textproxy.ts"),n=s("./packages/ckeditor5-engine/src/view/position.ts"),a=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class c{constructor(e={}){if(!e.boundaries&&!e.startPosition)throw new a.ZP("view-tree-walker-no-start-position",null);if(e.direction&&"forward"!=e.direction&&"backward"!=e.direction)throw new a.ZP("view-tree-walker-unknown-direction",e.startPosition,{direction:e.direction});this.boundaries=e.boundaries||null,e.startPosition?this.position=n.Z._createAt(e.startPosition):this.position=n.Z._createAt(e.boundaries["backward"==e.direction?"end":"start"]),this.direction=e.direction||"forward",this.singleCharacters=!!e.singleCharacters,this.shallow=!!e.shallow,this.ignoreElementEnd=!!e.ignoreElementEnd,this._boundaryStartParent=this.boundaries?this.boundaries.start.parent:null,this._boundaryEndParent=this.boundaries?this.boundaries.end.parent:null}[Symbol.iterator](){return this}skip(e){let t,s,o;do{o=this.position,({done:t,value:s}=this.next())}while(!t&&e(s));t||(this.position=o)}next(){return"forward"==this.direction?this._next():this._previous()}_next(){let e=this.position.clone();const t=this.position,s=e.parent;if(null===s.parent&&e.offset===s.childCount)return{done:!0,value:void 0};if(s===this._boundaryEndParent&&e.offset==this.boundaries.end.offset)return{done:!0,value:void 0};let a;if(s instanceof i.Z){if(e.isAtEnd)return this.position=n.Z._createAfter(s),this._next();a=s.data[e.offset]}else a=s.getChild(e.offset);if(a instanceof o.Z)return this.shallow?e.offset++:e=new n.Z(a,0),this.position=e,this._formatReturnValue("elementStart",a,t,e,1);if(a instanceof i.Z){if(this.singleCharacters)return e=new n.Z(a,0),this.position=e,this._next();{let s,o=a.data.length;return a==this._boundaryEndParent?(o=this.boundaries.end.offset,s=new r.Z(a,0,o),e=n.Z._createAfter(s)):(s=new r.Z(a,0,a.data.length),e.offset++),this.position=e,this._formatReturnValue("text",s,t,e,o)}}if("string"==typeof a){let o;if(this.singleCharacters)o=1;else{o=(s===this._boundaryEndParent?this.boundaries.end.offset:s.data.length)-e.offset}const i=new r.Z(s,e.offset,o);return e.offset+=o,this.position=e,this._formatReturnValue("text",i,t,e,o)}return e=n.Z._createAfter(s),this.position=e,this.ignoreElementEnd?this._next():this._formatReturnValue("elementEnd",s,t,e)}_previous(){let e=this.position.clone();const t=this.position,s=e.parent;if(null===s.parent&&0===e.offset)return{done:!0,value:void 0};if(s==this._boundaryStartParent&&e.offset==this.boundaries.start.offset)return{done:!0,value:void 0};let a;if(s instanceof i.Z){if(e.isAtStart)return this.position=n.Z._createBefore(s),this._previous();a=s.data[e.offset-1]}else a=s.getChild(e.offset-1);if(a instanceof o.Z)return this.shallow?(e.offset--,this.position=e,this._formatReturnValue("elementStart",a,t,e,1)):(e=new n.Z(a,a.childCount),this.position=e,this.ignoreElementEnd?this._previous():this._formatReturnValue("elementEnd",a,t,e));if(a instanceof i.Z){if(this.singleCharacters)return e=new n.Z(a,a.data.length),this.position=e,this._previous();{let s,o=a.data.length;if(a==this._boundaryStartParent){const t=this.boundaries.start.offset;s=new r.Z(a,t,a.data.length-t),o=s.data.length,e=n.Z._createBefore(s)}else s=new r.Z(a,0,a.data.length),e.offset--;return this.position=e,this._formatReturnValue("text",s,t,e,o)}}if("string"==typeof a){let o;if(this.singleCharacters)o=1;else{const t=s===this._boundaryStartParent?this.boundaries.start.offset:0;o=e.offset-t}e.offset-=o;const i=new r.Z(s,e.offset,o);return this.position=e,this._formatReturnValue("text",i,t,e,o)}return e=n.Z._createBefore(s),this.position=e,this._formatReturnValue("elementStart",s,t,e,1)}_formatReturnValue(e,t,s,o,i){return t instanceof r.Z&&(t.offsetInText+t.data.length==t.textNode.data.length&&("forward"!=this.direction||this.boundaries&&this.boundaries.end.isEqual(this.position)?s=n.Z._createAfter(t.textNode):(o=n.Z._createAfter(t.textNode),this.position=o)),0===t.offsetInText&&("backward"!=this.direction||this.boundaries&&this.boundaries.start.isEqual(this.position)?s=n.Z._createBefore(t.textNode):(o=n.Z._createBefore(t.textNode),this.position=o))),{done:!1,value:{type:e,item:t,previousPosition:s,nextPosition:o,length:i}}}}},"./packages/ckeditor5-engine/src/view/typecheckable.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});class o{is(){throw new Error("is() method is abstract")}}},"./packages/ckeditor5-engine/src/view/uielement.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>a,h:()=>c});var o=s("./packages/ckeditor5-engine/src/view/element.ts"),i=s("./packages/ckeditor5-engine/src/view/node.ts"),r=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),n=s("./packages/ckeditor5-utils/src/keyboard.ts");class a extends o.Z{constructor(...e){super(...e),this.getFillerOffset=l}_insertChild(e,t){if(t&&(t instanceof i.Z||Array.from(t).length>0))throw new r.ZP("view-uielement-cannot-add",[this,t]);return 0}render(e,t){return this.toDomElement(e)}toDomElement(e){const t=e.createElement(this.name);for(const e of this.getAttributeKeys())t.setAttribute(e,this.getAttribute(e));return t}}function c(e){e.document.on("arrowKey",((t,s)=>function(e,t,s){if(t.keyCode==n.Do.arrowright){const e=t.domTarget.ownerDocument.defaultView.getSelection(),o=1==e.rangeCount&&e.getRangeAt(0).collapsed;if(o||t.shiftKey){const t=e.focusNode,i=e.focusOffset,r=s.domPositionToView(t,i);if(null===r)return;let n=!1;const a=r.getLastMatchingPosition((e=>(e.item.is("uiElement")&&(n=!0),!(!e.item.is("uiElement")&&!e.item.is("attributeElement")))));if(n){const t=s.viewPositionToDom(a);o?e.collapse(t.parent,t.offset):e.extend(t.parent,t.offset)}}}}(0,s,e.domConverter)),{priority:"low"})}function l(){return null}a.prototype.is=function(e,t){return t?t===this.name&&("uiElement"===e||"view:uiElement"===e||"element"===e||"view:element"===e):"uiElement"===e||"view:uiElement"===e||"element"===e||"view:element"===e||"node"===e||"view:node"===e}},"./packages/ckeditor5-utils/src/ckeditorerror.ts":(e,t,s)=>{"use strict";s.d(t,{H:()=>r,KE:()=>i,ZP:()=>o});class o extends Error{constructor(e,t,s){super(function(e,t){const s=new WeakSet,o=(e,t)=>{if("object"==typeof t&&null!==t){if(s.has(t))return`[object ${t.constructor.name}]`;s.add(t)}return t},i=t?` ${JSON.stringify(t,o)}`:"",r=n(e);return e+i+r}(e,s)),this.name="CKEditorError",this.context=t,this.data=s}is(e){return"CKEditorError"===e}static rethrowUnexpectedError(e,t){if(e.is&&e.is("CKEditorError"))throw e;const s=new o(e.message,t);throw s.stack=e.stack,s}}function i(e,t){console.warn(...a(e,t))}function r(e,t){console.error(...a(e,t))}function n(e){return`\nRead more: https://ckeditor.com/docs/ckeditor5/latest/support/error-codes.html#error-${e}`}function a(e,t){const s=n(e);return t?[e,t,s]:[e,s]}},"./packages/ckeditor5-utils/src/collection.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>a});var o=s("./packages/ckeditor5-utils/src/emittermixin.ts"),i=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),r=s("./packages/ckeditor5-utils/src/uid.ts"),n=s("./packages/ckeditor5-utils/src/isiterable.ts");class a extends o.Q5{constructor(e={},t={}){super();const s=(0,n.Z)(e);if(s||(t=e),this._items=[],this._itemMap=new Map,this._idProperty=t.idProperty||"id",this._bindToExternalToInternalMap=new WeakMap,this._bindToInternalToExternalMap=new WeakMap,this._skippedIndexesFromExternal=[],s)for(const t of e)this._items.push(t),this._itemMap.set(this._getItemIdBeforeAdding(t),t)}get length(){return this._items.length}get first(){return this._items[0]||null}get last(){return this._items[this.length-1]||null}add(e,t){return this.addMany([e],t)}addMany(e,t){if(void 0===t)t=this._items.length;else if(t>this._items.length||t<0)throw new i.ZP("collection-add-item-invalid-index",this);let s=0;for(const o of e){const e=this._getItemIdBeforeAdding(o),i=t+s;this._items.splice(i,0,o),this._itemMap.set(e,o),this.fire("add",o,i),s++}return this.fire("change",{added:e,removed:[],index:t}),this}get(e){let t;if("string"==typeof e)t=this._itemMap.get(e);else{if("number"!=typeof e)throw new i.ZP("collection-get-invalid-arg",this);t=this._items[e]}return t||null}has(e){if("string"==typeof e)return this._itemMap.has(e);{const t=e[this._idProperty];return t&&this._itemMap.has(t)}}getIndex(e){let t;return t="string"==typeof e?this._itemMap.get(e):e,t?this._items.indexOf(t):-1}remove(e){const[t,s]=this._remove(e);return this.fire("change",{added:[],removed:[t],index:s}),t}map(e,t){return this._items.map(e,t)}find(e,t){return this._items.find(e,t)}filter(e,t){return this._items.filter(e,t)}clear(){this._bindToCollection&&(this.stopListening(this._bindToCollection),this._bindToCollection=null);const e=Array.from(this._items);for(;this.length;)this._remove(0);this.fire("change",{added:[],removed:e,index:0})}bindTo(e){if(this._bindToCollection)throw new i.ZP("collection-bind-to-rebind",this);return this._bindToCollection=e,{as:e=>{this._setUpBindToBinding((t=>new e(t)))},using:e=>{"function"==typeof e?this._setUpBindToBinding(e):this._setUpBindToBinding((t=>t[e]))}}}_setUpBindToBinding(e){const t=this._bindToCollection,s=(s,o,i)=>{const r=t._bindToCollection==this,n=t._bindToInternalToExternalMap.get(o);if(r&&n)this._bindToExternalToInternalMap.set(o,n),this._bindToInternalToExternalMap.set(n,o);else{const s=e(o);if(!s)return void this._skippedIndexesFromExternal.push(i);let r=i;for(const e of this._skippedIndexesFromExternal)i>e&&r--;for(const e of t._skippedIndexesFromExternal)r>=e&&r++;this._bindToExternalToInternalMap.set(o,s),this._bindToInternalToExternalMap.set(s,o),this.add(s,r);for(let e=0;e<t._skippedIndexesFromExternal.length;e++)r<=t._skippedIndexesFromExternal[e]&&t._skippedIndexesFromExternal[e]++}};for(const e of t)s(0,e,t.getIndex(e));this.listenTo(t,"add",s),this.listenTo(t,"remove",((e,t,s)=>{const o=this._bindToExternalToInternalMap.get(t);o&&this.remove(o),this._skippedIndexesFromExternal=this._skippedIndexesFromExternal.reduce(((e,t)=>(s<t&&e.push(t-1),s>t&&e.push(t),e)),[])}))}_getItemIdBeforeAdding(e){const t=this._idProperty;let s;if(t in e){if(s=e[t],"string"!=typeof s)throw new i.ZP("collection-add-invalid-id",this);if(this.get(s))throw new i.ZP("collection-add-item-already-exists",this)}else e[t]=s=(0,r.Z)();return s}_remove(e){let t,s,o,r=!1;const n=this._idProperty;if("string"==typeof e?(s=e,o=this._itemMap.get(s),r=!o,o&&(t=this._items.indexOf(o))):"number"==typeof e?(t=e,o=this._items[t],r=!o,o&&(s=o[n])):(o=e,s=o[n],t=this._items.indexOf(o),r=-1==t||!this._itemMap.get(s)),r)throw new i.ZP("collection-remove-404",this);this._items.splice(t,1),this._itemMap.delete(s);const a=this._bindToInternalToExternalMap.get(o);return this._bindToInternalToExternalMap.delete(o),this._bindToExternalToInternalMap.delete(a),this.fire("remove",o,t),[o,t]}[Symbol.iterator](){return this._items[Symbol.iterator]()}}},"./packages/ckeditor5-utils/src/comparearrays.ts":(e,t,s)=>{"use strict";function o(e,t){const s=Math.min(e.length,t.length);for(let o=0;o<s;o++)if(e[o]!=t[o])return o;return e.length==t.length?"same":e.length<t.length?"prefix":"extension"}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/count.ts":(e,t,s)=>{"use strict";function o(e){let t=0;for(const s of e)t++;return t}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/diff.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./packages/ckeditor5-utils/src/fastdiff.ts");function i(e,t,s){s=s||function(e,t){return e===t};const o=e.length,r=t.length;if(o>200||r>200||o+r>300)return i.fastDiff(e,t,s,!0);let n,a;if(r<o){const s=e;e=t,t=s,n="delete",a="insert"}else n="insert",a="delete";const c=e.length,l=t.length,d=l-c,h={},u={};function p(o){const i=(void 0!==u[o-1]?u[o-1]:-1)+1,r=void 0!==u[o+1]?u[o+1]:-1,d=i>r?-1:1;h[o+d]&&(h[o]=h[o+d].slice(0)),h[o]||(h[o]=[]),h[o].push(i>r?n:a);let p=Math.max(i,r),g=p-o;for(;g<c&&p<l&&s(e[g],t[p]);)g++,p++,h[o].push("equal");return p}let g,f=0;do{for(g=-f;g<d;g++)u[g]=p(g);for(g=d+f;g>d;g--)u[g]=p(g);u[d]=p(d),f++}while(u[d]!==l);return h[d].slice(1)}i.fastDiff=o.Z},"./packages/ckeditor5-utils/src/dom/createelement.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>c});var o=s("./packages/ckeditor5-utils/src/isiterable.ts"),i=s("./node_modules/lodash-es/_baseGetTag.js"),r=s("./node_modules/lodash-es/isArray.js"),n=s("./node_modules/lodash-es/isObjectLike.js");const a=function(e){return"string"==typeof e||!(0,r.Z)(e)&&(0,n.Z)(e)&&"[object String]"==(0,i.Z)(e)};function c(e,t,s={},i=[]){const r=s&&s.xmlns,n=r?e.createElementNS(r,t):e.createElement(t);for(const e in s)n.setAttribute(e,s[e]);!a(i)&&(0,o.Z)(i)||(i=[i]);for(let t of i)a(t)&&(t=e.createTextNode(t)),n.appendChild(t);return n}},"./packages/ckeditor5-utils/src/dom/emittermixin.ts":(e,t,s)=>{"use strict";s.d(t,{Q:()=>c,Z:()=>a});var o=s("./packages/ckeditor5-utils/src/emittermixin.ts"),i=s("./packages/ckeditor5-utils/src/uid.ts"),r=s("./packages/ckeditor5-utils/src/dom/isnode.ts"),n=s("./packages/ckeditor5-utils/src/dom/iswindow.ts");function a(e){return class extends e{listenTo(e,t,s,i={}){if((0,r.Z)(e)||(0,n.Z)(e)){const o={capture:!!i.useCapture,passive:!!i.usePassive},r=this._getProxyEmitter(e,o)||new l(e,o);this.listenTo(r,t,s,i)}else o.Q5.prototype.listenTo.call(this,e,t,s,i)}stopListening(e,t,s){if((0,r.Z)(e)||(0,n.Z)(e)){const o=this._getAllProxyEmitters(e);for(const e of o)this.stopListening(e,t,s)}else o.Q5.prototype.stopListening.call(this,e,t,s)}_getProxyEmitter(e,t){return(0,o.Rl)(this,d(e,t))}_getAllProxyEmitters(e){return[{capture:!1,passive:!1},{capture:!1,passive:!0},{capture:!0,passive:!1},{capture:!0,passive:!0}].map((t=>this._getProxyEmitter(e,t))).filter((e=>!!e))}}}const c=a(o.Q5);["_getProxyEmitter","_getAllProxyEmitters","on","once","off","listenTo","stopListening","fire","delegate","stopDelegating","_addEventListener","_removeEventListener"].forEach((e=>{a[e]=c.prototype[e]}));class l extends o.Q5{constructor(e,t){super(),(0,o.Hv)(this,d(e,t)),this._domNode=e,this._options=t}attach(e){if(this._domListeners&&this._domListeners[e])return;const t=this._createDomListener(e);this._domNode.addEventListener(e,t,this._options),this._domListeners||(this._domListeners={}),this._domListeners[e]=t}detach(e){let t;!this._domListeners[e]||(t=this._events[e])&&t.callbacks.length||this._domListeners[e].removeListener()}_addEventListener(e,t,s){this.attach(e),o.Q5.prototype._addEventListener.call(this,e,t,s)}_removeEventListener(e,t){o.Q5.prototype._removeEventListener.call(this,e,t),this.detach(e)}_createDomListener(e){const t=t=>{this.fire(e,t)};return t.removeListener=()=>{this._domNode.removeEventListener(e,t,this._options),delete this._domListeners[e]},t}}function d(e,t){let s=function(e){return e["data-ck-expando"]||(e["data-ck-expando"]=(0,i.Z)())}(e);for(const e of Object.keys(t).sort())t[e]&&(s+="-"+e);return s}},"./packages/ckeditor5-utils/src/dom/getborderwidths.ts":(e,t,s)=>{"use strict";function o(e){const t=e.ownerDocument.defaultView.getComputedStyle(e);return{top:parseInt(t.borderTopWidth,10),right:parseInt(t.borderRightWidth,10),bottom:parseInt(t.borderBottomWidth,10),left:parseInt(t.borderLeftWidth,10)}}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/dom/global.ts":(e,t,s)=>{"use strict";let o;s.d(t,{Z:()=>i});try{o={window,document}}catch(e){o={window:{},document:{}}}const i=o},"./packages/ckeditor5-utils/src/dom/iscomment.ts":(e,t,s)=>{"use strict";function o(e){return e&&e.nodeType===Node.COMMENT_NODE}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/dom/isnode.ts":(e,t,s)=>{"use strict";function o(e){if(e){if(e.defaultView)return e instanceof e.defaultView.Document;if(e.ownerDocument&&e.ownerDocument.defaultView)return e instanceof e.ownerDocument.defaultView.Node}return!1}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/dom/isrange.ts":(e,t,s)=>{"use strict";function o(e){return"[object Range]"==Object.prototype.toString.apply(e)}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/dom/istext.ts":(e,t,s)=>{"use strict";function o(e){return"[object Text]"==Object.prototype.toString.call(e)}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/dom/isvisible.ts":(e,t,s)=>{"use strict";function o(e){return!!(e&&e.getClientRects&&e.getClientRects().length)}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/dom/iswindow.ts":(e,t,s)=>{"use strict";function o(e){const t=Object.prototype.toString.apply(e);return"[object Window]"==t||"[object global]"==t}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/dom/position.ts":(e,t,s)=>{"use strict";s.d(t,{x:()=>a});var o=s("./packages/ckeditor5-utils/src/dom/global.ts"),i=s("./packages/ckeditor5-utils/src/dom/rect.ts");var r=s("./packages/ckeditor5-utils/src/dom/getborderwidths.ts"),n=s("./node_modules/lodash-es/isFunction.js");function a({element:e,target:t,positions:s,limiter:r,fitInViewport:a,viewportOffsetConfig:c}){(0,n.Z)(t)&&(t=t()),(0,n.Z)(r)&&(r=r());const d=function(e){return e&&e.parentNode?e.offsetParent===o.Z.document.body?null:e.offsetParent:null}(e),h=new i.Z(e),u=new i.Z(t);let p;const g=a&&function(e){e=Object.assign({top:0,bottom:0,left:0,right:0},e);const t=new i.Z(o.Z.window);return t.top+=e.top,t.height-=e.top,t.bottom-=e.bottom,t.height-=e.bottom,t}(c)||null,f={targetRect:u,elementRect:h,positionedElementAncestor:d,viewportRect:g};if(r||a){const e=r&&new i.Z(r).getVisible();Object.assign(f,{limiterRect:e,viewportRect:g}),p=function(e,t){const{elementRect:s}=t,o=s.getArea(),i=e.map((e=>new l(e,t))).filter((e=>!!e.name));let r=0,n=null;for(const e of i){const{limiterIntersectionArea:t,viewportIntersectionArea:s}=e;if(t===o)return e;const i=s**2+t**2;i>r&&(r=i,n=e)}return n}(s,f)||new l(s[0],f)}else p=new l(s[0],f);return p}function c(e){const{scrollX:t,scrollY:s}=o.Z.window;return e.clone().moveBy(t,s)}class l{constructor(e,t){const s=e(t.targetRect,t.elementRect,t.viewportRect);if(!s)return;const{left:o,top:i,name:r,config:n}=s;this.name=r,this.config=n,this._positioningFunctionCorrdinates={left:o,top:i},this._options=t}get left(){return this._absoluteRect.left}get top(){return this._absoluteRect.top}get limiterIntersectionArea(){const e=this._options.limiterRect;if(e){const t=this._options.viewportRect;if(!t)return e.getIntersectionArea(this._rect);{const s=e.getIntersection(t);if(s)return s.getIntersectionArea(this._rect)}}return 0}get viewportIntersectionArea(){const e=this._options.viewportRect;return e?e.getIntersectionArea(this._rect):0}get _rect(){return this._cachedRect||(this._cachedRect=this._options.elementRect.clone().moveTo(this._positioningFunctionCorrdinates.left,this._positioningFunctionCorrdinates.top)),this._cachedRect}get _absoluteRect(){return this._cachedAbsoluteRect||(this._cachedAbsoluteRect=c(this._rect),this._options.positionedElementAncestor&&function(e,t){const s=c(new i.Z(t)),o=(0,r.Z)(t);let n=0,a=0;n-=s.left,a-=s.top,n+=t.scrollLeft,a+=t.scrollTop,n-=o.left,a-=o.top,e.moveBy(n,a)}(this._cachedAbsoluteRect,this._options.positionedElementAncestor)),this._cachedAbsoluteRect}}},"./packages/ckeditor5-utils/src/dom/rect.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>c});var o=s("./packages/ckeditor5-utils/src/dom/isrange.ts"),i=s("./packages/ckeditor5-utils/src/dom/iswindow.ts"),r=s("./packages/ckeditor5-utils/src/dom/getborderwidths.ts"),n=s("./packages/ckeditor5-utils/src/dom/istext.ts");const a=["top","right","bottom","left","width","height"];class c{constructor(e){const t=(0,o.Z)(e);if(Object.defineProperty(this,"_source",{value:e._source||e,writable:!0,enumerable:!1}),h(e)||t)if(t){const t=c.getDomRangeRects(e);l(this,c.getBoundingRect(t))}else l(this,e.getBoundingClientRect());else if((0,i.Z)(e)){const{innerWidth:t,innerHeight:s}=e;l(this,{top:0,right:t,bottom:s,left:0,width:t,height:s})}else l(this,e)}clone(){return new c(this)}moveTo(e,t){return this.top=t,this.right=e+this.width,this.bottom=t+this.height,this.left=e,this}moveBy(e,t){return this.top+=t,this.right+=e,this.left+=e,this.bottom+=t,this}getIntersection(e){const t={top:Math.max(this.top,e.top),right:Math.min(this.right,e.right),bottom:Math.min(this.bottom,e.bottom),left:Math.max(this.left,e.left),width:0,height:0};return t.width=t.right-t.left,t.height=t.bottom-t.top,t.width<0||t.height<0?null:new c(t)}getIntersectionArea(e){const t=this.getIntersection(e);return t?t.getArea():0}getArea(){return this.width*this.height}getVisible(){const e=this._source;let t=this.clone();if(!d(e)){let s=e.parentNode||e.commonAncestorContainer;for(;s&&!d(s);){const e=new c(s),o=t.getIntersection(e);if(!o)return null;o.getArea()<t.getArea()&&(t=o),s=s.parentNode}}return t}isEqual(e){for(const t of a)if(this[t]!==e[t])return!1;return!0}contains(e){const t=this.getIntersection(e);return!(!t||!t.isEqual(e))}excludeScrollbarsAndBorders(){const e=this._source;let t,s,o;if((0,i.Z)(e))t=e.innerWidth-e.document.documentElement.clientWidth,s=e.innerHeight-e.document.documentElement.clientHeight,o=e.getComputedStyle(e.document.documentElement).direction;else{const i=(0,r.Z)(e);t=e.offsetWidth-e.clientWidth-i.left-i.right,s=e.offsetHeight-e.clientHeight-i.top-i.bottom,o=e.ownerDocument.defaultView.getComputedStyle(e).direction,this.left+=i.left,this.top+=i.top,this.right-=i.right,this.bottom-=i.bottom,this.width=this.right-this.left,this.height=this.bottom-this.top}return this.width-=t,"ltr"===o?this.right-=t:this.left+=t,this.height-=s,this.bottom-=s,this}static getDomRangeRects(e){const t=[],s=Array.from(e.getClientRects());if(s.length)for(const e of s)t.push(new c(e));else{let s=e.startContainer;(0,n.Z)(s)&&(s=s.parentNode);const o=new c(s.getBoundingClientRect());o.right=o.left,o.width=0,t.push(o)}return t}static getBoundingRect(e){const t={left:Number.POSITIVE_INFINITY,top:Number.POSITIVE_INFINITY,right:Number.NEGATIVE_INFINITY,bottom:Number.NEGATIVE_INFINITY,width:0,height:0};let s=0;for(const o of e)s++,t.left=Math.min(t.left,o.left),t.top=Math.min(t.top,o.top),t.right=Math.max(t.right,o.right),t.bottom=Math.max(t.bottom,o.bottom);return 0==s?null:(t.width=t.right-t.left,t.height=t.bottom-t.top,new c(t))}}function l(e,t){for(const s of a)e[s]=t[s]}function d(e){return!!h(e)&&e===e.ownerDocument.body}function h(e){return null!==e&&"object"==typeof e&&1===e.nodeType&&"function"==typeof e.getBoundingClientRect}},"./packages/ckeditor5-utils/src/dom/resizeobserver.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./packages/ckeditor5-utils/src/dom/global.ts");class i{constructor(e,t){i._observerInstance||i._createObserver(),this._element=e,this._callback=t,i._addElementCallback(e,t),i._observerInstance.observe(e)}destroy(){i._deleteElementCallback(this._element,this._callback)}static _addElementCallback(e,t){i._elementCallbacks||(i._elementCallbacks=new Map);let s=i._elementCallbacks.get(e);s||(s=new Set,i._elementCallbacks.set(e,s)),s.add(t)}static _deleteElementCallback(e,t){const s=i._getElementCallbacks(e);s&&(s.delete(t),s.size||(i._elementCallbacks.delete(e),i._observerInstance.unobserve(e))),i._elementCallbacks&&!i._elementCallbacks.size&&(i._observerInstance=null,i._elementCallbacks=null)}static _getElementCallbacks(e){return i._elementCallbacks?i._elementCallbacks.get(e):null}static _createObserver(){i._observerInstance=new o.Z.window.ResizeObserver((e=>{for(const t of e){const e=i._getElementCallbacks(t.target);if(e)for(const s of e)s(t)}}))}}i._observerInstance=null,i._elementCallbacks=null},"./packages/ckeditor5-utils/src/dom/scroll.ts":(e,t,s)=>{"use strict";s.d(t,{F:()=>a,m:()=>n});var o=s("./packages/ckeditor5-utils/src/dom/isrange.ts"),i=s("./packages/ckeditor5-utils/src/dom/rect.ts"),r=s("./packages/ckeditor5-utils/src/dom/istext.ts");function n({target:e,viewportOffset:t=0}){const s=g(e);let o=s,i=null;for(;o;){let r;r=f(o==s?e:i),l(r,(()=>m(e,o)));const n=m(e,o);if(c(o,n,t),o.parent!=o){if(i=o.frameElement,o=o.parent,!i)return}else o=null}}function a(e){l(f(e),(()=>new i.Z(e)))}function c(e,t,s){const o=t.clone().moveBy(0,s),r=t.clone().moveBy(0,-s),n=new i.Z(e).excludeScrollbarsAndBorders();if(![r,o].every((e=>n.contains(e)))){let{scrollX:i,scrollY:a}=e;h(r,n)?a-=n.top-t.top+s:d(o,n)&&(a+=t.bottom-n.bottom+s),u(t,n)?i-=n.left-t.left+s:p(t,n)&&(i+=t.right-n.right+s),e.scrollTo(i,a)}}function l(e,t){const s=g(e);let o,r;for(;e!=s.document.body;)r=t(),o=new i.Z(e).excludeScrollbarsAndBorders(),o.contains(r)||(h(r,o)?e.scrollTop-=o.top-r.top:d(r,o)&&(e.scrollTop+=r.bottom-o.bottom),u(r,o)?e.scrollLeft-=o.left-r.left:p(r,o)&&(e.scrollLeft+=r.right-o.right)),e=e.parentNode}function d(e,t){return e.bottom>t.bottom}function h(e,t){return e.top<t.top}function u(e,t){return e.left<t.left}function p(e,t){return e.right>t.right}function g(e){return(0,o.Z)(e)?e.startContainer.ownerDocument.defaultView:e.ownerDocument.defaultView}function f(e){if((0,o.Z)(e)){let t=e.commonAncestorContainer;return(0,r.Z)(t)&&(t=t.parentNode),t}return e.parentNode}function m(e,t){const s=g(e),o=new i.Z(e);if(s===t)return o;{let e=s;for(;e!=t;){const t=e.frameElement,s=new i.Z(t).excludeScrollbarsAndBorders();o.moveBy(s.left,s.top),e=e.parent}}return o}},"./packages/ckeditor5-utils/src/dom/setdatainelement.ts":(e,t,s)=>{"use strict";function o(e,t){e instanceof HTMLTextAreaElement&&(e.value=t),e.innerHTML=t}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/dom/tounit.ts":(e,t,s)=>{"use strict";function o(e){return t=>t+e}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/emittermixin.ts":(e,t,s)=>{"use strict";s.d(t,{Hv:()=>g,Q5:()=>u,Rl:()=>p,ZP:()=>h});var o=s("./packages/ckeditor5-utils/src/eventinfo.ts"),i=s("./packages/ckeditor5-utils/src/uid.ts"),r=s("./packages/ckeditor5-utils/src/priorities.ts"),n=s("./packages/ckeditor5-utils/src/inserttopriorityarray.ts"),a=(s("./packages/ckeditor5-utils/src/version.ts"),s("./packages/ckeditor5-utils/src/ckeditorerror.ts"));const c=Symbol("listeningTo"),l=Symbol("emitterId"),d=Symbol("delegations");function h(e){return class extends e{on(e,t,s){this.listenTo(this,e,t,s)}once(e,t,s){let o=!1;this.listenTo(this,e,((e,...s)=>{o||(o=!0,e.off(),t.call(this,e,...s))}),s)}off(e,t){this.stopListening(this,e,t)}listenTo(e,t,s,o={}){let i,r;this[c]||(this[c]={});const n=this[c];f(e)||g(e);const a=f(e);(i=n[a])||(i=n[a]={emitter:e,callbacks:{}}),(r=i.callbacks[t])||(r=i.callbacks[t]=[]),r.push(s),function(e,t,s,o,i){t._addEventListener?t._addEventListener(s,o,i):e._addEventListener.call(t,s,o,i)}(this,e,t,s,o)}stopListening(e,t,s){const o=this[c];let i=e&&f(e);const r=o&&i?o[i]:void 0,n=r&&t?r.callbacks[t]:void 0;if(!(!o||e&&!r||t&&!n))if(s){w(this,e,t,s);-1!==n.indexOf(s)&&(1===n.length?delete r.callbacks[t]:w(this,e,t,s))}else if(n){for(;s=n.pop();)w(this,e,t,s);delete r.callbacks[t]}else if(r){for(t in r.callbacks)this.stopListening(e,t);delete o[i]}else{for(i in o)this.stopListening(o[i].emitter);delete this[c]}}fire(e,...t){try{const s=e instanceof o.Z?e:new o.Z(this,e),i=s.name;let r=b(this,i);if(s.path.push(this),r){const e=[s,...t];r=Array.from(r);for(let t=0;t<r.length&&(r[t].callback.apply(this,e),s.off.called&&(delete s.off.called,this._removeEventListener(i,r[t].callback)),!s.stop.called);t++);}const n=this[d];if(n){const e=n.get(i),o=n.get("*");e&&_(e,s,t),o&&_(o,s,t)}return s.return}catch(e){a.ZP.rethrowUnexpectedError(e,this)}}delegate(...e){return{to:(t,s)=>{this[d]||(this[d]=new Map),e.forEach((e=>{const o=this[d].get(e);o?o.set(t,s):this[d].set(e,new Map([[t,s]]))}))}}}stopDelegating(e,t){if(this[d])if(e)if(t){const s=this[d].get(e);s&&s.delete(t)}else this[d].delete(e);else this[d].clear()}_addEventListener(e,t,s){!function(e,t){const s=m(e);if(s[t])return;let o=t,i=null;const r=[];for(;""!==o&&!s[o];)s[o]={callbacks:[],childEvents:[]},r.push(s[o]),i&&s[o].childEvents.push(i),i=o,o=o.substr(0,o.lastIndexOf(":"));if(""!==o){for(const e of r)e.callbacks=s[o].callbacks.slice();s[o].childEvents.push(i)}}(this,e);const o=k(this,e),i={callback:t,priority:r.Z.get(s.priority)};for(const e of o)(0,n.Z)(e,i)}_removeEventListener(e,t){const s=k(this,e);for(const e of s)for(let s=0;s<e.length;s++)e[s].callback==t&&(e.splice(s,1),s--)}}}const u=h(Object);function p(e,t){const s=e[c];return s&&s[t]?s[t].emitter:null}function g(e,t){e[l]||(e[l]=t||(0,i.Z)())}function f(e){return e[l]}function m(e){return e._events||Object.defineProperty(e,"_events",{value:{}}),e._events}function k(e,t){const s=m(e)[t];if(!s)return[];let o=[s.callbacks];for(let t=0;t<s.childEvents.length;t++){const i=k(e,s.childEvents[t]);o=o.concat(i)}return o}function b(e,t){let s;return e._events&&(s=e._events[t])&&s.callbacks.length?s.callbacks:t.indexOf(":")>-1?b(e,t.substr(0,t.lastIndexOf(":"))):null}function _(e,t,s){for(let[i,r]of e){r?"function"==typeof r&&(r=r(t.name)):r=t.name;const e=new o.Z(t.source,r);e.path=[...t.path],i.fire(e,...s)}}function w(e,t,s,o){t._removeEventListener?t._removeEventListener(s,o):e._removeEventListener.call(t,s,o)}["on","once","off","listenTo","stopListening","fire","delegate","stopDelegating","_addEventListener","_removeEventListener"].forEach((e=>{h[e]=u.prototype[e]}))},"./packages/ckeditor5-utils/src/env.ts":(e,t,s)=>{"use strict";s.d(t,{ZP:()=>r});const o=function(){try{return navigator.userAgent.toLowerCase()}catch(e){return""}}(),i={isMac:n(o),isWindows:function(e){return e.indexOf("windows")>-1}(o),isGecko:function(e){return!!e.match(/gecko\/\d+/)}(o),isSafari:function(e){return e.indexOf(" applewebkit/")>-1&&-1===e.indexOf("chrome")}(o),isiOS:function(e){return!!e.match(/iphone|ipad/i)||n(e)&&navigator.maxTouchPoints>0}(o),isAndroid:function(e){return e.indexOf("android")>-1}(o),isBlink:function(e){return e.indexOf("chrome/")>-1&&e.indexOf("edge/")<0}(o),features:{isRegExpUnicodePropertySupported:function(){let e=!1;try{e=0==="ć".search(new RegExp("[\\p{L}]","u"))}catch(e){}return e}()}},r=i;function n(e){return e.indexOf("macintosh")>-1}},"./packages/ckeditor5-utils/src/eventinfo.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});const o=function(){return function e(){e.called=!0}};class i{constructor(e,t){this.source=e,this.name=t,this.path=[],this.stop=o(),this.off=o()}}},"./packages/ckeditor5-utils/src/fastdiff.ts":(e,t,s)=>{"use strict";function o(e,t,s,o=!1){s=s||function(e,t){return e===t};const n=Array.isArray(e)?e:Array.prototype.slice.call(e),a=Array.isArray(t)?t:Array.prototype.slice.call(t),c=function(e,t,s){const o=i(e,t,s);if(-1===o)return{firstIndex:-1,lastIndexOld:-1,lastIndexNew:-1};const n=r(e,o),a=r(t,o),c=i(n,a,s),l=e.length-c,d=t.length-c;return{firstIndex:o,lastIndexOld:l,lastIndexNew:d}}(n,a,s);return o?function(e,t){const{firstIndex:s,lastIndexOld:o,lastIndexNew:i}=e;if(-1===s)return Array(t).fill("equal");let r=[];s>0&&(r=r.concat(Array(s).fill("equal")));i-s>0&&(r=r.concat(Array(i-s).fill("insert")));o-s>0&&(r=r.concat(Array(o-s).fill("delete")));i<t&&(r=r.concat(Array(t-i).fill("equal")));return r}(c,a.length):function(e,t){const s=[],{firstIndex:o,lastIndexOld:i,lastIndexNew:r}=t;r-o>0&&s.push({index:o,type:"insert",values:e.slice(o,r)});i-o>0&&s.push({index:o+(r-o),type:"delete",howMany:i-o});return s}(a,c)}function i(e,t,s){for(let o=0;o<Math.max(e.length,t.length);o++)if(void 0===e[o]||void 0===t[o]||!s(e[o],t[o]))return o;return-1}function r(e,t){return e.slice(t).reverse()}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/first.ts":(e,t,s)=>{"use strict";function o(e){const t=e.next();return t.done?null:t.value}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/focustracker.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>n});var o=s("./packages/ckeditor5-utils/src/dom/emittermixin.ts"),i=s("./packages/ckeditor5-utils/src/observablemixin.ts"),r=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class n extends((0,o.Z)(i.y)){constructor(){super(),this.set("isFocused",!1),this.set("focusedElement",null),this._elements=new Set,this._nextEventLoopTimeout=null}add(e){if(this._elements.has(e))throw new r.ZP("focustracker-add-element-already-exist",this);this.listenTo(e,"focus",(()=>this._focus(e)),{useCapture:!0}),this.listenTo(e,"blur",(()=>this._blur()),{useCapture:!0}),this._elements.add(e)}remove(e){e===this.focusedElement&&this._blur(),this._elements.has(e)&&(this.stopListening(e),this._elements.delete(e))}destroy(){this.stopListening()}_focus(e){clearTimeout(this._nextEventLoopTimeout),this.focusedElement=e,this.isFocused=!0}_blur(){clearTimeout(this._nextEventLoopTimeout),this._nextEventLoopTimeout=setTimeout((()=>{this.focusedElement=null,this.isFocused=!1}),0)}}},"./packages/ckeditor5-utils/src/index.ts":(e,t,s)=>{"use strict";s.d(t,{Bb:()=>c.ZP,FE:()=>Z.Z,Xu:()=>h.Z,a6:()=>l,ln:()=>n.ZP,Rh:()=>x.Z,VD:()=>T.Z,go:()=>y.Z,Re:()=>a.Z,UL:()=>g.Z,do:()=>f.Z,az:()=>d.Z,Hg:()=>i.Z,OB:()=>o.ZP,Ps:()=>P.Z,Cq:()=>w.Cq,yy:()=>p,XU:()=>w.XU,j9:()=>v.j,mA:()=>w.mA,CO:()=>u.Z,dj:()=>w.dj,Zt:()=>w.Zt,pn:()=>b.Z,Do:()=>w.Do,H:()=>c.H,KE:()=>c.KE,CD:()=>r.Z,Zz:()=>w.Zz,tA:()=>E.Z,F0:()=>_.F,mR:()=>_.m,jS:()=>m.Z,qo:()=>A.Z,qL:()=>C.Z,nn:()=>k.Z,hQ:()=>S.Z,i8:()=>j.Z});var o=s("./packages/ckeditor5-utils/src/env.ts"),i=s("./packages/ckeditor5-utils/src/diff.ts"),r=s("./packages/ckeditor5-utils/src/mix.ts"),n=s("./packages/ckeditor5-utils/src/emittermixin.ts"),a=s("./packages/ckeditor5-utils/src/observablemixin.ts"),c=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class l{constructor(){this._replacedElements=[]}replace(e,t){this._replacedElements.push({element:e,newElement:t}),e.style.display="none",t&&e.parentNode.insertBefore(t,e.nextSibling)}restore(){this._replacedElements.forEach((({element:e,newElement:t})=>{e.style.display="",t&&t.remove()})),this._replacedElements=[]}}var d=s("./packages/ckeditor5-utils/src/dom/createelement.ts"),h=s("./packages/ckeditor5-utils/src/dom/emittermixin.ts"),u=s("./packages/ckeditor5-utils/src/dom/global.ts");function p(e){return e instanceof HTMLTextAreaElement?e.value:e.innerHTML}var g=s("./packages/ckeditor5-utils/src/dom/rect.ts"),f=s("./packages/ckeditor5-utils/src/dom/resizeobserver.ts"),m=s("./packages/ckeditor5-utils/src/dom/setdatainelement.ts"),k=s("./packages/ckeditor5-utils/src/dom/tounit.ts"),b=s("./packages/ckeditor5-utils/src/dom/isvisible.ts"),_=s("./packages/ckeditor5-utils/src/dom/scroll.ts"),w=s("./packages/ckeditor5-utils/src/keyboard.ts"),v=s("./packages/ckeditor5-utils/src/language.ts"),y=s("./packages/ckeditor5-utils/src/locale.ts"),Z=s("./packages/ckeditor5-utils/src/collection.ts"),P=s("./packages/ckeditor5-utils/src/first.ts"),x=s("./packages/ckeditor5-utils/src/focustracker.ts"),T=s("./packages/ckeditor5-utils/src/keystrokehandler.ts"),A=s("./packages/ckeditor5-utils/src/toarray.ts"),C=s("./packages/ckeditor5-utils/src/tomap.ts"),E=s("./packages/ckeditor5-utils/src/priorities.ts"),S=s("./packages/ckeditor5-utils/src/uid.ts"),j=s("./packages/ckeditor5-utils/src/version.ts")},"./packages/ckeditor5-utils/src/inserttopriorityarray.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./packages/ckeditor5-utils/src/priorities.ts");function i(e,t){const s=o.Z.get(t.priority);for(let i=0;i<e.length;i++)if(o.Z.get(e[i].priority)<s)return void e.splice(i,0,t);e.push(t)}},"./packages/ckeditor5-utils/src/isiterable.ts":(e,t,s)=>{"use strict";function o(e){return!(!e||!e[Symbol.iterator])}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/keyboard.ts":(e,t,s)=>{"use strict";s.d(t,{Cq:()=>l,Do:()=>a,XU:()=>h,Zt:()=>g,Zz:()=>d,dj:()=>u,mA:()=>p});var o=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),i=s("./packages/ckeditor5-utils/src/env.ts");const r={ctrl:"⌃",cmd:"⌘",alt:"⌥",shift:"⇧"},n={ctrl:"Ctrl+",alt:"Alt+",shift:"Shift+"},a=function(){const e={arrowleft:37,arrowup:38,arrowright:39,arrowdown:40,backspace:8,delete:46,enter:13,space:32,esc:27,tab:9,ctrl:1114112,shift:2228224,alt:4456448,cmd:8912896};for(let t=65;t<=90;t++){const s=String.fromCharCode(t);e[s.toLowerCase()]=t}for(let t=48;t<=57;t++)e[t-48]=t;for(let t=112;t<=123;t++)e["f"+(t-111)]=t;for(const t of"`-=[];',./\\")e[t]=t.charCodeAt(0);return e}(),c=Object.fromEntries(Object.entries(a).map((([e,t])=>[t,e.charAt(0).toUpperCase()+e.slice(1)])));function l(e){let t;if("string"==typeof e){if(t=a[e.toLowerCase()],!t)throw new o.ZP("keyboard-unknown-key",null,{key:e})}else t=e.keyCode+(e.altKey?a.alt:0)+(e.ctrlKey?a.ctrl:0)+(e.shiftKey?a.shift:0)+(e.metaKey?a.cmd:0);return t}function d(e){return"string"==typeof e&&(e=function(e){return e.split("+").map((e=>e.trim()))}(e)),e.map((e=>"string"==typeof e?function(e){if(e.endsWith("!"))return l(e.slice(0,-1));const t=l(e);return i.ZP.isMac&&t==a.ctrl?a.cmd:t}(e):e)).reduce(((e,t)=>t+e),0)}function h(e){let t=d(e);return Object.entries(i.ZP.isMac?r:n).reduce(((e,[s,o])=>(0!=(t&a[s])&&(t&=~a[s],e+=o),e)),"")+(t?c[t]:"")}function u(e){return e==a.arrowright||e==a.arrowleft||e==a.arrowup||e==a.arrowdown}function p(e,t){const s="ltr"===t;switch(e){case a.arrowleft:return s?"left":"right";case a.arrowright:return s?"right":"left";case a.arrowup:return"up";case a.arrowdown:return"down"}}function g(e,t){const s=p(e,t);return"down"===s||"right"===s}},"./packages/ckeditor5-utils/src/keystrokehandler.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./packages/ckeditor5-utils/src/dom/emittermixin.ts"),i=s("./packages/ckeditor5-utils/src/keyboard.ts");class r{constructor(){this._listener=Object.create(o.Z)}listenTo(e){this._listener.listenTo(e,"keydown",((e,t)=>{this._listener.fire("_keydown:"+(0,i.Cq)(t),t)}))}set(e,t,s={}){const o=(0,i.Zz)(e),r=s.priority;this._listener.listenTo(this._listener,"_keydown:"+o,((e,s)=>{t(s,(()=>{s.preventDefault(),s.stopPropagation(),e.stop()})),e.return=!0}),{priority:r})}press(e){return!!this._listener.fire("_keydown:"+(0,i.Cq)(e),e)}destroy(){this._listener.stopListening()}}},"./packages/ckeditor5-utils/src/language.ts":(e,t,s)=>{"use strict";s.d(t,{j:()=>i});const o=["ar","ara","fa","per","fas","he","heb","ku","kur","ug","uig"];function i(e){return o.includes(e)?"rtl":"ltr"}},"./packages/ckeditor5-utils/src/locale.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>c});var o=s("./packages/ckeditor5-utils/src/toarray.ts"),i=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),r=s("./packages/ckeditor5-utils/src/dom/global.ts");function n(e,t,s=1){if("number"!=typeof s)throw new i.ZP("translation-service-quantity-not-a-number",null,{quantity:s});const o=Object.keys(r.Z.window.CKEDITOR_TRANSLATIONS).length;1===o&&(e=Object.keys(r.Z.window.CKEDITOR_TRANSLATIONS)[0]);const n=t.id||t.string;if(0===o||!function(e,t){return!!r.Z.window.CKEDITOR_TRANSLATIONS[e]&&!!r.Z.window.CKEDITOR_TRANSLATIONS[e].dictionary[t]}(e,n))return 1!==s?t.plural:t.string;const a=r.Z.window.CKEDITOR_TRANSLATIONS[e].dictionary,c=r.Z.window.CKEDITOR_TRANSLATIONS[e].getPluralForm||(e=>1===e?0:1),l=a[n];if("string"==typeof l)return l;return l[Number(c(s))]}r.Z.window.CKEDITOR_TRANSLATIONS||(r.Z.window.CKEDITOR_TRANSLATIONS={});var a=s("./packages/ckeditor5-utils/src/language.ts");class c{constructor(e={}){this.uiLanguage=e.uiLanguage||"en",this.contentLanguage=e.contentLanguage||this.uiLanguage,this.uiLanguageDirection=(0,a.j)(this.uiLanguage),this.contentLanguageDirection=(0,a.j)(this.contentLanguage),this.t=(e,t)=>this._t(e,t)}get language(){return console.warn("locale-deprecated-language-property: The Locale#language property has been deprecated and will be removed in the near future. Please use #uiLanguage and #contentLanguage properties instead."),this.uiLanguage}_t(e,t=[]){t=(0,o.Z)(t),"string"==typeof e&&(e={string:e});const s=!!e.plural?t[0]:1;return function(e,t){return e.replace(/%(\d+)/g,((e,s)=>s<t.length?t[s]:e))}(n(this.uiLanguage,e,s),t)}}},"./packages/ckeditor5-utils/src/mix.ts":(e,t,s)=>{"use strict";function o(e,...t){t.forEach((t=>{const s=Object.getOwnPropertyNames(t),o=Object.getOwnPropertySymbols(t);s.concat(o).forEach((s=>{if(s in e.prototype)return;if("function"==typeof t&&("length"==s||"name"==s||"prototype"==s))return;const o=Object.getOwnPropertyDescriptor(t,s);o.enumerable=!1,Object.defineProperty(e.prototype,s,o)}))}))}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/observablemixin.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>h,y:()=>u});var o=s("./packages/ckeditor5-utils/src/emittermixin.ts"),i=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),r=s("./node_modules/lodash-es/isObject.js");const n=Symbol("observableProperties"),a=Symbol("boundObservables"),c=Symbol("boundProperties"),l=Symbol("decoratedMethods"),d=Symbol("decoratedOriginal");function h(e){return class extends e{set(e,t){if((0,r.Z)(e))return void Object.keys(e).forEach((t=>{this.set(t,e[t])}),this);p(this);const s=this[n];if(e in this&&!s.has(e))throw new i.ZP("observable-set-cannot-override",this);Object.defineProperty(this,e,{enumerable:!0,configurable:!0,get:()=>s.get(e),set(t){const o=s.get(e);let i=this.fire(`set:${e}`,e,t,o);void 0===i&&(i=t),o===i&&s.has(e)||(s.set(e,i),this.fire(`change:${e}`,e,i,o))}}),this[e]=t}bind(...e){if(!e.length||!m(e))throw new i.ZP("observable-bind-wrong-properties",this);if(new Set(e).size!==e.length)throw new i.ZP("observable-bind-duplicate-properties",this);p(this);const t=this[c];e.forEach((e=>{if(t.has(e))throw new i.ZP("observable-bind-rebind",this)}));const s=new Map;return e.forEach((e=>{const o={property:e,to:[]};t.set(e,o),s.set(e,o)})),{to:g,toMany:f,_observable:this,_bindProperties:e,_to:[],_bindings:s}}unbind(...e){if(!this[n])return;const t=this[c],s=this[a];if(e.length){if(!m(e))throw new i.ZP("observable-unbind-wrong-properties",this);e.forEach((e=>{const o=t.get(e);o&&(o.to.forEach((([e,t])=>{const i=s.get(e),r=i[t];r.delete(o),r.size||delete i[t],Object.keys(i).length||(s.delete(e),this.stopListening(e,"change"))})),t.delete(e))}))}else s.forEach(((e,t)=>{this.stopListening(t,"change")})),s.clear(),t.clear()}decorate(e){p(this);const t=this[e];if(!t)throw new i.ZP("observablemixin-cannot-decorate-undefined",this,{object:this,methodName:e});this.on(e,((e,s)=>{e.return=t.apply(this,s)})),this[e]=function(...t){return this.fire(e,t)},this[e][d]=t,this[l]||(this[l]=[]),this[l].push(e)}stopListening(e,t,s){if(!e&&this[l]){for(const e of this[l])this[e]=this[e][d];delete this[l]}o.Q5.prototype.stopListening.call(this,e,t,s)}}}const u=h(o.Q5);function p(e){e[n]||(Object.defineProperty(e,n,{value:new Map}),Object.defineProperty(e,a,{value:new Map}),Object.defineProperty(e,c,{value:new Map}))}function g(...e){const t=function(...e){if(!e.length)throw new i.ZP("observable-bind-to-parse-error",null);const t={to:[]};let s;"function"==typeof e[e.length-1]&&(t.callback=e.pop());return e.forEach((e=>{if("string"==typeof e)s.properties.push(e);else{if("object"!=typeof e)throw new i.ZP("observable-bind-to-parse-error",null);s={observable:e,properties:[]},t.to.push(s)}})),t}(...e),s=Array.from(this._bindings.keys()),o=s.length;if(!t.callback&&t.to.length>1)throw new i.ZP("observable-bind-to-no-callback",this);if(o>1&&t.callback)throw new i.ZP("observable-bind-to-extra-callback",this);var r;t.to.forEach((e=>{if(e.properties.length&&e.properties.length!==o)throw new i.ZP("observable-bind-to-properties-length",this);e.properties.length||(e.properties=this._bindProperties)})),this._to=t.to,t.callback&&(this._bindings.get(s[0]).callback=t.callback),r=this._observable,this._to.forEach((e=>{const t=r[a];let s;t.get(e.observable)||r.listenTo(e.observable,"change",((o,i)=>{s=t.get(e.observable)[i],s&&s.forEach((e=>{k(r,e.property)}))}))})),function(e){let t;e._bindings.forEach(((s,o)=>{e._to.forEach((i=>{t=i.properties[s.callback?0:e._bindProperties.indexOf(o)],s.to.push([i.observable,t]),function(e,t,s,o){const i=e[a],r=i.get(s),n=r||{};n[o]||(n[o]=new Set);n[o].add(t),r||i.set(s,n)}(e._observable,s,i.observable,t)}))}))}(this),this._bindProperties.forEach((e=>{k(this._observable,e)}))}function f(e,t,s){if(this._bindings.size>1)throw new i.ZP("observable-bind-to-many-not-one-binding",this);this.to(...function(e,t){const s=e.map((e=>[e,t]));return Array.prototype.concat.apply([],s)}(e,t),s)}function m(e){return e.every((e=>"string"==typeof e))}function k(e,t){const s=e[c].get(t);let o;s.callback?o=s.callback.apply(e,s.to.map((e=>e[0][e[1]]))):(o=s.to[0],o=o[0][o[1]]),Object.prototype.hasOwnProperty.call(e,t)?e[t]=o:e.set(t,o)}["set","bind","unbind","decorate","on","once","off","listenTo","stopListening","fire","delegate","stopDelegating","_addEventListener","_removeEventListener"].forEach((e=>{h[e]=u.prototype[e]}))},"./packages/ckeditor5-utils/src/priorities.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o={get(e="normal"){return"number"!=typeof e?this[e]||this.normal:e},highest:1e5,high:1e3,normal:0,low:-1e3,lowest:-1e5}},"./packages/ckeditor5-utils/src/toarray.ts":(e,t,s)=>{"use strict";function o(e){return Array.isArray(e)?e:[e]}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/tomap.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./packages/ckeditor5-utils/src/isiterable.ts");function i(e){return(0,o.Z)(e)?new Map(e):function(e){const t=new Map;for(const s in e)t.set(s,e[s]);return t}(e)}},"./packages/ckeditor5-utils/src/uid.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});const o=new Array(256).fill("").map(((e,t)=>("0"+t.toString(16)).slice(-2)));function i(){const e=4294967296*Math.random()>>>0,t=4294967296*Math.random()>>>0,s=4294967296*Math.random()>>>0,i=4294967296*Math.random()>>>0;return"e"+o[e>>0&255]+o[e>>8&255]+o[e>>16&255]+o[e>>24&255]+o[t>>0&255]+o[t>>8&255]+o[t>>16&255]+o[t>>24&255]+o[s>>0&255]+o[s>>8&255]+o[s>>16&255]+o[s>>24&255]+o[i>>0&255]+o[i>>8&255]+o[i>>16&255]+o[i>>24&255]}},"./packages/ckeditor5-utils/src/version.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");const i="35.2.1",r=i,n="object"==typeof window?window:s.g;if(n.CKEDITOR_VERSION)throw new o.ZP("ckeditor-duplicated-modules",null);n.CKEDITOR_VERSION=i},"./packages/ckeditor5-core/src/command.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./packages/ckeditor5-utils/src/observablemixin.ts"),i=s("./packages/ckeditor5-utils/src/mix.ts");class r{constructor(e){this.editor=e,this.set("value",void 0),this.set("isEnabled",!1),this.affectsData=!0,this._disableStack=new Set,this.decorate("execute"),this.listenTo(this.editor.model.document,"change",(()=>{this.refresh()})),this.on("execute",(e=>{this.isEnabled||e.stop()}),{priority:"high"}),this.listenTo(e,"change:isReadOnly",((e,t,s)=>{s&&this.affectsData?this.forceDisabled("readOnlyMode"):this.clearForceDisabled("readOnlyMode")}))}refresh(){this.isEnabled=!0}forceDisabled(e){this._disableStack.add(e),1==this._disableStack.size&&(this.on("set:isEnabled",n,{priority:"highest"}),this.isEnabled=!1)}clearForceDisabled(e){this._disableStack.delete(e),0==this._disableStack.size&&(this.off("set:isEnabled",n),this.refresh())}execute(){}destroy(){this.stopListening()}}function n(e){e.return=!1,e.stop()}(0,i.Z)(r,o.Z)},"./packages/ckeditor5-core/src/contextplugin.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./packages/ckeditor5-utils/src/observablemixin.ts"),i=s("./packages/ckeditor5-utils/src/mix.ts");class r{constructor(e){this.context=e}destroy(){this.stopListening()}static get isContextPlugin(){return!0}}(0,i.Z)(r,o.Z)},"./packages/ckeditor5-core/src/index.js":(e,t,s)=>{"use strict";s.d(t,{mY:()=>i.Z,_y:()=>_,eO:()=>w.Z,W9:()=>B,ML:()=>S,S8:()=>V,xK:()=>L,AJ:()=>n,lR:()=>$.Z,Sy:()=>o.Z,P$:()=>z,ci:()=>U,Nu:()=>W});var o=s("./packages/ckeditor5-core/src/plugin.js"),i=s("./packages/ckeditor5-core/src/command.js"),r=s("./packages/ckeditor5-utils/src/inserttopriorityarray.ts");class n extends i.Z{constructor(e){super(e),this._childCommandsDefinitions=[]}refresh(){}execute(...e){const t=this._getFirstEnabledCommand();return!!t&&t.execute(e)}registerChildCommand(e,t={priority:"normal"}){(0,r.Z)(this._childCommandsDefinitions,{command:e,priority:t.priority}),e.on("change:isEnabled",(()=>this._checkEnabled())),this._checkEnabled()}_checkEnabled(){this.isEnabled=!!this._getFirstEnabledCommand()}_getFirstEnabledCommand(){const e=this._childCommandsDefinitions.find((({command:e})=>e.isEnabled));return e&&e.command}}var a=s("./node_modules/lodash-es/isPlainObject.js"),c=s("./node_modules/lodash-es/cloneDeepWith.js"),l=s("./node_modules/lodash-es/isElement.js");class d{constructor(e,t){this._config={},t&&this.define(h(t)),e&&this._setObjectToTarget(this._config,e)}set(e,t){this._setToTarget(this._config,e,t)}define(e,t){this._setToTarget(this._config,e,t,!0)}get(e){return this._getFromSource(this._config,e)}*names(){for(const e of Object.keys(this._config))yield e}_setToTarget(e,t,s,o=!1){if((0,a.Z)(t))return void this._setObjectToTarget(e,t,o);const i=t.split(".");t=i.pop();for(const t of i)(0,a.Z)(e[t])||(e[t]={}),e=e[t];if((0,a.Z)(s))return(0,a.Z)(e[t])||(e[t]={}),e=e[t],void this._setObjectToTarget(e,s,o);o&&void 0!==e[t]||(e[t]=s)}_getFromSource(e,t){const s=t.split(".");t=s.pop();for(const t of s){if(!(0,a.Z)(e[t])){e=null;break}e=e[t]}return e?h(e[t]):void 0}_setObjectToTarget(e,t,s){Object.keys(t).forEach((o=>{this._setToTarget(e,o,t[o],s)}))}}function h(e){return(0,c.Z)(e,u)}function u(e){return(0,l.Z)(e)?e:void 0}var p=s("./packages/ckeditor5-utils/src/collection.ts"),g=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),f=s("./packages/ckeditor5-utils/src/emittermixin.ts"),m=s("./packages/ckeditor5-utils/src/mix.ts");class k{constructor(e,t=[],s=[]){this._context=e,this._plugins=new Map,this._availablePlugins=new Map;for(const e of t)e.pluginName&&this._availablePlugins.set(e.pluginName,e);this._contextPlugins=new Map;for(const[e,t]of s)this._contextPlugins.set(e,t),this._contextPlugins.set(t,e),e.pluginName&&this._availablePlugins.set(e.pluginName,e)}*[Symbol.iterator](){for(const e of this._plugins)"function"==typeof e[0]&&(yield e)}get(e){const t=this._plugins.get(e);if(!t){let t=e;throw"function"==typeof e&&(t=e.pluginName||e.name),new g.ZP("plugincollection-plugin-not-loaded",this._context,{plugin:t})}return t}has(e){return this._plugins.has(e)}init(e,t=[],s=[]){const o=this,i=this._context;!function e(t,s=new Set){t.forEach((t=>{a(t)&&(s.has(t)||(s.add(t),t.pluginName&&!o._availablePlugins.has(t.pluginName)&&o._availablePlugins.set(t.pluginName,t),t.requires&&e(t.requires,s)))}))}(e),h(e);const r=[...function e(t,s=new Set){return t.map((e=>a(e)?e:o._availablePlugins.get(e))).reduce(((t,o)=>s.has(o)?t:(s.add(o),o.requires&&(h(o.requires,o),e(o.requires,s).forEach((e=>t.add(e)))),t.add(o))),new Set)}(e.filter((e=>!l(e,t))))];!function(e,t){for(const s of t){if("function"!=typeof s)throw new g.ZP("plugincollection-replace-plugin-invalid-type",null,{pluginItem:s});const t=s.pluginName;if(!t)throw new g.ZP("plugincollection-replace-plugin-missing-name",null,{pluginItem:s});if(s.requires&&s.requires.length)throw new g.ZP("plugincollection-plugin-for-replacing-cannot-have-dependencies",null,{pluginName:t});const i=o._availablePlugins.get(t);if(!i)throw new g.ZP("plugincollection-plugin-for-replacing-not-exist",null,{pluginName:t});const r=e.indexOf(i);if(-1===r){if(o._contextPlugins.has(i))return;throw new g.ZP("plugincollection-plugin-for-replacing-not-loaded",null,{pluginName:t})}if(i.requires&&i.requires.length)throw new g.ZP("plugincollection-replaced-plugin-cannot-have-dependencies",null,{pluginName:t});e.splice(r,1,s),o._availablePlugins.set(t,s)}}(r,s);const n=function(e){return e.map((e=>{const t=o._contextPlugins.get(e)||new e(i);return o._add(e,t),t}))}(r);return u(n,"init").then((()=>u(n,"afterInit"))).then((()=>n));function a(e){return"function"==typeof e}function c(e){return a(e)&&e.isContextPlugin}function l(e,t){return t.some((t=>t===e||(d(e)===t||d(t)===e)))}function d(e){return a(e)?e.pluginName||e.name:e}function h(e,s=null){e.map((e=>a(e)?e:o._availablePlugins.get(e)||e)).forEach((e=>{!function(e,t){if(a(e))return;if(t)throw new g.ZP("plugincollection-soft-required",i,{missingPlugin:e,requiredBy:d(t)});throw new g.ZP("plugincollection-plugin-not-found",i,{plugin:e})}(e,s),function(e,t){if(!c(t))return;if(c(e))return;throw new g.ZP("plugincollection-context-required",i,{plugin:d(e),requiredBy:d(t)})}(e,s),function(e,s){if(!s)return;if(!l(e,t))return;throw new g.ZP("plugincollection-required",i,{plugin:d(e),requiredBy:d(s)})}(e,s)}))}function u(e,t){return e.reduce(((e,s)=>s[t]?o._contextPlugins.has(s)?e:e.then(s[t].bind(s)):e),Promise.resolve())}}destroy(){const e=[];for(const[,t]of this)"function"!=typeof t.destroy||this._contextPlugins.has(t)||e.push(t.destroy());return Promise.all(e)}_add(e,t){this._plugins.set(e,t);const s=e.pluginName;if(s){if(this._plugins.has(s))throw new g.ZP("plugincollection-plugin-name-conflict",null,{pluginName:s,plugin1:this._plugins.get(s).constructor,plugin2:e});this._plugins.set(s,t)}}}(0,m.Z)(k,f.ZP);var b=s("./packages/ckeditor5-utils/src/locale.ts");class _{constructor(e){this.config=new d(e,this.constructor.defaultConfig);const t=this.constructor.builtinPlugins;this.config.define("plugins",t),this.plugins=new k(this,t);const s=this.config.get("language")||{};this.locale=new b.Z({uiLanguage:"string"==typeof s?s:s.ui,contentLanguage:this.config.get("language.content")}),this.t=this.locale.t,this.editors=new p.Z,this._contextOwner=null}initPlugins(){const e=this.config.get("plugins")||[],t=this.config.get("substitutePlugins")||[];for(const s of e.concat(t)){if("function"!=typeof s)throw new g.ZP("context-initplugins-constructor-only",null,{Plugin:s});if(!0!==s.isContextPlugin)throw new g.ZP("context-initplugins-invalid-plugin",null,{Plugin:s})}return this.plugins.init(e,[],t)}destroy(){return Promise.all(Array.from(this.editors,(e=>e.destroy()))).then((()=>this.plugins.destroy()))}_addEditor(e,t){if(this._contextOwner)throw new g.ZP("context-addeditor-private-context");this.editors.add(e),t&&(this._contextOwner=e)}_removeEditor(e){return this.editors.has(e)&&this.editors.remove(e),this._contextOwner===e?this.destroy():Promise.resolve()}_getEditorConfig(){const e={};for(const t of this.config.names())["plugins","removePlugins","extraPlugins"].includes(t)||(e[t]=this.config.get(t));return e}static create(e){return new Promise((t=>{const s=new this(e);t(s.initPlugins().then((()=>s)))}))}}var w=s("./packages/ckeditor5-core/src/contextplugin.js"),v=s("./packages/ckeditor5-engine/src/controller/editingcontroller.ts");class y{constructor(){this._commands=new Map}add(e,t){this._commands.set(e,t)}get(e){return this._commands.get(e)}execute(e,...t){const s=this.get(e);if(!s)throw new g.ZP("commandcollection-command-not-found",this,{commandName:e});return s.execute(...t)}*names(){yield*this._commands.keys()}*commands(){yield*this._commands.values()}[Symbol.iterator](){return this._commands[Symbol.iterator]()}destroy(){for(const e of this.commands())e.destroy()}}var Z=s("./packages/ckeditor5-engine/src/controller/datacontroller.ts"),P=s("./packages/ckeditor5-engine/src/conversion/conversion.ts"),x=s("./packages/ckeditor5-engine/src/model/model.ts"),T=s("./packages/ckeditor5-utils/src/keystrokehandler.ts");class A extends T.Z{constructor(e){super(),this.editor=e}set(e,t,s={}){if("string"==typeof t){const e=t;t=(t,s)=>{this.editor.execute(e),s()}}super.set(e,t,s)}}var C=s("./packages/ckeditor5-utils/src/observablemixin.ts"),E=s("./packages/ckeditor5-engine/src/view/stylesmap.ts");class S{constructor(e={}){const t=e.language||this.constructor.defaultConfig&&this.constructor.defaultConfig.language;this._context=e.context||new _({language:t}),this._context._addEditor(this,!e.context);const s=Array.from(this.constructor.builtinPlugins||[]);this.config=new d(e,this.constructor.defaultConfig),this.config.define("plugins",s),this.config.define(this._context._getEditorConfig()),this.plugins=new k(this,s,this._context.plugins),this.locale=this._context.locale,this.t=this.locale.t,this._readOnlyLocks=new Set,this.commands=new y,this.set("state","initializing"),this.once("ready",(()=>this.state="ready"),{priority:"high"}),this.once("destroy",(()=>this.state="destroyed"),{priority:"high"}),this.model=new x.Z;const o=new E.A;this.data=new Z.Z(this.model,o),this.editing=new v.Z(this.model,o),this.editing.view.document.bind("isReadOnly").to(this),this.conversion=new P.Z([this.editing.downcastDispatcher,this.data.downcastDispatcher],this.data.upcastDispatcher),this.conversion.addAlias("dataDowncast",this.data.downcastDispatcher),this.conversion.addAlias("editingDowncast",this.editing.downcastDispatcher),this.keystrokes=new A(this),this.keystrokes.listenTo(this.editing.view.document)}get isReadOnly(){return this._readOnlyLocks.size>0}set isReadOnly(e){throw new g.ZP("editor-isreadonly-has-no-setter")}enableReadOnlyMode(e){if("string"!=typeof e&&"symbol"!=typeof e)throw new g.ZP("editor-read-only-lock-id-invalid",null,{lockId:e});this._readOnlyLocks.has(e)||(this._readOnlyLocks.add(e),1===this._readOnlyLocks.size&&this.fire("change:isReadOnly","isReadOnly",!0,!1))}disableReadOnlyMode(e){if("string"!=typeof e&&"symbol"!=typeof e)throw new g.ZP("editor-read-only-lock-id-invalid",null,{lockId:e});this._readOnlyLocks.has(e)&&(this._readOnlyLocks.delete(e),0===this._readOnlyLocks.size&&this.fire("change:isReadOnly","isReadOnly",!1,!0))}initPlugins(){const e=this.config,t=e.get("plugins"),s=e.get("removePlugins")||[],o=e.get("extraPlugins")||[],i=e.get("substitutePlugins")||[];return this.plugins.init(t.concat(o),s,i)}destroy(){let e=Promise.resolve();return"initializing"==this.state&&(e=new Promise((e=>this.once("ready",e)))),e.then((()=>{this.fire("destroy"),this.stopListening(),this.commands.destroy()})).then((()=>this.plugins.destroy())).then((()=>{this.model.destroy(),this.data.destroy(),this.editing.destroy(),this.keystrokes.destroy()})).then((()=>this._context._removeEditor(this)))}execute(...e){try{return this.commands.execute(...e)}catch(e){g.ZP.rethrowUnexpectedError(e,this)}}focus(){this.editing.view.focus()}}(0,m.Z)(S,C.Z);class j{constructor(e){this.editor=e,this._components=new Map}*names(){for(const e of this._components.values())yield e.originalName}add(e,t){this._components.set(O(e),{callback:t,originalName:e})}create(e){if(!this.has(e))throw new g.ZP("componentfactory-item-missing",this,{name:e});return this._components.get(O(e)).callback(this.editor.locale)}has(e){return this._components.has(O(e))}}function O(e){return String(e).toLowerCase()}var R=s("./packages/ckeditor5-utils/src/focustracker.ts"),M=s("./packages/ckeditor5-ui/src/tooltipmanager.js"),N=s("./packages/ckeditor5-utils/src/dom/isvisible.ts");class V{constructor(e){this.editor=e,this.componentFactory=new j(e),this.focusTracker=new R.Z,this.tooltipManager=new M.Z(e),this.set("viewportOffset",this._readViewportOffsetFromConfig()),this.isReady=!1,this.once("ready",(()=>{this.isReady=!0})),this._editableElementsMap=new Map,this._focusableToolbarDefinitions=[],this.listenTo(e.editing.view.document,"layoutChanged",(()=>this.update())),this._initFocusTracking()}get element(){return null}update(){this.fire("update")}destroy(){this.stopListening(),this.focusTracker.destroy(),this.tooltipManager.destroy(this.editor);for(const e of this._editableElementsMap.values())e.ckeditorInstance=null;this._editableElementsMap=new Map,this._focusableToolbarDefinitions=[]}setEditableElement(e,t){this._editableElementsMap.set(e,t),t.ckeditorInstance||(t.ckeditorInstance=this.editor),this.focusTracker.add(t);const s=()=>{this.editor.editing.view.getDomRoot(e)||this.editor.keystrokes.listenTo(t)};this.isReady?s():this.once("ready",s)}getEditableElement(e="main"){return this._editableElementsMap.get(e)}getEditableElementsNames(){return this._editableElementsMap.keys()}addToolbar(e,t={}){e.isRendered?(this.focusTracker.add(e.element),this.editor.keystrokes.listenTo(e.element)):e.once("render",(()=>{this.focusTracker.add(e.element),this.editor.keystrokes.listenTo(e.element)})),this._focusableToolbarDefinitions.push({toolbarView:e,options:t})}get _editableElements(){return console.warn("editor-ui-deprecated-editable-elements: The EditorUI#_editableElements property has been deprecated and will be removed in the near future.",{editorUI:this}),this._editableElementsMap}_readViewportOffsetFromConfig(){const e=this.editor,t=e.config.get("ui.viewportOffset");if(t)return t;const s=e.config.get("toolbar.viewportTopOffset");return s?(console.warn("editor-ui-deprecated-viewport-offset-config: The `toolbar.vieportTopOffset` configuration option is deprecated. It will be removed from future CKEditor versions. Use `ui.viewportOffset.top` instead."),{top:s}):{top:0}}_initFocusTracking(){const e=this.editor,t=e.editing.view;let s,o;e.keystrokes.set("Alt+F10",((e,i)=>{const r=this.focusTracker.focusedElement;Array.from(this._editableElementsMap.values()).includes(r)&&!Array.from(t.domRoots.values()).includes(r)&&(s=r);const n=this._getCurrentFocusedToolbarDefinition();n&&o||(o=this._getFocusableCandidateToolbarDefinitions(n));for(let e=0;e<o.length;e++){const e=o.shift();if(o.push(e),e!==n&&this._focusFocusableCandidateToolbar(e)){n&&n.options.afterBlur&&n.options.afterBlur();break}}i()})),e.keystrokes.set("Esc",((t,o)=>{const i=this._getCurrentFocusedToolbarDefinition();i&&(s?(s.focus(),s=null):e.editing.view.focus(),i.options.afterBlur&&i.options.afterBlur(),o())}))}_getFocusableCandidateToolbarDefinitions(){const e=[];for(const t of this._focusableToolbarDefinitions){const{toolbarView:s,options:o}=t;((0,N.Z)(s.element)||o.beforeFocus)&&e.push(t)}return e.sort(((e,t)=>I(e)-I(t))),e}_getCurrentFocusedToolbarDefinition(){for(const e of this._focusableToolbarDefinitions)if(e.toolbarView.element&&e.toolbarView.element.contains(this.focusTracker.focusedElement))return e;return null}_focusFocusableCandidateToolbar(e){const{toolbarView:t,options:{beforeFocus:s}}=e;return s&&s(),!!(0,N.Z)(t.element)&&(t.focus(),!0)}}function I(e){const{toolbarView:t,options:s}=e;let o=10;return(0,N.Z)(t.element)&&o--,s.isContextual&&o--,o}(0,m.Z)(V,C.Z);var D=s("./node_modules/lodash-es/isFunction.js");function z(e){if(!(0,D.Z)(e.updateSourceElement))throw new g.ZP("attachtoform-missing-elementapi-interface",e);const t=e.sourceElement;if(t&&"textarea"===t.tagName.toLowerCase()&&t.form){let s;const o=t.form,i=()=>e.updateSourceElement();(0,D.Z)(o.submit)&&(s=o.submit,o.submit=()=>{i(),s.apply(o)}),o.addEventListener("submit",i),e.on("destroy",(()=>{o.removeEventListener("submit",i),s&&(o.submit=s)}))}}const B={setData(e){this.data.set(e)},getData(e){return this.data.get(e)}};var F=s("./packages/ckeditor5-utils/src/dom/setdatainelement.ts");const L={updateSourceElement(e=this.data.get()){if(!this.sourceElement)throw new g.ZP("editor-missing-sourceelement",this);const t=this.config.get("updateSourceElementOnDestroy"),s=this.sourceElement instanceof HTMLTextAreaElement;t||s?(0,F.Z)(this.sourceElement,e):(0,F.Z)(this.sourceElement,"")}};function W(e){const t=e.sourceElement;if(t){if(t.ckeditorInstance)throw new g.ZP("editor-source-element-already-used",e);t.ckeditorInstance=e,e.once("destroy",(()=>{delete t.ckeditorInstance}))}}var $=s("./packages/ckeditor5-core/src/pendingactions.js");var q=s("./packages/ckeditor5-core/theme/icons/pilcrow.svg");var H=s("./packages/ckeditor5-core/theme/icons/three-vertical-dots.svg");const U={bold:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M10.187 17H5.773c-.637 0-1.092-.138-1.364-.415-.273-.277-.409-.718-.409-1.323V4.738c0-.617.14-1.062.419-1.332.279-.27.73-.406 1.354-.406h4.68c.69 0 1.288.041 1.793.124.506.083.96.242 1.36.478.341.197.644.447.906.75a3.262 3.262 0 0 1 .808 2.162c0 1.401-.722 2.426-2.167 3.075C15.05 10.175 16 11.315 16 13.01a3.756 3.756 0 0 1-2.296 3.504 6.1 6.1 0 0 1-1.517.377c-.571.073-1.238.11-2 .11zm-.217-6.217H7v4.087h3.069c1.977 0 2.965-.69 2.965-2.072 0-.707-.256-1.22-.768-1.537-.512-.319-1.277-.478-2.296-.478zM7 5.13v3.619h2.606c.729 0 1.292-.067 1.69-.2a1.6 1.6 0 0 0 .91-.765c.165-.267.247-.566.247-.897 0-.707-.26-1.176-.778-1.409-.519-.232-1.31-.348-2.375-.348H7z"/></svg>',cancel:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m11.591 10.177 4.243 4.242a1 1 0 0 1-1.415 1.415l-4.242-4.243-4.243 4.243a1 1 0 0 1-1.414-1.415l4.243-4.242L4.52 5.934A1 1 0 0 1 5.934 4.52l4.243 4.243 4.242-4.243a1 1 0 1 1 1.415 1.414l-4.243 4.243z"/></svg>',caption:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2 16h9a1 1 0 0 1 0 2H2a1 1 0 0 1 0-2z"/><path d="M17 1a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h14zm0 1.5H3a.5.5 0 0 0-.492.41L2.5 3v9a.5.5 0 0 0 .41.492L3 12.5h14a.5.5 0 0 0 .492-.41L17.5 12V3a.5.5 0 0 0-.41-.492L17 2.5z" fill-opacity=".6"/></svg>',check:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M6.972 16.615a.997.997 0 0 1-.744-.292l-4.596-4.596a1 1 0 1 1 1.414-1.414l3.926 3.926 9.937-9.937a1 1 0 0 1 1.414 1.415L7.717 16.323a.997.997 0 0 1-.745.292z"/></svg>',cog:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m11.333 2 .19 2.263a5.899 5.899 0 0 1 1.458.604L14.714 3.4 16.6 5.286l-1.467 1.733c.263.452.468.942.605 1.46L18 8.666v2.666l-2.263.19a5.899 5.899 0 0 1-.604 1.458l1.467 1.733-1.886 1.886-1.733-1.467a5.899 5.899 0 0 1-1.46.605L11.334 18H8.667l-.19-2.263a5.899 5.899 0 0 1-1.458-.604L5.286 16.6 3.4 14.714l1.467-1.733a5.899 5.899 0 0 1-.604-1.458L2 11.333V8.667l2.262-.189a5.899 5.899 0 0 1 .605-1.459L3.4 5.286 5.286 3.4l1.733 1.467a5.899 5.899 0 0 1 1.46-.605L8.666 2h2.666zM10 6.267a3.733 3.733 0 1 0 0 7.466 3.733 3.733 0 0 0 0-7.466z"/></svg>',eraser:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m8.636 9.531-2.758 3.94a.5.5 0 0 0 .122.696l3.224 2.284h1.314l2.636-3.736L8.636 9.53zm.288 8.451L5.14 15.396a2 2 0 0 1-.491-2.786l6.673-9.53a2 2 0 0 1 2.785-.49l3.742 2.62a2 2 0 0 1 .491 2.785l-7.269 10.053-2.147-.066z"/><path d="M4 18h5.523v-1H4zm-2 0h1v-1H2z"/></svg>',image:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M6.91 10.54c.26-.23.64-.21.88.03l3.36 3.14 2.23-2.06a.64.64 0 0 1 .87 0l2.52 2.97V4.5H3.2v10.12l3.71-4.08zm10.27-7.51c.6 0 1.09.47 1.09 1.05v11.84c0 .59-.49 1.06-1.09 1.06H2.79c-.6 0-1.09-.47-1.09-1.06V4.08c0-.58.49-1.05 1.1-1.05h14.38zm-5.22 5.56a1.96 1.96 0 1 1 3.4-1.96 1.96 1.96 0 0 1-3.4 1.96z"/></svg>',lowVision:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M5.085 6.22 2.943 4.078a.75.75 0 1 1 1.06-1.06l2.592 2.59A11.094 11.094 0 0 1 10 5.068c4.738 0 8.578 3.101 8.578 5.083 0 1.197-1.401 2.803-3.555 3.887l1.714 1.713a.75.75 0 0 1-.09 1.138.488.488 0 0 1-.15.084.75.75 0 0 1-.821-.16L6.17 7.304c-.258.11-.51.233-.757.365l6.239 6.24-.006.005.78.78c-.388.094-.78.166-1.174.215l-1.11-1.11h.011L4.55 8.197a7.2 7.2 0 0 0-.665.514l-.112.098 4.897 4.897-.005.006 1.276 1.276a10.164 10.164 0 0 1-1.477-.117l-.479-.479-.009.009-4.863-4.863-.022.031a2.563 2.563 0 0 0-.124.2c-.043.077-.08.158-.108.241a.534.534 0 0 0-.028.133.29.29 0 0 0 .008.072.927.927 0 0 0 .082.226c.067.133.145.26.234.379l3.242 3.365.025.01.59.623c-3.265-.918-5.59-3.155-5.59-4.668 0-1.194 1.448-2.838 3.663-3.93zm7.07.531a4.632 4.632 0 0 1 1.108 5.992l.345.344.046-.018a9.313 9.313 0 0 0 2-1.112c.256-.187.5-.392.727-.613.137-.134.27-.277.392-.431.072-.091.141-.185.203-.286.057-.093.107-.19.148-.292a.72.72 0 0 0 .036-.12.29.29 0 0 0 .008-.072.492.492 0 0 0-.028-.133.999.999 0 0 0-.036-.096 2.165 2.165 0 0 0-.071-.145 2.917 2.917 0 0 0-.125-.2 3.592 3.592 0 0 0-.263-.335 5.444 5.444 0 0 0-.53-.523 7.955 7.955 0 0 0-1.054-.768 9.766 9.766 0 0 0-1.879-.891c-.337-.118-.68-.219-1.027-.301zm-2.85.21-.069.002a.508.508 0 0 0-.254.097.496.496 0 0 0-.104.679.498.498 0 0 0 .326.199l.045.005c.091.003.181.003.272.012a2.45 2.45 0 0 1 2.017 1.513c.024.061.043.125.069.185a.494.494 0 0 0 .45.287h.008a.496.496 0 0 0 .35-.158.482.482 0 0 0 .13-.335.638.638 0 0 0-.048-.219 3.379 3.379 0 0 0-.36-.723 3.438 3.438 0 0 0-2.791-1.543l-.028-.001h-.013z"/></svg>',importExport:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#a)"><path clip-rule="evenodd" d="M19 4.5 14 0H3v12.673l.868-1.041c.185-.222.4-.402.632-.54V1.5h8v5h5v7.626a2.24 2.24 0 0 1 1.5.822V4.5ZM14 5V2l3.3 3H14Zm-3.692 12.5c.062.105.133.206.213.303L11.52 19H8v-.876a2.243 2.243 0 0 0 1.82-.624h.488Zm7.518-.657a.75.75 0 0 0-1.152-.96L15.5 17.29V12H14v5.29l-1.174-1.408a.75.75 0 0 0-1.152.96l2.346 2.816a.95.95 0 0 0 1.46 0l2.346-2.815Zm-15.056-.38a.75.75 0 0 1-.096-1.056l2.346-2.815a.95.95 0 0 1 1.46 0l2.346 2.815a.75.75 0 1 1-1.152.96L6.5 14.96V20H5v-5.04l-1.174 1.408a.75.75 0 0 1-1.056.096Z"/></g><defs><clipPath id="a"><path d="M0 0h20v20H0z"/></clipPath></defs></svg>',paragraph:s("./packages/ckeditor5-core/theme/icons/paragraph.svg").Z,plus:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M10 2a1 1 0 0 0-1 1v6H3a1 1 0 1 0 0 2h6v6a1 1 0 1 0 2 0v-6h6a1 1 0 1 0 0-2h-6V3a1 1 0 0 0-1-1Z"/></svg>',text:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#a)"><path d="M9.816 11.5 7.038 4.785 4.261 11.5h5.555Zm.62 1.5H3.641l-1.666 4.028H.312l5.789-14h1.875l5.789 14h-1.663L10.436 13Z"/><path clip-rule="evenodd" d="m12.09 17-.534-1.292.848-1.971.545 1.319L12.113 17h-.023Zm1.142-5.187.545 1.319L15.5 9.13l1.858 4.316h-3.45l.398.965h3.467L18.887 17H20l-3.873-9h-1.254l-1.641 3.813Z"/></g><defs><clipPath id="a"><path d="M0 0h20v20H0z"/></clipPath></defs></svg>',alignBottom:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m9.239 13.938-2.88-1.663a.75.75 0 0 1 .75-1.3L9 12.067V4.75a.75.75 0 1 1 1.5 0v7.318l1.89-1.093a.75.75 0 0 1 .75 1.3l-2.879 1.663a.752.752 0 0 1-.511.187.752.752 0 0 1-.511-.187zM4.25 17a.75.75 0 1 1 0-1.5h10.5a.75.75 0 0 1 0 1.5H4.25z"/></svg>',alignMiddle:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M9.75 11.875a.752.752 0 0 1 .508.184l2.883 1.666a.75.75 0 0 1-.659 1.344l-.091-.044-1.892-1.093.001 4.318a.75.75 0 1 1-1.5 0v-4.317l-1.89 1.092a.75.75 0 0 1-.75-1.3l2.879-1.663a.752.752 0 0 1 .51-.187zM15.25 9a.75.75 0 1 1 0 1.5H4.75a.75.75 0 1 1 0-1.5h10.5zM9.75.375a.75.75 0 0 1 .75.75v4.318l1.89-1.093.092-.045a.75.75 0 0 1 .659 1.344l-2.883 1.667a.752.752 0 0 1-.508.184.752.752 0 0 1-.511-.187L6.359 5.65a.75.75 0 0 1 .75-1.299L9 5.442V1.125a.75.75 0 0 1 .75-.75z"/></svg>',alignTop:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m10.261 7.062 2.88 1.663a.75.75 0 0 1-.75 1.3L10.5 8.933v7.317a.75.75 0 1 1-1.5 0V8.932l-1.89 1.093a.75.75 0 0 1-.75-1.3l2.879-1.663a.752.752 0 0 1 .511-.187.752.752 0 0 1 .511.187zM15.25 4a.75.75 0 1 1 0 1.5H4.75a.75.75 0 0 1 0-1.5h10.5z"/></svg>',alignLeft:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2 3.75c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0 8c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0 4c0 .414.336.75.75.75h9.929a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0-8c0 .414.336.75.75.75h9.929a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75z"/></svg>',alignCenter:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2 3.75c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0 8c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm2.286 4c0 .414.336.75.75.75h9.928a.75.75 0 1 0 0-1.5H5.036a.75.75 0 0 0-.75.75zm0-8c0 .414.336.75.75.75h9.928a.75.75 0 1 0 0-1.5H5.036a.75.75 0 0 0-.75.75z"/></svg>',alignRight:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M18 3.75a.75.75 0 0 1-.75.75H2.75a.75.75 0 1 1 0-1.5h14.5a.75.75 0 0 1 .75.75zm0 8a.75.75 0 0 1-.75.75H2.75a.75.75 0 1 1 0-1.5h14.5a.75.75 0 0 1 .75.75zm0 4a.75.75 0 0 1-.75.75H7.321a.75.75 0 1 1 0-1.5h9.929a.75.75 0 0 1 .75.75zm0-8a.75.75 0 0 1-.75.75H7.321a.75.75 0 1 1 0-1.5h9.929a.75.75 0 0 1 .75.75z"/></svg>',alignJustify:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2 3.75c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0 8c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0 4c0 .414.336.75.75.75h9.929a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0-8c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75z"/></svg>',objectLeft:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path opacity=".5" d="M2 3h16v1.5H2zm11.5 9H18v1.5h-4.5zm0-3H18v1.5h-4.5zm0-3H18v1.5h-4.5zM2 15h16v1.5H2z"/><path d="M12.003 7v5.5a1 1 0 0 1-1 1H2.996a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h8.007a1 1 0 0 1 1 1zm-1.506.5H3.5V12h6.997V7.5z"/></svg>',objectCenter:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path opacity=".5" d="M2 3h16v1.5H2zm0 12h16v1.5H2z"/><path d="M15.003 7v5.5a1 1 0 0 1-1 1H5.996a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h8.007a1 1 0 0 1 1 1zm-1.506.5H6.5V12h6.997V7.5z"/></svg>',objectRight:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path opacity=".5" d="M2 3h16v1.5H2zm0 12h16v1.5H2zm0-9h5v1.5H2zm0 3h5v1.5H2zm0 3h5v1.5H2z"/><path d="M18.003 7v5.5a1 1 0 0 1-1 1H8.996a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h8.007a1 1 0 0 1 1 1zm-1.506.5H9.5V12h6.997V7.5z"/></svg>',objectFullWidth:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path opacity=".5" d="M2 3h16v1.5H2zm0 12h16v1.5H2z"/><path d="M18 7v5.5a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1zm-1.505.5H3.504V12h12.991V7.5z"/></svg>',objectInline:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path opacity=".5" d="M2 3h16v1.5H2zm11.5 9H18v1.5h-4.5zM2 15h16v1.5H2z"/><path d="M12.003 7v5.5a1 1 0 0 1-1 1H2.996a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h8.007a1 1 0 0 1 1 1zm-1.506.5H3.5V12h6.997V7.5z"/></svg>',objectBlockLeft:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path opacity=".5" d="M2 3h16v1.5H2zm0 12h16v1.5H2z"/><path d="M12.003 7v5.5a1 1 0 0 1-1 1H2.996a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h8.007a1 1 0 0 1 1 1zm-1.506.5H3.5V12h6.997V7.5z"/></svg>',objectBlockRight:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path opacity=".5" d="M2 3h16v1.5H2zm0 12h16v1.5H2z"/><path d="M18.003 7v5.5a1 1 0 0 1-1 1H8.996a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h8.007a1 1 0 0 1 1 1zm-1.506.5H9.5V12h6.997V7.5z"/></svg>',objectSizeFull:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path d="M2.5 17v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zM1 15.5v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm0-2v1h-1v-1h1zm-19 0v1H0v-1h1zM14.5 2v1h-1V2h1zm2 0v1h-1V2h1zm2 0v1h-1V2h1zm-8 0v1h-1V2h1zm-2 0v1h-1V2h1zm-2 0v1h-1V2h1zm-2 0v1h-1V2h1zm8 0v1h-1V2h1zm-10 0v1h-1V2h1z"/><path d="M18.095 2H1.905C.853 2 0 2.895 0 4v12c0 1.105.853 2 1.905 2h16.19C19.147 18 20 17.105 20 16V4c0-1.105-.853-2-1.905-2zm0 1.5c.263 0 .476.224.476.5v12c0 .276-.213.5-.476.5H1.905a.489.489 0 0 1-.476-.5V4c0-.276.213-.5.476-.5h16.19z"/></svg>',objectSizeLarge:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path d="M2.5 17v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zM1 15.5v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm0-2v1h-1v-1h1zm-19 0v1H0v-1h1zM14.5 2v1h-1V2h1zm2 0v1h-1V2h1zm2 0v1h-1V2h1zm-8 0v1h-1V2h1zm-2 0v1h-1V2h1zm-2 0v1h-1V2h1zm-2 0v1h-1V2h1zm8 0v1h-1V2h1zm-10 0v1h-1V2h1z"/><path d="M13 6H2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2zm0 1.5a.5.5 0 0 1 .5.5v8a.5.5 0 0 1-.5.5H2a.5.5 0 0 1-.5-.5V8a.5.5 0 0 1 .5-.5h11z"/></svg>',objectSizeSmall:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path d="M2.5 17v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zM1 15.5v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm0-2v1h-1v-1h1zm-19 0v1H0v-1h1zM14.5 2v1h-1V2h1zm2 0v1h-1V2h1zm2 0v1h-1V2h1zm-8 0v1h-1V2h1zm-2 0v1h-1V2h1zm-2 0v1h-1V2h1zm-2 0v1h-1V2h1zm8 0v1h-1V2h1zm-10 0v1h-1V2h1z"/><path d="M7 10H2a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h5a2 2 0 0 0 2-2v-4a2 2 0 0 0-2-2zm0 1.5a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5H2a.5.5 0 0 1-.5-.5v-4a.5.5 0 0 1 .5-.5h5z"/></svg>',objectSizeMedium:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path d="M2.5 17v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zM1 15.5v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm0-2v1h-1v-1h1zm-19 0v1H0v-1h1zM14.5 2v1h-1V2h1zm2 0v1h-1V2h1zm2 0v1h-1V2h1zm-8 0v1h-1V2h1zm-2 0v1h-1V2h1zm-2 0v1h-1V2h1zm-2 0v1h-1V2h1zm8 0v1h-1V2h1zm-10 0v1h-1V2h1z"/><path d="M10 8H2a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2v-6a2 2 0 0 0-2-2zm0 1.5a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-.5.5H2a.5.5 0 0 1-.5-.5v-6a.5.5 0 0 1 .5-.5h8z"/></svg>',pencil:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m7.3 17.37-.061.088a1.518 1.518 0 0 1-.934.535l-4.178.663-.806-4.153a1.495 1.495 0 0 1 .187-1.058l.056-.086L8.77 2.639c.958-1.351 2.803-1.076 4.296-.03 1.497 1.047 2.387 2.693 1.433 4.055L7.3 17.37zM9.14 4.728l-5.545 8.346 3.277 2.294 5.544-8.346L9.14 4.728zM6.07 16.512l-3.276-2.295.53 2.73 2.746-.435zM9.994 3.506 13.271 5.8c.316-.452-.16-1.333-1.065-1.966-.905-.634-1.895-.78-2.212-.328zM8 18.5 9.375 17H19v1.5H8z"/></svg>',pilcrow:q.Z,quote:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M3 10.423a6.5 6.5 0 0 1 6.056-6.408l.038.67C6.448 5.423 5.354 7.663 5.22 10H9c.552 0 .5.432.5.986v4.511c0 .554-.448.503-1 .503h-5c-.552 0-.5-.449-.5-1.003v-4.574zm8 0a6.5 6.5 0 0 1 6.056-6.408l.038.67c-2.646.739-3.74 2.979-3.873 5.315H17c.552 0 .5.432.5.986v4.511c0 .554-.448.503-1 .503h-5c-.552 0-.5-.449-.5-1.003v-4.574z"/></svg>',threeVerticalDots:H.Z}},"./packages/ckeditor5-core/src/pendingactions.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>a});var o=s("./packages/ckeditor5-core/src/contextplugin.js"),i=s("./packages/ckeditor5-utils/src/observablemixin.ts"),r=s("./packages/ckeditor5-utils/src/collection.ts"),n=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class a extends o.Z{static get pluginName(){return"PendingActions"}init(){this.set("hasAny",!1),this._actions=new r.Z({idProperty:"_id"}),this._actions.delegate("add","remove").to(this)}add(e){if("string"!=typeof e)throw new n.ZP("pendingactions-add-invalid-message",this);const t=Object.create(i.Z);return t.set("message",e),this._actions.add(t),this.hasAny=!0,t}remove(e){this._actions.remove(e),this.hasAny=!!this._actions.length}get first(){return this._actions.get(0)}[Symbol.iterator](){return this._actions[Symbol.iterator]()}}},"./packages/ckeditor5-core/src/plugin.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./packages/ckeditor5-utils/src/observablemixin.ts"),i=s("./packages/ckeditor5-utils/src/mix.ts");class r{constructor(e){this.editor=e,this.set("isEnabled",!0),this._disableStack=new Set}forceDisabled(e){this._disableStack.add(e),1==this._disableStack.size&&(this.on("set:isEnabled",n,{priority:"highest"}),this.isEnabled=!1)}clearForceDisabled(e){this._disableStack.delete(e),0==this._disableStack.size&&(this.off("set:isEnabled",n),this.isEnabled=!0)}destroy(){this.stopListening()}static get isContextPlugin(){return!1}}function n(e){e.return=!1,e.stop()}(0,i.Z)(r,o.Z)},"./packages/ckeditor5-enter/src/enter.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>l});var o=s("./packages/ckeditor5-core/src/plugin.js"),i=s("./packages/ckeditor5-core/src/command.js"),r=s("./packages/ckeditor5-enter/src/utils.js");class n extends i.Z{execute(){const e=this.editor.model,t=e.document;e.change((s=>{!function(e,t,s,o){const i=s.isCollapsed,n=s.getFirstRange(),c=n.start.parent,l=n.end.parent;if(o.isLimit(c)||o.isLimit(l))return void(i||c!=l||e.deleteContent(s));if(i){const e=(0,r.G)(t.model.schema,s.getAttributes());a(t,n.start),t.setSelectionAttribute(e)}else{const o=!(n.start.isAtStart&&n.end.isAtEnd),i=c==l;e.deleteContent(s,{leaveUnmerged:o}),o&&(i?a(t,s.focus):t.setSelection(l,0))}}(this.editor.model,s,t.selection,e.schema),this.fire("afterExecute",{writer:s})}))}}function a(e,t){e.split(t),e.setSelection(t.parent.nextSibling,0)}var c=s("./packages/ckeditor5-enter/src/enterobserver.js");class l extends o.Z{static get pluginName(){return"Enter"}init(){const e=this.editor,t=e.editing.view,s=t.document;t.addObserver(c.Z),e.commands.add("enter",new n(e)),this.listenTo(s,"enter",((s,o)=>{o.preventDefault(),o.isSoft||(e.execute("enter"),t.scrollToTheSelection())}),{priority:"low"})}}},"./packages/ckeditor5-enter/src/enterobserver.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>a});var o=s("./packages/ckeditor5-engine/src/view/observer/observer.ts"),i=s("./packages/ckeditor5-engine/src/view/observer/domeventdata.ts"),r=s("./packages/ckeditor5-engine/src/view/observer/bubblingeventinfo.ts"),n=s("./packages/ckeditor5-utils/src/keyboard.ts");class a extends o.Z{constructor(e){super(e);const t=this.document;t.on("keydown",((e,s)=>{if(this.isEnabled&&s.keyCode==n.Do.enter){const o=new r.Z(t,"enter",t.selection.getFirstRange());t.fire(o,new i.Z(t,s.domEvent,{isSoft:s.shiftKey})),o.stop.called&&e.stop()}}))}observe(){}}},"./packages/ckeditor5-enter/src/utils.js":(e,t,s)=>{"use strict";function*o(e,t){for(const s of t)s&&e.getAttributeProperties(s[0]).copyOnEnter&&(yield s)}s.d(t,{G:()=>o})},"./packages/ckeditor5-typing/src/delete.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>f});var o=s("./packages/ckeditor5-core/src/plugin.js"),i=s("./packages/ckeditor5-core/src/command.js"),r=s("./packages/ckeditor5-utils/src/count.ts"),n=s("./packages/ckeditor5-typing/src/utils/changebuffer.js");class a extends i.Z{constructor(e,t){super(e),this.direction=t,this._buffer=new n.Z(e.model,e.config.get("typing.undoStep"))}get buffer(){return this._buffer}execute(e={}){const t=this.editor.model,s=t.document;t.enqueueChange(this._buffer.batch,(o=>{this._buffer.lock();const i=o.createSelection(e.selection||s.selection),n=e.sequence||1,a=i.isCollapsed;if(i.isCollapsed&&t.modifySelection(i,{direction:this.direction,unit:e.unit,treatEmojiAsSingleUnit:!0}),this._shouldEntireContentBeReplacedWithParagraph(n))return void this._replaceEntireContentWithParagraph(o);if(this._shouldReplaceFirstBlockWithParagraph(i,n))return void this.editor.execute("paragraph",{selection:i});if(i.isCollapsed)return;let c=0;i.getFirstRange().getMinimalFlatRanges().forEach((e=>{c+=(0,r.Z)(e.getWalker({singleCharacters:!0,ignoreElementEnd:!0,shallow:!0}))})),t.deleteContent(i,{doNotResetEntireContent:a,direction:this.direction}),this._buffer.input(c),o.setSelection(i),this._buffer.unlock()}))}_shouldEntireContentBeReplacedWithParagraph(e){if(e>1)return!1;const t=this.editor.model,s=t.document.selection,o=t.schema.getLimitElement(s);if(!(s.isCollapsed&&s.containsEntireContent(o)))return!1;if(!t.schema.checkChild(o,"paragraph"))return!1;const i=o.getChild(0);return!i||"paragraph"!==i.name}_replaceEntireContentWithParagraph(e){const t=this.editor.model,s=t.document.selection,o=t.schema.getLimitElement(s),i=e.createElement("paragraph");e.remove(e.createRangeIn(o)),e.insert(i,o),e.setSelection(i,0)}_shouldReplaceFirstBlockWithParagraph(e,t){const s=this.editor.model;if(t>1||"backward"!=this.direction)return!1;if(!e.isCollapsed)return!1;const o=e.getFirstPosition(),i=s.schema.getLimitElement(o),r=i.getChild(0);return o.parent==r&&(!!e.containsEntireContent(r)&&(!!s.schema.checkChild(i,"paragraph")&&"paragraph"!=r.name))}}var c=s("./packages/ckeditor5-engine/src/view/observer/observer.ts"),l=s("./packages/ckeditor5-engine/src/view/observer/domeventdata.ts"),d=s("./packages/ckeditor5-engine/src/view/observer/bubblingeventinfo.ts"),h=s("./packages/ckeditor5-utils/src/keyboard.ts"),u=s("./packages/ckeditor5-utils/src/env.ts"),p=s("./packages/ckeditor5-typing/src/utils/utils.js");class g extends c.Z{constructor(e){super(e);const t=e.document;let s=0;function o(e,s,o){const i=new d.Z(t,"delete",t.selection.getFirstRange());t.fire(i,new l.Z(t,s,o)),i.stop.called&&e.stop()}t.on("keyup",((e,t)=>{t.keyCode!=h.Do.delete&&t.keyCode!=h.Do.backspace||(s=0)})),t.on("keydown",((e,i)=>{if(u.ZP.isWindows&&(0,p.Uw)(i,t))return;const r={};if(i.keyCode==h.Do.delete)r.direction="forward",r.unit="character";else{if(i.keyCode!=h.Do.backspace)return;r.direction="backward",r.unit="codePoint"}const n=u.ZP.isMac?i.altKey:i.ctrlKey;r.unit=n?"word":r.unit,r.sequence=++s,o(e,i.domEvent,r)})),u.ZP.isAndroid&&t.on("beforeinput",((t,s)=>{if("deleteContentBackward"!=s.domEvent.inputType)return;const i={unit:"codepoint",direction:"backward",sequence:1},r=s.domTarget.ownerDocument.defaultView.getSelection();r.anchorNode==r.focusNode&&r.anchorOffset+1!=r.focusOffset&&(i.selectionToRemove=e.domConverter.domSelectionToView(r)),o(t,s.domEvent,i)}))}observe(){}}class f extends o.Z{static get pluginName(){return"Delete"}init(){const e=this.editor,t=e.editing.view,s=t.document,o=e.model.document;t.addObserver(g),this._undoOnBackspace=!1;const i=new a(e,"forward");if(e.commands.add("deleteForward",i),e.commands.add("forwardDelete",i),e.commands.add("delete",new a(e,"backward")),this.listenTo(s,"delete",((s,o)=>{const i={unit:o.unit,sequence:o.sequence};if(o.selectionToRemove){const t=e.model.createSelection(),s=[];for(const t of o.selectionToRemove.getRanges())s.push(e.editing.mapper.toModelRange(t));t.setTo(s),i.selection=t}e.execute("forward"==o.direction?"deleteForward":"delete",i),o.preventDefault(),t.scrollToTheSelection()}),{priority:"low"}),u.ZP.isAndroid){let e=null;this.listenTo(s,"delete",((t,s)=>{const o=s.domTarget.ownerDocument.defaultView.getSelection();e={anchorNode:o.anchorNode,anchorOffset:o.anchorOffset,focusNode:o.focusNode,focusOffset:o.focusOffset}}),{priority:"lowest"}),this.listenTo(s,"keyup",((t,s)=>{if(e){const t=s.domTarget.ownerDocument.defaultView.getSelection();t.collapse(e.anchorNode,e.anchorOffset),t.extend(e.focusNode,e.focusOffset),e=null}}))}this.editor.plugins.has("UndoEditing")&&(this.listenTo(s,"delete",((t,s)=>{this._undoOnBackspace&&"backward"==s.direction&&1==s.sequence&&"codePoint"==s.unit&&(this._undoOnBackspace=!1,e.execute("undo"),s.preventDefault(),t.stop())}),{context:"$capture"}),this.listenTo(o,"change",(()=>{this._undoOnBackspace=!1})))}requestUndoOnBackspace(){this.editor.plugins.has("UndoEditing")&&(this._undoOnBackspace=!0)}}},"./packages/ckeditor5-typing/src/utils/changebuffer.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});class o{constructor(e,t=20){this.model=e,this.size=0,this.limit=t,this.isLocked=!1,this._changeCallback=(e,t)=>{t.isLocal&&t.isUndoable&&t!==this._batch&&this._reset(!0)},this._selectionChangeCallback=()=>{this._reset()},this.model.document.on("change",this._changeCallback),this.model.document.selection.on("change:range",this._selectionChangeCallback),this.model.document.selection.on("change:attribute",this._selectionChangeCallback)}get batch(){return this._batch||(this._batch=this.model.createBatch({isTyping:!0})),this._batch}input(e){this.size+=e,this.size>=this.limit&&this._reset(!0)}lock(){this.isLocked=!0}unlock(){this.isLocked=!1}destroy(){this.model.document.off("change",this._changeCallback),this.model.document.selection.off("change:range",this._selectionChangeCallback),this.model.document.selection.off("change:attribute",this._selectionChangeCallback)}_reset(e){this.isLocked&&!e||(this._batch=null,this.size=0)}}},"./packages/ckeditor5-typing/src/utils/injectunsafekeystrokeshandling.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>n,u:()=>c});var o=s("./packages/ckeditor5-utils/src/keyboard.ts"),i=s("./packages/ckeditor5-utils/src/env.ts"),r=s("./packages/ckeditor5-typing/src/utils/utils.js");function n(e){let t=null;const s=e.model,o=e.editing.view,n=e.commands.get("input");function a(e){if(i.ZP.isWindows&&(0,r.Uw)(e,o.document))return;const a=s.document,d=o.document.isComposing,h=t&&t.isEqual(a.selection);t=null,n.isEnabled&&(c(e)||a.selection.isCollapsed||d&&229===e.keyCode||!d&&229===e.keyCode&&h||l())}function l(){const e=n.buffer;e.lock();const t=e.batch;s.enqueueChange(t,(()=>{s.deleteContent(s.document.selection)})),e.unlock()}i.ZP.isAndroid?o.document.on("beforeinput",((e,t)=>a(t)),{priority:"lowest"}):o.document.on("keydown",((e,t)=>a(t)),{priority:"lowest"}),o.document.on("compositionstart",(function(){const e=s.document,t=1!==e.selection.rangeCount||e.selection.getFirstRange().isFlat;if(e.selection.isCollapsed||t)return;l()}),{priority:"lowest"}),o.document.on("compositionend",(()=>{t=s.createSelection(s.document.selection)}),{priority:"lowest"})}const a=[(0,o.Cq)("arrowUp"),(0,o.Cq)("arrowRight"),(0,o.Cq)("arrowDown"),(0,o.Cq)("arrowLeft"),9,16,17,18,19,20,27,33,34,35,36,45,91,93,144,145,173,174,175,176,177,178,179,255];for(let e=112;e<=135;e++)a.push(e);function c(e){return!(!e.ctrlKey&&!e.metaKey)||a.includes(e.keyCode)}},"./packages/ckeditor5-typing/src/utils/utils.js":(e,t,s)=>{"use strict";s.d(t,{E9:()=>r,xG:()=>n,Uw:()=>c});var o=s("./packages/ckeditor5-utils/src/diff.ts");var i=s("./packages/ckeditor5-utils/src/keyboard.ts");function r(e){if(0==e.length)return!1;for(const t of e)if("children"===t.type&&!n(t))return!0;return!1}function n(e){if(e.newChildren.length-e.oldChildren.length!=1)return;const t=function(e,t){const s=[];let o=0,i=null;return e.forEach((e=>{"equal"==e?(r(),o++):"insert"==e?(i&&"insert"==i.type?i.values.push(t[o]):(r(),i={type:"insert",index:o,values:[t[o]]}),o++):i&&"delete"==i.type?i.howMany++:(r(),i={type:"delete",index:o,howMany:1})})),r(),s;function r(){i&&(s.push(i),i=null)}}((0,o.Z)(e.oldChildren,e.newChildren,a),e.newChildren);if(t.length>1)return;const s=t[0];return s.values[0]&&s.values[0].is("$text")?s:void 0}function a(e,t){return e&&e.is("$text")&&t&&t.is("$text")?e.data===t.data:e===t}function c(e,t){const s=t.selection,o=e.shiftKey&&e.keyCode===i.Do.delete,r=!s.isCollapsed;return o&&r}},"./packages/ckeditor5-ui/src/bindings/clickoutsidehandler.js":(e,t,s)=>{"use strict";function o({emitter:e,activator:t,callback:s,contextElements:o}){e.listenTo(document,"mousedown",((e,i)=>{if(!t())return;const r="function"==typeof i.composedPath?i.composedPath():[];for(const e of o)if(e.contains(i.target)||r.includes(e))return;s()}))}s.d(t,{Z:()=>o})},"./packages/ckeditor5-ui/src/button/buttonview.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>u});var o=s("./packages/ckeditor5-ui/src/view.js"),i=s("./packages/ckeditor5-ui/src/icon/iconview.js"),r=s("./packages/ckeditor5-utils/src/uid.ts"),n=s("./packages/ckeditor5-utils/src/keyboard.ts"),a=s("./packages/ckeditor5-utils/src/env.ts"),c=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),l=s.n(c),d=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/button/button.css"),h={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};l()(d.Z,h);d.Z.locals;class u extends o.Z{constructor(e){super(e);const t=this.bindTemplate,s=(0,r.Z)();this.set("class"),this.set("labelStyle"),this.set("icon"),this.set("isEnabled",!0),this.set("isOn",!1),this.set("isVisible",!0),this.set("isToggleable",!1),this.set("keystroke"),this.set("label"),this.set("tabindex",-1),this.set("tooltip"),this.set("tooltipPosition","s"),this.set("type","button"),this.set("withText",!1),this.set("withKeystroke",!1),this.children=this.createCollection(),this.labelView=this._createLabelView(s),this.iconView=new i.Z,this.iconView.extendTemplate({attributes:{class:"ck-button__icon"}}),this.keystrokeView=this._createKeystrokeView(),this.bind("_tooltipString").to(this,"tooltip",this,"label",this,"keystroke",this._getTooltipString.bind(this));const o={tag:"button",attributes:{class:["ck","ck-button",t.to("class"),t.if("isEnabled","ck-disabled",(e=>!e)),t.if("isVisible","ck-hidden",(e=>!e)),t.to("isOn",(e=>e?"ck-on":"ck-off")),t.if("withText","ck-button_with-text"),t.if("withKeystroke","ck-button_with-keystroke")],type:t.to("type",(e=>e||"button")),tabindex:t.to("tabindex"),"aria-labelledby":`ck-editor__aria-label_${s}`,"aria-disabled":t.if("isEnabled",!0,(e=>!e)),"aria-pressed":t.to("isOn",(e=>!!this.isToggleable&&String(!!e))),"data-cke-tooltip-text":t.to("_tooltipString"),"data-cke-tooltip-position":t.to("tooltipPosition")},children:this.children,on:{click:t.to((e=>{this.isEnabled?this.fire("execute"):e.preventDefault()}))}};a.ZP.isSafari&&(o.on.mousedown=t.to((e=>{this.focus(),e.preventDefault()}))),this.setTemplate(o)}render(){super.render(),this.icon&&(this.iconView.bind("content").to(this,"icon"),this.children.add(this.iconView)),this.children.add(this.labelView),this.withKeystroke&&this.keystroke&&this.children.add(this.keystrokeView)}focus(){this.element.focus()}_createLabelView(e){const t=new o.Z,s=this.bindTemplate;return t.setTemplate({tag:"span",attributes:{class:["ck","ck-button__label"],style:s.to("labelStyle"),id:`ck-editor__aria-label_${e}`},children:[{text:this.bindTemplate.to("label")}]}),t}_createKeystrokeView(){const e=new o.Z;return e.setTemplate({tag:"span",attributes:{class:["ck","ck-button__keystroke"]},children:[{text:this.bindTemplate.to("keystroke",(e=>(0,n.XU)(e)))}]}),e}_getTooltipString(e,t,s){return e?"string"==typeof e?e:(s&&(s=(0,n.XU)(s)),e instanceof Function?e(t,s):`${t}${s?` (${s})`:""}`):""}}},"./packages/ckeditor5-ui/src/button/switchbuttonview.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>l});var o=s("./packages/ckeditor5-ui/src/view.js"),i=s("./packages/ckeditor5-ui/src/button/buttonview.js"),r=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),n=s.n(r),a=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/button/switchbutton.css"),c={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n()(a.Z,c);a.Z.locals;class l extends i.Z{constructor(e){super(e),this.isToggleable=!0,this.toggleSwitchView=this._createToggleView(),this.extendTemplate({attributes:{class:"ck-switchbutton"}})}render(){super.render(),this.children.add(this.toggleSwitchView)}_createToggleView(){const e=new o.Z;return e.setTemplate({tag:"span",attributes:{class:["ck","ck-button__toggle"]},children:[{tag:"span",attributes:{class:["ck","ck-button__toggle__inner"]}}]}),e}}},"./packages/ckeditor5-ui/src/dropdown/button/dropdownbuttonview.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>n});var o=s("./packages/ckeditor5-ui/src/button/buttonview.js"),i=s("./packages/ckeditor5-ui/theme/icons/dropdown-arrow.svg"),r=s("./packages/ckeditor5-ui/src/icon/iconview.js");class n extends o.Z{constructor(e){super(e),this.arrowView=this._createArrowView(),this.extendTemplate({attributes:{"aria-haspopup":!0,"aria-expanded":this.bindTemplate.to("isOn",(e=>String(e)))}}),this.delegate("execute").to(this,"open")}render(){super.render(),this.children.add(this.arrowView)}_createArrowView(){const e=new r.Z;return e.content=i.Z,e.extendTemplate({attributes:{class:"ck-dropdown__arrow"}}),e}}},"./packages/ckeditor5-ui/src/dropdown/utils.js":(e,t,s)=>{"use strict";s.d(t,{Pm:()=>C,up:()=>A,t9:()=>T,Mh:()=>E});var o=s("./packages/ckeditor5-ui/src/view.js"),i=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class r extends o.Z{constructor(e){super(e);const t=this.bindTemplate;this.set("isVisible",!1),this.set("position","se"),this.children=this.createCollection(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-reset","ck-dropdown__panel",t.to("position",(e=>`ck-dropdown__panel_${e}`)),t.if("isVisible","ck-dropdown__panel-visible")]},children:this.children,on:{selectstart:t.to((e=>e.preventDefault()))}})}focus(){this.children.length&&("function"==typeof this.children.first.focus?this.children.first.focus():(0,i.KE)("ui-dropdown-panel-focus-child-missing-focus",{childView:this.children.first,dropdownPanel:this}))}focusLast(){if(this.children.length){const e=this.children.last;"function"==typeof e.focusLast?e.focusLast():e.focus()}}}var n=s("./packages/ckeditor5-utils/src/keystrokehandler.ts"),a=s("./packages/ckeditor5-utils/src/index.ts"),c=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),l=s.n(c),d=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/dropdown/dropdown.css"),h={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};l()(d.Z,h);d.Z.locals;var u=s("./packages/ckeditor5-utils/src/dom/position.ts");class p extends o.Z{constructor(e,t,s){super(e);const o=this.bindTemplate;this.buttonView=t,this.panelView=s,this.set("isOpen",!1),this.set("isEnabled",!0),this.set("class"),this.set("id"),this.set("panelPosition","auto"),this.keystrokes=new n.Z,this.focusTracker=new a.Rh,this.setTemplate({tag:"div",attributes:{class:["ck","ck-dropdown",o.to("class"),o.if("isEnabled","ck-disabled",(e=>!e))],id:o.to("id"),"aria-describedby":o.to("ariaDescribedById")},children:[t,s]}),t.extendTemplate({attributes:{class:["ck-dropdown__button"],"data-cke-tooltip-disabled":o.to("isOpen")}})}render(){super.render(),this.focusTracker.add(this.buttonView.element),this.focusTracker.add(this.panelView.element),this.listenTo(this.buttonView,"open",(()=>{this.isOpen=!this.isOpen})),this.panelView.bind("isVisible").to(this,"isOpen"),this.on("change:isOpen",((e,t,s)=>{s&&("auto"===this.panelPosition?this.panelView.position=p._getOptimalPosition({element:this.panelView.element,target:this.buttonView.element,fitInViewport:!0,positions:this._panelPositions}).name:this.panelView.position=this.panelPosition)})),this.keystrokes.listenTo(this.element);const e=(e,t)=>{this.isOpen&&(this.isOpen=!1,t())};this.keystrokes.set("arrowdown",((e,t)=>{this.buttonView.isEnabled&&!this.isOpen&&(this.isOpen=!0,t())})),this.keystrokes.set("arrowright",((e,t)=>{this.isOpen&&t()})),this.keystrokes.set("arrowleft",e),this.keystrokes.set("esc",e)}focus(){this.buttonView.focus()}get _panelPositions(){const{south:e,north:t,southEast:s,southWest:o,northEast:i,northWest:r,southMiddleEast:n,southMiddleWest:a,northMiddleEast:c,northMiddleWest:l}=p.defaultPanelPositions;return"rtl"!==this.locale.uiLanguageDirection?[s,o,n,a,e,i,r,c,l,t]:[o,s,a,n,e,r,i,l,c,t]}}p.defaultPanelPositions={south:(e,t)=>({top:e.bottom,left:e.left-(t.width-e.width)/2,name:"s"}),southEast:e=>({top:e.bottom,left:e.left,name:"se"}),southWest:(e,t)=>({top:e.bottom,left:e.left-t.width+e.width,name:"sw"}),southMiddleEast:(e,t)=>({top:e.bottom,left:e.left-(t.width-e.width)/4,name:"sme"}),southMiddleWest:(e,t)=>({top:e.bottom,left:e.left-3*(t.width-e.width)/4,name:"smw"}),north:(e,t)=>({top:e.top-t.height,left:e.left-(t.width-e.width)/2,name:"n"}),northEast:(e,t)=>({top:e.top-t.height,left:e.left,name:"ne"}),northWest:(e,t)=>({top:e.top-t.height,left:e.left-t.width+e.width,name:"nw"}),northMiddleEast:(e,t)=>({top:e.top-t.height,left:e.left-(t.width-e.width)/4,name:"nme"}),northMiddleWest:(e,t)=>({top:e.top-t.height,left:e.left-3*(t.width-e.width)/4,name:"nmw"})},p._getOptimalPosition=u.x;var g=s("./packages/ckeditor5-ui/src/dropdown/button/dropdownbuttonview.js"),f=s("./packages/ckeditor5-ui/src/toolbar/toolbarview.js"),m=s("./packages/ckeditor5-ui/src/list/listview.js"),k=s("./packages/ckeditor5-ui/src/list/listitemview.js");class b extends o.Z{constructor(e){super(e),this.setTemplate({tag:"li",attributes:{class:["ck","ck-list__separator"]}})}}var _=s("./packages/ckeditor5-ui/src/button/buttonview.js"),w=s("./packages/ckeditor5-ui/src/button/switchbuttonview.js"),v=s("./packages/ckeditor5-ui/src/bindings/clickoutsidehandler.js"),y=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/dropdown/toolbardropdown.css"),Z={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};l()(y.Z,Z);y.Z.locals;var P=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/dropdown/listdropdown.css"),x={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};l()(P.Z,x);P.Z.locals;function T(e,t=g.Z){const s=new t(e),o=new r(e),i=new p(e,s,o);return s.bind("isEnabled").to(i),s instanceof g.Z?s.bind("isOn").to(i,"isOpen"):s.arrowView.bind("isOn").to(i,"isOpen"),function(e){(function(e){e.on("render",(()=>{(0,v.Z)({emitter:e,activator:()=>e.isOpen,callback:()=>{e.isOpen=!1},contextElements:[e.element]})}))})(e),function(e){e.on("execute",(t=>{t.source instanceof w.Z||(e.isOpen=!1)}))}(e),function(e){e.focusTracker.on("change:isFocused",((t,s,o)=>{e.isOpen&&!o&&(e.isOpen=!1)}))}(e),function(e){e.keystrokes.set("arrowdown",((t,s)=>{e.isOpen&&(e.panelView.focus(),s())})),e.keystrokes.set("arrowup",((t,s)=>{e.isOpen&&(e.panelView.focusLast(),s())}))}(e),function(e){e.on("change:isOpen",((t,s,o)=>{o||e.panelView.element.contains(a.CO.document.activeElement)&&e.buttonView.focus()}))}(e),function(e){e.on("change:isOpen",((t,s,o)=>{o&&e.panelView.focus()}),{priority:"low"})}(e)}(i),i}function A(e,t,s={}){const o=e.locale,i=o.t,r=e.toolbarView=new f.Z(o);r.set("ariaLabel",i("Dropdown toolbar")),e.extendTemplate({attributes:{class:["ck-toolbar-dropdown"]}}),t.map((e=>r.items.add(e))),s.enableActiveItemFocusOnDropdownOpen&&E(e,(()=>r.items.find((e=>e.isOn)))),e.panelView.children.add(r),r.items.delegate("execute").to(e)}function C(e,t){const s=e.locale,o=e.listView=new m.Z(s);o.items.bindTo(t).using((({type:e,model:t})=>{if("separator"===e)return new b(s);if("button"===e||"switchbutton"===e){const o=new k.Z(s);let i;return i="button"===e?new _.Z(s):new w.Z(s),i.bind(...Object.keys(t)).to(t),i.delegate("execute").to(o),o.children.add(i),o}})),e.panelView.children.add(o),o.items.delegate("execute").to(e),E(e,(()=>o.items.find((e=>e instanceof k.Z&&e.children.first.isOn))))}function E(e,t){e.on("change:isOpen",(()=>{if(!e.isOpen)return;const s=t();s&&("function"==typeof s.focus?s.focus():(0,a.KE)("ui-dropdown-focus-child-on-open-child-missing-focus",{view:s}))}),{priority:a.tA.low-10})}},"./packages/ckeditor5-ui/src/focuscycler.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./packages/ckeditor5-utils/src/dom/isvisible.ts");class i{constructor(e){if(Object.assign(this,e),e.actions&&e.keystrokeHandler)for(const t in e.actions){let s=e.actions[t];"string"==typeof s&&(s=[s]);for(const o of s)e.keystrokeHandler.set(o,((e,s)=>{this[t](),s()}))}}get first(){return this.focusables.find(r)||null}get last(){return this.focusables.filter(r).slice(-1)[0]||null}get next(){return this._getFocusableItem(1)}get previous(){return this._getFocusableItem(-1)}get current(){let e=null;return null===this.focusTracker.focusedElement?null:(this.focusables.find(((t,s)=>{const o=t.element===this.focusTracker.focusedElement;return o&&(e=s),o})),e)}focusFirst(){this._focus(this.first)}focusLast(){this._focus(this.last)}focusNext(){this._focus(this.next)}focusPrevious(){this._focus(this.previous)}_focus(e){e&&e.focus()}_getFocusableItem(e){const t=this.current,s=this.focusables.length;if(!s)return null;if(null===t)return this[1===e?"first":"last"];let o=(t+s+e)%s;do{const t=this.focusables.get(o);if(r(t))return t;o=(o+s+e)%s}while(o!==t);return null}}function r(e){return!(!e.focus||!(0,o.Z)(e.element))}},"./packages/ckeditor5-ui/src/icon/iconview.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>c});var o=s("./packages/ckeditor5-ui/src/view.js"),i=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),r=s.n(i),n=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/icon/icon.css"),a={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};r()(n.Z,a);n.Z.locals;class c extends o.Z{constructor(){super();const e=this.bindTemplate;this.set("content",""),this.set("viewBox","0 0 20 20"),this.set("fillColor",""),this.setTemplate({tag:"svg",ns:"http://www.w3.org/2000/svg",attributes:{class:["ck","ck-icon"],viewBox:e.to("viewBox")}})}render(){super.render(),this._updateXMLContent(),this._colorFillPaths(),this.on("change:content",(()=>{this._updateXMLContent(),this._colorFillPaths()})),this.on("change:fillColor",(()=>{this._colorFillPaths()}))}_updateXMLContent(){if(this.content){const e=(new DOMParser).parseFromString(this.content.trim(),"image/svg+xml").querySelector("svg"),t=e.getAttribute("viewBox");for(t&&(this.viewBox=t);this.element.firstChild;)this.element.removeChild(this.element.firstChild);for(;e.childNodes.length>0;)this.element.appendChild(e.childNodes[0])}}_colorFillPaths(){this.fillColor&&this.element.querySelectorAll(".ck-icon__fill").forEach((e=>{e.style.fill=this.fillColor}))}}},"./packages/ckeditor5-ui/src/list/listitemview.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./packages/ckeditor5-ui/src/view.js");class i extends o.Z{constructor(e){super(e);const t=this.bindTemplate;this.set("isVisible",!0),this.children=this.createCollection(),this.setTemplate({tag:"li",attributes:{class:["ck","ck-list__item",t.if("isVisible","ck-hidden",(e=>!e))]},children:this.children})}focus(){this.children.first.focus()}}},"./packages/ckeditor5-ui/src/list/listview.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>h});var o=s("./packages/ckeditor5-ui/src/view.js"),i=s("./packages/ckeditor5-utils/src/focustracker.ts"),r=s("./packages/ckeditor5-ui/src/focuscycler.js"),n=s("./packages/ckeditor5-utils/src/keystrokehandler.ts"),a=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),c=s.n(a),l=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/list/list.css"),d={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};c()(l.Z,d);l.Z.locals;class h extends o.Z{constructor(){super(),this.items=this.createCollection(),this.focusTracker=new i.Z,this.keystrokes=new n.Z,this._focusCycler=new r.Z({focusables:this.items,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"arrowup",focusNext:"arrowdown"}}),this.setTemplate({tag:"ul",attributes:{class:["ck","ck-reset","ck-list"]},children:this.items})}render(){super.render();for(const e of this.items)this.focusTracker.add(e.element);this.items.on("add",((e,t)=>{this.focusTracker.add(t.element)})),this.items.on("remove",((e,t)=>{this.focusTracker.remove(t.element)})),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}focusLast(){this._focusCycler.focusLast()}}},"./packages/ckeditor5-ui/src/panel/balloon/balloonpanelview.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>f,M:()=>k});var o=s("./packages/ckeditor5-ui/src/view.js"),i=s("./packages/ckeditor5-utils/src/dom/position.ts"),r=s("./packages/ckeditor5-utils/src/dom/isrange.ts"),n=s("./packages/ckeditor5-utils/src/dom/tounit.ts"),a=s("./packages/ckeditor5-utils/src/dom/global.ts"),c=s("./node_modules/lodash-es/isElement.js"),l=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),d=s.n(l),h=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/panel/balloonpanel.css"),u={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};d()(h.Z,u);h.Z.locals;const p=(0,n.Z)("px"),g=a.Z.document.body;class f extends o.Z{constructor(e){super(e);const t=this.bindTemplate;this.set("top",0),this.set("left",0),this.set("position","arrow_nw"),this.set("isVisible",!1),this.set("withArrow",!0),this.set("class"),this.content=this.createCollection(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-balloon-panel",t.to("position",(e=>`ck-balloon-panel_${e}`)),t.if("isVisible","ck-balloon-panel_visible"),t.if("withArrow","ck-balloon-panel_with-arrow"),t.to("class")],style:{top:t.to("top",p),left:t.to("left",p)}},children:this.content})}show(){this.isVisible=!0}hide(){this.isVisible=!1}attachTo(e){this.show();const t=f.defaultPositions,s=Object.assign({},{element:this.element,positions:[t.southArrowNorth,t.southArrowNorthMiddleWest,t.southArrowNorthMiddleEast,t.southArrowNorthWest,t.southArrowNorthEast,t.northArrowSouth,t.northArrowSouthMiddleWest,t.northArrowSouthMiddleEast,t.northArrowSouthWest,t.northArrowSouthEast,t.viewportStickyNorth],limiter:g,fitInViewport:!0},e),o=f._getOptimalPosition(s),i=parseInt(o.left),r=parseInt(o.top),{name:n,config:a={}}=o,{withArrow:c=!0}=a;Object.assign(this,{top:r,left:i,position:n,withArrow:c})}pin(e){this.unpin(),this._pinWhenIsVisibleCallback=()=>{this.isVisible?this._startPinning(e):this._stopPinning()},this._startPinning(e),this.listenTo(this,"change:isVisible",this._pinWhenIsVisibleCallback)}unpin(){this._pinWhenIsVisibleCallback&&(this._stopPinning(),this.stopListening(this,"change:isVisible",this._pinWhenIsVisibleCallback),this._pinWhenIsVisibleCallback=null,this.hide())}_startPinning(e){this.attachTo(e);const t=m(e.target),s=e.limiter?m(e.limiter):g;this.listenTo(a.Z.document,"scroll",((o,i)=>{const r=i.target,n=t&&r.contains(t),a=s&&r.contains(s);!n&&!a&&t&&s||this.attachTo(e)}),{useCapture:!0}),this.listenTo(a.Z.window,"resize",(()=>{this.attachTo(e)}))}_stopPinning(){this.stopListening(a.Z.document,"scroll"),this.stopListening(a.Z.window,"resize")}}function m(e){return(0,c.Z)(e)?e:(0,r.Z)(e)?e.commonAncestorContainer:"function"==typeof e?m(e()):null}function k({sideOffset:e=f.arrowSideOffset,heightOffset:t=f.arrowHeightOffset,stickyVerticalOffset:s=f.stickyVerticalOffset,config:o}={}){return{northWestArrowSouthWest:(t,s)=>({top:i(t,s),left:t.left-e,name:"arrow_sw",...o&&{config:o}}),northWestArrowSouthMiddleWest:(t,s)=>({top:i(t,s),left:t.left-.25*s.width-e,name:"arrow_smw",...o&&{config:o}}),northWestArrowSouth:(e,t)=>({top:i(e,t),left:e.left-t.width/2,name:"arrow_s",...o&&{config:o}}),northWestArrowSouthMiddleEast:(t,s)=>({top:i(t,s),left:t.left-.75*s.width+e,name:"arrow_sme",...o&&{config:o}}),northWestArrowSouthEast:(t,s)=>({top:i(t,s),left:t.left-s.width+e,name:"arrow_se",...o&&{config:o}}),northArrowSouthWest:(t,s)=>({top:i(t,s),left:t.left+t.width/2-e,name:"arrow_sw",...o&&{config:o}}),northArrowSouthMiddleWest:(t,s)=>({top:i(t,s),left:t.left+t.width/2-.25*s.width-e,name:"arrow_smw",...o&&{config:o}}),northArrowSouth:(e,t)=>({top:i(e,t),left:e.left+e.width/2-t.width/2,name:"arrow_s",...o&&{config:o}}),northArrowSouthMiddleEast:(t,s)=>({top:i(t,s),left:t.left+t.width/2-.75*s.width+e,name:"arrow_sme",...o&&{config:o}}),northArrowSouthEast:(t,s)=>({top:i(t,s),left:t.left+t.width/2-s.width+e,name:"arrow_se",...o&&{config:o}}),northEastArrowSouthWest:(t,s)=>({top:i(t,s),left:t.right-e,name:"arrow_sw",...o&&{config:o}}),northEastArrowSouthMiddleWest:(t,s)=>({top:i(t,s),left:t.right-.25*s.width-e,name:"arrow_smw",...o&&{config:o}}),northEastArrowSouth:(e,t)=>({top:i(e,t),left:e.right-t.width/2,name:"arrow_s",...o&&{config:o}}),northEastArrowSouthMiddleEast:(t,s)=>({top:i(t,s),left:t.right-.75*s.width+e,name:"arrow_sme",...o&&{config:o}}),northEastArrowSouthEast:(t,s)=>({top:i(t,s),left:t.right-s.width+e,name:"arrow_se",...o&&{config:o}}),southWestArrowNorthWest:(t,s)=>({top:r(t),left:t.left-e,name:"arrow_nw",...o&&{config:o}}),southWestArrowNorthMiddleWest:(t,s)=>({top:r(t),left:t.left-.25*s.width-e,name:"arrow_nmw",...o&&{config:o}}),southWestArrowNorth:(e,t)=>({top:r(e),left:e.left-t.width/2,name:"arrow_n",...o&&{config:o}}),southWestArrowNorthMiddleEast:(t,s)=>({top:r(t),left:t.left-.75*s.width+e,name:"arrow_nme",...o&&{config:o}}),southWestArrowNorthEast:(t,s)=>({top:r(t),left:t.left-s.width+e,name:"arrow_ne",...o&&{config:o}}),southArrowNorthWest:(t,s)=>({top:r(t),left:t.left+t.width/2-e,name:"arrow_nw",...o&&{config:o}}),southArrowNorthMiddleWest:(t,s)=>({top:r(t),left:t.left+t.width/2-.25*s.width-e,name:"arrow_nmw",...o&&{config:o}}),southArrowNorth:(e,t)=>({top:r(e),left:e.left+e.width/2-t.width/2,name:"arrow_n",...o&&{config:o}}),southArrowNorthMiddleEast:(t,s)=>({top:r(t),left:t.left+t.width/2-.75*s.width+e,name:"arrow_nme",...o&&{config:o}}),southArrowNorthEast:(t,s)=>({top:r(t),left:t.left+t.width/2-s.width+e,name:"arrow_ne",...o&&{config:o}}),southEastArrowNorthWest:(t,s)=>({top:r(t),left:t.right-e,name:"arrow_nw",...o&&{config:o}}),southEastArrowNorthMiddleWest:(t,s)=>({top:r(t),left:t.right-.25*s.width-e,name:"arrow_nmw",...o&&{config:o}}),southEastArrowNorth:(e,t)=>({top:r(e),left:e.right-t.width/2,name:"arrow_n",...o&&{config:o}}),southEastArrowNorthMiddleEast:(t,s)=>({top:r(t),left:t.right-.75*s.width+e,name:"arrow_nme",...o&&{config:o}}),southEastArrowNorthEast:(t,s)=>({top:r(t),left:t.right-s.width+e,name:"arrow_ne",...o&&{config:o}}),westArrowEast:(e,s)=>({top:e.top+e.height/2-s.height/2,left:e.left-s.width-t,name:"arrow_e",...o&&{config:o}}),eastArrowWest:(e,s)=>({top:e.top+e.height/2-s.height/2,left:e.right+t,name:"arrow_w",...o&&{config:o}}),viewportStickyNorth:(e,t,i)=>e.getIntersection(i)?{top:i.top+s,left:e.left+e.width/2-t.width/2,name:"arrowless",config:{withArrow:!1,...o}}:null};function i(e,s){return e.top-s.height-t}function r(e){return e.bottom+t}}f.arrowSideOffset=25,f.arrowHeightOffset=10,f.stickyVerticalOffset=20,f._getOptimalPosition=i.x,f.defaultPositions=k()},"./packages/ckeditor5-ui/src/panel/balloon/contextualballoon.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>b});var o=s("./packages/ckeditor5-core/src/plugin.js"),i=s("./packages/ckeditor5-ui/src/panel/balloon/balloonpanelview.js"),r=s("./packages/ckeditor5-ui/src/view.js"),n=s("./packages/ckeditor5-ui/src/button/buttonview.js"),a=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),c=s("./packages/ckeditor5-utils/src/focustracker.ts"),l=s("./packages/ckeditor5-utils/src/dom/tounit.ts"),d=s("./packages/ckeditor5-utils/src/dom/rect.ts");var h=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),u=s.n(h),p=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/panel/balloonrotator.css"),g={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};u()(p.Z,g);p.Z.locals;var f=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/panel/fakepanel.css"),m={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};u()(f.Z,m);f.Z.locals;const k=(0,l.Z)("px");class b extends o.Z{static get pluginName(){return"ContextualBalloon"}constructor(e){super(e),this.positionLimiter=()=>{const e=this.editor.editing.view,t=e.document.selection.editableElement;return t?e.domConverter.mapViewToDom(t.root):null},this.set("visibleView",null),this.view=new i.Z(e.locale),e.ui.view.body.add(this.view),e.ui.focusTracker.add(this.view.element),this._viewToStack=new Map,this._idToStack=new Map,this.set("_numberOfStacks",0),this.set("_singleViewMode",!1),this._rotatorView=this._createRotatorView(),this._fakePanelsView=this._createFakePanelsView()}destroy(){super.destroy(),this.view.destroy(),this._rotatorView.destroy(),this._fakePanelsView.destroy()}hasView(e){return Array.from(this._viewToStack.keys()).includes(e)}add(e){if(this.hasView(e.view))throw new a.ZP("contextualballoon-add-view-exist",[this,e]);const t=e.stackId||"main";if(!this._idToStack.has(t))return this._idToStack.set(t,new Map([[e.view,e]])),this._viewToStack.set(e.view,this._idToStack.get(t)),this._numberOfStacks=this._idToStack.size,void(this._visibleStack&&!e.singleViewMode||this.showStack(t));const s=this._idToStack.get(t);e.singleViewMode&&this.showStack(t),s.set(e.view,e),this._viewToStack.set(e.view,s),s===this._visibleStack&&this._showView(e)}remove(e){if(!this.hasView(e))throw new a.ZP("contextualballoon-remove-view-not-exist",[this,e]);const t=this._viewToStack.get(e);this._singleViewMode&&this.visibleView===e&&(this._singleViewMode=!1),this.visibleView===e&&(1===t.size?this._idToStack.size>1?this._showNextStack():(this.view.hide(),this.visibleView=null,this._rotatorView.hideView()):this._showView(Array.from(t.values())[t.size-2])),1===t.size?(this._idToStack.delete(this._getStackId(t)),this._numberOfStacks=this._idToStack.size):t.delete(e),this._viewToStack.delete(e)}updatePosition(e){e&&(this._visibleStack.get(this.visibleView).position=e),this.view.pin(this._getBalloonPosition()),this._fakePanelsView.updatePosition()}showStack(e){this.visibleStack=e;const t=this._idToStack.get(e);if(!t)throw new a.ZP("contextualballoon-showstack-stack-not-exist",this);this._visibleStack!==t&&this._showView(Array.from(t.values()).pop())}get _visibleStack(){return this._viewToStack.get(this.visibleView)}_getStackId(e){return Array.from(this._idToStack.entries()).find((t=>t[1]===e))[0]}_showNextStack(){const e=Array.from(this._idToStack.values());let t=e.indexOf(this._visibleStack)+1;e[t]||(t=0),this.showStack(this._getStackId(e[t]))}_showPrevStack(){const e=Array.from(this._idToStack.values());let t=e.indexOf(this._visibleStack)-1;e[t]||(t=e.length-1),this.showStack(this._getStackId(e[t]))}_createRotatorView(){const e=new _(this.editor.locale),t=this.editor.locale.t;return this.view.content.add(e),e.bind("isNavigationVisible").to(this,"_numberOfStacks",this,"_singleViewMode",((e,t)=>!t&&e>1)),e.on("change:isNavigationVisible",(()=>this.updatePosition()),{priority:"low"}),e.bind("counter").to(this,"visibleView",this,"_numberOfStacks",((e,s)=>{if(s<2)return"";const o=Array.from(this._idToStack.values()).indexOf(this._visibleStack)+1;return t("%0 of %1",[o,s])})),e.buttonNextView.on("execute",(()=>{e.focusTracker.isFocused&&this.editor.editing.view.focus(),this._showNextStack()})),e.buttonPrevView.on("execute",(()=>{e.focusTracker.isFocused&&this.editor.editing.view.focus(),this._showPrevStack()})),e}_createFakePanelsView(){const e=new w(this.editor.locale,this.view);return e.bind("numberOfPanels").to(this,"_numberOfStacks",this,"_singleViewMode",((e,t)=>!t&&e>=2?Math.min(e-1,2):0)),e.listenTo(this.view,"change:top",(()=>e.updatePosition())),e.listenTo(this.view,"change:left",(()=>e.updatePosition())),this.editor.ui.view.body.add(e),e}_showView({view:e,balloonClassName:t="",withArrow:s=!0,singleViewMode:o=!1}){this.view.class=t,this.view.withArrow=s,this._rotatorView.showView(e),this.visibleView=e,this.view.pin(this._getBalloonPosition()),this._fakePanelsView.updatePosition(),o&&(this._singleViewMode=!0)}_getBalloonPosition(){let e=Array.from(this._visibleStack.values()).pop().position;return e&&(e.limiter||(e=Object.assign({},e,{limiter:this.positionLimiter})),e=Object.assign({},e,{viewportOffsetConfig:this.editor.ui.viewportOffset})),e}}class _ extends r.Z{constructor(e){super(e);const t=e.t,s=this.bindTemplate;this.set("isNavigationVisible",!0),this.focusTracker=new c.Z,this.buttonPrevView=this._createButtonView(t("Previous"),'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M11.463 5.187a.888.888 0 1 1 1.254 1.255L9.16 10l3.557 3.557a.888.888 0 1 1-1.254 1.255L7.26 10.61a.888.888 0 0 1 .16-1.382l4.043-4.042z"/></svg>'),this.buttonNextView=this._createButtonView(t("Next"),'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M8.537 14.813a.888.888 0 1 1-1.254-1.255L10.84 10 7.283 6.442a.888.888 0 1 1 1.254-1.255L12.74 9.39a.888.888 0 0 1-.16 1.382l-4.043 4.042z"/></svg>'),this.content=this.createCollection(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-balloon-rotator"],"z-index":"-1"},children:[{tag:"div",attributes:{class:["ck-balloon-rotator__navigation",s.to("isNavigationVisible",(e=>e?"":"ck-hidden"))]},children:[this.buttonPrevView,{tag:"span",attributes:{class:["ck-balloon-rotator__counter"]},children:[{text:s.to("counter")}]},this.buttonNextView]},{tag:"div",attributes:{class:"ck-balloon-rotator__content"},children:this.content}]})}render(){super.render(),this.focusTracker.add(this.element)}destroy(){super.destroy(),this.focusTracker.destroy()}showView(e){this.hideView(),this.content.add(e)}hideView(){this.content.clear()}_createButtonView(e,t){const s=new n.Z(this.locale);return s.set({label:e,icon:t,tooltip:!0}),s}}class w extends r.Z{constructor(e,t){super(e);const s=this.bindTemplate;this.set("top",0),this.set("left",0),this.set("height",0),this.set("width",0),this.set("numberOfPanels",0),this.content=this.createCollection(),this._balloonPanelView=t,this.setTemplate({tag:"div",attributes:{class:["ck-fake-panel",s.to("numberOfPanels",(e=>e?"":"ck-hidden"))],style:{top:s.to("top",k),left:s.to("left",k),width:s.to("width",k),height:s.to("height",k)}},children:this.content}),this.on("change:numberOfPanels",((e,t,s,o)=>{s>o?this._addPanels(s-o):this._removePanels(o-s),this.updatePosition()}))}_addPanels(e){for(;e--;){const e=new r.Z;e.setTemplate({tag:"div"}),this.content.add(e),this.registerChild(e)}}_removePanels(e){for(;e--;){const e=this.content.last;this.content.remove(e),this.deregisterChild(e),e.destroy()}}updatePosition(){if(this.numberOfPanels){const{top:e,left:t}=this._balloonPanelView,{width:s,height:o}=new d.Z(this._balloonPanelView.element);Object.assign(this,{top:e,left:t,width:s,height:o})}}}},"./packages/ckeditor5-ui/src/template.js":(e,t,s)=>{"use strict";s.d(t,{ZP:()=>u});var o=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),i=s("./packages/ckeditor5-utils/src/mix.ts"),r=s("./packages/ckeditor5-utils/src/emittermixin.ts"),n=s("./packages/ckeditor5-ui/src/view.js"),a=s("./packages/ckeditor5-ui/src/viewcollection.js"),c=s("./packages/ckeditor5-utils/src/dom/isnode.ts"),l=s("./node_modules/lodash-es/isObject.js"),d=s("./node_modules/lodash-es/cloneDeepWith.js"),h=s("./packages/ckeditor5-utils/src/toarray.ts");class u{constructor(e){Object.assign(this,y(v(e))),this._isRendered=!1,this._revertData=null}render(){const e=this._renderNode({intoFragment:!0});return this._isRendered=!0,e}apply(e){return this._revertData={children:[],bindings:[],attributes:{}},this._renderNode({node:e,isApplying:!0,revertData:this._revertData}),e}revert(e){if(!this._revertData)throw new o.ZP("ui-template-revert-not-applied",[this,e]);this._revertTemplateFromNode(e,this._revertData)}*getViews(){yield*function*e(t){if(t.children)for(const s of t.children)C(s)?yield s:E(s)&&(yield*e(s))}(this)}static bind(e,t){return{to:(s,o)=>new g({eventNameOrFunction:s,attribute:s,observable:e,emitter:t,callback:o}),if:(s,o,i)=>new f({observable:e,emitter:t,attribute:s,valueIfTrue:o,callback:i})}}static extend(e,t){if(e._isRendered)throw new o.ZP("template-extend-render",[this,e]);T(e,y(v(t)))}_renderNode(e){let t;if(t=e.node?this.tag&&this.text:this.tag?this.text:!this.text,t)throw new o.ZP("ui-template-wrong-syntax",this);return this.text?this._renderText(e):this._renderElement(e)}_renderElement(e){let t=e.node;return t||(t=e.node=document.createElementNS(this.ns||"http://www.w3.org/1999/xhtml",this.tag)),this._renderAttributes(e),this._renderElementChildren(e),this._setUpListeners(e),t}_renderText(e){let t=e.node;return t?e.revertData.text=t.textContent:t=e.node=document.createTextNode(""),m(this.text)?this._bindToObservable({schema:this.text,updater:b(t),data:e}):t.textContent=this.text.join(""),t}_renderAttributes(e){let t,s,o,i;if(!this.attributes)return;const r=e.node,n=e.revertData;for(t in this.attributes)if(o=r.getAttribute(t),s=this.attributes[t],n&&(n.attributes[t]=o),i=(0,l.Z)(s[0])&&s[0].ns?s[0].ns:null,m(s)){const a=i?s[0].value:s;n&&j(t)&&a.unshift(o),this._bindToObservable({schema:a,updater:_(r,t,i),data:e})}else"style"==t&&"string"!=typeof s[0]?this._renderStyleAttribute(s[0],e):(n&&o&&j(t)&&s.unshift(o),s=s.map((e=>e&&e.value||e)).reduce(((e,t)=>e.concat(t)),[]).reduce(P,""),A(s)||r.setAttributeNS(i,t,s))}_renderStyleAttribute(e,t){const s=t.node;for(const o in e){const i=e[o];m(i)?this._bindToObservable({schema:[i],updater:w(s,o),data:t}):s.style[o]=i}}_renderElementChildren(e){const t=e.node,s=e.intoFragment?document.createDocumentFragment():t,o=e.isApplying;let i=0;for(const r of this.children)if(S(r)){if(!o){r.setParent(t);for(const e of r)s.appendChild(e.element)}}else if(C(r))o||(r.isRendered||r.render(),s.appendChild(r.element));else if((0,c.Z)(r))s.appendChild(r);else if(o){const t={children:[],bindings:[],attributes:{}};e.revertData.children.push(t),r._renderNode({node:s.childNodes[i++],isApplying:!0,revertData:t})}else s.appendChild(r.render());e.intoFragment&&t.appendChild(s)}_setUpListeners(e){if(this.eventListeners)for(const t in this.eventListeners){const s=this.eventListeners[t].map((s=>{const[o,i]=t.split("@");return s.activateDomEventListener(o,i,e)}));e.revertData&&e.revertData.bindings.push(s)}}_bindToObservable({schema:e,updater:t,data:s}){const o=s.revertData;k(e,t,s);const i=e.filter((e=>!A(e))).filter((e=>e.observable)).map((o=>o.activateAttributeListener(e,t,s)));o&&o.bindings.push(i)}_revertTemplateFromNode(e,t){for(const e of t.bindings)for(const t of e)t();if(t.text)e.textContent=t.text;else{for(const s in t.attributes){const o=t.attributes[s];null===o?e.removeAttribute(s):e.setAttribute(s,o)}for(let s=0;s<t.children.length;++s)this._revertTemplateFromNode(e.childNodes[s],t.children[s])}}}(0,i.Z)(u,r.ZP);class p{constructor(e){Object.assign(this,e)}getValue(e){const t=this.observable[this.attribute];return this.callback?this.callback(t,e):t}activateAttributeListener(e,t,s){const o=()=>k(e,t,s);return this.emitter.listenTo(this.observable,"change:"+this.attribute,o),()=>{this.emitter.stopListening(this.observable,"change:"+this.attribute,o)}}}class g extends p{activateDomEventListener(e,t,s){const o=(e,s)=>{t&&!s.target.matches(t)||("function"==typeof this.eventNameOrFunction?this.eventNameOrFunction(s):this.observable.fire(this.eventNameOrFunction,s))};return this.emitter.listenTo(s.node,e,o),()=>{this.emitter.stopListening(s.node,e,o)}}}class f extends p{getValue(e){return!A(super.getValue(e))&&(this.valueIfTrue||!0)}}function m(e){return!!e&&(e.value&&(e=e.value),Array.isArray(e)?e.some(m):e instanceof p)}function k(e,t,{node:s}){let o=function(e,t){return e.map((e=>e instanceof p?e.getValue(t):e))}(e,s);o=1==e.length&&e[0]instanceof f?o[0]:o.reduce(P,""),A(o)?t.remove():t.set(o)}function b(e){return{set(t){e.textContent=t},remove(){e.textContent=""}}}function _(e,t,s){return{set(o){e.setAttributeNS(s,t,o)},remove(){e.removeAttributeNS(s,t)}}}function w(e,t){return{set(s){e.style[t]=s},remove(){e.style[t]=null}}}function v(e){return(0,d.Z)(e,(e=>{if(e&&(e instanceof p||E(e)||C(e)||S(e)))return e}))}function y(e){if("string"==typeof e?e=function(e){return{text:[e]}}(e):e.text&&function(e){e.text=(0,h.Z)(e.text)}(e),e.on&&(e.eventListeners=function(e){for(const t in e)Z(e,t);return e}(e.on),delete e.on),!e.text){e.attributes&&function(e){for(const t in e)e[t].value&&(e[t].value=(0,h.Z)(e[t].value)),Z(e,t)}(e.attributes);const t=[];if(e.children)if(S(e.children))t.push(e.children);else for(const s of e.children)E(s)||C(s)||(0,c.Z)(s)?t.push(s):t.push(new u(s));e.children=t}return e}function Z(e,t){e[t]=(0,h.Z)(e[t])}function P(e,t){return A(t)?e:A(e)?t:`${e} ${t}`}function x(e,t){for(const s in t)e[s]?e[s].push(...t[s]):e[s]=t[s]}function T(e,t){if(t.attributes&&(e.attributes||(e.attributes={}),x(e.attributes,t.attributes)),t.eventListeners&&(e.eventListeners||(e.eventListeners={}),x(e.eventListeners,t.eventListeners)),t.text&&e.text.push(...t.text),t.children&&t.children.length){if(e.children.length!=t.children.length)throw new o.ZP("ui-template-extend-children-mismatch",e);let s=0;for(const o of t.children)T(e.children[s++],o)}}function A(e){return!e&&0!==e}function C(e){return e instanceof n.Z}function E(e){return e instanceof u}function S(e){return e instanceof a.Z}function j(e){return"class"==e||"style"==e}},"./packages/ckeditor5-ui/src/toolbar/normalizetoolbarconfig.js":(e,t,s)=>{"use strict";function o(e){return Array.isArray(e)?{items:e,removeItems:[]}:e?Object.assign({items:[],removeItems:[]},e):{items:[],removeItems:[]}}s.d(t,{Z:()=>o})},"./packages/ckeditor5-ui/src/toolbar/toolbarseparatorview.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./packages/ckeditor5-ui/src/view.js");class i extends o.Z{constructor(e){super(e),this.setTemplate({tag:"span",attributes:{class:["ck","ck-toolbar__separator"]}})}}},"./packages/ckeditor5-ui/src/toolbar/toolbarview.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>x});var o=s("./packages/ckeditor5-ui/src/view.js"),i=s("./packages/ckeditor5-utils/src/focustracker.ts"),r=s("./packages/ckeditor5-ui/src/focuscycler.js"),n=s("./packages/ckeditor5-utils/src/keystrokehandler.ts"),a=s("./packages/ckeditor5-ui/src/toolbar/toolbarseparatorview.js");class c extends o.Z{constructor(e){super(e),this.setTemplate({tag:"span",attributes:{class:["ck","ck-toolbar__line-break"]}})}}var l=s("./packages/ckeditor5-utils/src/dom/resizeobserver.ts");function d(e){return e.bindTemplate.to((t=>{t.target===e.element&&t.preventDefault()}))}var h=s("./packages/ckeditor5-utils/src/dom/rect.ts"),u=s("./packages/ckeditor5-utils/src/dom/isvisible.ts"),p=s("./packages/ckeditor5-utils/src/dom/global.ts"),g=s("./packages/ckeditor5-ui/src/dropdown/utils.js"),f=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),m=s("./packages/ckeditor5-ui/src/toolbar/normalizetoolbarconfig.js"),k=s("./node_modules/lodash-es/isObject.js"),b=s("./packages/ckeditor5-core/theme/icons/three-vertical-dots.svg"),_=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),w=s.n(_),v=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/toolbar/toolbar.css"),y={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};w()(v.Z,y);v.Z.locals;var Z=s("./packages/ckeditor5-core/src/index.js");const P={alignLeft:Z.ci.alignLeft,bold:Z.ci.bold,importExport:Z.ci.importExport,paragraph:Z.ci.paragraph,plus:Z.ci.plus,text:Z.ci.text,threeVerticalDots:Z.ci.threeVerticalDots};class x extends o.Z{constructor(e,t){super(e);const s=this.bindTemplate,o=this.t;this.options=t||{},this.set("ariaLabel",o("Editor toolbar")),this.set("maxWidth","auto"),this.items=this.createCollection(),this.focusTracker=new i.Z,this.keystrokes=new n.Z,this.set("class"),this.set("isCompact",!1),this.itemsView=new T(e),this.children=this.createCollection(),this.children.add(this.itemsView),this.focusables=this.createCollection();const a="rtl"===e.uiLanguageDirection;this._focusCycler=new r.Z({focusables:this.focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:[a?"arrowright":"arrowleft","arrowup"],focusNext:[a?"arrowleft":"arrowright","arrowdown"]}});const c=["ck","ck-toolbar",s.to("class"),s.if("isCompact","ck-toolbar_compact")];this.options.shouldGroupWhenFull&&this.options.isFloating&&c.push("ck-toolbar_floating"),this.setTemplate({tag:"div",attributes:{class:c,role:"toolbar","aria-label":s.to("ariaLabel"),style:{maxWidth:s.to("maxWidth")}},children:this.children,on:{mousedown:d(this)}}),this._behavior=this.options.shouldGroupWhenFull?new C(this):new A(this)}render(){super.render();for(const e of this.items)this.focusTracker.add(e.element);this.items.on("add",((e,t)=>{this.focusTracker.add(t.element)})),this.items.on("remove",((e,t)=>{this.focusTracker.remove(t.element)})),this.keystrokes.listenTo(this.element),this._behavior.render(this)}destroy(){return this._behavior.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy(),super.destroy()}focus(){this._focusCycler.focusFirst()}focusLast(){this._focusCycler.focusLast()}fillFromConfig(e,t,s){const o=(0,m.Z)(e),i=s||o.removeItems,r=this._cleanItemsConfiguration(o.items,t,i).map((e=>(0,k.Z)(e)?this._createNestedToolbarDropdown(e,t,i):"|"===e?new a.Z:"-"===e?new c:t.create(e))).filter((e=>e));this.items.addMany(r)}_cleanItemsConfiguration(e,t,s){const o=e.filter(((e,o,i)=>"|"===e||-1===s.indexOf(e)&&("-"===e?!this.options.shouldGroupWhenFull||((0,f.KE)("toolbarview-line-break-ignored-when-grouping-items",i),!1):!(!(0,k.Z)(e)&&!t.has(e))||((0,f.KE)("toolbarview-item-unavailable",{name:e}),!1))));return this._cleanSeparatorsAndLineBreaks(o)}_cleanSeparatorsAndLineBreaks(e){const t=e=>"-"!==e&&"|"!==e,s=e.length,o=e.findIndex(t);if(-1===o)return[];const i=s-e.slice().reverse().findIndex(t);return e.slice(o,i).filter(((e,s,o)=>{if(t(e))return!0;return!(s>0&&o[s-1]===e)}))}_createNestedToolbarDropdown(e,t,s){let{label:o,icon:i,items:r,tooltip:n=!0,withText:a=!1}=e;if(r=this._cleanItemsConfiguration(r,t,s),!r.length)return null;const c=this.locale,l=(0,g.t9)(c);return o||(0,f.KE)("toolbarview-nested-toolbar-dropdown-missing-label",e),l.class="ck-toolbar__nested-toolbar-dropdown",l.buttonView.set({label:o,tooltip:n,withText:!!a}),!1!==i?l.buttonView.icon=P[i]||i||P.threeVerticalDots:l.buttonView.withText=!0,(0,g.up)(l,[]),l.toolbarView.fillFromConfig(r,t,s),l}}class T extends o.Z{constructor(e){super(e),this.children=this.createCollection(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-toolbar__items"]},children:this.children})}}class A{constructor(e){const t=e.bindTemplate;e.set("isVertical",!1),e.itemsView.children.bindTo(e.items).using((e=>e)),e.focusables.bindTo(e.items).using((e=>e)),e.extendTemplate({attributes:{class:[t.if("isVertical","ck-toolbar_vertical")]}})}render(){}destroy(){}}class C{constructor(e){this.view=e,this.viewChildren=e.children,this.viewFocusables=e.focusables,this.viewItemsView=e.itemsView,this.viewFocusTracker=e.focusTracker,this.viewLocale=e.locale,this.ungroupedItems=e.createCollection(),this.groupedItems=e.createCollection(),this.groupedItemsDropdown=this._createGroupedItemsDropdown(),this.resizeObserver=null,this.cachedPadding=null,this.shouldUpdateGroupingOnNextResize=!1,e.itemsView.children.bindTo(this.ungroupedItems).using((e=>e)),this.ungroupedItems.on("add",this._updateFocusCycleableItems.bind(this)),this.ungroupedItems.on("remove",this._updateFocusCycleableItems.bind(this)),e.children.on("add",this._updateFocusCycleableItems.bind(this)),e.children.on("remove",this._updateFocusCycleableItems.bind(this)),e.items.on("change",((e,t)=>{const s=t.index;for(const e of t.removed)s>=this.ungroupedItems.length?this.groupedItems.remove(e):this.ungroupedItems.remove(e);for(let e=s;e<s+t.added.length;e++){const o=t.added[e-s];e>this.ungroupedItems.length?this.groupedItems.add(o,e-this.ungroupedItems.length):this.ungroupedItems.add(o,e)}this._updateGrouping()})),e.extendTemplate({attributes:{class:["ck-toolbar_grouping"]}})}render(e){this.viewElement=e.element,this._enableGroupingOnResize(),this._enableGroupingOnMaxWidthChange(e)}destroy(){this.groupedItemsDropdown.destroy(),this.resizeObserver.destroy()}_updateGrouping(){if(!this.viewElement.ownerDocument.body.contains(this.viewElement))return;if(!(0,u.Z)(this.viewElement))return void(this.shouldUpdateGroupingOnNextResize=!0);const e=this.groupedItems.length;let t;for(;this._areItemsOverflowing;)this._groupLastItem(),t=!0;if(!t&&this.groupedItems.length){for(;this.groupedItems.length&&!this._areItemsOverflowing;)this._ungroupFirstItem();this._areItemsOverflowing&&this._groupLastItem()}this.groupedItems.length!==e&&this.view.fire("groupedItemsUpdate")}get _areItemsOverflowing(){if(!this.ungroupedItems.length)return!1;const e=this.viewElement,t=this.viewLocale.uiLanguageDirection,s=new h.Z(e.lastChild),o=new h.Z(e);if(!this.cachedPadding){const s=p.Z.window.getComputedStyle(e),o="ltr"===t?"paddingRight":"paddingLeft";this.cachedPadding=Number.parseInt(s[o])}return"ltr"===t?s.right>o.right-this.cachedPadding:s.left<o.left+this.cachedPadding}_enableGroupingOnResize(){let e;this.resizeObserver=new l.Z(this.viewElement,(t=>{e&&e===t.contentRect.width&&!this.shouldUpdateGroupingOnNextResize||(this.shouldUpdateGroupingOnNextResize=!1,this._updateGrouping(),e=t.contentRect.width)})),this._updateGrouping()}_enableGroupingOnMaxWidthChange(e){e.on("change:maxWidth",(()=>{this._updateGrouping()}))}_groupLastItem(){this.groupedItems.length||(this.viewChildren.add(new a.Z),this.viewChildren.add(this.groupedItemsDropdown),this.viewFocusTracker.add(this.groupedItemsDropdown.element)),this.groupedItems.add(this.ungroupedItems.remove(this.ungroupedItems.last),0)}_ungroupFirstItem(){this.ungroupedItems.add(this.groupedItems.remove(this.groupedItems.first)),this.groupedItems.length||(this.viewChildren.remove(this.groupedItemsDropdown),this.viewChildren.remove(this.viewChildren.last),this.viewFocusTracker.remove(this.groupedItemsDropdown.element))}_createGroupedItemsDropdown(){const e=this.viewLocale,t=e.t,s=(0,g.t9)(e);return s.class="ck-toolbar__grouped-dropdown",s.panelPosition="ltr"===e.uiLanguageDirection?"sw":"se",(0,g.up)(s,[]),s.buttonView.set({label:t("Show more items"),tooltip:!0,tooltipPosition:"rtl"===e.uiLanguageDirection?"se":"sw",icon:b.Z}),s.toolbarView.items.bindTo(this.groupedItems).using((e=>e)),s}_updateFocusCycleableItems(){this.viewFocusables.clear(),this.ungroupedItems.map((e=>{this.viewFocusables.add(e)})),this.groupedItems.length&&this.viewFocusables.add(this.groupedItemsDropdown)}}},"./packages/ckeditor5-ui/src/tooltipmanager.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>g});var o=s("./packages/ckeditor5-ui/src/view.js"),i=s("./packages/ckeditor5-ui/src/panel/balloon/balloonpanelview.js"),r=s("./packages/ckeditor5-utils/src/dom/emittermixin.ts"),n=s("./packages/ckeditor5-utils/src/index.ts"),a=s("./node_modules/lodash-es/debounce.js"),c=s("./node_modules/lodash-es/isElement.js"),l=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),d=s.n(l),h=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/tooltip/tooltip.css"),u={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};d()(h.Z,u);h.Z.locals;const p="ck-tooltip";class g{constructor(e){if(g._editors.add(e),g._instance)return g._instance;g._instance=this,this.tooltipTextView=new o.Z(e.locale),this.tooltipTextView.set("text",""),this.tooltipTextView.setTemplate({tag:"span",attributes:{class:["ck","ck-tooltip__text"]},children:[{text:this.tooltipTextView.bindTemplate.to("text")}]}),this.balloonPanelView=new i.Z(e.locale),this.balloonPanelView.class=p,this.balloonPanelView.content.add(this.tooltipTextView),this._currentElementWithTooltip=null,this._currentTooltipPosition=null,this._pinTooltipDebounced=(0,a.Z)(this._pinTooltip,600),this.listenTo(n.CO.document,"mouseenter",this._onEnterOrFocus.bind(this),{useCapture:!0}),this.listenTo(n.CO.document,"mouseleave",this._onLeaveOrBlur.bind(this),{useCapture:!0}),this.listenTo(n.CO.document,"focus",this._onEnterOrFocus.bind(this),{useCapture:!0}),this.listenTo(n.CO.document,"blur",this._onLeaveOrBlur.bind(this),{useCapture:!0}),this.listenTo(n.CO.document,"scroll",this._onScroll.bind(this),{useCapture:!0}),this._watchdogExcluded=!0}destroy(e){g._editors.delete(e),this.stopListening(e.ui),g._editors.size||(this._unpinTooltip(),this.balloonPanelView.destroy(),this.stopListening(),g._instance=null)}_onEnterOrFocus(e,{target:t}){const s=f(t);var o;s&&(s!==this._currentElementWithTooltip&&(this._unpinTooltip(),this._pinTooltipDebounced(s,{text:(o=s).dataset.ckeTooltipText,position:o.dataset.ckeTooltipPosition||"s",cssClass:o.dataset.ckeTooltipClass||""})))}_onLeaveOrBlur(e,{target:t,relatedTarget:s}){if("mouseleave"===e.name){if(!(0,c.Z)(t))return;if(this._currentElementWithTooltip&&t!==this._currentElementWithTooltip)return;const e=f(t),o=f(s);e&&e!==o&&this._unpinTooltip()}else{if(this._currentElementWithTooltip&&t!==this._currentElementWithTooltip)return;this._unpinTooltip()}}_onScroll(e,{target:t}){this._currentElementWithTooltip&&(t.contains(this.balloonPanelView.element)&&t.contains(this._currentElementWithTooltip)||this._unpinTooltip())}_pinTooltip(e,{text:t,position:s,cssClass:o}){const i=(0,n.Ps)(g._editors.values()).ui.view.body;i.has(this.balloonPanelView)||i.add(this.balloonPanelView),this.tooltipTextView.text=t,this.balloonPanelView.pin({target:e,positions:g.getPositioningFunctions(s)}),this.balloonPanelView.class=[p,o].filter((e=>e)).join(" ");for(const e of g._editors)this.listenTo(e.ui,"update",this._updateTooltipPosition.bind(this),{priority:"low"});this._currentElementWithTooltip=e,this._currentTooltipPosition=s}_unpinTooltip(){this._pinTooltipDebounced.cancel(),this.balloonPanelView.unpin();for(const e of g._editors)this.stopListening(e.ui,"update");this._currentElementWithTooltip=null,this._currentTooltipPosition=null}_updateTooltipPosition(){(0,n.pn)(this._currentElementWithTooltip)?this.balloonPanelView.pin({target:this._currentElementWithTooltip,positions:g.getPositioningFunctions(this._currentTooltipPosition)}):this._unpinTooltip()}static getPositioningFunctions(e){const t=g.defaultBalloonPositions;return{s:[t.southArrowNorth,t.southArrowNorthEast,t.southArrowNorthWest],n:[t.northArrowSouth],e:[t.eastArrowWest],w:[t.westArrowEast],sw:[t.southArrowNorthEast],se:[t.southArrowNorthWest]}[e]}}function f(e){return(0,c.Z)(e)?e.closest("[data-cke-tooltip-text]:not([data-cke-tooltip-disabled])"):null}(0,n.CD)(g,r.Z),g.defaultBalloonPositions=(0,i.M)({heightOffset:5,sideOffset:13}),g._instance=null,g._editors=new Set},"./packages/ckeditor5-ui/src/view.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>f});var o=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),i=s("./packages/ckeditor5-ui/src/viewcollection.js"),r=s("./packages/ckeditor5-ui/src/template.js"),n=s("./packages/ckeditor5-utils/src/dom/emittermixin.ts"),a=s("./packages/ckeditor5-utils/src/observablemixin.ts"),c=s("./packages/ckeditor5-utils/src/collection.ts"),l=s("./packages/ckeditor5-utils/src/mix.ts"),d=s("./packages/ckeditor5-utils/src/isiterable.ts"),h=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),u=s.n(h),p=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/globals/globals.css"),g={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};u()(p.Z,g);p.Z.locals;class f{constructor(e){this.element=null,this.isRendered=!1,this.locale=e,this.t=e&&e.t,this._viewCollections=new c.Z,this._unboundChildren=this.createCollection(),this._viewCollections.on("add",((t,s)=>{s.locale=e})),this.decorate("render")}get bindTemplate(){return this._bindTemplate?this._bindTemplate:this._bindTemplate=r.ZP.bind(this,this)}createCollection(e){const t=new i.Z(e);return this._viewCollections.add(t),t}registerChild(e){(0,d.Z)(e)||(e=[e]);for(const t of e)this._unboundChildren.add(t)}deregisterChild(e){(0,d.Z)(e)||(e=[e]);for(const t of e)this._unboundChildren.remove(t)}setTemplate(e){this.template=new r.ZP(e)}extendTemplate(e){r.ZP.extend(this.template,e)}render(){if(this.isRendered)throw new o.ZP("ui-view-render-already-rendered",this);this.template&&(this.element=this.template.render(),this.registerChild(this.template.getViews())),this.isRendered=!0}destroy(){this.stopListening(),this._viewCollections.map((e=>e.destroy())),this.template&&this.template._revertData&&this.template.revert(this.element)}}(0,l.Z)(f,n.Z),(0,l.Z)(f,a.Z)},"./packages/ckeditor5-ui/src/viewcollection.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),i=s("./packages/ckeditor5-utils/src/collection.ts");class r extends i.Z{constructor(e=[]){super(e,{idProperty:"viewUid"}),this.on("add",((e,t,s)=>{this._renderViewIntoCollectionParent(t,s)})),this.on("remove",((e,t)=>{t.element&&this._parentElement&&t.element.remove()})),this._parentElement=null}destroy(){this.map((e=>e.destroy()))}setParent(e){this._parentElement=e;for(const e of this)this._renderViewIntoCollectionParent(e)}delegate(...e){if(!e.length||!e.every((e=>"string"==typeof e)))throw new o.ZP("ui-viewcollection-delegate-wrong-events",this);return{to:t=>{for(const s of this)for(const o of e)s.delegate(o).to(t);this.on("add",((s,o)=>{for(const s of e)o.delegate(s).to(t)})),this.on("remove",((s,o)=>{for(const s of e)o.stopDelegating(s,t)}))}}}_renderViewIntoCollectionParent(e,t){e.isRendered||e.render(),e.element&&this._parentElement&&this._parentElement.insertBefore(e.element,this._parentElement.children[t])}}},"./packages/ckeditor5-widget/src/utils.js":(e,t,s)=>{"use strict";s.d(t,{s4:()=>f,Uo:()=>m,KT:()=>x,id:()=>Z,Qd:()=>k,em:()=>v,l6:()=>y,XC:()=>b,sC:()=>P,$n:()=>T});var o=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),i=s("./packages/ckeditor5-utils/src/toarray.ts"),r=s("./packages/ckeditor5-engine/src/model/utils/findoptimalinsertionrange.ts"),n=s("./packages/ckeditor5-utils/src/emittermixin.ts"),a=s("./packages/ckeditor5-utils/src/mix.ts");class c{constructor(){this._stack=[]}add(e,t){const s=this._stack,o=s[0];this._insertDescriptor(e);const i=s[0];o===i||l(o,i)||this.fire("change:top",{oldDescriptor:o,newDescriptor:i,writer:t})}remove(e,t){const s=this._stack,o=s[0];this._removeDescriptor(e);const i=s[0];o===i||l(o,i)||this.fire("change:top",{oldDescriptor:o,newDescriptor:i,writer:t})}_insertDescriptor(e){const t=this._stack,s=t.findIndex((t=>t.id===e.id));if(l(e,t[s]))return;s>-1&&t.splice(s,1);let o=0;for(;t[o]&&d(t[o],e);)o++;t.splice(o,0,e)}_removeDescriptor(e){const t=this._stack,s=t.findIndex((t=>t.id===e));s>-1&&t.splice(s,1)}}function l(e,t){return e&&t&&e.priority==t.priority&&h(e.classes)==h(t.classes)}function d(e,t){return e.priority>t.priority||!(e.priority<t.priority)&&h(e.classes)>h(t.classes)}function h(e){return Array.isArray(e)?e.sort().join(","):e}(0,a.Z)(c,n.ZP);var u=s("./packages/ckeditor5-widget/src/widgettypearound/utils.js"),p=s("./packages/ckeditor5-ui/src/icon/iconview.js");const g='<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="M4 0v1H1v3H0V.5A.5.5 0 0 1 .5 0H4zm8 0h3.5a.5.5 0 0 1 .5.5V4h-1V1h-3V0zM4 16H.5a.5.5 0 0 1-.5-.5V12h1v3h3v1zm8 0v-1h3v-3h1v3.5a.5.5 0 0 1-.5.5H12z"/><path fill-opacity=".256" d="M1 1h14v14H1z"/><g class="ck-icon__selected-indicator"><path d="M7 0h2v1H7V0zM0 7h1v2H0V7zm15 0h1v2h-1V7zm-8 8h2v1H7v-1z"/><path fill-opacity=".254" d="M1 1h14v14H1z"/></g></svg>',f="ck-widget",m="ck-widget_selected";function k(e){return!!e.is("element")&&!!e.getCustomProperty("widget")}function b(e,t,s={}){if(!e.is("containerElement"))throw new o.ZP("widget-to-widget-wrong-element-type",null,{element:e});return t.setAttribute("contenteditable","false",e),t.addClass(f,e),t.setCustomProperty("widget",!0,e),e.getFillerOffset=A,s.label&&y(e,s.label,t),s.hasSelectionHandle&&function(e,t){const s=t.createUIElement("div",{class:"ck ck-widget__selection-handle"},(function(e){const t=this.toDomElement(e),s=new p.Z;return s.set("content",g),s.render(),t.appendChild(s.element),t}));t.insert(t.createPositionAt(e,0),s),t.addClass(["ck-widget_with-selection-handle"],e)}(e,t),v(e,t),e}function _(e,t,s){if(t.classes&&s.addClass((0,i.Z)(t.classes),e),t.attributes)for(const o in t.attributes)s.setAttribute(o,t.attributes[o],e)}function w(e,t,s){if(t.classes&&s.removeClass((0,i.Z)(t.classes),e),t.attributes)for(const o in t.attributes)s.removeAttribute(o,e)}function v(e,t,s=_,o=w){const i=new c;i.on("change:top",((t,i)=>{i.oldDescriptor&&o(e,i.oldDescriptor,i.writer),i.newDescriptor&&s(e,i.newDescriptor,i.writer)})),t.setCustomProperty("addHighlight",((e,t,s)=>i.add(t,s)),e),t.setCustomProperty("removeHighlight",((e,t,s)=>i.remove(t,s)),e)}function y(e,t,s){s.setCustomProperty("widgetLabel",t,e)}function Z(e){const t=e.getCustomProperty("widgetLabel");return t?"function"==typeof t?t():t:""}function P(e,t,s={}){return t.addClass(["ck-editor__editable","ck-editor__nested-editable"],e),t.setAttribute("role","textbox",e),s.label&&t.setAttribute("aria-label",s.label,e),t.setAttribute("contenteditable",e.isReadOnly?"false":"true",e),e.on("change:isReadOnly",((s,o,i)=>{t.setAttribute("contenteditable",i?"false":"true",e)})),e.on("change:isFocused",((s,o,i)=>{i?t.addClass("ck-editor__nested-editable_focused",e):t.removeClass("ck-editor__nested-editable_focused",e)})),v(e,t),e}function x(e,t){const s=e.getSelectedElement();if(s){const o=(0,u.tB)(e);if(o)return t.createRange(t.createPositionAt(s,o))}return(0,r.K)(e,t)}function T(e,t){return(s,o)=>{const{mapper:i,viewPosition:r}=o,n=i.findMappedViewAncestor(r);if(!t(n))return;const a=i.toModelElement(n);o.modelPosition=e.createPositionAt(a,r.isAtStart?"before":"after")}}function A(){return null}},"./packages/ckeditor5-widget/src/widget.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>b});var o=s("./packages/ckeditor5-core/src/plugin.js"),i=s("./packages/ckeditor5-engine/src/view/observer/mouseobserver.ts"),r=s("./packages/ckeditor5-widget/src/widgettypearound/widgettypearound.js"),n=s("./packages/ckeditor5-typing/src/delete.js"),a=s("./packages/ckeditor5-utils/src/env.ts"),c=s("./packages/ckeditor5-utils/src/keyboard.ts"),l=s("./packages/ckeditor5-utils/src/dom/rect.ts");function d(e){const t=e.model;return(s,o)=>{const i=o.keyCode==c.Do.arrowup,r=o.keyCode==c.Do.arrowdown,n=o.shiftKey,a=t.document.selection;if(!i&&!r)return;const d=r;if(n&&function(e,t){return!e.isCollapsed&&e.isBackward==t}(a,d))return;const p=function(e,t,s){const o=e.model;if(s){const e=t.isCollapsed?t.focus:t.getLastPosition(),s=h(o,e,"forward");if(!s)return null;const i=o.createRange(e,s),r=u(o.schema,i,"backward");return r?o.createRange(e,r):null}{const e=t.isCollapsed?t.focus:t.getFirstPosition(),s=h(o,e,"backward");if(!s)return null;const i=o.createRange(s,e),r=u(o.schema,i,"forward");return r?o.createRange(r,e):null}}(e,a,d);if(p){if(p.isCollapsed){if(a.isCollapsed)return;if(n)return}(p.isCollapsed||function(e,t,s){const o=e.model,i=e.view.domConverter;if(s){const e=o.createSelection(t.start);o.modifySelection(e),e.focus.isAtEnd||t.start.isEqual(e.focus)||(t=o.createRange(e.focus,t.end))}const r=e.mapper.toViewRange(t),n=i.viewRangeToDom(r),a=l.Z.getDomRangeRects(n);let c;for(const e of a)if(void 0!==c){if(Math.round(e.top)>=c)return!1;c=Math.max(c,Math.round(e.bottom))}else c=Math.round(e.bottom);return!0}(e,p,d))&&(t.change((e=>{const s=d?p.end:p.start;if(n){const o=t.createSelection(a.anchor);o.setFocus(s),e.setSelection(o)}else e.setSelection(s)})),s.stop(),o.preventDefault(),o.stopPropagation())}}}function h(e,t,s){const o=e.schema,i=e.createRangeIn(t.root),r="forward"==s?"elementStart":"elementEnd";for(const{previousPosition:e,item:n,type:a}of i.getWalker({startPosition:t,direction:s})){if(o.isLimit(n)&&!o.isInline(n))return e;if(a==r&&o.isBlock(n))return null}return null}function u(e,t,s){const o="backward"==s?t.end:t.start;if(e.checkChild(o,"$text"))return o;for(const{nextPosition:o}of t.getWalker({direction:s}))if(e.checkChild(o,"$text"))return o;return null}var p=s("./packages/ckeditor5-widget/src/utils.js"),g=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),f=s.n(g),m=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-widget/theme/widget.css"),k={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};f()(m.Z,k);m.Z.locals;class b extends o.Z{static get pluginName(){return"Widget"}static get requires(){return[r.Z,n.Z]}init(){const e=this.editor,t=e.editing.view,s=t.document;this._previouslySelected=new Set,this.editor.editing.downcastDispatcher.on("selection",((t,s,o)=>{const i=o.writer,r=s.selection;if(r.isCollapsed)return;const n=r.getSelectedElement();if(!n)return;const a=e.editing.mapper.toViewElement(n);(0,p.Qd)(a)&&o.consumable.consume(r,"selection")&&i.setSelection(i.createRangeOn(a),{fake:!0,label:(0,p.id)(a)})})),this.editor.editing.downcastDispatcher.on("selection",((e,t,s)=>{this._clearPreviouslySelectedWidgets(s.writer);const o=s.writer,i=o.document.selection;let r=null;for(const e of i.getRanges())for(const t of e){const e=t.item;(0,p.Qd)(e)&&!_(e,r)&&(o.addClass(p.Uo,e),this._previouslySelected.add(e),r=e)}}),{priority:"low"}),t.addObserver(i.Z),this.listenTo(s,"mousedown",((...e)=>this._onMousedown(...e))),this.listenTo(s,"arrowKey",((...e)=>{this._handleSelectionChangeOnArrowKeyPress(...e)}),{context:[p.Qd,"$text"]}),this.listenTo(s,"arrowKey",((...e)=>{this._preventDefaultOnArrowKeyPress(...e)}),{context:"$root"}),this.listenTo(s,"arrowKey",d(this.editor.editing),{context:"$text"}),this.listenTo(s,"delete",((e,t)=>{this._handleDelete("forward"==t.direction)&&(t.preventDefault(),e.stop())}),{context:"$root"})}_onMousedown(e,t){const s=this.editor,o=s.editing.view,i=o.document;let r=t.target;if(function(e){for(;e;){if(e.is("editableElement")&&!e.is("rootElement"))return!0;if((0,p.Qd)(e))return!1;e=e.parent}return!1}(r)){if((a.ZP.isSafari||a.ZP.isGecko)&&t.domEvent.detail>=3){const e=s.editing.mapper,o=r.is("attributeElement")?r.findAncestor((e=>!e.is("attributeElement"))):r,i=e.toModelElement(o);t.preventDefault(),this.editor.model.change((e=>{e.setSelection(i,"in")}))}return}if(!(0,p.Qd)(r)&&(r=r.findAncestor(p.Qd),!r))return;a.ZP.isAndroid&&t.preventDefault(),i.isFocused||o.focus();const n=s.editing.mapper.toModelElement(r);this._setSelectionOverElement(n)}_handleSelectionChangeOnArrowKeyPress(e,t){const s=t.keyCode,o=this.editor.model,i=o.schema,r=o.document.selection,n=r.getSelectedElement(),a=(0,c.mA)(s,this.editor.locale.contentLanguageDirection),l="down"==a||"right"==a,d="up"==a||"down"==a;if(n&&i.isObject(n)){const s=l?r.getLastPosition():r.getFirstPosition(),n=i.getNearestSelectionRange(s,l?"forward":"backward");return void(n&&(o.change((e=>{e.setSelection(n)})),t.preventDefault(),e.stop()))}if(!r.isCollapsed&&!t.shiftKey){const s=r.getFirstPosition(),n=r.getLastPosition(),a=s.nodeAfter,c=n.nodeBefore;return void((a&&i.isObject(a)||c&&i.isObject(c))&&(o.change((e=>{e.setSelection(l?n:s)})),t.preventDefault(),e.stop()))}if(!r.isCollapsed)return;const h=this._getObjectElementNextToSelection(l);if(h&&i.isObject(h)){if(i.isInline(h)&&d)return;this._setSelectionOverElement(h),t.preventDefault(),e.stop()}}_preventDefaultOnArrowKeyPress(e,t){const s=this.editor.model,o=s.schema,i=s.document.selection.getSelectedElement();i&&o.isObject(i)&&(t.preventDefault(),e.stop())}_handleDelete(e){if(this.editor.isReadOnly)return;const t=this.editor.model.document.selection;if(!t.isCollapsed)return;const s=this._getObjectElementNextToSelection(e);return s?(this.editor.model.change((e=>{let o=t.anchor.parent;for(;o.isEmpty;){const t=o;o=t.parent,e.remove(t)}this._setSelectionOverElement(s)})),!0):void 0}_setSelectionOverElement(e){this.editor.model.change((t=>{t.setSelection(t.createRangeOn(e))}))}_getObjectElementNextToSelection(e){const t=this.editor.model,s=t.schema,o=t.document.selection,i=t.createSelection(o);if(t.modifySelection(i,{direction:e?"forward":"backward"}),i.isEqual(o))return null;const r=e?i.focus.nodeBefore:i.focus.nodeAfter;return r&&s.isObject(r)?r:null}_clearPreviouslySelectedWidgets(e){for(const t of this._previouslySelected)e.removeClass(p.Uo,t);this._previouslySelected.clear()}}function _(e,t){return!!t&&Array.from(e.getAncestors()).includes(t)}},"./packages/ckeditor5-widget/src/widgettypearound/utils.js":(e,t,s)=>{"use strict";s.d(t,{Xr:()=>n,_m:()=>r,aU:()=>a,bi:()=>i,t:()=>c,tB:()=>l});var o=s("./packages/ckeditor5-widget/src/utils.js");const i="widget-type-around";function r(e,t,s){return e&&(0,o.Qd)(e)&&!s.isInline(t)}function n(e){return e.closest(".ck-widget__type-around__button")}function a(e){return e.classList.contains("ck-widget__type-around__button_before")?"before":"after"}function c(e,t){const s=e.closest(".ck-widget");return t.mapDomToView(s)}function l(e){return e.getAttribute(i)}},"./packages/ckeditor5-widget/src/widgettypearound/widgettypearound.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>b});var o=s("./packages/ckeditor5-core/src/plugin.js"),i=s("./packages/ckeditor5-ui/src/template.js"),r=s("./packages/ckeditor5-enter/src/enter.js"),n=s("./packages/ckeditor5-typing/src/delete.js"),a=s("./packages/ckeditor5-utils/src/keyboard.ts"),c=s("./packages/ckeditor5-widget/src/widgettypearound/utils.js"),l=s("./packages/ckeditor5-typing/src/utils/injectunsafekeystrokeshandling.js"),d=s("./packages/ckeditor5-widget/src/utils.js");var h=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),u=s.n(h),p=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-widget/theme/widgettypearound.css"),g={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};u()(p.Z,g);p.Z.locals;const f=["before","after"],m=(new DOMParser).parseFromString('<svg viewBox="0 0 10 8" xmlns="http://www.w3.org/2000/svg"><path d="M9.055.263v3.972h-6.77M1 4.216l2-2.038m-2 2 2 2.038"/></svg>',"image/svg+xml").firstChild,k="ck-widget__type-around_disabled";class b extends o.Z{static get pluginName(){return"WidgetTypeAround"}static get requires(){return[r.Z,n.Z]}constructor(e){super(e),this._currentFakeCaretModelElement=null}init(){const e=this.editor,t=e.editing.view;this.on("change:isEnabled",((s,o,i)=>{t.change((e=>{for(const s of t.document.roots)i?e.removeClass(k,s):e.addClass(k,s)})),i||e.model.change((e=>{e.removeSelectionAttribute(c.bi)}))})),this._enableTypeAroundUIInjection(),this._enableInsertingParagraphsOnButtonClick(),this._enableInsertingParagraphsOnEnterKeypress(),this._enableInsertingParagraphsOnTypingKeystroke(),this._enableTypeAroundFakeCaretActivationUsingKeyboardArrows(),this._enableDeleteIntegration(),this._enableInsertContentIntegration(),this._enableInsertObjectIntegration(),this._enableDeleteContentIntegration()}destroy(){this._currentFakeCaretModelElement=null}_insertParagraph(e,t){const s=this.editor,o=s.editing.view,i=s.model.schema.getAttributesWithProperty(e,"copyOnReplace",!0);s.execute("insertParagraph",{position:s.model.createPositionAt(e,t),attributes:i}),o.focus(),o.scrollToTheSelection()}_listenToIfEnabled(e,t,s,o){this.listenTo(e,t,((...e)=>{this.isEnabled&&s(...e)}),o)}_insertParagraphAccordingToFakeCaretPosition(){const e=this.editor.model.document.selection,t=(0,c.tB)(e);if(!t)return!1;const s=e.getSelectedElement();return this._insertParagraph(s,t),!0}_enableTypeAroundUIInjection(){const e=this.editor,t=e.model.schema,s=e.locale.t,o={before:s("Insert paragraph before block"),after:s("Insert paragraph after block")};e.editing.downcastDispatcher.on("insert",((e,s,r)=>{const n=r.mapper.toViewElement(s.item);(0,c._m)(n,s.item,t)&&function(e,t,s){const o=e.createUIElement("div",{class:"ck ck-reset_all ck-widget__type-around"},(function(e){const s=this.toDomElement(e);return function(e,t){for(const s of f){const o=new i.ZP({tag:"div",attributes:{class:["ck","ck-widget__type-around__button",`ck-widget__type-around__button_${s}`],title:t[s]},children:[e.ownerDocument.importNode(m,!0)]});e.appendChild(o.render())}}(s,t),function(e){const t=new i.ZP({tag:"div",attributes:{class:["ck","ck-widget__type-around__fake-caret"]}});e.appendChild(t.render())}(s),s}));e.insert(e.createPositionAt(s,"end"),o)}(r.writer,o,n)}),{priority:"low"})}_enableTypeAroundFakeCaretActivationUsingKeyboardArrows(){const e=this.editor,t=e.model,s=t.document.selection,o=t.schema,i=e.editing.view;function r(e){return`ck-widget_type-around_show-fake-caret_${e}`}this._listenToIfEnabled(i.document,"arrowKey",((e,t)=>{this._handleArrowKeyPress(e,t)}),{context:[d.Qd,"$text"],priority:"high"}),this._listenToIfEnabled(s,"change:range",((t,s)=>{s.directChange&&e.model.change((e=>{e.removeSelectionAttribute(c.bi)}))})),this._listenToIfEnabled(t.document,"change:data",(()=>{const t=s.getSelectedElement();if(t){const s=e.editing.mapper.toViewElement(t);if((0,c._m)(s,t,o))return}e.model.change((e=>{e.removeSelectionAttribute(c.bi)}))})),this._listenToIfEnabled(e.editing.downcastDispatcher,"selection",((e,t,s)=>{const i=s.writer;if(this._currentFakeCaretModelElement){const e=s.mapper.toViewElement(this._currentFakeCaretModelElement);e&&(i.removeClass(f.map(r),e),this._currentFakeCaretModelElement=null)}const n=t.selection.getSelectedElement();if(!n)return;const a=s.mapper.toViewElement(n);if(!(0,c._m)(a,n,o))return;const l=(0,c.tB)(t.selection);l&&(i.addClass(r(l),a),this._currentFakeCaretModelElement=n)})),this._listenToIfEnabled(e.ui.focusTracker,"change:isFocused",((t,s,o)=>{o||e.model.change((e=>{e.removeSelectionAttribute(c.bi)}))}))}_handleArrowKeyPress(e,t){const s=this.editor,o=s.model,i=o.document.selection,r=o.schema,n=s.editing.view,l=t.keyCode,d=(0,a.Zt)(l,s.locale.contentLanguageDirection),h=n.document.selection.getSelectedElement(),u=s.editing.mapper.toModelElement(h);let p;(0,c._m)(h,u,r)?p=this._handleArrowKeyPressOnSelectedWidget(d):i.isCollapsed?p=this._handleArrowKeyPressWhenSelectionNextToAWidget(d):t.shiftKey||(p=this._handleArrowKeyPressWhenNonCollapsedSelection(d)),p&&(t.preventDefault(),e.stop())}_handleArrowKeyPressOnSelectedWidget(e){const t=this.editor.model,s=t.document.selection,o=(0,c.tB)(s);return t.change((t=>{if(!o)return t.setSelectionAttribute(c.bi,e?"after":"before"),!0;if(!(o===(e?"after":"before")))return t.removeSelectionAttribute(c.bi),!0;return!1}))}_handleArrowKeyPressWhenSelectionNextToAWidget(e){const t=this.editor,s=t.model,o=s.schema,i=t.plugins.get("Widget"),r=i._getObjectElementNextToSelection(e),n=t.editing.mapper.toViewElement(r);return!!(0,c._m)(n,r,o)&&(s.change((t=>{i._setSelectionOverElement(r),t.setSelectionAttribute(c.bi,e?"before":"after")})),!0)}_handleArrowKeyPressWhenNonCollapsedSelection(e){const t=this.editor,s=t.model,o=s.schema,i=t.editing.mapper,r=s.document.selection,n=e?r.getLastPosition().nodeBefore:r.getFirstPosition().nodeAfter,a=i.toViewElement(n);return!!(0,c._m)(a,n,o)&&(s.change((t=>{t.setSelection(n,"on"),t.setSelectionAttribute(c.bi,e?"after":"before")})),!0)}_enableInsertingParagraphsOnButtonClick(){const e=this.editor,t=e.editing.view;this._listenToIfEnabled(t.document,"mousedown",((s,o)=>{const i=(0,c.Xr)(o.domTarget);if(!i)return;const r=(0,c.aU)(i),n=(0,c.t)(i,t.domConverter),a=e.editing.mapper.toModelElement(n);this._insertParagraph(a,r),o.preventDefault(),s.stop()}))}_enableInsertingParagraphsOnEnterKeypress(){const e=this.editor,t=e.model.document.selection,s=e.editing.view;this._listenToIfEnabled(s.document,"enter",((s,o)=>{if("atTarget"!=s.eventPhase)return;const i=t.getSelectedElement(),r=e.editing.mapper.toViewElement(i),n=e.model.schema;let a;this._insertParagraphAccordingToFakeCaretPosition()?a=!0:(0,c._m)(r,i,n)&&(this._insertParagraph(i,o.isSoft?"before":"after"),a=!0),a&&(o.preventDefault(),s.stop())}),{context:d.Qd})}_enableInsertingParagraphsOnTypingKeystroke(){const e=this.editor.editing.view,t=[a.Do.enter,a.Do.delete,a.Do.backspace];this._listenToIfEnabled(e.document,"keydown",((e,s)=>{t.includes(s.keyCode)||(0,l.u)(s)||this._insertParagraphAccordingToFakeCaretPosition()}),{priority:"high"})}_enableDeleteIntegration(){const e=this.editor,t=e.editing.view,s=e.model,o=s.schema;this._listenToIfEnabled(t.document,"delete",((t,i)=>{if("atTarget"!=t.eventPhase)return;const r=(0,c.tB)(s.document.selection);if(!r)return;const n=i.direction,a=s.document.selection.getSelectedElement(),l="forward"==n;if("before"===r===l)e.execute("delete",{selection:s.createSelection(a,"on")});else{const t=o.getNearestSelectionRange(s.createPositionAt(a,r),n);if(t)if(t.isCollapsed){const i=s.createSelection(t.start);if(s.modifySelection(i,{direction:n}),i.focus.isEqual(t.start)){const e=function(e,t){let s=t;for(const o of t.getAncestors({parentFirst:!0})){if(o.childCount>1||e.isLimit(o))break;s=o}return s}(o,t.start.parent);s.deleteContent(s.createSelection(e,"on"),{doNotAutoparagraph:!0})}else s.change((s=>{s.setSelection(t),e.execute(l?"deleteForward":"delete")}))}else s.change((s=>{s.setSelection(t),e.execute(l?"deleteForward":"delete")}))}i.preventDefault(),t.stop()}),{context:d.Qd})}_enableInsertContentIntegration(){const e=this.editor,t=this.editor.model,s=t.document.selection;this._listenToIfEnabled(e.model,"insertContent",((e,[o,i])=>{if(i&&!i.is("documentSelection"))return;const r=(0,c.tB)(s);return r?(e.stop(),t.change((e=>{const i=s.getSelectedElement(),n=t.createPositionAt(i,r),a=e.createSelection(n),c=t.insertContent(o,a);return e.setSelection(a),c}))):void 0}),{priority:"high"})}_enableInsertObjectIntegration(){const e=this.editor,t=this.editor.model.document.selection;this._listenToIfEnabled(e.model,"insertObject",((e,s)=>{const[,o,,i={}]=s;if(o&&!o.is("documentSelection"))return;const r=(0,c.tB)(t);r&&(i.findOptimalPosition=r,s[3]=i)}),{priority:"high"})}_enableDeleteContentIntegration(){const e=this.editor,t=this.editor.model.document.selection;this._listenToIfEnabled(e.model,"deleteContent",((e,[s])=>{if(s&&!s.is("documentSelection"))return;(0,c.tB)(t)&&e.stop()}),{priority:"high"})}}},"./src/clipboard.js":(e,t,s)=>{"use strict";s.r(t),s.d(t,{Clipboard:()=>C,ClipboardPipeline:()=>d,DragDrop:()=>y,PastePlainText:()=>A});var o=s("./packages/ckeditor5-core/src/plugin.js"),i=s("./packages/ckeditor5-utils/src/eventinfo.ts"),r=s("./packages/ckeditor5-engine/src/view/observer/domeventobserver.ts");class n{constructor(e){this.files=function(e){const t=Array.from(e.files||[]),s=Array.from(e.items||[]);if(t.length)return t;return s.filter((e=>"file"===e.kind)).map((e=>e.getAsFile()))}(e),this._native=e}get types(){return this._native.types}getData(e){return this._native.getData(e)}setData(e,t){this._native.setData(e,t)}set effectAllowed(e){this._native.effectAllowed=e}get effectAllowed(){return this._native.effectAllowed}set dropEffect(e){this._native.dropEffect=e}get dropEffect(){return this._native.dropEffect}get isCanceled(){return"none"==this._native.dropEffect||!!this._native.mozUserCancelled}}class a extends r.Z{constructor(e){super(e);const t=this.document;function s(e){return(s,o)=>{o.preventDefault();const r=o.dropRange?[o.dropRange]:null,n=new i.Z(t,e);t.fire(n,{dataTransfer:o.dataTransfer,method:s.name,targetRanges:r,target:o.target}),n.stop.called&&o.stopPropagation()}}this.domEventType=["paste","copy","cut","drop","dragover","dragstart","dragend","dragenter","dragleave"],this.listenTo(t,"paste",s("clipboardInput"),{priority:"low"}),this.listenTo(t,"drop",s("clipboardInput"),{priority:"low"}),this.listenTo(t,"dragover",s("dragging"),{priority:"low"})}onDomEvent(e){const t={dataTransfer:new n(e.clipboardData?e.clipboardData:e.dataTransfer)};"drop"!=e.type&&"dragover"!=e.type||(t.dropRange=function(e,t){const s=t.target.ownerDocument,o=t.clientX,i=t.clientY;let r;s.caretRangeFromPoint&&s.caretRangeFromPoint(o,i)?r=s.caretRangeFromPoint(o,i):t.rangeParent&&(r=s.createRange(),r.setStart(t.rangeParent,t.rangeOffset),r.collapse(!0));if(r)return e.domConverter.domRangeToView(r);return null}(this.view,e)),this.fire(e.type,e,t)}}const c=["figcaption","li"];function l(e){let t="";if(e.is("$text")||e.is("$textProxy"))t=e.data;else if(e.is("element","img")&&e.hasAttribute("alt"))t=e.getAttribute("alt");else if(e.is("element","br"))t="\n";else{let s=null;for(const o of e.getChildren()){const e=l(o);s&&(s.is("containerElement")||o.is("containerElement"))&&(c.includes(s.name)||c.includes(o.name)?t+="\n":t+="\n\n"),t+=e,s=o}}return t}class d extends o.Z{static get pluginName(){return"ClipboardPipeline"}init(){this.editor.editing.view.addObserver(a),this._setupPasteDrop(),this._setupCopyCut()}_setupPasteDrop(){const e=this.editor,t=e.model,s=e.editing.view,o=s.document;this.listenTo(o,"clipboardInput",(t=>{e.isReadOnly&&t.stop()}),{priority:"highest"}),this.listenTo(o,"clipboardInput",((e,t)=>{const o=t.dataTransfer;let r=t.content||"";var n;r||(o.getData("text/html")?r=function(e){return e.replace(/<span(?: class="Apple-converted-space"|)>(\s+)<\/span>/g,((e,t)=>1==t.length?" ":t)).replace(/<!--[\s\S]*?-->/g,"")}(o.getData("text/html")):o.getData("text/plain")&&(((n=(n=o.getData("text/plain")).replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/\r?\n\r?\n/g,"</p><p>").replace(/\r?\n/g,"<br>").replace(/^\s/,"&nbsp;").replace(/\s$/,"&nbsp;").replace(/\s\s/g," &nbsp;")).includes("</p><p>")||n.includes("<br>"))&&(n=`<p>${n}</p>`),r=n),r=this.editor.data.htmlProcessor.toView(r));const a=new i.Z(this,"inputTransformation");this.fire(a,{content:r,dataTransfer:o,targetRanges:t.targetRanges,method:t.method}),a.stop.called&&e.stop(),s.scrollToTheSelection()}),{priority:"low"}),this.listenTo(this,"inputTransformation",((e,s)=>{if(s.content.isEmpty)return;const o=this.editor.data.toModel(s.content,"$clipboardHolder");0!=o.childCount&&(e.stop(),t.change((()=>{this.fire("contentInsertion",{content:o,method:s.method,dataTransfer:s.dataTransfer,targetRanges:s.targetRanges})})))}),{priority:"low"}),this.listenTo(this,"contentInsertion",((e,s)=>{s.resultRange=t.insertContent(s.content)}),{priority:"low"})}_setupCopyCut(){const e=this.editor,t=e.model.document,s=e.editing.view.document;function o(o,i){const r=i.dataTransfer;i.preventDefault();const n=e.data.toView(e.model.getSelectedContent(t.selection));s.fire("clipboardOutput",{dataTransfer:r,content:n,method:o.name})}this.listenTo(s,"copy",o,{priority:"low"}),this.listenTo(s,"cut",((t,s)=>{e.isReadOnly?s.preventDefault():o(t,s)}),{priority:"low"}),this.listenTo(s,"clipboardOutput",((s,o)=>{o.content.isEmpty||(o.dataTransfer.setData("text/html",this.editor.data.htmlProcessor.toData(o.content)),o.dataTransfer.setData("text/plain",l(o.content))),"cut"==o.method&&e.model.deleteContent(t.selection)}),{priority:"low"})}}var h=s("./packages/ckeditor5-engine/src/model/liverange.ts"),u=s("./packages/ckeditor5-engine/src/view/observer/mouseobserver.ts"),p=s("./packages/ckeditor5-widget/src/widget.js"),g=s("./packages/ckeditor5-utils/src/uid.ts"),f=s("./packages/ckeditor5-utils/src/env.ts"),m=s("./packages/ckeditor5-widget/src/utils.js"),k=s("./node_modules/lodash-es/throttle.js"),b=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),_=s.n(b),w=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-clipboard/theme/clipboard.css"),v={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};_()(w.Z,v);w.Z.locals;class y extends o.Z{static get pluginName(){return"DragDrop"}static get requires(){return[d,p.Z]}init(){const e=this.editor,t=e.editing.view;this._draggedRange=null,this._draggingUid="",this._draggableElement=null,this._updateDropMarkerThrottled=(0,k.Z)((e=>this._updateDropMarker(e)),40),this._removeDropMarkerDelayed=x((()=>this._removeDropMarker()),40),this._clearDraggableAttributesDelayed=x((()=>this._clearDraggableAttributes()),40),t.addObserver(a),t.addObserver(u.Z),this._setupDragging(),this._setupContentInsertionIntegration(),this._setupClipboardInputIntegration(),this._setupDropMarker(),this._setupDraggableAttributeHandling(),this.listenTo(e,"change:isReadOnly",((e,t,s)=>{s?this.forceDisabled("readOnlyMode"):this.clearForceDisabled("readOnlyMode")})),this.on("change:isEnabled",((e,t,s)=>{s||this._finalizeDragging(!1)})),f.ZP.isAndroid&&this.forceDisabled("noAndroidSupport")}destroy(){return this._draggedRange&&(this._draggedRange.detach(),this._draggedRange=null),this._updateDropMarkerThrottled.cancel(),this._removeDropMarkerDelayed.cancel(),this._clearDraggableAttributesDelayed.cancel(),super.destroy()}_setupDragging(){const e=this.editor,t=e.model,s=t.document,o=e.editing.view,i=o.document;this.listenTo(i,"dragstart",((o,r)=>{const n=s.selection;if(r.target&&r.target.is("editableElement"))return void r.preventDefault();const a=r.target?T(r.target):null;if(a){const s=e.editing.mapper.toModelElement(a);this._draggedRange=h.Z.fromRange(t.createRangeOn(s)),e.plugins.has("WidgetToolbarRepository")&&e.plugins.get("WidgetToolbarRepository").forceDisabled("dragDrop")}else if(!i.selection.isCollapsed){const e=i.selection.getSelectedElement();e&&(0,m.Qd)(e)||(this._draggedRange=h.Z.fromRange(n.getFirstRange()))}if(!this._draggedRange)return void r.preventDefault();this._draggingUid=(0,g.Z)(),r.dataTransfer.effectAllowed=this.isEnabled?"copyMove":"copy",r.dataTransfer.setData("application/ckeditor5-dragging-uid",this._draggingUid);const c=t.createSelection(this._draggedRange.toRange()),l=e.data.toView(t.getSelectedContent(c));i.fire("clipboardOutput",{dataTransfer:r.dataTransfer,content:l,method:o.name}),this.isEnabled||(this._draggedRange.detach(),this._draggedRange=null,this._draggingUid="")}),{priority:"low"}),this.listenTo(i,"dragend",((e,t)=>{this._finalizeDragging(!t.dataTransfer.isCanceled&&"move"==t.dataTransfer.dropEffect)}),{priority:"low"}),this.listenTo(i,"dragenter",(()=>{this.isEnabled&&o.focus()})),this.listenTo(i,"dragleave",(()=>{this._removeDropMarkerDelayed()})),this.listenTo(i,"dragging",((t,s)=>{if(!this.isEnabled)return void(s.dataTransfer.dropEffect="none");this._removeDropMarkerDelayed.cancel();const o=Z(e,s.targetRanges,s.target);this._draggedRange||(s.dataTransfer.dropEffect="copy"),f.ZP.isGecko||("copy"==s.dataTransfer.effectAllowed?s.dataTransfer.dropEffect="copy":["all","copyMove"].includes(s.dataTransfer.effectAllowed)&&(s.dataTransfer.dropEffect="move")),o&&this._updateDropMarkerThrottled(o)}),{priority:"low"})}_setupClipboardInputIntegration(){const e=this.editor,t=e.editing.view.document;this.listenTo(t,"clipboardInput",((t,s)=>{if("drop"!=s.method)return;const o=Z(e,s.targetRanges,s.target);if(this._removeDropMarker(),!o)return this._finalizeDragging(!1),void t.stop();this._draggedRange&&this._draggingUid!=s.dataTransfer.getData("application/ckeditor5-dragging-uid")&&(this._draggedRange.detach(),this._draggedRange=null,this._draggingUid="");if("move"==P(s.dataTransfer)&&this._draggedRange&&this._draggedRange.containsRange(o,!0))return this._finalizeDragging(!1),void t.stop();s.targetRanges=[e.editing.mapper.toViewRange(o)]}),{priority:"high"})}_setupContentInsertionIntegration(){const e=this.editor.plugins.get(d);e.on("contentInsertion",((e,t)=>{if(!this.isEnabled||"drop"!==t.method)return;const s=t.targetRanges.map((e=>this.editor.editing.mapper.toModelRange(e)));this.editor.model.change((e=>e.setSelection(s)))}),{priority:"high"}),e.on("contentInsertion",((e,t)=>{if(!this.isEnabled||"drop"!==t.method)return;const s="move"==P(t.dataTransfer),o=!t.resultRange||!t.resultRange.isCollapsed;this._finalizeDragging(o&&s)}),{priority:"lowest"})}_setupDraggableAttributeHandling(){const e=this.editor,t=e.editing.view,s=t.document;this.listenTo(s,"mousedown",((o,i)=>{if(f.ZP.isAndroid||!i)return;this._clearDraggableAttributesDelayed.cancel();let r=T(i.target);if(f.ZP.isBlink&&!e.isReadOnly&&!r&&!s.selection.isCollapsed){const e=s.selection.getSelectedElement();e&&(0,m.Qd)(e)||(r=s.selection.editableElement)}r&&(t.change((e=>{e.setAttribute("draggable","true",r)})),this._draggableElement=e.editing.mapper.toModelElement(r))})),this.listenTo(s,"mouseup",(()=>{f.ZP.isAndroid||this._clearDraggableAttributesDelayed()}))}_clearDraggableAttributes(){const e=this.editor.editing;e.view.change((t=>{this._draggableElement&&"$graveyard"!=this._draggableElement.root.rootName&&t.removeAttribute("draggable",e.mapper.toViewElement(this._draggableElement)),this._draggableElement=null}))}_setupDropMarker(){const e=this.editor;e.conversion.for("editingDowncast").markerToHighlight({model:"drop-target",view:{classes:["ck-clipboard-drop-target-range"]}}),e.conversion.for("editingDowncast").markerToElement({model:"drop-target",view:(t,{writer:s})=>{if(e.model.schema.checkChild(t.markerRange.start,"$text"))return s.createUIElement("span",{class:"ck ck-clipboard-drop-target-position"},(function(e){const t=this.toDomElement(e);return t.append("⁠",e.createElement("span"),"⁠"),t}))}})}_updateDropMarker(e){const t=this.editor,s=t.model.markers;t.model.change((t=>{s.has("drop-target")?s.get("drop-target").getRange().isEqual(e)||t.updateMarker("drop-target",{range:e}):t.addMarker("drop-target",{range:e,usingOperation:!1,affectsData:!1})}))}_removeDropMarker(){const e=this.editor.model;this._removeDropMarkerDelayed.cancel(),this._updateDropMarkerThrottled.cancel(),e.markers.has("drop-target")&&e.change((e=>{e.removeMarker("drop-target")}))}_finalizeDragging(e){const t=this.editor,s=t.model;this._removeDropMarker(),this._clearDraggableAttributes(),t.plugins.has("WidgetToolbarRepository")&&t.plugins.get("WidgetToolbarRepository").clearForceDisabled("dragDrop"),this._draggingUid="",this._draggedRange&&(e&&this.isEnabled&&s.deleteContent(s.createSelection(this._draggedRange),{doNotAutoparagraph:!0}),this._draggedRange.detach(),this._draggedRange=null)}}function Z(e,t,s){const o=e.model,i=e.editing.mapper;let r=null;const n=t?t[0].start:null;if(s.is("uiElement")&&(s=s.parent),r=function(e,t){const s=e.model,o=e.editing.mapper;if((0,m.Qd)(t))return s.createRangeOn(o.toModelElement(t));if(!t.is("editableElement")){const e=t.findAncestor((e=>(0,m.Qd)(e)||e.is("editableElement")));if((0,m.Qd)(e))return s.createRangeOn(o.toModelElement(e))}return null}(e,s),r)return r;const a=function(e,t){const s=e.editing.mapper,o=e.editing.view,i=s.toModelElement(t);if(i)return i;const r=o.createPositionBefore(t),n=s.findMappedViewAncestor(r);return s.toModelElement(n)}(e,s),c=n?i.toModelPosition(n):null;return c?(r=function(e,t,s){const o=e.model;if(!o.schema.checkChild(s,"$block"))return null;const i=o.createPositionAt(s,0),r=t.path.slice(0,i.path.length),n=o.createPositionFromPath(t.root,r).nodeAfter;if(n&&o.schema.isObject(n))return o.createRangeOn(n);return null}(e,c,a),r||(r=o.schema.getNearestSelectionRange(c,f.ZP.isGecko?"forward":"backward"),r||function(e,t){const s=e.model;for(;t;){if(s.schema.isObject(t))return s.createRangeOn(t);t=t.parent}}(e,c.parent))):function(e,t){const s=e.model,o=s.schema,i=s.createPositionAt(t,0);return o.getNearestSelectionRange(i,"forward")}(e,a)}function P(e){return f.ZP.isGecko?e.dropEffect:["all","copyMove"].includes(e.effectAllowed)?"move":"copy"}function x(e,t){let s;function o(...i){o.cancel(),s=setTimeout((()=>e(...i)),t)}return o.cancel=()=>{clearTimeout(s)},o}function T(e){if(e.is("editableElement"))return null;if(e.hasClass("ck-widget__selection-handle"))return e.findAncestor(m.Qd);if((0,m.Qd)(e))return e;const t=e.findAncestor((e=>(0,m.Qd)(e)||e.is("editableElement")));return(0,m.Qd)(t)?t:null}class A extends o.Z{static get pluginName(){return"PastePlainText"}static get requires(){return[d]}init(){const e=this.editor,t=e.model,s=e.editing.view,o=s.document,i=t.document.selection;let r=!1;s.addObserver(a),this.listenTo(o,"keydown",((e,t)=>{r=t.shiftKey})),e.plugins.get(d).on("contentInsertion",((e,s)=>{(r||function(e,t){if(e.childCount>1)return!1;const s=e.getChild(0);if(t.isObject(s))return!1;return 0==[...s.getAttributeKeys()].length}(s.content,t.schema))&&t.change((e=>{const o=Array.from(i.getAttributes()).filter((([e])=>t.schema.getAttributeProperties(e).isFormatting));i.isCollapsed||t.deleteContent(i,{doNotAutoparagraph:!0}),o.push(...i.getAttributes());const r=e.createRangeIn(s.content);for(const t of r.getItems())t.is("$textProxy")&&e.setAttributes(o,t)}))}))}}class C extends o.Z{static get pluginName(){return"Clipboard"}static get requires(){return[d,y,A]}}},"./src/core.js":(e,t,s)=>{"use strict";s.r(t),s.d(t,{Command:()=>o.mY,Context:()=>o._y,ContextPlugin:()=>o.eO,DataApiMixin:()=>o.W9,Editor:()=>o.ML,EditorUI:()=>o.S8,ElementApiMixin:()=>o.xK,MultiCommand:()=>o.AJ,PendingActions:()=>o.lR,Plugin:()=>o.Sy,attachToForm:()=>o.P$,icons:()=>o.ci,secureSourceElement:()=>o.Nu});var o=s("./packages/ckeditor5-core/src/index.js")},"./src/engine.js":(e,t,s)=>{"use strict";s.r(t),s.d(t,{ClickObserver:()=>o.KU,Conversion:()=>o.uz,DataController:()=>o.Yc,DocumentFragment:()=>o.f4,DocumentSelection:()=>o.uj,DomConverter:()=>o.pG,DomEventData:()=>o.dK,DomEventObserver:()=>o.qZ,DowncastWriter:()=>o.qD,EditingController:()=>o.jH,Element:()=>o.W_,History:()=>o.Ay,HtmlDataProcessor:()=>o.X5,InsertOperation:()=>o.IZ,LivePosition:()=>o.jP,LiveRange:()=>o.iE,MarkerOperation:()=>o.zj,Matcher:()=>o.xO,Model:()=>o.Hn,MouseObserver:()=>o.dM,Observer:()=>o.Qj,OperationFactory:()=>o.Bz,Position:()=>o.Ly,Range:()=>o.e6,Renderer:()=>o.Th,StylesProcessor:()=>o.A_,Text:()=>o.xv,TreeWalker:()=>o.Po,UpcastWriter:()=>o.yj,ViewAttributeElement:()=>o.m1,ViewContainerElement:()=>o.By,ViewDocument:()=>o.Ux,ViewDocumentFragment:()=>o.y_,ViewElement:()=>o.y9,ViewEmptyElement:()=>o.pc,ViewRawElement:()=>o.wx,ViewText:()=>o.Xj,ViewUIElement:()=>o.dq,addBackgroundRules:()=>o.QR,addBorderRules:()=>o.sI,addMarginRules:()=>o.vt,addPaddingRules:()=>o.J8,disablePlaceholder:()=>o.DA,enablePlaceholder:()=>o.ID,getBoxSidesShorthandValue:()=>o.I8,getBoxSidesValueReducer:()=>o.mq,getBoxSidesValues:()=>o.oz,getFillerOffset:()=>o.YG,getPositionShorthandNormalizer:()=>o.m0,getShorthandValues:()=>o.uT,hidePlaceholder:()=>o.$_,isAttachment:()=>o.SB,isColor:()=>o.D5,isLength:()=>o.G9,isLineStyle:()=>o.IT,isPercentage:()=>o.zz,isPosition:()=>o.WK,isRepeat:()=>o.Zb,isURL:()=>o.PX,needsPlaceholder:()=>o.Q7,showPlaceholder:()=>o.NJ,transformSets:()=>o.Rf});var o=s("./packages/ckeditor5-engine/src/index.ts")},"./src/enter.js":(e,t,s)=>{"use strict";s.r(t),s.d(t,{Enter:()=>o.Z,ShiftEnter:()=>h});var o=s("./packages/ckeditor5-enter/src/enter.js"),i=s("./packages/ckeditor5-core/src/command.js"),r=s("./packages/ckeditor5-enter/src/utils.js");class n extends i.Z{execute(){const e=this.editor.model,t=e.document;e.change((s=>{!function(e,t,s){const o=s.isCollapsed,i=s.getFirstRange(),n=i.start.parent,c=i.end.parent,l=n==c;if(o){const o=(0,r.G)(e.schema,s.getAttributes());a(e,t,i.end),t.removeSelectionAttribute(s.getAttributeKeys()),t.setSelectionAttribute(o)}else{const o=!(i.start.isAtStart&&i.end.isAtEnd);e.deleteContent(s,{leaveUnmerged:o}),l?a(e,t,s.focus):o&&t.setSelection(c,0)}}(e,s,t.selection),this.fire("afterExecute",{writer:s})}))}refresh(){const e=this.editor.model,t=e.document;this.isEnabled=function(e,t){if(t.rangeCount>1)return!1;const s=t.anchor;if(!s||!e.checkChild(s,"softBreak"))return!1;const o=t.getFirstRange(),i=o.start.parent,r=o.end.parent;if((c(i,e)||c(r,e))&&i!==r)return!1;return!0}(e.schema,t.selection)}}function a(e,t,s){const o=t.createElement("softBreak");e.insertContent(o,s),t.setSelection(o,"after")}function c(e,t){return!e.is("rootElement")&&(t.isLimit(e)||c(e.parent,t))}var l=s("./packages/ckeditor5-enter/src/enterobserver.js"),d=s("./packages/ckeditor5-core/src/plugin.js");class h extends d.Z{static get pluginName(){return"ShiftEnter"}init(){const e=this.editor,t=e.model.schema,s=e.conversion,o=e.editing.view,i=o.document;t.register("softBreak",{allowWhere:"$text",isInline:!0}),s.for("upcast").elementToElement({model:"softBreak",view:"br"}),s.for("downcast").elementToElement({model:"softBreak",view:(e,{writer:t})=>t.createEmptyElement("br")}),o.addObserver(l.Z),e.commands.add("shiftEnter",new n(e)),this.listenTo(i,"enter",((t,s)=>{s.preventDefault(),s.isSoft&&(e.execute("shiftEnter"),o.scrollToTheSelection())}),{priority:"low"})}}},"./src/paragraph.js":(e,t,s)=>{"use strict";s.r(t),s.d(t,{Paragraph:()=>l,ParagraphButtonUI:()=>u});var o=s("./packages/ckeditor5-core/src/command.js"),i=s("./packages/ckeditor5-utils/src/first.ts");class r extends o.Z{refresh(){const e=this.editor.model,t=e.document,s=(0,i.Z)(t.selection.getSelectedBlocks());this.value=!!s&&s.is("element","paragraph"),this.isEnabled=!!s&&n(s,e.schema)}execute(e={}){const t=this.editor.model,s=t.document;t.change((o=>{const i=(e.selection||s.selection).getSelectedBlocks();for(const e of i)!e.is("element","paragraph")&&n(e,t.schema)&&o.rename(e,"paragraph")}))}}function n(e,t){return t.checkChild(e.parent,"paragraph")&&!t.isObject(e)}class a extends o.Z{execute(e){const t=this.editor.model,s=e.attributes;let o=e.position;t.change((e=>{const i=e.createElement("paragraph");if(s&&t.schema.setAllowedAttributes(i,s,e),!t.schema.checkChild(o.parent,i)){const s=t.schema.findAllowedParent(o,i);if(!s)return;o=e.split(o,s).position}t.insertContent(i,o),e.setSelection(i,"in")}))}}var c=s("./packages/ckeditor5-core/src/plugin.js");class l extends c.Z{static get pluginName(){return"Paragraph"}init(){const e=this.editor,t=e.model;e.commands.add("paragraph",new r(e)),e.commands.add("insertParagraph",new a(e)),t.schema.register("paragraph",{inheritAllFrom:"$block"}),e.conversion.elementToElement({model:"paragraph",view:"p"}),e.conversion.for("upcast").elementToElement({model:(e,{writer:t})=>l.paragraphLikeElements.has(e.name)?e.isEmpty?null:t.createElement("paragraph"):null,view:/.+/,converterPriority:"low"})}}l.paragraphLikeElements=new Set(["blockquote","dd","div","dt","h1","h2","h3","h4","h5","h6","li","p","td","th"]);var d=s("./packages/ckeditor5-ui/src/button/buttonview.js"),h=s("./packages/ckeditor5-core/theme/icons/paragraph.svg");class u extends c.Z{init(){const e=this.editor,t=e.t;e.ui.componentFactory.add("paragraph",(s=>{const o=new d.Z(s),i=e.commands.get("paragraph");return o.label=t("Paragraph"),o.icon=h.Z,o.tooltip=!0,o.isToggleable=!0,o.bind("isEnabled").to(i),o.bind("isOn").to(i,"value"),o.on("execute",(()=>{e.execute("paragraph")})),o}))}}},"./src/select-all.js":(e,t,s)=>{"use strict";s.r(t),s.d(t,{SelectAll:()=>u,SelectAllEditing:()=>l,SelectAllUI:()=>h});var o=s("./packages/ckeditor5-core/src/plugin.js"),i=s("./packages/ckeditor5-utils/src/keyboard.ts"),r=s("./packages/ckeditor5-core/src/command.js");class n extends r.Z{constructor(e){super(e),this.affectsData=!1}execute(){const e=this.editor.model,t=e.document.selection;let s=e.schema.getLimitElement(t);if(t.containsEntireContent(s)||!a(e.schema,s))do{if(s=s.parent,!s)return}while(!a(e.schema,s));e.change((e=>{e.setSelection(s,"in")}))}}function a(e,t){return e.isLimit(t)&&(e.checkChild(t,"$text")||e.checkChild(t,"paragraph"))}const c=(0,i.Zz)("Ctrl+A");class l extends o.Z{static get pluginName(){return"SelectAllEditing"}init(){const e=this.editor,t=e.editing.view.document;e.commands.add("selectAll",new n(e)),this.listenTo(t,"keydown",((t,s)=>{(0,i.Cq)(s)===c&&(e.execute("selectAll"),s.preventDefault())}))}}var d=s("./packages/ckeditor5-ui/src/button/buttonview.js");class h extends o.Z{static get pluginName(){return"SelectAllUI"}init(){const e=this.editor;e.ui.componentFactory.add("selectAll",(t=>{const s=e.commands.get("selectAll"),o=new d.Z(t),i=t.t;return o.set({label:i("Select all"),icon:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path d="M.75 15.5a.75.75 0 0 1 .75.75V18l.008.09A.5.5 0 0 0 2 18.5h1.75a.75.75 0 1 1 0 1.5H1.5l-.144-.007a1.5 1.5 0 0 1-1.35-1.349L0 18.5v-2.25a.75.75 0 0 1 .75-.75zm18.5 0a.75.75 0 0 1 .75.75v2.25l-.007.144a1.5 1.5 0 0 1-1.349 1.35L18.5 20h-2.25a.75.75 0 1 1 0-1.5H18a.5.5 0 0 0 .492-.41L18.5 18v-1.75a.75.75 0 0 1 .75-.75zm-10.45 3c.11 0 .2.09.2.2v1.1a.2.2 0 0 1-.2.2H7.2a.2.2 0 0 1-.2-.2v-1.1c0-.11.09-.2.2-.2h1.6zm4 0c.11 0 .2.09.2.2v1.1a.2.2 0 0 1-.2.2h-1.6a.2.2 0 0 1-.2-.2v-1.1c0-.11.09-.2.2-.2h1.6zm.45-5.5a.75.75 0 1 1 0 1.5h-8.5a.75.75 0 1 1 0-1.5h8.5zM1.3 11c.11 0 .2.09.2.2v1.6a.2.2 0 0 1-.2.2H.2a.2.2 0 0 1-.2-.2v-1.6c0-.11.09-.2.2-.2h1.1zm18.5 0c.11 0 .2.09.2.2v1.6a.2.2 0 0 1-.2.2h-1.1a.2.2 0 0 1-.2-.2v-1.6c0-.11.09-.2.2-.2h1.1zm-4.55-2a.75.75 0 1 1 0 1.5H4.75a.75.75 0 1 1 0-1.5h10.5zM1.3 7c.11 0 .2.09.2.2v1.6a.2.2 0 0 1-.2.2H.2a.2.2 0 0 1-.2-.2V7.2c0-.11.09-.2.2-.2h1.1zm18.5 0c.11 0 .2.09.2.2v1.6a.2.2 0 0 1-.2.2h-1.1a.2.2 0 0 1-.2-.2V7.2c0-.11.09-.2.2-.2h1.1zm-4.55-2a.75.75 0 1 1 0 1.5h-2.5a.75.75 0 1 1 0-1.5h2.5zm-5 0a.75.75 0 1 1 0 1.5h-5.5a.75.75 0 0 1 0-1.5h5.5zm-6.5-5a.75.75 0 0 1 0 1.5H2a.5.5 0 0 0-.492.41L1.5 2v1.75a.75.75 0 0 1-1.5 0V1.5l.007-.144A1.5 1.5 0 0 1 1.356.006L1.5 0h2.25zM18.5 0l.144.007a1.5 1.5 0 0 1 1.35 1.349L20 1.5v2.25a.75.75 0 1 1-1.5 0V2l-.008-.09A.5.5 0 0 0 18 1.5h-1.75a.75.75 0 1 1 0-1.5h2.25zM8.8 0c.11 0 .2.09.2.2v1.1a.2.2 0 0 1-.2.2H7.2a.2.2 0 0 1-.2-.2V.2c0-.11.09-.2.2-.2h1.6zm4 0c.11 0 .2.09.2.2v1.1a.2.2 0 0 1-.2.2h-1.6a.2.2 0 0 1-.2-.2V.2c0-.11.09-.2.2-.2h1.6z"/></svg>',keystroke:"Ctrl+A",tooltip:!0}),o.bind("isOn","isEnabled").to(s,"value","isEnabled"),this.listenTo(o,"execute",(()=>{e.execute("selectAll"),e.editing.view.focus()})),o}))}}class u extends o.Z{static get requires(){return[l,h]}static get pluginName(){return"SelectAll"}}},"./src/typing.js":(e,t,s)=>{"use strict";s.r(t),s.d(t,{Delete:()=>f.Z,Input:()=>g,TextTransformation:()=>M,TextWatcher:()=>w,TwoStepCaretMovement:()=>y,Typing:()=>m,findAttributeRange:()=>z,getLastTextLine:()=>_,inlineHighlight:()=>F,isNonTypingKeystroke:()=>a.u});var o=s("./packages/ckeditor5-core/src/plugin.js"),i=s("./packages/ckeditor5-core/src/command.js"),r=s("./packages/ckeditor5-typing/src/utils/changebuffer.js");class n extends i.Z{constructor(e,t){super(e),this._buffer=new r.Z(e.model,t)}get buffer(){return this._buffer}destroy(){super.destroy(),this._buffer.destroy()}execute(e={}){const t=this.editor.model,s=t.document,o=e.text||"",i=o.length,r=e.range?t.createSelection(e.range):s.selection,n=e.resultRange;t.enqueueChange(this._buffer.batch,(e=>{this._buffer.lock(),t.deleteContent(r),o&&t.insertContent(e.createText(o,s.selection.getAttributes()),r),n?e.setSelection(n):r.is("documentSelection")||e.setSelection(r),this._buffer.unlock(),this._buffer.input(i)}))}}var a=s("./packages/ckeditor5-typing/src/utils/injectunsafekeystrokeshandling.js"),c=s("./packages/ckeditor5-utils/src/diff.ts"),l=s("./packages/ckeditor5-engine/src/view/domconverter.ts"),d=s("./packages/ckeditor5-typing/src/utils/utils.js");class h{constructor(e){this.editor=e,this.editing=this.editor.editing}handle(e,t){if((0,d.E9)(e))this._handleContainerChildrenMutations(e,t);else for(const s of e)this._handleTextMutation(s,t),this._handleTextNodeInsertion(s)}_handleContainerChildrenMutations(e,t){const s=function(e){const t=e.map((e=>e.node)).reduce(((e,t)=>e.getCommonAncestor(t,{includeSelf:!0})));if(!t)return;return t.getAncestors({includeSelf:!0,parentFirst:!0}).find((e=>e.is("containerElement")||e.is("rootElement")))}(e);if(!s)return;const o=this.editor.editing.view.domConverter.mapViewToDom(s),i=new l.Z(this.editor.editing.view.document),r=this.editor.data.toModel(i.domToView(o)).getChild(0),n=this.editor.editing.mapper.toModelElement(s);if(!n)return;const a=Array.from(r.getChildren()),d=Array.from(n.getChildren()),h=a[a.length-1],g=d[d.length-1],f=h&&h.is("element","softBreak"),m=g&&!g.is("element","softBreak");f&&m&&a.pop();const k=this.editor.model.schema;if(!u(a,k)||!u(d,k))return;const b=a.map((e=>e.is("$text")?e.data:"@")).join("").replace(/\u00A0/g," "),_=d.map((e=>e.is("$text")?e.data:"@")).join("").replace(/\u00A0/g," ");if(_===b)return;const w=(0,c.Z)(_,b),{firstChangeAt:v,insertions:y,deletions:Z}=p(w);let P=null;t&&(P=this.editing.mapper.toModelRange(t.getFirstRange()));const x=b.substr(v,y),T=this.editor.model.createRange(this.editor.model.createPositionAt(n,v),this.editor.model.createPositionAt(n,v+Z));this.editor.execute("input",{text:x,range:T,resultRange:P})}_handleTextMutation(e,t){if("text"!=e.type)return;const s=e.newText.replace(/\u00A0/g," "),o=e.oldText.replace(/\u00A0/g," ");if(o===s)return;const i=(0,c.Z)(o,s),{firstChangeAt:r,insertions:n,deletions:a}=p(i);let l=null;t&&(l=this.editing.mapper.toModelRange(t.getFirstRange()));const d=this.editing.view.createPositionAt(e.node,r),h=this.editing.mapper.toModelPosition(d),u=this.editor.model.createRange(h,h.getShiftedBy(a)),g=s.substr(r,n);this.editor.execute("input",{text:g,range:u,resultRange:l})}_handleTextNodeInsertion(e){if("children"!=e.type)return;const t=(0,d.xG)(e),s=this.editing.view.createPositionAt(e.node,t.index),o=this.editing.mapper.toModelPosition(s),i=t.values[0].data;this.editor.execute("input",{text:i.replace(/\u00A0/g," "),range:this.editor.model.createRange(o)})}}function u(e,t){return e.every((e=>t.isInline(e)))}function p(e){let t=null,s=null;for(let o=0;o<e.length;o++){"equal"!=e[o]&&(t=null===t?o:t,s=o)}let o=0,i=0;for(let r=t;r<=s;r++)"insert"!=e[r]&&o++,"delete"!=e[r]&&i++;return{insertions:i,deletions:o,firstChangeAt:t}}class g extends o.Z{static get pluginName(){return"Input"}init(){const e=this.editor,t=new n(e,e.config.get("typing.undoStep")||20);e.commands.add("input",t),(0,a.Z)(e),function(e){e.editing.view.document.on("mutations",((t,s,o)=>{new h(e).handle(s,o)}))}(e)}}var f=s("./packages/ckeditor5-typing/src/delete.js");class m extends o.Z{static get requires(){return[g,f.Z]}static get pluginName(){return"Typing"}}var k=s("./packages/ckeditor5-utils/src/mix.ts"),b=s("./packages/ckeditor5-utils/src/observablemixin.ts");function _(e,t){let s=e.start;return{text:Array.from(e.getItems()).reduce(((e,o)=>o.is("$text")||o.is("$textProxy")?e+o.data:(s=t.createPositionAfter(o),"")),""),range:t.createRange(s,e.end)}}class w{constructor(e,t){this.model=e,this.testCallback=t,this.hasMatch=!1,this.set("isEnabled",!0),this.on("change:isEnabled",(()=>{this.isEnabled?this._startListening():(this.stopListening(e.document.selection),this.stopListening(e.document))})),this._startListening()}_startListening(){const e=this.model.document;this.listenTo(e.selection,"change:range",((t,{directChange:s})=>{s&&(e.selection.isCollapsed?this._evaluateTextBeforeSelection("selection"):this.hasMatch&&(this.fire("unmatched"),this.hasMatch=!1))})),this.listenTo(e,"change:data",((e,t)=>{!t.isUndo&&t.isLocal&&this._evaluateTextBeforeSelection("data",{batch:t})}))}_evaluateTextBeforeSelection(e,t={}){const s=this.model,o=s.document.selection,i=s.createRange(s.createPositionAt(o.focus.parent,0),o.focus),{text:r,range:n}=_(i,s),a=this.testCallback(r);if(!a&&this.hasMatch&&this.fire("unmatched"),this.hasMatch=!!a,a){const s=Object.assign(t,{text:r,range:n});"object"==typeof a&&Object.assign(s,a),this.fire(`matched:${e}`,s)}}}(0,k.Z)(w,b.Z);var v=s("./packages/ckeditor5-utils/src/keyboard.ts");class y extends o.Z{static get pluginName(){return"TwoStepCaretMovement"}constructor(e){super(e),this.attributes=new Set,this._overrideUid=null}init(){const e=this.editor,t=e.model,s=e.editing.view,o=e.locale,i=t.document.selection;this.listenTo(s.document,"arrowKey",((e,t)=>{if(!i.isCollapsed)return;if(t.shiftKey||t.altKey||t.ctrlKey)return;const s=t.keyCode==v.Do.arrowright,r=t.keyCode==v.Do.arrowleft;if(!s&&!r)return;const n=o.contentLanguageDirection;let a=!1;a="ltr"===n&&s||"rtl"===n&&r?this._handleForwardMovement(t):this._handleBackwardMovement(t),!0===a&&e.stop()}),{context:"$text",priority:"highest"}),this._isNextGravityRestorationSkipped=!1,this.listenTo(i,"change:range",((e,t)=>{this._isNextGravityRestorationSkipped?this._isNextGravityRestorationSkipped=!1:this._isGravityOverridden&&(!t.directChange&&T(i.getFirstPosition(),this.attributes)||this._restoreGravity())}))}registerAttribute(e){this.attributes.add(e)}_handleForwardMovement(e){const t=this.attributes,s=this.editor.model.document.selection,o=s.getFirstPosition();return!this._isGravityOverridden&&((!o.isAtStart||!Z(s,t))&&(T(o,t)?(x(e),this._overrideGravity(),!0):void 0))}_handleBackwardMovement(e){const t=this.attributes,s=this.editor.model,o=s.document.selection,i=o.getFirstPosition();return this._isGravityOverridden?(x(e),this._restoreGravity(),P(s,t,i),!0):i.isAtStart?!!Z(o,t)&&(x(e),P(s,t,i),!0):function(e,t){return T(e.getShiftedBy(-1),t)}(i,t)?i.isAtEnd&&!Z(o,t)&&T(i,t)?(x(e),P(s,t,i),!0):(this._isNextGravityRestorationSkipped=!0,this._overrideGravity(),!1):void 0}get _isGravityOverridden(){return!!this._overrideUid}_overrideGravity(){this._overrideUid=this.editor.model.change((e=>e.overrideSelectionGravity()))}_restoreGravity(){this.editor.model.change((e=>{e.restoreSelectionGravity(this._overrideUid),this._overrideUid=null}))}}function Z(e,t){for(const s of t)if(e.hasAttribute(s))return!0;return!1}function P(e,t,s){const o=s.nodeBefore;e.change((e=>{o?e.setSelectionAttribute(o.getAttributes()):e.removeSelectionAttribute(t)}))}function x(e){e.preventDefault()}function T(e,t){const{nodeBefore:s,nodeAfter:o}=e;for(const e of t){const t=s?s.getAttribute(e):void 0;if((o?o.getAttribute(e):void 0)!==t)return!0}return!1}var A=s("./node_modules/lodash-es/toString.js"),C=/[\\^$.*+?()[\]{}|]/g,E=RegExp(C.source);const S=function(e){return(e=(0,A.Z)(e))&&E.test(e)?e.replace(C,"\\$&"):e},j={copyright:{from:"(c)",to:"©"},registeredTrademark:{from:"(r)",to:"®"},trademark:{from:"(tm)",to:"™"},oneHalf:{from:/(^|[^/a-z0-9])(1\/2)([^/a-z0-9])$/i,to:[null,"½",null]},oneThird:{from:/(^|[^/a-z0-9])(1\/3)([^/a-z0-9])$/i,to:[null,"⅓",null]},twoThirds:{from:/(^|[^/a-z0-9])(2\/3)([^/a-z0-9])$/i,to:[null,"⅔",null]},oneForth:{from:/(^|[^/a-z0-9])(1\/4)([^/a-z0-9])$/i,to:[null,"¼",null]},threeQuarters:{from:/(^|[^/a-z0-9])(3\/4)([^/a-z0-9])$/i,to:[null,"¾",null]},lessThanOrEqual:{from:"<=",to:"≤"},greaterThanOrEqual:{from:">=",to:"≥"},notEqual:{from:"!=",to:"≠"},arrowLeft:{from:"<-",to:"←"},arrowRight:{from:"->",to:"→"},horizontalEllipsis:{from:"...",to:"…"},enDash:{from:/(^| )(--)( )$/,to:[null,"–",null]},emDash:{from:/(^| )(---)( )$/,to:[null,"—",null]},quotesPrimary:{from:D('"'),to:[null,"“",null,"”"]},quotesSecondary:{from:D("'"),to:[null,"‘",null,"’"]},quotesPrimaryEnGb:{from:D("'"),to:[null,"‘",null,"’"]},quotesSecondaryEnGb:{from:D('"'),to:[null,"“",null,"”"]},quotesPrimaryPl:{from:D('"'),to:[null,"„",null,"”"]},quotesSecondaryPl:{from:D("'"),to:[null,"‚",null,"’"]}},O={symbols:["copyright","registeredTrademark","trademark"],mathematical:["oneHalf","oneThird","twoThirds","oneForth","threeQuarters","lessThanOrEqual","greaterThanOrEqual","notEqual","arrowLeft","arrowRight"],typography:["horizontalEllipsis","enDash","emDash"],quotes:["quotesPrimary","quotesSecondary"]},R=["symbols","mathematical","typography","quotes"];class M extends o.Z{static get requires(){return["Delete","Input"]}static get pluginName(){return"TextTransformation"}constructor(e){super(e),e.config.define("typing",{transformations:{include:R}})}init(){const e=this.editor.model.document.selection;e.on("change:range",(()=>{this.isEnabled=!e.anchor.parent.is("element","codeBlock")})),this._enableTransformationWatchers()}_enableTransformationWatchers(){const e=this.editor,t=e.model,s=e.plugins.get("Delete"),o=function(e){const t=e.extra||[],s=e.remove||[],o=e=>!s.includes(e);return function(e){const t=new Set;for(const s of e)if(O[s])for(const e of O[s])t.add(e);else t.add(s);return Array.from(t)}(e.include.concat(t).filter(o)).filter(o).map((e=>j[e]||e)).filter((e=>"object"==typeof e)).map((e=>({from:N(e.from),to:V(e.to)})))}(e.config.get("typing.transformations")),i=new w(e.model,(e=>{for(const t of o){if(t.from.test(e))return{normalizedTransformation:t}}}));i.on("matched:data",((e,o)=>{if(!o.batch.isTyping)return;const{from:i,to:r}=o.normalizedTransformation,n=i.exec(o.text),a=r(n.slice(1)),c=o.range;let l=n.index;t.enqueueChange((e=>{for(let s=1;s<n.length;s++){const o=n[s],i=a[s-1];if(null==i){l+=o.length;continue}const r=c.start.getShiftedBy(l),d=t.createRange(r,r.getShiftedBy(o.length)),h=I(r);t.insertContent(e.createText(i,h),d),l+=i.length}t.enqueueChange((()=>{s.requestUndoOnBackspace()}))}))})),i.bind("isEnabled").to(this)}}function N(e){return"string"==typeof e?new RegExp(`(${S(e)})$`):e}function V(e){return"string"==typeof e?()=>[e]:e instanceof Array?()=>e:e}function I(e){return(e.textNode?e.textNode:e.nodeAfter).getAttributes()}function D(e){return new RegExp(`(^|\\s)(${e})([^${e}]*)(${e})$`)}function z(e,t,s,o){return o.createRange(B(e,t,s,!0,o),B(e,t,s,!1,o))}function B(e,t,s,o,i){let r=e.textNode||(o?e.nodeBefore:e.nodeAfter),n=null;for(;r&&r.getAttribute(t)==s;)n=r,r=o?r.previousSibling:r.nextSibling;return n?i.createPositionAt(n,o?"before":"after"):e}function F(e,t,s,o){const i=e.editing.view,r=new Set;i.document.registerPostFixer((i=>{const n=e.model.document.selection;let a=!1;if(n.hasAttribute(t)){const c=z(n.getFirstPosition(),t,n.getAttribute(t),e.model),l=e.editing.mapper.toViewRange(c);for(const e of l.getItems())e.is("element",s)&&!e.hasClass(o)&&(i.addClass(o,e),r.add(e),a=!0)}return a})),e.conversion.for("editingDowncast").add((e=>{function t(){i.change((e=>{for(const t of r.values())e.removeClass(o,t),r.delete(t)}))}e.on("insert",t,{priority:"highest"}),e.on("remove",t,{priority:"highest"}),e.on("attribute",t,{priority:"highest"}),e.on("selection",t,{priority:"highest"})}))}},"./src/ui.js":(e,t,s)=>{"use strict";s.r(t),s.d(t,{BalloonPanelView:()=>ue.Z,BalloonToolbar:()=>Se,BlockToolbar:()=>ze,BodyCollection:()=>d,BoxedEditorUIView:()=>D,ButtonView:()=>h.Z,ColorGridView:()=>P,ColorTileView:()=>k,ContextualBalloon:()=>pe.Z,DropdownButtonView:()=>x.Z,EditorUIView:()=>R,FocusCycler:()=>$.Z,FormHeaderView:()=>W,IconView:()=>q.Z,IframeView:()=>Q,InlineEditableUIView:()=>B,InputNumberView:()=>J,InputTextView:()=>G,InputView:()=>K,LabelView:()=>I,LabeledFieldView:()=>ee,ListItemView:()=>ie.Z,ListView:()=>re.Z,Model:()=>he,Notification:()=>ae,SplitButtonView:()=>E,StickyPanelView:()=>_e,SwitchButtonView:()=>u.Z,Template:()=>a.ZP,ToolbarSeparatorView:()=>ye.Z,ToolbarView:()=>ve.Z,TooltipManager:()=>we.Z,View:()=>m.Z,ViewCollection:()=>c.Z,addKeyboardHandlingForGrid:()=>n,addListToDropdown:()=>S.Pm,addToolbarToDropdown:()=>S.up,clickOutsideHandler:()=>o.Z,createDropdown:()=>S.t9,createLabeledDropdown:()=>oe,createLabeledInputNumber:()=>se,createLabeledInputText:()=>te,focusChildOnDropdownOpen:()=>S.Mh,getLocalizedColorOptions:()=>p,injectCssTransitionDisabler:()=>i,normalizeColorOptions:()=>g,normalizeSingleColorDefinition:()=>f,normalizeToolbarConfig:()=>Ze.Z,submitHandler:()=>r});var o=s("./packages/ckeditor5-ui/src/bindings/clickoutsidehandler.js");function i(e){e.set("_isCssTransitionsDisabled",!1),e.disableCssTransitions=()=>{e._isCssTransitionsDisabled=!0},e.enableCssTransitions=()=>{e._isCssTransitionsDisabled=!1},e.extendTemplate({attributes:{class:[e.bindTemplate.if("_isCssTransitionsDisabled","ck-transitions-disabled")]}})}function r({view:e}){e.listenTo(e.element,"submit",((t,s)=>{s.preventDefault(),e.fire("submit")}),{useCapture:!0})}function n({keystrokeHandler:e,focusTracker:t,gridItems:s,numberOfColumns:o}){const i="number"==typeof o?()=>o:o;function r(e){return o=>{const i=s.find((e=>e.element===t.focusedElement)),r=s.getIndex(i),n=e(r,s);s.get(n).focus(),o.stopPropagation(),o.preventDefault()}}e.set("arrowright",r(((e,t)=>e===t.length-1?0:e+1))),e.set("arrowleft",r(((e,t)=>0===e?t.length-1:e-1))),e.set("arrowup",r(((e,t)=>{let s=e-i();return s<0&&(s=e+i()*Math.floor(t.length/i()),s>t.length-1&&(s-=i())),s}))),e.set("arrowdown",r(((e,t)=>{let s=e+i();return s>t.length-1&&(s=e%i()),s})))}var a=s("./packages/ckeditor5-ui/src/template.js"),c=s("./packages/ckeditor5-ui/src/viewcollection.js"),l=s("./packages/ckeditor5-utils/src/dom/createelement.ts");class d extends c.Z{constructor(e,t=[]){super(t),this.locale=e}attachToDom(){this._bodyCollectionContainer=new a.ZP({tag:"div",attributes:{class:["ck","ck-reset_all","ck-body","ck-rounded-corners"],dir:this.locale.uiLanguageDirection},children:this}).render();let e=document.querySelector(".ck-body-wrapper");e||(e=(0,l.Z)(document,"div",{class:"ck-body-wrapper"}),document.body.appendChild(e)),e.appendChild(this._bodyCollectionContainer)}detachFromDom(){super.destroy(),this._bodyCollectionContainer&&this._bodyCollectionContainer.remove();const e=document.querySelector(".ck-body-wrapper");e&&0==e.childElementCount&&e.remove()}}var h=s("./packages/ckeditor5-ui/src/button/buttonview.js"),u=s("./packages/ckeditor5-ui/src/button/switchbuttonview.js");function p(e,t){const s=e.t,o={Black:s("Black"),"Dim grey":s("Dim grey"),Grey:s("Grey"),"Light grey":s("Light grey"),White:s("White"),Red:s("Red"),Orange:s("Orange"),Yellow:s("Yellow"),"Light green":s("Light green"),Green:s("Green"),Aquamarine:s("Aquamarine"),Turquoise:s("Turquoise"),"Light blue":s("Light blue"),Blue:s("Blue"),Purple:s("Purple")};return t.map((e=>{const t=o[e.label];return t&&t!=e.label&&(e.label=t),e}))}function g(e){return e.map(f).filter((e=>!!e))}function f(e){return"string"==typeof e?{model:e,label:e,hasBorder:!1,view:{name:"span",styles:{color:e}}}:{model:e.color,label:e.label||e.color,hasBorder:void 0!==e.hasBorder&&e.hasBorder,view:{name:"span",styles:{color:`${e.color}`}}}}var m=s("./packages/ckeditor5-ui/src/view.js");class k extends h.Z{constructor(e){super(e);const t=this.bindTemplate;this.set("color"),this.set("hasBorder"),this.icon='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path class="ck-icon__fill" d="M16.935 5.328a2 2 0 0 1 0 2.829l-7.778 7.778a2 2 0 0 1-2.829 0L3.5 13.107a1.999 1.999 0 1 1 2.828-2.829l.707.707a1 1 0 0 0 1.414 0l5.658-5.657a2 2 0 0 1 2.828 0z"/><path d="M14.814 6.035 8.448 12.4a1 1 0 0 1-1.414 0l-1.413-1.415A1 1 0 1 0 4.207 12.4l2.829 2.829a1 1 0 0 0 1.414 0l7.778-7.778a1 1 0 1 0-1.414-1.415z"/></svg>',this.extendTemplate({attributes:{style:{backgroundColor:t.to("color")},class:["ck","ck-color-grid__tile",t.if("hasBorder","ck-color-table__color-tile_bordered")]}})}render(){super.render(),this.iconView.fillColor="hsl(0, 0%, 100%)"}}var b=s("./packages/ckeditor5-utils/src/focustracker.ts"),_=s("./packages/ckeditor5-utils/src/keystrokehandler.ts"),w=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),v=s.n(w),y=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/colorgrid/colorgrid.css"),Z={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};v()(y.Z,Z);y.Z.locals;class P extends m.Z{constructor(e,t){super(e);const s=t&&t.colorDefinitions||[],o={};this.columns=t&&t.columns?t.columns:5,o.gridTemplateColumns=`repeat( ${this.columns}, 1fr)`,this.set("selectedColor"),this.items=this.createCollection(),this.focusTracker=new b.Z,this.keystrokes=new _.Z,this.items.on("add",((e,t)=>{t.isOn=t.color===this.selectedColor})),s.forEach((e=>{const t=new k;t.set({color:e.color,label:e.label,tooltip:!0,hasBorder:e.options.hasBorder}),t.on("execute",(()=>{this.fire("execute",{value:e.color,hasBorder:e.options.hasBorder,label:e.label})})),this.items.add(t)})),this.setTemplate({tag:"div",children:this.items,attributes:{class:["ck","ck-color-grid"],style:o}}),this.on("change:selectedColor",((e,t,s)=>{for(const e of this.items)e.isOn=e.color===s}))}focus(){this.items.length&&this.items.first.focus()}focusLast(){this.items.length&&this.items.last.focus()}render(){super.render();for(const e of this.items)this.focusTracker.add(e.element);this.items.on("add",((e,t)=>{this.focusTracker.add(t.element)})),this.items.on("remove",((e,t)=>{this.focusTracker.remove(t.element)})),this.keystrokes.listenTo(this.element),n({keystrokeHandler:this.keystrokes,focusTracker:this.focusTracker,gridItems:this.items,numberOfColumns:this.columns})}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}}var x=s("./packages/ckeditor5-ui/src/dropdown/button/dropdownbuttonview.js"),T=s("./packages/ckeditor5-ui/theme/icons/dropdown-arrow.svg"),A=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/dropdown/splitbutton.css"),C={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};v()(A.Z,C);A.Z.locals;class E extends m.Z{constructor(e){super(e);const t=this.bindTemplate;this.set("class"),this.set("icon"),this.set("isEnabled",!0),this.set("isOn",!1),this.set("isToggleable",!1),this.set("isVisible",!0),this.set("keystroke"),this.set("label"),this.set("tabindex",-1),this.set("tooltip"),this.set("tooltipPosition","s"),this.set("type","button"),this.set("withText",!1),this.children=this.createCollection(),this.actionView=this._createActionView(),this.arrowView=this._createArrowView(),this.keystrokes=new _.Z,this.focusTracker=new b.Z,this.setTemplate({tag:"div",attributes:{class:["ck","ck-splitbutton",t.to("class"),t.if("isVisible","ck-hidden",(e=>!e)),this.arrowView.bindTemplate.if("isOn","ck-splitbutton_open")]},children:this.children})}render(){super.render(),this.children.add(this.actionView),this.children.add(this.arrowView),this.focusTracker.add(this.actionView.element),this.focusTracker.add(this.arrowView.element),this.keystrokes.listenTo(this.element),this.keystrokes.set("arrowright",((e,t)=>{this.focusTracker.focusedElement===this.actionView.element&&(this.arrowView.focus(),t())})),this.keystrokes.set("arrowleft",((e,t)=>{this.focusTracker.focusedElement===this.arrowView.element&&(this.actionView.focus(),t())}))}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this.actionView.focus()}_createActionView(){const e=new h.Z;return e.bind("icon","isEnabled","isOn","isToggleable","keystroke","label","tabindex","tooltip","tooltipPosition","type","withText").to(this),e.extendTemplate({attributes:{class:"ck-splitbutton__action"}}),e.delegate("execute").to(this),e}_createArrowView(){const e=new h.Z,t=e.bindTemplate;return e.icon=T.Z,e.extendTemplate({attributes:{class:["ck-splitbutton__arrow"],"data-cke-tooltip-disabled":t.to("isOn"),"aria-haspopup":!0,"aria-expanded":t.to("isOn",(e=>String(e)))}}),e.bind("isEnabled").to(this),e.bind("label").to(this),e.bind("tooltip").to(this),e.delegate("execute").to(this,"open"),e}}var S=s("./packages/ckeditor5-ui/src/dropdown/utils.js"),j=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/editorui/editorui.css"),O={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};v()(j.Z,O);j.Z.locals;class R extends m.Z{constructor(e){super(e),this.body=new d(e)}render(){super.render(),this.body.attachToDom()}destroy(){return this.body.detachFromDom(),super.destroy()}}var M=s("./packages/ckeditor5-utils/src/uid.ts"),N=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/label/label.css"),V={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};v()(N.Z,V);N.Z.locals;class I extends m.Z{constructor(e){super(e),this.set("text"),this.set("for"),this.id=`ck-editor__label_${(0,M.Z)()}`;const t=this.bindTemplate;this.setTemplate({tag:"label",attributes:{class:["ck","ck-label"],id:this.id,for:t.to("for")},children:[{text:t.to("text")}]})}}class D extends R{constructor(e){super(e),this.top=this.createCollection(),this.main=this.createCollection(),this._voiceLabelView=this._createVoiceLabel(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-reset","ck-editor","ck-rounded-corners"],role:"application",dir:e.uiLanguageDirection,lang:e.uiLanguage,"aria-labelledby":this._voiceLabelView.id},children:[this._voiceLabelView,{tag:"div",attributes:{class:["ck","ck-editor__top","ck-reset_all"],role:"presentation"},children:this.top},{tag:"div",attributes:{class:["ck","ck-editor__main"],role:"presentation"},children:this.main}]})}_createVoiceLabel(){const e=this.t,t=new I;return t.text=e("Rich Text Editor"),t.extendTemplate({attributes:{class:"ck-voice-label"}}),t}}class z extends m.Z{constructor(e,t,s){super(e),this.setTemplate({tag:"div",attributes:{class:["ck","ck-content","ck-editor__editable","ck-rounded-corners"],lang:e.contentLanguage,dir:e.contentLanguageDirection}}),this.name=null,this.set("isFocused",!1),this._editableElement=s,this._hasExternalElement=!!this._editableElement,this._editingView=t}render(){super.render(),this._hasExternalElement?this.template.apply(this.element=this._editableElement):this._editableElement=this.element,this.on("change:isFocused",(()=>this._updateIsFocusedClasses())),this._updateIsFocusedClasses()}destroy(){this._hasExternalElement&&this.template.revert(this._editableElement),super.destroy()}_updateIsFocusedClasses(){const e=this._editingView;function t(t){e.change((s=>{const o=e.document.getRoot(t.name);s.addClass(t.isFocused?"ck-focused":"ck-blurred",o),s.removeClass(t.isFocused?"ck-blurred":"ck-focused",o)}))}e.isRenderingInProgress?function s(o){e.once("change:isRenderingInProgress",((e,i,r)=>{r?s(o):t(o)}))}(this):t(this)}}class B extends z{constructor(e,t,s,o={}){super(e,t,s);const i=e.t;this.extendTemplate({attributes:{role:"textbox",class:"ck-editor__editable_inline"}}),this._generateLabel=o.label||(()=>i("Editor editing area: %0",this.name))}render(){super.render();const e=this._editingView;e.change((t=>{const s=e.document.getRoot(this.name);t.setAttribute("aria-label",this._generateLabel(this),s)}))}}var F=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/formheader/formheader.css"),L={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};v()(F.Z,L);F.Z.locals;class W extends m.Z{constructor(e,t={}){super(e);const s=this.bindTemplate;this.set("label",t.label||""),this.set("class",t.class||null),this.children=this.createCollection(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-form__header",s.to("class")]},children:this.children});const o=new m.Z(e);o.setTemplate({tag:"span",attributes:{class:["ck","ck-form__header__label"]},children:[{text:s.to("label")}]}),this.children.add(o)}}var $=s("./packages/ckeditor5-ui/src/focuscycler.js"),q=s("./packages/ckeditor5-ui/src/icon/iconview.js"),H=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/input/input.css"),U={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};v()(H.Z,U);H.Z.locals;class K extends m.Z{constructor(e){super(e),this.set("value"),this.set("id"),this.set("placeholder"),this.set("isReadOnly",!1),this.set("hasError",!1),this.set("ariaDescribedById"),this.focusTracker=new b.Z,this.bind("isFocused").to(this.focusTracker),this.set("isEmpty",!0),this.set("inputMode","text");const t=this.bindTemplate;this.setTemplate({tag:"input",attributes:{class:["ck","ck-input",t.if("isFocused","ck-input_focused"),t.if("isEmpty","ck-input-text_empty"),t.if("hasError","ck-error")],id:t.to("id"),placeholder:t.to("placeholder"),readonly:t.to("isReadOnly"),inputmode:t.to("inputMode"),"aria-invalid":t.if("hasError",!0),"aria-describedby":t.to("ariaDescribedById")},on:{input:t.to(((...e)=>{this.fire("input",...e),this._updateIsEmpty()})),change:t.to(this._updateIsEmpty.bind(this))}})}render(){super.render(),this.focusTracker.add(this.element),this._setDomElementValue(this.value),this._updateIsEmpty(),this.on("change:value",((e,t,s)=>{this._setDomElementValue(s),this._updateIsEmpty()}))}destroy(){super.destroy(),this.focusTracker.destroy()}select(){this.element.select()}focus(){this.element.focus()}_updateIsEmpty(){this.isEmpty=!this.element.value}_setDomElementValue(e){this.element.value=e||0===e?e:""}}class G extends K{constructor(e){super(e),this.extendTemplate({attributes:{type:"text",class:["ck-input-text"]}})}}class J extends K{constructor(e,{min:t,max:s,step:o}={}){super(e);const i=this.bindTemplate;this.set("min",t),this.set("max",s),this.set("step",o),this.extendTemplate({attributes:{type:"number",class:["ck-input-number"],min:i.to("min"),max:i.to("max"),step:i.to("step")}})}}class Q extends m.Z{constructor(e){super(e);const t=this.bindTemplate;this.setTemplate({tag:"iframe",attributes:{class:["ck","ck-reset_all"],sandbox:"allow-same-origin allow-scripts"},on:{load:t.to("loaded")}})}render(){return new Promise((e=>{this.on("loaded",e),super.render()}))}}var X=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/labeledfield/labeledfieldview.css"),Y={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};v()(X.Z,Y);X.Z.locals;class ee extends m.Z{constructor(e,t){super(e);const s=`ck-labeled-field-view-${(0,M.Z)()}`,o=`ck-labeled-field-view-status-${(0,M.Z)()}`;this.fieldView=t(this,s,o),this.set("label"),this.set("isEnabled",!0),this.set("isEmpty",!0),this.set("isFocused",!1),this.set("errorText",null),this.set("infoText",null),this.set("class"),this.set("placeholder"),this.labelView=this._createLabelView(s),this.statusView=this._createStatusView(o),this.bind("_statusText").to(this,"errorText",this,"infoText",((e,t)=>e||t));const i=this.bindTemplate;this.setTemplate({tag:"div",attributes:{class:["ck","ck-labeled-field-view",i.to("class"),i.if("isEnabled","ck-disabled",(e=>!e)),i.if("isEmpty","ck-labeled-field-view_empty"),i.if("isFocused","ck-labeled-field-view_focused"),i.if("placeholder","ck-labeled-field-view_placeholder"),i.if("errorText","ck-error")]},children:[{tag:"div",attributes:{class:["ck","ck-labeled-field-view__input-wrapper"]},children:[this.fieldView,this.labelView]},this.statusView]})}_createLabelView(e){const t=new I(this.locale);return t.for=e,t.bind("text").to(this,"label"),t}_createStatusView(e){const t=new m.Z(this.locale),s=this.bindTemplate;return t.setTemplate({tag:"div",attributes:{class:["ck","ck-labeled-field-view__status",s.if("errorText","ck-labeled-field-view__status_error"),s.if("_statusText","ck-hidden",(e=>!e))],id:e,role:s.if("errorText","alert")},children:[{text:s.to("_statusText")}]}),t}focus(){this.fieldView.focus()}}function te(e,t,s){const o=new G(e.locale);return o.set({id:t,ariaDescribedById:s}),o.bind("isReadOnly").to(e,"isEnabled",(e=>!e)),o.bind("hasError").to(e,"errorText",(e=>!!e)),o.on("input",(()=>{e.errorText=null})),e.bind("isEmpty","isFocused","placeholder").to(o),o}function se(e,t,s){const o=new J(e.locale);return o.set({id:t,ariaDescribedById:s,inputMode:"numeric"}),o.bind("isReadOnly").to(e,"isEnabled",(e=>!e)),o.bind("hasError").to(e,"errorText",(e=>!!e)),o.on("input",(()=>{e.errorText=null})),e.bind("isEmpty","isFocused","placeholder").to(o),o}function oe(e,t,s){const o=(0,S.t9)(e.locale);return o.set({id:t,ariaDescribedById:s}),o.bind("isEnabled").to(e),o}var ie=s("./packages/ckeditor5-ui/src/list/listitemview.js"),re=s("./packages/ckeditor5-ui/src/list/listview.js"),ne=s("./packages/ckeditor5-core/src/contextplugin.js");class ae extends ne.Z{static get pluginName(){return"Notification"}init(){this.on("show:warning",((e,t)=>{window.alert(t.message)}),{priority:"lowest"})}showSuccess(e,t={}){this._showNotification({message:e,type:"success",namespace:t.namespace,title:t.title})}showInfo(e,t={}){this._showNotification({message:e,type:"info",namespace:t.namespace,title:t.title})}showWarning(e,t={}){this._showNotification({message:e,type:"warning",namespace:t.namespace,title:t.title})}_showNotification(e){const t=`show:${e.type}`+(e.namespace?`:${e.namespace}`:"");this.fire(t,{message:e.message,type:e.type,title:e.title||""})}}var ce=s("./packages/ckeditor5-utils/src/mix.ts"),le=s("./packages/ckeditor5-utils/src/observablemixin.ts"),de=s("./node_modules/lodash-es/assignIn.js");class he{constructor(e,t){t&&(0,de.Z)(this,t),e&&this.set(e)}}(0,ce.Z)(he,le.Z);var ue=s("./packages/ckeditor5-ui/src/panel/balloon/balloonpanelview.js"),pe=s("./packages/ckeditor5-ui/src/panel/balloon/contextualballoon.js"),ge=s("./packages/ckeditor5-utils/src/dom/global.ts"),fe=s("./packages/ckeditor5-utils/src/dom/tounit.ts"),me=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/panel/stickypanel.css"),ke={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};v()(me.Z,ke);me.Z.locals;const be=(0,fe.Z)("px");class _e extends m.Z{constructor(e){super(e);const t=this.bindTemplate;this.set("isActive",!1),this.set("isSticky",!1),this.set("limiterElement",null),this.set("limiterBottomOffset",50),this.set("viewportTopOffset",0),this.set("_marginLeft",null),this.set("_isStickyToTheLimiter",!1),this.set("_hasViewportTopOffset",!1),this.content=this.createCollection(),this._contentPanelPlaceholder=new a.ZP({tag:"div",attributes:{class:["ck","ck-sticky-panel__placeholder"],style:{display:t.to("isSticky",(e=>e?"block":"none")),height:t.to("isSticky",(e=>e?be(this._panelRect.height):null))}}}).render(),this._contentPanel=new a.ZP({tag:"div",attributes:{class:["ck","ck-sticky-panel__content",t.if("isSticky","ck-sticky-panel__content_sticky"),t.if("_isStickyToTheLimiter","ck-sticky-panel__content_sticky_bottom-limit")],style:{width:t.to("isSticky",(e=>e?be(this._contentPanelPlaceholder.getBoundingClientRect().width):null)),top:t.to("_hasViewportTopOffset",(e=>e?be(this.viewportTopOffset):null)),bottom:t.to("_isStickyToTheLimiter",(e=>e?be(this.limiterBottomOffset):null)),marginLeft:t.to("_marginLeft")}},children:this.content}).render(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-sticky-panel"]},children:[this._contentPanelPlaceholder,this._contentPanel]})}render(){super.render(),this._checkIfShouldBeSticky(),this.listenTo(ge.Z.window,"scroll",(()=>{this._checkIfShouldBeSticky()})),this.listenTo(this,"change:isActive",(()=>{this._checkIfShouldBeSticky()}))}_checkIfShouldBeSticky(){const e=this._panelRect=this._contentPanel.getBoundingClientRect();let t;this.limiterElement?(t=this._limiterRect=this.limiterElement.getBoundingClientRect(),this.isSticky=this.isActive&&t.top<this.viewportTopOffset&&this._panelRect.height+this.limiterBottomOffset<t.height):this.isSticky=!1,this.isSticky?(this._isStickyToTheLimiter=t.bottom<e.height+this.limiterBottomOffset+this.viewportTopOffset,this._hasViewportTopOffset=!this._isStickyToTheLimiter&&!!this.viewportTopOffset,this._marginLeft=this._isStickyToTheLimiter?null:be(-ge.Z.window.scrollX)):(this._isStickyToTheLimiter=!1,this._hasViewportTopOffset=!1,this._marginLeft=null)}}var we=s("./packages/ckeditor5-ui/src/tooltipmanager.js"),ve=s("./packages/ckeditor5-ui/src/toolbar/toolbarview.js"),ye=s("./packages/ckeditor5-ui/src/toolbar/toolbarseparatorview.js"),Ze=s("./packages/ckeditor5-ui/src/toolbar/normalizetoolbarconfig.js"),Pe=s("./packages/ckeditor5-core/src/plugin.js"),xe=s("./packages/ckeditor5-utils/src/dom/rect.ts"),Te=s("./node_modules/lodash-es/debounce.js"),Ae=s("./packages/ckeditor5-utils/src/dom/resizeobserver.ts"),Ce=s("./packages/ckeditor5-utils/src/index.ts");const Ee=(0,fe.Z)("px");class Se extends Pe.Z{static get pluginName(){return"BalloonToolbar"}static get requires(){return[pe.Z]}constructor(e){super(e),this._balloonConfig=(0,Ze.Z)(e.config.get("balloonToolbar")),this.toolbarView=this._createToolbarView(),this.focusTracker=new b.Z,e.ui.once("ready",(()=>{this.focusTracker.add(e.ui.getEditableElement()),this.focusTracker.add(this.toolbarView.element)})),e.ui.addToolbar(this.toolbarView,{beforeFocus:()=>this.show(!0),afterBlur:()=>this.hide(),isContextual:!0}),this._resizeObserver=null,this._balloon=e.plugins.get(pe.Z),this._fireSelectionChangeDebounced=(0,Te.Z)((()=>this.fire("_selectionChangeDebounced")),200),this.decorate("show")}init(){const e=this.editor,t=e.model.document.selection;this.listenTo(this.focusTracker,"change:isFocused",((e,t,s)=>{const o=this._balloon.visibleView===this.toolbarView;!s&&o?this.hide():s&&this.show()})),this.listenTo(t,"change:range",((e,s)=>{(s.directChange||t.isCollapsed)&&this.hide(),this._fireSelectionChangeDebounced()})),this.listenTo(this,"_selectionChangeDebounced",(()=>{this.editor.editing.view.document.isFocused&&this.show()})),this._balloonConfig.shouldNotGroupWhenFull||this.listenTo(e,"ready",(()=>{const t=e.ui.view.editable.element;this._resizeObserver=new Ae.Z(t,(()=>{this.toolbarView.maxWidth=Ee(.9*new xe.Z(t).width)}))})),this.listenTo(this.toolbarView,"groupedItemsUpdate",(()=>{this._updatePosition()}))}afterInit(){const e=this.editor.ui.componentFactory;this.toolbarView.fillFromConfig(this._balloonConfig,e)}_createToolbarView(){const e=this.editor.locale.t,t=!this._balloonConfig.shouldNotGroupWhenFull,s=new ve.Z(this.editor.locale,{shouldGroupWhenFull:t,isFloating:!0});return s.ariaLabel=e("Editor contextual toolbar"),s.render(),s}show(e=!1){const t=this.editor,s=t.model.document.selection,o=t.model.schema;this._balloon.hasView(this.toolbarView)||s.isCollapsed&&!e||function(e,t){if(1===e.rangeCount)return!1;return[...e.getRanges()].every((e=>{const s=e.getContainedElement();return s&&t.isSelectable(s)}))}(s,o)||Array.from(this.toolbarView.items).every((e=>void 0!==e.isEnabled&&!e.isEnabled))||(this.listenTo(this.editor.ui,"update",(()=>{this._updatePosition()})),this._balloon.add({view:this.toolbarView,position:this._getBalloonPositionData(),balloonClassName:"ck-toolbar-container"}))}hide(){this._balloon.hasView(this.toolbarView)&&(this.stopListening(this.editor.ui,"update"),this._balloon.remove(this.toolbarView))}_getBalloonPositionData(){const e=this.editor.editing.view,t=e.document,s=t.selection,o=t.selection.isBackward;return{target:()=>{const t=o?s.getFirstRange():s.getLastRange(),i=xe.Z.getDomRangeRects(e.domConverter.viewRangeToDom(t));return o?i[0]:(i.length>1&&0===i[i.length-1].width&&i.pop(),i[i.length-1])},positions:this._getBalloonPositions(o)}}_updatePosition(){this._balloon.updatePosition(this._getBalloonPositionData())}destroy(){super.destroy(),this.stopListening(),this._fireSelectionChangeDebounced.cancel(),this.toolbarView.destroy(),this.focusTracker.destroy(),this._resizeObserver&&this._resizeObserver.destroy()}_getBalloonPositions(e){const t=Ce.OB.isSafari&&Ce.OB.isiOS?(0,ue.M)({heightOffset:Math.max(ue.Z.arrowHeightOffset,Math.round(20/Ce.CO.window.visualViewport.scale))}):ue.Z.defaultPositions;return e?[t.northWestArrowSouth,t.northWestArrowSouthWest,t.northWestArrowSouthEast,t.northWestArrowSouthMiddleEast,t.northWestArrowSouthMiddleWest,t.southWestArrowNorth,t.southWestArrowNorthWest,t.southWestArrowNorthEast,t.southWestArrowNorthMiddleWest,t.southWestArrowNorthMiddleEast]:[t.southEastArrowNorth,t.southEastArrowNorthEast,t.southEastArrowNorthWest,t.southEastArrowNorthMiddleEast,t.southEastArrowNorthMiddleWest,t.northEastArrowSouth,t.northEastArrowSouthEast,t.northEastArrowSouthWest,t.northEastArrowSouthMiddleEast,t.northEastArrowSouthMiddleWest]}}var je=s("./packages/ckeditor5-core/theme/icons/pilcrow.svg"),Oe=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/toolbar/blocktoolbar.css"),Re={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};v()(Oe.Z,Re);Oe.Z.locals;const Me=(0,fe.Z)("px");class Ne extends h.Z{constructor(e){super(e);const t=this.bindTemplate;this.isVisible=!1,this.isToggleable=!0,this.set("top",0),this.set("left",0),this.extendTemplate({attributes:{class:"ck-block-toolbar-button",style:{top:t.to("top",(e=>Me(e))),left:t.to("left",(e=>Me(e)))}}})}}var Ve=s("./packages/ckeditor5-utils/src/dom/position.ts"),Ie=s("./packages/ckeditor5-utils/src/env.ts");const De=(0,fe.Z)("px");class ze extends Pe.Z{static get pluginName(){return"BlockToolbar"}constructor(e){super(e),this._blockToolbarConfig=(0,Ze.Z)(this.editor.config.get("blockToolbar")),this.toolbarView=this._createToolbarView(),this.panelView=this._createPanelView(),this.buttonView=this._createButtonView(),this._resizeObserver=null,(0,o.Z)({emitter:this.panelView,contextElements:[this.panelView.element,this.buttonView.element],activator:()=>this.panelView.isVisible,callback:()=>this._hidePanel()})}init(){const e=this.editor;this.listenTo(e.model.document.selection,"change:range",((e,t)=>{t.directChange&&this._hidePanel()})),this.listenTo(e.ui,"update",(()=>this._updateButton())),this.listenTo(e,"change:isReadOnly",(()=>this._updateButton()),{priority:"low"}),this.listenTo(e.ui.focusTracker,"change:isFocused",(()=>this._updateButton())),this.listenTo(this.buttonView,"change:isVisible",((e,t,s)=>{s?this.buttonView.listenTo(window,"resize",(()=>this._updateButton())):(this.buttonView.stopListening(window,"resize"),this._hidePanel())})),e.ui.addToolbar(this.toolbarView,{beforeFocus:()=>this._showPanel(),afterBlur:()=>this._hidePanel()})}afterInit(){const e=this.editor.ui.componentFactory,t=this._blockToolbarConfig;this.toolbarView.fillFromConfig(t,e);for(const e of this.toolbarView.items)e.on("execute",(()=>this._hidePanel(!0)),{priority:"high"});t.shouldNotGroupWhenFull||this.listenTo(this.editor,"ready",(()=>{const e=this.editor.ui.view.editable.element;this._resizeObserver=new Ae.Z(e,(()=>{this.toolbarView.maxWidth=this._getToolbarMaxWidth()}))}))}destroy(){super.destroy(),this.panelView.destroy(),this.buttonView.destroy(),this.toolbarView.destroy(),this._resizeObserver&&this._resizeObserver.destroy()}_createToolbarView(){const e=this.editor.locale.t,t=!this._blockToolbarConfig.shouldNotGroupWhenFull,s=new ve.Z(this.editor.locale,{shouldGroupWhenFull:t,isFloating:!0});return s.ariaLabel=e("Editor block content toolbar"),s.focusTracker.on("change:isFocused",((e,t,s)=>{s||this._hidePanel()})),s}_createPanelView(){const e=this.editor,t=new ue.Z(e.locale);return t.content.add(this.toolbarView),t.class="ck-toolbar-container",e.ui.view.body.add(t),e.ui.focusTracker.add(t.element),this.toolbarView.keystrokes.set("Esc",((e,t)=>{this._hidePanel(!0),t()})),t}_createButtonView(){const e=this.editor,t=e.t,s=new Ne(e.locale),o=s.bindTemplate;return s.set({label:t("Edit block"),icon:je.Z,withText:!1}),s.extendTemplate({on:{mousedown:o.to((e=>{Ie.ZP.isSafari&&this.panelView.isVisible&&this.toolbarView.focus(),e.preventDefault()}))}}),s.bind("isOn").to(this.panelView,"isVisible"),s.bind("tooltip").to(this.panelView,"isVisible",(e=>!e)),this.listenTo(s,"execute",(()=>{this.panelView.isVisible?this._hidePanel(!0):this._showPanel()})),e.ui.view.body.add(s),e.ui.focusTracker.add(s.element),s}_updateButton(){const e=this.editor,t=e.model,s=e.editing.view;if(!e.ui.focusTracker.isFocused)return void this._hideButton();if(e.isReadOnly)return void this._hideButton();const o=Array.from(t.document.selection.getSelectedBlocks())[0];if(!o||Array.from(this.toolbarView.items).every((e=>!e.isEnabled)))return void this._hideButton();const i=s.domConverter.mapViewToDom(e.editing.mapper.toViewElement(o));this.buttonView.isVisible=!0,this._attachButtonToElement(i),this.panelView.isVisible&&this._showPanel()}_hideButton(){this.buttonView.isVisible=!1}_showPanel(){if(!this.buttonView.isVisible)return;const e=this.panelView.isVisible;this.panelView.show(),this.toolbarView.maxWidth=this._getToolbarMaxWidth(),this.panelView.pin({target:this.buttonView.element,limiter:this.editor.ui.getEditableElement()}),e||this.toolbarView.items.get(0).focus()}_hidePanel(e){this.panelView.isVisible=!1,e&&this.editor.editing.view.focus()}_attachButtonToElement(e){const t=window.getComputedStyle(e),s=new xe.Z(this.editor.ui.getEditableElement()),o=parseInt(t.paddingTop,10),i=parseInt(t.lineHeight,10)||1.2*parseInt(t.fontSize,10),r=(0,Ve.x)({element:this.buttonView.element,target:e,positions:[(e,t)=>{let r;return r="ltr"===this.editor.locale.uiLanguageDirection?s.left-t.width:s.right,{top:e.top+o+(i-t.height)/2,left:r}}]});this.buttonView.top=r.top,this.buttonView.left=r.left}_getToolbarMaxWidth(){const e=this.editor.ui.view.editable.element,t=new xe.Z(e),s=new xe.Z(this.buttonView.element),o="rtl"===this.editor.locale.uiLanguageDirection?s.left-t.right+s.width:t.left-s.left;return De(t.width+o)}}},"./src/undo.js":(e,t,s)=>{"use strict";s.r(t),s.d(t,{Undo:()=>m,UndoEditing:()=>h,UndoUi:()=>f});var o=s("./packages/ckeditor5-core/src/plugin.js"),i=s("./packages/ckeditor5-core/src/command.js"),r=s("./packages/ckeditor5-engine/src/model/operation/transform.ts");class n extends i.Z{constructor(e){super(e),this._stack=[],this._createdBatches=new WeakSet,this.refresh(),this.listenTo(e.data,"set",((e,t)=>{t[1]={...t[1]};const s=t[1];s.batchType||(s.batchType={isUndoable:!1})}),{priority:"high"}),this.listenTo(e.data,"set",((e,t)=>{t[1].batchType.isUndoable||this.clearStack()}))}refresh(){this.isEnabled=this._stack.length>0}addBatch(e){const t=this.editor.model.document.selection,s={ranges:t.hasOwnRange?Array.from(t.getRanges()):[],isBackward:t.isBackward};this._stack.push({batch:e,selection:s}),this.refresh()}clearStack(){this._stack=[],this.refresh()}_restoreSelection(e,t,s){const o=this.editor.model,i=o.document,r=[],n=e.map((e=>e.getTransformedByOperations(s))),l=n.flat();for(const e of n){const t=e.filter((e=>e.root!=i.graveyard)).filter((e=>!c(e,l)));t.length&&(a(t),r.push(t[0]))}r.length&&o.change((e=>{e.setSelection(r,{backward:t})}))}_undo(e,t){const s=this.editor.model,o=s.document;this._createdBatches.add(t);const i=e.operations.slice().filter((e=>e.isDocumentOperation));i.reverse();for(const e of i){const i=e.baseVersion+1,n=Array.from(o.history.getOperations(i)),a=(0,r.R)([e.getReversed()],n,{useRelations:!0,document:this.editor.model.document,padWithNoOps:!1,forceWeakRemove:!0}).operationsA;for(const i of a)t.addOperation(i),s.applyOperation(i),o.history.setOperationAsUndone(e,i)}}}function a(e){e.sort(((e,t)=>e.start.isBefore(t.start)?-1:1));for(let t=1;t<e.length;t++){const s=e[t-1].getJoined(e[t],!0);s&&(t--,e.splice(t,2,s))}}function c(e,t){return t.some((t=>t!==e&&t.containsRange(e,!0)))}class l extends n{execute(e=null){const t=e?this._stack.findIndex((t=>t.batch==e)):this._stack.length-1,s=this._stack.splice(t,1)[0],o=this.editor.model.createBatch({isUndo:!0});this.editor.model.enqueueChange(o,(()=>{this._undo(s.batch,o);const e=this.editor.model.document.history.getOperations(s.batch.baseVersion);this._restoreSelection(s.selection.ranges,s.selection.isBackward,e),this.fire("revert",s.batch,o)})),this.refresh()}}class d extends n{execute(){const e=this._stack.pop(),t=this.editor.model.createBatch({isUndo:!0});this.editor.model.enqueueChange(t,(()=>{const s=e.batch.operations[e.batch.operations.length-1].baseVersion+1,o=this.editor.model.document.history.getOperations(s);this._restoreSelection(e.selection.ranges,e.selection.isBackward,o),this._undo(e.batch,t)})),this.refresh()}}class h extends o.Z{static get pluginName(){return"UndoEditing"}constructor(e){super(e),this._batchRegistry=new WeakSet}init(){const e=this.editor;this._undoCommand=new l(e),this._redoCommand=new d(e),e.commands.add("undo",this._undoCommand),e.commands.add("redo",this._redoCommand),this.listenTo(e.model,"applyOperation",((e,t)=>{const s=t[0];if(!s.isDocumentOperation)return;const o=s.batch,i=this._redoCommand._createdBatches.has(o),r=this._undoCommand._createdBatches.has(o);this._batchRegistry.has(o)||(this._batchRegistry.add(o),o.isUndoable&&(i?this._undoCommand.addBatch(o):r||(this._undoCommand.addBatch(o),this._redoCommand.clearStack())))}),{priority:"highest"}),this.listenTo(this._undoCommand,"revert",((e,t,s)=>{this._redoCommand.addBatch(s)})),e.keystrokes.set("CTRL+Z","undo"),e.keystrokes.set("CTRL+Y","redo"),e.keystrokes.set("CTRL+SHIFT+Z","redo")}}var u=s("./packages/ckeditor5-ui/src/button/buttonview.js");const p='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m5.042 9.367 2.189 1.837a.75.75 0 0 1-.965 1.149l-3.788-3.18a.747.747 0 0 1-.21-.284.75.75 0 0 1 .17-.945L6.23 4.762a.75.75 0 1 1 .964 1.15L4.863 7.866h8.917A.75.75 0 0 1 14 7.9a4 4 0 1 1-1.477 7.718l.344-1.489a2.5 2.5 0 1 0 1.094-4.73l.008-.032H5.042z"/></svg>',g='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m14.958 9.367-2.189 1.837a.75.75 0 0 0 .965 1.149l3.788-3.18a.747.747 0 0 0 .21-.284.75.75 0 0 0-.17-.945L13.77 4.762a.75.75 0 1 0-.964 1.15l2.331 1.955H6.22A.75.75 0 0 0 6 7.9a4 4 0 1 0 1.477 7.718l-.344-1.489A2.5 2.5 0 1 1 6.039 9.4l-.008-.032h8.927z"/></svg>';class f extends o.Z{static get pluginName(){return"UndoUI"}init(){const e=this.editor,t=e.locale,s=e.t,o="ltr"==t.uiLanguageDirection?p:g,i="ltr"==t.uiLanguageDirection?g:p;this._addButton("undo",s("Undo"),"CTRL+Z",o),this._addButton("redo",s("Redo"),"CTRL+Y",i)}_addButton(e,t,s,o){const i=this.editor;i.ui.componentFactory.add(e,(r=>{const n=i.commands.get(e),a=new u.Z(r);return a.set({label:t,icon:o,keystroke:s,tooltip:!0}),a.bind("isEnabled").to(n,"isEnabled"),this.listenTo(a,"execute",(()=>{i.execute(e),i.editing.view.focus()})),a}))}}class m extends o.Z{static get requires(){return[h,f]}static get pluginName(){return"Undo"}}},"./src/upload.js":(e,t,s)=>{"use strict";s.r(t),s.d(t,{Base64UploadAdapter:()=>k,FileDialogButtonView:()=>f,FileRepository:()=>h,SimpleUploadAdapter:()=>_});var o=s("./packages/ckeditor5-core/src/plugin.js"),i=s("./packages/ckeditor5-core/src/pendingactions.js"),r=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),n=s("./packages/ckeditor5-utils/src/observablemixin.ts"),a=s("./packages/ckeditor5-utils/src/collection.ts"),c=s("./packages/ckeditor5-utils/src/mix.ts");class l{constructor(){const e=new window.FileReader;this._reader=e,this._data=void 0,this.set("loaded",0),e.onprogress=e=>{this.loaded=e.loaded}}get error(){return this._reader.error}get data(){return this._data}read(e){const t=this._reader;return this.total=e.size,new Promise(((s,o)=>{t.onload=()=>{const e=t.result;this._data=e,s(e)},t.onerror=()=>{o("error")},t.onabort=()=>{o("aborted")},this._reader.readAsDataURL(e)}))}abort(){this._reader.abort()}}(0,c.Z)(l,n.Z);var d=s("./packages/ckeditor5-utils/src/uid.ts");class h extends o.Z{static get pluginName(){return"FileRepository"}static get requires(){return[i.Z]}init(){this.loaders=new a.Z,this.loaders.on("add",(()=>this._updatePendingAction())),this.loaders.on("remove",(()=>this._updatePendingAction())),this._loadersMap=new Map,this._pendingAction=null,this.set("uploaded",0),this.set("uploadTotal",null),this.bind("uploadedPercent").to(this,"uploaded",this,"uploadTotal",((e,t)=>t?e/t*100:0))}getLoader(e){return this._loadersMap.get(e)||null}createLoader(e){if(!this.createUploadAdapter)return(0,r.KE)("filerepository-no-upload-adapter"),null;const t=new u(Promise.resolve(e),this.createUploadAdapter);return this.loaders.add(t),this._loadersMap.set(e,t),e instanceof Promise&&t.file.then((e=>{this._loadersMap.set(e,t)})).catch((()=>{})),t.on("change:uploaded",(()=>{let e=0;for(const t of this.loaders)e+=t.uploaded;this.uploaded=e})),t.on("change:uploadTotal",(()=>{let e=0;for(const t of this.loaders)t.uploadTotal&&(e+=t.uploadTotal);this.uploadTotal=e})),t}destroyLoader(e){const t=e instanceof u?e:this.getLoader(e);t._destroy(),this.loaders.remove(t),this._loadersMap.forEach(((e,s)=>{e===t&&this._loadersMap.delete(s)}))}_updatePendingAction(){const e=this.editor.plugins.get(i.Z);if(this.loaders.length){if(!this._pendingAction){const t=this.editor.t,s=e=>`${t("Upload in progress")} ${parseInt(e)}%.`;this._pendingAction=e.add(s(this.uploadedPercent)),this._pendingAction.bind("message").to(this,"uploadedPercent",s)}}else e.remove(this._pendingAction),this._pendingAction=null}}(0,c.Z)(h,n.Z);class u{constructor(e,t){this.id=(0,d.Z)(),this._filePromiseWrapper=this._createFilePromiseWrapper(e),this._adapter=t(this),this._reader=new l,this.set("status","idle"),this.set("uploaded",0),this.set("uploadTotal",null),this.bind("uploadedPercent").to(this,"uploaded",this,"uploadTotal",((e,t)=>t?e/t*100:0)),this.set("uploadResponse",null)}get file(){return this._filePromiseWrapper?this._filePromiseWrapper.promise.then((e=>this._filePromiseWrapper?e:null)):Promise.resolve(null)}get data(){return this._reader.data}read(){if("idle"!=this.status)throw new r.ZP("filerepository-read-wrong-status",this);return this.status="reading",this.file.then((e=>this._reader.read(e))).then((e=>{if("reading"!==this.status)throw this.status;return this.status="idle",e})).catch((e=>{if("aborted"===e)throw this.status="aborted","aborted";throw this.status="error",this._reader.error?this._reader.error:e}))}upload(){if("idle"!=this.status)throw new r.ZP("filerepository-upload-wrong-status",this);return this.status="uploading",this.file.then((()=>this._adapter.upload())).then((e=>(this.uploadResponse=e,this.status="idle",e))).catch((e=>{if("aborted"===this.status)throw"aborted";throw this.status="error",e}))}abort(){const e=this.status;this.status="aborted",this._filePromiseWrapper.isFulfilled?"reading"==e?this._reader.abort():"uploading"==e&&this._adapter.abort&&this._adapter.abort():(this._filePromiseWrapper.promise.catch((()=>{})),this._filePromiseWrapper.rejecter("aborted")),this._destroy()}_destroy(){this._filePromiseWrapper=void 0,this._reader=void 0,this._adapter=void 0,this.uploadResponse=void 0}_createFilePromiseWrapper(e){const t={};return t.promise=new Promise(((s,o)=>{t.rejecter=o,t.isFulfilled=!1,e.then((e=>{t.isFulfilled=!0,s(e)})).catch((e=>{t.isFulfilled=!0,o(e)}))})),t}}(0,c.Z)(u,n.Z);var p=s("./packages/ckeditor5-ui/src/button/buttonview.js"),g=s("./packages/ckeditor5-ui/src/view.js");class f extends g.Z{constructor(e){super(e),this.buttonView=new p.Z(e),this._fileInputView=new m(e),this._fileInputView.bind("acceptedType").to(this),this._fileInputView.bind("allowMultipleFiles").to(this),this._fileInputView.delegate("done").to(this),this.setTemplate({tag:"span",attributes:{class:"ck-file-dialog-button"},children:[this.buttonView,this._fileInputView]}),this.buttonView.on("execute",(()=>{this._fileInputView.open()}))}focus(){this.buttonView.focus()}}class m extends g.Z{constructor(e){super(e),this.set("acceptedType"),this.set("allowMultipleFiles",!1);const t=this.bindTemplate;this.setTemplate({tag:"input",attributes:{class:["ck-hidden"],type:"file",tabindex:"-1",accept:t.to("acceptedType"),multiple:t.to("allowMultipleFiles")},on:{change:t.to((()=>{this.element&&this.element.files&&this.element.files.length&&this.fire("done",this.element.files),this.element.value=""}))}})}open(){this.element.click()}}class k extends o.Z{static get requires(){return[h]}static get pluginName(){return"Base64UploadAdapter"}init(){this.editor.plugins.get(h).createUploadAdapter=e=>new b(e)}}class b{constructor(e){this.loader=e}upload(){return new Promise(((e,t)=>{const s=this.reader=new window.FileReader;s.addEventListener("load",(()=>{e({default:s.result})})),s.addEventListener("error",(e=>{t(e)})),s.addEventListener("abort",(()=>{t()})),this.loader.file.then((e=>{s.readAsDataURL(e)}))}))}abort(){this.reader.abort()}}class _ extends o.Z{static get requires(){return[h]}static get pluginName(){return"SimpleUploadAdapter"}init(){const e=this.editor.config.get("simpleUpload");e&&(e.uploadUrl?this.editor.plugins.get(h).createUploadAdapter=t=>new w(t,e):(0,r.KE)("simple-upload-adapter-missing-uploadurl"))}}class w{constructor(e,t){this.loader=e,this.options=t}upload(){return this.loader.file.then((e=>new Promise(((t,s)=>{this._initRequest(),this._initListeners(t,s,e),this._sendRequest(e)}))))}abort(){this.xhr&&this.xhr.abort()}_initRequest(){const e=this.xhr=new XMLHttpRequest;e.open("POST",this.options.uploadUrl,!0),e.responseType="json"}_initListeners(e,t,s){const o=this.xhr,i=this.loader,r=`Couldn't upload file: ${s.name}.`;o.addEventListener("error",(()=>t(r))),o.addEventListener("abort",(()=>t())),o.addEventListener("load",(()=>{const s=o.response;if(!s||s.error)return t(s&&s.error&&s.error.message?s.error.message:r);const i=s.url?{default:s.url}:s.urls;e({...s,urls:i})})),o.upload&&o.upload.addEventListener("progress",(e=>{e.lengthComputable&&(i.uploadTotal=e.total,i.uploaded=e.loaded)}))}_sendRequest(e){const t=this.options.headers||{},s=this.options.withCredentials||!1;for(const e of Object.keys(t))this.xhr.setRequestHeader(e,t[e]);this.xhr.withCredentials=s;const o=new FormData;o.append("upload",e),this.xhr.send(o)}}},"./src/utils.js":(e,t,s)=>{"use strict";s.r(t),s.d(t,{CKEditorError:()=>o.Bb,Collection:()=>o.FE,DomEmitterMixin:()=>o.Xu,ElementReplacer:()=>o.a6,EmitterMixin:()=>o.ln,FocusTracker:()=>o.Rh,KeystrokeHandler:()=>o.VD,Locale:()=>o.go,ObservableMixin:()=>o.Re,Rect:()=>o.UL,ResizeObserver:()=>o.do,createElement:()=>o.az,diff:()=>o.Hg,env:()=>o.OB,first:()=>o.Ps,getCode:()=>o.Cq,getDataFromElement:()=>o.yy,getEnvKeystrokeText:()=>o.XU,getLanguageDirection:()=>o.j9,getLocalizedArrowKeyCodeDirection:()=>o.mA,global:()=>o.CO,isArrowKeyCode:()=>o.dj,isForwardArrowKeyCode:()=>o.Zt,isVisible:()=>o.pn,keyCodes:()=>o.Do,logError:()=>o.H,logWarning:()=>o.KE,mix:()=>o.CD,parseKeystroke:()=>o.Zz,priorities:()=>o.tA,scrollAncestorsToShowTarget:()=>o.F0,scrollViewportToShowTarget:()=>o.mR,setDataInElement:()=>o.jS,toArray:()=>o.qo,toMap:()=>o.qL,toUnit:()=>o.nn,uid:()=>o.hQ,version:()=>o.i8});var o=s("./packages/ckeditor5-utils/src/index.ts")},"./src/widget.js":(e,t,s)=>{"use strict";s.r(t),s.d(t,{WIDGET_CLASS_NAME:()=>c.s4,WIDGET_SELECTED_CLASS_NAME:()=>c.Uo,Widget:()=>o.Z,WidgetResize:()=>j,WidgetToolbarRepository:()=>d,WidgetTypeAround:()=>O.Z,findOptimalInsertionRange:()=>c.KT,getLabel:()=>c.id,isWidget:()=>c.Qd,setHighlightHandling:()=>c.em,setLabel:()=>c.l6,toWidget:()=>c.XC,toWidgetEditable:()=>c.sC,viewToModelPositionOutsideModelElement:()=>c.$n});var o=s("./packages/ckeditor5-widget/src/widget.js"),i=s("./packages/ckeditor5-core/src/plugin.js"),r=s("./packages/ckeditor5-ui/src/panel/balloon/contextualballoon.js"),n=s("./packages/ckeditor5-ui/src/toolbar/toolbarview.js"),a=s("./packages/ckeditor5-ui/src/panel/balloon/balloonpanelview.js"),c=s("./packages/ckeditor5-widget/src/utils.js"),l=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class d extends i.Z{static get requires(){return[r.Z]}static get pluginName(){return"WidgetToolbarRepository"}init(){const e=this.editor;if(e.plugins.has("BalloonToolbar")){const t=e.plugins.get("BalloonToolbar");this.listenTo(t,"show",(t=>{(function(e){const t=e.getSelectedElement();return!(!t||!(0,c.Qd)(t))})(e.editing.view.document.selection)&&t.stop()}),{priority:"high"})}this._toolbarDefinitions=new Map,this._balloon=this.editor.plugins.get("ContextualBalloon"),this.on("change:isEnabled",(()=>{this._updateToolbarsVisibility()})),this.listenTo(e.ui,"update",(()=>{this._updateToolbarsVisibility()})),this.listenTo(e.ui.focusTracker,"change:isFocused",(()=>{this._updateToolbarsVisibility()}),{priority:"low"})}destroy(){super.destroy();for(const e of this._toolbarDefinitions.values())e.view.destroy()}register(e,{ariaLabel:t,items:s,getRelatedElement:o,balloonClassName:i="ck-toolbar-container"}){if(!s.length)return void(0,l.KE)("widget-toolbar-no-items",{toolbarId:e});const r=this.editor,a=r.t,c=new n.Z(r.locale);if(c.ariaLabel=t||a("Widget toolbar"),this._toolbarDefinitions.has(e))throw new l.ZP("widget-toolbar-duplicated",this,{toolbarId:e});c.fillFromConfig(s,r.ui.componentFactory);const d={view:c,getRelatedElement:o,balloonClassName:i};r.ui.addToolbar(c,{isContextual:!0,beforeFocus:()=>{const e=o(r.editing.view.document.selection);e&&this._showToolbar(d,e)},afterBlur:()=>{this._hideToolbar(d)}}),this._toolbarDefinitions.set(e,d)}_updateToolbarsVisibility(){let e=0,t=null,s=null;for(const o of this._toolbarDefinitions.values()){const i=o.getRelatedElement(this.editor.editing.view.document.selection);if(this.isEnabled&&i)if(this.editor.ui.focusTracker.isFocused){const r=i.getAncestors().length;r>e&&(e=r,t=i,s=o)}else this._isToolbarVisible(o)&&this._hideToolbar(o);else this._isToolbarInBalloon(o)&&this._hideToolbar(o)}s&&this._showToolbar(s,t)}_hideToolbar(e){this._balloon.remove(e.view),this.stopListening(this._balloon,"change:visibleView")}_showToolbar(e,t){this._isToolbarVisible(e)?h(this.editor,t):this._isToolbarInBalloon(e)||(this._balloon.add({view:e.view,position:u(this.editor,t),balloonClassName:e.balloonClassName}),this.listenTo(this._balloon,"change:visibleView",(()=>{for(const e of this._toolbarDefinitions.values())if(this._isToolbarVisible(e)){const t=e.getRelatedElement(this.editor.editing.view.document.selection);h(this.editor,t)}})))}_isToolbarVisible(e){return this._balloon.visibleView===e.view}_isToolbarInBalloon(e){return this._balloon.hasView(e.view)}}function h(e,t){const s=e.plugins.get("ContextualBalloon"),o=u(e,t);s.updatePosition(o)}function u(e,t){const s=e.editing.view,o=a.Z.defaultPositions;return{target:s.domConverter.mapViewToDom(t),positions:[o.northArrowSouth,o.northArrowSouthWest,o.northArrowSouthEast,o.southArrowNorth,o.southArrowNorthWest,o.southArrowNorthEast,o.viewportStickyNorth]}}var p=s("./packages/ckeditor5-ui/src/template.js"),g=s("./packages/ckeditor5-utils/src/dom/rect.ts"),f=s("./packages/ckeditor5-utils/src/comparearrays.ts"),m=s("./packages/ckeditor5-utils/src/observablemixin.ts"),k=s("./packages/ckeditor5-utils/src/mix.ts");class b{constructor(e){this.set("activeHandlePosition",null),this.set("proposedWidthPercents",null),this.set("proposedWidth",null),this.set("proposedHeight",null),this.set("proposedHandleHostWidth",null),this.set("proposedHandleHostHeight",null),this._options=e,this._referenceCoordinates=null}begin(e,t,s){const o=new g.Z(t);this.activeHandlePosition=function(e){const t=["top-left","top-right","bottom-right","bottom-left"];for(const s of t)if(e.classList.contains(_(s)))return s}(e),this._referenceCoordinates=function(e,t){const s=new g.Z(e),o=t.split("-"),i={x:"right"==o[1]?s.right:s.left,y:"bottom"==o[0]?s.bottom:s.top};return i.x+=e.ownerDocument.defaultView.scrollX,i.y+=e.ownerDocument.defaultView.scrollY,i}(t,function(e){const t=e.split("-"),s={top:"bottom",bottom:"top",left:"right",right:"left"};return`${s[t[0]]}-${s[t[1]]}`}(this.activeHandlePosition)),this.originalWidth=o.width,this.originalHeight=o.height,this.aspectRatio=o.width/o.height;const i=s.style.width;i&&i.match(/^\d+(\.\d*)?%$/)?this.originalWidthPercents=parseFloat(i):this.originalWidthPercents=function(e,t){const s=e.parentElement,o=parseFloat(s.ownerDocument.defaultView.getComputedStyle(s).width);return t.width/o*100}(s,o)}update(e){this.proposedWidth=e.width,this.proposedHeight=e.height,this.proposedWidthPercents=e.widthPercents,this.proposedHandleHostWidth=e.handleHostWidth,this.proposedHandleHostHeight=e.handleHostHeight}}function _(e){return`ck-widget__resizer__handle-${e}`}(0,k.Z)(b,m.Z);var w=s("./packages/ckeditor5-ui/src/view.js");class v extends w.Z{constructor(){super();const e=this.bindTemplate;this.setTemplate({tag:"div",attributes:{class:["ck","ck-size-view",e.to("_viewPosition",(e=>e?`ck-orientation-${e}`:""))],style:{display:e.if("_isVisible","none",(e=>!e))}},children:[{text:e.to("_label")}]})}_bindToState(e,t){this.bind("_isVisible").to(t,"proposedWidth",t,"proposedHeight",((e,t)=>null!==e&&null!==t)),this.bind("_label").to(t,"proposedHandleHostWidth",t,"proposedHandleHostHeight",t,"proposedWidthPercents",((t,s,o)=>"px"===e.unit?`${t}×${s}`:`${o}%`)),this.bind("_viewPosition").to(t,"activeHandlePosition",t,"proposedHandleHostWidth",t,"proposedHandleHostHeight",((e,t,s)=>t<50||s<50?"above-center":e))}_dismiss(){this.unbind(),this._isVisible=!1}}class y{constructor(e){this._options=e,this._viewResizerWrapper=null,this.set("isEnabled",!0),this.set("isSelected",!1),this.bind("isVisible").to(this,"isEnabled",this,"isSelected",((e,t)=>e&&t)),this.decorate("begin"),this.decorate("cancel"),this.decorate("commit"),this.decorate("updateSize"),this.on("commit",(e=>{this.state.proposedWidth||this.state.proposedWidthPercents||(this._cleanup(),e.stop())}),{priority:"high"}),this.on("change:isVisible",(()=>{this.isVisible?(this.show(),this.redraw()):this.hide()}))}show(){this._options.editor.editing.view.change((e=>{e.removeClass("ck-hidden",this._viewResizerWrapper)}))}hide(){this._options.editor.editing.view.change((e=>{e.addClass("ck-hidden",this._viewResizerWrapper)}))}attach(){const e=this,t=this._options.viewElement;this._options.editor.editing.view.change((s=>{const o=s.createUIElement("div",{class:"ck ck-reset_all ck-widget__resizer"},(function(t){const s=this.toDomElement(t);return e._appendHandles(s),e._appendSizeUI(s),s}));s.insert(s.createPositionAt(t,"end"),o),s.addClass("ck-widget_with-resizer",t),this._viewResizerWrapper=o,this.isVisible||this.hide()}))}begin(e){this.state=new b(this._options),this._sizeView._bindToState(this._options,this.state),this._initialViewWidth=this._options.viewElement.getStyle("width"),this.state.begin(e,this._getHandleHost(),this._getResizeHost())}updateSize(e){const t=this._proposeNewSize(e);this._options.editor.editing.view.change((e=>{const s=this._options.unit||"%",o=("%"===s?t.widthPercents:t.width)+s;e.setStyle("width",o,this._options.viewElement)}));const s=this._getHandleHost(),o=new g.Z(s);t.handleHostWidth=Math.round(o.width),t.handleHostHeight=Math.round(o.height);const i=new g.Z(s);t.width=Math.round(i.width),t.height=Math.round(i.height),this.redraw(o),this.state.update(t)}commit(){const e=this._options.unit||"%",t=("%"===e?this.state.proposedWidthPercents:this.state.proposedWidth)+e;this._options.editor.editing.view.change((()=>{this._cleanup(),this._options.onCommit(t)}))}cancel(){this._cleanup()}destroy(){this.cancel()}redraw(e){const t=this._domResizerWrapper;if(!((s=t)&&s.ownerDocument&&s.ownerDocument.contains(s)))return;var s;const o=t.parentElement,i=this._getHandleHost(),r=this._viewResizerWrapper,n=[r.getStyle("width"),r.getStyle("height"),r.getStyle("left"),r.getStyle("top")];let a;if(o.isSameNode(i)){const t=e||new g.Z(i);a=[t.width+"px",t.height+"px",void 0,void 0]}else a=[i.offsetWidth+"px",i.offsetHeight+"px",i.offsetLeft+"px",i.offsetTop+"px"];"same"!==(0,f.Z)(n,a)&&this._options.editor.editing.view.change((e=>{e.setStyle({width:a[0],height:a[1],left:a[2],top:a[3]},r)}))}containsHandle(e){return this._domResizerWrapper.contains(e)}static isResizeHandle(e){return e.classList.contains("ck-widget__resizer__handle")}_cleanup(){this._sizeView._dismiss();this._options.editor.editing.view.change((e=>{e.setStyle("width",this._initialViewWidth,this._options.viewElement)}))}_proposeNewSize(e){const t=this.state,s={x:(o=e).pageX,y:o.pageY};var o;const i=!this._options.isCentered||this._options.isCentered(this),r={x:t._referenceCoordinates.x-(s.x+t.originalWidth),y:s.y-t.originalHeight-t._referenceCoordinates.y};i&&t.activeHandlePosition.endsWith("-right")&&(r.x=s.x-(t._referenceCoordinates.x+t.originalWidth)),i&&(r.x*=2);const n={width:Math.abs(t.originalWidth+r.x),height:Math.abs(t.originalHeight+r.y)};n.dominant=n.width/t.aspectRatio>n.height?"width":"height",n.max=n[n.dominant];const a={width:n.width,height:n.height};return"width"==n.dominant?a.height=a.width/t.aspectRatio:a.width=a.height*t.aspectRatio,{width:Math.round(a.width),height:Math.round(a.height),widthPercents:Math.min(Math.round(t.originalWidthPercents/t.originalWidth*a.width*100)/100,100)}}_getResizeHost(){const e=this._domResizerWrapper.parentElement;return this._options.getResizeHost(e)}_getHandleHost(){const e=this._domResizerWrapper.parentElement;return this._options.getHandleHost(e)}get _domResizerWrapper(){return this._options.editor.editing.view.domConverter.mapViewToDom(this._viewResizerWrapper)}_appendHandles(e){const t=["top-left","top-right","bottom-right","bottom-left"];for(const o of t)e.appendChild(new p.ZP({tag:"div",attributes:{class:"ck-widget__resizer__handle "+(s=o,`ck-widget__resizer__handle-${s}`)}}).render());var s}_appendSizeUI(e){this._sizeView=new v,this._sizeView.render(),e.appendChild(this._sizeView.element)}}(0,k.Z)(y,m.Z);var Z=s("./packages/ckeditor5-utils/src/dom/emittermixin.ts"),P=s("./packages/ckeditor5-utils/src/dom/global.ts"),x=s("./packages/ckeditor5-engine/src/view/observer/mouseobserver.ts"),T=s("./node_modules/lodash-es/throttle.js"),A=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),C=s.n(A),E=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-widget/theme/widgetresize.css"),S={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};C()(E.Z,S);E.Z.locals;class j extends i.Z{static get pluginName(){return"WidgetResize"}init(){const e=this.editor.editing,t=P.Z.window.document;this.set("selectedResizer",null),this.set("_activeResizer",null),this._resizers=new Map,e.view.addObserver(x.Z),this._observer=Object.create(Z.Z),this.listenTo(e.view.document,"mousedown",this._mouseDownListener.bind(this),{priority:"high"}),this._observer.listenTo(t,"mousemove",this._mouseMoveListener.bind(this)),this._observer.listenTo(t,"mouseup",this._mouseUpListener.bind(this));this._redrawSelectedResizerThrottled=(0,T.Z)((()=>{this.selectedResizer&&this.selectedResizer.isVisible&&this.selectedResizer.redraw()}),200),this.editor.ui.on("update",this._redrawSelectedResizerThrottled),this.editor.model.document.on("change",(()=>{for(const[e,t]of this._resizers)e.isAttached()||(this._resizers.delete(e),t.destroy())}),{priority:"lowest"}),this._observer.listenTo(P.Z.window,"resize",this._redrawSelectedResizerThrottled);const s=this.editor.editing.view.document.selection;s.on("change",(()=>{const e=s.getSelectedElement(),t=this.getResizerByViewElement(e)||null;t?this.select(t):this.deselect()}))}destroy(){this._observer.stopListening();for(const e of this._resizers.values())e.destroy();this._redrawSelectedResizerThrottled.cancel()}select(e){this.deselect(),this.selectedResizer=e,this.selectedResizer.isSelected=!0}deselect(){this.selectedResizer&&(this.selectedResizer.isSelected=!1),this.selectedResizer=null}attachTo(e){const t=new y(e),s=this.editor.plugins;if(t.attach(),s.has("WidgetToolbarRepository")){const e=s.get("WidgetToolbarRepository");t.on("begin",(()=>{e.forceDisabled("resize")}),{priority:"lowest"}),t.on("cancel",(()=>{e.clearForceDisabled("resize")}),{priority:"highest"}),t.on("commit",(()=>{e.clearForceDisabled("resize")}),{priority:"highest"})}this._resizers.set(e.viewElement,t);const o=this.editor.editing.view.document.selection.getSelectedElement();return this.getResizerByViewElement(o)==t&&this.select(t),t}getResizerByViewElement(e){return this._resizers.get(e)}_getResizerByHandle(e){for(const t of this._resizers.values())if(t.containsHandle(e))return t}_mouseDownListener(e,t){const s=t.domTarget;y.isResizeHandle(s)&&(this._activeResizer=this._getResizerByHandle(s),this._activeResizer&&(this._activeResizer.begin(s),e.stop(),t.preventDefault()))}_mouseMoveListener(e,t){this._activeResizer&&this._activeResizer.updateSize(t)}_mouseUpListener(){this._activeResizer&&(this._activeResizer.commit(),this._activeResizer=null)}}(0,k.Z)(j,m.Z);var O=s("./packages/ckeditor5-widget/src/widgettypearound/widgettypearound.js")},"?7cdd":(e,t,s)=>{e.exports=s},"./node_modules/lodash-es/_ListCache.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>u});const o=function(){this.__data__=[],this.size=0};var i=s("./node_modules/lodash-es/eq.js");const r=function(e,t){for(var s=e.length;s--;)if((0,i.Z)(e[s][0],t))return s;return-1};var n=Array.prototype.splice;const a=function(e){var t=this.__data__,s=r(t,e);return!(s<0)&&(s==t.length-1?t.pop():n.call(t,s,1),--this.size,!0)};const c=function(e){var t=this.__data__,s=r(t,e);return s<0?void 0:t[s][1]};const l=function(e){return r(this.__data__,e)>-1};const d=function(e,t){var s=this.__data__,o=r(s,e);return o<0?(++this.size,s.push([e,t])):s[o][1]=t,this};function h(e){var t=-1,s=null==e?0:e.length;for(this.clear();++t<s;){var o=e[t];this.set(o[0],o[1])}}h.prototype.clear=o,h.prototype.delete=a,h.prototype.get=c,h.prototype.has=l,h.prototype.set=d;const u=h},"./node_modules/lodash-es/_Map.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/lodash-es/_getNative.js"),i=s("./node_modules/lodash-es/_root.js");const r=(0,o.Z)(i.Z,"Map")},"./node_modules/lodash-es/_MapCache.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>Z});const o=(0,s("./node_modules/lodash-es/_getNative.js").Z)(Object,"create");const i=function(){this.__data__=o?o(null):{},this.size=0};const r=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t};var n=Object.prototype.hasOwnProperty;const a=function(e){var t=this.__data__;if(o){var s=t[e];return"__lodash_hash_undefined__"===s?void 0:s}return n.call(t,e)?t[e]:void 0};var c=Object.prototype.hasOwnProperty;const l=function(e){var t=this.__data__;return o?void 0!==t[e]:c.call(t,e)};const d=function(e,t){var s=this.__data__;return this.size+=this.has(e)?0:1,s[e]=o&&void 0===t?"__lodash_hash_undefined__":t,this};function h(e){var t=-1,s=null==e?0:e.length;for(this.clear();++t<s;){var o=e[t];this.set(o[0],o[1])}}h.prototype.clear=i,h.prototype.delete=r,h.prototype.get=a,h.prototype.has=l,h.prototype.set=d;const u=h;var p=s("./node_modules/lodash-es/_ListCache.js"),g=s("./node_modules/lodash-es/_Map.js");const f=function(){this.size=0,this.__data__={hash:new u,map:new(g.Z||p.Z),string:new u}};const m=function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e};const k=function(e,t){var s=e.__data__;return m(t)?s["string"==typeof t?"string":"hash"]:s.map};const b=function(e){var t=k(this,e).delete(e);return this.size-=t?1:0,t};const _=function(e){return k(this,e).get(e)};const w=function(e){return k(this,e).has(e)};const v=function(e,t){var s=k(this,e),o=s.size;return s.set(e,t),this.size+=s.size==o?0:1,this};function y(e){var t=-1,s=null==e?0:e.length;for(this.clear();++t<s;){var o=e[t];this.set(o[0],o[1])}}y.prototype.clear=f,y.prototype.delete=b,y.prototype.get=_,y.prototype.has=w,y.prototype.set=v;const Z=y},"./node_modules/lodash-es/_Stack.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>u});var o=s("./node_modules/lodash-es/_ListCache.js");const i=function(){this.__data__=new o.Z,this.size=0};const r=function(e){var t=this.__data__,s=t.delete(e);return this.size=t.size,s};const n=function(e){return this.__data__.get(e)};const a=function(e){return this.__data__.has(e)};var c=s("./node_modules/lodash-es/_Map.js"),l=s("./node_modules/lodash-es/_MapCache.js");const d=function(e,t){var s=this.__data__;if(s instanceof o.Z){var i=s.__data__;if(!c.Z||i.length<199)return i.push([e,t]),this.size=++s.size,this;s=this.__data__=new l.Z(i)}return s.set(e,t),this.size=s.size,this};function h(e){var t=this.__data__=new o.Z(e);this.size=t.size}h.prototype.clear=i,h.prototype.delete=r,h.prototype.get=n,h.prototype.has=a,h.prototype.set=d;const u=h},"./node_modules/lodash-es/_Symbol.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o=s("./node_modules/lodash-es/_root.js").Z.Symbol},"./node_modules/lodash-es/_Uint8Array.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o=s("./node_modules/lodash-es/_root.js").Z.Uint8Array},"./node_modules/lodash-es/_arrayLikeKeys.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>d});const o=function(e,t){for(var s=-1,o=Array(e);++s<e;)o[s]=t(s);return o};var i=s("./node_modules/lodash-es/isArguments.js"),r=s("./node_modules/lodash-es/isArray.js"),n=s("./node_modules/lodash-es/isBuffer.js"),a=s("./node_modules/lodash-es/_isIndex.js"),c=s("./node_modules/lodash-es/isTypedArray.js"),l=Object.prototype.hasOwnProperty;const d=function(e,t){var s=(0,r.Z)(e),d=!s&&(0,i.Z)(e),h=!s&&!d&&(0,n.Z)(e),u=!s&&!d&&!h&&(0,c.Z)(e),p=s||d||h||u,g=p?o(e.length,String):[],f=g.length;for(var m in e)!t&&!l.call(e,m)||p&&("length"==m||h&&("offset"==m||"parent"==m)||u&&("buffer"==m||"byteLength"==m||"byteOffset"==m)||(0,a.Z)(m,f))||g.push(m);return g}},"./node_modules/lodash-es/_arrayPush.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o=function(e,t){for(var s=-1,o=t.length,i=e.length;++s<o;)e[i+s]=t[s];return e}},"./node_modules/lodash-es/_assignValue.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>n});var o=s("./node_modules/lodash-es/_baseAssignValue.js"),i=s("./node_modules/lodash-es/eq.js"),r=Object.prototype.hasOwnProperty;const n=function(e,t,s){var n=e[t];r.call(e,t)&&(0,i.Z)(n,s)&&(void 0!==s||t in e)||(0,o.Z)(e,t,s)}},"./node_modules/lodash-es/_baseAssignValue.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./node_modules/lodash-es/_defineProperty.js");const i=function(e,t,s){"__proto__"==t&&o.Z?(0,o.Z)(e,t,{configurable:!0,enumerable:!0,value:s,writable:!0}):e[t]=s}},"./node_modules/lodash-es/_baseClone.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>Y});var o=s("./node_modules/lodash-es/_Stack.js");const i=function(e,t){for(var s=-1,o=null==e?0:e.length;++s<o&&!1!==t(e[s],s,e););return e};var r=s("./node_modules/lodash-es/_assignValue.js"),n=s("./node_modules/lodash-es/_copyObject.js"),a=s("./node_modules/lodash-es/keys.js");const c=function(e,t){return e&&(0,n.Z)(t,(0,a.Z)(t),e)};var l=s("./node_modules/lodash-es/keysIn.js");const d=function(e,t){return e&&(0,n.Z)(t,(0,l.Z)(t),e)};var h=s("./node_modules/lodash-es/_cloneBuffer.js"),u=s("./node_modules/lodash-es/_copyArray.js"),p=s("./node_modules/lodash-es/_getSymbols.js");const g=function(e,t){return(0,n.Z)(e,(0,p.Z)(e),t)};var f=s("./node_modules/lodash-es/_arrayPush.js"),m=s("./node_modules/lodash-es/_getPrototype.js"),k=s("./node_modules/lodash-es/stubArray.js");const b=Object.getOwnPropertySymbols?function(e){for(var t=[];e;)(0,f.Z)(t,(0,p.Z)(e)),e=(0,m.Z)(e);return t}:k.Z;const _=function(e,t){return(0,n.Z)(e,b(e),t)};var w=s("./node_modules/lodash-es/_getAllKeys.js"),v=s("./node_modules/lodash-es/_baseGetAllKeys.js");const y=function(e){return(0,v.Z)(e,l.Z,b)};var Z=s("./node_modules/lodash-es/_getTag.js"),P=Object.prototype.hasOwnProperty;const x=function(e){var t=e.length,s=new e.constructor(t);return t&&"string"==typeof e[0]&&P.call(e,"index")&&(s.index=e.index,s.input=e.input),s};var T=s("./node_modules/lodash-es/_cloneArrayBuffer.js");const A=function(e,t){var s=t?(0,T.Z)(e.buffer):e.buffer;return new e.constructor(s,e.byteOffset,e.byteLength)};var C=/\w*$/;const E=function(e){var t=new e.constructor(e.source,C.exec(e));return t.lastIndex=e.lastIndex,t};var S=s("./node_modules/lodash-es/_Symbol.js"),j=S.Z?S.Z.prototype:void 0,O=j?j.valueOf:void 0;const R=function(e){return O?Object(O.call(e)):{}};var M=s("./node_modules/lodash-es/_cloneTypedArray.js");const N=function(e,t,s){var o=e.constructor;switch(t){case"[object ArrayBuffer]":return(0,T.Z)(e);case"[object Boolean]":case"[object Date]":return new o(+e);case"[object DataView]":return A(e,s);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return(0,M.Z)(e,s);case"[object Map]":case"[object Set]":return new o;case"[object Number]":case"[object String]":return new o(e);case"[object RegExp]":return E(e);case"[object Symbol]":return R(e)}};var V=s("./node_modules/lodash-es/_initCloneObject.js"),I=s("./node_modules/lodash-es/isArray.js"),D=s("./node_modules/lodash-es/isBuffer.js"),z=s("./node_modules/lodash-es/isObjectLike.js");const B=function(e){return(0,z.Z)(e)&&"[object Map]"==(0,Z.Z)(e)};var F=s("./node_modules/lodash-es/_baseUnary.js"),L=s("./node_modules/lodash-es/_nodeUtil.js"),W=L.Z&&L.Z.isMap;const $=W?(0,F.Z)(W):B;var q=s("./node_modules/lodash-es/isObject.js");const H=function(e){return(0,z.Z)(e)&&"[object Set]"==(0,Z.Z)(e)};var U=L.Z&&L.Z.isSet;const K=U?(0,F.Z)(U):H;var G="[object Arguments]",J="[object Function]",Q="[object Object]",X={};X[G]=X["[object Array]"]=X["[object ArrayBuffer]"]=X["[object DataView]"]=X["[object Boolean]"]=X["[object Date]"]=X["[object Float32Array]"]=X["[object Float64Array]"]=X["[object Int8Array]"]=X["[object Int16Array]"]=X["[object Int32Array]"]=X["[object Map]"]=X["[object Number]"]=X[Q]=X["[object RegExp]"]=X["[object Set]"]=X["[object String]"]=X["[object Symbol]"]=X["[object Uint8Array]"]=X["[object Uint8ClampedArray]"]=X["[object Uint16Array]"]=X["[object Uint32Array]"]=!0,X["[object Error]"]=X[J]=X["[object WeakMap]"]=!1;const Y=function e(t,s,n,p,f,m){var k,b=1&s,v=2&s,P=4&s;if(n&&(k=f?n(t,p,f,m):n(t)),void 0!==k)return k;if(!(0,q.Z)(t))return t;var T=(0,I.Z)(t);if(T){if(k=x(t),!b)return(0,u.Z)(t,k)}else{var A=(0,Z.Z)(t),C=A==J||"[object GeneratorFunction]"==A;if((0,D.Z)(t))return(0,h.Z)(t,b);if(A==Q||A==G||C&&!f){if(k=v||C?{}:(0,V.Z)(t),!b)return v?_(t,d(k,t)):g(t,c(k,t))}else{if(!X[A])return f?t:{};k=N(t,A,b)}}m||(m=new o.Z);var E=m.get(t);if(E)return E;m.set(t,k),K(t)?t.forEach((function(o){k.add(e(o,s,n,o,t,m))})):$(t)&&t.forEach((function(o,i){k.set(i,e(o,s,n,i,t,m))}));var S=P?v?y:w.Z:v?l.Z:a.Z,j=T?void 0:S(t);return i(j||t,(function(o,i){j&&(o=t[i=o]),(0,r.Z)(k,i,e(o,s,n,i,t,m))})),k}},"./node_modules/lodash-es/_baseGetAllKeys.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/lodash-es/_arrayPush.js"),i=s("./node_modules/lodash-es/isArray.js");const r=function(e,t,s){var r=t(e);return(0,i.Z)(e)?r:(0,o.Z)(r,s(e))}},"./node_modules/lodash-es/_baseGetTag.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>u});var o=s("./node_modules/lodash-es/_Symbol.js"),i=Object.prototype,r=i.hasOwnProperty,n=i.toString,a=o.Z?o.Z.toStringTag:void 0;const c=function(e){var t=r.call(e,a),s=e[a];try{e[a]=void 0;var o=!0}catch(e){}var i=n.call(e);return o&&(t?e[a]=s:delete e[a]),i};var l=Object.prototype.toString;const d=function(e){return l.call(e)};var h=o.Z?o.Z.toStringTag:void 0;const u=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":h&&h in Object(e)?c(e):d(e)}},"./node_modules/lodash-es/_baseIsEqual.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>R});var o=s("./node_modules/lodash-es/_Stack.js"),i=s("./node_modules/lodash-es/_MapCache.js");const r=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this};const n=function(e){return this.__data__.has(e)};function a(e){var t=-1,s=null==e?0:e.length;for(this.__data__=new i.Z;++t<s;)this.add(e[t])}a.prototype.add=a.prototype.push=r,a.prototype.has=n;const c=a;const l=function(e,t){for(var s=-1,o=null==e?0:e.length;++s<o;)if(t(e[s],s,e))return!0;return!1};const d=function(e,t){return e.has(t)};const h=function(e,t,s,o,i,r){var n=1&s,a=e.length,h=t.length;if(a!=h&&!(n&&h>a))return!1;var u=r.get(e),p=r.get(t);if(u&&p)return u==t&&p==e;var g=-1,f=!0,m=2&s?new c:void 0;for(r.set(e,t),r.set(t,e);++g<a;){var k=e[g],b=t[g];if(o)var _=n?o(b,k,g,t,e,r):o(k,b,g,e,t,r);if(void 0!==_){if(_)continue;f=!1;break}if(m){if(!l(t,(function(e,t){if(!d(m,t)&&(k===e||i(k,e,s,o,r)))return m.push(t)}))){f=!1;break}}else if(k!==b&&!i(k,b,s,o,r)){f=!1;break}}return r.delete(e),r.delete(t),f};var u=s("./node_modules/lodash-es/_Symbol.js"),p=s("./node_modules/lodash-es/_Uint8Array.js"),g=s("./node_modules/lodash-es/eq.js");const f=function(e){var t=-1,s=Array(e.size);return e.forEach((function(e,o){s[++t]=[o,e]})),s};const m=function(e){var t=-1,s=Array(e.size);return e.forEach((function(e){s[++t]=e})),s};var k=u.Z?u.Z.prototype:void 0,b=k?k.valueOf:void 0;const _=function(e,t,s,o,i,r,n){switch(s){case"[object DataView]":if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case"[object ArrayBuffer]":return!(e.byteLength!=t.byteLength||!r(new p.Z(e),new p.Z(t)));case"[object Boolean]":case"[object Date]":case"[object Number]":return(0,g.Z)(+e,+t);case"[object Error]":return e.name==t.name&&e.message==t.message;case"[object RegExp]":case"[object String]":return e==t+"";case"[object Map]":var a=f;case"[object Set]":var c=1&o;if(a||(a=m),e.size!=t.size&&!c)return!1;var l=n.get(e);if(l)return l==t;o|=2,n.set(e,t);var d=h(a(e),a(t),o,i,r,n);return n.delete(e),d;case"[object Symbol]":if(b)return b.call(e)==b.call(t)}return!1};var w=s("./node_modules/lodash-es/_getAllKeys.js"),v=Object.prototype.hasOwnProperty;const y=function(e,t,s,o,i,r){var n=1&s,a=(0,w.Z)(e),c=a.length;if(c!=(0,w.Z)(t).length&&!n)return!1;for(var l=c;l--;){var d=a[l];if(!(n?d in t:v.call(t,d)))return!1}var h=r.get(e),u=r.get(t);if(h&&u)return h==t&&u==e;var p=!0;r.set(e,t),r.set(t,e);for(var g=n;++l<c;){var f=e[d=a[l]],m=t[d];if(o)var k=n?o(m,f,d,t,e,r):o(f,m,d,e,t,r);if(!(void 0===k?f===m||i(f,m,s,o,r):k)){p=!1;break}g||(g="constructor"==d)}if(p&&!g){var b=e.constructor,_=t.constructor;b==_||!("constructor"in e)||!("constructor"in t)||"function"==typeof b&&b instanceof b&&"function"==typeof _&&_ instanceof _||(p=!1)}return r.delete(e),r.delete(t),p};var Z=s("./node_modules/lodash-es/_getTag.js"),P=s("./node_modules/lodash-es/isArray.js"),x=s("./node_modules/lodash-es/isBuffer.js"),T=s("./node_modules/lodash-es/isTypedArray.js"),A="[object Arguments]",C="[object Array]",E="[object Object]",S=Object.prototype.hasOwnProperty;const j=function(e,t,s,i,r,n){var a=(0,P.Z)(e),c=(0,P.Z)(t),l=a?C:(0,Z.Z)(e),d=c?C:(0,Z.Z)(t),u=(l=l==A?E:l)==E,p=(d=d==A?E:d)==E,g=l==d;if(g&&(0,x.Z)(e)){if(!(0,x.Z)(t))return!1;a=!0,u=!1}if(g&&!u)return n||(n=new o.Z),a||(0,T.Z)(e)?h(e,t,s,i,r,n):_(e,t,l,s,i,r,n);if(!(1&s)){var f=u&&S.call(e,"__wrapped__"),m=p&&S.call(t,"__wrapped__");if(f||m){var k=f?e.value():e,b=m?t.value():t;return n||(n=new o.Z),r(k,b,s,i,n)}}return!!g&&(n||(n=new o.Z),y(e,t,s,i,r,n))};var O=s("./node_modules/lodash-es/isObjectLike.js");const R=function e(t,s,o,i,r){return t===s||(null==t||null==s||!(0,O.Z)(t)&&!(0,O.Z)(s)?t!=t&&s!=s:j(t,s,o,i,e,r))}},"./node_modules/lodash-es/_baseUnary.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o=function(e){return function(t){return e(t)}}},"./node_modules/lodash-es/_cloneArrayBuffer.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./node_modules/lodash-es/_Uint8Array.js");const i=function(e){var t=new e.constructor(e.byteLength);return new o.Z(t).set(new o.Z(e)),t}},"./node_modules/lodash-es/_cloneBuffer.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>c});var o=s("./node_modules/lodash-es/_root.js"),i="object"==typeof exports&&exports&&!exports.nodeType&&exports,r=i&&"object"==typeof module&&module&&!module.nodeType&&module,n=r&&r.exports===i?o.Z.Buffer:void 0,a=n?n.allocUnsafe:void 0;const c=function(e,t){if(t)return e.slice();var s=e.length,o=a?a(s):new e.constructor(s);return e.copy(o),o}},"./node_modules/lodash-es/_cloneTypedArray.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./node_modules/lodash-es/_cloneArrayBuffer.js");const i=function(e,t){var s=t?(0,o.Z)(e.buffer):e.buffer;return new e.constructor(s,e.byteOffset,e.length)}},"./node_modules/lodash-es/_copyArray.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o=function(e,t){var s=-1,o=e.length;for(t||(t=Array(o));++s<o;)t[s]=e[s];return t}},"./node_modules/lodash-es/_copyObject.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/lodash-es/_assignValue.js"),i=s("./node_modules/lodash-es/_baseAssignValue.js");const r=function(e,t,s,r){var n=!s;s||(s={});for(var a=-1,c=t.length;++a<c;){var l=t[a],d=r?r(s[l],e[l],l,s,e):void 0;void 0===d&&(d=e[l]),n?(0,i.Z)(s,l,d):(0,o.Z)(s,l,d)}return s}},"./node_modules/lodash-es/_createAssigner.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>b});const o=function(e){return e};const i=function(e,t,s){switch(s.length){case 0:return e.call(t);case 1:return e.call(t,s[0]);case 2:return e.call(t,s[0],s[1]);case 3:return e.call(t,s[0],s[1],s[2])}return e.apply(t,s)};var r=Math.max;const n=function(e,t,s){return t=r(void 0===t?e.length-1:t,0),function(){for(var o=arguments,n=-1,a=r(o.length-t,0),c=Array(a);++n<a;)c[n]=o[t+n];n=-1;for(var l=Array(t+1);++n<t;)l[n]=o[n];return l[t]=s(c),i(e,this,l)}};const a=function(e){return function(){return e}};var c=s("./node_modules/lodash-es/_defineProperty.js");const l=c.Z?function(e,t){return(0,c.Z)(e,"toString",{configurable:!0,enumerable:!1,value:a(t),writable:!0})}:o;var d=Date.now;const h=function(e){var t=0,s=0;return function(){var o=d(),i=16-(o-s);if(s=o,i>0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}(l);const u=function(e,t){return h(n(e,t,o),e+"")};var p=s("./node_modules/lodash-es/eq.js"),g=s("./node_modules/lodash-es/isArrayLike.js"),f=s("./node_modules/lodash-es/_isIndex.js"),m=s("./node_modules/lodash-es/isObject.js");const k=function(e,t,s){if(!(0,m.Z)(s))return!1;var o=typeof t;return!!("number"==o?(0,g.Z)(s)&&(0,f.Z)(t,s.length):"string"==o&&t in s)&&(0,p.Z)(s[t],e)};const b=function(e){return u((function(t,s){var o=-1,i=s.length,r=i>1?s[i-1]:void 0,n=i>2?s[2]:void 0;for(r=e.length>3&&"function"==typeof r?(i--,r):void 0,n&&k(s[0],s[1],n)&&(r=i<3?void 0:r,i=1),t=Object(t);++o<i;){var a=s[o];a&&e(t,a,o,r)}return t}))}},"./node_modules/lodash-es/_defineProperty.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./node_modules/lodash-es/_getNative.js");const i=function(){try{var e=(0,o.Z)(Object,"defineProperty");return e({},"",{}),e}catch(e){}}()},"./node_modules/lodash-es/_freeGlobal.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o="object"==typeof global&&global&&global.Object===Object&&global},"./node_modules/lodash-es/_getAllKeys.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>n});var o=s("./node_modules/lodash-es/_baseGetAllKeys.js"),i=s("./node_modules/lodash-es/_getSymbols.js"),r=s("./node_modules/lodash-es/keys.js");const n=function(e){return(0,o.Z)(e,r.Z,i.Z)}},"./node_modules/lodash-es/_getNative.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>b});var o=s("./node_modules/lodash-es/isFunction.js");const i=s("./node_modules/lodash-es/_root.js").Z["__core-js_shared__"];var r,n=(r=/[^.]+$/.exec(i&&i.keys&&i.keys.IE_PROTO||""))?"Symbol(src)_1."+r:"";const a=function(e){return!!n&&n in e};var c=s("./node_modules/lodash-es/isObject.js"),l=s("./node_modules/lodash-es/_toSource.js"),d=/^\[object .+?Constructor\]$/,h=Function.prototype,u=Object.prototype,p=h.toString,g=u.hasOwnProperty,f=RegExp("^"+p.call(g).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");const m=function(e){return!(!(0,c.Z)(e)||a(e))&&((0,o.Z)(e)?f:d).test((0,l.Z)(e))};const k=function(e,t){return null==e?void 0:e[t]};const b=function(e,t){var s=k(e,t);return m(s)?s:void 0}},"./node_modules/lodash-es/_getPrototype.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o=(0,s("./node_modules/lodash-es/_overArg.js").Z)(Object.getPrototypeOf,Object)},"./node_modules/lodash-es/_getSymbols.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>a});const o=function(e,t){for(var s=-1,o=null==e?0:e.length,i=0,r=[];++s<o;){var n=e[s];t(n,s,e)&&(r[i++]=n)}return r};var i=s("./node_modules/lodash-es/stubArray.js"),r=Object.prototype.propertyIsEnumerable,n=Object.getOwnPropertySymbols;const a=n?function(e){return null==e?[]:(e=Object(e),o(n(e),(function(t){return r.call(e,t)})))}:i.Z},"./node_modules/lodash-es/_getTag.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>Z});var o=s("./node_modules/lodash-es/_getNative.js"),i=s("./node_modules/lodash-es/_root.js");const r=(0,o.Z)(i.Z,"DataView");var n=s("./node_modules/lodash-es/_Map.js");const a=(0,o.Z)(i.Z,"Promise");const c=(0,o.Z)(i.Z,"Set");const l=(0,o.Z)(i.Z,"WeakMap");var d=s("./node_modules/lodash-es/_baseGetTag.js"),h=s("./node_modules/lodash-es/_toSource.js"),u="[object Map]",p="[object Promise]",g="[object Set]",f="[object WeakMap]",m="[object DataView]",k=(0,h.Z)(r),b=(0,h.Z)(n.Z),_=(0,h.Z)(a),w=(0,h.Z)(c),v=(0,h.Z)(l),y=d.Z;(r&&y(new r(new ArrayBuffer(1)))!=m||n.Z&&y(new n.Z)!=u||a&&y(a.resolve())!=p||c&&y(new c)!=g||l&&y(new l)!=f)&&(y=function(e){var t=(0,d.Z)(e),s="[object Object]"==t?e.constructor:void 0,o=s?(0,h.Z)(s):"";if(o)switch(o){case k:return m;case b:return u;case _:return p;case w:return g;case v:return f}return t});const Z=y},"./node_modules/lodash-es/_initCloneObject.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>c});var o=s("./node_modules/lodash-es/isObject.js"),i=Object.create;const r=function(){function e(){}return function(t){if(!(0,o.Z)(t))return{};if(i)return i(t);e.prototype=t;var s=new e;return e.prototype=void 0,s}}();var n=s("./node_modules/lodash-es/_getPrototype.js"),a=s("./node_modules/lodash-es/_isPrototype.js");const c=function(e){return"function"!=typeof e.constructor||(0,a.Z)(e)?{}:r((0,n.Z)(e))}},"./node_modules/lodash-es/_isIndex.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=/^(?:0|[1-9]\d*)$/;const i=function(e,t){var s=typeof e;return!!(t=null==t?9007199254740991:t)&&("number"==s||"symbol"!=s&&o.test(e))&&e>-1&&e%1==0&&e<t}},"./node_modules/lodash-es/_isPrototype.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=Object.prototype;const i=function(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||o)}},"./node_modules/lodash-es/_nodeUtil.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>a});var o=s("./node_modules/lodash-es/_freeGlobal.js"),i="object"==typeof exports&&exports&&!exports.nodeType&&exports,r=i&&"object"==typeof module&&module&&!module.nodeType&&module,n=r&&r.exports===i&&o.Z.process;const a=function(){try{var e=r&&r.require&&r.require("util").types;return e||n&&n.binding&&n.binding("util")}catch(e){}}()},"./node_modules/lodash-es/_overArg.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o=function(e,t){return function(s){return e(t(s))}}},"./node_modules/lodash-es/_root.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/lodash-es/_freeGlobal.js"),i="object"==typeof self&&self&&self.Object===Object&&self;const r=o.Z||i||Function("return this")()},"./node_modules/lodash-es/_toSource.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=Function.prototype.toString;const i=function(e){if(null!=e){try{return o.call(e)}catch(e){}try{return e+""}catch(e){}}return""}},"./node_modules/lodash-es/assignIn.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>n});var o=s("./node_modules/lodash-es/_copyObject.js"),i=s("./node_modules/lodash-es/_createAssigner.js"),r=s("./node_modules/lodash-es/keysIn.js");const n=(0,i.Z)((function(e,t){(0,o.Z)(t,(0,r.Z)(t),e)}))},"./node_modules/lodash-es/clone.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./node_modules/lodash-es/_baseClone.js");const i=function(e){return(0,o.Z)(e,4)}},"./node_modules/lodash-es/cloneDeep.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./node_modules/lodash-es/_baseClone.js");const i=function(e){return(0,o.Z)(e,5)}},"./node_modules/lodash-es/cloneDeepWith.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./node_modules/lodash-es/_baseClone.js");const i=function(e,t){return t="function"==typeof t?t:void 0,(0,o.Z)(e,5,t)}},"./node_modules/lodash-es/debounce.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>b});var o=s("./node_modules/lodash-es/isObject.js"),i=s("./node_modules/lodash-es/_root.js");const r=function(){return i.Z.Date.now()};var n=/\s/;const a=function(e){for(var t=e.length;t--&&n.test(e.charAt(t)););return t};var c=/^\s+/;const l=function(e){return e?e.slice(0,a(e)+1).replace(c,""):e};var d=s("./node_modules/lodash-es/isSymbol.js"),h=/^[-+]0x[0-9a-f]+$/i,u=/^0b[01]+$/i,p=/^0o[0-7]+$/i,g=parseInt;const f=function(e){if("number"==typeof e)return e;if((0,d.Z)(e))return NaN;if((0,o.Z)(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=(0,o.Z)(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=l(e);var s=u.test(e);return s||p.test(e)?g(e.slice(2),s?2:8):h.test(e)?NaN:+e};var m=Math.max,k=Math.min;const b=function(e,t,s){var i,n,a,c,l,d,h=0,u=!1,p=!1,g=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function b(t){var s=i,o=n;return i=n=void 0,h=t,c=e.apply(o,s)}function _(e){return h=e,l=setTimeout(v,t),u?b(e):c}function w(e){var s=e-d;return void 0===d||s>=t||s<0||p&&e-h>=a}function v(){var e=r();if(w(e))return y(e);l=setTimeout(v,function(e){var s=t-(e-d);return p?k(s,a-(e-h)):s}(e))}function y(e){return l=void 0,g&&i?b(e):(i=n=void 0,c)}function Z(){var e=r(),s=w(e);if(i=arguments,n=this,d=e,s){if(void 0===l)return _(d);if(p)return clearTimeout(l),l=setTimeout(v,t),b(d)}return void 0===l&&(l=setTimeout(v,t)),c}return t=f(t)||0,(0,o.Z)(s)&&(u=!!s.leading,a=(p="maxWait"in s)?m(f(s.maxWait)||0,t):a,g="trailing"in s?!!s.trailing:g),Z.cancel=function(){void 0!==l&&clearTimeout(l),h=0,i=d=n=l=void 0},Z.flush=function(){return void 0===l?c:y(r())},Z}},"./node_modules/lodash-es/eq.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o=function(e,t){return e===t||e!=e&&t!=t}},"./node_modules/lodash-es/isArguments.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>l});var o=s("./node_modules/lodash-es/_baseGetTag.js"),i=s("./node_modules/lodash-es/isObjectLike.js");const r=function(e){return(0,i.Z)(e)&&"[object Arguments]"==(0,o.Z)(e)};var n=Object.prototype,a=n.hasOwnProperty,c=n.propertyIsEnumerable;const l=r(function(){return arguments}())?r:function(e){return(0,i.Z)(e)&&a.call(e,"callee")&&!c.call(e,"callee")}},"./node_modules/lodash-es/isArray.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o=Array.isArray},"./node_modules/lodash-es/isArrayLike.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/lodash-es/isFunction.js"),i=s("./node_modules/lodash-es/isLength.js");const r=function(e){return null!=e&&(0,i.Z)(e.length)&&!(0,o.Z)(e)}},"./node_modules/lodash-es/isBuffer.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>c});var o=s("./node_modules/lodash-es/_root.js");const i=function(){return!1};var r="object"==typeof exports&&exports&&!exports.nodeType&&exports,n=r&&"object"==typeof module&&module&&!module.nodeType&&module,a=n&&n.exports===r?o.Z.Buffer:void 0;const c=(a?a.isBuffer:void 0)||i},"./node_modules/lodash-es/isElement.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/lodash-es/isObjectLike.js"),i=s("./node_modules/lodash-es/isPlainObject.js");const r=function(e){return(0,o.Z)(e)&&1===e.nodeType&&!(0,i.Z)(e)}},"./node_modules/lodash-es/isFunction.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/lodash-es/_baseGetTag.js"),i=s("./node_modules/lodash-es/isObject.js");const r=function(e){if(!(0,i.Z)(e))return!1;var t=(0,o.Z)(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}},"./node_modules/lodash-es/isLength.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o=function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}},"./node_modules/lodash-es/isObject.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},"./node_modules/lodash-es/isObjectLike.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o=function(e){return null!=e&&"object"==typeof e}},"./node_modules/lodash-es/isPlainObject.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>h});var o=s("./node_modules/lodash-es/_baseGetTag.js"),i=s("./node_modules/lodash-es/_getPrototype.js"),r=s("./node_modules/lodash-es/isObjectLike.js"),n=Function.prototype,a=Object.prototype,c=n.toString,l=a.hasOwnProperty,d=c.call(Object);const h=function(e){if(!(0,r.Z)(e)||"[object Object]"!=(0,o.Z)(e))return!1;var t=(0,i.Z)(e);if(null===t)return!0;var s=l.call(t,"constructor")&&t.constructor;return"function"==typeof s&&s instanceof s&&c.call(s)==d}},"./node_modules/lodash-es/isSymbol.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/lodash-es/_baseGetTag.js"),i=s("./node_modules/lodash-es/isObjectLike.js");const r=function(e){return"symbol"==typeof e||(0,i.Z)(e)&&"[object Symbol]"==(0,o.Z)(e)}},"./node_modules/lodash-es/isTypedArray.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>h});var o=s("./node_modules/lodash-es/_baseGetTag.js"),i=s("./node_modules/lodash-es/isLength.js"),r=s("./node_modules/lodash-es/isObjectLike.js"),n={};n["[object Float32Array]"]=n["[object Float64Array]"]=n["[object Int8Array]"]=n["[object Int16Array]"]=n["[object Int32Array]"]=n["[object Uint8Array]"]=n["[object Uint8ClampedArray]"]=n["[object Uint16Array]"]=n["[object Uint32Array]"]=!0,n["[object Arguments]"]=n["[object Array]"]=n["[object ArrayBuffer]"]=n["[object Boolean]"]=n["[object DataView]"]=n["[object Date]"]=n["[object Error]"]=n["[object Function]"]=n["[object Map]"]=n["[object Number]"]=n["[object Object]"]=n["[object RegExp]"]=n["[object Set]"]=n["[object String]"]=n["[object WeakMap]"]=!1;const a=function(e){return(0,r.Z)(e)&&(0,i.Z)(e.length)&&!!n[(0,o.Z)(e)]};var c=s("./node_modules/lodash-es/_baseUnary.js"),l=s("./node_modules/lodash-es/_nodeUtil.js"),d=l.Z&&l.Z.isTypedArray;const h=d?(0,c.Z)(d):a},"./node_modules/lodash-es/keys.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>l});var o=s("./node_modules/lodash-es/_arrayLikeKeys.js"),i=s("./node_modules/lodash-es/_isPrototype.js");const r=(0,s("./node_modules/lodash-es/_overArg.js").Z)(Object.keys,Object);var n=Object.prototype.hasOwnProperty;const a=function(e){if(!(0,i.Z)(e))return r(e);var t=[];for(var s in Object(e))n.call(e,s)&&"constructor"!=s&&t.push(s);return t};var c=s("./node_modules/lodash-es/isArrayLike.js");const l=function(e){return(0,c.Z)(e)?(0,o.Z)(e):a(e)}},"./node_modules/lodash-es/keysIn.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>d});var o=s("./node_modules/lodash-es/_arrayLikeKeys.js"),i=s("./node_modules/lodash-es/isObject.js"),r=s("./node_modules/lodash-es/_isPrototype.js");const n=function(e){var t=[];if(null!=e)for(var s in Object(e))t.push(s);return t};var a=Object.prototype.hasOwnProperty;const c=function(e){if(!(0,i.Z)(e))return n(e);var t=(0,r.Z)(e),s=[];for(var o in e)("constructor"!=o||!t&&a.call(e,o))&&s.push(o);return s};var l=s("./node_modules/lodash-es/isArrayLike.js");const d=function(e){return(0,l.Z)(e)?(0,o.Z)(e,!0):c(e)}},"./node_modules/lodash-es/stubArray.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o=function(){return[]}},"./node_modules/lodash-es/throttle.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/lodash-es/debounce.js"),i=s("./node_modules/lodash-es/isObject.js");const r=function(e,t,s){var r=!0,n=!0;if("function"!=typeof e)throw new TypeError("Expected a function");return(0,i.Z)(s)&&(r="leading"in s?!!s.leading:r,n="trailing"in s?!!s.trailing:n),(0,o.Z)(e,t,{leading:r,maxWait:t,trailing:n})}},"./node_modules/lodash-es/toString.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>d});var o=s("./node_modules/lodash-es/_Symbol.js");const i=function(e,t){for(var s=-1,o=null==e?0:e.length,i=Array(o);++s<o;)i[s]=t(e[s],s,e);return i};var r=s("./node_modules/lodash-es/isArray.js"),n=s("./node_modules/lodash-es/isSymbol.js"),a=o.Z?o.Z.prototype:void 0,c=a?a.toString:void 0;const l=function e(t){if("string"==typeof t)return t;if((0,r.Z)(t))return i(t,e)+"";if((0,n.Z)(t))return c?c.call(t):"";var s=t+"";return"0"==s&&1/t==-Infinity?"-0":s};const d=function(e){return null==e?"":l(e)}}},t={};function s(o){var i=t[o];if(void 0!==i)return i.exports;var r=t[o]={id:o,exports:{}};return e[o](r,r.exports,s),r.exports}s.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return s.d(t,{a:t}),t},s.d=(e,t)=>{for(var o in t)s.o(t,o)&&!s.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},s.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),s.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),s.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.nc=void 0;var o=s("?7cdd");(window.CKEditor5=window.CKEditor5||{}).dll=o})(),function(e){e.CKEditor5=e.CKEditor5||{};const t=["utils","core","engine","ui","clipboard","enter","paragraph","select-all","typing","undo","upload","widget"];for(const s of t){const t=s.replace(/-([a-z])/g,((e,t)=>t.toUpperCase()));e.CKEditor5[t]=e.CKEditor5.dll(`./src/${s}.js`)}}(window);
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ar.js b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ar.js
index 6593d30edf..478c6b8361 100644
--- a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ar.js
+++ b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ar.js
@@ -1 +1 @@
-!function(o){const e=o.ar=o.ar||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 من %1",Aquamarine:"أخضر زبرجد",Black:"أسود",Blue:"أزرق",Cancel:"إلغاء","Cannot upload file:":"لا يمكن رفع الملف:","Dim grey":"رمادي خافت","Dropdown toolbar":"شريط أدوات القائمة المنسدلة","Edit block":"كتلة التحرير","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"منطقة تحرير المحرر: %0","Editor toolbar":"شريط أدوات المحرر",Green:"أخضر",Grey:"رمادي","Insert paragraph after block":"إدراج فقرة بعد الكتلة","Insert paragraph before block":"إدراج فقرة قبل الكتلة","Light blue":"أزرق فاتح","Light green":"أخضر فاتح","Light grey":"رمادي فاتح",Next:"التالي",Orange:"برتقالي",Previous:"السابق",Purple:"أرجواني",Red:"أحمر",Redo:"إعادة","Remove color":"إزالة اللون","Restore default":"استعادة الافتراضي","Rich Text Editor":"معالج نصوص","Rich Text Editor. Editing area: %0":"محرر النصوص المنسّقة. منطقة التحرير: %0",Save:"حفظ","Select all":"تحديد الكل","Show more items":"عرض المزيد من العناصر",Turquoise:"فيروزي",Undo:"تراجع","Upload in progress":"جاري الرفع",White:"أبيض","Widget toolbar":"شريط أدوات الواجهة",Yellow:"أصفر"}),e.getPluralForm=function(o){return 0==o?0:1==o?1:2==o?2:o%100>=3&&o%100<=10?3:o%100>=11&&o%100<=99?4:5}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(o){const e=o.ar=o.ar||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 من %1",Aquamarine:"أخضر زبرجد",Black:"أسود",Blue:"أزرق",Cancel:"إلغاء","Cannot upload file:":"لا يمكن رفع الملف:","Dim grey":"رمادي خافت","Dropdown toolbar":"شريط أدوات القائمة المنسدلة","Edit block":"كتلة التحرير","Editor block content toolbar":"شريط المحرر لأدوات كتلة المحتوى","Editor contextual toolbar":"شريط المحرر للأدوات السياقية","Editor editing area: %0":"منطقة تحرير المحرر: %0","Editor toolbar":"شريط أدوات المحرر",Green:"أخضر",Grey:"رمادي","Insert paragraph after block":"إدراج فقرة بعد الكتلة","Insert paragraph before block":"إدراج فقرة قبل الكتلة","Light blue":"أزرق فاتح","Light green":"أخضر فاتح","Light grey":"رمادي فاتح",Next:"التالي",Orange:"برتقالي",Previous:"السابق",Purple:"أرجواني",Red:"أحمر",Redo:"إعادة","Remove color":"إزالة اللون","Restore default":"استعادة الافتراضي","Rich Text Editor":"معالج نصوص","Rich Text Editor. Editing area: %0":"محرر النصوص المنسّقة. منطقة التحرير: %0",Save:"حفظ","Select all":"تحديد الكل","Show more items":"عرض المزيد من العناصر",Turquoise:"فيروزي",Undo:"تراجع","Upload in progress":"جاري الرفع",White:"أبيض","Widget toolbar":"شريط أدوات الواجهة",Yellow:"أصفر"}),e.getPluralForm=function(o){return 0==o?0:1==o?1:2==o?2:o%100>=3&&o%100<=10?3:o%100>=11&&o%100<=99?4:5}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/bg.js b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/bg.js
index 1087a23d07..b6e49fdaaa 100644
--- a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/bg.js
+++ b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/bg.js
@@ -1 +1 @@
-!function(o){const e=o.bg=o.bg||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 от %1",Aquamarine:"Аквамарин",Black:"Черен",Blue:"Син",Cancel:"Отказ","Cannot upload file:":"Не може да качи файл:","Dim grey":"Тъмно сив","Dropdown toolbar":"Лента с падащо меню","Edit block":"Редактирай блок","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Зона за редактиране на редактора: %0","Editor toolbar":"Лента за редакция",Green:"Зелен",Grey:"Сив","Insert paragraph after block":"Въведи параграф след блока","Insert paragraph before block":"Въведи параграф преди блока","Light blue":"Светло син","Light green":"Светло зелен","Light grey":"Светло сив",Next:"Следващ",Orange:"Оранжев",Previous:"Предишен",Purple:"Лилав",Red:"Червен",Redo:"Повтори","Remove color":"Премахни цвят","Restore default":"Възстанови първоначалните настройки","Rich Text Editor":"Богат текстов редактор","Rich Text Editor. Editing area: %0":"Rich Text Editor. Зона за редактиране: %0",Save:"Запазване","Select all":"Избери всички","Show more items":"Покажи повече единици",Turquoise:"Тюркоазен",Undo:"Отмени","Upload in progress":"Качването е в процес",White:"Бял","Widget toolbar":"Лента с помощни средства",Yellow:"Жълт"}),e.getPluralForm=function(o){return 1!=o}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(o){const e=o.bg=o.bg||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 от %1",Aquamarine:"Аквамарин",Black:"Черен",Blue:"Син",Cancel:"Отказ","Cannot upload file:":"Не може да качи файл:","Dim grey":"Тъмно сив","Dropdown toolbar":"Лента с падащо меню","Edit block":"Редактирай блок","Editor block content toolbar":"Лента с инструменти за блокиране на съдържанието на редактора","Editor contextual toolbar":"Контекстна лента с инструменти на редактора","Editor editing area: %0":"Зона за редактиране на редактора: %0","Editor toolbar":"Лента за редакция",Green:"Зелен",Grey:"Сив","Insert paragraph after block":"Въведи параграф след блока","Insert paragraph before block":"Въведи параграф преди блока","Light blue":"Светло син","Light green":"Светло зелен","Light grey":"Светло сив",Next:"Следващ",Orange:"Оранжев",Previous:"Предишен",Purple:"Лилав",Red:"Червен",Redo:"Повтори","Remove color":"Премахни цвят","Restore default":"Възстанови първоначалните настройки","Rich Text Editor":"Богат текстов редактор","Rich Text Editor. Editing area: %0":"Rich Text Editor. Зона за редактиране: %0",Save:"Запазване","Select all":"Избери всички","Show more items":"Покажи повече единици",Turquoise:"Тюркоазен",Undo:"Отмени","Upload in progress":"Качването е в процес",White:"Бял","Widget toolbar":"Лента с помощни средства",Yellow:"Жълт"}),e.getPluralForm=function(o){return 1!=o}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/bn.js b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/bn.js
index 740eb37529..31939d3632 100644
--- a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/bn.js
+++ b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/bn.js
@@ -1 +1 @@
-!function(o){const e=o.bn=o.bn||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 এর %1",Aquamarine:"ফেকাশে সবুজবর্ণ",Black:"কালো",Blue:"নীল ",Cancel:"বাতিল করুন","Cannot upload file:":"ফাইল আপলোড করা যাবে নাঃ","Dim grey":"আবছা ধূসর","Dropdown toolbar":"ড্রপডাউন টুলবার","Edit block":"এডিট ব্লক","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"সম্পাদক সম্পাদনার ক্ষেত্র: %0","Editor toolbar":"সম্পাদক টুলবার",Green:"সবুজ",Grey:"ধূসর","Insert paragraph after block":"ব্লকের পর অনুচ্ছেদ ঢোকান","Insert paragraph before block":"ব্লক করার আগে অনুচ্ছেদ ঢোকান","Light blue":"হালকা নীল","Light green":"হালকা সবুজ","Light grey":"হালকা ধূসর",Next:"পরবর্তী",Orange:"কমলা",Previous:"পূর্ববর্তী",Purple:"বেগুনি",Red:"লাল",Redo:"রেডো","Remove color":"রং মুছে ফেলুন","Restore default":"পূর্বাবস্থায় ফিরিয়ে আনুন","Rich Text Editor":"রিচ টেক্সট এডিটর","Rich Text Editor. Editing area: %0":"রিচ টেক্সট এডিটর। সম্পাদনার ক্ষেত্র: %0",Save:"সংরক্ষণ করুন","Select all":"সব নির্বাচন করুন","Show more items":"আরও আইটেম দেখান",Turquoise:"ফিরোজা",Undo:"পূর্বাবস্থায় ফেরান","Upload in progress":"আপলোড চলছে",White:"সাদা","Widget toolbar":"উইজেট টুলবার",Yellow:"হলুদ "}),e.getPluralForm=function(o){return 1!=o}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(o){const e=o.bn=o.bn||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 এর %1",Aquamarine:"ফেকাশে সবুজবর্ণ",Black:"কালো",Blue:"নীল ",Cancel:"বাতিল করুন","Cannot upload file:":"ফাইল আপলোড করা যাবে নাঃ","Dim grey":"আবছা ধূসর","Dropdown toolbar":"ড্রপডাউন টুলবার","Edit block":"এডিট ব্লক","Editor block content toolbar":"সম্পাদক ব্লক কন্টেন্ট টুলবার","Editor contextual toolbar":"সম্পাদক প্রাসঙ্গিক টুলবার","Editor editing area: %0":"সম্পাদক সম্পাদনার ক্ষেত্র: %0","Editor toolbar":"সম্পাদক টুলবার",Green:"সবুজ",Grey:"ধূসর","Insert paragraph after block":"ব্লকের পর অনুচ্ছেদ ঢোকান","Insert paragraph before block":"ব্লক করার আগে অনুচ্ছেদ ঢোকান","Light blue":"হালকা নীল","Light green":"হালকা সবুজ","Light grey":"হালকা ধূসর",Next:"পরবর্তী",Orange:"কমলা",Previous:"পূর্ববর্তী",Purple:"বেগুনি",Red:"লাল",Redo:"রেডো","Remove color":"রং মুছে ফেলুন","Restore default":"পূর্বাবস্থায় ফিরিয়ে আনুন","Rich Text Editor":"রিচ টেক্সট এডিটর","Rich Text Editor. Editing area: %0":"রিচ টেক্সট এডিটর। সম্পাদনার ক্ষেত্র: %0",Save:"সংরক্ষণ করুন","Select all":"সব নির্বাচন করুন","Show more items":"আরও আইটেম দেখান",Turquoise:"ফিরোজা",Undo:"পূর্বাবস্থায় ফেরান","Upload in progress":"আপলোড চলছে",White:"সাদা","Widget toolbar":"উইজেট টুলবার",Yellow:"হলুদ "}),e.getPluralForm=function(o){return 1!=o}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ca.js b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ca.js
index 215a5cc2b2..9155ed5086 100644
--- a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ca.js
+++ b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ca.js
@@ -1 +1 @@
-!function(e){const r=e.ca=e.ca||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"%0 de %1",Aquamarine:"Aiguamarina",Black:"Negre",Blue:"Blau",Cancel:"Cancel·lar","Cannot upload file:":"No es pot pujar l'arxiu:","Dim grey":"Gris fosc","Dropdown toolbar":"Barra d'eines desplegable","Edit block":"Editar bloc","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Àrea d'edició d'editor: %0","Editor toolbar":"Barra d'eines de l'editor",Green:"Verd",Grey:"Gris","Insert paragraph after block":"Inserir un paràgraf després del bloc","Insert paragraph before block":"Inserir un paràgraf abans del bloc","Light blue":"Blau clar","Light green":"Verd clar","Light grey":"Gris clar",Next:"Següent",Orange:"Taronja",Previous:"Anterior",Purple:"Lila",Red:"Vermell",Redo:"Refer","Remove color":"Eliminar el color","Restore default":"Restaurar el valor predeterminat","Rich Text Editor":"Editor de text enriquit","Rich Text Editor. Editing area: %0":"Editor de text enriquit. Àrea d'edició: %0",Save:"Desar","Select all":"Seleccionar-ho tot","Show more items":"Mostrar més elements",Turquoise:"Turquesa",Undo:"Desfer","Upload in progress":"Carrega en curs",White:"Blanc","Widget toolbar":"Barra d'eines de ginys",Yellow:"Groc"}),r.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(e){const r=e.ca=e.ca||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"%0 de %1",Aquamarine:"Aiguamarina",Black:"Negre",Blue:"Blau",Cancel:"Cancel·lar","Cannot upload file:":"No es pot pujar l'arxiu:","Dim grey":"Gris fosc","Dropdown toolbar":"Barra d'eines desplegable","Edit block":"Editar bloc","Editor block content toolbar":"Barra d'eines de contingut del bloc de l'editor","Editor contextual toolbar":"Barra d'eines contextual de l'editor","Editor editing area: %0":"Àrea d'edició d'editor: %0","Editor toolbar":"Barra d'eines de l'editor",Green:"Verd",Grey:"Gris","Insert paragraph after block":"Inserir un paràgraf després del bloc","Insert paragraph before block":"Inserir un paràgraf abans del bloc","Light blue":"Blau clar","Light green":"Verd clar","Light grey":"Gris clar",Next:"Següent",Orange:"Taronja",Previous:"Anterior",Purple:"Lila",Red:"Vermell",Redo:"Refer","Remove color":"Eliminar el color","Restore default":"Restaurar el valor predeterminat","Rich Text Editor":"Editor de text enriquit","Rich Text Editor. Editing area: %0":"Editor de text enriquit. Àrea d'edició: %0",Save:"Desar","Select all":"Seleccionar-ho tot","Show more items":"Mostrar més elements",Turquoise:"Turquesa",Undo:"Desfer","Upload in progress":"Carrega en curs",White:"Blanc","Widget toolbar":"Barra d'eines de ginys",Yellow:"Groc"}),r.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/cs.js b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/cs.js
index 45caf02d33..79759a7000 100644
--- a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/cs.js
+++ b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/cs.js
@@ -1 +1 @@
-!function(o){const e=o.cs=o.cs||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 z %1",Aquamarine:"Akvamarínová",Black:"Černá",Blue:"Modrá",Cancel:"Zrušit","Cannot upload file:":"Soubor nelze nahrát:","Dim grey":"Tmavě šedá","Dropdown toolbar":"Rozbalovací panel nástrojů","Edit block":"Upravit blok","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Editační oblast editoru: %0","Editor toolbar":"Panel nástrojů editoru",Green:"Zelená",Grey:"Šedá","Insert paragraph after block":"Vložte odstavec za blok","Insert paragraph before block":"Vložte odstavec před blok","Light blue":"Světle modrá","Light green":"Světle zelená","Light grey":"Světle šedá",Next:"Další",Orange:"Oranžová",Previous:"Předchozí",Purple:"Fialová",Red:"Červená",Redo:"Znovu","Remove color":"Odstranit barvu","Restore default":"Obnovit výchozí","Rich Text Editor":"Textový editor","Rich Text Editor. Editing area: %0":"Editační oblast rich text editoru: %0",Save:"Uložit","Select all":"Vybrat vše","Show more items":"Zobrazit další položky",Turquoise:"Tyrkysová",Undo:"Zpět","Upload in progress":"Probíhá nahrávání",White:"Bílá","Widget toolbar":"Panel nástrojů ovládacího prvku",Yellow:"Žlutá"}),e.getPluralForm=function(o){return 1==o&&o%1==0?0:o>=2&&o<=4&&o%1==0?1:o%1!=0?2:3}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(o){const e=o.cs=o.cs||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 z %1",Aquamarine:"Akvamarínová",Black:"Černá",Blue:"Modrá",Cancel:"Zrušit","Cannot upload file:":"Soubor nelze nahrát:","Dim grey":"Tmavě šedá","Dropdown toolbar":"Rozbalovací panel nástrojů","Edit block":"Upravit blok","Editor block content toolbar":"Panel nástrojů obsahu bloku editoru","Editor contextual toolbar":"Kontextový panel nástrojů editoru","Editor editing area: %0":"Editační oblast editoru: %0","Editor toolbar":"Panel nástrojů editoru",Green:"Zelená",Grey:"Šedá","Insert paragraph after block":"Vložte odstavec za blok","Insert paragraph before block":"Vložte odstavec před blok","Light blue":"Světle modrá","Light green":"Světle zelená","Light grey":"Světle šedá",Next:"Další",Orange:"Oranžová",Previous:"Předchozí",Purple:"Fialová",Red:"Červená",Redo:"Znovu","Remove color":"Odstranit barvu","Restore default":"Obnovit výchozí","Rich Text Editor":"Textový editor","Rich Text Editor. Editing area: %0":"Editační oblast rich text editoru: %0",Save:"Uložit","Select all":"Vybrat vše","Show more items":"Zobrazit další položky",Turquoise:"Tyrkysová",Undo:"Zpět","Upload in progress":"Probíhá nahrávání",White:"Bílá","Widget toolbar":"Panel nástrojů ovládacího prvku",Yellow:"Žlutá"}),e.getPluralForm=function(o){return 1==o&&o%1==0?0:o>=2&&o<=4&&o%1==0?1:o%1!=0?2:3}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/da.js b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/da.js
index a2f701288b..e4d1baecfd 100644
--- a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/da.js
+++ b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/da.js
@@ -1 +1 @@
-!function(e){const r=e.da=e.da||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"%0 af %1",Aquamarine:"Marineblå",Black:"Sort",Blue:"Blå",Cancel:"Annullér","Cannot upload file:":"Kan ikke uploade fil:","Dim grey":"Dunkel grå","Dropdown toolbar":"Dropdown værktøjslinje","Edit block":"Redigér blok","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Redigeringsområde: %0","Editor toolbar":"Editor værktøjslinje",Green:"Grøn",Grey:"Grå","Insert paragraph after block":"Indsæt paragraf efter blok","Insert paragraph before block":"Indsæt paragraf før blok","Light blue":"Lys blå","Light green":"Lys grøn","Light grey":"Lys grå",Next:"Næste",Orange:"Orange",Previous:"Forrige",Purple:"Lilla",Red:"Rød",Redo:"Gentag","Remove color":"Fjern farve","Restore default":"Nulstil","Rich Text Editor":"Wysiwyg editor","Rich Text Editor. Editing area: %0":"Rich text redigering. Redigeringsområde: %0",Save:"Gem","Select all":"Vælg alt","Show more items":"Vis flere emner",Turquoise:"Turkis",Undo:"Fortryd","Upload in progress":"Upload i gang",White:"Hvid","Widget toolbar":"Widget værktøjslinje",Yellow:"Gyl"}),r.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(e){const r=e.da=e.da||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"%0 af %1",Aquamarine:"Marineblå",Black:"Sort",Blue:"Blå",Cancel:"Annullér","Cannot upload file:":"Kan ikke uploade fil:","Dim grey":"Dunkel grå","Dropdown toolbar":"Dropdown værktøjslinje","Edit block":"Redigér blok","Editor block content toolbar":"Redigeringskasse indholdsværktøjslinje","Editor contextual toolbar":"Kontekstuel værktøjslinje til redigeringsprogram","Editor editing area: %0":"Redigeringsområde: %0","Editor toolbar":"Editor værktøjslinje",Green:"Grøn",Grey:"Grå","Insert paragraph after block":"Indsæt paragraf efter blok","Insert paragraph before block":"Indsæt paragraf før blok","Light blue":"Lys blå","Light green":"Lys grøn","Light grey":"Lys grå",Next:"Næste",Orange:"Orange",Previous:"Forrige",Purple:"Lilla",Red:"Rød",Redo:"Gentag","Remove color":"Fjern farve","Restore default":"Nulstil","Rich Text Editor":"Wysiwyg editor","Rich Text Editor. Editing area: %0":"Rich text redigering. Redigeringsområde: %0",Save:"Gem","Select all":"Vælg alt","Show more items":"Vis flere emner",Turquoise:"Turkis",Undo:"Fortryd","Upload in progress":"Upload i gang",White:"Hvid","Widget toolbar":"Widget værktøjslinje",Yellow:"Gyl"}),r.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/de.js b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/de.js
index 589d2c4f8c..010a424c40 100644
--- a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/de.js
+++ b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/de.js
@@ -1 +1 @@
-!function(e){const r=e.de=e.de||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"%0 von %1",Aquamarine:"Aquamarinblau",Black:"Schwarz",Blue:"Blau",Cancel:"Abbrechen","Cannot upload file:":"Die Datei kann nicht hochgeladen werden:","Dim grey":"Dunkelgrau","Dropdown toolbar":"Dropdown-Liste Werkzeugleiste","Edit block":"Absatz bearbeiten","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Bearbeitungsbereich des Editors: %0","Editor toolbar":"Editor Werkzeugleiste",Green:"Grün",Grey:"Grau","Insert paragraph after block":"Absatz nach Block einfügen","Insert paragraph before block":"Absatz vor Block einfügen","Light blue":"Hellblau","Light green":"Hellgrün","Light grey":"Hellgrau",Next:"Nächste",Orange:"Orange",Previous:"vorherige",Purple:"Violett",Red:"Rot",Redo:"Wiederherstellen","Remove color":"Farbe entfernen","Restore default":"Standard wiederherstellen","Rich Text Editor":"Rich Text Editor","Rich Text Editor. Editing area: %0":"Rich Text Editor. Bearbeitungsbereich: %0",Save:"Speichern","Select all":"Alles auswählen","Show more items":"Mehr anzeigen",Turquoise:"Türkis",Undo:"Rückgängig","Upload in progress":"Upload läuft",White:"Weiß","Widget toolbar":"Widget Werkzeugleiste",Yellow:"Gelb"}),r.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(e){const r=e.de=e.de||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"%0 von %1",Aquamarine:"Aquamarinblau",Black:"Schwarz",Blue:"Blau",Cancel:"Abbrechen","Cannot upload file:":"Die Datei kann nicht hochgeladen werden:","Dim grey":"Dunkelgrau","Dropdown toolbar":"Dropdown-Liste Werkzeugleiste","Edit block":"Absatz bearbeiten","Editor block content toolbar":"Editor Blockinhalt-Toolbar","Editor contextual toolbar":"Editor kontextuelle Toolbar","Editor editing area: %0":"Bearbeitungsbereich des Editors: %0","Editor toolbar":"Editor Werkzeugleiste",Green:"Grün",Grey:"Grau","Insert paragraph after block":"Absatz nach Block einfügen","Insert paragraph before block":"Absatz vor Block einfügen","Light blue":"Hellblau","Light green":"Hellgrün","Light grey":"Hellgrau",Next:"Nächste",Orange:"Orange",Previous:"vorherige",Purple:"Violett",Red:"Rot",Redo:"Wiederherstellen","Remove color":"Farbe entfernen","Restore default":"Standard wiederherstellen","Rich Text Editor":"Rich Text Editor","Rich Text Editor. Editing area: %0":"Rich Text Editor. Bearbeitungsbereich: %0",Save:"Speichern","Select all":"Alles auswählen","Show more items":"Mehr anzeigen",Turquoise:"Türkis",Undo:"Rückgängig","Upload in progress":"Upload läuft",White:"Weiß","Widget toolbar":"Widget Werkzeugleiste",Yellow:"Gelb"}),r.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/el.js b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/el.js
index 0993d4b294..9fd056da4e 100644
--- a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/el.js
+++ b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/el.js
@@ -1 +1 @@
-!function(e){const o=e.el=e.el||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"%0 από %1",Aquamarine:"Ακουαμαρίνα",Black:"Μαύρο",Blue:"Μπλε",Cancel:"Ακύρωση","Cannot upload file:":"Αδύνατη η αποστολή του αρχείου:","Dim grey":"Θολό γκρι","Dropdown toolbar":"Γραμμή εργαλείων αναδυόμενου μενού","Edit block":"Επεξεργασία τμήματος","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Περιοχή επεξεργασίας προγράμματος επεξεργασίας: %0","Editor toolbar":"Γραμμή εργαλείων επεξεργαστή",Green:"Πράσινο",Grey:"Γκρι","Insert paragraph after block":"Εισαγωγή παραγράφου μετά το τμήμα","Insert paragraph before block":"Εισαγωγή παραγράφου πριν το τμήμα","Light blue":"Φωτινό μπλε","Light green":"Φωτινό πράσινο","Light grey":"Φωτινό γκρι",Next:"Επόμενο",Orange:"Πορτοκαλί",Previous:"Προηγούμενο",Purple:"Πορφυρό",Red:"Κόκκινο",Redo:"Επανάληψη","Remove color":"Απομάκρυνση χρώματος","Restore default":"Επαναφορά προεπιλογής","Rich Text Editor":"Επεξεργαστής εμπλουτισμένου κειμένου","Rich Text Editor. Editing area: %0":"Πρόγραμμα επεξεργασίας εμπλουτισμένου κειμένου. Περιοχή επεξεργασίας: %0",Save:"Αποθήκευση","Select all":"Επιλογή όλων","Show more items":"Προβολή περισσότερων αντικειμένων",Turquoise:"Τιρκουάζ",Undo:"Αναίρεση","Upload in progress":"Αποστολή σε εξέλιξη",White:"Λευκό","Widget toolbar":"Γραμμή εργαλείων γραφικού στοιχείου",Yellow:"Κίτρινο"}),o.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(e){const o=e.el=e.el||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"%0 από %1",Aquamarine:"Ακουαμαρίνα",Black:"Μαύρο",Blue:"Μπλε",Cancel:"Ακύρωση","Cannot upload file:":"Αδύνατη η αποστολή του αρχείου:","Dim grey":"Θολό γκρι","Dropdown toolbar":"Γραμμή εργαλείων αναδυόμενου μενού","Edit block":"Επεξεργασία τμήματος","Editor block content toolbar":"Γραμμή εργαλείων επεξεργασίας περιεχομένου αποκλεισμού","Editor contextual toolbar":"Γραμμή εργαλείων επεξεργασίας συμφραζομένων","Editor editing area: %0":"Περιοχή επεξεργασίας προγράμματος επεξεργασίας: %0","Editor toolbar":"Γραμμή εργαλείων επεξεργαστή",Green:"Πράσινο",Grey:"Γκρι","Insert paragraph after block":"Εισαγωγή παραγράφου μετά το τμήμα","Insert paragraph before block":"Εισαγωγή παραγράφου πριν το τμήμα","Light blue":"Φωτινό μπλε","Light green":"Φωτινό πράσινο","Light grey":"Φωτινό γκρι",Next:"Επόμενο",Orange:"Πορτοκαλί",Previous:"Προηγούμενο",Purple:"Πορφυρό",Red:"Κόκκινο",Redo:"Επανάληψη","Remove color":"Απομάκρυνση χρώματος","Restore default":"Επαναφορά προεπιλογής","Rich Text Editor":"Επεξεργαστής εμπλουτισμένου κειμένου","Rich Text Editor. Editing area: %0":"Πρόγραμμα επεξεργασίας εμπλουτισμένου κειμένου. Περιοχή επεξεργασίας: %0",Save:"Αποθήκευση","Select all":"Επιλογή όλων","Show more items":"Προβολή περισσότερων αντικειμένων",Turquoise:"Τιρκουάζ",Undo:"Αναίρεση","Upload in progress":"Αποστολή σε εξέλιξη",White:"Λευκό","Widget toolbar":"Γραμμή εργαλείων γραφικού στοιχείου",Yellow:"Κίτρινο"}),o.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/es-co.js b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/es-co.js
new file mode 100644
index 0000000000..4a4034658d
--- /dev/null
+++ b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/es-co.js
@@ -0,0 +1 @@
+!function(e){const o=e["es-co"]=e["es-co"]||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"%0 de %1",Cancel:"Cancelar","Cannot upload file:":"No se pudo cargar el archivo:","Remove color":"Quitar color","Restore default":"Restaurar valores predeterminados","Rich Text Editor. Editing area: %0":"Editor de texto enriquecido. Área de edición: %0",Save:"Guardar","Show more items":"Mostrar más elementos","Upload in progress":"Carga en progreso"}),o.getPluralForm=function(e){return 1==e?0:0!=e&&e%1e6==0?1:2}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/es.js b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/es.js
index 64a911f3e7..3d3d16c199 100644
--- a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/es.js
+++ b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/es.js
@@ -1 +1 @@
-!function(e){const r=e.es=e.es||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"%0 de %1",Aquamarine:"Aguamarina",Black:"Negro",Blue:"Azul",Cancel:"Cancelar","Cannot upload file:":"No se pudo cargar el archivo:","Dim grey":"Gris Oscuro","Dropdown toolbar":"Barra de herramientas desplegable","Edit block":"Cuadro de edición","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Área de edición del editor: %0","Editor toolbar":"Barra de herramientas de edición",Green:"Verde",Grey:"Gris","Insert paragraph after block":"Insertar párrafo después del bloque","Insert paragraph before block":"Insertar párrafo antes del bloque","Light blue":"Azul Claro","Light green":"Verde Claro","Light grey":"Gris Claro",Next:"Siguiente",Orange:"Anaranjado",Previous:"Anterior",Purple:"Morado",Red:"Rojo",Redo:"Rehacer","Remove color":"Quitar color","Restore default":"Restaurar valores predeterminados","Rich Text Editor":"Editor de Texto Enriquecido","Rich Text Editor. Editing area: %0":"Editor de texto enriquecido. Área de edición: %0",Save:"Guardar","Select all":"Seleccionar todo","Show more items":"Mostrar más elementos",Turquoise:"Turquesa",Undo:"Deshacer","Upload in progress":"Subida en progreso",White:"Blanco","Widget toolbar":"Barra de herramientas del widget",Yellow:"Amarillo"}),r.getPluralForm=function(e){return 1==e?0:0!=e&&e%1e6==0?1:2}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(e){const r=e.es=e.es||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"%0 de %1",Aquamarine:"Aguamarina",Black:"Negro",Blue:"Azul",Cancel:"Cancelar","Cannot upload file:":"No se pudo cargar el archivo:","Dim grey":"Gris Oscuro","Dropdown toolbar":"Barra de herramientas desplegable","Edit block":"Cuadro de edición","Editor block content toolbar":"Barra de herramientas de contenido del bloque del editor","Editor contextual toolbar":"Barra de herramientas contextual del editor","Editor editing area: %0":"Área de edición del editor: %0","Editor toolbar":"Barra de herramientas de edición",Green:"Verde",Grey:"Gris","Insert paragraph after block":"Insertar párrafo después del bloque","Insert paragraph before block":"Insertar párrafo antes del bloque","Light blue":"Azul Claro","Light green":"Verde Claro","Light grey":"Gris Claro",Next:"Siguiente",Orange:"Anaranjado",Previous:"Anterior",Purple:"Morado",Red:"Rojo",Redo:"Rehacer","Remove color":"Quitar color","Restore default":"Restaurar valores predeterminados","Rich Text Editor":"Editor de Texto Enriquecido","Rich Text Editor. Editing area: %0":"Editor de texto enriquecido. Área de edición: %0",Save:"Guardar","Select all":"Seleccionar todo","Show more items":"Mostrar más elementos",Turquoise:"Turquesa",Undo:"Deshacer","Upload in progress":"Subida en progreso",White:"Blanco","Widget toolbar":"Barra de herramientas del widget",Yellow:"Amarillo"}),r.getPluralForm=function(e){return 1==e?0:0!=e&&e%1e6==0?1:2}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/et.js b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/et.js
index 69d31c3f71..8dc4981b48 100644
--- a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/et.js
+++ b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/et.js
@@ -1 +1 @@
-!function(e){const i=e.et=e.et||{};i.dictionary=Object.assign(i.dictionary||{},{"%0 of %1":"%0 / %1",Aquamarine:"Akvamariin",Black:"Must",Blue:"Sinine",Cancel:"Loobu","Cannot upload file:":"Faili ei suudeta üles laadida:","Dim grey":"Tumehall","Dropdown toolbar":"Avatav tööriistariba","Edit block":"Muuda plokki","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Redaktori redigeerimisala: %0","Editor toolbar":"Redaktori tööriistariba",Green:"Roheline",Grey:"Hall","Insert paragraph after block":"Sisesta lõik pärast plokki","Insert paragraph before block":"Sisesta lõik enne plokki","Light blue":"Helesinine","Light green":"Heleroheline","Light grey":"Helehall",Next:"Järgmine",Orange:"Oranž",Previous:"Eelmine",Purple:"Lilla",Red:"Punane",Redo:"Tee uuesti","Remove color":"Eemalda värv","Restore default":"Taasta algne","Rich Text Editor":"Tekstiredaktor","Rich Text Editor. Editing area: %0":"Rikastekstiredaktor. Redigeerimisala: %0",Save:"Salvesta","Select all":"Vali kõik","Show more items":"Näita veel",Turquoise:"Türkiis",Undo:"Võta tagasi","Upload in progress":"Üleslaadimine pooleli",White:"Valge","Widget toolbar":"Vidinate tööriistariba",Yellow:"Kollane"}),i.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(e){const i=e.et=e.et||{};i.dictionary=Object.assign(i.dictionary||{},{"%0 of %1":"%0 / %1",Aquamarine:"Akvamariin",Black:"Must",Blue:"Sinine",Cancel:"Loobu","Cannot upload file:":"Faili ei suudeta üles laadida:","Dim grey":"Tumehall","Dropdown toolbar":"Avatav tööriistariba","Edit block":"Muuda plokki","Editor block content toolbar":"Redigeerija ploki sisu tööriistariba","Editor contextual toolbar":"Redigeerija kontekstuaalne tööriistariba","Editor editing area: %0":"Redaktori redigeerimisala: %0","Editor toolbar":"Redaktori tööriistariba",Green:"Roheline",Grey:"Hall","Insert paragraph after block":"Sisesta lõik pärast plokki","Insert paragraph before block":"Sisesta lõik enne plokki","Light blue":"Helesinine","Light green":"Heleroheline","Light grey":"Helehall",Next:"Järgmine",Orange:"Oranž",Previous:"Eelmine",Purple:"Lilla",Red:"Punane",Redo:"Tee uuesti","Remove color":"Eemalda värv","Restore default":"Taasta algne","Rich Text Editor":"Tekstiredaktor","Rich Text Editor. Editing area: %0":"Rikastekstiredaktor. Redigeerimisala: %0",Save:"Salvesta","Select all":"Vali kõik","Show more items":"Näita veel",Turquoise:"Türkiis",Undo:"Võta tagasi","Upload in progress":"Üleslaadimine pooleli",White:"Valge","Widget toolbar":"Vidinate tööriistariba",Yellow:"Kollane"}),i.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/fi.js b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/fi.js
index a21d365295..1fcc91f501 100644
--- a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/fi.js
+++ b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/fi.js
@@ -1 +1 @@
-!function(a){const e=a.fi=a.fi||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 / %1",Aquamarine:"Akvamariini",Black:"Musta",Blue:"Sininen",Cancel:"Peruuta","Cannot upload file:":"Tiedostoa ei voitu ladata:","Dim grey":"Vaaleanharmaa","Dropdown toolbar":"Pudotusvalikon työkalupalkki","Edit block":"Muokkaa lohkoa","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Editorin muokkausalue: %0","Editor toolbar":"Editorin työkalupalkki",Green:"Vihreä",Grey:"Harmaa","Insert paragraph after block":"Liitä kappale lohkon jälkeen","Insert paragraph before block":"Liitä kappale ennen lohkoa","Light blue":"Vaaleansininen","Light green":"Vaaleanvihreä","Light grey":"Vaaleanharmaa",Next:"Seuraava",Orange:"Oranssi",Previous:"Edellinen",Purple:"Purppura",Red:"Punainen",Redo:"Tee uudelleen","Remove color":"Poista väri","Restore default":"Palauta oletus","Rich Text Editor":"Rikas tekstieditori","Rich Text Editor. Editing area: %0":"Tekstimuotoilueditori. Muokkausalue: %0",Save:"Tallenna","Select all":"Valitse kaikki","Show more items":"Näytä lisää toimintoja",Turquoise:"Turkoosi",Undo:"Peru","Upload in progress":"Lähetys käynnissä",White:"Valkoinen","Widget toolbar":"Widget-työkalupalkki",Yellow:"Keltainen"}),e.getPluralForm=function(a){return 1!=a}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(a){const i=a.fi=a.fi||{};i.dictionary=Object.assign(i.dictionary||{},{"%0 of %1":"%0 / %1",Aquamarine:"Akvamariini",Black:"Musta",Blue:"Sininen",Cancel:"Peruuta","Cannot upload file:":"Tiedostoa ei voitu ladata:","Dim grey":"Vaaleanharmaa","Dropdown toolbar":"Pudotusvalikon työkalupalkki","Edit block":"Muokkaa lohkoa","Editor block content toolbar":"Editorin lohkon sisällön työkalupalkki","Editor contextual toolbar":"Editorin kontekstuaalinen työkalupalkki","Editor editing area: %0":"Editorin muokkausalue: %0","Editor toolbar":"Editorin työkalupalkki",Green:"Vihreä",Grey:"Harmaa","Insert paragraph after block":"Liitä kappale lohkon jälkeen","Insert paragraph before block":"Liitä kappale ennen lohkoa","Light blue":"Vaaleansininen","Light green":"Vaaleanvihreä","Light grey":"Vaaleanharmaa",Next:"Seuraava",Orange:"Oranssi",Previous:"Edellinen",Purple:"Purppura",Red:"Punainen",Redo:"Tee uudelleen","Remove color":"Poista väri","Restore default":"Palauta oletus","Rich Text Editor":"Rikas tekstieditori","Rich Text Editor. Editing area: %0":"Tekstimuotoilueditori. Muokkausalue: %0",Save:"Tallenna","Select all":"Valitse kaikki","Show more items":"Näytä lisää toimintoja",Turquoise:"Turkoosi",Undo:"Peru","Upload in progress":"Lähetys käynnissä",White:"Valkoinen","Widget toolbar":"Widget-työkalupalkki",Yellow:"Keltainen"}),i.getPluralForm=function(a){return 1!=a}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/fr.js b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/fr.js
index 258ebeea04..25dbd4f6a8 100644
--- a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/fr.js
+++ b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/fr.js
@@ -1 +1 @@
-!function(e){const r=e.fr=e.fr||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"%0 sur %1",Aquamarine:"Bleu vert",Black:"Noir",Blue:"Bleu",Cancel:"Annuler","Cannot upload file:":"Envoi du fichier échoué :","Dim grey":"Gris pâle","Dropdown toolbar":"Barre d'outils dans un menu déroulant","Edit block":"Modifier le bloc","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Zone d'édition de l'éditeur : %0","Editor toolbar":"Barre d'outils de l'éditeur",Green:"Vert",Grey:"Gris","Insert paragraph after block":"Insérer du texte après ce bloc","Insert paragraph before block":"Insérer du texte avant ce bloc","Light blue":"Bleu clair","Light green":"Vert clair","Light grey":"Gris clair",Next:"Suivant",Orange:"Orange",Previous:"Précedent",Purple:"Violet",Red:"Rouge",Redo:"Restaurer","Remove color":"Enlever la couleur","Restore default":"Restaurer par défaut","Rich Text Editor":"Éditeur de texte enrichi","Rich Text Editor. Editing area: %0":"Éditeur de texte enrichi. Zone d'édition : %0",Save:"Enregistrer","Select all":"Sélectionner tout","Show more items":"Montrer plus d'éléments",Turquoise:"Turquoise",Undo:"Annuler","Upload in progress":"Téléchargement en cours",White:"Blanc","Widget toolbar":"Barre d'outils du widget",Yellow:"Jaune"}),r.getPluralForm=function(e){return 0==e||1==e?0:0!=e&&e%1e6==0?1:2}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(e){const r=e.fr=e.fr||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"%0 sur %1",Aquamarine:"Bleu vert",Black:"Noir",Blue:"Bleu",Cancel:"Annuler","Cannot upload file:":"Envoi du fichier échoué :","Dim grey":"Gris pâle","Dropdown toolbar":"Barre d'outils dans un menu déroulant","Edit block":"Modifier le bloc","Editor block content toolbar":"Barre d'outils du contenu du bloc éditeur","Editor contextual toolbar":"Barre d'outils contextuelle de l'éditeur","Editor editing area: %0":"Zone d'édition de l'éditeur : %0","Editor toolbar":"Barre d'outils de l'éditeur",Green:"Vert",Grey:"Gris","Insert paragraph after block":"Insérer du texte après ce bloc","Insert paragraph before block":"Insérer du texte avant ce bloc","Light blue":"Bleu clair","Light green":"Vert clair","Light grey":"Gris clair",Next:"Suivant",Orange:"Orange",Previous:"Précedent",Purple:"Violet",Red:"Rouge",Redo:"Restaurer","Remove color":"Enlever la couleur","Restore default":"Restaurer par défaut","Rich Text Editor":"Éditeur de texte enrichi","Rich Text Editor. Editing area: %0":"Éditeur de texte enrichi. Zone d'édition : %0",Save:"Enregistrer","Select all":"Sélectionner tout","Show more items":"Montrer plus d'éléments",Turquoise:"Turquoise",Undo:"Annuler","Upload in progress":"Téléchargement en cours",White:"Blanc","Widget toolbar":"Barre d'outils du widget",Yellow:"Jaune"}),r.getPluralForm=function(e){return 0==e||1==e?0:0!=e&&e%1e6==0?1:2}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/he.js b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/he.js
index e6ab54acc8..088719c07b 100644
--- a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/he.js
+++ b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/he.js
@@ -1 +1 @@
-!function(e){const o=e.he=e.he||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"%0 מתוך %1",Aquamarine:"ירוק-כחלחל",Black:"שחור",Blue:"כחול",Cancel:"ביטול","Cannot upload file:":"לא ניתן להעלות את הקובץ הבא:","Dim grey":"אפור עמום","Dropdown toolbar":"סרגל כלים נפתח","Edit block":"הגדרות בלוק","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"אזור עריכה של העורך: %0","Editor toolbar":"סרגל הכלים",Green:"ירוק",Grey:"אפור","Insert paragraph after block":"הוספת פסקה מתחת","Insert paragraph before block":"הוספת פסקה מעל","Light blue":"כחול בהיר","Light green":"ירוק בהיר","Light grey":"אפור בהיר",Next:"הבא",Orange:"כתום",Previous:"הקודם",Purple:"סגול",Red:"אדום",Redo:"ביצוע מחדש","Remove color":"מחיקת צבע","Restore default":"שחזור ברירת מחדל","Rich Text Editor":"עורך טקסט עשיר","Rich Text Editor. Editing area: %0":"עורך פורמט טקסט עשיר. אזור עריכה: %0",Save:"שמירה","Select all":"בחר הכל","Show more items":"הצג פריטים נוספים",Turquoise:"טורקיז",Undo:"ביטול","Upload in progress":"העלאה מתבצעת",White:"לבן","Widget toolbar":"סרגל יישומון",Yellow:"צהוב"}),o.getPluralForm=function(e){return 1==e&&e%1==0?0:2==e&&e%1==0?1:e%10==0&&e%1==0&&e>10?2:3}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(e){const o=e.he=e.he||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"%0 מתוך %1",Aquamarine:"ירוק-כחלחל",Black:"שחור",Blue:"כחול",Cancel:"ביטול","Cannot upload file:":"לא ניתן להעלות את הקובץ הבא:","Dim grey":"אפור עמום","Dropdown toolbar":"סרגל כלים נפתח","Edit block":"הגדרות בלוק","Editor block content toolbar":"סרגל כלים של תוכן בלוק של העורך","Editor contextual toolbar":"סרגל כלים הקשרי של העורך","Editor editing area: %0":"אזור עריכה של העורך: %0","Editor toolbar":"סרגל הכלים",Green:"ירוק",Grey:"אפור","Insert paragraph after block":"הוספת פסקה מתחת","Insert paragraph before block":"הוספת פסקה מעל","Light blue":"כחול בהיר","Light green":"ירוק בהיר","Light grey":"אפור בהיר",Next:"הבא",Orange:"כתום",Previous:"הקודם",Purple:"סגול",Red:"אדום",Redo:"ביצוע מחדש","Remove color":"מחיקת צבע","Restore default":"שחזור ברירת מחדל","Rich Text Editor":"עורך טקסט עשיר","Rich Text Editor. Editing area: %0":"עורך פורמט טקסט עשיר. אזור עריכה: %0",Save:"שמירה","Select all":"בחר הכל","Show more items":"הצג פריטים נוספים",Turquoise:"טורקיז",Undo:"ביטול","Upload in progress":"העלאה מתבצעת",White:"לבן","Widget toolbar":"סרגל יישומון",Yellow:"צהוב"}),o.getPluralForm=function(e){return 1==e&&e%1==0?0:2==e&&e%1==0?1:e%10==0&&e%1==0&&e>10?2:3}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/hi.js b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/hi.js
index 8407d4ad1e..0038473ad4 100644
--- a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/hi.js
+++ b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/hi.js
@@ -1 +1 @@
-!function(e){const o=e.hi=e.hi||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"%0 of %1",Aquamarine:"Aquamarine",Black:"Black",Blue:"Blue",Cancel:"Cancel","Cannot upload file:":"Cannot upload file:","Dim grey":"Dim grey","Dropdown toolbar":"Dropdown toolbar","Edit block":"Edit block","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"संपादक संपादन क्षेत्र: %0","Editor toolbar":"Editor toolbar",Green:"Green",Grey:"Grey","Insert paragraph after block":"Insert paragraph after block","Insert paragraph before block":"Insert paragraph before block","Light blue":"Light blue","Light green":"Light green","Light grey":"Light grey",Next:"Next",Orange:"Orange",Previous:"Previous",Purple:"Purple",Red:"Red",Redo:"Redo","Remove color":"Remove color","Restore default":"डिफ़ॉल्ट रिस्टोर कर दें","Rich Text Editor":"Rich Text Editor","Rich Text Editor. Editing area: %0":"रिच टेक्स्ट एडिटर। संपादन क्षेत्र: %0",Save:"Save","Select all":"Select all","Show more items":"Show more items",Turquoise:"Turquoise",Undo:"Undo","Upload in progress":"Upload in progress",White:"White","Widget toolbar":"Widget toolbar",Yellow:"Yellow"}),o.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(e){const o=e.hi=e.hi||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"%0 of %1",Aquamarine:"Aquamarine",Black:"Black",Blue:"Blue",Cancel:"Cancel","Cannot upload file:":"Cannot upload file:","Dim grey":"Dim grey","Dropdown toolbar":"Dropdown toolbar","Edit block":"Edit block","Editor block content toolbar":"एडीटर ब्लॉक कंटेंट टूलबार","Editor contextual toolbar":"एडीटर कॉन्टेक्स्टूअल टूलबार","Editor editing area: %0":"संपादक संपादन क्षेत्र: %0","Editor toolbar":"Editor toolbar",Green:"Green",Grey:"Grey","Insert paragraph after block":"Insert paragraph after block","Insert paragraph before block":"Insert paragraph before block","Light blue":"Light blue","Light green":"Light green","Light grey":"Light grey",Next:"Next",Orange:"Orange",Previous:"Previous",Purple:"Purple",Red:"Red",Redo:"Redo","Remove color":"Remove color","Restore default":"डिफ़ॉल्ट रिस्टोर कर दें","Rich Text Editor":"Rich Text Editor","Rich Text Editor. Editing area: %0":"रिच टेक्स्ट एडिटर। संपादन क्षेत्र: %0",Save:"Save","Select all":"Select all","Show more items":"Show more items",Turquoise:"Turquoise",Undo:"Undo","Upload in progress":"Upload in progress",White:"White","Widget toolbar":"Widget toolbar",Yellow:"Yellow"}),o.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/hu.js b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/hu.js
index 2632a83892..f50c069fc4 100644
--- a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/hu.js
+++ b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/hu.js
@@ -1 +1 @@
-!function(e){const t=e.hu=e.hu||{};t.dictionary=Object.assign(t.dictionary||{},{"%0 of %1":"%0 / %1",Aquamarine:"Kékeszöld",Black:"Fekete",Blue:"Kék",Cancel:"Mégsem","Cannot upload file:":"Nem sikerült a fájl feltöltése:","Dim grey":"Halvány szürke","Dropdown toolbar":"Lenyíló eszköztár","Edit block":"Blokk szerkesztése","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Szerkesztő szerkesztési területe: %0","Editor toolbar":"Szerkesztő eszköztár",Green:"Zöld",Grey:"Szürke","Insert paragraph after block":"Bekezdés beszúrása utána","Insert paragraph before block":"Bekezdés beszúrása elé","Light blue":"Világoskék","Light green":"Világoszöld","Light grey":"Világosszürke",Next:"Következő",Orange:"Narancs",Previous:"Előző",Purple:"Lila",Red:"Piros",Redo:"Újra","Remove color":"Szín eltávolítása","Restore default":"Alapértelmezés visszaállítása","Rich Text Editor":"Bővített szövegszerkesztő","Rich Text Editor. Editing area: %0":"Rich text szerkesztő. Szerkesztési terület: %0",Save:"Mentés","Select all":"Mindet kijelöl","Show more items":"További elemek",Turquoise:"Türkiz",Undo:"Visszavonás","Upload in progress":"A feltöltés folyamatban",White:"Fehér","Widget toolbar":"Widget eszköztár",Yellow:"Sárga"}),t.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(e){const t=e.hu=e.hu||{};t.dictionary=Object.assign(t.dictionary||{},{"%0 of %1":"%0 / %1",Aquamarine:"Kékeszöld",Black:"Fekete",Blue:"Kék",Cancel:"Mégsem","Cannot upload file:":"Nem sikerült a fájl feltöltése:","Dim grey":"Halvány szürke","Dropdown toolbar":"Lenyíló eszköztár","Edit block":"Blokk szerkesztése","Editor block content toolbar":"Szerkesztő - tartalomblokk  eszköztár","Editor contextual toolbar":"Szerkesztő - szövegre vonatkozó eszköztár","Editor editing area: %0":"Szerkesztő szerkesztési területe: %0","Editor toolbar":"Szerkesztő eszköztár",Green:"Zöld",Grey:"Szürke","Insert paragraph after block":"Bekezdés beszúrása utána","Insert paragraph before block":"Bekezdés beszúrása elé","Light blue":"Világoskék","Light green":"Világoszöld","Light grey":"Világosszürke",Next:"Következő",Orange:"Narancs",Previous:"Előző",Purple:"Lila",Red:"Piros",Redo:"Újra","Remove color":"Szín eltávolítása","Restore default":"Alapértelmezés visszaállítása","Rich Text Editor":"Bővített szövegszerkesztő","Rich Text Editor. Editing area: %0":"Rich text szerkesztő. Szerkesztési terület: %0",Save:"Mentés","Select all":"Mindet kijelöl","Show more items":"További elemek",Turquoise:"Türkiz",Undo:"Visszavonás","Upload in progress":"A feltöltés folyamatban",White:"Fehér","Widget toolbar":"Widget eszköztár",Yellow:"Sárga"}),t.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/id.js b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/id.js
index d14217c722..ffcdeff118 100644
--- a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/id.js
+++ b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/id.js
@@ -1 +1 @@
-!function(a){const e=a.id=a.id||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 dari %1",Aquamarine:"Biru laut",Black:"Hitam",Blue:"Biru",Cancel:"Batal","Cannot upload file:":"Tidak dapat mengunggah berkas:","Dim grey":"Kelabu gelap","Dropdown toolbar":"Alat dropdown","Edit block":"Sunting blok","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Area edit editor: %0","Editor toolbar":"Alat editor",Green:"Hijau",Grey:"Kelabu","Insert paragraph after block":"Tambahkan paragraf setelah blok","Insert paragraph before block":"Tambahkan paragraf sebelum blok","Light blue":"Biru terang","Light green":"Hijau terang","Light grey":"Kelabu terang",Next:"Berikutnya",Orange:"Jingga",Previous:"Sebelumnya",Purple:"Ungu",Red:"Merah",Redo:"Lakukan lagi","Remove color":"Hapus warna","Restore default":"Pulihkan nilai baku","Rich Text Editor":"Editor Teks Kaya","Rich Text Editor. Editing area: %0":"Editor Teks Kaya. Area edit: %0",Save:"Simpan","Select all":"Pilih semua","Show more items":"Tampilkan lebih banyak item",Turquoise:"Turkish",Undo:"Batal","Upload in progress":"Sedang mengunggah",White:"Putih","Widget toolbar":"Alat widget",Yellow:"Kuning"}),e.getPluralForm=function(a){return 0}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(a){const e=a.id=a.id||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 dari %1",Aquamarine:"Biru laut",Black:"Hitam",Blue:"Biru",Cancel:"Batal","Cannot upload file:":"Tidak dapat mengunggah berkas:","Dim grey":"Kelabu gelap","Dropdown toolbar":"Alat dropdown","Edit block":"Sunting blok","Editor block content toolbar":"Bilah alat konten blok editor","Editor contextual toolbar":"Bilah alat kontekstual editor","Editor editing area: %0":"Area edit editor: %0","Editor toolbar":"Alat editor",Green:"Hijau",Grey:"Kelabu","Insert paragraph after block":"Tambahkan paragraf setelah blok","Insert paragraph before block":"Tambahkan paragraf sebelum blok","Light blue":"Biru terang","Light green":"Hijau terang","Light grey":"Kelabu terang",Next:"Berikutnya",Orange:"Jingga",Previous:"Sebelumnya",Purple:"Ungu",Red:"Merah",Redo:"Lakukan lagi","Remove color":"Hapus warna","Restore default":"Pulihkan nilai baku","Rich Text Editor":"Editor Teks Kaya","Rich Text Editor. Editing area: %0":"Editor Teks Kaya. Area edit: %0",Save:"Simpan","Select all":"Pilih semua","Show more items":"Tampilkan lebih banyak item",Turquoise:"Turkish",Undo:"Batal","Upload in progress":"Sedang mengunggah",White:"Putih","Widget toolbar":"Alat widget",Yellow:"Kuning"}),e.getPluralForm=function(a){return 0}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/it.js b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/it.js
index c5d6cc7eb6..b3c3e9631f 100644
--- a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/it.js
+++ b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/it.js
@@ -1 +1 @@
-!function(i){const o=i.it=i.it||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"%0 di %1",Aquamarine:"Aquamarina",Black:"Nero",Blue:"Blu",Cancel:"Annulla","Cannot upload file:":"Impossibile caricare il file:","Dim grey":"Grigio tenue","Dropdown toolbar":"Barra degli strumenti del menu a discesa","Edit block":"Modifica blocco","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Area di modifica dell'editor: %0","Editor toolbar":"Barra degli strumenti dell'editor",Green:"Verde",Grey:"Grigio","Insert paragraph after block":"Inserisci paragrafo dopo blocco","Insert paragraph before block":"Inserisci paragrafo prima di blocco","Light blue":"Azzurro","Light green":"Verde chiaro","Light grey":"Grigio chiaro",Next:"Avanti",Orange:"Arancio",Previous:"Indietro",Purple:"Porpora",Red:"Rosso",Redo:"Ripristina","Remove color":"Rimuovi colore","Restore default":"Ripristina predefinito","Rich Text Editor":"Editor di testo formattato","Rich Text Editor. Editing area: %0":"Editor Rich Text. Area di modifica: %0",Save:"Salva","Select all":"Seleziona tutto","Show more items":"Mostra più elementi",Turquoise:"Turchese",Undo:"Annulla","Upload in progress":"Caricamento in corso",White:"Bianco","Widget toolbar":"Barra degli strumenti del widget",Yellow:"Giallo"}),o.getPluralForm=function(i){return 1==i?0:0!=i&&i%1e6==0?1:2}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(e){const i=e.it=e.it||{};i.dictionary=Object.assign(i.dictionary||{},{"%0 of %1":"%0 di %1",Aquamarine:"Aquamarina",Black:"Nero",Blue:"Blu",Cancel:"Annulla","Cannot upload file:":"Impossibile caricare il file:","Dim grey":"Grigio tenue","Dropdown toolbar":"Barra degli strumenti del menu a discesa","Edit block":"Modifica blocco","Editor block content toolbar":"Barra degli strumenti contestuale dell'editor del blocco","Editor contextual toolbar":"Barra degli strumenti contestuale dell'editor","Editor editing area: %0":"Area di modifica dell'editor: %0","Editor toolbar":"Barra degli strumenti dell'editor",Green:"Verde",Grey:"Grigio","Insert paragraph after block":"Inserisci paragrafo dopo blocco","Insert paragraph before block":"Inserisci paragrafo prima di blocco","Light blue":"Azzurro","Light green":"Verde chiaro","Light grey":"Grigio chiaro",Next:"Avanti",Orange:"Arancio",Previous:"Indietro",Purple:"Porpora",Red:"Rosso",Redo:"Ripristina","Remove color":"Rimuovi colore","Restore default":"Ripristina predefinito","Rich Text Editor":"Editor di testo formattato","Rich Text Editor. Editing area: %0":"Editor Rich Text. Area di modifica: %0",Save:"Salva","Select all":"Seleziona tutto","Show more items":"Mostra più elementi",Turquoise:"Turchese",Undo:"Annulla","Upload in progress":"Caricamento in corso",White:"Bianco","Widget toolbar":"Barra degli strumenti del widget",Yellow:"Giallo"}),i.getPluralForm=function(e){return 1==e?0:0!=e&&e%1e6==0?1:2}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ja.js b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ja.js
index c307b225f0..d1d3449fb9 100644
--- a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ja.js
+++ b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ja.js
@@ -1 +1 @@
-!function(o){const e=o.ja=o.ja||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0/%1",Aquamarine:"薄い青緑",Black:"黒",Blue:"青",Cancel:"キャンセル","Cannot upload file:":"ファイルをアップロードできません:","Dim grey":"暗い灰色","Dropdown toolbar":"ドロップダウンツールバー","Edit block":"ブロックを編集","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"エディタ編集エリア：%0","Editor toolbar":"エディタツールバー",Green:"緑",Grey:"灰色","Insert paragraph after block":"ブロックの後にパラグラフを挿入","Insert paragraph before block":"ブロックの前にパラグラフを挿入","Light blue":"明るい青","Light green":"明るい緑","Light grey":"明るい灰色",Next:"次へ",Orange:"オレンジ",Previous:"前へ",Purple:"紫",Red:"赤",Redo:"やり直し","Remove color":"カラーを削除","Restore default":"初期値に戻す","Rich Text Editor":"リッチテキストエディター","Rich Text Editor. Editing area: %0":"リッチテキストエディタ。編集エリア：%0",Save:"保存","Select all":"すべて選択","Show more items":"他の項目を表示",Turquoise:"水色",Undo:"元に戻す","Upload in progress":"アップロード中",White:"白","Widget toolbar":"ウィジェットツールバー",Yellow:"黄"}),e.getPluralForm=function(o){return 0}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(o){const e=o.ja=o.ja||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0/%1",Aquamarine:"薄い青緑",Black:"黒",Blue:"青",Cancel:"キャンセル","Cannot upload file:":"ファイルをアップロードできません:","Dim grey":"暗い灰色","Dropdown toolbar":"ドロップダウンツールバー","Edit block":"ブロックを編集","Editor block content toolbar":"エディター ブロック コンテンツ ツールバー","Editor contextual toolbar":"エディター コンテクスト ツールバー","Editor editing area: %0":"エディタ編集エリア：%0","Editor toolbar":"エディタツールバー",Green:"緑",Grey:"灰色","Insert paragraph after block":"ブロックの後にパラグラフを挿入","Insert paragraph before block":"ブロックの前にパラグラフを挿入","Light blue":"明るい青","Light green":"明るい緑","Light grey":"明るい灰色",Next:"次へ",Orange:"オレンジ",Previous:"前へ",Purple:"紫",Red:"赤",Redo:"やり直し","Remove color":"カラーを削除","Restore default":"初期値に戻す","Rich Text Editor":"リッチテキストエディター","Rich Text Editor. Editing area: %0":"リッチテキストエディタ。編集エリア：%0",Save:"保存","Select all":"すべて選択","Show more items":"他の項目を表示",Turquoise:"水色",Undo:"元に戻す","Upload in progress":"アップロード中",White:"白","Widget toolbar":"ウィジェットツールバー",Yellow:"黄"}),e.getPluralForm=function(o){return 0}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ko.js b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ko.js
index a0205fc86a..582e552d3d 100644
--- a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ko.js
+++ b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ko.js
@@ -1 +1 @@
-!function(o){const e=o.ko=o.ko||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 / %1",Aquamarine:"연한 청록색",Black:"검은색",Blue:"파랑색",Cancel:"취소","Cannot upload file:":"파일 업로드할 수 없음: ","Dim grey":"진한 회색","Dropdown toolbar":"드롭다운 툴바","Edit block":"편집 영역","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"편집기 편집 영역: %0","Editor toolbar":"에디터 툴바",Green:"초록색",Grey:"회색","Insert paragraph after block":"블록 뒤에 단락 삽입","Insert paragraph before block":"블록 앞에 단락 삽입","Light blue":"연한 파랑색","Light green":"밝은 초록색","Light grey":"밝은 회색",Next:"다음",Orange:"주황색",Previous:"이전",Purple:"보라색",Red:"빨간색",Redo:"다시 실행","Remove color":"색깔 제거","Restore default":"기본값 복원","Rich Text Editor":"리치 텍스트 편집기","Rich Text Editor. Editing area: %0":"리치 텍스트 편집기. 편집 영역: %0",Save:"저장","Select all":"전체 선택","Show more items":"더보기",Turquoise:"청록색",Undo:"실행 취소","Upload in progress":"업로드 진행 중",White:"흰색","Widget toolbar":"위젯 툴바",Yellow:"노랑색"}),e.getPluralForm=function(o){return 0}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(o){const e=o.ko=o.ko||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 / %1",Aquamarine:"연한 청록색",Black:"검은색",Blue:"파랑색",Cancel:"취소","Cannot upload file:":"파일 업로드할 수 없음: ","Dim grey":"진한 회색","Dropdown toolbar":"드롭다운 툴바","Edit block":"편집 영역","Editor block content toolbar":"편집기 영역 내용 툴바","Editor contextual toolbar":"편집기 문맥 툴바","Editor editing area: %0":"편집기 편집 영역: %0","Editor toolbar":"편집기 툴바",Green:"초록색",Grey:"회색","Insert paragraph after block":"블록 뒤에 단락 삽입","Insert paragraph before block":"블록 앞에 단락 삽입","Light blue":"연한 파랑색","Light green":"연한 초록색","Light grey":"밝은 회색",Next:"다음",Orange:"주황색",Previous:"이전",Purple:"보라색",Red:"빨간색",Redo:"다시 실행","Remove color":"색깔 제거","Restore default":"기본값 복원","Rich Text Editor":"서식 있는 텍스트 편집기","Rich Text Editor. Editing area: %0":"리치 텍스트 편집기. 편집 영역: %0",Save:"저장","Select all":"전체 선택","Show more items":"더보기",Turquoise:"청록색",Undo:"실행 취소","Upload in progress":"업로드 진행 중",White:"흰색","Widget toolbar":"위젯 툴바",Yellow:"노랑색"}),e.getPluralForm=function(o){return 0}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/lt.js b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/lt.js
index f68c185425..64b7daf595 100644
--- a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/lt.js
+++ b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/lt.js
@@ -1 +1 @@
-!function(i){const a=i.lt=i.lt||{};a.dictionary=Object.assign(a.dictionary||{},{"%0 of %1":"%0 iš %1",Aquamarine:"Aquamarine",Black:"Juoda",Blue:"Mėlyna",Cancel:"Atšaukti","Cannot upload file:":"Negalima įkelti failo:","Dim grey":"Pilkšva","Dropdown toolbar":"Įrankių juosta pasirenkamajame sąraše","Edit block":"Redaguoti bloką","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Redaktoriaus redagavimo sritis: %0","Editor toolbar":"Redaktoriaus įrankių juosta",Green:"Žalia",Grey:"Pilka","Insert paragraph after block":"Įkelti pastraipą po bloko","Insert paragraph before block":"Įkelti pastraipą prieš bloką","Light blue":"Šviesiai mėlyna","Light green":"Šviesiai žalia","Light grey":"Šviesiai pilka",Next:"Kitas",Orange:"Oranžinė",Previous:"Buvęs",Purple:"Violetinė",Red:"Raudona",Redo:"Pirmyn","Remove color":"Pašalinti spalvą","Restore default":"Atkurti numatytuosius","Rich Text Editor":"Raiškiojo teksto redaktorius","Rich Text Editor. Editing area: %0":"Raiškiojo teksto redaktorius. Redagavimo sritis: %0",Save:"Išsaugoti","Select all":"Pasirinkti viską","Show more items":"Rodyti daugiau elementų",Turquoise:"Turkio",Undo:"Atgal","Upload in progress":"Įkelima",White:"Balta","Widget toolbar":"Valdiklių įrankių juosta",Yellow:"Geltona"}),a.getPluralForm=function(i){return i%10==1&&(i%100>19||i%100<11)?0:i%10>=2&&i%10<=9&&(i%100>19||i%100<11)?1:i%1!=0?2:3}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(a){const i=a.lt=a.lt||{};i.dictionary=Object.assign(i.dictionary||{},{"%0 of %1":"%0 iš %1",Aquamarine:"Aquamarine",Black:"Juoda",Blue:"Mėlyna",Cancel:"Atšaukti","Cannot upload file:":"Negalima įkelti failo:","Dim grey":"Pilkšva","Dropdown toolbar":"Įrankių juosta pasirenkamajame sąraše","Edit block":"Redaguoti bloką","Editor block content toolbar":"Redaktoriaus bloko turinio įrankių juosta","Editor contextual toolbar":"Redaktoriaus kontekstinė įrankių juosta","Editor editing area: %0":"Redaktoriaus redagavimo sritis: %0","Editor toolbar":"Redaktoriaus įrankių juosta",Green:"Žalia",Grey:"Pilka","Insert paragraph after block":"Įkelti pastraipą po bloko","Insert paragraph before block":"Įkelti pastraipą prieš bloką","Light blue":"Šviesiai mėlyna","Light green":"Šviesiai žalia","Light grey":"Šviesiai pilka",Next:"Kitas",Orange:"Oranžinė",Previous:"Buvęs",Purple:"Violetinė",Red:"Raudona",Redo:"Pirmyn","Remove color":"Pašalinti spalvą","Restore default":"Atkurti numatytuosius","Rich Text Editor":"Raiškiojo teksto redaktorius","Rich Text Editor. Editing area: %0":"Raiškiojo teksto redaktorius. Redagavimo sritis: %0",Save:"Išsaugoti","Select all":"Pasirinkti viską","Show more items":"Rodyti daugiau elementų",Turquoise:"Turkio",Undo:"Atgal","Upload in progress":"Įkelima",White:"Balta","Widget toolbar":"Valdiklių įrankių juosta",Yellow:"Geltona"}),i.getPluralForm=function(a){return a%10==1&&(a%100>19||a%100<11)?0:a%10>=2&&a%10<=9&&(a%100>19||a%100<11)?1:a%1!=0?2:3}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/lv.js b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/lv.js
index cf47828453..85a0ebd567 100644
--- a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/lv.js
+++ b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/lv.js
@@ -1 +1 @@
-!function(a){const e=a.lv=a.lv||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 no %1",Aquamarine:"Akvamarīns",Black:"Melns",Blue:"Zils",Cancel:"Atcelt","Cannot upload file:":"Nevar augšupielādēt failu:","Dim grey":"Blāvi pelēks","Dropdown toolbar":"Papildus izvēlnes rīkjosla","Edit block":"Labot bloku","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Redaktora rediģēšanas zona: %0","Editor toolbar":"Redaktora rīkjosla",Green:"Zaļš",Grey:"Pelēks","Insert paragraph after block":"Ievietot paragrāfu aiz bloka","Insert paragraph before block":"Ievietot paragrāfu pirms bloka","Light blue":"Gaiši zils","Light green":"Gaiši zaļš","Light grey":"Gaiši pelēks",Next:"Nākamā",Orange:"Oranžs",Previous:"Iepriekšējā",Purple:"Violets",Red:"Sarkans",Redo:"Uz priekšu","Remove color":"Noņemt krāsu","Restore default":"Atgriezt noklusējumu","Rich Text Editor":"Bagātinātais Teksta Redaktors","Rich Text Editor. Editing area: %0":"Bagātīga Teksta Redaktors. Rediģēšanas zona: %0",Save:"Saglabāt","Select all":"Izvēlēties visu","Show more items":"Parādīt vairāk vienumus",Turquoise:"Tirkīza",Undo:"Atsaukt","Upload in progress":"Notiek augšupielāde",White:"Balts","Widget toolbar":"Sīkrīku rīkjosla",Yellow:"Dzeltens"}),e.getPluralForm=function(a){return a%10==1&&a%100!=11?0:0!=a?1:2}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(a){const e=a.lv=a.lv||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 no %1",Aquamarine:"Akvamarīns",Black:"Melns",Blue:"Zils",Cancel:"Atcelt","Cannot upload file:":"Nevar augšupielādēt failu:","Dim grey":"Blāvi pelēks","Dropdown toolbar":"Papildus izvēlnes rīkjosla","Edit block":"Labot bloku","Editor block content toolbar":"Rediģēšanas bloka satura rīkjosla","Editor contextual toolbar":"Redaktora konteksta rīkjosla","Editor editing area: %0":"Redaktora rediģēšanas zona: %0","Editor toolbar":"Redaktora rīkjosla",Green:"Zaļš",Grey:"Pelēks","Insert paragraph after block":"Ievietot paragrāfu aiz bloka","Insert paragraph before block":"Ievietot paragrāfu pirms bloka","Light blue":"Gaiši zils","Light green":"Gaiši zaļš","Light grey":"Gaiši pelēks",Next:"Nākamā",Orange:"Oranžs",Previous:"Iepriekšējā",Purple:"Violets",Red:"Sarkans",Redo:"Uz priekšu","Remove color":"Noņemt krāsu","Restore default":"Atgriezt noklusējumu","Rich Text Editor":"Bagātinātais Teksta Redaktors","Rich Text Editor. Editing area: %0":"Bagātīga Teksta Redaktors. Rediģēšanas zona: %0",Save:"Saglabāt","Select all":"Izvēlēties visu","Show more items":"Parādīt vairāk vienumus",Turquoise:"Tirkīza",Undo:"Atsaukt","Upload in progress":"Notiek augšupielāde",White:"Balts","Widget toolbar":"Sīkrīku rīkjosla",Yellow:"Dzeltens"}),e.getPluralForm=function(a){return a%10==1&&a%100!=11?0:0!=a?1:2}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ms.js b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ms.js
index a08176bec5..89d953e43e 100644
--- a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ms.js
+++ b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ms.js
@@ -1 +1 @@
-!function(a){const e=a.ms=a.ms||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 daripada %1",Aquamarine:"Akuamarin",Black:"Hitam",Blue:"Biru",Cancel:"Batal","Cannot upload file:":"Gagal memuat naik fail","Dim grey":"Kelabu malap","Dropdown toolbar":"Bar alat capaian tetingkap","Edit block":"Sunting blok","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Ruang suntingan editor: %0","Editor toolbar":"Bar alat capaian suntingan",Green:"Hijau",Grey:"Kelabu","Insert paragraph after block":"Masukkan perenggan sebelum blok","Insert paragraph before block":"Masukkan perenggan sebelum blok","Light blue":"Biru cerah","Light green":"Hijau cerah","Light grey":"Kelabu cerah",Next:"Seterusnya",Orange:"Oren",Previous:"Sebelumnya",Purple:"Ungu",Red:"Merah",Redo:"Buat semula","Remove color":"Buang warna","Restore default":"Pulihkan lalai","Rich Text Editor":"Penyunting Teks Kaya","Rich Text Editor. Editing area: %0":"Editor Teks Kaya. Ruang suntingan: %0",Save:"Simpan","Select all":"Pilih seterusnya","Show more items":"Tunjukkan item lain",Turquoise:"Firus",Undo:"Buat asal","Upload in progress":"Muat naik sedang berlangsung",White:"Putih","Widget toolbar":"Bar alat capaian widget",Yellow:"Kuning"}),e.getPluralForm=function(a){return 0}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(a){const e=a.ms=a.ms||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 daripada %1",Aquamarine:"Akuamarin",Black:"Hitam",Blue:"Biru",Cancel:"Batal","Cannot upload file:":"Gagal memuat naik fail","Dim grey":"Kelabu malap","Dropdown toolbar":"Bar alat capaian tetingkap","Edit block":"Sunting blok","Editor block content toolbar":"Bar alat sekat kandungan editor","Editor contextual toolbar":"Bar alat kontekstual editor","Editor editing area: %0":"Ruang suntingan editor: %0","Editor toolbar":"Bar alat capaian suntingan",Green:"Hijau",Grey:"Kelabu","Insert paragraph after block":"Masukkan perenggan sebelum blok","Insert paragraph before block":"Masukkan perenggan sebelum blok","Light blue":"Biru cerah","Light green":"Hijau cerah","Light grey":"Kelabu cerah",Next:"Seterusnya",Orange:"Oren",Previous:"Sebelumnya",Purple:"Ungu",Red:"Merah",Redo:"Buat semula","Remove color":"Buang warna","Restore default":"Pulihkan lalai","Rich Text Editor":"Penyunting Teks Kaya","Rich Text Editor. Editing area: %0":"Editor Teks Kaya. Ruang suntingan: %0",Save:"Simpan","Select all":"Pilih seterusnya","Show more items":"Tunjukkan item lain",Turquoise:"Firus",Undo:"Buat asal","Upload in progress":"Muat naik sedang berlangsung",White:"Putih","Widget toolbar":"Bar alat capaian widget",Yellow:"Kuning"}),e.getPluralForm=function(a){return 0}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/nl.js b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/nl.js
index a6fd1603dd..f3e12afeac 100644
--- a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/nl.js
+++ b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/nl.js
@@ -1 +1 @@
-!function(e){const r=e.nl=e.nl||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"%0 van %1",Aquamarine:"Aquamarijn",Black:"Zwart",Blue:"Blauw",Cancel:"Annuleren","Cannot upload file:":"Kan bestand niet uploaden:","Dim grey":"Gedimd grijs","Dropdown toolbar":"Drop-down werkbalk","Edit block":"Blok aanpassen","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Bewerkingsgebied: %0","Editor toolbar":"Editor welkbalk",Green:"Groen",Grey:"Grijs","Insert paragraph after block":"Voeg paragraaf toe na blok","Insert paragraph before block":"Voeg paragraaf toe voor blok","Light blue":"Lichtblauw","Light green":"Lichtgroen","Light grey":"Lichtgrijs",Next:"Volgende",Orange:"Oranje",Previous:"Vorige",Purple:"Paars",Red:"Rood",Redo:"Opnieuw","Remove color":"Verwijder kleur","Restore default":"Standaardinstellingen terugzetten","Rich Text Editor":"Tekstbewerker","Rich Text Editor. Editing area: %0":"Rich Text Editor. Bewerkingsgebied: %0",Save:"Opslaan","Select all":"Selecteer alles","Show more items":"Meer items weergeven",Turquoise:"Turquoise",Undo:"Ongedaan maken","Upload in progress":"Bezig met uploaden",White:"Wit","Widget toolbar":"Widget werkbalk",Yellow:"Geel"}),r.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(e){const r=e.nl=e.nl||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"%0 van %1",Aquamarine:"Aquamarijn",Black:"Zwart",Blue:"Blauw",Cancel:"Annuleren","Cannot upload file:":"Kan bestand niet uploaden:","Dim grey":"Gedimd grijs","Dropdown toolbar":"Drop-down werkbalk","Edit block":"Blok aanpassen","Editor block content toolbar":"Inhoud werkbalk voor editorblok","Editor contextual toolbar":"Contextuele werkbalk van editor","Editor editing area: %0":"Bewerkingsgebied: %0","Editor toolbar":"Editor welkbalk",Green:"Groen",Grey:"Grijs","Insert paragraph after block":"Voeg paragraaf toe na blok","Insert paragraph before block":"Voeg paragraaf toe voor blok","Light blue":"Lichtblauw","Light green":"Lichtgroen","Light grey":"Lichtgrijs",Next:"Volgende",Orange:"Oranje",Previous:"Vorige",Purple:"Paars",Red:"Rood",Redo:"Opnieuw","Remove color":"Verwijder kleur","Restore default":"Standaardinstellingen terugzetten","Rich Text Editor":"Tekstbewerker","Rich Text Editor. Editing area: %0":"Rich Text Editor. Bewerkingsgebied: %0",Save:"Opslaan","Select all":"Selecteer alles","Show more items":"Meer items weergeven",Turquoise:"Turquoise",Undo:"Ongedaan maken","Upload in progress":"Bezig met uploaden",White:"Wit","Widget toolbar":"Widget werkbalk",Yellow:"Geel"}),r.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/no.js b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/no.js
index bc3ccdb83e..31a97d7061 100644
--- a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/no.js
+++ b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/no.js
@@ -1 +1 @@
-!function(e){const r=e.no=e.no||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"%0 av %1",Aquamarine:"Akvamarin",Black:"Svart",Blue:"Blå",Cancel:"Avbryt","Cannot upload file:":"Kan ikke laste opp fil:","Dim grey":"Svak grå","Dropdown toolbar":"Verktøylinje for nedtrekksliste","Edit block":"Rediger blokk","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Redigeringsområde for redigeringsverktøyet: %0","Editor toolbar":"Verktøylinje for redigeringsverktøy",Green:"Grønn",Grey:"Grå","Insert paragraph after block":"Sett inn paragraf etter blokk","Insert paragraph before block":"Sett inn paragraf foran blokk","Light blue":"Lyseblå","Light green":"Lysegrønn","Light grey":"Lysegrå",Next:"Neste",Orange:"Oransje",Previous:"Forrige",Purple:"Lilla",Red:"Rød",Redo:"Gjør om","Remove color":"Fjern farge","Restore default":"Tilbakestill til standard","Rich Text Editor":"Tekstredigeringsverktøy for rik tekst","Rich Text Editor. Editing area: %0":"Redigeringsverktøy for rik tekst. Redigeringsområde: %0",Save:"Lagre","Select all":"Velg alt ","Show more items":"Vis flere elementer",Turquoise:"Turkis",Undo:"Angre","Upload in progress":"Laster opp fil",White:"Hvit","Widget toolbar":"Widget verktøylinje ",Yellow:"Gul"}),r.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(e){const r=e.no=e.no||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"%0 av %1",Aquamarine:"Akvamarin",Black:"Svart",Blue:"Blå",Cancel:"Avbryt","Cannot upload file:":"Kan ikke laste opp fil:","Dim grey":"Svak grå","Dropdown toolbar":"Verktøylinje for nedtrekksliste","Edit block":"Rediger blokk","Editor block content toolbar":"Verktøylinje for blokkinnhold i redigeringsverktøy","Editor contextual toolbar":"Verktøylinje for kontekst i redigeringsverktøy","Editor editing area: %0":"Redigeringsområde for redigeringsverktøyet: %0","Editor toolbar":"Verktøylinje for redigeringsverktøy",Green:"Grønn",Grey:"Grå","Insert paragraph after block":"Sett inn paragraf etter blokk","Insert paragraph before block":"Sett inn paragraf foran blokk","Light blue":"Lyseblå","Light green":"Lysegrønn","Light grey":"Lysegrå",Next:"Neste",Orange:"Oransje",Previous:"Forrige",Purple:"Lilla",Red:"Rød",Redo:"Gjør om","Remove color":"Fjern farge","Restore default":"Tilbakestill til standard","Rich Text Editor":"Tekstredigeringsverktøy for rik tekst","Rich Text Editor. Editing area: %0":"Redigeringsverktøy for rik tekst. Redigeringsområde: %0",Save:"Lagre","Select all":"Velg alt ","Show more items":"Vis flere elementer",Turquoise:"Turkis",Undo:"Angre","Upload in progress":"Laster opp fil",White:"Hvit","Widget toolbar":"Widget verktøylinje ",Yellow:"Gul"}),r.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/pl.js b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/pl.js
index dfa45e4e9a..bef4ec1004 100644
--- a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/pl.js
+++ b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/pl.js
@@ -1 +1 @@
-!function(o){const e=o.pl=o.pl||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 z %1",Aquamarine:"Akwamaryna",Black:"Czarny",Blue:"Niebieski",Cancel:"Anuluj","Cannot upload file:":"Nie można przesłać pliku:","Dim grey":"Ciemnoszary","Dropdown toolbar":"Rozwijany pasek narzędzi","Edit block":"Edytuj blok","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Obszar edycji edytora: %0","Editor toolbar":"Pasek narzędzi edytora",Green:"Zielony",Grey:"Szary","Insert paragraph after block":"Wstaw akapit po bloku","Insert paragraph before block":"Wstaw akapit przed blokiem","Light blue":"Jasnoniebieski","Light green":"Jasnozielony","Light grey":"Jasnoszary",Next:"Następny",Orange:"Pomarańczowy",Previous:"Poprzedni",Purple:"Purpurowy",Red:"Czerwony",Redo:"Ponów","Remove color":"Usuń kolor","Restore default":"Przywróć domyślne","Rich Text Editor":"Edytor tekstu sformatowanego","Rich Text Editor. Editing area: %0":"Edytor tekstu. Obszar edycji: %0",Save:"Zapisz","Select all":"Zaznacz wszystko","Show more items":"Pokaż więcej",Turquoise:"Turkusowy",Undo:"Cofnij","Upload in progress":"Trwa przesyłanie",White:"Biały","Widget toolbar":"Pasek widgetów",Yellow:"Żółty"}),e.getPluralForm=function(o){return 1==o?0:o%10>=2&&o%10<=4&&(o%100<12||o%100>14)?1:1!=o&&o%10>=0&&o%10<=1||o%10>=5&&o%10<=9||o%100>=12&&o%100<=14?2:3}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(o){const e=o.pl=o.pl||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 z %1",Aquamarine:"Akwamaryna",Black:"Czarny",Blue:"Niebieski",Cancel:"Anuluj","Cannot upload file:":"Nie można przesłać pliku:","Dim grey":"Ciemnoszary","Dropdown toolbar":"Rozwijany pasek narzędzi","Edit block":"Edytuj blok","Editor block content toolbar":"Pasek zadań treści blokowej edytora","Editor contextual toolbar":"Kontekstowy pasek zadań edytora","Editor editing area: %0":"Obszar edycji edytora: %0","Editor toolbar":"Pasek narzędzi edytora",Green:"Zielony",Grey:"Szary","Insert paragraph after block":"Wstaw akapit po bloku","Insert paragraph before block":"Wstaw akapit przed blokiem","Light blue":"Jasnoniebieski","Light green":"Jasnozielony","Light grey":"Jasnoszary",Next:"Następny",Orange:"Pomarańczowy",Previous:"Poprzedni",Purple:"Purpurowy",Red:"Czerwony",Redo:"Ponów","Remove color":"Usuń kolor","Restore default":"Przywróć domyślne","Rich Text Editor":"Edytor tekstu sformatowanego","Rich Text Editor. Editing area: %0":"Edytor tekstu. Obszar edycji: %0",Save:"Zapisz","Select all":"Zaznacz wszystko","Show more items":"Pokaż więcej",Turquoise:"Turkusowy",Undo:"Cofnij","Upload in progress":"Trwa przesyłanie",White:"Biały","Widget toolbar":"Pasek widgetów",Yellow:"Żółty"}),e.getPluralForm=function(o){return 1==o?0:o%10>=2&&o%10<=4&&(o%100<12||o%100>14)?1:1!=o&&o%10>=0&&o%10<=1||o%10>=5&&o%10<=9||o%100>=12&&o%100<=14?2:3}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/pt-br.js b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/pt-br.js
index 3d3a896fa8..58fcd61f64 100644
--- a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/pt-br.js
+++ b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/pt-br.js
@@ -1 +1 @@
-!function(r){const e=r["pt-br"]=r["pt-br"]||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 de %1",Aquamarine:"Água-marinha",Black:"Preto",Blue:"Azul",Cancel:"Cancelar","Cannot upload file:":"Não foi possível enviar o arquivo:","Dim grey":"Cinza escuro","Dropdown toolbar":"Barra de Ferramentas da Lista Suspensa","Edit block":"Editor de bloco","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Área de edição do editor: %0","Editor toolbar":"Ferramentas do Editor",Green:"Verde",Grey:"Cinza","Insert paragraph after block":"Inserir parágrafo após o bloco","Insert paragraph before block":"Inserir parágrafo antes do bloco","Light blue":"Azul claro","Light green":"Verde claro","Light grey":"Cinza claro",Next:"Próximo",Orange:"Laranja",Previous:"Anterior",Purple:"Púrpura",Red:"Vermelho",Redo:"Refazer","Remove color":"Remover cor","Restore default":"Restaurar padrão","Rich Text Editor":"Editor de Formatação","Rich Text Editor. Editing area: %0":"Editor de Texto Valioso. Área de edição: %0",Save:"Salvar","Select all":"Selecionar tudo","Show more items":"Exibir mais itens",Turquoise:"Turquesa",Undo:"Desfazer","Upload in progress":"Enviando dados",White:"Branco","Widget toolbar":"Ferramentas de Widgets",Yellow:"Amarelo"}),e.getPluralForm=function(r){return 0==r||1==r?0:0!=r&&r%1e6==0?1:2}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(r){const e=r["pt-br"]=r["pt-br"]||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 de %1",Aquamarine:"Água-marinha",Black:"Preto",Blue:"Azul",Cancel:"Cancelar","Cannot upload file:":"Não foi possível enviar o arquivo:","Dim grey":"Cinza escuro","Dropdown toolbar":"Barra de Ferramentas da Lista Suspensa","Edit block":"Editor de bloco","Editor block content toolbar":"Barra de ferramentas de bloco do Editor","Editor contextual toolbar":"Barra de ferramentas contextuais do Editor","Editor editing area: %0":"Área de edição do editor: %0","Editor toolbar":"Ferramentas do Editor",Green:"Verde",Grey:"Cinza","Insert paragraph after block":"Inserir parágrafo após o bloco","Insert paragraph before block":"Inserir parágrafo antes do bloco","Light blue":"Azul claro","Light green":"Verde claro","Light grey":"Cinza claro",Next:"Próximo",Orange:"Laranja",Previous:"Anterior",Purple:"Púrpura",Red:"Vermelho",Redo:"Refazer","Remove color":"Remover cor","Restore default":"Restaurar padrão","Rich Text Editor":"Editor de Formatação","Rich Text Editor. Editing area: %0":"Editor de Texto Valioso. Área de edição: %0",Save:"Salvar","Select all":"Selecionar tudo","Show more items":"Exibir mais itens",Turquoise:"Turquesa",Undo:"Desfazer","Upload in progress":"Enviando dados",White:"Branco","Widget toolbar":"Ferramentas de Widgets",Yellow:"Amarelo"}),e.getPluralForm=function(r){return 0==r||1==r?0:0!=r&&r%1e6==0?1:2}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/pt.js b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/pt.js
index 55e14ae3fe..e3d0fac5b3 100644
--- a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/pt.js
+++ b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/pt.js
@@ -1 +1 @@
-!function(e){const r=e.pt=e.pt||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"%0 de %1",Aquamarine:"Verde-azulado",Black:"Preto",Blue:"Azul",Cancel:"Cancelar","Cannot upload file:":"Não foi possível carregar o ficheiro:","Dim grey":"Cinzento-escuro","Dropdown toolbar":"Barra de ferramentas do dropdown","Edit block":"Editar bloco","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Área de edição do editor: %0","Editor toolbar":"Barra de ferramentas do editor",Green:"Verde",Grey:"Cinzento","Insert paragraph after block":"Inserir parágrafo após o bloco","Insert paragraph before block":"Inserir parágrafo antes do bloco","Light blue":"Azul-claro","Light green":"Verde-claro","Light grey":"Cinzento-claro",Next:"Seguinte",Orange:"Laranja",Previous:"Anterior",Purple:"Roxo",Red:"Vermelho",Redo:"Refazer","Remove color":"Remover cor","Restore default":"Restaurar predefinição","Rich Text Editor":"Editor de texto avançado","Rich Text Editor. Editing area: %0":"Editor de Texto Formatado. Área de edição: %0",Save:"Guardar","Select all":"Selecionar todos","Show more items":"Mostrar mais itens",Turquoise:"Turquesa",Undo:"Desfazer","Upload in progress":"Carregamento em progresso",White:"Branco","Widget toolbar":"Barra de ferramentas do widget",Yellow:"Amarelo"}),r.getPluralForm=function(e){return 0==e||1==e?0:0!=e&&e%1e6==0?1:2}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(e){const r=e.pt=e.pt||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"%0 de %1",Aquamarine:"Verde-azulado",Black:"Preto",Blue:"Azul",Cancel:"Cancelar","Cannot upload file:":"Não foi possível carregar o ficheiro:","Dim grey":"Cinzento-escuro","Dropdown toolbar":"Barra de ferramentas do dropdown","Edit block":"Editar bloco","Editor block content toolbar":"Barra de ferramentas de edição do conteúdo de blocos","Editor contextual toolbar":"Barra de ferramentas contextual de edição","Editor editing area: %0":"Área de edição do editor: %0","Editor toolbar":"Barra de ferramentas do editor",Green:"Verde",Grey:"Cinzento","Insert paragraph after block":"Inserir parágrafo após o bloco","Insert paragraph before block":"Inserir parágrafo antes do bloco","Light blue":"Azul-claro","Light green":"Verde-claro","Light grey":"Cinzento-claro",Next:"Seguinte",Orange:"Laranja",Previous:"Anterior",Purple:"Roxo",Red:"Vermelho",Redo:"Refazer","Remove color":"Remover cor","Restore default":"Restaurar predefinição","Rich Text Editor":"Editor de texto avançado","Rich Text Editor. Editing area: %0":"Editor de Texto Formatado. Área de edição: %0",Save:"Guardar","Select all":"Selecionar todos","Show more items":"Mostrar mais itens",Turquoise:"Turquesa",Undo:"Desfazer","Upload in progress":"Carregamento em progresso",White:"Branco","Widget toolbar":"Barra de ferramentas do widget",Yellow:"Amarelo"}),r.getPluralForm=function(e){return 0==e||1==e?0:0!=e&&e%1e6==0?1:2}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ro.js b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ro.js
index 43b4138a76..ce5625e623 100644
--- a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ro.js
+++ b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ro.js
@@ -1 +1 @@
-!function(e){const r=e.ro=e.ro||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"%0 din %1",Aquamarine:"Acvamarin",Black:"Negru",Blue:"Albastru",Cancel:"Anulare","Cannot upload file:":"Nu se poate încărca fișierul:","Dim grey":"Gri slab","Dropdown toolbar":"Bară listă opțiuni","Edit block":"Editează bloc","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Zonă editare editor: %0","Editor toolbar":"Bară editor",Green:"Verde",Grey:"Gri","Insert paragraph after block":"Inserează un paragraf după bloc","Insert paragraph before block":"Inserează un paragraf înaintea blocului","Light blue":"Albastru deschis","Light green":"Verde deschis","Light grey":"Gri deschis",Next:"Înainte",Orange:"Portocaliu",Previous:"Înapoi",Purple:"Violet",Red:"Roșu",Redo:"Revenire","Remove color":"Șterge culoare","Restore default":"Reface la default","Rich Text Editor":"Editor de text","Rich Text Editor. Editing area: %0":"Editor Rich Text. Zonă editare: %0",Save:"Salvare","Select all":"Selectează-le pe toate","Show more items":"Arată mai multe elemente",Turquoise:"Turcoaz",Undo:"Anulare","Upload in progress":"Încărcare în curs",White:"Alb","Widget toolbar":"Bară widget",Yellow:"Galben"}),r.getPluralForm=function(e){return 1==e?0:e%100>19||e%100==0&&0!=e?2:1}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(e){const r=e.ro=e.ro||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"%0 din %1",Aquamarine:"Acvamarin",Black:"Negru",Blue:"Albastru",Cancel:"Anulare","Cannot upload file:":"Nu se poate încărca fișierul:","Dim grey":"Gri slab","Dropdown toolbar":"Bară listă opțiuni","Edit block":"Editează bloc","Editor block content toolbar":"Bară de instrumente editor pentru blocuri de conținut","Editor contextual toolbar":"Bară contextuală de instrumente editor","Editor editing area: %0":"Zonă editare editor: %0","Editor toolbar":"Bară editor",Green:"Verde",Grey:"Gri","Insert paragraph after block":"Inserează un paragraf după bloc","Insert paragraph before block":"Inserează un paragraf înaintea blocului","Light blue":"Albastru deschis","Light green":"Verde deschis","Light grey":"Gri deschis",Next:"Înainte",Orange:"Portocaliu",Previous:"Înapoi",Purple:"Violet",Red:"Roșu",Redo:"Revenire","Remove color":"Șterge culoare","Restore default":"Reface la default","Rich Text Editor":"Editor de text","Rich Text Editor. Editing area: %0":"Editor Rich Text. Zonă editare: %0",Save:"Salvare","Select all":"Selectează-le pe toate","Show more items":"Arată mai multe elemente",Turquoise:"Turcoaz",Undo:"Anulare","Upload in progress":"Încărcare în curs",White:"Alb","Widget toolbar":"Bară widget",Yellow:"Galben"}),r.getPluralForm=function(e){return 1==e?0:e%100>19||e%100==0&&0!=e?2:1}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ru.js b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ru.js
index 11c0e1036b..c4757ee786 100644
--- a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ru.js
+++ b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ru.js
@@ -1 +1 @@
-!function(o){const e=o.ru=o.ru||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 из %1",Aquamarine:"Аквамариновый",Black:"Чёрный",Blue:"Синий",Cancel:"Отмена","Cannot upload file:":"Невозможно загрузить файл","Dim grey":"Тёмно-серый","Dropdown toolbar":"Выпадающая панель инструментов","Edit block":"Редактировать блок","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Область редактирования редактора: %0","Editor toolbar":"Панель инструментов редактора",Green:"Зелёный",Grey:"Серый","Insert paragraph after block":"Вставить параграф после блока","Insert paragraph before block":"Вставить параграф перед блоком","Light blue":"Голубой","Light green":"Салатовый","Light grey":"Светло-серый",Next:"Следующий",Orange:"Оранжевый",Previous:"Предыдущий",Purple:"Фиолетовый",Red:"Красный",Redo:"Повторить","Remove color":"Убрать цвет","Restore default":"По умолчанию","Rich Text Editor":"Редактор","Rich Text Editor. Editing area: %0":"Редактор форматированного текста. Область редактирования: %0",Save:"Сохранить","Select all":"Выбрать все","Show more items":"Другие инструменты",Turquoise:"Бирюзовый",Undo:"Отменить","Upload in progress":"Идёт загрузка",White:"Белый","Widget toolbar":"Панель инструментов виджета",Yellow:"Жёлтый"}),e.getPluralForm=function(o){return o%10==1&&o%100!=11?0:o%10>=2&&o%10<=4&&(o%100<12||o%100>14)?1:o%10==0||o%10>=5&&o%10<=9||o%100>=11&&o%100<=14?2:3}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(o){const e=o.ru=o.ru||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 из %1",Aquamarine:"Аквамариновый",Black:"Чёрный",Blue:"Синий",Cancel:"Отмена","Cannot upload file:":"Невозможно загрузить файл","Dim grey":"Тёмно-серый","Dropdown toolbar":"Выпадающая панель инструментов","Edit block":"Редактировать блок","Editor block content toolbar":"Панель инструментов редактора","Editor contextual toolbar":"Контекстуальная панель инструментов редактора","Editor editing area: %0":"Область редактирования редактора: %0","Editor toolbar":"Панель инструментов редактора",Green:"Зелёный",Grey:"Серый","Insert paragraph after block":"Вставить параграф после блока","Insert paragraph before block":"Вставить параграф перед блоком","Light blue":"Голубой","Light green":"Салатовый","Light grey":"Светло-серый",Next:"Следующий",Orange:"Оранжевый",Previous:"Предыдущий",Purple:"Фиолетовый",Red:"Красный",Redo:"Повторить","Remove color":"Убрать цвет","Restore default":"По умолчанию","Rich Text Editor":"Редактор","Rich Text Editor. Editing area: %0":"Редактор форматированного текста. Область редактирования: %0",Save:"Сохранить","Select all":"Выбрать все","Show more items":"Другие инструменты",Turquoise:"Бирюзовый",Undo:"Отменить","Upload in progress":"Идёт загрузка",White:"Белый","Widget toolbar":"Панель инструментов виджета",Yellow:"Жёлтый"}),e.getPluralForm=function(o){return o%10==1&&o%100!=11?0:o%10>=2&&o%10<=4&&(o%100<12||o%100>14)?1:o%10==0||o%10>=5&&o%10<=9||o%100>=11&&o%100<=14?2:3}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/sk.js b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/sk.js
index 85ffa95a6f..95f70b2217 100644
--- a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/sk.js
+++ b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/sk.js
@@ -1 +1 @@
-!function(o){const e=o.sk=o.sk||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 z %1",Aquamarine:"Akvamarínová",Black:"Čierna",Blue:"Modrá",Cancel:"Zrušiť","Cannot upload file:":"Nie je možné nahrať súbor:","Dim grey":"Tmavosivá","Dropdown toolbar":"Panel nástrojov roletového menu","Edit block":"Upraviť odsek","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Oblasť úprav editora: %0","Editor toolbar":"Panel nástrojov editora",Green:"Zelená",Grey:"Sivá","Insert paragraph after block":"Vložiť odstavec za blok","Insert paragraph before block":"Vložiť odstavec pred blok","Light blue":"Bledomodrá","Light green":"Bledozelená","Light grey":"Bledosivá",Next:"Ďalšie",Orange:"Oranžová",Previous:"Predchádzajúce",Purple:"Fialová",Red:"Červená",Redo:"Znova","Remove color":"Zrušiť farbu","Restore default":"Obnoviť predvolené","Rich Text Editor":"Editor s formátovaním","Rich Text Editor. Editing area: %0":"Rich Text Editor. Oblasť úprav: %0",Save:"Uložiť","Select all":"Označiť všetko","Show more items":"Zobraziť viac položiek",Turquoise:"Tyrkysová",Undo:"Späť","Upload in progress":"Prebieha nahrávanie",White:"Biela","Widget toolbar":"Panel nástrojov ovládacieho prvku",Yellow:"Žltá"}),e.getPluralForm=function(o){return o%1==0&&1==o?0:o%1==0&&o>=2&&o<=4?1:o%1!=0?2:3}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(o){const e=o.sk=o.sk||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 z %1",Aquamarine:"Akvamarínová",Black:"Čierna",Blue:"Modrá",Cancel:"Zrušiť","Cannot upload file:":"Nie je možné nahrať súbor:","Dim grey":"Tmavosivá","Dropdown toolbar":"Panel nástrojov roletového menu","Edit block":"Upraviť odsek","Editor block content toolbar":"Panel s nástrojmi obsahu bloku editora","Editor contextual toolbar":"Kontextový panel nástrojov editora","Editor editing area: %0":"Oblasť úprav editora: %0","Editor toolbar":"Panel nástrojov editora",Green:"Zelená",Grey:"Sivá","Insert paragraph after block":"Vložiť odstavec za blok","Insert paragraph before block":"Vložiť odstavec pred blok","Light blue":"Bledomodrá","Light green":"Bledozelená","Light grey":"Bledosivá",Next:"Ďalšie",Orange:"Oranžová",Previous:"Predchádzajúce",Purple:"Fialová",Red:"Červená",Redo:"Znova","Remove color":"Zrušiť farbu","Restore default":"Obnoviť predvolené","Rich Text Editor":"Editor s formátovaním","Rich Text Editor. Editing area: %0":"Rich Text Editor. Oblasť úprav: %0",Save:"Uložiť","Select all":"Označiť všetko","Show more items":"Zobraziť viac položiek",Turquoise:"Tyrkysová",Undo:"Späť","Upload in progress":"Prebieha nahrávanie",White:"Biela","Widget toolbar":"Panel nástrojov ovládacieho prvku",Yellow:"Žltá"}),e.getPluralForm=function(o){return o%1==0&&1==o?0:o%1==0&&o>=2&&o<=4?1:o%1!=0?2:3}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/sr-latn.js b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/sr-latn.js
index 0a884ae208..e27db1b7b6 100644
--- a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/sr-latn.js
+++ b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/sr-latn.js
@@ -1 +1 @@
-!function(a){const e=a["sr-latn"]=a["sr-latn"]||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 of %1",Aquamarine:"Zelenkastoplava",Black:"Crna",Blue:"Plava",Cancel:"Odustani","Cannot upload file:":"Postavljanje fajla je neuspešno:","Dim grey":"Bledo siva","Dropdown toolbar":"Padajuća traka sa alatkama","Edit block":"Blok uređivač","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"","Editor toolbar":"Uređivač traka sa alatkama",Green:"Zelena",Grey:"Siva","Insert paragraph after block":"Уметните одломак после блока","Insert paragraph before block":"Уметните одломак пре блока","Light blue":"Svetloplava","Light green":"Svetlo zelena","Light grey":"Svetlo siva",Next:"Sledeći",Orange:"Narandžasta",Previous:"Prethodni",Purple:"Ljubičasta",Red:"Crvena",Redo:"Ponovo","Remove color":"Otkloni boju","Restore default":"Vrati podrazumevano","Rich Text Editor":"Prošireni uređivač teksta","Rich Text Editor. Editing area: %0":"",Save:"Sačuvaj","Select all":"Označi sve","Show more items":"Prikaži još stavki",Turquoise:"Tirkizna",Undo:"Povlačenje","Upload in progress":"Postavljanje u toku",White:"Bela","Widget toolbar":"Видгет трака са алаткама",Yellow:"Žuta"}),e.getPluralForm=function(a){return a%10==1&&a%100!=11?0:a%10>=2&&a%10<=4&&(a%100<10||a%100>=20)?1:2}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(a){const e=a["sr-latn"]=a["sr-latn"]||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 of %1",Aquamarine:"Zelenkastoplava",Black:"Crna",Blue:"Plava",Cancel:"Odustani","Cannot upload file:":"Postavljanje fajla je neuspešno:","Dim grey":"Bledo siva","Dropdown toolbar":"Padajuća traka sa alatkama","Edit block":"Blok uređivač","Editor block content toolbar":"Traka sa alatkama za blokiranje sadržaja uređivača","Editor contextual toolbar":"Kontekstualna traka sa alatkama Editor","Editor editing area: %0":"Oblast za uređivanje urednika: %0","Editor toolbar":"Uređivač traka sa alatkama",Green:"Zelena",Grey:"Siva","Insert paragraph after block":"Уметните одломак после блока","Insert paragraph before block":"Уметните одломак пре блока","Light blue":"Svetloplava","Light green":"Svetlo zelena","Light grey":"Svetlo siva",Next:"Sledeći",Orange:"Narandžasta",Previous:"Prethodni",Purple:"Ljubičasta",Red:"Crvena",Redo:"Ponovo","Remove color":"Otkloni boju","Restore default":"Vrati podrazumevano","Rich Text Editor":"Prošireni uređivač teksta","Rich Text Editor. Editing area: %0":"",Save:"Sačuvaj","Select all":"Označi sve","Show more items":"Prikaži još stavki",Turquoise:"Tirkizna",Undo:"Povlačenje","Upload in progress":"Postavljanje u toku",White:"Bela","Widget toolbar":"Видгет трака са алаткама",Yellow:"Žuta"}),e.getPluralForm=function(a){return a%10==1&&a%100!=11?0:a%10>=2&&a%10<=4&&(a%100<10||a%100>=20)?1:2}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/sr.js b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/sr.js
index 300d97c298..ccad857004 100644
--- a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/sr.js
+++ b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/sr.js
@@ -1 +1 @@
-!function(e){const o=e.sr=e.sr||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"%0 of %1",Aquamarine:"Зеленкастоплава",Black:"Црна",Blue:"Плава",Cancel:"Одустани","Cannot upload file:":"Постављање фајла је неуспешно:","Dim grey":"Бледо сива","Dropdown toolbar":"Падајућа трака са алаткама","Edit block":"Блок уређивач","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Uređivačev prostor za uređivanje: %0","Editor toolbar":"Уређивач трака са алаткама",Green:"Зелена",Grey:"Сива","Insert paragraph after block":"Umetnite odlomak posle bloka","Insert paragraph before block":"Umetnite odlomak pre bloka","Light blue":"Светлоплава","Light green":"Светлозелена","Light grey":"Светло сива",Next:"Следећи",Orange:"Нараџаста",Previous:"Претходни",Purple:"Љубичаста",Red:"Црвена",Redo:"Поново","Remove color":"Отклони боју","Restore default":"Врати подразумевано","Rich Text Editor":"Проширен уређивач текста","Rich Text Editor. Editing area: %0":"Uređivač obogaćenog teksta. Prostor za uređivanje: %0",Save:"Сачувај","Select all":"Означи све.","Show more items":"Прикажи још ставки",Turquoise:"Тиркизна",Undo:"Повлачење","Upload in progress":"Постављање у току",White:"Бела","Widget toolbar":"Widget traka sa alatkama",Yellow:"Жута"}),o.getPluralForm=function(e){return e%10==1&&e%100!=11?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(o){const e=o.sr=o.sr||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 of %1",Aquamarine:"Зеленкастоплава",Black:"Црна",Blue:"Плава",Cancel:"Одустани","Cannot upload file:":"Постављање фајла је неуспешно:","Dim grey":"Бледо сива","Dropdown toolbar":"Падајућа трака са алаткама","Edit block":"Блок уређивач","Editor block content toolbar":"Трака са алаткама за блокирање садржаја уређивача","Editor contextual toolbar":"Контекстуална трака са алаткама Едитор","Editor editing area: %0":"Област за уређивање уредника: %0","Editor toolbar":"Уређивач трака са алаткама",Green:"Зелена",Grey:"Сива","Insert paragraph after block":"Umetnite odlomak posle bloka","Insert paragraph before block":"Umetnite odlomak pre bloka","Light blue":"Светлоплава","Light green":"Светлозелена","Light grey":"Светло сива",Next:"Следећи",Orange:"Нараџаста",Previous:"Претходни",Purple:"Љубичаста",Red:"Црвена",Redo:"Поново","Remove color":"Отклони боју","Restore default":"Врати подразумевано","Rich Text Editor":"Проширен уређивач текста","Rich Text Editor. Editing area: %0":"Uređivač obogaćenog teksta. Prostor za uređivanje: %0",Save:"Сачувај","Select all":"Означи све.","Show more items":"Прикажи још ставки",Turquoise:"Тиркизна",Undo:"Повлачење","Upload in progress":"Постављање у току",White:"Бела","Widget toolbar":"Widget traka sa alatkama",Yellow:"Жута"}),e.getPluralForm=function(o){return o%10==1&&o%100!=11?0:o%10>=2&&o%10<=4&&(o%100<10||o%100>=20)?1:2}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/sv.js b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/sv.js
index 5341b88efb..48a399a646 100644
--- a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/sv.js
+++ b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/sv.js
@@ -1 +1 @@
-!function(e){const r=e.sv=e.sv||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"%0 av %1",Aquamarine:"Akvamarin",Black:"Svart",Blue:"Blå",Cancel:"Avbryt","Cannot upload file:":"Kan inte ladda upp fil:","Dim grey":"Dunkelgrå","Dropdown toolbar":"Rullgardinsverktygsfält","Edit block":"Redigera block","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Ordbehandlares redigeringsområde: %0","Editor toolbar":"Redigeringsverktygsfält",Green:"Grön",Grey:"Grå","Insert paragraph after block":"Infoga stycke efter block","Insert paragraph before block":"Infoga stycke före block","Light blue":"Ljusblå","Light green":"Ljusgrön","Light grey":"Ljusgrå",Next:"Nästa",Orange:"Orange",Previous:"Föregående",Purple:"Lila",Red:"Röd",Redo:"Gör om","Remove color":"Ta bort färg","Restore default":"Återställ standard","Rich Text Editor":"Rich Text-editor","Rich Text Editor. Editing area: %0":"RTF-redigerare. Redigeringsområde: %0",Save:"Spara","Select all":"Välj alla","Show more items":"Visa fler objekt",Turquoise:"Turkos",Undo:"Ångra","Upload in progress":"Uppladdning pågår",White:"Vit","Widget toolbar":"Widgetverktygsfält",Yellow:"Gul"}),r.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(e){const r=e.sv=e.sv||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"%0 av %1",Aquamarine:"Akvamarin",Black:"Svart",Blue:"Blå",Cancel:"Avbryt","Cannot upload file:":"Kan inte ladda upp fil:","Dim grey":"Dunkelgrå","Dropdown toolbar":"Rullgardinsverktygsfält","Edit block":"Redigera block","Editor block content toolbar":"Verktygsfält vid block av innehåll","Editor contextual toolbar":"Ordbehandlarens kontextuella verktygsfält","Editor editing area: %0":"Ordbehandlares redigeringsområde: %0","Editor toolbar":"Redigeringsverktygsfält",Green:"Grön",Grey:"Grå","Insert paragraph after block":"Infoga stycke efter block","Insert paragraph before block":"Infoga stycke före block","Light blue":"Ljusblå","Light green":"Ljusgrön","Light grey":"Ljusgrå",Next:"Nästa",Orange:"Orange",Previous:"Föregående",Purple:"Lila",Red:"Röd",Redo:"Gör om","Remove color":"Ta bort färg","Restore default":"Återställ standard","Rich Text Editor":"Rich Text-editor","Rich Text Editor. Editing area: %0":"RTF-redigerare. Redigeringsområde: %0",Save:"Spara","Select all":"Välj alla","Show more items":"Visa fler objekt",Turquoise:"Turkos",Undo:"Ångra","Upload in progress":"Uppladdning pågår",White:"Vit","Widget toolbar":"Widgetverktygsfält",Yellow:"Gul"}),r.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/th.js b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/th.js
index 464133b540..4b34de6d69 100644
--- a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/th.js
+++ b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/th.js
@@ -1 +1 @@
-!function(e){const o=e.th=e.th||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"%0 จาก %1",Aquamarine:"พลอยสีฟ้า",Black:"สีดำ",Blue:"สีน้ำเงิน",Cancel:"ยกเลิก","Cannot upload file:":"ไม่สามารถอัปโหลดไฟล์ได้:","Dim grey":"สีเทาเข้ม","Dropdown toolbar":"แถบเครื่องมือแบบเลื่อนลง","Edit block":"แก้ไขบล็อก","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"พื้นที่แก้ไขของตัวแก้ไข: %0","Editor toolbar":"แถบเครื่องมือแก้ไข",Green:"สีเขียว",Grey:"สีเทา","Insert paragraph after block":"แทรกย่อหน้าหลังบล็อก","Insert paragraph before block":"แทรกย่อหน้าก่อนบล็อก","Light blue":"สีฟ้า","Light green":"สีเขียวอ่อน","Light grey":"สีเทาอ่อน",Next:"ถัดไป",Orange:"สีส้ม",Previous:"ก่อนหน้า",Purple:"สีม่วง",Red:"สีแดง",Redo:"ทำซ้ำ","Remove color":"ลบสี","Restore default":"คืนค่าเริ่มต้น","Rich Text Editor":"โปรแกรมแก้ไข Rich Text","Rich Text Editor. Editing area: %0":"ตัวแก้ไข Rich Text พื้นที่แก้ไข: %0",Save:"บันทึก","Select all":"เลือกทั้งหมด","Show more items":"แสดงรายการเพิ่มเติม",Turquoise:"สีเขียวขุ่น",Undo:"ย้อนกลับ","Upload in progress":"กำลังดำเนินการอัปโหลด",White:"สีขาว","Widget toolbar":"แถมเครื่องมือวิดเจ็ต",Yellow:"สีเหลือง"}),o.getPluralForm=function(e){return 0}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(e){const o=e.th=e.th||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"%0 จาก %1",Aquamarine:"พลอยสีฟ้า",Black:"สีดำ",Blue:"สีน้ำเงิน",Cancel:"ยกเลิก","Cannot upload file:":"ไม่สามารถอัปโหลดไฟล์ได้:","Dim grey":"สีเทาเข้ม","Dropdown toolbar":"แถบเครื่องมือแบบเลื่อนลง","Edit block":"แก้ไขบล็อก","Editor block content toolbar":"แถบเครื่องมือแก้ไขบล็อกเนื้อหา","Editor contextual toolbar":"แถบเครื่องมือแก้ไขข้อความ","Editor editing area: %0":"พื้นที่แก้ไขของตัวแก้ไข: %0","Editor toolbar":"แถบเครื่องมือแก้ไข",Green:"สีเขียว",Grey:"สีเทา","Insert paragraph after block":"แทรกย่อหน้าหลังบล็อก","Insert paragraph before block":"แทรกย่อหน้าก่อนบล็อก","Light blue":"สีฟ้า","Light green":"สีเขียวอ่อน","Light grey":"สีเทาอ่อน",Next:"ถัดไป",Orange:"สีส้ม",Previous:"ก่อนหน้า",Purple:"สีม่วง",Red:"สีแดง",Redo:"ทำซ้ำ","Remove color":"ลบสี","Restore default":"คืนค่าเริ่มต้น","Rich Text Editor":"โปรแกรมแก้ไข Rich Text","Rich Text Editor. Editing area: %0":"ตัวแก้ไข Rich Text พื้นที่แก้ไข: %0",Save:"บันทึก","Select all":"เลือกทั้งหมด","Show more items":"แสดงรายการเพิ่มเติม",Turquoise:"สีเขียวขุ่น",Undo:"ย้อนกลับ","Upload in progress":"กำลังดำเนินการอัปโหลด",White:"สีขาว","Widget toolbar":"แถมเครื่องมือวิดเจ็ต",Yellow:"สีเหลือง"}),o.getPluralForm=function(e){return 0}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/tr.js b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/tr.js
index e535d9309d..f8df81d046 100644
--- a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/tr.js
+++ b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/tr.js
@@ -1 +1 @@
-!function(e){const r=e.tr=e.tr||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"%0/%1",Aquamarine:"Su Yeşili",Black:"Siyah",Blue:"Mavi",Cancel:"İptal","Cannot upload file:":"Dosya yüklenemedi:","Dim grey":"Koyu Gri","Dropdown toolbar":"Açılır araç çubuğu","Edit block":"Bloğu Düzenle","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Editör düzenleme alanı: %0","Editor toolbar":"Düzenleme araç çubuğu",Green:"Yeşil",Grey:"Gri","Insert paragraph after block":"Bloktan sonra paragraf ekle","Insert paragraph before block":"Bloktan önce paragraf ekle","Light blue":"Açık Mavi","Light green":"Açık Yeşil","Light grey":"Açık Gri",Next:"Sonraki",Orange:"Turuncu",Previous:"Önceki",Purple:"Mor",Red:"Kırmızı",Redo:"Tekrar yap","Remove color":"Rengi Sil","Restore default":"Varsayılanı geri yükle","Rich Text Editor":"Zengin İçerik Editörü","Rich Text Editor. Editing area: %0":"Zengin Metin Editörü.Düzenleme alanı: %0",Save:"Kaydet","Select all":"Hepsini seç","Show more items":"Daha fazla öğe göster",Turquoise:"Turkuaz",Undo:"Geri al","Upload in progress":"Yükleme işlemi devam ediyor",White:"Beyaz","Widget toolbar":"Bileşen araç çubuğu",Yellow:"Sarı"}),r.getPluralForm=function(e){return e>1}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(e){const r=e.tr=e.tr||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"%0/%1",Aquamarine:"Su Yeşili",Black:"Siyah",Blue:"Mavi",Cancel:"İptal","Cannot upload file:":"Dosya yüklenemedi:","Dim grey":"Koyu Gri","Dropdown toolbar":"Açılır araç çubuğu","Edit block":"Bloğu Düzenle","Editor block content toolbar":"Düzenleyici engelleme içerik araç çubuğu","Editor contextual toolbar":"Düzenleyici içeriksel araç çubuğu","Editor editing area: %0":"Editör düzenleme alanı: %0","Editor toolbar":"Düzenleme araç çubuğu",Green:"Yeşil",Grey:"Gri","Insert paragraph after block":"Bloktan sonra paragraf ekle","Insert paragraph before block":"Bloktan önce paragraf ekle","Light blue":"Açık Mavi","Light green":"Açık Yeşil","Light grey":"Açık Gri",Next:"Sonraki",Orange:"Turuncu",Previous:"Önceki",Purple:"Mor",Red:"Kırmızı",Redo:"Tekrar yap","Remove color":"Rengi Sil","Restore default":"Varsayılanı geri yükle","Rich Text Editor":"Zengin İçerik Editörü","Rich Text Editor. Editing area: %0":"Zengin Metin Editörü.Düzenleme alanı: %0",Save:"Kaydet","Select all":"Hepsini seç","Show more items":"Daha fazla öğe göster",Turquoise:"Turkuaz",Undo:"Geri al","Upload in progress":"Yükleme işlemi devam ediyor",White:"Beyaz","Widget toolbar":"Bileşen araç çubuğu",Yellow:"Sarı"}),r.getPluralForm=function(e){return e>1}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/uk.js b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/uk.js
index 70f8d5ced7..a07e34cfff 100644
--- a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/uk.js
+++ b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/uk.js
@@ -1 +1 @@
-!function(e){const o=e.uk=e.uk||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"%0 із %1",Aquamarine:"Аквамариновий",Black:"Чорний",Blue:"Синій",Cancel:"Відміна","Cannot upload file:":"Неможливо завантажити файл:","Dim grey":"Темно-сірий","Dropdown toolbar":"Випадаюча панель інструментів","Edit block":"Редагувати блок","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Область редагування редактора: %0","Editor toolbar":"Панель інструментів редактора",Green:"Зелений",Grey:"Сірий","Insert paragraph after block":"Додати абзац після блока","Insert paragraph before block":"Додати абзац перед блоком","Light blue":"Світло-синій","Light green":"Світло-зелений","Light grey":"Світло-сірий",Next:"Наступний",Orange:"Помаранчевий",Previous:"Попередній",Purple:"Фіолетовий",Red:"Червоний",Redo:"Повтор","Remove color":"Видалити колір","Restore default":"Відновити за замовчуванням","Rich Text Editor":"Розширений текстовий редактор","Rich Text Editor. Editing area: %0":"Редактор Rich Text. Область редагування: %0",Save:"Зберегти","Select all":"Вибрати все","Show more items":"Показати більше",Turquoise:"Бірюзовий",Undo:"Відміна","Upload in progress":"Виконується завантаження",White:"Білий","Widget toolbar":"Панель інструментів віджетів",Yellow:"Жовтий"}),o.getPluralForm=function(e){return e%1==0&&e%10==1&&e%100!=11?0:e%1==0&&e%10>=2&&e%10<=4&&(e%100<12||e%100>14)?1:e%1==0&&(e%10==0||e%10>=5&&e%10<=9||e%100>=11&&e%100<=14)?2:3}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(e){const o=e.uk=e.uk||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"%0 із %1",Aquamarine:"Аквамариновий",Black:"Чорний",Blue:"Синій",Cancel:"Відміна","Cannot upload file:":"Неможливо завантажити файл:","Dim grey":"Темно-сірий","Dropdown toolbar":"Випадаюча панель інструментів","Edit block":"Редагувати блок","Editor block content toolbar":"Панель інструментів вмісту блоку редактора","Editor contextual toolbar":"Контекстна панель інструментів редактора","Editor editing area: %0":"Область редагування редактора: %0","Editor toolbar":"Панель інструментів редактора",Green:"Зелений",Grey:"Сірий","Insert paragraph after block":"Додати абзац після блока","Insert paragraph before block":"Додати абзац перед блоком","Light blue":"Світло-синій","Light green":"Світло-зелений","Light grey":"Світло-сірий",Next:"Наступний",Orange:"Помаранчевий",Previous:"Попередній",Purple:"Фіолетовий",Red:"Червоний",Redo:"Повтор","Remove color":"Видалити колір","Restore default":"Відновити за замовчуванням","Rich Text Editor":"Розширений текстовий редактор","Rich Text Editor. Editing area: %0":"Редактор Rich Text. Область редагування: %0",Save:"Зберегти","Select all":"Вибрати все","Show more items":"Показати більше",Turquoise:"Бірюзовий",Undo:"Відміна","Upload in progress":"Виконується завантаження",White:"Білий","Widget toolbar":"Панель інструментів віджетів",Yellow:"Жовтий"}),o.getPluralForm=function(e){return e%1==0&&e%10==1&&e%100!=11?0:e%1==0&&e%10>=2&&e%10<=4&&(e%100<12||e%100>14)?1:e%1==0&&(e%10==0||e%10>=5&&e%10<=9||e%100>=11&&e%100<=14)?2:3}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/vi.js b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/vi.js
index ae57bb5508..4dfe262283 100644
--- a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/vi.js
+++ b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/vi.js
@@ -1 +1 @@
-!function(n){const t=n.vi=n.vi||{};t.dictionary=Object.assign(t.dictionary||{},{"%0 of %1":"%0 đến %1",Aquamarine:"Xanh ngọc biển",Black:"Đen",Blue:"Xanh biển",Cancel:"Hủy","Cannot upload file:":"Không thể tải file:","Dim grey":"Xám mờ","Dropdown toolbar":"Thanh công cụ danh mục","Edit block":"Chỉnh sửa đoạn","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Vùng chỉnh sửa của trình chỉnh sửa: %0","Editor toolbar":"Thanh công cụ biên tập",Green:"Xanh lá",Grey:"Xám","Insert paragraph after block":"Chèn đoạn sau khối","Insert paragraph before block":"Chèn đoạn trước khối","Light blue":"Xanh dương","Light green":"Xanh lá nhạt","Light grey":"Xám nhạt",Next:"Tiếp theo",Orange:"Cam",Previous:"Quay lại",Purple:"Tím",Red:"Đỏ",Redo:"Tiếp tục","Remove color":"Xóa màu","Restore default":"Khôi phục giá trị mặc định","Rich Text Editor":"Trình soạn thảo văn bản","Rich Text Editor. Editing area: %0":"Trình chỉnh sửa Văn bản dạng RTF. Vùng chỉnh sửa:  %0",Save:"Lưu","Select all":"Chọn tất cả","Show more items":"Xem thêm",Turquoise:"Xanh ngọc bích",Undo:"Hoàn tác","Upload in progress":"Đang tải lên",White:"Trắng","Widget toolbar":"Thanh công cụ tiện ích",Yellow:"Vàng"}),t.getPluralForm=function(n){return 0}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(n){const h=n.vi=n.vi||{};h.dictionary=Object.assign(h.dictionary||{},{"%0 of %1":"%0 đến %1",Aquamarine:"Xanh ngọc biển",Black:"Đen",Blue:"Xanh biển",Cancel:"Hủy","Cannot upload file:":"Không thể tải file:","Dim grey":"Xám mờ","Dropdown toolbar":"Thanh công cụ danh mục","Edit block":"Chỉnh sửa đoạn","Editor block content toolbar":"Thanh công cụ chỉnh sửa khối nội dung","Editor contextual toolbar":"Thanh công cụ chỉnh sửa theo ngữ cảnh","Editor editing area: %0":"Vùng chỉnh sửa của trình chỉnh sửa: %0","Editor toolbar":"Thanh công cụ biên tập",Green:"Xanh lá",Grey:"Xám","Insert paragraph after block":"Chèn đoạn sau khối","Insert paragraph before block":"Chèn đoạn trước khối","Light blue":"Xanh dương","Light green":"Xanh lá nhạt","Light grey":"Xám nhạt",Next:"Tiếp theo",Orange:"Cam",Previous:"Quay lại",Purple:"Tím",Red:"Đỏ",Redo:"Tiếp tục","Remove color":"Xóa màu","Restore default":"Khôi phục giá trị mặc định","Rich Text Editor":"Trình soạn thảo văn bản","Rich Text Editor. Editing area: %0":"Trình chỉnh sửa Văn bản dạng RTF. Vùng chỉnh sửa:  %0",Save:"Lưu","Select all":"Chọn tất cả","Show more items":"Xem thêm",Turquoise:"Xanh ngọc bích",Undo:"Hoàn tác","Upload in progress":"Đang tải lên",White:"Trắng","Widget toolbar":"Thanh công cụ tiện ích",Yellow:"Vàng"}),h.getPluralForm=function(n){return 0}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/zh-cn.js b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/zh-cn.js
index 3a4c144856..1cb999fda3 100644
--- a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/zh-cn.js
+++ b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/zh-cn.js
@@ -1 +1 @@
-!function(o){const e=o["zh-cn"]=o["zh-cn"]||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"第 %0 步，共 %1 步",Aquamarine:"海蓝色",Black:"黑色",Blue:"蓝色",Cancel:"取消","Cannot upload file:":"无法上传的文件：","Dim grey":"暗灰色","Dropdown toolbar":"下拉工具栏","Edit block":"编辑框","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"编辑器编辑区域：%0","Editor toolbar":"编辑器工具栏",Green:"绿色",Grey:"灰色","Insert paragraph after block":"在后面插入段落","Insert paragraph before block":"在前面插入段落","Light blue":"浅蓝色","Light green":"浅绿色","Light grey":"浅灰色",Next:"下一步",Orange:"橙色",Previous:"上一步",Purple:"紫色",Red:"红色",Redo:"重做","Remove color":"移除颜色","Restore default":"恢复默认","Rich Text Editor":"富文本编辑器","Rich Text Editor. Editing area: %0":"富文本编辑器。编辑区域：%0",Save:"保存","Select all":"全选","Show more items":"显示更多",Turquoise:"青色",Undo:"撤销","Upload in progress":"正在上传",White:"白色","Widget toolbar":"小部件工具栏",Yellow:"黄色"}),e.getPluralForm=function(o){return 0}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(o){const e=o["zh-cn"]=o["zh-cn"]||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"第 %0 步，共 %1 步",Aquamarine:"海蓝色",Black:"黑色",Blue:"蓝色",Cancel:"取消","Cannot upload file:":"无法上传的文件：","Dim grey":"暗灰色","Dropdown toolbar":"下拉工具栏","Edit block":"编辑框","Editor block content toolbar":"编辑器块内容工具栏","Editor contextual toolbar":"编辑器上下文工具栏","Editor editing area: %0":"编辑器编辑区域：%0","Editor toolbar":"编辑器工具栏",Green:"绿色",Grey:"灰色","Insert paragraph after block":"在后面插入段落","Insert paragraph before block":"在前面插入段落","Light blue":"浅蓝色","Light green":"浅绿色","Light grey":"浅灰色",Next:"下一步",Orange:"橙色",Previous:"上一步",Purple:"紫色",Red:"红色",Redo:"重做","Remove color":"移除颜色","Restore default":"恢复默认","Rich Text Editor":"富文本编辑器","Rich Text Editor. Editing area: %0":"富文本编辑器。编辑区域：%0",Save:"保存","Select all":"全选","Show more items":"显示更多",Turquoise:"青色",Undo:"撤销","Upload in progress":"正在上传",White:"白色","Widget toolbar":"小部件工具栏",Yellow:"黄色"}),e.getPluralForm=function(o){return 0}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/zh.js b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/zh.js
index 107ffc2bbb..91321cc967 100644
--- a/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/zh.js
+++ b/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/zh.js
@@ -1 +1 @@
-!function(o){const e=o.zh=o.zh||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0/%1",Aquamarine:"淺綠色",Black:"黑色",Blue:"藍色",Cancel:"取消","Cannot upload file:":"無法上傳檔案：","Dim grey":"淡灰色","Dropdown toolbar":"下拉選單","Edit block":"編輯區塊","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"編輯器編輯區：%0","Editor toolbar":"編輯器工具",Green:"綠色",Grey:"灰色","Insert paragraph after block":"在這個區塊後面插入一個段落","Insert paragraph before block":"在這個區塊前面插入一個段落","Light blue":"亮藍色","Light green":"亮綠色","Light grey":"亮灰色",Next:"下一",Orange:"橘色",Previous:"上一",Purple:"紫色",Red:"紅色",Redo:"重做","Remove color":"移除顏色","Restore default":"重設至預設值","Rich Text Editor":"豐富文字編輯器","Rich Text Editor. Editing area: %0":"RTF 編輯器。編輯區：%0",Save:"儲存","Select all":"選取全部","Show more items":"顯示更多",Turquoise:"藍綠色",Undo:"取消","Upload in progress":"正在上傳",White:"白色","Widget toolbar":"小工具",Yellow:"黃色"}),e.getPluralForm=function(o){return 0}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(o){const e=o.zh=o.zh||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0/%1",Aquamarine:"淺綠色",Black:"黑色",Blue:"藍色",Cancel:"取消","Cannot upload file:":"無法上傳檔案：","Dim grey":"淡灰色","Dropdown toolbar":"下拉選單","Edit block":"編輯區塊","Editor block content toolbar":"編輯器區塊內容工具列","Editor contextual toolbar":"編輯器關聯式工具列","Editor editing area: %0":"編輯器編輯區：%0","Editor toolbar":"編輯器工具",Green:"綠色",Grey:"灰色","Insert paragraph after block":"在這個區塊後面插入一個段落","Insert paragraph before block":"在這個區塊前面插入一個段落","Light blue":"亮藍色","Light green":"亮綠色","Light grey":"亮灰色",Next:"下一",Orange:"橘色",Previous:"上一",Purple:"紫色",Red:"紅色",Redo:"重做","Remove color":"移除顏色","Restore default":"重設至預設值","Rich Text Editor":"豐富文字編輯器","Rich Text Editor. Editing area: %0":"RTF 編輯器。編輯區：%0",Save:"儲存","Select all":"選取全部","Show more items":"顯示更多",Turquoise:"藍綠色",Undo:"取消","Upload in progress":"正在上傳",White:"白色","Widget toolbar":"小工具",Yellow:"黃色"}),e.getPluralForm=function(o){return 0}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/code-block/translations/es-co.js b/core/assets/vendor/ckeditor5/code-block/translations/es-co.js
new file mode 100644
index 0000000000..ce36954dc2
--- /dev/null
+++ b/core/assets/vendor/ckeditor5/code-block/translations/es-co.js
@@ -0,0 +1 @@
+!function(o){const n=o["es-co"]=o["es-co"]||{};n.dictionary=Object.assign(n.dictionary||{},{"Insert code block":"Insertar bloque de código","Plain text":"Texto plano"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/heading/translations/ko.js b/core/assets/vendor/ckeditor5/heading/translations/ko.js
index 5b425e6580..8ef688a6be 100644
--- a/core/assets/vendor/ckeditor5/heading/translations/ko.js
+++ b/core/assets/vendor/ckeditor5/heading/translations/ko.js
@@ -1 +1 @@
-!function(n){const e=n.ko=n.ko||{};e.dictionary=Object.assign(e.dictionary||{},{"Choose heading":"제목 선택",Heading:"제목","Heading 1":"제목 1","Heading 2":"제목 2","Heading 3":"제목 3","Heading 4":"제목 4","Heading 5":"제목 5","Heading 6":"제목 6",Paragraph:"문단","Type or paste your content here.":"여기에 내용을 입력하거나 붙여넣기 하세요.","Type your title":"제목을 입력해주세요"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(n){const e=n.ko=n.ko||{};e.dictionary=Object.assign(e.dictionary||{},{"Choose heading":"제목 선택",Heading:"제목","Heading 1":"제목 1","Heading 2":"제목 2","Heading 3":"제목 3","Heading 4":"제목 4","Heading 5":"제목 5","Heading 6":"제목 6",Paragraph:"문단","Type or paste your content here.":"여기에 내용을 입력하거나 붙여넣으세요.","Type your title":"제목을 입력해주세요"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/html-support/html-support.js b/core/assets/vendor/ckeditor5/html-support/html-support.js
index efcfba623d..4395863a6f 100644
--- a/core/assets/vendor/ckeditor5/html-support/html-support.js
+++ b/core/assets/vendor/ckeditor5/html-support/html-support.js
@@ -2,4 +2,4 @@
 /*!
  * @license Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
  * For licensing, see LICENSE.md.
- */(()=>{var t={142:(t,e,r)=>{"use strict";r.d(e,{Z:()=>i});var o=r(609),n=r.n(o)()((function(t){return t[1]}));n.push([t.id,":root{--ck-html-object-embed-unfocused-outline-width:1px}.ck-widget.html-object-embed{background-color:var(--ck-color-base-foreground);font-size:var(--ck-font-size-base);min-width:calc(76px + var(--ck-spacing-standard));padding:var(--ck-spacing-small);padding-top:calc(var(--ck-font-size-tiny) + var(--ck-spacing-large))}.ck-widget.html-object-embed:not(.ck-widget_selected):not(:hover){outline:var(--ck-html-object-embed-unfocused-outline-width) dashed var(--ck-color-widget-blurred-border)}.ck-widget.html-object-embed:before{background:#999;border-radius:0 0 var(--ck-border-radius) var(--ck-border-radius);color:var(--ck-color-base-background);content:attr(data-html-object-embed-label);font-family:var(--ck-font-face);font-size:var(--ck-font-size-tiny);font-style:normal;font-weight:400;left:var(--ck-spacing-standard);padding:calc(var(--ck-spacing-tiny) + var(--ck-html-object-embed-unfocused-outline-width)) var(--ck-spacing-small) var(--ck-spacing-tiny);position:absolute;top:0;transition:background var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve)}.ck-widget.html-object-embed .ck-widget__type-around .ck-widget__type-around__button.ck-widget__type-around__button_before{margin-left:50px}.ck-widget.html-object-embed .html-object-embed__content{pointer-events:none}div.ck-widget.html-object-embed{margin:1em auto}span.ck-widget.html-object-embed{display:inline-block}",""]);const i=n},609:t=>{"use strict";t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var r=t(e);return e[2]?"@media ".concat(e[2]," {").concat(r,"}"):r})).join("")},e.i=function(t,r,o){"string"==typeof t&&(t=[[null,t,""]]);var n={};if(o)for(var i=0;i<this.length;i++){var l=this[i][0];null!=l&&(n[l]=!0)}for(var s=0;s<t.length;s++){var c=[].concat(t[s]);o&&n[c[0]]||(r&&(c[2]?c[2]="".concat(r," and ").concat(c[2]):c[2]=r),e.push(c))}},e}},62:(t,e,r)=>{"use strict";var o,n=function(){return void 0===o&&(o=Boolean(window&&document&&document.all&&!window.atob)),o},i=function(){var t={};return function(e){if(void 0===t[e]){var r=document.querySelector(e);if(window.HTMLIFrameElement&&r instanceof window.HTMLIFrameElement)try{r=r.contentDocument.head}catch(t){r=null}t[e]=r}return t[e]}}(),l=[];function s(t){for(var e=-1,r=0;r<l.length;r++)if(l[r].identifier===t){e=r;break}return e}function c(t,e){for(var r={},o=[],n=0;n<t.length;n++){var i=t[n],c=e.base?i[0]+e.base:i[0],a=r[c]||0,u="".concat(c," ").concat(a);r[c]=a+1;var m=s(u),d={css:i[1],media:i[2],sourceMap:i[3]};-1!==m?(l[m].references++,l[m].updater(d)):l.push({identifier:u,updater:p(d,e),references:1}),o.push(u)}return o}function a(t){var e=document.createElement("style"),o=t.attributes||{};if(void 0===o.nonce){var n=r.nc;n&&(o.nonce=n)}if(Object.keys(o).forEach((function(t){e.setAttribute(t,o[t])})),"function"==typeof t.insert)t.insert(e);else{var l=i(t.insert||"head");if(!l)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");l.appendChild(e)}return e}var u,m=(u=[],function(t,e){return u[t]=e,u.filter(Boolean).join("\n")});function d(t,e,r,o){var n=r?"":o.media?"@media ".concat(o.media," {").concat(o.css,"}"):o.css;if(t.styleSheet)t.styleSheet.cssText=m(e,n);else{var i=document.createTextNode(n),l=t.childNodes;l[e]&&t.removeChild(l[e]),l.length?t.insertBefore(i,l[e]):t.appendChild(i)}}function h(t,e,r){var o=r.css,n=r.media,i=r.sourceMap;if(n?t.setAttribute("media",n):t.removeAttribute("media"),i&&"undefined"!=typeof btoa&&(o+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(i))))," */")),t.styleSheet)t.styleSheet.cssText=o;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(o))}}var f=null,b=0;function p(t,e){var r,o,n;if(e.singleton){var i=b++;r=f||(f=a(e)),o=d.bind(null,r,i,!1),n=d.bind(null,r,i,!0)}else r=a(e),o=h.bind(null,r,e),n=function(){!function(t){if(null===t.parentNode)return!1;t.parentNode.removeChild(t)}(r)};return o(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;o(t=e)}else n()}}t.exports=function(t,e){(e=e||{}).singleton||"boolean"==typeof e.singleton||(e.singleton=n());var r=c(t=t||[],e);return function(t){if(t=t||[],"[object Array]"===Object.prototype.toString.call(t)){for(var o=0;o<r.length;o++){var n=s(r[o]);l[n].references--}for(var i=c(t,e),a=0;a<r.length;a++){var u=s(r[a]);0===l[u].references&&(l[u].updater(),l.splice(u,1))}r=i}}}},704:(t,e,r)=>{t.exports=r(79)("./src/core.js")},492:(t,e,r)=>{t.exports=r(79)("./src/engine.js")},209:(t,e,r)=>{t.exports=r(79)("./src/utils.js")},995:(t,e,r)=>{t.exports=r(79)("./src/widget.js")},79:t=>{"use strict";t.exports=CKEditor5.dll}},e={};function r(o){var n=e[o];if(void 0!==n)return n.exports;var i=e[o]={id:o,exports:{}};return t[o](i,i.exports,r),i.exports}r.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return r.d(e,{a:e}),e},r.d=(t,e)=>{for(var o in e)r.o(e,o)&&!r.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:e[o]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.nc=void 0;var o={};(()=>{"use strict";r.r(o),r.d(o,{DataFilter:()=>po,DataSchema:()=>He,GeneralHtmlSupport:()=>rn,HtmlComment:()=>ln});var t=r(704),e=r(209);const n=[{model:"codeBlock",view:"pre"},{model:"paragraph",view:"p"},{model:"blockQuote",view:"blockquote"},{model:"listItem",view:"li"},{model:"pageBreak",view:"div"},{model:"rawHtml",view:"div"},{model:"table",view:"table"},{model:"tableRow",view:"tr"},{model:"tableCell",view:"td"},{model:"tableCell",view:"th"},{model:"caption",view:"caption"},{model:"caption",view:"figcaption"},{model:"imageBlock",view:"img"},{model:"imageInline",view:"img"},{model:"htmlP",view:"p",modelSchema:{inheritAllFrom:"$block"}},{model:"htmlBlockquote",view:"blockquote",modelSchema:{inheritAllFrom:"$container"}},{model:"htmlTable",view:"table",modelSchema:{allowWhere:"$block",isBlock:!0}},{model:"htmlTbody",view:"tbody",modelSchema:{allowIn:"htmlTable",isBlock:!0}},{model:"htmlThead",view:"thead",modelSchema:{allowIn:"htmlTable",isBlock:!0}},{model:"htmlTfoot",view:"tfoot",modelSchema:{allowIn:"htmlTable",isBlock:!0}},{model:"htmlCaption",view:"caption",modelSchema:{allowIn:"htmlTable",allowChildren:"$text",isBlock:!0}},{model:"htmlColgroup",view:"colgroup",modelSchema:{allowIn:"htmlTable",allowChildren:"col",isBlock:!0}},{model:"htmlCol",view:"col",modelSchema:{allowIn:"htmlColgroup",isBlock:!0}},{model:"htmlTr",view:"tr",modelSchema:{allowIn:["htmlTable","htmlThead","htmlTbody"]}},{model:"htmlTd",view:"td",modelSchema:{allowIn:"htmlTr",allowContentOf:"$container"}},{model:"htmlTh",view:"th",modelSchema:{allowIn:"htmlTr",allowContentOf:"$container"}},{model:"htmlFigure",view:"figure",modelSchema:{inheritAllFrom:"$container",isBlock:!0}},{model:"htmlFigcaption",view:"figcaption",modelSchema:{allowIn:"htmlFigure",allowChildren:"$text",isBlock:!0}},{model:"htmlAddress",view:"address",modelSchema:{inheritAllFrom:"$container",isBlock:!0}},{model:"htmlAside",view:"aside",modelSchema:{inheritAllFrom:"$container",isBlock:!0}},{model:"htmlMain",view:"main",modelSchema:{inheritAllFrom:"$container",isBlock:!0}},{model:"htmlDetails",view:"details",modelSchema:{inheritAllFrom:"$container",isBlock:!0}},{model:"htmlSummary",view:"summary",modelSchema:{allowChildren:"$text",allowIn:"htmlDetails",isBlock:!0}},{model:"htmlDiv",view:"div",paragraphLikeModel:"htmlDivParagraph",modelSchema:{inheritAllFrom:"$container"}},{model:"htmlFieldset",view:"fieldset",modelSchema:{inheritAllFrom:"$container",isBlock:!0}},{model:"htmlLegend",view:"legend",modelSchema:{allowIn:"htmlFieldset",allowChildren:"$text"}},{model:"htmlHeader",view:"header",modelSchema:{inheritAllFrom:"$container",isBlock:!0}},{model:"htmlFooter",view:"footer",modelSchema:{inheritAllFrom:"$container",isBlock:!0}},{model:"htmlForm",view:"form",modelSchema:{inheritAllFrom:"$container",isBlock:!0}},{model:"htmlHgroup",view:"hgroup",modelSchema:{allowChildren:["htmlH1","htmlH2","htmlH3","htmlH4","htmlH5","htmlH6"],isBlock:!0}},{model:"htmlH1",view:"h1",modelSchema:{inheritAllFrom:"$block"}},{model:"htmlH2",view:"h2",modelSchema:{inheritAllFrom:"$block"}},{model:"htmlH3",view:"h3",modelSchema:{inheritAllFrom:"$block"}},{model:"htmlH4",view:"h4",modelSchema:{inheritAllFrom:"$block"}},{model:"htmlH5",view:"h5",modelSchema:{inheritAllFrom:"$block"}},{model:"htmlH6",view:"h6",modelSchema:{inheritAllFrom:"$block"}},{model:"$htmlList",modelSchema:{allowWhere:"$container",allowChildren:["$htmlList","htmlLi"],isBlock:!0}},{model:"htmlDir",view:"dir",modelSchema:{inheritAllFrom:"$htmlList"}},{model:"htmlMenu",view:"menu",modelSchema:{inheritAllFrom:"$htmlList"}},{model:"htmlUl",view:"ul",modelSchema:{inheritAllFrom:"$htmlList"}},{model:"htmlOl",view:"ol",modelSchema:{inheritAllFrom:"$htmlList"}},{model:"htmlLi",view:"li",modelSchema:{allowIn:"$htmlList",allowChildren:"$text",isBlock:!0}},{model:"htmlPre",view:"pre",modelSchema:{inheritAllFrom:"$block"}},{model:"htmlArticle",view:"article",modelSchema:{inheritAllFrom:"$container",isBlock:!0}},{model:"htmlSection",view:"section",modelSchema:{inheritAllFrom:"$container",isBlock:!0}},{model:"htmlNav",view:"nav",modelSchema:{inheritAllFrom:"$container",isBlock:!0}},{model:"htmlDl",view:"dl",modelSchema:{allowWhere:"$container",allowChildren:["htmlDt","htmlDd"],isBlock:!0}},{model:"htmlDt",view:"dt",modelSchema:{allowChildren:"$block",isBlock:!0}},{model:"htmlDd",view:"dd",modelSchema:{allowChildren:"$block",isBlock:!0}},{model:"htmlCenter",view:"center",modelSchema:{inheritAllFrom:"$container",isBlock:!0}}],i=[{model:"htmlAcronym",view:"acronym",attributeProperties:{copyOnEnter:!0}},{model:"htmlTt",view:"tt",attributeProperties:{copyOnEnter:!0}},{model:"htmlFont",view:"font",attributeProperties:{copyOnEnter:!0}},{model:"htmlTime",view:"time",attributeProperties:{copyOnEnter:!0}},{model:"htmlVar",view:"var",attributeProperties:{copyOnEnter:!0}},{model:"htmlBig",view:"big",attributeProperties:{copyOnEnter:!0}},{model:"htmlSmall",view:"small",attributeProperties:{copyOnEnter:!0}},{model:"htmlSamp",view:"samp",attributeProperties:{copyOnEnter:!0}},{model:"htmlQ",view:"q",attributeProperties:{copyOnEnter:!0}},{model:"htmlOutput",view:"output",attributeProperties:{copyOnEnter:!0}},{model:"htmlKbd",view:"kbd",attributeProperties:{copyOnEnter:!0}},{model:"htmlBdi",view:"bdi",attributeProperties:{copyOnEnter:!0}},{model:"htmlBdo",view:"bdo",attributeProperties:{copyOnEnter:!0}},{model:"htmlAbbr",view:"abbr",attributeProperties:{copyOnEnter:!0}},{model:"htmlA",view:"a",priority:5,coupledAttribute:"linkHref",attributeProperties:{copyOnEnter:!0}},{model:"htmlStrong",view:"strong",coupledAttribute:"bold",attributeProperties:{copyOnEnter:!0}},{model:"htmlB",view:"b",coupledAttribute:"bold",attributeProperties:{copyOnEnter:!0}},{model:"htmlI",view:"i",coupledAttribute:"italic",attributeProperties:{copyOnEnter:!0}},{model:"htmlEm",view:"em",coupledAttribute:"italic",attributeProperties:{copyOnEnter:!0}},{model:"htmlS",view:"s",coupledAttribute:"strikethrough",attributeProperties:{copyOnEnter:!0}},{model:"htmlDel",view:"del",coupledAttribute:"strikethrough",attributeProperties:{copyOnEnter:!0}},{model:"htmlIns",view:"ins",attributeProperties:{copyOnEnter:!0}},{model:"htmlU",view:"u",coupledAttribute:"underline",attributeProperties:{copyOnEnter:!0}},{model:"htmlSub",view:"sub",coupledAttribute:"subscript",attributeProperties:{copyOnEnter:!0}},{model:"htmlSup",view:"sup",coupledAttribute:"superscript",attributeProperties:{copyOnEnter:!0}},{model:"htmlCode",view:"code",coupledAttribute:"code",attributeProperties:{copyOnEnter:!0}},{model:"htmlMark",view:"mark",attributeProperties:{copyOnEnter:!0}},{model:"htmlSpan",view:"span",attributeProperties:{copyOnEnter:!0}},{model:"htmlCite",view:"cite",attributeProperties:{copyOnEnter:!0}},{model:"htmlLabel",view:"label",attributeProperties:{copyOnEnter:!0}},{model:"htmlDfn",view:"dfn",attributeProperties:{copyOnEnter:!0}},{model:"htmlObject",view:"object",isObject:!0,modelSchema:{inheritAllFrom:"$inlineObject"}},{model:"htmlIframe",view:"iframe",isObject:!0,modelSchema:{inheritAllFrom:"$inlineObject"}},{model:"htmlInput",view:"input",isObject:!0,modelSchema:{inheritAllFrom:"$inlineObject"}},{model:"htmlButton",view:"button",isObject:!0,modelSchema:{inheritAllFrom:"$inlineObject"}},{model:"htmlTextarea",view:"textarea",isObject:!0,modelSchema:{inheritAllFrom:"$inlineObject"}},{model:"htmlSelect",view:"select",isObject:!0,modelSchema:{inheritAllFrom:"$inlineObject"}},{model:"htmlVideo",view:"video",isObject:!0,modelSchema:{inheritAllFrom:"$inlineObject"}},{model:"htmlEmbed",view:"embed",isObject:!0,modelSchema:{inheritAllFrom:"$inlineObject"}},{model:"htmlOembed",view:"oembed",isObject:!0,modelSchema:{inheritAllFrom:"$inlineObject"}},{model:"htmlAudio",view:"audio",isObject:!0,modelSchema:{inheritAllFrom:"$inlineObject"}},{model:"htmlImg",view:"img",isObject:!0,modelSchema:{inheritAllFrom:"$inlineObject"}},{model:"htmlCanvas",view:"canvas",isObject:!0,modelSchema:{inheritAllFrom:"$inlineObject"}},{model:"htmlMeter",view:"meter",isObject:!0,modelSchema:{inheritAllFrom:"$inlineObject"}},{model:"htmlProgress",view:"progress",isObject:!0,modelSchema:{inheritAllFrom:"$inlineObject"}},{model:"htmlScript",view:"script",modelSchema:{allowWhere:["$text","$block"],isInline:!0}},{model:"htmlStyle",view:"style",modelSchema:{allowWhere:["$text","$block"],isInline:!0}},{model:"htmlCustomElement",view:"$customElement",modelSchema:{allowWhere:["$text","$block"],isInline:!0}}];const l=function(){this.__data__=[],this.size=0};const s=function(t,e){return t===e||t!=t&&e!=e};const c=function(t,e){for(var r=t.length;r--;)if(s(t[r][0],e))return r;return-1};var a=Array.prototype.splice;const u=function(t){var e=this.__data__,r=c(e,t);return!(r<0)&&(r==e.length-1?e.pop():a.call(e,r,1),--this.size,!0)};const m=function(t){var e=this.__data__,r=c(e,t);return r<0?void 0:e[r][1]};const d=function(t){return c(this.__data__,t)>-1};const h=function(t,e){var r=this.__data__,o=c(r,t);return o<0?(++this.size,r.push([t,e])):r[o][1]=e,this};function f(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var o=t[e];this.set(o[0],o[1])}}f.prototype.clear=l,f.prototype.delete=u,f.prototype.get=m,f.prototype.has=d,f.prototype.set=h;const b=f;const p=function(){this.__data__=new b,this.size=0};const g=function(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r};const v=function(t){return this.__data__.get(t)};const w=function(t){return this.__data__.has(t)};const y="object"==typeof global&&global&&global.Object===Object&&global;var A="object"==typeof self&&self&&self.Object===Object&&self;const j=y||A||Function("return this")();const _=j.Symbol;var S=Object.prototype,O=S.hasOwnProperty,k=S.toString,E=_?_.toStringTag:void 0;const C=function(t){var e=O.call(t,E),r=t[E];try{t[E]=void 0;var o=!0}catch(t){}var n=k.call(t);return o&&(e?t[E]=r:delete t[E]),n};var $=Object.prototype.toString;const x=function(t){return $.call(t)};var I=_?_.toStringTag:void 0;const F=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":I&&I in Object(t)?C(t):x(t)};const P=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)};const B=function(t){if(!P(t))return!1;var e=F(t);return"[object Function]"==e||"[object GeneratorFunction]"==e||"[object AsyncFunction]"==e||"[object Proxy]"==e};const T=j["__core-js_shared__"];var R,M=(R=/[^.]+$/.exec(T&&T.keys&&T.keys.IE_PROTO||""))?"Symbol(src)_1."+R:"";const D=function(t){return!!M&&M in t};var L=Function.prototype.toString;const N=function(t){if(null!=t){try{return L.call(t)}catch(t){}try{return t+""}catch(t){}}return""};var V=/^\[object .+?Constructor\]$/,H=Function.prototype,z=Object.prototype,q=H.toString,U=z.hasOwnProperty,W=RegExp("^"+q.call(U).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");const G=function(t){return!(!P(t)||D(t))&&(B(t)?W:V).test(N(t))};const K=function(t,e){return null==t?void 0:t[e]};const Z=function(t,e){var r=K(t,e);return G(r)?r:void 0};const Q=Z(j,"Map");const J=Z(Object,"create");const X=function(){this.__data__=J?J(null):{},this.size=0};const Y=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e};var tt=Object.prototype.hasOwnProperty;const et=function(t){var e=this.__data__;if(J){var r=e[t];return"__lodash_hash_undefined__"===r?void 0:r}return tt.call(e,t)?e[t]:void 0};var rt=Object.prototype.hasOwnProperty;const ot=function(t){var e=this.__data__;return J?void 0!==e[t]:rt.call(e,t)};const nt=function(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=J&&void 0===e?"__lodash_hash_undefined__":e,this};function it(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var o=t[e];this.set(o[0],o[1])}}it.prototype.clear=X,it.prototype.delete=Y,it.prototype.get=et,it.prototype.has=ot,it.prototype.set=nt;const lt=it;const st=function(){this.size=0,this.__data__={hash:new lt,map:new(Q||b),string:new lt}};const ct=function(t){var e=typeof t;return"string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t};const at=function(t,e){var r=t.__data__;return ct(e)?r["string"==typeof e?"string":"hash"]:r.map};const ut=function(t){var e=at(this,t).delete(t);return this.size-=e?1:0,e};const mt=function(t){return at(this,t).get(t)};const dt=function(t){return at(this,t).has(t)};const ht=function(t,e){var r=at(this,t),o=r.size;return r.set(t,e),this.size+=r.size==o?0:1,this};function ft(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var o=t[e];this.set(o[0],o[1])}}ft.prototype.clear=st,ft.prototype.delete=ut,ft.prototype.get=mt,ft.prototype.has=dt,ft.prototype.set=ht;const bt=ft;const pt=function(t,e){var r=this.__data__;if(r instanceof b){var o=r.__data__;if(!Q||o.length<199)return o.push([t,e]),this.size=++r.size,this;r=this.__data__=new bt(o)}return r.set(t,e),this.size=r.size,this};function gt(t){var e=this.__data__=new b(t);this.size=e.size}gt.prototype.clear=p,gt.prototype.delete=g,gt.prototype.get=v,gt.prototype.has=w,gt.prototype.set=pt;const vt=gt;const wt=function(){try{var t=Z(Object,"defineProperty");return t({},"",{}),t}catch(t){}}();const yt=function(t,e,r){"__proto__"==e&&wt?wt(t,e,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[e]=r};const At=function(t,e,r){(void 0!==r&&!s(t[e],r)||void 0===r&&!(e in t))&&yt(t,e,r)};const jt=function(t){return function(e,r,o){for(var n=-1,i=Object(e),l=o(e),s=l.length;s--;){var c=l[t?s:++n];if(!1===r(i[c],c,i))break}return e}}();var _t="object"==typeof exports&&exports&&!exports.nodeType&&exports,St=_t&&"object"==typeof module&&module&&!module.nodeType&&module,Ot=St&&St.exports===_t?j.Buffer:void 0,kt=Ot?Ot.allocUnsafe:void 0;const Et=function(t,e){if(e)return t.slice();var r=t.length,o=kt?kt(r):new t.constructor(r);return t.copy(o),o};const Ct=j.Uint8Array;const $t=function(t){var e=new t.constructor(t.byteLength);return new Ct(e).set(new Ct(t)),e};const xt=function(t,e){var r=e?$t(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.length)};const It=function(t,e){var r=-1,o=t.length;for(e||(e=Array(o));++r<o;)e[r]=t[r];return e};var Ft=Object.create;const Pt=function(){function t(){}return function(e){if(!P(e))return{};if(Ft)return Ft(e);t.prototype=e;var r=new t;return t.prototype=void 0,r}}();const Bt=function(t,e){return function(r){return t(e(r))}};const Tt=Bt(Object.getPrototypeOf,Object);var Rt=Object.prototype;const Mt=function(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||Rt)};const Dt=function(t){return"function"!=typeof t.constructor||Mt(t)?{}:Pt(Tt(t))};const Lt=function(t){return null!=t&&"object"==typeof t};const Nt=function(t){return Lt(t)&&"[object Arguments]"==F(t)};var Vt=Object.prototype,Ht=Vt.hasOwnProperty,zt=Vt.propertyIsEnumerable;const qt=Nt(function(){return arguments}())?Nt:function(t){return Lt(t)&&Ht.call(t,"callee")&&!zt.call(t,"callee")};const Ut=Array.isArray;const Wt=function(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=9007199254740991};const Gt=function(t){return null!=t&&Wt(t.length)&&!B(t)};const Kt=function(t){return Lt(t)&&Gt(t)};const Zt=function(){return!1};var Qt="object"==typeof exports&&exports&&!exports.nodeType&&exports,Jt=Qt&&"object"==typeof module&&module&&!module.nodeType&&module,Xt=Jt&&Jt.exports===Qt?j.Buffer:void 0;const Yt=(Xt?Xt.isBuffer:void 0)||Zt;var te=Function.prototype,ee=Object.prototype,re=te.toString,oe=ee.hasOwnProperty,ne=re.call(Object);const ie=function(t){if(!Lt(t)||"[object Object]"!=F(t))return!1;var e=Tt(t);if(null===e)return!0;var r=oe.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&re.call(r)==ne};var le={};le["[object Float32Array]"]=le["[object Float64Array]"]=le["[object Int8Array]"]=le["[object Int16Array]"]=le["[object Int32Array]"]=le["[object Uint8Array]"]=le["[object Uint8ClampedArray]"]=le["[object Uint16Array]"]=le["[object Uint32Array]"]=!0,le["[object Arguments]"]=le["[object Array]"]=le["[object ArrayBuffer]"]=le["[object Boolean]"]=le["[object DataView]"]=le["[object Date]"]=le["[object Error]"]=le["[object Function]"]=le["[object Map]"]=le["[object Number]"]=le["[object Object]"]=le["[object RegExp]"]=le["[object Set]"]=le["[object String]"]=le["[object WeakMap]"]=!1;const se=function(t){return Lt(t)&&Wt(t.length)&&!!le[F(t)]};const ce=function(t){return function(e){return t(e)}};var ae="object"==typeof exports&&exports&&!exports.nodeType&&exports,ue=ae&&"object"==typeof module&&module&&!module.nodeType&&module,me=ue&&ue.exports===ae&&y.process;const de=function(){try{var t=ue&&ue.require&&ue.require("util").types;return t||me&&me.binding&&me.binding("util")}catch(t){}}();var he=de&&de.isTypedArray;const fe=he?ce(he):se;const be=function(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]};var pe=Object.prototype.hasOwnProperty;const ge=function(t,e,r){var o=t[e];pe.call(t,e)&&s(o,r)&&(void 0!==r||e in t)||yt(t,e,r)};const ve=function(t,e,r,o){var n=!r;r||(r={});for(var i=-1,l=e.length;++i<l;){var s=e[i],c=o?o(r[s],t[s],s,r,t):void 0;void 0===c&&(c=t[s]),n?yt(r,s,c):ge(r,s,c)}return r};const we=function(t,e){for(var r=-1,o=Array(t);++r<t;)o[r]=e(r);return o};var ye=/^(?:0|[1-9]\d*)$/;const Ae=function(t,e){var r=typeof t;return!!(e=null==e?9007199254740991:e)&&("number"==r||"symbol"!=r&&ye.test(t))&&t>-1&&t%1==0&&t<e};var je=Object.prototype.hasOwnProperty;const _e=function(t,e){var r=Ut(t),o=!r&&qt(t),n=!r&&!o&&Yt(t),i=!r&&!o&&!n&&fe(t),l=r||o||n||i,s=l?we(t.length,String):[],c=s.length;for(var a in t)!e&&!je.call(t,a)||l&&("length"==a||n&&("offset"==a||"parent"==a)||i&&("buffer"==a||"byteLength"==a||"byteOffset"==a)||Ae(a,c))||s.push(a);return s};const Se=function(t){var e=[];if(null!=t)for(var r in Object(t))e.push(r);return e};var Oe=Object.prototype.hasOwnProperty;const ke=function(t){if(!P(t))return Se(t);var e=Mt(t),r=[];for(var o in t)("constructor"!=o||!e&&Oe.call(t,o))&&r.push(o);return r};const Ee=function(t){return Gt(t)?_e(t,!0):ke(t)};const Ce=function(t){return ve(t,Ee(t))};const $e=function(t,e,r,o,n,i,l){var s=be(t,r),c=be(e,r),a=l.get(c);if(a)At(t,r,a);else{var u=i?i(s,c,r+"",t,e,l):void 0,m=void 0===u;if(m){var d=Ut(c),h=!d&&Yt(c),f=!d&&!h&&fe(c);u=c,d||h||f?Ut(s)?u=s:Kt(s)?u=It(s):h?(m=!1,u=Et(c,!0)):f?(m=!1,u=xt(c,!0)):u=[]:ie(c)||qt(c)?(u=s,qt(s)?u=Ce(s):P(s)&&!B(s)||(u=Dt(c))):m=!1}m&&(l.set(c,u),n(u,c,o,i,l),l.delete(c)),At(t,r,u)}};const xe=function t(e,r,o,n,i){e!==r&&jt(r,(function(l,s){if(i||(i=new vt),P(l))$e(e,r,s,o,t,n,i);else{var c=n?n(be(e,s),l,s+"",e,r,i):void 0;void 0===c&&(c=l),At(e,s,c)}}),Ee)};const Ie=function(t){return t};const Fe=function(t,e,r){switch(r.length){case 0:return t.call(e);case 1:return t.call(e,r[0]);case 2:return t.call(e,r[0],r[1]);case 3:return t.call(e,r[0],r[1],r[2])}return t.apply(e,r)};var Pe=Math.max;const Be=function(t,e,r){return e=Pe(void 0===e?t.length-1:e,0),function(){for(var o=arguments,n=-1,i=Pe(o.length-e,0),l=Array(i);++n<i;)l[n]=o[e+n];n=-1;for(var s=Array(e+1);++n<e;)s[n]=o[n];return s[e]=r(l),Fe(t,this,s)}};const Te=function(t){return function(){return t}};const Re=wt?function(t,e){return wt(t,"toString",{configurable:!0,enumerable:!1,value:Te(e),writable:!0})}:Ie;var Me=Date.now;const De=function(t){var e=0,r=0;return function(){var o=Me(),n=16-(o-r);if(r=o,n>0){if(++e>=800)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(Re);const Le=function(t,e){return De(Be(t,e,Ie),t+"")};const Ne=function(t,e,r){if(!P(r))return!1;var o=typeof e;return!!("number"==o?Gt(r)&&Ae(e,r.length):"string"==o&&e in r)&&s(r[e],t)};const Ve=function(t){return Le((function(e,r){var o=-1,n=r.length,i=n>1?r[n-1]:void 0,l=n>2?r[2]:void 0;for(i=t.length>3&&"function"==typeof i?(n--,i):void 0,l&&Ne(r[0],r[1],l)&&(i=n<3?void 0:i,n=1),e=Object(e);++o<n;){var s=r[o];s&&t(e,s,o,i)}return e}))}((function(t,e,r,o){xe(t,e,r,o)}));class He extends t.Plugin{constructor(t){super(t),this._definitions=new Map}static get pluginName(){return"DataSchema"}init(){for(const t of n)this.registerBlockElement(t);for(const t of i)this.registerInlineElement(t)}registerBlockElement(t){this._definitions.set(t.model,{...t,isBlock:!0})}registerInlineElement(t){this._definitions.set(t.model,{...t,isInline:!0})}extendBlockElement(t){this._extendDefinition({...t,isBlock:!0})}extendInlineElement(t){this._extendDefinition({...t,isInline:!0})}getDefinitionsForView(t,e){const r=new Set;for(const o of this._getMatchingViewDefinitions(t)){if(e)for(const t of this._getReferences(o.model))r.add(t);r.add(o)}return r}_getMatchingViewDefinitions(t){return Array.from(this._definitions.values()).filter((e=>e.view&&function(t,e){if("string"==typeof t)return t===e;if(t instanceof RegExp)return t.test(e);return!1}(t,e.view)))}*_getReferences(t){const{modelSchema:r}=this._definitions.get(t);if(!r)return;const o=["inheritAllFrom","inheritTypesFrom","allowWhere","allowContentOf","allowAttributesOf"];for(const n of o)for(const o of(0,e.toArray)(r[n]||[])){const e=this._definitions.get(o);o!==t&&e&&(yield*this._getReferences(e.model),yield e)}}_extendDefinition(t){const e=this._definitions.get(t.model),r=Ve({},e,t,((t,e)=>Array.isArray(t)?t.concat(e):void 0));this._definitions.set(t.model,r)}}var ze=r(492),qe=r(995);const Ue=function(t,e){for(var r=-1,o=null==t?0:t.length;++r<o&&!1!==e(t[r],r,t););return t};const We=Bt(Object.keys,Object);var Ge=Object.prototype.hasOwnProperty;const Ke=function(t){if(!Mt(t))return We(t);var e=[];for(var r in Object(t))Ge.call(t,r)&&"constructor"!=r&&e.push(r);return e};const Ze=function(t){return Gt(t)?_e(t):Ke(t)};const Qe=function(t,e){return t&&ve(e,Ze(e),t)};const Je=function(t,e){return t&&ve(e,Ee(e),t)};const Xe=function(t,e){for(var r=-1,o=null==t?0:t.length,n=0,i=[];++r<o;){var l=t[r];e(l,r,t)&&(i[n++]=l)}return i};const Ye=function(){return[]};var tr=Object.prototype.propertyIsEnumerable,er=Object.getOwnPropertySymbols;const rr=er?function(t){return null==t?[]:(t=Object(t),Xe(er(t),(function(e){return tr.call(t,e)})))}:Ye;const or=function(t,e){return ve(t,rr(t),e)};const nr=function(t,e){for(var r=-1,o=e.length,n=t.length;++r<o;)t[n+r]=e[r];return t};const ir=Object.getOwnPropertySymbols?function(t){for(var e=[];t;)nr(e,rr(t)),t=Tt(t);return e}:Ye;const lr=function(t,e){return ve(t,ir(t),e)};const sr=function(t,e,r){var o=e(t);return Ut(t)?o:nr(o,r(t))};const cr=function(t){return sr(t,Ze,rr)};const ar=function(t){return sr(t,Ee,ir)};const ur=Z(j,"DataView");const mr=Z(j,"Promise");const dr=Z(j,"Set");const hr=Z(j,"WeakMap");var fr="[object Map]",br="[object Promise]",pr="[object Set]",gr="[object WeakMap]",vr="[object DataView]",wr=N(ur),yr=N(Q),Ar=N(mr),jr=N(dr),_r=N(hr),Sr=F;(ur&&Sr(new ur(new ArrayBuffer(1)))!=vr||Q&&Sr(new Q)!=fr||mr&&Sr(mr.resolve())!=br||dr&&Sr(new dr)!=pr||hr&&Sr(new hr)!=gr)&&(Sr=function(t){var e=F(t),r="[object Object]"==e?t.constructor:void 0,o=r?N(r):"";if(o)switch(o){case wr:return vr;case yr:return fr;case Ar:return br;case jr:return pr;case _r:return gr}return e});const Or=Sr;var kr=Object.prototype.hasOwnProperty;const Er=function(t){var e=t.length,r=new t.constructor(e);return e&&"string"==typeof t[0]&&kr.call(t,"index")&&(r.index=t.index,r.input=t.input),r};const Cr=function(t,e){var r=e?$t(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.byteLength)};var $r=/\w*$/;const xr=function(t){var e=new t.constructor(t.source,$r.exec(t));return e.lastIndex=t.lastIndex,e};var Ir=_?_.prototype:void 0,Fr=Ir?Ir.valueOf:void 0;const Pr=function(t){return Fr?Object(Fr.call(t)):{}};const Br=function(t,e,r){var o=t.constructor;switch(e){case"[object ArrayBuffer]":return $t(t);case"[object Boolean]":case"[object Date]":return new o(+t);case"[object DataView]":return Cr(t,r);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return xt(t,r);case"[object Map]":case"[object Set]":return new o;case"[object Number]":case"[object String]":return new o(t);case"[object RegExp]":return xr(t);case"[object Symbol]":return Pr(t)}};const Tr=function(t){return Lt(t)&&"[object Map]"==Or(t)};var Rr=de&&de.isMap;const Mr=Rr?ce(Rr):Tr;const Dr=function(t){return Lt(t)&&"[object Set]"==Or(t)};var Lr=de&&de.isSet;const Nr=Lr?ce(Lr):Dr;var Vr="[object Arguments]",Hr="[object Function]",zr="[object Object]",qr={};qr[Vr]=qr["[object Array]"]=qr["[object ArrayBuffer]"]=qr["[object DataView]"]=qr["[object Boolean]"]=qr["[object Date]"]=qr["[object Float32Array]"]=qr["[object Float64Array]"]=qr["[object Int8Array]"]=qr["[object Int16Array]"]=qr["[object Int32Array]"]=qr["[object Map]"]=qr["[object Number]"]=qr["[object Object]"]=qr["[object RegExp]"]=qr["[object Set]"]=qr["[object String]"]=qr["[object Symbol]"]=qr["[object Uint8Array]"]=qr["[object Uint8ClampedArray]"]=qr["[object Uint16Array]"]=qr["[object Uint32Array]"]=!0,qr["[object Error]"]=qr[Hr]=qr["[object WeakMap]"]=!1;const Ur=function t(e,r,o,n,i,l){var s,c=1&r,a=2&r,u=4&r;if(o&&(s=i?o(e,n,i,l):o(e)),void 0!==s)return s;if(!P(e))return e;var m=Ut(e);if(m){if(s=Er(e),!c)return It(e,s)}else{var d=Or(e),h=d==Hr||"[object GeneratorFunction]"==d;if(Yt(e))return Et(e,c);if(d==zr||d==Vr||h&&!i){if(s=a||h?{}:Dt(e),!c)return a?lr(e,Je(s,e)):or(e,Qe(s,e))}else{if(!qr[d])return i?e:{};s=Br(e,d,c)}}l||(l=new vt);var f=l.get(e);if(f)return f;l.set(e,s),Nr(e)?e.forEach((function(n){s.add(t(n,r,o,n,e,l))})):Mr(e)&&e.forEach((function(n,i){s.set(i,t(n,r,o,i,e,l))}));var b=m?void 0:(u?a?ar:cr:a?Ee:Ze)(e);return Ue(b||e,(function(n,i){b&&(n=e[i=n]),ge(s,i,t(n,r,o,i,e,l))})),s};const Wr=function(t){return Ur(t,5)};function Gr(t,e,r,o){e&&function(t,e,r){if(e.attributes)for(const[o]of Object.entries(e.attributes))t.removeAttribute(o,r);if(e.styles)for(const o of Object.keys(e.styles))t.removeStyle(o,r);e.classes&&t.removeClass(e.classes,r)}(t,e,o),r&&Kr(t,r,o)}function Kr(t,e,r){if(e.attributes)for(const[o,n]of Object.entries(e.attributes))t.setAttribute(o,n,r);e.styles&&t.setStyle(e.styles,r),e.classes&&t.addClass(e.classes,r)}function Zr(t,e){const r=Wr(t);for(const o in e)Array.isArray(e[o])?r[o]=Array.from(new Set([...t[o]||[],...e[o]])):r[o]={...t[o],...e[o]};return r}function Qr({model:t}){return(e,r)=>r.writer.createElement(t,{htmlContent:e.getCustomProperty("$rawContent")})}function Jr(t,{view:e,isInline:r}){const o=t.t;return(t,{writer:n})=>{const i=o("HTML object"),l=Xr(e,t,n),s=t.getAttribute("htmlAttributes");n.addClass("html-object-embed__content",l),s&&Kr(n,s,l);const c=n.createContainerElement(r?"span":"div",{class:"html-object-embed","data-html-object-embed-label":i},l);return(0,qe.toWidget)(c,n,{widgetLabel:i})}}function Xr(t,e,r){return r.createRawElement(t,null,((t,r)=>{r.setContentOf(t,e.getAttribute("htmlContent"))}))}function Yr({priority:t,view:e}){return(r,o)=>{if(!r)return;const{writer:n}=o,i=n.createAttributeElement(e,null,{priority:t});return Kr(n,r,i),i}}function to({view:t},e){return r=>{r.on(`element:${t}`,((t,r,o)=>{if(!r.modelRange||r.modelRange.isCollapsed)return;const n=e.processViewAttributes(r.viewItem,o);n&&o.writer.setAttribute("htmlAttributes",n,r.modelRange)}),{priority:"low"})}}function eo({model:t}){return e=>{e.on(`attribute:htmlAttributes:${t}`,((t,e,r)=>{if(!r.consumable.consume(e.item,t.name))return;const{attributeOldValue:o,attributeNewValue:n}=e;Gr(r.writer,o,n,r.mapper.toViewElement(e.item))}))}}const ro=function(t,e){for(var r=-1,o=null==t?0:t.length,n=Array(o);++r<o;)n[r]=e(t[r],r,t);return n};const oo=function(t,e,r,o){for(var n=t.length,i=r+(o?1:-1);o?i--:++i<n;)if(e(t[i],i,t))return i;return-1};const no=function(t){return t!=t};const io=function(t,e,r){for(var o=r-1,n=t.length;++o<n;)if(t[o]===e)return o;return-1};const lo=function(t,e,r){return e==e?io(t,e,r):oo(t,no,r)};const so=function(t,e,r,o){for(var n=r-1,i=t.length;++n<i;)if(o(t[n],e))return n;return-1};var co=Array.prototype.splice;const ao=function(t,e,r,o){var n=o?so:lo,i=-1,l=e.length,s=t;for(t===e&&(e=It(e)),r&&(s=ro(t,ce(r)));++i<l;)for(var c=0,a=e[i],u=r?r(a):a;(c=n(s,u,c,o))>-1;)s!==t&&co.call(s,c,1),co.call(t,c,1);return t};const uo=Le((function(t,e){return t&&t.length&&e&&e.length?ao(t,e):t}));var mo=r(62),ho=r.n(mo),fo=r(142),bo={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};ho()(fo.Z,bo);fo.Z.locals;class po extends t.Plugin{constructor(t){super(t),this._dataSchema=t.plugins.get("DataSchema"),this._allowedAttributes=new ze.Matcher,this._disallowedAttributes=new ze.Matcher,this._allowedElements=new Set,this._dataInitialized=!1,this._coupledAttributes=null,this._registerElementsAfterInit(),this._registerElementHandlers(),this._registerModelPostFixer()}static get pluginName(){return"DataFilter"}static get requires(){return[He,qe.Widget]}loadAllowedConfig(t){this._loadConfig(t,(t=>this.allowAttributes(t)))}loadDisallowedConfig(t){this._loadConfig(t,(t=>this.disallowAttributes(t)))}allowElement(t){for(const e of this._dataSchema.getDefinitionsForView(t,!0))this._allowedElements.has(e)||(this._allowedElements.add(e),this._dataInitialized&&this._fireRegisterEvent(e),this._coupledAttributes=null)}allowAttributes(t){this._allowedAttributes.add(t)}disallowAttributes(t){this._disallowedAttributes.add(t)}_loadConfig(t,e){for(const r of t){const t=r.name||/[\s\S]+/;this.allowElement(t),Ao(r).forEach(e)}}processViewAttributes(t,e){return go(t,e,this._disallowedAttributes),go(t,e,this._allowedAttributes)}_registerElementsAfterInit(){this.editor.data.on("init",(()=>{this._dataInitialized=!0;for(const t of this._allowedElements)this._fireRegisterEvent(t)}),{priority:e.priorities.get("highest")+1})}_registerElementHandlers(){this.on("register",((t,r)=>{const o=this.editor.model.schema;if(r.isObject&&!o.isRegistered(r.model))this._registerObjectElement(r);else if(r.isBlock)this._registerBlockElement(r);else{if(!r.isInline)throw new e.CKEditorError("data-filter-invalid-definition",null,r);this._registerInlineElement(r)}t.stop()}),{priority:"lowest"})}_registerModelPostFixer(){const t=this.editor.model;t.document.registerPostFixer((e=>{const r=t.document.differ.getChanges();let o=!1;const n=this._getCoupledAttributesMap();for(const t of r){if("attribute"!=t.type||null!==t.attributeNewValue)continue;const r=n.get(t.attributeKey);if(r)for(const{item:n}of t.range.getWalker({shallow:!0}))for(const t of r)n.hasAttribute(t)&&(e.removeAttribute(t,n),o=!0)}return o}))}_getCoupledAttributesMap(){if(this._coupledAttributes)return this._coupledAttributes;this._coupledAttributes=new Map;for(const t of this._allowedElements)if(t.coupledAttribute&&t.model){const e=this._coupledAttributes.get(t.coupledAttribute);e?e.push(t.model):this._coupledAttributes.set(t.coupledAttribute,[t.model])}}_fireRegisterEvent(t){this.fire(t.view?`register:${t.view}`:"register",t)}_registerObjectElement(t){const r=this.editor,o=r.model.schema,n=r.conversion,{view:i,model:l}=t;o.register(l,t.modelSchema),i&&(o.extend(t.model,{allowAttributes:["htmlAttributes","htmlContent"]}),r.data.registerRawContentMatcher({name:i}),n.for("upcast").elementToElement({view:i,model:Qr(t),converterPriority:e.priorities.get("low")+1}),n.for("upcast").add(to(t,this)),n.for("editingDowncast").elementToStructure({model:{name:l,attributes:["htmlAttributes"]},view:Jr(r,t)}),n.for("dataDowncast").elementToElement({model:l,view:(t,{writer:e})=>Xr(i,t,e)}),n.for("dataDowncast").add(eo(t)))}_registerBlockElement(t){const r=this.editor,o=r.model.schema,n=r.conversion,{view:i,model:l}=t;if(!o.isRegistered(t.model)){if(o.register(t.model,t.modelSchema),!i)return;n.for("upcast").elementToElement({model:l,view:i,converterPriority:e.priorities.get("low")+1}),n.for("downcast").elementToElement({model:l,view:i})}i&&(o.extend(t.model,{allowAttributes:"htmlAttributes"}),n.for("upcast").add(to(t,this)),n.for("downcast").add(eo(t)))}_registerInlineElement(t){const e=this.editor,r=e.model.schema,o=e.conversion,n=t.model;r.extend("$text",{allowAttributes:n}),t.attributeProperties&&r.setAttributeProperties(n,t.attributeProperties),o.for("upcast").add(function({view:t,model:e},r){return o=>{o.on(`element:${t}`,((t,o,n)=>{let i=r.processViewAttributes(o.viewItem,n);if(i||n.consumable.test(o.viewItem,{name:!0})){i=i||{},n.consumable.consume(o.viewItem,{name:!0}),o.modelRange||(o=Object.assign(o,n.convertChildren(o.viewItem,o.modelCursor)));for(const t of o.modelRange.getItems())if(n.schema.checkAttribute(t,e)){const r=Zr(i,t.getAttribute(e)||{});n.writer.setAttribute(e,r,t)}}}),{priority:"low"})}}(t,this)),o.for("downcast").attributeToElement({model:n,view:Yr(t)})}}function go(t,e,r){const o=function(t,{consumable:e},r){const o=r.matchAll(t)||[],n=[];for(const r of o)vo(e,t,r),delete r.match.name,e.consume(t,r.match),n.push(r);return n}(t,e,r),{attributes:n,styles:i,classes:l}=function(t){const e={attributes:new Set,classes:new Set,styles:new Set};for(const r of t)for(const t in e){(r.match[t]||[]).forEach((r=>e[t].add(r)))}return e}(o),s={};if(n.size)for(const t of n)jo(t)||n.delete(t);return n.size&&(s.attributes=wo(n,(e=>t.getAttribute(e)))),i.size&&(s.styles=wo(i,(e=>t.getStyle(e)))),l.size&&(s.classes=Array.from(l)),Object.keys(s).length?s:null}function vo(t,e,r){for(const o of["attributes","classes","styles"]){const n=r.match[o];if(n)for(const r of Array.from(n))t.test(e,{[o]:[r]})||uo(n,r)}}function wo(t,e){const r={};for(const o of t){void 0!==e(o)&&(r[o]=e(o))}return r}function yo(t,e){const{name:r}=t;return ie(t[e])?Object.entries(t[e]).map((([t,o])=>({name:r,[e]:{[t]:o}}))):Array.isArray(t[e])?t[e].map((t=>({name:r,[e]:[t]}))):[t]}function Ao(t){const{name:e,attributes:r,classes:o,styles:n}=t,i=[];return r&&i.push(...yo({name:e,attributes:r},"attributes")),o&&i.push(...yo({name:e,classes:o},"classes")),n&&i.push(...yo({name:e,styles:n},"styles")),i}function jo(t){try{document.createAttribute(t)}catch(t){return!1}return!0}class _o extends t.Plugin{static get requires(){return[po]}static get pluginName(){return"CodeBlockElementSupport"}init(){if(!this.editor.plugins.has("CodeBlockEditing"))return;const t=this.editor.plugins.get(po);t.on("register:pre",((e,r)=>{if("codeBlock"!==r.model)return;const o=this.editor,n=o.model.schema,i=o.conversion;n.extend("codeBlock",{allowAttributes:["htmlAttributes","htmlContentAttributes"]}),i.for("upcast").add(function(t){return e=>{e.on("element:code",((e,r,o)=>{const n=r.viewItem,i=n.parent;function l(e,n){const i=t.processViewAttributes(e,o);i&&o.writer.setAttribute(n,i,r.modelRange)}i&&i.is("element","pre")&&(l(i,"htmlAttributes"),l(n,"htmlContentAttributes"))}),{priority:"low"})}}(t)),i.for("downcast").add((t=>{t.on("attribute:htmlAttributes:codeBlock",((t,e,r)=>{if(!r.consumable.consume(e.item,t.name))return;const{attributeOldValue:o,attributeNewValue:n}=e,i=r.mapper.toViewElement(e.item).parent;Gr(r.writer,o,n,i)})),t.on("attribute:htmlContentAttributes:codeBlock",((t,e,r)=>{if(!r.consumable.consume(e.item,t.name))return;const{attributeOldValue:o,attributeNewValue:n}=e,i=r.mapper.toViewElement(e.item);Gr(r.writer,o,n,i)}))})),e.stop()}))}}class So extends t.Plugin{static get requires(){return[po]}static get pluginName(){return"DualContentModelElementSupport"}init(){this.editor.plugins.get(po).on("register",((t,r)=>{const o=this.editor,n=o.model.schema,i=o.conversion;if(!r.paragraphLikeModel)return;if(n.isRegistered(r.model)||n.isRegistered(r.paragraphLikeModel))return;const l={model:r.paragraphLikeModel,view:r.view};n.register(r.model,r.modelSchema),n.register(l.model,{inheritAllFrom:"$block"}),i.for("upcast").elementToElement({view:r.view,model:(t,{writer:e})=>this._hasBlockContent(t)?e.createElement(r.model):e.createElement(l.model),converterPriority:e.priorities.get("low")+1}),i.for("downcast").elementToElement({view:r.view,model:r.model}),this._addAttributeConversion(r),i.for("downcast").elementToElement({view:l.view,model:l.model}),this._addAttributeConversion(l),t.stop()}))}_hasBlockContent(t){const e=this.editor.editing.view,r=e.domConverter.blockElements;for(const o of e.createRangeIn(t).getItems())if(o.is("element")&&r.includes(o.name))return!0;return!1}_addAttributeConversion(t){const e=this.editor,r=e.conversion,o=e.plugins.get(po);e.model.schema.extend(t.model,{allowAttributes:"htmlAttributes"}),r.for("upcast").add(to(t,o)),r.for("downcast").add(eo(t))}}class Oo extends t.Plugin{static get requires(){return[He]}static get pluginName(){return"HeadingElementSupport"}init(){const t=this.editor;if(!t.plugins.has("HeadingEditing"))return;const e=t.plugins.get(He),r=t.config.get("heading.options"),o=[];for(const t of r)"model"in t&&"view"in t&&(e.registerBlockElement({view:t.view,model:t.model}),o.push(t.model));e.extendBlockElement({model:"htmlHgroup",modelSchema:{allowChildren:o}})}}class ko extends t.Plugin{static get requires(){return[po]}static get pluginName(){return"ImageElementSupport"}init(){const t=this.editor;if(!t.plugins.has("ImageInlineEditing")&&!t.plugins.has("ImageBlockEditing"))return;const e=t.model.schema,r=t.conversion,o=t.plugins.get(po);o.on("register:figure",(()=>{r.for("upcast").add(function(t){return e=>{e.on("element:figure",((e,r,o)=>{const n=r.viewItem;if(!r.modelRange||!n.hasClass("image"))return;const i=t.processViewAttributes(n,o);i&&o.writer.setAttribute("htmlFigureAttributes",i,r.modelRange)}),{priority:"low"})}}(o))})),o.on("register:img",((t,n)=>{"imageBlock"!==n.model&&"imageInline"!==n.model||(e.isRegistered("imageBlock")&&e.extend("imageBlock",{allowAttributes:["htmlAttributes","htmlFigureAttributes","htmlLinkAttributes"]}),e.isRegistered("imageInline")&&e.extend("imageInline",{allowAttributes:["htmlA","htmlAttributes"]}),r.for("upcast").add(function(t){return e=>{e.on("element:img",((e,r,o)=>{if(!r.modelRange)return;const n=r.viewItem,i=n.parent;function l(e,n){const i=t.processViewAttributes(e,o);i&&o.writer.setAttribute(n,i,r.modelRange)}function s(t){r.modelRange&&r.modelRange.getContainedElement().is("element","imageBlock")&&l(t,"htmlLinkAttributes")}l(n,"htmlAttributes"),i.is("element","a")&&s(i)}),{priority:"low"})}}(o)),r.for("downcast").add((t=>{function e(e){t.on(`attribute:${e}:imageInline`,((t,e,r)=>{if(!r.consumable.consume(e.item,t.name))return;const{attributeOldValue:o,attributeNewValue:n}=e,i=r.mapper.toViewElement(e.item);Gr(r.writer,o,n,i)}),{priority:"low"})}function r(e,r){t.on(`attribute:${r}:imageBlock`,((t,r,o)=>{if(!o.consumable.test(r.item,t.name))return;const{attributeOldValue:n,attributeNewValue:i}=r,l=o.mapper.toViewElement(r.item),s=Eo(o.writer,l,e);s&&(Gr(o.writer,n,i,s),o.consumable.consume(r.item,t.name))}),{priority:"low"}),"a"===e&&t.on("attribute:linkHref:imageBlock",((t,e,r)=>{if(!r.consumable.consume(e.item,"attribute:htmlLinkAttributes:imageBlock"))return;const o=r.mapper.toViewElement(e.item),n=Eo(r.writer,o,"a");Kr(r.writer,e.item.getAttribute("htmlLinkAttributes"),n)}),{priority:"low"})}e("htmlAttributes"),r("img","htmlAttributes"),r("figure","htmlFigureAttributes"),r("a","htmlLinkAttributes")})),t.stop())}))}}function Eo(t,e,r){const o=t.createRangeOn(e);for(const{item:t}of o.getWalker())if(t.is("element",r))return t}class Co extends t.Plugin{static get requires(){return[po]}static get pluginName(){return"MediaEmbedElementSupport"}init(){const t=this.editor;if(!t.plugins.has("MediaEmbed")||t.config.get("mediaEmbed.previewsInData"))return;const e=t.model.schema,r=t.conversion,o=this.editor.plugins.get(po),n=this.editor.plugins.get(He),i=t.config.get("mediaEmbed.elementName");n.registerBlockElement({model:"media",view:i}),o.on("register:figure",(()=>{r.for("upcast").add(function(t){return e=>{e.on("element:figure",((e,r,o)=>{const n=r.viewItem;if(!r.modelRange||!n.hasClass("media"))return;const i=t.processViewAttributes(n,o);i&&o.writer.setAttribute("htmlFigureAttributes",i,r.modelRange)}),{priority:"low"})}}(o))})),o.on(`register:${i}`,((t,n)=>{"media"===n.model&&(e.extend("media",{allowAttributes:["htmlAttributes","htmlFigureAttributes"]}),r.for("upcast").add(function(t,e){return t=>{t.on(`element:${e}`,r)};function r(e,r,o){function n(e,n){const i=t.processViewAttributes(e,o);i&&o.writer.setAttribute(n,i,r.modelRange)}n(r.viewItem,"htmlAttributes")}}(o,i)),r.for("dataDowncast").add(function(t){return e=>{function r(t,r){e.on(`attribute:${r}:media`,((e,r,o)=>{if(!o.consumable.consume(r.item,e.name))return;const{attributeOldValue:n,attributeNewValue:i}=r,l=o.mapper.toViewElement(r.item),s=function(t,e,r){const o=t.createRangeOn(e);for(const{item:t}of o.getWalker())if(t.is("element",r))return t}(o.writer,l,t);Gr(o.writer,n,i,s)}))}r(t,"htmlAttributes"),r("figure","htmlFigureAttributes")}}(i)),t.stop())}))}}class $o extends t.Plugin{static get requires(){return[po]}static get pluginName(){return"ScriptElementSupport"}init(){const t=this.editor.plugins.get(po);t.on("register:script",((e,r)=>{const o=this.editor,n=o.model.schema,i=o.conversion;n.register("htmlScript",r.modelSchema),n.extend("htmlScript",{allowAttributes:["htmlAttributes","htmlContent"],isContent:!0}),o.data.registerRawContentMatcher({name:"script"}),i.for("upcast").elementToElement({view:"script",model:Qr(r)}),i.for("upcast").add(to(r,t)),i.for("downcast").elementToElement({model:"htmlScript",view:(t,{writer:e})=>Xr("script",t,e)}),i.for("downcast").add(eo(r)),e.stop()}))}}class xo extends t.Plugin{static get requires(){return[po]}static get pluginName(){return"TableElementSupport"}init(){const t=this.editor;if(!t.plugins.has("TableEditing"))return;const e=t.model.schema,r=t.conversion,o=t.plugins.get(po);o.on("register:figure",(()=>{r.for("upcast").add(function(t){return e=>{e.on("element:figure",((e,r,o)=>{const n=r.viewItem;if(!r.modelRange||!n.hasClass("table"))return;const i=t.processViewAttributes(n,o);i&&o.writer.setAttribute("htmlFigureAttributes",i,r.modelRange)}),{priority:"low"})}}(o))})),o.on("register:table",((t,n)=>{"table"===n.model&&(e.extend("table",{allowAttributes:["htmlAttributes","htmlFigureAttributes","htmlTheadAttributes","htmlTbodyAttributes"]}),r.for("upcast").add(function(t){return e=>{e.on("element:table",((e,r,o)=>{const n=r.viewItem;i(n,"htmlAttributes");for(const t of n.getChildren())t.is("element","thead")&&i(t,"htmlTheadAttributes"),t.is("element","tbody")&&i(t,"htmlTbodyAttributes");function i(e,n){const i=t.processViewAttributes(e,o);i&&o.writer.setAttribute(n,i,r.modelRange)}}))}}(o)),r.for("downcast").add((t=>{function e(e,r){t.on(`attribute:${r}:table`,((t,r,o)=>{if(!o.consumable.consume(r.item,t.name))return;const n=o.mapper.toViewElement(r.item),i=function(t,e,r){const o=t.createRangeOn(e);for(const{item:t}of o.getWalker())if(t.is("element",r))return t}(o.writer,n,e);Kr(o.writer,r.attributeNewValue,i)}))}e("table","htmlAttributes"),e("figure","htmlFigureAttributes"),e("thead","htmlTheadAttributes"),e("tbody","htmlTbodyAttributes")})),t.stop())}))}}class Io extends t.Plugin{static get requires(){return[po]}static get pluginName(){return"StyleElementSupport"}init(){const t=this.editor.plugins.get(po);t.on("register:style",((e,r)=>{const o=this.editor,n=o.model.schema,i=o.conversion;n.register("htmlStyle",r.modelSchema),n.extend("htmlStyle",{allowAttributes:["htmlAttributes","htmlContent"],isContent:!0}),o.data.registerRawContentMatcher({name:"style"}),i.for("upcast").elementToElement({view:"style",model:Qr(r)}),i.for("upcast").add(to(r,t)),i.for("downcast").elementToElement({model:"htmlStyle",view:(t,{writer:e})=>Xr("style",t,e)}),i.for("downcast").add(eo(r)),e.stop()}))}}const Fo=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this};const Po=function(t){return this.__data__.has(t)};function Bo(t){var e=-1,r=null==t?0:t.length;for(this.__data__=new bt;++e<r;)this.add(t[e])}Bo.prototype.add=Bo.prototype.push=Fo,Bo.prototype.has=Po;const To=Bo;const Ro=function(t,e){for(var r=-1,o=null==t?0:t.length;++r<o;)if(e(t[r],r,t))return!0;return!1};const Mo=function(t,e){return t.has(e)};const Do=function(t,e,r,o,n,i){var l=1&r,s=t.length,c=e.length;if(s!=c&&!(l&&c>s))return!1;var a=i.get(t),u=i.get(e);if(a&&u)return a==e&&u==t;var m=-1,d=!0,h=2&r?new To:void 0;for(i.set(t,e),i.set(e,t);++m<s;){var f=t[m],b=e[m];if(o)var p=l?o(b,f,m,e,t,i):o(f,b,m,t,e,i);if(void 0!==p){if(p)continue;d=!1;break}if(h){if(!Ro(e,(function(t,e){if(!Mo(h,e)&&(f===t||n(f,t,r,o,i)))return h.push(e)}))){d=!1;break}}else if(f!==b&&!n(f,b,r,o,i)){d=!1;break}}return i.delete(t),i.delete(e),d};const Lo=function(t){var e=-1,r=Array(t.size);return t.forEach((function(t,o){r[++e]=[o,t]})),r};const No=function(t){var e=-1,r=Array(t.size);return t.forEach((function(t){r[++e]=t})),r};var Vo=_?_.prototype:void 0,Ho=Vo?Vo.valueOf:void 0;const zo=function(t,e,r,o,n,i,l){switch(r){case"[object DataView]":if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case"[object ArrayBuffer]":return!(t.byteLength!=e.byteLength||!i(new Ct(t),new Ct(e)));case"[object Boolean]":case"[object Date]":case"[object Number]":return s(+t,+e);case"[object Error]":return t.name==e.name&&t.message==e.message;case"[object RegExp]":case"[object String]":return t==e+"";case"[object Map]":var c=Lo;case"[object Set]":var a=1&o;if(c||(c=No),t.size!=e.size&&!a)return!1;var u=l.get(t);if(u)return u==e;o|=2,l.set(t,e);var m=Do(c(t),c(e),o,n,i,l);return l.delete(t),m;case"[object Symbol]":if(Ho)return Ho.call(t)==Ho.call(e)}return!1};var qo=Object.prototype.hasOwnProperty;const Uo=function(t,e,r,o,n,i){var l=1&r,s=cr(t),c=s.length;if(c!=cr(e).length&&!l)return!1;for(var a=c;a--;){var u=s[a];if(!(l?u in e:qo.call(e,u)))return!1}var m=i.get(t),d=i.get(e);if(m&&d)return m==e&&d==t;var h=!0;i.set(t,e),i.set(e,t);for(var f=l;++a<c;){var b=t[u=s[a]],p=e[u];if(o)var g=l?o(p,b,u,e,t,i):o(b,p,u,t,e,i);if(!(void 0===g?b===p||n(b,p,r,o,i):g)){h=!1;break}f||(f="constructor"==u)}if(h&&!f){var v=t.constructor,w=e.constructor;v==w||!("constructor"in t)||!("constructor"in e)||"function"==typeof v&&v instanceof v&&"function"==typeof w&&w instanceof w||(h=!1)}return i.delete(t),i.delete(e),h};var Wo="[object Arguments]",Go="[object Array]",Ko="[object Object]",Zo=Object.prototype.hasOwnProperty;const Qo=function(t,e,r,o,n,i){var l=Ut(t),s=Ut(e),c=l?Go:Or(t),a=s?Go:Or(e),u=(c=c==Wo?Ko:c)==Ko,m=(a=a==Wo?Ko:a)==Ko,d=c==a;if(d&&Yt(t)){if(!Yt(e))return!1;l=!0,u=!1}if(d&&!u)return i||(i=new vt),l||fe(t)?Do(t,e,r,o,n,i):zo(t,e,c,r,o,n,i);if(!(1&r)){var h=u&&Zo.call(t,"__wrapped__"),f=m&&Zo.call(e,"__wrapped__");if(h||f){var b=h?t.value():t,p=f?e.value():e;return i||(i=new vt),n(b,p,r,o,i)}}return!!d&&(i||(i=new vt),Uo(t,e,r,o,n,i))};const Jo=function t(e,r,o,n,i){return e===r||(null==e||null==r||!Lt(e)&&!Lt(r)?e!=e&&r!=r:Qo(e,r,o,n,t,i))};const Xo=function(t,e){return Jo(t,e)};class Yo extends t.Plugin{static get requires(){return[po]}static get pluginName(){return"DocumentListElementSupport"}init(){const t=this.editor;if(!t.plugins.has("DocumentListEditing"))return;const e=t.model.schema,r=t.conversion,o=t.plugins.get(po),n=t.plugins.get("DocumentListEditing");n.registerDowncastStrategy({scope:"item",attributeName:"htmlLiAttributes",setAttributeOnDowncast(t,e,r){Kr(t,e,r)}}),n.registerDowncastStrategy({scope:"list",attributeName:"htmlListAttributes",setAttributeOnDowncast(t,e,r){Kr(t,e,r)}}),o.on("register",((t,n)=>{["ul","ol","li"].includes(n.view)&&(t.stop(),e.checkAttribute("$block","htmlListAttributes")||(e.extend("$block",{allowAttributes:["htmlListAttributes","htmlLiAttributes"]}),e.extend("$blockObject",{allowAttributes:["htmlListAttributes","htmlLiAttributes"]}),e.extend("$container",{allowAttributes:["htmlListAttributes","htmlLiAttributes"]}),r.for("upcast").add((t=>{t.on("element:ul",tn("htmlListAttributes",o),{priority:"low"}),t.on("element:ol",tn("htmlListAttributes",o),{priority:"low"}),t.on("element:li",tn("htmlLiAttributes",o),{priority:"low"})}))))})),n.on("postFixer",((t,{listNodes:e,writer:r})=>{const o=[];for(const{node:n,previous:i}of e){if(!i)continue;const e=n.getAttribute("listIndent"),l=i.getAttribute("listIndent");let s=null;if(e>l?o[l]=i:e<l?(s=o[e],o.length=e):s=i,s){if(s.getAttribute("listType")==n.getAttribute("listType")){const e=s.getAttribute("htmlListAttributes");Xo(n.getAttribute("htmlListAttributes"),e)||(r.setAttribute("htmlListAttributes",e,n),t.return=!0)}if(s.getAttribute("listItemId")==n.getAttribute("listItemId")){const e=s.getAttribute("htmlLiAttributes");Xo(n.getAttribute("htmlLiAttributes"),e)||(r.setAttribute("htmlLiAttributes",e,n),t.return=!0)}}}}))}afterInit(){const t=this.editor;t.commands.get("indentList")&&this.listenTo(t.commands.get("indentList"),"afterExecute",((e,r)=>{t.model.change((t=>{for(const e of r)t.setAttribute("htmlListAttributes",{},e)}))}))}}function tn(t,e){return(r,o,n)=>{const i=o.viewItem;o.modelRange||Object.assign(o,n.convertChildren(o.viewItem,o.modelCursor));const l=e.processViewAttributes(i,n);for(const e of o.modelRange.getItems({shallow:!0}))e.hasAttribute("listItemId")&&(e.hasAttribute(t)||n.writer.setAttribute(t,l||{},e))}}class en extends t.Plugin{static get requires(){return[po,He]}static get pluginName(){return"CustomElementSupport"}init(){const t=this.editor.plugins.get(po),e=this.editor.plugins.get(He);t.on("register:$customElement",((r,o)=>{r.stop();const n=this.editor,i=n.model.schema,l=n.conversion,s=n.editing.view.domConverter.unsafeElements,c=n.data.htmlProcessor.domConverter.preElements;i.register(o.model,o.modelSchema),i.extend(o.model,{allowAttributes:["htmlElementName","htmlAttributes","htmlContent"],isContent:!0}),l.for("upcast").elementToElement({view:/.*/,model:(r,i)=>{if("$comment"==r.name)return;if(!function(t){try{document.createElement(t)}catch(t){return!1}return!0}(r.name))return;if(e.getDefinitionsForView(r.name).size)return;s.includes(r.name)||s.push(r.name),c.includes(r.name)||c.push(r.name);const l=i.writer.createElement(o.model,{htmlElementName:r.name}),a=t.processViewAttributes(r,i);a&&i.writer.setAttribute("htmlAttributes",a,l);const u=new ze.UpcastWriter(r.document).createDocumentFragment(r),m=n.data.processor.toData(u);i.writer.setAttribute("htmlContent",m,l);for(const{item:t}of n.editing.view.createRangeIn(r))i.consumable.consume(t,{name:!0});return l},converterPriority:"low"}),l.for("editingDowncast").elementToElement({model:{name:o.model,attributes:["htmlElementName","htmlAttributes","htmlContent"]},view:(t,{writer:e})=>{const r=t.getAttribute("htmlElementName"),o=e.createRawElement(r);return t.hasAttribute("htmlAttributes")&&Kr(e,t.getAttribute("htmlAttributes"),o),o}}),l.for("dataDowncast").elementToElement({model:{name:o.model,attributes:["htmlElementName","htmlAttributes","htmlContent"]},view:(t,{writer:e})=>{const r=t.getAttribute("htmlElementName"),o=t.getAttribute("htmlContent"),n=e.createRawElement(r,null,((t,e)=>{e.setContentOf(t,o);const r=t.firstChild;for(r.remove();r.firstChild;)t.appendChild(r.firstChild)}));return t.hasAttribute("htmlAttributes")&&Kr(e,t.getAttribute("htmlAttributes"),n),n}})}))}}class rn extends t.Plugin{static get pluginName(){return"GeneralHtmlSupport"}static get requires(){return[po,_o,So,Oo,ko,Co,$o,xo,Io,Yo,en]}init(){const t=this.editor,e=t.plugins.get(po);e.loadAllowedConfig(t.config.get("htmlSupport.allow")||[]),e.loadDisallowedConfig(t.config.get("htmlSupport.disallow")||[])}getGhsAttributeNameForElement(t){const e=this.editor.plugins.get("DataSchema"),r=Array.from(e.getDefinitionsForView(t,!1));return r&&r.length&&r[0].isInline&&!r[0].isObject?r[0].model:"htmlAttributes"}addModelHtmlClass(t,r,o){const n=this.editor.model,i=this.getGhsAttributeNameForElement(t);n.change((t=>{for(const l of on(n,o,i))nn(t,l,i,"classes",(t=>{for(const o of(0,e.toArray)(r))t.add(o)}))}))}removeModelHtmlClass(t,r,o){const n=this.editor.model,i=this.getGhsAttributeNameForElement(t);n.change((t=>{for(const l of on(n,o,i))nn(t,l,i,"classes",(t=>{for(const o of(0,e.toArray)(r))t.delete(o)}))}))}setModelHtmlAttributes(t,e,r){const o=this.editor.model,n=this.getGhsAttributeNameForElement(t);o.change((t=>{for(const i of on(o,r,n))nn(t,i,n,"attributes",(t=>{for(const[r,o]of Object.entries(e))t.set(r,o)}))}))}removeModelHtmlAttributes(t,r,o){const n=this.editor.model,i=this.getGhsAttributeNameForElement(t);n.change((t=>{for(const l of on(n,o,i))nn(t,l,i,"attributes",(t=>{for(const o of(0,e.toArray)(r))t.delete(o)}))}))}setModelHtmlStyles(t,e,r){const o=this.editor.model,n=this.getGhsAttributeNameForElement(t);o.change((t=>{for(const i of on(o,r,n))nn(t,i,n,"styles",(t=>{for(const[r,o]of Object.entries(e))t.set(r,o)}))}))}removeModelHtmlStyles(t,r,o){const n=this.editor.model,i=this.getGhsAttributeNameForElement(t);n.change((t=>{for(const l of on(n,o,i))nn(t,l,i,"styles",(t=>{for(const o of(0,e.toArray)(r))t.delete(o)}))}))}}function*on(t,e,r){if(e.is("documentSelection")&&e.isCollapsed)t.schema.checkAttributeInSelection(e,r)&&(yield e);else for(const o of function(t,e,r){return e.is("node")||e.is("$text")||e.is("$textProxy")?t.schema.checkAttribute(e,r)?[t.createRangeOn(e)]:[]:t.schema.getValidRanges(t.createSelection(e).getRanges(),r)}(t,e,r))yield*o.getItems({shallow:!0})}function nn(t,e,r,o,n){const i=e.getAttribute(r),l={};for(const t of["attributes","styles","classes"])if(t!=o)i&&i[t]&&(l[t]=i[t]);else{const e="classes"==t?new Set(i&&i[t]||[]):new Map(Object.entries(i&&i[t]||{}));n(e),e.size&&(l[t]="classes"==t?Array.from(e):Object.fromEntries(e))}Object.keys(l).length?e.is("documentSelection")?t.setSelectionAttribute(r,l):t.setAttribute(r,l,e):i&&(e.is("documentSelection")?t.removeSelectionAttribute(r):t.removeAttribute(r,e))}class ln extends t.Plugin{static get pluginName(){return"HtmlComment"}init(){const t=this.editor;t.model.schema.addAttributeCheck(((t,e)=>{if(t.endsWith("$root")&&e.startsWith("$comment"))return!0})),t.conversion.for("upcast").elementToMarker({view:"$comment",model:(t,{writer:r})=>{const o=this.editor.model.document.getRoot(),n=t.getCustomProperty("$rawContent"),i=`$comment:${(0,e.uid)()}`;return r.setAttribute(i,n,o),i}}),t.conversion.for("dataDowncast").markerToElement({model:"$comment",view:(t,{writer:e})=>{const r=this.editor.model.document.getRoot(),o=t.markerName,n=r.getAttribute(o),i=e.createUIElement("$comment");return e.setCustomProperty("$rawContent",n,i),i}}),t.model.document.registerPostFixer((e=>{const r=t.model.document.getRoot(),o=t.model.document.differ.getChangedMarkers().filter((t=>t.name.startsWith("$comment"))).filter((t=>{const e=t.data.newRange;return e&&"$graveyard"===e.root.rootName}));if(0===o.length)return!1;for(const t of o)e.removeMarker(t.name),e.removeAttribute(t.name,r);return!0})),t.data.on("set",(()=>{for(const e of t.model.markers.getMarkersGroup("$comment"))this.removeHtmlComment(e.name)}),{priority:"high"}),t.model.on("deleteContent",((e,[r])=>{for(const e of r.getRanges()){const r=t.model.schema.getLimitElement(e),o=t.model.createPositionAt(r,0),n=t.model.createPositionAt(r,"end");let i;i=o.isTouching(e.start)&&n.isTouching(e.end)?this.getHtmlCommentsInRange(t.model.createRange(o,n)):this.getHtmlCommentsInRange(e,{skipBoundaries:!0});for(const t of i)this.removeHtmlComment(t)}}),{priority:"high"})}createHtmlComment(t,r){const o=(0,e.uid)(),n=this.editor.model,i=n.document.getRoot(),l=`$comment:${o}`;return n.change((e=>{const o=e.createRange(t);return e.addMarker(l,{usingOperation:!0,affectsData:!0,range:o}),e.setAttribute(l,r,i),l}))}removeHtmlComment(t){const e=this.editor,r=e.model.document.getRoot(),o=e.model.markers.get(t);return!!o&&(e.model.change((e=>{e.removeMarker(o),e.removeAttribute(t,r)})),!0)}getHtmlCommentData(t){const e=this.editor,r=e.model.markers.get(t),o=e.model.document.getRoot();return r?{content:o.getAttribute(t),position:r.getStart()}:null}getHtmlCommentsInRange(t,{skipBoundaries:e=!1}={}){const r=!e;return Array.from(this.editor.model.markers.getMarkersGroup("$comment")).filter((e=>function(t,e){const o=t.getRange().start;return(o.isAfter(e.start)||r&&o.isEqual(e.start))&&(o.isBefore(e.end)||r&&o.isEqual(e.end))}(e,t))).map((t=>t.name))}}})(),(window.CKEditor5=window.CKEditor5||{}).htmlSupport=o})();
\ No newline at end of file
+ */(()=>{var t={142:(t,e,r)=>{"use strict";r.d(e,{Z:()=>i});var o=r(609),n=r.n(o)()((function(t){return t[1]}));n.push([t.id,":root{--ck-html-object-embed-unfocused-outline-width:1px}.ck-widget.html-object-embed{background-color:var(--ck-color-base-foreground);font-size:var(--ck-font-size-base);min-width:calc(76px + var(--ck-spacing-standard));padding:var(--ck-spacing-small);padding-top:calc(var(--ck-font-size-tiny) + var(--ck-spacing-large))}.ck-widget.html-object-embed:not(.ck-widget_selected):not(:hover){outline:var(--ck-html-object-embed-unfocused-outline-width) dashed var(--ck-color-widget-blurred-border)}.ck-widget.html-object-embed:before{background:#999;border-radius:0 0 var(--ck-border-radius) var(--ck-border-radius);color:var(--ck-color-base-background);content:attr(data-html-object-embed-label);font-family:var(--ck-font-face);font-size:var(--ck-font-size-tiny);font-style:normal;font-weight:400;left:var(--ck-spacing-standard);padding:calc(var(--ck-spacing-tiny) + var(--ck-html-object-embed-unfocused-outline-width)) var(--ck-spacing-small) var(--ck-spacing-tiny);position:absolute;top:0;transition:background var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve)}.ck-widget.html-object-embed .ck-widget__type-around .ck-widget__type-around__button.ck-widget__type-around__button_before{margin-left:50px}.ck-widget.html-object-embed .html-object-embed__content{pointer-events:none}div.ck-widget.html-object-embed{margin:1em auto}span.ck-widget.html-object-embed{display:inline-block}",""]);const i=n},609:t=>{"use strict";t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var r=t(e);return e[2]?"@media ".concat(e[2]," {").concat(r,"}"):r})).join("")},e.i=function(t,r,o){"string"==typeof t&&(t=[[null,t,""]]);var n={};if(o)for(var i=0;i<this.length;i++){var s=this[i][0];null!=s&&(n[s]=!0)}for(var l=0;l<t.length;l++){var c=[].concat(t[l]);o&&n[c[0]]||(r&&(c[2]?c[2]="".concat(r," and ").concat(c[2]):c[2]=r),e.push(c))}},e}},62:(t,e,r)=>{"use strict";var o,n=function(){return void 0===o&&(o=Boolean(window&&document&&document.all&&!window.atob)),o},i=function(){var t={};return function(e){if(void 0===t[e]){var r=document.querySelector(e);if(window.HTMLIFrameElement&&r instanceof window.HTMLIFrameElement)try{r=r.contentDocument.head}catch(t){r=null}t[e]=r}return t[e]}}(),s=[];function l(t){for(var e=-1,r=0;r<s.length;r++)if(s[r].identifier===t){e=r;break}return e}function c(t,e){for(var r={},o=[],n=0;n<t.length;n++){var i=t[n],c=e.base?i[0]+e.base:i[0],a=r[c]||0,u="".concat(c," ").concat(a);r[c]=a+1;var m=l(u),d={css:i[1],media:i[2],sourceMap:i[3]};-1!==m?(s[m].references++,s[m].updater(d)):s.push({identifier:u,updater:p(d,e),references:1}),o.push(u)}return o}function a(t){var e=document.createElement("style"),o=t.attributes||{};if(void 0===o.nonce){var n=r.nc;n&&(o.nonce=n)}if(Object.keys(o).forEach((function(t){e.setAttribute(t,o[t])})),"function"==typeof t.insert)t.insert(e);else{var s=i(t.insert||"head");if(!s)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");s.appendChild(e)}return e}var u,m=(u=[],function(t,e){return u[t]=e,u.filter(Boolean).join("\n")});function d(t,e,r,o){var n=r?"":o.media?"@media ".concat(o.media," {").concat(o.css,"}"):o.css;if(t.styleSheet)t.styleSheet.cssText=m(e,n);else{var i=document.createTextNode(n),s=t.childNodes;s[e]&&t.removeChild(s[e]),s.length?t.insertBefore(i,s[e]):t.appendChild(i)}}function h(t,e,r){var o=r.css,n=r.media,i=r.sourceMap;if(n?t.setAttribute("media",n):t.removeAttribute("media"),i&&"undefined"!=typeof btoa&&(o+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(i))))," */")),t.styleSheet)t.styleSheet.cssText=o;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(o))}}var f=null,b=0;function p(t,e){var r,o,n;if(e.singleton){var i=b++;r=f||(f=a(e)),o=d.bind(null,r,i,!1),n=d.bind(null,r,i,!0)}else r=a(e),o=h.bind(null,r,e),n=function(){!function(t){if(null===t.parentNode)return!1;t.parentNode.removeChild(t)}(r)};return o(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;o(t=e)}else n()}}t.exports=function(t,e){(e=e||{}).singleton||"boolean"==typeof e.singleton||(e.singleton=n());var r=c(t=t||[],e);return function(t){if(t=t||[],"[object Array]"===Object.prototype.toString.call(t)){for(var o=0;o<r.length;o++){var n=l(r[o]);s[n].references--}for(var i=c(t,e),a=0;a<r.length;a++){var u=l(r[a]);0===s[u].references&&(s[u].updater(),s.splice(u,1))}r=i}}}},704:(t,e,r)=>{t.exports=r(79)("./src/core.js")},492:(t,e,r)=>{t.exports=r(79)("./src/engine.js")},209:(t,e,r)=>{t.exports=r(79)("./src/utils.js")},995:(t,e,r)=>{t.exports=r(79)("./src/widget.js")},79:t=>{"use strict";t.exports=CKEditor5.dll}},e={};function r(o){var n=e[o];if(void 0!==n)return n.exports;var i=e[o]={id:o,exports:{}};return t[o](i,i.exports,r),i.exports}r.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return r.d(e,{a:e}),e},r.d=(t,e)=>{for(var o in e)r.o(e,o)&&!r.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:e[o]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.nc=void 0;var o={};(()=>{"use strict";r.r(o),r.d(o,{DataFilter:()=>po,DataSchema:()=>He,GeneralHtmlSupport:()=>rn,HtmlComment:()=>sn});var t=r(704),e=r(209);const n=[{model:"codeBlock",view:"pre"},{model:"paragraph",view:"p"},{model:"blockQuote",view:"blockquote"},{model:"listItem",view:"li"},{model:"pageBreak",view:"div"},{model:"rawHtml",view:"div"},{model:"table",view:"table"},{model:"tableRow",view:"tr"},{model:"tableCell",view:"td"},{model:"tableCell",view:"th"},{model:"caption",view:"caption"},{model:"caption",view:"figcaption"},{model:"imageBlock",view:"img"},{model:"imageInline",view:"img"},{model:"htmlP",view:"p",modelSchema:{inheritAllFrom:"$block"}},{model:"htmlBlockquote",view:"blockquote",modelSchema:{inheritAllFrom:"$container"}},{model:"htmlTable",view:"table",modelSchema:{allowWhere:"$block",isBlock:!0}},{model:"htmlTbody",view:"tbody",modelSchema:{allowIn:"htmlTable",isBlock:!1}},{model:"htmlThead",view:"thead",modelSchema:{allowIn:"htmlTable",isBlock:!1}},{model:"htmlTfoot",view:"tfoot",modelSchema:{allowIn:"htmlTable",isBlock:!1}},{model:"htmlCaption",view:"caption",modelSchema:{allowIn:"htmlTable",allowChildren:"$text",isBlock:!1}},{model:"htmlColgroup",view:"colgroup",modelSchema:{allowIn:"htmlTable",allowChildren:"col",isBlock:!1}},{model:"htmlCol",view:"col",modelSchema:{allowIn:"htmlColgroup",isBlock:!1}},{model:"htmlTr",view:"tr",modelSchema:{allowIn:["htmlTable","htmlThead","htmlTbody"],isLimit:!0}},{model:"htmlTd",view:"td",modelSchema:{allowIn:"htmlTr",allowContentOf:"$container",isLimit:!0,isBlock:!1}},{model:"htmlTh",view:"th",modelSchema:{allowIn:"htmlTr",allowContentOf:"$container",isLimit:!0,isBlock:!1}},{model:"htmlFigure",view:"figure",modelSchema:{inheritAllFrom:"$container",isBlock:!1}},{model:"htmlFigcaption",view:"figcaption",modelSchema:{allowIn:"htmlFigure",allowChildren:"$text",isBlock:!1}},{model:"htmlAddress",view:"address",modelSchema:{inheritAllFrom:"$container",isBlock:!1}},{model:"htmlAside",view:"aside",modelSchema:{inheritAllFrom:"$container",isBlock:!1}},{model:"htmlMain",view:"main",modelSchema:{inheritAllFrom:"$container",isBlock:!1}},{model:"htmlDetails",view:"details",modelSchema:{inheritAllFrom:"$container",isBlock:!1}},{model:"htmlSummary",view:"summary",modelSchema:{allowChildren:"$text",allowIn:"htmlDetails",isBlock:!1}},{model:"htmlDiv",view:"div",paragraphLikeModel:"htmlDivParagraph",modelSchema:{inheritAllFrom:"$container"}},{model:"htmlFieldset",view:"fieldset",modelSchema:{inheritAllFrom:"$container",isBlock:!1}},{model:"htmlLegend",view:"legend",modelSchema:{allowIn:"htmlFieldset",allowChildren:"$text"}},{model:"htmlHeader",view:"header",modelSchema:{inheritAllFrom:"$container",isBlock:!1}},{model:"htmlFooter",view:"footer",modelSchema:{inheritAllFrom:"$container",isBlock:!1}},{model:"htmlForm",view:"form",modelSchema:{inheritAllFrom:"$container",isBlock:!0}},{model:"htmlHgroup",view:"hgroup",modelSchema:{allowChildren:["htmlH1","htmlH2","htmlH3","htmlH4","htmlH5","htmlH6"],isBlock:!1}},{model:"htmlH1",view:"h1",modelSchema:{inheritAllFrom:"$block"}},{model:"htmlH2",view:"h2",modelSchema:{inheritAllFrom:"$block"}},{model:"htmlH3",view:"h3",modelSchema:{inheritAllFrom:"$block"}},{model:"htmlH4",view:"h4",modelSchema:{inheritAllFrom:"$block"}},{model:"htmlH5",view:"h5",modelSchema:{inheritAllFrom:"$block"}},{model:"htmlH6",view:"h6",modelSchema:{inheritAllFrom:"$block"}},{model:"$htmlList",modelSchema:{allowWhere:"$container",allowChildren:["$htmlList","htmlLi"],isBlock:!1}},{model:"htmlDir",view:"dir",modelSchema:{inheritAllFrom:"$htmlList"}},{model:"htmlMenu",view:"menu",modelSchema:{inheritAllFrom:"$htmlList"}},{model:"htmlUl",view:"ul",modelSchema:{inheritAllFrom:"$htmlList"}},{model:"htmlOl",view:"ol",modelSchema:{inheritAllFrom:"$htmlList"}},{model:"htmlLi",view:"li",modelSchema:{allowIn:"$htmlList",allowChildren:"$text",isBlock:!1}},{model:"htmlPre",view:"pre",modelSchema:{inheritAllFrom:"$block"}},{model:"htmlArticle",view:"article",modelSchema:{inheritAllFrom:"$container",isBlock:!1}},{model:"htmlSection",view:"section",modelSchema:{inheritAllFrom:"$container",isBlock:!1}},{model:"htmlNav",view:"nav",modelSchema:{inheritAllFrom:"$container",isBlock:!1}},{model:"htmlDl",view:"dl",modelSchema:{allowWhere:"$container",allowChildren:["htmlDt","htmlDd"],isBlock:!1}},{model:"htmlDt",view:"dt",modelSchema:{allowChildren:"$block",isBlock:!1}},{model:"htmlDd",view:"dd",modelSchema:{allowChildren:"$block",isBlock:!1}},{model:"htmlCenter",view:"center",modelSchema:{inheritAllFrom:"$container",isBlock:!1}}],i=[{model:"htmlAcronym",view:"acronym",attributeProperties:{copyOnEnter:!0}},{model:"htmlTt",view:"tt",attributeProperties:{copyOnEnter:!0}},{model:"htmlFont",view:"font",attributeProperties:{copyOnEnter:!0}},{model:"htmlTime",view:"time",attributeProperties:{copyOnEnter:!0}},{model:"htmlVar",view:"var",attributeProperties:{copyOnEnter:!0}},{model:"htmlBig",view:"big",attributeProperties:{copyOnEnter:!0}},{model:"htmlSmall",view:"small",attributeProperties:{copyOnEnter:!0}},{model:"htmlSamp",view:"samp",attributeProperties:{copyOnEnter:!0}},{model:"htmlQ",view:"q",attributeProperties:{copyOnEnter:!0}},{model:"htmlOutput",view:"output",attributeProperties:{copyOnEnter:!0}},{model:"htmlKbd",view:"kbd",attributeProperties:{copyOnEnter:!0}},{model:"htmlBdi",view:"bdi",attributeProperties:{copyOnEnter:!0}},{model:"htmlBdo",view:"bdo",attributeProperties:{copyOnEnter:!0}},{model:"htmlAbbr",view:"abbr",attributeProperties:{copyOnEnter:!0}},{model:"htmlA",view:"a",priority:5,coupledAttribute:"linkHref",attributeProperties:{copyOnEnter:!0}},{model:"htmlStrong",view:"strong",coupledAttribute:"bold",attributeProperties:{copyOnEnter:!0}},{model:"htmlB",view:"b",coupledAttribute:"bold",attributeProperties:{copyOnEnter:!0}},{model:"htmlI",view:"i",coupledAttribute:"italic",attributeProperties:{copyOnEnter:!0}},{model:"htmlEm",view:"em",coupledAttribute:"italic",attributeProperties:{copyOnEnter:!0}},{model:"htmlS",view:"s",coupledAttribute:"strikethrough",attributeProperties:{copyOnEnter:!0}},{model:"htmlDel",view:"del",coupledAttribute:"strikethrough",attributeProperties:{copyOnEnter:!0}},{model:"htmlIns",view:"ins",attributeProperties:{copyOnEnter:!0}},{model:"htmlU",view:"u",coupledAttribute:"underline",attributeProperties:{copyOnEnter:!0}},{model:"htmlSub",view:"sub",coupledAttribute:"subscript",attributeProperties:{copyOnEnter:!0}},{model:"htmlSup",view:"sup",coupledAttribute:"superscript",attributeProperties:{copyOnEnter:!0}},{model:"htmlCode",view:"code",coupledAttribute:"code",attributeProperties:{copyOnEnter:!0}},{model:"htmlMark",view:"mark",attributeProperties:{copyOnEnter:!0}},{model:"htmlSpan",view:"span",attributeProperties:{copyOnEnter:!0}},{model:"htmlCite",view:"cite",attributeProperties:{copyOnEnter:!0}},{model:"htmlLabel",view:"label",attributeProperties:{copyOnEnter:!0}},{model:"htmlDfn",view:"dfn",attributeProperties:{copyOnEnter:!0}},{model:"htmlObject",view:"object",isObject:!0,modelSchema:{inheritAllFrom:"$inlineObject"}},{model:"htmlIframe",view:"iframe",isObject:!0,modelSchema:{inheritAllFrom:"$inlineObject"}},{model:"htmlInput",view:"input",isObject:!0,modelSchema:{inheritAllFrom:"$inlineObject"}},{model:"htmlButton",view:"button",isObject:!0,modelSchema:{inheritAllFrom:"$inlineObject"}},{model:"htmlTextarea",view:"textarea",isObject:!0,modelSchema:{inheritAllFrom:"$inlineObject"}},{model:"htmlSelect",view:"select",isObject:!0,modelSchema:{inheritAllFrom:"$inlineObject"}},{model:"htmlVideo",view:"video",isObject:!0,modelSchema:{inheritAllFrom:"$inlineObject"}},{model:"htmlEmbed",view:"embed",isObject:!0,modelSchema:{inheritAllFrom:"$inlineObject"}},{model:"htmlOembed",view:"oembed",isObject:!0,modelSchema:{inheritAllFrom:"$inlineObject"}},{model:"htmlAudio",view:"audio",isObject:!0,modelSchema:{inheritAllFrom:"$inlineObject"}},{model:"htmlImg",view:"img",isObject:!0,modelSchema:{inheritAllFrom:"$inlineObject"}},{model:"htmlCanvas",view:"canvas",isObject:!0,modelSchema:{inheritAllFrom:"$inlineObject"}},{model:"htmlMeter",view:"meter",isObject:!0,modelSchema:{inheritAllFrom:"$inlineObject"}},{model:"htmlProgress",view:"progress",isObject:!0,modelSchema:{inheritAllFrom:"$inlineObject"}},{model:"htmlScript",view:"script",modelSchema:{allowWhere:["$text","$block"],isInline:!0}},{model:"htmlStyle",view:"style",modelSchema:{allowWhere:["$text","$block"],isInline:!0}},{model:"htmlCustomElement",view:"$customElement",modelSchema:{allowWhere:["$text","$block"],isInline:!0}}];const s=function(){this.__data__=[],this.size=0};const l=function(t,e){return t===e||t!=t&&e!=e};const c=function(t,e){for(var r=t.length;r--;)if(l(t[r][0],e))return r;return-1};var a=Array.prototype.splice;const u=function(t){var e=this.__data__,r=c(e,t);return!(r<0)&&(r==e.length-1?e.pop():a.call(e,r,1),--this.size,!0)};const m=function(t){var e=this.__data__,r=c(e,t);return r<0?void 0:e[r][1]};const d=function(t){return c(this.__data__,t)>-1};const h=function(t,e){var r=this.__data__,o=c(r,t);return o<0?(++this.size,r.push([t,e])):r[o][1]=e,this};function f(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var o=t[e];this.set(o[0],o[1])}}f.prototype.clear=s,f.prototype.delete=u,f.prototype.get=m,f.prototype.has=d,f.prototype.set=h;const b=f;const p=function(){this.__data__=new b,this.size=0};const g=function(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r};const v=function(t){return this.__data__.get(t)};const w=function(t){return this.__data__.has(t)};const y="object"==typeof global&&global&&global.Object===Object&&global;var A="object"==typeof self&&self&&self.Object===Object&&self;const j=y||A||Function("return this")();const _=j.Symbol;var S=Object.prototype,O=S.hasOwnProperty,E=S.toString,k=_?_.toStringTag:void 0;const C=function(t){var e=O.call(t,k),r=t[k];try{t[k]=void 0;var o=!0}catch(t){}var n=E.call(t);return o&&(e?t[k]=r:delete t[k]),n};var $=Object.prototype.toString;const x=function(t){return $.call(t)};var I=_?_.toStringTag:void 0;const F=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":I&&I in Object(t)?C(t):x(t)};const P=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)};const B=function(t){if(!P(t))return!1;var e=F(t);return"[object Function]"==e||"[object GeneratorFunction]"==e||"[object AsyncFunction]"==e||"[object Proxy]"==e};const T=j["__core-js_shared__"];var R,D=(R=/[^.]+$/.exec(T&&T.keys&&T.keys.IE_PROTO||""))?"Symbol(src)_1."+R:"";const L=function(t){return!!D&&D in t};var M=Function.prototype.toString;const N=function(t){if(null!=t){try{return M.call(t)}catch(t){}try{return t+""}catch(t){}}return""};var V=/^\[object .+?Constructor\]$/,H=Function.prototype,z=Object.prototype,q=H.toString,U=z.hasOwnProperty,W=RegExp("^"+q.call(U).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");const G=function(t){return!(!P(t)||L(t))&&(B(t)?W:V).test(N(t))};const K=function(t,e){return null==t?void 0:t[e]};const Z=function(t,e){var r=K(t,e);return G(r)?r:void 0};const Q=Z(j,"Map");const J=Z(Object,"create");const X=function(){this.__data__=J?J(null):{},this.size=0};const Y=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e};var tt=Object.prototype.hasOwnProperty;const et=function(t){var e=this.__data__;if(J){var r=e[t];return"__lodash_hash_undefined__"===r?void 0:r}return tt.call(e,t)?e[t]:void 0};var rt=Object.prototype.hasOwnProperty;const ot=function(t){var e=this.__data__;return J?void 0!==e[t]:rt.call(e,t)};const nt=function(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=J&&void 0===e?"__lodash_hash_undefined__":e,this};function it(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var o=t[e];this.set(o[0],o[1])}}it.prototype.clear=X,it.prototype.delete=Y,it.prototype.get=et,it.prototype.has=ot,it.prototype.set=nt;const st=it;const lt=function(){this.size=0,this.__data__={hash:new st,map:new(Q||b),string:new st}};const ct=function(t){var e=typeof t;return"string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t};const at=function(t,e){var r=t.__data__;return ct(e)?r["string"==typeof e?"string":"hash"]:r.map};const ut=function(t){var e=at(this,t).delete(t);return this.size-=e?1:0,e};const mt=function(t){return at(this,t).get(t)};const dt=function(t){return at(this,t).has(t)};const ht=function(t,e){var r=at(this,t),o=r.size;return r.set(t,e),this.size+=r.size==o?0:1,this};function ft(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var o=t[e];this.set(o[0],o[1])}}ft.prototype.clear=lt,ft.prototype.delete=ut,ft.prototype.get=mt,ft.prototype.has=dt,ft.prototype.set=ht;const bt=ft;const pt=function(t,e){var r=this.__data__;if(r instanceof b){var o=r.__data__;if(!Q||o.length<199)return o.push([t,e]),this.size=++r.size,this;r=this.__data__=new bt(o)}return r.set(t,e),this.size=r.size,this};function gt(t){var e=this.__data__=new b(t);this.size=e.size}gt.prototype.clear=p,gt.prototype.delete=g,gt.prototype.get=v,gt.prototype.has=w,gt.prototype.set=pt;const vt=gt;const wt=function(){try{var t=Z(Object,"defineProperty");return t({},"",{}),t}catch(t){}}();const yt=function(t,e,r){"__proto__"==e&&wt?wt(t,e,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[e]=r};const At=function(t,e,r){(void 0!==r&&!l(t[e],r)||void 0===r&&!(e in t))&&yt(t,e,r)};const jt=function(t){return function(e,r,o){for(var n=-1,i=Object(e),s=o(e),l=s.length;l--;){var c=s[t?l:++n];if(!1===r(i[c],c,i))break}return e}}();var _t="object"==typeof exports&&exports&&!exports.nodeType&&exports,St=_t&&"object"==typeof module&&module&&!module.nodeType&&module,Ot=St&&St.exports===_t?j.Buffer:void 0,Et=Ot?Ot.allocUnsafe:void 0;const kt=function(t,e){if(e)return t.slice();var r=t.length,o=Et?Et(r):new t.constructor(r);return t.copy(o),o};const Ct=j.Uint8Array;const $t=function(t){var e=new t.constructor(t.byteLength);return new Ct(e).set(new Ct(t)),e};const xt=function(t,e){var r=e?$t(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.length)};const It=function(t,e){var r=-1,o=t.length;for(e||(e=Array(o));++r<o;)e[r]=t[r];return e};var Ft=Object.create;const Pt=function(){function t(){}return function(e){if(!P(e))return{};if(Ft)return Ft(e);t.prototype=e;var r=new t;return t.prototype=void 0,r}}();const Bt=function(t,e){return function(r){return t(e(r))}};const Tt=Bt(Object.getPrototypeOf,Object);var Rt=Object.prototype;const Dt=function(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||Rt)};const Lt=function(t){return"function"!=typeof t.constructor||Dt(t)?{}:Pt(Tt(t))};const Mt=function(t){return null!=t&&"object"==typeof t};const Nt=function(t){return Mt(t)&&"[object Arguments]"==F(t)};var Vt=Object.prototype,Ht=Vt.hasOwnProperty,zt=Vt.propertyIsEnumerable;const qt=Nt(function(){return arguments}())?Nt:function(t){return Mt(t)&&Ht.call(t,"callee")&&!zt.call(t,"callee")};const Ut=Array.isArray;const Wt=function(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=9007199254740991};const Gt=function(t){return null!=t&&Wt(t.length)&&!B(t)};const Kt=function(t){return Mt(t)&&Gt(t)};const Zt=function(){return!1};var Qt="object"==typeof exports&&exports&&!exports.nodeType&&exports,Jt=Qt&&"object"==typeof module&&module&&!module.nodeType&&module,Xt=Jt&&Jt.exports===Qt?j.Buffer:void 0;const Yt=(Xt?Xt.isBuffer:void 0)||Zt;var te=Function.prototype,ee=Object.prototype,re=te.toString,oe=ee.hasOwnProperty,ne=re.call(Object);const ie=function(t){if(!Mt(t)||"[object Object]"!=F(t))return!1;var e=Tt(t);if(null===e)return!0;var r=oe.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&re.call(r)==ne};var se={};se["[object Float32Array]"]=se["[object Float64Array]"]=se["[object Int8Array]"]=se["[object Int16Array]"]=se["[object Int32Array]"]=se["[object Uint8Array]"]=se["[object Uint8ClampedArray]"]=se["[object Uint16Array]"]=se["[object Uint32Array]"]=!0,se["[object Arguments]"]=se["[object Array]"]=se["[object ArrayBuffer]"]=se["[object Boolean]"]=se["[object DataView]"]=se["[object Date]"]=se["[object Error]"]=se["[object Function]"]=se["[object Map]"]=se["[object Number]"]=se["[object Object]"]=se["[object RegExp]"]=se["[object Set]"]=se["[object String]"]=se["[object WeakMap]"]=!1;const le=function(t){return Mt(t)&&Wt(t.length)&&!!se[F(t)]};const ce=function(t){return function(e){return t(e)}};var ae="object"==typeof exports&&exports&&!exports.nodeType&&exports,ue=ae&&"object"==typeof module&&module&&!module.nodeType&&module,me=ue&&ue.exports===ae&&y.process;const de=function(){try{var t=ue&&ue.require&&ue.require("util").types;return t||me&&me.binding&&me.binding("util")}catch(t){}}();var he=de&&de.isTypedArray;const fe=he?ce(he):le;const be=function(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]};var pe=Object.prototype.hasOwnProperty;const ge=function(t,e,r){var o=t[e];pe.call(t,e)&&l(o,r)&&(void 0!==r||e in t)||yt(t,e,r)};const ve=function(t,e,r,o){var n=!r;r||(r={});for(var i=-1,s=e.length;++i<s;){var l=e[i],c=o?o(r[l],t[l],l,r,t):void 0;void 0===c&&(c=t[l]),n?yt(r,l,c):ge(r,l,c)}return r};const we=function(t,e){for(var r=-1,o=Array(t);++r<t;)o[r]=e(r);return o};var ye=/^(?:0|[1-9]\d*)$/;const Ae=function(t,e){var r=typeof t;return!!(e=null==e?9007199254740991:e)&&("number"==r||"symbol"!=r&&ye.test(t))&&t>-1&&t%1==0&&t<e};var je=Object.prototype.hasOwnProperty;const _e=function(t,e){var r=Ut(t),o=!r&&qt(t),n=!r&&!o&&Yt(t),i=!r&&!o&&!n&&fe(t),s=r||o||n||i,l=s?we(t.length,String):[],c=l.length;for(var a in t)!e&&!je.call(t,a)||s&&("length"==a||n&&("offset"==a||"parent"==a)||i&&("buffer"==a||"byteLength"==a||"byteOffset"==a)||Ae(a,c))||l.push(a);return l};const Se=function(t){var e=[];if(null!=t)for(var r in Object(t))e.push(r);return e};var Oe=Object.prototype.hasOwnProperty;const Ee=function(t){if(!P(t))return Se(t);var e=Dt(t),r=[];for(var o in t)("constructor"!=o||!e&&Oe.call(t,o))&&r.push(o);return r};const ke=function(t){return Gt(t)?_e(t,!0):Ee(t)};const Ce=function(t){return ve(t,ke(t))};const $e=function(t,e,r,o,n,i,s){var l=be(t,r),c=be(e,r),a=s.get(c);if(a)At(t,r,a);else{var u=i?i(l,c,r+"",t,e,s):void 0,m=void 0===u;if(m){var d=Ut(c),h=!d&&Yt(c),f=!d&&!h&&fe(c);u=c,d||h||f?Ut(l)?u=l:Kt(l)?u=It(l):h?(m=!1,u=kt(c,!0)):f?(m=!1,u=xt(c,!0)):u=[]:ie(c)||qt(c)?(u=l,qt(l)?u=Ce(l):P(l)&&!B(l)||(u=Lt(c))):m=!1}m&&(s.set(c,u),n(u,c,o,i,s),s.delete(c)),At(t,r,u)}};const xe=function t(e,r,o,n,i){e!==r&&jt(r,(function(s,l){if(i||(i=new vt),P(s))$e(e,r,l,o,t,n,i);else{var c=n?n(be(e,l),s,l+"",e,r,i):void 0;void 0===c&&(c=s),At(e,l,c)}}),ke)};const Ie=function(t){return t};const Fe=function(t,e,r){switch(r.length){case 0:return t.call(e);case 1:return t.call(e,r[0]);case 2:return t.call(e,r[0],r[1]);case 3:return t.call(e,r[0],r[1],r[2])}return t.apply(e,r)};var Pe=Math.max;const Be=function(t,e,r){return e=Pe(void 0===e?t.length-1:e,0),function(){for(var o=arguments,n=-1,i=Pe(o.length-e,0),s=Array(i);++n<i;)s[n]=o[e+n];n=-1;for(var l=Array(e+1);++n<e;)l[n]=o[n];return l[e]=r(s),Fe(t,this,l)}};const Te=function(t){return function(){return t}};const Re=wt?function(t,e){return wt(t,"toString",{configurable:!0,enumerable:!1,value:Te(e),writable:!0})}:Ie;var De=Date.now;const Le=function(t){var e=0,r=0;return function(){var o=De(),n=16-(o-r);if(r=o,n>0){if(++e>=800)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(Re);const Me=function(t,e){return Le(Be(t,e,Ie),t+"")};const Ne=function(t,e,r){if(!P(r))return!1;var o=typeof e;return!!("number"==o?Gt(r)&&Ae(e,r.length):"string"==o&&e in r)&&l(r[e],t)};const Ve=function(t){return Me((function(e,r){var o=-1,n=r.length,i=n>1?r[n-1]:void 0,s=n>2?r[2]:void 0;for(i=t.length>3&&"function"==typeof i?(n--,i):void 0,s&&Ne(r[0],r[1],s)&&(i=n<3?void 0:i,n=1),e=Object(e);++o<n;){var l=r[o];l&&t(e,l,o,i)}return e}))}((function(t,e,r,o){xe(t,e,r,o)}));class He extends t.Plugin{constructor(t){super(t),this._definitions=new Map}static get pluginName(){return"DataSchema"}init(){for(const t of n)this.registerBlockElement(t);for(const t of i)this.registerInlineElement(t)}registerBlockElement(t){this._definitions.set(t.model,{...t,isBlock:!0})}registerInlineElement(t){this._definitions.set(t.model,{...t,isInline:!0})}extendBlockElement(t){this._extendDefinition({...t,isBlock:!0})}extendInlineElement(t){this._extendDefinition({...t,isInline:!0})}getDefinitionsForView(t,e){const r=new Set;for(const o of this._getMatchingViewDefinitions(t)){if(e)for(const t of this._getReferences(o.model))r.add(t);r.add(o)}return r}_getMatchingViewDefinitions(t){return Array.from(this._definitions.values()).filter((e=>e.view&&function(t,e){if("string"==typeof t)return t===e;if(t instanceof RegExp)return t.test(e);return!1}(t,e.view)))}*_getReferences(t){const{modelSchema:r}=this._definitions.get(t);if(!r)return;const o=["inheritAllFrom","inheritTypesFrom","allowWhere","allowContentOf","allowAttributesOf"];for(const n of o)for(const o of(0,e.toArray)(r[n]||[])){const e=this._definitions.get(o);o!==t&&e&&(yield*this._getReferences(e.model),yield e)}}_extendDefinition(t){const e=this._definitions.get(t.model),r=Ve({},e,t,((t,e)=>Array.isArray(t)?t.concat(e):void 0));this._definitions.set(t.model,r)}}var ze=r(492),qe=r(995);const Ue=function(t,e){for(var r=-1,o=null==t?0:t.length;++r<o&&!1!==e(t[r],r,t););return t};const We=Bt(Object.keys,Object);var Ge=Object.prototype.hasOwnProperty;const Ke=function(t){if(!Dt(t))return We(t);var e=[];for(var r in Object(t))Ge.call(t,r)&&"constructor"!=r&&e.push(r);return e};const Ze=function(t){return Gt(t)?_e(t):Ke(t)};const Qe=function(t,e){return t&&ve(e,Ze(e),t)};const Je=function(t,e){return t&&ve(e,ke(e),t)};const Xe=function(t,e){for(var r=-1,o=null==t?0:t.length,n=0,i=[];++r<o;){var s=t[r];e(s,r,t)&&(i[n++]=s)}return i};const Ye=function(){return[]};var tr=Object.prototype.propertyIsEnumerable,er=Object.getOwnPropertySymbols;const rr=er?function(t){return null==t?[]:(t=Object(t),Xe(er(t),(function(e){return tr.call(t,e)})))}:Ye;const or=function(t,e){return ve(t,rr(t),e)};const nr=function(t,e){for(var r=-1,o=e.length,n=t.length;++r<o;)t[n+r]=e[r];return t};const ir=Object.getOwnPropertySymbols?function(t){for(var e=[];t;)nr(e,rr(t)),t=Tt(t);return e}:Ye;const sr=function(t,e){return ve(t,ir(t),e)};const lr=function(t,e,r){var o=e(t);return Ut(t)?o:nr(o,r(t))};const cr=function(t){return lr(t,Ze,rr)};const ar=function(t){return lr(t,ke,ir)};const ur=Z(j,"DataView");const mr=Z(j,"Promise");const dr=Z(j,"Set");const hr=Z(j,"WeakMap");var fr="[object Map]",br="[object Promise]",pr="[object Set]",gr="[object WeakMap]",vr="[object DataView]",wr=N(ur),yr=N(Q),Ar=N(mr),jr=N(dr),_r=N(hr),Sr=F;(ur&&Sr(new ur(new ArrayBuffer(1)))!=vr||Q&&Sr(new Q)!=fr||mr&&Sr(mr.resolve())!=br||dr&&Sr(new dr)!=pr||hr&&Sr(new hr)!=gr)&&(Sr=function(t){var e=F(t),r="[object Object]"==e?t.constructor:void 0,o=r?N(r):"";if(o)switch(o){case wr:return vr;case yr:return fr;case Ar:return br;case jr:return pr;case _r:return gr}return e});const Or=Sr;var Er=Object.prototype.hasOwnProperty;const kr=function(t){var e=t.length,r=new t.constructor(e);return e&&"string"==typeof t[0]&&Er.call(t,"index")&&(r.index=t.index,r.input=t.input),r};const Cr=function(t,e){var r=e?$t(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.byteLength)};var $r=/\w*$/;const xr=function(t){var e=new t.constructor(t.source,$r.exec(t));return e.lastIndex=t.lastIndex,e};var Ir=_?_.prototype:void 0,Fr=Ir?Ir.valueOf:void 0;const Pr=function(t){return Fr?Object(Fr.call(t)):{}};const Br=function(t,e,r){var o=t.constructor;switch(e){case"[object ArrayBuffer]":return $t(t);case"[object Boolean]":case"[object Date]":return new o(+t);case"[object DataView]":return Cr(t,r);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return xt(t,r);case"[object Map]":case"[object Set]":return new o;case"[object Number]":case"[object String]":return new o(t);case"[object RegExp]":return xr(t);case"[object Symbol]":return Pr(t)}};const Tr=function(t){return Mt(t)&&"[object Map]"==Or(t)};var Rr=de&&de.isMap;const Dr=Rr?ce(Rr):Tr;const Lr=function(t){return Mt(t)&&"[object Set]"==Or(t)};var Mr=de&&de.isSet;const Nr=Mr?ce(Mr):Lr;var Vr="[object Arguments]",Hr="[object Function]",zr="[object Object]",qr={};qr[Vr]=qr["[object Array]"]=qr["[object ArrayBuffer]"]=qr["[object DataView]"]=qr["[object Boolean]"]=qr["[object Date]"]=qr["[object Float32Array]"]=qr["[object Float64Array]"]=qr["[object Int8Array]"]=qr["[object Int16Array]"]=qr["[object Int32Array]"]=qr["[object Map]"]=qr["[object Number]"]=qr["[object Object]"]=qr["[object RegExp]"]=qr["[object Set]"]=qr["[object String]"]=qr["[object Symbol]"]=qr["[object Uint8Array]"]=qr["[object Uint8ClampedArray]"]=qr["[object Uint16Array]"]=qr["[object Uint32Array]"]=!0,qr["[object Error]"]=qr[Hr]=qr["[object WeakMap]"]=!1;const Ur=function t(e,r,o,n,i,s){var l,c=1&r,a=2&r,u=4&r;if(o&&(l=i?o(e,n,i,s):o(e)),void 0!==l)return l;if(!P(e))return e;var m=Ut(e);if(m){if(l=kr(e),!c)return It(e,l)}else{var d=Or(e),h=d==Hr||"[object GeneratorFunction]"==d;if(Yt(e))return kt(e,c);if(d==zr||d==Vr||h&&!i){if(l=a||h?{}:Lt(e),!c)return a?sr(e,Je(l,e)):or(e,Qe(l,e))}else{if(!qr[d])return i?e:{};l=Br(e,d,c)}}s||(s=new vt);var f=s.get(e);if(f)return f;s.set(e,l),Nr(e)?e.forEach((function(n){l.add(t(n,r,o,n,e,s))})):Dr(e)&&e.forEach((function(n,i){l.set(i,t(n,r,o,i,e,s))}));var b=m?void 0:(u?a?ar:cr:a?ke:Ze)(e);return Ue(b||e,(function(n,i){b&&(n=e[i=n]),ge(l,i,t(n,r,o,i,e,s))})),l};const Wr=function(t){return Ur(t,5)};function Gr(t,e,r,o){e&&function(t,e,r){if(e.attributes)for(const[o]of Object.entries(e.attributes))t.removeAttribute(o,r);if(e.styles)for(const o of Object.keys(e.styles))t.removeStyle(o,r);e.classes&&t.removeClass(e.classes,r)}(t,e,o),r&&Kr(t,r,o)}function Kr(t,e,r){if(e.attributes)for(const[o,n]of Object.entries(e.attributes))t.setAttribute(o,n,r);e.styles&&t.setStyle(e.styles,r),e.classes&&t.addClass(e.classes,r)}function Zr(t,e){const r=Wr(t);for(const o in e)Array.isArray(e[o])?r[o]=Array.from(new Set([...t[o]||[],...e[o]])):r[o]={...t[o],...e[o]};return r}function Qr({model:t}){return(e,r)=>r.writer.createElement(t,{htmlContent:e.getCustomProperty("$rawContent")})}function Jr(t,{view:e,isInline:r}){const o=t.t;return(t,{writer:n})=>{const i=o("HTML object"),s=Xr(e,t,n),l=t.getAttribute("htmlAttributes");n.addClass("html-object-embed__content",s),l&&Kr(n,l,s);const c=n.createContainerElement(r?"span":"div",{class:"html-object-embed","data-html-object-embed-label":i},s);return(0,qe.toWidget)(c,n,{widgetLabel:i})}}function Xr(t,e,r){return r.createRawElement(t,null,((t,r)=>{r.setContentOf(t,e.getAttribute("htmlContent"))}))}function Yr({priority:t,view:e}){return(r,o)=>{if(!r)return;const{writer:n}=o,i=n.createAttributeElement(e,null,{priority:t});return Kr(n,r,i),i}}function to({view:t},e){return r=>{r.on(`element:${t}`,((t,r,o)=>{if(!r.modelRange||r.modelRange.isCollapsed)return;const n=e.processViewAttributes(r.viewItem,o);n&&o.writer.setAttribute("htmlAttributes",n,r.modelRange)}),{priority:"low"})}}function eo({model:t}){return e=>{e.on(`attribute:htmlAttributes:${t}`,((t,e,r)=>{if(!r.consumable.consume(e.item,t.name))return;const{attributeOldValue:o,attributeNewValue:n}=e;Gr(r.writer,o,n,r.mapper.toViewElement(e.item))}))}}const ro=function(t,e){for(var r=-1,o=null==t?0:t.length,n=Array(o);++r<o;)n[r]=e(t[r],r,t);return n};const oo=function(t,e,r,o){for(var n=t.length,i=r+(o?1:-1);o?i--:++i<n;)if(e(t[i],i,t))return i;return-1};const no=function(t){return t!=t};const io=function(t,e,r){for(var o=r-1,n=t.length;++o<n;)if(t[o]===e)return o;return-1};const so=function(t,e,r){return e==e?io(t,e,r):oo(t,no,r)};const lo=function(t,e,r,o){for(var n=r-1,i=t.length;++n<i;)if(o(t[n],e))return n;return-1};var co=Array.prototype.splice;const ao=function(t,e,r,o){var n=o?lo:so,i=-1,s=e.length,l=t;for(t===e&&(e=It(e)),r&&(l=ro(t,ce(r)));++i<s;)for(var c=0,a=e[i],u=r?r(a):a;(c=n(l,u,c,o))>-1;)l!==t&&co.call(l,c,1),co.call(t,c,1);return t};const uo=Me((function(t,e){return t&&t.length&&e&&e.length?ao(t,e):t}));var mo=r(62),ho=r.n(mo),fo=r(142),bo={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};ho()(fo.Z,bo);fo.Z.locals;class po extends t.Plugin{constructor(t){super(t),this._dataSchema=t.plugins.get("DataSchema"),this._allowedAttributes=new ze.Matcher,this._disallowedAttributes=new ze.Matcher,this._allowedElements=new Set,this._disallowedElements=new Set,this._dataInitialized=!1,this._coupledAttributes=null,this._registerElementsAfterInit(),this._registerElementHandlers(),this._registerModelPostFixer()}static get pluginName(){return"DataFilter"}static get requires(){return[He,qe.Widget]}loadAllowedConfig(t){for(const e of t){const t=e.name||/[\s\S]+/,r=Ao(e);this.allowElement(t),r.forEach((t=>this.allowAttributes(t)))}}loadDisallowedConfig(t){for(const e of t){const t=e.name||/[\s\S]+/,r=Ao(e);0==r.length?this.disallowElement(t):r.forEach((t=>this.disallowAttributes(t)))}}allowElement(t){for(const r of this._dataSchema.getDefinitionsForView(t,!0))this._allowedElements.has(r)||(this._allowedElements.add(r),this._dataInitialized&&this.editor.data.once("set",(()=>{this._fireRegisterEvent(r)}),{priority:e.priorities.get("highest")+1}),this._coupledAttributes=null)}disallowElement(t){for(const e of this._dataSchema.getDefinitionsForView(t,!1))this._disallowedElements.add(e.view)}allowAttributes(t){this._allowedAttributes.add(t)}disallowAttributes(t){this._disallowedAttributes.add(t)}processViewAttributes(t,e){return go(t,e,this._disallowedAttributes),go(t,e,this._allowedAttributes)}_registerElementsAfterInit(){this.editor.data.on("init",(()=>{this._dataInitialized=!0;for(const t of this._allowedElements)this._fireRegisterEvent(t)}),{priority:e.priorities.get("highest")+1})}_registerElementHandlers(){this.on("register",((t,r)=>{const o=this.editor.model.schema;if(r.isObject&&!o.isRegistered(r.model))this._registerObjectElement(r);else if(r.isBlock)this._registerBlockElement(r);else{if(!r.isInline)throw new e.CKEditorError("data-filter-invalid-definition",null,r);this._registerInlineElement(r)}t.stop()}),{priority:"lowest"})}_registerModelPostFixer(){const t=this.editor.model;t.document.registerPostFixer((e=>{const r=t.document.differ.getChanges();let o=!1;const n=this._getCoupledAttributesMap();for(const t of r){if("attribute"!=t.type||null!==t.attributeNewValue)continue;const r=n.get(t.attributeKey);if(r)for(const{item:n}of t.range.getWalker({shallow:!0}))for(const t of r)n.hasAttribute(t)&&(e.removeAttribute(t,n),o=!0)}return o}))}_getCoupledAttributesMap(){if(this._coupledAttributes)return this._coupledAttributes;this._coupledAttributes=new Map;for(const t of this._allowedElements)if(t.coupledAttribute&&t.model){const e=this._coupledAttributes.get(t.coupledAttribute);e?e.push(t.model):this._coupledAttributes.set(t.coupledAttribute,[t.model])}}_fireRegisterEvent(t){t.view&&this._disallowedElements.has(t.view)||this.fire(t.view?`register:${t.view}`:"register",t)}_registerObjectElement(t){const r=this.editor,o=r.model.schema,n=r.conversion,{view:i,model:s}=t;o.register(s,t.modelSchema),i&&(o.extend(t.model,{allowAttributes:["htmlAttributes","htmlContent"]}),r.data.registerRawContentMatcher({name:i}),n.for("upcast").elementToElement({view:i,model:Qr(t),converterPriority:e.priorities.get("low")+1}),n.for("upcast").add(to(t,this)),n.for("editingDowncast").elementToStructure({model:{name:s,attributes:["htmlAttributes"]},view:Jr(r,t)}),n.for("dataDowncast").elementToElement({model:s,view:(t,{writer:e})=>Xr(i,t,e)}),n.for("dataDowncast").add(eo(t)))}_registerBlockElement(t){const r=this.editor,o=r.model.schema,n=r.conversion,{view:i,model:s}=t;if(!o.isRegistered(t.model)){if(o.register(t.model,t.modelSchema),!i)return;n.for("upcast").elementToElement({model:s,view:i,converterPriority:e.priorities.get("low")+1}),n.for("downcast").elementToElement({model:s,view:i})}i&&(o.extend(t.model,{allowAttributes:"htmlAttributes"}),n.for("upcast").add(to(t,this)),n.for("downcast").add(eo(t)))}_registerInlineElement(t){const e=this.editor,r=e.model.schema,o=e.conversion,n=t.model;r.extend("$text",{allowAttributes:n}),t.attributeProperties&&r.setAttributeProperties(n,t.attributeProperties),o.for("upcast").add(function({view:t,model:e},r){return o=>{o.on(`element:${t}`,((t,o,n)=>{let i=r.processViewAttributes(o.viewItem,n);if(i||n.consumable.test(o.viewItem,{name:!0})){i=i||{},n.consumable.consume(o.viewItem,{name:!0}),o.modelRange||(o=Object.assign(o,n.convertChildren(o.viewItem,o.modelCursor)));for(const t of o.modelRange.getItems())if(n.schema.checkAttribute(t,e)){const r=Zr(i,t.getAttribute(e)||{});n.writer.setAttribute(e,r,t)}}}),{priority:"low"})}}(t,this)),o.for("downcast").attributeToElement({model:n,view:Yr(t)})}}function go(t,e,r){const o=function(t,{consumable:e},r){const o=r.matchAll(t)||[],n=[];for(const r of o)vo(e,t,r),delete r.match.name,e.consume(t,r.match),n.push(r);return n}(t,e,r),{attributes:n,styles:i,classes:s}=function(t){const e={attributes:new Set,classes:new Set,styles:new Set};for(const r of t)for(const t in e){(r.match[t]||[]).forEach((r=>e[t].add(r)))}return e}(o),l={};if(n.size)for(const t of n)jo(t)||n.delete(t);return n.size&&(l.attributes=wo(n,(e=>t.getAttribute(e)))),i.size&&(l.styles=wo(i,(e=>t.getStyle(e)))),s.size&&(l.classes=Array.from(s)),Object.keys(l).length?l:null}function vo(t,e,r){for(const o of["attributes","classes","styles"]){const n=r.match[o];if(n)for(const r of Array.from(n))t.test(e,{[o]:[r]})||uo(n,r)}}function wo(t,e){const r={};for(const o of t){void 0!==e(o)&&(r[o]=e(o))}return r}function yo(t,e){const{name:r}=t;return ie(t[e])?Object.entries(t[e]).map((([t,o])=>({name:r,[e]:{[t]:o}}))):Array.isArray(t[e])?t[e].map((t=>({name:r,[e]:[t]}))):[t]}function Ao(t){const{name:e,attributes:r,classes:o,styles:n}=t,i=[];return r&&i.push(...yo({name:e,attributes:r},"attributes")),o&&i.push(...yo({name:e,classes:o},"classes")),n&&i.push(...yo({name:e,styles:n},"styles")),i}function jo(t){try{document.createAttribute(t)}catch(t){return!1}return!0}class _o extends t.Plugin{static get requires(){return[po]}static get pluginName(){return"CodeBlockElementSupport"}init(){if(!this.editor.plugins.has("CodeBlockEditing"))return;const t=this.editor.plugins.get(po);t.on("register:pre",((e,r)=>{if("codeBlock"!==r.model)return;const o=this.editor,n=o.model.schema,i=o.conversion;n.extend("codeBlock",{allowAttributes:["htmlAttributes","htmlContentAttributes"]}),i.for("upcast").add(function(t){return e=>{e.on("element:code",((e,r,o)=>{const n=r.viewItem,i=n.parent;function s(e,n){const i=t.processViewAttributes(e,o);i&&o.writer.setAttribute(n,i,r.modelRange)}i&&i.is("element","pre")&&(s(i,"htmlAttributes"),s(n,"htmlContentAttributes"))}),{priority:"low"})}}(t)),i.for("downcast").add((t=>{t.on("attribute:htmlAttributes:codeBlock",((t,e,r)=>{if(!r.consumable.consume(e.item,t.name))return;const{attributeOldValue:o,attributeNewValue:n}=e,i=r.mapper.toViewElement(e.item).parent;Gr(r.writer,o,n,i)})),t.on("attribute:htmlContentAttributes:codeBlock",((t,e,r)=>{if(!r.consumable.consume(e.item,t.name))return;const{attributeOldValue:o,attributeNewValue:n}=e,i=r.mapper.toViewElement(e.item);Gr(r.writer,o,n,i)}))})),e.stop()}))}}class So extends t.Plugin{static get requires(){return[po]}static get pluginName(){return"DualContentModelElementSupport"}init(){this.editor.plugins.get(po).on("register",((t,r)=>{const o=this.editor,n=o.model.schema,i=o.conversion;if(!r.paragraphLikeModel)return;if(n.isRegistered(r.model)||n.isRegistered(r.paragraphLikeModel))return;const s={model:r.paragraphLikeModel,view:r.view};n.register(r.model,r.modelSchema),n.register(s.model,{inheritAllFrom:"$block"}),i.for("upcast").elementToElement({view:r.view,model:(t,{writer:e})=>this._hasBlockContent(t)?e.createElement(r.model):e.createElement(s.model),converterPriority:e.priorities.get("low")+1}),i.for("downcast").elementToElement({view:r.view,model:r.model}),this._addAttributeConversion(r),i.for("downcast").elementToElement({view:s.view,model:s.model}),this._addAttributeConversion(s),t.stop()}))}_hasBlockContent(t){const e=this.editor.editing.view,r=e.domConverter.blockElements;for(const o of e.createRangeIn(t).getItems())if(o.is("element")&&r.includes(o.name))return!0;return!1}_addAttributeConversion(t){const e=this.editor,r=e.conversion,o=e.plugins.get(po);e.model.schema.extend(t.model,{allowAttributes:"htmlAttributes"}),r.for("upcast").add(to(t,o)),r.for("downcast").add(eo(t))}}class Oo extends t.Plugin{static get requires(){return[He]}static get pluginName(){return"HeadingElementSupport"}init(){const t=this.editor;if(!t.plugins.has("HeadingEditing"))return;const e=t.plugins.get(He),r=t.config.get("heading.options"),o=[];for(const t of r)"model"in t&&"view"in t&&(e.registerBlockElement({view:t.view,model:t.model}),o.push(t.model));e.extendBlockElement({model:"htmlHgroup",modelSchema:{allowChildren:o}})}}class Eo extends t.Plugin{static get requires(){return[po]}static get pluginName(){return"ImageElementSupport"}init(){const t=this.editor;if(!t.plugins.has("ImageInlineEditing")&&!t.plugins.has("ImageBlockEditing"))return;const e=t.model.schema,r=t.conversion,o=t.plugins.get(po);o.on("register:figure",(()=>{r.for("upcast").add(function(t){return e=>{e.on("element:figure",((e,r,o)=>{const n=r.viewItem;if(!r.modelRange||!n.hasClass("image"))return;const i=t.processViewAttributes(n,o);i&&o.writer.setAttribute("htmlFigureAttributes",i,r.modelRange)}),{priority:"low"})}}(o))})),o.on("register:img",((t,n)=>{"imageBlock"!==n.model&&"imageInline"!==n.model||(e.isRegistered("imageBlock")&&e.extend("imageBlock",{allowAttributes:["htmlAttributes","htmlFigureAttributes","htmlLinkAttributes"]}),e.isRegistered("imageInline")&&e.extend("imageInline",{allowAttributes:["htmlA","htmlAttributes"]}),r.for("upcast").add(function(t){return e=>{e.on("element:img",((e,r,o)=>{if(!r.modelRange)return;const n=r.viewItem,i=n.parent;function s(e,n){const i=t.processViewAttributes(e,o);i&&o.writer.setAttribute(n,i,r.modelRange)}function l(t){r.modelRange&&r.modelRange.getContainedElement().is("element","imageBlock")&&s(t,"htmlLinkAttributes")}s(n,"htmlAttributes"),i.is("element","a")&&l(i)}),{priority:"low"})}}(o)),r.for("downcast").add((t=>{function e(e){t.on(`attribute:${e}:imageInline`,((t,e,r)=>{if(!r.consumable.consume(e.item,t.name))return;const{attributeOldValue:o,attributeNewValue:n}=e,i=r.mapper.toViewElement(e.item);Gr(r.writer,o,n,i)}),{priority:"low"})}function r(e,r){t.on(`attribute:${r}:imageBlock`,((t,r,o)=>{if(!o.consumable.test(r.item,t.name))return;const{attributeOldValue:n,attributeNewValue:i}=r,s=o.mapper.toViewElement(r.item),l=ko(o.writer,s,e);l&&(Gr(o.writer,n,i,l),o.consumable.consume(r.item,t.name))}),{priority:"low"}),"a"===e&&t.on("attribute:linkHref:imageBlock",((t,e,r)=>{if(!r.consumable.consume(e.item,"attribute:htmlLinkAttributes:imageBlock"))return;const o=r.mapper.toViewElement(e.item),n=ko(r.writer,o,"a");Kr(r.writer,e.item.getAttribute("htmlLinkAttributes"),n)}),{priority:"low"})}e("htmlAttributes"),r("img","htmlAttributes"),r("figure","htmlFigureAttributes"),r("a","htmlLinkAttributes")})),t.stop())}))}}function ko(t,e,r){const o=t.createRangeOn(e);for(const{item:t}of o.getWalker())if(t.is("element",r))return t}class Co extends t.Plugin{static get requires(){return[po]}static get pluginName(){return"MediaEmbedElementSupport"}init(){const t=this.editor;if(!t.plugins.has("MediaEmbed")||t.config.get("mediaEmbed.previewsInData"))return;const e=t.model.schema,r=t.conversion,o=this.editor.plugins.get(po),n=this.editor.plugins.get(He),i=t.config.get("mediaEmbed.elementName");n.registerBlockElement({model:"media",view:i}),o.on("register:figure",(()=>{r.for("upcast").add(function(t){return e=>{e.on("element:figure",((e,r,o)=>{const n=r.viewItem;if(!r.modelRange||!n.hasClass("media"))return;const i=t.processViewAttributes(n,o);i&&o.writer.setAttribute("htmlFigureAttributes",i,r.modelRange)}),{priority:"low"})}}(o))})),o.on(`register:${i}`,((t,n)=>{"media"===n.model&&(e.extend("media",{allowAttributes:["htmlAttributes","htmlFigureAttributes"]}),r.for("upcast").add(function(t,e){return t=>{t.on(`element:${e}`,r)};function r(e,r,o){function n(e,n){const i=t.processViewAttributes(e,o);i&&o.writer.setAttribute(n,i,r.modelRange)}n(r.viewItem,"htmlAttributes")}}(o,i)),r.for("dataDowncast").add(function(t){return e=>{function r(t,r){e.on(`attribute:${r}:media`,((e,r,o)=>{if(!o.consumable.consume(r.item,e.name))return;const{attributeOldValue:n,attributeNewValue:i}=r,s=o.mapper.toViewElement(r.item),l=function(t,e,r){const o=t.createRangeOn(e);for(const{item:t}of o.getWalker())if(t.is("element",r))return t}(o.writer,s,t);Gr(o.writer,n,i,l)}))}r(t,"htmlAttributes"),r("figure","htmlFigureAttributes")}}(i)),t.stop())}))}}class $o extends t.Plugin{static get requires(){return[po]}static get pluginName(){return"ScriptElementSupport"}init(){const t=this.editor.plugins.get(po);t.on("register:script",((e,r)=>{const o=this.editor,n=o.model.schema,i=o.conversion;n.register("htmlScript",r.modelSchema),n.extend("htmlScript",{allowAttributes:["htmlAttributes","htmlContent"],isContent:!0}),o.data.registerRawContentMatcher({name:"script"}),i.for("upcast").elementToElement({view:"script",model:Qr(r)}),i.for("upcast").add(to(r,t)),i.for("downcast").elementToElement({model:"htmlScript",view:(t,{writer:e})=>Xr("script",t,e)}),i.for("downcast").add(eo(r)),e.stop()}))}}class xo extends t.Plugin{static get requires(){return[po]}static get pluginName(){return"TableElementSupport"}init(){const t=this.editor;if(!t.plugins.has("TableEditing"))return;const e=t.model.schema,r=t.conversion,o=t.plugins.get(po);o.on("register:figure",(()=>{r.for("upcast").add(function(t){return e=>{e.on("element:figure",((e,r,o)=>{const n=r.viewItem;if(!r.modelRange||!n.hasClass("table"))return;const i=t.processViewAttributes(n,o);i&&o.writer.setAttribute("htmlFigureAttributes",i,r.modelRange)}),{priority:"low"})}}(o))})),o.on("register:table",((t,n)=>{"table"===n.model&&(e.extend("table",{allowAttributes:["htmlAttributes","htmlFigureAttributes","htmlTheadAttributes","htmlTbodyAttributes"]}),r.for("upcast").add(function(t){return e=>{e.on("element:table",((e,r,o)=>{const n=r.viewItem;i(n,"htmlAttributes");for(const t of n.getChildren())t.is("element","thead")&&i(t,"htmlTheadAttributes"),t.is("element","tbody")&&i(t,"htmlTbodyAttributes");function i(e,n){const i=t.processViewAttributes(e,o);i&&o.writer.setAttribute(n,i,r.modelRange)}}))}}(o)),r.for("downcast").add((t=>{function e(e,r){t.on(`attribute:${r}:table`,((t,r,o)=>{if(!o.consumable.consume(r.item,t.name))return;const n=o.mapper.toViewElement(r.item),i=function(t,e,r){const o=t.createRangeOn(e);for(const{item:t}of o.getWalker())if(t.is("element",r))return t}(o.writer,n,e);Kr(o.writer,r.attributeNewValue,i)}))}e("table","htmlAttributes"),e("figure","htmlFigureAttributes"),e("thead","htmlTheadAttributes"),e("tbody","htmlTbodyAttributes")})),t.stop())}))}}class Io extends t.Plugin{static get requires(){return[po]}static get pluginName(){return"StyleElementSupport"}init(){const t=this.editor.plugins.get(po);t.on("register:style",((e,r)=>{const o=this.editor,n=o.model.schema,i=o.conversion;n.register("htmlStyle",r.modelSchema),n.extend("htmlStyle",{allowAttributes:["htmlAttributes","htmlContent"],isContent:!0}),o.data.registerRawContentMatcher({name:"style"}),i.for("upcast").elementToElement({view:"style",model:Qr(r)}),i.for("upcast").add(to(r,t)),i.for("downcast").elementToElement({model:"htmlStyle",view:(t,{writer:e})=>Xr("style",t,e)}),i.for("downcast").add(eo(r)),e.stop()}))}}const Fo=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this};const Po=function(t){return this.__data__.has(t)};function Bo(t){var e=-1,r=null==t?0:t.length;for(this.__data__=new bt;++e<r;)this.add(t[e])}Bo.prototype.add=Bo.prototype.push=Fo,Bo.prototype.has=Po;const To=Bo;const Ro=function(t,e){for(var r=-1,o=null==t?0:t.length;++r<o;)if(e(t[r],r,t))return!0;return!1};const Do=function(t,e){return t.has(e)};const Lo=function(t,e,r,o,n,i){var s=1&r,l=t.length,c=e.length;if(l!=c&&!(s&&c>l))return!1;var a=i.get(t),u=i.get(e);if(a&&u)return a==e&&u==t;var m=-1,d=!0,h=2&r?new To:void 0;for(i.set(t,e),i.set(e,t);++m<l;){var f=t[m],b=e[m];if(o)var p=s?o(b,f,m,e,t,i):o(f,b,m,t,e,i);if(void 0!==p){if(p)continue;d=!1;break}if(h){if(!Ro(e,(function(t,e){if(!Do(h,e)&&(f===t||n(f,t,r,o,i)))return h.push(e)}))){d=!1;break}}else if(f!==b&&!n(f,b,r,o,i)){d=!1;break}}return i.delete(t),i.delete(e),d};const Mo=function(t){var e=-1,r=Array(t.size);return t.forEach((function(t,o){r[++e]=[o,t]})),r};const No=function(t){var e=-1,r=Array(t.size);return t.forEach((function(t){r[++e]=t})),r};var Vo=_?_.prototype:void 0,Ho=Vo?Vo.valueOf:void 0;const zo=function(t,e,r,o,n,i,s){switch(r){case"[object DataView]":if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case"[object ArrayBuffer]":return!(t.byteLength!=e.byteLength||!i(new Ct(t),new Ct(e)));case"[object Boolean]":case"[object Date]":case"[object Number]":return l(+t,+e);case"[object Error]":return t.name==e.name&&t.message==e.message;case"[object RegExp]":case"[object String]":return t==e+"";case"[object Map]":var c=Mo;case"[object Set]":var a=1&o;if(c||(c=No),t.size!=e.size&&!a)return!1;var u=s.get(t);if(u)return u==e;o|=2,s.set(t,e);var m=Lo(c(t),c(e),o,n,i,s);return s.delete(t),m;case"[object Symbol]":if(Ho)return Ho.call(t)==Ho.call(e)}return!1};var qo=Object.prototype.hasOwnProperty;const Uo=function(t,e,r,o,n,i){var s=1&r,l=cr(t),c=l.length;if(c!=cr(e).length&&!s)return!1;for(var a=c;a--;){var u=l[a];if(!(s?u in e:qo.call(e,u)))return!1}var m=i.get(t),d=i.get(e);if(m&&d)return m==e&&d==t;var h=!0;i.set(t,e),i.set(e,t);for(var f=s;++a<c;){var b=t[u=l[a]],p=e[u];if(o)var g=s?o(p,b,u,e,t,i):o(b,p,u,t,e,i);if(!(void 0===g?b===p||n(b,p,r,o,i):g)){h=!1;break}f||(f="constructor"==u)}if(h&&!f){var v=t.constructor,w=e.constructor;v==w||!("constructor"in t)||!("constructor"in e)||"function"==typeof v&&v instanceof v&&"function"==typeof w&&w instanceof w||(h=!1)}return i.delete(t),i.delete(e),h};var Wo="[object Arguments]",Go="[object Array]",Ko="[object Object]",Zo=Object.prototype.hasOwnProperty;const Qo=function(t,e,r,o,n,i){var s=Ut(t),l=Ut(e),c=s?Go:Or(t),a=l?Go:Or(e),u=(c=c==Wo?Ko:c)==Ko,m=(a=a==Wo?Ko:a)==Ko,d=c==a;if(d&&Yt(t)){if(!Yt(e))return!1;s=!0,u=!1}if(d&&!u)return i||(i=new vt),s||fe(t)?Lo(t,e,r,o,n,i):zo(t,e,c,r,o,n,i);if(!(1&r)){var h=u&&Zo.call(t,"__wrapped__"),f=m&&Zo.call(e,"__wrapped__");if(h||f){var b=h?t.value():t,p=f?e.value():e;return i||(i=new vt),n(b,p,r,o,i)}}return!!d&&(i||(i=new vt),Uo(t,e,r,o,n,i))};const Jo=function t(e,r,o,n,i){return e===r||(null==e||null==r||!Mt(e)&&!Mt(r)?e!=e&&r!=r:Qo(e,r,o,n,t,i))};const Xo=function(t,e){return Jo(t,e)};class Yo extends t.Plugin{static get requires(){return[po]}static get pluginName(){return"DocumentListElementSupport"}init(){const t=this.editor;if(!t.plugins.has("DocumentListEditing"))return;const e=t.model.schema,r=t.conversion,o=t.plugins.get(po),n=t.plugins.get("DocumentListEditing");n.registerDowncastStrategy({scope:"item",attributeName:"htmlLiAttributes",setAttributeOnDowncast(t,e,r){Kr(t,e,r)}}),n.registerDowncastStrategy({scope:"list",attributeName:"htmlListAttributes",setAttributeOnDowncast(t,e,r){Kr(t,e,r)}}),o.on("register",((t,n)=>{["ul","ol","li"].includes(n.view)&&(t.stop(),e.checkAttribute("$block","htmlListAttributes")||(e.extend("$block",{allowAttributes:["htmlListAttributes","htmlLiAttributes"]}),e.extend("$blockObject",{allowAttributes:["htmlListAttributes","htmlLiAttributes"]}),e.extend("$container",{allowAttributes:["htmlListAttributes","htmlLiAttributes"]}),r.for("upcast").add((t=>{t.on("element:ul",tn("htmlListAttributes",o),{priority:"low"}),t.on("element:ol",tn("htmlListAttributes",o),{priority:"low"}),t.on("element:li",tn("htmlLiAttributes",o),{priority:"low"})}))))})),n.on("postFixer",((t,{listNodes:e,writer:r})=>{const o=[];for(const{node:n,previous:i}of e){if(!i)continue;const e=n.getAttribute("listIndent"),s=i.getAttribute("listIndent");let l=null;if(e>s?o[s]=i:e<s?(l=o[e],o.length=e):l=i,l){if(l.getAttribute("listType")==n.getAttribute("listType")){const e=l.getAttribute("htmlListAttributes");Xo(n.getAttribute("htmlListAttributes"),e)||(r.setAttribute("htmlListAttributes",e,n),t.return=!0)}if(l.getAttribute("listItemId")==n.getAttribute("listItemId")){const e=l.getAttribute("htmlLiAttributes");Xo(n.getAttribute("htmlLiAttributes"),e)||(r.setAttribute("htmlLiAttributes",e,n),t.return=!0)}}}}))}afterInit(){const t=this.editor;t.commands.get("indentList")&&this.listenTo(t.commands.get("indentList"),"afterExecute",((e,r)=>{t.model.change((t=>{for(const e of r)t.setAttribute("htmlListAttributes",{},e)}))}))}}function tn(t,e){return(r,o,n)=>{const i=o.viewItem;o.modelRange||Object.assign(o,n.convertChildren(o.viewItem,o.modelCursor));const s=e.processViewAttributes(i,n);for(const e of o.modelRange.getItems({shallow:!0}))e.hasAttribute("listItemId")&&(e.hasAttribute(t)||n.writer.setAttribute(t,s||{},e))}}class en extends t.Plugin{static get requires(){return[po,He]}static get pluginName(){return"CustomElementSupport"}init(){const t=this.editor.plugins.get(po),e=this.editor.plugins.get(He);t.on("register:$customElement",((r,o)=>{r.stop();const n=this.editor,i=n.model.schema,s=n.conversion,l=n.editing.view.domConverter.unsafeElements,c=n.data.htmlProcessor.domConverter.preElements;i.register(o.model,o.modelSchema),i.extend(o.model,{allowAttributes:["htmlElementName","htmlAttributes","htmlContent"],isContent:!0}),s.for("upcast").elementToElement({view:/.*/,model:(r,i)=>{if("$comment"==r.name)return;if(!function(t){try{document.createElement(t)}catch(t){return!1}return!0}(r.name))return;if(e.getDefinitionsForView(r.name).size)return;l.includes(r.name)||l.push(r.name),c.includes(r.name)||c.push(r.name);const s=i.writer.createElement(o.model,{htmlElementName:r.name}),a=t.processViewAttributes(r,i);a&&i.writer.setAttribute("htmlAttributes",a,s);const u=new ze.UpcastWriter(r.document).createDocumentFragment(r),m=n.data.processor.toData(u);i.writer.setAttribute("htmlContent",m,s);for(const{item:t}of n.editing.view.createRangeIn(r))i.consumable.consume(t,{name:!0});return s},converterPriority:"low"}),s.for("editingDowncast").elementToElement({model:{name:o.model,attributes:["htmlElementName","htmlAttributes","htmlContent"]},view:(t,{writer:e})=>{const r=t.getAttribute("htmlElementName"),o=e.createRawElement(r);return t.hasAttribute("htmlAttributes")&&Kr(e,t.getAttribute("htmlAttributes"),o),o}}),s.for("dataDowncast").elementToElement({model:{name:o.model,attributes:["htmlElementName","htmlAttributes","htmlContent"]},view:(t,{writer:e})=>{const r=t.getAttribute("htmlElementName"),o=t.getAttribute("htmlContent"),n=e.createRawElement(r,null,((t,e)=>{e.setContentOf(t,o);const r=t.firstChild;for(r.remove();r.firstChild;)t.appendChild(r.firstChild)}));return t.hasAttribute("htmlAttributes")&&Kr(e,t.getAttribute("htmlAttributes"),n),n}})}))}}class rn extends t.Plugin{static get pluginName(){return"GeneralHtmlSupport"}static get requires(){return[po,_o,So,Oo,Eo,Co,$o,xo,Io,Yo,en]}init(){const t=this.editor,e=t.plugins.get(po);e.loadAllowedConfig(t.config.get("htmlSupport.allow")||[]),e.loadDisallowedConfig(t.config.get("htmlSupport.disallow")||[])}getGhsAttributeNameForElement(t){const e=this.editor.plugins.get("DataSchema"),r=Array.from(e.getDefinitionsForView(t,!1));return r&&r.length&&r[0].isInline&&!r[0].isObject?r[0].model:"htmlAttributes"}addModelHtmlClass(t,r,o){const n=this.editor.model,i=this.getGhsAttributeNameForElement(t);n.change((t=>{for(const s of on(n,o,i))nn(t,s,i,"classes",(t=>{for(const o of(0,e.toArray)(r))t.add(o)}))}))}removeModelHtmlClass(t,r,o){const n=this.editor.model,i=this.getGhsAttributeNameForElement(t);n.change((t=>{for(const s of on(n,o,i))nn(t,s,i,"classes",(t=>{for(const o of(0,e.toArray)(r))t.delete(o)}))}))}setModelHtmlAttributes(t,e,r){const o=this.editor.model,n=this.getGhsAttributeNameForElement(t);o.change((t=>{for(const i of on(o,r,n))nn(t,i,n,"attributes",(t=>{for(const[r,o]of Object.entries(e))t.set(r,o)}))}))}removeModelHtmlAttributes(t,r,o){const n=this.editor.model,i=this.getGhsAttributeNameForElement(t);n.change((t=>{for(const s of on(n,o,i))nn(t,s,i,"attributes",(t=>{for(const o of(0,e.toArray)(r))t.delete(o)}))}))}setModelHtmlStyles(t,e,r){const o=this.editor.model,n=this.getGhsAttributeNameForElement(t);o.change((t=>{for(const i of on(o,r,n))nn(t,i,n,"styles",(t=>{for(const[r,o]of Object.entries(e))t.set(r,o)}))}))}removeModelHtmlStyles(t,r,o){const n=this.editor.model,i=this.getGhsAttributeNameForElement(t);n.change((t=>{for(const s of on(n,o,i))nn(t,s,i,"styles",(t=>{for(const o of(0,e.toArray)(r))t.delete(o)}))}))}}function*on(t,e,r){if(e.is("documentSelection")&&e.isCollapsed)t.schema.checkAttributeInSelection(e,r)&&(yield e);else for(const o of function(t,e,r){return e.is("node")||e.is("$text")||e.is("$textProxy")?t.schema.checkAttribute(e,r)?[t.createRangeOn(e)]:[]:t.schema.getValidRanges(t.createSelection(e).getRanges(),r)}(t,e,r))yield*o.getItems({shallow:!0})}function nn(t,e,r,o,n){const i=e.getAttribute(r),s={};for(const t of["attributes","styles","classes"])if(t!=o)i&&i[t]&&(s[t]=i[t]);else{const e="classes"==t?new Set(i&&i[t]||[]):new Map(Object.entries(i&&i[t]||{}));n(e),e.size&&(s[t]="classes"==t?Array.from(e):Object.fromEntries(e))}Object.keys(s).length?e.is("documentSelection")?t.setSelectionAttribute(r,s):t.setAttribute(r,s,e):i&&(e.is("documentSelection")?t.removeSelectionAttribute(r):t.removeAttribute(r,e))}class sn extends t.Plugin{static get pluginName(){return"HtmlComment"}init(){const t=this.editor;t.model.schema.addAttributeCheck(((t,e)=>{if(t.endsWith("$root")&&e.startsWith("$comment"))return!0})),t.conversion.for("upcast").elementToMarker({view:"$comment",model:(t,{writer:r})=>{const o=this.editor.model.document.getRoot(),n=t.getCustomProperty("$rawContent"),i=`$comment:${(0,e.uid)()}`;return r.setAttribute(i,n,o),i}}),t.conversion.for("dataDowncast").markerToElement({model:"$comment",view:(t,{writer:e})=>{const r=this.editor.model.document.getRoot(),o=t.markerName,n=r.getAttribute(o),i=e.createUIElement("$comment");return e.setCustomProperty("$rawContent",n,i),i}}),t.model.document.registerPostFixer((e=>{const r=t.model.document.getRoot(),o=t.model.document.differ.getChangedMarkers().filter((t=>t.name.startsWith("$comment"))).filter((t=>{const e=t.data.newRange;return e&&"$graveyard"===e.root.rootName}));if(0===o.length)return!1;for(const t of o)e.removeMarker(t.name),e.removeAttribute(t.name,r);return!0})),t.data.on("set",(()=>{for(const e of t.model.markers.getMarkersGroup("$comment"))this.removeHtmlComment(e.name)}),{priority:"high"}),t.model.on("deleteContent",((e,[r])=>{for(const e of r.getRanges()){const r=t.model.schema.getLimitElement(e),o=t.model.createPositionAt(r,0),n=t.model.createPositionAt(r,"end");let i;i=o.isTouching(e.start)&&n.isTouching(e.end)?this.getHtmlCommentsInRange(t.model.createRange(o,n)):this.getHtmlCommentsInRange(e,{skipBoundaries:!0});for(const t of i)this.removeHtmlComment(t)}}),{priority:"high"})}createHtmlComment(t,r){const o=(0,e.uid)(),n=this.editor.model,i=n.document.getRoot(),s=`$comment:${o}`;return n.change((e=>{const o=e.createRange(t);return e.addMarker(s,{usingOperation:!0,affectsData:!0,range:o}),e.setAttribute(s,r,i),s}))}removeHtmlComment(t){const e=this.editor,r=e.model.document.getRoot(),o=e.model.markers.get(t);return!!o&&(e.model.change((e=>{e.removeMarker(o),e.removeAttribute(t,r)})),!0)}getHtmlCommentData(t){const e=this.editor,r=e.model.markers.get(t),o=e.model.document.getRoot();return r?{content:o.getAttribute(t),position:r.getStart()}:null}getHtmlCommentsInRange(t,{skipBoundaries:e=!1}={}){const r=!e;return Array.from(this.editor.model.markers.getMarkersGroup("$comment")).filter((e=>function(t,e){const o=t.getRange().start;return(o.isAfter(e.start)||r&&o.isEqual(e.start))&&(o.isBefore(e.end)||r&&o.isEqual(e.end))}(e,t))).map((t=>t.name))}}})(),(window.CKEditor5=window.CKEditor5||{}).htmlSupport=o})();
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/image/image.js b/core/assets/vendor/ckeditor5/image/image.js
index 47bad8f405..10fbce14c8 100644
--- a/core/assets/vendor/ckeditor5/image/image.js
+++ b/core/assets/vendor/ckeditor5/image/image.js
@@ -2,4 +2,4 @@
 /*!
  * @license Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
  * For licensing, see LICENSE.md.
- */(()=>{var e={540:(e,t,i)=>{"use strict";i.d(t,{Z:()=>a});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,".ck-content .image{clear:both;display:table;margin:.9em auto;min-width:50px;text-align:center}.ck-content .image img{display:block;margin:0 auto;max-width:100%;min-width:100%}.ck-content .image-inline{align-items:flex-start;display:inline-flex;max-width:100%}.ck-content .image-inline picture{display:flex}.ck-content .image-inline img,.ck-content .image-inline picture{flex-grow:1;flex-shrink:1;max-width:100%}.ck.ck-editor__editable .image>figcaption.ck-placeholder:before{overflow:hidden;padding-left:inherit;padding-right:inherit;text-overflow:ellipsis;white-space:nowrap}.ck.ck-editor__editable .image-inline.ck-widget_selected,.ck.ck-editor__editable .image.ck-widget_selected{z-index:1}.ck.ck-editor__editable .image-inline.ck-widget_selected ::selection{display:none}.ck.ck-editor__editable td .image-inline img,.ck.ck-editor__editable th .image-inline img{max-width:none}",""]);const a=o},560:(e,t,i)=>{"use strict";i.d(t,{Z:()=>a});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,":root{--ck-color-image-caption-background:#f7f7f7;--ck-color-image-caption-text:#333;--ck-color-image-caption-highligted-background:#fd0}.ck-content .image>figcaption{background-color:var(--ck-color-image-caption-background);caption-side:bottom;color:var(--ck-color-image-caption-text);display:table-caption;font-size:.75em;outline-offset:-1px;padding:.6em;word-break:break-word}.ck.ck-editor__editable .image>figcaption.image__caption_highlighted{animation:ck-image-caption-highlight .6s ease-out}@keyframes ck-image-caption-highlight{0%{background-color:var(--ck-color-image-caption-highligted-background)}to{background-color:var(--ck-color-image-caption-background)}}",""]);const a=o},91:(e,t,i)=>{"use strict";i.d(t,{Z:()=>a});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,".ck.ck-image-insert__panel{padding:var(--ck-spacing-large)}.ck.ck-image-insert__ck-finder-button{border:1px solid #ccc;border-radius:var(--ck-border-radius);display:block;margin:var(--ck-spacing-standard) auto;width:100%}.ck.ck-splitbutton>.ck-file-dialog-button.ck-button{border:none;margin:0;padding:0}",""]);const a=o},439:(e,t,i)=>{"use strict";i.d(t,{Z:()=>a});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,".ck.ck-image-insert-form:focus{outline:none}.ck.ck-form__row{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-between}.ck.ck-form__row>:not(.ck-label){flex-grow:1}.ck.ck-form__row.ck-image-insert-form__action-row{margin-top:var(--ck-spacing-standard)}.ck.ck-form__row.ck-image-insert-form__action-row .ck-button-cancel,.ck.ck-form__row.ck-image-insert-form__action-row .ck-button-save{justify-content:center}.ck.ck-form__row.ck-image-insert-form__action-row .ck-button .ck-button__label{color:var(--ck-color-text)}",""]);const a=o},601:(e,t,i)=>{"use strict";i.d(t,{Z:()=>a});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,".ck-content .image.image_resized{box-sizing:border-box;display:block;max-width:100%}.ck-content .image.image_resized img{width:100%}.ck-content .image.image_resized>figcaption{display:block}.ck.ck-editor__editable td .image-inline.image_resized img,.ck.ck-editor__editable th .image-inline.image_resized img{max-width:100%}[dir=ltr] .ck.ck-button.ck-button_with-text.ck-resize-image-button .ck-button__icon{margin-right:var(--ck-spacing-standard)}[dir=rtl] .ck.ck-button.ck-button_with-text.ck-resize-image-button .ck-button__icon{margin-left:var(--ck-spacing-standard)}.ck.ck-dropdown .ck-button.ck-resize-image-button .ck-button__label{width:4em}",""]);const a=o},29:(e,t,i)=>{"use strict";i.d(t,{Z:()=>a});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,":root{--ck-image-style-spacing:1.5em;--ck-inline-image-style-spacing:calc(var(--ck-image-style-spacing)/2)}.ck-content .image-style-block-align-left,.ck-content .image-style-block-align-right{max-width:calc(100% - var(--ck-image-style-spacing))}.ck-content .image-style-align-left,.ck-content .image-style-align-right{clear:none}.ck-content .image-style-side{float:right;margin-left:var(--ck-image-style-spacing);max-width:50%}.ck-content .image-style-align-left{float:left;margin-right:var(--ck-image-style-spacing)}.ck-content .image-style-align-center{margin-left:auto;margin-right:auto}.ck-content .image-style-align-right{float:right;margin-left:var(--ck-image-style-spacing)}.ck-content .image-style-block-align-right{margin-left:auto;margin-right:0}.ck-content .image-style-block-align-left{margin-left:0;margin-right:auto}.ck-content p+.image-style-align-left,.ck-content p+.image-style-align-right,.ck-content p+.image-style-side{margin-top:0}.ck-content .image-inline.image-style-align-left,.ck-content .image-inline.image-style-align-right{margin-bottom:var(--ck-inline-image-style-spacing);margin-top:var(--ck-inline-image-style-spacing)}.ck-content .image-inline.image-style-align-left{margin-right:var(--ck-inline-image-style-spacing)}.ck-content .image-inline.image-style-align-right{margin-left:var(--ck-inline-image-style-spacing)}.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open>.ck-splitbutton__action:not(.ck-disabled),.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled),.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled):not(:hover),.ck.ck-splitbutton.ck-splitbutton_flatten:hover>.ck-splitbutton__action:not(.ck-disabled),.ck.ck-splitbutton.ck-splitbutton_flatten:hover>.ck-splitbutton__arrow:not(.ck-disabled),.ck.ck-splitbutton.ck-splitbutton_flatten:hover>.ck-splitbutton__arrow:not(.ck-disabled):not(:hover){background-color:var(--ck-color-button-on-background)}.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open>.ck-splitbutton__action:not(.ck-disabled):after,.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled):after,.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled):not(:hover):after,.ck.ck-splitbutton.ck-splitbutton_flatten:hover>.ck-splitbutton__action:not(.ck-disabled):after,.ck.ck-splitbutton.ck-splitbutton_flatten:hover>.ck-splitbutton__arrow:not(.ck-disabled):after,.ck.ck-splitbutton.ck-splitbutton_flatten:hover>.ck-splitbutton__arrow:not(.ck-disabled):not(:hover):after{display:none}.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open:hover>.ck-splitbutton__action:not(.ck-disabled),.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open:hover>.ck-splitbutton__arrow:not(.ck-disabled),.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open:hover>.ck-splitbutton__arrow:not(.ck-disabled):not(:hover){background-color:var(--ck-color-button-on-hover-background)}",""]);const a=o},948:(e,t,i)=>{"use strict";i.d(t,{Z:()=>a});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,'.ck-image-upload-complete-icon{border-radius:50%;display:block;position:absolute;right:min(var(--ck-spacing-medium),6%);top:min(var(--ck-spacing-medium),6%);z-index:1}.ck-image-upload-complete-icon:after{content:"";position:absolute}:root{--ck-color-image-upload-icon:#fff;--ck-color-image-upload-icon-background:#008a00;--ck-image-upload-icon-size:20;--ck-image-upload-icon-width:2px;--ck-image-upload-icon-is-visible:clamp(0px,100% - 50px,1px)}.ck-image-upload-complete-icon{animation-delay:0ms,3s;animation-duration:.5s,.5s;animation-fill-mode:forwards,forwards;animation-name:ck-upload-complete-icon-show,ck-upload-complete-icon-hide;background:var(--ck-color-image-upload-icon-background);font-size:calc(1px*var(--ck-image-upload-icon-size));height:calc(var(--ck-image-upload-icon-is-visible)*var(--ck-image-upload-icon-size));opacity:0;overflow:hidden;width:calc(var(--ck-image-upload-icon-is-visible)*var(--ck-image-upload-icon-size))}.ck-image-upload-complete-icon:after{animation-delay:.5s;animation-duration:.5s;animation-fill-mode:forwards;animation-name:ck-upload-complete-icon-check;border-right:var(--ck-image-upload-icon-width) solid var(--ck-color-image-upload-icon);border-top:var(--ck-image-upload-icon-width) solid var(--ck-color-image-upload-icon);box-sizing:border-box;height:0;left:25%;opacity:0;top:50%;transform:scaleX(-1) rotate(135deg);transform-origin:left top;width:0}@keyframes ck-upload-complete-icon-show{0%{opacity:0}to{opacity:1}}@keyframes ck-upload-complete-icon-hide{0%{opacity:1}to{opacity:0}}@keyframes ck-upload-complete-icon-check{0%{height:0;opacity:1;width:0}33%{height:0;width:.3em}to{height:.45em;opacity:1;width:.3em}}',""]);const a=o},467:(e,t,i)=>{"use strict";i.d(t,{Z:()=>a});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,'.ck .ck-upload-placeholder-loader{align-items:center;display:flex;justify-content:center;left:0;position:absolute;top:0}.ck .ck-upload-placeholder-loader:before{content:"";position:relative}:root{--ck-color-upload-placeholder-loader:#b3b3b3;--ck-upload-placeholder-loader-size:32px;--ck-upload-placeholder-image-aspect-ratio:2.8}.ck .ck-image-upload-placeholder{margin:0;width:100%}.ck .ck-image-upload-placeholder.image-inline{width:calc(var(--ck-upload-placeholder-loader-size)*2*var(--ck-upload-placeholder-image-aspect-ratio))}.ck .ck-image-upload-placeholder img{aspect-ratio:var(--ck-upload-placeholder-image-aspect-ratio)}.ck .ck-upload-placeholder-loader{height:100%;width:100%}.ck .ck-upload-placeholder-loader:before{animation:ck-upload-placeholder-loader 1s linear infinite;border-radius:50%;border-right:2px solid transparent;border-top:3px solid var(--ck-color-upload-placeholder-loader);height:var(--ck-upload-placeholder-loader-size);width:var(--ck-upload-placeholder-loader-size)}@keyframes ck-upload-placeholder-loader{to{transform:rotate(1turn)}}',""]);const a=o},271:(e,t,i)=>{"use strict";i.d(t,{Z:()=>a});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,".ck.ck-editor__editable .image,.ck.ck-editor__editable .image-inline{position:relative}.ck.ck-editor__editable .image .ck-progress-bar,.ck.ck-editor__editable .image-inline .ck-progress-bar{left:0;position:absolute;top:0}.ck.ck-editor__editable .image-inline.ck-appear,.ck.ck-editor__editable .image.ck-appear{animation:fadeIn .7s}.ck.ck-editor__editable .image .ck-progress-bar,.ck.ck-editor__editable .image-inline .ck-progress-bar{background:var(--ck-color-upload-bar-background);height:2px;transition:width .1s;width:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}",""]);const a=o},168:(e,t,i)=>{"use strict";i.d(t,{Z:()=>a});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,".ck.ck-text-alternative-form{display:flex;flex-direction:row;flex-wrap:nowrap}.ck.ck-text-alternative-form .ck-labeled-field-view{display:inline-block}.ck.ck-text-alternative-form .ck-label{display:none}@media screen and (max-width:600px){.ck.ck-text-alternative-form{flex-wrap:wrap}.ck.ck-text-alternative-form .ck-labeled-field-view{flex-basis:100%}.ck.ck-text-alternative-form .ck-button{flex-basis:50%}}",""]);const a=o},764:(e,t,i)=>{"use strict";i.d(t,{Z:()=>a});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,'.ck-vertical-form .ck-button:after{bottom:-1px;content:"";position:absolute;right:-1px;top:-1px;width:0;z-index:1}.ck-vertical-form .ck-button:focus:after{display:none}@media screen and (max-width:600px){.ck.ck-responsive-form .ck-button:after{bottom:-1px;content:"";position:absolute;right:-1px;top:-1px;width:0;z-index:1}.ck.ck-responsive-form .ck-button:focus:after{display:none}}.ck-vertical-form>.ck-button:nth-last-child(2):after{border-right:1px solid var(--ck-color-base-border)}.ck.ck-responsive-form{padding:var(--ck-spacing-large)}.ck.ck-responsive-form:focus{outline:none}[dir=ltr] .ck.ck-responsive-form>:not(:first-child),[dir=rtl] .ck.ck-responsive-form>:not(:last-child){margin-left:var(--ck-spacing-standard)}@media screen and (max-width:600px){.ck.ck-responsive-form{padding:0;width:calc(var(--ck-input-width)*.8)}.ck.ck-responsive-form .ck-labeled-field-view{margin:var(--ck-spacing-large) var(--ck-spacing-large) 0}.ck.ck-responsive-form .ck-labeled-field-view .ck-input-text{min-width:0;width:100%}.ck.ck-responsive-form .ck-labeled-field-view .ck-labeled-field-view__error{white-space:normal}.ck.ck-responsive-form>.ck-button:nth-last-child(2):after{border-right:1px solid var(--ck-color-base-border)}.ck.ck-responsive-form>.ck-button:last-child,.ck.ck-responsive-form>.ck-button:nth-last-child(2){border-radius:0;margin-top:var(--ck-spacing-large);padding:var(--ck-spacing-standard)}.ck.ck-responsive-form>.ck-button:last-child:not(:focus),.ck.ck-responsive-form>.ck-button:nth-last-child(2):not(:focus){border-top:1px solid var(--ck-color-base-border)}[dir=ltr] .ck.ck-responsive-form>.ck-button:last-child,[dir=ltr] .ck.ck-responsive-form>.ck-button:nth-last-child(2),[dir=rtl] .ck.ck-responsive-form>.ck-button:last-child,[dir=rtl] .ck.ck-responsive-form>.ck-button:nth-last-child(2){margin-left:0}[dir=rtl] .ck.ck-responsive-form>.ck-button:last-child:last-of-type,[dir=rtl] .ck.ck-responsive-form>.ck-button:nth-last-child(2):last-of-type{border-right:1px solid var(--ck-color-base-border)}}',""]);const a=o},609:e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var i=e(t);return t[2]?"@media ".concat(t[2]," {").concat(i,"}"):i})).join("")},t.i=function(e,i,n){"string"==typeof e&&(e=[[null,e,""]]);var o={};if(n)for(var a=0;a<this.length;a++){var s=this[a][0];null!=s&&(o[s]=!0)}for(var r=0;r<e.length;r++){var l=[].concat(e[r]);n&&o[l[0]]||(i&&(l[2]?l[2]="".concat(i," and ").concat(l[2]):l[2]=i),t.push(l))}},t}},62:(e,t,i)=>{"use strict";var n,o=function(){return void 0===n&&(n=Boolean(window&&document&&document.all&&!window.atob)),n},a=function(){var e={};return function(t){if(void 0===e[t]){var i=document.querySelector(t);if(window.HTMLIFrameElement&&i instanceof window.HTMLIFrameElement)try{i=i.contentDocument.head}catch(e){i=null}e[t]=i}return e[t]}}(),s=[];function r(e){for(var t=-1,i=0;i<s.length;i++)if(s[i].identifier===e){t=i;break}return t}function l(e,t){for(var i={},n=[],o=0;o<e.length;o++){var a=e[o],l=t.base?a[0]+t.base:a[0],c=i[l]||0,g="".concat(l," ").concat(c);i[l]=c+1;var d=r(g),m={css:a[1],media:a[2],sourceMap:a[3]};-1!==d?(s[d].references++,s[d].updater(m)):s.push({identifier:g,updater:f(m,t),references:1}),n.push(g)}return n}function c(e){var t=document.createElement("style"),n=e.attributes||{};if(void 0===n.nonce){var o=i.nc;o&&(n.nonce=o)}if(Object.keys(n).forEach((function(e){t.setAttribute(e,n[e])})),"function"==typeof e.insert)e.insert(t);else{var s=a(e.insert||"head");if(!s)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");s.appendChild(t)}return t}var g,d=(g=[],function(e,t){return g[e]=t,g.filter(Boolean).join("\n")});function m(e,t,i,n){var o=i?"":n.media?"@media ".concat(n.media," {").concat(n.css,"}"):n.css;if(e.styleSheet)e.styleSheet.cssText=d(t,o);else{var a=document.createTextNode(o),s=e.childNodes;s[t]&&e.removeChild(s[t]),s.length?e.insertBefore(a,s[t]):e.appendChild(a)}}function u(e,t,i){var n=i.css,o=i.media,a=i.sourceMap;if(o?e.setAttribute("media",o):e.removeAttribute("media"),a&&"undefined"!=typeof btoa&&(n+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(a))))," */")),e.styleSheet)e.styleSheet.cssText=n;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(n))}}var p=null,h=0;function f(e,t){var i,n,o;if(t.singleton){var a=h++;i=p||(p=c(t)),n=m.bind(null,i,a,!1),o=m.bind(null,i,a,!0)}else i=c(t),n=u.bind(null,i,t),o=function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(i)};return n(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;n(e=t)}else o()}}e.exports=function(e,t){(t=t||{}).singleton||"boolean"==typeof t.singleton||(t.singleton=o());var i=l(e=e||[],t);return function(e){if(e=e||[],"[object Array]"===Object.prototype.toString.call(e)){for(var n=0;n<i.length;n++){var o=r(i[n]);s[o].references--}for(var a=l(e,t),c=0;c<i.length;c++){var g=r(i[c]);0===s[g].references&&(s[g].updater(),s.splice(g,1))}i=a}}}},945:(e,t,i)=>{e.exports=i(79)("./src/clipboard.js")},704:(e,t,i)=>{e.exports=i(79)("./src/core.js")},492:(e,t,i)=>{e.exports=i(79)("./src/engine.js")},181:(e,t,i)=>{e.exports=i(79)("./src/typing.js")},273:(e,t,i)=>{e.exports=i(79)("./src/ui.js")},254:(e,t,i)=>{e.exports=i(79)("./src/undo.js")},448:(e,t,i)=>{e.exports=i(79)("./src/upload.js")},209:(e,t,i)=>{e.exports=i(79)("./src/utils.js")},995:(e,t,i)=>{e.exports=i(79)("./src/widget.js")},79:e=>{"use strict";e.exports=CKEditor5.dll}},t={};function i(n){var o=t[n];if(void 0!==o)return o.exports;var a=t[n]={id:n,exports:{}};return e[n](a,a.exports,i),a.exports}i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.nc=void 0;var n={};(()=>{"use strict";i.r(n),i.d(n,{AutoImage:()=>h,Image:()=>j,ImageCaption:()=>K,ImageCaptionEditing:()=>q,ImageCaptionUtils:()=>M,ImageEditing:()=>R,ImageInsert:()=>xe,ImageInsertUI:()=>_e,ImageResize:()=>Oe,ImageResizeButtons:()=>Te,ImageResizeEditing:()=>Se,ImageResizeHandles:()=>Re,ImageStyle:()=>st,ImageStyleEditing:()=>Qe,ImageStyleUI:()=>it,ImageTextAlternative:()=>A,ImageTextAlternativeEditing:()=>b,ImageTextAlternativeUI:()=>S,ImageToolbar:()=>rt,ImageUpload:()=>he,ImageUploadEditing:()=>ue,ImageUploadProgress:()=>se,ImageUploadUI:()=>Y,PictureEditing:()=>lt});var e=i(704),t=i(945),o=i(492),a=i(254),s=i(181),r=i(209),l=i(995);function c(e){return e.createContainerElement("figure",{class:"image"},[e.createEmptyElement("img"),e.createSlot()])}function g(e,t){const i=e.plugins.get("ImageUtils"),n=e.plugins.has("ImageInlineEditing")&&e.plugins.has("ImageBlockEditing");return e=>{if(!i.isInlineImageView(e))return null;if(!n)return o(e);return(e.findAncestor(i.isBlockImageView)?"imageBlock":"imageInline")!==t?null:o(e)};function o(e){const t={name:!0};return e.hasAttribute("src")&&(t.attributes=["src"]),t}}function d(e,t){const i=(0,r.first)(t.getSelectedBlocks());return!i||e.isObject(i)||i.isEmpty&&"listItem"!=i.name?"imageBlock":"imageInline"}class m extends e.Plugin{static get pluginName(){return"ImageUtils"}isImage(e){return this.isInlineImage(e)||this.isBlockImage(e)}isInlineImageView(e){return!!e&&e.is("element","img")}isBlockImageView(e){return!!e&&e.is("element","figure")&&e.hasClass("image")}insertImage(e={},t=null,i=null){const n=this.editor,o=n.model,a=o.document.selection;i=u(n,t||a,i),e={...Object.fromEntries(a.getAttributes()),...e};for(const t in e)o.schema.checkAttribute(i,t)||delete e[t];return o.change((n=>{const a=n.createElement(i,e);return o.insertObject(a,t,null,{setSelection:"on",findOptimalPosition:!t&&"imageInline"!=i}),a.parent?a:null}))}getClosestSelectedImageWidget(e){const t=e.getFirstPosition();if(!t)return null;const i=e.getSelectedElement();if(i&&this.isImageWidget(i))return i;let n=t.parent;for(;n;){if(n.is("element")&&this.isImageWidget(n))return n;n=n.parent}return null}getClosestSelectedImageElement(e){const t=e.getSelectedElement();return this.isImage(t)?t:e.getFirstPosition().findAncestor("imageBlock")}isImageAllowed(){const e=this.editor.model.document.selection;return function(e,t){if("imageBlock"==u(e,t)){const i=function(e,t){const i=(0,l.findOptimalInsertionRange)(e,t).start.parent;if(i.isEmpty&&!i.is("element","$root"))return i.parent;return i}(t,e.model);if(e.model.schema.checkChild(i,"imageBlock"))return!0}else if(e.model.schema.checkChild(t.focus,"imageInline"))return!0;return!1}(this.editor,e)&&function(e){return[...e.focus.getAncestors()].every((e=>!e.is("element","imageBlock")))}(e)}toImageWidget(e,t,i){t.setCustomProperty("image",!0,e);return(0,l.toWidget)(e,t,{label:()=>{const t=this.findViewImgElement(e).getAttribute("alt");return t?`${t} ${i}`:i}})}isImageWidget(e){return!!e.getCustomProperty("image")&&(0,l.isWidget)(e)}isBlockImage(e){return!!e&&e.is("element","imageBlock")}isInlineImage(e){return!!e&&e.is("element","imageInline")}findViewImgElement(e){if(this.isInlineImageView(e))return e;const t=this.editor.editing.view;for(const{item:i}of t.createRangeIn(e))if(this.isInlineImageView(i))return i}}function u(e,t,i){const n=e.model.schema,o=e.config.get("image.insert.type");return e.plugins.has("ImageBlockEditing")?e.plugins.has("ImageInlineEditing")?i||("inline"===o?"imageInline":"block"===o?"imageBlock":t.is("selection")?d(n,t):n.checkChild(t,"imageInline")?"imageInline":"imageBlock"):"imageBlock":"imageInline"}const p=new RegExp(String(/^(http(s)?:\/\/)?[\w-]+\.[\w.~:/[\]@!$&'()*+,;=%-]+/.source+/\.(jpg|jpeg|png|gif|ico|webp|JPG|JPEG|PNG|GIF|ICO|WEBP)/.source+/(\?[\w.~:/[\]@!$&'()*+,;=%-]*)?/.source+/(#[\w.~:/[\]@!$&'()*+,;=%-]*)?$/.source));class h extends e.Plugin{static get requires(){return[t.Clipboard,m,a.Undo,s.Delete]}static get pluginName(){return"AutoImage"}constructor(e){super(e),this._timeoutId=null,this._positionToInsert=null}init(){const e=this.editor,t=e.model.document;this.listenTo(e.plugins.get("ClipboardPipeline"),"inputTransformation",(()=>{const e=t.selection.getFirstRange(),i=o.LivePosition.fromPosition(e.start);i.stickiness="toPrevious";const n=o.LivePosition.fromPosition(e.end);n.stickiness="toNext",t.once("change:data",(()=>{this._embedImageBetweenPositions(i,n),i.detach(),n.detach()}),{priority:"high"})})),e.commands.get("undo").on("execute",(()=>{this._timeoutId&&(r.global.window.clearTimeout(this._timeoutId),this._positionToInsert.detach(),this._timeoutId=null,this._positionToInsert=null)}),{priority:"high"})}_embedImageBetweenPositions(e,t){const i=this.editor,n=new o.LiveRange(e,t),a=n.getWalker({ignoreElementEnd:!0}),s=Object.fromEntries(i.model.document.selection.getAttributes()),l=this.editor.plugins.get("ImageUtils");let c="";for(const e of a)e.item.is("$textProxy")&&(c+=e.item.data);c=c.trim(),c.match(p)?(this._positionToInsert=o.LivePosition.fromPosition(e),this._timeoutId=r.global.window.setTimeout((()=>{i.commands.get("insertImage").isEnabled?(i.model.change((e=>{let t;this._timeoutId=null,e.remove(n),n.detach(),"$graveyard"!==this._positionToInsert.root.rootName&&(t=this._positionToInsert.toPosition()),l.insertImage({...s,src:c},t),this._positionToInsert.detach(),this._positionToInsert=null})),i.plugins.get("Delete").requestUndoOnBackspace()):n.detach()}),100)):n.detach()}}class f extends e.Command{refresh(){const e=this.editor.plugins.get("ImageUtils").getClosestSelectedImageElement(this.editor.model.document.selection);this.isEnabled=!!e,this.isEnabled&&e.hasAttribute("alt")?this.value=e.getAttribute("alt"):this.value=!1}execute(e){const t=this.editor,i=t.plugins.get("ImageUtils"),n=t.model,o=i.getClosestSelectedImageElement(n.document.selection);n.change((t=>{t.setAttribute("alt",e.newValue,o)}))}}class b extends e.Plugin{static get requires(){return[m]}static get pluginName(){return"ImageTextAlternativeEditing"}init(){this.editor.commands.add("imageTextAlternative",new f(this.editor))}}var k=i(273),w=i(62),I=i.n(w),v=i(168),y={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};I()(v.Z,y);v.Z.locals;var _=i(764),E={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};I()(_.Z,E);_.Z.locals;class x extends k.View{constructor(t){super(t);const i=this.locale.t;this.focusTracker=new r.FocusTracker,this.keystrokes=new r.KeystrokeHandler,this.labeledInput=this._createLabeledInputView(),this.saveButtonView=this._createButton(i("Save"),e.icons.check,"ck-button-save"),this.saveButtonView.type="submit",this.cancelButtonView=this._createButton(i("Cancel"),e.icons.cancel,"ck-button-cancel","cancel"),this._focusables=new k.ViewCollection,this._focusCycler=new k.FocusCycler({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"form",attributes:{class:["ck","ck-text-alternative-form","ck-responsive-form"],tabindex:"-1"},children:[this.labeledInput,this.saveButtonView,this.cancelButtonView]}),(0,k.injectCssTransitionDisabler)(this)}render(){super.render(),this.keystrokes.listenTo(this.element),(0,k.submitHandler)({view:this}),[this.labeledInput,this.saveButtonView,this.cancelButtonView].forEach((e=>{this._focusables.add(e),this.focusTracker.add(e.element)}))}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}_createButton(e,t,i,n){const o=new k.ButtonView(this.locale);return o.set({label:e,icon:t,tooltip:!0}),o.extendTemplate({attributes:{class:i}}),n&&o.delegate("execute").to(this,n),o}_createLabeledInputView(){const e=this.locale.t,t=new k.LabeledFieldView(this.locale,k.createLabeledInputText);return t.label=e("Text alternative"),t}}function C(e){const t=e.editing.view,i=k.BalloonPanelView.defaultPositions,n=e.plugins.get("ImageUtils");return{target:t.domConverter.mapViewToDom(n.getClosestSelectedImageWidget(t.document.selection)),positions:[i.northArrowSouth,i.northArrowSouthWest,i.northArrowSouthEast,i.southArrowNorth,i.southArrowNorthWest,i.southArrowNorthEast,i.viewportStickyNorth]}}class S extends e.Plugin{static get requires(){return[k.ContextualBalloon]}static get pluginName(){return"ImageTextAlternativeUI"}init(){this._createButton(),this._createForm()}destroy(){super.destroy(),this._form.destroy()}_createButton(){const t=this.editor,i=t.t;t.ui.componentFactory.add("imageTextAlternative",(n=>{const o=t.commands.get("imageTextAlternative"),a=new k.ButtonView(n);return a.set({label:i("Change image text alternative"),icon:e.icons.lowVision,tooltip:!0}),a.bind("isEnabled").to(o,"isEnabled"),this.listenTo(a,"execute",(()=>{this._showForm()})),a}))}_createForm(){const e=this.editor,t=e.editing.view.document,i=e.plugins.get("ImageUtils");this._balloon=this.editor.plugins.get("ContextualBalloon"),this._form=new x(e.locale),this._form.render(),this.listenTo(this._form,"submit",(()=>{e.execute("imageTextAlternative",{newValue:this._form.labeledInput.fieldView.element.value}),this._hideForm(!0)})),this.listenTo(this._form,"cancel",(()=>{this._hideForm(!0)})),this._form.keystrokes.set("Esc",((e,t)=>{this._hideForm(!0),t()})),this.listenTo(e.ui,"update",(()=>{i.getClosestSelectedImageWidget(t.selection)?this._isVisible&&function(e){const t=e.plugins.get("ContextualBalloon");if(e.plugins.get("ImageUtils").getClosestSelectedImageWidget(e.editing.view.document.selection)){const i=C(e);t.updatePosition(i)}}(e):this._hideForm(!0)})),(0,k.clickOutsideHandler)({emitter:this._form,activator:()=>this._isVisible,contextElements:[this._balloon.view.element],callback:()=>this._hideForm()})}_showForm(){if(this._isVisible)return;const e=this.editor,t=e.commands.get("imageTextAlternative"),i=this._form.labeledInput;this._form.disableCssTransitions(),this._isInBalloon||this._balloon.add({view:this._form,position:C(e)}),i.fieldView.value=i.fieldView.element.value=t.value||"",this._form.labeledInput.fieldView.select(),this._form.enableCssTransitions()}_hideForm(e){this._isInBalloon&&(this._form.focusTracker.isFocused&&this._form.saveButtonView.focus(),this._balloon.remove(this._form),e&&this.editor.editing.view.focus())}get _isVisible(){return this._balloon.visibleView===this._form}get _isInBalloon(){return this._balloon.hasView(this._form)}}class A extends e.Plugin{static get requires(){return[b,S]}static get pluginName(){return"ImageTextAlternative"}}function T(e,t){return e=>{e.on(`attribute:srcset:${t}`,i)};function i(t,i,n){if(!n.consumable.consume(i.item,t.name))return;const o=n.writer,a=n.mapper.toViewElement(i.item),s=e.findViewImgElement(a);if(null===i.attributeNewValue){const e=i.attributeOldValue;e.data&&(o.removeAttribute("srcset",s),o.removeAttribute("sizes",s),e.width&&o.removeAttribute("width",s))}else{const e=i.attributeNewValue;e.data&&(o.setAttribute("srcset",e.data,s),o.setAttribute("sizes","100vw",s),e.width&&o.setAttribute("width",e.width,s))}}}function B(e,t,i){return e=>{e.on(`attribute:${i}:${t}`,n)};function n(t,i,n){if(!n.consumable.consume(i.item,t.name))return;const o=n.writer,a=n.mapper.toViewElement(i.item),s=e.findViewImgElement(a);o.setAttribute(i.attributeKey,i.attributeNewValue||"",s)}}class V extends o.Observer{observe(e){this.listenTo(e,"load",((e,t)=>{const i=t.target;this.checkShouldIgnoreEventFromTarget(i)||"IMG"==i.tagName&&this._fireEvents(t)}),{useCapture:!0})}_fireEvents(e){this.isEnabled&&(this.document.fire("layoutChanged"),this.document.fire("imageLoaded",e))}}class U extends e.Command{constructor(e){super(e);const t=e.config.get("image.insert.type");e.plugins.has("ImageBlockEditing")||"block"===t&&(0,r.logWarning)("image-block-plugin-required"),e.plugins.has("ImageInlineEditing")||"inline"===t&&(0,r.logWarning)("image-inline-plugin-required")}refresh(){this.isEnabled=this.editor.plugins.get("ImageUtils").isImageAllowed()}execute(e){const t=(0,r.toArray)(e.source),i=this.editor.model.document.selection,n=this.editor.plugins.get("ImageUtils"),o=Object.fromEntries(i.getAttributes());t.forEach(((e,t)=>{const a=i.getSelectedElement();if("string"==typeof e&&(e={src:e}),t&&a&&n.isImage(a)){const t=this.editor.model.createPositionAfter(a);n.insertImage({...e,...o},t)}else n.insertImage({...e,...o})}))}}class R extends e.Plugin{static get requires(){return[m]}static get pluginName(){return"ImageEditing"}init(){const e=this.editor,t=e.conversion;e.editing.view.addObserver(V),t.for("upcast").attributeToAttribute({view:{name:"img",key:"alt"},model:"alt"}).attributeToAttribute({view:{name:"img",key:"srcset"},model:{key:"srcset",value:e=>{const t={data:e.getAttribute("srcset")};return e.hasAttribute("width")&&(t.width=e.getAttribute("width")),t}}});const i=new U(e);e.commands.add("insertImage",i),e.commands.add("imageInsert",i)}}class z extends e.Command{constructor(e,t){super(e),this._modelElementName=t}refresh(){const e=this.editor.plugins.get("ImageUtils"),t=e.getClosestSelectedImageElement(this.editor.model.document.selection);"imageBlock"===this._modelElementName?this.isEnabled=e.isInlineImage(t):this.isEnabled=e.isBlockImage(t)}execute(){const e=this.editor,t=this.editor.model,i=e.plugins.get("ImageUtils"),n=i.getClosestSelectedImageElement(t.document.selection),o=Object.fromEntries(n.getAttributes());return o.src||o.uploadId?t.change((e=>{const a=Array.from(t.markers).filter((e=>e.getRange().containsItem(n))),s=i.insertImage(o,t.createSelection(n,"on"),this._modelElementName);if(!s)return null;const r=e.createRangeOn(s);for(const t of a){const i=t.getRange(),n="$graveyard"!=i.root.rootName?i.getJoined(r,!0):r;e.updateMarker(t,{range:n})}return{oldElement:n,newElement:s}})):null}}class P extends e.Plugin{static get requires(){return[R,m,t.ClipboardPipeline]}static get pluginName(){return"ImageBlockEditing"}init(){const e=this.editor;e.model.schema.register("imageBlock",{inheritAllFrom:"$blockObject",allowAttributes:["alt","src","srcset"]}),this._setupConversion(),e.plugins.has("ImageInlineEditing")&&(e.commands.add("imageTypeBlock",new z(this.editor,"imageBlock")),this._setupClipboardIntegration())}_setupConversion(){const e=this.editor,t=e.t,i=e.conversion,n=e.plugins.get("ImageUtils");i.for("dataDowncast").elementToStructure({model:"imageBlock",view:(e,{writer:t})=>c(t)}),i.for("editingDowncast").elementToStructure({model:"imageBlock",view:(e,{writer:i})=>n.toImageWidget(c(i),i,t("image widget"))}),i.for("downcast").add(B(n,"imageBlock","src")).add(B(n,"imageBlock","alt")).add(T(n,"imageBlock")),i.for("upcast").elementToElement({view:g(e,"imageBlock"),model:(e,{writer:t})=>t.createElement("imageBlock",e.hasAttribute("src")?{src:e.getAttribute("src")}:null)}).add(function(e){return e=>{e.on("element:figure",t)};function t(t,i,n){if(!n.consumable.test(i.viewItem,{name:!0,classes:"image"}))return;const o=e.findViewImgElement(i.viewItem);if(!o||!n.consumable.test(o,{name:!0}))return;n.consumable.consume(i.viewItem,{name:!0,classes:"image"});const a=n.convertItem(o,i.modelCursor),s=(0,r.first)(a.modelRange.getItems());s?(n.convertChildren(i.viewItem,s),n.updateConversionResult(s,i)):n.consumable.revert(i.viewItem,{name:!0,classes:"image"})}}(n))}_setupClipboardIntegration(){const e=this.editor,t=e.model,i=e.editing.view,n=e.plugins.get("ImageUtils");this.listenTo(e.plugins.get("ClipboardPipeline"),"inputTransformation",((a,s)=>{const r=Array.from(s.content.getChildren());let l;if(!r.every(n.isInlineImageView))return;l=s.targetRanges?e.editing.mapper.toModelRange(s.targetRanges[0]):t.document.selection.getFirstRange();const c=t.createSelection(l);if("imageBlock"===d(t.schema,c)){const e=new o.UpcastWriter(i.document),t=r.map((t=>e.createElement("figure",{class:"image"},t)));s.content=e.createDocumentFragment(t)}}))}}var O=i(540),N={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};I()(O.Z,N);O.Z.locals;class F extends e.Plugin{static get requires(){return[P,l.Widget,A]}static get pluginName(){return"ImageBlock"}}class L extends e.Plugin{static get requires(){return[R,m,t.ClipboardPipeline]}static get pluginName(){return"ImageInlineEditing"}init(){const e=this.editor,t=e.model.schema;t.register("imageInline",{inheritAllFrom:"$inlineObject",allowAttributes:["alt","src","srcset"]}),t.addChildCheck(((e,t)=>{if(e.endsWith("caption")&&"imageInline"===t.name)return!1})),this._setupConversion(),e.plugins.has("ImageBlockEditing")&&(e.commands.add("imageTypeInline",new z(this.editor,"imageInline")),this._setupClipboardIntegration())}_setupConversion(){const e=this.editor,t=e.t,i=e.conversion,n=e.plugins.get("ImageUtils");i.for("dataDowncast").elementToElement({model:"imageInline",view:(e,{writer:t})=>t.createEmptyElement("img")}),i.for("editingDowncast").elementToStructure({model:"imageInline",view:(e,{writer:i})=>n.toImageWidget(function(e){return e.createContainerElement("span",{class:"image-inline"},e.createEmptyElement("img"))}(i),i,t("image widget"))}),i.for("downcast").add(B(n,"imageInline","src")).add(B(n,"imageInline","alt")).add(T(n,"imageInline")),i.for("upcast").elementToElement({view:g(e,"imageInline"),model:(e,{writer:t})=>t.createElement("imageInline",e.hasAttribute("src")?{src:e.getAttribute("src")}:null)})}_setupClipboardIntegration(){const e=this.editor,t=e.model,i=e.editing.view,n=e.plugins.get("ImageUtils");this.listenTo(e.plugins.get("ClipboardPipeline"),"inputTransformation",((a,s)=>{const r=Array.from(s.content.getChildren());let l;if(!r.every(n.isBlockImageView))return;l=s.targetRanges?e.editing.mapper.toModelRange(s.targetRanges[0]):t.document.selection.getFirstRange();const c=t.createSelection(l);if("imageInline"===d(t.schema,c)){const e=new o.UpcastWriter(i.document),t=r.map((t=>1===t.childCount?(Array.from(t.getAttributes()).forEach((i=>e.setAttribute(...i,n.findViewImgElement(t)))),t.getChild(0)):t));s.content=e.createDocumentFragment(t)}}))}}class D extends e.Plugin{static get requires(){return[L,l.Widget,A]}static get pluginName(){return"ImageInline"}}class j extends e.Plugin{static get requires(){return[F,D]}static get pluginName(){return"Image"}}class M extends e.Plugin{static get pluginName(){return"ImageCaptionUtils"}static get requires(){return[m]}getCaptionFromImageModelElement(e){for(const t of e.getChildren())if(t&&t.is("element","caption"))return t;return null}getCaptionFromModelSelection(e){const t=this.editor.plugins.get("ImageUtils"),i=e.getFirstPosition().findAncestor("caption");return i&&t.isBlockImage(i.parent)?i:null}matchImageCaptionViewElement(e){const t=this.editor.plugins.get("ImageUtils");return"figcaption"==e.name&&t.isBlockImageView(e.parent)?{name:!0}:null}}class W extends e.Command{refresh(){const e=this.editor,t=e.plugins.get("ImageCaptionUtils");if(!e.plugins.has(P))return this.isEnabled=!1,void(this.value=!1);const i=e.model.document.selection,n=i.getSelectedElement();if(!n){const e=t.getCaptionFromModelSelection(i);return this.isEnabled=!!e,void(this.value=!!e)}this.isEnabled=this.editor.plugins.get("ImageUtils").isImage(n),this.isEnabled?this.value=!!t.getCaptionFromImageModelElement(n):this.value=!1}execute(e={}){const{focusCaptionOnShow:t}=e;this.editor.model.change((e=>{this.value?this._hideImageCaption(e):this._showImageCaption(e,t)}))}_showImageCaption(e,t){const i=this.editor.model.document.selection,n=this.editor.plugins.get("ImageCaptionEditing");let o=i.getSelectedElement();const a=n._getSavedCaption(o);this.editor.plugins.get("ImageUtils").isInlineImage(o)&&(this.editor.execute("imageTypeBlock"),o=i.getSelectedElement());const s=a||e.createElement("caption");e.append(s,o),t&&e.setSelection(s,"in")}_hideImageCaption(e){const t=this.editor,i=t.model.document.selection,n=t.plugins.get("ImageCaptionEditing"),o=t.plugins.get("ImageCaptionUtils");let a,s=i.getSelectedElement();s?a=o.getCaptionFromImageModelElement(s):(a=o.getCaptionFromModelSelection(i),s=a.parent),n._saveCaption(s,a),e.setSelection(s,"on"),e.remove(a)}}class q extends e.Plugin{static get requires(){return[m,M]}static get pluginName(){return"ImageCaptionEditing"}constructor(e){super(e),this._savedCaptionsMap=new WeakMap}init(){const e=this.editor,t=e.model.schema;t.isRegistered("caption")?t.extend("caption",{allowIn:"imageBlock"}):t.register("caption",{allowIn:"imageBlock",allowContentOf:"$block",isLimit:!0}),e.commands.add("toggleImageCaption",new W(this.editor)),this._setupConversion(),this._setupImageTypeCommandsIntegration(),this._registerCaptionReconversion()}_setupConversion(){const e=this.editor,t=e.editing.view,i=e.plugins.get("ImageUtils"),n=e.plugins.get("ImageCaptionUtils"),a=e.t;e.conversion.for("upcast").elementToElement({view:e=>n.matchImageCaptionViewElement(e),model:"caption"}),e.conversion.for("dataDowncast").elementToElement({model:"caption",view:(e,{writer:t})=>i.isBlockImage(e.parent)?t.createContainerElement("figcaption"):null}),e.conversion.for("editingDowncast").elementToElement({model:"caption",view:(e,{writer:n})=>{if(!i.isBlockImage(e.parent))return null;const s=n.createEditableElement("figcaption");n.setCustomProperty("imageCaption",!0,s),(0,o.enablePlaceholder)({view:t,element:s,text:a("Enter image caption"),keepOnFocus:!0});const r=e.parent.getAttribute("alt"),c=r?a("Caption for image: %0",[r]):a("Caption for the image");return(0,l.toWidgetEditable)(s,n,{label:c})}})}_setupImageTypeCommandsIntegration(){const e=this.editor,t=e.plugins.get("ImageUtils"),i=e.plugins.get("ImageCaptionUtils"),n=e.commands.get("imageTypeInline"),o=e.commands.get("imageTypeBlock"),a=e=>{if(!e.return)return;const{oldElement:n,newElement:o}=e.return;if(!n)return;if(t.isBlockImage(n)){const e=i.getCaptionFromImageModelElement(n);if(e)return void this._saveCaption(o,e)}const a=this._getSavedCaption(n);a&&this._saveCaption(o,a)};n&&this.listenTo(n,"execute",a,{priority:"low"}),o&&this.listenTo(o,"execute",a,{priority:"low"})}_getSavedCaption(e){const t=this._savedCaptionsMap.get(e);return t?o.Element.fromJSON(t):null}_saveCaption(e,t){this._savedCaptionsMap.set(e,t.toJSON())}_registerCaptionReconversion(){const e=this.editor,t=e.model,i=e.plugins.get("ImageUtils"),n=e.plugins.get("ImageCaptionUtils");t.document.on("change:data",(()=>{const o=t.document.differ.getChanges();for(const t of o){if("alt"!==t.attributeKey)continue;const o=t.range.start.nodeAfter;if(i.isBlockImage(o)){const t=n.getCaptionFromImageModelElement(o);if(!t)return;e.editing.reconvertItem(t)}}}))}}class Z extends e.Plugin{static get requires(){return[M]}static get pluginName(){return"ImageCaptionUI"}init(){const t=this.editor,i=t.editing.view,n=t.plugins.get("ImageCaptionUtils"),o=t.t;t.ui.componentFactory.add("toggleImageCaption",(a=>{const s=t.commands.get("toggleImageCaption"),r=new k.ButtonView(a);return r.set({icon:e.icons.caption,tooltip:!0,isToggleable:!0}),r.bind("isOn","isEnabled").to(s,"value","isEnabled"),r.bind("label").to(s,"value",(e=>o(e?"Toggle caption off":"Toggle caption on"))),this.listenTo(r,"execute",(()=>{t.execute("toggleImageCaption",{focusCaptionOnShow:!0});const e=n.getCaptionFromModelSelection(t.model.document.selection);if(e){const n=t.editing.mapper.toViewElement(e);i.scrollToTheSelection(),i.change((e=>{e.addClass("image__caption_highlighted",n)}))}t.editing.view.focus()})),r}))}}var $=i(560),H={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};I()($.Z,H);$.Z.locals;class K extends e.Plugin{static get requires(){return[q,Z]}static get pluginName(){return"ImageCaption"}}var G=i(448);function J(e){const t=e.map((e=>e.replace("+","\\+")));return new RegExp(`^image\\/(${t.join("|")})$`)}function Q(e){return new Promise(((t,i)=>{const n=e.getAttribute("src");fetch(n).then((e=>e.blob())).then((e=>{const i=X(e,n),o=i.replace("image/",""),a=new File([e],`image.${o}`,{type:i});t(a)})).catch((e=>e&&"TypeError"===e.name?function(e){return function(e){return new Promise(((t,i)=>{const n=r.global.document.createElement("img");n.addEventListener("load",(()=>{const e=r.global.document.createElement("canvas");e.width=n.width,e.height=n.height;e.getContext("2d").drawImage(n,0,0),e.toBlob((e=>e?t(e):i()))})),n.addEventListener("error",(()=>i())),n.src=e}))}(e).then((t=>{const i=X(t,e),n=i.replace("image/","");return new File([t],`image.${n}`,{type:i})}))}(n).then(t).catch(i):i(e)))}))}function X(e,t){return e.type?e.type:t.match(/data:(image\/\w+);base64/)?t.match(/data:(image\/\w+);base64/)[1].toLowerCase():"image/jpeg"}class Y extends e.Plugin{static get pluginName(){return"ImageUploadUI"}init(){const t=this.editor,i=t.t,n=n=>{const o=new G.FileDialogButtonView(n),a=t.commands.get("uploadImage"),s=t.config.get("image.upload.types"),r=J(s);return o.set({acceptedType:s.map((e=>`image/${e}`)).join(","),allowMultipleFiles:!0}),o.buttonView.set({label:i("Insert image"),icon:e.icons.image,tooltip:!0}),o.buttonView.bind("isEnabled").to(a),o.on("done",((e,i)=>{const n=Array.from(i).filter((e=>r.test(e.type)));n.length&&(t.execute("uploadImage",{file:n}),t.editing.view.focus())})),o};t.ui.componentFactory.add("uploadImage",n),t.ui.componentFactory.add("imageUpload",n)}}var ee=i(271),te={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};I()(ee.Z,te);ee.Z.locals;var ie=i(948),ne={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};I()(ie.Z,ne);ie.Z.locals;var oe=i(467),ae={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};I()(oe.Z,ae);oe.Z.locals;class se extends e.Plugin{static get pluginName(){return"ImageUploadProgress"}constructor(e){super(e),this.placeholder="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="}init(){const e=this.editor;e.plugins.has("ImageBlockEditing")&&e.editing.downcastDispatcher.on("attribute:uploadStatus:imageBlock",((...e)=>this.uploadStatusChange(...e))),e.plugins.has("ImageInlineEditing")&&e.editing.downcastDispatcher.on("attribute:uploadStatus:imageInline",((...e)=>this.uploadStatusChange(...e)))}uploadStatusChange(e,t,i){const n=this.editor,o=t.item,a=o.getAttribute("uploadId");if(!i.consumable.consume(t.item,e.name))return;const s=n.plugins.get("ImageUtils"),r=n.plugins.get(G.FileRepository),l=a?t.attributeNewValue:null,c=this.placeholder,g=n.editing.mapper.toViewElement(o),d=i.writer;if("reading"==l)return re(g,d),void le(s,c,g,d);if("uploading"==l){const e=r.loaders.get(a);return re(g,d),void(e?(ce(g,d),function(e,t,i,n){const o=function(e){const t=e.createUIElement("div",{class:"ck-progress-bar"});return e.setCustomProperty("progressBar",!0,t),t}(t);t.insert(t.createPositionAt(e,"end"),o),i.on("change:uploadedPercent",((e,t,i)=>{n.change((e=>{e.setStyle("width",i+"%",o)}))}))}(g,d,e,n.editing.view),function(e,t,i,n){if(n.data){const o=e.findViewImgElement(t);i.setAttribute("src",n.data,o)}}(s,g,d,e)):le(s,c,g,d))}"complete"==l&&r.loaders.get(a)&&function(e,t,i){const n=t.createUIElement("div",{class:"ck-image-upload-complete-icon"});t.insert(t.createPositionAt(e,"end"),n),setTimeout((()=>{i.change((e=>e.remove(e.createRangeOn(n))))}),3e3)}(g,d,n.editing.view),function(e,t){de(e,t,"progressBar")}(g,d),ce(g,d),function(e,t){t.removeClass("ck-appear",e)}(g,d)}}function re(e,t){e.hasClass("ck-appear")||t.addClass("ck-appear",e)}function le(e,t,i,n){i.hasClass("ck-image-upload-placeholder")||n.addClass("ck-image-upload-placeholder",i);const o=e.findViewImgElement(i);o.getAttribute("src")!==t&&n.setAttribute("src",t,o),ge(i,"placeholder")||n.insert(n.createPositionAfter(o),function(e){const t=e.createUIElement("div",{class:"ck-upload-placeholder-loader"});return e.setCustomProperty("placeholder",!0,t),t}(n))}function ce(e,t){e.hasClass("ck-image-upload-placeholder")&&t.removeClass("ck-image-upload-placeholder",e),de(e,t,"placeholder")}function ge(e,t){for(const i of e.getChildren())if(i.getCustomProperty(t))return i}function de(e,t,i){const n=ge(e,i);n&&t.remove(t.createRangeOn(n))}class me extends e.Command{refresh(){const e=this.editor,t=e.plugins.get("ImageUtils"),i=e.model.document.selection.getSelectedElement();this.isEnabled=t.isImageAllowed()||t.isImage(i)}execute(e){const t=(0,r.toArray)(e.file),i=this.editor.model.document.selection,n=this.editor.plugins.get("ImageUtils"),o=Object.fromEntries(i.getAttributes());t.forEach(((e,t)=>{const a=i.getSelectedElement();if(t&&a&&n.isImage(a)){const t=this.editor.model.createPositionAfter(a);this._uploadImage(e,o,t)}else this._uploadImage(e,o)}))}_uploadImage(e,t,i){const n=this.editor,o=n.plugins.get(G.FileRepository).createLoader(e),a=n.plugins.get("ImageUtils");o&&a.insertImage({...t,uploadId:o.id},i)}}class ue extends e.Plugin{static get requires(){return[G.FileRepository,k.Notification,t.ClipboardPipeline,m]}static get pluginName(){return"ImageUploadEditing"}constructor(e){super(e),e.config.define("image",{upload:{types:["jpeg","png","gif","bmp","webp","tiff"]}}),this._uploadImageElements=new Map}init(){const e=this.editor,t=e.model.document,i=e.conversion,n=e.plugins.get(G.FileRepository),a=e.plugins.get("ImageUtils"),s=J(e.config.get("image.upload.types")),r=new me(e);e.commands.add("uploadImage",r),e.commands.add("imageUpload",r),i.for("upcast").attributeToAttribute({view:{name:"img",key:"uploadId"},model:"uploadId"}),this.listenTo(e.editing.view.document,"clipboardInput",((t,i)=>{if(n=i.dataTransfer,Array.from(n.types).includes("text/html")&&""!==n.getData("text/html"))return;var n;const o=Array.from(i.dataTransfer.files).filter((e=>!!e&&s.test(e.type)));o.length&&(t.stop(),e.model.change((t=>{i.targetRanges&&t.setSelection(i.targetRanges.map((t=>e.editing.mapper.toModelRange(t)))),e.model.enqueueChange((()=>{e.execute("uploadImage",{file:o})}))})))})),this.listenTo(e.plugins.get("ClipboardPipeline"),"inputTransformation",((t,i)=>{const s=Array.from(e.editing.view.createRangeIn(i.content)).filter((e=>function(e,t){return!(!e.isInlineImageView(t)||!t.getAttribute("src"))&&(t.getAttribute("src").match(/^data:image\/\w+;base64,/g)||t.getAttribute("src").match(/^blob:/g))}(a,e.item)&&!e.item.getAttribute("uploadProcessed"))).map((e=>({promise:Q(e.item),imageElement:e.item})));if(!s.length)return;const r=new o.UpcastWriter(e.editing.view.document);for(const e of s){r.setAttribute("uploadProcessed",!0,e.imageElement);const t=n.createLoader(e.promise);t&&(r.setAttribute("src","",e.imageElement),r.setAttribute("uploadId",t.id,e.imageElement))}})),e.editing.view.document.on("dragover",((e,t)=>{t.preventDefault()})),t.on("change",(()=>{const i=t.differ.getChanges({includeChangesInGraveyard:!0}).reverse(),o=new Set;for(const t of i)if("insert"==t.type&&"$text"!=t.name){const i=t.position.nodeAfter,a="$graveyard"==t.position.root.rootName;for(const t of pe(e,i)){const e=t.getAttribute("uploadId");if(!e)continue;const i=n.loaders.get(e);i&&(a?o.has(e)||i.abort():(o.add(e),this._uploadImageElements.set(e,t),"idle"==i.status&&this._readAndUpload(i)))}}})),this.on("uploadComplete",((e,{imageElement:t,data:i})=>{const n=i.urls?i.urls:i;this.editor.model.change((e=>{e.setAttribute("src",n.default,t),this._parseAndSetSrcsetAttributeOnImage(n,t,e)}))}),{priority:"low"})}afterInit(){const e=this.editor.model.schema;this.editor.plugins.has("ImageBlockEditing")&&e.extend("imageBlock",{allowAttributes:["uploadId","uploadStatus"]}),this.editor.plugins.has("ImageInlineEditing")&&e.extend("imageInline",{allowAttributes:["uploadId","uploadStatus"]})}_readAndUpload(e){const t=this.editor,i=t.model,n=t.locale.t,o=t.plugins.get(G.FileRepository),a=t.plugins.get(k.Notification),s=t.plugins.get("ImageUtils"),l=this._uploadImageElements;return i.enqueueChange({isUndoable:!1},(t=>{t.setAttribute("uploadStatus","reading",l.get(e.id))})),e.read().then((()=>{const n=e.upload(),o=l.get(e.id);if(r.env.isSafari){const e=t.editing.mapper.toViewElement(o),i=s.findViewImgElement(e);t.editing.view.once("render",(()=>{if(!i.parent)return;const e=t.editing.view.domConverter.mapViewToDom(i.parent);if(!e)return;const n=e.style.display;e.style.display="none",e._ckHack=e.offsetHeight,e.style.display=n}))}return i.enqueueChange({isUndoable:!1},(e=>{e.setAttribute("uploadStatus","uploading",o)})),n})).then((t=>{i.enqueueChange({isUndoable:!1},(i=>{const n=l.get(e.id);i.setAttribute("uploadStatus","complete",n),this.fire("uploadComplete",{data:t,imageElement:n})})),c()})).catch((t=>{if("error"!==e.status&&"aborted"!==e.status)throw t;"error"==e.status&&t&&a.showWarning(t,{title:n("Upload failed"),namespace:"upload"}),i.enqueueChange({isUndoable:!1},(t=>{t.remove(l.get(e.id))})),c()}));function c(){i.enqueueChange({isUndoable:!1},(t=>{const i=l.get(e.id);t.removeAttribute("uploadId",i),t.removeAttribute("uploadStatus",i),l.delete(e.id)})),o.destroyLoader(e)}}_parseAndSetSrcsetAttributeOnImage(e,t,i){let n=0;const o=Object.keys(e).filter((e=>{const t=parseInt(e,10);if(!isNaN(t))return n=Math.max(n,t),!0})).map((t=>`${e[t]} ${t}w`)).join(", ");""!=o&&i.setAttribute("srcset",{data:o,width:n},t)}}function pe(e,t){const i=e.plugins.get("ImageUtils");return Array.from(e.model.createRangeOn(t)).filter((e=>i.isImage(e.item))).map((e=>e.item))}class he extends e.Plugin{static get pluginName(){return"ImageUpload"}static get requires(){return[ue,Y,se]}}var fe=i(439),be={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};I()(fe.Z,be);fe.Z.locals;class ke extends k.View{constructor(e,t={}){super(e);const i=this.bindTemplate;this.set("class",t.class||null),this.children=this.createCollection(),t.children&&t.children.forEach((e=>this.children.add(e))),this.set("_role",null),this.set("_ariaLabelledBy",null),t.labelView&&this.set({_role:"group",_ariaLabelledBy:t.labelView.id}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-form__row",i.to("class")],role:i.to("_role"),"aria-labelledby":i.to("_ariaLabelledBy")},children:this.children})}}var we=i(91),Ie={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};I()(we.Z,Ie);we.Z.locals;class ve extends k.View{constructor(e,t){super(e);const{insertButtonView:i,cancelButtonView:n}=this._createActionButtons(e);if(this.insertButtonView=i,this.cancelButtonView=n,this.set("imageURLInputValue",""),this.focusTracker=new r.FocusTracker,this.keystrokes=new r.KeystrokeHandler,this._focusables=new k.ViewCollection,this._focusCycler=new k.FocusCycler({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.set("_integrations",new r.Collection),t)for(const[e,i]of Object.entries(t))"insertImageViaUrl"===e&&(i.fieldView.bind("value").to(this,"imageURLInputValue",(e=>e||"")),i.fieldView.on("input",(()=>{this.imageURLInputValue=i.fieldView.element.value.trim()}))),i.name=e,this._integrations.add(i);this.setTemplate({tag:"form",attributes:{class:["ck","ck-image-insert-form"],tabindex:"-1"},children:[...this._integrations,new ke(e,{children:[this.insertButtonView,this.cancelButtonView],class:"ck-image-insert-form__action-row"})]})}render(){super.render(),(0,k.submitHandler)({view:this});const e=[...this._integrations,this.insertButtonView,this.cancelButtonView];e.forEach((e=>{this._focusables.add(e),this.focusTracker.add(e.element)})),this.keystrokes.listenTo(this.element);const t=e=>e.stopPropagation();this.keystrokes.set("arrowright",t),this.keystrokes.set("arrowleft",t),this.keystrokes.set("arrowup",t),this.keystrokes.set("arrowdown",t),this.listenTo(e[0].element,"selectstart",((e,t)=>{t.stopPropagation()}),{priority:"high"})}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}getIntegration(e){return this._integrations.find((t=>t.name===e))}_createActionButtons(t){const i=t.t,n=new k.ButtonView(t),o=new k.ButtonView(t);return n.set({label:i("Insert"),icon:e.icons.check,class:"ck-button-save",type:"submit",withText:!0,isEnabled:this.imageURLInputValue}),o.set({label:i("Cancel"),icon:e.icons.cancel,class:"ck-button-cancel",withText:!0}),n.bind("isEnabled").to(this,"imageURLInputValue",(e=>!!e)),n.delegate("execute").to(this,"submit"),o.delegate("execute").to(this,"cancel"),{insertButtonView:n,cancelButtonView:o}}focus(){this._focusCycler.focusFirst()}}function ye(e){const t=e.t,i=new k.LabeledFieldView(e,k.createLabeledInputText);return i.set({label:t("Insert image via URL")}),i.fieldView.placeholder="https://example.com/image.png",i}class _e extends e.Plugin{static get pluginName(){return"ImageInsertUI"}init(){const e=this.editor,t=e=>this._createDropdownView(e);e.ui.componentFactory.add("insertImage",t),e.ui.componentFactory.add("imageInsert",t)}_createDropdownView(t){const i=this.editor,n=t.t,o=i.commands.get("uploadImage"),a=i.commands.get("insertImage");this.dropdownView=(0,k.createDropdown)(t,o?k.SplitButtonView:void 0);const s=this.dropdownView.buttonView,r=this.dropdownView.panelView;if(s.set({label:n("Insert image"),icon:e.icons.image,tooltip:!0}),r.extendTemplate({attributes:{class:"ck-image-insert__panel"}}),o){const e=this.dropdownView.buttonView;e.actionView=i.ui.componentFactory.create("uploadImage"),e.actionView.extendTemplate({attributes:{class:"ck ck-button ck-splitbutton__action"}})}return this._setUpDropdown(o||a)}_setUpDropdown(e){const t=this.editor,i=t.t,n=new ve(t.locale,function(e){const t=e.config.get("image.insert.integrations"),i=e.plugins.get("ImageInsertUI"),n={insertImageViaUrl:ye(e.locale)};if(!t)return n;if(t.find((e=>"openCKFinder"===e))&&e.ui.componentFactory.has("ckfinder")){const t=e.ui.componentFactory.create("ckfinder");t.set({withText:!0,class:"ck-image-insert__ck-finder-button"}),t.delegate("execute").to(i,"cancel"),n.openCKFinder=t}return t.reduce(((t,i)=>(n[i]?t[i]=n[i]:e.ui.componentFactory.has(i)&&(t[i]=e.ui.componentFactory.create(i)),t)),{})}(t)),o=n.insertButtonView,a=n.getIntegration("insertImageViaUrl"),s=this.dropdownView,r=s.panelView,l=this.editor.plugins.get("ImageUtils");function c(){t.editing.view.focus(),s.isOpen=!1}return s.bind("isEnabled").to(e),s.buttonView.once("open",(()=>{r.children.add(n)})),s.on("change:isOpen",(()=>{const e=t.model.document.selection.getSelectedElement();s.isOpen&&(l.isImage(e)?(n.imageURLInputValue=e.getAttribute("src"),o.label=i("Update"),a.label=i("Update image URL")):(n.imageURLInputValue="",o.label=i("Insert"),a.label=i("Insert image via URL")))}),{priority:"low"}),n.delegate("submit","cancel").to(s),this.delegate("cancel").to(s),s.on("submit",(()=>{c(),function(){const e=t.model.document.selection.getSelectedElement();l.isImage(e)?t.model.change((t=>{t.setAttribute("src",n.imageURLInputValue,e),t.removeAttribute("srcset",e),t.removeAttribute("sizes",e)})):t.execute("insertImage",{source:n.imageURLInputValue})}()})),s.on("cancel",(()=>{c()})),s}}class Ee extends e.Plugin{static get pluginName(){return"ImageInsertViaUrl"}static get requires(){return[_e]}}class xe extends e.Plugin{static get pluginName(){return"ImageInsert"}static get requires(){return[he,Ee,_e]}}class Ce extends e.Command{refresh(){const e=this.editor,t=e.plugins.get("ImageUtils").getClosestSelectedImageElement(e.model.document.selection);this.isEnabled=!!t,t&&t.hasAttribute("width")?this.value={width:t.getAttribute("width"),height:null}:this.value=null}execute(e){const t=this.editor,i=t.model,n=t.plugins.get("ImageUtils").getClosestSelectedImageElement(i.document.selection);this.value={width:e.width,height:null},n&&i.change((t=>{t.setAttribute("width",e.width,n)}))}}class Se extends e.Plugin{static get requires(){return[m]}static get pluginName(){return"ImageResizeEditing"}constructor(e){super(e),e.config.define("image",{resizeUnit:"%",resizeOptions:[{name:"resizeImage:original",value:null,icon:"original"},{name:"resizeImage:25",value:"25",icon:"small"},{name:"resizeImage:50",value:"50",icon:"medium"},{name:"resizeImage:75",value:"75",icon:"large"}]})}init(){const e=this.editor,t=new Ce(e);this._registerSchema(),this._registerConverters("imageBlock"),this._registerConverters("imageInline"),e.commands.add("resizeImage",t),e.commands.add("imageResize",t)}_registerSchema(){this.editor.plugins.has("ImageBlockEditing")&&this.editor.model.schema.extend("imageBlock",{allowAttributes:"width"}),this.editor.plugins.has("ImageInlineEditing")&&this.editor.model.schema.extend("imageInline",{allowAttributes:"width"})}_registerConverters(e){const t=this.editor;t.conversion.for("downcast").add((t=>t.on(`attribute:width:${e}`,((e,t,i)=>{if(!i.consumable.consume(t.item,e.name))return;const n=i.writer,o=i.mapper.toViewElement(t.item);null!==t.attributeNewValue?(n.setStyle("width",t.attributeNewValue,o),n.addClass("image_resized",o)):(n.removeStyle("width",o),n.removeClass("image_resized",o))})))),t.conversion.for("upcast").attributeToAttribute({view:{name:"imageBlock"===e?"figure":"img",styles:{width:/.+/}},model:{key:"width",value:e=>e.getStyle("width")}})}}const Ae={small:e.icons.objectSizeSmall,medium:e.icons.objectSizeMedium,large:e.icons.objectSizeLarge,original:e.icons.objectSizeFull};class Te extends e.Plugin{static get requires(){return[Se]}static get pluginName(){return"ImageResizeButtons"}constructor(e){super(e),this._resizeUnit=e.config.get("image.resizeUnit")}init(){const e=this.editor,t=e.config.get("image.resizeOptions"),i=e.commands.get("resizeImage");this.bind("isEnabled").to(i);for(const e of t)this._registerImageResizeButton(e);this._registerImageResizeDropdown(t)}_registerImageResizeButton(e){const t=this.editor,{name:i,value:n,icon:o}=e,a=n?n+this._resizeUnit:null;t.ui.componentFactory.add(i,(i=>{const n=new k.ButtonView(i),s=t.commands.get("resizeImage"),l=this._getOptionLabelValue(e,!0);if(!Ae[o])throw new r.CKEditorError("imageresizebuttons-missing-icon",t,e);return n.set({label:l,icon:Ae[o],tooltip:l,isToggleable:!0}),n.bind("isEnabled").to(this),n.bind("isOn").to(s,"value",Be(a)),this.listenTo(n,"execute",(()=>{t.execute("resizeImage",{width:a})})),n}))}_registerImageResizeDropdown(e){const t=this.editor,i=t.t,n=e.find((e=>!e.value)),o=o=>{const a=t.commands.get("resizeImage"),s=(0,k.createDropdown)(o,k.DropdownButtonView),r=s.buttonView;return r.set({tooltip:i("Resize image"),commandValue:n.value,icon:Ae.medium,isToggleable:!0,label:this._getOptionLabelValue(n),withText:!0,class:"ck-resize-image-button"}),r.bind("label").to(a,"value",(e=>e&&e.width?e.width:this._getOptionLabelValue(n))),s.bind("isOn").to(a),s.bind("isEnabled").to(this),(0,k.addListToDropdown)(s,this._getResizeDropdownListItemDefinitions(e,a)),s.listView.ariaLabel=i("Image resize list"),this.listenTo(s,"execute",(e=>{t.execute(e.source.commandName,{width:e.source.commandValue}),t.editing.view.focus()})),s};t.ui.componentFactory.add("resizeImage",o),t.ui.componentFactory.add("imageResize",o)}_getOptionLabelValue(e,t){const i=this.editor.t;return e.label?e.label:t?e.value?i("Resize image to %0",e.value+this._resizeUnit):i("Resize image to the original size"):e.value?e.value+this._resizeUnit:i("Original")}_getResizeDropdownListItemDefinitions(e,t){const i=new r.Collection;return e.map((e=>{const n=e.value?e.value+this._resizeUnit:null,o={type:"button",model:new k.Model({commandName:"resizeImage",commandValue:n,label:this._getOptionLabelValue(e),withText:!0,icon:null})};o.model.bind("isOn").to(t,"value",Be(n)),i.add(o)})),i}}function Be(e){return t=>null===e&&t===e||t&&t.width===e}const Ve=/(image|image-inline)/,Ue="image_resized";class Re extends e.Plugin{static get requires(){return[l.WidgetResize]}static get pluginName(){return"ImageResizeHandles"}init(){const e=this.editor.commands.get("resizeImage");this.bind("isEnabled").to(e),this._setupResizerCreator()}_setupResizerCreator(){const e=this.editor,t=e.editing.view;t.addObserver(V),this.listenTo(t.document,"imageLoaded",((i,n)=>{if(!n.target.matches("figure.image.ck-widget > img,figure.image.ck-widget > picture > img,figure.image.ck-widget > a > img,figure.image.ck-widget > a > picture > img,span.image-inline.ck-widget > img,span.image-inline.ck-widget > picture > img"))return;const o=e.editing.view.domConverter,a=o.domToView(n.target).findAncestor({classes:Ve});let s=this.editor.plugins.get(l.WidgetResize).getResizerByViewElement(a);if(s)return void s.redraw();const r=e.editing.mapper,c=r.toModelElement(a);s=e.plugins.get(l.WidgetResize).attachTo({unit:e.config.get("image.resizeUnit"),modelElement:c,viewElement:a,editor:e,getHandleHost:e=>e.querySelector("img"),getResizeHost:()=>o.mapViewToDom(r.toViewElement(c.parent)),isCentered(){const e=c.getAttribute("imageStyle");return!e||"block"==e||"alignCenter"==e},onCommit(i){t.change((e=>{e.removeClass(Ue,a)})),e.execute("resizeImage",{width:i})}}),s.on("updateSize",(()=>{a.hasClass(Ue)||t.change((e=>{e.addClass(Ue,a)}))})),s.bind("isEnabled").to(this)}))}}var ze=i(601),Pe={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};I()(ze.Z,Pe);ze.Z.locals;class Oe extends e.Plugin{static get requires(){return[Se,Re,Te]}static get pluginName(){return"ImageResize"}}class Ne extends e.Command{constructor(e,t){super(e),this._defaultStyles={imageBlock:!1,imageInline:!1},this._styles=new Map(t.map((e=>{if(e.isDefault)for(const t of e.modelElements)this._defaultStyles[t]=e.name;return[e.name,e]})))}refresh(){const e=this.editor.plugins.get("ImageUtils").getClosestSelectedImageElement(this.editor.model.document.selection);this.isEnabled=!!e,this.isEnabled?e.hasAttribute("imageStyle")?this.value=e.getAttribute("imageStyle"):this.value=this._defaultStyles[e.name]:this.value=!1}execute(e={}){const t=this.editor,i=t.model,n=t.plugins.get("ImageUtils");i.change((t=>{const o=e.value;let a=n.getClosestSelectedImageElement(i.document.selection);o&&this.shouldConvertImageType(o,a)&&(this.editor.execute(n.isBlockImage(a)?"imageTypeInline":"imageTypeBlock"),a=n.getClosestSelectedImageElement(i.document.selection)),!o||this._styles.get(o).isDefault?t.removeAttribute("imageStyle",a):t.setAttribute("imageStyle",o,a)}))}shouldConvertImageType(e,t){return!this._styles.get(e).modelElements.includes(t.name)}}const{objectFullWidth:Fe,objectInline:Le,objectLeft:De,objectRight:je,objectCenter:Me,objectBlockLeft:We,objectBlockRight:qe}=e.icons,Ze={get inline(){return{name:"inline",title:"In line",icon:Le,modelElements:["imageInline"],isDefault:!0}},get alignLeft(){return{name:"alignLeft",title:"Left aligned image",icon:De,modelElements:["imageBlock","imageInline"],className:"image-style-align-left"}},get alignBlockLeft(){return{name:"alignBlockLeft",title:"Left aligned image",icon:We,modelElements:["imageBlock"],className:"image-style-block-align-left"}},get alignCenter(){return{name:"alignCenter",title:"Centered image",icon:Me,modelElements:["imageBlock"],className:"image-style-align-center"}},get alignRight(){return{name:"alignRight",title:"Right aligned image",icon:je,modelElements:["imageBlock","imageInline"],className:"image-style-align-right"}},get alignBlockRight(){return{name:"alignBlockRight",title:"Right aligned image",icon:qe,modelElements:["imageBlock"],className:"image-style-block-align-right"}},get block(){return{name:"block",title:"Centered image",icon:Me,modelElements:["imageBlock"],isDefault:!0}},get side(){return{name:"side",title:"Side image",icon:je,modelElements:["imageBlock"],className:"image-style-side"}}},$e={full:Fe,left:We,right:qe,center:Me,inlineLeft:De,inlineRight:je,inline:Le},He=[{name:"imageStyle:wrapText",title:"Wrap text",defaultItem:"imageStyle:alignLeft",items:["imageStyle:alignLeft","imageStyle:alignRight"]},{name:"imageStyle:breakText",title:"Break text",defaultItem:"imageStyle:block",items:["imageStyle:alignBlockLeft","imageStyle:block","imageStyle:alignBlockRight"]}];function Ke(e){(0,r.logWarning)("image-style-configuration-definition-invalid",e)}const Ge={normalizeStyles:function(e){return(e.configuredStyles.options||[]).map((e=>function(e){e="string"==typeof e?Ze[e]?{...Ze[e]}:{name:e}:function(e,t){const i={...t};for(const n in e)Object.prototype.hasOwnProperty.call(t,n)||(i[n]=e[n]);return i}(Ze[e.name],e);"string"==typeof e.icon&&(e.icon=$e[e.icon]||e.icon);return e}(e))).filter((t=>function(e,{isBlockPluginLoaded:t,isInlinePluginLoaded:i}){const{modelElements:n,name:o}=e;if(!(n&&n.length&&o))return Ke({style:e}),!1;{const o=[t?"imageBlock":null,i?"imageInline":null];if(!n.some((e=>o.includes(e))))return(0,r.logWarning)("image-style-missing-dependency",{style:e,missingPlugins:n.map((e=>"imageBlock"===e?"ImageBlockEditing":"ImageInlineEditing"))}),!1}return!0}(t,e)))},getDefaultStylesConfiguration:function(e,t){return e&&t?{options:["inline","alignLeft","alignRight","alignCenter","alignBlockLeft","alignBlockRight","block","side"]}:e?{options:["block","side"]}:t?{options:["inline","alignLeft","alignRight"]}:{}},getDefaultDropdownDefinitions:function(e){return e.has("ImageBlockEditing")&&e.has("ImageInlineEditing")?[...He]:[]},warnInvalidStyle:Ke,DEFAULT_OPTIONS:Ze,DEFAULT_ICONS:$e,DEFAULT_DROPDOWN_DEFINITIONS:He};function Je(e,t){for(const i of t)if(i.name===e)return i}class Qe extends e.Plugin{static get pluginName(){return"ImageStyleEditing"}static get requires(){return[m]}init(){const{normalizeStyles:e,getDefaultStylesConfiguration:t}=Ge,i=this.editor,n=i.plugins.has("ImageBlockEditing"),o=i.plugins.has("ImageInlineEditing");i.config.define("image.styles",t(n,o)),this.normalizedStyles=e({configuredStyles:i.config.get("image.styles"),isBlockPluginLoaded:n,isInlinePluginLoaded:o}),this._setupConversion(n,o),this._setupPostFixer(),i.commands.add("imageStyle",new Ne(i,this.normalizedStyles))}_setupConversion(e,t){const i=this.editor,n=i.model.schema,o=(a=this.normalizedStyles,(e,t,i)=>{if(!i.consumable.consume(t.item,e.name))return;const n=Je(t.attributeNewValue,a),o=Je(t.attributeOldValue,a),s=i.mapper.toViewElement(t.item),r=i.writer;o&&r.removeClass(o.className,s),n&&r.addClass(n.className,s)});var a;const s=function(e){const t={imageInline:e.filter((e=>!e.isDefault&&e.modelElements.includes("imageInline"))),imageBlock:e.filter((e=>!e.isDefault&&e.modelElements.includes("imageBlock")))};return(e,i,n)=>{if(!i.modelRange)return;const o=i.viewItem,a=(0,r.first)(i.modelRange.getItems());if(a&&n.schema.checkAttribute(a,"imageStyle"))for(const e of t[a.name])n.consumable.consume(o,{classes:e.className})&&n.writer.setAttribute("imageStyle",e.name,a)}}(this.normalizedStyles);i.editing.downcastDispatcher.on("attribute:imageStyle",o),i.data.downcastDispatcher.on("attribute:imageStyle",o),e&&(n.extend("imageBlock",{allowAttributes:"imageStyle"}),i.data.upcastDispatcher.on("element:figure",s,{priority:"low"})),t&&(n.extend("imageInline",{allowAttributes:"imageStyle"}),i.data.upcastDispatcher.on("element:img",s,{priority:"low"}))}_setupPostFixer(){const e=this.editor,t=e.model.document,i=e.plugins.get(m),n=new Map(this.normalizedStyles.map((e=>[e.name,e])));t.registerPostFixer((e=>{let o=!1;for(const a of t.differ.getChanges())if("insert"==a.type||"attribute"==a.type&&"imageStyle"==a.attributeKey){let t="insert"==a.type?a.position.nodeAfter:a.range.start.nodeAfter;if(t&&t.is("element","paragraph")&&t.childCount>0&&(t=t.getChild(0)),!i.isImage(t))continue;const s=t.getAttribute("imageStyle");if(!s)continue;const r=n.get(s);r&&r.modelElements.includes(t.name)||(e.removeAttribute("imageStyle",t),o=!0)}return o}))}}const Xe=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)};const Ye=function(e){return e};var et=i(29),tt={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};I()(et.Z,tt);et.Z.locals;class it extends e.Plugin{static get requires(){return[Qe]}static get pluginName(){return"ImageStyleUI"}get localizedDefaultStylesTitles(){const e=this.editor.t;return{"Wrap text":e("Wrap text"),"Break text":e("Break text"),"In line":e("In line"),"Full size image":e("Full size image"),"Side image":e("Side image"),"Left aligned image":e("Left aligned image"),"Centered image":e("Centered image"),"Right aligned image":e("Right aligned image")}}init(){const e=this.editor.plugins,t=this.editor.config.get("image.toolbar")||[],i=nt(e.get("ImageStyleEditing").normalizedStyles,this.localizedDefaultStylesTitles);for(const e of i)this._createButton(e);const n=nt([...t.filter(Xe),...Ge.getDefaultDropdownDefinitions(e)],this.localizedDefaultStylesTitles);for(const e of n)this._createDropdown(e,i)}_createDropdown(e,t){const i=this.editor.ui.componentFactory;i.add(e.name,(n=>{let o;const{defaultItem:a,items:s,title:r}=e,l=s.filter((e=>t.find((({name:t})=>ot(t)===e)))).map((e=>{const t=i.create(e);return e===a&&(o=t),t}));s.length!==l.length&&Ge.warnInvalidStyle({dropdown:e});const c=(0,k.createDropdown)(n,k.SplitButtonView),g=c.buttonView,d=g.arrowView;return(0,k.addToolbarToDropdown)(c,l,{enableActiveItemFocusOnDropdownOpen:!0}),g.set({label:at(r,o.label),class:null,tooltip:!0}),d.unbind("label"),d.set({label:r}),g.bind("icon").toMany(l,"isOn",((...e)=>{const t=e.findIndex(Ye);return t<0?o.icon:l[t].icon})),g.bind("label").toMany(l,"isOn",((...e)=>{const t=e.findIndex(Ye);return at(r,t<0?o.label:l[t].label)})),g.bind("isOn").toMany(l,"isOn",((...e)=>e.some(Ye))),g.bind("class").toMany(l,"isOn",((...e)=>e.some(Ye)?"ck-splitbutton_flatten":null)),g.on("execute",(()=>{l.some((({isOn:e})=>e))?c.isOpen=!c.isOpen:o.fire("execute")})),c.bind("isEnabled").toMany(l,"isEnabled",((...e)=>e.some(Ye))),this.listenTo(c,"execute",(()=>{this.editor.editing.view.focus()})),c}))}_createButton(e){const t=e.name;this.editor.ui.componentFactory.add(ot(t),(i=>{const n=this.editor.commands.get("imageStyle"),o=new k.ButtonView(i);return o.set({label:e.title,icon:e.icon,tooltip:!0,isToggleable:!0}),o.bind("isEnabled").to(n,"isEnabled"),o.bind("isOn").to(n,"value",(e=>e===t)),o.on("execute",this._executeCommand.bind(this,t)),o}))}_executeCommand(e){this.editor.execute("imageStyle",{value:e}),this.editor.editing.view.focus()}}function nt(e,t){for(const i of e)t[i.title]&&(i.title=t[i.title]);return e}function ot(e){return`imageStyle:${e}`}function at(e,t){return(e?e+": ":"")+t}class st extends e.Plugin{static get requires(){return[Qe,it]}static get pluginName(){return"ImageStyle"}}class rt extends e.Plugin{static get requires(){return[l.WidgetToolbarRepository,m]}static get pluginName(){return"ImageToolbar"}afterInit(){const e=this.editor,t=e.t,i=e.plugins.get(l.WidgetToolbarRepository),n=e.plugins.get("ImageUtils");var o;i.register("image",{ariaLabel:t("Image toolbar"),items:(o=e.config.get("image.toolbar")||[],o.map((e=>Xe(e)?e.name:e))),getRelatedElement:e=>n.getClosestSelectedImageWidget(e)})}}class lt extends e.Plugin{static get requires(){return[R,m]}static get pluginName(){return"PictureEditing"}afterInit(){const e=this.editor;e.plugins.has("ImageBlockEditing")&&e.model.schema.extend("imageBlock",{allowAttributes:["sources"]}),e.plugins.has("ImageInlineEditing")&&e.model.schema.extend("imageInline",{allowAttributes:["sources"]}),this._setupConversion(),this._setupImageUploadEditingIntegration()}_setupConversion(){const e=this.editor,t=e.conversion,i=e.plugins.get("ImageUtils");t.for("upcast").add(function(e){const t=["srcset","media","type","sizes"];return e=>{e.on("element:picture",i)};function i(i,n,o){const a=n.viewItem;if(!o.consumable.test(a,{name:!0}))return;const s=new Map;for(const e of a.getChildren())if(e.is("element","source")){const i={};for(const n of t)e.hasAttribute(n)&&o.consumable.test(e,{attributes:n})&&(i[n]=e.getAttribute(n));Object.keys(i).length&&s.set(e,i)}const l=e.findViewImgElement(a);if(!l)return;let c=n.modelCursor.parent;if(!c.is("element","imageBlock")){const e=o.convertItem(l,n.modelCursor);n.modelRange=e.modelRange,n.modelCursor=e.modelCursor,c=(0,r.first)(e.modelRange.getItems())}o.consumable.consume(a,{name:!0});for(const[e,t]of s)o.consumable.consume(e,{attributes:Object.keys(t)});s.size&&o.writer.setAttribute("sources",Array.from(s.values()),c),o.convertChildren(a,c)}}(i)),t.for("downcast").add(function(e){return e=>{e.on("attribute:sources:imageBlock",t),e.on("attribute:sources:imageInline",t)};function t(t,i,n){if(!n.consumable.consume(i.item,t.name))return;const o=n.writer,a=n.mapper.toViewElement(i.item),s=e.findViewImgElement(a);if(i.attributeNewValue&&i.attributeNewValue.length){const e=o.createContainerElement("picture",null,i.attributeNewValue.map((e=>o.createEmptyElement("source",e)))),t=[];let n=s.parent;for(;n&&n.is("attributeElement");){const e=n.parent;o.unwrap(o.createRangeOn(s),n),t.unshift(n),n=e}o.insert(o.createPositionBefore(s),e),o.move(o.createRangeOn(s),o.createPositionAt(e,"end"));for(const i of t)o.wrap(o.createRangeOn(e),i)}else if(s.parent.is("element","picture")){const e=s.parent;o.move(o.createRangeOn(s),o.createPositionBefore(e)),o.remove(e)}}}(i))}_setupImageUploadEditingIntegration(){const e=this.editor;e.plugins.has("ImageUploadEditing")&&this.listenTo(e.plugins.get("ImageUploadEditing"),"uploadComplete",((t,{imageElement:i,data:n})=>{const o=n.sources;o&&e.model.change((e=>{e.setAttributes({sources:o},i)}))}))}}})(),(window.CKEditor5=window.CKEditor5||{}).image=n})();
\ No newline at end of file
+ */(()=>{var e={540:(e,t,i)=>{"use strict";i.d(t,{Z:()=>a});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,".ck-content .image{clear:both;display:table;margin:.9em auto;min-width:50px;text-align:center}.ck-content .image img{display:block;margin:0 auto;max-width:100%;min-width:100%}.ck-content .image-inline{align-items:flex-start;display:inline-flex;max-width:100%}.ck-content .image-inline picture{display:flex}.ck-content .image-inline img,.ck-content .image-inline picture{flex-grow:1;flex-shrink:1;max-width:100%}.ck.ck-editor__editable .image>figcaption.ck-placeholder:before{overflow:hidden;padding-left:inherit;padding-right:inherit;text-overflow:ellipsis;white-space:nowrap}.ck.ck-editor__editable .image-inline.ck-widget_selected,.ck.ck-editor__editable .image.ck-widget_selected{z-index:1}.ck.ck-editor__editable .image-inline.ck-widget_selected ::selection{display:none}.ck.ck-editor__editable td .image-inline img,.ck.ck-editor__editable th .image-inline img{max-width:none}",""]);const a=o},560:(e,t,i)=>{"use strict";i.d(t,{Z:()=>a});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,":root{--ck-color-image-caption-background:#f7f7f7;--ck-color-image-caption-text:#333;--ck-color-image-caption-highligted-background:#fd0}.ck-content .image>figcaption{background-color:var(--ck-color-image-caption-background);caption-side:bottom;color:var(--ck-color-image-caption-text);display:table-caption;font-size:.75em;outline-offset:-1px;padding:.6em;word-break:break-word}.ck.ck-editor__editable .image>figcaption.image__caption_highlighted{animation:ck-image-caption-highlight .6s ease-out}@keyframes ck-image-caption-highlight{0%{background-color:var(--ck-color-image-caption-highligted-background)}to{background-color:var(--ck-color-image-caption-background)}}",""]);const a=o},91:(e,t,i)=>{"use strict";i.d(t,{Z:()=>a});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,".ck.ck-image-insert__panel{padding:var(--ck-spacing-large)}.ck.ck-image-insert__ck-finder-button{border:1px solid #ccc;border-radius:var(--ck-border-radius);display:block;margin:var(--ck-spacing-standard) auto;width:100%}.ck.ck-splitbutton>.ck-file-dialog-button.ck-button{border:none;margin:0;padding:0}",""]);const a=o},439:(e,t,i)=>{"use strict";i.d(t,{Z:()=>a});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,".ck.ck-image-insert-form:focus{outline:none}.ck.ck-form__row{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-between}.ck.ck-form__row>:not(.ck-label){flex-grow:1}.ck.ck-form__row.ck-image-insert-form__action-row{margin-top:var(--ck-spacing-standard)}.ck.ck-form__row.ck-image-insert-form__action-row .ck-button-cancel,.ck.ck-form__row.ck-image-insert-form__action-row .ck-button-save{justify-content:center}.ck.ck-form__row.ck-image-insert-form__action-row .ck-button .ck-button__label{color:var(--ck-color-text)}",""]);const a=o},601:(e,t,i)=>{"use strict";i.d(t,{Z:()=>a});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,".ck-content .image.image_resized{box-sizing:border-box;display:block;max-width:100%}.ck-content .image.image_resized img{width:100%}.ck-content .image.image_resized>figcaption{display:block}.ck.ck-editor__editable td .image-inline.image_resized img,.ck.ck-editor__editable th .image-inline.image_resized img{max-width:100%}[dir=ltr] .ck.ck-button.ck-button_with-text.ck-resize-image-button .ck-button__icon{margin-right:var(--ck-spacing-standard)}[dir=rtl] .ck.ck-button.ck-button_with-text.ck-resize-image-button .ck-button__icon{margin-left:var(--ck-spacing-standard)}.ck.ck-dropdown .ck-button.ck-resize-image-button .ck-button__label{width:4em}",""]);const a=o},29:(e,t,i)=>{"use strict";i.d(t,{Z:()=>a});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,":root{--ck-image-style-spacing:1.5em;--ck-inline-image-style-spacing:calc(var(--ck-image-style-spacing)/2)}.ck-content .image-style-block-align-left,.ck-content .image-style-block-align-right{max-width:calc(100% - var(--ck-image-style-spacing))}.ck-content .image-style-align-left,.ck-content .image-style-align-right{clear:none}.ck-content .image-style-side{float:right;margin-left:var(--ck-image-style-spacing);max-width:50%}.ck-content .image-style-align-left{float:left;margin-right:var(--ck-image-style-spacing)}.ck-content .image-style-align-center{margin-left:auto;margin-right:auto}.ck-content .image-style-align-right{float:right;margin-left:var(--ck-image-style-spacing)}.ck-content .image-style-block-align-right{margin-left:auto;margin-right:0}.ck-content .image-style-block-align-left{margin-left:0;margin-right:auto}.ck-content p+.image-style-align-left,.ck-content p+.image-style-align-right,.ck-content p+.image-style-side{margin-top:0}.ck-content .image-inline.image-style-align-left,.ck-content .image-inline.image-style-align-right{margin-bottom:var(--ck-inline-image-style-spacing);margin-top:var(--ck-inline-image-style-spacing)}.ck-content .image-inline.image-style-align-left{margin-right:var(--ck-inline-image-style-spacing)}.ck-content .image-inline.image-style-align-right{margin-left:var(--ck-inline-image-style-spacing)}.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open>.ck-splitbutton__action:not(.ck-disabled),.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled),.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled):not(:hover),.ck.ck-splitbutton.ck-splitbutton_flatten:hover>.ck-splitbutton__action:not(.ck-disabled),.ck.ck-splitbutton.ck-splitbutton_flatten:hover>.ck-splitbutton__arrow:not(.ck-disabled),.ck.ck-splitbutton.ck-splitbutton_flatten:hover>.ck-splitbutton__arrow:not(.ck-disabled):not(:hover){background-color:var(--ck-color-button-on-background)}.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open>.ck-splitbutton__action:not(.ck-disabled):after,.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled):after,.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled):not(:hover):after,.ck.ck-splitbutton.ck-splitbutton_flatten:hover>.ck-splitbutton__action:not(.ck-disabled):after,.ck.ck-splitbutton.ck-splitbutton_flatten:hover>.ck-splitbutton__arrow:not(.ck-disabled):after,.ck.ck-splitbutton.ck-splitbutton_flatten:hover>.ck-splitbutton__arrow:not(.ck-disabled):not(:hover):after{display:none}.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open:hover>.ck-splitbutton__action:not(.ck-disabled),.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open:hover>.ck-splitbutton__arrow:not(.ck-disabled),.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open:hover>.ck-splitbutton__arrow:not(.ck-disabled):not(:hover){background-color:var(--ck-color-button-on-hover-background)}",""]);const a=o},948:(e,t,i)=>{"use strict";i.d(t,{Z:()=>a});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,'.ck-image-upload-complete-icon{border-radius:50%;display:block;position:absolute;right:min(var(--ck-spacing-medium),6%);top:min(var(--ck-spacing-medium),6%);z-index:1}.ck-image-upload-complete-icon:after{content:"";position:absolute}:root{--ck-color-image-upload-icon:#fff;--ck-color-image-upload-icon-background:#008a00;--ck-image-upload-icon-size:20;--ck-image-upload-icon-width:2px;--ck-image-upload-icon-is-visible:clamp(0px,100% - 50px,1px)}.ck-image-upload-complete-icon{animation-delay:0ms,3s;animation-duration:.5s,.5s;animation-fill-mode:forwards,forwards;animation-name:ck-upload-complete-icon-show,ck-upload-complete-icon-hide;background:var(--ck-color-image-upload-icon-background);font-size:calc(1px*var(--ck-image-upload-icon-size));height:calc(var(--ck-image-upload-icon-is-visible)*var(--ck-image-upload-icon-size));opacity:0;overflow:hidden;width:calc(var(--ck-image-upload-icon-is-visible)*var(--ck-image-upload-icon-size))}.ck-image-upload-complete-icon:after{animation-delay:.5s;animation-duration:.5s;animation-fill-mode:forwards;animation-name:ck-upload-complete-icon-check;border-right:var(--ck-image-upload-icon-width) solid var(--ck-color-image-upload-icon);border-top:var(--ck-image-upload-icon-width) solid var(--ck-color-image-upload-icon);box-sizing:border-box;height:0;left:25%;opacity:0;top:50%;transform:scaleX(-1) rotate(135deg);transform-origin:left top;width:0}@keyframes ck-upload-complete-icon-show{0%{opacity:0}to{opacity:1}}@keyframes ck-upload-complete-icon-hide{0%{opacity:1}to{opacity:0}}@keyframes ck-upload-complete-icon-check{0%{height:0;opacity:1;width:0}33%{height:0;width:.3em}to{height:.45em;opacity:1;width:.3em}}',""]);const a=o},467:(e,t,i)=>{"use strict";i.d(t,{Z:()=>a});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,'.ck .ck-upload-placeholder-loader{align-items:center;display:flex;justify-content:center;left:0;position:absolute;top:0}.ck .ck-upload-placeholder-loader:before{content:"";position:relative}:root{--ck-color-upload-placeholder-loader:#b3b3b3;--ck-upload-placeholder-loader-size:32px;--ck-upload-placeholder-image-aspect-ratio:2.8}.ck .ck-image-upload-placeholder{margin:0;width:100%}.ck .ck-image-upload-placeholder.image-inline{width:calc(var(--ck-upload-placeholder-loader-size)*2*var(--ck-upload-placeholder-image-aspect-ratio))}.ck .ck-image-upload-placeholder img{aspect-ratio:var(--ck-upload-placeholder-image-aspect-ratio)}.ck .ck-upload-placeholder-loader{height:100%;width:100%}.ck .ck-upload-placeholder-loader:before{animation:ck-upload-placeholder-loader 1s linear infinite;border-radius:50%;border-right:2px solid transparent;border-top:3px solid var(--ck-color-upload-placeholder-loader);height:var(--ck-upload-placeholder-loader-size);width:var(--ck-upload-placeholder-loader-size)}@keyframes ck-upload-placeholder-loader{to{transform:rotate(1turn)}}',""]);const a=o},271:(e,t,i)=>{"use strict";i.d(t,{Z:()=>a});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,".ck.ck-editor__editable .image,.ck.ck-editor__editable .image-inline{position:relative}.ck.ck-editor__editable .image .ck-progress-bar,.ck.ck-editor__editable .image-inline .ck-progress-bar{left:0;position:absolute;top:0}.ck.ck-editor__editable .image-inline.ck-appear,.ck.ck-editor__editable .image.ck-appear{animation:fadeIn .7s}.ck.ck-editor__editable .image .ck-progress-bar,.ck.ck-editor__editable .image-inline .ck-progress-bar{background:var(--ck-color-upload-bar-background);height:2px;transition:width .1s;width:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}",""]);const a=o},168:(e,t,i)=>{"use strict";i.d(t,{Z:()=>a});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,".ck.ck-text-alternative-form{display:flex;flex-direction:row;flex-wrap:nowrap}.ck.ck-text-alternative-form .ck-labeled-field-view{display:inline-block}.ck.ck-text-alternative-form .ck-label{display:none}@media screen and (max-width:600px){.ck.ck-text-alternative-form{flex-wrap:wrap}.ck.ck-text-alternative-form .ck-labeled-field-view{flex-basis:100%}.ck.ck-text-alternative-form .ck-button{flex-basis:50%}}",""]);const a=o},764:(e,t,i)=>{"use strict";i.d(t,{Z:()=>a});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,'.ck-vertical-form .ck-button:after{bottom:-1px;content:"";position:absolute;right:-1px;top:-1px;width:0;z-index:1}.ck-vertical-form .ck-button:focus:after{display:none}@media screen and (max-width:600px){.ck.ck-responsive-form .ck-button:after{bottom:-1px;content:"";position:absolute;right:-1px;top:-1px;width:0;z-index:1}.ck.ck-responsive-form .ck-button:focus:after{display:none}}.ck-vertical-form>.ck-button:nth-last-child(2):after{border-right:1px solid var(--ck-color-base-border)}.ck.ck-responsive-form{padding:var(--ck-spacing-large)}.ck.ck-responsive-form:focus{outline:none}[dir=ltr] .ck.ck-responsive-form>:not(:first-child),[dir=rtl] .ck.ck-responsive-form>:not(:last-child){margin-left:var(--ck-spacing-standard)}@media screen and (max-width:600px){.ck.ck-responsive-form{padding:0;width:calc(var(--ck-input-width)*.8)}.ck.ck-responsive-form .ck-labeled-field-view{margin:var(--ck-spacing-large) var(--ck-spacing-large) 0}.ck.ck-responsive-form .ck-labeled-field-view .ck-input-text{min-width:0;width:100%}.ck.ck-responsive-form .ck-labeled-field-view .ck-labeled-field-view__error{white-space:normal}.ck.ck-responsive-form>.ck-button:nth-last-child(2):after{border-right:1px solid var(--ck-color-base-border)}.ck.ck-responsive-form>.ck-button:last-child,.ck.ck-responsive-form>.ck-button:nth-last-child(2){border-radius:0;margin-top:var(--ck-spacing-large);padding:var(--ck-spacing-standard)}.ck.ck-responsive-form>.ck-button:last-child:not(:focus),.ck.ck-responsive-form>.ck-button:nth-last-child(2):not(:focus){border-top:1px solid var(--ck-color-base-border)}[dir=ltr] .ck.ck-responsive-form>.ck-button:last-child,[dir=ltr] .ck.ck-responsive-form>.ck-button:nth-last-child(2),[dir=rtl] .ck.ck-responsive-form>.ck-button:last-child,[dir=rtl] .ck.ck-responsive-form>.ck-button:nth-last-child(2){margin-left:0}[dir=rtl] .ck.ck-responsive-form>.ck-button:last-child:last-of-type,[dir=rtl] .ck.ck-responsive-form>.ck-button:nth-last-child(2):last-of-type{border-right:1px solid var(--ck-color-base-border)}}',""]);const a=o},609:e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var i=e(t);return t[2]?"@media ".concat(t[2]," {").concat(i,"}"):i})).join("")},t.i=function(e,i,n){"string"==typeof e&&(e=[[null,e,""]]);var o={};if(n)for(var a=0;a<this.length;a++){var s=this[a][0];null!=s&&(o[s]=!0)}for(var r=0;r<e.length;r++){var l=[].concat(e[r]);n&&o[l[0]]||(i&&(l[2]?l[2]="".concat(i," and ").concat(l[2]):l[2]=i),t.push(l))}},t}},62:(e,t,i)=>{"use strict";var n,o=function(){return void 0===n&&(n=Boolean(window&&document&&document.all&&!window.atob)),n},a=function(){var e={};return function(t){if(void 0===e[t]){var i=document.querySelector(t);if(window.HTMLIFrameElement&&i instanceof window.HTMLIFrameElement)try{i=i.contentDocument.head}catch(e){i=null}e[t]=i}return e[t]}}(),s=[];function r(e){for(var t=-1,i=0;i<s.length;i++)if(s[i].identifier===e){t=i;break}return t}function l(e,t){for(var i={},n=[],o=0;o<e.length;o++){var a=e[o],l=t.base?a[0]+t.base:a[0],c=i[l]||0,g="".concat(l," ").concat(c);i[l]=c+1;var d=r(g),m={css:a[1],media:a[2],sourceMap:a[3]};-1!==d?(s[d].references++,s[d].updater(m)):s.push({identifier:g,updater:f(m,t),references:1}),n.push(g)}return n}function c(e){var t=document.createElement("style"),n=e.attributes||{};if(void 0===n.nonce){var o=i.nc;o&&(n.nonce=o)}if(Object.keys(n).forEach((function(e){t.setAttribute(e,n[e])})),"function"==typeof e.insert)e.insert(t);else{var s=a(e.insert||"head");if(!s)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");s.appendChild(t)}return t}var g,d=(g=[],function(e,t){return g[e]=t,g.filter(Boolean).join("\n")});function m(e,t,i,n){var o=i?"":n.media?"@media ".concat(n.media," {").concat(n.css,"}"):n.css;if(e.styleSheet)e.styleSheet.cssText=d(t,o);else{var a=document.createTextNode(o),s=e.childNodes;s[t]&&e.removeChild(s[t]),s.length?e.insertBefore(a,s[t]):e.appendChild(a)}}function u(e,t,i){var n=i.css,o=i.media,a=i.sourceMap;if(o?e.setAttribute("media",o):e.removeAttribute("media"),a&&"undefined"!=typeof btoa&&(n+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(a))))," */")),e.styleSheet)e.styleSheet.cssText=n;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(n))}}var p=null,h=0;function f(e,t){var i,n,o;if(t.singleton){var a=h++;i=p||(p=c(t)),n=m.bind(null,i,a,!1),o=m.bind(null,i,a,!0)}else i=c(t),n=u.bind(null,i,t),o=function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(i)};return n(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;n(e=t)}else o()}}e.exports=function(e,t){(t=t||{}).singleton||"boolean"==typeof t.singleton||(t.singleton=o());var i=l(e=e||[],t);return function(e){if(e=e||[],"[object Array]"===Object.prototype.toString.call(e)){for(var n=0;n<i.length;n++){var o=r(i[n]);s[o].references--}for(var a=l(e,t),c=0;c<i.length;c++){var g=r(i[c]);0===s[g].references&&(s[g].updater(),s.splice(g,1))}i=a}}}},945:(e,t,i)=>{e.exports=i(79)("./src/clipboard.js")},704:(e,t,i)=>{e.exports=i(79)("./src/core.js")},492:(e,t,i)=>{e.exports=i(79)("./src/engine.js")},181:(e,t,i)=>{e.exports=i(79)("./src/typing.js")},273:(e,t,i)=>{e.exports=i(79)("./src/ui.js")},254:(e,t,i)=>{e.exports=i(79)("./src/undo.js")},448:(e,t,i)=>{e.exports=i(79)("./src/upload.js")},209:(e,t,i)=>{e.exports=i(79)("./src/utils.js")},995:(e,t,i)=>{e.exports=i(79)("./src/widget.js")},79:e=>{"use strict";e.exports=CKEditor5.dll}},t={};function i(n){var o=t[n];if(void 0!==o)return o.exports;var a=t[n]={id:n,exports:{}};return e[n](a,a.exports,i),a.exports}i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.nc=void 0;var n={};(()=>{"use strict";i.r(n),i.d(n,{AutoImage:()=>h,Image:()=>j,ImageCaption:()=>K,ImageCaptionEditing:()=>q,ImageCaptionUtils:()=>M,ImageEditing:()=>R,ImageInsert:()=>xe,ImageInsertUI:()=>_e,ImageResize:()=>Oe,ImageResizeButtons:()=>Te,ImageResizeEditing:()=>Se,ImageResizeHandles:()=>Re,ImageStyle:()=>st,ImageStyleEditing:()=>Qe,ImageStyleUI:()=>it,ImageTextAlternative:()=>A,ImageTextAlternativeEditing:()=>b,ImageTextAlternativeUI:()=>S,ImageToolbar:()=>rt,ImageUpload:()=>he,ImageUploadEditing:()=>ue,ImageUploadProgress:()=>se,ImageUploadUI:()=>Y,PictureEditing:()=>lt});var e=i(704),t=i(945),o=i(492),a=i(254),s=i(181),r=i(209),l=i(995);function c(e){return e.createContainerElement("figure",{class:"image"},[e.createEmptyElement("img"),e.createSlot()])}function g(e,t){const i=e.plugins.get("ImageUtils"),n=e.plugins.has("ImageInlineEditing")&&e.plugins.has("ImageBlockEditing");return e=>{if(!i.isInlineImageView(e))return null;if(!n)return o(e);return(e.findAncestor(i.isBlockImageView)?"imageBlock":"imageInline")!==t?null:o(e)};function o(e){const t={name:!0};return e.hasAttribute("src")&&(t.attributes=["src"]),t}}function d(e,t){const i=(0,r.first)(t.getSelectedBlocks());return!i||e.isObject(i)||i.isEmpty&&"listItem"!=i.name?"imageBlock":"imageInline"}class m extends e.Plugin{static get pluginName(){return"ImageUtils"}isImage(e){return this.isInlineImage(e)||this.isBlockImage(e)}isInlineImageView(e){return!!e&&e.is("element","img")}isBlockImageView(e){return!!e&&e.is("element","figure")&&e.hasClass("image")}insertImage(e={},t=null,i=null){const n=this.editor,o=n.model,a=o.document.selection;i=u(n,t||a,i),e={...Object.fromEntries(a.getAttributes()),...e};for(const t in e)o.schema.checkAttribute(i,t)||delete e[t];return o.change((n=>{const a=n.createElement(i,e);return o.insertObject(a,t,null,{setSelection:"on",findOptimalPosition:!t&&"imageInline"!=i}),a.parent?a:null}))}getClosestSelectedImageWidget(e){const t=e.getFirstPosition();if(!t)return null;const i=e.getSelectedElement();if(i&&this.isImageWidget(i))return i;let n=t.parent;for(;n;){if(n.is("element")&&this.isImageWidget(n))return n;n=n.parent}return null}getClosestSelectedImageElement(e){const t=e.getSelectedElement();return this.isImage(t)?t:e.getFirstPosition().findAncestor("imageBlock")}isImageAllowed(){const e=this.editor.model.document.selection;return function(e,t){if("imageBlock"==u(e,t)){const i=function(e,t){const i=(0,l.findOptimalInsertionRange)(e,t).start.parent;if(i.isEmpty&&!i.is("element","$root"))return i.parent;return i}(t,e.model);if(e.model.schema.checkChild(i,"imageBlock"))return!0}else if(e.model.schema.checkChild(t.focus,"imageInline"))return!0;return!1}(this.editor,e)&&function(e){return[...e.focus.getAncestors()].every((e=>!e.is("element","imageBlock")))}(e)}toImageWidget(e,t,i){t.setCustomProperty("image",!0,e);return(0,l.toWidget)(e,t,{label:()=>{const t=this.findViewImgElement(e).getAttribute("alt");return t?`${t} ${i}`:i}})}isImageWidget(e){return!!e.getCustomProperty("image")&&(0,l.isWidget)(e)}isBlockImage(e){return!!e&&e.is("element","imageBlock")}isInlineImage(e){return!!e&&e.is("element","imageInline")}findViewImgElement(e){if(this.isInlineImageView(e))return e;const t=this.editor.editing.view;for(const{item:i}of t.createRangeIn(e))if(this.isInlineImageView(i))return i}}function u(e,t,i){const n=e.model.schema,o=e.config.get("image.insert.type");return e.plugins.has("ImageBlockEditing")?e.plugins.has("ImageInlineEditing")?i||("inline"===o?"imageInline":"block"===o?"imageBlock":t.is("selection")?d(n,t):n.checkChild(t,"imageInline")?"imageInline":"imageBlock"):"imageBlock":"imageInline"}const p=new RegExp(String(/^(http(s)?:\/\/)?[\w-]+\.[\w.~:/[\]@!$&'()*+,;=%-]+/.source+/\.(jpg|jpeg|png|gif|ico|webp|JPG|JPEG|PNG|GIF|ICO|WEBP)/.source+/(\?[\w.~:/[\]@!$&'()*+,;=%-]*)?/.source+/(#[\w.~:/[\]@!$&'()*+,;=%-]*)?$/.source));class h extends e.Plugin{static get requires(){return[t.Clipboard,m,a.Undo,s.Delete]}static get pluginName(){return"AutoImage"}constructor(e){super(e),this._timeoutId=null,this._positionToInsert=null}init(){const e=this.editor,t=e.model.document;this.listenTo(e.plugins.get("ClipboardPipeline"),"inputTransformation",(()=>{const e=t.selection.getFirstRange(),i=o.LivePosition.fromPosition(e.start);i.stickiness="toPrevious";const n=o.LivePosition.fromPosition(e.end);n.stickiness="toNext",t.once("change:data",(()=>{this._embedImageBetweenPositions(i,n),i.detach(),n.detach()}),{priority:"high"})})),e.commands.get("undo").on("execute",(()=>{this._timeoutId&&(r.global.window.clearTimeout(this._timeoutId),this._positionToInsert.detach(),this._timeoutId=null,this._positionToInsert=null)}),{priority:"high"})}_embedImageBetweenPositions(e,t){const i=this.editor,n=new o.LiveRange(e,t),a=n.getWalker({ignoreElementEnd:!0}),s=Object.fromEntries(i.model.document.selection.getAttributes()),l=this.editor.plugins.get("ImageUtils");let c="";for(const e of a)e.item.is("$textProxy")&&(c+=e.item.data);c=c.trim(),c.match(p)?(this._positionToInsert=o.LivePosition.fromPosition(e),this._timeoutId=r.global.window.setTimeout((()=>{i.commands.get("insertImage").isEnabled?(i.model.change((e=>{let t;this._timeoutId=null,e.remove(n),n.detach(),"$graveyard"!==this._positionToInsert.root.rootName&&(t=this._positionToInsert.toPosition()),l.insertImage({...s,src:c},t),this._positionToInsert.detach(),this._positionToInsert=null})),i.plugins.get("Delete").requestUndoOnBackspace()):n.detach()}),100)):n.detach()}}class f extends e.Command{refresh(){const e=this.editor.plugins.get("ImageUtils").getClosestSelectedImageElement(this.editor.model.document.selection);this.isEnabled=!!e,this.isEnabled&&e.hasAttribute("alt")?this.value=e.getAttribute("alt"):this.value=!1}execute(e){const t=this.editor,i=t.plugins.get("ImageUtils"),n=t.model,o=i.getClosestSelectedImageElement(n.document.selection);n.change((t=>{t.setAttribute("alt",e.newValue,o)}))}}class b extends e.Plugin{static get requires(){return[m]}static get pluginName(){return"ImageTextAlternativeEditing"}init(){this.editor.commands.add("imageTextAlternative",new f(this.editor))}}var k=i(273),w=i(62),I=i.n(w),v=i(168),y={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};I()(v.Z,y);v.Z.locals;var _=i(764),E={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};I()(_.Z,E);_.Z.locals;class x extends k.View{constructor(t){super(t);const i=this.locale.t;this.focusTracker=new r.FocusTracker,this.keystrokes=new r.KeystrokeHandler,this.labeledInput=this._createLabeledInputView(),this.saveButtonView=this._createButton(i("Save"),e.icons.check,"ck-button-save"),this.saveButtonView.type="submit",this.cancelButtonView=this._createButton(i("Cancel"),e.icons.cancel,"ck-button-cancel","cancel"),this._focusables=new k.ViewCollection,this._focusCycler=new k.FocusCycler({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"form",attributes:{class:["ck","ck-text-alternative-form","ck-responsive-form"],tabindex:"-1"},children:[this.labeledInput,this.saveButtonView,this.cancelButtonView]}),(0,k.injectCssTransitionDisabler)(this)}render(){super.render(),this.keystrokes.listenTo(this.element),(0,k.submitHandler)({view:this}),[this.labeledInput,this.saveButtonView,this.cancelButtonView].forEach((e=>{this._focusables.add(e),this.focusTracker.add(e.element)}))}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}_createButton(e,t,i,n){const o=new k.ButtonView(this.locale);return o.set({label:e,icon:t,tooltip:!0}),o.extendTemplate({attributes:{class:i}}),n&&o.delegate("execute").to(this,n),o}_createLabeledInputView(){const e=this.locale.t,t=new k.LabeledFieldView(this.locale,k.createLabeledInputText);return t.label=e("Text alternative"),t}}function C(e){const t=e.editing.view,i=k.BalloonPanelView.defaultPositions,n=e.plugins.get("ImageUtils");return{target:t.domConverter.mapViewToDom(n.getClosestSelectedImageWidget(t.document.selection)),positions:[i.northArrowSouth,i.northArrowSouthWest,i.northArrowSouthEast,i.southArrowNorth,i.southArrowNorthWest,i.southArrowNorthEast,i.viewportStickyNorth]}}class S extends e.Plugin{static get requires(){return[k.ContextualBalloon]}static get pluginName(){return"ImageTextAlternativeUI"}init(){this._createButton(),this._createForm()}destroy(){super.destroy(),this._form.destroy()}_createButton(){const t=this.editor,i=t.t;t.ui.componentFactory.add("imageTextAlternative",(n=>{const o=t.commands.get("imageTextAlternative"),a=new k.ButtonView(n);return a.set({label:i("Change image text alternative"),icon:e.icons.lowVision,tooltip:!0}),a.bind("isEnabled").to(o,"isEnabled"),a.bind("isOn").to(o,"value",(e=>!!e)),this.listenTo(a,"execute",(()=>{this._showForm()})),a}))}_createForm(){const e=this.editor,t=e.editing.view.document,i=e.plugins.get("ImageUtils");this._balloon=this.editor.plugins.get("ContextualBalloon"),this._form=new x(e.locale),this._form.render(),this.listenTo(this._form,"submit",(()=>{e.execute("imageTextAlternative",{newValue:this._form.labeledInput.fieldView.element.value}),this._hideForm(!0)})),this.listenTo(this._form,"cancel",(()=>{this._hideForm(!0)})),this._form.keystrokes.set("Esc",((e,t)=>{this._hideForm(!0),t()})),this.listenTo(e.ui,"update",(()=>{i.getClosestSelectedImageWidget(t.selection)?this._isVisible&&function(e){const t=e.plugins.get("ContextualBalloon");if(e.plugins.get("ImageUtils").getClosestSelectedImageWidget(e.editing.view.document.selection)){const i=C(e);t.updatePosition(i)}}(e):this._hideForm(!0)})),(0,k.clickOutsideHandler)({emitter:this._form,activator:()=>this._isVisible,contextElements:[this._balloon.view.element],callback:()=>this._hideForm()})}_showForm(){if(this._isVisible)return;const e=this.editor,t=e.commands.get("imageTextAlternative"),i=this._form.labeledInput;this._form.disableCssTransitions(),this._isInBalloon||this._balloon.add({view:this._form,position:C(e)}),i.fieldView.value=i.fieldView.element.value=t.value||"",this._form.labeledInput.fieldView.select(),this._form.enableCssTransitions()}_hideForm(e){this._isInBalloon&&(this._form.focusTracker.isFocused&&this._form.saveButtonView.focus(),this._balloon.remove(this._form),e&&this.editor.editing.view.focus())}get _isVisible(){return this._balloon.visibleView===this._form}get _isInBalloon(){return this._balloon.hasView(this._form)}}class A extends e.Plugin{static get requires(){return[b,S]}static get pluginName(){return"ImageTextAlternative"}}function T(e,t){return e=>{e.on(`attribute:srcset:${t}`,i)};function i(t,i,n){if(!n.consumable.consume(i.item,t.name))return;const o=n.writer,a=n.mapper.toViewElement(i.item),s=e.findViewImgElement(a);if(null===i.attributeNewValue){const e=i.attributeOldValue;e.data&&(o.removeAttribute("srcset",s),o.removeAttribute("sizes",s),e.width&&o.removeAttribute("width",s))}else{const e=i.attributeNewValue;e.data&&(o.setAttribute("srcset",e.data,s),o.setAttribute("sizes","100vw",s),e.width&&o.setAttribute("width",e.width,s))}}}function B(e,t,i){return e=>{e.on(`attribute:${i}:${t}`,n)};function n(t,i,n){if(!n.consumable.consume(i.item,t.name))return;const o=n.writer,a=n.mapper.toViewElement(i.item),s=e.findViewImgElement(a);o.setAttribute(i.attributeKey,i.attributeNewValue||"",s)}}class V extends o.Observer{observe(e){this.listenTo(e,"load",((e,t)=>{const i=t.target;this.checkShouldIgnoreEventFromTarget(i)||"IMG"==i.tagName&&this._fireEvents(t)}),{useCapture:!0})}_fireEvents(e){this.isEnabled&&(this.document.fire("layoutChanged"),this.document.fire("imageLoaded",e))}}class U extends e.Command{constructor(e){super(e);const t=e.config.get("image.insert.type");e.plugins.has("ImageBlockEditing")||"block"===t&&(0,r.logWarning)("image-block-plugin-required"),e.plugins.has("ImageInlineEditing")||"inline"===t&&(0,r.logWarning)("image-inline-plugin-required")}refresh(){this.isEnabled=this.editor.plugins.get("ImageUtils").isImageAllowed()}execute(e){const t=(0,r.toArray)(e.source),i=this.editor.model.document.selection,n=this.editor.plugins.get("ImageUtils"),o=Object.fromEntries(i.getAttributes());t.forEach(((e,t)=>{const a=i.getSelectedElement();if("string"==typeof e&&(e={src:e}),t&&a&&n.isImage(a)){const t=this.editor.model.createPositionAfter(a);n.insertImage({...e,...o},t)}else n.insertImage({...e,...o})}))}}class R extends e.Plugin{static get requires(){return[m]}static get pluginName(){return"ImageEditing"}init(){const e=this.editor,t=e.conversion;e.editing.view.addObserver(V),t.for("upcast").attributeToAttribute({view:{name:"img",key:"alt"},model:"alt"}).attributeToAttribute({view:{name:"img",key:"srcset"},model:{key:"srcset",value:e=>{const t={data:e.getAttribute("srcset")};return e.hasAttribute("width")&&(t.width=e.getAttribute("width")),t}}});const i=new U(e);e.commands.add("insertImage",i),e.commands.add("imageInsert",i)}}class z extends e.Command{constructor(e,t){super(e),this._modelElementName=t}refresh(){const e=this.editor.plugins.get("ImageUtils"),t=e.getClosestSelectedImageElement(this.editor.model.document.selection);"imageBlock"===this._modelElementName?this.isEnabled=e.isInlineImage(t):this.isEnabled=e.isBlockImage(t)}execute(){const e=this.editor,t=this.editor.model,i=e.plugins.get("ImageUtils"),n=i.getClosestSelectedImageElement(t.document.selection),o=Object.fromEntries(n.getAttributes());return o.src||o.uploadId?t.change((e=>{const a=Array.from(t.markers).filter((e=>e.getRange().containsItem(n))),s=i.insertImage(o,t.createSelection(n,"on"),this._modelElementName);if(!s)return null;const r=e.createRangeOn(s);for(const t of a){const i=t.getRange(),n="$graveyard"!=i.root.rootName?i.getJoined(r,!0):r;e.updateMarker(t,{range:n})}return{oldElement:n,newElement:s}})):null}}class P extends e.Plugin{static get requires(){return[R,m,t.ClipboardPipeline]}static get pluginName(){return"ImageBlockEditing"}init(){const e=this.editor;e.model.schema.register("imageBlock",{inheritAllFrom:"$blockObject",allowAttributes:["alt","src","srcset"]}),this._setupConversion(),e.plugins.has("ImageInlineEditing")&&(e.commands.add("imageTypeBlock",new z(this.editor,"imageBlock")),this._setupClipboardIntegration())}_setupConversion(){const e=this.editor,t=e.t,i=e.conversion,n=e.plugins.get("ImageUtils");i.for("dataDowncast").elementToStructure({model:"imageBlock",view:(e,{writer:t})=>c(t)}),i.for("editingDowncast").elementToStructure({model:"imageBlock",view:(e,{writer:i})=>n.toImageWidget(c(i),i,t("image widget"))}),i.for("downcast").add(B(n,"imageBlock","src")).add(B(n,"imageBlock","alt")).add(T(n,"imageBlock")),i.for("upcast").elementToElement({view:g(e,"imageBlock"),model:(e,{writer:t})=>t.createElement("imageBlock",e.hasAttribute("src")?{src:e.getAttribute("src")}:null)}).add(function(e){return e=>{e.on("element:figure",t)};function t(t,i,n){if(!n.consumable.test(i.viewItem,{name:!0,classes:"image"}))return;const o=e.findViewImgElement(i.viewItem);if(!o||!n.consumable.test(o,{name:!0}))return;n.consumable.consume(i.viewItem,{name:!0,classes:"image"});const a=n.convertItem(o,i.modelCursor),s=(0,r.first)(a.modelRange.getItems());s?(n.convertChildren(i.viewItem,s),n.updateConversionResult(s,i)):n.consumable.revert(i.viewItem,{name:!0,classes:"image"})}}(n))}_setupClipboardIntegration(){const e=this.editor,t=e.model,i=e.editing.view,n=e.plugins.get("ImageUtils");this.listenTo(e.plugins.get("ClipboardPipeline"),"inputTransformation",((a,s)=>{const r=Array.from(s.content.getChildren());let l;if(!r.every(n.isInlineImageView))return;l=s.targetRanges?e.editing.mapper.toModelRange(s.targetRanges[0]):t.document.selection.getFirstRange();const c=t.createSelection(l);if("imageBlock"===d(t.schema,c)){const e=new o.UpcastWriter(i.document),t=r.map((t=>e.createElement("figure",{class:"image"},t)));s.content=e.createDocumentFragment(t)}}))}}var O=i(540),N={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};I()(O.Z,N);O.Z.locals;class F extends e.Plugin{static get requires(){return[P,l.Widget,A]}static get pluginName(){return"ImageBlock"}}class L extends e.Plugin{static get requires(){return[R,m,t.ClipboardPipeline]}static get pluginName(){return"ImageInlineEditing"}init(){const e=this.editor,t=e.model.schema;t.register("imageInline",{inheritAllFrom:"$inlineObject",allowAttributes:["alt","src","srcset"]}),t.addChildCheck(((e,t)=>{if(e.endsWith("caption")&&"imageInline"===t.name)return!1})),this._setupConversion(),e.plugins.has("ImageBlockEditing")&&(e.commands.add("imageTypeInline",new z(this.editor,"imageInline")),this._setupClipboardIntegration())}_setupConversion(){const e=this.editor,t=e.t,i=e.conversion,n=e.plugins.get("ImageUtils");i.for("dataDowncast").elementToElement({model:"imageInline",view:(e,{writer:t})=>t.createEmptyElement("img")}),i.for("editingDowncast").elementToStructure({model:"imageInline",view:(e,{writer:i})=>n.toImageWidget(function(e){return e.createContainerElement("span",{class:"image-inline"},e.createEmptyElement("img"))}(i),i,t("image widget"))}),i.for("downcast").add(B(n,"imageInline","src")).add(B(n,"imageInline","alt")).add(T(n,"imageInline")),i.for("upcast").elementToElement({view:g(e,"imageInline"),model:(e,{writer:t})=>t.createElement("imageInline",e.hasAttribute("src")?{src:e.getAttribute("src")}:null)})}_setupClipboardIntegration(){const e=this.editor,t=e.model,i=e.editing.view,n=e.plugins.get("ImageUtils");this.listenTo(e.plugins.get("ClipboardPipeline"),"inputTransformation",((a,s)=>{const r=Array.from(s.content.getChildren());let l;if(!r.every(n.isBlockImageView))return;l=s.targetRanges?e.editing.mapper.toModelRange(s.targetRanges[0]):t.document.selection.getFirstRange();const c=t.createSelection(l);if("imageInline"===d(t.schema,c)){const e=new o.UpcastWriter(i.document),t=r.map((t=>1===t.childCount?(Array.from(t.getAttributes()).forEach((i=>e.setAttribute(...i,n.findViewImgElement(t)))),t.getChild(0)):t));s.content=e.createDocumentFragment(t)}}))}}class D extends e.Plugin{static get requires(){return[L,l.Widget,A]}static get pluginName(){return"ImageInline"}}class j extends e.Plugin{static get requires(){return[F,D]}static get pluginName(){return"Image"}}class M extends e.Plugin{static get pluginName(){return"ImageCaptionUtils"}static get requires(){return[m]}getCaptionFromImageModelElement(e){for(const t of e.getChildren())if(t&&t.is("element","caption"))return t;return null}getCaptionFromModelSelection(e){const t=this.editor.plugins.get("ImageUtils"),i=e.getFirstPosition().findAncestor("caption");return i&&t.isBlockImage(i.parent)?i:null}matchImageCaptionViewElement(e){const t=this.editor.plugins.get("ImageUtils");return"figcaption"==e.name&&t.isBlockImageView(e.parent)?{name:!0}:null}}class W extends e.Command{refresh(){const e=this.editor,t=e.plugins.get("ImageCaptionUtils");if(!e.plugins.has(P))return this.isEnabled=!1,void(this.value=!1);const i=e.model.document.selection,n=i.getSelectedElement();if(!n){const e=t.getCaptionFromModelSelection(i);return this.isEnabled=!!e,void(this.value=!!e)}this.isEnabled=this.editor.plugins.get("ImageUtils").isImage(n),this.isEnabled?this.value=!!t.getCaptionFromImageModelElement(n):this.value=!1}execute(e={}){const{focusCaptionOnShow:t}=e;this.editor.model.change((e=>{this.value?this._hideImageCaption(e):this._showImageCaption(e,t)}))}_showImageCaption(e,t){const i=this.editor.model.document.selection,n=this.editor.plugins.get("ImageCaptionEditing");let o=i.getSelectedElement();const a=n._getSavedCaption(o);this.editor.plugins.get("ImageUtils").isInlineImage(o)&&(this.editor.execute("imageTypeBlock"),o=i.getSelectedElement());const s=a||e.createElement("caption");e.append(s,o),t&&e.setSelection(s,"in")}_hideImageCaption(e){const t=this.editor,i=t.model.document.selection,n=t.plugins.get("ImageCaptionEditing"),o=t.plugins.get("ImageCaptionUtils");let a,s=i.getSelectedElement();s?a=o.getCaptionFromImageModelElement(s):(a=o.getCaptionFromModelSelection(i),s=a.parent),n._saveCaption(s,a),e.setSelection(s,"on"),e.remove(a)}}class q extends e.Plugin{static get requires(){return[m,M]}static get pluginName(){return"ImageCaptionEditing"}constructor(e){super(e),this._savedCaptionsMap=new WeakMap}init(){const e=this.editor,t=e.model.schema;t.isRegistered("caption")?t.extend("caption",{allowIn:"imageBlock"}):t.register("caption",{allowIn:"imageBlock",allowContentOf:"$block",isLimit:!0}),e.commands.add("toggleImageCaption",new W(this.editor)),this._setupConversion(),this._setupImageTypeCommandsIntegration(),this._registerCaptionReconversion()}_setupConversion(){const e=this.editor,t=e.editing.view,i=e.plugins.get("ImageUtils"),n=e.plugins.get("ImageCaptionUtils"),a=e.t;e.conversion.for("upcast").elementToElement({view:e=>n.matchImageCaptionViewElement(e),model:"caption"}),e.conversion.for("dataDowncast").elementToElement({model:"caption",view:(e,{writer:t})=>i.isBlockImage(e.parent)?t.createContainerElement("figcaption"):null}),e.conversion.for("editingDowncast").elementToElement({model:"caption",view:(e,{writer:n})=>{if(!i.isBlockImage(e.parent))return null;const s=n.createEditableElement("figcaption");n.setCustomProperty("imageCaption",!0,s),(0,o.enablePlaceholder)({view:t,element:s,text:a("Enter image caption"),keepOnFocus:!0});const r=e.parent.getAttribute("alt"),c=r?a("Caption for image: %0",[r]):a("Caption for the image");return(0,l.toWidgetEditable)(s,n,{label:c})}})}_setupImageTypeCommandsIntegration(){const e=this.editor,t=e.plugins.get("ImageUtils"),i=e.plugins.get("ImageCaptionUtils"),n=e.commands.get("imageTypeInline"),o=e.commands.get("imageTypeBlock"),a=e=>{if(!e.return)return;const{oldElement:n,newElement:o}=e.return;if(!n)return;if(t.isBlockImage(n)){const e=i.getCaptionFromImageModelElement(n);if(e)return void this._saveCaption(o,e)}const a=this._getSavedCaption(n);a&&this._saveCaption(o,a)};n&&this.listenTo(n,"execute",a,{priority:"low"}),o&&this.listenTo(o,"execute",a,{priority:"low"})}_getSavedCaption(e){const t=this._savedCaptionsMap.get(e);return t?o.Element.fromJSON(t):null}_saveCaption(e,t){this._savedCaptionsMap.set(e,t.toJSON())}_registerCaptionReconversion(){const e=this.editor,t=e.model,i=e.plugins.get("ImageUtils"),n=e.plugins.get("ImageCaptionUtils");t.document.on("change:data",(()=>{const o=t.document.differ.getChanges();for(const t of o){if("alt"!==t.attributeKey)continue;const o=t.range.start.nodeAfter;if(i.isBlockImage(o)){const t=n.getCaptionFromImageModelElement(o);if(!t)return;e.editing.reconvertItem(t)}}}))}}class Z extends e.Plugin{static get requires(){return[M]}static get pluginName(){return"ImageCaptionUI"}init(){const t=this.editor,i=t.editing.view,n=t.plugins.get("ImageCaptionUtils"),o=t.t;t.ui.componentFactory.add("toggleImageCaption",(a=>{const s=t.commands.get("toggleImageCaption"),r=new k.ButtonView(a);return r.set({icon:e.icons.caption,tooltip:!0,isToggleable:!0}),r.bind("isOn","isEnabled").to(s,"value","isEnabled"),r.bind("label").to(s,"value",(e=>o(e?"Toggle caption off":"Toggle caption on"))),this.listenTo(r,"execute",(()=>{t.execute("toggleImageCaption",{focusCaptionOnShow:!0});const e=n.getCaptionFromModelSelection(t.model.document.selection);if(e){const n=t.editing.mapper.toViewElement(e);i.scrollToTheSelection(),i.change((e=>{e.addClass("image__caption_highlighted",n)}))}t.editing.view.focus()})),r}))}}var $=i(560),H={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};I()($.Z,H);$.Z.locals;class K extends e.Plugin{static get requires(){return[q,Z]}static get pluginName(){return"ImageCaption"}}var G=i(448);function J(e){const t=e.map((e=>e.replace("+","\\+")));return new RegExp(`^image\\/(${t.join("|")})$`)}function Q(e){return new Promise(((t,i)=>{const n=e.getAttribute("src");fetch(n).then((e=>e.blob())).then((e=>{const i=X(e,n),o=i.replace("image/",""),a=new File([e],`image.${o}`,{type:i});t(a)})).catch((e=>e&&"TypeError"===e.name?function(e){return function(e){return new Promise(((t,i)=>{const n=r.global.document.createElement("img");n.addEventListener("load",(()=>{const e=r.global.document.createElement("canvas");e.width=n.width,e.height=n.height;e.getContext("2d").drawImage(n,0,0),e.toBlob((e=>e?t(e):i()))})),n.addEventListener("error",(()=>i())),n.src=e}))}(e).then((t=>{const i=X(t,e),n=i.replace("image/","");return new File([t],`image.${n}`,{type:i})}))}(n).then(t).catch(i):i(e)))}))}function X(e,t){return e.type?e.type:t.match(/data:(image\/\w+);base64/)?t.match(/data:(image\/\w+);base64/)[1].toLowerCase():"image/jpeg"}class Y extends e.Plugin{static get pluginName(){return"ImageUploadUI"}init(){const t=this.editor,i=t.t,n=n=>{const o=new G.FileDialogButtonView(n),a=t.commands.get("uploadImage"),s=t.config.get("image.upload.types"),r=J(s);return o.set({acceptedType:s.map((e=>`image/${e}`)).join(","),allowMultipleFiles:!0}),o.buttonView.set({label:i("Insert image"),icon:e.icons.image,tooltip:!0}),o.buttonView.bind("isEnabled").to(a),o.on("done",((e,i)=>{const n=Array.from(i).filter((e=>r.test(e.type)));n.length&&(t.execute("uploadImage",{file:n}),t.editing.view.focus())})),o};t.ui.componentFactory.add("uploadImage",n),t.ui.componentFactory.add("imageUpload",n)}}var ee=i(271),te={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};I()(ee.Z,te);ee.Z.locals;var ie=i(948),ne={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};I()(ie.Z,ne);ie.Z.locals;var oe=i(467),ae={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};I()(oe.Z,ae);oe.Z.locals;class se extends e.Plugin{static get pluginName(){return"ImageUploadProgress"}constructor(e){super(e),this.placeholder="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="}init(){const e=this.editor;e.plugins.has("ImageBlockEditing")&&e.editing.downcastDispatcher.on("attribute:uploadStatus:imageBlock",((...e)=>this.uploadStatusChange(...e))),e.plugins.has("ImageInlineEditing")&&e.editing.downcastDispatcher.on("attribute:uploadStatus:imageInline",((...e)=>this.uploadStatusChange(...e)))}uploadStatusChange(e,t,i){const n=this.editor,o=t.item,a=o.getAttribute("uploadId");if(!i.consumable.consume(t.item,e.name))return;const s=n.plugins.get("ImageUtils"),r=n.plugins.get(G.FileRepository),l=a?t.attributeNewValue:null,c=this.placeholder,g=n.editing.mapper.toViewElement(o),d=i.writer;if("reading"==l)return re(g,d),void le(s,c,g,d);if("uploading"==l){const e=r.loaders.get(a);return re(g,d),void(e?(ce(g,d),function(e,t,i,n){const o=function(e){const t=e.createUIElement("div",{class:"ck-progress-bar"});return e.setCustomProperty("progressBar",!0,t),t}(t);t.insert(t.createPositionAt(e,"end"),o),i.on("change:uploadedPercent",((e,t,i)=>{n.change((e=>{e.setStyle("width",i+"%",o)}))}))}(g,d,e,n.editing.view),function(e,t,i,n){if(n.data){const o=e.findViewImgElement(t);i.setAttribute("src",n.data,o)}}(s,g,d,e)):le(s,c,g,d))}"complete"==l&&r.loaders.get(a)&&function(e,t,i){const n=t.createUIElement("div",{class:"ck-image-upload-complete-icon"});t.insert(t.createPositionAt(e,"end"),n),setTimeout((()=>{i.change((e=>e.remove(e.createRangeOn(n))))}),3e3)}(g,d,n.editing.view),function(e,t){de(e,t,"progressBar")}(g,d),ce(g,d),function(e,t){t.removeClass("ck-appear",e)}(g,d)}}function re(e,t){e.hasClass("ck-appear")||t.addClass("ck-appear",e)}function le(e,t,i,n){i.hasClass("ck-image-upload-placeholder")||n.addClass("ck-image-upload-placeholder",i);const o=e.findViewImgElement(i);o.getAttribute("src")!==t&&n.setAttribute("src",t,o),ge(i,"placeholder")||n.insert(n.createPositionAfter(o),function(e){const t=e.createUIElement("div",{class:"ck-upload-placeholder-loader"});return e.setCustomProperty("placeholder",!0,t),t}(n))}function ce(e,t){e.hasClass("ck-image-upload-placeholder")&&t.removeClass("ck-image-upload-placeholder",e),de(e,t,"placeholder")}function ge(e,t){for(const i of e.getChildren())if(i.getCustomProperty(t))return i}function de(e,t,i){const n=ge(e,i);n&&t.remove(t.createRangeOn(n))}class me extends e.Command{refresh(){const e=this.editor,t=e.plugins.get("ImageUtils"),i=e.model.document.selection.getSelectedElement();this.isEnabled=t.isImageAllowed()||t.isImage(i)}execute(e){const t=(0,r.toArray)(e.file),i=this.editor.model.document.selection,n=this.editor.plugins.get("ImageUtils"),o=Object.fromEntries(i.getAttributes());t.forEach(((e,t)=>{const a=i.getSelectedElement();if(t&&a&&n.isImage(a)){const t=this.editor.model.createPositionAfter(a);this._uploadImage(e,o,t)}else this._uploadImage(e,o)}))}_uploadImage(e,t,i){const n=this.editor,o=n.plugins.get(G.FileRepository).createLoader(e),a=n.plugins.get("ImageUtils");o&&a.insertImage({...t,uploadId:o.id},i)}}class ue extends e.Plugin{static get requires(){return[G.FileRepository,k.Notification,t.ClipboardPipeline,m]}static get pluginName(){return"ImageUploadEditing"}constructor(e){super(e),e.config.define("image",{upload:{types:["jpeg","png","gif","bmp","webp","tiff"]}}),this._uploadImageElements=new Map}init(){const e=this.editor,t=e.model.document,i=e.conversion,n=e.plugins.get(G.FileRepository),a=e.plugins.get("ImageUtils"),s=J(e.config.get("image.upload.types")),r=new me(e);e.commands.add("uploadImage",r),e.commands.add("imageUpload",r),i.for("upcast").attributeToAttribute({view:{name:"img",key:"uploadId"},model:"uploadId"}),this.listenTo(e.editing.view.document,"clipboardInput",((t,i)=>{if(n=i.dataTransfer,Array.from(n.types).includes("text/html")&&""!==n.getData("text/html"))return;var n;const o=Array.from(i.dataTransfer.files).filter((e=>!!e&&s.test(e.type)));o.length&&(t.stop(),e.model.change((t=>{i.targetRanges&&t.setSelection(i.targetRanges.map((t=>e.editing.mapper.toModelRange(t)))),e.model.enqueueChange((()=>{e.execute("uploadImage",{file:o})}))})))})),this.listenTo(e.plugins.get("ClipboardPipeline"),"inputTransformation",((t,i)=>{const s=Array.from(e.editing.view.createRangeIn(i.content)).filter((e=>function(e,t){return!(!e.isInlineImageView(t)||!t.getAttribute("src"))&&(t.getAttribute("src").match(/^data:image\/\w+;base64,/g)||t.getAttribute("src").match(/^blob:/g))}(a,e.item)&&!e.item.getAttribute("uploadProcessed"))).map((e=>({promise:Q(e.item),imageElement:e.item})));if(!s.length)return;const r=new o.UpcastWriter(e.editing.view.document);for(const e of s){r.setAttribute("uploadProcessed",!0,e.imageElement);const t=n.createLoader(e.promise);t&&(r.setAttribute("src","",e.imageElement),r.setAttribute("uploadId",t.id,e.imageElement))}})),e.editing.view.document.on("dragover",((e,t)=>{t.preventDefault()})),t.on("change",(()=>{const i=t.differ.getChanges({includeChangesInGraveyard:!0}).reverse(),o=new Set;for(const t of i)if("insert"==t.type&&"$text"!=t.name){const i=t.position.nodeAfter,a="$graveyard"==t.position.root.rootName;for(const t of pe(e,i)){const e=t.getAttribute("uploadId");if(!e)continue;const i=n.loaders.get(e);i&&(a?o.has(e)||i.abort():(o.add(e),this._uploadImageElements.set(e,t),"idle"==i.status&&this._readAndUpload(i)))}}})),this.on("uploadComplete",((e,{imageElement:t,data:i})=>{const n=i.urls?i.urls:i;this.editor.model.change((e=>{e.setAttribute("src",n.default,t),this._parseAndSetSrcsetAttributeOnImage(n,t,e)}))}),{priority:"low"})}afterInit(){const e=this.editor.model.schema;this.editor.plugins.has("ImageBlockEditing")&&e.extend("imageBlock",{allowAttributes:["uploadId","uploadStatus"]}),this.editor.plugins.has("ImageInlineEditing")&&e.extend("imageInline",{allowAttributes:["uploadId","uploadStatus"]})}_readAndUpload(e){const t=this.editor,i=t.model,n=t.locale.t,o=t.plugins.get(G.FileRepository),a=t.plugins.get(k.Notification),s=t.plugins.get("ImageUtils"),l=this._uploadImageElements;return i.enqueueChange({isUndoable:!1},(t=>{t.setAttribute("uploadStatus","reading",l.get(e.id))})),e.read().then((()=>{const n=e.upload(),o=l.get(e.id);if(r.env.isSafari){const e=t.editing.mapper.toViewElement(o),i=s.findViewImgElement(e);t.editing.view.once("render",(()=>{if(!i.parent)return;const e=t.editing.view.domConverter.mapViewToDom(i.parent);if(!e)return;const n=e.style.display;e.style.display="none",e._ckHack=e.offsetHeight,e.style.display=n}))}return i.enqueueChange({isUndoable:!1},(e=>{e.setAttribute("uploadStatus","uploading",o)})),n})).then((t=>{i.enqueueChange({isUndoable:!1},(i=>{const n=l.get(e.id);i.setAttribute("uploadStatus","complete",n),this.fire("uploadComplete",{data:t,imageElement:n})})),c()})).catch((t=>{if("error"!==e.status&&"aborted"!==e.status)throw t;"error"==e.status&&t&&a.showWarning(t,{title:n("Upload failed"),namespace:"upload"}),i.enqueueChange({isUndoable:!1},(t=>{t.remove(l.get(e.id))})),c()}));function c(){i.enqueueChange({isUndoable:!1},(t=>{const i=l.get(e.id);t.removeAttribute("uploadId",i),t.removeAttribute("uploadStatus",i),l.delete(e.id)})),o.destroyLoader(e)}}_parseAndSetSrcsetAttributeOnImage(e,t,i){let n=0;const o=Object.keys(e).filter((e=>{const t=parseInt(e,10);if(!isNaN(t))return n=Math.max(n,t),!0})).map((t=>`${e[t]} ${t}w`)).join(", ");""!=o&&i.setAttribute("srcset",{data:o,width:n},t)}}function pe(e,t){const i=e.plugins.get("ImageUtils");return Array.from(e.model.createRangeOn(t)).filter((e=>i.isImage(e.item))).map((e=>e.item))}class he extends e.Plugin{static get pluginName(){return"ImageUpload"}static get requires(){return[ue,Y,se]}}var fe=i(439),be={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};I()(fe.Z,be);fe.Z.locals;class ke extends k.View{constructor(e,t={}){super(e);const i=this.bindTemplate;this.set("class",t.class||null),this.children=this.createCollection(),t.children&&t.children.forEach((e=>this.children.add(e))),this.set("_role",null),this.set("_ariaLabelledBy",null),t.labelView&&this.set({_role:"group",_ariaLabelledBy:t.labelView.id}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-form__row",i.to("class")],role:i.to("_role"),"aria-labelledby":i.to("_ariaLabelledBy")},children:this.children})}}var we=i(91),Ie={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};I()(we.Z,Ie);we.Z.locals;class ve extends k.View{constructor(e,t){super(e);const{insertButtonView:i,cancelButtonView:n}=this._createActionButtons(e);if(this.insertButtonView=i,this.cancelButtonView=n,this.set("imageURLInputValue",""),this.focusTracker=new r.FocusTracker,this.keystrokes=new r.KeystrokeHandler,this._focusables=new k.ViewCollection,this._focusCycler=new k.FocusCycler({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.set("_integrations",new r.Collection),t)for(const[e,i]of Object.entries(t))"insertImageViaUrl"===e&&(i.fieldView.bind("value").to(this,"imageURLInputValue",(e=>e||"")),i.fieldView.on("input",(()=>{this.imageURLInputValue=i.fieldView.element.value.trim()}))),i.name=e,this._integrations.add(i);this.setTemplate({tag:"form",attributes:{class:["ck","ck-image-insert-form"],tabindex:"-1"},children:[...this._integrations,new ke(e,{children:[this.insertButtonView,this.cancelButtonView],class:"ck-image-insert-form__action-row"})]})}render(){super.render(),(0,k.submitHandler)({view:this});const e=[...this._integrations,this.insertButtonView,this.cancelButtonView];e.forEach((e=>{this._focusables.add(e),this.focusTracker.add(e.element)})),this.keystrokes.listenTo(this.element);const t=e=>e.stopPropagation();this.keystrokes.set("arrowright",t),this.keystrokes.set("arrowleft",t),this.keystrokes.set("arrowup",t),this.keystrokes.set("arrowdown",t),this.listenTo(e[0].element,"selectstart",((e,t)=>{t.stopPropagation()}),{priority:"high"})}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}getIntegration(e){return this._integrations.find((t=>t.name===e))}_createActionButtons(t){const i=t.t,n=new k.ButtonView(t),o=new k.ButtonView(t);return n.set({label:i("Insert"),icon:e.icons.check,class:"ck-button-save",type:"submit",withText:!0,isEnabled:this.imageURLInputValue}),o.set({label:i("Cancel"),icon:e.icons.cancel,class:"ck-button-cancel",withText:!0}),n.bind("isEnabled").to(this,"imageURLInputValue",(e=>!!e)),n.delegate("execute").to(this,"submit"),o.delegate("execute").to(this,"cancel"),{insertButtonView:n,cancelButtonView:o}}focus(){this._focusCycler.focusFirst()}}function ye(e){const t=e.t,i=new k.LabeledFieldView(e,k.createLabeledInputText);return i.set({label:t("Insert image via URL")}),i.fieldView.placeholder="https://example.com/image.png",i}class _e extends e.Plugin{static get pluginName(){return"ImageInsertUI"}init(){const e=this.editor,t=e=>this._createDropdownView(e);e.ui.componentFactory.add("insertImage",t),e.ui.componentFactory.add("imageInsert",t)}_createDropdownView(t){const i=this.editor,n=t.t,o=i.commands.get("uploadImage"),a=i.commands.get("insertImage");this.dropdownView=(0,k.createDropdown)(t,o?k.SplitButtonView:void 0);const s=this.dropdownView.buttonView,r=this.dropdownView.panelView;if(s.set({label:n("Insert image"),icon:e.icons.image,tooltip:!0}),r.extendTemplate({attributes:{class:"ck-image-insert__panel"}}),o){const e=this.dropdownView.buttonView;e.actionView=i.ui.componentFactory.create("uploadImage"),e.actionView.extendTemplate({attributes:{class:"ck ck-button ck-splitbutton__action"}})}return this._setUpDropdown(o||a)}_setUpDropdown(e){const t=this.editor,i=t.t,n=new ve(t.locale,function(e){const t=e.config.get("image.insert.integrations"),i=e.plugins.get("ImageInsertUI"),n={insertImageViaUrl:ye(e.locale)};if(!t)return n;if(t.find((e=>"openCKFinder"===e))&&e.ui.componentFactory.has("ckfinder")){const t=e.ui.componentFactory.create("ckfinder");t.set({withText:!0,class:"ck-image-insert__ck-finder-button"}),t.delegate("execute").to(i,"cancel"),n.openCKFinder=t}return t.reduce(((t,i)=>(n[i]?t[i]=n[i]:e.ui.componentFactory.has(i)&&(t[i]=e.ui.componentFactory.create(i)),t)),{})}(t)),o=n.insertButtonView,a=n.getIntegration("insertImageViaUrl"),s=this.dropdownView,r=s.panelView,l=this.editor.plugins.get("ImageUtils");function c(){t.editing.view.focus(),s.isOpen=!1}return s.bind("isEnabled").to(e),s.once("change:isOpen",(()=>{r.children.add(n)})),s.on("change:isOpen",(()=>{const e=t.model.document.selection.getSelectedElement();s.isOpen&&(l.isImage(e)?(n.imageURLInputValue=e.getAttribute("src"),o.label=i("Update"),a.label=i("Update image URL")):(n.imageURLInputValue="",o.label=i("Insert"),a.label=i("Insert image via URL")))}),{priority:"low"}),n.delegate("submit","cancel").to(s),this.delegate("cancel").to(s),s.on("submit",(()=>{c(),function(){const e=t.model.document.selection.getSelectedElement();l.isImage(e)?t.model.change((t=>{t.setAttribute("src",n.imageURLInputValue,e),t.removeAttribute("srcset",e),t.removeAttribute("sizes",e)})):t.execute("insertImage",{source:n.imageURLInputValue})}()})),s.on("cancel",(()=>{c()})),s}}class Ee extends e.Plugin{static get pluginName(){return"ImageInsertViaUrl"}static get requires(){return[_e]}}class xe extends e.Plugin{static get pluginName(){return"ImageInsert"}static get requires(){return[he,Ee,_e]}}class Ce extends e.Command{refresh(){const e=this.editor,t=e.plugins.get("ImageUtils").getClosestSelectedImageElement(e.model.document.selection);this.isEnabled=!!t,t&&t.hasAttribute("width")?this.value={width:t.getAttribute("width"),height:null}:this.value=null}execute(e){const t=this.editor,i=t.model,n=t.plugins.get("ImageUtils").getClosestSelectedImageElement(i.document.selection);this.value={width:e.width,height:null},n&&i.change((t=>{t.setAttribute("width",e.width,n)}))}}class Se extends e.Plugin{static get requires(){return[m]}static get pluginName(){return"ImageResizeEditing"}constructor(e){super(e),e.config.define("image",{resizeUnit:"%",resizeOptions:[{name:"resizeImage:original",value:null,icon:"original"},{name:"resizeImage:25",value:"25",icon:"small"},{name:"resizeImage:50",value:"50",icon:"medium"},{name:"resizeImage:75",value:"75",icon:"large"}]})}init(){const e=this.editor,t=new Ce(e);this._registerSchema(),this._registerConverters("imageBlock"),this._registerConverters("imageInline"),e.commands.add("resizeImage",t),e.commands.add("imageResize",t)}_registerSchema(){this.editor.plugins.has("ImageBlockEditing")&&this.editor.model.schema.extend("imageBlock",{allowAttributes:"width"}),this.editor.plugins.has("ImageInlineEditing")&&this.editor.model.schema.extend("imageInline",{allowAttributes:"width"})}_registerConverters(e){const t=this.editor;t.conversion.for("downcast").add((t=>t.on(`attribute:width:${e}`,((e,t,i)=>{if(!i.consumable.consume(t.item,e.name))return;const n=i.writer,o=i.mapper.toViewElement(t.item);null!==t.attributeNewValue?(n.setStyle("width",t.attributeNewValue,o),n.addClass("image_resized",o)):(n.removeStyle("width",o),n.removeClass("image_resized",o))})))),t.conversion.for("upcast").attributeToAttribute({view:{name:"imageBlock"===e?"figure":"img",styles:{width:/.+/}},model:{key:"width",value:e=>e.getStyle("width")}})}}const Ae={small:e.icons.objectSizeSmall,medium:e.icons.objectSizeMedium,large:e.icons.objectSizeLarge,original:e.icons.objectSizeFull};class Te extends e.Plugin{static get requires(){return[Se]}static get pluginName(){return"ImageResizeButtons"}constructor(e){super(e),this._resizeUnit=e.config.get("image.resizeUnit")}init(){const e=this.editor,t=e.config.get("image.resizeOptions"),i=e.commands.get("resizeImage");this.bind("isEnabled").to(i);for(const e of t)this._registerImageResizeButton(e);this._registerImageResizeDropdown(t)}_registerImageResizeButton(e){const t=this.editor,{name:i,value:n,icon:o}=e,a=n?n+this._resizeUnit:null;t.ui.componentFactory.add(i,(i=>{const n=new k.ButtonView(i),s=t.commands.get("resizeImage"),l=this._getOptionLabelValue(e,!0);if(!Ae[o])throw new r.CKEditorError("imageresizebuttons-missing-icon",t,e);return n.set({label:l,icon:Ae[o],tooltip:l,isToggleable:!0}),n.bind("isEnabled").to(this),n.bind("isOn").to(s,"value",Be(a)),this.listenTo(n,"execute",(()=>{t.execute("resizeImage",{width:a})})),n}))}_registerImageResizeDropdown(e){const t=this.editor,i=t.t,n=e.find((e=>!e.value)),o=o=>{const a=t.commands.get("resizeImage"),s=(0,k.createDropdown)(o,k.DropdownButtonView),r=s.buttonView;return r.set({tooltip:i("Resize image"),commandValue:n.value,icon:Ae.medium,isToggleable:!0,label:this._getOptionLabelValue(n),withText:!0,class:"ck-resize-image-button"}),r.bind("label").to(a,"value",(e=>e&&e.width?e.width:this._getOptionLabelValue(n))),s.bind("isOn").to(a),s.bind("isEnabled").to(this),(0,k.addListToDropdown)(s,this._getResizeDropdownListItemDefinitions(e,a)),s.listView.ariaLabel=i("Image resize list"),this.listenTo(s,"execute",(e=>{t.execute(e.source.commandName,{width:e.source.commandValue}),t.editing.view.focus()})),s};t.ui.componentFactory.add("resizeImage",o),t.ui.componentFactory.add("imageResize",o)}_getOptionLabelValue(e,t){const i=this.editor.t;return e.label?e.label:t?e.value?i("Resize image to %0",e.value+this._resizeUnit):i("Resize image to the original size"):e.value?e.value+this._resizeUnit:i("Original")}_getResizeDropdownListItemDefinitions(e,t){const i=new r.Collection;return e.map((e=>{const n=e.value?e.value+this._resizeUnit:null,o={type:"button",model:new k.Model({commandName:"resizeImage",commandValue:n,label:this._getOptionLabelValue(e),withText:!0,icon:null})};o.model.bind("isOn").to(t,"value",Be(n)),i.add(o)})),i}}function Be(e){return t=>null===e&&t===e||t&&t.width===e}const Ve=/(image|image-inline)/,Ue="image_resized";class Re extends e.Plugin{static get requires(){return[l.WidgetResize]}static get pluginName(){return"ImageResizeHandles"}init(){const e=this.editor.commands.get("resizeImage");this.bind("isEnabled").to(e),this._setupResizerCreator()}_setupResizerCreator(){const e=this.editor,t=e.editing.view;t.addObserver(V),this.listenTo(t.document,"imageLoaded",((i,n)=>{if(!n.target.matches("figure.image.ck-widget > img,figure.image.ck-widget > picture > img,figure.image.ck-widget > a > img,figure.image.ck-widget > a > picture > img,span.image-inline.ck-widget > img,span.image-inline.ck-widget > picture > img"))return;const o=e.editing.view.domConverter,a=o.domToView(n.target).findAncestor({classes:Ve});let s=this.editor.plugins.get(l.WidgetResize).getResizerByViewElement(a);if(s)return void s.redraw();const r=e.editing.mapper,c=r.toModelElement(a);s=e.plugins.get(l.WidgetResize).attachTo({unit:e.config.get("image.resizeUnit"),modelElement:c,viewElement:a,editor:e,getHandleHost:e=>e.querySelector("img"),getResizeHost:()=>o.mapViewToDom(r.toViewElement(c.parent)),isCentered(){const e=c.getAttribute("imageStyle");return!e||"block"==e||"alignCenter"==e},onCommit(i){t.change((e=>{e.removeClass(Ue,a)})),e.execute("resizeImage",{width:i})}}),s.on("updateSize",(()=>{a.hasClass(Ue)||t.change((e=>{e.addClass(Ue,a)}))})),s.bind("isEnabled").to(this)}))}}var ze=i(601),Pe={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};I()(ze.Z,Pe);ze.Z.locals;class Oe extends e.Plugin{static get requires(){return[Se,Re,Te]}static get pluginName(){return"ImageResize"}}class Ne extends e.Command{constructor(e,t){super(e),this._defaultStyles={imageBlock:!1,imageInline:!1},this._styles=new Map(t.map((e=>{if(e.isDefault)for(const t of e.modelElements)this._defaultStyles[t]=e.name;return[e.name,e]})))}refresh(){const e=this.editor.plugins.get("ImageUtils").getClosestSelectedImageElement(this.editor.model.document.selection);this.isEnabled=!!e,this.isEnabled?e.hasAttribute("imageStyle")?this.value=e.getAttribute("imageStyle"):this.value=this._defaultStyles[e.name]:this.value=!1}execute(e={}){const t=this.editor,i=t.model,n=t.plugins.get("ImageUtils");i.change((t=>{const o=e.value;let a=n.getClosestSelectedImageElement(i.document.selection);o&&this.shouldConvertImageType(o,a)&&(this.editor.execute(n.isBlockImage(a)?"imageTypeInline":"imageTypeBlock"),a=n.getClosestSelectedImageElement(i.document.selection)),!o||this._styles.get(o).isDefault?t.removeAttribute("imageStyle",a):t.setAttribute("imageStyle",o,a)}))}shouldConvertImageType(e,t){return!this._styles.get(e).modelElements.includes(t.name)}}const{objectFullWidth:Fe,objectInline:Le,objectLeft:De,objectRight:je,objectCenter:Me,objectBlockLeft:We,objectBlockRight:qe}=e.icons,Ze={get inline(){return{name:"inline",title:"In line",icon:Le,modelElements:["imageInline"],isDefault:!0}},get alignLeft(){return{name:"alignLeft",title:"Left aligned image",icon:De,modelElements:["imageBlock","imageInline"],className:"image-style-align-left"}},get alignBlockLeft(){return{name:"alignBlockLeft",title:"Left aligned image",icon:We,modelElements:["imageBlock"],className:"image-style-block-align-left"}},get alignCenter(){return{name:"alignCenter",title:"Centered image",icon:Me,modelElements:["imageBlock"],className:"image-style-align-center"}},get alignRight(){return{name:"alignRight",title:"Right aligned image",icon:je,modelElements:["imageBlock","imageInline"],className:"image-style-align-right"}},get alignBlockRight(){return{name:"alignBlockRight",title:"Right aligned image",icon:qe,modelElements:["imageBlock"],className:"image-style-block-align-right"}},get block(){return{name:"block",title:"Centered image",icon:Me,modelElements:["imageBlock"],isDefault:!0}},get side(){return{name:"side",title:"Side image",icon:je,modelElements:["imageBlock"],className:"image-style-side"}}},$e={full:Fe,left:We,right:qe,center:Me,inlineLeft:De,inlineRight:je,inline:Le},He=[{name:"imageStyle:wrapText",title:"Wrap text",defaultItem:"imageStyle:alignLeft",items:["imageStyle:alignLeft","imageStyle:alignRight"]},{name:"imageStyle:breakText",title:"Break text",defaultItem:"imageStyle:block",items:["imageStyle:alignBlockLeft","imageStyle:block","imageStyle:alignBlockRight"]}];function Ke(e){(0,r.logWarning)("image-style-configuration-definition-invalid",e)}const Ge={normalizeStyles:function(e){return(e.configuredStyles.options||[]).map((e=>function(e){e="string"==typeof e?Ze[e]?{...Ze[e]}:{name:e}:function(e,t){const i={...t};for(const n in e)Object.prototype.hasOwnProperty.call(t,n)||(i[n]=e[n]);return i}(Ze[e.name],e);"string"==typeof e.icon&&(e.icon=$e[e.icon]||e.icon);return e}(e))).filter((t=>function(e,{isBlockPluginLoaded:t,isInlinePluginLoaded:i}){const{modelElements:n,name:o}=e;if(!(n&&n.length&&o))return Ke({style:e}),!1;{const o=[t?"imageBlock":null,i?"imageInline":null];if(!n.some((e=>o.includes(e))))return(0,r.logWarning)("image-style-missing-dependency",{style:e,missingPlugins:n.map((e=>"imageBlock"===e?"ImageBlockEditing":"ImageInlineEditing"))}),!1}return!0}(t,e)))},getDefaultStylesConfiguration:function(e,t){return e&&t?{options:["inline","alignLeft","alignRight","alignCenter","alignBlockLeft","alignBlockRight","block","side"]}:e?{options:["block","side"]}:t?{options:["inline","alignLeft","alignRight"]}:{}},getDefaultDropdownDefinitions:function(e){return e.has("ImageBlockEditing")&&e.has("ImageInlineEditing")?[...He]:[]},warnInvalidStyle:Ke,DEFAULT_OPTIONS:Ze,DEFAULT_ICONS:$e,DEFAULT_DROPDOWN_DEFINITIONS:He};function Je(e,t){for(const i of t)if(i.name===e)return i}class Qe extends e.Plugin{static get pluginName(){return"ImageStyleEditing"}static get requires(){return[m]}init(){const{normalizeStyles:e,getDefaultStylesConfiguration:t}=Ge,i=this.editor,n=i.plugins.has("ImageBlockEditing"),o=i.plugins.has("ImageInlineEditing");i.config.define("image.styles",t(n,o)),this.normalizedStyles=e({configuredStyles:i.config.get("image.styles"),isBlockPluginLoaded:n,isInlinePluginLoaded:o}),this._setupConversion(n,o),this._setupPostFixer(),i.commands.add("imageStyle",new Ne(i,this.normalizedStyles))}_setupConversion(e,t){const i=this.editor,n=i.model.schema,o=(a=this.normalizedStyles,(e,t,i)=>{if(!i.consumable.consume(t.item,e.name))return;const n=Je(t.attributeNewValue,a),o=Je(t.attributeOldValue,a),s=i.mapper.toViewElement(t.item),r=i.writer;o&&r.removeClass(o.className,s),n&&r.addClass(n.className,s)});var a;const s=function(e){const t={imageInline:e.filter((e=>!e.isDefault&&e.modelElements.includes("imageInline"))),imageBlock:e.filter((e=>!e.isDefault&&e.modelElements.includes("imageBlock")))};return(e,i,n)=>{if(!i.modelRange)return;const o=i.viewItem,a=(0,r.first)(i.modelRange.getItems());if(a&&n.schema.checkAttribute(a,"imageStyle"))for(const e of t[a.name])n.consumable.consume(o,{classes:e.className})&&n.writer.setAttribute("imageStyle",e.name,a)}}(this.normalizedStyles);i.editing.downcastDispatcher.on("attribute:imageStyle",o),i.data.downcastDispatcher.on("attribute:imageStyle",o),e&&(n.extend("imageBlock",{allowAttributes:"imageStyle"}),i.data.upcastDispatcher.on("element:figure",s,{priority:"low"})),t&&(n.extend("imageInline",{allowAttributes:"imageStyle"}),i.data.upcastDispatcher.on("element:img",s,{priority:"low"}))}_setupPostFixer(){const e=this.editor,t=e.model.document,i=e.plugins.get(m),n=new Map(this.normalizedStyles.map((e=>[e.name,e])));t.registerPostFixer((e=>{let o=!1;for(const a of t.differ.getChanges())if("insert"==a.type||"attribute"==a.type&&"imageStyle"==a.attributeKey){let t="insert"==a.type?a.position.nodeAfter:a.range.start.nodeAfter;if(t&&t.is("element","paragraph")&&t.childCount>0&&(t=t.getChild(0)),!i.isImage(t))continue;const s=t.getAttribute("imageStyle");if(!s)continue;const r=n.get(s);r&&r.modelElements.includes(t.name)||(e.removeAttribute("imageStyle",t),o=!0)}return o}))}}const Xe=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)};const Ye=function(e){return e};var et=i(29),tt={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};I()(et.Z,tt);et.Z.locals;class it extends e.Plugin{static get requires(){return[Qe]}static get pluginName(){return"ImageStyleUI"}get localizedDefaultStylesTitles(){const e=this.editor.t;return{"Wrap text":e("Wrap text"),"Break text":e("Break text"),"In line":e("In line"),"Full size image":e("Full size image"),"Side image":e("Side image"),"Left aligned image":e("Left aligned image"),"Centered image":e("Centered image"),"Right aligned image":e("Right aligned image")}}init(){const e=this.editor.plugins,t=this.editor.config.get("image.toolbar")||[],i=nt(e.get("ImageStyleEditing").normalizedStyles,this.localizedDefaultStylesTitles);for(const e of i)this._createButton(e);const n=nt([...t.filter(Xe),...Ge.getDefaultDropdownDefinitions(e)],this.localizedDefaultStylesTitles);for(const e of n)this._createDropdown(e,i)}_createDropdown(e,t){const i=this.editor.ui.componentFactory;i.add(e.name,(n=>{let o;const{defaultItem:a,items:s,title:r}=e,l=s.filter((e=>t.find((({name:t})=>ot(t)===e)))).map((e=>{const t=i.create(e);return e===a&&(o=t),t}));s.length!==l.length&&Ge.warnInvalidStyle({dropdown:e});const c=(0,k.createDropdown)(n,k.SplitButtonView),g=c.buttonView,d=g.arrowView;return(0,k.addToolbarToDropdown)(c,l,{enableActiveItemFocusOnDropdownOpen:!0}),g.set({label:at(r,o.label),class:null,tooltip:!0}),d.unbind("label"),d.set({label:r}),g.bind("icon").toMany(l,"isOn",((...e)=>{const t=e.findIndex(Ye);return t<0?o.icon:l[t].icon})),g.bind("label").toMany(l,"isOn",((...e)=>{const t=e.findIndex(Ye);return at(r,t<0?o.label:l[t].label)})),g.bind("isOn").toMany(l,"isOn",((...e)=>e.some(Ye))),g.bind("class").toMany(l,"isOn",((...e)=>e.some(Ye)?"ck-splitbutton_flatten":null)),g.on("execute",(()=>{l.some((({isOn:e})=>e))?c.isOpen=!c.isOpen:o.fire("execute")})),c.bind("isEnabled").toMany(l,"isEnabled",((...e)=>e.some(Ye))),this.listenTo(c,"execute",(()=>{this.editor.editing.view.focus()})),c}))}_createButton(e){const t=e.name;this.editor.ui.componentFactory.add(ot(t),(i=>{const n=this.editor.commands.get("imageStyle"),o=new k.ButtonView(i);return o.set({label:e.title,icon:e.icon,tooltip:!0,isToggleable:!0}),o.bind("isEnabled").to(n,"isEnabled"),o.bind("isOn").to(n,"value",(e=>e===t)),o.on("execute",this._executeCommand.bind(this,t)),o}))}_executeCommand(e){this.editor.execute("imageStyle",{value:e}),this.editor.editing.view.focus()}}function nt(e,t){for(const i of e)t[i.title]&&(i.title=t[i.title]);return e}function ot(e){return`imageStyle:${e}`}function at(e,t){return(e?e+": ":"")+t}class st extends e.Plugin{static get requires(){return[Qe,it]}static get pluginName(){return"ImageStyle"}}class rt extends e.Plugin{static get requires(){return[l.WidgetToolbarRepository,m]}static get pluginName(){return"ImageToolbar"}afterInit(){const e=this.editor,t=e.t,i=e.plugins.get(l.WidgetToolbarRepository),n=e.plugins.get("ImageUtils");var o;i.register("image",{ariaLabel:t("Image toolbar"),items:(o=e.config.get("image.toolbar")||[],o.map((e=>Xe(e)?e.name:e))),getRelatedElement:e=>n.getClosestSelectedImageWidget(e)})}}class lt extends e.Plugin{static get requires(){return[R,m]}static get pluginName(){return"PictureEditing"}afterInit(){const e=this.editor;e.plugins.has("ImageBlockEditing")&&e.model.schema.extend("imageBlock",{allowAttributes:["sources"]}),e.plugins.has("ImageInlineEditing")&&e.model.schema.extend("imageInline",{allowAttributes:["sources"]}),this._setupConversion(),this._setupImageUploadEditingIntegration()}_setupConversion(){const e=this.editor,t=e.conversion,i=e.plugins.get("ImageUtils");t.for("upcast").add(function(e){const t=["srcset","media","type","sizes"];return e=>{e.on("element:picture",i)};function i(i,n,o){const a=n.viewItem;if(!o.consumable.test(a,{name:!0}))return;const s=new Map;for(const e of a.getChildren())if(e.is("element","source")){const i={};for(const n of t)e.hasAttribute(n)&&o.consumable.test(e,{attributes:n})&&(i[n]=e.getAttribute(n));Object.keys(i).length&&s.set(e,i)}const l=e.findViewImgElement(a);if(!l)return;let c=n.modelCursor.parent;if(!c.is("element","imageBlock")){const e=o.convertItem(l,n.modelCursor);n.modelRange=e.modelRange,n.modelCursor=e.modelCursor,c=(0,r.first)(e.modelRange.getItems())}o.consumable.consume(a,{name:!0});for(const[e,t]of s)o.consumable.consume(e,{attributes:Object.keys(t)});s.size&&o.writer.setAttribute("sources",Array.from(s.values()),c),o.convertChildren(a,c)}}(i)),t.for("downcast").add(function(e){return e=>{e.on("attribute:sources:imageBlock",t),e.on("attribute:sources:imageInline",t)};function t(t,i,n){if(!n.consumable.consume(i.item,t.name))return;const o=n.writer,a=n.mapper.toViewElement(i.item),s=e.findViewImgElement(a);if(i.attributeNewValue&&i.attributeNewValue.length){const e=o.createContainerElement("picture",null,i.attributeNewValue.map((e=>o.createEmptyElement("source",e)))),t=[];let n=s.parent;for(;n&&n.is("attributeElement");){const e=n.parent;o.unwrap(o.createRangeOn(s),n),t.unshift(n),n=e}o.insert(o.createPositionBefore(s),e),o.move(o.createRangeOn(s),o.createPositionAt(e,"end"));for(const i of t)o.wrap(o.createRangeOn(e),i)}else if(s.parent.is("element","picture")){const e=s.parent;o.move(o.createRangeOn(s),o.createPositionBefore(e)),o.remove(e)}}}(i))}_setupImageUploadEditingIntegration(){const e=this.editor;e.plugins.has("ImageUploadEditing")&&this.listenTo(e.plugins.get("ImageUploadEditing"),"uploadComplete",((t,{imageElement:i,data:n})=>{const o=n.sources;o&&e.model.change((e=>{e.setAttributes({sources:o},i)}))}))}}})(),(window.CKEditor5=window.CKEditor5||{}).image=n})();
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/image/translations/et.js b/core/assets/vendor/ckeditor5/image/translations/et.js
index fe3160ecd8..ac3d18a5c7 100644
--- a/core/assets/vendor/ckeditor5/image/translations/et.js
+++ b/core/assets/vendor/ckeditor5/image/translations/et.js
@@ -1 +1 @@
-!function(i){const e=i.et=i.et||{};e.dictionary=Object.assign(e.dictionary||{},{"Break text":"Murra teksti","Caption for image: %0":"Pildi pealkiri: %0","Caption for the image":"Pildi pealkiri","Centered image":"Keskele joondatud pilt","Change image text alternative":"Muuda pildi asenduskirjeldust","Enter image caption":"Sisesta pildi pealkiri","Full size image":"Täissuuruses pilt","Image resize list":"Pildi suuruse muutmise loend","Image toolbar":"Piltide tööriistariba","image widget":"pildi vidin","In line":"Joone sees",Insert:"Sisesta","Insert image":"Siseta pilt","Insert image via URL":"Sisesta pilt läbi URL-i","Left aligned image":"Vasakule joondatud pilt",Original:"Algne","Resize image":"Muuda pildi suurust","Resize image to %0":"Muuda pilt suurusesse %0","Resize image to the original size":"Muuda pilt algsuurusesse","Right aligned image":"Paremale joondatud pilt","Side image":"Pilt küljel","Text alternative":"Asenduskirjeldus",Update:"Uuenda","Update image URL":"Uuenda pildi URL-i","Upload failed":"Üleslaadimine ebaõnnestus","Wrap text":"Murra teksti ridu"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(i){const e=i.et=i.et||{};e.dictionary=Object.assign(e.dictionary||{},{"Break text":"Murra teksti","Caption for image: %0":"Pildi pealkiri: %0","Caption for the image":"Pildi pealkiri","Centered image":"Keskele joondatud pilt","Change image text alternative":"Muuda pildi asenduskirjeldust","Enter image caption":"Sisesta pildi pealkiri","Full size image":"Täissuuruses pilt","Image resize list":"Pildi suuruse muutmise loend","Image toolbar":"Piltide tööriistariba","image widget":"pildi vidin","In line":"Joone sees",Insert:"Sisesta","Insert image":"Sisesta pilt","Insert image via URL":"Sisesta pilt läbi URL-i","Left aligned image":"Vasakule joondatud pilt",Original:"Algne","Resize image":"Muuda pildi suurust","Resize image to %0":"Muuda pilt suurusesse %0","Resize image to the original size":"Muuda pilt algsuurusesse","Right aligned image":"Paremale joondatud pilt","Side image":"Pilt küljel","Text alternative":"Asenduskirjeldus",Update:"Uuenda","Update image URL":"Uuenda pildi URL-i","Upload failed":"Üleslaadimine ebaõnnestus","Wrap text":"Murra teksti ridu"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/link/link.js b/core/assets/vendor/ckeditor5/link/link.js
index fbb3acc819..5a37be9844 100644
--- a/core/assets/vendor/ckeditor5/link/link.js
+++ b/core/assets/vendor/ckeditor5/link/link.js
@@ -2,4 +2,4 @@
 /*!
  * @license Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
  * For licensing, see LICENSE.md.
- */(()=>{var e={23:(e,t,i)=>{"use strict";i.d(t,{Z:()=>s});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,".ck .ck-link_selected{background:var(--ck-color-link-selected-background)}.ck .ck-link_selected span.image-inline{outline:var(--ck-widget-outline-thickness) solid var(--ck-color-link-selected-background)}.ck .ck-fake-link-selection{background:var(--ck-color-link-fake-selection)}.ck .ck-fake-link-selection_collapsed{border-right:1px solid var(--ck-color-base-text);height:100%;margin-right:-1px;outline:1px solid hsla(0,0%,100%,.5)}",""]);const s=o},952:(e,t,i)=>{"use strict";i.d(t,{Z:()=>s});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,".ck.ck-link-actions{display:flex;flex-direction:row;flex-wrap:nowrap}.ck.ck-link-actions .ck-link-actions__preview{display:inline-block}.ck.ck-link-actions .ck-link-actions__preview .ck-button__label{overflow:hidden}@media screen and (max-width:600px){.ck.ck-link-actions{flex-wrap:wrap}.ck.ck-link-actions .ck-link-actions__preview{flex-basis:100%}.ck.ck-link-actions .ck-button:not(.ck-link-actions__preview){flex-basis:50%}}.ck.ck-link-actions .ck-button.ck-link-actions__preview{padding-left:0;padding-right:0}.ck.ck-link-actions .ck-button.ck-link-actions__preview .ck-button__label{color:var(--ck-color-link-default);cursor:pointer;max-width:var(--ck-input-width);min-width:3em;padding:0 var(--ck-spacing-medium);text-align:center;text-overflow:ellipsis}.ck.ck-link-actions .ck-button.ck-link-actions__preview .ck-button__label:hover{text-decoration:underline}.ck.ck-link-actions .ck-button.ck-link-actions__preview,.ck.ck-link-actions .ck-button.ck-link-actions__preview:active,.ck.ck-link-actions .ck-button.ck-link-actions__preview:focus,.ck.ck-link-actions .ck-button.ck-link-actions__preview:hover{background:none}.ck.ck-link-actions .ck-button.ck-link-actions__preview:active{box-shadow:none}.ck.ck-link-actions .ck-button.ck-link-actions__preview:focus .ck-button__label{text-decoration:underline}[dir=ltr] .ck.ck-link-actions .ck-button:not(:first-child),[dir=rtl] .ck.ck-link-actions .ck-button:not(:last-child){margin-left:var(--ck-spacing-standard)}@media screen and (max-width:600px){.ck.ck-link-actions .ck-button.ck-link-actions__preview{margin:var(--ck-spacing-standard) var(--ck-spacing-standard) 0}.ck.ck-link-actions .ck-button.ck-link-actions__preview .ck-button__label{max-width:100%;min-width:0}[dir=ltr] .ck.ck-link-actions .ck-button:not(.ck-link-actions__preview),[dir=rtl] .ck.ck-link-actions .ck-button:not(.ck-link-actions__preview){margin-left:0}}",""]);const s=o},871:(e,t,i)=>{"use strict";i.d(t,{Z:()=>s});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,".ck.ck-link-form{display:flex}.ck.ck-link-form .ck-label{display:none}@media screen and (max-width:600px){.ck.ck-link-form{flex-wrap:wrap}.ck.ck-link-form .ck-labeled-field-view{flex-basis:100%}.ck.ck-link-form .ck-button{flex-basis:50%}}.ck.ck-link-form_layout-vertical{display:block}.ck.ck-link-form_layout-vertical .ck-button.ck-button-cancel,.ck.ck-link-form_layout-vertical .ck-button.ck-button-save{margin-top:var(--ck-spacing-medium)}.ck.ck-link-form_layout-vertical{min-width:var(--ck-input-width);padding:0}.ck.ck-link-form_layout-vertical .ck-labeled-field-view{margin:var(--ck-spacing-large) var(--ck-spacing-large) var(--ck-spacing-small)}.ck.ck-link-form_layout-vertical .ck-labeled-field-view .ck-input-text{min-width:0;width:100%}.ck.ck-link-form_layout-vertical>.ck-button{border-radius:0;margin:0;padding:var(--ck-spacing-standard);width:50%}.ck.ck-link-form_layout-vertical>.ck-button:not(:focus){border-top:1px solid var(--ck-color-base-border)}[dir=ltr] .ck.ck-link-form_layout-vertical>.ck-button,[dir=rtl] .ck.ck-link-form_layout-vertical>.ck-button{margin-left:0}[dir=rtl] .ck.ck-link-form_layout-vertical>.ck-button:last-of-type{border-right:1px solid var(--ck-color-base-border)}.ck.ck-link-form_layout-vertical .ck.ck-list{margin:var(--ck-spacing-standard) var(--ck-spacing-large)}.ck.ck-link-form_layout-vertical .ck.ck-list .ck-button.ck-switchbutton{padding:0;width:100%}.ck.ck-link-form_layout-vertical .ck.ck-list .ck-button.ck-switchbutton:hover{background:none}",""]);const s=o},269:(e,t,i)=>{"use strict";i.d(t,{Z:()=>s});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,'.ck.ck-editor__editable a span.image-inline:after,.ck.ck-editor__editable figure.image>a:after{display:block;position:absolute}:root{--ck-link-image-indicator-icon-size:20;--ck-link-image-indicator-icon-is-visible:clamp(0px,100% - 50px,1px)}.ck.ck-editor__editable a span.image-inline:after,.ck.ck-editor__editable figure.image>a:after{background-color:rgba(0,0,0,.4);background-image:url("data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbD0iI2ZmZiIgZD0ibTExLjA3NyAxNSAuOTkxLTEuNDE2YS43NS43NSAwIDEgMSAxLjIyOS44NmwtMS4xNDggMS42NGEuNzQ4Ljc0OCAwIDAgMS0uMjE3LjIwNiA1LjI1MSA1LjI1MSAwIDAgMS04LjUwMy01Ljk1NS43NDEuNzQxIDAgMCAxIC4xMi0uMjc0bDEuMTQ3LTEuNjM5YS43NS43NSAwIDEgMSAxLjIyOC44Nkw0LjkzMyAxMC43bC4wMDYuMDAzYTMuNzUgMy43NSAwIDAgMCA2LjEzMiA0LjI5NGwuMDA2LjAwNHptNS40OTQtNS4zMzVhLjc0OC43NDggMCAwIDEtLjEyLjI3NGwtMS4xNDcgMS42MzlhLjc1Ljc1IDAgMSAxLTEuMjI4LS44NmwuODYtMS4yM2EzLjc1IDMuNzUgMCAwIDAtNi4xNDQtNC4zMDFsLS44NiAxLjIyOWEuNzUuNzUgMCAwIDEtMS4yMjktLjg2bDEuMTQ4LTEuNjRhLjc0OC43NDggMCAwIDEgLjIxNy0uMjA2IDUuMjUxIDUuMjUxIDAgMCAxIDguNTAzIDUuOTU1em0tNC41NjMtMi41MzJhLjc1Ljc1IDAgMCAxIC4xODQgMS4wNDVsLTMuMTU1IDQuNTA1YS43NS43NSAwIDEgMS0xLjIyOS0uODZsMy4xNTUtNC41MDZhLjc1Ljc1IDAgMCAxIDEuMDQ1LS4xODR6Ii8+PC9zdmc+");background-position:50%;background-repeat:no-repeat;background-size:14px;border-radius:100%;content:"";height:calc(var(--ck-link-image-indicator-icon-is-visible)*var(--ck-link-image-indicator-icon-size));overflow:hidden;right:min(var(--ck-spacing-medium),6%);top:min(var(--ck-spacing-medium),6%);width:calc(var(--ck-link-image-indicator-icon-is-visible)*var(--ck-link-image-indicator-icon-size))}',""]);const s=o},764:(e,t,i)=>{"use strict";i.d(t,{Z:()=>s});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,'.ck-vertical-form .ck-button:after{bottom:-1px;content:"";position:absolute;right:-1px;top:-1px;width:0;z-index:1}.ck-vertical-form .ck-button:focus:after{display:none}@media screen and (max-width:600px){.ck.ck-responsive-form .ck-button:after{bottom:-1px;content:"";position:absolute;right:-1px;top:-1px;width:0;z-index:1}.ck.ck-responsive-form .ck-button:focus:after{display:none}}.ck-vertical-form>.ck-button:nth-last-child(2):after{border-right:1px solid var(--ck-color-base-border)}.ck.ck-responsive-form{padding:var(--ck-spacing-large)}.ck.ck-responsive-form:focus{outline:none}[dir=ltr] .ck.ck-responsive-form>:not(:first-child),[dir=rtl] .ck.ck-responsive-form>:not(:last-child){margin-left:var(--ck-spacing-standard)}@media screen and (max-width:600px){.ck.ck-responsive-form{padding:0;width:calc(var(--ck-input-width)*.8)}.ck.ck-responsive-form .ck-labeled-field-view{margin:var(--ck-spacing-large) var(--ck-spacing-large) 0}.ck.ck-responsive-form .ck-labeled-field-view .ck-input-text{min-width:0;width:100%}.ck.ck-responsive-form .ck-labeled-field-view .ck-labeled-field-view__error{white-space:normal}.ck.ck-responsive-form>.ck-button:nth-last-child(2):after{border-right:1px solid var(--ck-color-base-border)}.ck.ck-responsive-form>.ck-button:last-child,.ck.ck-responsive-form>.ck-button:nth-last-child(2){border-radius:0;margin-top:var(--ck-spacing-large);padding:var(--ck-spacing-standard)}.ck.ck-responsive-form>.ck-button:last-child:not(:focus),.ck.ck-responsive-form>.ck-button:nth-last-child(2):not(:focus){border-top:1px solid var(--ck-color-base-border)}[dir=ltr] .ck.ck-responsive-form>.ck-button:last-child,[dir=ltr] .ck.ck-responsive-form>.ck-button:nth-last-child(2),[dir=rtl] .ck.ck-responsive-form>.ck-button:last-child,[dir=rtl] .ck.ck-responsive-form>.ck-button:nth-last-child(2){margin-left:0}[dir=rtl] .ck.ck-responsive-form>.ck-button:last-child:last-of-type,[dir=rtl] .ck.ck-responsive-form>.ck-button:nth-last-child(2):last-of-type{border-right:1px solid var(--ck-color-base-border)}}',""]);const s=o},609:e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var i=e(t);return t[2]?"@media ".concat(t[2]," {").concat(i,"}"):i})).join("")},t.i=function(e,i,n){"string"==typeof e&&(e=[[null,e,""]]);var o={};if(n)for(var s=0;s<this.length;s++){var r=this[s][0];null!=r&&(o[r]=!0)}for(var a=0;a<e.length;a++){var c=[].concat(e[a]);n&&o[c[0]]||(i&&(c[2]?c[2]="".concat(i," and ").concat(c[2]):c[2]=i),t.push(c))}},t}},62:(e,t,i)=>{"use strict";var n,o=function(){return void 0===n&&(n=Boolean(window&&document&&document.all&&!window.atob)),n},s=function(){var e={};return function(t){if(void 0===e[t]){var i=document.querySelector(t);if(window.HTMLIFrameElement&&i instanceof window.HTMLIFrameElement)try{i=i.contentDocument.head}catch(e){i=null}e[t]=i}return e[t]}}(),r=[];function a(e){for(var t=-1,i=0;i<r.length;i++)if(r[i].identifier===e){t=i;break}return t}function c(e,t){for(var i={},n=[],o=0;o<e.length;o++){var s=e[o],c=t.base?s[0]+t.base:s[0],l=i[c]||0,u="".concat(c," ").concat(l);i[c]=l+1;var d=a(u),k={css:s[1],media:s[2],sourceMap:s[3]};-1!==d?(r[d].references++,r[d].updater(k)):r.push({identifier:u,updater:g(k,t),references:1}),n.push(u)}return n}function l(e){var t=document.createElement("style"),n=e.attributes||{};if(void 0===n.nonce){var o=i.nc;o&&(n.nonce=o)}if(Object.keys(n).forEach((function(e){t.setAttribute(e,n[e])})),"function"==typeof e.insert)e.insert(t);else{var r=s(e.insert||"head");if(!r)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");r.appendChild(t)}return t}var u,d=(u=[],function(e,t){return u[e]=t,u.filter(Boolean).join("\n")});function k(e,t,i,n){var o=i?"":n.media?"@media ".concat(n.media," {").concat(n.css,"}"):n.css;if(e.styleSheet)e.styleSheet.cssText=d(t,o);else{var s=document.createTextNode(o),r=e.childNodes;r[t]&&e.removeChild(r[t]),r.length?e.insertBefore(s,r[t]):e.appendChild(s)}}function h(e,t,i){var n=i.css,o=i.media,s=i.sourceMap;if(o?e.setAttribute("media",o):e.removeAttribute("media"),s&&"undefined"!=typeof btoa&&(n+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(s))))," */")),e.styleSheet)e.styleSheet.cssText=n;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(n))}}var f=null,m=0;function g(e,t){var i,n,o;if(t.singleton){var s=m++;i=f||(f=l(t)),n=k.bind(null,i,s,!1),o=k.bind(null,i,s,!0)}else i=l(t),n=h.bind(null,i,t),o=function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(i)};return n(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;n(e=t)}else o()}}e.exports=function(e,t){(t=t||{}).singleton||"boolean"==typeof t.singleton||(t.singleton=o());var i=c(e=e||[],t);return function(e){if(e=e||[],"[object Array]"===Object.prototype.toString.call(e)){for(var n=0;n<i.length;n++){var o=a(i[n]);r[o].references--}for(var s=c(e,t),l=0;l<i.length;l++){var u=a(i[l]);0===r[u].references&&(r[u].updater(),r.splice(u,1))}i=s}}}},945:(e,t,i)=>{e.exports=i(79)("./src/clipboard.js")},704:(e,t,i)=>{e.exports=i(79)("./src/core.js")},492:(e,t,i)=>{e.exports=i(79)("./src/engine.js")},181:(e,t,i)=>{e.exports=i(79)("./src/typing.js")},273:(e,t,i)=>{e.exports=i(79)("./src/ui.js")},209:(e,t,i)=>{e.exports=i(79)("./src/utils.js")},995:(e,t,i)=>{e.exports=i(79)("./src/widget.js")},79:e=>{"use strict";e.exports=CKEditor5.dll}},t={};function i(n){var o=t[n];if(void 0!==o)return o.exports;var s=t[n]={id:n,exports:{}};return e[n](s,s.exports,i),s.exports}i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.nc=void 0;var n={};(()=>{"use strict";i.r(n),i.d(n,{AutoLink:()=>Ce,Link:()=>Me,LinkEditing:()=>ke,LinkImage:()=>Pe,LinkImageEditing:()=>je,LinkImageUI:()=>He,LinkUI:()=>Ee});var e=i(704),t=i(492),o=i(181),s=i(945),r=i(209);class a{constructor(){this._definitions=new Set}get length(){return this._definitions.size}add(e){Array.isArray(e)?e.forEach((e=>this._definitions.add(e))):this._definitions.add(e)}getDispatcher(){return e=>{e.on("attribute:linkHref",((e,t,i)=>{if(!i.consumable.test(t.item,"attribute:linkHref"))return;if(!t.item.is("selection")&&!i.schema.isInline(t.item))return;const n=i.writer,o=n.document.selection;for(const e of this._definitions){const s=n.createAttributeElement("a",e.attributes,{priority:5});e.classes&&n.addClass(e.classes,s);for(const t in e.styles)n.setStyle(t,e.styles[t],s);n.setCustomProperty("link",!0,s),e.callback(t.attributeNewValue)?t.item.is("selection")?n.wrap(o.getFirstRange(),s):n.wrap(i.mapper.toViewRange(t.range),s):n.unwrap(i.mapper.toViewRange(t.range),s)}}),{priority:"high"})}}getDispatcherForLinkedImage(){return e=>{e.on("attribute:linkHref:imageBlock",((e,t,{writer:i,mapper:n})=>{const o=n.toViewElement(t.item),s=Array.from(o.getChildren()).find((e=>"a"===e.name));for(const e of this._definitions){const n=(0,r.toMap)(e.attributes);if(e.callback(t.attributeNewValue)){for(const[e,t]of n)"class"===e?i.addClass(t,s):i.setAttribute(e,t,s);e.classes&&i.addClass(e.classes,s);for(const t in e.styles)i.setStyle(t,e.styles[t],s)}else{for(const[e,t]of n)"class"===e?i.removeClass(t,s):i.removeAttribute(e,s);e.classes&&i.removeClass(e.classes,s);for(const t in e.styles)i.removeStyle(t,s)}}}))}}}const c=function(e,t,i){var n=-1,o=e.length;t<0&&(t=-t>o?0:o+t),(i=i>o?o:i)<0&&(i+=o),o=t>i?0:i-t>>>0,t>>>=0;for(var s=Array(o);++n<o;)s[n]=e[n+t];return s};const l=function(e,t,i){var n=e.length;return i=void 0===i?n:i,!t&&i>=n?e:c(e,t,i)};var u=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");const d=function(e){return u.test(e)};const k=function(e){return e.split("")};var h="[\\ud800-\\udfff]",f="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",m="\\ud83c[\\udffb-\\udfff]",g="[^\\ud800-\\udfff]",b="(?:\\ud83c[\\udde6-\\uddff]){2}",p="[\\ud800-\\udbff][\\udc00-\\udfff]",w="(?:"+f+"|"+m+")"+"?",v="[\\ufe0e\\ufe0f]?",_=v+w+("(?:\\u200d(?:"+[g,b,p].join("|")+")"+v+w+")*"),y="(?:"+[g+f+"?",f,b,p,h].join("|")+")",A=RegExp(m+"(?="+m+")|"+y+_,"g");const x=function(e){return e.match(A)||[]};const I=function(e){return d(e)?x(e):k(e)};const S="object"==typeof global&&global&&global.Object===Object&&global;var T="object"==typeof self&&self&&self.Object===Object&&self;const E=(S||T||Function("return this")()).Symbol;const V=function(e,t){for(var i=-1,n=null==e?0:e.length,o=Array(n);++i<n;)o[i]=t(e[i],i,e);return o};const L=Array.isArray;var C=Object.prototype,D=C.hasOwnProperty,M=C.toString,j=E?E.toStringTag:void 0;const B=function(e){var t=D.call(e,j),i=e[j];try{e[j]=void 0;var n=!0}catch(e){}var o=M.call(e);return n&&(t?e[j]=i:delete e[j]),o};var N=Object.prototype.toString;const H=function(e){return N.call(e)};var O=E?E.toStringTag:void 0;const U=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":O&&O in Object(e)?B(e):H(e)};const P=function(e){return null!=e&&"object"==typeof e};const F=function(e){return"symbol"==typeof e||P(e)&&"[object Symbol]"==U(e)};var R=E?E.prototype:void 0,z=R?R.toString:void 0;const Z=function e(t){if("string"==typeof t)return t;if(L(t))return V(t,e)+"";if(F(t))return z?z.call(t):"";var i=t+"";return"0"==i&&1/t==-Infinity?"-0":i};const q=function(e){return null==e?"":Z(e)};const K=function(e){return function(t){t=q(t);var i=d(t)?I(t):void 0,n=i?i[0]:t.charAt(0),o=i?l(i,1).join(""):t.slice(1);return n[e]()+o}}("toUpperCase"),Q=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,$=/^(?:(?:https?|ftps?|mailto):|[^a-z]|[a-z+.-]+(?:[^a-z+.:-]|$))/i,W=/^[\S]+@((?![-_])(?:[-\w\u00a1-\uffff]{0,63}[^-_]\.))+(?:[a-z\u00a1-\uffff]{2,})$/i,Y=/^((\w+:(\/{2,})?)|(\W))/i,G="Ctrl+K";function J(e,{writer:t}){const i=t.createAttributeElement("a",{href:e},{priority:5});return t.setCustomProperty("link",!0,i),i}function X(e){return function(e){return e.replace(Q,"").match($)}(e=String(e))?e:"#"}function ee(e,t){return!!e&&t.checkAttribute(e.name,"linkHref")}function te(e,t){const i=(n=e,W.test(n)?"mailto:":t);var n;const o=!!i&&!Y.test(e);return e&&o?i+e:e}function ie(e){window.open(e,"_blank","noopener")}class ne extends e.Command{constructor(e){super(e),this.manualDecorators=new r.Collection,this.automaticDecorators=new a}restoreManualDecoratorStates(){for(const e of this.manualDecorators)e.value=this._getDecoratorStateFromModel(e.id)}refresh(){const e=this.editor.model,t=e.document.selection,i=t.getSelectedElement()||(0,r.first)(t.getSelectedBlocks());ee(i,e.schema)?(this.value=i.getAttribute("linkHref"),this.isEnabled=e.schema.checkAttribute(i,"linkHref")):(this.value=t.getAttribute("linkHref"),this.isEnabled=e.schema.checkAttributeInSelection(t,"linkHref"));for(const e of this.manualDecorators)e.value=this._getDecoratorStateFromModel(e.id)}execute(e,t={}){const i=this.editor.model,n=i.document.selection,s=[],a=[];for(const e in t)t[e]?s.push(e):a.push(e);i.change((t=>{if(n.isCollapsed){const c=n.getFirstPosition();if(n.hasAttribute("linkHref")){const r=(0,o.findAttributeRange)(c,"linkHref",n.getAttribute("linkHref"),i);t.setAttribute("linkHref",e,r),s.forEach((e=>{t.setAttribute(e,!0,r)})),a.forEach((e=>{t.removeAttribute(e,r)})),t.setSelection(t.createPositionAfter(r.end.nodeBefore))}else if(""!==e){const o=(0,r.toMap)(n.getAttributes());o.set("linkHref",e),s.forEach((e=>{o.set(e,!0)}));const{end:a}=i.insertContent(t.createText(e,o),c);t.setSelection(a)}["linkHref",...s,...a].forEach((e=>{t.removeSelectionAttribute(e)}))}else{const o=i.schema.getValidRanges(n.getRanges(),"linkHref"),r=[];for(const e of n.getSelectedBlocks())i.schema.checkAttribute(e,"linkHref")&&r.push(t.createRangeOn(e));const c=r.slice();for(const e of o)this._isRangeToUpdate(e,r)&&c.push(e);for(const i of c)t.setAttribute("linkHref",e,i),s.forEach((e=>{t.setAttribute(e,!0,i)})),a.forEach((e=>{t.removeAttribute(e,i)}))}}))}_getDecoratorStateFromModel(e){const t=this.editor.model,i=t.document.selection,n=i.getSelectedElement();return ee(n,t.schema)?n.getAttribute(e):i.getAttribute(e)}_isRangeToUpdate(e,t){for(const i of t)if(i.containsRange(e))return!1;return!0}}class oe extends e.Command{refresh(){const e=this.editor.model,t=e.document.selection,i=t.getSelectedElement();ee(i,e.schema)?this.isEnabled=e.schema.checkAttribute(i,"linkHref"):this.isEnabled=e.schema.checkAttributeInSelection(t,"linkHref")}execute(){const e=this.editor,t=this.editor.model,i=t.document.selection,n=e.commands.get("link");t.change((e=>{const s=i.isCollapsed?[(0,o.findAttributeRange)(i.getFirstPosition(),"linkHref",i.getAttribute("linkHref"),t)]:t.schema.getValidRanges(i.getRanges(),"linkHref");for(const t of s)if(e.removeAttribute("linkHref",t),n)for(const i of n.manualDecorators)e.removeAttribute(i.id,t)}))}}class se{constructor({id:e,label:t,attributes:i,classes:n,styles:o,defaultValue:s}){this.id=e,this.set("value"),this.defaultValue=s,this.label=t,this.attributes=i,this.classes=n,this.styles=o}_createPattern(){return{attributes:this.attributes,classes:this.classes,styles:this.styles}}}(0,r.mix)(se,r.ObservableMixin);var re=i(62),ae=i.n(re),ce=i(23),le={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};ae()(ce.Z,le);ce.Z.locals;const ue="automatic",de=/^(https?:)?\/\//;class ke extends e.Plugin{static get pluginName(){return"LinkEditing"}static get requires(){return[o.TwoStepCaretMovement,o.Input,s.ClipboardPipeline]}constructor(e){super(e),e.config.define("link",{addTargetToExternalLinks:!1})}init(){const e=this.editor;e.model.schema.extend("$text",{allowAttributes:"linkHref"}),e.conversion.for("dataDowncast").attributeToElement({model:"linkHref",view:J}),e.conversion.for("editingDowncast").attributeToElement({model:"linkHref",view:(e,t)=>J(X(e),t)}),e.conversion.for("upcast").elementToAttribute({view:{name:"a",attributes:{href:!0}},model:{key:"linkHref",value:e=>e.getAttribute("href")}}),e.commands.add("link",new ne(e)),e.commands.add("unlink",new oe(e));const t=function(e,t){const i={"Open in a new tab":e("Open in a new tab"),Downloadable:e("Downloadable")};return t.forEach((e=>(e.label&&i[e.label]&&(e.label=i[e.label]),e))),t}(e.t,function(e){const t=[];if(e)for(const[i,n]of Object.entries(e)){const e=Object.assign({},n,{id:`link${K(i)}`});t.push(e)}return t}(e.config.get("link.decorators")));this._enableAutomaticDecorators(t.filter((e=>e.mode===ue))),this._enableManualDecorators(t.filter((e=>"manual"===e.mode)));e.plugins.get(o.TwoStepCaretMovement).registerAttribute("linkHref"),(0,o.inlineHighlight)(e,"linkHref","a","ck-link_selected"),this._enableLinkOpen(),this._enableInsertContentSelectionAttributesFixer(),this._enableClickingAfterLink(),this._enableTypingOverLink(),this._handleDeleteContentAfterLink()}_enableAutomaticDecorators(e){const t=this.editor,i=t.commands.get("link").automaticDecorators;t.config.get("link.addTargetToExternalLinks")&&i.add({id:"linkIsExternal",mode:ue,callback:e=>de.test(e),attributes:{target:"_blank",rel:"noopener noreferrer"}}),i.add(e),i.length&&t.conversion.for("downcast").add(i.getDispatcher())}_enableManualDecorators(e){if(!e.length)return;const t=this.editor,i=t.commands.get("link").manualDecorators;e.forEach((e=>{t.model.schema.extend("$text",{allowAttributes:e.id}),e=new se(e),i.add(e),t.conversion.for("downcast").attributeToElement({model:e.id,view:(t,{writer:i,schema:n},{item:o})=>{if((o.is("selection")||n.isInline(o))&&t){const t=i.createAttributeElement("a",e.attributes,{priority:5});e.classes&&i.addClass(e.classes,t);for(const n in e.styles)i.setStyle(n,e.styles[n],t);return i.setCustomProperty("link",!0,t),t}}}),t.conversion.for("upcast").elementToAttribute({view:{name:"a",...e._createPattern()},model:{key:e.id}})}))}_enableLinkOpen(){const e=this.editor,t=e.editing.view.document,i=e.model.document;this.listenTo(t,"click",((e,t)=>{if(!(r.env.isMac?t.domEvent.metaKey:t.domEvent.ctrlKey))return;let i=t.domTarget;if("a"!=i.tagName.toLowerCase()&&(i=i.closest("a")),!i)return;const n=i.getAttribute("href");n&&(e.stop(),t.preventDefault(),ie(n))}),{context:"$capture"}),this.listenTo(t,"enter",((e,t)=>{const n=i.selection,o=n.getSelectedElement(),s=o?o.getAttribute("linkHref"):n.getAttribute("linkHref");s&&t.domEvent.altKey&&(e.stop(),ie(s))}),{context:"a"})}_enableInsertContentSelectionAttributesFixer(){const e=this.editor.model,t=e.document.selection;this.listenTo(e,"insertContent",(()=>{const i=t.anchor.nodeBefore,n=t.anchor.nodeAfter;t.hasAttribute("linkHref")&&i&&i.hasAttribute("linkHref")&&(n&&n.hasAttribute("linkHref")||e.change((t=>{he(t,me(e.schema))})))}),{priority:"low"})}_enableClickingAfterLink(){const e=this.editor,i=e.model;e.editing.view.addObserver(t.MouseObserver);let n=!1;this.listenTo(e.editing.view.document,"mousedown",(()=>{n=!0})),this.listenTo(e.editing.view.document,"selectionChange",(()=>{if(!n)return;n=!1;const e=i.document.selection;if(!e.isCollapsed)return;if(!e.hasAttribute("linkHref"))return;const t=e.getFirstPosition(),s=(0,o.findAttributeRange)(t,"linkHref",e.getAttribute("linkHref"),i);(t.isTouching(s.start)||t.isTouching(s.end))&&i.change((e=>{he(e,me(i.schema))}))}))}_enableTypingOverLink(){const e=this.editor,t=e.editing.view;let i,n;this.listenTo(t.document,"delete",(()=>{n=!0}),{priority:"high"}),this.listenTo(e.model,"deleteContent",(()=>{const t=e.model.document.selection;t.isCollapsed||(n?n=!1:fe(e)&&function(e){const t=e.document.selection,i=t.getFirstPosition(),n=t.getLastPosition(),s=i.nodeAfter;if(!s)return!1;if(!s.is("$text"))return!1;if(!s.hasAttribute("linkHref"))return!1;const r=n.textNode||n.nodeBefore;if(s===r)return!0;return(0,o.findAttributeRange)(i,"linkHref",s.getAttribute("linkHref"),e).containsRange(e.createRange(i,n),!0)}(e.model)&&(i=t.getAttributes()))}),{priority:"high"}),this.listenTo(e.model,"insertContent",((t,[o])=>{n=!1,fe(e)&&i&&(e.model.change((e=>{for(const[t,n]of i)e.setAttribute(t,n,o)})),i=null)}),{priority:"high"})}_handleDeleteContentAfterLink(){const e=this.editor,t=e.model,i=t.document.selection,n=e.editing.view;let s=!1,a=!1;this.listenTo(n.document,"delete",((e,t)=>{a=t.domEvent.keyCode===r.keyCodes.backspace}),{priority:"high"}),this.listenTo(t,"deleteContent",(()=>{s=!1;const e=i.getFirstPosition(),n=i.getAttribute("linkHref");if(!n)return;const r=(0,o.findAttributeRange)(e,"linkHref",n,t);s=r.containsPosition(e)||r.end.isEqual(e)}),{priority:"high"}),this.listenTo(t,"deleteContent",(()=>{a&&(a=!1,s||e.model.enqueueChange((e=>{he(e,me(t.schema))})))}),{priority:"low"})}}function he(e,t){e.removeSelectionAttribute("linkHref");for(const i of t)e.removeSelectionAttribute(i)}function fe(e){return e.model.change((e=>e.batch)).isTyping}function me(e){return e.getDefinition("$text").allowAttributes.filter((e=>e.startsWith("link")))}var ge=i(273),be=i(995),pe=i(764),we={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};ae()(pe.Z,we);pe.Z.locals;var ve=i(871),_e={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};ae()(ve.Z,_e);ve.Z.locals;class ye extends ge.View{constructor(t,i){super(t);const n=t.t;this.focusTracker=new r.FocusTracker,this.keystrokes=new r.KeystrokeHandler,this.urlInputView=this._createUrlInput(),this.saveButtonView=this._createButton(n("Save"),e.icons.check,"ck-button-save"),this.saveButtonView.type="submit",this.cancelButtonView=this._createButton(n("Cancel"),e.icons.cancel,"ck-button-cancel","cancel"),this._manualDecoratorSwitches=this._createManualDecoratorSwitches(i),this.children=this._createFormChildren(i.manualDecorators),this._focusables=new ge.ViewCollection,this._focusCycler=new ge.FocusCycler({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}});const o=["ck","ck-link-form","ck-responsive-form"];i.manualDecorators.length&&o.push("ck-link-form_layout-vertical","ck-vertical-form"),this.setTemplate({tag:"form",attributes:{class:o,tabindex:"-1"},children:this.children}),(0,ge.injectCssTransitionDisabler)(this)}getDecoratorSwitchesState(){return Array.from(this._manualDecoratorSwitches).reduce(((e,t)=>(e[t.name]=t.isOn,e)),{})}render(){super.render(),(0,ge.submitHandler)({view:this});[this.urlInputView,...this._manualDecoratorSwitches,this.saveButtonView,this.cancelButtonView].forEach((e=>{this._focusables.add(e),this.focusTracker.add(e.element)})),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}_createUrlInput(){const e=this.locale.t,t=new ge.LabeledFieldView(this.locale,ge.createLabeledInputText);return t.label=e("Link URL"),t}_createButton(e,t,i,n){const o=new ge.ButtonView(this.locale);return o.set({label:e,icon:t,tooltip:!0}),o.extendTemplate({attributes:{class:i}}),n&&o.delegate("execute").to(this,n),o}_createManualDecoratorSwitches(e){const t=this.createCollection();for(const i of e.manualDecorators){const n=new ge.SwitchButtonView(this.locale);n.set({name:i.id,label:i.label,withText:!0}),n.bind("isOn").toMany([i,e],"value",((e,t)=>void 0===t&&void 0===e?i.defaultValue:e)),n.on("execute",(()=>{i.set("value",!n.isOn)})),t.add(n)}return t}_createFormChildren(e){const t=this.createCollection();if(t.add(this.urlInputView),e.length){const e=new ge.View;e.setTemplate({tag:"ul",children:this._manualDecoratorSwitches.map((e=>({tag:"li",children:[e],attributes:{class:["ck","ck-list__item"]}}))),attributes:{class:["ck","ck-reset","ck-list"]}}),t.add(e)}return t.add(this.saveButtonView),t.add(this.cancelButtonView),t}}var Ae=i(952),xe={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};ae()(Ae.Z,xe);Ae.Z.locals;class Ie extends ge.View{constructor(t){super(t);const i=t.t;this.focusTracker=new r.FocusTracker,this.keystrokes=new r.KeystrokeHandler,this.previewButtonView=this._createPreviewButton(),this.unlinkButtonView=this._createButton(i("Unlink"),'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m11.077 15 .991-1.416a.75.75 0 1 1 1.229.86l-1.148 1.64a.748.748 0 0 1-.217.206 5.251 5.251 0 0 1-8.503-5.955.741.741 0 0 1 .12-.274l1.147-1.639a.75.75 0 1 1 1.228.86L4.933 10.7l.006.003a3.75 3.75 0 0 0 6.132 4.294l.006.004zm5.494-5.335a.748.748 0 0 1-.12.274l-1.147 1.639a.75.75 0 1 1-1.228-.86l.86-1.23a3.75 3.75 0 0 0-6.144-4.301l-.86 1.229a.75.75 0 0 1-1.229-.86l1.148-1.64a.748.748 0 0 1 .217-.206 5.251 5.251 0 0 1 8.503 5.955zm-4.563-2.532a.75.75 0 0 1 .184 1.045l-3.155 4.505a.75.75 0 1 1-1.229-.86l3.155-4.506a.75.75 0 0 1 1.045-.184zm4.919 10.562-1.414 1.414a.75.75 0 1 1-1.06-1.06l1.414-1.415-1.415-1.414a.75.75 0 0 1 1.061-1.06l1.414 1.414 1.414-1.415a.75.75 0 0 1 1.061 1.061l-1.414 1.414 1.414 1.415a.75.75 0 0 1-1.06 1.06l-1.415-1.414z"/></svg>',"unlink"),this.editButtonView=this._createButton(i("Edit link"),e.icons.pencil,"edit"),this.set("href"),this._focusables=new ge.ViewCollection,this._focusCycler=new ge.FocusCycler({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-link-actions","ck-responsive-form"],tabindex:"-1"},children:[this.previewButtonView,this.editButtonView,this.unlinkButtonView]})}render(){super.render();[this.previewButtonView,this.editButtonView,this.unlinkButtonView].forEach((e=>{this._focusables.add(e),this.focusTracker.add(e.element)})),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}_createButton(e,t,i){const n=new ge.ButtonView(this.locale);return n.set({label:e,icon:t,tooltip:!0}),n.delegate("execute").to(this,i),n}_createPreviewButton(){const e=new ge.ButtonView(this.locale),t=this.bindTemplate,i=this.t;return e.set({withText:!0,tooltip:i("Open link in new tab")}),e.extendTemplate({attributes:{class:["ck","ck-link-actions__preview"],href:t.to("href",(e=>e&&X(e))),target:"_blank",rel:"noopener noreferrer"}}),e.bind("label").to(this,"href",(e=>e||i("This link has no URL"))),e.bind("isEnabled").to(this,"href",(e=>!!e)),e.template.tag="a",e.template.eventListeners={},e}}const Se='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m11.077 15 .991-1.416a.75.75 0 1 1 1.229.86l-1.148 1.64a.748.748 0 0 1-.217.206 5.251 5.251 0 0 1-8.503-5.955.741.741 0 0 1 .12-.274l1.147-1.639a.75.75 0 1 1 1.228.86L4.933 10.7l.006.003a3.75 3.75 0 0 0 6.132 4.294l.006.004zm5.494-5.335a.748.748 0 0 1-.12.274l-1.147 1.639a.75.75 0 1 1-1.228-.86l.86-1.23a3.75 3.75 0 0 0-6.144-4.301l-.86 1.229a.75.75 0 0 1-1.229-.86l1.148-1.64a.748.748 0 0 1 .217-.206 5.251 5.251 0 0 1 8.503 5.955zm-4.563-2.532a.75.75 0 0 1 .184 1.045l-3.155 4.505a.75.75 0 1 1-1.229-.86l3.155-4.506a.75.75 0 0 1 1.045-.184z"/></svg>',Te="link-ui";class Ee extends e.Plugin{static get requires(){return[ge.ContextualBalloon]}static get pluginName(){return"LinkUI"}init(){const e=this.editor;e.editing.view.addObserver(t.ClickObserver),this.actionsView=this._createActionsView(),this.formView=this._createFormView(),this._balloon=e.plugins.get(ge.ContextualBalloon),this._createToolbarLinkButton(),this._enableUserBalloonInteractions(),e.conversion.for("editingDowncast").markerToHighlight({model:Te,view:{classes:["ck-fake-link-selection"]}}),e.conversion.for("editingDowncast").markerToElement({model:Te,view:{name:"span",classes:["ck-fake-link-selection","ck-fake-link-selection_collapsed"]}})}destroy(){super.destroy(),this.formView.destroy()}_createActionsView(){const e=this.editor,t=new Ie(e.locale),i=e.commands.get("link"),n=e.commands.get("unlink");return t.bind("href").to(i,"value"),t.editButtonView.bind("isEnabled").to(i),t.unlinkButtonView.bind("isEnabled").to(n),this.listenTo(t,"edit",(()=>{this._addFormView()})),this.listenTo(t,"unlink",(()=>{e.execute("unlink"),this._hideUI()})),t.keystrokes.set("Esc",((e,t)=>{this._hideUI(),t()})),t.keystrokes.set(G,((e,t)=>{this._addFormView(),t()})),t}_createFormView(){const e=this.editor,t=e.commands.get("link"),i=e.config.get("link.defaultProtocol"),n=new ye(e.locale,t);return n.urlInputView.fieldView.bind("value").to(t,"value"),n.urlInputView.bind("isReadOnly").to(t,"isEnabled",(e=>!e)),n.saveButtonView.bind("isEnabled").to(t),this.listenTo(n,"submit",(()=>{const{value:t}=n.urlInputView.fieldView.element,o=te(t,i);e.execute("link",o,n.getDecoratorSwitchesState()),this._closeFormView()})),this.listenTo(n,"cancel",(()=>{this._closeFormView()})),n.keystrokes.set("Esc",((e,t)=>{this._closeFormView(),t()})),n}_createToolbarLinkButton(){const e=this.editor,t=e.commands.get("link"),i=e.t;e.keystrokes.set(G,((e,i)=>{i(),t.isEnabled&&this._showUI(!0)})),e.ui.componentFactory.add("link",(e=>{const n=new ge.ButtonView(e);return n.isEnabled=!0,n.label=i("Link"),n.icon=Se,n.keystroke=G,n.tooltip=!0,n.isToggleable=!0,n.bind("isEnabled").to(t,"isEnabled"),n.bind("isOn").to(t,"value",(e=>!!e)),this.listenTo(n,"execute",(()=>this._showUI(!0))),n}))}_enableUserBalloonInteractions(){const e=this.editor.editing.view.document;this.listenTo(e,"click",(()=>{this._getSelectedLinkElement()&&this._showUI()})),this.editor.keystrokes.set("Tab",((e,t)=>{this._areActionsVisible&&!this.actionsView.focusTracker.isFocused&&(this.actionsView.focus(),t())}),{priority:"high"}),this.editor.keystrokes.set("Esc",((e,t)=>{this._isUIVisible&&(this._hideUI(),t())})),(0,ge.clickOutsideHandler)({emitter:this.formView,activator:()=>this._isUIInPanel,contextElements:[this._balloon.view.element],callback:()=>this._hideUI()})}_addActionsView(){this._areActionsInPanel||this._balloon.add({view:this.actionsView,position:this._getBalloonPositionData()})}_addFormView(){if(this._isFormInPanel)return;const e=this.editor.commands.get("link");this.formView.disableCssTransitions(),this._balloon.add({view:this.formView,position:this._getBalloonPositionData()}),this._balloon.visibleView===this.formView&&this.formView.urlInputView.fieldView.select(),this.formView.enableCssTransitions(),this.formView.urlInputView.fieldView.element.value=e.value||""}_closeFormView(){const e=this.editor.commands.get("link");e.restoreManualDecoratorStates(),void 0!==e.value?this._removeFormView():this._hideUI()}_removeFormView(){this._isFormInPanel&&(this.formView.saveButtonView.focus(),this._balloon.remove(this.formView),this.editor.editing.view.focus(),this._hideFakeVisualSelection())}_showUI(e=!1){this._getSelectedLinkElement()?(this._areActionsVisible?this._addFormView():this._addActionsView(),e&&this._balloon.showStack("main")):(this._showFakeVisualSelection(),this._addActionsView(),e&&this._balloon.showStack("main"),this._addFormView()),this._startUpdatingUI()}_hideUI(){if(!this._isUIInPanel)return;const e=this.editor;this.stopListening(e.ui,"update"),this.stopListening(this._balloon,"change:visibleView"),e.editing.view.focus(),this._removeFormView(),this._balloon.remove(this.actionsView),this._hideFakeVisualSelection()}_startUpdatingUI(){const e=this.editor,t=e.editing.view.document;let i=this._getSelectedLinkElement(),n=s();const o=()=>{const e=this._getSelectedLinkElement(),t=s();i&&!e||!i&&t!==n?this._hideUI():this._isUIVisible&&this._balloon.updatePosition(this._getBalloonPositionData()),i=e,n=t};function s(){return t.selection.focus.getAncestors().reverse().find((e=>e.is("element")))}this.listenTo(e.ui,"update",o),this.listenTo(this._balloon,"change:visibleView",o)}get _isFormInPanel(){return this._balloon.hasView(this.formView)}get _areActionsInPanel(){return this._balloon.hasView(this.actionsView)}get _areActionsVisible(){return this._balloon.visibleView===this.actionsView}get _isUIInPanel(){return this._isFormInPanel||this._areActionsInPanel}get _isUIVisible(){return this._balloon.visibleView==this.formView||this._areActionsVisible}_getBalloonPositionData(){const e=this.editor.editing.view,t=this.editor.model,i=e.document;let n=null;if(t.markers.has(Te)){const t=Array.from(this.editor.editing.mapper.markerNameToElements(Te)),i=e.createRange(e.createPositionBefore(t[0]),e.createPositionAfter(t[t.length-1]));n=e.domConverter.viewRangeToDom(i)}else n=()=>{const t=this._getSelectedLinkElement();return t?e.domConverter.mapViewToDom(t):e.domConverter.viewRangeToDom(i.selection.getFirstRange())};return{target:n}}_getSelectedLinkElement(){const e=this.editor.editing.view,t=e.document.selection,i=t.getSelectedElement();if(t.isCollapsed||i&&(0,be.isWidget)(i))return Ve(t.getFirstPosition());{const i=t.getFirstRange().getTrimmed(),n=Ve(i.start),o=Ve(i.end);return n&&n==o&&e.createRangeIn(n).getTrimmed().isEqual(i)?n:null}}_showFakeVisualSelection(){const e=this.editor.model;e.change((t=>{const i=e.document.selection.getFirstRange();if(e.markers.has(Te))t.updateMarker(Te,{range:i});else if(i.start.isAtEnd){const n=i.start.getLastMatchingPosition((({item:t})=>!e.schema.isContent(t)),{boundaries:i});t.addMarker(Te,{usingOperation:!1,affectsData:!1,range:t.createRange(n,i.end)})}else t.addMarker(Te,{usingOperation:!1,affectsData:!1,range:i})}))}_hideFakeVisualSelection(){const e=this.editor.model;e.markers.has(Te)&&e.change((e=>{e.removeMarker(Te)}))}}function Ve(e){return e.getAncestors().find((e=>{return(t=e).is("attributeElement")&&!!t.getCustomProperty("link");var t}))}const Le=new RegExp("(^|\\s)(((?:(?:(?:https?|ftp):)?\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(((?!www\\.)|(www\\.))(?![-_])(?:[-_a-z0-9\\u00a1-\\uffff]{1,63}\\.)+(?:[a-z\\u00a1-\\uffff]{2,63})))(?::\\d{2,5})?(?:[/?#]\\S*)?)|((www.|(\\S+@))((?![-_])(?:[-_a-z0-9\\u00a1-\\uffff]{1,63}\\.))+(?:[a-z\\u00a1-\\uffff]{2,63})))$","i");class Ce extends e.Plugin{static get requires(){return[o.Delete]}static get pluginName(){return"AutoLink"}init(){const e=this.editor.model.document.selection;e.on("change:range",(()=>{this.isEnabled=!e.anchor.parent.is("element","codeBlock")})),this._enableTypingHandling()}afterInit(){this._enableEnterHandling(),this._enableShiftEnterHandling()}_enableTypingHandling(){const e=this.editor,t=new o.TextWatcher(e.model,(e=>{if(!function(e){return e.length>4&&" "===e[e.length-1]&&" "!==e[e.length-2]}(e))return;const t=De(e.substr(0,e.length-1));return t?{url:t}:void 0}));t.on("matched:data",((t,i)=>{const{batch:n,range:o,url:s}=i;if(!n.isTyping)return;const r=o.end.getShiftedBy(-1),a=r.getShiftedBy(-s.length),c=e.model.createRange(a,r);this._applyAutoLink(s,c)})),t.bind("isEnabled").to(this)}_enableEnterHandling(){const e=this.editor,t=e.model,i=e.commands.get("enter");i&&i.on("execute",(()=>{const e=t.document.selection.getFirstPosition();if(!e.parent.previousSibling)return;const i=t.createRangeIn(e.parent.previousSibling);this._checkAndApplyAutoLinkOnRange(i)}))}_enableShiftEnterHandling(){const e=this.editor,t=e.model,i=e.commands.get("shiftEnter");i&&i.on("execute",(()=>{const e=t.document.selection.getFirstPosition(),i=t.createRange(t.createPositionAt(e.parent,0),e.getShiftedBy(-1));this._checkAndApplyAutoLinkOnRange(i)}))}_checkAndApplyAutoLinkOnRange(e){const t=this.editor.model,{text:i,range:n}=(0,o.getLastTextLine)(e,t),s=De(i);if(s){const e=t.createRange(n.end.getShiftedBy(-s.length),n.end);this._applyAutoLink(s,e)}}_applyAutoLink(e,t){const i=this.editor.model,n=this.editor.plugins.get("Delete");this.isEnabled&&function(e,t){return t.schema.checkAttributeInSelection(t.createSelection(e),"linkHref")}(t,i)&&i.enqueueChange((o=>{const s=this.editor.config.get("link.defaultProtocol"),r=te(e,s);o.setAttribute("linkHref",r,t),i.enqueueChange((()=>{n.requestUndoOnBackspace()}))}))}}function De(e){const t=Le.exec(e);return t?t[2]:null}class Me extends e.Plugin{static get requires(){return[ke,Ee,Ce]}static get pluginName(){return"Link"}}class je extends e.Plugin{static get requires(){return["ImageEditing","ImageUtils",ke]}static get pluginName(){return"LinkImageEditing"}init(){const e=this.editor,t=e.model.schema;e.plugins.has("ImageBlockEditing")&&t.extend("imageBlock",{allowAttributes:["linkHref"]}),e.conversion.for("upcast").add(function(e){const t=e.plugins.has("ImageInlineEditing"),i=e.plugins.get("ImageUtils");return e=>{e.on("element:a",((e,n,o)=>{const s=n.viewItem,r=i.findViewImgElement(s);if(!r)return;const a=r.findAncestor((e=>i.isBlockImageView(e)));if(t&&!a)return;const c={attributes:["href"]};if(!o.consumable.consume(s,c))return;const l=s.getAttribute("href");if(!l)return;let u=n.modelCursor.parent;if(!u.is("element","imageBlock")){const e=o.convertItem(r,n.modelCursor);n.modelRange=e.modelRange,n.modelCursor=e.modelCursor,u=n.modelCursor.nodeBefore}u&&u.is("element","imageBlock")&&o.writer.setAttribute("linkHref",l,u)}),{priority:"high"})}}(e)),e.conversion.for("downcast").add(function(e){const t=e.plugins.get("ImageUtils");return e=>{e.on("attribute:linkHref:imageBlock",((e,i,n)=>{if(!n.consumable.consume(i.item,e.name))return;const o=n.mapper.toViewElement(i.item),s=n.writer,r=Array.from(o.getChildren()).find((e=>"a"===e.name)),a=t.findViewImgElement(o),c=a.parent.is("element","picture")?a.parent:a;if(r)i.attributeNewValue?s.setAttribute("href",i.attributeNewValue,r):(s.move(s.createRangeOn(c),s.createPositionAt(o,0)),s.remove(r));else{const e=s.createContainerElement("a",{href:i.attributeNewValue});s.insert(s.createPositionAt(o,0),e),s.move(s.createRangeOn(c),s.createPositionAt(e,0))}}),{priority:"high"})}}(e)),this._enableAutomaticDecorators(),this._enableManualDecorators()}_enableAutomaticDecorators(){const e=this.editor,t=e.commands.get("link").automaticDecorators;t.length&&e.conversion.for("downcast").add(t.getDispatcherForLinkedImage())}_enableManualDecorators(){const e=this.editor,t=e.commands.get("link");for(const i of t.manualDecorators)e.plugins.has("ImageBlockEditing")&&e.model.schema.extend("imageBlock",{allowAttributes:i.id}),e.plugins.has("ImageInlineEditing")&&e.model.schema.extend("imageInline",{allowAttributes:i.id}),e.conversion.for("downcast").add(Be(i)),e.conversion.for("upcast").add(Ne(e,i))}}function Be(e){return t=>{t.on(`attribute:${e.id}:imageBlock`,((t,i,n)=>{const o=n.mapper.toViewElement(i.item),s=Array.from(o.getChildren()).find((e=>"a"===e.name));if(s){for(const[t,i]of(0,r.toMap)(e.attributes))n.writer.setAttribute(t,i,s);e.classes&&n.writer.addClass(e.classes,s);for(const t in e.styles)n.writer.setStyle(t,e.styles[t],s)}}))}}function Ne(e,i){const n=e.plugins.has("ImageInlineEditing"),o=e.plugins.get("ImageUtils");return e=>{e.on("element:a",((e,s,r)=>{const a=s.viewItem,c=o.findViewImgElement(a);if(!c)return;const l=c.findAncestor((e=>o.isBlockImageView(e)));if(n&&!l)return;const u=new t.Matcher(i._createPattern()).match(a);if(!u)return;if(!r.consumable.consume(a,u.match))return;const d=s.modelCursor.nodeBefore||s.modelCursor.parent;r.writer.setAttribute(i.id,!0,d)}),{priority:"high"})}}class He extends e.Plugin{static get requires(){return[ke,Ee,"ImageBlockEditing"]}static get pluginName(){return"LinkImageUI"}init(){const e=this.editor,t=e.editing.view.document;this.listenTo(t,"click",((t,i)=>{this._isSelectedLinkedImage(e.model.document.selection)&&(i.preventDefault(),t.stop())}),{priority:"high"}),this._createToolbarLinkImageButton()}_createToolbarLinkImageButton(){const e=this.editor,t=e.t;e.ui.componentFactory.add("linkImage",(i=>{const n=new ge.ButtonView(i),o=e.plugins.get("LinkUI"),s=e.commands.get("link");return n.set({isEnabled:!0,label:t("Link image"),icon:Se,keystroke:G,tooltip:!0,isToggleable:!0}),n.bind("isEnabled").to(s,"isEnabled"),n.bind("isOn").to(s,"value",(e=>!!e)),this.listenTo(n,"execute",(()=>{this._isSelectedLinkedImage(e.model.document.selection)?o._addActionsView():o._showUI(!0)})),n}))}_isSelectedLinkedImage(e){const t=e.getSelectedElement();return this.editor.plugins.get("ImageUtils").isImage(t)&&t.hasAttribute("linkHref")}}var Oe=i(269),Ue={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};ae()(Oe.Z,Ue);Oe.Z.locals;class Pe extends e.Plugin{static get requires(){return[je,He]}static get pluginName(){return"LinkImage"}}})(),(window.CKEditor5=window.CKEditor5||{}).link=n})();
\ No newline at end of file
+ */(()=>{var e={23:(e,t,i)=>{"use strict";i.d(t,{Z:()=>r});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,".ck .ck-link_selected{background:var(--ck-color-link-selected-background)}.ck .ck-link_selected span.image-inline{outline:var(--ck-widget-outline-thickness) solid var(--ck-color-link-selected-background)}.ck .ck-fake-link-selection{background:var(--ck-color-link-fake-selection)}.ck .ck-fake-link-selection_collapsed{border-right:1px solid var(--ck-color-base-text);height:100%;margin-right:-1px;outline:1px solid hsla(0,0%,100%,.5)}",""]);const r=o},952:(e,t,i)=>{"use strict";i.d(t,{Z:()=>r});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,".ck.ck-link-actions{display:flex;flex-direction:row;flex-wrap:nowrap}.ck.ck-link-actions .ck-link-actions__preview{display:inline-block}.ck.ck-link-actions .ck-link-actions__preview .ck-button__label{overflow:hidden}@media screen and (max-width:600px){.ck.ck-link-actions{flex-wrap:wrap}.ck.ck-link-actions .ck-link-actions__preview{flex-basis:100%}.ck.ck-link-actions .ck-button:not(.ck-link-actions__preview){flex-basis:50%}}.ck.ck-link-actions .ck-button.ck-link-actions__preview{padding-left:0;padding-right:0}.ck.ck-link-actions .ck-button.ck-link-actions__preview .ck-button__label{color:var(--ck-color-link-default);cursor:pointer;max-width:var(--ck-input-width);min-width:3em;padding:0 var(--ck-spacing-medium);text-align:center;text-overflow:ellipsis}.ck.ck-link-actions .ck-button.ck-link-actions__preview .ck-button__label:hover{text-decoration:underline}.ck.ck-link-actions .ck-button.ck-link-actions__preview,.ck.ck-link-actions .ck-button.ck-link-actions__preview:active,.ck.ck-link-actions .ck-button.ck-link-actions__preview:focus,.ck.ck-link-actions .ck-button.ck-link-actions__preview:hover{background:none}.ck.ck-link-actions .ck-button.ck-link-actions__preview:active{box-shadow:none}.ck.ck-link-actions .ck-button.ck-link-actions__preview:focus .ck-button__label{text-decoration:underline}[dir=ltr] .ck.ck-link-actions .ck-button:not(:first-child),[dir=rtl] .ck.ck-link-actions .ck-button:not(:last-child){margin-left:var(--ck-spacing-standard)}@media screen and (max-width:600px){.ck.ck-link-actions .ck-button.ck-link-actions__preview{margin:var(--ck-spacing-standard) var(--ck-spacing-standard) 0}.ck.ck-link-actions .ck-button.ck-link-actions__preview .ck-button__label{max-width:100%;min-width:0}[dir=ltr] .ck.ck-link-actions .ck-button:not(.ck-link-actions__preview),[dir=rtl] .ck.ck-link-actions .ck-button:not(.ck-link-actions__preview){margin-left:0}}",""]);const r=o},871:(e,t,i)=>{"use strict";i.d(t,{Z:()=>r});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,".ck.ck-link-form{display:flex}.ck.ck-link-form .ck-label{display:none}@media screen and (max-width:600px){.ck.ck-link-form{flex-wrap:wrap}.ck.ck-link-form .ck-labeled-field-view{flex-basis:100%}.ck.ck-link-form .ck-button{flex-basis:50%}}.ck.ck-link-form_layout-vertical{display:block}.ck.ck-link-form_layout-vertical .ck-button.ck-button-cancel,.ck.ck-link-form_layout-vertical .ck-button.ck-button-save{margin-top:var(--ck-spacing-medium)}.ck.ck-link-form_layout-vertical{min-width:var(--ck-input-width);padding:0}.ck.ck-link-form_layout-vertical .ck-labeled-field-view{margin:var(--ck-spacing-large) var(--ck-spacing-large) var(--ck-spacing-small)}.ck.ck-link-form_layout-vertical .ck-labeled-field-view .ck-input-text{min-width:0;width:100%}.ck.ck-link-form_layout-vertical>.ck-button{border-radius:0;margin:0;padding:var(--ck-spacing-standard);width:50%}.ck.ck-link-form_layout-vertical>.ck-button:not(:focus){border-top:1px solid var(--ck-color-base-border)}[dir=ltr] .ck.ck-link-form_layout-vertical>.ck-button,[dir=rtl] .ck.ck-link-form_layout-vertical>.ck-button{margin-left:0}[dir=rtl] .ck.ck-link-form_layout-vertical>.ck-button:last-of-type{border-right:1px solid var(--ck-color-base-border)}.ck.ck-link-form_layout-vertical .ck.ck-list{margin:var(--ck-spacing-standard) var(--ck-spacing-large)}.ck.ck-link-form_layout-vertical .ck.ck-list .ck-button.ck-switchbutton{padding:0;width:100%}.ck.ck-link-form_layout-vertical .ck.ck-list .ck-button.ck-switchbutton:hover{background:none}",""]);const r=o},269:(e,t,i)=>{"use strict";i.d(t,{Z:()=>r});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,'.ck.ck-editor__editable a span.image-inline:after,.ck.ck-editor__editable figure.image>a:after{display:block;position:absolute}:root{--ck-link-image-indicator-icon-size:20;--ck-link-image-indicator-icon-is-visible:clamp(0px,100% - 50px,1px)}.ck.ck-editor__editable a span.image-inline:after,.ck.ck-editor__editable figure.image>a:after{background-color:rgba(0,0,0,.4);background-image:url("data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbD0iI2ZmZiIgZD0ibTExLjA3NyAxNSAuOTkxLTEuNDE2YS43NS43NSAwIDEgMSAxLjIyOS44NmwtMS4xNDggMS42NGEuNzQ4Ljc0OCAwIDAgMS0uMjE3LjIwNiA1LjI1MSA1LjI1MSAwIDAgMS04LjUwMy01Ljk1NS43NDEuNzQxIDAgMCAxIC4xMi0uMjc0bDEuMTQ3LTEuNjM5YS43NS43NSAwIDEgMSAxLjIyOC44Nkw0LjkzMyAxMC43bC4wMDYuMDAzYTMuNzUgMy43NSAwIDAgMCA2LjEzMiA0LjI5NGwuMDA2LjAwNHptNS40OTQtNS4zMzVhLjc0OC43NDggMCAwIDEtLjEyLjI3NGwtMS4xNDcgMS42MzlhLjc1Ljc1IDAgMSAxLTEuMjI4LS44NmwuODYtMS4yM2EzLjc1IDMuNzUgMCAwIDAtNi4xNDQtNC4zMDFsLS44NiAxLjIyOWEuNzUuNzUgMCAwIDEtMS4yMjktLjg2bDEuMTQ4LTEuNjRhLjc0OC43NDggMCAwIDEgLjIxNy0uMjA2IDUuMjUxIDUuMjUxIDAgMCAxIDguNTAzIDUuOTU1em0tNC41NjMtMi41MzJhLjc1Ljc1IDAgMCAxIC4xODQgMS4wNDVsLTMuMTU1IDQuNTA1YS43NS43NSAwIDEgMS0xLjIyOS0uODZsMy4xNTUtNC41MDZhLjc1Ljc1IDAgMCAxIDEuMDQ1LS4xODR6Ii8+PC9zdmc+");background-position:50%;background-repeat:no-repeat;background-size:14px;border-radius:100%;content:"";height:calc(var(--ck-link-image-indicator-icon-is-visible)*var(--ck-link-image-indicator-icon-size));overflow:hidden;right:min(var(--ck-spacing-medium),6%);top:min(var(--ck-spacing-medium),6%);width:calc(var(--ck-link-image-indicator-icon-is-visible)*var(--ck-link-image-indicator-icon-size))}',""]);const r=o},764:(e,t,i)=>{"use strict";i.d(t,{Z:()=>r});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,'.ck-vertical-form .ck-button:after{bottom:-1px;content:"";position:absolute;right:-1px;top:-1px;width:0;z-index:1}.ck-vertical-form .ck-button:focus:after{display:none}@media screen and (max-width:600px){.ck.ck-responsive-form .ck-button:after{bottom:-1px;content:"";position:absolute;right:-1px;top:-1px;width:0;z-index:1}.ck.ck-responsive-form .ck-button:focus:after{display:none}}.ck-vertical-form>.ck-button:nth-last-child(2):after{border-right:1px solid var(--ck-color-base-border)}.ck.ck-responsive-form{padding:var(--ck-spacing-large)}.ck.ck-responsive-form:focus{outline:none}[dir=ltr] .ck.ck-responsive-form>:not(:first-child),[dir=rtl] .ck.ck-responsive-form>:not(:last-child){margin-left:var(--ck-spacing-standard)}@media screen and (max-width:600px){.ck.ck-responsive-form{padding:0;width:calc(var(--ck-input-width)*.8)}.ck.ck-responsive-form .ck-labeled-field-view{margin:var(--ck-spacing-large) var(--ck-spacing-large) 0}.ck.ck-responsive-form .ck-labeled-field-view .ck-input-text{min-width:0;width:100%}.ck.ck-responsive-form .ck-labeled-field-view .ck-labeled-field-view__error{white-space:normal}.ck.ck-responsive-form>.ck-button:nth-last-child(2):after{border-right:1px solid var(--ck-color-base-border)}.ck.ck-responsive-form>.ck-button:last-child,.ck.ck-responsive-form>.ck-button:nth-last-child(2){border-radius:0;margin-top:var(--ck-spacing-large);padding:var(--ck-spacing-standard)}.ck.ck-responsive-form>.ck-button:last-child:not(:focus),.ck.ck-responsive-form>.ck-button:nth-last-child(2):not(:focus){border-top:1px solid var(--ck-color-base-border)}[dir=ltr] .ck.ck-responsive-form>.ck-button:last-child,[dir=ltr] .ck.ck-responsive-form>.ck-button:nth-last-child(2),[dir=rtl] .ck.ck-responsive-form>.ck-button:last-child,[dir=rtl] .ck.ck-responsive-form>.ck-button:nth-last-child(2){margin-left:0}[dir=rtl] .ck.ck-responsive-form>.ck-button:last-child:last-of-type,[dir=rtl] .ck.ck-responsive-form>.ck-button:nth-last-child(2):last-of-type{border-right:1px solid var(--ck-color-base-border)}}',""]);const r=o},609:e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var i=e(t);return t[2]?"@media ".concat(t[2]," {").concat(i,"}"):i})).join("")},t.i=function(e,i,n){"string"==typeof e&&(e=[[null,e,""]]);var o={};if(n)for(var r=0;r<this.length;r++){var s=this[r][0];null!=s&&(o[s]=!0)}for(var a=0;a<e.length;a++){var c=[].concat(e[a]);n&&o[c[0]]||(i&&(c[2]?c[2]="".concat(i," and ").concat(c[2]):c[2]=i),t.push(c))}},t}},62:(e,t,i)=>{"use strict";var n,o=function(){return void 0===n&&(n=Boolean(window&&document&&document.all&&!window.atob)),n},r=function(){var e={};return function(t){if(void 0===e[t]){var i=document.querySelector(t);if(window.HTMLIFrameElement&&i instanceof window.HTMLIFrameElement)try{i=i.contentDocument.head}catch(e){i=null}e[t]=i}return e[t]}}(),s=[];function a(e){for(var t=-1,i=0;i<s.length;i++)if(s[i].identifier===e){t=i;break}return t}function c(e,t){for(var i={},n=[],o=0;o<e.length;o++){var r=e[o],c=t.base?r[0]+t.base:r[0],l=i[c]||0,u="".concat(c," ").concat(l);i[c]=l+1;var d=a(u),k={css:r[1],media:r[2],sourceMap:r[3]};-1!==d?(s[d].references++,s[d].updater(k)):s.push({identifier:u,updater:g(k,t),references:1}),n.push(u)}return n}function l(e){var t=document.createElement("style"),n=e.attributes||{};if(void 0===n.nonce){var o=i.nc;o&&(n.nonce=o)}if(Object.keys(n).forEach((function(e){t.setAttribute(e,n[e])})),"function"==typeof e.insert)e.insert(t);else{var s=r(e.insert||"head");if(!s)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");s.appendChild(t)}return t}var u,d=(u=[],function(e,t){return u[e]=t,u.filter(Boolean).join("\n")});function k(e,t,i,n){var o=i?"":n.media?"@media ".concat(n.media," {").concat(n.css,"}"):n.css;if(e.styleSheet)e.styleSheet.cssText=d(t,o);else{var r=document.createTextNode(o),s=e.childNodes;s[t]&&e.removeChild(s[t]),s.length?e.insertBefore(r,s[t]):e.appendChild(r)}}function h(e,t,i){var n=i.css,o=i.media,r=i.sourceMap;if(o?e.setAttribute("media",o):e.removeAttribute("media"),r&&"undefined"!=typeof btoa&&(n+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(r))))," */")),e.styleSheet)e.styleSheet.cssText=n;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(n))}}var f=null,m=0;function g(e,t){var i,n,o;if(t.singleton){var r=m++;i=f||(f=l(t)),n=k.bind(null,i,r,!1),o=k.bind(null,i,r,!0)}else i=l(t),n=h.bind(null,i,t),o=function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(i)};return n(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;n(e=t)}else o()}}e.exports=function(e,t){(t=t||{}).singleton||"boolean"==typeof t.singleton||(t.singleton=o());var i=c(e=e||[],t);return function(e){if(e=e||[],"[object Array]"===Object.prototype.toString.call(e)){for(var n=0;n<i.length;n++){var o=a(i[n]);s[o].references--}for(var r=c(e,t),l=0;l<i.length;l++){var u=a(i[l]);0===s[u].references&&(s[u].updater(),s.splice(u,1))}i=r}}}},945:(e,t,i)=>{e.exports=i(79)("./src/clipboard.js")},704:(e,t,i)=>{e.exports=i(79)("./src/core.js")},492:(e,t,i)=>{e.exports=i(79)("./src/engine.js")},181:(e,t,i)=>{e.exports=i(79)("./src/typing.js")},273:(e,t,i)=>{e.exports=i(79)("./src/ui.js")},209:(e,t,i)=>{e.exports=i(79)("./src/utils.js")},995:(e,t,i)=>{e.exports=i(79)("./src/widget.js")},79:e=>{"use strict";e.exports=CKEditor5.dll}},t={};function i(n){var o=t[n];if(void 0!==o)return o.exports;var r=t[n]={id:n,exports:{}};return e[n](r,r.exports,i),r.exports}i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.nc=void 0;var n={};(()=>{"use strict";i.r(n),i.d(n,{AutoLink:()=>De,Link:()=>je,LinkEditing:()=>he,LinkImage:()=>Fe,LinkImageEditing:()=>Be,LinkImageUI:()=>Oe,LinkUI:()=>Ve});var e=i(704),t=i(492),o=i(181),r=i(945),s=i(209);class a{constructor(){this._definitions=new Set}get length(){return this._definitions.size}add(e){Array.isArray(e)?e.forEach((e=>this._definitions.add(e))):this._definitions.add(e)}getDispatcher(){return e=>{e.on("attribute:linkHref",((e,t,i)=>{if(!i.consumable.test(t.item,"attribute:linkHref"))return;if(!t.item.is("selection")&&!i.schema.isInline(t.item))return;const n=i.writer,o=n.document.selection;for(const e of this._definitions){const r=n.createAttributeElement("a",e.attributes,{priority:5});e.classes&&n.addClass(e.classes,r);for(const t in e.styles)n.setStyle(t,e.styles[t],r);n.setCustomProperty("link",!0,r),e.callback(t.attributeNewValue)?t.item.is("selection")?n.wrap(o.getFirstRange(),r):n.wrap(i.mapper.toViewRange(t.range),r):n.unwrap(i.mapper.toViewRange(t.range),r)}}),{priority:"high"})}}getDispatcherForLinkedImage(){return e=>{e.on("attribute:linkHref:imageBlock",((e,t,{writer:i,mapper:n})=>{const o=n.toViewElement(t.item),r=Array.from(o.getChildren()).find((e=>"a"===e.name));for(const e of this._definitions){const n=(0,s.toMap)(e.attributes);if(e.callback(t.attributeNewValue)){for(const[e,t]of n)"class"===e?i.addClass(t,r):i.setAttribute(e,t,r);e.classes&&i.addClass(e.classes,r);for(const t in e.styles)i.setStyle(t,e.styles[t],r)}else{for(const[e,t]of n)"class"===e?i.removeClass(t,r):i.removeAttribute(e,r);e.classes&&i.removeClass(e.classes,r);for(const t in e.styles)i.removeStyle(t,r)}}}))}}}const c=function(e,t,i){var n=-1,o=e.length;t<0&&(t=-t>o?0:o+t),(i=i>o?o:i)<0&&(i+=o),o=t>i?0:i-t>>>0,t>>>=0;for(var r=Array(o);++n<o;)r[n]=e[n+t];return r};const l=function(e,t,i){var n=e.length;return i=void 0===i?n:i,!t&&i>=n?e:c(e,t,i)};var u=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");const d=function(e){return u.test(e)};const k=function(e){return e.split("")};var h="[\\ud800-\\udfff]",f="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",m="\\ud83c[\\udffb-\\udfff]",g="[^\\ud800-\\udfff]",b="(?:\\ud83c[\\udde6-\\uddff]){2}",p="[\\ud800-\\udbff][\\udc00-\\udfff]",w="(?:"+f+"|"+m+")"+"?",v="[\\ufe0e\\ufe0f]?",_=v+w+("(?:\\u200d(?:"+[g,b,p].join("|")+")"+v+w+")*"),y="(?:"+[g+f+"?",f,b,p,h].join("|")+")",A=RegExp(m+"(?="+m+")|"+y+_,"g");const x=function(e){return e.match(A)||[]};const I=function(e){return d(e)?x(e):k(e)};const S="object"==typeof global&&global&&global.Object===Object&&global;var T="object"==typeof self&&self&&self.Object===Object&&self;const E=(S||T||Function("return this")()).Symbol;const V=function(e,t){for(var i=-1,n=null==e?0:e.length,o=Array(n);++i<n;)o[i]=t(e[i],i,e);return o};const L=Array.isArray;var C=Object.prototype,D=C.hasOwnProperty,M=C.toString,j=E?E.toStringTag:void 0;const B=function(e){var t=D.call(e,j),i=e[j];try{e[j]=void 0;var n=!0}catch(e){}var o=M.call(e);return n&&(t?e[j]=i:delete e[j]),o};var N=Object.prototype.toString;const H=function(e){return N.call(e)};var O=E?E.toStringTag:void 0;const U=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":O&&O in Object(e)?B(e):H(e)};const P=function(e){return null!=e&&"object"==typeof e};const F=function(e){return"symbol"==typeof e||P(e)&&"[object Symbol]"==U(e)};var R=E?E.prototype:void 0,z=R?R.toString:void 0;const Z=function e(t){if("string"==typeof t)return t;if(L(t))return V(t,e)+"";if(F(t))return z?z.call(t):"";var i=t+"";return"0"==i&&1/t==-Infinity?"-0":i};const q=function(e){return null==e?"":Z(e)};const K=function(e){return function(t){t=q(t);var i=d(t)?I(t):void 0,n=i?i[0]:t.charAt(0),o=i?l(i,1).join(""):t.slice(1);return n[e]()+o}}("toUpperCase"),Q=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,$=/^(?:(?:https?|ftps?|mailto):|[^a-z]|[a-z+.-]+(?:[^a-z+.:-]|$))/i,W=/^[\S]+@((?![-_])(?:[-\w\u00a1-\uffff]{0,63}[^-_]\.))+(?:[a-z\u00a1-\uffff]{2,})$/i,Y=/^((\w+:(\/{2,})?)|(\W))/i,G="Ctrl+K";function J(e,{writer:t}){const i=t.createAttributeElement("a",{href:e},{priority:5});return t.setCustomProperty("link",!0,i),i}function X(e){return function(e){return e.replace(Q,"").match($)}(e=String(e))?e:"#"}function ee(e,t){return!!e&&t.checkAttribute(e.name,"linkHref")}function te(e,t){const i=(n=e,W.test(n)?"mailto:":t);var n;const o=!!i&&!ie(e);return e&&o?i+e:e}function ie(e){return Y.test(e)}function ne(e){window.open(e,"_blank","noopener")}class oe extends e.Command{constructor(e){super(e),this.manualDecorators=new s.Collection,this.automaticDecorators=new a}restoreManualDecoratorStates(){for(const e of this.manualDecorators)e.value=this._getDecoratorStateFromModel(e.id)}refresh(){const e=this.editor.model,t=e.document.selection,i=t.getSelectedElement()||(0,s.first)(t.getSelectedBlocks());ee(i,e.schema)?(this.value=i.getAttribute("linkHref"),this.isEnabled=e.schema.checkAttribute(i,"linkHref")):(this.value=t.getAttribute("linkHref"),this.isEnabled=e.schema.checkAttributeInSelection(t,"linkHref"));for(const e of this.manualDecorators)e.value=this._getDecoratorStateFromModel(e.id)}execute(e,t={}){const i=this.editor.model,n=i.document.selection,r=[],a=[];for(const e in t)t[e]?r.push(e):a.push(e);i.change((t=>{if(n.isCollapsed){const c=n.getFirstPosition();if(n.hasAttribute("linkHref")){const s=(0,o.findAttributeRange)(c,"linkHref",n.getAttribute("linkHref"),i);t.setAttribute("linkHref",e,s),r.forEach((e=>{t.setAttribute(e,!0,s)})),a.forEach((e=>{t.removeAttribute(e,s)})),t.setSelection(t.createPositionAfter(s.end.nodeBefore))}else if(""!==e){const o=(0,s.toMap)(n.getAttributes());o.set("linkHref",e),r.forEach((e=>{o.set(e,!0)}));const{end:a}=i.insertContent(t.createText(e,o),c);t.setSelection(a)}["linkHref",...r,...a].forEach((e=>{t.removeSelectionAttribute(e)}))}else{const o=i.schema.getValidRanges(n.getRanges(),"linkHref"),s=[];for(const e of n.getSelectedBlocks())i.schema.checkAttribute(e,"linkHref")&&s.push(t.createRangeOn(e));const c=s.slice();for(const e of o)this._isRangeToUpdate(e,s)&&c.push(e);for(const i of c)t.setAttribute("linkHref",e,i),r.forEach((e=>{t.setAttribute(e,!0,i)})),a.forEach((e=>{t.removeAttribute(e,i)}))}}))}_getDecoratorStateFromModel(e){const t=this.editor.model,i=t.document.selection,n=i.getSelectedElement();return ee(n,t.schema)?n.getAttribute(e):i.getAttribute(e)}_isRangeToUpdate(e,t){for(const i of t)if(i.containsRange(e))return!1;return!0}}class re extends e.Command{refresh(){const e=this.editor.model,t=e.document.selection,i=t.getSelectedElement();ee(i,e.schema)?this.isEnabled=e.schema.checkAttribute(i,"linkHref"):this.isEnabled=e.schema.checkAttributeInSelection(t,"linkHref")}execute(){const e=this.editor,t=this.editor.model,i=t.document.selection,n=e.commands.get("link");t.change((e=>{const r=i.isCollapsed?[(0,o.findAttributeRange)(i.getFirstPosition(),"linkHref",i.getAttribute("linkHref"),t)]:t.schema.getValidRanges(i.getRanges(),"linkHref");for(const t of r)if(e.removeAttribute("linkHref",t),n)for(const i of n.manualDecorators)e.removeAttribute(i.id,t)}))}}class se{constructor({id:e,label:t,attributes:i,classes:n,styles:o,defaultValue:r}){this.id=e,this.set("value"),this.defaultValue=r,this.label=t,this.attributes=i,this.classes=n,this.styles=o}_createPattern(){return{attributes:this.attributes,classes:this.classes,styles:this.styles}}}(0,s.mix)(se,s.ObservableMixin);var ae=i(62),ce=i.n(ae),le=i(23),ue={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};ce()(le.Z,ue);le.Z.locals;const de="automatic",ke=/^(https?:)?\/\//;class he extends e.Plugin{static get pluginName(){return"LinkEditing"}static get requires(){return[o.TwoStepCaretMovement,o.Input,r.ClipboardPipeline]}constructor(e){super(e),e.config.define("link",{addTargetToExternalLinks:!1})}init(){const e=this.editor;e.model.schema.extend("$text",{allowAttributes:"linkHref"}),e.conversion.for("dataDowncast").attributeToElement({model:"linkHref",view:J}),e.conversion.for("editingDowncast").attributeToElement({model:"linkHref",view:(e,t)=>J(X(e),t)}),e.conversion.for("upcast").elementToAttribute({view:{name:"a",attributes:{href:!0}},model:{key:"linkHref",value:e=>e.getAttribute("href")}}),e.commands.add("link",new oe(e)),e.commands.add("unlink",new re(e));const t=function(e,t){const i={"Open in a new tab":e("Open in a new tab"),Downloadable:e("Downloadable")};return t.forEach((e=>(e.label&&i[e.label]&&(e.label=i[e.label]),e))),t}(e.t,function(e){const t=[];if(e)for(const[i,n]of Object.entries(e)){const e=Object.assign({},n,{id:`link${K(i)}`});t.push(e)}return t}(e.config.get("link.decorators")));this._enableAutomaticDecorators(t.filter((e=>e.mode===de))),this._enableManualDecorators(t.filter((e=>"manual"===e.mode)));e.plugins.get(o.TwoStepCaretMovement).registerAttribute("linkHref"),(0,o.inlineHighlight)(e,"linkHref","a","ck-link_selected"),this._enableLinkOpen(),this._enableInsertContentSelectionAttributesFixer(),this._enableClickingAfterLink(),this._enableTypingOverLink(),this._handleDeleteContentAfterLink()}_enableAutomaticDecorators(e){const t=this.editor,i=t.commands.get("link").automaticDecorators;t.config.get("link.addTargetToExternalLinks")&&i.add({id:"linkIsExternal",mode:de,callback:e=>ke.test(e),attributes:{target:"_blank",rel:"noopener noreferrer"}}),i.add(e),i.length&&t.conversion.for("downcast").add(i.getDispatcher())}_enableManualDecorators(e){if(!e.length)return;const t=this.editor,i=t.commands.get("link").manualDecorators;e.forEach((e=>{t.model.schema.extend("$text",{allowAttributes:e.id}),e=new se(e),i.add(e),t.conversion.for("downcast").attributeToElement({model:e.id,view:(t,{writer:i,schema:n},{item:o})=>{if((o.is("selection")||n.isInline(o))&&t){const t=i.createAttributeElement("a",e.attributes,{priority:5});e.classes&&i.addClass(e.classes,t);for(const n in e.styles)i.setStyle(n,e.styles[n],t);return i.setCustomProperty("link",!0,t),t}}}),t.conversion.for("upcast").elementToAttribute({view:{name:"a",...e._createPattern()},model:{key:e.id}})}))}_enableLinkOpen(){const e=this.editor,t=e.editing.view.document,i=e.model.document;this.listenTo(t,"click",((e,t)=>{if(!(s.env.isMac?t.domEvent.metaKey:t.domEvent.ctrlKey))return;let i=t.domTarget;if("a"!=i.tagName.toLowerCase()&&(i=i.closest("a")),!i)return;const n=i.getAttribute("href");n&&(e.stop(),t.preventDefault(),ne(n))}),{context:"$capture"}),this.listenTo(t,"enter",((e,t)=>{const n=i.selection,o=n.getSelectedElement(),r=o?o.getAttribute("linkHref"):n.getAttribute("linkHref");r&&t.domEvent.altKey&&(e.stop(),ne(r))}),{context:"a"})}_enableInsertContentSelectionAttributesFixer(){const e=this.editor.model,t=e.document.selection;this.listenTo(e,"insertContent",(()=>{const i=t.anchor.nodeBefore,n=t.anchor.nodeAfter;t.hasAttribute("linkHref")&&i&&i.hasAttribute("linkHref")&&(n&&n.hasAttribute("linkHref")||e.change((t=>{fe(t,ge(e.schema))})))}),{priority:"low"})}_enableClickingAfterLink(){const e=this.editor,i=e.model;e.editing.view.addObserver(t.MouseObserver);let n=!1;this.listenTo(e.editing.view.document,"mousedown",(()=>{n=!0})),this.listenTo(e.editing.view.document,"selectionChange",(()=>{if(!n)return;n=!1;const e=i.document.selection;if(!e.isCollapsed)return;if(!e.hasAttribute("linkHref"))return;const t=e.getFirstPosition(),r=(0,o.findAttributeRange)(t,"linkHref",e.getAttribute("linkHref"),i);(t.isTouching(r.start)||t.isTouching(r.end))&&i.change((e=>{fe(e,ge(i.schema))}))}))}_enableTypingOverLink(){const e=this.editor,t=e.editing.view;let i,n;this.listenTo(t.document,"delete",(()=>{n=!0}),{priority:"high"}),this.listenTo(e.model,"deleteContent",(()=>{const t=e.model.document.selection;t.isCollapsed||(n?n=!1:me(e)&&function(e){const t=e.document.selection,i=t.getFirstPosition(),n=t.getLastPosition(),r=i.nodeAfter;if(!r)return!1;if(!r.is("$text"))return!1;if(!r.hasAttribute("linkHref"))return!1;const s=n.textNode||n.nodeBefore;if(r===s)return!0;return(0,o.findAttributeRange)(i,"linkHref",r.getAttribute("linkHref"),e).containsRange(e.createRange(i,n),!0)}(e.model)&&(i=t.getAttributes()))}),{priority:"high"}),this.listenTo(e.model,"insertContent",((t,[o])=>{n=!1,me(e)&&i&&(e.model.change((e=>{for(const[t,n]of i)e.setAttribute(t,n,o)})),i=null)}),{priority:"high"})}_handleDeleteContentAfterLink(){const e=this.editor,t=e.model,i=t.document.selection,n=e.editing.view;let r=!1,a=!1;this.listenTo(n.document,"delete",((e,t)=>{a=t.domEvent.keyCode===s.keyCodes.backspace}),{priority:"high"}),this.listenTo(t,"deleteContent",(()=>{r=!1;const e=i.getFirstPosition(),n=i.getAttribute("linkHref");if(!n)return;const s=(0,o.findAttributeRange)(e,"linkHref",n,t);r=s.containsPosition(e)||s.end.isEqual(e)}),{priority:"high"}),this.listenTo(t,"deleteContent",(()=>{a&&(a=!1,r||e.model.enqueueChange((e=>{fe(e,ge(t.schema))})))}),{priority:"low"})}}function fe(e,t){e.removeSelectionAttribute("linkHref");for(const i of t)e.removeSelectionAttribute(i)}function me(e){return e.model.change((e=>e.batch)).isTyping}function ge(e){return e.getDefinition("$text").allowAttributes.filter((e=>e.startsWith("link")))}var be=i(273),pe=i(995),we=i(764),ve={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};ce()(we.Z,ve);we.Z.locals;var _e=i(871),ye={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};ce()(_e.Z,ye);_e.Z.locals;class Ae extends be.View{constructor(t,i){super(t);const n=t.t;this.focusTracker=new s.FocusTracker,this.keystrokes=new s.KeystrokeHandler,this.urlInputView=this._createUrlInput(),this.saveButtonView=this._createButton(n("Save"),e.icons.check,"ck-button-save"),this.saveButtonView.type="submit",this.cancelButtonView=this._createButton(n("Cancel"),e.icons.cancel,"ck-button-cancel","cancel"),this._manualDecoratorSwitches=this._createManualDecoratorSwitches(i),this.children=this._createFormChildren(i.manualDecorators),this._focusables=new be.ViewCollection,this._focusCycler=new be.FocusCycler({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}});const o=["ck","ck-link-form","ck-responsive-form"];i.manualDecorators.length&&o.push("ck-link-form_layout-vertical","ck-vertical-form"),this.setTemplate({tag:"form",attributes:{class:o,tabindex:"-1"},children:this.children}),(0,be.injectCssTransitionDisabler)(this)}getDecoratorSwitchesState(){return Array.from(this._manualDecoratorSwitches).reduce(((e,t)=>(e[t.name]=t.isOn,e)),{})}render(){super.render(),(0,be.submitHandler)({view:this});[this.urlInputView,...this._manualDecoratorSwitches,this.saveButtonView,this.cancelButtonView].forEach((e=>{this._focusables.add(e),this.focusTracker.add(e.element)})),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}_createUrlInput(){const e=this.locale.t,t=new be.LabeledFieldView(this.locale,be.createLabeledInputText);return t.label=e("Link URL"),t}_createButton(e,t,i,n){const o=new be.ButtonView(this.locale);return o.set({label:e,icon:t,tooltip:!0}),o.extendTemplate({attributes:{class:i}}),n&&o.delegate("execute").to(this,n),o}_createManualDecoratorSwitches(e){const t=this.createCollection();for(const i of e.manualDecorators){const n=new be.SwitchButtonView(this.locale);n.set({name:i.id,label:i.label,withText:!0}),n.bind("isOn").toMany([i,e],"value",((e,t)=>void 0===t&&void 0===e?i.defaultValue:e)),n.on("execute",(()=>{i.set("value",!n.isOn)})),t.add(n)}return t}_createFormChildren(e){const t=this.createCollection();if(t.add(this.urlInputView),e.length){const e=new be.View;e.setTemplate({tag:"ul",children:this._manualDecoratorSwitches.map((e=>({tag:"li",children:[e],attributes:{class:["ck","ck-list__item"]}}))),attributes:{class:["ck","ck-reset","ck-list"]}}),t.add(e)}return t.add(this.saveButtonView),t.add(this.cancelButtonView),t}}var xe=i(952),Ie={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};ce()(xe.Z,Ie);xe.Z.locals;class Se extends be.View{constructor(t){super(t);const i=t.t;this.focusTracker=new s.FocusTracker,this.keystrokes=new s.KeystrokeHandler,this.previewButtonView=this._createPreviewButton(),this.unlinkButtonView=this._createButton(i("Unlink"),'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m11.077 15 .991-1.416a.75.75 0 1 1 1.229.86l-1.148 1.64a.748.748 0 0 1-.217.206 5.251 5.251 0 0 1-8.503-5.955.741.741 0 0 1 .12-.274l1.147-1.639a.75.75 0 1 1 1.228.86L4.933 10.7l.006.003a3.75 3.75 0 0 0 6.132 4.294l.006.004zm5.494-5.335a.748.748 0 0 1-.12.274l-1.147 1.639a.75.75 0 1 1-1.228-.86l.86-1.23a3.75 3.75 0 0 0-6.144-4.301l-.86 1.229a.75.75 0 0 1-1.229-.86l1.148-1.64a.748.748 0 0 1 .217-.206 5.251 5.251 0 0 1 8.503 5.955zm-4.563-2.532a.75.75 0 0 1 .184 1.045l-3.155 4.505a.75.75 0 1 1-1.229-.86l3.155-4.506a.75.75 0 0 1 1.045-.184zm4.919 10.562-1.414 1.414a.75.75 0 1 1-1.06-1.06l1.414-1.415-1.415-1.414a.75.75 0 0 1 1.061-1.06l1.414 1.414 1.414-1.415a.75.75 0 0 1 1.061 1.061l-1.414 1.414 1.414 1.415a.75.75 0 0 1-1.06 1.06l-1.415-1.414z"/></svg>',"unlink"),this.editButtonView=this._createButton(i("Edit link"),e.icons.pencil,"edit"),this.set("href"),this._focusables=new be.ViewCollection,this._focusCycler=new be.FocusCycler({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-link-actions","ck-responsive-form"],tabindex:"-1"},children:[this.previewButtonView,this.editButtonView,this.unlinkButtonView]})}render(){super.render();[this.previewButtonView,this.editButtonView,this.unlinkButtonView].forEach((e=>{this._focusables.add(e),this.focusTracker.add(e.element)})),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}_createButton(e,t,i){const n=new be.ButtonView(this.locale);return n.set({label:e,icon:t,tooltip:!0}),n.delegate("execute").to(this,i),n}_createPreviewButton(){const e=new be.ButtonView(this.locale),t=this.bindTemplate,i=this.t;return e.set({withText:!0,tooltip:i("Open link in new tab")}),e.extendTemplate({attributes:{class:["ck","ck-link-actions__preview"],href:t.to("href",(e=>e&&X(e))),target:"_blank",rel:"noopener noreferrer"}}),e.bind("label").to(this,"href",(e=>e||i("This link has no URL"))),e.bind("isEnabled").to(this,"href",(e=>!!e)),e.template.tag="a",e.template.eventListeners={},e}}const Te='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m11.077 15 .991-1.416a.75.75 0 1 1 1.229.86l-1.148 1.64a.748.748 0 0 1-.217.206 5.251 5.251 0 0 1-8.503-5.955.741.741 0 0 1 .12-.274l1.147-1.639a.75.75 0 1 1 1.228.86L4.933 10.7l.006.003a3.75 3.75 0 0 0 6.132 4.294l.006.004zm5.494-5.335a.748.748 0 0 1-.12.274l-1.147 1.639a.75.75 0 1 1-1.228-.86l.86-1.23a3.75 3.75 0 0 0-6.144-4.301l-.86 1.229a.75.75 0 0 1-1.229-.86l1.148-1.64a.748.748 0 0 1 .217-.206 5.251 5.251 0 0 1 8.503 5.955zm-4.563-2.532a.75.75 0 0 1 .184 1.045l-3.155 4.505a.75.75 0 1 1-1.229-.86l3.155-4.506a.75.75 0 0 1 1.045-.184z"/></svg>',Ee="link-ui";class Ve extends e.Plugin{static get requires(){return[be.ContextualBalloon]}static get pluginName(){return"LinkUI"}init(){const e=this.editor;e.editing.view.addObserver(t.ClickObserver),this.actionsView=this._createActionsView(),this.formView=this._createFormView(),this._balloon=e.plugins.get(be.ContextualBalloon),this._createToolbarLinkButton(),this._enableUserBalloonInteractions(),e.conversion.for("editingDowncast").markerToHighlight({model:Ee,view:{classes:["ck-fake-link-selection"]}}),e.conversion.for("editingDowncast").markerToElement({model:Ee,view:{name:"span",classes:["ck-fake-link-selection","ck-fake-link-selection_collapsed"]}})}destroy(){super.destroy(),this.formView.destroy()}_createActionsView(){const e=this.editor,t=new Se(e.locale),i=e.commands.get("link"),n=e.commands.get("unlink");return t.bind("href").to(i,"value"),t.editButtonView.bind("isEnabled").to(i),t.unlinkButtonView.bind("isEnabled").to(n),this.listenTo(t,"edit",(()=>{this._addFormView()})),this.listenTo(t,"unlink",(()=>{e.execute("unlink"),this._hideUI()})),t.keystrokes.set("Esc",((e,t)=>{this._hideUI(),t()})),t.keystrokes.set(G,((e,t)=>{this._addFormView(),t()})),t}_createFormView(){const e=this.editor,t=e.commands.get("link"),i=e.config.get("link.defaultProtocol"),n=new Ae(e.locale,t);return n.urlInputView.fieldView.bind("value").to(t,"value"),n.urlInputView.bind("isReadOnly").to(t,"isEnabled",(e=>!e)),n.saveButtonView.bind("isEnabled").to(t),this.listenTo(n,"submit",(()=>{const{value:t}=n.urlInputView.fieldView.element,o=te(t,i);e.execute("link",o,n.getDecoratorSwitchesState()),this._closeFormView()})),this.listenTo(n,"cancel",(()=>{this._closeFormView()})),n.keystrokes.set("Esc",((e,t)=>{this._closeFormView(),t()})),n}_createToolbarLinkButton(){const e=this.editor,t=e.commands.get("link"),i=e.t;e.keystrokes.set(G,((e,i)=>{i(),t.isEnabled&&this._showUI(!0)})),e.ui.componentFactory.add("link",(e=>{const n=new be.ButtonView(e);return n.isEnabled=!0,n.label=i("Link"),n.icon=Te,n.keystroke=G,n.tooltip=!0,n.isToggleable=!0,n.bind("isEnabled").to(t,"isEnabled"),n.bind("isOn").to(t,"value",(e=>!!e)),this.listenTo(n,"execute",(()=>this._showUI(!0))),n}))}_enableUserBalloonInteractions(){const e=this.editor.editing.view.document;this.listenTo(e,"click",(()=>{this._getSelectedLinkElement()&&this._showUI()})),this.editor.keystrokes.set("Tab",((e,t)=>{this._areActionsVisible&&!this.actionsView.focusTracker.isFocused&&(this.actionsView.focus(),t())}),{priority:"high"}),this.editor.keystrokes.set("Esc",((e,t)=>{this._isUIVisible&&(this._hideUI(),t())})),(0,be.clickOutsideHandler)({emitter:this.formView,activator:()=>this._isUIInPanel,contextElements:[this._balloon.view.element],callback:()=>this._hideUI()})}_addActionsView(){this._areActionsInPanel||this._balloon.add({view:this.actionsView,position:this._getBalloonPositionData()})}_addFormView(){if(this._isFormInPanel)return;const e=this.editor.commands.get("link");this.formView.disableCssTransitions(),this._balloon.add({view:this.formView,position:this._getBalloonPositionData()}),this._balloon.visibleView===this.formView&&this.formView.urlInputView.fieldView.select(),this.formView.enableCssTransitions(),this.formView.urlInputView.fieldView.element.value=e.value||""}_closeFormView(){const e=this.editor.commands.get("link");e.restoreManualDecoratorStates(),void 0!==e.value?this._removeFormView():this._hideUI()}_removeFormView(){this._isFormInPanel&&(this.formView.saveButtonView.focus(),this._balloon.remove(this.formView),this.editor.editing.view.focus(),this._hideFakeVisualSelection())}_showUI(e=!1){this._getSelectedLinkElement()?(this._areActionsVisible?this._addFormView():this._addActionsView(),e&&this._balloon.showStack("main")):(this._showFakeVisualSelection(),this._addActionsView(),e&&this._balloon.showStack("main"),this._addFormView()),this._startUpdatingUI()}_hideUI(){if(!this._isUIInPanel)return;const e=this.editor;this.stopListening(e.ui,"update"),this.stopListening(this._balloon,"change:visibleView"),e.editing.view.focus(),this._removeFormView(),this._balloon.remove(this.actionsView),this._hideFakeVisualSelection()}_startUpdatingUI(){const e=this.editor,t=e.editing.view.document;let i=this._getSelectedLinkElement(),n=r();const o=()=>{const e=this._getSelectedLinkElement(),t=r();i&&!e||!i&&t!==n?this._hideUI():this._isUIVisible&&this._balloon.updatePosition(this._getBalloonPositionData()),i=e,n=t};function r(){return t.selection.focus.getAncestors().reverse().find((e=>e.is("element")))}this.listenTo(e.ui,"update",o),this.listenTo(this._balloon,"change:visibleView",o)}get _isFormInPanel(){return this._balloon.hasView(this.formView)}get _areActionsInPanel(){return this._balloon.hasView(this.actionsView)}get _areActionsVisible(){return this._balloon.visibleView===this.actionsView}get _isUIInPanel(){return this._isFormInPanel||this._areActionsInPanel}get _isUIVisible(){return this._balloon.visibleView==this.formView||this._areActionsVisible}_getBalloonPositionData(){const e=this.editor.editing.view,t=this.editor.model,i=e.document;let n=null;if(t.markers.has(Ee)){const t=Array.from(this.editor.editing.mapper.markerNameToElements(Ee)),i=e.createRange(e.createPositionBefore(t[0]),e.createPositionAfter(t[t.length-1]));n=e.domConverter.viewRangeToDom(i)}else n=()=>{const t=this._getSelectedLinkElement();return t?e.domConverter.mapViewToDom(t):e.domConverter.viewRangeToDom(i.selection.getFirstRange())};return{target:n}}_getSelectedLinkElement(){const e=this.editor.editing.view,t=e.document.selection,i=t.getSelectedElement();if(t.isCollapsed||i&&(0,pe.isWidget)(i))return Le(t.getFirstPosition());{const i=t.getFirstRange().getTrimmed(),n=Le(i.start),o=Le(i.end);return n&&n==o&&e.createRangeIn(n).getTrimmed().isEqual(i)?n:null}}_showFakeVisualSelection(){const e=this.editor.model;e.change((t=>{const i=e.document.selection.getFirstRange();if(e.markers.has(Ee))t.updateMarker(Ee,{range:i});else if(i.start.isAtEnd){const n=i.start.getLastMatchingPosition((({item:t})=>!e.schema.isContent(t)),{boundaries:i});t.addMarker(Ee,{usingOperation:!1,affectsData:!1,range:t.createRange(n,i.end)})}else t.addMarker(Ee,{usingOperation:!1,affectsData:!1,range:i})}))}_hideFakeVisualSelection(){const e=this.editor.model;e.markers.has(Ee)&&e.change((e=>{e.removeMarker(Ee)}))}}function Le(e){return e.getAncestors().find((e=>{return(t=e).is("attributeElement")&&!!t.getCustomProperty("link");var t}))}const Ce=new RegExp("(^|\\s)(((?:(?:(?:https?|ftp):)?\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(((?!www\\.)|(www\\.))(?![-_])(?:[-_a-z0-9\\u00a1-\\uffff]{1,63}\\.)+(?:[a-z\\u00a1-\\uffff]{2,63})))(?::\\d{2,5})?(?:[/?#]\\S*)?)|((www.|(\\S+@))((?![-_])(?:[-_a-z0-9\\u00a1-\\uffff]{1,63}\\.))+(?:[a-z\\u00a1-\\uffff]{2,63})))$","i");class De extends e.Plugin{static get requires(){return[o.Delete]}static get pluginName(){return"AutoLink"}init(){const e=this.editor.model.document.selection;e.on("change:range",(()=>{this.isEnabled=!e.anchor.parent.is("element","codeBlock")})),this._enableTypingHandling()}afterInit(){this._enableEnterHandling(),this._enableShiftEnterHandling()}_enableTypingHandling(){const e=this.editor,t=new o.TextWatcher(e.model,(e=>{if(!function(e){return e.length>4&&" "===e[e.length-1]&&" "!==e[e.length-2]}(e))return;const t=Me(e.substr(0,e.length-1));return t?{url:t}:void 0}));t.on("matched:data",((t,i)=>{const{batch:n,range:o,url:r}=i;if(!n.isTyping)return;const s=o.end.getShiftedBy(-1),a=s.getShiftedBy(-r.length),c=e.model.createRange(a,s);this._applyAutoLink(r,c)})),t.bind("isEnabled").to(this)}_enableEnterHandling(){const e=this.editor,t=e.model,i=e.commands.get("enter");i&&i.on("execute",(()=>{const e=t.document.selection.getFirstPosition();if(!e.parent.previousSibling)return;const i=t.createRangeIn(e.parent.previousSibling);this._checkAndApplyAutoLinkOnRange(i)}))}_enableShiftEnterHandling(){const e=this.editor,t=e.model,i=e.commands.get("shiftEnter");i&&i.on("execute",(()=>{const e=t.document.selection.getFirstPosition(),i=t.createRange(t.createPositionAt(e.parent,0),e.getShiftedBy(-1));this._checkAndApplyAutoLinkOnRange(i)}))}_checkAndApplyAutoLinkOnRange(e){const t=this.editor.model,{text:i,range:n}=(0,o.getLastTextLine)(e,t),r=Me(i);if(r){const e=t.createRange(n.end.getShiftedBy(-r.length),n.end);this._applyAutoLink(r,e)}}_applyAutoLink(e,t){const i=this.editor.model,n=te(e,this.editor.config.get("link.defaultProtocol"));this.isEnabled&&function(e,t){return t.schema.checkAttributeInSelection(t.createSelection(e),"linkHref")}(t,i)&&ie(n)&&!function(e){const t=e.start.nodeAfter;return t&&t.hasAttribute("linkHref")}(t)&&this._persistAutoLink(n,t)}_persistAutoLink(e,t){const i=this.editor.model,n=this.editor.plugins.get("Delete");i.enqueueChange((o=>{o.setAttribute("linkHref",e,t),i.enqueueChange((()=>{n.requestUndoOnBackspace()}))}))}}function Me(e){const t=Ce.exec(e);return t?t[2]:null}class je extends e.Plugin{static get requires(){return[he,Ve,De]}static get pluginName(){return"Link"}}class Be extends e.Plugin{static get requires(){return["ImageEditing","ImageUtils",he]}static get pluginName(){return"LinkImageEditing"}init(){const e=this.editor,t=e.model.schema;e.plugins.has("ImageBlockEditing")&&t.extend("imageBlock",{allowAttributes:["linkHref"]}),e.conversion.for("upcast").add(function(e){const t=e.plugins.has("ImageInlineEditing"),i=e.plugins.get("ImageUtils");return e=>{e.on("element:a",((e,n,o)=>{const r=n.viewItem,s=i.findViewImgElement(r);if(!s)return;const a=s.findAncestor((e=>i.isBlockImageView(e)));if(t&&!a)return;const c={attributes:["href"]};if(!o.consumable.consume(r,c))return;const l=r.getAttribute("href");if(!l)return;let u=n.modelCursor.parent;if(!u.is("element","imageBlock")){const e=o.convertItem(s,n.modelCursor);n.modelRange=e.modelRange,n.modelCursor=e.modelCursor,u=n.modelCursor.nodeBefore}u&&u.is("element","imageBlock")&&o.writer.setAttribute("linkHref",l,u)}),{priority:"high"})}}(e)),e.conversion.for("downcast").add(function(e){const t=e.plugins.get("ImageUtils");return e=>{e.on("attribute:linkHref:imageBlock",((e,i,n)=>{if(!n.consumable.consume(i.item,e.name))return;const o=n.mapper.toViewElement(i.item),r=n.writer,s=Array.from(o.getChildren()).find((e=>"a"===e.name)),a=t.findViewImgElement(o),c=a.parent.is("element","picture")?a.parent:a;if(s)i.attributeNewValue?r.setAttribute("href",i.attributeNewValue,s):(r.move(r.createRangeOn(c),r.createPositionAt(o,0)),r.remove(s));else{const e=r.createContainerElement("a",{href:i.attributeNewValue});r.insert(r.createPositionAt(o,0),e),r.move(r.createRangeOn(c),r.createPositionAt(e,0))}}),{priority:"high"})}}(e)),this._enableAutomaticDecorators(),this._enableManualDecorators()}_enableAutomaticDecorators(){const e=this.editor,t=e.commands.get("link").automaticDecorators;t.length&&e.conversion.for("downcast").add(t.getDispatcherForLinkedImage())}_enableManualDecorators(){const e=this.editor,t=e.commands.get("link");for(const i of t.manualDecorators)e.plugins.has("ImageBlockEditing")&&e.model.schema.extend("imageBlock",{allowAttributes:i.id}),e.plugins.has("ImageInlineEditing")&&e.model.schema.extend("imageInline",{allowAttributes:i.id}),e.conversion.for("downcast").add(Ne(i)),e.conversion.for("upcast").add(He(e,i))}}function Ne(e){return t=>{t.on(`attribute:${e.id}:imageBlock`,((t,i,n)=>{const o=n.mapper.toViewElement(i.item),r=Array.from(o.getChildren()).find((e=>"a"===e.name));if(r){for(const[t,i]of(0,s.toMap)(e.attributes))n.writer.setAttribute(t,i,r);e.classes&&n.writer.addClass(e.classes,r);for(const t in e.styles)n.writer.setStyle(t,e.styles[t],r)}}))}}function He(e,i){const n=e.plugins.has("ImageInlineEditing"),o=e.plugins.get("ImageUtils");return e=>{e.on("element:a",((e,r,s)=>{const a=r.viewItem,c=o.findViewImgElement(a);if(!c)return;const l=c.findAncestor((e=>o.isBlockImageView(e)));if(n&&!l)return;const u=new t.Matcher(i._createPattern()).match(a);if(!u)return;if(!s.consumable.consume(a,u.match))return;const d=r.modelCursor.nodeBefore||r.modelCursor.parent;s.writer.setAttribute(i.id,!0,d)}),{priority:"high"})}}class Oe extends e.Plugin{static get requires(){return[he,Ve,"ImageBlockEditing"]}static get pluginName(){return"LinkImageUI"}init(){const e=this.editor,t=e.editing.view.document;this.listenTo(t,"click",((t,i)=>{this._isSelectedLinkedImage(e.model.document.selection)&&(i.preventDefault(),t.stop())}),{priority:"high"}),this._createToolbarLinkImageButton()}_createToolbarLinkImageButton(){const e=this.editor,t=e.t;e.ui.componentFactory.add("linkImage",(i=>{const n=new be.ButtonView(i),o=e.plugins.get("LinkUI"),r=e.commands.get("link");return n.set({isEnabled:!0,label:t("Link image"),icon:Te,keystroke:G,tooltip:!0,isToggleable:!0}),n.bind("isEnabled").to(r,"isEnabled"),n.bind("isOn").to(r,"value",(e=>!!e)),this.listenTo(n,"execute",(()=>{this._isSelectedLinkedImage(e.model.document.selection)?o._addActionsView():o._showUI(!0)})),n}))}_isSelectedLinkedImage(e){const t=e.getSelectedElement();return this.editor.plugins.get("ImageUtils").isImage(t)&&t.hasAttribute("linkHref")}}var Ue=i(269),Pe={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};ce()(Ue.Z,Pe);Ue.Z.locals;class Fe extends e.Plugin{static get requires(){return[Be,Oe]}static get pluginName(){return"LinkImage"}}})(),(window.CKEditor5=window.CKEditor5||{}).link=n})();
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/link/translations/ko.js b/core/assets/vendor/ckeditor5/link/translations/ko.js
index feabba7613..2df5cb4116 100644
--- a/core/assets/vendor/ckeditor5/link/translations/ko.js
+++ b/core/assets/vendor/ckeditor5/link/translations/ko.js
@@ -1 +1 @@
-!function(n){const i=n.ko=n.ko||{};i.dictionary=Object.assign(i.dictionary||{},{Downloadable:"다운로드 가능","Edit link":"링크 편집",Link:"링크","Link image":"사진 링크","Link URL":"링크 주소","Open in a new tab":"새 탭에서 열기","Open link in new tab":"새 탭에서 링크 열기","This link has no URL":"이 링크에는 URL이 없습니다.",Unlink:"링크 삭제"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(n){const i=n.ko=n.ko||{};i.dictionary=Object.assign(i.dictionary||{},{Downloadable:"다운로드 가능","Edit link":"링크 편집",Link:"링크","Link image":"사진 링크","Link URL":"링크 주소","Open in a new tab":"새 탭에서 열기","Open link in new tab":"새 탭에서 링크 열기","This link has no URL":"이 주소에는 URL이 없습니다.",Unlink:"링크 삭제"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/list/list.js b/core/assets/vendor/ckeditor5/list/list.js
index 35d300a4e0..a58c2997c2 100644
--- a/core/assets/vendor/ckeditor5/list/list.js
+++ b/core/assets/vendor/ckeditor5/list/list.js
@@ -2,4 +2,4 @@
 /*!
  * @license Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
  * For licensing, see LICENSE.md.
- */(()=>{var t={389:(t,e,i)=>{"use strict";i.d(e,{Z:()=>r});var s=i(609),n=i.n(s)()((function(t){return t[1]}));n.push([t.id,".ck.ck-collapsible.ck-collapsible_collapsed>.ck-collapsible__children{display:none}:root{--ck-collapsible-arrow-size:calc(var(--ck-icon-size)*0.5)}.ck.ck-collapsible>.ck.ck-button{border-radius:0;font-weight:700;padding:var(--ck-spacing-medium) var(--ck-spacing-large);width:100%}.ck.ck-collapsible>.ck.ck-button:focus{background:transparent}.ck.ck-collapsible>.ck.ck-button:active,.ck.ck-collapsible>.ck.ck-button:hover:not(:focus),.ck.ck-collapsible>.ck.ck-button:not(:focus){background:transparent;border-color:transparent;box-shadow:none}.ck.ck-collapsible>.ck.ck-button>.ck-icon{margin-right:var(--ck-spacing-medium);width:var(--ck-collapsible-arrow-size)}.ck.ck-collapsible>.ck-collapsible__children{padding:0 var(--ck-spacing-large) var(--ck-spacing-large)}.ck.ck-collapsible.ck-collapsible_collapsed>.ck.ck-button .ck-icon{transform:rotate(-90deg)}",""]);const r=n},78:(t,e,i)=>{"use strict";i.d(e,{Z:()=>r});var s=i(609),n=i.n(s)()((function(t){return t[1]}));n.push([t.id,".ck-editor__editable .ck-list-bogus-paragraph{display:block}",""]);const r=n},543:(t,e,i)=>{"use strict";i.d(e,{Z:()=>r});var s=i(609),n=i.n(s)()((function(t){return t[1]}));n.push([t.id,".ck.ck-list-properties.ck-list-properties_without-styles{padding:var(--ck-spacing-large)}.ck.ck-list-properties.ck-list-properties_without-styles>*{min-width:14em}.ck.ck-list-properties.ck-list-properties_without-styles>*+*{margin-top:var(--ck-spacing-standard)}.ck.ck-list-properties.ck-list-properties_with-numbered-properties>.ck-list-styles-list{grid-template-columns:repeat(4,auto)}.ck.ck-list-properties.ck-list-properties_with-numbered-properties>.ck-collapsible{border-top:1px solid var(--ck-color-base-border)}.ck.ck-list-properties.ck-list-properties_with-numbered-properties>.ck-collapsible>.ck-collapsible__children>*{width:100%}.ck.ck-list-properties.ck-list-properties_with-numbered-properties>.ck-collapsible>.ck-collapsible__children>*+*{margin-top:var(--ck-spacing-standard)}.ck.ck-list-properties .ck.ck-numbered-list-properties__start-index .ck-input{min-width:auto;width:100%}.ck.ck-list-properties .ck.ck-numbered-list-properties__reversed-order{background:transparent;margin-bottom:calc(var(--ck-spacing-tiny)*-1);padding-left:0;padding-right:0}.ck.ck-list-properties .ck.ck-numbered-list-properties__reversed-order:active,.ck.ck-list-properties .ck.ck-numbered-list-properties__reversed-order:hover{background:none;border-color:transparent;box-shadow:none}",""]);const r=n},657:(t,e,i)=>{"use strict";i.d(e,{Z:()=>r});var s=i(609),n=i.n(s)()((function(t){return t[1]}));n.push([t.id,".ck.ck-list-styles-list{display:grid}:root{--ck-list-style-button-size:44px}.ck.ck-list-styles-list{column-gap:var(--ck-spacing-medium);grid-template-columns:repeat(3,auto);padding:var(--ck-spacing-large);row-gap:var(--ck-spacing-medium)}.ck.ck-list-styles-list .ck-button{box-sizing:content-box;margin:0;padding:0}.ck.ck-list-styles-list .ck-button,.ck.ck-list-styles-list .ck-button .ck-icon{height:var(--ck-list-style-button-size);width:var(--ck-list-style-button-size)}",""]);const r=n},250:(t,e,i)=>{"use strict";i.d(e,{Z:()=>r});var s=i(609),n=i.n(s)()((function(t){return t[1]}));n.push([t.id,':root{--ck-todo-list-checkmark-size:16px}.ck-content .todo-list{list-style:none}.ck-content .todo-list li{margin-bottom:5px}.ck-content .todo-list li .todo-list{margin-top:5px}.ck-content .todo-list .todo-list__label>input{-webkit-appearance:none;border:0;display:inline-block;height:var(--ck-todo-list-checkmark-size);left:-25px;margin-left:0;margin-right:-15px;position:relative;right:0;vertical-align:middle;width:var(--ck-todo-list-checkmark-size)}.ck-content .todo-list .todo-list__label>input:before{border:1px solid #333;border-radius:2px;box-sizing:border-box;content:"";display:block;height:100%;position:absolute;transition:box-shadow .25s ease-in-out,background .25s ease-in-out,border .25s ease-in-out;width:100%}.ck-content .todo-list .todo-list__label>input:after{border-color:transparent;border-style:solid;border-width:0 calc(var(--ck-todo-list-checkmark-size)/8) calc(var(--ck-todo-list-checkmark-size)/8) 0;box-sizing:content-box;content:"";display:block;height:calc(var(--ck-todo-list-checkmark-size)/2.6);left:calc(var(--ck-todo-list-checkmark-size)/3);pointer-events:none;position:absolute;top:calc(var(--ck-todo-list-checkmark-size)/5.3);transform:rotate(45deg);width:calc(var(--ck-todo-list-checkmark-size)/5.3)}.ck-content .todo-list .todo-list__label>input[checked]:before{background:#26ab33;border-color:#26ab33}.ck-content .todo-list .todo-list__label>input[checked]:after{border-color:#fff}.ck-content .todo-list .todo-list__label .todo-list__label__description{vertical-align:middle}[dir=rtl] .todo-list .todo-list__label>input{left:0;margin-left:-15px;margin-right:0;right:-25px}.ck-editor__editable .todo-list .todo-list__label>input{cursor:pointer}.ck-editor__editable .todo-list .todo-list__label>input:hover:before{box-shadow:0 0 0 5px rgba(0,0,0,.1)}',""]);const r=n},609:t=>{"use strict";t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var i=t(e);return e[2]?"@media ".concat(e[2]," {").concat(i,"}"):i})).join("")},e.i=function(t,i,s){"string"==typeof t&&(t=[[null,t,""]]);var n={};if(s)for(var r=0;r<this.length;r++){var o=this[r][0];null!=o&&(n[o]=!0)}for(var l=0;l<t.length;l++){var a=[].concat(t[l]);s&&n[a[0]]||(i&&(a[2]?a[2]="".concat(i," and ").concat(a[2]):a[2]=i),e.push(a))}},e}},62:(t,e,i)=>{"use strict";var s,n=function(){return void 0===s&&(s=Boolean(window&&document&&document.all&&!window.atob)),s},r=function(){var t={};return function(e){if(void 0===t[e]){var i=document.querySelector(e);if(window.HTMLIFrameElement&&i instanceof window.HTMLIFrameElement)try{i=i.contentDocument.head}catch(t){i=null}t[e]=i}return t[e]}}(),o=[];function l(t){for(var e=-1,i=0;i<o.length;i++)if(o[i].identifier===t){e=i;break}return e}function a(t,e){for(var i={},s=[],n=0;n<t.length;n++){var r=t[n],a=e.base?r[0]+e.base:r[0],c=i[a]||0,d="".concat(a," ").concat(c);i[a]=c+1;var u=l(d),m={css:r[1],media:r[2],sourceMap:r[3]};-1!==u?(o[u].references++,o[u].updater(m)):o.push({identifier:d,updater:b(m,e),references:1}),s.push(d)}return s}function c(t){var e=document.createElement("style"),s=t.attributes||{};if(void 0===s.nonce){var n=i.nc;n&&(s.nonce=n)}if(Object.keys(s).forEach((function(t){e.setAttribute(t,s[t])})),"function"==typeof t.insert)t.insert(e);else{var o=r(t.insert||"head");if(!o)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");o.appendChild(e)}return e}var d,u=(d=[],function(t,e){return d[t]=e,d.filter(Boolean).join("\n")});function m(t,e,i,s){var n=i?"":s.media?"@media ".concat(s.media," {").concat(s.css,"}"):s.css;if(t.styleSheet)t.styleSheet.cssText=u(e,n);else{var r=document.createTextNode(n),o=t.childNodes;o[e]&&t.removeChild(o[e]),o.length?t.insertBefore(r,o[e]):t.appendChild(r)}}function p(t,e,i){var s=i.css,n=i.media,r=i.sourceMap;if(n?t.setAttribute("media",n):t.removeAttribute("media"),r&&"undefined"!=typeof btoa&&(s+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(r))))," */")),t.styleSheet)t.styleSheet.cssText=s;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(s))}}var h=null,f=0;function b(t,e){var i,s,n;if(e.singleton){var r=f++;i=h||(h=c(e)),s=m.bind(null,i,r,!1),n=m.bind(null,i,r,!0)}else i=c(e),s=p.bind(null,i,e),n=function(){!function(t){if(null===t.parentNode)return!1;t.parentNode.removeChild(t)}(i)};return s(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;s(t=e)}else n()}}t.exports=function(t,e){(e=e||{}).singleton||"boolean"==typeof e.singleton||(e.singleton=n());var i=a(t=t||[],e);return function(t){if(t=t||[],"[object Array]"===Object.prototype.toString.call(t)){for(var s=0;s<i.length;s++){var n=l(i[s]);o[n].references--}for(var r=a(t,e),c=0;c<i.length;c++){var d=l(i[c]);0===o[d].references&&(o[d].updater(),o.splice(d,1))}i=r}}}},704:(t,e,i)=>{t.exports=i(79)("./src/core.js")},492:(t,e,i)=>{t.exports=i(79)("./src/engine.js")},331:(t,e,i)=>{t.exports=i(79)("./src/enter.js")},181:(t,e,i)=>{t.exports=i(79)("./src/typing.js")},273:(t,e,i)=>{t.exports=i(79)("./src/ui.js")},209:(t,e,i)=>{t.exports=i(79)("./src/utils.js")},79:t=>{"use strict";t.exports=CKEditor5.dll}},e={};function i(s){var n=e[s];if(void 0!==n)return n.exports;var r=e[s]={id:s,exports:{}};return t[s](r,r.exports,i),r.exports}i.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return i.d(e,{a:e}),e},i.d=(t,e)=>{for(var s in e)i.o(e,s)&&!i.o(t,s)&&Object.defineProperty(t,s,{enumerable:!0,get:e[s]})},i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),i.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.nc=void 0;var s={};(()=>{"use strict";i.r(s),i.d(s,{DocumentList:()=>pt,DocumentListEditing:()=>G,DocumentListProperties:()=>Mt,DocumentListPropertiesEditing:()=>Tt,List:()=>ie,ListEditing:()=>te,ListProperties:()=>pe,ListPropertiesEditing:()=>le,ListPropertiesUI:()=>Bt,ListUI:()=>mt,TodoList:()=>Te,TodoListEditing:()=>Ae,TodoListUI:()=>Ie});var t=i(704),e=i(331),n=i(181),r=i(209);class o{constructor(t,e){this._startElement=t,this._referenceIndent=t.getAttribute("listIndent"),this._isForward="forward"==e.direction,this._includeSelf=!!e.includeSelf,this._sameAttributes=(0,r.toArray)(e.sameAttributes||[]),this._sameIndent=!!e.sameIndent,this._lowerIndent=!!e.lowerIndent,this._higherIndent=!!e.higherIndent}static first(t,e){const i=new this(t,e)[Symbol.iterator]();return(0,r.first)(i)}*[Symbol.iterator](){const t=[];for(const{node:e}of l(this._getStartNode(),this._isForward?"forward":"backward")){const i=e.getAttribute("listIndent");if(i<this._referenceIndent){if(!this._lowerIndent)break;this._referenceIndent=i}else if(i>this._referenceIndent){if(!this._higherIndent)continue;if(!this._isForward){t.push(e);continue}}else{if(!this._sameIndent){if(this._higherIndent){t.length&&(yield*t,t.length=0);break}continue}if(this._sameAttributes.some((t=>e.getAttribute(t)!==this._startElement.getAttribute(t))))break}t.length&&(yield*t,t.length=0),yield e}}_getStartNode(){return this._includeSelf?this._startElement:this._isForward?this._startElement.nextSibling:this._startElement.previousSibling}}function*l(t,e="forward"){const i="forward"==e;let s=null;for(;d(t);)yield{node:t,previous:s},s=t,t=i?t.nextSibling:t.previousSibling}class a{constructor(t){this._listHead=t}[Symbol.iterator](){return l(this._listHead,"forward")}}class c{static next(){return(0,r.uid)()}}function d(t){return!!t&&t.is("element")&&t.hasAttribute("listItemId")}function u(t,e={}){return[...m(t,{...e,direction:"backward"}),...m(t,{...e,direction:"forward"})]}function m(t,e={}){const i="forward"==e.direction,s=Array.from(new o(t,{...e,includeSelf:i,sameIndent:!0,sameAttributes:"listItemId"}));return i?s:s.reverse()}function p(t){const e=new o(t,{sameIndent:!0,sameAttributes:"listType"}),i=new o(t,{sameIndent:!0,sameAttributes:"listType",includeSelf:!0,direction:"forward"});return[...Array.from(e).reverse(),...i]}function h(t){return!o.first(t,{sameIndent:!0,sameAttributes:"listItemId"})}function f(t){return!o.first(t,{direction:"forward",sameIndent:!0,sameAttributes:"listItemId"})}function b(t,e={}){t=(0,r.toArray)(t);const i=!1!==e.withNested,s=new Set;for(const e of t)for(const t of u(e,{higherIndent:i}))s.add(t);return k(s)}function g(t){t=(0,r.toArray)(t);const e=new Set;for(const i of t)for(const t of p(i))e.add(t);return k(e)}function v(t,e){const i=m(t,{direction:"forward"}),s=c.next();for(const t of i)e.setAttribute("listItemId",s,t);return i}function y(t,e,i){const s={};for(const[t,i]of e.getAttributes())t.startsWith("list")&&(s[t]=i);const n=m(t,{direction:"forward"});for(const t of n)i.setAttributes(s,t);return n}function w(t,e,{expand:i,indentBy:s=1}={}){t=(0,r.toArray)(t);const n=i?b(t):t;for(const t of n){const i=t.getAttribute("listIndent")+s;i<0?A(t,e):e.setAttribute("listIndent",i,t)}return n}function A(t,e){t=(0,r.toArray)(t);for(const i of t)for(const t of i.getAttributeKeys())t.startsWith("list")&&e.removeAttribute(t,i);return t}function I(t){if(!t.length)return!1;const e=t[0].getAttribute("listItemId");return!!e&&!t.some((t=>t.getAttribute("listItemId")!=e))}function k(t){return Array.from(t).filter((t=>"$graveyard"!==t.root.rootName)).sort(((t,e)=>t.index-e.index))}function x(t){const e=t.document.selection.getSelectedElement();return e&&t.schema.isObject(e)&&t.schema.isBlock(e)?e:null}function T(t,e,i){return m(e,{direction:"forward"}).pop().index>t.index?y(t,e,i):[]}class S extends t.Command{constructor(t,e){super(t),this._direction=e}refresh(){this.isEnabled=this._checkEnabled()}execute(){const t=this.editor.model,e=_(t.document.selection);t.change((t=>{const i=[];I(e)&&!h(e[0])?("forward"==this._direction&&i.push(...w(e,t)),i.push(...v(e[0],t))):"forward"==this._direction?i.push(...w(e,t,{expand:!0})):i.push(...function(t,e){const i=b(t=(0,r.toArray)(t)),s=new Set,n=Math.min(...i.map((t=>t.getAttribute("listIndent")))),l=new Map;for(const t of i)l.set(t,o.first(t,{lowerIndent:!0}));for(const t of i){if(s.has(t))continue;s.add(t);const i=t.getAttribute("listIndent")-1;if(i<0)A(t,e);else{if(t.getAttribute("listIndent")==n){const i=T(t,l.get(t),e);for(const t of i)s.add(t);if(i.length)continue}e.setAttribute("listIndent",i,t)}}return k(s)}(e,t));for(const e of i){if(!e.hasAttribute("listType"))continue;const i=o.first(e,{sameIndent:!0});i&&t.setAttribute("listType",i.getAttribute("listType"),e)}this._fireAfterExecute(i)}))}_fireAfterExecute(t){this.fire("afterExecute",k(new Set(t)))}_checkEnabled(){let t=_(this.editor.model.document.selection),e=t[0];if(!e)return!1;if("backward"==this._direction)return!0;if(I(t)&&!h(t[0]))return!0;t=b(t),e=t[0];const i=o.first(e,{sameIndent:!0});return!!i&&i.getAttribute("listType")==e.getAttribute("listType")}}function _(t){const e=Array.from(t.getSelectedBlocks()),i=e.findIndex((t=>!d(t)));return-1!=i&&(e.length=i),e}class C extends t.Command{constructor(t,e){super(t),this.type=e}refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(t={}){const e=this.editor.model,i=e.document,s=x(e),n=Array.from(i.selection.getSelectedBlocks()).filter((t=>e.schema.checkAttribute(t,"listType"))),r=void 0!==t.forceValue?!t.forceValue:this.value;e.change((t=>{if(r){const e=n[n.length-1],i=m(e,{direction:"forward"}),s=[];i.length>1&&s.push(...v(i[1],t)),s.push(...A(n,t)),s.push(...function(t,e){const i=[];let s=Number.POSITIVE_INFINITY;for(const{node:n}of l(t.nextSibling,"forward")){const t=n.getAttribute("listIndent");if(0==t)break;t<s&&(s=t);const r=t-s;e.setAttribute("listIndent",r,n),i.push(n)}return i}(e,t)),this._fireAfterExecute(s)}else if((s||i.selection.isCollapsed)&&d(n[0])){const e=p(s||n[0]);for(const i of e)t.setAttribute("listType",this.type,i);this._fireAfterExecute(e)}else{const e=[];for(const i of n)if(i.hasAttribute("listType"))for(const s of b(i,{withNested:!1}))s.getAttribute("listType")!=this.type&&(t.setAttribute("listType",this.type,s),e.push(s));else t.setAttributes({listIndent:0,listItemId:c.next(),listType:this.type},i),e.push(i);this._fireAfterExecute(e)}}))}_fireAfterExecute(t){this.fire("afterExecute",k(new Set(t)))}_getValue(){const t=this.editor.model.document.selection,e=Array.from(t.getSelectedBlocks());if(!e.length)return!1;for(const t of e)if(t.getAttribute("listType")!=this.type)return!1;return!0}_checkEnabled(){const t=this.editor.model.document.selection,e=this.editor.model.schema,i=Array.from(t.getSelectedBlocks());if(!i.length)return!1;if(this.value)return!0;for(const t of i)if(e.checkAttribute(t,"listType"))return!0;return!1}}class V extends t.Command{constructor(t,e){super(t),this._direction=e}refresh(){this.isEnabled=this._checkEnabled()}execute({shouldMergeOnBlocksContentLevel:t=!1}={}){const e=this.editor.model,i=e.document.selection,s=[];e.change((n=>{const{firstElement:r,lastElement:l}=this._getMergeSubjectElements(i,t),a=r.getAttribute("listIndent")||0,c=l.getAttribute("listIndent"),d=l.getAttribute("listItemId");if(a!=c){const t=(u=l,Array.from(new o(u,{direction:"forward",higherIndent:!0})));s.push(...w([l,...t],n,{indentBy:a-c,expand:a<c}))}var u;if(t){let t=i;i.isCollapsed&&(t=n.createSelection(n.createRange(n.createPositionAt(r,"end"),n.createPositionAt(l,0)))),e.deleteContent(t,{doNotResetEntireContent:i.isCollapsed});const o=t.getLastPosition().parent,a=o.nextSibling;s.push(o),a&&a!==l&&a.getAttribute("listItemId")==d&&s.push(...y(a,o,n))}else s.push(...y(l,r,n));this._fireAfterExecute(s)}))}_fireAfterExecute(t){this.fire("afterExecute",k(new Set(t)))}_checkEnabled(){const t=this.editor.model,e=t.document.selection,i=x(t);if(e.isCollapsed||i){const t=i||e.getFirstPosition().parent;if(!d(t))return!1;const s="backward"==this._direction?t.previousSibling:t.nextSibling;if(!s)return!1;if(I([t,s]))return!1}else{const t=e.getLastPosition(),i=e.getFirstPosition();if(t.parent===i.parent)return!1;if(!d(t.parent))return!1}return!0}_getMergeSubjectElements(t,e){const i=x(this.editor.model);let s,n;if(t.isCollapsed||i){const r=i||t.getFirstPosition().parent,l=h(r);"backward"==this._direction?(n=r,s=l&&!e?o.first(r,{sameIndent:!0,lowerIndent:!0}):r.previousSibling):(s=r,n=r.nextSibling)}else s=t.getFirstPosition().parent,n=t.getLastPosition().parent;return{firstElement:s,lastElement:n}}}class L extends t.Command{constructor(t,e){super(t),this._direction=e}refresh(){this.isEnabled=this._checkEnabled()}execute(){this.editor.model.change((t=>{const e=v(this._getStartBlock(),t);this._fireAfterExecute(e)}))}_fireAfterExecute(t){this.fire("afterExecute",k(new Set(t)))}_checkEnabled(){const t=this.editor.model.document.selection,e=this._getStartBlock();return t.isCollapsed&&d(e)&&!h(e)}_getStartBlock(){const t=this.editor.model.document.selection.getFirstPosition().parent;return"before"==this._direction?t:t.nextSibling}}function E(t){return t.is("element","ol")||t.is("element","ul")}function P(t){return t.is("element","li")}function z(t){let e=0,i=t.parent;for(;i;){if(P(i))e++;else{const t=i.previousSibling;t&&P(t)&&e++}i=i.parent}return e}function B(t,e,i,s=R(i,e)){return t.createAttributeElement(M(i),null,{priority:2*e/100-100,id:s})}function N(t,e,i){return t.createAttributeElement("li",null,{priority:(2*e+1)/100-100,id:i})}function M(t){return"numbered"==t?"ol":"ul"}function R(t,e){return`list-${t}-${e}`}function O(t,e){const i=t.nodeBefore;if(d(i)){let t=i;for({node:t}of l(t,"backward"))if(e.has(t))return;e.set(i,t)}else{const i=t.nodeAfter;d(i)&&e.set(i,i)}}var H=i(492);function F(){return(t,e,i)=>{if(!i.consumable.test(e.viewItem,{name:!0}))return;const s=new H.UpcastWriter(e.viewItem.document);for(const t of Array.from(e.viewItem.getChildren()))P(t)||E(t)||s.remove(t)}}function D(t,e,i){const s=function(t){return(e,i)=>{const s=[];for(const i of t)e.hasAttribute(i)&&s.push(`attribute:${i}`);return!!s.every((t=>!1!==i.test(e,t)))&&(s.forEach((t=>i.consume(e,t))),!0)}}(t);return(n,r,l)=>{const{writer:a,mapper:c,consumable:d}=l,u=r.item;if(!t.includes(r.attributeKey))return;if(!s(u,d))return;const m=function(t,e,i){const s=i.createRangeOn(t);return e.toViewRange(s).getTrimmed().getContainedElement()}(u,c,i);!function(t,e){let i=t.parent;for(;i.is("attributeElement")&&["ul","ol","li"].includes(i.name);){const s=i.parent;e.unwrap(e.createRangeOn(t),i),i=s}}(m,a),function(t,e,i,s){if(!t.hasAttribute("listIndent"))return;const n=t.getAttribute("listIndent");let r=t;for(let t=n;t>=0;t--){const n=N(s,t,r.getAttribute("listItemId")),l=B(s,t,r.getAttribute("listType"));for(const t of i)r.hasAttribute(t.attributeName)&&t.setAttributeOnDowncast(s,r.getAttribute(t.attributeName),"list"==t.scope?l:n);if(e=s.wrap(e,n),e=s.wrap(e,l),0==t)break;if(r=o.first(r,{lowerIndent:!0}),!r)break}}(u,a.createRangeOn(m),e,a)}}function j(t,{dataPipeline:e}={}){return(i,{writer:s})=>{if(!U(i,t))return;const n=s.createContainerElement("span",{class:"ck-list-bogus-paragraph"});return e&&s.setCustomProperty("dataPipeline:transparentRendering",!0,n),n}}function U(t,e,i=u(t)){if(!d(t))return!1;for(const i of t.getAttributeKeys())if(!i.startsWith("selection:")&&!e.includes(i))return!1;return i.length<2}var q=i(62),K=i.n(q),Z=i(78),$={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};K()(Z.Z,$);Z.Z.locals;const W=["listType","listIndent","listItemId"];class G extends t.Plugin{static get pluginName(){return"DocumentListEditing"}static get requires(){return[e.Enter,n.Delete]}constructor(t){super(t),this._downcastStrategies=[]}init(){const t=this.editor,e=t.model;if(t.plugins.has("ListEditing"))throw new r.CKEditorError("document-list-feature-conflict",this,{conflictPlugin:"ListEditing"});e.schema.extend("$container",{allowAttributes:W}),e.schema.extend("$block",{allowAttributes:W}),e.schema.extend("$blockObject",{allowAttributes:W});for(const t of W)e.schema.setAttributeProperties(t,{copyOnReplace:!0});t.commands.add("numberedList",new C(t,"numbered")),t.commands.add("bulletedList",new C(t,"bulleted")),t.commands.add("indentList",new S(t,"forward")),t.commands.add("outdentList",new S(t,"backward")),t.commands.add("mergeListItemBackward",new V(t,"backward")),t.commands.add("mergeListItemForward",new V(t,"forward")),t.commands.add("splitListItemBefore",new L(t,"before")),t.commands.add("splitListItemAfter",new L(t,"after")),this._setupDeleteIntegration(),this._setupEnterIntegration(),this._setupTabIntegration(),this._setupClipboardIntegration()}afterInit(){const t=this.editor.commands,e=t.get("indent"),i=t.get("outdent");e&&e.registerChildCommand(t.get("indentList"),{priority:"high"}),i&&i.registerChildCommand(t.get("outdentList"),{priority:"lowest"}),this._setupModelPostFixing(),this._setupConversion()}registerDowncastStrategy(t){this._downcastStrategies.push(t)}_getListAttributeNames(){return[...W,...this._downcastStrategies.map((t=>t.attributeName))]}_setupDeleteIntegration(){const t=this.editor,e=t.commands.get("mergeListItemBackward"),i=t.commands.get("mergeListItemForward");this.listenTo(t.editing.view.document,"delete",((s,n)=>{const r=t.model.document.selection;x(t.model)||t.model.change((()=>{const l=r.getFirstPosition();if(r.isCollapsed&&"backward"==n.direction){if(!l.isAtStart)return;const i=l.parent;if(!d(i))return;if(o.first(i,{sameAttributes:"listType",sameIndent:!0})||0!==i.getAttribute("listIndent")){if(!e.isEnabled)return;e.execute({shouldMergeOnBlocksContentLevel:Y(t.model,"backward")})}else f(i)||t.execute("splitListItemAfter"),t.execute("outdentList");n.preventDefault(),s.stop()}else{if(r.isCollapsed&&!r.getLastPosition().isAtEnd)return;if(!i.isEnabled)return;i.execute({shouldMergeOnBlocksContentLevel:Y(t.model,"forward")}),n.preventDefault(),s.stop()}}))}),{context:"li"})}_setupEnterIntegration(){const t=this.editor,e=t.model,i=t.commands,s=i.get("enter");this.listenTo(t.editing.view.document,"enter",((i,s)=>{const n=e.document,r=n.selection.getFirstPosition().parent;if(n.selection.isCollapsed&&d(r)&&r.isEmpty&&!s.isSoft){const e=h(r),n=f(r);e&&n?(t.execute("outdentList"),s.preventDefault(),i.stop()):e&&!n?(t.execute("splitListItemAfter"),s.preventDefault(),i.stop()):n&&(t.execute("splitListItemBefore"),s.preventDefault(),i.stop())}}),{context:"li"}),this.listenTo(s,"afterExecute",(()=>{const e=i.get("splitListItemBefore");if(e.refresh(),!e.isEnabled)return;2===u(t.model.document.selection.getLastPosition().parent).length&&e.execute()}))}_setupTabIntegration(){const t=this.editor;this.listenTo(t.editing.view.document,"tab",((e,i)=>{const s=i.shiftKey?"outdentList":"indentList";this.editor.commands.get(s).isEnabled&&(t.execute(s),i.stopPropagation(),i.preventDefault(),e.stop())}),{context:"li"})}_setupConversion(){const t=this.editor,e=t.model,i=this._getListAttributeNames();t.conversion.for("upcast").elementToElement({view:"li",model:"paragraph"}).add((t=>{t.on("element:li",((t,e,i)=>{const{writer:s,schema:n}=i;if(!e.modelRange)return;const r=Array.from(e.modelRange.getItems({shallow:!0})).filter((t=>n.checkAttribute(t,"listItemId")));if(!r.length)return;const o={listItemId:c.next(),listIndent:z(e.viewItem),listType:e.viewItem.parent&&"ol"==e.viewItem.parent.name?"numbered":"bulleted"};for(const t of r)d(t)||s.setAttributes(o,t);r.length>1&&r[1].getAttribute("listItemId")!=o.listItemId&&i.keepEmptyElement(r[0])})),t.on("element:ul",F(),{priority:"high"}),t.on("element:ol",F(),{priority:"high"})})),t.conversion.for("editingDowncast").elementToElement({model:"paragraph",view:j(i),converterPriority:"high"}),t.conversion.for("dataDowncast").elementToElement({model:"paragraph",view:j(i,{dataPipeline:!0}),converterPriority:"high"}),t.conversion.for("downcast").add((t=>{t.on("attribute",D(i,this._downcastStrategies,e))})),this.listenTo(e.document,"change:data",function(t,e,i,s){return()=>{const s=t.document.differ.getChanges(),o=[],l=new Map,a=new Set;for(const t of s)if("insert"==t.type&&"$text"!=t.name)O(t.position,l),t.attributes.has("listItemId")?a.add(t.position.nodeAfter):O(t.position.getShiftedBy(t.length),l);else if("remove"==t.type&&t.attributes.has("listItemId"))O(t.position,l);else if("attribute"==t.type){const e=t.range.start.nodeAfter;i.includes(t.attributeKey)?(O(t.range.start,l),null===t.attributeNewValue?(O(t.range.start.getShiftedBy(1),l),r(e)&&o.push(e)):a.add(e)):d(e)&&r(e)&&o.push(e)}for(const t of l.values())o.push(...n(t,a));for(const t of new Set(o))e.reconvertItem(t)};function n(t,e){const s=[],n=new Set,a=[];for(const{node:c,previous:d}of l(t,"forward")){if(n.has(c))continue;const t=c.getAttribute("listIndent");d&&t<d.getAttribute("listIndent")&&(a.length=t+1),a[t]=Object.fromEntries(Array.from(c.getAttributes()).filter((([t])=>i.includes(t))));const l=m(c,{direction:"forward"});for(const t of l)n.add(t),(r(t,l)||o(t,a,e))&&s.push(t)}return s}function r(t,s){if(!t.is("element","paragraph"))return!1;const n=e.mapper.toViewElement(t);if(!n)return!1;const r=U(t,i,s);return!(!r||!n.is("element","p"))||!(r||!n.is("element","span"))}function o(t,i,n){if(n.has(t))return!1;const r=e.mapper.toViewElement(t);let o=i.length-1;for(let t=r.parent;!t.is("editableElement");t=t.parent){const e=P(t),n=E(t);if(!n&&!e)continue;const r="checkAttributes:"+(e?"item":"list");if(s.fire(r,{viewElement:t,modelAttributes:i[o]}))break;if(n&&(o--,o<0))return!1}return!0}}(e,t.editing,i,this)),this.on("checkAttributes:item",((t,{viewElement:e,modelAttributes:i})=>{e.id!=i.listItemId&&(t.return=!0,t.stop())})),this.on("checkAttributes:list",((t,{viewElement:e,modelAttributes:i})=>{e.name==M(i.listType)&&e.id==R(i.listType,i.listIndent)||(t.return=!0,t.stop())}))}_setupModelPostFixing(){const t=this.editor.model,e=this._getListAttributeNames();t.document.registerPostFixer((i=>function(t,e,i,s){const n=t.document.differ.getChanges(),r=new Map;let o=!1;for(const s of n)if("insert"==s.type&&"$text"!=s.name){const n=s.position.nodeAfter;if(!t.schema.checkAttribute(n,"listItemId"))for(const t of Array.from(n.getAttributeKeys()))i.includes(t)&&(e.removeAttribute(t,n),o=!0);O(s.position,r),s.attributes.has("listItemId")||O(s.position.getShiftedBy(s.length),r);for(const{item:e,previousPosition:i}of t.createRangeIn(n))d(e)&&O(i,r)}else"remove"==s.type?O(s.position,r):"attribute"==s.type&&i.includes(s.attributeKey)&&(O(s.range.start,r),null===s.attributeNewValue&&O(s.range.start.getShiftedBy(1),r));const l=new Set;for(const t of r.values())o=s.fire("postFixer",{listNodes:new a(t),listHead:t,writer:e,seenIds:l})||o;return o}(t,i,e,this))),this.on("postFixer",((t,{listNodes:e,writer:i})=>{t.return=function(t,e){let i=0,s=-1,n=null,r=!1;for(const{node:o}of t){const t=o.getAttribute("listIndent");if(t>i){let l;null===n?(n=t-i,l=i):(n>t&&(n=t),l=t-n),l>s+1&&(l=s+1),e.setAttribute("listIndent",l,o),r=!0,s=l}else n=null,i=t+1,s=t}return r}(e,i)||t.return}),{priority:"high"}),this.on("postFixer",((t,{listNodes:e,writer:i,seenIds:s})=>{t.return=function(t,e,i){const s=new Set;let n=!1;for(const{node:r}of t){if(s.has(r))continue;let t=r.getAttribute("listType"),o=r.getAttribute("listItemId");e.has(o)&&(o=c.next()),e.add(o);for(const e of m(r,{direction:"forward"}))s.add(e),e.getAttribute("listType")!=t&&(o=c.next(),t=e.getAttribute("listType")),e.getAttribute("listItemId")!=o&&(i.setAttribute("listItemId",o,e),n=!0)}return n}(e,s,i)||t.return}),{priority:"high"})}_setupClipboardIntegration(){const t=this.editor.model;this.listenTo(t,"insertContent",function(t){return(e,[i,s])=>{const n=i.is("documentFragment")?i.getChild(0):i;if(!d(n))return;let r;r=s?t.createSelection(s):t.document.selection;const o=r.getFirstPosition();let a=null;if(d(o.parent)?a=o.parent:d(o.nodeBefore)&&(a=o.nodeBefore),!a)return;const c=a.getAttribute("listIndent")-n.getAttribute("listIndent");c<=0||t.change((t=>{for(const{node:e}of l(n,"forward"))t.setAttribute("listIndent",e.getAttribute("listIndent")+c,e)}))}}(t),{priority:"high"}),this.listenTo(t,"getSelectedContent",((e,[i])=>{I(Array.from(i.getSelectedBlocks()))&&t.change((t=>A(Array.from(e.return.getChildren()),t)))}))}}function Y(t,e){const i=t.document.selection;if(!i.isCollapsed)return!x(t);if("forward"===e)return!0;const s=i.getFirstPosition().parent,n=s.previousSibling;return!t.schema.isObject(n)&&(!!n.isEmpty||I([s,n]))}var J=i(273);function Q(t,e){const i=e.mapper,s=e.writer,n="numbered"==t.getAttribute("listType")?"ol":"ul",r=function(t){const e=t.createContainerElement("li");return e.getFillerOffset=ct,e}(s),o=s.createContainerElement(n,null);return s.insert(s.createPositionAt(o,0),r),i.bindElements(t,r),r}function X(t,e,i,s){const n=e.parent,r=i.mapper,o=i.writer;let l=r.toViewPosition(s.createPositionBefore(t));const a=it(t.previousSibling,{sameIndent:!0,smallerIndent:!0,listIndent:t.getAttribute("listIndent")}),c=t.previousSibling;if(a&&a.getAttribute("listIndent")==t.getAttribute("listIndent")){const t=r.toViewElement(a);l=o.breakContainer(o.createPositionAfter(t))}else if(c&&"listItem"==c.name){l=r.toViewPosition(s.createPositionAt(c,"end"));const t=r.findMappedViewAncestor(l),e=nt(t);l=e?o.createPositionBefore(e):o.createPositionAt(t,"end")}else l=r.toViewPosition(s.createPositionBefore(t));if(l=et(l),o.insert(l,n),c&&"listItem"==c.name){const t=r.toViewElement(c),i=o.createRange(o.createPositionAt(t,0),l).getWalker({ignoreElementEnd:!0});for(const t of i)if(t.item.is("element","li")){const s=o.breakContainer(o.createPositionBefore(t.item)),n=t.item.parent,r=o.createPositionAt(e,"end");tt(o,r.nodeBefore,r.nodeAfter),o.move(o.createRangeOn(n),r),i.position=s}}else{const i=n.nextSibling;if(i&&(i.is("element","ul")||i.is("element","ol"))){let s=null;for(const e of i.getChildren()){const i=r.toModelElement(e);if(!(i&&i.getAttribute("listIndent")>t.getAttribute("listIndent")))break;s=e}s&&(o.breakContainer(o.createPositionAfter(s)),o.move(o.createRangeOn(s.parent),o.createPositionAt(e,"end")))}}tt(o,n,n.nextSibling),tt(o,n.previousSibling,n)}function tt(t,e,i){return!e||!i||"ul"!=e.name&&"ol"!=e.name||e.name!=i.name||e.getAttribute("class")!==i.getAttribute("class")?null:t.mergeContainers(t.createPositionAfter(e))}function et(t){return t.getLastMatchingPosition((t=>t.item.is("uiElement")))}function it(t,e){const i=!!e.sameIndent,s=!!e.smallerIndent,n=e.listIndent;let r=t;for(;r&&"listItem"==r.name;){const t=r.getAttribute("listIndent");if(i&&n==t||s&&n>t)return r;r="forward"===e.direction?r.nextSibling:r.previousSibling}return null}function st(t,e,i,s){t.ui.componentFactory.add(e,(n=>{const r=t.commands.get(e),o=new J.ButtonView(n);return o.set({label:i,icon:s,tooltip:!0,isToggleable:!0}),o.bind("isOn","isEnabled").to(r,"value","isEnabled"),o.on("execute",(()=>{t.execute(e),t.editing.view.focus()})),o}))}function nt(t){for(const e of t.getChildren())if("ul"==e.name||"ol"==e.name)return e;return null}function rt(t,e){const i=[],s=t.parent,n={ignoreElementEnd:!0,startPosition:t,shallow:!0,direction:e},r=s.getAttribute("listIndent"),o=[...new H.TreeWalker(n)].filter((t=>t.item.is("element"))).map((t=>t.item));for(const t of o){if(!t.is("element","listItem"))break;if(t.getAttribute("listIndent")<r)break;if(!(t.getAttribute("listIndent")>r)){if(t.getAttribute("listType")!==s.getAttribute("listType"))break;if(t.getAttribute("listStyle")!==s.getAttribute("listStyle"))break;if(t.getAttribute("listReversed")!==s.getAttribute("listReversed"))break;if(t.getAttribute("listStart")!==s.getAttribute("listStart"))break;"backward"===e?i.unshift(t):i.push(t)}}return i}function ot(t){let e=[...t.document.selection.getSelectedBlocks()].filter((t=>t.is("element","listItem"))).map((e=>{const i=t.change((t=>t.createPositionAt(e,0)));return[...rt(i,"backward"),...rt(i,"forward")]})).flat();return e=[...new Set(e)],e}const lt=["disc","circle","square"],at=["decimal","decimal-leading-zero","lower-roman","upper-roman","lower-latin","upper-latin"];function ct(){const t=!this.isEmpty&&("ul"==this.getChild(0).name||"ol"==this.getChild(0).name);return this.isEmpty||t?0:H.getFillerOffset.call(this)}const dt='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M7 5.75c0 .414.336.75.75.75h9.5a.75.75 0 1 0 0-1.5h-9.5a.75.75 0 0 0-.75.75zM3.5 3v5H2V3.7H1v-1h2.5V3zM.343 17.857l2.59-3.257H2.92a.6.6 0 1 0-1.04 0H.302a2 2 0 1 1 3.995 0h-.001c-.048.405-.16.734-.333.988-.175.254-.59.692-1.244 1.312H4.3v1h-4l.043-.043zM7 14.75a.75.75 0 0 1 .75-.75h9.5a.75.75 0 1 1 0 1.5h-9.5a.75.75 0 0 1-.75-.75z"/></svg>',ut='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M7 5.75c0 .414.336.75.75.75h9.5a.75.75 0 1 0 0-1.5h-9.5a.75.75 0 0 0-.75.75zm-6 0C1 4.784 1.777 4 2.75 4c.966 0 1.75.777 1.75 1.75 0 .966-.777 1.75-1.75 1.75C1.784 7.5 1 6.723 1 5.75zm6 9c0 .414.336.75.75.75h9.5a.75.75 0 1 0 0-1.5h-9.5a.75.75 0 0 0-.75.75zm-6 0c0-.966.777-1.75 1.75-1.75.966 0 1.75.777 1.75 1.75 0 .966-.777 1.75-1.75 1.75-.966 0-1.75-.777-1.75-1.75z"/></svg>';class mt extends t.Plugin{static get pluginName(){return"ListUI"}init(){const t=this.editor.t;st(this.editor,"numberedList",t("Numbered List"),dt),st(this.editor,"bulletedList",t("Bulleted List"),ut)}}class pt extends t.Plugin{static get requires(){return[G,mt]}static get pluginName(){return"DocumentList"}}class ht extends t.Command{refresh(){const t=this._getValue();this.value=t,this.isEnabled=null!=t}execute(t={}){const e=this.editor.model,i=e.document;let s=Array.from(i.selection.getSelectedBlocks()).filter((t=>d(t)&&"numbered"==t.getAttribute("listType")));s=g(s),e.change((e=>{for(const i of s)e.setAttribute("listStart",t.startIndex||1,i)}))}_getValue(){const t=this.editor.model.document,e=(0,r.first)(t.selection.getSelectedBlocks());return e&&d(e)&&"numbered"==e.getAttribute("listType")?e.getAttribute("listStart"):null}}const ft={},bt={},gt={},vt=[{listStyle:"disc",typeAttribute:"disc",listType:"bulleted"},{listStyle:"circle",typeAttribute:"circle",listType:"bulleted"},{listStyle:"square",typeAttribute:"square",listType:"bulleted"},{listStyle:"decimal",typeAttribute:"1",listType:"numbered"},{listStyle:"decimal-leading-zero",typeAttribute:null,listType:"numbered"},{listStyle:"lower-roman",typeAttribute:"i",listType:"numbered"},{listStyle:"upper-roman",typeAttribute:"I",listType:"numbered"},{listStyle:"lower-alpha",typeAttribute:"a",listType:"numbered"},{listStyle:"upper-alpha",typeAttribute:"A",listType:"numbered"},{listStyle:"lower-latin",typeAttribute:"a",listType:"numbered"},{listStyle:"upper-latin",typeAttribute:"A",listType:"numbered"}];for(const{listStyle:t,typeAttribute:e,listType:i}of vt)ft[t]=i,bt[t]=e,e&&(gt[e]=t);function yt(t){return ft[t]||null}function wt(t){return bt[t]||null}class At extends t.Command{constructor(t,e,i){super(t),this._defaultType=e,this._supportedTypes=i}refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(t={}){const e=this.editor.model,i=e.document;e.change((e=>{this._tryToConvertItemsToList(t);let s=Array.from(i.selection.getSelectedBlocks()).filter((t=>t.hasAttribute("listType")));if(s.length){s=g(s);for(const i of s)e.setAttribute("listStyle",t.type||this._defaultType,i)}}))}isStyleTypeSupported(t){return!this._supportedTypes||this._supportedTypes.includes(t)}_getValue(){const t=(0,r.first)(this.editor.model.document.selection.getSelectedBlocks());return d(t)?t.getAttribute("listStyle"):null}_checkEnabled(){const t=this.editor,e=t.commands.get("numberedList"),i=t.commands.get("bulletedList");return e.isEnabled||i.isEnabled}_tryToConvertItemsToList(t){if(!t.type)return;const e=yt(t.type);if(!e)return;const i=this.editor,s=e+"List";i.commands.get(s).value||i.execute(s)}}class It extends t.Command{refresh(){const t=this._getValue();this.value=t,this.isEnabled=null!=t}execute(t={}){const e=this.editor.model,i=e.document;let s=Array.from(i.selection.getSelectedBlocks()).filter((t=>d(t)&&"numbered"==t.getAttribute("listType")));s=g(s),e.change((e=>{for(const i of s)e.setAttribute("listReversed",!!t.reversed,i)}))}_getValue(){const t=this.editor.model.document,e=(0,r.first)(t.selection.getSelectedBlocks());return d(e)&&"numbered"==e.getAttribute("listType")?e.getAttribute("listReversed"):null}}function kt(t){return(e,i,s)=>{const{writer:n,schema:r,consumable:o}=s;if(!1===o.test(i.viewItem,t.viewConsumables))return;i.modelRange||Object.assign(i,s.convertChildren(i.viewItem,i.modelCursor));let l=!1;for(const e of i.modelRange.getItems({shallow:!0}))r.checkAttribute(e,t.attributeName)&&t.appliesToListItem(e)&&(e.hasAttribute(t.attributeName)||(n.setAttribute(t.attributeName,t.getAttributeOnUpcast(i.viewItem),e),l=!0));l&&o.consume(i.viewItem,t.viewConsumables)}}const xt="default";class Tt extends t.Plugin{static get requires(){return[G]}static get pluginName(){return"DocumentListPropertiesEditing"}constructor(t){super(t),t.config.define("list",{properties:{styles:!0,startIndex:!1,reversed:!1}})}init(){const t=this.editor,e=t.model,i=t.plugins.get(G),s=function(t){const e=[];if(t.styles){const i="object"==typeof t.styles&&t.styles.useAttribute;e.push({attributeName:"listStyle",defaultValue:xt,viewConsumables:{styles:"list-style-type"},addCommand(t){let e=vt.map((t=>t.listStyle));i&&(e=e.filter((t=>!!wt(t)))),t.commands.add("listStyle",new At(t,xt,e))},appliesToListItem:()=>!0,hasValidAttribute(t){if(!t.hasAttribute("listStyle"))return!1;const e=t.getAttribute("listStyle");return e==xt||yt(e)==t.getAttribute("listType")},setAttributeOnDowncast(t,e,s){if(e&&e!==xt){if(!i)return void t.setStyle("list-style-type",e,s);{const i=wt(e);if(i)return void t.setAttribute("type",i,s)}}t.removeStyle("list-style-type",s),t.removeAttribute("type",s)},getAttributeOnUpcast(t){const e=t.getStyle("list-style-type");if(e)return e;const i=t.getAttribute("type");return i?gt[i]||null:xt}})}t.reversed&&e.push({attributeName:"listReversed",defaultValue:!1,viewConsumables:{attributes:"reversed"},addCommand(t){t.commands.add("listReversed",new It(t))},appliesToListItem:t=>"numbered"==t.getAttribute("listType"),hasValidAttribute(t){return this.appliesToListItem(t)==t.hasAttribute("listReversed")},setAttributeOnDowncast(t,e,i){e?t.setAttribute("reversed","reversed",i):t.removeAttribute("reversed",i)},getAttributeOnUpcast:t=>t.hasAttribute("reversed")});t.startIndex&&e.push({attributeName:"listStart",defaultValue:1,viewConsumables:{attributes:"start"},addCommand(t){t.commands.add("listStart",new ht(t))},appliesToListItem:t=>"numbered"==t.getAttribute("listType"),hasValidAttribute(t){return this.appliesToListItem(t)==t.hasAttribute("listStart")},setAttributeOnDowncast(t,e,i){e&&e>1?t.setAttribute("start",e,i):t.removeAttribute("start",i)},getAttributeOnUpcast:t=>t.getAttribute("start")||1});return e}(t.config.get("list.properties"));for(const n of s)n.addCommand(t),e.schema.extend("$container",{allowAttributes:n.attributeName}),e.schema.extend("$block",{allowAttributes:n.attributeName}),e.schema.extend("$blockObject",{allowAttributes:n.attributeName}),i.registerDowncastStrategy({scope:"list",attributeName:n.attributeName,setAttributeOnDowncast(t,e,i){n.setAttributeOnDowncast(t,e,i)}});t.conversion.for("upcast").add((t=>{for(const e of s)t.on("element:ol",kt(e)),t.on("element:ul",kt(e))})),i.on("checkAttributes:list",((t,{viewElement:e,modelAttributes:i})=>{for(const n of s)n.getAttributeOnUpcast(e)!=i[n.attributeName]&&(t.return=!0,t.stop())})),this.listenTo(t.commands.get("indentList"),"afterExecute",((t,i)=>{e.change((t=>{for(const e of i)for(const i of s)i.appliesToListItem(e)&&t.setAttribute(i.attributeName,i.defaultValue,e)}))})),i.on("postFixer",((t,{listNodes:e,writer:i})=>{for(const{node:n}of e)for(const e of s)e.hasValidAttribute(n)||(e.appliesToListItem(n)?i.setAttribute(e.attributeName,e.defaultValue,n):i.removeAttribute(e.attributeName,n),t.return=!0)})),i.on("postFixer",((t,{listNodes:e,writer:i})=>{const n=[];for(const{node:r,previous:o}of e){if(!o)continue;const e=r.getAttribute("listIndent"),l=o.getAttribute("listIndent");let a=null;if(e>l?n[l]=o:e<l?(a=n[e],n.length=e):a=o,a&&a.getAttribute("listType")==r.getAttribute("listType"))for(const e of s){const{attributeName:s}=e;if(!e.appliesToListItem(r))continue;const n=a.getAttribute(s);r.getAttribute(s)!=n&&(i.setAttribute(s,n,r),t.return=!0)}}}))}}var St=i(389),_t={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};K()(St.Z,_t);St.Z.locals;class Ct extends J.View{constructor(t,e){super(t);const i=this.bindTemplate;this.set("isCollapsed",!1),this.set("label",""),this.buttonView=this._createButtonView(),this.children=this.createCollection(),this.set("_collapsibleAriaLabelUid"),e&&this.children.addMany(e),this.setTemplate({tag:"div",attributes:{class:["ck","ck-collapsible",i.if("isCollapsed","ck-collapsible_collapsed")]},children:[this.buttonView,{tag:"div",attributes:{class:["ck","ck-collapsible__children"],role:"region",hidden:i.if("isCollapsed","hidden"),"aria-labelledby":i.to("_collapsibleAriaLabelUid")},children:this.children}]})}render(){super.render(),this._collapsibleAriaLabelUid=this.buttonView.labelView.element.id}_createButtonView(){const t=new J.ButtonView(this.locale),e=t.bindTemplate;return t.set({withText:!0,icon:'<svg viewBox="0 0 10 10" xmlns="http://www.w3.org/2000/svg"><path d="M.941 4.523a.75.75 0 1 1 1.06-1.06l3.006 3.005 3.005-3.005a.75.75 0 1 1 1.06 1.06l-3.549 3.55a.75.75 0 0 1-1.168-.136L.941 4.523z"/></svg>'}),t.extendTemplate({attributes:{"aria-expanded":e.to("isOn",(t=>String(t)))}}),t.bind("label").to(this),t.bind("isOn").to(this,"isCollapsed",(t=>!t)),t.on("execute",(()=>{this.isCollapsed=!this.isCollapsed})),t}}var Vt=i(543),Lt={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};K()(Vt.Z,Lt);Vt.Z.locals;class Et extends J.View{constructor(t,{enabledProperties:e,styleButtonViews:i,styleGridAriaLabel:s}){super(t);const n=["ck","ck-list-properties"];this.children=this.createCollection(),this.stylesView=null,this.additionalPropertiesCollapsibleView=null,this.startIndexFieldView=null,this.reversedSwitchButtonView=null,this.focusTracker=new r.FocusTracker,this.keystrokes=new r.KeystrokeHandler,this.focusables=new J.ViewCollection,this.focusCycler=new J.FocusCycler({focusables:this.focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),e.styles?(this.stylesView=this._createStylesView(i,s),this.children.add(this.stylesView)):n.push("ck-list-properties_without-styles"),(e.startIndex||e.reversed)&&(this._addNumberedListPropertyViews(e,i),n.push("ck-list-properties_with-numbered-properties")),this.setTemplate({tag:"div",attributes:{class:n},children:this.children})}render(){if(super.render(),this.stylesView){this.focusables.add(this.stylesView),this.focusTracker.add(this.stylesView.element),(this.startIndexFieldView||this.reversedSwitchButtonView)&&(this.focusables.add(this.children.last.buttonView),this.focusTracker.add(this.children.last.buttonView.element));for(const t of this.stylesView.children)this.stylesView.focusTracker.add(t.element);(0,J.addKeyboardHandlingForGrid)({keystrokeHandler:this.stylesView.keystrokes,focusTracker:this.stylesView.focusTracker,gridItems:this.stylesView.children,numberOfColumns:()=>r.global.window.getComputedStyle(this.stylesView.element).getPropertyValue("grid-template-columns").split(" ").length})}if(this.startIndexFieldView){this.focusables.add(this.startIndexFieldView),this.focusTracker.add(this.startIndexFieldView.element),this.listenTo(this.startIndexFieldView.element,"selectstart",((t,e)=>{e.stopPropagation()}),{priority:"high"});const t=t=>t.stopPropagation();this.keystrokes.set("arrowright",t),this.keystrokes.set("arrowleft",t),this.keystrokes.set("arrowup",t),this.keystrokes.set("arrowdown",t)}this.reversedSwitchButtonView&&(this.focusables.add(this.reversedSwitchButtonView),this.focusTracker.add(this.reversedSwitchButtonView.element)),this.keystrokes.listenTo(this.element)}focus(){this.focusCycler.focusFirst()}focusLast(){this.focusCycler.focusLast()}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}_createStylesView(t,e){const i=new J.View(this.locale);return i.children=i.createCollection(this.locale),i.children.addMany(t),i.setTemplate({tag:"div",attributes:{"aria-label":e,class:["ck","ck-list-styles-list"]},children:i.children}),i.children.delegate("execute").to(this),i.focus=function(){this.children.first.focus()},i.focusTracker=new r.FocusTracker,i.keystrokes=new r.KeystrokeHandler,i.render(),i.keystrokes.listenTo(i.element),i}_addNumberedListPropertyViews(t){const e=this.locale.t,i=[];t.startIndex&&(this.startIndexFieldView=this._createStartIndexField(),i.push(this.startIndexFieldView)),t.reversed&&(this.reversedSwitchButtonView=this._createReversedSwitchButton(),i.push(this.reversedSwitchButtonView)),t.styles?(this.additionalPropertiesCollapsibleView=new Ct(this.locale,i),this.additionalPropertiesCollapsibleView.set({label:e("List properties"),isCollapsed:!0}),this.additionalPropertiesCollapsibleView.buttonView.bind("isEnabled").toMany(i,"isEnabled",((...t)=>t.some((t=>t)))),this.additionalPropertiesCollapsibleView.buttonView.on("change:isEnabled",((t,e,i)=>{i||(this.additionalPropertiesCollapsibleView.isCollapsed=!0)})),this.children.add(this.additionalPropertiesCollapsibleView)):this.children.addMany(i)}_createStartIndexField(){const t=this.locale.t,e=new J.LabeledFieldView(this.locale,J.createLabeledInputNumber);return e.set({label:t("Start at"),class:"ck-numbered-list-properties__start-index"}),e.fieldView.set({min:1,step:1,value:1,inputMode:"numeric"}),e.fieldView.on("input",(()=>{const i=e.fieldView.element,s=i.valueAsNumber;Number.isNaN(s)||(i.checkValidity()?this.fire("listStart",{startIndex:s}):e.errorText=t("Start index must be greater than 0."))})),e}_createReversedSwitchButton(){const t=this.locale.t,e=new J.SwitchButtonView(this.locale);return e.set({withText:!0,label:t("Reversed order"),class:"ck-numbered-list-properties__reversed-order"}),e.delegate("execute").to(this,"listReversed"),e}}var Pt=i(657),zt={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};K()(Pt.Z,zt);Pt.Z.locals;class Bt extends t.Plugin{static get pluginName(){return"ListPropertiesUI"}init(){const t=this.editor,e=t.locale.t,i=t.config.get("list.properties");i.styles&&t.ui.componentFactory.add("bulletedList",Nt({editor:t,parentCommandName:"bulletedList",buttonLabel:e("Bulleted List"),buttonIcon:ut,styleGridAriaLabel:e("Bulleted list styles toolbar"),styleDefinitions:[{label:e("Toggle the disc list style"),tooltip:e("Disc"),type:"disc",icon:'<svg viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><path d="M35 29a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17z" fill-opacity=".163"/><path d="M11 27a3 3 0 1 1 0 6 3 3 0 0 1 0-6zm0-9a3 3 0 1 1 0 6 3 3 0 0 1 0-6zm0-9a3 3 0 1 1 0 6 3 3 0 0 1 0-6z"/></svg>'},{label:e("Toggle the circle list style"),tooltip:e("Circle"),type:"circle",icon:'<svg viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><path d="M35 29a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17z" fill-opacity=".163"/><path d="M11 27a3 3 0 1 1 0 6 3 3 0 0 1 0-6zm0 1a2 2 0 1 0 0 4 2 2 0 0 0 0-4zm0-10a3 3 0 1 1 0 6 3 3 0 0 1 0-6zm0 1a2 2 0 1 0 0 4 2 2 0 0 0 0-4zm0-10a3 3 0 1 1 0 6 3 3 0 0 1 0-6zm0 1a2 2 0 1 0 0 4 2 2 0 0 0 0-4z"/></svg>'},{label:e("Toggle the square list style"),tooltip:e("Square"),type:"square",icon:'<svg viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><path d="M35 29a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17z" fill-opacity=".163"/><path d="M14 27v6H8v-6h6zm0-9v6H8v-6h6zm0-9v6H8V9h6z"/></svg>'}]})),(i.styles||i.startIndex||i.reversed)&&t.ui.componentFactory.add("numberedList",Nt({editor:t,parentCommandName:"numberedList",buttonLabel:e("Numbered List"),buttonIcon:dt,styleGridAriaLabel:e("Numbered list styles toolbar"),styleDefinitions:[{label:e("Toggle the decimal list style"),tooltip:e("Decimal"),type:"decimal",icon:'<svg viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><path d="M35 29a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17z" fill-opacity=".163"/><path d="M10.29 15V8.531H9.286c-.14.393-.4.736-.778 1.03-.378.295-.728.495-1.05.6v1.121a4.257 4.257 0 0 0 1.595-.936V15h1.235zm3.343 0v-1.235h-1.235V15h1.235zM11.3 24v-1.147H8.848c.064-.111.148-.226.252-.343.104-.117.351-.354.74-.712.39-.357.66-.631.81-.821.225-.288.39-.562.494-.824.104-.263.156-.539.156-.829 0-.51-.182-.936-.545-1.279-.363-.342-.863-.514-1.499-.514-.58 0-1.063.148-1.45.444-.387.296-.617.784-.69 1.463l1.23.124c.024-.36.112-.619.264-.774.153-.155.358-.233.616-.233.26 0 .465.074.613.222.148.148.222.36.222.635 0 .25-.085.501-.255.756-.126.185-.468.536-1.024 1.055-.692.641-1.155 1.156-1.389 1.544-.234.389-.375.8-.422 1.233H11.3zm2.333 0v-1.235h-1.235V24h1.235zM9.204 34.11c.615 0 1.129-.2 1.542-.598.413-.398.62-.88.62-1.446 0-.39-.11-.722-.332-.997a1.5 1.5 0 0 0-.886-.532c.619-.337.928-.788.928-1.353 0-.399-.151-.756-.453-1.073-.366-.386-.852-.58-1.459-.58a2.25 2.25 0 0 0-.96.2 1.617 1.617 0 0 0-.668.55c-.16.232-.28.544-.358.933l1.138.194c.032-.282.123-.495.272-.642.15-.146.33-.22.54-.22.215 0 .386.065.515.194s.193.302.193.518c0 .255-.087.46-.263.613-.176.154-.43.227-.765.218l-.136 1.006c.22-.061.409-.092.567-.092.24 0 .444.09.61.272.168.182.251.428.251.739 0 .328-.087.589-.261.782a.833.833 0 0 1-.644.29.841.841 0 0 1-.607-.242c-.167-.16-.27-.394-.307-.698l-1.196.145c.062.542.285.98.668 1.316.384.335.868.503 1.45.503zm4.43-.11v-1.235h-1.236V34h1.235z"/></svg>'},{label:e("Toggle the decimal with leading zero list style"),tooltip:e("Decimal with leading zero"),type:"decimal-leading-zero",icon:'<svg viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><path d="M35 29a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17z" fill-opacity=".163"/><path d="M5.714 15.11c.624 0 1.11-.22 1.46-.66.421-.533.632-1.408.632-2.627 0-1.222-.21-2.096-.629-2.624-.351-.445-.839-.668-1.463-.668-.624 0-1.11.22-1.459.66-.422.533-.633 1.406-.633 2.619 0 1.236.192 2.095.576 2.577.384.482.89.723 1.516.723zm0-1.024a.614.614 0 0 1-.398-.14c-.115-.094-.211-.283-.287-.565-.077-.283-.115-.802-.115-1.558s.043-1.294.128-1.613c.064-.246.155-.417.272-.512a.617.617 0 0 1 .4-.143.61.61 0 0 1 .398.143c.116.095.211.284.288.567.076.283.114.802.114 1.558s-.043 1.292-.128 1.608c-.064.246-.155.417-.272.512a.617.617 0 0 1-.4.143zm6.078.914V8.531H10.79c-.14.393-.4.736-.778 1.03-.378.295-.728.495-1.05.6v1.121a4.257 4.257 0 0 0 1.595-.936V15h1.235zm3.344 0v-1.235h-1.235V15h1.235zm-9.422 9.11c.624 0 1.11-.22 1.46-.66.421-.533.632-1.408.632-2.627 0-1.222-.21-2.096-.629-2.624-.351-.445-.839-.668-1.463-.668-.624 0-1.11.22-1.459.66-.422.533-.633 1.406-.633 2.619 0 1.236.192 2.095.576 2.577.384.482.89.723 1.516.723zm0-1.024a.614.614 0 0 1-.398-.14c-.115-.094-.211-.283-.287-.565-.077-.283-.115-.802-.115-1.558s.043-1.294.128-1.613c.064-.246.155-.417.272-.512a.617.617 0 0 1 .4-.143.61.61 0 0 1 .398.143c.116.095.211.284.288.567.076.283.114.802.114 1.558s-.043 1.292-.128 1.608c-.064.246-.155.417-.272.512a.617.617 0 0 1-.4.143zm7.088.914v-1.147H10.35c.065-.111.149-.226.253-.343.104-.117.35-.354.74-.712.39-.357.66-.631.81-.821.225-.288.39-.562.493-.824.104-.263.156-.539.156-.829 0-.51-.181-.936-.544-1.279-.364-.342-.863-.514-1.499-.514-.58 0-1.063.148-1.45.444-.387.296-.617.784-.69 1.463l1.23.124c.024-.36.112-.619.264-.774.152-.155.357-.233.615-.233.261 0 .465.074.613.222.148.148.222.36.222.635 0 .25-.085.501-.255.756-.126.185-.467.536-1.024 1.055-.691.641-1.154 1.156-1.388 1.544-.235.389-.375.8-.422 1.233h4.328zm2.334 0v-1.235h-1.235V24h1.235zM5.714 34.11c.624 0 1.11-.22 1.46-.66.421-.533.632-1.408.632-2.627 0-1.222-.21-2.096-.629-2.624-.351-.445-.839-.668-1.463-.668-.624 0-1.11.22-1.459.66-.422.533-.633 1.406-.633 2.619 0 1.236.192 2.095.576 2.577.384.482.89.723 1.516.723zm0-1.024a.614.614 0 0 1-.398-.14c-.115-.094-.211-.283-.287-.565-.077-.283-.115-.802-.115-1.558s.043-1.294.128-1.613c.064-.246.155-.417.272-.512a.617.617 0 0 1 .4-.143.61.61 0 0 1 .398.143c.116.095.211.284.288.567.076.283.114.802.114 1.558s-.043 1.292-.128 1.608c-.064.246-.155.417-.272.512a.617.617 0 0 1-.4.143zm4.992 1.024c.616 0 1.13-.2 1.543-.598.413-.398.62-.88.62-1.446 0-.39-.111-.722-.332-.997a1.5 1.5 0 0 0-.886-.532c.618-.337.927-.788.927-1.353 0-.399-.15-.756-.452-1.073-.366-.386-.853-.58-1.46-.58a2.25 2.25 0 0 0-.96.2 1.617 1.617 0 0 0-.667.55c-.16.232-.28.544-.359.933l1.139.194c.032-.282.123-.495.272-.642.15-.146.33-.22.54-.22.214 0 .386.065.515.194s.193.302.193.518c0 .255-.088.46-.264.613-.175.154-.43.227-.764.218l-.136 1.006c.22-.061.408-.092.566-.092.24 0 .444.09.611.272.167.182.25.428.25.739 0 .328-.086.589-.26.782a.833.833 0 0 1-.644.29.841.841 0 0 1-.607-.242c-.167-.16-.27-.394-.308-.698l-1.195.145c.062.542.284.98.668 1.316.384.335.867.503 1.45.503zm4.43-.11v-1.235h-1.235V34h1.235z"/></svg>'},{label:e("Toggle the lower–roman list style"),tooltip:e("Lower–roman"),type:"lower-roman",icon:'<svg viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><path d="M35 29a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17z" fill-opacity=".163"/><path d="M11.88 8.7V7.558h-1.234V8.7h1.234zm0 5.3V9.333h-1.234V14h1.234zm2.5 0v-1.235h-1.234V14h1.235zm-4.75 4.7v-1.142H8.395V18.7H9.63zm0 5.3v-4.667H8.395V24H9.63zm2.5-5.3v-1.142h-1.234V18.7h1.235zm0 5.3v-4.667h-1.234V24h1.235zm2.501 0v-1.235h-1.235V24h1.235zM7.38 28.7v-1.142H6.145V28.7H7.38zm0 5.3v-4.667H6.145V34H7.38zm2.5-5.3v-1.142H8.646V28.7H9.88zm0 5.3v-4.667H8.646V34H9.88zm2.5-5.3v-1.142h-1.234V28.7h1.235zm0 5.3v-4.667h-1.234V34h1.235zm2.501 0v-1.235h-1.235V34h1.235z"/></svg>'},{label:e("Toggle the upper–roman list style"),tooltip:e("Upper-roman"),type:"upper-roman",icon:'<svg viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><path d="M35 29a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17z" fill-opacity=".163"/><path d="M11.916 15V8.558h-1.301V15h1.3zm2.465 0v-1.235h-1.235V15h1.235zM9.665 25v-6.442h-1.3V25h1.3zm2.5 0v-6.442h-1.3V25h1.3zm2.466 0v-1.235h-1.235V25h1.235zm-7.216 9v-6.442h-1.3V34h1.3zm2.5 0v-6.442h-1.3V34h1.3zm2.501 0v-6.442h-1.3V34h1.3zm2.465 0v-1.235h-1.235V34h1.235z"/></svg>'},{label:e("Toggle the lower–latin list style"),tooltip:e("Lower-latin"),type:"lower-latin",icon:'<svg viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><path d="M35 29a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17z" fill-opacity=".163"/><path d="M9.62 14.105c.272 0 .528-.05.768-.153s.466-.257.677-.462c.009.024.023.072.044.145.047.161.086.283.119.365h1.221a2.649 2.649 0 0 1-.222-.626c-.04-.195-.059-.498-.059-.908l.013-1.441c0-.536-.055-.905-.165-1.105-.11-.201-.3-.367-.569-.497-.27-.13-.68-.195-1.23-.195-.607 0-1.064.108-1.371.325-.308.217-.525.55-.65 1.002l1.12.202c.076-.217.176-.369.299-.455.123-.086.294-.13.514-.13.325 0 .546.05.663.152.118.101.176.27.176.508v.123c-.222.093-.622.194-1.2.303-.427.082-.755.178-.982.288-.227.11-.403.268-.53.474a1.327 1.327 0 0 0-.188.706c0 .398.138.728.415.988.277.261.656.391 1.136.391zm.368-.87a.675.675 0 0 1-.492-.189.606.606 0 0 1-.193-.448c0-.176.08-.32.241-.435.106-.07.33-.142.673-.215a7.19 7.19 0 0 0 .751-.19v.247c0 .296-.016.496-.048.602a.773.773 0 0 1-.295.409 1.07 1.07 0 0 1-.637.22zm4.645.765v-1.235h-1.235V14h1.235zM10.2 25.105c.542 0 1.003-.215 1.382-.646.38-.43.57-1.044.57-1.84 0-.771-.187-1.362-.559-1.774a1.82 1.82 0 0 0-1.41-.617c-.522 0-.973.216-1.354.65v-2.32H7.594V25h1.147v-.686a1.9 1.9 0 0 0 .67.592c.26.133.523.2.79.2zm-.299-.975c-.354 0-.638-.164-.852-.492-.153-.232-.229-.59-.229-1.073 0-.468.098-.818.295-1.048a.93.93 0 0 1 .738-.345c.302 0 .55.118.743.354.193.236.29.62.29 1.154 0 .5-.096.868-.288 1.1-.192.233-.424.35-.697.35zm4.478.87v-1.235h-1.234V25h1.234zm-4.017 9.105c.6 0 1.08-.142 1.437-.426.357-.284.599-.704.725-1.261l-1.213-.207c-.061.326-.167.555-.316.688a.832.832 0 0 1-.576.2.916.916 0 0 1-.75-.343c-.185-.228-.278-.62-.278-1.173 0-.498.091-.853.274-1.066.183-.212.429-.318.736-.318.232 0 .42.061.565.184.145.123.238.306.28.55l1.216-.22c-.146-.501-.387-.874-.722-1.119-.336-.244-.788-.366-1.356-.366-.695 0-1.245.214-1.653.643-.407.43-.61 1.03-.61 1.8 0 .762.202 1.358.608 1.788.406.431.95.646 1.633.646zM14.633 34v-1.235h-1.235V34h1.235z"/></svg>'},{label:e("Toggle the upper–latin list style"),tooltip:e("Upper-latin"),type:"upper-latin",icon:'<svg viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><path d="M35 29a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17z" fill-opacity=".163"/><path d="m7.88 15 .532-1.463h2.575L11.549 15h1.415l-2.58-6.442H9.01L6.5 15h1.38zm2.69-2.549H8.811l.87-2.39.887 2.39zM14.88 15v-1.235h-1.234V15h1.234zM9.352 25c.83-.006 1.352-.02 1.569-.044.346-.038.636-.14.872-.305.236-.166.422-.387.558-.664.137-.277.205-.562.205-.855 0-.372-.106-.695-.317-.97-.21-.276-.512-.471-.905-.585a1.51 1.51 0 0 0 .661-.567 1.5 1.5 0 0 0 .244-.83c0-.28-.066-.53-.197-.754a1.654 1.654 0 0 0-.495-.539 1.676 1.676 0 0 0-.672-.266c-.25-.042-.63-.063-1.14-.063H7.158V25h2.193zm.142-3.88H8.46v-1.49h.747c.612 0 .983.007 1.112.022.217.026.38.102.49.226.11.125.165.287.165.486a.68.68 0 0 1-.192.503.86.86 0 0 1-.525.23 11.47 11.47 0 0 1-.944.023h.18zm.17 2.795H8.46v-1.723h1.05c.592 0 .977.03 1.154.092.177.062.313.16.406.295a.84.84 0 0 1 .14.492c0 .228-.06.41-.181.547a.806.806 0 0 1-.473.257c-.126.026-.423.04-.892.04zM14.88 25v-1.235h-1.234V25h1.234zm-5.018 9.11c.691 0 1.262-.17 1.711-.512.45-.341.772-.864.965-1.567l-1.261-.4c-.109.472-.287.818-.536 1.037-.25.22-.547.33-.892.33-.47 0-.85-.173-1.143-.519-.293-.345-.44-.925-.44-1.74 0-.767.15-1.322.447-1.665.297-.343.684-.514 1.162-.514.346 0 .64.096.881.29.242.193.4.457.477.79l1.288-.307c-.147-.516-.367-.911-.66-1.187-.492-.465-1.132-.698-1.92-.698-.902 0-1.63.296-2.184.89-.554.593-.83 1.426-.83 2.498 0 1.014.275 1.813.825 2.397.551.585 1.254.877 2.11.877zM14.88 34v-1.235h-1.234V34h1.234z"/></svg>'}]}))}}function Nt({editor:t,parentCommandName:e,buttonLabel:i,buttonIcon:s,styleGridAriaLabel:n,styleDefinitions:r}){const o=t.commands.get(e);return l=>{const a=(0,J.createDropdown)(l,J.SplitButtonView),c=a.buttonView;a.bind("isEnabled").to(o),a.class="ck-list-styles-dropdown",c.on("execute",(()=>{t.execute(e),t.editing.view.focus()})),c.set({label:i,icon:s,tooltip:!0,isToggleable:!0}),c.bind("isOn").to(o,"value",(t=>!!t));const d=function({editor:t,dropdownView:e,parentCommandName:i,styleDefinitions:s,styleGridAriaLabel:n}){const r=t.locale,o=t.config.get("list.properties");let l;"numberedList"!=i&&(o.startIndex=!1,o.reversed=!1);if(o.styles){const e=t.commands.get("listStyle"),n=function({editor:t,listStyleCommand:e,parentCommandName:i}){const s=t.locale,n=t.commands.get(i);return({label:i,type:r,icon:o,tooltip:l})=>{const a=new J.ButtonView(s);return a.set({label:i,icon:o,tooltip:l}),e.on("change:value",(()=>{a.isOn=e.value===r})),a.on("execute",(()=>{n.value?e.value!==r?t.execute("listStyle",{type:r}):t.execute("listStyle",{type:e._defaultType}):t.model.change((()=>{t.execute("listStyle",{type:r})}))})),a}}({editor:t,parentCommandName:i,listStyleCommand:e}),r="function"==typeof e.isStyleTypeSupported?t=>e.isStyleTypeSupported(t.type):()=>!0;l=s.filter(r).map(n)}const a=new Et(r,{styleGridAriaLabel:n,enabledProperties:o,styleButtonViews:l});o.styles&&(0,J.focusChildOnDropdownOpen)(e,(()=>a.stylesView.children.find((t=>t.isOn))));if(o.startIndex){const e=t.commands.get("listStart");a.startIndexFieldView.bind("isEnabled").to(e),a.startIndexFieldView.fieldView.bind("value").to(e),a.on("listStart",((e,i)=>t.execute("listStart",i)))}if(o.reversed){const e=t.commands.get("listReversed");a.reversedSwitchButtonView.bind("isEnabled").to(e),a.reversedSwitchButtonView.bind("isOn").to(e,"value"),a.on("listReversed",(()=>{const i=e.value;t.execute("listReversed",{reversed:!i})}))}return a.delegate("execute").to(e),a}({editor:t,dropdownView:a,parentCommandName:e,styleGridAriaLabel:n,styleDefinitions:r});return a.panelView.children.add(d),a.on("execute",(()=>{t.editing.view.focus()})),a}}class Mt extends t.Plugin{static get requires(){return[Tt,Bt]}static get pluginName(){return"DocumentListProperties"}}class Rt extends t.Command{constructor(t,e){super(t),this.type=e}refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(t={}){const e=this.editor.model,i=e.document,s=Array.from(i.selection.getSelectedBlocks()).filter((t=>Ht(t,e.schema))),n=void 0!==t.forceValue?!t.forceValue:this.value;e.change((t=>{if(n){let e=s[s.length-1].nextSibling,i=Number.POSITIVE_INFINITY,n=[];for(;e&&"listItem"==e.name&&0!==e.getAttribute("listIndent");){const t=e.getAttribute("listIndent");t<i&&(i=t);const s=t-i;n.push({element:e,listIndent:s}),e=e.nextSibling}n=n.reverse();for(const e of n)t.setAttribute("listIndent",e.listIndent,e.element)}if(!n){let t=Number.POSITIVE_INFINITY;for(const e of s)e.is("element","listItem")&&e.getAttribute("listIndent")<t&&(t=e.getAttribute("listIndent"));t=0===t?1:t,Ot(s,!0,t),Ot(s,!1,t)}for(const e of s.reverse())n&&"listItem"==e.name?t.rename(e,"paragraph"):n||"listItem"==e.name?n||"listItem"!=e.name||e.getAttribute("listType")==this.type||t.setAttribute("listType",this.type,e):(t.setAttributes({listType:this.type,listIndent:0},e),t.rename(e,"listItem"));this.fire("_executeCleanup",s)}))}_getValue(){const t=(0,r.first)(this.editor.model.document.selection.getSelectedBlocks());return!!t&&t.is("element","listItem")&&t.getAttribute("listType")==this.type}_checkEnabled(){if(this.value)return!0;const t=this.editor.model.document.selection,e=this.editor.model.schema,i=(0,r.first)(t.getSelectedBlocks());return!!i&&Ht(i,e)}}function Ot(t,e,i){const s=e?t[0]:t[t.length-1];if(s.is("element","listItem")){let n=s[e?"previousSibling":"nextSibling"],r=s.getAttribute("listIndent");for(;n&&n.is("element","listItem")&&n.getAttribute("listIndent")>=i;)r>n.getAttribute("listIndent")&&(r=n.getAttribute("listIndent")),n.getAttribute("listIndent")==r&&t[e?"unshift":"push"](n),n=n[e?"previousSibling":"nextSibling"]}}function Ht(t,e){return e.checkChild(t.parent,"listItem")&&!e.isObject(t)}class Ft extends t.Command{constructor(t,e){super(t),this._indentBy="forward"==e?1:-1}refresh(){this.isEnabled=this._checkEnabled()}execute(){const t=this.editor.model,e=t.document;let i=Array.from(e.selection.getSelectedBlocks());t.change((t=>{const e=i[i.length-1];let s=e.nextSibling;for(;s&&"listItem"==s.name&&s.getAttribute("listIndent")>e.getAttribute("listIndent");)i.push(s),s=s.nextSibling;this._indentBy<0&&(i=i.reverse());for(const e of i){const i=e.getAttribute("listIndent")+this._indentBy;i<0?t.rename(e,"paragraph"):t.setAttribute("listIndent",i,e)}this.fire("_executeCleanup",i)}))}_checkEnabled(){const t=(0,r.first)(this.editor.model.document.selection.getSelectedBlocks());if(!t||!t.is("element","listItem"))return!1;if(this._indentBy>0){const e=t.getAttribute("listIndent"),i=t.getAttribute("listType");let s=t.previousSibling;for(;s&&s.is("element","listItem")&&s.getAttribute("listIndent")>=e;){if(s.getAttribute("listIndent")==e)return s.getAttribute("listType")==i;s=s.previousSibling}return!1}return!0}}function Dt(t){return(e,i,s)=>{const n=s.consumable;if(!n.test(i.item,"insert")||!n.test(i.item,"attribute:listType")||!n.test(i.item,"attribute:listIndent"))return;n.consume(i.item,"insert"),n.consume(i.item,"attribute:listType"),n.consume(i.item,"attribute:listIndent");const r=i.item;X(r,Q(r,s),s,t)}}function jt(t,e,i){if(!i.consumable.test(e.item,t.name))return;const s=i.mapper.toViewElement(e.item),n=i.writer;n.breakContainer(n.createPositionBefore(s)),n.breakContainer(n.createPositionAfter(s));const r=s.parent,o="numbered"==e.attributeNewValue?"ol":"ul";n.rename(o,r)}function Ut(t,e,i){i.consumable.consume(e.item,t.name);const s=i.mapper.toViewElement(e.item).parent,n=i.writer;tt(n,s,s.nextSibling),tt(n,s.previousSibling,s)}function qt(t,e,i){if(i.consumable.test(e.item,t.name)&&"listItem"!=e.item.name){let t=i.mapper.toViewPosition(e.range.start);const s=i.writer,n=[];for(;("ul"==t.parent.name||"ol"==t.parent.name)&&(t=s.breakContainer(t),"li"==t.parent.name);){const e=t,i=s.createPositionAt(t.parent,"end");if(!e.isEqual(i)){const t=s.remove(s.createRange(e,i));n.push(t)}t=s.createPositionAfter(t.parent)}if(n.length>0){for(let e=0;e<n.length;e++){const i=t.nodeBefore;if(t=s.insert(t,n[e]).end,e>0){const e=tt(s,i,i.nextSibling);e&&e.parent==i&&t.offset--}}tt(s,t.nodeBefore,t.nodeAfter)}}}function Kt(t,e,i){const s=i.mapper.toViewPosition(e.position),n=s.nodeBefore,r=s.nodeAfter;tt(i.writer,n,r)}function Zt(t,e,i){if(i.consumable.consume(e.viewItem,{name:!0})){const t=i.writer,s=t.createElement("listItem"),n=function(t){let e=0,i=t.parent;for(;i;){if(i.is("element","li"))e++;else{const t=i.previousSibling;t&&t.is("element","li")&&e++}i=i.parent}return e}(e.viewItem);t.setAttribute("listIndent",n,s);const r=e.viewItem.parent&&"ol"==e.viewItem.parent.name?"numbered":"bulleted";if(t.setAttribute("listType",r,s),!i.safeInsert(s,e.modelCursor))return;const o=function(t,e,i){const{writer:s,schema:n}=i;let r=s.createPositionAfter(t);for(const o of e)if("ul"==o.name||"ol"==o.name)r=i.convertItem(o,r).modelCursor;else{const e=i.convertItem(o,s.createPositionAt(t,"end")),l=e.modelRange.start.nodeAfter;l&&l.is("element")&&!n.checkChild(t,l.name)&&(t=e.modelCursor.parent.is("element","listItem")?e.modelCursor.parent:Jt(e.modelCursor),r=s.createPositionAfter(t))}return r}(s,e.viewItem.getChildren(),i);e.modelRange=t.createRange(e.modelCursor,o),i.updateConversionResult(s,e)}}function $t(t,e,i){if(i.consumable.test(e.viewItem,{name:!0})){const t=Array.from(e.viewItem.getChildren());for(const e of t){!(e.is("element","li")||Xt(e))&&e._remove()}}}function Wt(t,e,i){if(i.consumable.test(e.viewItem,{name:!0})){if(0===e.viewItem.childCount)return;const t=[...e.viewItem.getChildren()];let i=!1;for(const e of t)i&&!Xt(e)&&e._remove(),Xt(e)&&(i=!0)}}function Gt(t){return(e,i)=>{if(i.isPhantom)return;const s=i.modelPosition.nodeBefore;if(s&&s.is("element","listItem")){const e=i.mapper.toViewElement(s),n=e.getAncestors().find(Xt),r=t.createPositionAt(e,0).getWalker();for(const t of r){if("elementStart"==t.type&&t.item.is("element","li")){i.viewPosition=t.previousPosition;break}if("elementEnd"==t.type&&t.item==n){i.viewPosition=t.nextPosition;break}}}}}function Yt(t,[e,i]){let s,n=e.is("documentFragment")?e.getChild(0):e;if(s=i?this.createSelection(i):this.document.selection,n&&n.is("element","listItem")){const t=s.getFirstPosition();let e=null;if(t.parent.is("element","listItem")?e=t.parent:t.nodeBefore&&t.nodeBefore.is("element","listItem")&&(e=t.nodeBefore),e){const t=e.getAttribute("listIndent");if(t>0)for(;n&&n.is("element","listItem");)n._setAttribute("listIndent",n.getAttribute("listIndent")+t),n=n.nextSibling}}}function Jt(t){const e=new H.TreeWalker({startPosition:t});let i;do{i=e.next()}while(!i.value.item.is("element","listItem"));return i.value.item}function Qt(t,e,i,s,n,r){const o=it(e.nodeBefore,{sameIndent:!0,smallerIndent:!0,listIndent:t,foo:"b"}),l=n.mapper,a=n.writer,c=o?o.getAttribute("listIndent"):null;let d;if(o)if(c==t){const t=l.toViewElement(o).parent;d=a.createPositionAfter(t)}else{const t=r.createPositionAt(o,"end");d=l.toViewPosition(t)}else d=i;d=et(d);for(const t of[...s.getChildren()])Xt(t)&&(d=a.move(a.createRangeOn(t),d).end,tt(a,t,t.nextSibling),tt(a,t.previousSibling,t))}function Xt(t){return t.is("element","ol")||t.is("element","ul")}class te extends t.Plugin{static get pluginName(){return"ListEditing"}static get requires(){return[e.Enter,n.Delete]}init(){const t=this.editor;t.model.schema.register("listItem",{inheritAllFrom:"$block",allowAttributes:["listType","listIndent"]});const e=t.data,i=t.editing;var s;t.model.document.registerPostFixer((e=>function(t,e){const i=t.document.differ.getChanges(),s=new Map;let n=!1;for(const s of i)if("insert"==s.type&&"listItem"==s.name)r(s.position);else if("insert"==s.type&&"listItem"!=s.name){if("$text"!=s.name){const i=s.position.nodeAfter;i.hasAttribute("listIndent")&&(e.removeAttribute("listIndent",i),n=!0),i.hasAttribute("listType")&&(e.removeAttribute("listType",i),n=!0),i.hasAttribute("listStyle")&&(e.removeAttribute("listStyle",i),n=!0),i.hasAttribute("listReversed")&&(e.removeAttribute("listReversed",i),n=!0),i.hasAttribute("listStart")&&(e.removeAttribute("listStart",i),n=!0);for(const e of Array.from(t.createRangeIn(i)).filter((t=>t.item.is("element","listItem"))))r(e.previousPosition)}r(s.position.getShiftedBy(s.length))}else"remove"==s.type&&"listItem"==s.name?r(s.position):("attribute"==s.type&&"listIndent"==s.attributeKey||"attribute"==s.type&&"listType"==s.attributeKey)&&r(s.range.start);for(const t of s.values())o(t),l(t);return n;function r(t){const e=t.nodeBefore;if(e&&e.is("element","listItem")){let t=e;if(s.has(t))return;for(let e=t.previousSibling;e&&e.is("element","listItem");e=t.previousSibling)if(t=e,s.has(t))return;s.set(e,t)}else{const e=t.nodeAfter;e&&e.is("element","listItem")&&s.set(e,e)}}function o(t){let i=0,s=null;for(;t&&t.is("element","listItem");){const r=t.getAttribute("listIndent");if(r>i){let o;null===s?(s=r-i,o=i):(s>r&&(s=r),o=r-s),e.setAttribute("listIndent",o,t),n=!0}else s=null,i=t.getAttribute("listIndent")+1;t=t.nextSibling}}function l(t){let i=[],s=null;for(;t&&t.is("element","listItem");){const r=t.getAttribute("listIndent");if(s&&s.getAttribute("listIndent")>r&&(i=i.slice(0,r+1)),0!=r)if(i[r]){const s=i[r];t.getAttribute("listType")!=s&&(e.setAttribute("listType",s,t),n=!0)}else i[r]=t.getAttribute("listType");s=t,t=t.nextSibling}}}(t.model,e))),i.mapper.registerViewToModelLength("li",ee),e.mapper.registerViewToModelLength("li",ee),i.mapper.on("modelToViewPosition",Gt(i.view)),i.mapper.on("viewToModelPosition",(s=t.model,(t,e)=>{const i=e.viewPosition,n=i.parent,r=e.mapper;if("ul"==n.name||"ol"==n.name){if(i.isAtEnd){const t=r.toModelElement(i.nodeBefore),n=r.getModelLength(i.nodeBefore);e.modelPosition=s.createPositionBefore(t).getShiftedBy(n)}else{const t=r.toModelElement(i.nodeAfter);e.modelPosition=s.createPositionBefore(t)}t.stop()}else if("li"==n.name&&i.nodeBefore&&("ul"==i.nodeBefore.name||"ol"==i.nodeBefore.name)){const o=r.toModelElement(n);let l=1,a=i.nodeBefore;for(;a&&Xt(a);)l+=r.getModelLength(a),a=a.previousSibling;e.modelPosition=s.createPositionBefore(o).getShiftedBy(l),t.stop()}})),e.mapper.on("modelToViewPosition",Gt(i.view)),t.conversion.for("editingDowncast").add((e=>{e.on("insert",qt,{priority:"high"}),e.on("insert:listItem",Dt(t.model)),e.on("attribute:listType:listItem",jt,{priority:"high"}),e.on("attribute:listType:listItem",Ut,{priority:"low"}),e.on("attribute:listIndent:listItem",function(t){return(e,i,s)=>{if(!s.consumable.consume(i.item,"attribute:listIndent"))return;const n=s.mapper.toViewElement(i.item),r=s.writer;r.breakContainer(r.createPositionBefore(n)),r.breakContainer(r.createPositionAfter(n));const o=n.parent,l=o.previousSibling,a=r.createRangeOn(o);r.remove(a),l&&l.nextSibling&&tt(r,l,l.nextSibling),Qt(i.attributeOldValue+1,i.range.start,a.start,n,s,t),X(i.item,n,s,t);for(const t of i.item.getChildren())s.consumable.consume(t,"insert")}}(t.model)),e.on("remove:listItem",function(t){return(e,i,s)=>{const n=s.mapper.toViewPosition(i.position).getLastMatchingPosition((t=>!t.item.is("element","li"))).nodeAfter,r=s.writer;r.breakContainer(r.createPositionBefore(n)),r.breakContainer(r.createPositionAfter(n));const o=n.parent,l=o.previousSibling,a=r.createRangeOn(o),c=r.remove(a);l&&l.nextSibling&&tt(r,l,l.nextSibling),Qt(s.mapper.toModelElement(n).getAttribute("listIndent")+1,i.position,a.start,n,s,t);for(const t of r.createRangeIn(c).getItems())s.mapper.unbindViewElement(t);e.stop()}}(t.model)),e.on("remove",Kt,{priority:"low"})})),t.conversion.for("dataDowncast").add((e=>{e.on("insert",qt,{priority:"high"}),e.on("insert:listItem",Dt(t.model))})),t.conversion.for("upcast").add((t=>{t.on("element:ul",$t,{priority:"high"}),t.on("element:ol",$t,{priority:"high"}),t.on("element:li",Wt,{priority:"high"}),t.on("element:li",Zt)})),t.model.on("insertContent",Yt,{priority:"high"}),t.commands.add("numberedList",new Rt(t,"numbered")),t.commands.add("bulletedList",new Rt(t,"bulleted")),t.commands.add("indentList",new Ft(t,"forward")),t.commands.add("outdentList",new Ft(t,"backward"));const n=i.view.document;this.listenTo(n,"enter",((t,e)=>{const i=this.editor.model.document,s=i.selection.getLastPosition().parent;i.selection.isCollapsed&&"listItem"==s.name&&s.isEmpty&&(this.editor.execute("outdentList"),e.preventDefault(),t.stop())}),{context:"li"}),this.listenTo(n,"delete",((t,e)=>{if("backward"!==e.direction)return;const i=this.editor.model.document.selection;if(!i.isCollapsed)return;const s=i.getFirstPosition();if(!s.isAtStart)return;const n=s.parent;if("listItem"!==n.name)return;n.previousSibling&&"listItem"===n.previousSibling.name||(this.editor.execute("outdentList"),e.preventDefault(),t.stop())}),{context:"li"}),this.listenTo(t.editing.view.document,"tab",((e,i)=>{const s=i.shiftKey?"outdentList":"indentList";this.editor.commands.get(s).isEnabled&&(t.execute(s),i.stopPropagation(),i.preventDefault(),e.stop())}),{context:"li"})}afterInit(){const t=this.editor.commands,e=t.get("indent"),i=t.get("outdent");e&&e.registerChildCommand(t.get("indentList")),i&&i.registerChildCommand(t.get("outdentList"))}}function ee(t){let e=1;for(const i of t.getChildren())if("ul"==i.name||"ol"==i.name)for(const t of i.getChildren())e+=ee(t);return e}class ie extends t.Plugin{static get requires(){return[te,mt]}static get pluginName(){return"List"}}class se extends t.Command{constructor(t,e){super(t),this._defaultType=e}refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(t={}){this._tryToConvertItemsToList(t);const e=this.editor.model,i=ot(e);i.length&&e.change((e=>{for(const s of i)e.setAttribute("listStyle",t.type||this._defaultType,s)}))}_getValue(){const t=this.editor.model.document.selection.getFirstPosition().parent;return t&&t.is("element","listItem")?t.getAttribute("listStyle"):null}_checkEnabled(){const t=this.editor,e=t.commands.get("numberedList"),i=t.commands.get("bulletedList");return e.isEnabled||i.isEnabled}_tryToConvertItemsToList(t){if(!t.type)return;const e=(i=t.type,lt.includes(i)?"bulleted":at.includes(i)?"numbered":null);var i;if(!e)return;const s=this.editor,n=e+"List";s.commands.get(n).value||s.execute(n)}}class ne extends t.Command{refresh(){const t=this._getValue();this.value=t,this.isEnabled=null!=t}execute(t={}){const e=this.editor.model,i=ot(e).filter((t=>"numbered"==t.getAttribute("listType")));e.change((e=>{for(const s of i)e.setAttribute("listReversed",!!t.reversed,s)}))}_getValue(){const t=this.editor.model.document.selection.getFirstPosition().parent;return t&&t.is("element","listItem")&&"numbered"==t.getAttribute("listType")?t.getAttribute("listReversed"):null}}class re extends t.Command{refresh(){const t=this._getValue();this.value=t,this.isEnabled=null!=t}execute(t={}){const e=this.editor.model,i=ot(e).filter((t=>"numbered"==t.getAttribute("listType")));e.change((e=>{for(const s of i)e.setAttribute("listStart",t.startIndex||1,s)}))}_getValue(){const t=this.editor.model.document.selection.getFirstPosition().parent;return t&&t.is("element","listItem")&&"numbered"==t.getAttribute("listType")?t.getAttribute("listStart"):null}}const oe="default";class le extends t.Plugin{static get requires(){return[te]}static get pluginName(){return"ListPropertiesEditing"}constructor(t){super(t),t.config.define("list",{properties:{styles:!0,startIndex:!1,reversed:!1}})}init(){const t=this.editor,e=t.model,i=function(t){const e=[];t.styles&&e.push({attributeName:"listStyle",defaultValue:oe,addCommand(t){t.commands.add("listStyle",new se(t,oe))},appliesToListItem:()=>!0,setAttributeOnDowncast(t,e,i){e&&e!==oe?t.setStyle("list-style-type",e,i):t.removeStyle("list-style-type",i)},getAttributeOnUpcast:t=>t.getStyle("list-style-type")||oe});t.reversed&&e.push({attributeName:"listReversed",defaultValue:!1,addCommand(t){t.commands.add("listReversed",new ne(t))},appliesToListItem:t=>"numbered"==t.getAttribute("listType"),setAttributeOnDowncast(t,e,i){e?t.setAttribute("reversed","reversed",i):t.removeAttribute("reversed",i)},getAttributeOnUpcast:t=>t.hasAttribute("reversed")});t.startIndex&&e.push({attributeName:"listStart",defaultValue:1,addCommand(t){t.commands.add("listStart",new re(t))},appliesToListItem:t=>"numbered"==t.getAttribute("listType"),setAttributeOnDowncast(t,e,i){1!=e?t.setAttribute("start",e,i):t.removeAttribute("start",i)},getAttributeOnUpcast:t=>t.getAttribute("start")||1});return e}(t.config.get("list.properties"));e.schema.extend("listItem",{allowAttributes:i.map((t=>t.attributeName))});for(const e of i)e.addCommand(t);var s;this.listenTo(t.commands.get("indentList"),"_executeCleanup",function(t,e){return(i,s)=>{const n=s[0],r=n.getAttribute("listIndent"),o=s.filter((t=>t.getAttribute("listIndent")===r));let l=null;n.previousSibling.getAttribute("listIndent")+1!==r&&(l=it(n.previousSibling,{sameIndent:!0,direction:"backward",listIndent:r})),t.model.change((t=>{for(const i of o)for(const s of e)if(s.appliesToListItem(i)){const e=null==l?s.defaultValue:l.getAttribute(s.attributeName);t.setAttribute(s.attributeName,e,i)}}))}}(t,i)),this.listenTo(t.commands.get("outdentList"),"_executeCleanup",function(t,e){return(i,s)=>{if(!(s=s.reverse().filter((t=>t.is("element","listItem")))).length)return;const n=s[0].getAttribute("listIndent"),r=s[0].getAttribute("listType");let o=s[0].previousSibling;if(o.is("element","listItem"))for(;o.getAttribute("listIndent")!==n;)o=o.previousSibling;else o=null;o||(o=s[s.length-1].nextSibling),o&&o.is("element","listItem")&&o.getAttribute("listType")===r&&t.model.change((t=>{const i=s.filter((t=>t.getAttribute("listIndent")===n));for(const s of i)for(const i of e)if(i.appliesToListItem(s)){const e=i.attributeName,n=o.getAttribute(e);t.setAttribute(e,n,s)}}))}}(t,i)),this.listenTo(t.commands.get("bulletedList"),"_executeCleanup",de(t)),this.listenTo(t.commands.get("numberedList"),"_executeCleanup",de(t)),e.document.registerPostFixer(function(t,e){return i=>{let s=!1;const n=ue(t.model.document.differ.getChanges()).filter((t=>"todo"!==t.getAttribute("listType")));if(!n.length)return s;let r=n[n.length-1].nextSibling;if((!r||!r.is("element","listItem"))&&(r=n[0].previousSibling,r)){const t=n[0].getAttribute("listIndent");for(;r.is("element","listItem")&&r.getAttribute("listIndent")!==t&&(r=r.previousSibling,r););}for(const t of e){const e=t.attributeName;for(const o of n)if(t.appliesToListItem(o))if(o.hasAttribute(e)){const n=o.previousSibling;ce(n,o,t.attributeName)&&(i.setAttribute(e,n.getAttribute(e),o),s=!0)}else ae(r,o,t)?i.setAttribute(e,r.getAttribute(e),o):i.setAttribute(e,t.defaultValue,o),s=!0;else i.removeAttribute(e,o)}return s}}(t,i)),t.conversion.for("upcast").add((s=i,t=>{t.on("element:li",((t,e,i)=>{const n=e.viewItem.parent;if(!n)return;const r=e.modelRange.start.nodeAfter||e.modelRange.end.nodeBefore;for(const t of s)if(t.appliesToListItem(r)){const e=t.getAttributeOnUpcast(n);i.writer.setAttribute(t.attributeName,e,r)}}),{priority:"low"})})),t.conversion.for("downcast").add(function(t){return i=>{for(const s of t)i.on(`attribute:${s.attributeName}:listItem`,((t,i,n)=>{const r=n.writer,o=i.item,l=it(o.previousSibling,{sameIndent:!0,listIndent:o.getAttribute("listIndent"),direction:"backward"}),a=n.mapper.toViewElement(o);e(o,l)||r.breakContainer(r.createPositionBefore(a)),s.setAttributeOnDowncast(r,i.attributeNewValue,a.parent)}),{priority:"low"})};function e(t,e){return e&&t.getAttribute("listType")===e.getAttribute("listType")&&t.getAttribute("listIndent")===e.getAttribute("listIndent")&&t.getAttribute("listStyle")===e.getAttribute("listStyle")&&t.getAttribute("listReversed")===e.getAttribute("listReversed")&&t.getAttribute("listStart")===e.getAttribute("listStart")}}(i)),this._mergeListAttributesWhileMergingLists(i)}afterInit(){const t=this.editor;t.commands.get("todoList")&&t.model.document.registerPostFixer(function(t){return e=>{const i=ue(t.model.document.differ.getChanges()).filter((t=>"todo"===t.getAttribute("listType")&&(t.hasAttribute("listStyle")||t.hasAttribute("listReversed")||t.hasAttribute("listStart"))));if(!i.length)return!1;for(const t of i)e.removeAttribute("listStyle",t),e.removeAttribute("listReversed",t),e.removeAttribute("listStart",t);return!0}}(t))}_mergeListAttributesWhileMergingLists(t){const e=this.editor.model;let i;this.listenTo(e,"deleteContent",((t,[e])=>{const s=e.getFirstPosition(),n=e.getLastPosition();if(s.parent===n.parent)return;if(!s.parent.is("element","listItem"))return;const r=n.parent.nextSibling;if(!r||!r.is("element","listItem"))return;const o=it(s.parent,{sameIndent:!0,listIndent:r.getAttribute("listIndent")});o&&o.getAttribute("listType")===r.getAttribute("listType")&&(i=o)}),{priority:"high"}),this.listenTo(e,"deleteContent",(()=>{i&&(e.change((e=>{const s=it(i.nextSibling,{sameIndent:!0,listIndent:i.getAttribute("listIndent"),direction:"forward"});if(!s)return void(i=null);const n=[s,...rt(e.createPositionAt(s,0),"forward")];for(const s of n)for(const n of t)if(n.appliesToListItem(s)){const t=n.attributeName,r=i.getAttribute(t);e.setAttribute(t,r,s)}})),i=null)}),{priority:"low"})}}function ae(t,e,i){if(!t)return!1;const s=t.getAttribute(i.attributeName);return!!s&&(s!=i.defaultValue&&t.getAttribute("listType")===e.getAttribute("listType"))}function ce(t,e,i){if(!t||!t.is("element","listItem"))return!1;if(e.getAttribute("listType")!==t.getAttribute("listType"))return!1;const s=t.getAttribute("listIndent");if(s<1||s!==e.getAttribute("listIndent"))return!1;const n=t.getAttribute(i);return!(!n||n===e.getAttribute(i))}function de(t){return(e,i)=>{i=i.filter((t=>t.is("element","listItem"))),t.model.change((t=>{for(const e of i)t.removeAttribute("listStyle",e)}))}}function ue(t){const e=[];for(const i of t){const t=me(i);t&&t.is("element","listItem")&&e.push(t)}return e}function me(t){return"attribute"===t.type?t.range.start.nodeAfter:"insert"===t.type?t.position.nodeAfter:null}class pe extends t.Plugin{static get requires(){return[le,Bt]}static get pluginName(){return"ListProperties"}}const he="todoListChecked";class fe extends t.Command{constructor(t){super(t),this._selectedElements=[],this.on("execute",(()=>{this.refresh()}),{priority:"highest"})}refresh(){this._selectedElements=this._getSelectedItems(),this.value=this._selectedElements.every((t=>!!t.getAttribute("todoListChecked"))),this.isEnabled=!!this._selectedElements.length}_getSelectedItems(){const t=this.editor.model,e=t.schema,i=t.document.selection.getFirstRange(),s=i.start.parent,n=[];e.checkAttribute(s,he)&&n.push(s);for(const t of i.getItems())e.checkAttribute(t,he)&&!n.includes(t)&&n.push(t);return n}execute(t={}){this.editor.model.change((e=>{for(const i of this._selectedElements){(void 0===t.forceValue?!this.value:t.forceValue)?e.setAttribute(he,!0,i):e.removeAttribute(he,i)}}))}}function be(t,e,i){const s=e.modelCursor,n=s.parent,r=e.viewItem;if("checkbox"!=r.getAttribute("type")||"listItem"!=n.name||!s.isAtStart)return;if(!i.consumable.consume(r,{name:!0}))return;const o=i.writer;o.setAttribute("listType","todo",n),e.viewItem.hasAttribute("checked")&&o.setAttribute("todoListChecked",!0,n),e.modelRange=o.createRange(s)}function ge(t){return(e,i)=>{const s=i.modelPosition,n=s.parent;if(!n.is("element","listItem")||"todo"!=n.getAttribute("listType"))return;const r=ye(i.mapper.toViewElement(n),t);r&&(i.viewPosition=i.mapper.findPositionIn(r,s.offset))}}function ve(t,e,i,s){return e.createUIElement("label",{class:"todo-list__label",contenteditable:!1},(function(e){const n=(0,r.createElement)(document,"input",{type:"checkbox"});i&&n.setAttribute("checked","checked"),n.addEventListener("change",(()=>s(t)));const o=this.toDomElement(e);return o.appendChild(n),o}))}function ye(t,e){const i=e.createRangeIn(t);for(const t of i)if(t.item.is("containerElement","span")&&t.item.hasClass("todo-list__label__description"))return t.item}const we=(0,r.parseKeystroke)("Ctrl+Enter");class Ae extends t.Plugin{static get pluginName(){return"TodoListEditing"}static get requires(){return[te]}init(){const t=this.editor,{editing:e,data:i,model:s}=t;s.schema.extend("listItem",{allowAttributes:["todoListChecked"]}),s.schema.addAttributeCheck(((t,e)=>{const i=t.last;if("todoListChecked"==e&&"listItem"==i.name&&"todo"!=i.getAttribute("listType"))return!1})),t.commands.add("todoList",new Rt(t,"todo"));const n=new fe(t);var o,l;t.commands.add("checkTodoList",n),t.commands.add("todoListCheck",n),i.downcastDispatcher.on("insert:listItem",function(t){return(e,i,s)=>{const n=s.consumable;if(!n.test(i.item,"insert")||!n.test(i.item,"attribute:listType")||!n.test(i.item,"attribute:listIndent"))return;if("todo"!=i.item.getAttribute("listType"))return;const r=i.item;n.consume(r,"insert"),n.consume(r,"attribute:listType"),n.consume(r,"attribute:listIndent"),n.consume(r,"attribute:todoListChecked");const o=s.writer,l=Q(r,s);o.addClass("todo-list",l.parent);const a=o.createContainerElement("label",{class:"todo-list__label"}),c=o.createEmptyElement("input",{type:"checkbox",disabled:"disabled"}),d=o.createContainerElement("span",{class:"todo-list__label__description"});r.getAttribute("todoListChecked")&&o.setAttribute("checked","checked",c),o.insert(o.createPositionAt(l,0),a),o.insert(o.createPositionAt(a,0),c),o.insert(o.createPositionAfter(c),d),X(r,l,s,t)}}(s),{priority:"high"}),i.upcastDispatcher.on("element:input",be,{priority:"high"}),e.downcastDispatcher.on("insert:listItem",function(t,e){return(i,s,n)=>{const r=n.consumable;if(!r.test(s.item,"insert")||!r.test(s.item,"attribute:listType")||!r.test(s.item,"attribute:listIndent"))return;if("todo"!=s.item.getAttribute("listType"))return;const o=s.item;r.consume(o,"insert"),r.consume(o,"attribute:listType"),r.consume(o,"attribute:listIndent"),r.consume(o,"attribute:todoListChecked");const l=n.writer,a=Q(o,n),c=!!o.getAttribute("todoListChecked"),d=ve(o,l,c,e),u=l.createContainerElement("span",{class:"todo-list__label__description"});l.addClass("todo-list",a.parent),l.insert(l.createPositionAt(a,0),d),l.insert(l.createPositionAfter(d),u),X(o,a,n,t)}}(s,(t=>this._handleCheckmarkChange(t))),{priority:"high"}),e.downcastDispatcher.on("attribute:listType:listItem",(o=t=>this._handleCheckmarkChange(t),l=e.view,(t,e,i)=>{if(!i.consumable.consume(e.item,t.name))return;const s=i.mapper.toViewElement(e.item),n=i.writer,r=function(t,e){const i=e.createRangeIn(t);for(const t of i)if(t.item.is("uiElement","label"))return t.item}(s,l);if("todo"==e.attributeNewValue){const t=!!e.item.getAttribute("todoListChecked"),i=ve(e.item,n,t,o),r=n.createContainerElement("span",{class:"todo-list__label__description"}),l=n.createRangeIn(s),a=nt(s),c=et(l.start),d=a?n.createPositionBefore(a):l.end,u=n.createRange(c,d);n.addClass("todo-list",s.parent),n.move(u,n.createPositionAt(r,0)),n.insert(n.createPositionAt(s,0),i),n.insert(n.createPositionAfter(i),r)}else if("todo"==e.attributeOldValue){const t=ye(s,l);n.removeClass("todo-list",s.parent),n.remove(r),n.move(n.createRangeIn(t),n.createPositionBefore(t)),n.remove(t)}})),e.downcastDispatcher.on("attribute:todoListChecked:listItem",function(t){return(e,i,s)=>{if("todo"!=i.item.getAttribute("listType"))return;if(!s.consumable.consume(i.item,"attribute:todoListChecked"))return;const{mapper:n,writer:r}=s,o=!!i.item.getAttribute("todoListChecked"),l=n.toViewElement(i.item).getChild(0),a=ve(i.item,r,o,t);r.insert(r.createPositionAfter(l),a),r.remove(l)}}((t=>this._handleCheckmarkChange(t)))),e.mapper.on("modelToViewPosition",ge(e.view)),i.mapper.on("modelToViewPosition",ge(e.view)),this.listenTo(e.view.document,"arrowKey",function(t,e){return(i,s)=>{if("left"!=(0,r.getLocalizedArrowKeyCodeDirection)(s.keyCode,e.contentLanguageDirection))return;const n=t.schema,o=t.document.selection;if(!o.isCollapsed)return;const l=o.getFirstPosition(),a=l.parent;if("listItem"===a.name&&"todo"==a.getAttribute("listType")&&l.isAtStart){const e=n.getNearestSelectionRange(t.createPositionBefore(a),"backward");e&&t.change((t=>t.setSelection(e))),s.preventDefault(),s.stopPropagation(),i.stop()}}}(s,t.locale),{context:"li"}),this.listenTo(e.view.document,"keydown",((e,i)=>{(0,r.getCode)(i)===we&&(t.execute("checkTodoList"),e.stop())}),{priority:"high"});const a=new Set;this.listenTo(s,"applyOperation",((t,e)=>{const i=e[0];if("rename"==i.type&&"listItem"==i.oldName){const t=i.position.nodeAfter;t.hasAttribute("todoListChecked")&&a.add(t)}else if("changeAttribute"==i.type&&"listType"==i.key&&"todo"===i.oldValue)for(const t of i.range.getItems())t.hasAttribute("todoListChecked")&&"todo"!==t.getAttribute("listType")&&a.add(t)})),s.document.registerPostFixer((t=>{let e=!1;for(const i of a)t.removeAttribute("todoListChecked",i),e=!0;return a.clear(),e}))}_handleCheckmarkChange(t){const e=this.editor,i=e.model,s=Array.from(i.document.selection.getRanges());i.change((i=>{i.setSelection(t,"end"),e.execute("checkTodoList"),i.setSelection(s)}))}}class Ie extends t.Plugin{static get pluginName(){return"TodoListUI"}init(){const t=this.editor.t;st(this.editor,"todoList",t("To-do List"),'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m2.315 14.705 2.224-2.24a.689.689 0 0 1 .963 0 .664.664 0 0 1 0 .949L2.865 16.07a.682.682 0 0 1-.112.089.647.647 0 0 1-.852-.051L.688 14.886a.635.635 0 0 1 0-.903.647.647 0 0 1 .91 0l.717.722zm5.185.045a.75.75 0 0 1 .75-.75h9.5a.75.75 0 1 1 0 1.5h-9.5a.75.75 0 0 1-.75-.75zM2.329 5.745l2.21-2.226a.689.689 0 0 1 .963 0 .664.664 0 0 1 0 .95L2.865 7.125a.685.685 0 0 1-.496.196.644.644 0 0 1-.468-.187L.688 5.912a.635.635 0 0 1 0-.903.647.647 0 0 1 .91 0l.73.736zM7.5 5.75A.75.75 0 0 1 8.25 5h9.5a.75.75 0 1 1 0 1.5h-9.5a.75.75 0 0 1-.75-.75z"/></svg>')}}var ke=i(250),xe={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};K()(ke.Z,xe);ke.Z.locals;class Te extends t.Plugin{static get requires(){return[Ae,Ie]}static get pluginName(){return"TodoList"}}})(),(window.CKEditor5=window.CKEditor5||{}).list=s})();
\ No newline at end of file
+ */(()=>{var t={389:(t,e,i)=>{"use strict";i.d(e,{Z:()=>r});var n=i(609),s=i.n(n)()((function(t){return t[1]}));s.push([t.id,".ck.ck-collapsible.ck-collapsible_collapsed>.ck-collapsible__children{display:none}:root{--ck-collapsible-arrow-size:calc(var(--ck-icon-size)*0.5)}.ck.ck-collapsible>.ck.ck-button{border-radius:0;font-weight:700;padding:var(--ck-spacing-medium) var(--ck-spacing-large);width:100%}.ck.ck-collapsible>.ck.ck-button:focus{background:transparent}.ck.ck-collapsible>.ck.ck-button:active,.ck.ck-collapsible>.ck.ck-button:hover:not(:focus),.ck.ck-collapsible>.ck.ck-button:not(:focus){background:transparent;border-color:transparent;box-shadow:none}.ck.ck-collapsible>.ck.ck-button>.ck-icon{margin-right:var(--ck-spacing-medium);width:var(--ck-collapsible-arrow-size)}.ck.ck-collapsible>.ck-collapsible__children{padding:0 var(--ck-spacing-large) var(--ck-spacing-large)}.ck.ck-collapsible.ck-collapsible_collapsed>.ck.ck-button .ck-icon{transform:rotate(-90deg)}",""]);const r=s},78:(t,e,i)=>{"use strict";i.d(e,{Z:()=>r});var n=i(609),s=i.n(n)()((function(t){return t[1]}));s.push([t.id,".ck-editor__editable .ck-list-bogus-paragraph{display:block}",""]);const r=s},543:(t,e,i)=>{"use strict";i.d(e,{Z:()=>r});var n=i(609),s=i.n(n)()((function(t){return t[1]}));s.push([t.id,".ck.ck-list-properties.ck-list-properties_without-styles{padding:var(--ck-spacing-large)}.ck.ck-list-properties.ck-list-properties_without-styles>*{min-width:14em}.ck.ck-list-properties.ck-list-properties_without-styles>*+*{margin-top:var(--ck-spacing-standard)}.ck.ck-list-properties.ck-list-properties_with-numbered-properties>.ck-list-styles-list{grid-template-columns:repeat(4,auto)}.ck.ck-list-properties.ck-list-properties_with-numbered-properties>.ck-collapsible{border-top:1px solid var(--ck-color-base-border)}.ck.ck-list-properties.ck-list-properties_with-numbered-properties>.ck-collapsible>.ck-collapsible__children>*{width:100%}.ck.ck-list-properties.ck-list-properties_with-numbered-properties>.ck-collapsible>.ck-collapsible__children>*+*{margin-top:var(--ck-spacing-standard)}.ck.ck-list-properties .ck.ck-numbered-list-properties__start-index .ck-input{min-width:auto;width:100%}.ck.ck-list-properties .ck.ck-numbered-list-properties__reversed-order{background:transparent;margin-bottom:calc(var(--ck-spacing-tiny)*-1);padding-left:0;padding-right:0}.ck.ck-list-properties .ck.ck-numbered-list-properties__reversed-order:active,.ck.ck-list-properties .ck.ck-numbered-list-properties__reversed-order:hover{background:none;border-color:transparent;box-shadow:none}",""]);const r=s},657:(t,e,i)=>{"use strict";i.d(e,{Z:()=>r});var n=i(609),s=i.n(n)()((function(t){return t[1]}));s.push([t.id,".ck.ck-list-styles-list{display:grid}.ck-content ol{list-style-type:decimal}.ck-content ol ol{list-style-type:lower-latin}.ck-content ol ol ol{list-style-type:lower-roman}.ck-content ol ol ol ol{list-style-type:upper-latin}.ck-content ol ol ol ol ol{list-style-type:upper-roman}.ck-content ul{list-style-type:circle}.ck-content ul ul{list-style-type:disc}.ck-content ul ul ul,.ck-content ul ul ul ul{list-style-type:square}:root{--ck-list-style-button-size:44px}.ck.ck-list-styles-list{column-gap:var(--ck-spacing-medium);grid-template-columns:repeat(3,auto);padding:var(--ck-spacing-large);row-gap:var(--ck-spacing-medium)}.ck.ck-list-styles-list .ck-button{box-sizing:content-box;margin:0;padding:0}.ck.ck-list-styles-list .ck-button,.ck.ck-list-styles-list .ck-button .ck-icon{height:var(--ck-list-style-button-size);width:var(--ck-list-style-button-size)}",""]);const r=s},250:(t,e,i)=>{"use strict";i.d(e,{Z:()=>r});var n=i(609),s=i.n(n)()((function(t){return t[1]}));s.push([t.id,':root{--ck-todo-list-checkmark-size:16px}.ck-content .todo-list{list-style:none}.ck-content .todo-list li{margin-bottom:5px}.ck-content .todo-list li .todo-list{margin-top:5px}.ck-content .todo-list .todo-list__label>input{-webkit-appearance:none;border:0;display:inline-block;height:var(--ck-todo-list-checkmark-size);left:-25px;margin-left:0;margin-right:-15px;position:relative;right:0;vertical-align:middle;width:var(--ck-todo-list-checkmark-size)}.ck-content .todo-list .todo-list__label>input:before{border:1px solid #333;border-radius:2px;box-sizing:border-box;content:"";display:block;height:100%;position:absolute;transition:box-shadow .25s ease-in-out,background .25s ease-in-out,border .25s ease-in-out;width:100%}.ck-content .todo-list .todo-list__label>input:after{border-color:transparent;border-style:solid;border-width:0 calc(var(--ck-todo-list-checkmark-size)/8) calc(var(--ck-todo-list-checkmark-size)/8) 0;box-sizing:content-box;content:"";display:block;height:calc(var(--ck-todo-list-checkmark-size)/2.6);left:calc(var(--ck-todo-list-checkmark-size)/3);pointer-events:none;position:absolute;top:calc(var(--ck-todo-list-checkmark-size)/5.3);transform:rotate(45deg);width:calc(var(--ck-todo-list-checkmark-size)/5.3)}.ck-content .todo-list .todo-list__label>input[checked]:before{background:#26ab33;border-color:#26ab33}.ck-content .todo-list .todo-list__label>input[checked]:after{border-color:#fff}.ck-content .todo-list .todo-list__label .todo-list__label__description{vertical-align:middle}[dir=rtl] .todo-list .todo-list__label>input{left:0;margin-left:-15px;margin-right:0;right:-25px}.ck-editor__editable .todo-list .todo-list__label>input{cursor:pointer}.ck-editor__editable .todo-list .todo-list__label>input:hover:before{box-shadow:0 0 0 5px rgba(0,0,0,.1)}',""]);const r=s},609:t=>{"use strict";t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var i=t(e);return e[2]?"@media ".concat(e[2]," {").concat(i,"}"):i})).join("")},e.i=function(t,i,n){"string"==typeof t&&(t=[[null,t,""]]);var s={};if(n)for(var r=0;r<this.length;r++){var o=this[r][0];null!=o&&(s[o]=!0)}for(var l=0;l<t.length;l++){var a=[].concat(t[l]);n&&s[a[0]]||(i&&(a[2]?a[2]="".concat(i," and ").concat(a[2]):a[2]=i),e.push(a))}},e}},62:(t,e,i)=>{"use strict";var n,s=function(){return void 0===n&&(n=Boolean(window&&document&&document.all&&!window.atob)),n},r=function(){var t={};return function(e){if(void 0===t[e]){var i=document.querySelector(e);if(window.HTMLIFrameElement&&i instanceof window.HTMLIFrameElement)try{i=i.contentDocument.head}catch(t){i=null}t[e]=i}return t[e]}}(),o=[];function l(t){for(var e=-1,i=0;i<o.length;i++)if(o[i].identifier===t){e=i;break}return e}function a(t,e){for(var i={},n=[],s=0;s<t.length;s++){var r=t[s],a=e.base?r[0]+e.base:r[0],c=i[a]||0,d="".concat(a," ").concat(c);i[a]=c+1;var u=l(d),m={css:r[1],media:r[2],sourceMap:r[3]};-1!==u?(o[u].references++,o[u].updater(m)):o.push({identifier:d,updater:b(m,e),references:1}),n.push(d)}return n}function c(t){var e=document.createElement("style"),n=t.attributes||{};if(void 0===n.nonce){var s=i.nc;s&&(n.nonce=s)}if(Object.keys(n).forEach((function(t){e.setAttribute(t,n[t])})),"function"==typeof t.insert)t.insert(e);else{var o=r(t.insert||"head");if(!o)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");o.appendChild(e)}return e}var d,u=(d=[],function(t,e){return d[t]=e,d.filter(Boolean).join("\n")});function m(t,e,i,n){var s=i?"":n.media?"@media ".concat(n.media," {").concat(n.css,"}"):n.css;if(t.styleSheet)t.styleSheet.cssText=u(e,s);else{var r=document.createTextNode(s),o=t.childNodes;o[e]&&t.removeChild(o[e]),o.length?t.insertBefore(r,o[e]):t.appendChild(r)}}function p(t,e,i){var n=i.css,s=i.media,r=i.sourceMap;if(s?t.setAttribute("media",s):t.removeAttribute("media"),r&&"undefined"!=typeof btoa&&(n+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(r))))," */")),t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}var h=null,f=0;function b(t,e){var i,n,s;if(e.singleton){var r=f++;i=h||(h=c(e)),n=m.bind(null,i,r,!1),s=m.bind(null,i,r,!0)}else i=c(e),n=p.bind(null,i,e),s=function(){!function(t){if(null===t.parentNode)return!1;t.parentNode.removeChild(t)}(i)};return n(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;n(t=e)}else s()}}t.exports=function(t,e){(e=e||{}).singleton||"boolean"==typeof e.singleton||(e.singleton=s());var i=a(t=t||[],e);return function(t){if(t=t||[],"[object Array]"===Object.prototype.toString.call(t)){for(var n=0;n<i.length;n++){var s=l(i[n]);o[s].references--}for(var r=a(t,e),c=0;c<i.length;c++){var d=l(i[c]);0===o[d].references&&(o[d].updater(),o.splice(d,1))}i=r}}}},704:(t,e,i)=>{t.exports=i(79)("./src/core.js")},492:(t,e,i)=>{t.exports=i(79)("./src/engine.js")},331:(t,e,i)=>{t.exports=i(79)("./src/enter.js")},181:(t,e,i)=>{t.exports=i(79)("./src/typing.js")},273:(t,e,i)=>{t.exports=i(79)("./src/ui.js")},209:(t,e,i)=>{t.exports=i(79)("./src/utils.js")},79:t=>{"use strict";t.exports=CKEditor5.dll}},e={};function i(n){var s=e[n];if(void 0!==s)return s.exports;var r=e[n]={id:n,exports:{}};return t[n](r,r.exports,i),r.exports}i.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return i.d(e,{a:e}),e},i.d=(t,e)=>{for(var n in e)i.o(e,n)&&!i.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),i.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.nc=void 0;var n={};(()=>{"use strict";i.r(n),i.d(n,{DocumentList:()=>pt,DocumentListEditing:()=>G,DocumentListProperties:()=>Mt,DocumentListPropertiesEditing:()=>Tt,List:()=>ie,ListEditing:()=>te,ListProperties:()=>pe,ListPropertiesEditing:()=>le,ListPropertiesUI:()=>Bt,ListUI:()=>mt,TodoList:()=>Te,TodoListEditing:()=>Ae,TodoListUI:()=>Ie});var t=i(704),e=i(331),s=i(181),r=i(209);class o{constructor(t,e){this._startElement=t,this._referenceIndent=t.getAttribute("listIndent"),this._isForward="forward"==e.direction,this._includeSelf=!!e.includeSelf,this._sameAttributes=(0,r.toArray)(e.sameAttributes||[]),this._sameIndent=!!e.sameIndent,this._lowerIndent=!!e.lowerIndent,this._higherIndent=!!e.higherIndent}static first(t,e){const i=new this(t,e)[Symbol.iterator]();return(0,r.first)(i)}*[Symbol.iterator](){const t=[];for(const{node:e}of l(this._getStartNode(),this._isForward?"forward":"backward")){const i=e.getAttribute("listIndent");if(i<this._referenceIndent){if(!this._lowerIndent)break;this._referenceIndent=i}else if(i>this._referenceIndent){if(!this._higherIndent)continue;if(!this._isForward){t.push(e);continue}}else{if(!this._sameIndent){if(this._higherIndent){t.length&&(yield*t,t.length=0);break}continue}if(this._sameAttributes.some((t=>e.getAttribute(t)!==this._startElement.getAttribute(t))))break}t.length&&(yield*t,t.length=0),yield e}}_getStartNode(){return this._includeSelf?this._startElement:this._isForward?this._startElement.nextSibling:this._startElement.previousSibling}}function*l(t,e="forward"){const i="forward"==e;let n=null;for(;d(t);)yield{node:t,previous:n},n=t,t=i?t.nextSibling:t.previousSibling}class a{constructor(t){this._listHead=t}[Symbol.iterator](){return l(this._listHead,"forward")}}class c{static next(){return(0,r.uid)()}}function d(t){return!!t&&t.is("element")&&t.hasAttribute("listItemId")}function u(t,e={}){return[...m(t,{...e,direction:"backward"}),...m(t,{...e,direction:"forward"})]}function m(t,e={}){const i="forward"==e.direction,n=Array.from(new o(t,{...e,includeSelf:i,sameIndent:!0,sameAttributes:"listItemId"}));return i?n:n.reverse()}function p(t){const e=new o(t,{sameIndent:!0,sameAttributes:"listType"}),i=new o(t,{sameIndent:!0,sameAttributes:"listType",includeSelf:!0,direction:"forward"});return[...Array.from(e).reverse(),...i]}function h(t){return!o.first(t,{sameIndent:!0,sameAttributes:"listItemId"})}function f(t){return!o.first(t,{direction:"forward",sameIndent:!0,sameAttributes:"listItemId"})}function b(t,e={}){t=(0,r.toArray)(t);const i=!1!==e.withNested,n=new Set;for(const e of t)for(const t of u(e,{higherIndent:i}))n.add(t);return k(n)}function g(t){t=(0,r.toArray)(t);const e=new Set;for(const i of t)for(const t of p(i))e.add(t);return k(e)}function y(t,e){const i=m(t,{direction:"forward"}),n=c.next();for(const t of i)e.setAttribute("listItemId",n,t);return i}function v(t,e,i){const n={};for(const[t,i]of e.getAttributes())t.startsWith("list")&&(n[t]=i);const s=m(t,{direction:"forward"});for(const t of s)i.setAttributes(n,t);return s}function w(t,e,{expand:i,indentBy:n=1}={}){t=(0,r.toArray)(t);const s=i?b(t):t;for(const t of s){const i=t.getAttribute("listIndent")+n;i<0?A(t,e):e.setAttribute("listIndent",i,t)}return s}function A(t,e){t=(0,r.toArray)(t);for(const i of t)for(const t of i.getAttributeKeys())t.startsWith("list")&&e.removeAttribute(t,i);return t}function I(t){if(!t.length)return!1;const e=t[0].getAttribute("listItemId");return!!e&&!t.some((t=>t.getAttribute("listItemId")!=e))}function k(t){return Array.from(t).filter((t=>"$graveyard"!==t.root.rootName)).sort(((t,e)=>t.index-e.index))}function x(t){const e=t.document.selection.getSelectedElement();return e&&t.schema.isObject(e)&&t.schema.isBlock(e)?e:null}function T(t,e,i){return m(e,{direction:"forward"}).pop().index>t.index?v(t,e,i):[]}class S extends t.Command{constructor(t,e){super(t),this._direction=e}refresh(){this.isEnabled=this._checkEnabled()}execute(){const t=this.editor.model,e=_(t.document.selection);t.change((t=>{const i=[];I(e)&&!h(e[0])?("forward"==this._direction&&i.push(...w(e,t)),i.push(...y(e[0],t))):"forward"==this._direction?i.push(...w(e,t,{expand:!0})):i.push(...function(t,e){const i=b(t=(0,r.toArray)(t)),n=new Set,s=Math.min(...i.map((t=>t.getAttribute("listIndent")))),l=new Map;for(const t of i)l.set(t,o.first(t,{lowerIndent:!0}));for(const t of i){if(n.has(t))continue;n.add(t);const i=t.getAttribute("listIndent")-1;if(i<0)A(t,e);else{if(t.getAttribute("listIndent")==s){const i=T(t,l.get(t),e);for(const t of i)n.add(t);if(i.length)continue}e.setAttribute("listIndent",i,t)}}return k(n)}(e,t));for(const e of i){if(!e.hasAttribute("listType"))continue;const i=o.first(e,{sameIndent:!0});i&&t.setAttribute("listType",i.getAttribute("listType"),e)}this._fireAfterExecute(i)}))}_fireAfterExecute(t){this.fire("afterExecute",k(new Set(t)))}_checkEnabled(){let t=_(this.editor.model.document.selection),e=t[0];if(!e)return!1;if("backward"==this._direction)return!0;if(I(t)&&!h(t[0]))return!0;t=b(t),e=t[0];const i=o.first(e,{sameIndent:!0});return!!i&&i.getAttribute("listType")==e.getAttribute("listType")}}function _(t){const e=Array.from(t.getSelectedBlocks()),i=e.findIndex((t=>!d(t)));return-1!=i&&(e.length=i),e}class C extends t.Command{constructor(t,e){super(t),this.type=e}refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(t={}){const e=this.editor.model,i=e.document,n=x(e),s=Array.from(i.selection.getSelectedBlocks()).filter((t=>e.schema.checkAttribute(t,"listType"))),r=void 0!==t.forceValue?!t.forceValue:this.value;e.change((t=>{if(r){const e=s[s.length-1],i=m(e,{direction:"forward"}),n=[];i.length>1&&n.push(...y(i[1],t)),n.push(...A(s,t)),n.push(...function(t,e){const i=[];let n=Number.POSITIVE_INFINITY;for(const{node:s}of l(t.nextSibling,"forward")){const t=s.getAttribute("listIndent");if(0==t)break;t<n&&(n=t);const r=t-n;e.setAttribute("listIndent",r,s),i.push(s)}return i}(e,t)),this._fireAfterExecute(n)}else if((n||i.selection.isCollapsed)&&d(s[0])){const e=p(n||s[0]);for(const i of e)t.setAttribute("listType",this.type,i);this._fireAfterExecute(e)}else{const e=[];for(const i of s)if(i.hasAttribute("listType"))for(const n of b(i,{withNested:!1}))n.getAttribute("listType")!=this.type&&(t.setAttribute("listType",this.type,n),e.push(n));else t.setAttributes({listIndent:0,listItemId:c.next(),listType:this.type},i),e.push(i);this._fireAfterExecute(e)}}))}_fireAfterExecute(t){this.fire("afterExecute",k(new Set(t)))}_getValue(){const t=this.editor.model.document.selection,e=Array.from(t.getSelectedBlocks());if(!e.length)return!1;for(const t of e)if(t.getAttribute("listType")!=this.type)return!1;return!0}_checkEnabled(){const t=this.editor.model.document.selection,e=this.editor.model.schema,i=Array.from(t.getSelectedBlocks());if(!i.length)return!1;if(this.value)return!0;for(const t of i)if(e.checkAttribute(t,"listType"))return!0;return!1}}class V extends t.Command{constructor(t,e){super(t),this._direction=e}refresh(){this.isEnabled=this._checkEnabled()}execute({shouldMergeOnBlocksContentLevel:t=!1}={}){const e=this.editor.model,i=e.document.selection,n=[];e.change((s=>{const{firstElement:r,lastElement:l}=this._getMergeSubjectElements(i,t),a=r.getAttribute("listIndent")||0,c=l.getAttribute("listIndent"),d=l.getAttribute("listItemId");if(a!=c){const t=(u=l,Array.from(new o(u,{direction:"forward",higherIndent:!0})));n.push(...w([l,...t],s,{indentBy:a-c,expand:a<c}))}var u;if(t){let t=i;i.isCollapsed&&(t=s.createSelection(s.createRange(s.createPositionAt(r,"end"),s.createPositionAt(l,0)))),e.deleteContent(t,{doNotResetEntireContent:i.isCollapsed});const o=t.getLastPosition().parent,a=o.nextSibling;n.push(o),a&&a!==l&&a.getAttribute("listItemId")==d&&n.push(...v(a,o,s))}else n.push(...v(l,r,s));this._fireAfterExecute(n)}))}_fireAfterExecute(t){this.fire("afterExecute",k(new Set(t)))}_checkEnabled(){const t=this.editor.model,e=t.document.selection,i=x(t);if(e.isCollapsed||i){const t=i||e.getFirstPosition().parent;if(!d(t))return!1;const n="backward"==this._direction?t.previousSibling:t.nextSibling;if(!n)return!1;if(I([t,n]))return!1}else{const t=e.getLastPosition(),i=e.getFirstPosition();if(t.parent===i.parent)return!1;if(!d(t.parent))return!1}return!0}_getMergeSubjectElements(t,e){const i=x(this.editor.model);let n,s;if(t.isCollapsed||i){const r=i||t.getFirstPosition().parent,l=h(r);"backward"==this._direction?(s=r,n=l&&!e?o.first(r,{sameIndent:!0,lowerIndent:!0}):r.previousSibling):(n=r,s=r.nextSibling)}else n=t.getFirstPosition().parent,s=t.getLastPosition().parent;return{firstElement:n,lastElement:s}}}class L extends t.Command{constructor(t,e){super(t),this._direction=e}refresh(){this.isEnabled=this._checkEnabled()}execute(){this.editor.model.change((t=>{const e=y(this._getStartBlock(),t);this._fireAfterExecute(e)}))}_fireAfterExecute(t){this.fire("afterExecute",k(new Set(t)))}_checkEnabled(){const t=this.editor.model.document.selection,e=this._getStartBlock();return t.isCollapsed&&d(e)&&!h(e)}_getStartBlock(){const t=this.editor.model.document.selection.getFirstPosition().parent;return"before"==this._direction?t:t.nextSibling}}function E(t){return t.is("element","ol")||t.is("element","ul")}function P(t){return t.is("element","li")}function z(t){let e=0,i=t.parent;for(;i;){if(P(i))e++;else{const t=i.previousSibling;t&&P(t)&&e++}i=i.parent}return e}function B(t,e,i,n=R(i,e)){return t.createAttributeElement(M(i),null,{priority:2*e/100-100,id:n})}function N(t,e,i){return t.createAttributeElement("li",null,{priority:(2*e+1)/100-100,id:i})}function M(t){return"numbered"==t?"ol":"ul"}function R(t,e){return`list-${t}-${e}`}function O(t,e){const i=t.nodeBefore;if(d(i)){let t=i;for({node:t}of l(t,"backward"))if(e.has(t))return;e.set(i,t)}else{const i=t.nodeAfter;d(i)&&e.set(i,i)}}var H=i(492);function F(){return(t,e,i)=>{if(!i.consumable.test(e.viewItem,{name:!0}))return;const n=new H.UpcastWriter(e.viewItem.document);for(const t of Array.from(e.viewItem.getChildren()))P(t)||E(t)||n.remove(t)}}function D(t,e,i){const n=function(t){return(e,i)=>{const n=[];for(const i of t)e.hasAttribute(i)&&n.push(`attribute:${i}`);return!!n.every((t=>!1!==i.test(e,t)))&&(n.forEach((t=>i.consume(e,t))),!0)}}(t);return(s,r,l)=>{const{writer:a,mapper:c,consumable:d}=l,u=r.item;if(!t.includes(r.attributeKey))return;if(!n(u,d))return;const m=function(t,e,i){const n=i.createRangeOn(t);return e.toViewRange(n).getTrimmed().getContainedElement()}(u,c,i);!function(t,e){let i=t.parent;for(;i.is("attributeElement")&&["ul","ol","li"].includes(i.name);){const n=i.parent;e.unwrap(e.createRangeOn(t),i),i=n}}(m,a),function(t,e,i,n){if(!t.hasAttribute("listIndent"))return;const s=t.getAttribute("listIndent");let r=t;for(let t=s;t>=0;t--){const s=N(n,t,r.getAttribute("listItemId")),l=B(n,t,r.getAttribute("listType"));for(const t of i)r.hasAttribute(t.attributeName)&&t.setAttributeOnDowncast(n,r.getAttribute(t.attributeName),"list"==t.scope?l:s);if(e=n.wrap(e,s),e=n.wrap(e,l),0==t)break;if(r=o.first(r,{lowerIndent:!0}),!r)break}}(u,a.createRangeOn(m),e,a)}}function j(t,{dataPipeline:e}={}){return(i,{writer:n})=>{if(!U(i,t))return;const s=n.createContainerElement("span",{class:"ck-list-bogus-paragraph"});return e&&n.setCustomProperty("dataPipeline:transparentRendering",!0,s),s}}function U(t,e,i=u(t)){if(!d(t))return!1;for(const i of t.getAttributeKeys())if(!i.startsWith("selection:")&&!e.includes(i))return!1;return i.length<2}var q=i(62),K=i.n(q),Z=i(78),$={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};K()(Z.Z,$);Z.Z.locals;const W=["listType","listIndent","listItemId"];class G extends t.Plugin{static get pluginName(){return"DocumentListEditing"}static get requires(){return[e.Enter,s.Delete]}constructor(t){super(t),this._downcastStrategies=[]}init(){const t=this.editor,e=t.model;if(t.plugins.has("ListEditing"))throw new r.CKEditorError("document-list-feature-conflict",this,{conflictPlugin:"ListEditing"});e.schema.extend("$container",{allowAttributes:W}),e.schema.extend("$block",{allowAttributes:W}),e.schema.extend("$blockObject",{allowAttributes:W});for(const t of W)e.schema.setAttributeProperties(t,{copyOnReplace:!0});t.commands.add("numberedList",new C(t,"numbered")),t.commands.add("bulletedList",new C(t,"bulleted")),t.commands.add("indentList",new S(t,"forward")),t.commands.add("outdentList",new S(t,"backward")),t.commands.add("mergeListItemBackward",new V(t,"backward")),t.commands.add("mergeListItemForward",new V(t,"forward")),t.commands.add("splitListItemBefore",new L(t,"before")),t.commands.add("splitListItemAfter",new L(t,"after")),this._setupDeleteIntegration(),this._setupEnterIntegration(),this._setupTabIntegration(),this._setupClipboardIntegration()}afterInit(){const t=this.editor.commands,e=t.get("indent"),i=t.get("outdent");e&&e.registerChildCommand(t.get("indentList"),{priority:"high"}),i&&i.registerChildCommand(t.get("outdentList"),{priority:"lowest"}),this._setupModelPostFixing(),this._setupConversion()}registerDowncastStrategy(t){this._downcastStrategies.push(t)}_getListAttributeNames(){return[...W,...this._downcastStrategies.map((t=>t.attributeName))]}_setupDeleteIntegration(){const t=this.editor,e=t.commands.get("mergeListItemBackward"),i=t.commands.get("mergeListItemForward");this.listenTo(t.editing.view.document,"delete",((n,s)=>{const r=t.model.document.selection;x(t.model)||t.model.change((()=>{const l=r.getFirstPosition();if(r.isCollapsed&&"backward"==s.direction){if(!l.isAtStart)return;const i=l.parent;if(!d(i))return;if(o.first(i,{sameAttributes:"listType",sameIndent:!0})||0!==i.getAttribute("listIndent")){if(!e.isEnabled)return;e.execute({shouldMergeOnBlocksContentLevel:Y(t.model,"backward")})}else f(i)||t.execute("splitListItemAfter"),t.execute("outdentList");s.preventDefault(),n.stop()}else{if(r.isCollapsed&&!r.getLastPosition().isAtEnd)return;if(!i.isEnabled)return;i.execute({shouldMergeOnBlocksContentLevel:Y(t.model,"forward")}),s.preventDefault(),n.stop()}}))}),{context:"li"})}_setupEnterIntegration(){const t=this.editor,e=t.model,i=t.commands,n=i.get("enter");this.listenTo(t.editing.view.document,"enter",((i,n)=>{const s=e.document,r=s.selection.getFirstPosition().parent;if(s.selection.isCollapsed&&d(r)&&r.isEmpty&&!n.isSoft){const e=h(r),s=f(r);e&&s?(t.execute("outdentList"),n.preventDefault(),i.stop()):e&&!s?(t.execute("splitListItemAfter"),n.preventDefault(),i.stop()):s&&(t.execute("splitListItemBefore"),n.preventDefault(),i.stop())}}),{context:"li"}),this.listenTo(n,"afterExecute",(()=>{const e=i.get("splitListItemBefore");if(e.refresh(),!e.isEnabled)return;2===u(t.model.document.selection.getLastPosition().parent).length&&e.execute()}))}_setupTabIntegration(){const t=this.editor;this.listenTo(t.editing.view.document,"tab",((e,i)=>{const n=i.shiftKey?"outdentList":"indentList";this.editor.commands.get(n).isEnabled&&(t.execute(n),i.stopPropagation(),i.preventDefault(),e.stop())}),{context:"li"})}_setupConversion(){const t=this.editor,e=t.model,i=this._getListAttributeNames();t.conversion.for("upcast").elementToElement({view:"li",model:"paragraph"}).add((t=>{t.on("element:li",((t,e,i)=>{const{writer:n,schema:s}=i;if(!e.modelRange)return;const r=Array.from(e.modelRange.getItems({shallow:!0})).filter((t=>s.checkAttribute(t,"listItemId")));if(!r.length)return;const o={listItemId:c.next(),listIndent:z(e.viewItem),listType:e.viewItem.parent&&"ol"==e.viewItem.parent.name?"numbered":"bulleted"};for(const t of r)d(t)||n.setAttributes(o,t);r.length>1&&r[1].getAttribute("listItemId")!=o.listItemId&&i.keepEmptyElement(r[0])})),t.on("element:ul",F(),{priority:"high"}),t.on("element:ol",F(),{priority:"high"})})),t.conversion.for("editingDowncast").elementToElement({model:"paragraph",view:j(i),converterPriority:"high"}),t.conversion.for("dataDowncast").elementToElement({model:"paragraph",view:j(i,{dataPipeline:!0}),converterPriority:"high"}),t.conversion.for("downcast").add((t=>{t.on("attribute",D(i,this._downcastStrategies,e))})),this.listenTo(e.document,"change:data",function(t,e,i,n){return()=>{const n=t.document.differ.getChanges(),o=[],l=new Map,a=new Set;for(const t of n)if("insert"==t.type&&"$text"!=t.name)O(t.position,l),t.attributes.has("listItemId")?a.add(t.position.nodeAfter):O(t.position.getShiftedBy(t.length),l);else if("remove"==t.type&&t.attributes.has("listItemId"))O(t.position,l);else if("attribute"==t.type){const e=t.range.start.nodeAfter;i.includes(t.attributeKey)?(O(t.range.start,l),null===t.attributeNewValue?(O(t.range.start.getShiftedBy(1),l),r(e)&&o.push(e)):a.add(e)):d(e)&&r(e)&&o.push(e)}for(const t of l.values())o.push(...s(t,a));for(const t of new Set(o))e.reconvertItem(t)};function s(t,e){const n=[],s=new Set,a=[];for(const{node:c,previous:d}of l(t,"forward")){if(s.has(c))continue;const t=c.getAttribute("listIndent");d&&t<d.getAttribute("listIndent")&&(a.length=t+1),a[t]=Object.fromEntries(Array.from(c.getAttributes()).filter((([t])=>i.includes(t))));const l=m(c,{direction:"forward"});for(const t of l)s.add(t),(r(t,l)||o(t,a,e))&&n.push(t)}return n}function r(t,n){if(!t.is("element","paragraph"))return!1;const s=e.mapper.toViewElement(t);if(!s)return!1;const r=U(t,i,n);return!(!r||!s.is("element","p"))||!(r||!s.is("element","span"))}function o(t,i,s){if(s.has(t))return!1;const r=e.mapper.toViewElement(t);let o=i.length-1;for(let t=r.parent;!t.is("editableElement");t=t.parent){const e=P(t),s=E(t);if(!s&&!e)continue;const r="checkAttributes:"+(e?"item":"list");if(n.fire(r,{viewElement:t,modelAttributes:i[o]}))break;if(s&&(o--,o<0))return!1}return!0}}(e,t.editing,i,this)),this.on("checkAttributes:item",((t,{viewElement:e,modelAttributes:i})=>{e.id!=i.listItemId&&(t.return=!0,t.stop())})),this.on("checkAttributes:list",((t,{viewElement:e,modelAttributes:i})=>{e.name==M(i.listType)&&e.id==R(i.listType,i.listIndent)||(t.return=!0,t.stop())}))}_setupModelPostFixing(){const t=this.editor.model,e=this._getListAttributeNames();t.document.registerPostFixer((i=>function(t,e,i,n){const s=t.document.differ.getChanges(),r=new Map;let o=!1;for(const n of s)if("insert"==n.type&&"$text"!=n.name){const s=n.position.nodeAfter;if(!t.schema.checkAttribute(s,"listItemId"))for(const t of Array.from(s.getAttributeKeys()))i.includes(t)&&(e.removeAttribute(t,s),o=!0);O(n.position,r),n.attributes.has("listItemId")||O(n.position.getShiftedBy(n.length),r);for(const{item:e,previousPosition:i}of t.createRangeIn(s))d(e)&&O(i,r)}else"remove"==n.type?O(n.position,r):"attribute"==n.type&&i.includes(n.attributeKey)&&(O(n.range.start,r),null===n.attributeNewValue&&O(n.range.start.getShiftedBy(1),r));const l=new Set;for(const t of r.values())o=n.fire("postFixer",{listNodes:new a(t),listHead:t,writer:e,seenIds:l})||o;return o}(t,i,e,this))),this.on("postFixer",((t,{listNodes:e,writer:i})=>{t.return=function(t,e){let i=0,n=-1,s=null,r=!1;for(const{node:o}of t){const t=o.getAttribute("listIndent");if(t>i){let l;null===s?(s=t-i,l=i):(s>t&&(s=t),l=t-s),l>n+1&&(l=n+1),e.setAttribute("listIndent",l,o),r=!0,n=l}else s=null,i=t+1,n=t}return r}(e,i)||t.return}),{priority:"high"}),this.on("postFixer",((t,{listNodes:e,writer:i,seenIds:n})=>{t.return=function(t,e,i){const n=new Set;let s=!1;for(const{node:r}of t){if(n.has(r))continue;let t=r.getAttribute("listType"),o=r.getAttribute("listItemId");e.has(o)&&(o=c.next()),e.add(o);for(const e of m(r,{direction:"forward"}))n.add(e),e.getAttribute("listType")!=t&&(o=c.next(),t=e.getAttribute("listType")),e.getAttribute("listItemId")!=o&&(i.setAttribute("listItemId",o,e),s=!0)}return s}(e,n,i)||t.return}),{priority:"high"})}_setupClipboardIntegration(){const t=this.editor.model;this.listenTo(t,"insertContent",function(t){return(e,[i,n])=>{const s=i.is("documentFragment")?i.getChild(0):i;if(!d(s))return;let r;r=n?t.createSelection(n):t.document.selection;const o=r.getFirstPosition();let a=null;if(d(o.parent)?a=o.parent:d(o.nodeBefore)&&(a=o.nodeBefore),!a)return;const c=a.getAttribute("listIndent")-s.getAttribute("listIndent");c<=0||t.change((t=>{for(const{node:e}of l(s,"forward"))t.setAttribute("listIndent",e.getAttribute("listIndent")+c,e)}))}}(t),{priority:"high"}),this.listenTo(t,"getSelectedContent",((e,[i])=>{I(Array.from(i.getSelectedBlocks()))&&t.change((t=>A(Array.from(e.return.getChildren()),t)))}))}}function Y(t,e){const i=t.document.selection;if(!i.isCollapsed)return!x(t);if("forward"===e)return!0;const n=i.getFirstPosition().parent,s=n.previousSibling;return!t.schema.isObject(s)&&(!!s.isEmpty||I([n,s]))}var J=i(273);function Q(t,e){const i=e.mapper,n=e.writer,s="numbered"==t.getAttribute("listType")?"ol":"ul",r=function(t){const e=t.createContainerElement("li");return e.getFillerOffset=ct,e}(n),o=n.createContainerElement(s,null);return n.insert(n.createPositionAt(o,0),r),i.bindElements(t,r),r}function X(t,e,i,n){const s=e.parent,r=i.mapper,o=i.writer;let l=r.toViewPosition(n.createPositionBefore(t));const a=it(t.previousSibling,{sameIndent:!0,smallerIndent:!0,listIndent:t.getAttribute("listIndent")}),c=t.previousSibling;if(a&&a.getAttribute("listIndent")==t.getAttribute("listIndent")){const t=r.toViewElement(a);l=o.breakContainer(o.createPositionAfter(t))}else if(c&&"listItem"==c.name){l=r.toViewPosition(n.createPositionAt(c,"end"));const t=r.findMappedViewAncestor(l),e=st(t);l=e?o.createPositionBefore(e):o.createPositionAt(t,"end")}else l=r.toViewPosition(n.createPositionBefore(t));if(l=et(l),o.insert(l,s),c&&"listItem"==c.name){const t=r.toViewElement(c),i=o.createRange(o.createPositionAt(t,0),l).getWalker({ignoreElementEnd:!0});for(const t of i)if(t.item.is("element","li")){const n=o.breakContainer(o.createPositionBefore(t.item)),s=t.item.parent,r=o.createPositionAt(e,"end");tt(o,r.nodeBefore,r.nodeAfter),o.move(o.createRangeOn(s),r),i.position=n}}else{const i=s.nextSibling;if(i&&(i.is("element","ul")||i.is("element","ol"))){let n=null;for(const e of i.getChildren()){const i=r.toModelElement(e);if(!(i&&i.getAttribute("listIndent")>t.getAttribute("listIndent")))break;n=e}n&&(o.breakContainer(o.createPositionAfter(n)),o.move(o.createRangeOn(n.parent),o.createPositionAt(e,"end")))}}tt(o,s,s.nextSibling),tt(o,s.previousSibling,s)}function tt(t,e,i){return!e||!i||"ul"!=e.name&&"ol"!=e.name||e.name!=i.name||e.getAttribute("class")!==i.getAttribute("class")?null:t.mergeContainers(t.createPositionAfter(e))}function et(t){return t.getLastMatchingPosition((t=>t.item.is("uiElement")))}function it(t,e){const i=!!e.sameIndent,n=!!e.smallerIndent,s=e.listIndent;let r=t;for(;r&&"listItem"==r.name;){const t=r.getAttribute("listIndent");if(i&&s==t||n&&s>t)return r;r="forward"===e.direction?r.nextSibling:r.previousSibling}return null}function nt(t,e,i,n){t.ui.componentFactory.add(e,(s=>{const r=t.commands.get(e),o=new J.ButtonView(s);return o.set({label:i,icon:n,tooltip:!0,isToggleable:!0}),o.bind("isOn","isEnabled").to(r,"value","isEnabled"),o.on("execute",(()=>{t.execute(e),t.editing.view.focus()})),o}))}function st(t){for(const e of t.getChildren())if("ul"==e.name||"ol"==e.name)return e;return null}function rt(t,e){const i=[],n=t.parent,s={ignoreElementEnd:!1,startPosition:t,shallow:!0,direction:e},r=n.getAttribute("listIndent"),o=[...new H.TreeWalker(s)].filter((t=>t.item.is("element"))).map((t=>t.item));for(const t of o){if(!t.is("element","listItem"))break;if(t.getAttribute("listIndent")<r)break;if(!(t.getAttribute("listIndent")>r)){if(t.getAttribute("listType")!==n.getAttribute("listType"))break;if(t.getAttribute("listStyle")!==n.getAttribute("listStyle"))break;if(t.getAttribute("listReversed")!==n.getAttribute("listReversed"))break;if(t.getAttribute("listStart")!==n.getAttribute("listStart"))break;"backward"===e?i.unshift(t):i.push(t)}}return i}function ot(t){let e=[...t.document.selection.getSelectedBlocks()].filter((t=>t.is("element","listItem"))).map((e=>{const i=t.change((t=>t.createPositionAt(e,0)));return[...rt(i,"backward"),...rt(i,"forward")]})).flat();return e=[...new Set(e)],e}const lt=["disc","circle","square"],at=["decimal","decimal-leading-zero","lower-roman","upper-roman","lower-latin","upper-latin"];function ct(){const t=!this.isEmpty&&("ul"==this.getChild(0).name||"ol"==this.getChild(0).name);return this.isEmpty||t?0:H.getFillerOffset.call(this)}const dt='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M7 5.75c0 .414.336.75.75.75h9.5a.75.75 0 1 0 0-1.5h-9.5a.75.75 0 0 0-.75.75zM3.5 3v5H2V3.7H1v-1h2.5V3zM.343 17.857l2.59-3.257H2.92a.6.6 0 1 0-1.04 0H.302a2 2 0 1 1 3.995 0h-.001c-.048.405-.16.734-.333.988-.175.254-.59.692-1.244 1.312H4.3v1h-4l.043-.043zM7 14.75a.75.75 0 0 1 .75-.75h9.5a.75.75 0 1 1 0 1.5h-9.5a.75.75 0 0 1-.75-.75z"/></svg>',ut='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M7 5.75c0 .414.336.75.75.75h9.5a.75.75 0 1 0 0-1.5h-9.5a.75.75 0 0 0-.75.75zm-6 0C1 4.784 1.777 4 2.75 4c.966 0 1.75.777 1.75 1.75 0 .966-.777 1.75-1.75 1.75C1.784 7.5 1 6.723 1 5.75zm6 9c0 .414.336.75.75.75h9.5a.75.75 0 1 0 0-1.5h-9.5a.75.75 0 0 0-.75.75zm-6 0c0-.966.777-1.75 1.75-1.75.966 0 1.75.777 1.75 1.75 0 .966-.777 1.75-1.75 1.75-.966 0-1.75-.777-1.75-1.75z"/></svg>';class mt extends t.Plugin{static get pluginName(){return"ListUI"}init(){const t=this.editor.t;nt(this.editor,"numberedList",t("Numbered List"),dt),nt(this.editor,"bulletedList",t("Bulleted List"),ut)}}class pt extends t.Plugin{static get requires(){return[G,mt]}static get pluginName(){return"DocumentList"}}class ht extends t.Command{refresh(){const t=this._getValue();this.value=t,this.isEnabled=null!=t}execute(t={}){const e=this.editor.model,i=e.document;let n=Array.from(i.selection.getSelectedBlocks()).filter((t=>d(t)&&"numbered"==t.getAttribute("listType")));n=g(n),e.change((e=>{for(const i of n)e.setAttribute("listStart",t.startIndex||1,i)}))}_getValue(){const t=this.editor.model.document,e=(0,r.first)(t.selection.getSelectedBlocks());return e&&d(e)&&"numbered"==e.getAttribute("listType")?e.getAttribute("listStart"):null}}const ft={},bt={},gt={},yt=[{listStyle:"disc",typeAttribute:"disc",listType:"bulleted"},{listStyle:"circle",typeAttribute:"circle",listType:"bulleted"},{listStyle:"square",typeAttribute:"square",listType:"bulleted"},{listStyle:"decimal",typeAttribute:"1",listType:"numbered"},{listStyle:"decimal-leading-zero",typeAttribute:null,listType:"numbered"},{listStyle:"lower-roman",typeAttribute:"i",listType:"numbered"},{listStyle:"upper-roman",typeAttribute:"I",listType:"numbered"},{listStyle:"lower-alpha",typeAttribute:"a",listType:"numbered"},{listStyle:"upper-alpha",typeAttribute:"A",listType:"numbered"},{listStyle:"lower-latin",typeAttribute:"a",listType:"numbered"},{listStyle:"upper-latin",typeAttribute:"A",listType:"numbered"}];for(const{listStyle:t,typeAttribute:e,listType:i}of yt)ft[t]=i,bt[t]=e,e&&(gt[e]=t);function vt(t){return ft[t]||null}function wt(t){return bt[t]||null}class At extends t.Command{constructor(t,e,i){super(t),this._defaultType=e,this._supportedTypes=i}refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(t={}){const e=this.editor.model,i=e.document;e.change((e=>{this._tryToConvertItemsToList(t);let n=Array.from(i.selection.getSelectedBlocks()).filter((t=>t.hasAttribute("listType")));if(n.length){n=g(n);for(const i of n)e.setAttribute("listStyle",t.type||this._defaultType,i)}}))}isStyleTypeSupported(t){return!this._supportedTypes||this._supportedTypes.includes(t)}_getValue(){const t=(0,r.first)(this.editor.model.document.selection.getSelectedBlocks());return d(t)?t.getAttribute("listStyle"):null}_checkEnabled(){const t=this.editor,e=t.commands.get("numberedList"),i=t.commands.get("bulletedList");return e.isEnabled||i.isEnabled}_tryToConvertItemsToList(t){if(!t.type)return;const e=vt(t.type);if(!e)return;const i=this.editor,n=e+"List";i.commands.get(n).value||i.execute(n)}}class It extends t.Command{refresh(){const t=this._getValue();this.value=t,this.isEnabled=null!=t}execute(t={}){const e=this.editor.model,i=e.document;let n=Array.from(i.selection.getSelectedBlocks()).filter((t=>d(t)&&"numbered"==t.getAttribute("listType")));n=g(n),e.change((e=>{for(const i of n)e.setAttribute("listReversed",!!t.reversed,i)}))}_getValue(){const t=this.editor.model.document,e=(0,r.first)(t.selection.getSelectedBlocks());return d(e)&&"numbered"==e.getAttribute("listType")?e.getAttribute("listReversed"):null}}function kt(t){return(e,i,n)=>{const{writer:s,schema:r,consumable:o}=n;if(!1===o.test(i.viewItem,t.viewConsumables))return;i.modelRange||Object.assign(i,n.convertChildren(i.viewItem,i.modelCursor));let l=!1;for(const e of i.modelRange.getItems({shallow:!0}))r.checkAttribute(e,t.attributeName)&&t.appliesToListItem(e)&&(e.hasAttribute(t.attributeName)||(s.setAttribute(t.attributeName,t.getAttributeOnUpcast(i.viewItem),e),l=!0));l&&o.consume(i.viewItem,t.viewConsumables)}}const xt="default";class Tt extends t.Plugin{static get requires(){return[G]}static get pluginName(){return"DocumentListPropertiesEditing"}constructor(t){super(t),t.config.define("list",{properties:{styles:!0,startIndex:!1,reversed:!1}})}init(){const t=this.editor,e=t.model,i=t.plugins.get(G),n=function(t){const e=[];if(t.styles){const i="object"==typeof t.styles&&t.styles.useAttribute;e.push({attributeName:"listStyle",defaultValue:xt,viewConsumables:{styles:"list-style-type"},addCommand(t){let e=yt.map((t=>t.listStyle));i&&(e=e.filter((t=>!!wt(t)))),t.commands.add("listStyle",new At(t,xt,e))},appliesToListItem:()=>!0,hasValidAttribute(t){if(!t.hasAttribute("listStyle"))return!1;const e=t.getAttribute("listStyle");return e==xt||vt(e)==t.getAttribute("listType")},setAttributeOnDowncast(t,e,n){if(e&&e!==xt){if(!i)return void t.setStyle("list-style-type",e,n);{const i=wt(e);if(i)return void t.setAttribute("type",i,n)}}t.removeStyle("list-style-type",n),t.removeAttribute("type",n)},getAttributeOnUpcast(t){const e=t.getStyle("list-style-type");if(e)return e;const i=t.getAttribute("type");return i?gt[i]||null:xt}})}t.reversed&&e.push({attributeName:"listReversed",defaultValue:!1,viewConsumables:{attributes:"reversed"},addCommand(t){t.commands.add("listReversed",new It(t))},appliesToListItem:t=>"numbered"==t.getAttribute("listType"),hasValidAttribute(t){return this.appliesToListItem(t)==t.hasAttribute("listReversed")},setAttributeOnDowncast(t,e,i){e?t.setAttribute("reversed","reversed",i):t.removeAttribute("reversed",i)},getAttributeOnUpcast:t=>t.hasAttribute("reversed")});t.startIndex&&e.push({attributeName:"listStart",defaultValue:1,viewConsumables:{attributes:"start"},addCommand(t){t.commands.add("listStart",new ht(t))},appliesToListItem:t=>"numbered"==t.getAttribute("listType"),hasValidAttribute(t){return this.appliesToListItem(t)==t.hasAttribute("listStart")},setAttributeOnDowncast(t,e,i){e&&e>1?t.setAttribute("start",e,i):t.removeAttribute("start",i)},getAttributeOnUpcast:t=>t.getAttribute("start")||1});return e}(t.config.get("list.properties"));for(const s of n)s.addCommand(t),e.schema.extend("$container",{allowAttributes:s.attributeName}),e.schema.extend("$block",{allowAttributes:s.attributeName}),e.schema.extend("$blockObject",{allowAttributes:s.attributeName}),i.registerDowncastStrategy({scope:"list",attributeName:s.attributeName,setAttributeOnDowncast(t,e,i){s.setAttributeOnDowncast(t,e,i)}});t.conversion.for("upcast").add((t=>{for(const e of n)t.on("element:ol",kt(e)),t.on("element:ul",kt(e))})),i.on("checkAttributes:list",((t,{viewElement:e,modelAttributes:i})=>{for(const s of n)s.getAttributeOnUpcast(e)!=i[s.attributeName]&&(t.return=!0,t.stop())})),this.listenTo(t.commands.get("indentList"),"afterExecute",((t,i)=>{e.change((t=>{for(const e of i)for(const i of n)i.appliesToListItem(e)&&t.setAttribute(i.attributeName,i.defaultValue,e)}))})),i.on("postFixer",((t,{listNodes:e,writer:i})=>{for(const{node:s}of e)for(const e of n)e.hasValidAttribute(s)||(e.appliesToListItem(s)?i.setAttribute(e.attributeName,e.defaultValue,s):i.removeAttribute(e.attributeName,s),t.return=!0)})),i.on("postFixer",((t,{listNodes:e,writer:i})=>{const s=[];for(const{node:r,previous:o}of e){if(!o)continue;const e=r.getAttribute("listIndent"),l=o.getAttribute("listIndent");let a=null;if(e>l?s[l]=o:e<l?(a=s[e],s.length=e):a=o,a&&a.getAttribute("listType")==r.getAttribute("listType"))for(const e of n){const{attributeName:n}=e;if(!e.appliesToListItem(r))continue;const s=a.getAttribute(n);r.getAttribute(n)!=s&&(i.setAttribute(n,s,r),t.return=!0)}}}))}}var St=i(389),_t={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};K()(St.Z,_t);St.Z.locals;class Ct extends J.View{constructor(t,e){super(t);const i=this.bindTemplate;this.set("isCollapsed",!1),this.set("label",""),this.buttonView=this._createButtonView(),this.children=this.createCollection(),this.set("_collapsibleAriaLabelUid"),e&&this.children.addMany(e),this.setTemplate({tag:"div",attributes:{class:["ck","ck-collapsible",i.if("isCollapsed","ck-collapsible_collapsed")]},children:[this.buttonView,{tag:"div",attributes:{class:["ck","ck-collapsible__children"],role:"region",hidden:i.if("isCollapsed","hidden"),"aria-labelledby":i.to("_collapsibleAriaLabelUid")},children:this.children}]})}render(){super.render(),this._collapsibleAriaLabelUid=this.buttonView.labelView.element.id}_createButtonView(){const t=new J.ButtonView(this.locale),e=t.bindTemplate;return t.set({withText:!0,icon:'<svg viewBox="0 0 10 10" xmlns="http://www.w3.org/2000/svg"><path d="M.941 4.523a.75.75 0 1 1 1.06-1.06l3.006 3.005 3.005-3.005a.75.75 0 1 1 1.06 1.06l-3.549 3.55a.75.75 0 0 1-1.168-.136L.941 4.523z"/></svg>'}),t.extendTemplate({attributes:{"aria-expanded":e.to("isOn",(t=>String(t)))}}),t.bind("label").to(this),t.bind("isOn").to(this,"isCollapsed",(t=>!t)),t.on("execute",(()=>{this.isCollapsed=!this.isCollapsed})),t}}var Vt=i(543),Lt={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};K()(Vt.Z,Lt);Vt.Z.locals;class Et extends J.View{constructor(t,{enabledProperties:e,styleButtonViews:i,styleGridAriaLabel:n}){super(t);const s=["ck","ck-list-properties"];this.children=this.createCollection(),this.stylesView=null,this.additionalPropertiesCollapsibleView=null,this.startIndexFieldView=null,this.reversedSwitchButtonView=null,this.focusTracker=new r.FocusTracker,this.keystrokes=new r.KeystrokeHandler,this.focusables=new J.ViewCollection,this.focusCycler=new J.FocusCycler({focusables:this.focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),e.styles?(this.stylesView=this._createStylesView(i,n),this.children.add(this.stylesView)):s.push("ck-list-properties_without-styles"),(e.startIndex||e.reversed)&&(this._addNumberedListPropertyViews(e,i),s.push("ck-list-properties_with-numbered-properties")),this.setTemplate({tag:"div",attributes:{class:s},children:this.children})}render(){if(super.render(),this.stylesView){this.focusables.add(this.stylesView),this.focusTracker.add(this.stylesView.element),(this.startIndexFieldView||this.reversedSwitchButtonView)&&(this.focusables.add(this.children.last.buttonView),this.focusTracker.add(this.children.last.buttonView.element));for(const t of this.stylesView.children)this.stylesView.focusTracker.add(t.element);(0,J.addKeyboardHandlingForGrid)({keystrokeHandler:this.stylesView.keystrokes,focusTracker:this.stylesView.focusTracker,gridItems:this.stylesView.children,numberOfColumns:()=>r.global.window.getComputedStyle(this.stylesView.element).getPropertyValue("grid-template-columns").split(" ").length})}if(this.startIndexFieldView){this.focusables.add(this.startIndexFieldView),this.focusTracker.add(this.startIndexFieldView.element),this.listenTo(this.startIndexFieldView.element,"selectstart",((t,e)=>{e.stopPropagation()}),{priority:"high"});const t=t=>t.stopPropagation();this.keystrokes.set("arrowright",t),this.keystrokes.set("arrowleft",t),this.keystrokes.set("arrowup",t),this.keystrokes.set("arrowdown",t)}this.reversedSwitchButtonView&&(this.focusables.add(this.reversedSwitchButtonView),this.focusTracker.add(this.reversedSwitchButtonView.element)),this.keystrokes.listenTo(this.element)}focus(){this.focusCycler.focusFirst()}focusLast(){this.focusCycler.focusLast()}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}_createStylesView(t,e){const i=new J.View(this.locale);return i.children=i.createCollection(this.locale),i.children.addMany(t),i.setTemplate({tag:"div",attributes:{"aria-label":e,class:["ck","ck-list-styles-list"]},children:i.children}),i.children.delegate("execute").to(this),i.focus=function(){this.children.first.focus()},i.focusTracker=new r.FocusTracker,i.keystrokes=new r.KeystrokeHandler,i.render(),i.keystrokes.listenTo(i.element),i}_addNumberedListPropertyViews(t){const e=this.locale.t,i=[];t.startIndex&&(this.startIndexFieldView=this._createStartIndexField(),i.push(this.startIndexFieldView)),t.reversed&&(this.reversedSwitchButtonView=this._createReversedSwitchButton(),i.push(this.reversedSwitchButtonView)),t.styles?(this.additionalPropertiesCollapsibleView=new Ct(this.locale,i),this.additionalPropertiesCollapsibleView.set({label:e("List properties"),isCollapsed:!0}),this.additionalPropertiesCollapsibleView.buttonView.bind("isEnabled").toMany(i,"isEnabled",((...t)=>t.some((t=>t)))),this.additionalPropertiesCollapsibleView.buttonView.on("change:isEnabled",((t,e,i)=>{i||(this.additionalPropertiesCollapsibleView.isCollapsed=!0)})),this.children.add(this.additionalPropertiesCollapsibleView)):this.children.addMany(i)}_createStartIndexField(){const t=this.locale.t,e=new J.LabeledFieldView(this.locale,J.createLabeledInputNumber);return e.set({label:t("Start at"),class:"ck-numbered-list-properties__start-index"}),e.fieldView.set({min:1,step:1,value:1,inputMode:"numeric"}),e.fieldView.on("input",(()=>{const i=e.fieldView.element,n=i.valueAsNumber;Number.isNaN(n)||(i.checkValidity()?this.fire("listStart",{startIndex:n}):e.errorText=t("Start index must be greater than 0."))})),e}_createReversedSwitchButton(){const t=this.locale.t,e=new J.SwitchButtonView(this.locale);return e.set({withText:!0,label:t("Reversed order"),class:"ck-numbered-list-properties__reversed-order"}),e.delegate("execute").to(this,"listReversed"),e}}var Pt=i(657),zt={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};K()(Pt.Z,zt);Pt.Z.locals;class Bt extends t.Plugin{static get pluginName(){return"ListPropertiesUI"}init(){const t=this.editor,e=t.locale.t,i=t.config.get("list.properties");i.styles&&t.ui.componentFactory.add("bulletedList",Nt({editor:t,parentCommandName:"bulletedList",buttonLabel:e("Bulleted List"),buttonIcon:ut,styleGridAriaLabel:e("Bulleted list styles toolbar"),styleDefinitions:[{label:e("Toggle the disc list style"),tooltip:e("Disc"),type:"disc",icon:'<svg viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><path d="M35 29a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17z" fill-opacity=".163"/><path d="M11 27a3 3 0 1 1 0 6 3 3 0 0 1 0-6zm0-9a3 3 0 1 1 0 6 3 3 0 0 1 0-6zm0-9a3 3 0 1 1 0 6 3 3 0 0 1 0-6z"/></svg>'},{label:e("Toggle the circle list style"),tooltip:e("Circle"),type:"circle",icon:'<svg viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><path d="M35 29a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17z" fill-opacity=".163"/><path d="M11 27a3 3 0 1 1 0 6 3 3 0 0 1 0-6zm0 1a2 2 0 1 0 0 4 2 2 0 0 0 0-4zm0-10a3 3 0 1 1 0 6 3 3 0 0 1 0-6zm0 1a2 2 0 1 0 0 4 2 2 0 0 0 0-4zm0-10a3 3 0 1 1 0 6 3 3 0 0 1 0-6zm0 1a2 2 0 1 0 0 4 2 2 0 0 0 0-4z"/></svg>'},{label:e("Toggle the square list style"),tooltip:e("Square"),type:"square",icon:'<svg viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><path d="M35 29a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17z" fill-opacity=".163"/><path d="M14 27v6H8v-6h6zm0-9v6H8v-6h6zm0-9v6H8V9h6z"/></svg>'}]})),(i.styles||i.startIndex||i.reversed)&&t.ui.componentFactory.add("numberedList",Nt({editor:t,parentCommandName:"numberedList",buttonLabel:e("Numbered List"),buttonIcon:dt,styleGridAriaLabel:e("Numbered list styles toolbar"),styleDefinitions:[{label:e("Toggle the decimal list style"),tooltip:e("Decimal"),type:"decimal",icon:'<svg viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><path d="M35 29a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17z" fill-opacity=".163"/><path d="M10.29 15V8.531H9.286c-.14.393-.4.736-.778 1.03-.378.295-.728.495-1.05.6v1.121a4.257 4.257 0 0 0 1.595-.936V15h1.235zm3.343 0v-1.235h-1.235V15h1.235zM11.3 24v-1.147H8.848c.064-.111.148-.226.252-.343.104-.117.351-.354.74-.712.39-.357.66-.631.81-.821.225-.288.39-.562.494-.824.104-.263.156-.539.156-.829 0-.51-.182-.936-.545-1.279-.363-.342-.863-.514-1.499-.514-.58 0-1.063.148-1.45.444-.387.296-.617.784-.69 1.463l1.23.124c.024-.36.112-.619.264-.774.153-.155.358-.233.616-.233.26 0 .465.074.613.222.148.148.222.36.222.635 0 .25-.085.501-.255.756-.126.185-.468.536-1.024 1.055-.692.641-1.155 1.156-1.389 1.544-.234.389-.375.8-.422 1.233H11.3zm2.333 0v-1.235h-1.235V24h1.235zM9.204 34.11c.615 0 1.129-.2 1.542-.598.413-.398.62-.88.62-1.446 0-.39-.11-.722-.332-.997a1.5 1.5 0 0 0-.886-.532c.619-.337.928-.788.928-1.353 0-.399-.151-.756-.453-1.073-.366-.386-.852-.58-1.459-.58a2.25 2.25 0 0 0-.96.2 1.617 1.617 0 0 0-.668.55c-.16.232-.28.544-.358.933l1.138.194c.032-.282.123-.495.272-.642.15-.146.33-.22.54-.22.215 0 .386.065.515.194s.193.302.193.518c0 .255-.087.46-.263.613-.176.154-.43.227-.765.218l-.136 1.006c.22-.061.409-.092.567-.092.24 0 .444.09.61.272.168.182.251.428.251.739 0 .328-.087.589-.261.782a.833.833 0 0 1-.644.29.841.841 0 0 1-.607-.242c-.167-.16-.27-.394-.307-.698l-1.196.145c.062.542.285.98.668 1.316.384.335.868.503 1.45.503zm4.43-.11v-1.235h-1.236V34h1.235z"/></svg>'},{label:e("Toggle the decimal with leading zero list style"),tooltip:e("Decimal with leading zero"),type:"decimal-leading-zero",icon:'<svg viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><path d="M35 29a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17z" fill-opacity=".163"/><path d="M5.714 15.11c.624 0 1.11-.22 1.46-.66.421-.533.632-1.408.632-2.627 0-1.222-.21-2.096-.629-2.624-.351-.445-.839-.668-1.463-.668-.624 0-1.11.22-1.459.66-.422.533-.633 1.406-.633 2.619 0 1.236.192 2.095.576 2.577.384.482.89.723 1.516.723zm0-1.024a.614.614 0 0 1-.398-.14c-.115-.094-.211-.283-.287-.565-.077-.283-.115-.802-.115-1.558s.043-1.294.128-1.613c.064-.246.155-.417.272-.512a.617.617 0 0 1 .4-.143.61.61 0 0 1 .398.143c.116.095.211.284.288.567.076.283.114.802.114 1.558s-.043 1.292-.128 1.608c-.064.246-.155.417-.272.512a.617.617 0 0 1-.4.143zm6.078.914V8.531H10.79c-.14.393-.4.736-.778 1.03-.378.295-.728.495-1.05.6v1.121a4.257 4.257 0 0 0 1.595-.936V15h1.235zm3.344 0v-1.235h-1.235V15h1.235zm-9.422 9.11c.624 0 1.11-.22 1.46-.66.421-.533.632-1.408.632-2.627 0-1.222-.21-2.096-.629-2.624-.351-.445-.839-.668-1.463-.668-.624 0-1.11.22-1.459.66-.422.533-.633 1.406-.633 2.619 0 1.236.192 2.095.576 2.577.384.482.89.723 1.516.723zm0-1.024a.614.614 0 0 1-.398-.14c-.115-.094-.211-.283-.287-.565-.077-.283-.115-.802-.115-1.558s.043-1.294.128-1.613c.064-.246.155-.417.272-.512a.617.617 0 0 1 .4-.143.61.61 0 0 1 .398.143c.116.095.211.284.288.567.076.283.114.802.114 1.558s-.043 1.292-.128 1.608c-.064.246-.155.417-.272.512a.617.617 0 0 1-.4.143zm7.088.914v-1.147H10.35c.065-.111.149-.226.253-.343.104-.117.35-.354.74-.712.39-.357.66-.631.81-.821.225-.288.39-.562.493-.824.104-.263.156-.539.156-.829 0-.51-.181-.936-.544-1.279-.364-.342-.863-.514-1.499-.514-.58 0-1.063.148-1.45.444-.387.296-.617.784-.69 1.463l1.23.124c.024-.36.112-.619.264-.774.152-.155.357-.233.615-.233.261 0 .465.074.613.222.148.148.222.36.222.635 0 .25-.085.501-.255.756-.126.185-.467.536-1.024 1.055-.691.641-1.154 1.156-1.388 1.544-.235.389-.375.8-.422 1.233h4.328zm2.334 0v-1.235h-1.235V24h1.235zM5.714 34.11c.624 0 1.11-.22 1.46-.66.421-.533.632-1.408.632-2.627 0-1.222-.21-2.096-.629-2.624-.351-.445-.839-.668-1.463-.668-.624 0-1.11.22-1.459.66-.422.533-.633 1.406-.633 2.619 0 1.236.192 2.095.576 2.577.384.482.89.723 1.516.723zm0-1.024a.614.614 0 0 1-.398-.14c-.115-.094-.211-.283-.287-.565-.077-.283-.115-.802-.115-1.558s.043-1.294.128-1.613c.064-.246.155-.417.272-.512a.617.617 0 0 1 .4-.143.61.61 0 0 1 .398.143c.116.095.211.284.288.567.076.283.114.802.114 1.558s-.043 1.292-.128 1.608c-.064.246-.155.417-.272.512a.617.617 0 0 1-.4.143zm4.992 1.024c.616 0 1.13-.2 1.543-.598.413-.398.62-.88.62-1.446 0-.39-.111-.722-.332-.997a1.5 1.5 0 0 0-.886-.532c.618-.337.927-.788.927-1.353 0-.399-.15-.756-.452-1.073-.366-.386-.853-.58-1.46-.58a2.25 2.25 0 0 0-.96.2 1.617 1.617 0 0 0-.667.55c-.16.232-.28.544-.359.933l1.139.194c.032-.282.123-.495.272-.642.15-.146.33-.22.54-.22.214 0 .386.065.515.194s.193.302.193.518c0 .255-.088.46-.264.613-.175.154-.43.227-.764.218l-.136 1.006c.22-.061.408-.092.566-.092.24 0 .444.09.611.272.167.182.25.428.25.739 0 .328-.086.589-.26.782a.833.833 0 0 1-.644.29.841.841 0 0 1-.607-.242c-.167-.16-.27-.394-.308-.698l-1.195.145c.062.542.284.98.668 1.316.384.335.867.503 1.45.503zm4.43-.11v-1.235h-1.235V34h1.235z"/></svg>'},{label:e("Toggle the lower–roman list style"),tooltip:e("Lower–roman"),type:"lower-roman",icon:'<svg viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><path d="M35 29a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17z" fill-opacity=".163"/><path d="M11.88 8.7V7.558h-1.234V8.7h1.234zm0 5.3V9.333h-1.234V14h1.234zm2.5 0v-1.235h-1.234V14h1.235zm-4.75 4.7v-1.142H8.395V18.7H9.63zm0 5.3v-4.667H8.395V24H9.63zm2.5-5.3v-1.142h-1.234V18.7h1.235zm0 5.3v-4.667h-1.234V24h1.235zm2.501 0v-1.235h-1.235V24h1.235zM7.38 28.7v-1.142H6.145V28.7H7.38zm0 5.3v-4.667H6.145V34H7.38zm2.5-5.3v-1.142H8.646V28.7H9.88zm0 5.3v-4.667H8.646V34H9.88zm2.5-5.3v-1.142h-1.234V28.7h1.235zm0 5.3v-4.667h-1.234V34h1.235zm2.501 0v-1.235h-1.235V34h1.235z"/></svg>'},{label:e("Toggle the upper–roman list style"),tooltip:e("Upper-roman"),type:"upper-roman",icon:'<svg viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><path d="M35 29a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17z" fill-opacity=".163"/><path d="M11.916 15V8.558h-1.301V15h1.3zm2.465 0v-1.235h-1.235V15h1.235zM9.665 25v-6.442h-1.3V25h1.3zm2.5 0v-6.442h-1.3V25h1.3zm2.466 0v-1.235h-1.235V25h1.235zm-7.216 9v-6.442h-1.3V34h1.3zm2.5 0v-6.442h-1.3V34h1.3zm2.501 0v-6.442h-1.3V34h1.3zm2.465 0v-1.235h-1.235V34h1.235z"/></svg>'},{label:e("Toggle the lower–latin list style"),tooltip:e("Lower-latin"),type:"lower-latin",icon:'<svg viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><path d="M35 29a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17z" fill-opacity=".163"/><path d="M9.62 14.105c.272 0 .528-.05.768-.153s.466-.257.677-.462c.009.024.023.072.044.145.047.161.086.283.119.365h1.221a2.649 2.649 0 0 1-.222-.626c-.04-.195-.059-.498-.059-.908l.013-1.441c0-.536-.055-.905-.165-1.105-.11-.201-.3-.367-.569-.497-.27-.13-.68-.195-1.23-.195-.607 0-1.064.108-1.371.325-.308.217-.525.55-.65 1.002l1.12.202c.076-.217.176-.369.299-.455.123-.086.294-.13.514-.13.325 0 .546.05.663.152.118.101.176.27.176.508v.123c-.222.093-.622.194-1.2.303-.427.082-.755.178-.982.288-.227.11-.403.268-.53.474a1.327 1.327 0 0 0-.188.706c0 .398.138.728.415.988.277.261.656.391 1.136.391zm.368-.87a.675.675 0 0 1-.492-.189.606.606 0 0 1-.193-.448c0-.176.08-.32.241-.435.106-.07.33-.142.673-.215a7.19 7.19 0 0 0 .751-.19v.247c0 .296-.016.496-.048.602a.773.773 0 0 1-.295.409 1.07 1.07 0 0 1-.637.22zm4.645.765v-1.235h-1.235V14h1.235zM10.2 25.105c.542 0 1.003-.215 1.382-.646.38-.43.57-1.044.57-1.84 0-.771-.187-1.362-.559-1.774a1.82 1.82 0 0 0-1.41-.617c-.522 0-.973.216-1.354.65v-2.32H7.594V25h1.147v-.686a1.9 1.9 0 0 0 .67.592c.26.133.523.2.79.2zm-.299-.975c-.354 0-.638-.164-.852-.492-.153-.232-.229-.59-.229-1.073 0-.468.098-.818.295-1.048a.93.93 0 0 1 .738-.345c.302 0 .55.118.743.354.193.236.29.62.29 1.154 0 .5-.096.868-.288 1.1-.192.233-.424.35-.697.35zm4.478.87v-1.235h-1.234V25h1.234zm-4.017 9.105c.6 0 1.08-.142 1.437-.426.357-.284.599-.704.725-1.261l-1.213-.207c-.061.326-.167.555-.316.688a.832.832 0 0 1-.576.2.916.916 0 0 1-.75-.343c-.185-.228-.278-.62-.278-1.173 0-.498.091-.853.274-1.066.183-.212.429-.318.736-.318.232 0 .42.061.565.184.145.123.238.306.28.55l1.216-.22c-.146-.501-.387-.874-.722-1.119-.336-.244-.788-.366-1.356-.366-.695 0-1.245.214-1.653.643-.407.43-.61 1.03-.61 1.8 0 .762.202 1.358.608 1.788.406.431.95.646 1.633.646zM14.633 34v-1.235h-1.235V34h1.235z"/></svg>'},{label:e("Toggle the upper–latin list style"),tooltip:e("Upper-latin"),type:"upper-latin",icon:'<svg viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><path d="M35 29a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17z" fill-opacity=".163"/><path d="m7.88 15 .532-1.463h2.575L11.549 15h1.415l-2.58-6.442H9.01L6.5 15h1.38zm2.69-2.549H8.811l.87-2.39.887 2.39zM14.88 15v-1.235h-1.234V15h1.234zM9.352 25c.83-.006 1.352-.02 1.569-.044.346-.038.636-.14.872-.305.236-.166.422-.387.558-.664.137-.277.205-.562.205-.855 0-.372-.106-.695-.317-.97-.21-.276-.512-.471-.905-.585a1.51 1.51 0 0 0 .661-.567 1.5 1.5 0 0 0 .244-.83c0-.28-.066-.53-.197-.754a1.654 1.654 0 0 0-.495-.539 1.676 1.676 0 0 0-.672-.266c-.25-.042-.63-.063-1.14-.063H7.158V25h2.193zm.142-3.88H8.46v-1.49h.747c.612 0 .983.007 1.112.022.217.026.38.102.49.226.11.125.165.287.165.486a.68.68 0 0 1-.192.503.86.86 0 0 1-.525.23 11.47 11.47 0 0 1-.944.023h.18zm.17 2.795H8.46v-1.723h1.05c.592 0 .977.03 1.154.092.177.062.313.16.406.295a.84.84 0 0 1 .14.492c0 .228-.06.41-.181.547a.806.806 0 0 1-.473.257c-.126.026-.423.04-.892.04zM14.88 25v-1.235h-1.234V25h1.234zm-5.018 9.11c.691 0 1.262-.17 1.711-.512.45-.341.772-.864.965-1.567l-1.261-.4c-.109.472-.287.818-.536 1.037-.25.22-.547.33-.892.33-.47 0-.85-.173-1.143-.519-.293-.345-.44-.925-.44-1.74 0-.767.15-1.322.447-1.665.297-.343.684-.514 1.162-.514.346 0 .64.096.881.29.242.193.4.457.477.79l1.288-.307c-.147-.516-.367-.911-.66-1.187-.492-.465-1.132-.698-1.92-.698-.902 0-1.63.296-2.184.89-.554.593-.83 1.426-.83 2.498 0 1.014.275 1.813.825 2.397.551.585 1.254.877 2.11.877zM14.88 34v-1.235h-1.234V34h1.234z"/></svg>'}]}))}}function Nt({editor:t,parentCommandName:e,buttonLabel:i,buttonIcon:n,styleGridAriaLabel:s,styleDefinitions:r}){const o=t.commands.get(e);return l=>{const a=(0,J.createDropdown)(l,J.SplitButtonView),c=a.buttonView;a.bind("isEnabled").to(o),a.class="ck-list-styles-dropdown",c.on("execute",(()=>{t.execute(e),t.editing.view.focus()})),c.set({label:i,icon:n,tooltip:!0,isToggleable:!0}),c.bind("isOn").to(o,"value",(t=>!!t));const d=function({editor:t,dropdownView:e,parentCommandName:i,styleDefinitions:n,styleGridAriaLabel:s}){const r=t.locale,o=t.config.get("list.properties");let l;"numberedList"!=i&&(o.startIndex=!1,o.reversed=!1);if(o.styles){const e=t.commands.get("listStyle"),s=function({editor:t,listStyleCommand:e,parentCommandName:i}){const n=t.locale,s=t.commands.get(i);return({label:i,type:r,icon:o,tooltip:l})=>{const a=new J.ButtonView(n);return a.set({label:i,icon:o,tooltip:l}),e.on("change:value",(()=>{a.isOn=e.value===r})),a.on("execute",(()=>{s.value?e.value!==r?t.execute("listStyle",{type:r}):t.execute("listStyle",{type:e._defaultType}):t.model.change((()=>{t.execute("listStyle",{type:r})}))})),a}}({editor:t,parentCommandName:i,listStyleCommand:e}),r="function"==typeof e.isStyleTypeSupported?t=>e.isStyleTypeSupported(t.type):()=>!0;l=n.filter(r).map(s)}const a=new Et(r,{styleGridAriaLabel:s,enabledProperties:o,styleButtonViews:l});o.styles&&(0,J.focusChildOnDropdownOpen)(e,(()=>a.stylesView.children.find((t=>t.isOn))));if(o.startIndex){const e=t.commands.get("listStart");a.startIndexFieldView.bind("isEnabled").to(e),a.startIndexFieldView.fieldView.bind("value").to(e),a.on("listStart",((e,i)=>t.execute("listStart",i)))}if(o.reversed){const e=t.commands.get("listReversed");a.reversedSwitchButtonView.bind("isEnabled").to(e),a.reversedSwitchButtonView.bind("isOn").to(e,"value"),a.on("listReversed",(()=>{const i=e.value;t.execute("listReversed",{reversed:!i})}))}return a.delegate("execute").to(e),a}({editor:t,dropdownView:a,parentCommandName:e,styleGridAriaLabel:s,styleDefinitions:r});return a.panelView.children.add(d),a.on("execute",(()=>{t.editing.view.focus()})),a}}class Mt extends t.Plugin{static get requires(){return[Tt,Bt]}static get pluginName(){return"DocumentListProperties"}}class Rt extends t.Command{constructor(t,e){super(t),this.type=e}refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(t={}){const e=this.editor.model,i=e.document,n=Array.from(i.selection.getSelectedBlocks()).filter((t=>Ht(t,e.schema))),s=void 0!==t.forceValue?!t.forceValue:this.value;e.change((t=>{if(s){let e=n[n.length-1].nextSibling,i=Number.POSITIVE_INFINITY,s=[];for(;e&&"listItem"==e.name&&0!==e.getAttribute("listIndent");){const t=e.getAttribute("listIndent");t<i&&(i=t);const n=t-i;s.push({element:e,listIndent:n}),e=e.nextSibling}s=s.reverse();for(const e of s)t.setAttribute("listIndent",e.listIndent,e.element)}if(!s){let t=Number.POSITIVE_INFINITY;for(const e of n)e.is("element","listItem")&&e.getAttribute("listIndent")<t&&(t=e.getAttribute("listIndent"));t=0===t?1:t,Ot(n,!0,t),Ot(n,!1,t)}for(const e of n.reverse())s&&"listItem"==e.name?t.rename(e,"paragraph"):s||"listItem"==e.name?s||"listItem"!=e.name||e.getAttribute("listType")==this.type||t.setAttribute("listType",this.type,e):(t.setAttributes({listType:this.type,listIndent:0},e),t.rename(e,"listItem"));this.fire("_executeCleanup",n)}))}_getValue(){const t=(0,r.first)(this.editor.model.document.selection.getSelectedBlocks());return!!t&&t.is("element","listItem")&&t.getAttribute("listType")==this.type}_checkEnabled(){if(this.value)return!0;const t=this.editor.model.document.selection,e=this.editor.model.schema,i=(0,r.first)(t.getSelectedBlocks());return!!i&&Ht(i,e)}}function Ot(t,e,i){const n=e?t[0]:t[t.length-1];if(n.is("element","listItem")){let s=n[e?"previousSibling":"nextSibling"],r=n.getAttribute("listIndent");for(;s&&s.is("element","listItem")&&s.getAttribute("listIndent")>=i;)r>s.getAttribute("listIndent")&&(r=s.getAttribute("listIndent")),s.getAttribute("listIndent")==r&&t[e?"unshift":"push"](s),s=s[e?"previousSibling":"nextSibling"]}}function Ht(t,e){return e.checkChild(t.parent,"listItem")&&!e.isObject(t)}class Ft extends t.Command{constructor(t,e){super(t),this._indentBy="forward"==e?1:-1}refresh(){this.isEnabled=this._checkEnabled()}execute(){const t=this.editor.model,e=t.document;let i=Array.from(e.selection.getSelectedBlocks());t.change((t=>{const e=i[i.length-1];let n=e.nextSibling;for(;n&&"listItem"==n.name&&n.getAttribute("listIndent")>e.getAttribute("listIndent");)i.push(n),n=n.nextSibling;this._indentBy<0&&(i=i.reverse());for(const e of i){const i=e.getAttribute("listIndent")+this._indentBy;i<0?t.rename(e,"paragraph"):t.setAttribute("listIndent",i,e)}this.fire("_executeCleanup",i)}))}_checkEnabled(){const t=(0,r.first)(this.editor.model.document.selection.getSelectedBlocks());if(!t||!t.is("element","listItem"))return!1;if(this._indentBy>0){const e=t.getAttribute("listIndent"),i=t.getAttribute("listType");let n=t.previousSibling;for(;n&&n.is("element","listItem")&&n.getAttribute("listIndent")>=e;){if(n.getAttribute("listIndent")==e)return n.getAttribute("listType")==i;n=n.previousSibling}return!1}return!0}}function Dt(t){return(e,i,n)=>{const s=n.consumable;if(!s.test(i.item,"insert")||!s.test(i.item,"attribute:listType")||!s.test(i.item,"attribute:listIndent"))return;s.consume(i.item,"insert"),s.consume(i.item,"attribute:listType"),s.consume(i.item,"attribute:listIndent");const r=i.item;X(r,Q(r,n),n,t)}}function jt(t,e,i){if(!i.consumable.test(e.item,t.name))return;const n=i.mapper.toViewElement(e.item),s=i.writer;s.breakContainer(s.createPositionBefore(n)),s.breakContainer(s.createPositionAfter(n));const r=n.parent,o="numbered"==e.attributeNewValue?"ol":"ul";s.rename(o,r)}function Ut(t,e,i){i.consumable.consume(e.item,t.name);const n=i.mapper.toViewElement(e.item).parent,s=i.writer;tt(s,n,n.nextSibling),tt(s,n.previousSibling,n)}function qt(t,e,i){if(i.consumable.test(e.item,t.name)&&"listItem"!=e.item.name){let t=i.mapper.toViewPosition(e.range.start);const n=i.writer,s=[];for(;("ul"==t.parent.name||"ol"==t.parent.name)&&(t=n.breakContainer(t),"li"==t.parent.name);){const e=t,i=n.createPositionAt(t.parent,"end");if(!e.isEqual(i)){const t=n.remove(n.createRange(e,i));s.push(t)}t=n.createPositionAfter(t.parent)}if(s.length>0){for(let e=0;e<s.length;e++){const i=t.nodeBefore;if(t=n.insert(t,s[e]).end,e>0){const e=tt(n,i,i.nextSibling);e&&e.parent==i&&t.offset--}}tt(n,t.nodeBefore,t.nodeAfter)}}}function Kt(t,e,i){const n=i.mapper.toViewPosition(e.position),s=n.nodeBefore,r=n.nodeAfter;tt(i.writer,s,r)}function Zt(t,e,i){if(i.consumable.consume(e.viewItem,{name:!0})){const t=i.writer,n=t.createElement("listItem"),s=function(t){let e=0,i=t.parent;for(;i;){if(i.is("element","li"))e++;else{const t=i.previousSibling;t&&t.is("element","li")&&e++}i=i.parent}return e}(e.viewItem);t.setAttribute("listIndent",s,n);const r=e.viewItem.parent&&"ol"==e.viewItem.parent.name?"numbered":"bulleted";if(t.setAttribute("listType",r,n),!i.safeInsert(n,e.modelCursor))return;const o=function(t,e,i){const{writer:n,schema:s}=i;let r=n.createPositionAfter(t);for(const o of e)if("ul"==o.name||"ol"==o.name)r=i.convertItem(o,r).modelCursor;else{const e=i.convertItem(o,n.createPositionAt(t,"end")),l=e.modelRange.start.nodeAfter;l&&l.is("element")&&!s.checkChild(t,l.name)&&(t=e.modelCursor.parent.is("element","listItem")?e.modelCursor.parent:Jt(e.modelCursor),r=n.createPositionAfter(t))}return r}(n,e.viewItem.getChildren(),i);e.modelRange=t.createRange(e.modelCursor,o),i.updateConversionResult(n,e)}}function $t(t,e,i){if(i.consumable.test(e.viewItem,{name:!0})){const t=Array.from(e.viewItem.getChildren());for(const e of t){!(e.is("element","li")||Xt(e))&&e._remove()}}}function Wt(t,e,i){if(i.consumable.test(e.viewItem,{name:!0})){if(0===e.viewItem.childCount)return;const t=[...e.viewItem.getChildren()];let i=!1;for(const e of t)i&&!Xt(e)&&e._remove(),Xt(e)&&(i=!0)}}function Gt(t){return(e,i)=>{if(i.isPhantom)return;const n=i.modelPosition.nodeBefore;if(n&&n.is("element","listItem")){const e=i.mapper.toViewElement(n),s=e.getAncestors().find(Xt),r=t.createPositionAt(e,0).getWalker();for(const t of r){if("elementStart"==t.type&&t.item.is("element","li")){i.viewPosition=t.previousPosition;break}if("elementEnd"==t.type&&t.item==s){i.viewPosition=t.nextPosition;break}}}}}function Yt(t,[e,i]){let n,s=e.is("documentFragment")?e.getChild(0):e;if(n=i?this.createSelection(i):this.document.selection,s&&s.is("element","listItem")){const t=n.getFirstPosition();let e=null;if(t.parent.is("element","listItem")?e=t.parent:t.nodeBefore&&t.nodeBefore.is("element","listItem")&&(e=t.nodeBefore),e){const t=e.getAttribute("listIndent");if(t>0)for(;s&&s.is("element","listItem");)s._setAttribute("listIndent",s.getAttribute("listIndent")+t),s=s.nextSibling}}}function Jt(t){const e=new H.TreeWalker({startPosition:t});let i;do{i=e.next()}while(!i.value.item.is("element","listItem"));return i.value.item}function Qt(t,e,i,n,s,r){const o=it(e.nodeBefore,{sameIndent:!0,smallerIndent:!0,listIndent:t,foo:"b"}),l=s.mapper,a=s.writer,c=o?o.getAttribute("listIndent"):null;let d;if(o)if(c==t){const t=l.toViewElement(o).parent;d=a.createPositionAfter(t)}else{const t=r.createPositionAt(o,"end");d=l.toViewPosition(t)}else d=i;d=et(d);for(const t of[...n.getChildren()])Xt(t)&&(d=a.move(a.createRangeOn(t),d).end,tt(a,t,t.nextSibling),tt(a,t.previousSibling,t))}function Xt(t){return t.is("element","ol")||t.is("element","ul")}class te extends t.Plugin{static get pluginName(){return"ListEditing"}static get requires(){return[e.Enter,s.Delete]}init(){const t=this.editor;t.model.schema.register("listItem",{inheritAllFrom:"$block",allowAttributes:["listType","listIndent"]});const e=t.data,i=t.editing;var n;t.model.document.registerPostFixer((e=>function(t,e){const i=t.document.differ.getChanges(),n=new Map;let s=!1;for(const n of i)if("insert"==n.type&&"listItem"==n.name)r(n.position);else if("insert"==n.type&&"listItem"!=n.name){if("$text"!=n.name){const i=n.position.nodeAfter;i.hasAttribute("listIndent")&&(e.removeAttribute("listIndent",i),s=!0),i.hasAttribute("listType")&&(e.removeAttribute("listType",i),s=!0),i.hasAttribute("listStyle")&&(e.removeAttribute("listStyle",i),s=!0),i.hasAttribute("listReversed")&&(e.removeAttribute("listReversed",i),s=!0),i.hasAttribute("listStart")&&(e.removeAttribute("listStart",i),s=!0);for(const e of Array.from(t.createRangeIn(i)).filter((t=>t.item.is("element","listItem"))))r(e.previousPosition)}r(n.position.getShiftedBy(n.length))}else"remove"==n.type&&"listItem"==n.name?r(n.position):("attribute"==n.type&&"listIndent"==n.attributeKey||"attribute"==n.type&&"listType"==n.attributeKey)&&r(n.range.start);for(const t of n.values())o(t),l(t);return s;function r(t){const e=t.nodeBefore;if(e&&e.is("element","listItem")){let t=e;if(n.has(t))return;for(let e=t.previousSibling;e&&e.is("element","listItem");e=t.previousSibling)if(t=e,n.has(t))return;n.set(e,t)}else{const e=t.nodeAfter;e&&e.is("element","listItem")&&n.set(e,e)}}function o(t){let i=0,n=null;for(;t&&t.is("element","listItem");){const r=t.getAttribute("listIndent");if(r>i){let o;null===n?(n=r-i,o=i):(n>r&&(n=r),o=r-n),e.setAttribute("listIndent",o,t),s=!0}else n=null,i=t.getAttribute("listIndent")+1;t=t.nextSibling}}function l(t){let i=[],n=null;for(;t&&t.is("element","listItem");){const r=t.getAttribute("listIndent");if(n&&n.getAttribute("listIndent")>r&&(i=i.slice(0,r+1)),0!=r)if(i[r]){const n=i[r];t.getAttribute("listType")!=n&&(e.setAttribute("listType",n,t),s=!0)}else i[r]=t.getAttribute("listType");n=t,t=t.nextSibling}}}(t.model,e))),i.mapper.registerViewToModelLength("li",ee),e.mapper.registerViewToModelLength("li",ee),i.mapper.on("modelToViewPosition",Gt(i.view)),i.mapper.on("viewToModelPosition",(n=t.model,(t,e)=>{const i=e.viewPosition,s=i.parent,r=e.mapper;if("ul"==s.name||"ol"==s.name){if(i.isAtEnd){const t=r.toModelElement(i.nodeBefore),s=r.getModelLength(i.nodeBefore);e.modelPosition=n.createPositionBefore(t).getShiftedBy(s)}else{const t=r.toModelElement(i.nodeAfter);e.modelPosition=n.createPositionBefore(t)}t.stop()}else if("li"==s.name&&i.nodeBefore&&("ul"==i.nodeBefore.name||"ol"==i.nodeBefore.name)){const o=r.toModelElement(s);let l=1,a=i.nodeBefore;for(;a&&Xt(a);)l+=r.getModelLength(a),a=a.previousSibling;e.modelPosition=n.createPositionBefore(o).getShiftedBy(l),t.stop()}})),e.mapper.on("modelToViewPosition",Gt(i.view)),t.conversion.for("editingDowncast").add((e=>{e.on("insert",qt,{priority:"high"}),e.on("insert:listItem",Dt(t.model)),e.on("attribute:listType:listItem",jt,{priority:"high"}),e.on("attribute:listType:listItem",Ut,{priority:"low"}),e.on("attribute:listIndent:listItem",function(t){return(e,i,n)=>{if(!n.consumable.consume(i.item,"attribute:listIndent"))return;const s=n.mapper.toViewElement(i.item),r=n.writer;r.breakContainer(r.createPositionBefore(s)),r.breakContainer(r.createPositionAfter(s));const o=s.parent,l=o.previousSibling,a=r.createRangeOn(o);r.remove(a),l&&l.nextSibling&&tt(r,l,l.nextSibling),Qt(i.attributeOldValue+1,i.range.start,a.start,s,n,t),X(i.item,s,n,t);for(const t of i.item.getChildren())n.consumable.consume(t,"insert")}}(t.model)),e.on("remove:listItem",function(t){return(e,i,n)=>{const s=n.mapper.toViewPosition(i.position).getLastMatchingPosition((t=>!t.item.is("element","li"))).nodeAfter,r=n.writer;r.breakContainer(r.createPositionBefore(s)),r.breakContainer(r.createPositionAfter(s));const o=s.parent,l=o.previousSibling,a=r.createRangeOn(o),c=r.remove(a);l&&l.nextSibling&&tt(r,l,l.nextSibling),Qt(n.mapper.toModelElement(s).getAttribute("listIndent")+1,i.position,a.start,s,n,t);for(const t of r.createRangeIn(c).getItems())n.mapper.unbindViewElement(t);e.stop()}}(t.model)),e.on("remove",Kt,{priority:"low"})})),t.conversion.for("dataDowncast").add((e=>{e.on("insert",qt,{priority:"high"}),e.on("insert:listItem",Dt(t.model))})),t.conversion.for("upcast").add((t=>{t.on("element:ul",$t,{priority:"high"}),t.on("element:ol",$t,{priority:"high"}),t.on("element:li",Wt,{priority:"high"}),t.on("element:li",Zt)})),t.model.on("insertContent",Yt,{priority:"high"}),t.commands.add("numberedList",new Rt(t,"numbered")),t.commands.add("bulletedList",new Rt(t,"bulleted")),t.commands.add("indentList",new Ft(t,"forward")),t.commands.add("outdentList",new Ft(t,"backward"));const s=i.view.document;this.listenTo(s,"enter",((t,e)=>{const i=this.editor.model.document,n=i.selection.getLastPosition().parent;i.selection.isCollapsed&&"listItem"==n.name&&n.isEmpty&&(this.editor.execute("outdentList"),e.preventDefault(),t.stop())}),{context:"li"}),this.listenTo(s,"delete",((t,e)=>{if("backward"!==e.direction)return;const i=this.editor.model.document.selection;if(!i.isCollapsed)return;const n=i.getFirstPosition();if(!n.isAtStart)return;const s=n.parent;if("listItem"!==s.name)return;s.previousSibling&&"listItem"===s.previousSibling.name||(this.editor.execute("outdentList"),e.preventDefault(),t.stop())}),{context:"li"}),this.listenTo(t.editing.view.document,"tab",((e,i)=>{const n=i.shiftKey?"outdentList":"indentList";this.editor.commands.get(n).isEnabled&&(t.execute(n),i.stopPropagation(),i.preventDefault(),e.stop())}),{context:"li"})}afterInit(){const t=this.editor.commands,e=t.get("indent"),i=t.get("outdent");e&&e.registerChildCommand(t.get("indentList")),i&&i.registerChildCommand(t.get("outdentList"))}}function ee(t){let e=1;for(const i of t.getChildren())if("ul"==i.name||"ol"==i.name)for(const t of i.getChildren())e+=ee(t);return e}class ie extends t.Plugin{static get requires(){return[te,mt]}static get pluginName(){return"List"}}class ne extends t.Command{constructor(t,e){super(t),this._defaultType=e}refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(t={}){this._tryToConvertItemsToList(t);const e=this.editor.model,i=ot(e);i.length&&e.change((e=>{for(const n of i)e.setAttribute("listStyle",t.type||this._defaultType,n)}))}_getValue(){const t=this.editor.model.document.selection.getFirstPosition().parent;return t&&t.is("element","listItem")?t.getAttribute("listStyle"):null}_checkEnabled(){const t=this.editor,e=t.commands.get("numberedList"),i=t.commands.get("bulletedList");return e.isEnabled||i.isEnabled}_tryToConvertItemsToList(t){if(!t.type)return;const e=(i=t.type,lt.includes(i)?"bulleted":at.includes(i)?"numbered":null);var i;if(!e)return;const n=this.editor,s=e+"List";n.commands.get(s).value||n.execute(s)}}class se extends t.Command{refresh(){const t=this._getValue();this.value=t,this.isEnabled=null!=t}execute(t={}){const e=this.editor.model,i=ot(e).filter((t=>"numbered"==t.getAttribute("listType")));e.change((e=>{for(const n of i)e.setAttribute("listReversed",!!t.reversed,n)}))}_getValue(){const t=this.editor.model.document.selection.getFirstPosition().parent;return t&&t.is("element","listItem")&&"numbered"==t.getAttribute("listType")?t.getAttribute("listReversed"):null}}class re extends t.Command{refresh(){const t=this._getValue();this.value=t,this.isEnabled=null!=t}execute(t={}){const e=this.editor.model,i=ot(e).filter((t=>"numbered"==t.getAttribute("listType")));e.change((e=>{for(const n of i)e.setAttribute("listStart",t.startIndex||1,n)}))}_getValue(){const t=this.editor.model.document.selection.getFirstPosition().parent;return t&&t.is("element","listItem")&&"numbered"==t.getAttribute("listType")?t.getAttribute("listStart"):null}}const oe="default";class le extends t.Plugin{static get requires(){return[te]}static get pluginName(){return"ListPropertiesEditing"}constructor(t){super(t),t.config.define("list",{properties:{styles:!0,startIndex:!1,reversed:!1}})}init(){const t=this.editor,e=t.model,i=function(t){const e=[];t.styles&&e.push({attributeName:"listStyle",defaultValue:oe,addCommand(t){t.commands.add("listStyle",new ne(t,oe))},appliesToListItem:()=>!0,setAttributeOnDowncast(t,e,i){e&&e!==oe?t.setStyle("list-style-type",e,i):t.removeStyle("list-style-type",i)},getAttributeOnUpcast:t=>t.getStyle("list-style-type")||oe});t.reversed&&e.push({attributeName:"listReversed",defaultValue:!1,addCommand(t){t.commands.add("listReversed",new se(t))},appliesToListItem:t=>"numbered"==t.getAttribute("listType"),setAttributeOnDowncast(t,e,i){e?t.setAttribute("reversed","reversed",i):t.removeAttribute("reversed",i)},getAttributeOnUpcast:t=>t.hasAttribute("reversed")});t.startIndex&&e.push({attributeName:"listStart",defaultValue:1,addCommand(t){t.commands.add("listStart",new re(t))},appliesToListItem:t=>"numbered"==t.getAttribute("listType"),setAttributeOnDowncast(t,e,i){1!=e?t.setAttribute("start",e,i):t.removeAttribute("start",i)},getAttributeOnUpcast:t=>t.getAttribute("start")||1});return e}(t.config.get("list.properties"));e.schema.extend("listItem",{allowAttributes:i.map((t=>t.attributeName))});for(const e of i)e.addCommand(t);var n;this.listenTo(t.commands.get("indentList"),"_executeCleanup",function(t,e){return(i,n)=>{const s=n[0],r=s.getAttribute("listIndent"),o=n.filter((t=>t.getAttribute("listIndent")===r));let l=null;s.previousSibling.getAttribute("listIndent")+1!==r&&(l=it(s.previousSibling,{sameIndent:!0,direction:"backward",listIndent:r})),t.model.change((t=>{for(const i of o)for(const n of e)if(n.appliesToListItem(i)){const e=null==l?n.defaultValue:l.getAttribute(n.attributeName);t.setAttribute(n.attributeName,e,i)}}))}}(t,i)),this.listenTo(t.commands.get("outdentList"),"_executeCleanup",function(t,e){return(i,n)=>{if(!(n=n.reverse().filter((t=>t.is("element","listItem")))).length)return;const s=n[0].getAttribute("listIndent"),r=n[0].getAttribute("listType");let o=n[0].previousSibling;if(o.is("element","listItem"))for(;o.getAttribute("listIndent")!==s;)o=o.previousSibling;else o=null;o||(o=n[n.length-1].nextSibling),o&&o.is("element","listItem")&&o.getAttribute("listType")===r&&t.model.change((t=>{const i=n.filter((t=>t.getAttribute("listIndent")===s));for(const n of i)for(const i of e)if(i.appliesToListItem(n)){const e=i.attributeName,s=o.getAttribute(e);t.setAttribute(e,s,n)}}))}}(t,i)),this.listenTo(t.commands.get("bulletedList"),"_executeCleanup",de(t)),this.listenTo(t.commands.get("numberedList"),"_executeCleanup",de(t)),e.document.registerPostFixer(function(t,e){return i=>{let n=!1;const s=ue(t.model.document.differ.getChanges()).filter((t=>"todo"!==t.getAttribute("listType")));if(!s.length)return n;let r=s[s.length-1].nextSibling;if((!r||!r.is("element","listItem"))&&(r=s[0].previousSibling,r)){const t=s[0].getAttribute("listIndent");for(;r.is("element","listItem")&&r.getAttribute("listIndent")!==t&&(r=r.previousSibling,r););}for(const t of e){const e=t.attributeName;for(const o of s)if(t.appliesToListItem(o))if(o.hasAttribute(e)){const s=o.previousSibling;ce(s,o,t.attributeName)&&(i.setAttribute(e,s.getAttribute(e),o),n=!0)}else ae(r,o,t)?i.setAttribute(e,r.getAttribute(e),o):i.setAttribute(e,t.defaultValue,o),n=!0;else i.removeAttribute(e,o)}return n}}(t,i)),t.conversion.for("upcast").add((n=i,t=>{t.on("element:li",((t,e,i)=>{const s=e.viewItem.parent;if(!s)return;const r=e.modelRange.start.nodeAfter||e.modelRange.end.nodeBefore;for(const t of n)if(t.appliesToListItem(r)){const e=t.getAttributeOnUpcast(s);i.writer.setAttribute(t.attributeName,e,r)}}),{priority:"low"})})),t.conversion.for("downcast").add(function(t){return i=>{for(const n of t)i.on(`attribute:${n.attributeName}:listItem`,((t,i,s)=>{const r=s.writer,o=i.item,l=it(o.previousSibling,{sameIndent:!0,listIndent:o.getAttribute("listIndent"),direction:"backward"}),a=s.mapper.toViewElement(o);e(o,l)||r.breakContainer(r.createPositionBefore(a)),n.setAttributeOnDowncast(r,i.attributeNewValue,a.parent)}),{priority:"low"})};function e(t,e){return e&&t.getAttribute("listType")===e.getAttribute("listType")&&t.getAttribute("listIndent")===e.getAttribute("listIndent")&&t.getAttribute("listStyle")===e.getAttribute("listStyle")&&t.getAttribute("listReversed")===e.getAttribute("listReversed")&&t.getAttribute("listStart")===e.getAttribute("listStart")}}(i)),this._mergeListAttributesWhileMergingLists(i)}afterInit(){const t=this.editor;t.commands.get("todoList")&&t.model.document.registerPostFixer(function(t){return e=>{const i=ue(t.model.document.differ.getChanges()).filter((t=>"todo"===t.getAttribute("listType")&&(t.hasAttribute("listStyle")||t.hasAttribute("listReversed")||t.hasAttribute("listStart"))));if(!i.length)return!1;for(const t of i)e.removeAttribute("listStyle",t),e.removeAttribute("listReversed",t),e.removeAttribute("listStart",t);return!0}}(t))}_mergeListAttributesWhileMergingLists(t){const e=this.editor.model;let i;this.listenTo(e,"deleteContent",((t,[e])=>{const n=e.getFirstPosition(),s=e.getLastPosition();if(n.parent===s.parent)return;if(!n.parent.is("element","listItem"))return;const r=s.parent.nextSibling;if(!r||!r.is("element","listItem"))return;const o=it(n.parent,{sameIndent:!0,listIndent:r.getAttribute("listIndent")});o&&o.getAttribute("listType")===r.getAttribute("listType")&&(i=o)}),{priority:"high"}),this.listenTo(e,"deleteContent",(()=>{i&&(e.change((e=>{const n=it(i.nextSibling,{sameIndent:!0,listIndent:i.getAttribute("listIndent"),direction:"forward"});if(!n)return void(i=null);const s=[n,...rt(e.createPositionAt(n,0),"forward")];for(const n of s)for(const s of t)if(s.appliesToListItem(n)){const t=s.attributeName,r=i.getAttribute(t);e.setAttribute(t,r,n)}})),i=null)}),{priority:"low"})}}function ae(t,e,i){if(!t)return!1;const n=t.getAttribute(i.attributeName);return!!n&&(n!=i.defaultValue&&t.getAttribute("listType")===e.getAttribute("listType"))}function ce(t,e,i){if(!t||!t.is("element","listItem"))return!1;if(e.getAttribute("listType")!==t.getAttribute("listType"))return!1;const n=t.getAttribute("listIndent");if(n<1||n!==e.getAttribute("listIndent"))return!1;const s=t.getAttribute(i);return!(!s||s===e.getAttribute(i))}function de(t){return(e,i)=>{i=i.filter((t=>t.is("element","listItem"))),t.model.change((t=>{for(const e of i)t.removeAttribute("listStyle",e)}))}}function ue(t){const e=[];for(const i of t){const t=me(i);t&&t.is("element","listItem")&&e.push(t)}return e}function me(t){return"attribute"===t.type?t.range.start.nodeAfter:"insert"===t.type?t.position.nodeAfter:null}class pe extends t.Plugin{static get requires(){return[le,Bt]}static get pluginName(){return"ListProperties"}}const he="todoListChecked";class fe extends t.Command{constructor(t){super(t),this._selectedElements=[],this.on("execute",(()=>{this.refresh()}),{priority:"highest"})}refresh(){this._selectedElements=this._getSelectedItems(),this.value=this._selectedElements.every((t=>!!t.getAttribute("todoListChecked"))),this.isEnabled=!!this._selectedElements.length}_getSelectedItems(){const t=this.editor.model,e=t.schema,i=t.document.selection.getFirstRange(),n=i.start.parent,s=[];e.checkAttribute(n,he)&&s.push(n);for(const t of i.getItems())e.checkAttribute(t,he)&&!s.includes(t)&&s.push(t);return s}execute(t={}){this.editor.model.change((e=>{for(const i of this._selectedElements){(void 0===t.forceValue?!this.value:t.forceValue)?e.setAttribute(he,!0,i):e.removeAttribute(he,i)}}))}}function be(t,e,i){const n=e.modelCursor,s=n.parent,r=e.viewItem;if("checkbox"!=r.getAttribute("type")||"listItem"!=s.name||!n.isAtStart)return;if(!i.consumable.consume(r,{name:!0}))return;const o=i.writer;o.setAttribute("listType","todo",s),e.viewItem.hasAttribute("checked")&&o.setAttribute("todoListChecked",!0,s),e.modelRange=o.createRange(n)}function ge(t){return(e,i)=>{const n=i.modelPosition,s=n.parent;if(!s.is("element","listItem")||"todo"!=s.getAttribute("listType"))return;const r=ve(i.mapper.toViewElement(s),t);r&&(i.viewPosition=i.mapper.findPositionIn(r,n.offset))}}function ye(t,e,i,n){return e.createUIElement("label",{class:"todo-list__label",contenteditable:!1},(function(e){const s=(0,r.createElement)(document,"input",{type:"checkbox",tabindex:-1});i&&s.setAttribute("checked","checked"),s.addEventListener("change",(()=>n(t)));const o=this.toDomElement(e);return o.appendChild(s),o}))}function ve(t,e){const i=e.createRangeIn(t);for(const t of i)if(t.item.is("containerElement","span")&&t.item.hasClass("todo-list__label__description"))return t.item}const we=(0,r.parseKeystroke)("Ctrl+Enter");class Ae extends t.Plugin{static get pluginName(){return"TodoListEditing"}static get requires(){return[te]}init(){const t=this.editor,{editing:e,data:i,model:n}=t;n.schema.extend("listItem",{allowAttributes:["todoListChecked"]}),n.schema.addAttributeCheck(((t,e)=>{const i=t.last;if("todoListChecked"==e&&"listItem"==i.name&&"todo"!=i.getAttribute("listType"))return!1})),t.commands.add("todoList",new Rt(t,"todo"));const s=new fe(t);var o,l;t.commands.add("checkTodoList",s),t.commands.add("todoListCheck",s),i.downcastDispatcher.on("insert:listItem",function(t){return(e,i,n)=>{const s=n.consumable;if(!s.test(i.item,"insert")||!s.test(i.item,"attribute:listType")||!s.test(i.item,"attribute:listIndent"))return;if("todo"!=i.item.getAttribute("listType"))return;const r=i.item;s.consume(r,"insert"),s.consume(r,"attribute:listType"),s.consume(r,"attribute:listIndent"),s.consume(r,"attribute:todoListChecked");const o=n.writer,l=Q(r,n);o.addClass("todo-list",l.parent);const a=o.createContainerElement("label",{class:"todo-list__label"}),c=o.createEmptyElement("input",{type:"checkbox",disabled:"disabled"}),d=o.createContainerElement("span",{class:"todo-list__label__description"});r.getAttribute("todoListChecked")&&o.setAttribute("checked","checked",c),o.insert(o.createPositionAt(l,0),a),o.insert(o.createPositionAt(a,0),c),o.insert(o.createPositionAfter(c),d),X(r,l,n,t)}}(n),{priority:"high"}),i.upcastDispatcher.on("element:input",be,{priority:"high"}),e.downcastDispatcher.on("insert:listItem",function(t,e){return(i,n,s)=>{const r=s.consumable;if(!r.test(n.item,"insert")||!r.test(n.item,"attribute:listType")||!r.test(n.item,"attribute:listIndent"))return;if("todo"!=n.item.getAttribute("listType"))return;const o=n.item;r.consume(o,"insert"),r.consume(o,"attribute:listType"),r.consume(o,"attribute:listIndent"),r.consume(o,"attribute:todoListChecked");const l=s.writer,a=Q(o,s),c=!!o.getAttribute("todoListChecked"),d=ye(o,l,c,e),u=l.createContainerElement("span",{class:"todo-list__label__description"});l.addClass("todo-list",a.parent),l.insert(l.createPositionAt(a,0),d),l.insert(l.createPositionAfter(d),u),X(o,a,s,t)}}(n,(t=>this._handleCheckmarkChange(t))),{priority:"high"}),e.downcastDispatcher.on("attribute:listType:listItem",(o=t=>this._handleCheckmarkChange(t),l=e.view,(t,e,i)=>{if(!i.consumable.consume(e.item,t.name))return;const n=i.mapper.toViewElement(e.item),s=i.writer,r=function(t,e){const i=e.createRangeIn(t);for(const t of i)if(t.item.is("uiElement","label"))return t.item}(n,l);if("todo"==e.attributeNewValue){const t=!!e.item.getAttribute("todoListChecked"),i=ye(e.item,s,t,o),r=s.createContainerElement("span",{class:"todo-list__label__description"}),l=s.createRangeIn(n),a=st(n),c=et(l.start),d=a?s.createPositionBefore(a):l.end,u=s.createRange(c,d);s.addClass("todo-list",n.parent),s.move(u,s.createPositionAt(r,0)),s.insert(s.createPositionAt(n,0),i),s.insert(s.createPositionAfter(i),r)}else if("todo"==e.attributeOldValue){const t=ve(n,l);s.removeClass("todo-list",n.parent),s.remove(r),s.move(s.createRangeIn(t),s.createPositionBefore(t)),s.remove(t)}})),e.downcastDispatcher.on("attribute:todoListChecked:listItem",function(t){return(e,i,n)=>{if("todo"!=i.item.getAttribute("listType"))return;if(!n.consumable.consume(i.item,"attribute:todoListChecked"))return;const{mapper:s,writer:r}=n,o=!!i.item.getAttribute("todoListChecked"),l=s.toViewElement(i.item).getChild(0),a=ye(i.item,r,o,t);r.insert(r.createPositionAfter(l),a),r.remove(l)}}((t=>this._handleCheckmarkChange(t)))),e.mapper.on("modelToViewPosition",ge(e.view)),i.mapper.on("modelToViewPosition",ge(e.view)),this.listenTo(e.view.document,"arrowKey",function(t,e){return(i,n)=>{if("left"!=(0,r.getLocalizedArrowKeyCodeDirection)(n.keyCode,e.contentLanguageDirection))return;const s=t.schema,o=t.document.selection;if(!o.isCollapsed)return;const l=o.getFirstPosition(),a=l.parent;if("listItem"===a.name&&"todo"==a.getAttribute("listType")&&l.isAtStart){const e=s.getNearestSelectionRange(t.createPositionBefore(a),"backward");e&&t.change((t=>t.setSelection(e))),n.preventDefault(),n.stopPropagation(),i.stop()}}}(n,t.locale),{context:"li"}),this.listenTo(e.view.document,"keydown",((e,i)=>{(0,r.getCode)(i)===we&&(t.execute("checkTodoList"),e.stop())}),{priority:"high"});const a=new Set;this.listenTo(n,"applyOperation",((t,e)=>{const i=e[0];if("rename"==i.type&&"listItem"==i.oldName){const t=i.position.nodeAfter;t.hasAttribute("todoListChecked")&&a.add(t)}else if("changeAttribute"==i.type&&"listType"==i.key&&"todo"===i.oldValue)for(const t of i.range.getItems())t.hasAttribute("todoListChecked")&&"todo"!==t.getAttribute("listType")&&a.add(t)})),n.document.registerPostFixer((t=>{let e=!1;for(const i of a)t.removeAttribute("todoListChecked",i),e=!0;return a.clear(),e}))}_handleCheckmarkChange(t){const e=this.editor,i=e.model,n=Array.from(i.document.selection.getRanges());i.change((i=>{i.setSelection(t,"end"),e.execute("checkTodoList"),i.setSelection(n)}))}}class Ie extends t.Plugin{static get pluginName(){return"TodoListUI"}init(){const t=this.editor.t;nt(this.editor,"todoList",t("To-do List"),'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m2.315 14.705 2.224-2.24a.689.689 0 0 1 .963 0 .664.664 0 0 1 0 .949L2.865 16.07a.682.682 0 0 1-.112.089.647.647 0 0 1-.852-.051L.688 14.886a.635.635 0 0 1 0-.903.647.647 0 0 1 .91 0l.717.722zm5.185.045a.75.75 0 0 1 .75-.75h9.5a.75.75 0 1 1 0 1.5h-9.5a.75.75 0 0 1-.75-.75zM2.329 5.745l2.21-2.226a.689.689 0 0 1 .963 0 .664.664 0 0 1 0 .95L2.865 7.125a.685.685 0 0 1-.496.196.644.644 0 0 1-.468-.187L.688 5.912a.635.635 0 0 1 0-.903.647.647 0 0 1 .91 0l.73.736zM7.5 5.75A.75.75 0 0 1 8.25 5h9.5a.75.75 0 1 1 0 1.5h-9.5a.75.75 0 0 1-.75-.75z"/></svg>')}}var ke=i(250),xe={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};K()(ke.Z,xe);ke.Z.locals;class Te extends t.Plugin{static get requires(){return[Ae,Ie]}static get pluginName(){return"TodoList"}}})(),(window.CKEditor5=window.CKEditor5||{}).list=n})();
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/list/translations/ko.js b/core/assets/vendor/ckeditor5/list/translations/ko.js
index 02018f59ae..61736b821d 100644
--- a/core/assets/vendor/ckeditor5/list/translations/ko.js
+++ b/core/assets/vendor/ckeditor5/list/translations/ko.js
@@ -1 +1 @@
-!function(e){const t=e.ko=e.ko||{};t.dictionary=Object.assign(t.dictionary||{},{"Bulleted List":"불릿 목록","Bulleted list styles toolbar":"글머리 기호 목록 스타일 도구 모음",Circle:"흰 원형",Decimal:"십진수","Decimal with leading zero":"앞에 0이 붙는 십진수",Disc:"검은 원형","List properties":"목록 속성","Lower-latin":"소문자 알파벳","Lower–roman":"소문자 로마자","Numbered List":"번호 목록","Numbered list styles toolbar":"번호 목록 스타일 도구 모음","Reversed order":"역순",Square:"검은 사각형","Start at":"시작 번호","Start index must be greater than 0.":"시작 번호는 0보다 커야 합니다.","To-do List":"확인 목록","Toggle the circle list style":"검은 원형 목록 스타일 전환","Toggle the decimal list style":"십진수 목록 스타일 전환","Toggle the decimal with leading zero list style":"앞에 0이 붙는 십진수 목록 스타일 전환","Toggle the disc list style":"흰 원형 목록 스타일 전환","Toggle the lower–latin list style":"소문자 알파벳  목록 스타일 전환","Toggle the lower–roman list style":"소문자 로마자 목록 스타일 전환","Toggle the square list style":"검은 사각형 목록 스타일 전환","Toggle the upper–latin list style":"대문자 알파벳  목록 스타일 전환","Toggle the upper–roman list style":"대문자 로마자 목록 스타일 전환","Upper-latin":"대문자 알파벳","Upper-roman":"대문자 로마자"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(e){const t=e.ko=e.ko||{};t.dictionary=Object.assign(t.dictionary||{},{"Bulleted List":"불릿 목록","Bulleted list styles toolbar":"글머리 기호 목록 스타일 도구 모음",Circle:"흰 원형",Decimal:"십진수","Decimal with leading zero":"앞에 0이 붙는 십진수",Disc:"검은 원형","List properties":"목록 속성","Lower-latin":"소문자 알파벳","Lower–roman":"소문자 로마자","Numbered List":"번호 목록","Numbered list styles toolbar":"번호 목록 스타일 도구 모음","Reversed order":"역순",Square:"검은 사각형","Start at":"시작 번호","Start index must be greater than 0.":"시작 번호는 0보다 커야 합니다.","To-do List":"확인 목록","Toggle the circle list style":"검은 원형 목록 스타일 전환","Toggle the decimal list style":"십진수 목록 스타일 전환","Toggle the decimal with leading zero list style":"앞에 0이 붙는 십진수 목록 스타일 전환","Toggle the disc list style":"흰 원형 목록 스타일 전환","Toggle the lower–latin list style":"소문자 알파벳 목록 스타일 전환","Toggle the lower–roman list style":"소문자 로마자 목록 스타일 전환","Toggle the square list style":"검은 사각형 목록 스타일 전환","Toggle the upper–latin list style":"대문자 알파벳 목록 스타일 전환","Toggle the upper–roman list style":"대문자 로마자 목록 스타일 전환","Upper-latin":"대문자 알파벳","Upper-roman":"대문자 로마자"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/paste-from-office/paste-from-office.js b/core/assets/vendor/ckeditor5/paste-from-office/paste-from-office.js
index 7a47c76b6d..8800b1ffd4 100644
--- a/core/assets/vendor/ckeditor5/paste-from-office/paste-from-office.js
+++ b/core/assets/vendor/ckeditor5/paste-from-office/paste-from-office.js
@@ -1,4 +1,4 @@
 /*!
  * @license Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
  * For licensing, see LICENSE.md.
- */(()=>{var e={945:(e,t,n)=>{e.exports=n(79)("./src/clipboard.js")},704:(e,t,n)=>{e.exports=n(79)("./src/core.js")},492:(e,t,n)=>{e.exports=n(79)("./src/engine.js")},79:e=>{"use strict";e.exports=CKEditor5.dll}},t={};function n(r){var s=t[r];if(void 0!==s)return s.exports;var i=t[r]={exports:{}};return e[r](i,i.exports,n),i.exports}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),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var r={};(()=>{"use strict";n.r(r),n.d(r,{PasteFromOffice:()=>b});var e=n(704),t=n(945),s=n(492);function i(e,t){if(!e.childCount)return;const n=new s.UpcastWriter(e.document),r=function(e,t){const n=t.createRangeIn(e),r=new s.Matcher({name:/^p|h\d+$/,styles:{"mso-list":/.*/}}),i=[];for(const e of n)if("elementStart"===e.type&&r.match(e.item)){const t=a(e.item);i.push({element:e.item,id:t.id,order:t.order,indent:t.indent})}return i}(e,n);if(!r.length)return;let i=null,l=1;r.forEach(((e,a)=>{const u=function(e,t){if(!e)return!0;if(e.id!==t.id)return t.indent-e.indent!=1;const n=t.element.previousSibling;if(!n)return!0;return r=n,!(r.is("element","ol")||r.is("element","ul"));var r}(r[a-1],e),f=u?null:r[a-1],d=(m=e,(p=f)?m.indent-p.indent:m.indent-1);var p,m;if(u&&(i=null,l=1),!i||0!==d){const r=function(e,t){const n=new RegExp(`@list l${e.id}:level${e.indent}\\s*({[^}]*)`,"gi"),r=/mso-level-number-format:([^;]{0,100});/gi,s=/mso-level-start-at:\s{0,100}([0-9]{0,10})\s{0,100};/gi,i=n.exec(t);let c="decimal",a="ol",l=null;if(i&&i[1]){const t=r.exec(i[1]);if(t&&t[1]&&(c=t[1].trim(),a="bullet"!==c&&"image"!==c?"ol":"ul"),"bullet"===c){const t=function(e){const t=function(e){if(e.getChild(0).is("$text"))return null;for(const t of e.getChildren()){if(!t.is("element","span"))continue;const e=t.getChild(0);return e.is("$text")?e:e.getChild(0)}}(e);if(!t)return null;const n=t._data;if("o"===n)return"circle";if("·"===n)return"disc";if("§"===n)return"square";return null}(e.element);t&&(c=t)}else{const e=s.exec(i[1]);e&&e[1]&&(l=parseInt(e[1]))}}return{type:a,startIndex:l,style:o(c)}}(e,t);if(i){if(e.indent>l){const e=i.getChild(i.childCount-1),t=e.getChild(e.childCount-1);i=c(r,t,n),l+=1}else if(e.indent<l){const t=l-e.indent;i=function(e,t){const n=e.getAncestors({parentFirst:!0});let r=null,s=0;for(const e of n)if("ul"!==e.name&&"ol"!==e.name||s++,s===t){r=e;break}return r}(i,t),l=parseInt(e.indent)}}else i=c(r,e.element,n);e.indent<=l&&(i.is("element",r.type)||(i=n.rename(r.type,i)))}const g=function(e,t){return function(e,t){const n=new s.Matcher({name:"span",styles:{"mso-list":"Ignore"}}),r=t.createRangeIn(e);for(const e of r)"elementStart"===e.type&&n.match(e.item)&&t.remove(e.item)}(e,t),t.rename("li",e)}(e.element,n);n.appendChild(g,i)}))}function o(e){if(e.startsWith("arabic-leading-zero"))return"decimal-leading-zero";switch(e){case"alpha-upper":return"upper-alpha";case"alpha-lower":return"lower-alpha";case"roman-upper":return"upper-roman";case"roman-lower":return"lower-roman";case"circle":case"disc":case"square":return e;default:return null}}function c(e,t,n){const r=t.parent,s=n.createElement(e.type),i=r.getChildIndex(t)+1;return n.insertChild(i,s,r),e.style&&n.setStyle("list-style-type",e.style,s),e.startIndex&&e.startIndex>1&&n.setAttribute("start",e.startIndex,s),s}function a(e){const t={},n=e.getStyle("mso-list");if(n){const e=n.match(/(^|\s{1,100})l(\d+)/i),r=n.match(/\s{0,100}lfo(\d+)/i),s=n.match(/\s{0,100}level(\d+)/i);e&&r&&s&&(t.id=e[2],t.order=r[1],t.indent=s[1])}return t}const l=/id=("|')docs-internal-guid-[-0-9a-f]+("|')/i;class u{constructor(e){this.document=e}isActive(e){return l.test(e)}execute(e){const t=new s.UpcastWriter(this.document),{body:n}=e._parsedData;!function(e,t){for(const n of e.getChildren())if(n.is("element","b")&&"normal"===n.getStyle("font-weight")){const r=e.getChildIndex(n);t.remove(n),t.insertChild(r,n.getChildren(),e)}}(n,t),function(e,t){for(const n of t.createRangeIn(e)){const e=n.item;if(e.is("element","li")){const n=e.getChild(0);n&&n.is("element","p")&&t.unwrapElement(n)}}}(n,t),e.content=n}}function f(e,t){if(!e.childCount)return;const n=new s.UpcastWriter,r=function(e,t){const n=t.createRangeIn(e),r=new s.Matcher({name:/v:(.+)/}),i=[];for(const e of n){if("elementStart"!=e.type)continue;const t=e.item,n=t.previousSibling&&t.previousSibling.name||null;r.match(t)&&t.getAttribute("o:gfxdata")&&"v:shapetype"!==n&&i.push(e.item.getAttribute("id"))}return i}(e,n);!function(e,t,n){const r=n.createRangeIn(t),i=new s.Matcher({name:"img"}),o=[];for(const t of r)if(i.match(t.item)){const n=t.item,r=n.getAttribute("v:shapes")?n.getAttribute("v:shapes").split(" "):[];r.length&&r.every((t=>e.indexOf(t)>-1))?o.push(n):n.getAttribute("src")||o.push(n)}for(const e of o)n.remove(e)}(r,e,n),function(e,t){const n=t.createRangeIn(e),r=new s.Matcher({name:/v:(.+)/}),i=[];for(const e of n)"elementStart"==e.type&&r.match(e.item)&&i.push(e.item);for(const e of i)t.remove(e)}(e,n);const i=function(e,t){const n=t.createRangeIn(e),r=new s.Matcher({name:"img"}),i=[];for(const e of n)r.match(e.item)&&e.item.getAttribute("src").startsWith("file://")&&i.push(e.item);return i}(e,n);i.length&&function(e,t,n){if(e.length===t.length)for(let r=0;r<e.length;r++){const s=`data:${t[r].type};base64,${d(t[r].hex)}`;n.setAttribute("src",s,e[r])}}(i,function(e){if(!e)return[];const t=/{\\pict[\s\S]+?\\bliptag-?\d+(\\blipupi-?\d+)?({\\\*\\blipuid\s?[\da-fA-F]+)?[\s}]*?/,n=new RegExp("(?:("+t.source+"))([\\da-fA-F\\s]+)\\}","g"),r=e.match(n),s=[];if(r)for(const e of r){let n=!1;e.includes("\\pngblip")?n="image/png":e.includes("\\jpegblip")&&(n="image/jpeg"),n&&s.push({hex:e.replace(t,"").replace(/[^\da-fA-F]/g,""),type:n})}return s}(t),n)}function d(e){return btoa(e.match(/\w{2}/g).map((e=>String.fromCharCode(parseInt(e,16)))).join(""))}const p=/<meta\s*name="?generator"?\s*content="?microsoft\s*word\s*\d+"?\/?>/i,m=/xmlns:o="urn:schemas-microsoft-com/i;class g{constructor(e){this.document=e}isActive(e){return p.test(e)||m.test(e)}execute(e){const{body:t,stylesString:n}=e._parsedData;i(t,n),f(t,e.dataTransfer.getData("text/rtf")),e.content=t}}function h(e){return e.replace(/<span(?: class="Apple-converted-space"|)>(\s+)<\/span>/g,((e,t)=>1===t.length?" ":Array(t.length+1).join("  ").substr(0,t.length)))}function y(e,t){const n=new DOMParser,r=function(e){return h(h(e)).replace(/(<span\s+style=['"]mso-spacerun:yes['"]>[^\S\r\n]*?)[\r\n]+([^\S\r\n]*<\/span>)/g,"$1$2").replace(/<span\s+style=['"]mso-spacerun:yes['"]><\/span>/g,"").replace(/ <\//g," </").replace(/ <o:p><\/o:p>/g," <o:p></o:p>").replace(/<o:p>(&nbsp;|\u00A0)<\/o:p>/g,"").replace(/>([^\S\r\n]*[\r\n]\s*)</g,"><")}(function(e){const t="</body>",n="</html>",r=e.indexOf(t);if(r<0)return e;const s=e.indexOf(n,r+t.length);return e.substring(0,r+t.length)+(s>=0?e.substring(s):"")}(e=e.replace(/<!--\[if gte vml 1]>/g,""))),i=n.parseFromString(r,"text/html");!function(e){e.querySelectorAll("span[style*=spacerun]").forEach((e=>{const t=e.innerText.length||0;e.innerText=Array(t+1).join("  ").substr(0,t)}))}(i);const o=i.body.innerHTML,c=function(e,t){const n=new s.ViewDocument(t),r=new s.DomConverter(n,{renderingMode:"data"}),i=e.createDocumentFragment(),o=e.body.childNodes;for(;o.length>0;)i.appendChild(o[0]);return r.domToView(i,{skipComments:!0})}(i,t),a=function(e){const t=[],n=[],r=Array.from(e.getElementsByTagName("style"));for(const e of r)e.sheet&&e.sheet.cssRules&&e.sheet.cssRules.length&&(t.push(e.sheet),n.push(e.innerHTML));return{styles:t,stylesString:n.join(" ")}}(i);return{body:c,bodyString:o,styles:a.styles,stylesString:a.stylesString}}class b extends e.Plugin{static get pluginName(){return"PasteFromOffice"}static get requires(){return[t.ClipboardPipeline]}init(){const e=this.editor,t=e.editing.view.document,n=[];n.push(new g(t)),n.push(new u(t)),e.plugins.get("ClipboardPipeline").on("inputTransformation",((r,s)=>{if(s._isTransformedWithPasteFromOffice)return;if(e.model.document.selection.getFirstPosition().parent.is("element","codeBlock"))return;const i=s.dataTransfer.getData("text/html"),o=n.find((e=>e.isActive(i)));o&&(s._parsedData=y(i,t.stylesProcessor),o.execute(s),s._isTransformedWithPasteFromOffice=!0)}),{priority:"high"})}}})(),(window.CKEditor5=window.CKEditor5||{}).pasteFromOffice=r})();
\ No newline at end of file
+ */(()=>{var e={945:(e,t,n)=>{e.exports=n(79)("./src/clipboard.js")},704:(e,t,n)=>{e.exports=n(79)("./src/core.js")},492:(e,t,n)=>{e.exports=n(79)("./src/engine.js")},79:e=>{"use strict";e.exports=CKEditor5.dll}},t={};function n(r){var s=t[r];if(void 0!==s)return s.exports;var i=t[r]={exports:{}};return e[r](i,i.exports,n),i.exports}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),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var r={};(()=>{"use strict";n.r(r),n.d(r,{PasteFromOffice:()=>v});var e=n(704),t=n(945),s=n(492);function i(e,t,n,{blockElements:r,inlineObjectElements:s}){let i=n.createPositionAt(e,"forward"==t?"after":"before");return i=i.getLastMatchingPosition((({item:e})=>e.is("element")&&!r.includes(e.name)&&!s.includes(e.name)),{direction:t}),"forward"==t?i.nodeAfter:i.nodeBefore}function o(e,t){return!!e&&e.is("element")&&t.includes(e.name)}function c(e,t){if(!e.childCount)return;const n=new s.UpcastWriter(e.document),r=function(e,t){const n=t.createRangeIn(e),r=new s.Matcher({name:/^p|h\d+$/,styles:{"mso-list":/.*/}}),i=[];for(const e of n)if("elementStart"===e.type&&r.match(e.item)){const t=u(e.item);i.push({element:e.item,id:t.id,order:t.order,indent:t.indent})}return i}(e,n);if(!r.length)return;let i=null,o=1;r.forEach(((e,c)=>{const u=function(e,t){if(!e)return!0;if(e.id!==t.id)return t.indent-e.indent!=1;const n=t.element.previousSibling;if(!n)return!0;return r=n,!(r.is("element","ol")||r.is("element","ul"));var r}(r[c-1],e),f=u?null:r[c-1],d=(p=e,(m=f)?p.indent-m.indent:p.indent-1);var m,p;if(u&&(i=null,o=1),!i||0!==d){const r=function(e,t){const n=new RegExp(`@list l${e.id}:level${e.indent}\\s*({[^}]*)`,"gi"),r=/mso-level-number-format:([^;]{0,100});/gi,s=/mso-level-start-at:\s{0,100}([0-9]{0,10})\s{0,100};/gi,i=n.exec(t);let o="decimal",c="ol",a=null;if(i&&i[1]){const t=r.exec(i[1]);if(t&&t[1]&&(o=t[1].trim(),c="bullet"!==o&&"image"!==o?"ol":"ul"),"bullet"===o){const t=function(e){const t=function(e){if(e.getChild(0).is("$text"))return null;for(const t of e.getChildren()){if(!t.is("element","span"))continue;const e=t.getChild(0);return e.is("$text")?e:e.getChild(0)}}(e);if(!t)return null;const n=t._data;if("o"===n)return"circle";if("·"===n)return"disc";if("§"===n)return"square";return null}(e.element);t&&(o=t)}else{const e=s.exec(i[1]);e&&e[1]&&(a=parseInt(e[1]))}}return{type:c,startIndex:a,style:l(o)}}(e,t);if(i){if(e.indent>o){const e=i.getChild(i.childCount-1),t=e.getChild(e.childCount-1);i=a(r,t,n),o+=1}else if(e.indent<o){const t=o-e.indent;i=function(e,t){const n=e.getAncestors({parentFirst:!0});let r=null,s=0;for(const e of n)if("ul"!==e.name&&"ol"!==e.name||s++,s===t){r=e;break}return r}(i,t),o=parseInt(e.indent)}}else i=a(r,e.element,n);e.indent<=o&&(i.is("element",r.type)||(i=n.rename(r.type,i)))}const g=function(e,t){return function(e,t){const n=new s.Matcher({name:"span",styles:{"mso-list":"Ignore"}}),r=t.createRangeIn(e);for(const e of r)"elementStart"===e.type&&n.match(e.item)&&t.remove(e.item)}(e,t),t.rename("li",e)}(e.element,n);n.appendChild(g,i)}))}function l(e){if(e.startsWith("arabic-leading-zero"))return"decimal-leading-zero";switch(e){case"alpha-upper":return"upper-alpha";case"alpha-lower":return"lower-alpha";case"roman-upper":return"upper-roman";case"roman-lower":return"lower-roman";case"circle":case"disc":case"square":return e;default:return null}}function a(e,t,n){const r=t.parent,s=n.createElement(e.type),i=r.getChildIndex(t)+1;return n.insertChild(i,s,r),e.style&&n.setStyle("list-style-type",e.style,s),e.startIndex&&e.startIndex>1&&n.setAttribute("start",e.startIndex,s),s}function u(e){const t={},n=e.getStyle("mso-list");if(n){const e=n.match(/(^|\s{1,100})l(\d+)/i),r=n.match(/\s{0,100}lfo(\d+)/i),s=n.match(/\s{0,100}level(\d+)/i);e&&r&&s&&(t.id=e[2],t.order=r[1],t.indent=s[1])}return t}const f=/id=("|')docs-internal-guid-[-0-9a-f]+("|')/i;class d{constructor(e){this.document=e}isActive(e){return f.test(e)}execute(e){const t=new s.UpcastWriter(this.document),{body:n}=e._parsedData;!function(e,t){for(const n of e.getChildren())if(n.is("element","b")&&"normal"===n.getStyle("font-weight")){const r=e.getChildIndex(n);t.remove(n),t.insertChild(r,n.getChildren(),e)}}(n,t),function(e,t){for(const n of t.createRangeIn(e)){const e=n.item;if(e.is("element","li")){const n=e.getChild(0);n&&n.is("element","p")&&t.unwrapElement(n)}}}(n,t),function(e,t){const n=new s.ViewDocument(t.document.stylesProcessor),r=new s.DomConverter(n,{renderingMode:"data"}),c=r.blockElements,l=r.inlineObjectElements,a=[];for(const n of t.createRangeIn(e)){const e=n.item;if(e.is("element","br")){const n=i(e,"forward",t,{blockElements:c,inlineObjectElements:l}),r=i(e,"backward",t,{blockElements:c,inlineObjectElements:l}),s=o(n,c);(o(r,c)||s)&&a.push(e)}}for(const e of a)e.hasClass("Apple-interchange-newline")?t.remove(e):t.replace(e,t.createElement("p"))}(n,t),e.content=n}}function m(e,t){if(!e.childCount)return;const n=new s.UpcastWriter,r=function(e,t){const n=t.createRangeIn(e),r=new s.Matcher({name:/v:(.+)/}),i=[];for(const e of n){if("elementStart"!=e.type)continue;const t=e.item,n=t.previousSibling&&t.previousSibling.name||null;r.match(t)&&t.getAttribute("o:gfxdata")&&"v:shapetype"!==n&&i.push(e.item.getAttribute("id"))}return i}(e,n);!function(e,t,n){const r=n.createRangeIn(t),i=new s.Matcher({name:"img"}),o=[];for(const t of r)if(i.match(t.item)){const n=t.item,r=n.getAttribute("v:shapes")?n.getAttribute("v:shapes").split(" "):[];r.length&&r.every((t=>e.indexOf(t)>-1))?o.push(n):n.getAttribute("src")||o.push(n)}for(const e of o)n.remove(e)}(r,e,n),function(e,t){const n=t.createRangeIn(e),r=new s.Matcher({name:/v:(.+)/}),i=[];for(const e of n)"elementStart"==e.type&&r.match(e.item)&&i.push(e.item);for(const e of i)t.remove(e)}(e,n);const i=function(e,t){const n=t.createRangeIn(e),r=new s.Matcher({name:"img"}),i=[];for(const e of n)r.match(e.item)&&e.item.getAttribute("src").startsWith("file://")&&i.push(e.item);return i}(e,n);i.length&&function(e,t,n){if(e.length===t.length)for(let r=0;r<e.length;r++){const s=`data:${t[r].type};base64,${p(t[r].hex)}`;n.setAttribute("src",s,e[r])}}(i,function(e){if(!e)return[];const t=/{\\pict[\s\S]+?\\bliptag-?\d+(\\blipupi-?\d+)?({\\\*\\blipuid\s?[\da-fA-F]+)?[\s}]*?/,n=new RegExp("(?:("+t.source+"))([\\da-fA-F\\s]+)\\}","g"),r=e.match(n),s=[];if(r)for(const e of r){let n=!1;e.includes("\\pngblip")?n="image/png":e.includes("\\jpegblip")&&(n="image/jpeg"),n&&s.push({hex:e.replace(t,"").replace(/[^\da-fA-F]/g,""),type:n})}return s}(t),n)}function p(e){return btoa(e.match(/\w{2}/g).map((e=>String.fromCharCode(parseInt(e,16)))).join(""))}const g=/<meta\s*name="?generator"?\s*content="?microsoft\s*word\s*\d+"?\/?>/i,h=/xmlns:o="urn:schemas-microsoft-com/i;class y{constructor(e){this.document=e}isActive(e){return g.test(e)||h.test(e)}execute(e){const{body:t,stylesString:n}=e._parsedData;c(t,n),m(t,e.dataTransfer.getData("text/rtf")),e.content=t}}function b(e){return e.replace(/<span(?: class="Apple-converted-space"|)>(\s+)<\/span>/g,((e,t)=>1===t.length?" ":Array(t.length+1).join("  ").substr(0,t.length)))}function w(e,t){const n=new DOMParser,r=function(e){return b(b(e)).replace(/(<span\s+style=['"]mso-spacerun:yes['"]>[^\S\r\n]*?)[\r\n]+([^\S\r\n]*<\/span>)/g,"$1$2").replace(/<span\s+style=['"]mso-spacerun:yes['"]><\/span>/g,"").replace(/ <\//g," </").replace(/ <o:p><\/o:p>/g," <o:p></o:p>").replace(/<o:p>(&nbsp;|\u00A0)<\/o:p>/g,"").replace(/>([^\S\r\n]*[\r\n]\s*)</g,"><")}(function(e){const t="</body>",n="</html>",r=e.indexOf(t);if(r<0)return e;const s=e.indexOf(n,r+t.length);return e.substring(0,r+t.length)+(s>=0?e.substring(s):"")}(e=e.replace(/<!--\[if gte vml 1]>/g,""))),i=n.parseFromString(r,"text/html");!function(e){e.querySelectorAll("span[style*=spacerun]").forEach((e=>{const t=e.innerText.length||0;e.innerText=Array(t+1).join("  ").substr(0,t)}))}(i);const o=i.body.innerHTML,c=function(e,t){const n=new s.ViewDocument(t),r=new s.DomConverter(n,{renderingMode:"data"}),i=e.createDocumentFragment(),o=e.body.childNodes;for(;o.length>0;)i.appendChild(o[0]);return r.domToView(i,{skipComments:!0})}(i,t),l=function(e){const t=[],n=[],r=Array.from(e.getElementsByTagName("style"));for(const e of r)e.sheet&&e.sheet.cssRules&&e.sheet.cssRules.length&&(t.push(e.sheet),n.push(e.innerHTML));return{styles:t,stylesString:n.join(" ")}}(i);return{body:c,bodyString:o,styles:l.styles,stylesString:l.stylesString}}class v extends e.Plugin{static get pluginName(){return"PasteFromOffice"}static get requires(){return[t.ClipboardPipeline]}init(){const e=this.editor,t=e.editing.view.document,n=[];n.push(new y(t)),n.push(new d(t)),e.plugins.get("ClipboardPipeline").on("inputTransformation",((r,s)=>{if(s._isTransformedWithPasteFromOffice)return;if(e.model.document.selection.getFirstPosition().parent.is("element","codeBlock"))return;const i=s.dataTransfer.getData("text/html"),o=n.find((e=>e.isActive(i)));o&&(s._parsedData=w(i,t.stylesProcessor),o.execute(s),s._isTransformedWithPasteFromOffice=!0)}),{priority:"high"})}}})(),(window.CKEditor5=window.CKEditor5||{}).pasteFromOffice=r})();
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/special-characters/special-characters.js b/core/assets/vendor/ckeditor5/special-characters/special-characters.js
index ba24d6c08d..46dc89cd86 100644
--- a/core/assets/vendor/ckeditor5/special-characters/special-characters.js
+++ b/core/assets/vendor/ckeditor5/special-characters/special-characters.js
@@ -1,5 +1,5 @@
-!function(t){const e=t.en=t.en||{};e.dictionary=Object.assign(e.dictionary||{},{"Almost equal to":"Almost equal to",Angle:"Angle","Approximately equal to":"Approximately equal to","Asterisk operator":"Asterisk operator","Austral sign":"Austral sign","back with leftwards arrow above":"back with leftwards arrow above","Bitcoin sign":"Bitcoin sign","Cedi sign":"Cedi sign","Cent sign":"Cent sign","Character categories":"Character categories","Colon sign":"Colon sign","Contains as member":"Contains as member","Copyright sign":"Copyright sign","Cruzeiro sign":"Cruzeiro sign","Currency sign":"Currency sign","Degree sign":"Degree sign","Division sign":"Division sign","Dollar sign":"Dollar sign","Dong sign":"Dong sign","Double dagger":"Double dagger","Double exclamation mark":"Double exclamation mark","Double low-9 quotation mark":"Double low-9 quotation mark","Double question mark":"Double question mark","downwards arrow to bar":"downwards arrow to bar","downwards dashed arrow":"downwards dashed arrow","downwards double arrow":"downwards double arrow","Drachma sign":"Drachma sign","Element of":"Element of","Em dash":"Em dash","Empty set":"Empty set","En dash":"En dash","end with leftwards arrow above":"end with leftwards arrow above","Euro sign":"Euro sign","Euro-currency sign":"Euro-currency sign","Exclamation question mark":"Exclamation question mark","For all":"For all","Fraction slash":"Fraction slash","French franc sign":"French franc sign","German penny sign":"German penny sign","Greater-than or equal to":"Greater-than or equal to","Greater-than sign":"Greater-than sign","Guarani sign":"Guarani sign","Horizontal ellipsis":"Horizontal ellipsis","Hryvnia sign":"Hryvnia sign","Identical to":"Identical to","Indian rupee sign":"Indian rupee sign",Infinity:"Infinity",Integral:"Integral",Intersection:"Intersection","Inverted exclamation mark":"Inverted exclamation mark","Inverted question mark":"Inverted question mark","Kip sign":"Kip sign","Latin capital letter a with breve":"Latin capital letter a with breve","Latin capital letter a with macron":"Latin capital letter a with macron","Latin capital letter a with ogonek":"Latin capital letter a with ogonek","Latin capital letter c with acute":"Latin capital letter c with acute","Latin capital letter c with caron":"Latin capital letter c with caron","Latin capital letter c with circumflex":"Latin capital letter c with circumflex","Latin capital letter c with dot above":"Latin capital letter c with dot above","Latin capital letter d with caron":"Latin capital letter d with caron","Latin capital letter d with stroke":"Latin capital letter d with stroke","Latin capital letter e with breve":"Latin capital letter e with breve","Latin capital letter e with caron":"Latin capital letter e with caron","Latin capital letter e with dot above":"Latin capital letter e with dot above","Latin capital letter e with macron":"Latin capital letter e with macron","Latin capital letter e with ogonek":"Latin capital letter e with ogonek","Latin capital letter eng":"Latin capital letter eng","Latin capital letter g with breve":"Latin capital letter g with breve","Latin capital letter g with cedilla":"Latin capital letter g with cedilla","Latin capital letter g with circumflex":"Latin capital letter g with circumflex","Latin capital letter g with dot above":"Latin capital letter g with dot above","Latin capital letter h with circumflex":"Latin capital letter h with circumflex","Latin capital letter h with stroke":"Latin capital letter h with stroke","Latin capital letter i with breve":"Latin capital letter i with breve","Latin capital letter i with dot above":"Latin capital letter i with dot above","Latin capital letter i with macron":"Latin capital letter i with macron","Latin capital letter i with ogonek":"Latin capital letter i with ogonek","Latin capital letter i with tilde":"Latin capital letter i with tilde","Latin capital letter j with circumflex":"Latin capital letter j with circumflex","Latin capital letter k with cedilla":"Latin capital letter k with cedilla","Latin capital letter l with acute":"Latin capital letter l with acute","Latin capital letter l with caron":"Latin capital letter l with caron","Latin capital letter l with cedilla":"Latin capital letter l with cedilla","Latin capital letter l with middle dot":"Latin capital letter l with middle dot","Latin capital letter l with stroke":"Latin capital letter l with stroke","Latin capital letter n with acute":"Latin capital letter n with acute","Latin capital letter n with caron":"Latin capital letter n with caron","Latin capital letter n with cedilla":"Latin capital letter n with cedilla","Latin capital letter o with breve":"Latin capital letter o with breve","Latin capital letter o with double acute":"Latin capital letter o with double acute","Latin capital letter o with macron":"Latin capital letter o with macron","Latin capital letter r with acute":"Latin capital letter r with acute","Latin capital letter r with caron":"Latin capital letter r with caron","Latin capital letter r with cedilla":"Latin capital letter r with cedilla","Latin capital letter s with acute":"Latin capital letter s with acute","Latin capital letter s with caron":"Latin capital letter s with caron","Latin capital letter s with cedilla":"Latin capital letter s with cedilla","Latin capital letter s with circumflex":"Latin capital letter s with circumflex","Latin capital letter t with caron":"Latin capital letter t with caron","Latin capital letter t with cedilla":"Latin capital letter t with cedilla","Latin capital letter t with stroke":"Latin capital letter t with stroke","Latin capital letter u with breve":"Latin capital letter u with breve","Latin capital letter u with double acute":"Latin capital letter u with double acute","Latin capital letter u with macron":"Latin capital letter u with macron","Latin capital letter u with ogonek":"Latin capital letter u with ogonek","Latin capital letter u with ring above":"Latin capital letter u with ring above","Latin capital letter u with tilde":"Latin capital letter u with tilde","Latin capital letter w with circumflex":"Latin capital letter w with circumflex","Latin capital letter y with circumflex":"Latin capital letter y with circumflex","Latin capital letter y with diaeresis":"Latin capital letter y with diaeresis","Latin capital letter z with acute":"Latin capital letter z with acute","Latin capital letter z with caron":"Latin capital letter z with caron","Latin capital letter z with dot above":"Latin capital letter z with dot above","Latin capital ligature ij":"Latin capital ligature ij","Latin capital ligature oe":"Latin capital ligature oe","Latin small letter a with breve":"Latin small letter a with breve","Latin small letter a with macron":"Latin small letter a with macron","Latin small letter a with ogonek":"Latin small letter a with ogonek","Latin small letter c with acute":"Latin small letter c with acute","Latin small letter c with caron":"Latin small letter c with caron","Latin small letter c with circumflex":"Latin small letter c with circumflex","Latin small letter c with dot above":"Latin small letter c with dot above","Latin small letter d with caron":"Latin small letter d with caron","Latin small letter d with stroke":"Latin small letter d with stroke","Latin small letter dotless i":"Latin small letter dotless i","Latin small letter e with breve":"Latin small letter e with breve","Latin small letter e with caron":"Latin small letter e with caron","Latin small letter e with dot above":"Latin small letter e with dot above","Latin small letter e with macron":"Latin small letter e with macron","Latin small letter e with ogonek":"Latin small letter e with ogonek","Latin small letter eng":"Latin small letter eng","Latin small letter f with hook":"Latin small letter f with hook","Latin small letter g with breve":"Latin small letter g with breve","Latin small letter g with cedilla":"Latin small letter g with cedilla","Latin small letter g with circumflex":"Latin small letter g with circumflex","Latin small letter g with dot above":"Latin small letter g with dot above","Latin small letter h with circumflex":"Latin small letter h with circumflex","Latin small letter h with stroke":"Latin small letter h with stroke","Latin small letter i with breve":"Latin small letter i with breve","Latin small letter i with macron":"Latin small letter i with macron","Latin small letter i with ogonek":"Latin small letter i with ogonek","Latin small letter i with tilde":"Latin small letter i with tilde","Latin small letter j with circumflex":"Latin small letter j with circumflex","Latin small letter k with cedilla":"Latin small letter k with cedilla","Latin small letter kra":"Latin small letter kra","Latin small letter l with acute":"Latin small letter l with acute","Latin small letter l with caron":"Latin small letter l with caron","Latin small letter l with cedilla":"Latin small letter l with cedilla","Latin small letter l with middle dot":"Latin small letter l with middle dot","Latin small letter l with stroke":"Latin small letter l with stroke","Latin small letter long s":"Latin small letter long s","Latin small letter n preceded by apostrophe":"Latin small letter n preceded by apostrophe","Latin small letter n with acute":"Latin small letter n with acute","Latin small letter n with caron":"Latin small letter n with caron","Latin small letter n with cedilla":"Latin small letter n with cedilla","Latin small letter o with breve":"Latin small letter o with breve","Latin small letter o with double acute":"Latin small letter o with double acute","Latin small letter o with macron":"Latin small letter o with macron","Latin small letter r with acute":"Latin small letter r with acute","Latin small letter r with caron":"Latin small letter r with caron","Latin small letter r with cedilla":"Latin small letter r with cedilla","Latin small letter s with acute":"Latin small letter s with acute","Latin small letter s with caron":"Latin small letter s with caron","Latin small letter s with cedilla":"Latin small letter s with cedilla","Latin small letter s with circumflex":"Latin small letter s with circumflex","Latin small letter t with caron":"Latin small letter t with caron","Latin small letter t with cedilla":"Latin small letter t with cedilla","Latin small letter t with stroke":"Latin small letter t with stroke","Latin small letter u with breve":"Latin small letter u with breve","Latin small letter u with double acute":"Latin small letter u with double acute","Latin small letter u with macron":"Latin small letter u with macron","Latin small letter u with ogonek":"Latin small letter u with ogonek","Latin small letter u with ring above":"Latin small letter u with ring above","Latin small letter u with tilde":"Latin small letter u with tilde","Latin small letter w with circumflex":"Latin small letter w with circumflex","Latin small letter y with circumflex":"Latin small letter y with circumflex","Latin small letter z with acute":"Latin small letter z with acute","Latin small letter z with caron":"Latin small letter z with caron","Latin small letter z with dot above":"Latin small letter z with dot above","Latin small ligature ij":"Latin small ligature ij","Latin small ligature oe":"Latin small ligature oe","Left double quotation mark":"Left double quotation mark","Left single quotation mark":"Left single quotation mark","Left-pointing double angle quotation mark":"Left-pointing double angle quotation mark","leftwards arrow to bar":"leftwards arrow to bar","leftwards dashed arrow":"leftwards dashed arrow","leftwards double arrow":"leftwards double arrow","Less-than or equal to":"Less-than or equal to","Less-than sign":"Less-than sign","Lira sign":"Lira sign","Livre tournois sign":"Livre tournois sign","Logical and":"Logical and","Logical or":"Logical or",Macron:"Macron","Manat sign":"Manat sign","Mill sign":"Mill sign","Minus sign":"Minus sign","Multiplication sign":"Multiplication sign","N-ary product":"N-ary product","N-ary summation":"N-ary summation",Nabla:"Nabla","Naira sign":"Naira sign","New sheqel sign":"New sheqel sign","Nordic mark sign":"Nordic mark sign","Not an element of":"Not an element of","Not equal to":"Not equal to","Not sign":"Not sign","on with exclamation mark with left right arrow above":"on with exclamation mark with left right arrow above",Overline:"Overline","Paragraph sign":"Paragraph sign","Partial differential":"Partial differential","Per mille sign":"Per mille sign","Per ten thousand sign":"Per ten thousand sign","Peseta sign":"Peseta sign","Peso sign":"Peso sign","Plus-minus sign":"Plus-minus sign","Pound sign":"Pound sign","Proportional to":"Proportional to","Question exclamation mark":"Question exclamation mark","Registered sign":"Registered sign","Reversed paragraph sign":"Reversed paragraph sign","Right double quotation mark":"Right double quotation mark","Right single quotation mark":"Right single quotation mark","Right-pointing double angle quotation mark":"Right-pointing double angle quotation mark","rightwards arrow to bar":"rightwards arrow to bar","rightwards dashed arrow":"rightwards dashed arrow","rightwards double arrow":"rightwards double arrow","Ruble sign":"Ruble sign","Rupee sign":"Rupee sign","Section sign":"Section sign","Single left-pointing angle quotation mark":"Single left-pointing angle quotation mark","Single low-9 quotation mark":"Single low-9 quotation mark","Single right-pointing angle quotation mark":"Single right-pointing angle quotation mark","soon with rightwards arrow above":"soon with rightwards arrow above","Special characters":"Special characters","Spesmilo sign":"Spesmilo sign","Square root":"Square root","Tenge sign":"Tenge sign","There exists":"There exists","Tilde operator":"Tilde operator","top with upwards arrow above":"top with upwards arrow above","Trade mark sign":"Trade mark sign","Tugrik sign":"Tugrik sign","Turkish lira sign":"Turkish lira sign","Two dot leader":"Two dot leader",Union:"Union","up down arrow with base":"up down arrow with base","upwards arrow to bar":"upwards arrow to bar","upwards dashed arrow":"upwards dashed arrow","upwards double arrow":"upwards double arrow","Vulgar fraction one half":"Vulgar fraction one half","Vulgar fraction one quarter":"Vulgar fraction one quarter","Vulgar fraction three quarters":"Vulgar fraction three quarters","Won sign":"Won sign","Yen sign":"Yen sign"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})),
+!function(t){const e=t.en=t.en||{};e.dictionary=Object.assign(e.dictionary||{},{"Almost equal to":"Almost equal to",Angle:"Angle","Approximately equal to":"Approximately equal to","Asterisk operator":"Asterisk operator","Austral sign":"Austral sign","back with leftwards arrow above":"back with leftwards arrow above","Bitcoin sign":"Bitcoin sign","Cedi sign":"Cedi sign","Cent sign":"Cent sign","Character categories":"Character categories","Colon sign":"Colon sign","Contains as member":"Contains as member","Copyright sign":"Copyright sign","Cruzeiro sign":"Cruzeiro sign","Currency sign":"Currency sign","Degree sign":"Degree sign","Division sign":"Division sign","Dollar sign":"Dollar sign","Dong sign":"Dong sign","Double dagger":"Double dagger","Double exclamation mark":"Double exclamation mark","Double low-9 quotation mark":"Double low-9 quotation mark","Double question mark":"Double question mark","downwards arrow to bar":"downwards arrow to bar","downwards dashed arrow":"downwards dashed arrow","downwards double arrow":"downwards double arrow","downwards simple arrow":"downwards simple arrow","Drachma sign":"Drachma sign","Element of":"Element of","Em dash":"Em dash","Empty set":"Empty set","En dash":"En dash","end with leftwards arrow above":"end with leftwards arrow above","Euro sign":"Euro sign","Euro-currency sign":"Euro-currency sign","Exclamation question mark":"Exclamation question mark","For all":"For all","Fraction slash":"Fraction slash","French franc sign":"French franc sign","German penny sign":"German penny sign","Greater-than or equal to":"Greater-than or equal to","Greater-than sign":"Greater-than sign","Guarani sign":"Guarani sign","Horizontal ellipsis":"Horizontal ellipsis","Hryvnia sign":"Hryvnia sign","Identical to":"Identical to","Indian rupee sign":"Indian rupee sign",Infinity:"Infinity",Integral:"Integral",Intersection:"Intersection","Inverted exclamation mark":"Inverted exclamation mark","Inverted question mark":"Inverted question mark","Kip sign":"Kip sign","Latin capital letter a with breve":"Latin capital letter a with breve","Latin capital letter a with macron":"Latin capital letter a with macron","Latin capital letter a with ogonek":"Latin capital letter a with ogonek","Latin capital letter c with acute":"Latin capital letter c with acute","Latin capital letter c with caron":"Latin capital letter c with caron","Latin capital letter c with circumflex":"Latin capital letter c with circumflex","Latin capital letter c with dot above":"Latin capital letter c with dot above","Latin capital letter d with caron":"Latin capital letter d with caron","Latin capital letter d with stroke":"Latin capital letter d with stroke","Latin capital letter e with breve":"Latin capital letter e with breve","Latin capital letter e with caron":"Latin capital letter e with caron","Latin capital letter e with dot above":"Latin capital letter e with dot above","Latin capital letter e with macron":"Latin capital letter e with macron","Latin capital letter e with ogonek":"Latin capital letter e with ogonek","Latin capital letter eng":"Latin capital letter eng","Latin capital letter g with breve":"Latin capital letter g with breve","Latin capital letter g with cedilla":"Latin capital letter g with cedilla","Latin capital letter g with circumflex":"Latin capital letter g with circumflex","Latin capital letter g with dot above":"Latin capital letter g with dot above","Latin capital letter h with circumflex":"Latin capital letter h with circumflex","Latin capital letter h with stroke":"Latin capital letter h with stroke","Latin capital letter i with breve":"Latin capital letter i with breve","Latin capital letter i with dot above":"Latin capital letter i with dot above","Latin capital letter i with macron":"Latin capital letter i with macron","Latin capital letter i with ogonek":"Latin capital letter i with ogonek","Latin capital letter i with tilde":"Latin capital letter i with tilde","Latin capital letter j with circumflex":"Latin capital letter j with circumflex","Latin capital letter k with cedilla":"Latin capital letter k with cedilla","Latin capital letter l with acute":"Latin capital letter l with acute","Latin capital letter l with caron":"Latin capital letter l with caron","Latin capital letter l with cedilla":"Latin capital letter l with cedilla","Latin capital letter l with middle dot":"Latin capital letter l with middle dot","Latin capital letter l with stroke":"Latin capital letter l with stroke","Latin capital letter n with acute":"Latin capital letter n with acute","Latin capital letter n with caron":"Latin capital letter n with caron","Latin capital letter n with cedilla":"Latin capital letter n with cedilla","Latin capital letter o with breve":"Latin capital letter o with breve","Latin capital letter o with double acute":"Latin capital letter o with double acute","Latin capital letter o with macron":"Latin capital letter o with macron","Latin capital letter r with acute":"Latin capital letter r with acute","Latin capital letter r with caron":"Latin capital letter r with caron","Latin capital letter r with cedilla":"Latin capital letter r with cedilla","Latin capital letter s with acute":"Latin capital letter s with acute","Latin capital letter s with caron":"Latin capital letter s with caron","Latin capital letter s with cedilla":"Latin capital letter s with cedilla","Latin capital letter s with circumflex":"Latin capital letter s with circumflex","Latin capital letter t with caron":"Latin capital letter t with caron","Latin capital letter t with cedilla":"Latin capital letter t with cedilla","Latin capital letter t with stroke":"Latin capital letter t with stroke","Latin capital letter u with breve":"Latin capital letter u with breve","Latin capital letter u with double acute":"Latin capital letter u with double acute","Latin capital letter u with macron":"Latin capital letter u with macron","Latin capital letter u with ogonek":"Latin capital letter u with ogonek","Latin capital letter u with ring above":"Latin capital letter u with ring above","Latin capital letter u with tilde":"Latin capital letter u with tilde","Latin capital letter w with circumflex":"Latin capital letter w with circumflex","Latin capital letter y with circumflex":"Latin capital letter y with circumflex","Latin capital letter y with diaeresis":"Latin capital letter y with diaeresis","Latin capital letter z with acute":"Latin capital letter z with acute","Latin capital letter z with caron":"Latin capital letter z with caron","Latin capital letter z with dot above":"Latin capital letter z with dot above","Latin capital ligature ij":"Latin capital ligature ij","Latin capital ligature oe":"Latin capital ligature oe","Latin small letter a with breve":"Latin small letter a with breve","Latin small letter a with macron":"Latin small letter a with macron","Latin small letter a with ogonek":"Latin small letter a with ogonek","Latin small letter c with acute":"Latin small letter c with acute","Latin small letter c with caron":"Latin small letter c with caron","Latin small letter c with circumflex":"Latin small letter c with circumflex","Latin small letter c with dot above":"Latin small letter c with dot above","Latin small letter d with caron":"Latin small letter d with caron","Latin small letter d with stroke":"Latin small letter d with stroke","Latin small letter dotless i":"Latin small letter dotless i","Latin small letter e with breve":"Latin small letter e with breve","Latin small letter e with caron":"Latin small letter e with caron","Latin small letter e with dot above":"Latin small letter e with dot above","Latin small letter e with macron":"Latin small letter e with macron","Latin small letter e with ogonek":"Latin small letter e with ogonek","Latin small letter eng":"Latin small letter eng","Latin small letter f with hook":"Latin small letter f with hook","Latin small letter g with breve":"Latin small letter g with breve","Latin small letter g with cedilla":"Latin small letter g with cedilla","Latin small letter g with circumflex":"Latin small letter g with circumflex","Latin small letter g with dot above":"Latin small letter g with dot above","Latin small letter h with circumflex":"Latin small letter h with circumflex","Latin small letter h with stroke":"Latin small letter h with stroke","Latin small letter i with breve":"Latin small letter i with breve","Latin small letter i with macron":"Latin small letter i with macron","Latin small letter i with ogonek":"Latin small letter i with ogonek","Latin small letter i with tilde":"Latin small letter i with tilde","Latin small letter j with circumflex":"Latin small letter j with circumflex","Latin small letter k with cedilla":"Latin small letter k with cedilla","Latin small letter kra":"Latin small letter kra","Latin small letter l with acute":"Latin small letter l with acute","Latin small letter l with caron":"Latin small letter l with caron","Latin small letter l with cedilla":"Latin small letter l with cedilla","Latin small letter l with middle dot":"Latin small letter l with middle dot","Latin small letter l with stroke":"Latin small letter l with stroke","Latin small letter long s":"Latin small letter long s","Latin small letter n preceded by apostrophe":"Latin small letter n preceded by apostrophe","Latin small letter n with acute":"Latin small letter n with acute","Latin small letter n with caron":"Latin small letter n with caron","Latin small letter n with cedilla":"Latin small letter n with cedilla","Latin small letter o with breve":"Latin small letter o with breve","Latin small letter o with double acute":"Latin small letter o with double acute","Latin small letter o with macron":"Latin small letter o with macron","Latin small letter r with acute":"Latin small letter r with acute","Latin small letter r with caron":"Latin small letter r with caron","Latin small letter r with cedilla":"Latin small letter r with cedilla","Latin small letter s with acute":"Latin small letter s with acute","Latin small letter s with caron":"Latin small letter s with caron","Latin small letter s with cedilla":"Latin small letter s with cedilla","Latin small letter s with circumflex":"Latin small letter s with circumflex","Latin small letter t with caron":"Latin small letter t with caron","Latin small letter t with cedilla":"Latin small letter t with cedilla","Latin small letter t with stroke":"Latin small letter t with stroke","Latin small letter u with breve":"Latin small letter u with breve","Latin small letter u with double acute":"Latin small letter u with double acute","Latin small letter u with macron":"Latin small letter u with macron","Latin small letter u with ogonek":"Latin small letter u with ogonek","Latin small letter u with ring above":"Latin small letter u with ring above","Latin small letter u with tilde":"Latin small letter u with tilde","Latin small letter w with circumflex":"Latin small letter w with circumflex","Latin small letter y with circumflex":"Latin small letter y with circumflex","Latin small letter z with acute":"Latin small letter z with acute","Latin small letter z with caron":"Latin small letter z with caron","Latin small letter z with dot above":"Latin small letter z with dot above","Latin small ligature ij":"Latin small ligature ij","Latin small ligature oe":"Latin small ligature oe","Left double quotation mark":"Left double quotation mark","Left single quotation mark":"Left single quotation mark","Left-pointing double angle quotation mark":"Left-pointing double angle quotation mark","leftwards arrow to bar":"leftwards arrow to bar","leftwards dashed arrow":"leftwards dashed arrow","leftwards double arrow":"leftwards double arrow","leftwards simple arrow":"leftwards simple arrow","Less-than or equal to":"Less-than or equal to","Less-than sign":"Less-than sign","Lira sign":"Lira sign","Livre tournois sign":"Livre tournois sign","Logical and":"Logical and","Logical or":"Logical or",Macron:"Macron","Manat sign":"Manat sign","Mill sign":"Mill sign","Minus sign":"Minus sign","Multiplication sign":"Multiplication sign","N-ary product":"N-ary product","N-ary summation":"N-ary summation",Nabla:"Nabla","Naira sign":"Naira sign","New sheqel sign":"New sheqel sign","Nordic mark sign":"Nordic mark sign","Not an element of":"Not an element of","Not equal to":"Not equal to","Not sign":"Not sign","on with exclamation mark with left right arrow above":"on with exclamation mark with left right arrow above",Overline:"Overline","Paragraph sign":"Paragraph sign","Partial differential":"Partial differential","Per mille sign":"Per mille sign","Per ten thousand sign":"Per ten thousand sign","Peseta sign":"Peseta sign","Peso sign":"Peso sign","Plus-minus sign":"Plus-minus sign","Pound sign":"Pound sign","Proportional to":"Proportional to","Question exclamation mark":"Question exclamation mark","Registered sign":"Registered sign","Reversed paragraph sign":"Reversed paragraph sign","Right double quotation mark":"Right double quotation mark","Right single quotation mark":"Right single quotation mark","Right-pointing double angle quotation mark":"Right-pointing double angle quotation mark","rightwards arrow to bar":"rightwards arrow to bar","rightwards dashed arrow":"rightwards dashed arrow","rightwards double arrow":"rightwards double arrow","rightwards simple arrow":"rightwards simple arrow","Ruble sign":"Ruble sign","Rupee sign":"Rupee sign","Section sign":"Section sign","Single left-pointing angle quotation mark":"Single left-pointing angle quotation mark","Single low-9 quotation mark":"Single low-9 quotation mark","Single right-pointing angle quotation mark":"Single right-pointing angle quotation mark","soon with rightwards arrow above":"soon with rightwards arrow above","Special characters":"Special characters","Spesmilo sign":"Spesmilo sign","Square root":"Square root","Tenge sign":"Tenge sign","There exists":"There exists","Tilde operator":"Tilde operator","top with upwards arrow above":"top with upwards arrow above","Trade mark sign":"Trade mark sign","Tugrik sign":"Tugrik sign","Turkish lira sign":"Turkish lira sign","Two dot leader":"Two dot leader",Union:"Union","up down arrow with base":"up down arrow with base","upwards arrow to bar":"upwards arrow to bar","upwards dashed arrow":"upwards dashed arrow","upwards double arrow":"upwards double arrow","upwards simple arrow":"upwards simple arrow","Vulgar fraction one half":"Vulgar fraction one half","Vulgar fraction one quarter":"Vulgar fraction one quarter","Vulgar fraction three quarters":"Vulgar fraction three quarters","Won sign":"Won sign","Yen sign":"Yen sign"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})),
 /*!
  * @license Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
  * For licensing, see LICENSE.md.
- */(()=>{var t={395:(t,e,a)=>{"use strict";a.d(e,{Z:()=>l});var i=a(609),r=a.n(i)()((function(t){return t[1]}));r.push([t.id,".ck.ck-character-grid{max-width:100%}.ck.ck-character-grid .ck-character-grid__tiles{display:grid}:root{--ck-character-grid-tile-size:24px}.ck.ck-character-grid{max-height:200px;overflow-x:hidden;overflow-y:auto;width:350px}@media screen and (max-width:600px){.ck.ck-character-grid{width:190px}}.ck.ck-character-grid .ck-character-grid__tiles{grid-gap:var(--ck-spacing-standard);grid-template-columns:repeat(10,1fr);margin:var(--ck-spacing-standard) var(--ck-spacing-large)}@media screen and (max-width:600px){.ck.ck-character-grid .ck-character-grid__tiles{grid-template-columns:repeat(5,1fr)}}.ck.ck-character-grid .ck-character-grid__tile{border:0;font-size:1.2em;height:var(--ck-character-grid-tile-size);min-height:var(--ck-character-grid-tile-size);min-width:var(--ck-character-grid-tile-size);padding:0;transition:box-shadow .2s ease;width:var(--ck-character-grid-tile-size)}.ck.ck-character-grid .ck-character-grid__tile:focus:not(.ck-disabled),.ck.ck-character-grid .ck-character-grid__tile:hover:not(.ck-disabled){border:0;box-shadow:inset 0 0 0 1px var(--ck-color-base-background),0 0 0 2px var(--ck-color-focus-border)}.ck.ck-character-grid .ck-character-grid__tile .ck-button__label{line-height:var(--ck-character-grid-tile-size);text-align:center;width:100%}",""]);const l=r},198:(t,e,a)=>{"use strict";a.d(e,{Z:()=>l});var i=a(609),r=a.n(i)()((function(t){return t[1]}));r.push([t.id,".ck.ck-character-info{border-top:1px solid var(--ck-color-base-border);display:flex;justify-content:space-between;padding:var(--ck-spacing-small) var(--ck-spacing-large)}.ck.ck-character-info>*{font-size:var(--ck-font-size-small);text-transform:uppercase}.ck.ck-character-info .ck-character-info__name{max-width:280px;overflow:hidden;text-overflow:ellipsis}.ck.ck-character-info .ck-character-info__code{opacity:.6}@media screen and (max-width:600px){.ck.ck-character-info{max-width:190px}}",""]);const l=r},454:(t,e,a)=>{"use strict";a.d(e,{Z:()=>l});var i=a(609),r=a.n(i)()((function(t){return t[1]}));r.push([t.id,".ck.ck-special-characters-navigation>.ck-label{max-width:160px;overflow:hidden;text-overflow:ellipsis}.ck.ck-special-characters-navigation>.ck-dropdown .ck-dropdown__panel{max-height:250px;overflow-x:hidden;overflow-y:auto}@media screen and (max-width:600px){.ck.ck-special-characters-navigation{max-width:190px}.ck.ck-special-characters-navigation>.ck-form__header__label{overflow:hidden;text-overflow:ellipsis}}",""]);const l=r},609:t=>{"use strict";t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var a=t(e);return e[2]?"@media ".concat(e[2]," {").concat(a,"}"):a})).join("")},e.i=function(t,a,i){"string"==typeof t&&(t=[[null,t,""]]);var r={};if(i)for(var l=0;l<this.length;l++){var c=this[l][0];null!=c&&(r[c]=!0)}for(var n=0;n<t.length;n++){var o=[].concat(t[n]);i&&r[o[0]]||(a&&(o[2]?o[2]="".concat(a," and ").concat(o[2]):o[2]=a),e.push(o))}},e}},62:(t,e,a)=>{"use strict";var i,r=function(){return void 0===i&&(i=Boolean(window&&document&&document.all&&!window.atob)),i},l=function(){var t={};return function(e){if(void 0===t[e]){var a=document.querySelector(e);if(window.HTMLIFrameElement&&a instanceof window.HTMLIFrameElement)try{a=a.contentDocument.head}catch(t){a=null}t[e]=a}return t[e]}}(),c=[];function n(t){for(var e=-1,a=0;a<c.length;a++)if(c[a].identifier===t){e=a;break}return e}function o(t,e){for(var a={},i=[],r=0;r<t.length;r++){var l=t[r],o=e.base?l[0]+e.base:l[0],s=a[o]||0,h="".concat(o," ").concat(s);a[o]=s+1;var d=n(h),w={css:l[1],media:l[2],sourceMap:l[3]};-1!==d?(c[d].references++,c[d].updater(w)):c.push({identifier:h,updater:p(w,e),references:1}),i.push(h)}return i}function s(t){var e=document.createElement("style"),i=t.attributes||{};if(void 0===i.nonce){var r=a.nc;r&&(i.nonce=r)}if(Object.keys(i).forEach((function(t){e.setAttribute(t,i[t])})),"function"==typeof t.insert)t.insert(e);else{var c=l(t.insert||"head");if(!c)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");c.appendChild(e)}return e}var h,d=(h=[],function(t,e){return h[t]=e,h.filter(Boolean).join("\n")});function w(t,e,a,i){var r=a?"":i.media?"@media ".concat(i.media," {").concat(i.css,"}"):i.css;if(t.styleSheet)t.styleSheet.cssText=d(e,r);else{var l=document.createTextNode(r),c=t.childNodes;c[e]&&t.removeChild(c[e]),c.length?t.insertBefore(l,c[e]):t.appendChild(l)}}function u(t,e,a){var i=a.css,r=a.media,l=a.sourceMap;if(r?t.setAttribute("media",r):t.removeAttribute("media"),l&&"undefined"!=typeof btoa&&(i+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(l))))," */")),t.styleSheet)t.styleSheet.cssText=i;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(i))}}var g=null,m=0;function p(t,e){var a,i,r;if(e.singleton){var l=m++;a=g||(g=s(e)),i=w.bind(null,a,l,!1),r=w.bind(null,a,l,!0)}else a=s(e),i=u.bind(null,a,e),r=function(){!function(t){if(null===t.parentNode)return!1;t.parentNode.removeChild(t)}(a)};return i(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;i(t=e)}else r()}}t.exports=function(t,e){(e=e||{}).singleton||"boolean"==typeof e.singleton||(e.singleton=r());var a=o(t=t||[],e);return function(t){if(t=t||[],"[object Array]"===Object.prototype.toString.call(t)){for(var i=0;i<a.length;i++){var r=n(a[i]);c[r].references--}for(var l=o(t,e),s=0;s<a.length;s++){var h=n(a[s]);0===c[h].references&&(c[h].updater(),c.splice(h,1))}a=l}}}},704:(t,e,a)=>{t.exports=a(79)("./src/core.js")},181:(t,e,a)=>{t.exports=a(79)("./src/typing.js")},273:(t,e,a)=>{t.exports=a(79)("./src/ui.js")},209:(t,e,a)=>{t.exports=a(79)("./src/utils.js")},79:t=>{"use strict";t.exports=CKEditor5.dll}},e={};function a(i){var r=e[i];if(void 0!==r)return r.exports;var l=e[i]={id:i,exports:{}};return t[i](l,l.exports,a),l.exports}a.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return a.d(e,{a:e}),e},a.d=(t,e)=>{for(var i in e)a.o(e,i)&&!a.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:e[i]})},a.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),a.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},a.nc=void 0;var i={};(()=>{"use strict";a.r(i),a.d(i,{SpecialCharacters:()=>b,SpecialCharactersArrows:()=>v,SpecialCharactersCurrency:()=>T,SpecialCharactersEssentials:()=>q,SpecialCharactersLatin:()=>C,SpecialCharactersMathematical:()=>y,SpecialCharactersText:()=>x});var t=a(704),e=a(181),r=a(273),l=a(209);class c extends r.FormHeaderView{constructor(t,e){super(t);const a=t.t;this.set("class","ck-special-characters-navigation"),this.groupDropdownView=this._createGroupDropdown(e),this.groupDropdownView.panelPosition="rtl"===t.uiLanguageDirection?"se":"sw",this.label=a("Special characters"),this.children.add(this.groupDropdownView)}get currentGroupName(){return this.groupDropdownView.value}focus(){this.groupDropdownView.focus()}_createGroupDropdown(t){const e=this.locale,a=e.t,i=(0,r.createDropdown)(e),l=this._getCharacterGroupListItemDefinitions(i,t);return i.set("value",l.first.model.label),i.buttonView.bind("label").to(i,"value"),i.buttonView.set({isOn:!1,withText:!0,tooltip:a("Character categories"),class:["ck-dropdown__button_label-width_auto"]}),i.on("execute",(t=>{i.value=t.source.label})),i.delegate("execute").to(this),(0,r.addListToDropdown)(i,l),i}_getCharacterGroupListItemDefinitions(t,e){const a=new l.Collection;for(const i of e){const e={type:"button",model:new r.Model({label:i,withText:!0})};e.model.bind("isOn").to(t,"value",(t=>t===e.model.label)),a.add(e)}return a}}var n=a(62),o=a.n(n),s=a(395),h={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};o()(s.Z,h);s.Z.locals;class d extends r.View{constructor(t){super(t),this.tiles=this.createCollection(),this.setTemplate({tag:"div",children:[{tag:"div",attributes:{class:["ck","ck-character-grid__tiles"]},children:this.tiles}],attributes:{class:["ck","ck-character-grid"]}}),this.focusTracker=new l.FocusTracker,this.keystrokes=new l.KeystrokeHandler,(0,r.addKeyboardHandlingForGrid)({keystrokeHandler:this.keystrokes,focusTracker:this.focusTracker,gridItems:this.tiles,numberOfColumns:()=>l.global.window.getComputedStyle(this.element.firstChild).getPropertyValue("grid-template-columns").split(" ").length})}createTile(t,e){const a=new r.ButtonView(this.locale);return a.set({label:t,withText:!0,class:"ck-character-grid__tile"}),a.extendTemplate({attributes:{title:e},on:{mouseover:a.bindTemplate.to("mouseover")}}),a.on("mouseover",(()=>{this.fire("tileHover",{name:e,character:t})})),a.on("execute",(()=>{this.fire("execute",{name:e,character:t})})),a}render(){super.render();for(const t of this.tiles)this.focusTracker.add(t.element);this.tiles.on("change",((t,{added:e,removed:a})=>{if(e.length>0)for(const t of e)this.focusTracker.add(t.element);if(a.length>0)for(const t of a)this.focusTracker.remove(t.element)})),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.keystrokes.destroy()}focus(){this.tiles.get(0).focus()}}var w=a(198),u={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};o()(w.Z,u);w.Z.locals;class g extends r.View{constructor(t){super(t);const e=this.bindTemplate;this.set("character",null),this.set("name",null),this.bind("code").to(this,"character",m),this.setTemplate({tag:"div",children:[{tag:"span",attributes:{class:["ck-character-info__name"]},children:[{text:e.to("name",(t=>t||"​"))}]},{tag:"span",attributes:{class:["ck-character-info__code"]},children:[{text:e.to("code")}]}],attributes:{class:["ck","ck-character-info"]}})}}function m(t){if(null===t)return"";return"U+"+("0000"+t.codePointAt(0).toString(16)).slice(-4)}class p extends r.View{constructor(t,e,a,i){super(t),this.items=this.createCollection(),this.focusTracker=new l.FocusTracker,this.keystrokes=new l.KeystrokeHandler,this._focusCycler=new r.FocusCycler({focusables:this.items,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.navigationView=e,this.gridView=a,this.infoView=i,this.setTemplate({tag:"div",children:[this.navigationView,this.gridView,this.infoView]}),this.items.add(this.navigationView.groupDropdownView.buttonView),this.items.add(this.gridView)}render(){super.render(),this.focusTracker.add(this.navigationView.groupDropdownView.buttonView.element),this.focusTracker.add(this.gridView.element),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this.navigationView.focus()}}var L=a(454),f={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};o()(L.Z,f);L.Z.locals;const k="All";class b extends t.Plugin{static get requires(){return[e.Typing]}static get pluginName(){return"SpecialCharacters"}constructor(t){super(t),this._characters=new Map,this._groups=new Map}init(){const t=this.editor,e=t.t,a=t.commands.get("input");t.ui.componentFactory.add("specialCharacters",(i=>{const l=(0,r.createDropdown)(i);let c;return l.buttonView.set({label:e("Special characters"),icon:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M10 2.5a7.47 7.47 0 0 1 4.231 1.31 7.268 7.268 0 0 1 2.703 3.454 7.128 7.128 0 0 1 .199 4.353c-.39 1.436-1.475 2.72-2.633 3.677h2.013c0-.226.092-.443.254-.603a.876.876 0 0 1 1.229 0c.163.16.254.377.254.603v.853c0 .209-.078.41-.22.567a.873.873 0 0 1-.547.28l-.101.006h-4.695a.517.517 0 0 1-.516-.518v-1.265c0-.21.128-.398.317-.489a5.601 5.601 0 0 0 2.492-2.371 5.459 5.459 0 0 0 .552-3.693 5.53 5.53 0 0 0-1.955-3.2A5.71 5.71 0 0 0 10 4.206 5.708 5.708 0 0 0 6.419 5.46 5.527 5.527 0 0 0 4.46 8.663a5.457 5.457 0 0 0 .554 3.695 5.6 5.6 0 0 0 2.497 2.37.55.55 0 0 1 .317.49v1.264c0 .286-.23.518-.516.518H2.618a.877.877 0 0 1-.614-.25.845.845 0 0 1-.254-.603v-.853c0-.226.091-.443.254-.603a.876.876 0 0 1 1.228 0c.163.16.255.377.255.603h1.925c-1.158-.958-2.155-2.241-2.545-3.678a7.128 7.128 0 0 1 .199-4.352 7.268 7.268 0 0 1 2.703-3.455A7.475 7.475 0 0 1 10 2.5z"/></svg>',tooltip:!0}),l.bind("isEnabled").to(a),l.on("execute",((e,a)=>{t.execute("input",{text:a.character}),t.editing.view.focus()})),l.on("change:isOpen",(()=>{if(!c){c=this._createDropdownPanelContent(i,l);const t=new p(i,c.navigationView,c.gridView,c.infoView);l.panelView.children.add(t)}c.infoView.set({character:null,name:null})})),l}))}addItems(t,e){if(t===k)throw new l.CKEditorError('special-character-invalid-group-name: The name "All" is reserved and cannot be used.');const a=this._getGroup(t);for(const t of e)a.add(t.title),this._characters.set(t.title,t.character)}getGroups(){return this._groups.keys()}getCharactersForGroup(t){return t===k?new Set(this._characters.keys()):this._groups.get(t)}getCharacter(t){return this._characters.get(t)}_getGroup(t){return this._groups.has(t)||this._groups.set(t,new Set),this._groups.get(t)}_updateGrid(t,e){e.tiles.clear();const a=this.getCharactersForGroup(t);for(const t of a){const a=this.getCharacter(t);e.tiles.add(e.createTile(a,t))}}_createDropdownPanelContent(t,e){const a=[...this.getGroups()];a.unshift(k);const i=new c(t,a),r=new d(t),l=new g(t);return r.delegate("execute").to(e),r.on("tileHover",((t,e)=>{l.set(e)})),i.on("execute",(()=>{this._updateGrid(i.currentGroupName,r)})),this._updateGrid(i.currentGroupName,r),{navigationView:i,gridView:r,infoView:l}}}class v extends t.Plugin{static get pluginName(){return"SpecialCharactersArrows"}init(){const t=this.editor,e=t.t;t.plugins.get("SpecialCharacters").addItems("Arrows",[{title:e("leftwards double arrow"),character:"⇐"},{title:e("rightwards double arrow"),character:"⇒"},{title:e("upwards double arrow"),character:"⇑"},{title:e("downwards double arrow"),character:"⇓"},{title:e("leftwards dashed arrow"),character:"⇠"},{title:e("rightwards dashed arrow"),character:"⇢"},{title:e("upwards dashed arrow"),character:"⇡"},{title:e("downwards dashed arrow"),character:"⇣"},{title:e("leftwards arrow to bar"),character:"⇤"},{title:e("rightwards arrow to bar"),character:"⇥"},{title:e("upwards arrow to bar"),character:"⤒"},{title:e("downwards arrow to bar"),character:"⤓"},{title:e("up down arrow with base"),character:"↨"},{title:e("back with leftwards arrow above"),character:"🔙"},{title:e("end with leftwards arrow above"),character:"🔚"},{title:e("on with exclamation mark with left right arrow above"),character:"🔛"},{title:e("soon with rightwards arrow above"),character:"🔜"},{title:e("top with upwards arrow above"),character:"🔝"}])}}class x extends t.Plugin{static get pluginName(){return"SpecialCharactersText"}init(){const t=this.editor,e=t.t;t.plugins.get("SpecialCharacters").addItems("Text",[{character:"‹",title:e("Single left-pointing angle quotation mark")},{character:"›",title:e("Single right-pointing angle quotation mark")},{character:"«",title:e("Left-pointing double angle quotation mark")},{character:"»",title:e("Right-pointing double angle quotation mark")},{character:"‘",title:e("Left single quotation mark")},{character:"’",title:e("Right single quotation mark")},{character:"“",title:e("Left double quotation mark")},{character:"”",title:e("Right double quotation mark")},{character:"‚",title:e("Single low-9 quotation mark")},{character:"„",title:e("Double low-9 quotation mark")},{character:"¡",title:e("Inverted exclamation mark")},{character:"¿",title:e("Inverted question mark")},{character:"‥",title:e("Two dot leader")},{character:"…",title:e("Horizontal ellipsis")},{character:"‡",title:e("Double dagger")},{character:"‰",title:e("Per mille sign")},{character:"‱",title:e("Per ten thousand sign")},{character:"‼",title:e("Double exclamation mark")},{character:"⁈",title:e("Question exclamation mark")},{character:"⁉",title:e("Exclamation question mark")},{character:"⁇",title:e("Double question mark")},{character:"©",title:e("Copyright sign")},{character:"®",title:e("Registered sign")},{character:"™",title:e("Trade mark sign")},{character:"§",title:e("Section sign")},{character:"¶",title:e("Paragraph sign")},{character:"⁋",title:e("Reversed paragraph sign")}])}}class y extends t.Plugin{static get pluginName(){return"SpecialCharactersMathematical"}init(){const t=this.editor,e=t.t;t.plugins.get("SpecialCharacters").addItems("Mathematical",[{character:"<",title:e("Less-than sign")},{character:">",title:e("Greater-than sign")},{character:"≤",title:e("Less-than or equal to")},{character:"≥",title:e("Greater-than or equal to")},{character:"–",title:e("En dash")},{character:"—",title:e("Em dash")},{character:"¯",title:e("Macron")},{character:"‾",title:e("Overline")},{character:"°",title:e("Degree sign")},{character:"−",title:e("Minus sign")},{character:"±",title:e("Plus-minus sign")},{character:"÷",title:e("Division sign")},{character:"⁄",title:e("Fraction slash")},{character:"×",title:e("Multiplication sign")},{character:"ƒ",title:e("Latin small letter f with hook")},{character:"∫",title:e("Integral")},{character:"∑",title:e("N-ary summation")},{character:"∞",title:e("Infinity")},{character:"√",title:e("Square root")},{character:"∼",title:e("Tilde operator")},{character:"≅",title:e("Approximately equal to")},{character:"≈",title:e("Almost equal to")},{character:"≠",title:e("Not equal to")},{character:"≡",title:e("Identical to")},{character:"∈",title:e("Element of")},{character:"∉",title:e("Not an element of")},{character:"∋",title:e("Contains as member")},{character:"∏",title:e("N-ary product")},{character:"∧",title:e("Logical and")},{character:"∨",title:e("Logical or")},{character:"¬",title:e("Not sign")},{character:"∩",title:e("Intersection")},{character:"∪",title:e("Union")},{character:"∂",title:e("Partial differential")},{character:"∀",title:e("For all")},{character:"∃",title:e("There exists")},{character:"∅",title:e("Empty set")},{character:"∇",title:e("Nabla")},{character:"∗",title:e("Asterisk operator")},{character:"∝",title:e("Proportional to")},{character:"∠",title:e("Angle")},{character:"¼",title:e("Vulgar fraction one quarter")},{character:"½",title:e("Vulgar fraction one half")},{character:"¾",title:e("Vulgar fraction three quarters")}])}}class C extends t.Plugin{static get pluginName(){return"SpecialCharactersLatin"}init(){const t=this.editor,e=t.t;t.plugins.get("SpecialCharacters").addItems("Latin",[{character:"Ā",title:e("Latin capital letter a with macron")},{character:"ā",title:e("Latin small letter a with macron")},{character:"Ă",title:e("Latin capital letter a with breve")},{character:"ă",title:e("Latin small letter a with breve")},{character:"Ą",title:e("Latin capital letter a with ogonek")},{character:"ą",title:e("Latin small letter a with ogonek")},{character:"Ć",title:e("Latin capital letter c with acute")},{character:"ć",title:e("Latin small letter c with acute")},{character:"Ĉ",title:e("Latin capital letter c with circumflex")},{character:"ĉ",title:e("Latin small letter c with circumflex")},{character:"Ċ",title:e("Latin capital letter c with dot above")},{character:"ċ",title:e("Latin small letter c with dot above")},{character:"Č",title:e("Latin capital letter c with caron")},{character:"č",title:e("Latin small letter c with caron")},{character:"Ď",title:e("Latin capital letter d with caron")},{character:"ď",title:e("Latin small letter d with caron")},{character:"Đ",title:e("Latin capital letter d with stroke")},{character:"đ",title:e("Latin small letter d with stroke")},{character:"Ē",title:e("Latin capital letter e with macron")},{character:"ē",title:e("Latin small letter e with macron")},{character:"Ĕ",title:e("Latin capital letter e with breve")},{character:"ĕ",title:e("Latin small letter e with breve")},{character:"Ė",title:e("Latin capital letter e with dot above")},{character:"ė",title:e("Latin small letter e with dot above")},{character:"Ę",title:e("Latin capital letter e with ogonek")},{character:"ę",title:e("Latin small letter e with ogonek")},{character:"Ě",title:e("Latin capital letter e with caron")},{character:"ě",title:e("Latin small letter e with caron")},{character:"Ĝ",title:e("Latin capital letter g with circumflex")},{character:"ĝ",title:e("Latin small letter g with circumflex")},{character:"Ğ",title:e("Latin capital letter g with breve")},{character:"ğ",title:e("Latin small letter g with breve")},{character:"Ġ",title:e("Latin capital letter g with dot above")},{character:"ġ",title:e("Latin small letter g with dot above")},{character:"Ģ",title:e("Latin capital letter g with cedilla")},{character:"ģ",title:e("Latin small letter g with cedilla")},{character:"Ĥ",title:e("Latin capital letter h with circumflex")},{character:"ĥ",title:e("Latin small letter h with circumflex")},{character:"Ħ",title:e("Latin capital letter h with stroke")},{character:"ħ",title:e("Latin small letter h with stroke")},{character:"Ĩ",title:e("Latin capital letter i with tilde")},{character:"ĩ",title:e("Latin small letter i with tilde")},{character:"Ī",title:e("Latin capital letter i with macron")},{character:"ī",title:e("Latin small letter i with macron")},{character:"Ĭ",title:e("Latin capital letter i with breve")},{character:"ĭ",title:e("Latin small letter i with breve")},{character:"Į",title:e("Latin capital letter i with ogonek")},{character:"į",title:e("Latin small letter i with ogonek")},{character:"İ",title:e("Latin capital letter i with dot above")},{character:"ı",title:e("Latin small letter dotless i")},{character:"Ĳ",title:e("Latin capital ligature ij")},{character:"ĳ",title:e("Latin small ligature ij")},{character:"Ĵ",title:e("Latin capital letter j with circumflex")},{character:"ĵ",title:e("Latin small letter j with circumflex")},{character:"Ķ",title:e("Latin capital letter k with cedilla")},{character:"ķ",title:e("Latin small letter k with cedilla")},{character:"ĸ",title:e("Latin small letter kra")},{character:"Ĺ",title:e("Latin capital letter l with acute")},{character:"ĺ",title:e("Latin small letter l with acute")},{character:"Ļ",title:e("Latin capital letter l with cedilla")},{character:"ļ",title:e("Latin small letter l with cedilla")},{character:"Ľ",title:e("Latin capital letter l with caron")},{character:"ľ",title:e("Latin small letter l with caron")},{character:"Ŀ",title:e("Latin capital letter l with middle dot")},{character:"ŀ",title:e("Latin small letter l with middle dot")},{character:"Ł",title:e("Latin capital letter l with stroke")},{character:"ł",title:e("Latin small letter l with stroke")},{character:"Ń",title:e("Latin capital letter n with acute")},{character:"ń",title:e("Latin small letter n with acute")},{character:"Ņ",title:e("Latin capital letter n with cedilla")},{character:"ņ",title:e("Latin small letter n with cedilla")},{character:"Ň",title:e("Latin capital letter n with caron")},{character:"ň",title:e("Latin small letter n with caron")},{character:"ŉ",title:e("Latin small letter n preceded by apostrophe")},{character:"Ŋ",title:e("Latin capital letter eng")},{character:"ŋ",title:e("Latin small letter eng")},{character:"Ō",title:e("Latin capital letter o with macron")},{character:"ō",title:e("Latin small letter o with macron")},{character:"Ŏ",title:e("Latin capital letter o with breve")},{character:"ŏ",title:e("Latin small letter o with breve")},{character:"Ő",title:e("Latin capital letter o with double acute")},{character:"ő",title:e("Latin small letter o with double acute")},{character:"Œ",title:e("Latin capital ligature oe")},{character:"œ",title:e("Latin small ligature oe")},{character:"Ŕ",title:e("Latin capital letter r with acute")},{character:"ŕ",title:e("Latin small letter r with acute")},{character:"Ŗ",title:e("Latin capital letter r with cedilla")},{character:"ŗ",title:e("Latin small letter r with cedilla")},{character:"Ř",title:e("Latin capital letter r with caron")},{character:"ř",title:e("Latin small letter r with caron")},{character:"Ś",title:e("Latin capital letter s with acute")},{character:"ś",title:e("Latin small letter s with acute")},{character:"Ŝ",title:e("Latin capital letter s with circumflex")},{character:"ŝ",title:e("Latin small letter s with circumflex")},{character:"Ş",title:e("Latin capital letter s with cedilla")},{character:"ş",title:e("Latin small letter s with cedilla")},{character:"Š",title:e("Latin capital letter s with caron")},{character:"š",title:e("Latin small letter s with caron")},{character:"Ţ",title:e("Latin capital letter t with cedilla")},{character:"ţ",title:e("Latin small letter t with cedilla")},{character:"Ť",title:e("Latin capital letter t with caron")},{character:"ť",title:e("Latin small letter t with caron")},{character:"Ŧ",title:e("Latin capital letter t with stroke")},{character:"ŧ",title:e("Latin small letter t with stroke")},{character:"Ũ",title:e("Latin capital letter u with tilde")},{character:"ũ",title:e("Latin small letter u with tilde")},{character:"Ū",title:e("Latin capital letter u with macron")},{character:"ū",title:e("Latin small letter u with macron")},{character:"Ŭ",title:e("Latin capital letter u with breve")},{character:"ŭ",title:e("Latin small letter u with breve")},{character:"Ů",title:e("Latin capital letter u with ring above")},{character:"ů",title:e("Latin small letter u with ring above")},{character:"Ű",title:e("Latin capital letter u with double acute")},{character:"ű",title:e("Latin small letter u with double acute")},{character:"Ų",title:e("Latin capital letter u with ogonek")},{character:"ų",title:e("Latin small letter u with ogonek")},{character:"Ŵ",title:e("Latin capital letter w with circumflex")},{character:"ŵ",title:e("Latin small letter w with circumflex")},{character:"Ŷ",title:e("Latin capital letter y with circumflex")},{character:"ŷ",title:e("Latin small letter y with circumflex")},{character:"Ÿ",title:e("Latin capital letter y with diaeresis")},{character:"Ź",title:e("Latin capital letter z with acute")},{character:"ź",title:e("Latin small letter z with acute")},{character:"Ż",title:e("Latin capital letter z with dot above")},{character:"ż",title:e("Latin small letter z with dot above")},{character:"Ž",title:e("Latin capital letter z with caron")},{character:"ž",title:e("Latin small letter z with caron")},{character:"ſ",title:e("Latin small letter long s")}])}}class T extends t.Plugin{static get pluginName(){return"SpecialCharactersCurrency"}init(){const t=this.editor,e=t.t;t.plugins.get("SpecialCharacters").addItems("Currency",[{character:"$",title:e("Dollar sign")},{character:"€",title:e("Euro sign")},{character:"¥",title:e("Yen sign")},{character:"£",title:e("Pound sign")},{character:"¢",title:e("Cent sign")},{character:"₠",title:e("Euro-currency sign")},{character:"₡",title:e("Colon sign")},{character:"₢",title:e("Cruzeiro sign")},{character:"₣",title:e("French franc sign")},{character:"₤",title:e("Lira sign")},{character:"¤",title:e("Currency sign")},{character:"₿",title:e("Bitcoin sign")},{character:"₥",title:e("Mill sign")},{character:"₦",title:e("Naira sign")},{character:"₧",title:e("Peseta sign")},{character:"₨",title:e("Rupee sign")},{character:"₩",title:e("Won sign")},{character:"₪",title:e("New sheqel sign")},{character:"₫",title:e("Dong sign")},{character:"₭",title:e("Kip sign")},{character:"₮",title:e("Tugrik sign")},{character:"₯",title:e("Drachma sign")},{character:"₰",title:e("German penny sign")},{character:"₱",title:e("Peso sign")},{character:"₲",title:e("Guarani sign")},{character:"₳",title:e("Austral sign")},{character:"₴",title:e("Hryvnia sign")},{character:"₵",title:e("Cedi sign")},{character:"₶",title:e("Livre tournois sign")},{character:"₷",title:e("Spesmilo sign")},{character:"₸",title:e("Tenge sign")},{character:"₹",title:e("Indian rupee sign")},{character:"₺",title:e("Turkish lira sign")},{character:"₻",title:e("Nordic mark sign")},{character:"₼",title:e("Manat sign")},{character:"₽",title:e("Ruble sign")}])}}class q extends t.Plugin{static get requires(){return[T,x,y,v,C]}}})(),(window.CKEditor5=window.CKEditor5||{}).specialCharacters=i})();
\ No newline at end of file
+ */(()=>{var t={395:(t,e,a)=>{"use strict";a.d(e,{Z:()=>l});var i=a(609),r=a.n(i)()((function(t){return t[1]}));r.push([t.id,".ck.ck-character-grid{max-width:100%}.ck.ck-character-grid .ck-character-grid__tiles{display:grid}:root{--ck-character-grid-tile-size:24px}.ck.ck-character-grid{max-height:200px;overflow-x:hidden;overflow-y:auto;width:350px}@media screen and (max-width:600px){.ck.ck-character-grid{width:190px}}.ck.ck-character-grid .ck-character-grid__tiles{grid-gap:var(--ck-spacing-standard);grid-template-columns:repeat(10,1fr);margin:var(--ck-spacing-standard) var(--ck-spacing-large)}@media screen and (max-width:600px){.ck.ck-character-grid .ck-character-grid__tiles{grid-template-columns:repeat(5,1fr)}}.ck.ck-character-grid .ck-character-grid__tile{border:0;font-size:1.2em;height:var(--ck-character-grid-tile-size);min-height:var(--ck-character-grid-tile-size);min-width:var(--ck-character-grid-tile-size);padding:0;transition:box-shadow .2s ease;width:var(--ck-character-grid-tile-size)}.ck.ck-character-grid .ck-character-grid__tile:focus:not(.ck-disabled),.ck.ck-character-grid .ck-character-grid__tile:hover:not(.ck-disabled){border:0;box-shadow:inset 0 0 0 1px var(--ck-color-base-background),0 0 0 2px var(--ck-color-focus-border)}.ck.ck-character-grid .ck-character-grid__tile .ck-button__label{line-height:var(--ck-character-grid-tile-size);text-align:center;width:100%}",""]);const l=r},198:(t,e,a)=>{"use strict";a.d(e,{Z:()=>l});var i=a(609),r=a.n(i)()((function(t){return t[1]}));r.push([t.id,".ck.ck-character-info{border-top:1px solid var(--ck-color-base-border);display:flex;justify-content:space-between;padding:var(--ck-spacing-small) var(--ck-spacing-large)}.ck.ck-character-info>*{font-size:var(--ck-font-size-small);text-transform:uppercase}.ck.ck-character-info .ck-character-info__name{max-width:280px;overflow:hidden;text-overflow:ellipsis}.ck.ck-character-info .ck-character-info__code{opacity:.6}@media screen and (max-width:600px){.ck.ck-character-info{max-width:190px}}",""]);const l=r},454:(t,e,a)=>{"use strict";a.d(e,{Z:()=>l});var i=a(609),r=a.n(i)()((function(t){return t[1]}));r.push([t.id,".ck.ck-special-characters-navigation>.ck-label{max-width:160px;overflow:hidden;text-overflow:ellipsis}.ck.ck-special-characters-navigation>.ck-dropdown .ck-dropdown__panel{max-height:250px;overflow-x:hidden;overflow-y:auto}@media screen and (max-width:600px){.ck.ck-special-characters-navigation{max-width:190px}.ck.ck-special-characters-navigation>.ck-form__header__label{overflow:hidden;text-overflow:ellipsis}}",""]);const l=r},609:t=>{"use strict";t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var a=t(e);return e[2]?"@media ".concat(e[2]," {").concat(a,"}"):a})).join("")},e.i=function(t,a,i){"string"==typeof t&&(t=[[null,t,""]]);var r={};if(i)for(var l=0;l<this.length;l++){var c=this[l][0];null!=c&&(r[c]=!0)}for(var n=0;n<t.length;n++){var o=[].concat(t[n]);i&&r[o[0]]||(a&&(o[2]?o[2]="".concat(a," and ").concat(o[2]):o[2]=a),e.push(o))}},e}},62:(t,e,a)=>{"use strict";var i,r=function(){return void 0===i&&(i=Boolean(window&&document&&document.all&&!window.atob)),i},l=function(){var t={};return function(e){if(void 0===t[e]){var a=document.querySelector(e);if(window.HTMLIFrameElement&&a instanceof window.HTMLIFrameElement)try{a=a.contentDocument.head}catch(t){a=null}t[e]=a}return t[e]}}(),c=[];function n(t){for(var e=-1,a=0;a<c.length;a++)if(c[a].identifier===t){e=a;break}return e}function o(t,e){for(var a={},i=[],r=0;r<t.length;r++){var l=t[r],o=e.base?l[0]+e.base:l[0],s=a[o]||0,h="".concat(o," ").concat(s);a[o]=s+1;var w=n(h),d={css:l[1],media:l[2],sourceMap:l[3]};-1!==w?(c[w].references++,c[w].updater(d)):c.push({identifier:h,updater:p(d,e),references:1}),i.push(h)}return i}function s(t){var e=document.createElement("style"),i=t.attributes||{};if(void 0===i.nonce){var r=a.nc;r&&(i.nonce=r)}if(Object.keys(i).forEach((function(t){e.setAttribute(t,i[t])})),"function"==typeof t.insert)t.insert(e);else{var c=l(t.insert||"head");if(!c)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");c.appendChild(e)}return e}var h,w=(h=[],function(t,e){return h[t]=e,h.filter(Boolean).join("\n")});function d(t,e,a,i){var r=a?"":i.media?"@media ".concat(i.media," {").concat(i.css,"}"):i.css;if(t.styleSheet)t.styleSheet.cssText=w(e,r);else{var l=document.createTextNode(r),c=t.childNodes;c[e]&&t.removeChild(c[e]),c.length?t.insertBefore(l,c[e]):t.appendChild(l)}}function u(t,e,a){var i=a.css,r=a.media,l=a.sourceMap;if(r?t.setAttribute("media",r):t.removeAttribute("media"),l&&"undefined"!=typeof btoa&&(i+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(l))))," */")),t.styleSheet)t.styleSheet.cssText=i;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(i))}}var g=null,m=0;function p(t,e){var a,i,r;if(e.singleton){var l=m++;a=g||(g=s(e)),i=d.bind(null,a,l,!1),r=d.bind(null,a,l,!0)}else a=s(e),i=u.bind(null,a,e),r=function(){!function(t){if(null===t.parentNode)return!1;t.parentNode.removeChild(t)}(a)};return i(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;i(t=e)}else r()}}t.exports=function(t,e){(e=e||{}).singleton||"boolean"==typeof e.singleton||(e.singleton=r());var a=o(t=t||[],e);return function(t){if(t=t||[],"[object Array]"===Object.prototype.toString.call(t)){for(var i=0;i<a.length;i++){var r=n(a[i]);c[r].references--}for(var l=o(t,e),s=0;s<a.length;s++){var h=n(a[s]);0===c[h].references&&(c[h].updater(),c.splice(h,1))}a=l}}}},704:(t,e,a)=>{t.exports=a(79)("./src/core.js")},181:(t,e,a)=>{t.exports=a(79)("./src/typing.js")},273:(t,e,a)=>{t.exports=a(79)("./src/ui.js")},209:(t,e,a)=>{t.exports=a(79)("./src/utils.js")},79:t=>{"use strict";t.exports=CKEditor5.dll}},e={};function a(i){var r=e[i];if(void 0!==r)return r.exports;var l=e[i]={id:i,exports:{}};return t[i](l,l.exports,a),l.exports}a.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return a.d(e,{a:e}),e},a.d=(t,e)=>{for(var i in e)a.o(e,i)&&!a.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:e[i]})},a.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),a.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},a.nc=void 0;var i={};(()=>{"use strict";a.r(i),a.d(i,{SpecialCharacters:()=>b,SpecialCharactersArrows:()=>v,SpecialCharactersCurrency:()=>T,SpecialCharactersEssentials:()=>q,SpecialCharactersLatin:()=>C,SpecialCharactersMathematical:()=>y,SpecialCharactersText:()=>x});var t=a(704),e=a(181),r=a(273),l=a(209);class c extends r.FormHeaderView{constructor(t,e){super(t);const a=t.t;this.set("class","ck-special-characters-navigation"),this.groupDropdownView=this._createGroupDropdown(e),this.groupDropdownView.panelPosition="rtl"===t.uiLanguageDirection?"se":"sw",this.label=a("Special characters"),this.children.add(this.groupDropdownView)}get currentGroupName(){return this.groupDropdownView.value}focus(){this.groupDropdownView.focus()}_createGroupDropdown(t){const e=this.locale,a=e.t,i=(0,r.createDropdown)(e),l=this._getCharacterGroupListItemDefinitions(i,t);return i.set("value",l.first.model.label),i.buttonView.bind("label").to(i,"value"),i.buttonView.set({isOn:!1,withText:!0,tooltip:a("Character categories"),class:["ck-dropdown__button_label-width_auto"]}),i.on("execute",(t=>{i.value=t.source.label})),i.delegate("execute").to(this),(0,r.addListToDropdown)(i,l),i}_getCharacterGroupListItemDefinitions(t,e){const a=new l.Collection;for(const i of e){const e={type:"button",model:new r.Model({label:i,withText:!0})};e.model.bind("isOn").to(t,"value",(t=>t===e.model.label)),a.add(e)}return a}}var n=a(62),o=a.n(n),s=a(395),h={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};o()(s.Z,h);s.Z.locals;class w extends r.View{constructor(t){super(t),this.tiles=this.createCollection(),this.setTemplate({tag:"div",children:[{tag:"div",attributes:{class:["ck","ck-character-grid__tiles"]},children:this.tiles}],attributes:{class:["ck","ck-character-grid"]}}),this.focusTracker=new l.FocusTracker,this.keystrokes=new l.KeystrokeHandler,(0,r.addKeyboardHandlingForGrid)({keystrokeHandler:this.keystrokes,focusTracker:this.focusTracker,gridItems:this.tiles,numberOfColumns:()=>l.global.window.getComputedStyle(this.element.firstChild).getPropertyValue("grid-template-columns").split(" ").length})}createTile(t,e){const a=new r.ButtonView(this.locale);return a.set({label:t,withText:!0,class:"ck-character-grid__tile"}),a.extendTemplate({attributes:{title:e},on:{mouseover:a.bindTemplate.to("mouseover")}}),a.on("mouseover",(()=>{this.fire("tileHover",{name:e,character:t})})),a.on("execute",(()=>{this.fire("execute",{name:e,character:t})})),a}render(){super.render();for(const t of this.tiles)this.focusTracker.add(t.element);this.tiles.on("change",((t,{added:e,removed:a})=>{if(e.length>0)for(const t of e)this.focusTracker.add(t.element);if(a.length>0)for(const t of a)this.focusTracker.remove(t.element)})),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.keystrokes.destroy()}focus(){this.tiles.get(0).focus()}}var d=a(198),u={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};o()(d.Z,u);d.Z.locals;class g extends r.View{constructor(t){super(t);const e=this.bindTemplate;this.set("character",null),this.set("name",null),this.bind("code").to(this,"character",m),this.setTemplate({tag:"div",children:[{tag:"span",attributes:{class:["ck-character-info__name"]},children:[{text:e.to("name",(t=>t||"​"))}]},{tag:"span",attributes:{class:["ck-character-info__code"]},children:[{text:e.to("code")}]}],attributes:{class:["ck","ck-character-info"]}})}}function m(t){if(null===t)return"";return"U+"+("0000"+t.codePointAt(0).toString(16)).slice(-4)}class p extends r.View{constructor(t,e,a,i){super(t),this.items=this.createCollection(),this.focusTracker=new l.FocusTracker,this.keystrokes=new l.KeystrokeHandler,this._focusCycler=new r.FocusCycler({focusables:this.items,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.navigationView=e,this.gridView=a,this.infoView=i,this.setTemplate({tag:"div",children:[this.navigationView,this.gridView,this.infoView],attributes:{tabindex:"-1"}}),this.items.add(this.navigationView.groupDropdownView.buttonView),this.items.add(this.gridView)}render(){super.render(),this.focusTracker.add(this.navigationView.groupDropdownView.buttonView.element),this.focusTracker.add(this.gridView.element),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this.navigationView.focus()}}var L=a(454),f={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};o()(L.Z,f);L.Z.locals;const k="All";class b extends t.Plugin{static get requires(){return[e.Typing]}static get pluginName(){return"SpecialCharacters"}constructor(t){super(t),this._characters=new Map,this._groups=new Map}init(){const t=this.editor,e=t.t,a=t.commands.get("input");t.ui.componentFactory.add("specialCharacters",(i=>{const l=(0,r.createDropdown)(i);let c;return l.buttonView.set({label:e("Special characters"),icon:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M10 2.5a7.47 7.47 0 0 1 4.231 1.31 7.268 7.268 0 0 1 2.703 3.454 7.128 7.128 0 0 1 .199 4.353c-.39 1.436-1.475 2.72-2.633 3.677h2.013c0-.226.092-.443.254-.603a.876.876 0 0 1 1.229 0c.163.16.254.377.254.603v.853c0 .209-.078.41-.22.567a.873.873 0 0 1-.547.28l-.101.006h-4.695a.517.517 0 0 1-.516-.518v-1.265c0-.21.128-.398.317-.489a5.601 5.601 0 0 0 2.492-2.371 5.459 5.459 0 0 0 .552-3.693 5.53 5.53 0 0 0-1.955-3.2A5.71 5.71 0 0 0 10 4.206 5.708 5.708 0 0 0 6.419 5.46 5.527 5.527 0 0 0 4.46 8.663a5.457 5.457 0 0 0 .554 3.695 5.6 5.6 0 0 0 2.497 2.37.55.55 0 0 1 .317.49v1.264c0 .286-.23.518-.516.518H2.618a.877.877 0 0 1-.614-.25.845.845 0 0 1-.254-.603v-.853c0-.226.091-.443.254-.603a.876.876 0 0 1 1.228 0c.163.16.255.377.255.603h1.925c-1.158-.958-2.155-2.241-2.545-3.678a7.128 7.128 0 0 1 .199-4.352 7.268 7.268 0 0 1 2.703-3.455A7.475 7.475 0 0 1 10 2.5z"/></svg>',tooltip:!0}),l.bind("isEnabled").to(a),l.on("execute",((e,a)=>{t.execute("input",{text:a.character}),t.editing.view.focus()})),l.on("change:isOpen",(()=>{if(!c){c=this._createDropdownPanelContent(i,l);const t=new p(i,c.navigationView,c.gridView,c.infoView);l.panelView.children.add(t)}c.infoView.set({character:null,name:null})})),l}))}addItems(t,e){if(t===k)throw new l.CKEditorError('special-character-invalid-group-name: The name "All" is reserved and cannot be used.');const a=this._getGroup(t);for(const t of e)a.add(t.title),this._characters.set(t.title,t.character)}getGroups(){return this._groups.keys()}getCharactersForGroup(t){return t===k?new Set(this._characters.keys()):this._groups.get(t)}getCharacter(t){return this._characters.get(t)}_getGroup(t){return this._groups.has(t)||this._groups.set(t,new Set),this._groups.get(t)}_updateGrid(t,e){e.tiles.clear();const a=this.getCharactersForGroup(t);for(const t of a){const a=this.getCharacter(t);e.tiles.add(e.createTile(a,t))}}_createDropdownPanelContent(t,e){const a=[...this.getGroups()];a.unshift(k);const i=new c(t,a),r=new w(t),l=new g(t);return r.delegate("execute").to(e),r.on("tileHover",((t,e)=>{l.set(e)})),i.on("execute",(()=>{this._updateGrid(i.currentGroupName,r)})),this._updateGrid(i.currentGroupName,r),{navigationView:i,gridView:r,infoView:l}}}class v extends t.Plugin{static get pluginName(){return"SpecialCharactersArrows"}init(){const t=this.editor,e=t.t;t.plugins.get("SpecialCharacters").addItems("Arrows",[{title:e("leftwards simple arrow"),character:"←"},{title:e("rightwards simple arrow"),character:"→"},{title:e("upwards simple arrow"),character:"↑"},{title:e("downwards simple arrow"),character:"↓"},{title:e("leftwards double arrow"),character:"⇐"},{title:e("rightwards double arrow"),character:"⇒"},{title:e("upwards double arrow"),character:"⇑"},{title:e("downwards double arrow"),character:"⇓"},{title:e("leftwards dashed arrow"),character:"⇠"},{title:e("rightwards dashed arrow"),character:"⇢"},{title:e("upwards dashed arrow"),character:"⇡"},{title:e("downwards dashed arrow"),character:"⇣"},{title:e("leftwards arrow to bar"),character:"⇤"},{title:e("rightwards arrow to bar"),character:"⇥"},{title:e("upwards arrow to bar"),character:"⤒"},{title:e("downwards arrow to bar"),character:"⤓"},{title:e("up down arrow with base"),character:"↨"},{title:e("back with leftwards arrow above"),character:"🔙"},{title:e("end with leftwards arrow above"),character:"🔚"},{title:e("on with exclamation mark with left right arrow above"),character:"🔛"},{title:e("soon with rightwards arrow above"),character:"🔜"},{title:e("top with upwards arrow above"),character:"🔝"}])}}class x extends t.Plugin{static get pluginName(){return"SpecialCharactersText"}init(){const t=this.editor,e=t.t;t.plugins.get("SpecialCharacters").addItems("Text",[{character:"‹",title:e("Single left-pointing angle quotation mark")},{character:"›",title:e("Single right-pointing angle quotation mark")},{character:"«",title:e("Left-pointing double angle quotation mark")},{character:"»",title:e("Right-pointing double angle quotation mark")},{character:"‘",title:e("Left single quotation mark")},{character:"’",title:e("Right single quotation mark")},{character:"“",title:e("Left double quotation mark")},{character:"”",title:e("Right double quotation mark")},{character:"‚",title:e("Single low-9 quotation mark")},{character:"„",title:e("Double low-9 quotation mark")},{character:"¡",title:e("Inverted exclamation mark")},{character:"¿",title:e("Inverted question mark")},{character:"‥",title:e("Two dot leader")},{character:"…",title:e("Horizontal ellipsis")},{character:"‡",title:e("Double dagger")},{character:"‰",title:e("Per mille sign")},{character:"‱",title:e("Per ten thousand sign")},{character:"‼",title:e("Double exclamation mark")},{character:"⁈",title:e("Question exclamation mark")},{character:"⁉",title:e("Exclamation question mark")},{character:"⁇",title:e("Double question mark")},{character:"©",title:e("Copyright sign")},{character:"®",title:e("Registered sign")},{character:"™",title:e("Trade mark sign")},{character:"§",title:e("Section sign")},{character:"¶",title:e("Paragraph sign")},{character:"⁋",title:e("Reversed paragraph sign")}])}}class y extends t.Plugin{static get pluginName(){return"SpecialCharactersMathematical"}init(){const t=this.editor,e=t.t;t.plugins.get("SpecialCharacters").addItems("Mathematical",[{character:"<",title:e("Less-than sign")},{character:">",title:e("Greater-than sign")},{character:"≤",title:e("Less-than or equal to")},{character:"≥",title:e("Greater-than or equal to")},{character:"–",title:e("En dash")},{character:"—",title:e("Em dash")},{character:"¯",title:e("Macron")},{character:"‾",title:e("Overline")},{character:"°",title:e("Degree sign")},{character:"−",title:e("Minus sign")},{character:"±",title:e("Plus-minus sign")},{character:"÷",title:e("Division sign")},{character:"⁄",title:e("Fraction slash")},{character:"×",title:e("Multiplication sign")},{character:"ƒ",title:e("Latin small letter f with hook")},{character:"∫",title:e("Integral")},{character:"∑",title:e("N-ary summation")},{character:"∞",title:e("Infinity")},{character:"√",title:e("Square root")},{character:"∼",title:e("Tilde operator")},{character:"≅",title:e("Approximately equal to")},{character:"≈",title:e("Almost equal to")},{character:"≠",title:e("Not equal to")},{character:"≡",title:e("Identical to")},{character:"∈",title:e("Element of")},{character:"∉",title:e("Not an element of")},{character:"∋",title:e("Contains as member")},{character:"∏",title:e("N-ary product")},{character:"∧",title:e("Logical and")},{character:"∨",title:e("Logical or")},{character:"¬",title:e("Not sign")},{character:"∩",title:e("Intersection")},{character:"∪",title:e("Union")},{character:"∂",title:e("Partial differential")},{character:"∀",title:e("For all")},{character:"∃",title:e("There exists")},{character:"∅",title:e("Empty set")},{character:"∇",title:e("Nabla")},{character:"∗",title:e("Asterisk operator")},{character:"∝",title:e("Proportional to")},{character:"∠",title:e("Angle")},{character:"¼",title:e("Vulgar fraction one quarter")},{character:"½",title:e("Vulgar fraction one half")},{character:"¾",title:e("Vulgar fraction three quarters")}])}}class C extends t.Plugin{static get pluginName(){return"SpecialCharactersLatin"}init(){const t=this.editor,e=t.t;t.plugins.get("SpecialCharacters").addItems("Latin",[{character:"Ā",title:e("Latin capital letter a with macron")},{character:"ā",title:e("Latin small letter a with macron")},{character:"Ă",title:e("Latin capital letter a with breve")},{character:"ă",title:e("Latin small letter a with breve")},{character:"Ą",title:e("Latin capital letter a with ogonek")},{character:"ą",title:e("Latin small letter a with ogonek")},{character:"Ć",title:e("Latin capital letter c with acute")},{character:"ć",title:e("Latin small letter c with acute")},{character:"Ĉ",title:e("Latin capital letter c with circumflex")},{character:"ĉ",title:e("Latin small letter c with circumflex")},{character:"Ċ",title:e("Latin capital letter c with dot above")},{character:"ċ",title:e("Latin small letter c with dot above")},{character:"Č",title:e("Latin capital letter c with caron")},{character:"č",title:e("Latin small letter c with caron")},{character:"Ď",title:e("Latin capital letter d with caron")},{character:"ď",title:e("Latin small letter d with caron")},{character:"Đ",title:e("Latin capital letter d with stroke")},{character:"đ",title:e("Latin small letter d with stroke")},{character:"Ē",title:e("Latin capital letter e with macron")},{character:"ē",title:e("Latin small letter e with macron")},{character:"Ĕ",title:e("Latin capital letter e with breve")},{character:"ĕ",title:e("Latin small letter e with breve")},{character:"Ė",title:e("Latin capital letter e with dot above")},{character:"ė",title:e("Latin small letter e with dot above")},{character:"Ę",title:e("Latin capital letter e with ogonek")},{character:"ę",title:e("Latin small letter e with ogonek")},{character:"Ě",title:e("Latin capital letter e with caron")},{character:"ě",title:e("Latin small letter e with caron")},{character:"Ĝ",title:e("Latin capital letter g with circumflex")},{character:"ĝ",title:e("Latin small letter g with circumflex")},{character:"Ğ",title:e("Latin capital letter g with breve")},{character:"ğ",title:e("Latin small letter g with breve")},{character:"Ġ",title:e("Latin capital letter g with dot above")},{character:"ġ",title:e("Latin small letter g with dot above")},{character:"Ģ",title:e("Latin capital letter g with cedilla")},{character:"ģ",title:e("Latin small letter g with cedilla")},{character:"Ĥ",title:e("Latin capital letter h with circumflex")},{character:"ĥ",title:e("Latin small letter h with circumflex")},{character:"Ħ",title:e("Latin capital letter h with stroke")},{character:"ħ",title:e("Latin small letter h with stroke")},{character:"Ĩ",title:e("Latin capital letter i with tilde")},{character:"ĩ",title:e("Latin small letter i with tilde")},{character:"Ī",title:e("Latin capital letter i with macron")},{character:"ī",title:e("Latin small letter i with macron")},{character:"Ĭ",title:e("Latin capital letter i with breve")},{character:"ĭ",title:e("Latin small letter i with breve")},{character:"Į",title:e("Latin capital letter i with ogonek")},{character:"į",title:e("Latin small letter i with ogonek")},{character:"İ",title:e("Latin capital letter i with dot above")},{character:"ı",title:e("Latin small letter dotless i")},{character:"Ĳ",title:e("Latin capital ligature ij")},{character:"ĳ",title:e("Latin small ligature ij")},{character:"Ĵ",title:e("Latin capital letter j with circumflex")},{character:"ĵ",title:e("Latin small letter j with circumflex")},{character:"Ķ",title:e("Latin capital letter k with cedilla")},{character:"ķ",title:e("Latin small letter k with cedilla")},{character:"ĸ",title:e("Latin small letter kra")},{character:"Ĺ",title:e("Latin capital letter l with acute")},{character:"ĺ",title:e("Latin small letter l with acute")},{character:"Ļ",title:e("Latin capital letter l with cedilla")},{character:"ļ",title:e("Latin small letter l with cedilla")},{character:"Ľ",title:e("Latin capital letter l with caron")},{character:"ľ",title:e("Latin small letter l with caron")},{character:"Ŀ",title:e("Latin capital letter l with middle dot")},{character:"ŀ",title:e("Latin small letter l with middle dot")},{character:"Ł",title:e("Latin capital letter l with stroke")},{character:"ł",title:e("Latin small letter l with stroke")},{character:"Ń",title:e("Latin capital letter n with acute")},{character:"ń",title:e("Latin small letter n with acute")},{character:"Ņ",title:e("Latin capital letter n with cedilla")},{character:"ņ",title:e("Latin small letter n with cedilla")},{character:"Ň",title:e("Latin capital letter n with caron")},{character:"ň",title:e("Latin small letter n with caron")},{character:"ŉ",title:e("Latin small letter n preceded by apostrophe")},{character:"Ŋ",title:e("Latin capital letter eng")},{character:"ŋ",title:e("Latin small letter eng")},{character:"Ō",title:e("Latin capital letter o with macron")},{character:"ō",title:e("Latin small letter o with macron")},{character:"Ŏ",title:e("Latin capital letter o with breve")},{character:"ŏ",title:e("Latin small letter o with breve")},{character:"Ő",title:e("Latin capital letter o with double acute")},{character:"ő",title:e("Latin small letter o with double acute")},{character:"Œ",title:e("Latin capital ligature oe")},{character:"œ",title:e("Latin small ligature oe")},{character:"Ŕ",title:e("Latin capital letter r with acute")},{character:"ŕ",title:e("Latin small letter r with acute")},{character:"Ŗ",title:e("Latin capital letter r with cedilla")},{character:"ŗ",title:e("Latin small letter r with cedilla")},{character:"Ř",title:e("Latin capital letter r with caron")},{character:"ř",title:e("Latin small letter r with caron")},{character:"Ś",title:e("Latin capital letter s with acute")},{character:"ś",title:e("Latin small letter s with acute")},{character:"Ŝ",title:e("Latin capital letter s with circumflex")},{character:"ŝ",title:e("Latin small letter s with circumflex")},{character:"Ş",title:e("Latin capital letter s with cedilla")},{character:"ş",title:e("Latin small letter s with cedilla")},{character:"Š",title:e("Latin capital letter s with caron")},{character:"š",title:e("Latin small letter s with caron")},{character:"Ţ",title:e("Latin capital letter t with cedilla")},{character:"ţ",title:e("Latin small letter t with cedilla")},{character:"Ť",title:e("Latin capital letter t with caron")},{character:"ť",title:e("Latin small letter t with caron")},{character:"Ŧ",title:e("Latin capital letter t with stroke")},{character:"ŧ",title:e("Latin small letter t with stroke")},{character:"Ũ",title:e("Latin capital letter u with tilde")},{character:"ũ",title:e("Latin small letter u with tilde")},{character:"Ū",title:e("Latin capital letter u with macron")},{character:"ū",title:e("Latin small letter u with macron")},{character:"Ŭ",title:e("Latin capital letter u with breve")},{character:"ŭ",title:e("Latin small letter u with breve")},{character:"Ů",title:e("Latin capital letter u with ring above")},{character:"ů",title:e("Latin small letter u with ring above")},{character:"Ű",title:e("Latin capital letter u with double acute")},{character:"ű",title:e("Latin small letter u with double acute")},{character:"Ų",title:e("Latin capital letter u with ogonek")},{character:"ų",title:e("Latin small letter u with ogonek")},{character:"Ŵ",title:e("Latin capital letter w with circumflex")},{character:"ŵ",title:e("Latin small letter w with circumflex")},{character:"Ŷ",title:e("Latin capital letter y with circumflex")},{character:"ŷ",title:e("Latin small letter y with circumflex")},{character:"Ÿ",title:e("Latin capital letter y with diaeresis")},{character:"Ź",title:e("Latin capital letter z with acute")},{character:"ź",title:e("Latin small letter z with acute")},{character:"Ż",title:e("Latin capital letter z with dot above")},{character:"ż",title:e("Latin small letter z with dot above")},{character:"Ž",title:e("Latin capital letter z with caron")},{character:"ž",title:e("Latin small letter z with caron")},{character:"ſ",title:e("Latin small letter long s")}])}}class T extends t.Plugin{static get pluginName(){return"SpecialCharactersCurrency"}init(){const t=this.editor,e=t.t;t.plugins.get("SpecialCharacters").addItems("Currency",[{character:"$",title:e("Dollar sign")},{character:"€",title:e("Euro sign")},{character:"¥",title:e("Yen sign")},{character:"£",title:e("Pound sign")},{character:"¢",title:e("Cent sign")},{character:"₠",title:e("Euro-currency sign")},{character:"₡",title:e("Colon sign")},{character:"₢",title:e("Cruzeiro sign")},{character:"₣",title:e("French franc sign")},{character:"₤",title:e("Lira sign")},{character:"¤",title:e("Currency sign")},{character:"₿",title:e("Bitcoin sign")},{character:"₥",title:e("Mill sign")},{character:"₦",title:e("Naira sign")},{character:"₧",title:e("Peseta sign")},{character:"₨",title:e("Rupee sign")},{character:"₩",title:e("Won sign")},{character:"₪",title:e("New sheqel sign")},{character:"₫",title:e("Dong sign")},{character:"₭",title:e("Kip sign")},{character:"₮",title:e("Tugrik sign")},{character:"₯",title:e("Drachma sign")},{character:"₰",title:e("German penny sign")},{character:"₱",title:e("Peso sign")},{character:"₲",title:e("Guarani sign")},{character:"₳",title:e("Austral sign")},{character:"₴",title:e("Hryvnia sign")},{character:"₵",title:e("Cedi sign")},{character:"₶",title:e("Livre tournois sign")},{character:"₷",title:e("Spesmilo sign")},{character:"₸",title:e("Tenge sign")},{character:"₹",title:e("Indian rupee sign")},{character:"₺",title:e("Turkish lira sign")},{character:"₻",title:e("Nordic mark sign")},{character:"₼",title:e("Manat sign")},{character:"₽",title:e("Ruble sign")}])}}class q extends t.Plugin{static get requires(){return[T,x,y,v,C]}}})(),(window.CKEditor5=window.CKEditor5||{}).specialCharacters=i})();
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/special-characters/translations/ar.js b/core/assets/vendor/ckeditor5/special-characters/translations/ar.js
index 32abbc004d..bc87fd5b2a 100644
--- a/core/assets/vendor/ckeditor5/special-characters/translations/ar.js
+++ b/core/assets/vendor/ckeditor5/special-characters/translations/ar.js
@@ -1 +1 @@
-!function(t){const a=t.ar=t.ar||{};a.dictionary=Object.assign(a.dictionary||{},{"Almost equal to":"يساوي على الأرجح",Angle:"علامة الزاوية","Approximately equal to":"يساوي تقريباً","Asterisk operator":"علامة الضرب (النجمة)","Austral sign":"رمز الأسترال","back with leftwards arrow above":'"عودة" أعلاها سهم يتجه يساراً',"Bitcoin sign":"رمز البيتكوين","Cedi sign":"رمز السيدي","Cent sign":"رمز السنت","Character categories":"فئات الأحرف","Colon sign":"رمز الكولون","Contains as member":"يحتوي كعضو","Copyright sign":'علامة "حق التأليف والنشر"',"Cruzeiro sign":"رمز الكروزيرو","Currency sign":"رمز العملة","Degree sign":"علامة الدرجة","Division sign":"علامة القسمة","Dollar sign":"رمز الدولار","Dong sign":"رمز الدونغ","Double dagger":"رمز الخنجر المزدوج","Double exclamation mark":"علامة تعجّب مزدوجة","Double low-9 quotation mark":"علامة تنصيص 9 منخفضة، مزدوجة","Double question mark":"علامة استفهام مزدوجة","downwards arrow to bar":"سهم لأسفل يشير إلى خط","downwards dashed arrow":"سهم متقطع متجه لأسفل","downwards double arrow":"سهم مزدوج متجه لأسفل","Drachma sign":"رمز الدراخما","Element of":"ينتمي إلى","Em dash":"شرطة طويلة","Empty set":"مجموعة فارغة","En dash":"شرطة قصيرة","end with leftwards arrow above":'"النهاية" أعلاها سهم يتجه يساراً',"Euro sign":"رمز اليورو","Euro-currency sign":"رمز عملة اليورو","Exclamation question mark":"علامة استفهام مع علامة تعجب","For all":"علامة للكل","Fraction slash":"شرطة الكسر","French franc sign":"رمز الفرانك الفرنسي","German penny sign":"رمز البنس الألماني","Greater-than or equal to":"أكبر من أو يساوي","Greater-than sign":"علامة أكبر من","Guarani sign":"رمز الغواراني","Horizontal ellipsis":"علامة القطع الأفقي","Hryvnia sign":"رمز الهريفنا","Identical to":"مطابق لـ","Indian rupee sign":"رمز الروبية الهندية",Infinity:"علامة ما لا نهاية",Integral:"علامة التكامل",Intersection:"تقاطع","Inverted exclamation mark":"علامة تعجّب مقلوبة","Inverted question mark":"علامة استفهام مقلوبة","Kip sign":"رمز الكيب","Latin capital letter a with breve":"حرف a لاتيني كبير مع علامة تشكيل بريف","Latin capital letter a with macron":"حرف a لاتيني كبير مع علامة تشكيل ماكرون","Latin capital letter a with ogonek":"حرف a لاتيني كبير مع علامة تشكيل خطاف","Latin capital letter c with acute":"حرف c لاتيني كبير مع علامة تشكيل النبرة الحادة","Latin capital letter c with caron":"حرف c لاتيني كبير مع علامة تشكيل كارون","Latin capital letter c with circumflex":"حرف c لاتيني كبير مع علامة تشكيل ثنية محيطة","Latin capital letter c with dot above":"حرف c لاتيني كبير مع نقطة أعلاه","Latin capital letter d with caron":"حرف d لاتيني كبير مع علامة تشكيل كارون","Latin capital letter d with stroke":"حرف d لاتيني كبير مع علامة شطب","Latin capital letter e with breve":"حرف e لاتيني كبير مع علامة تشكيل بريف","Latin capital letter e with caron":"حرف e لاتيني كبير مع علامة تشكيل كارون","Latin capital letter e with dot above":"حرف e لاتيني كبير مع نقطة أعلاه","Latin capital letter e with macron":"حرف e لاتيني كبير مع علامة تشكيل ماكرون","Latin capital letter e with ogonek":"حرف e لاتيني كبير مع علامة تشكيل خطاف","Latin capital letter eng":"حرف eng لاتيني كبير","Latin capital letter g with breve":"حرف g لاتيني كبير مع علامة تشكيل بريف","Latin capital letter g with cedilla":"حرف g لاتيني كبير مع علامة تشكيل السيديلة","Latin capital letter g with circumflex":"حرف g لاتيني كبير مع علامة تشكيل ثنية محيطة","Latin capital letter g with dot above":"حرف g لاتيني كبير مع نقطة أعلاه","Latin capital letter h with circumflex":"حرف h لاتيني كبير مع علامة تشكيل ثنية محيطة","Latin capital letter h with stroke":"حرف h لاتيني كبير مع علامة شطب","Latin capital letter i with breve":"حرف i لاتيني كبير مع علامة تشكيل بريف","Latin capital letter i with dot above":"حرف i لاتيني كبير مع نقطة أعلاه","Latin capital letter i with macron":"حرف i لاتيني كبير مع علامة تشكيل ماكرون","Latin capital letter i with ogonek":"حرف i لاتيني كبير مع علامة تشكيل خطاف","Latin capital letter i with tilde":"حرف i لاتيني كبير مع علامة المد","Latin capital letter j with circumflex":"حرف j لاتيني كبير مع علامة تشكيل ثنية محيطة","Latin capital letter k with cedilla":"حرف k لاتيني كبير مع علامة تشكيل السيديلة","Latin capital letter l with acute":"حرف l لاتيني كبير مع علامة تشكيل النبرة الحادة","Latin capital letter l with caron":"حرف l لاتيني كبير مع علامة تشكيل كارون","Latin capital letter l with cedilla":"حرف l لاتيني كبير مع علامة تشكيل السيديلة","Latin capital letter l with middle dot":"حرف l لاتيني كبير مع نقطة عند الوسط","Latin capital letter l with stroke":"حرف l لاتيني كبير مع علامة شطب","Latin capital letter n with acute":"حرف n لاتيني كبير مع علامة تشكيل النبرة الحادة","Latin capital letter n with caron":"حرف n لاتيني كبير مع علامة تشكيل كارون","Latin capital letter n with cedilla":"حرف n لاتيني كبير مع علامة تشكيل السيديلة","Latin capital letter o with breve":"حرف o لاتيني كبير مع علامة تشكيل بريف","Latin capital letter o with double acute":"حرف o لاتيني كبير مع علامة تشكيل النبرة الحادة المزدوجة","Latin capital letter o with macron":"حرف o لاتيني كبير مع علامة تشكيل ماكرون","Latin capital letter r with acute":"حرف r لاتيني كبير مع علامة تشكيل النبرة الحادة","Latin capital letter r with caron":"حرف r لاتيني كبير مع علامة تشكيل كارون","Latin capital letter r with cedilla":"حرف r لاتيني كبير مع علامة تشكيل السيديلة","Latin capital letter s with acute":"حرف s لاتيني كبير مع علامة تشكيل النبرة الحادة","Latin capital letter s with caron":"حرف s لاتيني كبير مع علامة تشكيل كارون","Latin capital letter s with cedilla":"حرف s لاتيني كبير مع علامة تشكيل السيديلة","Latin capital letter s with circumflex":"حرف s لاتيني كبير مع علامة تشكيل ثنية محيطة","Latin capital letter t with caron":"حرف t لاتيني كبير مع علامة تشكيل كارون","Latin capital letter t with cedilla":"حرف t لاتيني كبير مع علامة تشكيل السيديلة","Latin capital letter t with stroke":"حرف t لاتيني كبير مع علامة شطب","Latin capital letter u with breve":"حرف u لاتيني كبير مع علامة تشكيل بريف","Latin capital letter u with double acute":"حرف u لاتيني كبير مع علامة تشكيل النبرة الحادة المزدوجة","Latin capital letter u with macron":"حرف u لاتيني كبير مع علامة تشكيل ماكرون","Latin capital letter u with ogonek":"حرف u لاتيني كبير مع علامة تشكيل خطاف","Latin capital letter u with ring above":"حرف u لاتيني كبير مع حلقة أعلاه","Latin capital letter u with tilde":"حرف u لاتيني كبير مع علامة المد","Latin capital letter w with circumflex":"حرف w لاتيني كبير مع علامة تشكيل ثنية محيطة","Latin capital letter y with circumflex":"حرف y لاتيني كبير مع علامة تشكيل ثنية محيطة","Latin capital letter y with diaeresis":"حرف y لاتيني كبير مع نقطتين أعلاه","Latin capital letter z with acute":"حرف z لاتيني كبير مع علامة تشكيل النبرة الحادة","Latin capital letter z with caron":"حرف z لاتيني كبير مع علامة تشكيل كارون","Latin capital letter z with dot above":"حرف z لاتيني كبير مع نقطة أعلاه","Latin capital ligature ij":"حرف ij لاتيني مُركَّب كبير","Latin capital ligature oe":"حرف oe لاتيني مُركَّب كبير","Latin small letter a with breve":"حرف a لاتيني صغير مع علامة تشكيل بريف","Latin small letter a with macron":"حرف a لاتيني صغير مع علامة تشكيل ماكرون","Latin small letter a with ogonek":"حرف a لاتيني صغير مع علامة تشكيل خطاف","Latin small letter c with acute":"حرف c لاتيني صغير مع علامة تشكيل النبرة الحادة","Latin small letter c with caron":"حرف c لاتيني صغير مع علامة تشكيل كارون","Latin small letter c with circumflex":"حرف c لاتيني صغير مع علامة تشكيل ثنية محيطة","Latin small letter c with dot above":"حرف c لاتيني صغير مع نقطة أعلاه","Latin small letter d with caron":"حرف d لاتيني صغير مع علامة تشكيل كارون","Latin small letter d with stroke":"حرف d لاتيني صغير مع علامة شطب","Latin small letter dotless i":"حرف i لاتيني صغير بدون نقطة","Latin small letter e with breve":"حرف e لاتيني صغير مع علامة تشكيل بريف","Latin small letter e with caron":"حرف e لاتيني صغير مع علامة تشكيل كارون","Latin small letter e with dot above":"حرف e لاتيني صغير مع نقطة أعلاه","Latin small letter e with macron":"حرف e لاتيني صغير مع علامة تشكيل ماكرون","Latin small letter e with ogonek":"حرف e لاتيني صغير مع علامة تشكيل خطاف","Latin small letter eng":"حرف eng لاتيني صغير","Latin small letter f with hook":"حرف f لاتيني صغير مع علامة الخطاف","Latin small letter g with breve":"حرف g لاتيني صغير مع علامة تشكيل بريف","Latin small letter g with cedilla":"حرف g لاتيني صغير مع علامة تشكيل السيديلة","Latin small letter g with circumflex":"حرف g لاتيني صغير مع علامة تشكيل ثنية محيطة","Latin small letter g with dot above":"حرف g لاتيني صغير مع نقطة أعلاه","Latin small letter h with circumflex":"حرف h لاتيني صغير مع علامة تشكيل ثنية محيطة","Latin small letter h with stroke":"حرف h لاتيني صغير مع علامة شطب","Latin small letter i with breve":"حرف i لاتيني صغير مع علامة تشكيل بريف","Latin small letter i with macron":"حرف i لاتيني صغير مع علامة تشكيل ماكرون","Latin small letter i with ogonek":"حرف i لاتيني صغير مع علامة تشكيل خطاف","Latin small letter i with tilde":"حرف i لاتيني صغير مع علامة المد","Latin small letter j with circumflex":"حرف j لاتيني صغير مع علامة تشكيل ثنية محيطة","Latin small letter k with cedilla":"حرف k لاتيني صغير مع علامة تشكيل السيديلة","Latin small letter kra":"حرف kra لاتيني صغير","Latin small letter l with acute":"حرف l لاتيني صغير مع علامة تشكيل النبرة الحادة","Latin small letter l with caron":"حرف l لاتيني صغير مع علامة تشكيل كارون","Latin small letter l with cedilla":"حرف l لاتيني صغير مع علامة تشكيل السيديلة","Latin small letter l with middle dot":"حرف l لاتيني صغير مع نقطة عند الوسط","Latin small letter l with stroke":"حرف l لاتيني صغير مع علامة شطب","Latin small letter long s":'حرف "s طويل" لاتيني صغير',"Latin small letter n preceded by apostrophe":"حرف n لاتيني صغير مسبوقة بعلامة فاصلة عليا","Latin small letter n with acute":"حرف n لاتيني صغير مع علامة تشكيل النبرة الحادة","Latin small letter n with caron":"حرف n لاتيني صغير مع علامة تشكيل كارون","Latin small letter n with cedilla":"حرف n لاتيني صغير مع علامة تشكيل السيديلة","Latin small letter o with breve":"حرف o لاتيني صغير مع علامة تشكيل بريف","Latin small letter o with double acute":"حرف o لاتيني صغير مع علامة تشكيل النبرة الحادة المزدوجة","Latin small letter o with macron":"حرف o لاتيني صغير مع علامة تشكيل ماكرون","Latin small letter r with acute":"حرف r لاتيني صغير مع علامة تشكيل النبرة الحادة\n","Latin small letter r with caron":"حرف r لاتيني صغير مع علامة تشكيل كارون","Latin small letter r with cedilla":"حرف r لاتيني صغير مع علامة تشكيل السيديلة","Latin small letter s with acute":"حرف s لاتيني صغير مع علامة تشكيل النبرة الحادة","Latin small letter s with caron":"حرف s لاتيني صغير مع علامة تشكيل كارون","Latin small letter s with cedilla":"حرف s لاتيني صغير مع علامة تشكيل السيديلة","Latin small letter s with circumflex":"حرف s لاتيني صغير مع علامة تشكيل ثنية محيطة","Latin small letter t with caron":"حرف t لاتيني صغير مع علامة تشكيل كارون","Latin small letter t with cedilla":"حرف t لاتيني صغير مع علامة تشكيل السيديلة","Latin small letter t with stroke":"حرف t لاتيني صغير مع علامة شطب","Latin small letter u with breve":"حرف u لاتيني صغير مع علامة تشكيل بريف","Latin small letter u with double acute":"حرف u لاتيني صغير مع علامة تشكيل النبرة الحادة المزدوجة","Latin small letter u with macron":"حرف u لاتيني صغير مع علامة تشكيل ماكرون","Latin small letter u with ogonek":"حرف u لاتيني صغير مع علامة تشكيل خطاف","Latin small letter u with ring above":"حرف u لاتيني صغير مع حلقة أعلاه","Latin small letter u with tilde":"حرف u لاتيني صغير مع علامة المد","Latin small letter w with circumflex":"حرف w لاتيني صغير مع علامة تشكيل ثنية محيطة","Latin small letter y with circumflex":"حرف y لاتيني صغير مع علامة تشكيل ثنية محيطة","Latin small letter z with acute":"حرف z لاتيني صغير مع علامة تشكيل النبرة الحادة","Latin small letter z with caron":"حرف z لاتيني صغير مع علامة تشكيل كارون","Latin small letter z with dot above":"حرف z لاتيني صغير مع نقطة أعلاه","Latin small ligature ij":"حرف ij لاتيني مُركَّب صغير","Latin small ligature oe":"حرف oe لاتيني مُركَّب صغير","Left double quotation mark":"علامة تنصيص مزدوجة، تشير جهة اليسار","Left single quotation mark":"علامة تنصيص أحادية، تشير جهة اليسار","Left-pointing double angle quotation mark":"علامة تنصيص مزدوجة، رمز الزاوية، تشير جهة اليسار","leftwards arrow to bar":"سهم يشير إلى خط جهة اليسار","leftwards dashed arrow":"سهم متقطع متجه يساراً","leftwards double arrow":"سهم مزدوج متجه يساراً","Less-than or equal to":"أقل من أو يساوي","Less-than sign":"علامة أقل من","Lira sign":"رمز الليرة","Livre tournois sign":"رمز الليفر تورنوز","Logical and":"and المنطقية","Logical or":"or المنطقية",Macron:"علامة التشكيل ماكرون","Manat sign":"رمز المانات","Mill sign":"رمز المليم","Minus sign":"علامة الطرح","Multiplication sign":"علامة الضرب","N-ary product":"حاصل مصفوفة N","N-ary summation":"جمع مصفوفة N",Nabla:"رمز نبلة","Naira sign":"رمز النيرة","New sheqel sign":"رمز الشيكل الجديد","Nordic mark sign":"رمز المارك الاسكندنافي","Not an element of":"لا ينتمي إلى","Not equal to":"لا يساوي","Not sign":"علامة Not المنطقية","on with exclamation mark with left right arrow above":'"يعمل" وعلامة تعجب، أعلاهما سهم باتجاهين يميناً ويساراً',Overline:"خط أعلى الحرف","Paragraph sign":"علامة الفقرة","Partial differential":"التفاضلية الجزئية","Per mille sign":'علامة "لكل ميل"',"Per ten thousand sign":'علامة "لكل 10 آلاف"',"Peseta sign":"رمز البيزيتا","Peso sign":"رمز البيزو","Plus-minus sign":"علامة الطرح والجمع","Pound sign":"رمز الجنيه","Proportional to":"يتناسب مع","Question exclamation mark":"علامة استفهام مزدوجة","Registered sign":'علامة "مسجل"',"Reversed paragraph sign":"علامة الفقرة مقلوبة","Right double quotation mark":"علامة تنصيص مزدوجة، تشير جهة اليمين","Right single quotation mark":"علامة تنصيص أحادية، تشير جهة اليمين","Right-pointing double angle quotation mark":"علامة تنصيص مزدوجة، رمز الزاوية، تشير جهة اليمين","rightwards arrow to bar":"سهم يشير إلى خط جهة اليمين","rightwards dashed arrow":"سهم متقطع متجه يميناً","rightwards double arrow":"سهم مزدوج متجه يميناً","Ruble sign":"رمز الروبيل","Rupee sign":"رمز الروبية","Section sign":"علامة القطاع","Single left-pointing angle quotation mark":"علامة تنصيص أحادية، رمز الزاوية، تشير جهة اليسار","Single low-9 quotation mark":"علامة تنصيص 9 منخفضة، أحادية","Single right-pointing angle quotation mark":"علامة تنصيص أحادية، رمز الزاوية، تشير جهة اليمين","soon with rightwards arrow above":'"قريباً" أعلاها سهم يتجه يميناً',"Special characters":"أحرف خاصة","Spesmilo sign":"رمز السبسميلو","Square root":"الجذر التربيعي","Tenge sign":"رمز التينغ","There exists":"علامة يوجد بها","Tilde operator":"علامة دلتا","top with upwards arrow above":'"إلى القمة" أعلاها سهم لأعلى',"Trade mark sign":"رمز العلامة التجارية","Tugrik sign":"رمز التوغروغ","Turkish lira sign":"رمز الليرة التركية","Two dot leader":"سابقة من نقطتان",Union:"اتحاد","up down arrow with base":"سهم بالاتجاهين أعلى وأسفل، له قاعدة","upwards arrow to bar":"سهم لأعلى يشير إلى خط","upwards dashed arrow":"سهم متقطع متجه لأعلى","upwards double arrow":"سهم مزدوج متجه لأعلى","Vulgar fraction one half":"الكسر الاعتيادي نصف","Vulgar fraction one quarter":"الكسر الاعتيادي ربع","Vulgar fraction three quarters":"الكسر الاعتيادي ثلاثة أرباع","Won sign":"رمز الوون","Yen sign":"رمز الين"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(t){const a=t.ar=t.ar||{};a.dictionary=Object.assign(a.dictionary||{},{"Almost equal to":"يساوي على الأرجح",Angle:"علامة الزاوية","Approximately equal to":"يساوي تقريباً","Asterisk operator":"علامة الضرب (النجمة)","Austral sign":"رمز الأسترال","back with leftwards arrow above":'"عودة" أعلاها سهم يتجه يساراً',"Bitcoin sign":"رمز البيتكوين","Cedi sign":"رمز السيدي","Cent sign":"رمز السنت","Character categories":"فئات الأحرف","Colon sign":"رمز الكولون","Contains as member":"يحتوي كعضو","Copyright sign":'علامة "حق التأليف والنشر"',"Cruzeiro sign":"رمز الكروزيرو","Currency sign":"رمز العملة","Degree sign":"علامة الدرجة","Division sign":"علامة القسمة","Dollar sign":"رمز الدولار","Dong sign":"رمز الدونغ","Double dagger":"رمز الخنجر المزدوج","Double exclamation mark":"علامة تعجّب مزدوجة","Double low-9 quotation mark":"علامة تنصيص 9 منخفضة، مزدوجة","Double question mark":"علامة استفهام مزدوجة","downwards arrow to bar":"سهم لأسفل يشير إلى خط","downwards dashed arrow":"سهم متقطع متجه لأسفل","downwards double arrow":"سهم مزدوج متجه لأسفل","downwards simple arrow":"سهم بسيط يشير إلى الأسفل","Drachma sign":"رمز الدراخما","Element of":"ينتمي إلى","Em dash":"شرطة طويلة","Empty set":"مجموعة فارغة","En dash":"شرطة قصيرة","end with leftwards arrow above":'"النهاية" أعلاها سهم يتجه يساراً',"Euro sign":"رمز اليورو","Euro-currency sign":"رمز عملة اليورو","Exclamation question mark":"علامة استفهام مع علامة تعجب","For all":"علامة للكل","Fraction slash":"شرطة الكسر","French franc sign":"رمز الفرانك الفرنسي","German penny sign":"رمز البنس الألماني","Greater-than or equal to":"أكبر من أو يساوي","Greater-than sign":"علامة أكبر من","Guarani sign":"رمز الغواراني","Horizontal ellipsis":"علامة القطع الأفقي","Hryvnia sign":"رمز الهريفنا","Identical to":"مطابق لـ","Indian rupee sign":"رمز الروبية الهندية",Infinity:"علامة ما لا نهاية",Integral:"علامة التكامل",Intersection:"تقاطع","Inverted exclamation mark":"علامة تعجّب مقلوبة","Inverted question mark":"علامة استفهام مقلوبة","Kip sign":"رمز الكيب","Latin capital letter a with breve":"حرف a لاتيني كبير مع علامة تشكيل بريف","Latin capital letter a with macron":"حرف a لاتيني كبير مع علامة تشكيل ماكرون","Latin capital letter a with ogonek":"حرف a لاتيني كبير مع علامة تشكيل خطاف","Latin capital letter c with acute":"حرف c لاتيني كبير مع علامة تشكيل النبرة الحادة","Latin capital letter c with caron":"حرف c لاتيني كبير مع علامة تشكيل كارون","Latin capital letter c with circumflex":"حرف c لاتيني كبير مع علامة تشكيل ثنية محيطة","Latin capital letter c with dot above":"حرف c لاتيني كبير مع نقطة أعلاه","Latin capital letter d with caron":"حرف d لاتيني كبير مع علامة تشكيل كارون","Latin capital letter d with stroke":"حرف d لاتيني كبير مع علامة شطب","Latin capital letter e with breve":"حرف e لاتيني كبير مع علامة تشكيل بريف","Latin capital letter e with caron":"حرف e لاتيني كبير مع علامة تشكيل كارون","Latin capital letter e with dot above":"حرف e لاتيني كبير مع نقطة أعلاه","Latin capital letter e with macron":"حرف e لاتيني كبير مع علامة تشكيل ماكرون","Latin capital letter e with ogonek":"حرف e لاتيني كبير مع علامة تشكيل خطاف","Latin capital letter eng":"حرف eng لاتيني كبير","Latin capital letter g with breve":"حرف g لاتيني كبير مع علامة تشكيل بريف","Latin capital letter g with cedilla":"حرف g لاتيني كبير مع علامة تشكيل السيديلة","Latin capital letter g with circumflex":"حرف g لاتيني كبير مع علامة تشكيل ثنية محيطة","Latin capital letter g with dot above":"حرف g لاتيني كبير مع نقطة أعلاه","Latin capital letter h with circumflex":"حرف h لاتيني كبير مع علامة تشكيل ثنية محيطة","Latin capital letter h with stroke":"حرف h لاتيني كبير مع علامة شطب","Latin capital letter i with breve":"حرف i لاتيني كبير مع علامة تشكيل بريف","Latin capital letter i with dot above":"حرف i لاتيني كبير مع نقطة أعلاه","Latin capital letter i with macron":"حرف i لاتيني كبير مع علامة تشكيل ماكرون","Latin capital letter i with ogonek":"حرف i لاتيني كبير مع علامة تشكيل خطاف","Latin capital letter i with tilde":"حرف i لاتيني كبير مع علامة المد","Latin capital letter j with circumflex":"حرف j لاتيني كبير مع علامة تشكيل ثنية محيطة","Latin capital letter k with cedilla":"حرف k لاتيني كبير مع علامة تشكيل السيديلة","Latin capital letter l with acute":"حرف l لاتيني كبير مع علامة تشكيل النبرة الحادة","Latin capital letter l with caron":"حرف l لاتيني كبير مع علامة تشكيل كارون","Latin capital letter l with cedilla":"حرف l لاتيني كبير مع علامة تشكيل السيديلة","Latin capital letter l with middle dot":"حرف l لاتيني كبير مع نقطة عند الوسط","Latin capital letter l with stroke":"حرف l لاتيني كبير مع علامة شطب","Latin capital letter n with acute":"حرف n لاتيني كبير مع علامة تشكيل النبرة الحادة","Latin capital letter n with caron":"حرف n لاتيني كبير مع علامة تشكيل كارون","Latin capital letter n with cedilla":"حرف n لاتيني كبير مع علامة تشكيل السيديلة","Latin capital letter o with breve":"حرف o لاتيني كبير مع علامة تشكيل بريف","Latin capital letter o with double acute":"حرف o لاتيني كبير مع علامة تشكيل النبرة الحادة المزدوجة","Latin capital letter o with macron":"حرف o لاتيني كبير مع علامة تشكيل ماكرون","Latin capital letter r with acute":"حرف r لاتيني كبير مع علامة تشكيل النبرة الحادة","Latin capital letter r with caron":"حرف r لاتيني كبير مع علامة تشكيل كارون","Latin capital letter r with cedilla":"حرف r لاتيني كبير مع علامة تشكيل السيديلة","Latin capital letter s with acute":"حرف s لاتيني كبير مع علامة تشكيل النبرة الحادة","Latin capital letter s with caron":"حرف s لاتيني كبير مع علامة تشكيل كارون","Latin capital letter s with cedilla":"حرف s لاتيني كبير مع علامة تشكيل السيديلة","Latin capital letter s with circumflex":"حرف s لاتيني كبير مع علامة تشكيل ثنية محيطة","Latin capital letter t with caron":"حرف t لاتيني كبير مع علامة تشكيل كارون","Latin capital letter t with cedilla":"حرف t لاتيني كبير مع علامة تشكيل السيديلة","Latin capital letter t with stroke":"حرف t لاتيني كبير مع علامة شطب","Latin capital letter u with breve":"حرف u لاتيني كبير مع علامة تشكيل بريف","Latin capital letter u with double acute":"حرف u لاتيني كبير مع علامة تشكيل النبرة الحادة المزدوجة","Latin capital letter u with macron":"حرف u لاتيني كبير مع علامة تشكيل ماكرون","Latin capital letter u with ogonek":"حرف u لاتيني كبير مع علامة تشكيل خطاف","Latin capital letter u with ring above":"حرف u لاتيني كبير مع حلقة أعلاه","Latin capital letter u with tilde":"حرف u لاتيني كبير مع علامة المد","Latin capital letter w with circumflex":"حرف w لاتيني كبير مع علامة تشكيل ثنية محيطة","Latin capital letter y with circumflex":"حرف y لاتيني كبير مع علامة تشكيل ثنية محيطة","Latin capital letter y with diaeresis":"حرف y لاتيني كبير مع نقطتين أعلاه","Latin capital letter z with acute":"حرف z لاتيني كبير مع علامة تشكيل النبرة الحادة","Latin capital letter z with caron":"حرف z لاتيني كبير مع علامة تشكيل كارون","Latin capital letter z with dot above":"حرف z لاتيني كبير مع نقطة أعلاه","Latin capital ligature ij":"حرف ij لاتيني مُركَّب كبير","Latin capital ligature oe":"حرف oe لاتيني مُركَّب كبير","Latin small letter a with breve":"حرف a لاتيني صغير مع علامة تشكيل بريف","Latin small letter a with macron":"حرف a لاتيني صغير مع علامة تشكيل ماكرون","Latin small letter a with ogonek":"حرف a لاتيني صغير مع علامة تشكيل خطاف","Latin small letter c with acute":"حرف c لاتيني صغير مع علامة تشكيل النبرة الحادة","Latin small letter c with caron":"حرف c لاتيني صغير مع علامة تشكيل كارون","Latin small letter c with circumflex":"حرف c لاتيني صغير مع علامة تشكيل ثنية محيطة","Latin small letter c with dot above":"حرف c لاتيني صغير مع نقطة أعلاه","Latin small letter d with caron":"حرف d لاتيني صغير مع علامة تشكيل كارون","Latin small letter d with stroke":"حرف d لاتيني صغير مع علامة شطب","Latin small letter dotless i":"حرف i لاتيني صغير بدون نقطة","Latin small letter e with breve":"حرف e لاتيني صغير مع علامة تشكيل بريف","Latin small letter e with caron":"حرف e لاتيني صغير مع علامة تشكيل كارون","Latin small letter e with dot above":"حرف e لاتيني صغير مع نقطة أعلاه","Latin small letter e with macron":"حرف e لاتيني صغير مع علامة تشكيل ماكرون","Latin small letter e with ogonek":"حرف e لاتيني صغير مع علامة تشكيل خطاف","Latin small letter eng":"حرف eng لاتيني صغير","Latin small letter f with hook":"حرف f لاتيني صغير مع علامة الخطاف","Latin small letter g with breve":"حرف g لاتيني صغير مع علامة تشكيل بريف","Latin small letter g with cedilla":"حرف g لاتيني صغير مع علامة تشكيل السيديلة","Latin small letter g with circumflex":"حرف g لاتيني صغير مع علامة تشكيل ثنية محيطة","Latin small letter g with dot above":"حرف g لاتيني صغير مع نقطة أعلاه","Latin small letter h with circumflex":"حرف h لاتيني صغير مع علامة تشكيل ثنية محيطة","Latin small letter h with stroke":"حرف h لاتيني صغير مع علامة شطب","Latin small letter i with breve":"حرف i لاتيني صغير مع علامة تشكيل بريف","Latin small letter i with macron":"حرف i لاتيني صغير مع علامة تشكيل ماكرون","Latin small letter i with ogonek":"حرف i لاتيني صغير مع علامة تشكيل خطاف","Latin small letter i with tilde":"حرف i لاتيني صغير مع علامة المد","Latin small letter j with circumflex":"حرف j لاتيني صغير مع علامة تشكيل ثنية محيطة","Latin small letter k with cedilla":"حرف k لاتيني صغير مع علامة تشكيل السيديلة","Latin small letter kra":"حرف kra لاتيني صغير","Latin small letter l with acute":"حرف l لاتيني صغير مع علامة تشكيل النبرة الحادة","Latin small letter l with caron":"حرف l لاتيني صغير مع علامة تشكيل كارون","Latin small letter l with cedilla":"حرف l لاتيني صغير مع علامة تشكيل السيديلة","Latin small letter l with middle dot":"حرف l لاتيني صغير مع نقطة عند الوسط","Latin small letter l with stroke":"حرف l لاتيني صغير مع علامة شطب","Latin small letter long s":'حرف "s طويل" لاتيني صغير',"Latin small letter n preceded by apostrophe":"حرف n لاتيني صغير مسبوقة بعلامة فاصلة عليا","Latin small letter n with acute":"حرف n لاتيني صغير مع علامة تشكيل النبرة الحادة","Latin small letter n with caron":"حرف n لاتيني صغير مع علامة تشكيل كارون","Latin small letter n with cedilla":"حرف n لاتيني صغير مع علامة تشكيل السيديلة","Latin small letter o with breve":"حرف o لاتيني صغير مع علامة تشكيل بريف","Latin small letter o with double acute":"حرف o لاتيني صغير مع علامة تشكيل النبرة الحادة المزدوجة","Latin small letter o with macron":"حرف o لاتيني صغير مع علامة تشكيل ماكرون","Latin small letter r with acute":"حرف r لاتيني صغير مع علامة تشكيل النبرة الحادة\n","Latin small letter r with caron":"حرف r لاتيني صغير مع علامة تشكيل كارون","Latin small letter r with cedilla":"حرف r لاتيني صغير مع علامة تشكيل السيديلة","Latin small letter s with acute":"حرف s لاتيني صغير مع علامة تشكيل النبرة الحادة","Latin small letter s with caron":"حرف s لاتيني صغير مع علامة تشكيل كارون","Latin small letter s with cedilla":"حرف s لاتيني صغير مع علامة تشكيل السيديلة","Latin small letter s with circumflex":"حرف s لاتيني صغير مع علامة تشكيل ثنية محيطة","Latin small letter t with caron":"حرف t لاتيني صغير مع علامة تشكيل كارون","Latin small letter t with cedilla":"حرف t لاتيني صغير مع علامة تشكيل السيديلة","Latin small letter t with stroke":"حرف t لاتيني صغير مع علامة شطب","Latin small letter u with breve":"حرف u لاتيني صغير مع علامة تشكيل بريف","Latin small letter u with double acute":"حرف u لاتيني صغير مع علامة تشكيل النبرة الحادة المزدوجة","Latin small letter u with macron":"حرف u لاتيني صغير مع علامة تشكيل ماكرون","Latin small letter u with ogonek":"حرف u لاتيني صغير مع علامة تشكيل خطاف","Latin small letter u with ring above":"حرف u لاتيني صغير مع حلقة أعلاه","Latin small letter u with tilde":"حرف u لاتيني صغير مع علامة المد","Latin small letter w with circumflex":"حرف w لاتيني صغير مع علامة تشكيل ثنية محيطة","Latin small letter y with circumflex":"حرف y لاتيني صغير مع علامة تشكيل ثنية محيطة","Latin small letter z with acute":"حرف z لاتيني صغير مع علامة تشكيل النبرة الحادة","Latin small letter z with caron":"حرف z لاتيني صغير مع علامة تشكيل كارون","Latin small letter z with dot above":"حرف z لاتيني صغير مع نقطة أعلاه","Latin small ligature ij":"حرف ij لاتيني مُركَّب صغير","Latin small ligature oe":"حرف oe لاتيني مُركَّب صغير","Left double quotation mark":"علامة تنصيص مزدوجة، تشير جهة اليسار","Left single quotation mark":"علامة تنصيص أحادية، تشير جهة اليسار","Left-pointing double angle quotation mark":"علامة تنصيص مزدوجة، رمز الزاوية، تشير جهة اليسار","leftwards arrow to bar":"سهم يشير إلى خط جهة اليسار","leftwards dashed arrow":"سهم متقطع متجه يساراً","leftwards double arrow":"سهم مزدوج متجه يساراً","leftwards simple arrow":"سهم بسيط يشير إلى اليسار","Less-than or equal to":"أقل من أو يساوي","Less-than sign":"علامة أقل من","Lira sign":"رمز الليرة","Livre tournois sign":"رمز الليفر تورنوز","Logical and":"and المنطقية","Logical or":"or المنطقية",Macron:"علامة التشكيل ماكرون","Manat sign":"رمز المانات","Mill sign":"رمز المليم","Minus sign":"علامة الطرح","Multiplication sign":"علامة الضرب","N-ary product":"حاصل مصفوفة N","N-ary summation":"جمع مصفوفة N",Nabla:"رمز نبلة","Naira sign":"رمز النيرة","New sheqel sign":"رمز الشيكل الجديد","Nordic mark sign":"رمز المارك الاسكندنافي","Not an element of":"لا ينتمي إلى","Not equal to":"لا يساوي","Not sign":"علامة Not المنطقية","on with exclamation mark with left right arrow above":'"يعمل" وعلامة تعجب، أعلاهما سهم باتجاهين يميناً ويساراً',Overline:"خط أعلى الحرف","Paragraph sign":"علامة الفقرة","Partial differential":"التفاضلية الجزئية","Per mille sign":'علامة "لكل ميل"',"Per ten thousand sign":'علامة "لكل 10 آلاف"',"Peseta sign":"رمز البيزيتا","Peso sign":"رمز البيزو","Plus-minus sign":"علامة الطرح والجمع","Pound sign":"رمز الجنيه","Proportional to":"يتناسب مع","Question exclamation mark":"علامة استفهام مزدوجة","Registered sign":'علامة "مسجل"',"Reversed paragraph sign":"علامة الفقرة مقلوبة","Right double quotation mark":"علامة تنصيص مزدوجة، تشير جهة اليمين","Right single quotation mark":"علامة تنصيص أحادية، تشير جهة اليمين","Right-pointing double angle quotation mark":"علامة تنصيص مزدوجة، رمز الزاوية، تشير جهة اليمين","rightwards arrow to bar":"سهم يشير إلى خط جهة اليمين","rightwards dashed arrow":"سهم متقطع متجه يميناً","rightwards double arrow":"سهم مزدوج متجه يميناً","rightwards simple arrow":"سهم بسيط يشير إلى اليمين","Ruble sign":"رمز الروبيل","Rupee sign":"رمز الروبية","Section sign":"علامة القطاع","Single left-pointing angle quotation mark":"علامة تنصيص أحادية، رمز الزاوية، تشير جهة اليسار","Single low-9 quotation mark":"علامة تنصيص 9 منخفضة، أحادية","Single right-pointing angle quotation mark":"علامة تنصيص أحادية، رمز الزاوية، تشير جهة اليمين","soon with rightwards arrow above":'"قريباً" أعلاها سهم يتجه يميناً',"Special characters":"أحرف خاصة","Spesmilo sign":"رمز السبسميلو","Square root":"الجذر التربيعي","Tenge sign":"رمز التينغ","There exists":"علامة يوجد بها","Tilde operator":"علامة دلتا","top with upwards arrow above":'"إلى القمة" أعلاها سهم لأعلى',"Trade mark sign":"رمز العلامة التجارية","Tugrik sign":"رمز التوغروغ","Turkish lira sign":"رمز الليرة التركية","Two dot leader":"سابقة من نقطتان",Union:"اتحاد","up down arrow with base":"سهم بالاتجاهين أعلى وأسفل، له قاعدة","upwards arrow to bar":"سهم لأعلى يشير إلى خط","upwards dashed arrow":"سهم متقطع متجه لأعلى","upwards double arrow":"سهم مزدوج متجه لأعلى","upwards simple arrow":"سهم بسيط يشير إلى الأعلى","Vulgar fraction one half":"الكسر الاعتيادي نصف","Vulgar fraction one quarter":"الكسر الاعتيادي ربع","Vulgar fraction three quarters":"الكسر الاعتيادي ثلاثة أرباع","Won sign":"رمز الوون","Yen sign":"رمز الين"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/special-characters/translations/az.js b/core/assets/vendor/ckeditor5/special-characters/translations/az.js
index 3d229016dd..3b36d6409c 100644
--- a/core/assets/vendor/ckeditor5/special-characters/translations/az.js
+++ b/core/assets/vendor/ckeditor5/special-characters/translations/az.js
@@ -1 +1 @@
-!function(t){const a=t.az=t.az||{};a.dictionary=Object.assign(a.dictionary||{},{"Almost equal to":"",Angle:"","Approximately equal to":"","Asterisk operator":"","Austral sign":"","back with leftwards arrow above":"","Bitcoin sign":"","Cedi sign":"","Cent sign":"","Character categories":"","Colon sign":"","Contains as member":"","Copyright sign":"","Cruzeiro sign":"","Currency sign":"","Degree sign":"","Division sign":"","Dollar sign":"","Dong sign":"","Double dagger":"","Double exclamation mark":"","Double low-9 quotation mark":"","Double question mark":"","downwards arrow to bar":"","downwards dashed arrow":"","downwards double arrow":"aşağı ikiqat ox","Drachma sign":"","Element of":"","Em dash":"","Empty set":"","En dash":"","end with leftwards arrow above":"","Euro sign":"","Euro-currency sign":"","Exclamation question mark":"","For all":"","Fraction slash":"","French franc sign":"","German penny sign":"","Greater-than or equal to":"","Greater-than sign":"","Guarani sign":"","Horizontal ellipsis":"","Hryvnia sign":"","Identical to":"","Indian rupee sign":"",Infinity:"",Integral:"",Intersection:"","Inverted exclamation mark":"","Inverted question mark":"","Kip sign":"","Latin capital letter a with breve":"","Latin capital letter a with macron":"","Latin capital letter a with ogonek":"","Latin capital letter c with acute":"","Latin capital letter c with caron":"","Latin capital letter c with circumflex":"","Latin capital letter c with dot above":"","Latin capital letter d with caron":"","Latin capital letter d with stroke":"","Latin capital letter e with breve":"","Latin capital letter e with caron":"","Latin capital letter e with dot above":"","Latin capital letter e with macron":"","Latin capital letter e with ogonek":"","Latin capital letter eng":"","Latin capital letter g with breve":"","Latin capital letter g with cedilla":"","Latin capital letter g with circumflex":"","Latin capital letter g with dot above":"","Latin capital letter h with circumflex":"","Latin capital letter h with stroke":"","Latin capital letter i with breve":"","Latin capital letter i with dot above":"","Latin capital letter i with macron":"","Latin capital letter i with ogonek":"","Latin capital letter i with tilde":"","Latin capital letter j with circumflex":"","Latin capital letter k with cedilla":"","Latin capital letter l with acute":"","Latin capital letter l with caron":"","Latin capital letter l with cedilla":"","Latin capital letter l with middle dot":"","Latin capital letter l with stroke":"","Latin capital letter n with acute":"","Latin capital letter n with caron":"","Latin capital letter n with cedilla":"","Latin capital letter o with breve":"","Latin capital letter o with double acute":"","Latin capital letter o with macron":"","Latin capital letter r with acute":"","Latin capital letter r with caron":"","Latin capital letter r with cedilla":"","Latin capital letter s with acute":"","Latin capital letter s with caron":"","Latin capital letter s with cedilla":"","Latin capital letter s with circumflex":"","Latin capital letter t with caron":"","Latin capital letter t with cedilla":"","Latin capital letter t with stroke":"","Latin capital letter u with breve":"","Latin capital letter u with double acute":"","Latin capital letter u with macron":"","Latin capital letter u with ogonek":"","Latin capital letter u with ring above":"","Latin capital letter u with tilde":"","Latin capital letter w with circumflex":"","Latin capital letter y with circumflex":"","Latin capital letter y with diaeresis":"","Latin capital letter z with acute":"","Latin capital letter z with caron":"","Latin capital letter z with dot above":"","Latin capital ligature ij":"","Latin capital ligature oe":"","Latin small letter a with breve":"","Latin small letter a with macron":"","Latin small letter a with ogonek":"","Latin small letter c with acute":"","Latin small letter c with caron":"","Latin small letter c with circumflex":"","Latin small letter c with dot above":"","Latin small letter d with caron":"","Latin small letter d with stroke":"","Latin small letter dotless i":"","Latin small letter e with breve":"","Latin small letter e with caron":"","Latin small letter e with dot above":"","Latin small letter e with macron":"","Latin small letter e with ogonek":"","Latin small letter eng":"","Latin small letter f with hook":"","Latin small letter g with breve":"","Latin small letter g with cedilla":"","Latin small letter g with circumflex":"","Latin small letter g with dot above":"","Latin small letter h with circumflex":"","Latin small letter h with stroke":"","Latin small letter i with breve":"","Latin small letter i with macron":"","Latin small letter i with ogonek":"","Latin small letter i with tilde":"","Latin small letter j with circumflex":"","Latin small letter k with cedilla":"","Latin small letter kra":"","Latin small letter l with acute":"","Latin small letter l with caron":"","Latin small letter l with cedilla":"","Latin small letter l with middle dot":"","Latin small letter l with stroke":"","Latin small letter long s":"","Latin small letter n preceded by apostrophe":"","Latin small letter n with acute":"","Latin small letter n with caron":"","Latin small letter n with cedilla":"","Latin small letter o with breve":"","Latin small letter o with double acute":"","Latin small letter o with macron":"","Latin small letter r with acute":"","Latin small letter r with caron":"","Latin small letter r with cedilla":"","Latin small letter s with acute":"","Latin small letter s with caron":"","Latin small letter s with cedilla":"","Latin small letter s with circumflex":"","Latin small letter t with caron":"","Latin small letter t with cedilla":"","Latin small letter t with stroke":"","Latin small letter u with breve":"","Latin small letter u with double acute":"","Latin small letter u with macron":"","Latin small letter u with ogonek":"","Latin small letter u with ring above":"","Latin small letter u with tilde":"","Latin small letter w with circumflex":"","Latin small letter y with circumflex":"","Latin small letter z with acute":"","Latin small letter z with caron":"","Latin small letter z with dot above":"","Latin small ligature ij":"","Latin small ligature oe":"","Left double quotation mark":"","Left single quotation mark":"","Left-pointing double angle quotation mark":"","leftwards arrow to bar":"","leftwards dashed arrow":"","leftwards double arrow":"sola ikiqat ox","Less-than or equal to":"","Less-than sign":"","Lira sign":"","Livre tournois sign":"","Logical and":"","Logical or":"",Macron:"","Manat sign":"","Mill sign":"","Minus sign":"","Multiplication sign":"","N-ary product":"","N-ary summation":"",Nabla:"","Naira sign":"","New sheqel sign":"","Nordic mark sign":"","Not an element of":"","Not equal to":"","Not sign":"","on with exclamation mark with left right arrow above":"",Overline:"","Paragraph sign":"","Partial differential":"","Per mille sign":"","Per ten thousand sign":"","Peseta sign":"","Peso sign":"","Plus-minus sign":"","Pound sign":"","Proportional to":"","Question exclamation mark":"","Registered sign":"","Reversed paragraph sign":"","Right double quotation mark":"","Right single quotation mark":"","Right-pointing double angle quotation mark":"","rightwards arrow to bar":"","rightwards dashed arrow":"","rightwards double arrow":"sağa ikiqat ox","Ruble sign":"","Rupee sign":"","Section sign":"","Single left-pointing angle quotation mark":"","Single low-9 quotation mark":"","Single right-pointing angle quotation mark":"","soon with rightwards arrow above":"","Special characters":"Xüsusi simvollar","Spesmilo sign":"","Square root":"","Tenge sign":"","There exists":"","Tilde operator":"","top with upwards arrow above":"","Trade mark sign":"","Tugrik sign":"","Turkish lira sign":"","Two dot leader":"",Union:"","up down arrow with base":"","upwards arrow to bar":"","upwards dashed arrow":"","upwards double arrow":"yuxarı ikiqat ox","Vulgar fraction one half":"","Vulgar fraction one quarter":"","Vulgar fraction three quarters":"","Won sign":"","Yen sign":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(t){const a=t.az=t.az||{};a.dictionary=Object.assign(a.dictionary||{},{"Almost equal to":"",Angle:"","Approximately equal to":"","Asterisk operator":"","Austral sign":"","back with leftwards arrow above":"","Bitcoin sign":"","Cedi sign":"","Cent sign":"","Character categories":"","Colon sign":"","Contains as member":"","Copyright sign":"","Cruzeiro sign":"","Currency sign":"","Degree sign":"","Division sign":"","Dollar sign":"","Dong sign":"","Double dagger":"","Double exclamation mark":"","Double low-9 quotation mark":"","Double question mark":"","downwards arrow to bar":"","downwards dashed arrow":"","downwards double arrow":"aşağı ikiqat ox","downwards simple arrow":"","Drachma sign":"","Element of":"","Em dash":"","Empty set":"","En dash":"","end with leftwards arrow above":"","Euro sign":"","Euro-currency sign":"","Exclamation question mark":"","For all":"","Fraction slash":"","French franc sign":"","German penny sign":"","Greater-than or equal to":"","Greater-than sign":"","Guarani sign":"","Horizontal ellipsis":"","Hryvnia sign":"","Identical to":"","Indian rupee sign":"",Infinity:"",Integral:"",Intersection:"","Inverted exclamation mark":"","Inverted question mark":"","Kip sign":"","Latin capital letter a with breve":"","Latin capital letter a with macron":"","Latin capital letter a with ogonek":"","Latin capital letter c with acute":"","Latin capital letter c with caron":"","Latin capital letter c with circumflex":"","Latin capital letter c with dot above":"","Latin capital letter d with caron":"","Latin capital letter d with stroke":"","Latin capital letter e with breve":"","Latin capital letter e with caron":"","Latin capital letter e with dot above":"","Latin capital letter e with macron":"","Latin capital letter e with ogonek":"","Latin capital letter eng":"","Latin capital letter g with breve":"","Latin capital letter g with cedilla":"","Latin capital letter g with circumflex":"","Latin capital letter g with dot above":"","Latin capital letter h with circumflex":"","Latin capital letter h with stroke":"","Latin capital letter i with breve":"","Latin capital letter i with dot above":"","Latin capital letter i with macron":"","Latin capital letter i with ogonek":"","Latin capital letter i with tilde":"","Latin capital letter j with circumflex":"","Latin capital letter k with cedilla":"","Latin capital letter l with acute":"","Latin capital letter l with caron":"","Latin capital letter l with cedilla":"","Latin capital letter l with middle dot":"","Latin capital letter l with stroke":"","Latin capital letter n with acute":"","Latin capital letter n with caron":"","Latin capital letter n with cedilla":"","Latin capital letter o with breve":"","Latin capital letter o with double acute":"","Latin capital letter o with macron":"","Latin capital letter r with acute":"","Latin capital letter r with caron":"","Latin capital letter r with cedilla":"","Latin capital letter s with acute":"","Latin capital letter s with caron":"","Latin capital letter s with cedilla":"","Latin capital letter s with circumflex":"","Latin capital letter t with caron":"","Latin capital letter t with cedilla":"","Latin capital letter t with stroke":"","Latin capital letter u with breve":"","Latin capital letter u with double acute":"","Latin capital letter u with macron":"","Latin capital letter u with ogonek":"","Latin capital letter u with ring above":"","Latin capital letter u with tilde":"","Latin capital letter w with circumflex":"","Latin capital letter y with circumflex":"","Latin capital letter y with diaeresis":"","Latin capital letter z with acute":"","Latin capital letter z with caron":"","Latin capital letter z with dot above":"","Latin capital ligature ij":"","Latin capital ligature oe":"","Latin small letter a with breve":"","Latin small letter a with macron":"","Latin small letter a with ogonek":"","Latin small letter c with acute":"","Latin small letter c with caron":"","Latin small letter c with circumflex":"","Latin small letter c with dot above":"","Latin small letter d with caron":"","Latin small letter d with stroke":"","Latin small letter dotless i":"","Latin small letter e with breve":"","Latin small letter e with caron":"","Latin small letter e with dot above":"","Latin small letter e with macron":"","Latin small letter e with ogonek":"","Latin small letter eng":"","Latin small letter f with hook":"","Latin small letter g with breve":"","Latin small letter g with cedilla":"","Latin small letter g with circumflex":"","Latin small letter g with dot above":"","Latin small letter h with circumflex":"","Latin small letter h with stroke":"","Latin small letter i with breve":"","Latin small letter i with macron":"","Latin small letter i with ogonek":"","Latin small letter i with tilde":"","Latin small letter j with circumflex":"","Latin small letter k with cedilla":"","Latin small letter kra":"","Latin small letter l with acute":"","Latin small letter l with caron":"","Latin small letter l with cedilla":"","Latin small letter l with middle dot":"","Latin small letter l with stroke":"","Latin small letter long s":"","Latin small letter n preceded by apostrophe":"","Latin small letter n with acute":"","Latin small letter n with caron":"","Latin small letter n with cedilla":"","Latin small letter o with breve":"","Latin small letter o with double acute":"","Latin small letter o with macron":"","Latin small letter r with acute":"","Latin small letter r with caron":"","Latin small letter r with cedilla":"","Latin small letter s with acute":"","Latin small letter s with caron":"","Latin small letter s with cedilla":"","Latin small letter s with circumflex":"","Latin small letter t with caron":"","Latin small letter t with cedilla":"","Latin small letter t with stroke":"","Latin small letter u with breve":"","Latin small letter u with double acute":"","Latin small letter u with macron":"","Latin small letter u with ogonek":"","Latin small letter u with ring above":"","Latin small letter u with tilde":"","Latin small letter w with circumflex":"","Latin small letter y with circumflex":"","Latin small letter z with acute":"","Latin small letter z with caron":"","Latin small letter z with dot above":"","Latin small ligature ij":"","Latin small ligature oe":"","Left double quotation mark":"","Left single quotation mark":"","Left-pointing double angle quotation mark":"","leftwards arrow to bar":"","leftwards dashed arrow":"","leftwards double arrow":"sola ikiqat ox","leftwards simple arrow":"","Less-than or equal to":"","Less-than sign":"","Lira sign":"","Livre tournois sign":"","Logical and":"","Logical or":"",Macron:"","Manat sign":"","Mill sign":"","Minus sign":"","Multiplication sign":"","N-ary product":"","N-ary summation":"",Nabla:"","Naira sign":"","New sheqel sign":"","Nordic mark sign":"","Not an element of":"","Not equal to":"","Not sign":"","on with exclamation mark with left right arrow above":"",Overline:"","Paragraph sign":"","Partial differential":"","Per mille sign":"","Per ten thousand sign":"","Peseta sign":"","Peso sign":"","Plus-minus sign":"","Pound sign":"","Proportional to":"","Question exclamation mark":"","Registered sign":"","Reversed paragraph sign":"","Right double quotation mark":"","Right single quotation mark":"","Right-pointing double angle quotation mark":"","rightwards arrow to bar":"","rightwards dashed arrow":"","rightwards double arrow":"sağa ikiqat ox","rightwards simple arrow":"","Ruble sign":"","Rupee sign":"","Section sign":"","Single left-pointing angle quotation mark":"","Single low-9 quotation mark":"","Single right-pointing angle quotation mark":"","soon with rightwards arrow above":"","Special characters":"Xüsusi simvollar","Spesmilo sign":"","Square root":"","Tenge sign":"","There exists":"","Tilde operator":"","top with upwards arrow above":"","Trade mark sign":"","Tugrik sign":"","Turkish lira sign":"","Two dot leader":"",Union:"","up down arrow with base":"","upwards arrow to bar":"","upwards dashed arrow":"","upwards double arrow":"yuxarı ikiqat ox","upwards simple arrow":"","Vulgar fraction one half":"","Vulgar fraction one quarter":"","Vulgar fraction three quarters":"","Won sign":"","Yen sign":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/special-characters/translations/bg.js b/core/assets/vendor/ckeditor5/special-characters/translations/bg.js
index bbeb4c0bc2..d8d569604d 100644
--- a/core/assets/vendor/ckeditor5/special-characters/translations/bg.js
+++ b/core/assets/vendor/ckeditor5/special-characters/translations/bg.js
@@ -1 +1 @@
-!function(t){const a=t.bg=t.bg||{};a.dictionary=Object.assign(a.dictionary||{},{"Almost equal to":"Почти равно на",Angle:"Ъгъл","Approximately equal to":"Приблизително равно на","Asterisk operator":"Оператор звездичка","Austral sign":"Символ на аустрал","back with leftwards arrow above":"назад със стрелка наляво отгоре","Bitcoin sign":"Символ на Биткойн","Cedi sign":"Символ Седи","Cent sign":"Символ на цент","Character categories":"Категории символи","Colon sign":"Символ двоеточие","Contains as member":"Съдържа като член","Copyright sign":"Знак за авторски права","Cruzeiro sign":"Символ Крузейро","Currency sign":"Символ на валута","Degree sign":"Знак за степен","Division sign":"Знак за деление","Dollar sign":"Символ на долар","Dong sign":"Символ на донг","Double dagger":"Двойна кама","Double exclamation mark":"Двоен удивителен знак","Double low-9 quotation mark":"Двойна ниска 9-кавичка","Double question mark":"Двоен въпросителен знак","downwards arrow to bar":"стрелка надолу към лентата","downwards dashed arrow":"пунктирана стрелка надолу","downwards double arrow":"двойна стрелка надолу","Drachma sign":"Символ на драхма","Element of":"Елемент на","Em dash":"Ем тире","Empty set":"Празен комплект","En dash":"Ен тире","end with leftwards arrow above":"завършва със стрелка наляво отгоре","Euro sign":"Символ на евро","Euro-currency sign":"Символ на евровалута","Exclamation question mark":"Знак удивителна въпросителна","For all":"За всички","Fraction slash":"Дробна наклонена черта","French franc sign":"Символ на френски франк","German penny sign":"Символ на немско пени","Greater-than or equal to":"По-голямо или равно на","Greater-than sign":"Знак „по-голямо от“","Guarani sign":"Символ на гуарани","Horizontal ellipsis":"Хоризонтална елипса","Hryvnia sign":"Символ на гривнa","Identical to":"Идентично на","Indian rupee sign":"Символ на индийска рупия",Infinity:"Безкрайност",Integral:"Интеграл",Intersection:"Пресечна точка","Inverted exclamation mark":"Обърнат удивителен знак","Inverted question mark":"Обърнат въпросителен знак","Kip sign":"Символ на кип","Latin capital letter a with breve":"Главна латинска буква „a“ с бреве","Latin capital letter a with macron":"Главна латинска буква „a“ с макрон","Latin capital letter a with ogonek":"Главна латинска буква „a“ с огонек","Latin capital letter c with acute":"Главна латинска буква „c“ с акут","Latin capital letter c with caron":"Главна латинска буква „c“ с карон","Latin capital letter c with circumflex":"Главна латинска буква „c“ с циркумфлекс","Latin capital letter c with dot above":"Главна латинска буква „c“ с точка отгоре","Latin capital letter d with caron":"Главна латинска буква d с карон","Latin capital letter d with stroke":"Главна латинска буква d с черта","Latin capital letter e with breve":"Главна латинска буква „e“ с бреве","Latin capital letter e with caron":"Главна латинска буква „e“ с карон","Latin capital letter e with dot above":"Главна латинска буква „e“ с точка отгоре","Latin capital letter e with macron":"Главна латинска буква „e“ с макрон","Latin capital letter e with ogonek":"Главна латинска буква „e“ с огонек","Latin capital letter eng":"Главна латинска буква eng","Latin capital letter g with breve":"Главна латинска буква „g“ с бреве","Latin capital letter g with cedilla":"Главна латинска буква „g“ със седил","Latin capital letter g with circumflex":"Главна латинска буква „g“ с циркумфлекс","Latin capital letter g with dot above":"Главна латинска буква „g“ с точка отгоре","Latin capital letter h with circumflex":"Главна латинска буква h с циркумфлекс","Latin capital letter h with stroke":"Главна латинска буква h с черта","Latin capital letter i with breve":"Главна латинска буква i с бреве","Latin capital letter i with dot above":"Главна латинска буква i с точка отгоре","Latin capital letter i with macron":"Главна латинска буква i с макрон","Latin capital letter i with ogonek":"Главна латинска буква i с ogonek","Latin capital letter i with tilde":"Главна латинска буква i с тилда","Latin capital letter j with circumflex":"Главна латинска буква j с циркумфлекс","Latin capital letter k with cedilla":"Главна латинска буква k със седил","Latin capital letter l with acute":"Главна латинска буква l с акут","Latin capital letter l with caron":"Главна латинска буква l с карон","Latin capital letter l with cedilla":"Главна латинска буква l със седил","Latin capital letter l with middle dot":"Главна латинска буква l със средна точка","Latin capital letter l with stroke":"Главна латинска буква l с черта","Latin capital letter n with acute":"Главна латинска буква n с акут","Latin capital letter n with caron":"Главна латинска буква n с карон","Latin capital letter n with cedilla":"Главна латинска буква n със седил","Latin capital letter o with breve":"Главна латинска буква „o“ с бреве","Latin capital letter o with double acute":"Главна латинска буква „o“ с двоен акут","Latin capital letter o with macron":"Главна латинска буква „o“ с макрон","Latin capital letter r with acute":"Главна латинска буква r с акут","Latin capital letter r with caron":"Главна латинска буква r с карон","Latin capital letter r with cedilla":"Главна латинска буква r със седил","Latin capital letter s with acute":"Главна латинска буква s с акут","Latin capital letter s with caron":"Главна латинска буква s с карон","Latin capital letter s with cedilla":"Главна латинска буква s със седил","Latin capital letter s with circumflex":"Главна латинска буква s с циркумфлекс","Latin capital letter t with caron":"Главна латинска буква t с карон","Latin capital letter t with cedilla":"Главна латинска буква t със седил","Latin capital letter t with stroke":"Главна латинска буква t с черта","Latin capital letter u with breve":"Главна латинска буква u с бреве","Latin capital letter u with double acute":"Главна латинска буква u с двоен акут","Latin capital letter u with macron":"Главна латинска буква u с макрон","Latin capital letter u with ogonek":"Главна латинска буква u с огонек","Latin capital letter u with ring above":"Главна латинска буква u с пръстен отгоре","Latin capital letter u with tilde":"Главна латинска буква u с тилда","Latin capital letter w with circumflex":"Главна латинска буква w с циркумфлекс","Latin capital letter y with circumflex":"Главна латинска буква y с циркумфлекс","Latin capital letter y with diaeresis":"Главна латинска буква y с диареза","Latin capital letter z with acute":"Главна латинска буква z с акут","Latin capital letter z with caron":"Главна латинска буква z с карон","Latin capital letter z with dot above":"Главна латинска буква z с точка отгоре","Latin capital ligature ij":"Главна латинска лигатура ij","Latin capital ligature oe":"Главна латинска лигатура oe","Latin small letter a with breve":"Малка латинска буква „а“ с бреве","Latin small letter a with macron":"Малка латинска буква „a“ с макрон","Latin small letter a with ogonek":"Малка латинска буква „a“ с огонек","Latin small letter c with acute":"Малка латинска буква „c“ с акут","Latin small letter c with caron":"Mалка латинска буква „c“ с карон","Latin small letter c with circumflex":"Малка латинска буква „c“ с циркумфлекс","Latin small letter c with dot above":"Малка латинска буква „c“ с точка отгоре","Latin small letter d with caron":"Малка латинска буква d с карон","Latin small letter d with stroke":"Малк а латинска буква d с черта","Latin small letter dotless i":"Малка латинска буква без точка i","Latin small letter e with breve":"Малка латинска буква „e“ с бреве","Latin small letter e with caron":"Малка латинска буква „e“ с карон","Latin small letter e with dot above":"Малка латинска буква „e“ с точка отгоре","Latin small letter e with macron":"Малка латинска буква „e“ с макрон","Latin small letter e with ogonek":"Малка латинска буква „e“ с огонек","Latin small letter eng":"Малка латинска буква eng","Latin small letter f with hook":"Малка латинска буква f с кукичка","Latin small letter g with breve":"Малка латинска буква „g“ с бреве","Latin small letter g with cedilla":"Малка латинска буква „g“ със седил","Latin small letter g with circumflex":"Малка латинска буква „g“ с циркумфлекс","Latin small letter g with dot above":"Малка латинска буква „g“ с точка отгоре","Latin small letter h with circumflex":"Малка латинска буква h с циркумфлекс","Latin small letter h with stroke":"Малка латинска буква h с черта","Latin small letter i with breve":"Малка латинска буква i с бреве","Latin small letter i with macron":"Малка латинска буква i с макрон","Latin small letter i with ogonek":"Малка латинска буква i с огонек","Latin small letter i with tilde":"Малка латинска буква i с тилда","Latin small letter j with circumflex":"Малка латинска буква j с циркумфлекс","Latin small letter k with cedilla":"Mалка lатинска буква k със седил","Latin small letter kra":"Mалка латинска буква kra","Latin small letter l with acute":"Mалка латинска буква l с акут","Latin small letter l with caron":"Малка латинска буква l с карон","Latin small letter l with cedilla":"Малка латинска буква l със седил","Latin small letter l with middle dot":"Малка латинска буква l със средна точка","Latin small letter l with stroke":"Малка латинска буква l с черта","Latin small letter long s":"Малка латинска буква дълго s","Latin small letter n preceded by apostrophe":"Малка латинска буква n, предшествана от апостроф","Latin small letter n with acute":"Малка латинска буква n с акут","Latin small letter n with caron":"Малка латинска буква n с карон","Latin small letter n with cedilla":"Малка латинска буква n със седил","Latin small letter o with breve":"Малка латинска буква „o“ с бреве","Latin small letter o with double acute":"Малка латинска буква „o“ с двоен акут","Latin small letter o with macron":"Малка латинска буква „o“ с макрон","Latin small letter r with acute":"Малка латинска буква r с акут","Latin small letter r with caron":"Малка латинска буква r с карон","Latin small letter r with cedilla":"Малка латинска буква r със седил","Latin small letter s with acute":"Малка латинска буква s с акут","Latin small letter s with caron":"Малка латинска буква s с карон","Latin small letter s with cedilla":"Малка латинска буква s със седил","Latin small letter s with circumflex":"Малка латинска буква s с циркумфлекс","Latin small letter t with caron":"Малка латинска буква t с карон","Latin small letter t with cedilla":"Малка латинска буква t със седил","Latin small letter t with stroke":"Малка латинска буква t с черта","Latin small letter u with breve":"Малка латинска буква u с бреве","Latin small letter u with double acute":"Малка латинска буква u с двоен акут","Latin small letter u with macron":"Малка латинска буква u с макрон","Latin small letter u with ogonek":"Малка латинска буква u с огонек","Latin small letter u with ring above":"Малка латинска буква u с пръстен отгоре","Latin small letter u with tilde":"Малка латинска буква u с тилда","Latin small letter w with circumflex":"Малка латинска буква w с циркумфлекс","Latin small letter y with circumflex":"Малка латинска буква y с циркумфлекс","Latin small letter z with acute":"Малка латинска буква z с акут","Latin small letter z with caron":"Малка латинска буква z с карон","Latin small letter z with dot above":"Малка латинска буква z с точка отгоре","Latin small ligature ij":"Mалка латинска лигатура ij","Latin small ligature oe":"Малка латинска лигатура oe","Left double quotation mark":"Лява двойна кавичка","Left single quotation mark":"Лява единична кавичка","Left-pointing double angle quotation mark":"Сочеща наляво двойна ъглова кавичка","leftwards arrow to bar":"стрелка наляво към лентата\n","leftwards dashed arrow":"пунктирана стрелка наляво","leftwards double arrow":"двойна стрелка наляво","Less-than or equal to":"По-малко или равно на","Less-than sign":"Знак „по-малко от“ ","Lira sign":"Символ на лира","Livre tournois sign":"Символ на ливр турноа","Logical and":"Логично и","Logical or":"Логично или",Macron:"Макрон","Manat sign":"Символ на манат","Mill sign":"Символ на мелница","Minus sign":"Знак минус","Multiplication sign":"Знак за умножение","N-ary product":"N-арен продукт","N-ary summation":"N-арно сумиране",Nabla:"Набла","Naira sign":"Символ Найра","New sheqel sign":"Символ на нов шекел","Nordic mark sign":"Символ на скандинавски знак","Not an element of":"Не е елемент от","Not equal to":"Не е равно на","Not sign":"Знак „не“","on with exclamation mark with left right arrow above":"върху с удивителен знак със стрелка наляво надясно над",Overline:"Черта над буква","Paragraph sign":"Знак за параграф","Partial differential":"Частичен диференциал","Per mille sign":"Знак за промили","Per ten thousand sign":"Символ на десет хиляди","Peseta sign":"Символ на песета","Peso sign":"Символ на песо","Plus-minus sign":"Знак плюс-минус","Pound sign":"Символ на лира стерлинг","Proportional to":"Пропорционално на","Question exclamation mark":"Знак въпросителна удивителна","Registered sign":"Регистриран знак","Reversed paragraph sign":"Обърнат знак за параграф","Right double quotation mark":"Дясна двойна кавичка","Right single quotation mark":"Дясна единична кавичка","Right-pointing double angle quotation mark":"Сочеща надясно двойна ъглова кавичка","rightwards arrow to bar":"стрелка надясно към лентата","rightwards dashed arrow":"пунктирана стрелка надясно","rightwards double arrow":"двойна стрелка надясно","Ruble sign":"Символ на рубла","Rupee sign":"Символ на рупия","Section sign":"Знак за раздел","Single left-pointing angle quotation mark":"\nЕдинична сочеща наляво ъглова кавичка","Single low-9 quotation mark":"Единична ниска 9-кавичка","Single right-pointing angle quotation mark":"Единична сочеща надясно ъглова кавичка","soon with rightwards arrow above":"скоро със стрелка надясно отгоре","Special characters":"Специални символи","Spesmilo sign":"Символ на спесмило","Square root":"Корен квадратен","Tenge sign":"Символ на тенге","There exists":"Съществува","Tilde operator":"Оператор тилда","top with upwards arrow above":"отгоре със стрелка нагоре отгоре","Trade mark sign":"Знак за търговска марка","Tugrik sign":"Символ на тугрик","Turkish lira sign":"Символ на турска лира","Two dot leader":"Водач с две точки",Union:"Съюз","up down arrow with base":"стрелка нагоре надолу с основа","upwards arrow to bar":"стрелка нагоре към лентата","upwards dashed arrow":"пунктирана стрелка нагоре","upwards double arrow":"двойна стрелка нагоре","Vulgar fraction one half":"Проста дроб една половина","Vulgar fraction one quarter":"Проста дроб една четвърт","Vulgar fraction three quarters":"Проста дроб три четвърти","Won sign":"Символ на уон","Yen sign":"Символ на йена"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(t){const a=t.bg=t.bg||{};a.dictionary=Object.assign(a.dictionary||{},{"Almost equal to":"Почти равно на",Angle:"Ъгъл","Approximately equal to":"Приблизително равно на","Asterisk operator":"Оператор звездичка","Austral sign":"Символ на аустрал","back with leftwards arrow above":"назад със стрелка наляво отгоре","Bitcoin sign":"Символ на Биткойн","Cedi sign":"Символ Седи","Cent sign":"Символ на цент","Character categories":"Категории символи","Colon sign":"Символ двоеточие","Contains as member":"Съдържа като член","Copyright sign":"Знак за авторски права","Cruzeiro sign":"Символ Крузейро","Currency sign":"Символ на валута","Degree sign":"Знак за степен","Division sign":"Знак за деление","Dollar sign":"Символ на долар","Dong sign":"Символ на донг","Double dagger":"Двойна кама","Double exclamation mark":"Двоен удивителен знак","Double low-9 quotation mark":"Двойна ниска 9-кавичка","Double question mark":"Двоен въпросителен знак","downwards arrow to bar":"стрелка надолу към лентата","downwards dashed arrow":"пунктирана стрелка надолу","downwards double arrow":"двойна стрелка надолу","downwards simple arrow":"обикновена стрелка надолу","Drachma sign":"Символ на драхма","Element of":"Елемент на","Em dash":"Ем тире","Empty set":"Празен комплект","En dash":"Ен тире","end with leftwards arrow above":"завършва със стрелка наляво отгоре","Euro sign":"Символ на евро","Euro-currency sign":"Символ на евровалута","Exclamation question mark":"Знак удивителна въпросителна","For all":"За всички","Fraction slash":"Дробна наклонена черта","French franc sign":"Символ на френски франк","German penny sign":"Символ на немско пени","Greater-than or equal to":"По-голямо или равно на","Greater-than sign":"Знак „по-голямо от“","Guarani sign":"Символ на гуарани","Horizontal ellipsis":"Хоризонтална елипса","Hryvnia sign":"Символ на гривнa","Identical to":"Идентично на","Indian rupee sign":"Символ на индийска рупия",Infinity:"Безкрайност",Integral:"Интеграл",Intersection:"Пресечна точка","Inverted exclamation mark":"Обърнат удивителен знак","Inverted question mark":"Обърнат въпросителен знак","Kip sign":"Символ на кип","Latin capital letter a with breve":"Главна латинска буква „a“ с бреве","Latin capital letter a with macron":"Главна латинска буква „a“ с макрон","Latin capital letter a with ogonek":"Главна латинска буква „a“ с огонек","Latin capital letter c with acute":"Главна латинска буква „c“ с акут","Latin capital letter c with caron":"Главна латинска буква „c“ с карон","Latin capital letter c with circumflex":"Главна латинска буква „c“ с циркумфлекс","Latin capital letter c with dot above":"Главна латинска буква „c“ с точка отгоре","Latin capital letter d with caron":"Главна латинска буква d с карон","Latin capital letter d with stroke":"Главна латинска буква d с черта","Latin capital letter e with breve":"Главна латинска буква „e“ с бреве","Latin capital letter e with caron":"Главна латинска буква „e“ с карон","Latin capital letter e with dot above":"Главна латинска буква „e“ с точка отгоре","Latin capital letter e with macron":"Главна латинска буква „e“ с макрон","Latin capital letter e with ogonek":"Главна латинска буква „e“ с огонек","Latin capital letter eng":"Главна латинска буква eng","Latin capital letter g with breve":"Главна латинска буква „g“ с бреве","Latin capital letter g with cedilla":"Главна латинска буква „g“ със седил","Latin capital letter g with circumflex":"Главна латинска буква „g“ с циркумфлекс","Latin capital letter g with dot above":"Главна латинска буква „g“ с точка отгоре","Latin capital letter h with circumflex":"Главна латинска буква h с циркумфлекс","Latin capital letter h with stroke":"Главна латинска буква h с черта","Latin capital letter i with breve":"Главна латинска буква i с бреве","Latin capital letter i with dot above":"Главна латинска буква i с точка отгоре","Latin capital letter i with macron":"Главна латинска буква i с макрон","Latin capital letter i with ogonek":"Главна латинска буква i с ogonek","Latin capital letter i with tilde":"Главна латинска буква i с тилда","Latin capital letter j with circumflex":"Главна латинска буква j с циркумфлекс","Latin capital letter k with cedilla":"Главна латинска буква k със седил","Latin capital letter l with acute":"Главна латинска буква l с акут","Latin capital letter l with caron":"Главна латинска буква l с карон","Latin capital letter l with cedilla":"Главна латинска буква l със седил","Latin capital letter l with middle dot":"Главна латинска буква l със средна точка","Latin capital letter l with stroke":"Главна латинска буква l с черта","Latin capital letter n with acute":"Главна латинска буква n с акут","Latin capital letter n with caron":"Главна латинска буква n с карон","Latin capital letter n with cedilla":"Главна латинска буква n със седил","Latin capital letter o with breve":"Главна латинска буква „o“ с бреве","Latin capital letter o with double acute":"Главна латинска буква „o“ с двоен акут","Latin capital letter o with macron":"Главна латинска буква „o“ с макрон","Latin capital letter r with acute":"Главна латинска буква r с акут","Latin capital letter r with caron":"Главна латинска буква r с карон","Latin capital letter r with cedilla":"Главна латинска буква r със седил","Latin capital letter s with acute":"Главна латинска буква s с акут","Latin capital letter s with caron":"Главна латинска буква s с карон","Latin capital letter s with cedilla":"Главна латинска буква s със седил","Latin capital letter s with circumflex":"Главна латинска буква s с циркумфлекс","Latin capital letter t with caron":"Главна латинска буква t с карон","Latin capital letter t with cedilla":"Главна латинска буква t със седил","Latin capital letter t with stroke":"Главна латинска буква t с черта","Latin capital letter u with breve":"Главна латинска буква u с бреве","Latin capital letter u with double acute":"Главна латинска буква u с двоен акут","Latin capital letter u with macron":"Главна латинска буква u с макрон","Latin capital letter u with ogonek":"Главна латинска буква u с огонек","Latin capital letter u with ring above":"Главна латинска буква u с пръстен отгоре","Latin capital letter u with tilde":"Главна латинска буква u с тилда","Latin capital letter w with circumflex":"Главна латинска буква w с циркумфлекс","Latin capital letter y with circumflex":"Главна латинска буква y с циркумфлекс","Latin capital letter y with diaeresis":"Главна латинска буква y с диареза","Latin capital letter z with acute":"Главна латинска буква z с акут","Latin capital letter z with caron":"Главна латинска буква z с карон","Latin capital letter z with dot above":"Главна латинска буква z с точка отгоре","Latin capital ligature ij":"Главна латинска лигатура ij","Latin capital ligature oe":"Главна латинска лигатура oe","Latin small letter a with breve":"Малка латинска буква „а“ с бреве","Latin small letter a with macron":"Малка латинска буква „a“ с макрон","Latin small letter a with ogonek":"Малка латинска буква „a“ с огонек","Latin small letter c with acute":"Малка латинска буква „c“ с акут","Latin small letter c with caron":"Mалка латинска буква „c“ с карон","Latin small letter c with circumflex":"Малка латинска буква „c“ с циркумфлекс","Latin small letter c with dot above":"Малка латинска буква „c“ с точка отгоре","Latin small letter d with caron":"Малка латинска буква d с карон","Latin small letter d with stroke":"Малк а латинска буква d с черта","Latin small letter dotless i":"Малка латинска буква без точка i","Latin small letter e with breve":"Малка латинска буква „e“ с бреве","Latin small letter e with caron":"Малка латинска буква „e“ с карон","Latin small letter e with dot above":"Малка латинска буква „e“ с точка отгоре","Latin small letter e with macron":"Малка латинска буква „e“ с макрон","Latin small letter e with ogonek":"Малка латинска буква „e“ с огонек","Latin small letter eng":"Малка латинска буква eng","Latin small letter f with hook":"Малка латинска буква f с кукичка","Latin small letter g with breve":"Малка латинска буква „g“ с бреве","Latin small letter g with cedilla":"Малка латинска буква „g“ със седил","Latin small letter g with circumflex":"Малка латинска буква „g“ с циркумфлекс","Latin small letter g with dot above":"Малка латинска буква „g“ с точка отгоре","Latin small letter h with circumflex":"Малка латинска буква h с циркумфлекс","Latin small letter h with stroke":"Малка латинска буква h с черта","Latin small letter i with breve":"Малка латинска буква i с бреве","Latin small letter i with macron":"Малка латинска буква i с макрон","Latin small letter i with ogonek":"Малка латинска буква i с огонек","Latin small letter i with tilde":"Малка латинска буква i с тилда","Latin small letter j with circumflex":"Малка латинска буква j с циркумфлекс","Latin small letter k with cedilla":"Mалка lатинска буква k със седил","Latin small letter kra":"Mалка латинска буква kra","Latin small letter l with acute":"Mалка латинска буква l с акут","Latin small letter l with caron":"Малка латинска буква l с карон","Latin small letter l with cedilla":"Малка латинска буква l със седил","Latin small letter l with middle dot":"Малка латинска буква l със средна точка","Latin small letter l with stroke":"Малка латинска буква l с черта","Latin small letter long s":"Малка латинска буква дълго s","Latin small letter n preceded by apostrophe":"Малка латинска буква n, предшествана от апостроф","Latin small letter n with acute":"Малка латинска буква n с акут","Latin small letter n with caron":"Малка латинска буква n с карон","Latin small letter n with cedilla":"Малка латинска буква n със седил","Latin small letter o with breve":"Малка латинска буква „o“ с бреве","Latin small letter o with double acute":"Малка латинска буква „o“ с двоен акут","Latin small letter o with macron":"Малка латинска буква „o“ с макрон","Latin small letter r with acute":"Малка латинска буква r с акут","Latin small letter r with caron":"Малка латинска буква r с карон","Latin small letter r with cedilla":"Малка латинска буква r със седил","Latin small letter s with acute":"Малка латинска буква s с акут","Latin small letter s with caron":"Малка латинска буква s с карон","Latin small letter s with cedilla":"Малка латинска буква s със седил","Latin small letter s with circumflex":"Малка латинска буква s с циркумфлекс","Latin small letter t with caron":"Малка латинска буква t с карон","Latin small letter t with cedilla":"Малка латинска буква t със седил","Latin small letter t with stroke":"Малка латинска буква t с черта","Latin small letter u with breve":"Малка латинска буква u с бреве","Latin small letter u with double acute":"Малка латинска буква u с двоен акут","Latin small letter u with macron":"Малка латинска буква u с макрон","Latin small letter u with ogonek":"Малка латинска буква u с огонек","Latin small letter u with ring above":"Малка латинска буква u с пръстен отгоре","Latin small letter u with tilde":"Малка латинска буква u с тилда","Latin small letter w with circumflex":"Малка латинска буква w с циркумфлекс","Latin small letter y with circumflex":"Малка латинска буква y с циркумфлекс","Latin small letter z with acute":"Малка латинска буква z с акут","Latin small letter z with caron":"Малка латинска буква z с карон","Latin small letter z with dot above":"Малка латинска буква z с точка отгоре","Latin small ligature ij":"Mалка латинска лигатура ij","Latin small ligature oe":"Малка латинска лигатура oe","Left double quotation mark":"Лява двойна кавичка","Left single quotation mark":"Лява единична кавичка","Left-pointing double angle quotation mark":"Сочеща наляво двойна ъглова кавичка","leftwards arrow to bar":"стрелка наляво към лентата\n","leftwards dashed arrow":"пунктирана стрелка наляво","leftwards double arrow":"двойна стрелка наляво","leftwards simple arrow":"обикновена стрелка наляво","Less-than or equal to":"По-малко или равно на","Less-than sign":"Знак „по-малко от“ ","Lira sign":"Символ на лира","Livre tournois sign":"Символ на ливр турноа","Logical and":"Логично и","Logical or":"Логично или",Macron:"Макрон","Manat sign":"Символ на манат","Mill sign":"Символ на мелница","Minus sign":"Знак минус","Multiplication sign":"Знак за умножение","N-ary product":"N-арен продукт","N-ary summation":"N-арно сумиране",Nabla:"Набла","Naira sign":"Символ Найра","New sheqel sign":"Символ на нов шекел","Nordic mark sign":"Символ на скандинавски знак","Not an element of":"Не е елемент от","Not equal to":"Не е равно на","Not sign":"Знак „не“","on with exclamation mark with left right arrow above":"върху с удивителен знак със стрелка наляво надясно над",Overline:"Черта над буква","Paragraph sign":"Знак за параграф","Partial differential":"Частичен диференциал","Per mille sign":"Знак за промили","Per ten thousand sign":"Символ на десет хиляди","Peseta sign":"Символ на песета","Peso sign":"Символ на песо","Plus-minus sign":"Знак плюс-минус","Pound sign":"Символ на лира стерлинг","Proportional to":"Пропорционално на","Question exclamation mark":"Знак въпросителна удивителна","Registered sign":"Регистриран знак","Reversed paragraph sign":"Обърнат знак за параграф","Right double quotation mark":"Дясна двойна кавичка","Right single quotation mark":"Дясна единична кавичка","Right-pointing double angle quotation mark":"Сочеща надясно двойна ъглова кавичка","rightwards arrow to bar":"стрелка надясно към лентата","rightwards dashed arrow":"пунктирана стрелка надясно","rightwards double arrow":"двойна стрелка надясно","rightwards simple arrow":"обикновена стрелка надясно","Ruble sign":"Символ на рубла","Rupee sign":"Символ на рупия","Section sign":"Знак за раздел","Single left-pointing angle quotation mark":"\nЕдинична сочеща наляво ъглова кавичка","Single low-9 quotation mark":"Единична ниска 9-кавичка","Single right-pointing angle quotation mark":"Единична сочеща надясно ъглова кавичка","soon with rightwards arrow above":"скоро със стрелка надясно отгоре","Special characters":"Специални символи","Spesmilo sign":"Символ на спесмило","Square root":"Корен квадратен","Tenge sign":"Символ на тенге","There exists":"Съществува","Tilde operator":"Оператор тилда","top with upwards arrow above":"отгоре със стрелка нагоре отгоре","Trade mark sign":"Знак за търговска марка","Tugrik sign":"Символ на тугрик","Turkish lira sign":"Символ на турска лира","Two dot leader":"Водач с две точки",Union:"Съюз","up down arrow with base":"стрелка нагоре надолу с основа","upwards arrow to bar":"стрелка нагоре към лентата","upwards dashed arrow":"пунктирана стрелка нагоре","upwards double arrow":"двойна стрелка нагоре","upwards simple arrow":"обикновена стрелка нагоре","Vulgar fraction one half":"Проста дроб една половина","Vulgar fraction one quarter":"Проста дроб една четвърт","Vulgar fraction three quarters":"Проста дроб три четвърти","Won sign":"Символ на уон","Yen sign":"Символ на йена"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/special-characters/translations/bn.js b/core/assets/vendor/ckeditor5/special-characters/translations/bn.js
index 90fd5df0a8..e6a94ea775 100644
--- a/core/assets/vendor/ckeditor5/special-characters/translations/bn.js
+++ b/core/assets/vendor/ckeditor5/special-characters/translations/bn.js
@@ -1 +1 @@
-!function(t){const a=t.bn=t.bn||{};a.dictionary=Object.assign(a.dictionary||{},{"Almost equal to":"প্রায় সমান",Angle:"কোণ","Approximately equal to":"প্রায় সমান","Asterisk operator":"অস্ট্রিক অপারেটর","Austral sign":"অস্ট্রাল চিহ্ন","back with leftwards arrow above":"ব্যাক এর উপরে বামমুখী তীর","Bitcoin sign":"বিটকয়েনের চিহ্ন","Cedi sign":"সেডি চিহ্ন","Cent sign":"সেন্ট চিহ্ন","Character categories":"অক্ষরের শ্রেণীবিভাগসমূহ","Colon sign":"কোলন চিহ্ন","Contains as member":"সদস্য হিসেবে রয়েছে","Copyright sign":"কপিরাইট চিহ্ন","Cruzeiro sign":"ত্রুুজেইরো চিহ্ন","Currency sign":"মুদ্রার চিহ্ন","Degree sign":"ডিগ্রি চিহ্ন","Division sign":"ভাগ চিহ্ন","Dollar sign":"ডলারের চিহ্ন","Dong sign":"ডং চিহ্ন","Double dagger":"ডাবল ড্যাগার","Double exclamation mark":"দ্বৈত বিস্ময়বোধক চিহ্ন","Double low-9 quotation mark":"দ্বৈত লো-9 উদ্ধৃতি চিহ্ন","Double question mark":"দ্বৈত প্রশ্ন চিহ্ন","downwards arrow to bar":"নিম্নমুখী তীরের বার","downwards dashed arrow":"নিম্নমুখী ড্যাশড তীর","downwards double arrow":"নিম্নমুখী দ্বৈত তীর","Drachma sign":"ড্রাকমা চিহ্ন","Element of":"এর উপাদান","Em dash":"Em ড্যাশ","Empty set":"ফাঁকা সেট","En dash":"En ড্যাশ","end with leftwards arrow above":"এন্ড এর উপরে বামমুখী তীর","Euro sign":"ইউরো চিহ্ন","Euro-currency sign":"ইউরো-মুদ্রার চিহ্ন","Exclamation question mark":"বিস্ময়বোধক প্রশ্ন চিহ্ন","For all":"সবার জন্য","Fraction slash":"ভগ্নাংশ স্ল্যাশ","French franc sign":"ফরাসি ফ্রাঙ্ক চিহ্ন","German penny sign":"জার্মান পেনি চিহ্ন","Greater-than or equal to":"এর চেয়ে বেশি বা সমান চিহ্ন","Greater-than sign":"এর চেয়ে বেশি চিহ্ন","Guarani sign":"গুয়ারানি চিহ্ন","Horizontal ellipsis":"অনুভূমিক উপবৃত্তাকার","Hryvnia sign":"হিরভনিয়া চিহ্ন","Identical to":"এর অনুরূপ","Indian rupee sign":"ভারতীয় রুপির চিহ্ন",Infinity:"অসীম",Integral:"ইন্টিগ্রাল",Intersection:"ছেদ","Inverted exclamation mark":"ইনভার্টেড বিস্ময়বোধক চিহ্ন","Inverted question mark":"ইনভার্টেড প্রশ্ন চিহ্ন","Kip sign":"কিপ চিহ্ন","Latin capital letter a with breve":"ব্রেভ সহ ল্যাটিন বড় হাতের অক্ষর a","Latin capital letter a with macron":"ম্যাক্রোন সহ ল্যাটিন বড় হাতের অক্ষর a","Latin capital letter a with ogonek":"ওগোনেক সহ ল্যাটিন বড় হাতের অক্ষর a","Latin capital letter c with acute":"অ্যাকিউট সহ ল্যাটিন বড় হাতের অক্ষর c","Latin capital letter c with caron":"ক্যারন সহ ল্যাটিন বড় হাতের অক্ষর c","Latin capital letter c with circumflex":"সারকামফ্লেক্স সহ ল্যাটিন বড় হাতের অক্ষর c","Latin capital letter c with dot above":"উপরে বিন্দু সহ ল্যাটিন বড় হাতের অক্ষর c","Latin capital letter d with caron":"ক্যারন সহ ল্যাটিন বড় হাতের অক্ষর d","Latin capital letter d with stroke":"স্ট্রোক সহ ল্যাটিন বড় হাতের অক্ষর d","Latin capital letter e with breve":"ব্রেভ সহ ল্যাটিন বড় হাতের অক্ষর e","Latin capital letter e with caron":"ক্যারন সহ ল্যাটিন বড় হাতের অক্ষর e","Latin capital letter e with dot above":"উপরে বিন্দু সহ ল্যাটিন বড় হাতের অক্ষর e","Latin capital letter e with macron":"ম্যাক্রোন সহ ল্যাটিন বড় হাতের অক্ষর e","Latin capital letter e with ogonek":"ওগোনেক সহ ল্যাটিন বড় হাতের অক্ষর e","Latin capital letter eng":"ল্যাটিন বড় হাতের অক্ষর eng","Latin capital letter g with breve":"ব্রেভ সহ ল্যাটিন বড় হাতের অক্ষর g","Latin capital letter g with cedilla":"সেডিলা সহ ল্যাটিন বড় হাতের অক্ষর g","Latin capital letter g with circumflex":"সার্কামফ্লেক্স সহ ল্যাটিন বড় হাতের অক্ষর g","Latin capital letter g with dot above":"উপরে বিন্দু সহ ল্যাটিন বড় হাতের অক্ষর g","Latin capital letter h with circumflex":"সার্কামফ্লেক্স সহ ল্যাটিন বড় হাতের অক্ষর h","Latin capital letter h with stroke":"স্ট্রোক সহ ল্যাটিন বড় হাতের অক্ষর h","Latin capital letter i with breve":"ব্রেভ সহ ল্যাটিন বড় হাতের অক্ষর i","Latin capital letter i with dot above":"উপরে বিন্দু সহ ল্যাটিন বড় হাতের অক্ষর i","Latin capital letter i with macron":"ম্যাক্রোন সহ ল্যাটিন বড় হাতের অক্ষর i","Latin capital letter i with ogonek":"ওগোনেক সহ ল্যাটিন বড় হাতের অক্ষর i","Latin capital letter i with tilde":"টিল্ড সহ ল্যাটিন বড় হাতের অক্ষর i","Latin capital letter j with circumflex":"সার্কামফ্লেক্স সহ ল্যাটিন বড় হাতের অক্ষর j","Latin capital letter k with cedilla":"সেডিলা সহ ল্যাটিন বড় হাতের অক্ষর k","Latin capital letter l with acute":"অ্যাকিউট সহ ল্যাটিন বড় হাতের অক্ষর l","Latin capital letter l with caron":"ক্যারন সহ ল্যাটিন বড় হাতের অক্ষর l","Latin capital letter l with cedilla":"সেডিলা সহ ল্যাটিন বড় হাতের অক্ষর l","Latin capital letter l with middle dot":"মধ্যবিন্দু সহ ল্যাটিন বড় হাতের অক্ষর l","Latin capital letter l with stroke":"স্ট্রোক সহ ল্যাটিন বড় হাতের অক্ষর l","Latin capital letter n with acute":"অ্যাকিউট সহ ল্যাটিন বড় হাতের অক্ষর n","Latin capital letter n with caron":"ক্যারন সহ ল্যাটিন বড় হাতের অক্ষর n","Latin capital letter n with cedilla":"সেডিলা সহ ল্যাটিন বড় হাতের অক্ষর n","Latin capital letter o with breve":"ব্রেভ সহ ল্যাটিন বড় হাতের অক্ষর o","Latin capital letter o with double acute":"দ্বৈত অ্যাকিউট সহ ল্যাটিন বড় হাতের অক্ষর o","Latin capital letter o with macron":"ম্যাক্রোন সহ ল্যাটিন বড় হাতের অক্ষর o","Latin capital letter r with acute":"অ্যাকিউট সহ ল্যাটিন বড় হাতের অক্ষর r","Latin capital letter r with caron":"ক্যারন সহ ল্যাটিন বড় হাতের অক্ষর r","Latin capital letter r with cedilla":"সেডিলা সহ ল্যাটিন বড় হাতের অক্ষর r","Latin capital letter s with acute":"অ্যাকিউট সহ ল্যাটিন বড় হাতের অক্ষর s","Latin capital letter s with caron":"ক্যারন সহ ল্যাটিন বড় হাতের অক্ষর s","Latin capital letter s with cedilla":"সেডিলা সহ ল্যাটিন বড় হাতের অক্ষর s","Latin capital letter s with circumflex":"সার্কামফ্লেক্স সহ ল্যাটিন বড় হাতের অক্ষর s","Latin capital letter t with caron":"ক্যারন সহ ল্যাটিন বড় হাতের অক্ষর t","Latin capital letter t with cedilla":"সেডিলা সহ ল্যাটিন বড় হাতের অক্ষর t","Latin capital letter t with stroke":"স্ট্রোক সহ ল্যাটিন বড় হাতের অক্ষর t","Latin capital letter u with breve":"ব্রেভ সহ ল্যাটিন বড় হাতের অক্ষর u","Latin capital letter u with double acute":"দ্বৈত অ্যাকিউট সহ ল্যাটিন বড় হাতের অক্ষর u","Latin capital letter u with macron":"ম্যাক্রোন সহ ল্যাটিন বড় হাতের অক্ষর u","Latin capital letter u with ogonek":"ওগোনেক সহ ল্যাটিন বড় হাতের অক্ষর u","Latin capital letter u with ring above":"উপরে রিং সহ ল্যাটিন বড় হাতের অক্ষর u","Latin capital letter u with tilde":"টিল্ড সহ ল্যাটিন বড় হাতের অক্ষর u","Latin capital letter w with circumflex":"সার্কামফ্লেক্স সহ ল্যাটিন বড় হাতের অক্ষর w","Latin capital letter y with circumflex":"সার্কামফ্লেক্স সহ ল্যাটিন বড় হাতের অক্ষর y","Latin capital letter y with diaeresis":"ডায়েরেসিস সহ ল্যাটিন বড় হাতের অক্ষর y","Latin capital letter z with acute":"অ্যাকিউট সহ ল্যাটিন বড় হাতের অক্ষর z","Latin capital letter z with caron":"ক্যারন সহ ল্যাটিন বড় হাতের অক্ষর z","Latin capital letter z with dot above":"উপরে বিন্দু সহ ল্যাটিন বড় হাতের অক্ষর z","Latin capital ligature ij":"ল্যাটিন বড় হাতের লিগেচার ij","Latin capital ligature oe":"ল্যাটিন বড় হাতের লিগ্যাচার oe","Latin small letter a with breve":"ব্রেভ সহ ল্যাটিন ছোট হাতের অক্ষর a","Latin small letter a with macron":"ম্যাক্রোন সহ ল্যাটিন ছোট হাতের অক্ষর a","Latin small letter a with ogonek":"ওগোনেক সহ ল্যাটিন ছোট হাতের অক্ষর a","Latin small letter c with acute":"অ্যাকিউট সহ ল্যাটিন ছোট হাতের অক্ষর c","Latin small letter c with caron":"ক্যারন সহ ল্যাটিন ছোট হাতের অক্ষর c","Latin small letter c with circumflex":"সারকামফ্লেক্স সহ ল্যাটিন ছোট হাতের অক্ষর c","Latin small letter c with dot above":"উপরে বিন্দু সহ ল্যাটিন ছোট হাতের অক্ষর c","Latin small letter d with caron":"ক্যারন সহ ল্যাটিন ছোট হাতের অক্ষর d","Latin small letter d with stroke":"স্ট্রোক সহ ল্যাটিন ছোট হাতের অক্ষর d","Latin small letter dotless i":"ল্যাটিন ছোট হাতের অক্ষর বিন্দুবিহীন i","Latin small letter e with breve":"ব্রেভ সহ ল্যাটিন ছোট হাতের অক্ষর e","Latin small letter e with caron":"ক্যারন সহ ল্যাটিন ছোট হাতের অক্ষর e","Latin small letter e with dot above":"উপরে বিন্দু সহ ল্যাটিন ছোট হাতের অক্ষর e","Latin small letter e with macron":"ম্যাক্রোন সহ ল্যাটিন ছোট হাতের অক্ষর e","Latin small letter e with ogonek":"ওগোনেক সহ ল্যাটিন ছোট হাতের অক্ষর e","Latin small letter eng":"ল্যাটিন ছোট হাতের অক্ষর eng","Latin small letter f with hook":"হুক সহ ল্যাটিন ছোট হাতের অক্ষর f","Latin small letter g with breve":"ব্রেভ সহ ল্যাটিন ছোট হাতের অক্ষর g","Latin small letter g with cedilla":"সেডিলা সহ ল্যাটিন ছোট হাতের অক্ষর g","Latin small letter g with circumflex":"সার্কামফ্লেক্স সহ ল্যাটিন ছোট হাতের অক্ষর g","Latin small letter g with dot above":"উপরে বিন্দু সহ ল্যাটিন ছোট হাতের অক্ষর g","Latin small letter h with circumflex":"সার্কামফ্লেক্স সহ ল্যাটিন ছোট হাতের অক্ষর h","Latin small letter h with stroke":"স্ট্রোক সহ ল্যাটিন ছোট হাতের অক্ষর h","Latin small letter i with breve":"ব্রেভ সহ ল্যাটিন ছোট হাতের অক্ষর i","Latin small letter i with macron":"ম্যাক্রোন সহ ল্যাটিন ছোট হাতের অক্ষর i","Latin small letter i with ogonek":"ওগোনেক সহ ল্যাটিন ছোট হাতের অক্ষর i","Latin small letter i with tilde":"টিল্ড সহ ল্যাটিন ছোট হাতের অক্ষর i","Latin small letter j with circumflex":"সার্কামফ্লেক্স সহ ল্যাটিন ছোট হাতের অক্ষর j","Latin small letter k with cedilla":"সেডিলা সহ ল্যাটিন ছোট হাতের অক্ষর k","Latin small letter kra":"ল্যাটিন ছোট হাতের অক্ষর kra","Latin small letter l with acute":"অ্যাকিউট সহ ল্যাটিন ছোট হাতের অক্ষর l","Latin small letter l with caron":"ক্যারন সহ ল্যাটিন ছোট হাতের অক্ষর l","Latin small letter l with cedilla":"সেডিলা সহ ল্যাটিন ছোট হাতের অক্ষর l","Latin small letter l with middle dot":"মধ্যবিন্দু সহ ল্যাটিন ছোট হাতের অক্ষর l","Latin small letter l with stroke":"স্ট্রোক সহ ল্যাটিন ছোট হাতের অক্ষর l","Latin small letter long s":"ল্যাটিন ছোট হাতের অক্ষর দীর্ঘ s","Latin small letter n preceded by apostrophe":"ল্যাটিন ছোট হাতের অক্ষর n এর পূর্বে apostrophe","Latin small letter n with acute":"অ্যাকিউট সহ ল্যাটিন ছোট হাতের অক্ষর n","Latin small letter n with caron":"ক্যারন সহ ল্যাটিন ছোট হাতের অক্ষর n","Latin small letter n with cedilla":"সেডিলা সহ ল্যাটিন ছোট হাতের অক্ষর n","Latin small letter o with breve":"ব্রেভ সহ ল্যাটিন ছোট হাতের অক্ষর o","Latin small letter o with double acute":"দ্বৈত অ্যাকিউট সহ ল্যাটিন ছোট হাতের অক্ষর o","Latin small letter o with macron":"ম্যাক্রোন সহ ল্যাটিন ছোট হাতের অক্ষর o","Latin small letter r with acute":"অ্যাকিউট সহ ল্যাটিন ছোট হাতের অক্ষর r","Latin small letter r with caron":"ক্যারন সহ ল্যাটিন ছোট হাতের অক্ষর r","Latin small letter r with cedilla":"সেডিলা সহ ল্যাটিন ছোট হাতের অক্ষর r","Latin small letter s with acute":"অ্যাকিউট সহ ল্যাটিন ছোট হাতের অক্ষর s","Latin small letter s with caron":"ক্যারন সহ ল্যাটিন ছোট হাতের অক্ষর s","Latin small letter s with cedilla":"সেডিলা সহ ল্যাটিন ছোট হাতের অক্ষর s","Latin small letter s with circumflex":"সার্কামফ্লেক্স সহ ল্যাটিন ছোট হাতের অক্ষর s","Latin small letter t with caron":"ক্যারন সহ ল্যাটিন ছোট হাতের অক্ষর t","Latin small letter t with cedilla":"সেডিলা সহ ল্যাটিন ছোট হাতের অক্ষর t","Latin small letter t with stroke":"স্ট্রোক সহ ল্যাটিন ছোট হাতের অক্ষর t","Latin small letter u with breve":"ব্রেভ সহ ল্যাটিন ছোট হাতের অক্ষর u","Latin small letter u with double acute":"দ্বৈত অ্যাকিউট সহ ল্যাটিন ছোট হাতের অক্ষর u","Latin small letter u with macron":"ম্যাক্রোন সহ ল্যাটিন ছোট হাতের অক্ষর u","Latin small letter u with ogonek":"ওগোনেক সহ ল্যাটিন ছোট হাতের অক্ষর u","Latin small letter u with ring above":"উপরে রিং সহ ল্যাটিন ছোট হাতের অক্ষর u","Latin small letter u with tilde":"টিল্ড সহ ল্যাটিন ছোট হাতের অক্ষর u","Latin small letter w with circumflex":"সার্কামফ্লেক্স সহ ল্যাটিন ছোট হাতের অক্ষর w","Latin small letter y with circumflex":"সার্কামফ্লেক্স সহ ল্যাটিন ছোট হাতের অক্ষর y","Latin small letter z with acute":"অ্যাকিউট সহ ল্যাটিন ছোট হাতের অক্ষর z","Latin small letter z with caron":"ক্যারন সহ ল্যাটিন ছোট হাতের অক্ষর z","Latin small letter z with dot above":"উপরে বিন্দু সহ ল্যাটিন ছোট হাতের অক্ষর z","Latin small ligature ij":"ল্যাটিন ছোট হাতের লিগেচার ij","Latin small ligature oe":"ল্যাটিন ছোট হাতের লিগ্যাচার oe","Left double quotation mark":"বাম দ্বৈত উদ্ধৃতি চিহ্ন","Left single quotation mark":"বাম একক উদ্ধৃতি চিহ্ন","Left-pointing double angle quotation mark":"বাম-নির্দেশক দ্বৈত কোণ উদ্ধৃতি চিহ্ন","leftwards arrow to bar":"বামমুখী তীরের বার","leftwards dashed arrow":"বামমুখী ড্যাশড তীর","leftwards double arrow":"বামমুখী দ্বৈত তীর","Less-than or equal to":"এর চেয়ে কম বা সমান চিহ্ন","Less-than sign":"এর চেয়ে কম চিহ্ন","Lira sign":"লিরার চিহ্ন","Livre tournois sign":"লিভরে টুরনোইস চিহ্ন","Logical and":"লজিক্যাল এন্ড ","Logical or":"লজিক্যাল অর",Macron:"ম্যাক্রন","Manat sign":"মানাত চিহ্ন","Mill sign":"মিল চিহ্ন","Minus sign":"বিয়োগ চিহ্ন","Multiplication sign":"গুণ চিহ্ন","N-ary product":"N-ary গুণফল","N-ary summation":"N-ary সমষ্টি",Nabla:"ন্যাবলা","Naira sign":"নাইরা চিহ্ন","New sheqel sign":"নিউ শেকেল চিহ্ন","Nordic mark sign":"নর্ডিক মার্ক চিহ্ন","Not an element of":"এর একটি উপাদান নয়","Not equal to":"সমান নয়","Not sign":"নট চিহ্ন","on with exclamation mark with left right arrow above":"বিস্ময়বোধকসহ অন এর  উপরে বাম ডান তীর",Overline:"ওভারলাইন","Paragraph sign":"প্যারাগ্রাফ চিহ্ন","Partial differential":"আংশিক ডিফারেনশিয়াল","Per mille sign":"প্রতি মাইল চিহ্ন","Per ten thousand sign":"প্রতি দশ হাজার চিহ্ন","Peseta sign":"পেসেটা চিহ্ন","Peso sign":"পেসো চিহ্ন","Plus-minus sign":"যোগ-বিয়োগ চিহ্ন","Pound sign":"পাউন্ড চিহ্ন","Proportional to":"সমানুপাতিক","Question exclamation mark":"প্রশ্ন বিস্ময়বোধক চিহ্ন","Registered sign":"নিবন্ধিত চিহ্ন","Reversed paragraph sign":"বিপরীত প্যারাগ্রাফ চিহ্ন","Right double quotation mark":"ডান দ্বৈত উদ্ধৃতি চিহ্ন","Right single quotation mark":"ডান একক উদ্ধৃতি চিহ্ন","Right-pointing double angle quotation mark":"ডান-নির্দেশক দ্বৈত কোণ উদ্ধৃতি চিহ্ন","rightwards arrow to bar":"ডানমুখী তীরের বার","rightwards dashed arrow":"ডানমুখী ড্যাশড তীর","rightwards double arrow":"ডানমুখী দ্বৈত তীর","Ruble sign":"রুবল চিহ্ন","Rupee sign":"রুপির চিহ্ন","Section sign":"সেকশন চিহ্ন","Single left-pointing angle quotation mark":"একক বাম-নির্দেশক কোণ উদ্ধৃতি চিহ্ন","Single low-9 quotation mark":"একক লো-9 উদ্ধৃতি চিহ্ন","Single right-pointing angle quotation mark":"একক ডান-নির্দেশক কোণ উদ্ধৃতি চিহ্ন","soon with rightwards arrow above":"শীঘ্রই এর উপরে ডানমুখী তীর","Special characters":"বিশেষ অক্ষর","Spesmilo sign":"স্পেসমিলো চিহ্ন","Square root":"বর্গমূল","Tenge sign":"টেঞ্জ চিহ্ন","There exists":"অস্তিত্ব আছে","Tilde operator":"টিল্ড অপারেটর","top with upwards arrow above":"টপ লেখাসহ উপরে উর্ধ্বমুখী তীর","Trade mark sign":"ট্রেড মার্ক সাইন","Tugrik sign":"তুগ্রিক চিহ্ন","Turkish lira sign":"তুর্কি লিরা সাইন ","Two dot leader":"দুই বিন্দু লিডার",Union:"সংযোগ","up down arrow with base":"বেসসহ উপরে নিচের তীর","upwards arrow to bar":"উর্ধ্বমুখী তীরের বার","upwards dashed arrow":"উর্ধ্বমুখী ড্যাশড তীর","upwards double arrow":"উর্ধ্বমুখী দ্বৈত তীর","Vulgar fraction one half":"ভালগার ভগ্নাংশ একের অর্ধেক","Vulgar fraction one quarter":"ভালগার ভগ্নাংশ এক চতুর্থাংশ","Vulgar fraction three quarters":"ভালগার ভগ্নাংশ তিন চতুর্থাংশ","Won sign":"ওন চিহ্ন","Yen sign":"ইয়েন চিহ্ন"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(t){const a=t.bn=t.bn||{};a.dictionary=Object.assign(a.dictionary||{},{"Almost equal to":"প্রায় সমান",Angle:"কোণ","Approximately equal to":"প্রায় সমান","Asterisk operator":"অস্ট্রিক অপারেটর","Austral sign":"অস্ট্রাল চিহ্ন","back with leftwards arrow above":"ব্যাক এর উপরে বামমুখী তীর","Bitcoin sign":"বিটকয়েনের চিহ্ন","Cedi sign":"সেডি চিহ্ন","Cent sign":"সেন্ট চিহ্ন","Character categories":"অক্ষরের শ্রেণীবিভাগসমূহ","Colon sign":"কোলন চিহ্ন","Contains as member":"সদস্য হিসেবে রয়েছে","Copyright sign":"কপিরাইট চিহ্ন","Cruzeiro sign":"ত্রুুজেইরো চিহ্ন","Currency sign":"মুদ্রার চিহ্ন","Degree sign":"ডিগ্রি চিহ্ন","Division sign":"ভাগ চিহ্ন","Dollar sign":"ডলারের চিহ্ন","Dong sign":"ডং চিহ্ন","Double dagger":"ডাবল ড্যাগার","Double exclamation mark":"দ্বৈত বিস্ময়বোধক চিহ্ন","Double low-9 quotation mark":"দ্বৈত লো-9 উদ্ধৃতি চিহ্ন","Double question mark":"দ্বৈত প্রশ্ন চিহ্ন","downwards arrow to bar":"নিম্নমুখী তীরের বার","downwards dashed arrow":"নিম্নমুখী ড্যাশড তীর","downwards double arrow":"নিম্নমুখী দ্বৈত তীর","downwards simple arrow":"নিচের দিকে সরল তীর","Drachma sign":"ড্রাকমা চিহ্ন","Element of":"এর উপাদান","Em dash":"Em ড্যাশ","Empty set":"ফাঁকা সেট","En dash":"En ড্যাশ","end with leftwards arrow above":"এন্ড এর উপরে বামমুখী তীর","Euro sign":"ইউরো চিহ্ন","Euro-currency sign":"ইউরো-মুদ্রার চিহ্ন","Exclamation question mark":"বিস্ময়বোধক প্রশ্ন চিহ্ন","For all":"সবার জন্য","Fraction slash":"ভগ্নাংশ স্ল্যাশ","French franc sign":"ফরাসি ফ্রাঙ্ক চিহ্ন","German penny sign":"জার্মান পেনি চিহ্ন","Greater-than or equal to":"এর চেয়ে বেশি বা সমান চিহ্ন","Greater-than sign":"এর চেয়ে বেশি চিহ্ন","Guarani sign":"গুয়ারানি চিহ্ন","Horizontal ellipsis":"অনুভূমিক উপবৃত্তাকার","Hryvnia sign":"হিরভনিয়া চিহ্ন","Identical to":"এর অনুরূপ","Indian rupee sign":"ভারতীয় রুপির চিহ্ন",Infinity:"অসীম",Integral:"ইন্টিগ্রাল",Intersection:"ছেদ","Inverted exclamation mark":"ইনভার্টেড বিস্ময়বোধক চিহ্ন","Inverted question mark":"ইনভার্টেড প্রশ্ন চিহ্ন","Kip sign":"কিপ চিহ্ন","Latin capital letter a with breve":"ব্রেভ সহ ল্যাটিন বড় হাতের অক্ষর a","Latin capital letter a with macron":"ম্যাক্রোন সহ ল্যাটিন বড় হাতের অক্ষর a","Latin capital letter a with ogonek":"ওগোনেক সহ ল্যাটিন বড় হাতের অক্ষর a","Latin capital letter c with acute":"অ্যাকিউট সহ ল্যাটিন বড় হাতের অক্ষর c","Latin capital letter c with caron":"ক্যারন সহ ল্যাটিন বড় হাতের অক্ষর c","Latin capital letter c with circumflex":"সারকামফ্লেক্স সহ ল্যাটিন বড় হাতের অক্ষর c","Latin capital letter c with dot above":"উপরে বিন্দু সহ ল্যাটিন বড় হাতের অক্ষর c","Latin capital letter d with caron":"ক্যারন সহ ল্যাটিন বড় হাতের অক্ষর d","Latin capital letter d with stroke":"স্ট্রোক সহ ল্যাটিন বড় হাতের অক্ষর d","Latin capital letter e with breve":"ব্রেভ সহ ল্যাটিন বড় হাতের অক্ষর e","Latin capital letter e with caron":"ক্যারন সহ ল্যাটিন বড় হাতের অক্ষর e","Latin capital letter e with dot above":"উপরে বিন্দু সহ ল্যাটিন বড় হাতের অক্ষর e","Latin capital letter e with macron":"ম্যাক্রোন সহ ল্যাটিন বড় হাতের অক্ষর e","Latin capital letter e with ogonek":"ওগোনেক সহ ল্যাটিন বড় হাতের অক্ষর e","Latin capital letter eng":"ল্যাটিন বড় হাতের অক্ষর eng","Latin capital letter g with breve":"ব্রেভ সহ ল্যাটিন বড় হাতের অক্ষর g","Latin capital letter g with cedilla":"সেডিলা সহ ল্যাটিন বড় হাতের অক্ষর g","Latin capital letter g with circumflex":"সার্কামফ্লেক্স সহ ল্যাটিন বড় হাতের অক্ষর g","Latin capital letter g with dot above":"উপরে বিন্দু সহ ল্যাটিন বড় হাতের অক্ষর g","Latin capital letter h with circumflex":"সার্কামফ্লেক্স সহ ল্যাটিন বড় হাতের অক্ষর h","Latin capital letter h with stroke":"স্ট্রোক সহ ল্যাটিন বড় হাতের অক্ষর h","Latin capital letter i with breve":"ব্রেভ সহ ল্যাটিন বড় হাতের অক্ষর i","Latin capital letter i with dot above":"উপরে বিন্দু সহ ল্যাটিন বড় হাতের অক্ষর i","Latin capital letter i with macron":"ম্যাক্রোন সহ ল্যাটিন বড় হাতের অক্ষর i","Latin capital letter i with ogonek":"ওগোনেক সহ ল্যাটিন বড় হাতের অক্ষর i","Latin capital letter i with tilde":"টিল্ড সহ ল্যাটিন বড় হাতের অক্ষর i","Latin capital letter j with circumflex":"সার্কামফ্লেক্স সহ ল্যাটিন বড় হাতের অক্ষর j","Latin capital letter k with cedilla":"সেডিলা সহ ল্যাটিন বড় হাতের অক্ষর k","Latin capital letter l with acute":"অ্যাকিউট সহ ল্যাটিন বড় হাতের অক্ষর l","Latin capital letter l with caron":"ক্যারন সহ ল্যাটিন বড় হাতের অক্ষর l","Latin capital letter l with cedilla":"সেডিলা সহ ল্যাটিন বড় হাতের অক্ষর l","Latin capital letter l with middle dot":"মধ্যবিন্দু সহ ল্যাটিন বড় হাতের অক্ষর l","Latin capital letter l with stroke":"স্ট্রোক সহ ল্যাটিন বড় হাতের অক্ষর l","Latin capital letter n with acute":"অ্যাকিউট সহ ল্যাটিন বড় হাতের অক্ষর n","Latin capital letter n with caron":"ক্যারন সহ ল্যাটিন বড় হাতের অক্ষর n","Latin capital letter n with cedilla":"সেডিলা সহ ল্যাটিন বড় হাতের অক্ষর n","Latin capital letter o with breve":"ব্রেভ সহ ল্যাটিন বড় হাতের অক্ষর o","Latin capital letter o with double acute":"দ্বৈত অ্যাকিউট সহ ল্যাটিন বড় হাতের অক্ষর o","Latin capital letter o with macron":"ম্যাক্রোন সহ ল্যাটিন বড় হাতের অক্ষর o","Latin capital letter r with acute":"অ্যাকিউট সহ ল্যাটিন বড় হাতের অক্ষর r","Latin capital letter r with caron":"ক্যারন সহ ল্যাটিন বড় হাতের অক্ষর r","Latin capital letter r with cedilla":"সেডিলা সহ ল্যাটিন বড় হাতের অক্ষর r","Latin capital letter s with acute":"অ্যাকিউট সহ ল্যাটিন বড় হাতের অক্ষর s","Latin capital letter s with caron":"ক্যারন সহ ল্যাটিন বড় হাতের অক্ষর s","Latin capital letter s with cedilla":"সেডিলা সহ ল্যাটিন বড় হাতের অক্ষর s","Latin capital letter s with circumflex":"সার্কামফ্লেক্স সহ ল্যাটিন বড় হাতের অক্ষর s","Latin capital letter t with caron":"ক্যারন সহ ল্যাটিন বড় হাতের অক্ষর t","Latin capital letter t with cedilla":"সেডিলা সহ ল্যাটিন বড় হাতের অক্ষর t","Latin capital letter t with stroke":"স্ট্রোক সহ ল্যাটিন বড় হাতের অক্ষর t","Latin capital letter u with breve":"ব্রেভ সহ ল্যাটিন বড় হাতের অক্ষর u","Latin capital letter u with double acute":"দ্বৈত অ্যাকিউট সহ ল্যাটিন বড় হাতের অক্ষর u","Latin capital letter u with macron":"ম্যাক্রোন সহ ল্যাটিন বড় হাতের অক্ষর u","Latin capital letter u with ogonek":"ওগোনেক সহ ল্যাটিন বড় হাতের অক্ষর u","Latin capital letter u with ring above":"উপরে রিং সহ ল্যাটিন বড় হাতের অক্ষর u","Latin capital letter u with tilde":"টিল্ড সহ ল্যাটিন বড় হাতের অক্ষর u","Latin capital letter w with circumflex":"সার্কামফ্লেক্স সহ ল্যাটিন বড় হাতের অক্ষর w","Latin capital letter y with circumflex":"সার্কামফ্লেক্স সহ ল্যাটিন বড় হাতের অক্ষর y","Latin capital letter y with diaeresis":"ডায়েরেসিস সহ ল্যাটিন বড় হাতের অক্ষর y","Latin capital letter z with acute":"অ্যাকিউট সহ ল্যাটিন বড় হাতের অক্ষর z","Latin capital letter z with caron":"ক্যারন সহ ল্যাটিন বড় হাতের অক্ষর z","Latin capital letter z with dot above":"উপরে বিন্দু সহ ল্যাটিন বড় হাতের অক্ষর z","Latin capital ligature ij":"ল্যাটিন বড় হাতের লিগেচার ij","Latin capital ligature oe":"ল্যাটিন বড় হাতের লিগ্যাচার oe","Latin small letter a with breve":"ব্রেভ সহ ল্যাটিন ছোট হাতের অক্ষর a","Latin small letter a with macron":"ম্যাক্রোন সহ ল্যাটিন ছোট হাতের অক্ষর a","Latin small letter a with ogonek":"ওগোনেক সহ ল্যাটিন ছোট হাতের অক্ষর a","Latin small letter c with acute":"অ্যাকিউট সহ ল্যাটিন ছোট হাতের অক্ষর c","Latin small letter c with caron":"ক্যারন সহ ল্যাটিন ছোট হাতের অক্ষর c","Latin small letter c with circumflex":"সারকামফ্লেক্স সহ ল্যাটিন ছোট হাতের অক্ষর c","Latin small letter c with dot above":"উপরে বিন্দু সহ ল্যাটিন ছোট হাতের অক্ষর c","Latin small letter d with caron":"ক্যারন সহ ল্যাটিন ছোট হাতের অক্ষর d","Latin small letter d with stroke":"স্ট্রোক সহ ল্যাটিন ছোট হাতের অক্ষর d","Latin small letter dotless i":"ল্যাটিন ছোট হাতের অক্ষর বিন্দুবিহীন i","Latin small letter e with breve":"ব্রেভ সহ ল্যাটিন ছোট হাতের অক্ষর e","Latin small letter e with caron":"ক্যারন সহ ল্যাটিন ছোট হাতের অক্ষর e","Latin small letter e with dot above":"উপরে বিন্দু সহ ল্যাটিন ছোট হাতের অক্ষর e","Latin small letter e with macron":"ম্যাক্রোন সহ ল্যাটিন ছোট হাতের অক্ষর e","Latin small letter e with ogonek":"ওগোনেক সহ ল্যাটিন ছোট হাতের অক্ষর e","Latin small letter eng":"ল্যাটিন ছোট হাতের অক্ষর eng","Latin small letter f with hook":"হুক সহ ল্যাটিন ছোট হাতের অক্ষর f","Latin small letter g with breve":"ব্রেভ সহ ল্যাটিন ছোট হাতের অক্ষর g","Latin small letter g with cedilla":"সেডিলা সহ ল্যাটিন ছোট হাতের অক্ষর g","Latin small letter g with circumflex":"সার্কামফ্লেক্স সহ ল্যাটিন ছোট হাতের অক্ষর g","Latin small letter g with dot above":"উপরে বিন্দু সহ ল্যাটিন ছোট হাতের অক্ষর g","Latin small letter h with circumflex":"সার্কামফ্লেক্স সহ ল্যাটিন ছোট হাতের অক্ষর h","Latin small letter h with stroke":"স্ট্রোক সহ ল্যাটিন ছোট হাতের অক্ষর h","Latin small letter i with breve":"ব্রেভ সহ ল্যাটিন ছোট হাতের অক্ষর i","Latin small letter i with macron":"ম্যাক্রোন সহ ল্যাটিন ছোট হাতের অক্ষর i","Latin small letter i with ogonek":"ওগোনেক সহ ল্যাটিন ছোট হাতের অক্ষর i","Latin small letter i with tilde":"টিল্ড সহ ল্যাটিন ছোট হাতের অক্ষর i","Latin small letter j with circumflex":"সার্কামফ্লেক্স সহ ল্যাটিন ছোট হাতের অক্ষর j","Latin small letter k with cedilla":"সেডিলা সহ ল্যাটিন ছোট হাতের অক্ষর k","Latin small letter kra":"ল্যাটিন ছোট হাতের অক্ষর kra","Latin small letter l with acute":"অ্যাকিউট সহ ল্যাটিন ছোট হাতের অক্ষর l","Latin small letter l with caron":"ক্যারন সহ ল্যাটিন ছোট হাতের অক্ষর l","Latin small letter l with cedilla":"সেডিলা সহ ল্যাটিন ছোট হাতের অক্ষর l","Latin small letter l with middle dot":"মধ্যবিন্দু সহ ল্যাটিন ছোট হাতের অক্ষর l","Latin small letter l with stroke":"স্ট্রোক সহ ল্যাটিন ছোট হাতের অক্ষর l","Latin small letter long s":"ল্যাটিন ছোট হাতের অক্ষর দীর্ঘ s","Latin small letter n preceded by apostrophe":"ল্যাটিন ছোট হাতের অক্ষর n এর পূর্বে apostrophe","Latin small letter n with acute":"অ্যাকিউট সহ ল্যাটিন ছোট হাতের অক্ষর n","Latin small letter n with caron":"ক্যারন সহ ল্যাটিন ছোট হাতের অক্ষর n","Latin small letter n with cedilla":"সেডিলা সহ ল্যাটিন ছোট হাতের অক্ষর n","Latin small letter o with breve":"ব্রেভ সহ ল্যাটিন ছোট হাতের অক্ষর o","Latin small letter o with double acute":"দ্বৈত অ্যাকিউট সহ ল্যাটিন ছোট হাতের অক্ষর o","Latin small letter o with macron":"ম্যাক্রোন সহ ল্যাটিন ছোট হাতের অক্ষর o","Latin small letter r with acute":"অ্যাকিউট সহ ল্যাটিন ছোট হাতের অক্ষর r","Latin small letter r with caron":"ক্যারন সহ ল্যাটিন ছোট হাতের অক্ষর r","Latin small letter r with cedilla":"সেডিলা সহ ল্যাটিন ছোট হাতের অক্ষর r","Latin small letter s with acute":"অ্যাকিউট সহ ল্যাটিন ছোট হাতের অক্ষর s","Latin small letter s with caron":"ক্যারন সহ ল্যাটিন ছোট হাতের অক্ষর s","Latin small letter s with cedilla":"সেডিলা সহ ল্যাটিন ছোট হাতের অক্ষর s","Latin small letter s with circumflex":"সার্কামফ্লেক্স সহ ল্যাটিন ছোট হাতের অক্ষর s","Latin small letter t with caron":"ক্যারন সহ ল্যাটিন ছোট হাতের অক্ষর t","Latin small letter t with cedilla":"সেডিলা সহ ল্যাটিন ছোট হাতের অক্ষর t","Latin small letter t with stroke":"স্ট্রোক সহ ল্যাটিন ছোট হাতের অক্ষর t","Latin small letter u with breve":"ব্রেভ সহ ল্যাটিন ছোট হাতের অক্ষর u","Latin small letter u with double acute":"দ্বৈত অ্যাকিউট সহ ল্যাটিন ছোট হাতের অক্ষর u","Latin small letter u with macron":"ম্যাক্রোন সহ ল্যাটিন ছোট হাতের অক্ষর u","Latin small letter u with ogonek":"ওগোনেক সহ ল্যাটিন ছোট হাতের অক্ষর u","Latin small letter u with ring above":"উপরে রিং সহ ল্যাটিন ছোট হাতের অক্ষর u","Latin small letter u with tilde":"টিল্ড সহ ল্যাটিন ছোট হাতের অক্ষর u","Latin small letter w with circumflex":"সার্কামফ্লেক্স সহ ল্যাটিন ছোট হাতের অক্ষর w","Latin small letter y with circumflex":"সার্কামফ্লেক্স সহ ল্যাটিন ছোট হাতের অক্ষর y","Latin small letter z with acute":"অ্যাকিউট সহ ল্যাটিন ছোট হাতের অক্ষর z","Latin small letter z with caron":"ক্যারন সহ ল্যাটিন ছোট হাতের অক্ষর z","Latin small letter z with dot above":"উপরে বিন্দু সহ ল্যাটিন ছোট হাতের অক্ষর z","Latin small ligature ij":"ল্যাটিন ছোট হাতের লিগেচার ij","Latin small ligature oe":"ল্যাটিন ছোট হাতের লিগ্যাচার oe","Left double quotation mark":"বাম দ্বৈত উদ্ধৃতি চিহ্ন","Left single quotation mark":"বাম একক উদ্ধৃতি চিহ্ন","Left-pointing double angle quotation mark":"বাম-নির্দেশক দ্বৈত কোণ উদ্ধৃতি চিহ্ন","leftwards arrow to bar":"বামমুখী তীরের বার","leftwards dashed arrow":"বামমুখী ড্যাশড তীর","leftwards double arrow":"বামমুখী দ্বৈত তীর","leftwards simple arrow":"বাম দিকে সরল তীর","Less-than or equal to":"এর চেয়ে কম বা সমান চিহ্ন","Less-than sign":"এর চেয়ে কম চিহ্ন","Lira sign":"লিরার চিহ্ন","Livre tournois sign":"লিভরে টুরনোইস চিহ্ন","Logical and":"লজিক্যাল এন্ড ","Logical or":"লজিক্যাল অর",Macron:"ম্যাক্রন","Manat sign":"মানাত চিহ্ন","Mill sign":"মিল চিহ্ন","Minus sign":"বিয়োগ চিহ্ন","Multiplication sign":"গুণ চিহ্ন","N-ary product":"N-ary গুণফল","N-ary summation":"N-ary সমষ্টি",Nabla:"ন্যাবলা","Naira sign":"নাইরা চিহ্ন","New sheqel sign":"নিউ শেকেল চিহ্ন","Nordic mark sign":"নর্ডিক মার্ক চিহ্ন","Not an element of":"এর একটি উপাদান নয়","Not equal to":"সমান নয়","Not sign":"নট চিহ্ন","on with exclamation mark with left right arrow above":"বিস্ময়বোধকসহ অন এর  উপরে বাম ডান তীর",Overline:"ওভারলাইন","Paragraph sign":"প্যারাগ্রাফ চিহ্ন","Partial differential":"আংশিক ডিফারেনশিয়াল","Per mille sign":"প্রতি মাইল চিহ্ন","Per ten thousand sign":"প্রতি দশ হাজার চিহ্ন","Peseta sign":"পেসেটা চিহ্ন","Peso sign":"পেসো চিহ্ন","Plus-minus sign":"যোগ-বিয়োগ চিহ্ন","Pound sign":"পাউন্ড চিহ্ন","Proportional to":"সমানুপাতিক","Question exclamation mark":"প্রশ্ন বিস্ময়বোধক চিহ্ন","Registered sign":"নিবন্ধিত চিহ্ন","Reversed paragraph sign":"বিপরীত প্যারাগ্রাফ চিহ্ন","Right double quotation mark":"ডান দ্বৈত উদ্ধৃতি চিহ্ন","Right single quotation mark":"ডান একক উদ্ধৃতি চিহ্ন","Right-pointing double angle quotation mark":"ডান-নির্দেশক দ্বৈত কোণ উদ্ধৃতি চিহ্ন","rightwards arrow to bar":"ডানমুখী তীরের বার","rightwards dashed arrow":"ডানমুখী ড্যাশড তীর","rightwards double arrow":"ডানমুখী দ্বৈত তীর","rightwards simple arrow":"ডানমুখী সরল তীর","Ruble sign":"রুবল চিহ্ন","Rupee sign":"রুপির চিহ্ন","Section sign":"সেকশন চিহ্ন","Single left-pointing angle quotation mark":"একক বাম-নির্দেশক কোণ উদ্ধৃতি চিহ্ন","Single low-9 quotation mark":"একক লো-9 উদ্ধৃতি চিহ্ন","Single right-pointing angle quotation mark":"একক ডান-নির্দেশক কোণ উদ্ধৃতি চিহ্ন","soon with rightwards arrow above":"শীঘ্রই এর উপরে ডানমুখী তীর","Special characters":"বিশেষ অক্ষর","Spesmilo sign":"স্পেসমিলো চিহ্ন","Square root":"বর্গমূল","Tenge sign":"টেঞ্জ চিহ্ন","There exists":"অস্তিত্ব আছে","Tilde operator":"টিল্ড অপারেটর","top with upwards arrow above":"টপ লেখাসহ উপরে উর্ধ্বমুখী তীর","Trade mark sign":"ট্রেড মার্ক সাইন","Tugrik sign":"তুগ্রিক চিহ্ন","Turkish lira sign":"তুর্কি লিরা সাইন ","Two dot leader":"দুই বিন্দু লিডার",Union:"সংযোগ","up down arrow with base":"বেসসহ উপরে নিচের তীর","upwards arrow to bar":"উর্ধ্বমুখী তীরের বার","upwards dashed arrow":"উর্ধ্বমুখী ড্যাশড তীর","upwards double arrow":"উর্ধ্বমুখী দ্বৈত তীর","upwards simple arrow":"উপরের দিকে সরল তীর","Vulgar fraction one half":"ভালগার ভগ্নাংশ একের অর্ধেক","Vulgar fraction one quarter":"ভালগার ভগ্নাংশ এক চতুর্থাংশ","Vulgar fraction three quarters":"ভালগার ভগ্নাংশ তিন চতুর্থাংশ","Won sign":"ওন চিহ্ন","Yen sign":"ইয়েন চিহ্ন"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/special-characters/translations/ca.js b/core/assets/vendor/ckeditor5/special-characters/translations/ca.js
index 713bc485d7..06b09c678e 100644
--- a/core/assets/vendor/ckeditor5/special-characters/translations/ca.js
+++ b/core/assets/vendor/ckeditor5/special-characters/translations/ca.js
@@ -1 +1 @@
-!function(a){const l=a.ca=a.ca||{};l.dictionary=Object.assign(l.dictionary||{},{"Almost equal to":"Gairebé igual a",Angle:"Angle","Approximately equal to":"Aproximadament igual a","Asterisk operator":"Operador d'asterisc","Austral sign":"signe de l'austral","back with leftwards arrow above":"back amb fletxa cap a l'esquerra per sobre","Bitcoin sign":"signe del bitcoin","Cedi sign":"ok","Cent sign":"signe del cèntim","Character categories":"Categories de caràcters","Colon sign":"signe del còlon","Contains as member":"Conté com a membre","Copyright sign":"Signe de drets d'autor","Cruzeiro sign":"signe del cruzeiro","Currency sign":"signe de divisa","Degree sign":"Signe del grau","Division sign":"Signe de divisió","Dollar sign":"signe del dòlar","Dong sign":"signe del dong","Double dagger":"Doble obelisc o diesi","Double exclamation mark":"Doble signe d'exclamació","Double low-9 quotation mark":"Cometes dobles inferiors","Double question mark":"Doble signe d'interrogació","downwards arrow to bar":"fletxa cap a la barra de sota","downwards dashed arrow":"fletxa discontínua cap avall","downwards double arrow":"fletxa doble cap avall","Drachma sign":"signe del dracma","Element of":"Element de","Em dash":"Guió llarg","Empty set":"Conjunt buit","En dash":"Guió mitjà","end with leftwards arrow above":"end amb fletxa cap a l'esquerra per sobre","Euro sign":"signe de l'euro","Euro-currency sign":"signe de l'eurodivisa","Exclamation question mark":"Signe d'interrogació d'exclamació","For all":"Per a tot","Fraction slash":"Barra obliqua de fracció","French franc sign":"signe del franc francès","German penny sign":"signe del cèntim alemany","Greater-than or equal to":"més gran o igual que","Greater-than sign":"signe de més gran que","Guarani sign":"signe del guaraní","Horizontal ellipsis":"Punts suspensius","Hryvnia sign":"signe de la hrívnia","Identical to":"Idèntic a","Indian rupee sign":"signe de la rupia índia",Infinity:"Infinit",Integral:"Integral",Intersection:"Intersecció","Inverted exclamation mark":"Signe d'exclamació invertit","Inverted question mark":"Signe d'interrogació invertit","Kip sign":"signe del kip","Latin capital letter a with breve":"lletra llatina a majúscula amb breu","Latin capital letter a with macron":"lletra llatina a majúscula amb màcron","Latin capital letter a with ogonek":"lletra llatina a majúscula amb ogonek","Latin capital letter c with acute":"lletra llatina c majúscula amb accent agut","Latin capital letter c with caron":"lletra llatina c majúscula amb anticircumflex","Latin capital letter c with circumflex":"lletra llatina c majúscula amb accent circumflex","Latin capital letter c with dot above":"lletra llatina c majúscula amb un punt per sobre","Latin capital letter d with caron":"lletra llatina d majúscula amb anticircumflex","Latin capital letter d with stroke":"lletra llatina d majúscula amb barra inscrita","Latin capital letter e with breve":"lletra llatina e majúscula amb breu","Latin capital letter e with caron":"lletra llatina e majúscula amb anticircumflex","Latin capital letter e with dot above":"lletra llatina e majúscula amb un punt per sobre","Latin capital letter e with macron":"lletra llatina e majúscula amb màcron","Latin capital letter e with ogonek":"lletra llatina e majúscula amb ogonek","Latin capital letter eng":"lletra llatina eng majúscula","Latin capital letter g with breve":"lletra llatina g majúscula amb breu","Latin capital letter g with cedilla":"lletra llatina g majúscula amb trenc","Latin capital letter g with circumflex":"lletra llatina g majúscula amb accent circumflex","Latin capital letter g with dot above":"lletra llatina g majúscula amb un punt per sobre","Latin capital letter h with circumflex":"lletra llatina h majúscula amb accent circumflex","Latin capital letter h with stroke":"lletra llatina h majúscula amb barra inscrita","Latin capital letter i with breve":"lletra llatina i majúscula amb breu","Latin capital letter i with dot above":"lletra llatina i majúscula amb un punt per sobre","Latin capital letter i with macron":"lletra llatina i majúscula amb màcron","Latin capital letter i with ogonek":"lletra llatina i majúscula amb ogonek","Latin capital letter i with tilde":"lletra llatina i majúscula amb titlla","Latin capital letter j with circumflex":"lletra llatina i majúscula amb circumflex","Latin capital letter k with cedilla":"lletra llatina k majúscula amb trenc","Latin capital letter l with acute":"lletra llatina l majúscula amb accent agut","Latin capital letter l with caron":"lletra llatina l majúscula amb anticircumflex","Latin capital letter l with cedilla":"lletra llatina l majúscula amb trenc","Latin capital letter l with middle dot":"lletra llatina l majúscula amb punt volat","Latin capital letter l with stroke":"lletra llatina l majúscula amb barra inscrita","Latin capital letter n with acute":"lletra llatina n majúscula amb accent agut","Latin capital letter n with caron":"lletra llatina n majúscula amb anticircumflex","Latin capital letter n with cedilla":"lletra llatina n majúscula amb trenc","Latin capital letter o with breve":"lletra llatina o majúscula amb breu","Latin capital letter o with double acute":"lletra llatina o majúscula amb accent agut doble","Latin capital letter o with macron":"lletra llatina o majúscula amb màcron","Latin capital letter r with acute":"lletra llatina r majúscula amb accent agut","Latin capital letter r with caron":"lletra llatina r majúscula amb anticircumflex","Latin capital letter r with cedilla":"lletra llatina r majúscula amb trenc","Latin capital letter s with acute":"lletra llatina s majúscula amb accent agut","Latin capital letter s with caron":"lletra llatina s majúscula amb anticircumflex","Latin capital letter s with cedilla":"lletra llatina s majúscula amb trenc","Latin capital letter s with circumflex":"lletra llatina s majúscula amb accent circumflex","Latin capital letter t with caron":"lletra llatina t majúscula amb anticircumflex","Latin capital letter t with cedilla":"lletra llatina t majúscula amb trenc","Latin capital letter t with stroke":"lletra llatina t majúscula amb barra inscrita","Latin capital letter u with breve":"lletra llatina u majúscula amb breu","Latin capital letter u with double acute":"lletra llatina u majúscula amb accent agut doble","Latin capital letter u with macron":"lletra llatina u majúscula amb màcron","Latin capital letter u with ogonek":"lletra llatina u majúscula amb ogonek","Latin capital letter u with ring above":"lletra llatina u majúscula amb anell per sobre","Latin capital letter u with tilde":"lletra llatina u majúscula amb titlla","Latin capital letter w with circumflex":"lletra llatina w majúscula amb accent circumflex","Latin capital letter y with circumflex":"lletra llatina y majúscula amb accent circumflex","Latin capital letter y with diaeresis":"lletra llatina y majúscula amb dièresi","Latin capital letter z with acute":"lletra llatina z majúscula amb accent agut","Latin capital letter z with caron":"lletra llatina z majúscula amb anticircumflex","Latin capital letter z with dot above":"lletra llatina z majúscula amb un punt per sobre","Latin capital ligature ij":"lligadura llatina ij majúscula","Latin capital ligature oe":"lligadura llatina oe majúscula","Latin small letter a with breve":"lletra llatina a minúscula amb breu","Latin small letter a with macron":"lletra llatina a minúscula amb màcron","Latin small letter a with ogonek":"lletra llatina a minúscula amb ogonek","Latin small letter c with acute":"lletra llatina c minúscula amb accent agut","Latin small letter c with caron":"lletra llatina c minúscula amb anticircumflex","Latin small letter c with circumflex":"lletra llatina c minúscula amb accent circumflex","Latin small letter c with dot above":"lletra llatina c minúscula amb un punt per sobre","Latin small letter d with caron":"lletra llatina d minúscula amb anticircumflex","Latin small letter d with stroke":"lletra llatina d minúscula amb barra inscrita","Latin small letter dotless i":"lletra llatina i sense punt minúscula","Latin small letter e with breve":"lletra llatina e minúscula amb breu","Latin small letter e with caron":"lletra llatina e minúscula amb anticircumflex","Latin small letter e with dot above":"lletra llatina e minúscula amb un punt per sobre","Latin small letter e with macron":"lletra llatina e minúscula amb màcron","Latin small letter e with ogonek":"lletra llatina e minúscula amb ogonek","Latin small letter eng":"lletra llatina eng minúscula","Latin small letter f with hook":"lletra llatina f minúscula amb cua","Latin small letter g with breve":"lletra llatina g minúscula amb breu","Latin small letter g with cedilla":"lletra llatina g minúscula amb trenc","Latin small letter g with circumflex":"lletra llatina g minúscula amb accent circumflex","Latin small letter g with dot above":"lletra llatina g minúscula amb un punt per sobre","Latin small letter h with circumflex":"lletra llatina h minúscula amb accent circumflex","Latin small letter h with stroke":"lletra llatina h minúscula amb barra inscrita","Latin small letter i with breve":"lletra llatina i minúscula amb breu","Latin small letter i with macron":"lletra llatina i minúscula amb màcron","Latin small letter i with ogonek":"lletra llatina i minúscula amb ogonek","Latin small letter i with tilde":"lletra llatina i minúscula amb titlla","Latin small letter j with circumflex":"lletra llatina i minúscula amb circumflex","Latin small letter k with cedilla":"lletra llatina k minúscula amb trenc","Latin small letter kra":"lletra llatina kra minúscula","Latin small letter l with acute":"lletra llatina l minúscula amb accent agut","Latin small letter l with caron":"lletra llatina l minúscula amb anticircumflex","Latin small letter l with cedilla":"lletra llatina l minúscula amb trenc","Latin small letter l with middle dot":"lletra llatina l minúscula amb punt volat","Latin small letter l with stroke":"lletra llatina l minúscula amb barra inscrita","Latin small letter long s":"lletra llatina s llarga minúscula","Latin small letter n preceded by apostrophe":"Lletra llatina n minúscula precedida d'apòstrof","Latin small letter n with acute":"lletra llatina n minúscula amb accent agut","Latin small letter n with caron":"lletra llatina n minúscula amb anticircumflex","Latin small letter n with cedilla":"lletra llatina n minúscula amb trenc","Latin small letter o with breve":"lletra llatina o minúscula amb breu","Latin small letter o with double acute":"lletra llatina o minúscula amb accent agut doble","Latin small letter o with macron":"lletra llatina o minúscula amb màcron","Latin small letter r with acute":"lletra llatina r minúscula amb accent agut","Latin small letter r with caron":"lletra llatina r minúscula amb anticircumflex","Latin small letter r with cedilla":"lletra llatina r minúscula amb trenc","Latin small letter s with acute":"lletra llatina s minúscula amb accent agut","Latin small letter s with caron":"lletra llatina s minúscula amb anticircumflex","Latin small letter s with cedilla":"lletra llatina s minúscula amb trenc","Latin small letter s with circumflex":"lletra llatina s minúscula amb accent circumflex","Latin small letter t with caron":"lletra llatina t minúscula amb anticircumflex","Latin small letter t with cedilla":"lletra llatina t minúscula amb trenc","Latin small letter t with stroke":"lletra llatina t minúscula amb barra inscrita","Latin small letter u with breve":"lletra llatina u minúscula amb breu","Latin small letter u with double acute":"lletra llatina u minúscula amb accent agut doble","Latin small letter u with macron":"lletra llatina u minúscula amb màcron","Latin small letter u with ogonek":"lletra llatina u minúscula amb ogonek","Latin small letter u with ring above":"lletra llatina u minúscula amb anell per sobre","Latin small letter u with tilde":"lletra llatina u minúscula amb titlla","Latin small letter w with circumflex":"lletra llatina w minúscula amb accent circumflex","Latin small letter y with circumflex":"lletra llatina y minúscula amb accent circumflex","Latin small letter z with acute":"lletra llatina z minúscula amb accent agut","Latin small letter z with caron":"lletra llatina z minúscula amb anticircumflex","Latin small letter z with dot above":"lletra llatina z minúscula amb un punt per sobre","Latin small ligature ij":"lligadura llatina ij minúscula","Latin small ligature oe":"lligadura llatina oe minúscula","Left double quotation mark":"Cometes dobles a l'esquerra","Left single quotation mark":"Cometa simple cap a l'esquerra","Left-pointing double angle quotation mark":"Cometes angulars dobles cap a l'esquerra","leftwards arrow to bar":"fletxa cap a la barra de l'esquerra","leftwards dashed arrow":"fletxa discontínua cap a l'esquerra","leftwards double arrow":"fletxa doble cap a l'esquerra","Less-than or equal to":"més petit o igual que","Less-than sign":"signe de més petit que","Lira sign":"signe de la lira","Livre tournois sign":"signe de la lliura tornesa","Logical and":"Conjunció lògica","Logical or":"Disjunció lògica",Macron:"Màcron","Manat sign":"signe del manat","Mill sign":"signe del mill","Minus sign":"Signe de menys","Multiplication sign":"Signe de multiplicació","N-ary product":"Producte de n-ària","N-ary summation":"Suma n-ària",Nabla:"Gradient","Naira sign":"signe de la naira","New sheqel sign":"signe del nou xéquel","Nordic mark sign":"Signe del marc nòrdic","Not an element of":"No és un element de","Not equal to":"No igual a","Not sign":"Negació lògica","on with exclamation mark with left right arrow above":"on amb el signe d'exclamació i fletxa cap a l'esquerra i cap a la dreta per sobre",Overline:"Sobrelínia","Paragraph sign":"Signe de paràgraf","Partial differential":"Derivada parcial","Per mille sign":"Signe de per mil","Per ten thousand sign":"Signe de per deu mil","Peseta sign":"signe de la pesseta","Peso sign":"signe del peso","Plus-minus sign":"Signe de més o menys","Pound sign":"signe de la lliura","Proportional to":"Proporcional a","Question exclamation mark":"Signe d'exclamació d'interrogació","Registered sign":"Signe de marca registrada","Reversed paragraph sign":"Signe de paràgraf invertit","Right double quotation mark":"Cometes dobles a la dreta","Right single quotation mark":"Cometa simple cap a la dreta","Right-pointing double angle quotation mark":"Cometes angulars dobles cap a la dreta","rightwards arrow to bar":"fletxa cap a la barra de la dreta","rightwards dashed arrow":"fletxa discontínua cap a la dreta","rightwards double arrow":"fletxa doble cap a la dreta","Ruble sign":"signe del ruble","Rupee sign":"signe de la rupia","Section sign":"Signe de secció","Single left-pointing angle quotation mark":"Cometa angular simple cap a l'esquerra","Single low-9 quotation mark":"Cometes simples inferiors","Single right-pointing angle quotation mark":"Cometa angular simple cap a la dreta","soon with rightwards arrow above":"soon amb fletxa cap a la dreta per sobre","Special characters":"Caràcters especials","Spesmilo sign":"signe del spesmilo","Square root":"Arrel quadrada","Tenge sign":"signe del tenge","There exists":"Quantificador existencial","Tilde operator":"Operador de titlla","top with upwards arrow above":"top amb fletxa cap amunt per sobre","Trade mark sign":"Signe de marca comercial","Tugrik sign":"signe del tögrög","Turkish lira sign":"signe de la lira turca","Two dot leader":"Dos punts horitzontals",Union:"Unió","up down arrow with base":"fletxa cap amunt i cap avall amb base","upwards arrow to bar":"fletxa cap a la barra de dalt","upwards dashed arrow":"fletxa discontínua cap amunt","upwards double arrow":"fletxa doble cap amunt","Vulgar fraction one half":"Fracció comuna d'una meitat","Vulgar fraction one quarter":"Fracció comuna d'un quart","Vulgar fraction three quarters":"Fracció comuna de tres quarts","Won sign":"signe del won","Yen sign":"signe del ien"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(a){const l=a.ca=a.ca||{};l.dictionary=Object.assign(l.dictionary||{},{"Almost equal to":"Gairebé igual a",Angle:"Angle","Approximately equal to":"Aproximadament igual a","Asterisk operator":"Operador d'asterisc","Austral sign":"signe de l'austral","back with leftwards arrow above":"back amb fletxa cap a l'esquerra per sobre","Bitcoin sign":"signe del bitcoin","Cedi sign":"ok","Cent sign":"signe del cèntim","Character categories":"Categories de caràcters","Colon sign":"signe del còlon","Contains as member":"Conté com a membre","Copyright sign":"Signe de drets d'autor","Cruzeiro sign":"signe del cruzeiro","Currency sign":"signe de divisa","Degree sign":"Signe del grau","Division sign":"Signe de divisió","Dollar sign":"signe del dòlar","Dong sign":"signe del dong","Double dagger":"Doble obelisc o diesi","Double exclamation mark":"Doble signe d'exclamació","Double low-9 quotation mark":"Cometes dobles inferiors","Double question mark":"Doble signe d'interrogació","downwards arrow to bar":"fletxa cap a la barra de sota","downwards dashed arrow":"fletxa discontínua cap avall","downwards double arrow":"fletxa doble cap avall","downwards simple arrow":"fletxa simple cap avall","Drachma sign":"signe del dracma","Element of":"Element de","Em dash":"Guió llarg","Empty set":"Conjunt buit","En dash":"Guió mitjà","end with leftwards arrow above":"end amb fletxa cap a l'esquerra per sobre","Euro sign":"signe de l'euro","Euro-currency sign":"signe de l'eurodivisa","Exclamation question mark":"Signe d'interrogació d'exclamació","For all":"Per a tot","Fraction slash":"Barra obliqua de fracció","French franc sign":"signe del franc francès","German penny sign":"signe del cèntim alemany","Greater-than or equal to":"més gran o igual que","Greater-than sign":"signe de més gran que","Guarani sign":"signe del guaraní","Horizontal ellipsis":"Punts suspensius","Hryvnia sign":"signe de la hrívnia","Identical to":"Idèntic a","Indian rupee sign":"signe de la rupia índia",Infinity:"Infinit",Integral:"Integral",Intersection:"Intersecció","Inverted exclamation mark":"Signe d'exclamació invertit","Inverted question mark":"Signe d'interrogació invertit","Kip sign":"signe del kip","Latin capital letter a with breve":"lletra llatina a majúscula amb breu","Latin capital letter a with macron":"lletra llatina a majúscula amb màcron","Latin capital letter a with ogonek":"lletra llatina a majúscula amb ogonek","Latin capital letter c with acute":"lletra llatina c majúscula amb accent agut","Latin capital letter c with caron":"lletra llatina c majúscula amb anticircumflex","Latin capital letter c with circumflex":"lletra llatina c majúscula amb accent circumflex","Latin capital letter c with dot above":"lletra llatina c majúscula amb un punt per sobre","Latin capital letter d with caron":"lletra llatina d majúscula amb anticircumflex","Latin capital letter d with stroke":"lletra llatina d majúscula amb barra inscrita","Latin capital letter e with breve":"lletra llatina e majúscula amb breu","Latin capital letter e with caron":"lletra llatina e majúscula amb anticircumflex","Latin capital letter e with dot above":"lletra llatina e majúscula amb un punt per sobre","Latin capital letter e with macron":"lletra llatina e majúscula amb màcron","Latin capital letter e with ogonek":"lletra llatina e majúscula amb ogonek","Latin capital letter eng":"lletra llatina eng majúscula","Latin capital letter g with breve":"lletra llatina g majúscula amb breu","Latin capital letter g with cedilla":"lletra llatina g majúscula amb trenc","Latin capital letter g with circumflex":"lletra llatina g majúscula amb accent circumflex","Latin capital letter g with dot above":"lletra llatina g majúscula amb un punt per sobre","Latin capital letter h with circumflex":"lletra llatina h majúscula amb accent circumflex","Latin capital letter h with stroke":"lletra llatina h majúscula amb barra inscrita","Latin capital letter i with breve":"lletra llatina i majúscula amb breu","Latin capital letter i with dot above":"lletra llatina i majúscula amb un punt per sobre","Latin capital letter i with macron":"lletra llatina i majúscula amb màcron","Latin capital letter i with ogonek":"lletra llatina i majúscula amb ogonek","Latin capital letter i with tilde":"lletra llatina i majúscula amb titlla","Latin capital letter j with circumflex":"lletra llatina i majúscula amb circumflex","Latin capital letter k with cedilla":"lletra llatina k majúscula amb trenc","Latin capital letter l with acute":"lletra llatina l majúscula amb accent agut","Latin capital letter l with caron":"lletra llatina l majúscula amb anticircumflex","Latin capital letter l with cedilla":"lletra llatina l majúscula amb trenc","Latin capital letter l with middle dot":"lletra llatina l majúscula amb punt volat","Latin capital letter l with stroke":"lletra llatina l majúscula amb barra inscrita","Latin capital letter n with acute":"lletra llatina n majúscula amb accent agut","Latin capital letter n with caron":"lletra llatina n majúscula amb anticircumflex","Latin capital letter n with cedilla":"lletra llatina n majúscula amb trenc","Latin capital letter o with breve":"lletra llatina o majúscula amb breu","Latin capital letter o with double acute":"lletra llatina o majúscula amb accent agut doble","Latin capital letter o with macron":"lletra llatina o majúscula amb màcron","Latin capital letter r with acute":"lletra llatina r majúscula amb accent agut","Latin capital letter r with caron":"lletra llatina r majúscula amb anticircumflex","Latin capital letter r with cedilla":"lletra llatina r majúscula amb trenc","Latin capital letter s with acute":"lletra llatina s majúscula amb accent agut","Latin capital letter s with caron":"lletra llatina s majúscula amb anticircumflex","Latin capital letter s with cedilla":"lletra llatina s majúscula amb trenc","Latin capital letter s with circumflex":"lletra llatina s majúscula amb accent circumflex","Latin capital letter t with caron":"lletra llatina t majúscula amb anticircumflex","Latin capital letter t with cedilla":"lletra llatina t majúscula amb trenc","Latin capital letter t with stroke":"lletra llatina t majúscula amb barra inscrita","Latin capital letter u with breve":"lletra llatina u majúscula amb breu","Latin capital letter u with double acute":"lletra llatina u majúscula amb accent agut doble","Latin capital letter u with macron":"lletra llatina u majúscula amb màcron","Latin capital letter u with ogonek":"lletra llatina u majúscula amb ogonek","Latin capital letter u with ring above":"lletra llatina u majúscula amb anell per sobre","Latin capital letter u with tilde":"lletra llatina u majúscula amb titlla","Latin capital letter w with circumflex":"lletra llatina w majúscula amb accent circumflex","Latin capital letter y with circumflex":"lletra llatina y majúscula amb accent circumflex","Latin capital letter y with diaeresis":"lletra llatina y majúscula amb dièresi","Latin capital letter z with acute":"lletra llatina z majúscula amb accent agut","Latin capital letter z with caron":"lletra llatina z majúscula amb anticircumflex","Latin capital letter z with dot above":"lletra llatina z majúscula amb un punt per sobre","Latin capital ligature ij":"lligadura llatina ij majúscula","Latin capital ligature oe":"lligadura llatina oe majúscula","Latin small letter a with breve":"lletra llatina a minúscula amb breu","Latin small letter a with macron":"lletra llatina a minúscula amb màcron","Latin small letter a with ogonek":"lletra llatina a minúscula amb ogonek","Latin small letter c with acute":"lletra llatina c minúscula amb accent agut","Latin small letter c with caron":"lletra llatina c minúscula amb anticircumflex","Latin small letter c with circumflex":"lletra llatina c minúscula amb accent circumflex","Latin small letter c with dot above":"lletra llatina c minúscula amb un punt per sobre","Latin small letter d with caron":"lletra llatina d minúscula amb anticircumflex","Latin small letter d with stroke":"lletra llatina d minúscula amb barra inscrita","Latin small letter dotless i":"lletra llatina i sense punt minúscula","Latin small letter e with breve":"lletra llatina e minúscula amb breu","Latin small letter e with caron":"lletra llatina e minúscula amb anticircumflex","Latin small letter e with dot above":"lletra llatina e minúscula amb un punt per sobre","Latin small letter e with macron":"lletra llatina e minúscula amb màcron","Latin small letter e with ogonek":"lletra llatina e minúscula amb ogonek","Latin small letter eng":"lletra llatina eng minúscula","Latin small letter f with hook":"lletra llatina f minúscula amb cua","Latin small letter g with breve":"lletra llatina g minúscula amb breu","Latin small letter g with cedilla":"lletra llatina g minúscula amb trenc","Latin small letter g with circumflex":"lletra llatina g minúscula amb accent circumflex","Latin small letter g with dot above":"lletra llatina g minúscula amb un punt per sobre","Latin small letter h with circumflex":"lletra llatina h minúscula amb accent circumflex","Latin small letter h with stroke":"lletra llatina h minúscula amb barra inscrita","Latin small letter i with breve":"lletra llatina i minúscula amb breu","Latin small letter i with macron":"lletra llatina i minúscula amb màcron","Latin small letter i with ogonek":"lletra llatina i minúscula amb ogonek","Latin small letter i with tilde":"lletra llatina i minúscula amb titlla","Latin small letter j with circumflex":"lletra llatina i minúscula amb circumflex","Latin small letter k with cedilla":"lletra llatina k minúscula amb trenc","Latin small letter kra":"lletra llatina kra minúscula","Latin small letter l with acute":"lletra llatina l minúscula amb accent agut","Latin small letter l with caron":"lletra llatina l minúscula amb anticircumflex","Latin small letter l with cedilla":"lletra llatina l minúscula amb trenc","Latin small letter l with middle dot":"lletra llatina l minúscula amb punt volat","Latin small letter l with stroke":"lletra llatina l minúscula amb barra inscrita","Latin small letter long s":"lletra llatina s llarga minúscula","Latin small letter n preceded by apostrophe":"Lletra llatina n minúscula precedida d'apòstrof","Latin small letter n with acute":"lletra llatina n minúscula amb accent agut","Latin small letter n with caron":"lletra llatina n minúscula amb anticircumflex","Latin small letter n with cedilla":"lletra llatina n minúscula amb trenc","Latin small letter o with breve":"lletra llatina o minúscula amb breu","Latin small letter o with double acute":"lletra llatina o minúscula amb accent agut doble","Latin small letter o with macron":"lletra llatina o minúscula amb màcron","Latin small letter r with acute":"lletra llatina r minúscula amb accent agut","Latin small letter r with caron":"lletra llatina r minúscula amb anticircumflex","Latin small letter r with cedilla":"lletra llatina r minúscula amb trenc","Latin small letter s with acute":"lletra llatina s minúscula amb accent agut","Latin small letter s with caron":"lletra llatina s minúscula amb anticircumflex","Latin small letter s with cedilla":"lletra llatina s minúscula amb trenc","Latin small letter s with circumflex":"lletra llatina s minúscula amb accent circumflex","Latin small letter t with caron":"lletra llatina t minúscula amb anticircumflex","Latin small letter t with cedilla":"lletra llatina t minúscula amb trenc","Latin small letter t with stroke":"lletra llatina t minúscula amb barra inscrita","Latin small letter u with breve":"lletra llatina u minúscula amb breu","Latin small letter u with double acute":"lletra llatina u minúscula amb accent agut doble","Latin small letter u with macron":"lletra llatina u minúscula amb màcron","Latin small letter u with ogonek":"lletra llatina u minúscula amb ogonek","Latin small letter u with ring above":"lletra llatina u minúscula amb anell per sobre","Latin small letter u with tilde":"lletra llatina u minúscula amb titlla","Latin small letter w with circumflex":"lletra llatina w minúscula amb accent circumflex","Latin small letter y with circumflex":"lletra llatina y minúscula amb accent circumflex","Latin small letter z with acute":"lletra llatina z minúscula amb accent agut","Latin small letter z with caron":"lletra llatina z minúscula amb anticircumflex","Latin small letter z with dot above":"lletra llatina z minúscula amb un punt per sobre","Latin small ligature ij":"lligadura llatina ij minúscula","Latin small ligature oe":"lligadura llatina oe minúscula","Left double quotation mark":"Cometes dobles a l'esquerra","Left single quotation mark":"Cometa simple cap a l'esquerra","Left-pointing double angle quotation mark":"Cometes angulars dobles cap a l'esquerra","leftwards arrow to bar":"fletxa cap a la barra de l'esquerra","leftwards dashed arrow":"fletxa discontínua cap a l'esquerra","leftwards double arrow":"fletxa doble cap a l'esquerra","leftwards simple arrow":"fletxa simple cap a l'esquerra","Less-than or equal to":"més petit o igual que","Less-than sign":"signe de més petit que","Lira sign":"signe de la lira","Livre tournois sign":"signe de la lliura tornesa","Logical and":"Conjunció lògica","Logical or":"Disjunció lògica",Macron:"Màcron","Manat sign":"signe del manat","Mill sign":"signe del mill","Minus sign":"Signe de menys","Multiplication sign":"Signe de multiplicació","N-ary product":"Producte de n-ària","N-ary summation":"Suma n-ària",Nabla:"Gradient","Naira sign":"signe de la naira","New sheqel sign":"signe del nou xéquel","Nordic mark sign":"Signe del marc nòrdic","Not an element of":"No és un element de","Not equal to":"No igual a","Not sign":"Negació lògica","on with exclamation mark with left right arrow above":"on amb el signe d'exclamació i fletxa cap a l'esquerra i cap a la dreta per sobre",Overline:"Sobrelínia","Paragraph sign":"Signe de paràgraf","Partial differential":"Derivada parcial","Per mille sign":"Signe de per mil","Per ten thousand sign":"Signe de per deu mil","Peseta sign":"signe de la pesseta","Peso sign":"signe del peso","Plus-minus sign":"Signe de més o menys","Pound sign":"signe de la lliura","Proportional to":"Proporcional a","Question exclamation mark":"Signe d'exclamació d'interrogació","Registered sign":"Signe de marca registrada","Reversed paragraph sign":"Signe de paràgraf invertit","Right double quotation mark":"Cometes dobles a la dreta","Right single quotation mark":"Cometa simple cap a la dreta","Right-pointing double angle quotation mark":"Cometes angulars dobles cap a la dreta","rightwards arrow to bar":"fletxa cap a la barra de la dreta","rightwards dashed arrow":"fletxa discontínua cap a la dreta","rightwards double arrow":"fletxa doble cap a la dreta","rightwards simple arrow":"fletxa simple cap a la dreta","Ruble sign":"signe del ruble","Rupee sign":"signe de la rupia","Section sign":"Signe de secció","Single left-pointing angle quotation mark":"Cometa angular simple cap a l'esquerra","Single low-9 quotation mark":"Cometes simples inferiors","Single right-pointing angle quotation mark":"Cometa angular simple cap a la dreta","soon with rightwards arrow above":"soon amb fletxa cap a la dreta per sobre","Special characters":"Caràcters especials","Spesmilo sign":"signe del spesmilo","Square root":"Arrel quadrada","Tenge sign":"signe del tenge","There exists":"Quantificador existencial","Tilde operator":"Operador de titlla","top with upwards arrow above":"top amb fletxa cap amunt per sobre","Trade mark sign":"Signe de marca comercial","Tugrik sign":"signe del tögrög","Turkish lira sign":"signe de la lira turca","Two dot leader":"Dos punts horitzontals",Union:"Unió","up down arrow with base":"fletxa cap amunt i cap avall amb base","upwards arrow to bar":"fletxa cap a la barra de dalt","upwards dashed arrow":"fletxa discontínua cap amunt","upwards double arrow":"fletxa doble cap amunt","upwards simple arrow":"fletxa simple cap amunt","Vulgar fraction one half":"Fracció comuna d'una meitat","Vulgar fraction one quarter":"Fracció comuna d'un quart","Vulgar fraction three quarters":"Fracció comuna de tres quarts","Won sign":"signe del won","Yen sign":"signe del ien"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/special-characters/translations/cs.js b/core/assets/vendor/ckeditor5/special-characters/translations/cs.js
index 55d827f9e7..aedf6fd5ff 100644
--- a/core/assets/vendor/ckeditor5/special-characters/translations/cs.js
+++ b/core/assets/vendor/ckeditor5/special-characters/translations/cs.js
@@ -1 +1 @@
-!function(a){const t=a.cs=a.cs||{};t.dictionary=Object.assign(t.dictionary||{},{"Almost equal to":"Částečně rovný",Angle:"Úhel","Approximately equal to":"Aproximace","Asterisk operator":"Hvězdička / násobení","Austral sign":"Znak Austral","back with leftwards arrow above":"šipka zpět","Bitcoin sign":"Měna Bitcoin","Cedi sign":"Znak Cedi","Cent sign":"Znak cent","Character categories":"Kategorie znaků","Colon sign":"dvojtečka","Contains as member":"Obsahuje prvek","Copyright sign":"Copyright","Cruzeiro sign":"Měna Cruzeiro","Currency sign":"Znak měny","Degree sign":"Znak stupeň","Division sign":"Dělení","Dollar sign":"Znak Dolar","Dong sign":"Znak Dong","Double dagger":"Dvojkříž","Double exclamation mark":"Dvojitý vykřičník","Double low-9 quotation mark":"Dvojitá spodní uvozovka","Double question mark":"Dvojitý otazník","downwards arrow to bar":"šipka dolů do svislé čáry","downwards dashed arrow":"přerušovaná šipka dolů","downwards double arrow":"dvojitá šipka dolů","Drachma sign":"Znak Drachma","Element of":"Patří / Je součástí","Em dash":"Dlouhá pomlčka","Empty set":"Prázdná množina","En dash":"Pomlčka","end with leftwards arrow above":"šipka konec","Euro sign":"Znak Euro","Euro-currency sign":"Mena Euro","Exclamation question mark":"Vykřičník a otazník","For all":"Pro všechny prvky v množině","Fraction slash":"Lomítko / Dělení","French franc sign":"Měna Francouzský Frank","German penny sign":"Německá penny","Greater-than or equal to":"Větší nebo roven","Greater-than sign":"Větší než","Guarani sign":"Znak Guarani","Horizontal ellipsis":"Tečky","Hryvnia sign":"Znak Hryvnia","Identical to":"Identický k","Indian rupee sign":"Znak Indická rupia",Infinity:"Nekonečno",Integral:"Integrál",Intersection:"Průsečík / Průnik","Inverted exclamation mark":"Obrácený vykřičník","Inverted question mark":"Obrácený otazník","Kip sign":"Znak Kip","Latin capital letter a with breve":"Latinské velké písmeno a s háčkem","Latin capital letter a with macron":"Latinské velké písmeno a s čárou","Latin capital letter a with ogonek":"Latinské velké písmeno a s háčkem","Latin capital letter c with acute":"Latinské velké písmeno c s čárkou","Latin capital letter c with caron":"Latinské veľké písmeno c s mäkčeňom","Latin capital letter c with circumflex":"Latinské velké písmeno c s obráceným háčkem","Latin capital letter c with dot above":"Latinské velké písmeno c s tečkou nad znakem","Latin capital letter d with caron":"Latinské velké písmeno d s háčkem","Latin capital letter d with stroke":"Latinské velké písmeno d s přeškrtnutím","Latin capital letter e with breve":"Latinské velké písmeno e s háčkem","Latin capital letter e with caron":"Latinské velké písmeno e s háčkem","Latin capital letter e with dot above":"Latinské velké písmeno e s tečkou nad znakem","Latin capital letter e with macron":"Latinské velké písmeno e s čárou","Latin capital letter e with ogonek":"Latinské velké písmeno e s háčkem","Latin capital letter eng":"Latinské velké písmeno Eng","Latin capital letter g with breve":"Latinské velké písmeno g s háčkem","Latin capital letter g with cedilla":"Latinské velké písmeno g s háčkem","Latin capital letter g with circumflex":"Latinské velké písmeno g s obráceným háčkem","Latin capital letter g with dot above":"Latinské velké písmeno g s tečkou nad znakem","Latin capital letter h with circumflex":"Latinské velké písmeno h s obráceným háčkem","Latin capital letter h with stroke":"Latinské velké písmeno h s přeškrtnutím","Latin capital letter i with breve":"Latinské velké písmeno i s háčkem","Latin capital letter i with dot above":"Latinské velké písmeno i s tečkou nad znakem","Latin capital letter i with macron":"Latinské velké písmeno i s čárou","Latin capital letter i with ogonek":"Latinské velké písmeno i s háčkem","Latin capital letter i with tilde":"Latinské velké písmeno i s vlnovkou","Latin capital letter j with circumflex":"Latinské velké písmeno j s obráceným háčkem","Latin capital letter k with cedilla":"Latinské velké písmeno k s háčkem","Latin capital letter l with acute":"Latinské velké písmeno l s čárkou","Latin capital letter l with caron":"Latinské velké písmeno l s háčkem","Latin capital letter l with cedilla":"Latinské velké písmeno l s háčkem","Latin capital letter l with middle dot":"Latinské velké písmeno l s tečkou uprostřed","Latin capital letter l with stroke":"Latinské velké písmeno l s přeškrtnutím","Latin capital letter n with acute":"Latinské velké písmeno n s čárkou","Latin capital letter n with caron":"Latinské velké písmeno n s háčkem","Latin capital letter n with cedilla":"Latinské velké písmeno n s háčkem","Latin capital letter o with breve":"Latinské velké písmeno o s háčkem","Latin capital letter o with double acute":"Latinské velké písmeno o s čárkou","Latin capital letter o with macron":"Latinské velké písmeno o s čárou","Latin capital letter r with acute":"Latinské velké písmeno r s čárkou","Latin capital letter r with caron":"Latinské velké písmeno r s háčkem","Latin capital letter r with cedilla":"Latinské velké písmeno r s háčkem","Latin capital letter s with acute":"Latinské velké písmeno s s čárkou","Latin capital letter s with caron":"Latinské velké písmeno s s háčkem","Latin capital letter s with cedilla":"Latinské velké písmeno s s háčkem","Latin capital letter s with circumflex":"Latinské velké písmeno s s obráceným háčkem","Latin capital letter t with caron":"Latinské velké písmeno t s háčkem","Latin capital letter t with cedilla":"Latinské velké písmeno t s háčkem","Latin capital letter t with stroke":"Latinské velké písmeno t s přeškrtnutím","Latin capital letter u with breve":"Latinské velké písmeno u s háčkem","Latin capital letter u with double acute":"Latinské velké písmeno u s dvojitým akcentu","Latin capital letter u with macron":"Latinské velké písmeno u s čárou","Latin capital letter u with ogonek":"Latinské velké písmeno u s háčkem","Latin capital letter u with ring above":"Latinské velké písmeno u s kroužkem nad znakem","Latin capital letter u with tilde":"Latinské velké písmeno u s vlnovkou","Latin capital letter w with circumflex":"Latinské velké písmeno w s obráceným háčkem","Latin capital letter y with circumflex":"Latinské velké písmeno y s obráceným háčkem","Latin capital letter y with diaeresis":"Latinské velké písmeno y s dvojtečkou nad znakem","Latin capital letter z with acute":"Latinské velké písmeno z s čárkou","Latin capital letter z with caron":"Latinské velké písmeno z s háčkem","Latin capital letter z with dot above":"Latinské velké písmeno z s tečkou nad znakem","Latin capital ligature ij":"Latinský velký znak ligatury ij","Latin capital ligature oe":"Latinský velký znak ligatury oe","Latin small letter a with breve":"Latinské malé písmeno a s háčkem","Latin small letter a with macron":"Latinské malé písmeno a s čárou","Latin small letter a with ogonek":"Latinské malé písmeno a s háčkem","Latin small letter c with acute":"Latinské malé písmeno c s čárkou","Latin small letter c with caron":"Latinské malé písmeno c s háčkem","Latin small letter c with circumflex":"Latinské malé písmeno c s obráceným háčkem","Latin small letter c with dot above":"Latinské malé písmeno c s tečkou nad znakem","Latin small letter d with caron":"Latinské malé písmeno d s háčkem","Latin small letter d with stroke":"Latinské malé písmeno d s přeškrtnutím","Latin small letter dotless i":"Latinské malé písmeno i bez tečky","Latin small letter e with breve":"Latinské malé písmeno e s háčkem","Latin small letter e with caron":"Latinské malé písmeno e s háčkem","Latin small letter e with dot above":"Latinské malé písmeno e s tečkou nad znakem","Latin small letter e with macron":"Latinské malé písmeno e s čárou","Latin small letter e with ogonek":"Latinské malé písmeno e s háčkem","Latin small letter eng":"Latinské malé písmeno Eng","Latin small letter f with hook":"Funkce","Latin small letter g with breve":"Latinské malé písmeno g s háčkem","Latin small letter g with cedilla":"Latinské malé písmeno g s háčkem","Latin small letter g with circumflex":"Latinské malé písmeno g s obráceným háčkem","Latin small letter g with dot above":"Latinské malé písmeno g s tečkou nad znakem","Latin small letter h with circumflex":"Latinské malé písmeno h s obráceným háčkem","Latin small letter h with stroke":"Latinské malé písmeno h s přeškrtnutím","Latin small letter i with breve":"Latinské malé písmeno i s háčkem","Latin small letter i with macron":"Latinské malé písmeno i s čárou","Latin small letter i with ogonek":"Latinské malé písmeno i s háčkem","Latin small letter i with tilde":"Latinské malé písmeno i s vlnovkou","Latin small letter j with circumflex":"Latinské malé písmeno j s obráceným háčkem","Latin small letter k with cedilla":"Latinské malé písmeno k s háčkem","Latin small letter kra":"Latinský malý znak Kra","Latin small letter l with acute":"Latinské malé písmeno l s čárkou","Latin small letter l with caron":"Latinské malé písmeno l s háčkem","Latin small letter l with cedilla":"Latinské malé písmeno l s háčkem","Latin small letter l with middle dot":"Latinské malé písmeno l s tečkou uprostřed","Latin small letter l with stroke":"Latinské malé písmeno l s přeškrtnutím","Latin small letter long s":"Malé dlouhé písmeno s","Latin small letter n preceded by apostrophe":"Latinské malé písmeno n s apostrofem","Latin small letter n with acute":"Latinské malé písmeno n s čárkou","Latin small letter n with caron":"Latinské malé písmeno n s háčkem","Latin small letter n with cedilla":"Latinské malé písmeno n s háčkem","Latin small letter o with breve":"Latinské malé písmeno o s háčkem","Latin small letter o with double acute":"Latinské malé písmeno o s čárkou","Latin small letter o with macron":"Latinské malé písmeno o s čárou","Latin small letter r with acute":"Latinské malé písmeno r s čárkou","Latin small letter r with caron":"Latinské malé písmeno r s háčkem","Latin small letter r with cedilla":"Latinské malé písmeno r s háčkem","Latin small letter s with acute":"Latinské malé písmeno s s čárkou","Latin small letter s with caron":"Latinské malé písmeno s s háčkem","Latin small letter s with cedilla":"Latinské malé písmeno s s háčkem","Latin small letter s with circumflex":"Latinské malé písmeno s s obráceným háčkem","Latin small letter t with caron":"Latinské malé písmeno t s háčkem","Latin small letter t with cedilla":"Latinské malé písmeno t s háčkem","Latin small letter t with stroke":"Latinské malé písmeno t s přeškrtnutím","Latin small letter u with breve":"Latinské malé písmeno u s háčkem","Latin small letter u with double acute":"Latinské malé písmeno u s dvojitým akcentu","Latin small letter u with macron":"Latinské malé písmeno o s čárou","Latin small letter u with ogonek":"Latinské malé písmeno u s háčkem","Latin small letter u with ring above":"Latinské malé písmeno u s kroužkem nad znakem","Latin small letter u with tilde":"Latinské malé písmeno u s vlnovkou","Latin small letter w with circumflex":"Latinské malé písmeno w s obráceným háčkem","Latin small letter y with circumflex":"Latinské malé písmeno y s obráteným mäkčeňom","Latin small letter z with acute":"Latinské malé písmeno z s čárkou","Latin small letter z with caron":"Malé písmeno s z háčkem","Latin small letter z with dot above":"Latinské malé písmeno z s tečkou nad znakem","Latin small ligature ij":"Latinský malý znak ligatury ij","Latin small ligature oe":"Latinský malý znak ligatury oe","Left double quotation mark":"Levá dvojitá uvozovka","Left single quotation mark":"Levá uvozovka","Left-pointing double angle quotation mark":"Dvojitá šipka ukazující do leva","leftwards arrow to bar":"šipka doleva do svislé čáry","leftwards dashed arrow":"přerušovaná šipka doleva","leftwards double arrow":"dvojitá šipka doleva","Less-than or equal to":"Menší nebo roven","Less-than sign":"Menší než","Lira sign":"Měna Lira","Livre tournois sign":"Znak Livre tournois","Logical and":"Logický AND","Logical or":"Logický OR",Macron:"Horní čára","Manat sign":"Znak Manat","Mill sign":"Znak Mill","Minus sign":"Znak mínus","Multiplication sign":"Násobení","N-ary product":"Znak cyklického násobení","N-ary summation":"Znak cyklického sčítání",Nabla:"Nabla","Naira sign":"Znak Naira","New sheqel sign":"Nový znak šekel","Nordic mark sign":"Znak Nórska marka","Not an element of":"Nepatří / Není součástí","Not equal to":"Nerovná se","Not sign":"Není rovný","on with exclamation mark with left right arrow above":"ON s vykřičníkem se šipkou doleva doprava nahoru",Overline:"Přeškrtnutí","Paragraph sign":"Odstavec","Partial differential":"Parciální diference","Per mille sign":"Promile","Per ten thousand sign":"Na deset tisíc","Peseta sign":"Znak Peseta","Peso sign":"Znak Peso","Plus-minus sign":"Znak plus-minus","Pound sign":"Znak Libra","Proportional to":"Úměrný k","Question exclamation mark":"Otazník a vykřičník","Registered sign":"Registrovaný","Reversed paragraph sign":"Obrácený znak odstavce","Right double quotation mark":"Pravá dvojitá uvozovka","Right single quotation mark":"Pravá uvozovka","Right-pointing double angle quotation mark":"Dvojitá šipka ukazující do prava","rightwards arrow to bar":"šipka doprava do svislé čáry","rightwards dashed arrow":"čárkovaná šipka doprava","rightwards double arrow":"dvojitá šipka doprava","Ruble sign":"Znak Ruble","Rupee sign":"Znak Rupee","Section sign":"Sekce","Single left-pointing angle quotation mark":"Šipka ukazující do leva","Single low-9 quotation mark":"Spodní uvozovka","Single right-pointing angle quotation mark":"Šipka ukazující do prava","soon with rightwards arrow above":"brzy se šipkou doprava nahoru","Special characters":"Speciální znaky","Spesmilo sign":"Znak Spesmilo","Square root":"Odmocnina","Tenge sign":"Znak Tenge","There exists":"Existuje v množině","Tilde operator":"Vlnovka","top with upwards arrow above":"TOP se šipkou nahoru","Trade mark sign":"Ochranná známka","Tugrik sign":"Znak Tugrik","Turkish lira sign":"Znak Turecká líra","Two dot leader":"Horizontální dvojtečka",Union:"Sjednocení","up down arrow with base":"Šipka nahoru-dolů od základny","upwards arrow to bar":"šipka nahoru do svislé čáry","upwards dashed arrow":"čárkovaná šipka nahoru","upwards double arrow":"dvojitá šipka nahoru","Vulgar fraction one half":"Polovina","Vulgar fraction one quarter":"Jedna čtvrtina","Vulgar fraction three quarters":"Tři čtvrtiny","Won sign":"Znak Won","Yen sign":"Znak Jen"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(a){const t=a.cs=a.cs||{};t.dictionary=Object.assign(t.dictionary||{},{"Almost equal to":"Částečně rovný",Angle:"Úhel","Approximately equal to":"Aproximace","Asterisk operator":"Hvězdička / násobení","Austral sign":"Znak Austral","back with leftwards arrow above":"šipka zpět","Bitcoin sign":"Měna Bitcoin","Cedi sign":"Znak Cedi","Cent sign":"Znak cent","Character categories":"Kategorie znaků","Colon sign":"dvojtečka","Contains as member":"Obsahuje prvek","Copyright sign":"Copyright","Cruzeiro sign":"Měna Cruzeiro","Currency sign":"Znak měny","Degree sign":"Znak stupeň","Division sign":"Dělení","Dollar sign":"Znak Dolar","Dong sign":"Znak Dong","Double dagger":"Dvojkříž","Double exclamation mark":"Dvojitý vykřičník","Double low-9 quotation mark":"Dvojitá spodní uvozovka","Double question mark":"Dvojitý otazník","downwards arrow to bar":"šipka dolů do svislé čáry","downwards dashed arrow":"přerušovaná šipka dolů","downwards double arrow":"dvojitá šipka dolů","downwards simple arrow":"jednoduchá šipka dolů","Drachma sign":"Znak Drachma","Element of":"Patří / Je součástí","Em dash":"Dlouhá pomlčka","Empty set":"Prázdná množina","En dash":"Pomlčka","end with leftwards arrow above":"šipka konec","Euro sign":"Znak Euro","Euro-currency sign":"Mena Euro","Exclamation question mark":"Vykřičník a otazník","For all":"Pro všechny prvky v množině","Fraction slash":"Lomítko / Dělení","French franc sign":"Měna Francouzský Frank","German penny sign":"Německá penny","Greater-than or equal to":"Větší nebo roven","Greater-than sign":"Větší než","Guarani sign":"Znak Guarani","Horizontal ellipsis":"Tečky","Hryvnia sign":"Znak Hryvnia","Identical to":"Identický k","Indian rupee sign":"Znak Indická rupia",Infinity:"Nekonečno",Integral:"Integrál",Intersection:"Průsečík / Průnik","Inverted exclamation mark":"Obrácený vykřičník","Inverted question mark":"Obrácený otazník","Kip sign":"Znak Kip","Latin capital letter a with breve":"Latinské velké písmeno a s háčkem","Latin capital letter a with macron":"Latinské velké písmeno a s čárou","Latin capital letter a with ogonek":"Latinské velké písmeno a s háčkem","Latin capital letter c with acute":"Latinské velké písmeno c s čárkou","Latin capital letter c with caron":"Latinské veľké písmeno c s mäkčeňom","Latin capital letter c with circumflex":"Latinské velké písmeno c s obráceným háčkem","Latin capital letter c with dot above":"Latinské velké písmeno c s tečkou nad znakem","Latin capital letter d with caron":"Latinské velké písmeno d s háčkem","Latin capital letter d with stroke":"Latinské velké písmeno d s přeškrtnutím","Latin capital letter e with breve":"Latinské velké písmeno e s háčkem","Latin capital letter e with caron":"Latinské velké písmeno e s háčkem","Latin capital letter e with dot above":"Latinské velké písmeno e s tečkou nad znakem","Latin capital letter e with macron":"Latinské velké písmeno e s čárou","Latin capital letter e with ogonek":"Latinské velké písmeno e s háčkem","Latin capital letter eng":"Latinské velké písmeno Eng","Latin capital letter g with breve":"Latinské velké písmeno g s háčkem","Latin capital letter g with cedilla":"Latinské velké písmeno g s háčkem","Latin capital letter g with circumflex":"Latinské velké písmeno g s obráceným háčkem","Latin capital letter g with dot above":"Latinské velké písmeno g s tečkou nad znakem","Latin capital letter h with circumflex":"Latinské velké písmeno h s obráceným háčkem","Latin capital letter h with stroke":"Latinské velké písmeno h s přeškrtnutím","Latin capital letter i with breve":"Latinské velké písmeno i s háčkem","Latin capital letter i with dot above":"Latinské velké písmeno i s tečkou nad znakem","Latin capital letter i with macron":"Latinské velké písmeno i s čárou","Latin capital letter i with ogonek":"Latinské velké písmeno i s háčkem","Latin capital letter i with tilde":"Latinské velké písmeno i s vlnovkou","Latin capital letter j with circumflex":"Latinské velké písmeno j s obráceným háčkem","Latin capital letter k with cedilla":"Latinské velké písmeno k s háčkem","Latin capital letter l with acute":"Latinské velké písmeno l s čárkou","Latin capital letter l with caron":"Latinské velké písmeno l s háčkem","Latin capital letter l with cedilla":"Latinské velké písmeno l s háčkem","Latin capital letter l with middle dot":"Latinské velké písmeno l s tečkou uprostřed","Latin capital letter l with stroke":"Latinské velké písmeno l s přeškrtnutím","Latin capital letter n with acute":"Latinské velké písmeno n s čárkou","Latin capital letter n with caron":"Latinské velké písmeno n s háčkem","Latin capital letter n with cedilla":"Latinské velké písmeno n s háčkem","Latin capital letter o with breve":"Latinské velké písmeno o s háčkem","Latin capital letter o with double acute":"Latinské velké písmeno o s čárkou","Latin capital letter o with macron":"Latinské velké písmeno o s čárou","Latin capital letter r with acute":"Latinské velké písmeno r s čárkou","Latin capital letter r with caron":"Latinské velké písmeno r s háčkem","Latin capital letter r with cedilla":"Latinské velké písmeno r s háčkem","Latin capital letter s with acute":"Latinské velké písmeno s s čárkou","Latin capital letter s with caron":"Latinské velké písmeno s s háčkem","Latin capital letter s with cedilla":"Latinské velké písmeno s s háčkem","Latin capital letter s with circumflex":"Latinské velké písmeno s s obráceným háčkem","Latin capital letter t with caron":"Latinské velké písmeno t s háčkem","Latin capital letter t with cedilla":"Latinské velké písmeno t s háčkem","Latin capital letter t with stroke":"Latinské velké písmeno t s přeškrtnutím","Latin capital letter u with breve":"Latinské velké písmeno u s háčkem","Latin capital letter u with double acute":"Latinské velké písmeno u s dvojitým akcentu","Latin capital letter u with macron":"Latinské velké písmeno u s čárou","Latin capital letter u with ogonek":"Latinské velké písmeno u s háčkem","Latin capital letter u with ring above":"Latinské velké písmeno u s kroužkem nad znakem","Latin capital letter u with tilde":"Latinské velké písmeno u s vlnovkou","Latin capital letter w with circumflex":"Latinské velké písmeno w s obráceným háčkem","Latin capital letter y with circumflex":"Latinské velké písmeno y s obráceným háčkem","Latin capital letter y with diaeresis":"Latinské velké písmeno y s dvojtečkou nad znakem","Latin capital letter z with acute":"Latinské velké písmeno z s čárkou","Latin capital letter z with caron":"Latinské velké písmeno z s háčkem","Latin capital letter z with dot above":"Latinské velké písmeno z s tečkou nad znakem","Latin capital ligature ij":"Latinský velký znak ligatury ij","Latin capital ligature oe":"Latinský velký znak ligatury oe","Latin small letter a with breve":"Latinské malé písmeno a s háčkem","Latin small letter a with macron":"Latinské malé písmeno a s čárou","Latin small letter a with ogonek":"Latinské malé písmeno a s háčkem","Latin small letter c with acute":"Latinské malé písmeno c s čárkou","Latin small letter c with caron":"Latinské malé písmeno c s háčkem","Latin small letter c with circumflex":"Latinské malé písmeno c s obráceným háčkem","Latin small letter c with dot above":"Latinské malé písmeno c s tečkou nad znakem","Latin small letter d with caron":"Latinské malé písmeno d s háčkem","Latin small letter d with stroke":"Latinské malé písmeno d s přeškrtnutím","Latin small letter dotless i":"Latinské malé písmeno i bez tečky","Latin small letter e with breve":"Latinské malé písmeno e s háčkem","Latin small letter e with caron":"Latinské malé písmeno e s háčkem","Latin small letter e with dot above":"Latinské malé písmeno e s tečkou nad znakem","Latin small letter e with macron":"Latinské malé písmeno e s čárou","Latin small letter e with ogonek":"Latinské malé písmeno e s háčkem","Latin small letter eng":"Latinské malé písmeno Eng","Latin small letter f with hook":"Funkce","Latin small letter g with breve":"Latinské malé písmeno g s háčkem","Latin small letter g with cedilla":"Latinské malé písmeno g s háčkem","Latin small letter g with circumflex":"Latinské malé písmeno g s obráceným háčkem","Latin small letter g with dot above":"Latinské malé písmeno g s tečkou nad znakem","Latin small letter h with circumflex":"Latinské malé písmeno h s obráceným háčkem","Latin small letter h with stroke":"Latinské malé písmeno h s přeškrtnutím","Latin small letter i with breve":"Latinské malé písmeno i s háčkem","Latin small letter i with macron":"Latinské malé písmeno i s čárou","Latin small letter i with ogonek":"Latinské malé písmeno i s háčkem","Latin small letter i with tilde":"Latinské malé písmeno i s vlnovkou","Latin small letter j with circumflex":"Latinské malé písmeno j s obráceným háčkem","Latin small letter k with cedilla":"Latinské malé písmeno k s háčkem","Latin small letter kra":"Latinský malý znak Kra","Latin small letter l with acute":"Latinské malé písmeno l s čárkou","Latin small letter l with caron":"Latinské malé písmeno l s háčkem","Latin small letter l with cedilla":"Latinské malé písmeno l s háčkem","Latin small letter l with middle dot":"Latinské malé písmeno l s tečkou uprostřed","Latin small letter l with stroke":"Latinské malé písmeno l s přeškrtnutím","Latin small letter long s":"Malé dlouhé písmeno s","Latin small letter n preceded by apostrophe":"Latinské malé písmeno n s apostrofem","Latin small letter n with acute":"Latinské malé písmeno n s čárkou","Latin small letter n with caron":"Latinské malé písmeno n s háčkem","Latin small letter n with cedilla":"Latinské malé písmeno n s háčkem","Latin small letter o with breve":"Latinské malé písmeno o s háčkem","Latin small letter o with double acute":"Latinské malé písmeno o s čárkou","Latin small letter o with macron":"Latinské malé písmeno o s čárou","Latin small letter r with acute":"Latinské malé písmeno r s čárkou","Latin small letter r with caron":"Latinské malé písmeno r s háčkem","Latin small letter r with cedilla":"Latinské malé písmeno r s háčkem","Latin small letter s with acute":"Latinské malé písmeno s s čárkou","Latin small letter s with caron":"Latinské malé písmeno s s háčkem","Latin small letter s with cedilla":"Latinské malé písmeno s s háčkem","Latin small letter s with circumflex":"Latinské malé písmeno s s obráceným háčkem","Latin small letter t with caron":"Latinské malé písmeno t s háčkem","Latin small letter t with cedilla":"Latinské malé písmeno t s háčkem","Latin small letter t with stroke":"Latinské malé písmeno t s přeškrtnutím","Latin small letter u with breve":"Latinské malé písmeno u s háčkem","Latin small letter u with double acute":"Latinské malé písmeno u s dvojitým akcentu","Latin small letter u with macron":"Latinské malé písmeno o s čárou","Latin small letter u with ogonek":"Latinské malé písmeno u s háčkem","Latin small letter u with ring above":"Latinské malé písmeno u s kroužkem nad znakem","Latin small letter u with tilde":"Latinské malé písmeno u s vlnovkou","Latin small letter w with circumflex":"Latinské malé písmeno w s obráceným háčkem","Latin small letter y with circumflex":"Latinské malé písmeno y s obráteným mäkčeňom","Latin small letter z with acute":"Latinské malé písmeno z s čárkou","Latin small letter z with caron":"Malé písmeno s z háčkem","Latin small letter z with dot above":"Latinské malé písmeno z s tečkou nad znakem","Latin small ligature ij":"Latinský malý znak ligatury ij","Latin small ligature oe":"Latinský malý znak ligatury oe","Left double quotation mark":"Levá dvojitá uvozovka","Left single quotation mark":"Levá uvozovka","Left-pointing double angle quotation mark":"Dvojitá šipka ukazující do leva","leftwards arrow to bar":"šipka doleva do svislé čáry","leftwards dashed arrow":"přerušovaná šipka doleva","leftwards double arrow":"dvojitá šipka doleva","leftwards simple arrow":"jednoduchá šipka doleva","Less-than or equal to":"Menší nebo roven","Less-than sign":"Menší než","Lira sign":"Měna Lira","Livre tournois sign":"Znak Livre tournois","Logical and":"Logický AND","Logical or":"Logický OR",Macron:"Horní čára","Manat sign":"Znak Manat","Mill sign":"Znak Mill","Minus sign":"Znak mínus","Multiplication sign":"Násobení","N-ary product":"Znak cyklického násobení","N-ary summation":"Znak cyklického sčítání",Nabla:"Nabla","Naira sign":"Znak Naira","New sheqel sign":"Nový znak šekel","Nordic mark sign":"Znak Nórska marka","Not an element of":"Nepatří / Není součástí","Not equal to":"Nerovná se","Not sign":"Není rovný","on with exclamation mark with left right arrow above":"ON s vykřičníkem se šipkou doleva doprava nahoru",Overline:"Přeškrtnutí","Paragraph sign":"Odstavec","Partial differential":"Parciální diference","Per mille sign":"Promile","Per ten thousand sign":"Na deset tisíc","Peseta sign":"Znak Peseta","Peso sign":"Znak Peso","Plus-minus sign":"Znak plus-minus","Pound sign":"Znak Libra","Proportional to":"Úměrný k","Question exclamation mark":"Otazník a vykřičník","Registered sign":"Registrovaný","Reversed paragraph sign":"Obrácený znak odstavce","Right double quotation mark":"Pravá dvojitá uvozovka","Right single quotation mark":"Pravá uvozovka","Right-pointing double angle quotation mark":"Dvojitá šipka ukazující do prava","rightwards arrow to bar":"šipka doprava do svislé čáry","rightwards dashed arrow":"čárkovaná šipka doprava","rightwards double arrow":"dvojitá šipka doprava","rightwards simple arrow":"jednoduchá šipka doprava","Ruble sign":"Znak Ruble","Rupee sign":"Znak Rupee","Section sign":"Sekce","Single left-pointing angle quotation mark":"Šipka ukazující do leva","Single low-9 quotation mark":"Spodní uvozovka","Single right-pointing angle quotation mark":"Šipka ukazující do prava","soon with rightwards arrow above":"brzy se šipkou doprava nahoru","Special characters":"Speciální znaky","Spesmilo sign":"Znak Spesmilo","Square root":"Odmocnina","Tenge sign":"Znak Tenge","There exists":"Existuje v množině","Tilde operator":"Vlnovka","top with upwards arrow above":"TOP se šipkou nahoru","Trade mark sign":"Ochranná známka","Tugrik sign":"Znak Tugrik","Turkish lira sign":"Znak Turecká líra","Two dot leader":"Horizontální dvojtečka",Union:"Sjednocení","up down arrow with base":"Šipka nahoru-dolů od základny","upwards arrow to bar":"šipka nahoru do svislé čáry","upwards dashed arrow":"čárkovaná šipka nahoru","upwards double arrow":"dvojitá šipka nahoru","upwards simple arrow":"jednoduchá šipka nahoru","Vulgar fraction one half":"Polovina","Vulgar fraction one quarter":"Jedna čtvrtina","Vulgar fraction three quarters":"Tři čtvrtiny","Won sign":"Znak Won","Yen sign":"Znak Jen"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/special-characters/translations/da.js b/core/assets/vendor/ckeditor5/special-characters/translations/da.js
index 8bedab1df1..010612d14d 100644
--- a/core/assets/vendor/ckeditor5/special-characters/translations/da.js
+++ b/core/assets/vendor/ckeditor5/special-characters/translations/da.js
@@ -1 +1 @@
-!function(t){const e=t.da=t.da||{};e.dictionary=Object.assign(e.dictionary||{},{"Almost equal to":"Næsten lig med",Angle:"Vinkel","Approximately equal to":"Nogenlunde lig med","Asterisk operator":"Asterisk-operator","Austral sign":"Austral-tegn","back with leftwards arrow above":"tilbage med venstrepegende pil over","Bitcoin sign":"Bitcoin-tegn","Cedi sign":"Cedi-tegn","Cent sign":"Cent-tegn","Character categories":"Tegnkategorier","Colon sign":"Kolontegn","Contains as member":"Element i","Copyright sign":"Copyright-tegnb","Cruzeiro sign":"Cruzeiro-tegn","Currency sign":"Valuta-tegn","Degree sign":"Grad-tegn","Division sign":"Divisionstegn","Dollar sign":"Dollartegn","Dong sign":"Dong-tegn","Double dagger":"Dobbeltobelisk","Double exclamation mark":"Dobbelt udråbstegn","Double low-9 quotation mark":"Dobbelt lav-9 citationstegn","Double question mark":"Dobbelt spørgsmålstegn","downwards arrow to bar":"nedadpegende pil mod bjælke","downwards dashed arrow":"nedadpegende stiplet pil","downwards double arrow":"nedadpegende dobbeltpil","Drachma sign":"Drakmer-tegn","Element of":"Element af","Em dash":"Em-bindestreg","Empty set":"Tomt sæt","En dash":"En-bindestreg","end with leftwards arrow above":"afslut med venstrepegende pil over","Euro sign":"Eurotegn","Euro-currency sign":"Euro-valutategn","Exclamation question mark":"Udråbstegn-spørgsmålstegn","For all":"For alle","Fraction slash":"Brøk-tegn","French franc sign":"Franske franc-tegn","German penny sign":"Tysk penny-tegn","Greater-than or equal to":"Større end eller lig med-tegn","Greater-than sign":"Større end-tegn","Guarani sign":"Guarani-tegn","Horizontal ellipsis":"Horisontal ellipse","Hryvnia sign":"Hryvnia-tegn","Identical to":"Lig med","Indian rupee sign":"Indisk rupee-tegn",Infinity:"Uendelig",Integral:"Integral",Intersection:"Intersektion","Inverted exclamation mark":"Omvendt udråbstegn","Inverted question mark":"Omvendt spørgsmålstegn","Kip sign":"Kip-tegn","Latin capital letter a with breve":"Latinsk stort bogstav a med en breve","Latin capital letter a with macron":"Latinsk stort bogstav a med macron","Latin capital letter a with ogonek":"Latinsk stort bogstav a med ogonek","Latin capital letter c with acute":"Latinsk stort bogstav c med accent","Latin capital letter c with caron":"Latinsk stort bogstav c med caron","Latin capital letter c with circumflex":"Latinsk stort bogstav c med cirkumfleks","Latin capital letter c with dot above":"Latinsk stort bogstav c med prik over","Latin capital letter d with caron":"Latinsk stort bogstav d med caron","Latin capital letter d with stroke":"Latinsk stort bogstav d med streg","Latin capital letter e with breve":"Latinsk stort bogstav e med en breve","Latin capital letter e with caron":"Latinsk stort bogstav e med caron","Latin capital letter e with dot above":"Latinsk stort bogstav e med en prik over","Latin capital letter e with macron":"Latinsk stort bogstav e med macron","Latin capital letter e with ogonek":"Latinsk stort bogstav e med ogonek","Latin capital letter eng":"Latinsk stort bogstav eng","Latin capital letter g with breve":"Latinsk stort bogstav g med en breve","Latin capital letter g with cedilla":"Latinsk stort bogstav g med cedille","Latin capital letter g with circumflex":"Latinsk stort bogstav g med cirkumfleks","Latin capital letter g with dot above":"Latinsk stort bogstav g med en prik over","Latin capital letter h with circumflex":"Latinsk stort bogstav h med cirkumfleks","Latin capital letter h with stroke":"Latinsk stort bogstav h med streg","Latin capital letter i with breve":"Latinsk stort bogstav i med en breve","Latin capital letter i with dot above":"Latinsk stort bogstav i med en prik over","Latin capital letter i with macron":"Latinsk stort bogstav i med macron","Latin capital letter i with ogonek":"Latinsk stort bogstav i med ogonek","Latin capital letter i with tilde":"Latinsk stort bogstav i med tilde","Latin capital letter j with circumflex":"Latinsk stort bogstav j med cirkumfleks","Latin capital letter k with cedilla":"Latinsk stort bogstav k med cedille","Latin capital letter l with acute":"Latinsk stort bogstav l med akut accent","Latin capital letter l with caron":"Latinsk stort bogstav l med caron","Latin capital letter l with cedilla":"Latinsk stort bogstav l med cedille","Latin capital letter l with middle dot":"Latinsk stort bogstav l med prik i midten","Latin capital letter l with stroke":"Latinsk stort bogstav l med streg","Latin capital letter n with acute":"Latinsk stort bogstav n med akut accent","Latin capital letter n with caron":"Latinsk stort bogstav n med caron","Latin capital letter n with cedilla":"Latinsk stort bogstav n med cedille","Latin capital letter o with breve":"Latinsk stort bogstav o med en breve","Latin capital letter o with double acute":"Latinsk stort bogstav o med dobbelt akut accent","Latin capital letter o with macron":"Latinsk stort bogstav o med macron","Latin capital letter r with acute":"Latinsk stort bogstav r med akut accent","Latin capital letter r with caron":"Latinsk stort bogstav r med caron","Latin capital letter r with cedilla":"Latinsk stort bogstav r med cedille","Latin capital letter s with acute":"Latinsk stort bogstav s med akut accent","Latin capital letter s with caron":"Latinsk stort bogstav s med caron","Latin capital letter s with cedilla":"Latinsk stort bogstav s med cedille","Latin capital letter s with circumflex":"Latinsk stort bogstav s med cirkumfleks","Latin capital letter t with caron":"Latinsk stort bogstav t med caron","Latin capital letter t with cedilla":"Latinsk stort bogstav t med cedille","Latin capital letter t with stroke":"Latinsk stort bogstav t med streg","Latin capital letter u with breve":"Latinsk stort bogstav u med en breve","Latin capital letter u with double acute":"Latinsk lille bogstav u med dobbelt akut accent","Latin capital letter u with macron":"Latinsk stort bogstav u med macron","Latin capital letter u with ogonek":"Latinsk stort bogstav u med ogonek","Latin capital letter u with ring above":"Latinsk stort bogstav u med ring over","Latin capital letter u with tilde":"Latinsk stort bogstav u med tilde","Latin capital letter w with circumflex":"Latinsk stort bogstav w med cirkumfleks","Latin capital letter y with circumflex":"Latinsk stort bogstav y med cirkumfleks","Latin capital letter y with diaeresis":"Latinsk stort bogstav y med trema","Latin capital letter z with acute":"Latinsk stort bogstav z med akut accent","Latin capital letter z with caron":"Latinsk stort bogstav z med caron","Latin capital letter z with dot above":"Latinsk stort bogstav z med en prik over","Latin capital ligature ij":"Latinsk stort sammensat ij","Latin capital ligature oe":"Latinsk stort sammensat oe","Latin small letter a with breve":"Latinsk lille bogstav a med en breve","Latin small letter a with macron":"Latinsk lille bogstav a med macron","Latin small letter a with ogonek":"Latinsk lille bogstav a med ogonek","Latin small letter c with acute":"Latinsk lille bogstav c med accent","Latin small letter c with caron":"Latinsk lille bogstav c med caron","Latin small letter c with circumflex":"Latinsk ille bogstav c med cirkumfleks","Latin small letter c with dot above":"Latinsk lille bogstav c med prik over","Latin small letter d with caron":"Latinsk lille bogstav d med caron","Latin small letter d with stroke":"Latinsk lille bogstav d med streg","Latin small letter dotless i":"Latinsk lille i uden prik","Latin small letter e with breve":"Latinsk lille bogstav e med en breve","Latin small letter e with caron":"Latinsk lille bogstav e med caron","Latin small letter e with dot above":"Latinsk lille bogstav e med en prik over","Latin small letter e with macron":"Latinsk lille bogstav e med macron","Latin small letter e with ogonek":"Latinsk lille bogstav e med ogonek","Latin small letter eng":"Latinsk lille bogstav eng","Latin small letter f with hook":"Latinsk lille bogstav f med krog","Latin small letter g with breve":"Latinsk lille bogstav g med en breve","Latin small letter g with cedilla":"Latinsk lille bogstav g med cedille","Latin small letter g with circumflex":"Latinsk lille bogstav g med cirkumfleks","Latin small letter g with dot above":"Latinsk lille bogstav g med en prik over","Latin small letter h with circumflex":"Latinsk lille bogstav h med cirkumfleks","Latin small letter h with stroke":"Latinsk lille bogstav h med streg","Latin small letter i with breve":"Latinsk lille bogstav i med en breve","Latin small letter i with macron":"Latinsk lille bogstav i med macron","Latin small letter i with ogonek":"Latinsk lille bogstav i med ogonek","Latin small letter i with tilde":"Latinsk lille bogstav i med tilde","Latin small letter j with circumflex":"Latinsk lille bogstav j med cirkumfleks","Latin small letter k with cedilla":"Latinsk lille bogstav k med cedille","Latin small letter kra":"Latinsk lille bogstav kra","Latin small letter l with acute":"Latinsk lille bogstav l med akut accent","Latin small letter l with caron":"Latinsk lille bogstav l med caron","Latin small letter l with cedilla":"Latinsk lille bogstav l med cedille","Latin small letter l with middle dot":"Latinsk lille bogstav l med prik i midten","Latin small letter l with stroke":"Latinsk lille bogstav l med streg","Latin small letter long s":"Latinsk lille bogstav langt s","Latin small letter n preceded by apostrophe":"Latinsk lille bogstav n med apostrof inden ","Latin small letter n with acute":"Latinsk lille bogstav n med akut accent","Latin small letter n with caron":"Latinsk lille bogstav n med caron","Latin small letter n with cedilla":"Latinsk lille bogstav n med cedille","Latin small letter o with breve":"Latinsk lille bogstav o med en breve","Latin small letter o with double acute":"Latinsk lille bogstav o med dobbelt akut accent","Latin small letter o with macron":"Latinsk lille bogstav o med macron","Latin small letter r with acute":"Latinsk lille bogstav r med akut accent","Latin small letter r with caron":"Latinsk lille bogstav r med caron","Latin small letter r with cedilla":"Latinsk lille bogstav r med cedille","Latin small letter s with acute":"Latinsk lille bogstav s med akut accent","Latin small letter s with caron":"Latinsk lille bogstav s med caron","Latin small letter s with cedilla":"Latinsk lille bogstav s med cedille","Latin small letter s with circumflex":"Latinsk lille bogstav s med cirkumfleks","Latin small letter t with caron":"Latinsk lille bogstav t med caron","Latin small letter t with cedilla":"Latinsk lille bogstav t med cedille","Latin small letter t with stroke":"Latinsk lille bogstav t med streg","Latin small letter u with breve":"Latinsk lille bogstav u med en breve","Latin small letter u with double acute":"Latinsk stort bogstav u med dobbelt akut accent","Latin small letter u with macron":"Latinsk lille bogstav u med macron","Latin small letter u with ogonek":"Latinsk lille bogstav u med ogonek","Latin small letter u with ring above":"Latinsk lille bogstav u med ring over","Latin small letter u with tilde":"Latinsk lille bogstav u med tilde","Latin small letter w with circumflex":"Latinsk lille bogstav w med cirkumfleks","Latin small letter y with circumflex":"Latinsk lille bogstav y med cirkumfleks","Latin small letter z with acute":"Latinsk lille bogstav z med akut accent","Latin small letter z with caron":"Latinsk lille bogstav z med caron","Latin small letter z with dot above":"Latinsk lille bogstav z med en prik over","Latin small ligature ij":"Latinsk lille sammensat ij","Latin small ligature oe":"Latinsk lille sammensat oe","Left double quotation mark":"Venstre dobbelt citationstegn","Left single quotation mark":"Venstre enkelt citationstegn","Left-pointing double angle quotation mark":"Venstrepegende dobbeltvinklet citationstegn","leftwards arrow to bar":"venstrepegende pil mod bjælke","leftwards dashed arrow":"venstrepegende stiplet pil","leftwards double arrow":"venstrepegende dobbeltpil","Less-than or equal to":"Mindre end eller lig med-tegn","Less-than sign":"Mindre end-tegn","Lira sign":"Lira-tegn","Livre tournois sign":"Livre tournois-tegn","Logical and":"Logisk og","Logical or":"Logisk eller",Macron:"Macron","Manat sign":"Manat-tegn","Mill sign":"Mill-tegn","Minus sign":"Minus-tegn","Multiplication sign":"Gangetegn","N-ary product":"Sumprodukttegn","N-ary summation":"Sum-tegn",Nabla:"Nabla","Naira sign":"Naira-tegn","New sheqel sign":"Ny Shekel-tegn","Nordic mark sign":"Nordisk mark-tegn","Not an element of":"Ikke et element af","Not equal to":"Ikke lig med","Not sign":"Ikke-tegn","on with exclamation mark with left right arrow above":"til med udråbstegn med pil mod venstre og højre over",Overline:"Streg over","Paragraph sign":"Paragraftegn","Partial differential":"Delvis differential","Per mille sign":"Promilletegn","Per ten thousand sign":"Per titusind-tegn","Peseta sign":"Peseta-tegn","Peso sign":"Peso-tegn","Plus-minus sign":"Plus-minus-tegn","Pound sign":"Pund-tegn","Proportional to":"Proportionelt med","Question exclamation mark":"Spørgsmålstegn-udråbstegn","Registered sign":"Registreret-tegn","Reversed paragraph sign":"Omvendt paragraftegn","Right double quotation mark":"Højre dobbelt citationstegn","Right single quotation mark":"Højre enkelt citationstegn","Right-pointing double angle quotation mark":"Højrepegende dobbeltvinklet citationstegn","rightwards arrow to bar":"højrepegende pil mod bjælke","rightwards dashed arrow":"højrepegende stiplet pil","rightwards double arrow":"højrepegende dobbeltpil","Ruble sign":"Rubel-tegn","Rupee sign":"Rupee-tegn","Section sign":"Sektionstegn","Single left-pointing angle quotation mark":"Enkelt venstrepegende vinkel citationstegn","Single low-9 quotation mark":"Enkelt lav-9 citationstegn","Single right-pointing angle quotation mark":"Enkelt højrepegende vinkel citationstegn","soon with rightwards arrow above":"snart med højrepegende pil over","Special characters":"Specialtegn","Spesmilo sign":"Spesmilo-tegn","Square root":"Kvadratrod","Tenge sign":"Tenge-tegn","There exists":"Der eksisterer","Tilde operator":"Tilde-operator","top with upwards arrow above":"top med opadpegende pil over","Trade mark sign":"Varemærke-tegn","Tugrik sign":"Tugrik-tegn","Turkish lira sign":"Tyrkisk lira-tegn","Two dot leader":"Dobbelt punktum",Union:"Union","up down arrow with base":"Op- og nedadpegende pil med streg under","upwards arrow to bar":"opadpegende pil mod bjælke","upwards dashed arrow":"opadpegende stiplet pil","upwards double arrow":"Opadpegende dobbeltpil","Vulgar fraction one half":"En halv","Vulgar fraction one quarter":"En kvart","Vulgar fraction three quarters":"Trekvart","Won sign":"Won-tegn","Yen sign":"Yen-tegn"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(t){const e=t.da=t.da||{};e.dictionary=Object.assign(e.dictionary||{},{"Almost equal to":"Næsten lig med",Angle:"Vinkel","Approximately equal to":"Nogenlunde lig med","Asterisk operator":"Asterisk-operator","Austral sign":"Austral-tegn","back with leftwards arrow above":"tilbage med venstrepegende pil over","Bitcoin sign":"Bitcoin-tegn","Cedi sign":"Cedi-tegn","Cent sign":"Cent-tegn","Character categories":"Tegnkategorier","Colon sign":"Kolontegn","Contains as member":"Element i","Copyright sign":"Copyright-tegnb","Cruzeiro sign":"Cruzeiro-tegn","Currency sign":"Valuta-tegn","Degree sign":"Grad-tegn","Division sign":"Divisionstegn","Dollar sign":"Dollartegn","Dong sign":"Dong-tegn","Double dagger":"Dobbeltobelisk","Double exclamation mark":"Dobbelt udråbstegn","Double low-9 quotation mark":"Dobbelt lav-9 citationstegn","Double question mark":"Dobbelt spørgsmålstegn","downwards arrow to bar":"nedadpegende pil mod bjælke","downwards dashed arrow":"nedadpegende stiplet pil","downwards double arrow":"nedadpegende dobbeltpil","downwards simple arrow":"nedadgående simpel pil","Drachma sign":"Drakmer-tegn","Element of":"Element af","Em dash":"Em-bindestreg","Empty set":"Tomt sæt","En dash":"En-bindestreg","end with leftwards arrow above":"afslut med venstrepegende pil over","Euro sign":"Eurotegn","Euro-currency sign":"Euro-valutategn","Exclamation question mark":"Udråbstegn-spørgsmålstegn","For all":"For alle","Fraction slash":"Brøk-tegn","French franc sign":"Franske franc-tegn","German penny sign":"Tysk penny-tegn","Greater-than or equal to":"Større end eller lig med-tegn","Greater-than sign":"Større end-tegn","Guarani sign":"Guarani-tegn","Horizontal ellipsis":"Horisontal ellipse","Hryvnia sign":"Hryvnia-tegn","Identical to":"Lig med","Indian rupee sign":"Indisk rupee-tegn",Infinity:"Uendelig",Integral:"Integral",Intersection:"Intersektion","Inverted exclamation mark":"Omvendt udråbstegn","Inverted question mark":"Omvendt spørgsmålstegn","Kip sign":"Kip-tegn","Latin capital letter a with breve":"Latinsk stort bogstav a med en breve","Latin capital letter a with macron":"Latinsk stort bogstav a med macron","Latin capital letter a with ogonek":"Latinsk stort bogstav a med ogonek","Latin capital letter c with acute":"Latinsk stort bogstav c med accent","Latin capital letter c with caron":"Latinsk stort bogstav c med caron","Latin capital letter c with circumflex":"Latinsk stort bogstav c med cirkumfleks","Latin capital letter c with dot above":"Latinsk stort bogstav c med prik over","Latin capital letter d with caron":"Latinsk stort bogstav d med caron","Latin capital letter d with stroke":"Latinsk stort bogstav d med streg","Latin capital letter e with breve":"Latinsk stort bogstav e med en breve","Latin capital letter e with caron":"Latinsk stort bogstav e med caron","Latin capital letter e with dot above":"Latinsk stort bogstav e med en prik over","Latin capital letter e with macron":"Latinsk stort bogstav e med macron","Latin capital letter e with ogonek":"Latinsk stort bogstav e med ogonek","Latin capital letter eng":"Latinsk stort bogstav eng","Latin capital letter g with breve":"Latinsk stort bogstav g med en breve","Latin capital letter g with cedilla":"Latinsk stort bogstav g med cedille","Latin capital letter g with circumflex":"Latinsk stort bogstav g med cirkumfleks","Latin capital letter g with dot above":"Latinsk stort bogstav g med en prik over","Latin capital letter h with circumflex":"Latinsk stort bogstav h med cirkumfleks","Latin capital letter h with stroke":"Latinsk stort bogstav h med streg","Latin capital letter i with breve":"Latinsk stort bogstav i med en breve","Latin capital letter i with dot above":"Latinsk stort bogstav i med en prik over","Latin capital letter i with macron":"Latinsk stort bogstav i med macron","Latin capital letter i with ogonek":"Latinsk stort bogstav i med ogonek","Latin capital letter i with tilde":"Latinsk stort bogstav i med tilde","Latin capital letter j with circumflex":"Latinsk stort bogstav j med cirkumfleks","Latin capital letter k with cedilla":"Latinsk stort bogstav k med cedille","Latin capital letter l with acute":"Latinsk stort bogstav l med akut accent","Latin capital letter l with caron":"Latinsk stort bogstav l med caron","Latin capital letter l with cedilla":"Latinsk stort bogstav l med cedille","Latin capital letter l with middle dot":"Latinsk stort bogstav l med prik i midten","Latin capital letter l with stroke":"Latinsk stort bogstav l med streg","Latin capital letter n with acute":"Latinsk stort bogstav n med akut accent","Latin capital letter n with caron":"Latinsk stort bogstav n med caron","Latin capital letter n with cedilla":"Latinsk stort bogstav n med cedille","Latin capital letter o with breve":"Latinsk stort bogstav o med en breve","Latin capital letter o with double acute":"Latinsk stort bogstav o med dobbelt akut accent","Latin capital letter o with macron":"Latinsk stort bogstav o med macron","Latin capital letter r with acute":"Latinsk stort bogstav r med akut accent","Latin capital letter r with caron":"Latinsk stort bogstav r med caron","Latin capital letter r with cedilla":"Latinsk stort bogstav r med cedille","Latin capital letter s with acute":"Latinsk stort bogstav s med akut accent","Latin capital letter s with caron":"Latinsk stort bogstav s med caron","Latin capital letter s with cedilla":"Latinsk stort bogstav s med cedille","Latin capital letter s with circumflex":"Latinsk stort bogstav s med cirkumfleks","Latin capital letter t with caron":"Latinsk stort bogstav t med caron","Latin capital letter t with cedilla":"Latinsk stort bogstav t med cedille","Latin capital letter t with stroke":"Latinsk stort bogstav t med streg","Latin capital letter u with breve":"Latinsk stort bogstav u med en breve","Latin capital letter u with double acute":"Latinsk lille bogstav u med dobbelt akut accent","Latin capital letter u with macron":"Latinsk stort bogstav u med macron","Latin capital letter u with ogonek":"Latinsk stort bogstav u med ogonek","Latin capital letter u with ring above":"Latinsk stort bogstav u med ring over","Latin capital letter u with tilde":"Latinsk stort bogstav u med tilde","Latin capital letter w with circumflex":"Latinsk stort bogstav w med cirkumfleks","Latin capital letter y with circumflex":"Latinsk stort bogstav y med cirkumfleks","Latin capital letter y with diaeresis":"Latinsk stort bogstav y med trema","Latin capital letter z with acute":"Latinsk stort bogstav z med akut accent","Latin capital letter z with caron":"Latinsk stort bogstav z med caron","Latin capital letter z with dot above":"Latinsk stort bogstav z med en prik over","Latin capital ligature ij":"Latinsk stort sammensat ij","Latin capital ligature oe":"Latinsk stort sammensat oe","Latin small letter a with breve":"Latinsk lille bogstav a med en breve","Latin small letter a with macron":"Latinsk lille bogstav a med macron","Latin small letter a with ogonek":"Latinsk lille bogstav a med ogonek","Latin small letter c with acute":"Latinsk lille bogstav c med accent","Latin small letter c with caron":"Latinsk lille bogstav c med caron","Latin small letter c with circumflex":"Latinsk ille bogstav c med cirkumfleks","Latin small letter c with dot above":"Latinsk lille bogstav c med prik over","Latin small letter d with caron":"Latinsk lille bogstav d med caron","Latin small letter d with stroke":"Latinsk lille bogstav d med streg","Latin small letter dotless i":"Latinsk lille i uden prik","Latin small letter e with breve":"Latinsk lille bogstav e med en breve","Latin small letter e with caron":"Latinsk lille bogstav e med caron","Latin small letter e with dot above":"Latinsk lille bogstav e med en prik over","Latin small letter e with macron":"Latinsk lille bogstav e med macron","Latin small letter e with ogonek":"Latinsk lille bogstav e med ogonek","Latin small letter eng":"Latinsk lille bogstav eng","Latin small letter f with hook":"Latinsk lille bogstav f med krog","Latin small letter g with breve":"Latinsk lille bogstav g med en breve","Latin small letter g with cedilla":"Latinsk lille bogstav g med cedille","Latin small letter g with circumflex":"Latinsk lille bogstav g med cirkumfleks","Latin small letter g with dot above":"Latinsk lille bogstav g med en prik over","Latin small letter h with circumflex":"Latinsk lille bogstav h med cirkumfleks","Latin small letter h with stroke":"Latinsk lille bogstav h med streg","Latin small letter i with breve":"Latinsk lille bogstav i med en breve","Latin small letter i with macron":"Latinsk lille bogstav i med macron","Latin small letter i with ogonek":"Latinsk lille bogstav i med ogonek","Latin small letter i with tilde":"Latinsk lille bogstav i med tilde","Latin small letter j with circumflex":"Latinsk lille bogstav j med cirkumfleks","Latin small letter k with cedilla":"Latinsk lille bogstav k med cedille","Latin small letter kra":"Latinsk lille bogstav kra","Latin small letter l with acute":"Latinsk lille bogstav l med akut accent","Latin small letter l with caron":"Latinsk lille bogstav l med caron","Latin small letter l with cedilla":"Latinsk lille bogstav l med cedille","Latin small letter l with middle dot":"Latinsk lille bogstav l med prik i midten","Latin small letter l with stroke":"Latinsk lille bogstav l med streg","Latin small letter long s":"Latinsk lille bogstav langt s","Latin small letter n preceded by apostrophe":"Latinsk lille bogstav n med apostrof inden ","Latin small letter n with acute":"Latinsk lille bogstav n med akut accent","Latin small letter n with caron":"Latinsk lille bogstav n med caron","Latin small letter n with cedilla":"Latinsk lille bogstav n med cedille","Latin small letter o with breve":"Latinsk lille bogstav o med en breve","Latin small letter o with double acute":"Latinsk lille bogstav o med dobbelt akut accent","Latin small letter o with macron":"Latinsk lille bogstav o med macron","Latin small letter r with acute":"Latinsk lille bogstav r med akut accent","Latin small letter r with caron":"Latinsk lille bogstav r med caron","Latin small letter r with cedilla":"Latinsk lille bogstav r med cedille","Latin small letter s with acute":"Latinsk lille bogstav s med akut accent","Latin small letter s with caron":"Latinsk lille bogstav s med caron","Latin small letter s with cedilla":"Latinsk lille bogstav s med cedille","Latin small letter s with circumflex":"Latinsk lille bogstav s med cirkumfleks","Latin small letter t with caron":"Latinsk lille bogstav t med caron","Latin small letter t with cedilla":"Latinsk lille bogstav t med cedille","Latin small letter t with stroke":"Latinsk lille bogstav t med streg","Latin small letter u with breve":"Latinsk lille bogstav u med en breve","Latin small letter u with double acute":"Latinsk stort bogstav u med dobbelt akut accent","Latin small letter u with macron":"Latinsk lille bogstav u med macron","Latin small letter u with ogonek":"Latinsk lille bogstav u med ogonek","Latin small letter u with ring above":"Latinsk lille bogstav u med ring over","Latin small letter u with tilde":"Latinsk lille bogstav u med tilde","Latin small letter w with circumflex":"Latinsk lille bogstav w med cirkumfleks","Latin small letter y with circumflex":"Latinsk lille bogstav y med cirkumfleks","Latin small letter z with acute":"Latinsk lille bogstav z med akut accent","Latin small letter z with caron":"Latinsk lille bogstav z med caron","Latin small letter z with dot above":"Latinsk lille bogstav z med en prik over","Latin small ligature ij":"Latinsk lille sammensat ij","Latin small ligature oe":"Latinsk lille sammensat oe","Left double quotation mark":"Venstre dobbelt citationstegn","Left single quotation mark":"Venstre enkelt citationstegn","Left-pointing double angle quotation mark":"Venstrepegende dobbeltvinklet citationstegn","leftwards arrow to bar":"venstrepegende pil mod bjælke","leftwards dashed arrow":"venstrepegende stiplet pil","leftwards double arrow":"venstrepegende dobbeltpil","leftwards simple arrow":"venstrepegende simpel pil","Less-than or equal to":"Mindre end eller lig med-tegn","Less-than sign":"Mindre end-tegn","Lira sign":"Lira-tegn","Livre tournois sign":"Livre tournois-tegn","Logical and":"Logisk og","Logical or":"Logisk eller",Macron:"Macron","Manat sign":"Manat-tegn","Mill sign":"Mill-tegn","Minus sign":"Minus-tegn","Multiplication sign":"Gangetegn","N-ary product":"Sumprodukttegn","N-ary summation":"Sum-tegn",Nabla:"Nabla","Naira sign":"Naira-tegn","New sheqel sign":"Ny Shekel-tegn","Nordic mark sign":"Nordisk mark-tegn","Not an element of":"Ikke et element af","Not equal to":"Ikke lig med","Not sign":"Ikke-tegn","on with exclamation mark with left right arrow above":"til med udråbstegn med pil mod venstre og højre over",Overline:"Streg over","Paragraph sign":"Paragraftegn","Partial differential":"Delvis differential","Per mille sign":"Promilletegn","Per ten thousand sign":"Per titusind-tegn","Peseta sign":"Peseta-tegn","Peso sign":"Peso-tegn","Plus-minus sign":"Plus-minus-tegn","Pound sign":"Pund-tegn","Proportional to":"Proportionelt med","Question exclamation mark":"Spørgsmålstegn-udråbstegn","Registered sign":"Registreret-tegn","Reversed paragraph sign":"Omvendt paragraftegn","Right double quotation mark":"Højre dobbelt citationstegn","Right single quotation mark":"Højre enkelt citationstegn","Right-pointing double angle quotation mark":"Højrepegende dobbeltvinklet citationstegn","rightwards arrow to bar":"højrepegende pil mod bjælke","rightwards dashed arrow":"højrepegende stiplet pil","rightwards double arrow":"højrepegende dobbeltpil","rightwards simple arrow":"højrepegende simpel pil","Ruble sign":"Rubel-tegn","Rupee sign":"Rupee-tegn","Section sign":"Sektionstegn","Single left-pointing angle quotation mark":"Enkelt venstrepegende vinkel citationstegn","Single low-9 quotation mark":"Enkelt lav-9 citationstegn","Single right-pointing angle quotation mark":"Enkelt højrepegende vinkel citationstegn","soon with rightwards arrow above":"snart med højrepegende pil over","Special characters":"Specialtegn","Spesmilo sign":"Spesmilo-tegn","Square root":"Kvadratrod","Tenge sign":"Tenge-tegn","There exists":"Der eksisterer","Tilde operator":"Tilde-operator","top with upwards arrow above":"top med opadpegende pil over","Trade mark sign":"Varemærke-tegn","Tugrik sign":"Tugrik-tegn","Turkish lira sign":"Tyrkisk lira-tegn","Two dot leader":"Dobbelt punktum",Union:"Union","up down arrow with base":"Op- og nedadpegende pil med streg under","upwards arrow to bar":"opadpegende pil mod bjælke","upwards dashed arrow":"opadpegende stiplet pil","upwards double arrow":"Opadpegende dobbeltpil","upwards simple arrow":"opadgående simpel pil","Vulgar fraction one half":"En halv","Vulgar fraction one quarter":"En kvart","Vulgar fraction three quarters":"Trekvart","Won sign":"Won-tegn","Yen sign":"Yen-tegn"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/special-characters/translations/de.js b/core/assets/vendor/ckeditor5/special-characters/translations/de.js
index 9df48af1b4..91fc58b50f 100644
--- a/core/assets/vendor/ckeditor5/special-characters/translations/de.js
+++ b/core/assets/vendor/ckeditor5/special-characters/translations/de.js
@@ -1 +1 @@
-!function(e){const t=e.de=e.de||{};t.dictionary=Object.assign(t.dictionary||{},{"Almost equal to":"Gerundet",Angle:"Winkel-Zeichen","Approximately equal to":"Ungefähr gleich","Asterisk operator":"Hodge-Stern-Operator","Austral sign":"Austral-Zeichen","back with leftwards arrow above":"„Back“ darüber Pfeil nach links","Bitcoin sign":"Bitcoin-Zeichen","Cedi sign":"Cedi-Zeichen","Cent sign":"Cent-Zeichen","Character categories":"Zeichenkategorien","Colon sign":"Colón-Zeichen","Contains as member":"Enthält als Element","Copyright sign":"Copyright-Zeichen","Cruzeiro sign":"Cruzeiro-Zeichen","Currency sign":"Währungssymbol","Degree sign":"Grad-Zeichen","Division sign":"Geteilt-Zeichen","Dollar sign":"Dollar-Zeichen","Dong sign":"Đồng-Zeichen","Double dagger":"Zweibalkenkreuz","Double exclamation mark":"Doppeltes Ausrufezeichen","Double low-9 quotation mark":"Doppelte Anführungszeichen links unten","Double question mark":"Doppeltes Fragezeichen","downwards arrow to bar":"Pfeil nach unten zum Querstrich","downwards dashed arrow":"Gestrichelter Pfeil nach unten","downwards double arrow":"Doppelpfeil nach unten","Drachma sign":"Drachme-Zeichen","Element of":"Element von","Em dash":"Geviertstrich","Empty set":"Leere Menge","En dash":"Halbgeviertstrich","end with leftwards arrow above":"„End“ darüber Pfeil nach links","Euro sign":"Euro-Zeichen","Euro-currency sign":"Euro-Währungszeichen","Exclamation question mark":"Ruf-Frage-Zeichen","For all":"Allquantor","Fraction slash":"Schrägstrich","French franc sign":"Französischer Franc-Zeichen","German penny sign":"Pfennig-Zeichen","Greater-than or equal to":"Größer als oder gleich","Greater-than sign":"Größer-als-Zeichen","Guarani sign":"Guaraní-Zeichen","Horizontal ellipsis":"Auslassungspunkte","Hryvnia sign":"Hrywnja-Zeichen","Identical to":"Identisch mit","Indian rupee sign":"Indische Rupie-Zeichen",Infinity:"Unendlich-Zeichen",Integral:"Integral-Zeichen",Intersection:"Schnitt","Inverted exclamation mark":"Umgekehrtes Ausrufezeichen","Inverted question mark":"Umgekehrtes Fragezeichen","Kip sign":"Kip-Zeichen","Latin capital letter a with breve":"Lateinischer Großbuchstabe a mit Breve","Latin capital letter a with macron":"Lateinischer Großbuchstabe a mit Makron","Latin capital letter a with ogonek":"Lateinischer Großbuchstabe a mit Ogonek","Latin capital letter c with acute":"Lateinischer Großbuchstabe c mit Akut","Latin capital letter c with caron":"Lateinischer Großbuchstabe c mit Hatschek","Latin capital letter c with circumflex":"Lateinischer Großbuchstabe c mit Zirkumflex","Latin capital letter c with dot above":"Lateinischer Großbuchstabe c mit Punkt darüber","Latin capital letter d with caron":"Lateinischer Großbuchstabe d mit Hatschek","Latin capital letter d with stroke":"Lateinischer Großbuchstabe d mit Querstrich","Latin capital letter e with breve":"Lateinischer Großbuchstabe e mit Breve","Latin capital letter e with caron":"Lateinischer Großbuchstabe e mit Hatschek","Latin capital letter e with dot above":"Lateinischer Großbuchstabe e mit Punkt darüber","Latin capital letter e with macron":"Lateinischer Großbuchstabe e mit Makron","Latin capital letter e with ogonek":"Lateinischer Großbuchstabe e mit Ogonek","Latin capital letter eng":"Lateinischer Großbuchstabe Eng","Latin capital letter g with breve":"Lateinischer Großbuchstabe g mit Breve","Latin capital letter g with cedilla":"Lateinischer Großbuchstabe g mit Cedille","Latin capital letter g with circumflex":"Lateinischer Großbuchstabe g mit Zirkumflex","Latin capital letter g with dot above":"Lateinischer Großbuchstabe g mit Punkt darüber","Latin capital letter h with circumflex":"Lateinischer Großbuchstabe h mit Zirkumflex","Latin capital letter h with stroke":"Lateinischer Großbuchstabe h mit Querstrich","Latin capital letter i with breve":"Lateinischer Großbuchstabe i mit Breve","Latin capital letter i with dot above":"Lateinischer Großbuchstabe i mit Punkt darüber","Latin capital letter i with macron":"Lateinischer Großbuchstabe i mit Makron","Latin capital letter i with ogonek":"Lateinischer Großbuchstabe i mit Ogonek","Latin capital letter i with tilde":"Lateinischer Großbuchstabe i mit Tilde","Latin capital letter j with circumflex":"Lateinischer Großbuchstabe j mit Zirkumflex","Latin capital letter k with cedilla":"Lateinischer Großbuchstabe k mit Cedille","Latin capital letter l with acute":"Lateinischer Großbuchstabe l mit Akut","Latin capital letter l with caron":"Lateinischer Großbuchstabe l mit Hatschek","Latin capital letter l with cedilla":"Lateinischer Großbuchstabe l mit Cedille","Latin capital letter l with middle dot":"Lateinischer Großbuchstabe l mit Mittelpunkt","Latin capital letter l with stroke":"Lateinischer Großbuchstabe l mit Querstrich","Latin capital letter n with acute":"Lateinischer Großbuchstabe n mit Akut","Latin capital letter n with caron":"Lateinischer Großbuchstabe n mit Hatschek","Latin capital letter n with cedilla":"Lateinischer Großbuchstabe n mit Cedille","Latin capital letter o with breve":"Lateinischer Großbuchstabe o mit Breve","Latin capital letter o with double acute":"Lateinischer Großbuchstabe o mit doppeltem Akut","Latin capital letter o with macron":"Lateinischer Großbuchstabe o mit Makron","Latin capital letter r with acute":"Lateinischer Großbuchstabe r mit Akut","Latin capital letter r with caron":"Lateinischer Großbuchstabe r mit Hatschek","Latin capital letter r with cedilla":"Lateinischer Großbuchstabe r mit Cedille","Latin capital letter s with acute":"Lateinischer Großbuchstabe s mit Akut","Latin capital letter s with caron":"Lateinischer Großbuchstabe s mit Hatschek","Latin capital letter s with cedilla":"Lateinischer Großbuchstabe s mit Cedille","Latin capital letter s with circumflex":"Lateinischer Großbuchstabe s mit Zirkumflex","Latin capital letter t with caron":"Lateinischer Großbuchstabe t mit Hatschek","Latin capital letter t with cedilla":"Lateinischer Großbuchstabe t mit Cedille","Latin capital letter t with stroke":"Lateinischer Großbuchstabe t mit Querstrich","Latin capital letter u with breve":"Lateinischer Großbuchstabe u mit Breve","Latin capital letter u with double acute":"Lateinischer Großbuchstabe u mit doppeltem Akut","Latin capital letter u with macron":"Lateinischer Großbuchstabe u mit Makron","Latin capital letter u with ogonek":"Lateinischer Großbuchstabe u mit Ogonek","Latin capital letter u with ring above":"Lateinischer Großbuchstabe u mit Kroužek darüber","Latin capital letter u with tilde":"Lateinischer Großbuchstabe u mit Tilde","Latin capital letter w with circumflex":"Lateinischer Großbuchstabe w mit Zirkumflex","Latin capital letter y with circumflex":"Lateinischer Großbuchstabe y mit Zirkumflex","Latin capital letter y with diaeresis":"Lateinischer Großbuchstabe y mit Trema","Latin capital letter z with acute":"Lateinischer Großbuchstabe z mit Akut","Latin capital letter z with caron":"Lateinischer Großbuchstabe z mit Hatschek","Latin capital letter z with dot above":"Lateinischer Großbuchstabe z mit Punkt darüber","Latin capital ligature ij":"Große lateinische Ligatur ij","Latin capital ligature oe":"Große lateinische Ligatur oe","Latin small letter a with breve":"Lateinischer Kleinbuchstabe a mit Breve","Latin small letter a with macron":"Lateinischer Kleinbuchstabe a mit Makron","Latin small letter a with ogonek":"Lateinischer Kleinbuchstabe a mit Ogonek","Latin small letter c with acute":"Lateinischer Kleinbuchstabe c mit Akut","Latin small letter c with caron":"Lateinischer Kleinbuchstabe c mit Hatschek","Latin small letter c with circumflex":"Lateinischer Kleinbuchstabe c mit Zirkumflex","Latin small letter c with dot above":"Lateinischer Kleinbuchstabe c mit Punkt darüber","Latin small letter d with caron":"Lateinischer Kleinbuchstabe d mit Hatschek","Latin small letter d with stroke":"Lateinischer Kleinbuchstabe d mit Querstrich","Latin small letter dotless i":"Lateinischer Kleinbuchstabe i ohne Punkt","Latin small letter e with breve":"Lateinischer Kleinbuchstabe e mit Breve","Latin small letter e with caron":"Lateinischer Kleinbuchstabe e mit Hatschek","Latin small letter e with dot above":"Lateinischer Kleinbuchstabe e mit Punkt darüber","Latin small letter e with macron":"Lateinischer Kleinbuchstabe e mit Makron","Latin small letter e with ogonek":"Lateinischer Kleinbuchstabe e mit Ogonek","Latin small letter eng":"Lateinischer Kleinbuchstabe Eng","Latin small letter f with hook":"Lateinischer Kleinbuchstabe f mit Haken","Latin small letter g with breve":"Lateinischer Kleinbuchstabe g mit Breve","Latin small letter g with cedilla":"Lateinischer Kleinbuchstabe g mit Cedille","Latin small letter g with circumflex":"Lateinischer Kleinbuchstabe g mit Zirkumflex","Latin small letter g with dot above":"Lateinischer Kleinbuchstabe g mit Punkt darüber","Latin small letter h with circumflex":"Lateinischer Kleinbuchstabe h mit Zirkumflex","Latin small letter h with stroke":"Lateinischer Kleinbuchstabe h mit Querstrich","Latin small letter i with breve":"Lateinischer Kleinbuchstabe i mit Breve","Latin small letter i with macron":"Lateinischer Kleinbuchstabe i mit Makron","Latin small letter i with ogonek":"Lateinischer Kleinbuchstabe i mit Ogonek","Latin small letter i with tilde":"Lateinischer Kleinbuchstabe i mit Tilde","Latin small letter j with circumflex":"Lateinischer Kleinbuchstabe j mit Zirkumflex","Latin small letter k with cedilla":"Lateinischer Kleinbuchstabe k mit Cedille","Latin small letter kra":"Lateinischer Kleinbuchstabe Kra","Latin small letter l with acute":"Lateinischer Kleinbuchstabe l mit Akut","Latin small letter l with caron":"Lateinischer Kleinbuchstabe l mit Hatschek","Latin small letter l with cedilla":"Lateinischer Kleinbuchstabe l mit Cedille","Latin small letter l with middle dot":"Lateinischer Kleinbuchstabe l mit Mittelpunkt","Latin small letter l with stroke":"Lateinischer Kleinbuchstabe l mit Querstrich","Latin small letter long s":"Lateinischer Kleinbuchstabe langes s","Latin small letter n preceded by apostrophe":"Lateinischer Kleinbuchstabe n mit vorangestelltem Apostroph","Latin small letter n with acute":"Lateinischer Kleinbuchstabe n mit Akut","Latin small letter n with caron":"Lateinischer Kleinbuchstabe n mit Hatschek","Latin small letter n with cedilla":"Lateinischer Kleinbuchstabe n mit Cedille","Latin small letter o with breve":"Lateinischer Kleinbuchstabe o mit Breve","Latin small letter o with double acute":"Lateinischer Kleinbuchstabe o mit doppeltem Akut","Latin small letter o with macron":"Lateinischer Kleinbuchstabe o mit Makron","Latin small letter r with acute":"Lateinischer Kleinbuchstabe r mit Akut","Latin small letter r with caron":"Lateinischer Kleinbuchstabe r mit Hatschek","Latin small letter r with cedilla":"Lateinischer Kleinbuchstabe r mit Cedille","Latin small letter s with acute":"Lateinischer Kleinbuchstabe s mit Akut","Latin small letter s with caron":"Lateinischer Kleinbuchstabe s mit Hatschek","Latin small letter s with cedilla":"Lateinischer Kleinbuchstabe s mit Cedille","Latin small letter s with circumflex":"Lateinischer Kleinbuchstabe s mit Zirkumflex","Latin small letter t with caron":"Lateinischer Kleinbuchstabe t mit Hatschek","Latin small letter t with cedilla":"Lateinischer Kleinbuchstabe t mit Cedille","Latin small letter t with stroke":"Lateinischer Kleinbuchstabe t mit Querstrich","Latin small letter u with breve":"Lateinischer Kleinbuchstabe u mit Breve","Latin small letter u with double acute":"Lateinischer Kleinbuchstabe u mit doppeltem Akut","Latin small letter u with macron":"Lateinischer Kleinbuchstabe u mit Makron","Latin small letter u with ogonek":"Lateinischer Kleinbuchstabe u mit Ogonek","Latin small letter u with ring above":"Lateinischer Kleinbuchstabe u mit Kroužek darüber","Latin small letter u with tilde":"Lateinischer Kleinbuchstabe u mit Tilde","Latin small letter w with circumflex":"Lateinischer Kleinbuchstabe w mit Zirkumflex","Latin small letter y with circumflex":"Lateinischer Kleinbuchstabe y mit Zirkumflex","Latin small letter z with acute":"Lateinischer Kleinbuchstabe z mit Akut","Latin small letter z with caron":"Lateinischer Kleinbuchstabe z mit Hatschek","Latin small letter z with dot above":"Lateinischer Kleinbuchstabe z mit Punkt darüber","Latin small ligature ij":"Kleine lateinische Ligatur ij","Latin small ligature oe":"Kleine lateinische Ligatur oe","Left double quotation mark":"Doppelte Anführungszeichen links","Left single quotation mark":"Einfache Anführungszeichen links","Left-pointing double angle quotation mark":"Doppelte Guillemets nach links","leftwards arrow to bar":"Pfeil nach links zum Querstrich","leftwards dashed arrow":"Gestrichelter Pfeil nach links","leftwards double arrow":"Doppelpfeil nach links","Less-than or equal to":"Kleiner als oder gleich","Less-than sign":"Kleiner-als-Zeichen","Lira sign":"Lira-Zeichen","Livre tournois sign":"Livre tournois-Zeichen","Logical and":"Logisches und","Logical or":"Logisches oder",Macron:"Makron","Manat sign":"Manat-Zeichen","Mill sign":"Mill-Zeichen","Minus sign":"Minus-Zeichen","Multiplication sign":"Mal-Zeichen","N-ary product":"Produkt-Zeichen","N-ary summation":"Summen-Zeichen",Nabla:"Nabla","Naira sign":"Naira-Zeichen","New sheqel sign":"Schekel-Zeichen","Nordic mark sign":"Nordische Mark-Zeichen","Not an element of":"Kein Element von","Not equal to":"Ungleich","Not sign":"Negations-Zeichen","on with exclamation mark with left right arrow above":"„On“ mit Ausrufezeichen darüber Pfeil nach links und rechts",Overline:"Überstrich","Paragraph sign":"Absatz-Zeichen","Partial differential":"Partielle Ableitung","Per mille sign":"Promille-Zeichen","Per ten thousand sign":"Pro-Zehntausend-Zeichen","Peseta sign":"Peseta-Zeichen","Peso sign":"Philippinischer Peso-Zeichen","Plus-minus sign":"Plus-Minus-Zeichen","Pound sign":"Pfund-Zeichen","Proportional to":"Proportional zu","Question exclamation mark":"Frage-Ruf-Zeichen","Registered sign":"Registered-Trade-Mark-Zeichen","Reversed paragraph sign":"Umgedrehtes Absatz-Zeichen","Right double quotation mark":"Doppelte Anführungszeichen rechts","Right single quotation mark":"Einfache Anführungszeichen rechts","Right-pointing double angle quotation mark":"Doppelte Guillemets nach rechts","rightwards arrow to bar":"Pfeil nach rechts zum Querstrich","rightwards dashed arrow":"Gestrichelter Pfeil nach rechts","rightwards double arrow":"Doppelpfeil nach rechts","Ruble sign":"Rubel-Zeichen","Rupee sign":"Rupie-Zeichen","Section sign":"Paragraphen-Zeichen","Single left-pointing angle quotation mark":"Einfache Guillemets nach links","Single low-9 quotation mark":"Einfache Anführungszeichen links unten","Single right-pointing angle quotation mark":"Einfache Guillemets nach rechts","soon with rightwards arrow above":"„Soon“ darüber Pfeil nach rechts","Special characters":"Sonderzeichen","Spesmilo sign":"Spesmilo-Zeichen","Square root":"Wurzel-Zeichen","Tenge sign":"Tenge-Zeichen","There exists":"Existenzquantor","Tilde operator":"Tilde-Operator","top with upwards arrow above":"„Top“ darüber Pfeil nach oben","Trade mark sign":"Unregistered-Trade-Mark-Zeichen","Tugrik sign":"Tugrik-Zeichen","Turkish lira sign":"Türkische Lira-Zeichen","Two dot leader":"Doppel-Punktlinie",Union:"Vereinigung","up down arrow with base":"Unterstrichener Pfeil nach oben und unten","upwards arrow to bar":"Pfeil nach oben zum Querstrich","upwards dashed arrow":"Gestrichelter Pfeil nach oben","upwards double arrow":"Doppelpfeil nach oben","Vulgar fraction one half":"Gemeiner Bruch ein Halb","Vulgar fraction one quarter":"Gemeiner Bruch ein Viertel","Vulgar fraction three quarters":"Gemeiner Bruch drei Viertel","Won sign":"Won-Zeichen","Yen sign":"Yen-Zeichen"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(e){const t=e.de=e.de||{};t.dictionary=Object.assign(t.dictionary||{},{"Almost equal to":"Gerundet",Angle:"Winkel-Zeichen","Approximately equal to":"Ungefähr gleich","Asterisk operator":"Hodge-Stern-Operator","Austral sign":"Austral-Zeichen","back with leftwards arrow above":"„Back“ darüber Pfeil nach links","Bitcoin sign":"Bitcoin-Zeichen","Cedi sign":"Cedi-Zeichen","Cent sign":"Cent-Zeichen","Character categories":"Zeichenkategorien","Colon sign":"Colón-Zeichen","Contains as member":"Enthält als Element","Copyright sign":"Copyright-Zeichen","Cruzeiro sign":"Cruzeiro-Zeichen","Currency sign":"Währungssymbol","Degree sign":"Grad-Zeichen","Division sign":"Geteilt-Zeichen","Dollar sign":"Dollar-Zeichen","Dong sign":"Đồng-Zeichen","Double dagger":"Zweibalkenkreuz","Double exclamation mark":"Doppeltes Ausrufezeichen","Double low-9 quotation mark":"Doppelte Anführungszeichen links unten","Double question mark":"Doppeltes Fragezeichen","downwards arrow to bar":"Pfeil nach unten zum Querstrich","downwards dashed arrow":"Gestrichelter Pfeil nach unten","downwards double arrow":"Doppelpfeil nach unten","downwards simple arrow":"einfacher Abwärtspfeil","Drachma sign":"Drachme-Zeichen","Element of":"Element von","Em dash":"Geviertstrich","Empty set":"Leere Menge","En dash":"Halbgeviertstrich","end with leftwards arrow above":"„End“ darüber Pfeil nach links","Euro sign":"Euro-Zeichen","Euro-currency sign":"Euro-Währungszeichen","Exclamation question mark":"Ruf-Frage-Zeichen","For all":"Allquantor","Fraction slash":"Schrägstrich","French franc sign":"Französischer Franc-Zeichen","German penny sign":"Pfennig-Zeichen","Greater-than or equal to":"Größer als oder gleich","Greater-than sign":"Größer-als-Zeichen","Guarani sign":"Guaraní-Zeichen","Horizontal ellipsis":"Auslassungspunkte","Hryvnia sign":"Hrywnja-Zeichen","Identical to":"Identisch mit","Indian rupee sign":"Indische Rupie-Zeichen",Infinity:"Unendlich-Zeichen",Integral:"Integral-Zeichen",Intersection:"Schnitt","Inverted exclamation mark":"Umgekehrtes Ausrufezeichen","Inverted question mark":"Umgekehrtes Fragezeichen","Kip sign":"Kip-Zeichen","Latin capital letter a with breve":"Lateinischer Großbuchstabe a mit Breve","Latin capital letter a with macron":"Lateinischer Großbuchstabe a mit Makron","Latin capital letter a with ogonek":"Lateinischer Großbuchstabe a mit Ogonek","Latin capital letter c with acute":"Lateinischer Großbuchstabe c mit Akut","Latin capital letter c with caron":"Lateinischer Großbuchstabe c mit Hatschek","Latin capital letter c with circumflex":"Lateinischer Großbuchstabe c mit Zirkumflex","Latin capital letter c with dot above":"Lateinischer Großbuchstabe c mit Punkt darüber","Latin capital letter d with caron":"Lateinischer Großbuchstabe d mit Hatschek","Latin capital letter d with stroke":"Lateinischer Großbuchstabe d mit Querstrich","Latin capital letter e with breve":"Lateinischer Großbuchstabe e mit Breve","Latin capital letter e with caron":"Lateinischer Großbuchstabe e mit Hatschek","Latin capital letter e with dot above":"Lateinischer Großbuchstabe e mit Punkt darüber","Latin capital letter e with macron":"Lateinischer Großbuchstabe e mit Makron","Latin capital letter e with ogonek":"Lateinischer Großbuchstabe e mit Ogonek","Latin capital letter eng":"Lateinischer Großbuchstabe Eng","Latin capital letter g with breve":"Lateinischer Großbuchstabe g mit Breve","Latin capital letter g with cedilla":"Lateinischer Großbuchstabe g mit Cedille","Latin capital letter g with circumflex":"Lateinischer Großbuchstabe g mit Zirkumflex","Latin capital letter g with dot above":"Lateinischer Großbuchstabe g mit Punkt darüber","Latin capital letter h with circumflex":"Lateinischer Großbuchstabe h mit Zirkumflex","Latin capital letter h with stroke":"Lateinischer Großbuchstabe h mit Querstrich","Latin capital letter i with breve":"Lateinischer Großbuchstabe i mit Breve","Latin capital letter i with dot above":"Lateinischer Großbuchstabe i mit Punkt darüber","Latin capital letter i with macron":"Lateinischer Großbuchstabe i mit Makron","Latin capital letter i with ogonek":"Lateinischer Großbuchstabe i mit Ogonek","Latin capital letter i with tilde":"Lateinischer Großbuchstabe i mit Tilde","Latin capital letter j with circumflex":"Lateinischer Großbuchstabe j mit Zirkumflex","Latin capital letter k with cedilla":"Lateinischer Großbuchstabe k mit Cedille","Latin capital letter l with acute":"Lateinischer Großbuchstabe l mit Akut","Latin capital letter l with caron":"Lateinischer Großbuchstabe l mit Hatschek","Latin capital letter l with cedilla":"Lateinischer Großbuchstabe l mit Cedille","Latin capital letter l with middle dot":"Lateinischer Großbuchstabe l mit Mittelpunkt","Latin capital letter l with stroke":"Lateinischer Großbuchstabe l mit Querstrich","Latin capital letter n with acute":"Lateinischer Großbuchstabe n mit Akut","Latin capital letter n with caron":"Lateinischer Großbuchstabe n mit Hatschek","Latin capital letter n with cedilla":"Lateinischer Großbuchstabe n mit Cedille","Latin capital letter o with breve":"Lateinischer Großbuchstabe o mit Breve","Latin capital letter o with double acute":"Lateinischer Großbuchstabe o mit doppeltem Akut","Latin capital letter o with macron":"Lateinischer Großbuchstabe o mit Makron","Latin capital letter r with acute":"Lateinischer Großbuchstabe r mit Akut","Latin capital letter r with caron":"Lateinischer Großbuchstabe r mit Hatschek","Latin capital letter r with cedilla":"Lateinischer Großbuchstabe r mit Cedille","Latin capital letter s with acute":"Lateinischer Großbuchstabe s mit Akut","Latin capital letter s with caron":"Lateinischer Großbuchstabe s mit Hatschek","Latin capital letter s with cedilla":"Lateinischer Großbuchstabe s mit Cedille","Latin capital letter s with circumflex":"Lateinischer Großbuchstabe s mit Zirkumflex","Latin capital letter t with caron":"Lateinischer Großbuchstabe t mit Hatschek","Latin capital letter t with cedilla":"Lateinischer Großbuchstabe t mit Cedille","Latin capital letter t with stroke":"Lateinischer Großbuchstabe t mit Querstrich","Latin capital letter u with breve":"Lateinischer Großbuchstabe u mit Breve","Latin capital letter u with double acute":"Lateinischer Großbuchstabe u mit doppeltem Akut","Latin capital letter u with macron":"Lateinischer Großbuchstabe u mit Makron","Latin capital letter u with ogonek":"Lateinischer Großbuchstabe u mit Ogonek","Latin capital letter u with ring above":"Lateinischer Großbuchstabe u mit Kroužek darüber","Latin capital letter u with tilde":"Lateinischer Großbuchstabe u mit Tilde","Latin capital letter w with circumflex":"Lateinischer Großbuchstabe w mit Zirkumflex","Latin capital letter y with circumflex":"Lateinischer Großbuchstabe y mit Zirkumflex","Latin capital letter y with diaeresis":"Lateinischer Großbuchstabe y mit Trema","Latin capital letter z with acute":"Lateinischer Großbuchstabe z mit Akut","Latin capital letter z with caron":"Lateinischer Großbuchstabe z mit Hatschek","Latin capital letter z with dot above":"Lateinischer Großbuchstabe z mit Punkt darüber","Latin capital ligature ij":"Große lateinische Ligatur ij","Latin capital ligature oe":"Große lateinische Ligatur oe","Latin small letter a with breve":"Lateinischer Kleinbuchstabe a mit Breve","Latin small letter a with macron":"Lateinischer Kleinbuchstabe a mit Makron","Latin small letter a with ogonek":"Lateinischer Kleinbuchstabe a mit Ogonek","Latin small letter c with acute":"Lateinischer Kleinbuchstabe c mit Akut","Latin small letter c with caron":"Lateinischer Kleinbuchstabe c mit Hatschek","Latin small letter c with circumflex":"Lateinischer Kleinbuchstabe c mit Zirkumflex","Latin small letter c with dot above":"Lateinischer Kleinbuchstabe c mit Punkt darüber","Latin small letter d with caron":"Lateinischer Kleinbuchstabe d mit Hatschek","Latin small letter d with stroke":"Lateinischer Kleinbuchstabe d mit Querstrich","Latin small letter dotless i":"Lateinischer Kleinbuchstabe i ohne Punkt","Latin small letter e with breve":"Lateinischer Kleinbuchstabe e mit Breve","Latin small letter e with caron":"Lateinischer Kleinbuchstabe e mit Hatschek","Latin small letter e with dot above":"Lateinischer Kleinbuchstabe e mit Punkt darüber","Latin small letter e with macron":"Lateinischer Kleinbuchstabe e mit Makron","Latin small letter e with ogonek":"Lateinischer Kleinbuchstabe e mit Ogonek","Latin small letter eng":"Lateinischer Kleinbuchstabe Eng","Latin small letter f with hook":"Lateinischer Kleinbuchstabe f mit Haken","Latin small letter g with breve":"Lateinischer Kleinbuchstabe g mit Breve","Latin small letter g with cedilla":"Lateinischer Kleinbuchstabe g mit Cedille","Latin small letter g with circumflex":"Lateinischer Kleinbuchstabe g mit Zirkumflex","Latin small letter g with dot above":"Lateinischer Kleinbuchstabe g mit Punkt darüber","Latin small letter h with circumflex":"Lateinischer Kleinbuchstabe h mit Zirkumflex","Latin small letter h with stroke":"Lateinischer Kleinbuchstabe h mit Querstrich","Latin small letter i with breve":"Lateinischer Kleinbuchstabe i mit Breve","Latin small letter i with macron":"Lateinischer Kleinbuchstabe i mit Makron","Latin small letter i with ogonek":"Lateinischer Kleinbuchstabe i mit Ogonek","Latin small letter i with tilde":"Lateinischer Kleinbuchstabe i mit Tilde","Latin small letter j with circumflex":"Lateinischer Kleinbuchstabe j mit Zirkumflex","Latin small letter k with cedilla":"Lateinischer Kleinbuchstabe k mit Cedille","Latin small letter kra":"Lateinischer Kleinbuchstabe Kra","Latin small letter l with acute":"Lateinischer Kleinbuchstabe l mit Akut","Latin small letter l with caron":"Lateinischer Kleinbuchstabe l mit Hatschek","Latin small letter l with cedilla":"Lateinischer Kleinbuchstabe l mit Cedille","Latin small letter l with middle dot":"Lateinischer Kleinbuchstabe l mit Mittelpunkt","Latin small letter l with stroke":"Lateinischer Kleinbuchstabe l mit Querstrich","Latin small letter long s":"Lateinischer Kleinbuchstabe langes s","Latin small letter n preceded by apostrophe":"Lateinischer Kleinbuchstabe n mit vorangestelltem Apostroph","Latin small letter n with acute":"Lateinischer Kleinbuchstabe n mit Akut","Latin small letter n with caron":"Lateinischer Kleinbuchstabe n mit Hatschek","Latin small letter n with cedilla":"Lateinischer Kleinbuchstabe n mit Cedille","Latin small letter o with breve":"Lateinischer Kleinbuchstabe o mit Breve","Latin small letter o with double acute":"Lateinischer Kleinbuchstabe o mit doppeltem Akut","Latin small letter o with macron":"Lateinischer Kleinbuchstabe o mit Makron","Latin small letter r with acute":"Lateinischer Kleinbuchstabe r mit Akut","Latin small letter r with caron":"Lateinischer Kleinbuchstabe r mit Hatschek","Latin small letter r with cedilla":"Lateinischer Kleinbuchstabe r mit Cedille","Latin small letter s with acute":"Lateinischer Kleinbuchstabe s mit Akut","Latin small letter s with caron":"Lateinischer Kleinbuchstabe s mit Hatschek","Latin small letter s with cedilla":"Lateinischer Kleinbuchstabe s mit Cedille","Latin small letter s with circumflex":"Lateinischer Kleinbuchstabe s mit Zirkumflex","Latin small letter t with caron":"Lateinischer Kleinbuchstabe t mit Hatschek","Latin small letter t with cedilla":"Lateinischer Kleinbuchstabe t mit Cedille","Latin small letter t with stroke":"Lateinischer Kleinbuchstabe t mit Querstrich","Latin small letter u with breve":"Lateinischer Kleinbuchstabe u mit Breve","Latin small letter u with double acute":"Lateinischer Kleinbuchstabe u mit doppeltem Akut","Latin small letter u with macron":"Lateinischer Kleinbuchstabe u mit Makron","Latin small letter u with ogonek":"Lateinischer Kleinbuchstabe u mit Ogonek","Latin small letter u with ring above":"Lateinischer Kleinbuchstabe u mit Kroužek darüber","Latin small letter u with tilde":"Lateinischer Kleinbuchstabe u mit Tilde","Latin small letter w with circumflex":"Lateinischer Kleinbuchstabe w mit Zirkumflex","Latin small letter y with circumflex":"Lateinischer Kleinbuchstabe y mit Zirkumflex","Latin small letter z with acute":"Lateinischer Kleinbuchstabe z mit Akut","Latin small letter z with caron":"Lateinischer Kleinbuchstabe z mit Hatschek","Latin small letter z with dot above":"Lateinischer Kleinbuchstabe z mit Punkt darüber","Latin small ligature ij":"Kleine lateinische Ligatur ij","Latin small ligature oe":"Kleine lateinische Ligatur oe","Left double quotation mark":"Doppelte Anführungszeichen links","Left single quotation mark":"Einfache Anführungszeichen links","Left-pointing double angle quotation mark":"Doppelte Guillemets nach links","leftwards arrow to bar":"Pfeil nach links zum Querstrich","leftwards dashed arrow":"Gestrichelter Pfeil nach links","leftwards double arrow":"Doppelpfeil nach links","leftwards simple arrow":"einfacher Linkspfeil","Less-than or equal to":"Kleiner als oder gleich","Less-than sign":"Kleiner-als-Zeichen","Lira sign":"Lira-Zeichen","Livre tournois sign":"Livre tournois-Zeichen","Logical and":"Logisches und","Logical or":"Logisches oder",Macron:"Makron","Manat sign":"Manat-Zeichen","Mill sign":"Mill-Zeichen","Minus sign":"Minus-Zeichen","Multiplication sign":"Mal-Zeichen","N-ary product":"Produkt-Zeichen","N-ary summation":"Summen-Zeichen",Nabla:"Nabla","Naira sign":"Naira-Zeichen","New sheqel sign":"Schekel-Zeichen","Nordic mark sign":"Nordische Mark-Zeichen","Not an element of":"Kein Element von","Not equal to":"Ungleich","Not sign":"Negations-Zeichen","on with exclamation mark with left right arrow above":"„On“ mit Ausrufezeichen darüber Pfeil nach links und rechts",Overline:"Überstrich","Paragraph sign":"Absatz-Zeichen","Partial differential":"Partielle Ableitung","Per mille sign":"Promille-Zeichen","Per ten thousand sign":"Pro-Zehntausend-Zeichen","Peseta sign":"Peseta-Zeichen","Peso sign":"Philippinischer Peso-Zeichen","Plus-minus sign":"Plus-Minus-Zeichen","Pound sign":"Pfund-Zeichen","Proportional to":"Proportional zu","Question exclamation mark":"Frage-Ruf-Zeichen","Registered sign":"Registered-Trade-Mark-Zeichen","Reversed paragraph sign":"Umgedrehtes Absatz-Zeichen","Right double quotation mark":"Doppelte Anführungszeichen rechts","Right single quotation mark":"Einfache Anführungszeichen rechts","Right-pointing double angle quotation mark":"Doppelte Guillemets nach rechts","rightwards arrow to bar":"Pfeil nach rechts zum Querstrich","rightwards dashed arrow":"Gestrichelter Pfeil nach rechts","rightwards double arrow":"Doppelpfeil nach rechts","rightwards simple arrow":"einfacher Rechtspfeil","Ruble sign":"Rubel-Zeichen","Rupee sign":"Rupie-Zeichen","Section sign":"Paragraphen-Zeichen","Single left-pointing angle quotation mark":"Einfache Guillemets nach links","Single low-9 quotation mark":"Einfache Anführungszeichen links unten","Single right-pointing angle quotation mark":"Einfache Guillemets nach rechts","soon with rightwards arrow above":"„Soon“ darüber Pfeil nach rechts","Special characters":"Sonderzeichen","Spesmilo sign":"Spesmilo-Zeichen","Square root":"Wurzel-Zeichen","Tenge sign":"Tenge-Zeichen","There exists":"Existenzquantor","Tilde operator":"Tilde-Operator","top with upwards arrow above":"„Top“ darüber Pfeil nach oben","Trade mark sign":"Unregistered-Trade-Mark-Zeichen","Tugrik sign":"Tugrik-Zeichen","Turkish lira sign":"Türkische Lira-Zeichen","Two dot leader":"Doppel-Punktlinie",Union:"Vereinigung","up down arrow with base":"Unterstrichener Pfeil nach oben und unten","upwards arrow to bar":"Pfeil nach oben zum Querstrich","upwards dashed arrow":"Gestrichelter Pfeil nach oben","upwards double arrow":"Doppelpfeil nach oben","upwards simple arrow":"einfacher Aufwärtspfeil","Vulgar fraction one half":"Gemeiner Bruch ein Halb","Vulgar fraction one quarter":"Gemeiner Bruch ein Viertel","Vulgar fraction three quarters":"Gemeiner Bruch drei Viertel","Won sign":"Won-Zeichen","Yen sign":"Yen-Zeichen"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/special-characters/translations/el.js b/core/assets/vendor/ckeditor5/special-characters/translations/el.js
index b724401c90..4ca8e57a07 100644
--- a/core/assets/vendor/ckeditor5/special-characters/translations/el.js
+++ b/core/assets/vendor/ckeditor5/special-characters/translations/el.js
@@ -1 +1 @@
-!function(t){const a=t.el=t.el||{};a.dictionary=Object.assign(a.dictionary||{},{"Almost equal to":"Περίπου ίσο με",Angle:"Γωνία","Approximately equal to":"Κατά προσέγγιση ίσο με","Asterisk operator":"Τελεστής αστερίσκος","Austral sign":"Σύμβολο αουστράλ Αργεντινής","back with leftwards arrow above":"όπισθεν με αριστερό βέλος άνω","Bitcoin sign":"Σύμβολο Bitcoin","Cedi sign":"Σύμβολο σίντι Γκάνας","Cent sign":"Σύμβολο λεπτού","Character categories":"Κατηγορίες χαρακτήρων","Colon sign":"Σύμβολο άνω κάτω τελείας","Contains as member":"Περιέχει ως μέλος","Copyright sign":"Σύμβολο πνευματικής ιδιοκτησίας","Cruzeiro sign":"Σύμβολο Κρουζέιρο","Currency sign":"Σύμβολο νομίσματος","Degree sign":"Σύμβολο βαθμών Κελσίου","Division sign":"Σύμβολο διαίρεσης","Dollar sign":"Σύμβολο δολλαρίου","Dong sign":"Σύμβολο Ντόνγκ Βιετνάμ","Double dagger":"Διπλός σταυρός","Double exclamation mark":"Διπλό θαυμαστικό","Double low-9 quotation mark":"Διπλό κάτω-9 εισαγωγικό","Double question mark":"Διπλό ερωτηματικό","downwards arrow to bar":"κάτω βέλος σε γραμμή","downwards dashed arrow":"κάτω βέλος με παύλες","downwards double arrow":"κάτω διπλό βέλος","Drachma sign":"Σύμβολο δραχμής Ελλάδας","Element of":"Στοιχείο του","Em dash":"Μικρή παύλα","Empty set":"Κενό σύνολο","En dash":"Μεγάλη παύλα","end with leftwards arrow above":"τέλος με αριστερό βέλος άνω","Euro sign":"Σύμβολο ευρώ","Euro-currency sign":"Σύμβολο ευρωνομίσματος","Exclamation question mark":"Θαυμαστικό","For all":"Σύμβολο για όλα","Fraction slash":"Κάθετος κλάσματος","French franc sign":"Σύμβολο γαλλικού φράγκου","German penny sign":"Σύμβολο γερμανικού λεπτού","Greater-than or equal to":"Σύμβολο μεγαλύτερο ή ίσο από","Greater-than sign":"Σύμβολο μεγαλύτερο από","Guarani sign":"Σύμβολο γκουαράνι Παραγουάης","Horizontal ellipsis":"Οριζόντια έλλειψη","Hryvnia sign":"Σύμβολο γρίβνα Ουκρανίας","Identical to":"Ταυτόσημο με","Indian rupee sign":"Σύμβολο ρουπίας Ινδίας",Infinity:"Άπειρο",Integral:"Ολοκλήρωμα",Intersection:"Τομή","Inverted exclamation mark":"Αντεστραμμένο θαυμαστικό","Inverted question mark":"Αντεστραμμένο ερωτηματικό","Kip sign":"Σύμβολο κίπ Λάος","Latin capital letter a with breve":"Λατινικό κεφαλαίο γράμμα a με μισοφέγγαρο","Latin capital letter a with macron":"Λατινικό κεφαλαίο γράμμα a με παύλα","Latin capital letter a with ogonek":"Λατινικό κεφαλαίο γράμμα a με μικρή ουρά","Latin capital letter c with acute":"Λατινικό κεφαλαίο γράμμα c με δεξί τόνο","Latin capital letter c with caron":"Λατινικό κεφαλαίο γράμμα c με ανάποδο καπελάκι","Latin capital letter c with circumflex":"Λατινικό κεφαλαίο γράμμα c με καπελάκι","Latin capital letter c with dot above":"Λατινικό κεφαλαίο γράμμα c με τελεία επάνω","Latin capital letter d with caron":"Λατινικό κεφαλαίο γράμμα d με ανάποδο καπελάκι","Latin capital letter d with stroke":"Λατινικό κεφαλαίο γράμμα d με σταυρωμένη παύλα","Latin capital letter e with breve":"Λατινικό κεφαλαίο γράμμα e με μισοφέγγαρο","Latin capital letter e with caron":"Λατινικό κεφαλαίο γράμμα e με ανάποδο καπελάκι","Latin capital letter e with dot above":"Λατινικό κεφαλαίο γράμμα e με τελεία επάνω","Latin capital letter e with macron":"Λατινικό κεφαλαίο γράμμα e με παύλα","Latin capital letter e with ogonek":"Λατινικό κεφαλαίο γράμμα e με μικρή ουρά","Latin capital letter eng":"Λατινικό κεφαλαίο γράμμα eng","Latin capital letter g with breve":"Λατινικό κεφαλαίο γράμμα g με βραχεία","Latin capital letter g with cedilla":"Λατινικό κεφαλαίο γράμμα g με υποστιγμή","Latin capital letter g with circumflex":"Λατινικό κεφαλαίο γράμμα g με καπελάκι","Latin capital letter g with dot above":"Λατινικό κεφαλαίο γράμμα g με τελεία επάνω","Latin capital letter h with circumflex":"Λατινικό κεφαλαίο γράμμα h με αιχμή","Latin capital letter h with stroke":"Λατινικό κεφαλαίο γράμμα h με κάθετο","Latin capital letter i with breve":"Λατινικό κεφαλαίο γράμμα i με βραχεία","Latin capital letter i with dot above":"Λατινικό κεφαλαίο γράμμα i με τελεία επάνω","Latin capital letter i with macron":"Λατινικό κεφαλαίο γράμμα i με μακριά παύλα","Latin capital letter i with ogonek":"Λατινικό κεφαλαίο γράμμα i με ανάστροφη υποστιγμή","Latin capital letter i with tilde":"Λατινικό κεφαλαίο γράμμα i με περισπωμένη","Latin capital letter j with circumflex":"Λατινικό κεφαλαίο γράμμα j με αιχμή","Latin capital letter k with cedilla":"Λατινικό κεφαλαίο γράμμα k με υποστιγμή","Latin capital letter l with acute":"Λατινικό κεφαλαίο γράμμα l με οξεία","Latin capital letter l with caron":"Λατινικό κεφαλαίο γράμμα l με αμβλεία","Latin capital letter l with cedilla":"Λατινικό κεφαλαίο γράμμα l με υποστιγμή","Latin capital letter l with middle dot":"Λατινικό κεφαλαίο γράμμα l με μεσαία τελεία","Latin capital letter l with stroke":"Λατινικό κεφαλαίο γράμμα l με κάθετο","Latin capital letter n with acute":"Λατινικό κεφαλαίο γράμμα n με οξεία","Latin capital letter n with caron":"Λατινικό κεφαλαίο γράμμα n με αμβλεία","Latin capital letter n with cedilla":"Λατινικό κεφαλαίο γράμμα n με υποστιγμή","Latin capital letter o with breve":"Λατινικό κεφαλαίο γράμμα o με βραχεία","Latin capital letter o with double acute":"Λατινικό κεφαλαίο γράμμα o με διπλή οξεία","Latin capital letter o with macron":"Λατινικό κεφαλαίο γράμμα o με μακριά παύλα","Latin capital letter r with acute":"Λατινικό κεφαλαίο γράμμα r με οξεία","Latin capital letter r with caron":"Λατινικό κεφαλαίο γράμμα r με αμβλεία","Latin capital letter r with cedilla":"Λατινικό κεφαλαίο γράμμα r με υποστιγμή","Latin capital letter s with acute":"Λατινικό κεφαλαίο γράμμα s με οξεία","Latin capital letter s with caron":"Λατινικό κεφαλαίο γράμμα s με αμβλεία","Latin capital letter s with cedilla":"Λατινικό κεφαλαίο γράμμα s με υποστιγμή","Latin capital letter s with circumflex":"Λατινικό κεφαλαίο γράμμα s με αιχμή","Latin capital letter t with caron":"Λατινικό κεφαλαίο γράμμα t με αμβλεία","Latin capital letter t with cedilla":"Λατινικό κεφαλαίο γράμμα t με υποστιγμή","Latin capital letter t with stroke":"Λατινικό κεφαλαίο γράμμα t με κάθετο","Latin capital letter u with breve":"Λατινικό κεφαλαίο γράμμα u με βραχεία","Latin capital letter u with double acute":"Λατινικό κεφαλαίο γράμμα u με διπλή οξεία","Latin capital letter u with macron":"Λατινικό κεφαλαίο γράμμα u με μακριά παύλα","Latin capital letter u with ogonek":"Λατινικό κεφαλαίο γράμμα u με ανάστροφη υποστιγμή","Latin capital letter u with ring above":"Λατινικό κεφαλαίο γράμμα u με δακτύλιο επάνω","Latin capital letter u with tilde":"Λατινικό κεφαλαίο γράμμα u με περισπωμένη","Latin capital letter w with circumflex":"Λατινικό κεφαλαίο γράμμα w με αιχμή","Latin capital letter y with circumflex":"Λατινικό κεφαλαίο γράμμα y με αιχμή","Latin capital letter y with diaeresis":"Λατινικό κεφαλαίο γράμμα y με διαλυτικά","Latin capital letter z with acute":"Λατινικό κεφαλαίο γράμμα z με οξεία","Latin capital letter z with caron":"Λατινικό κεφαλαίο γράμμα z με αμβλεία","Latin capital letter z with dot above":"Λατινικό κεφαλαίο γράμμα z με τελεία επάνω","Latin capital ligature ij":"Λατινικό κεφαλαίο σύμπλεγμα ij","Latin capital ligature oe":"Λατινικό κεφαλαίο σύμπλεγμα oe","Latin small letter a with breve":"Λατινικό μικρό γράμμα a με μισοφέγγαρο","Latin small letter a with macron":"Λατινικό μικρό γράμμα a με παύλα","Latin small letter a with ogonek":"Λατινικό μικρό γράμμα a με μικρή ουρά","Latin small letter c with acute":"Λατινικό μικρό γράμμα c με δεξί τόνο","Latin small letter c with caron":"Λατινικό μικρό γράμμα c με ανάποδο καπελάκι","Latin small letter c with circumflex":"Λατινικό μικρό γράμμα c με καπελάκι","Latin small letter c with dot above":"Λατινικό μικρό γράμμα c με τελεία επάνω","Latin small letter d with caron":"Λατινικό μικρό γράμμα d με ανάποδο καπελάκι","Latin small letter d with stroke":"Λατινικό μικρό γράμμα d με σταυρωμένη παύλα","Latin small letter dotless i":"Λατινικό μικρό γράμμα i χωρίς τελεία","Latin small letter e with breve":"Λατινικό μικρό γράμμα e με μισοφέγγαρο","Latin small letter e with caron":"Λατινικό μικρό γράμμα e με ανάποδο καπελάκι","Latin small letter e with dot above":"Λατινικό μικρό γράμμα e με τελεία επάνω","Latin small letter e with macron":"Λατινικό μικρό γράμμα e με παύλα","Latin small letter e with ogonek":"Λατινικό μικρό γράμμα e με μικρή ουρά","Latin small letter eng":"Λατινικό μικρό γράμμα eng","Latin small letter f with hook":"Λατινικό μικρό γράμμα f με άγκιστρο","Latin small letter g with breve":"Λατινικό μικρό γράμμα g με βραχεία","Latin small letter g with cedilla":"Λατινικό μικρό γράμμα g με υποστιγμή","Latin small letter g with circumflex":"Λατινικό μικρό γράμμα g με καπελάκι","Latin small letter g with dot above":"Λατινικό μικρό γράμμα g με τελεία επάνω","Latin small letter h with circumflex":"Λατινικό μικρό γράμμα h με αιχμή","Latin small letter h with stroke":"Λατινικό μικρό γράμμα h με κάθετο","Latin small letter i with breve":"Λατινικό μικρό γράμμα i με βραχεία","Latin small letter i with macron":"Λατινικό μικρό γράμμα i με μακριά παύλα","Latin small letter i with ogonek":"Λατινικό μικρό γράμμα i με ανάστροφη υποστιγμή","Latin small letter i with tilde":"Λατινικό μικρό γράμμα i με περισπωμένη","Latin small letter j with circumflex":"Λατινικό μικρό γράμμα j με αιχμή","Latin small letter k with cedilla":"Λατινικό μικρό γράμμα k με υποστιγμή","Latin small letter kra":"Λατινικό μικρό γράμμα kra","Latin small letter l with acute":"Λατινικό μικρό γράμμα l με οξεία","Latin small letter l with caron":"Λατινικό μικρό γράμμα l με αμβλεία","Latin small letter l with cedilla":"Λατινικό μικρό γράμμα l με υποστιγμή","Latin small letter l with middle dot":"Λατινικό μικρό γράμμα l με μεσαία τελεία","Latin small letter l with stroke":"Λατινικό μικρό γράμμα l με κάθετο","Latin small letter long s":"Λατινικό μικρό γράμμα μακρό s","Latin small letter n preceded by apostrophe":"Λατινικό μικρό γράμμα n με απόστροφο που προηγείται","Latin small letter n with acute":"Λατινικό μικρό γράμμα n με οξεία","Latin small letter n with caron":"Λατινικό μικρό γράμμα n με αμβλεία","Latin small letter n with cedilla":"Λατινικό μικρό γράμμα n με υποστιγμή","Latin small letter o with breve":"Λατινικό μικρό γράμμα o με βραχεία","Latin small letter o with double acute":"Λατινικό μικρό γράμμα o με διπλή οξεία","Latin small letter o with macron":"Λατινικό κεφαλαίο γράμμα o με μακριά παύλα","Latin small letter r with acute":"Λατινικό μικρό γράμμα r με οξεία","Latin small letter r with caron":"Λατινικό μικρό γράμμα r με αμβλεία","Latin small letter r with cedilla":"Λατινικό μικρό γράμμα r με υποστιγμή","Latin small letter s with acute":"Λατινικό μικρό γράμμα s με οξεία","Latin small letter s with caron":"Λατινικό μικρό γράμμα s με αμβλεία","Latin small letter s with cedilla":"Λατινικό μικρό γράμμα s με υποστιγμή","Latin small letter s with circumflex":"Λατινικό μικρό γράμμα s με αιχμή","Latin small letter t with caron":"Λατινικό μικρό γράμμα t με αμβλεία","Latin small letter t with cedilla":"Λατινικό μικρό γράμμα t με υποστιγμή","Latin small letter t with stroke":"Λατινικό μικρό γράμμα t με κάθετο","Latin small letter u with breve":"Λατινικό μικρό γράμμα u με βραχεία","Latin small letter u with double acute":"Λατινικό μικρό γράμμα u με διπλή οξεία","Latin small letter u with macron":"Λατινικό μικρό γράμμα u με μακριά παύλα","Latin small letter u with ogonek":"Λατινικό μικρό γράμμα u με ανάστροφη υποστιγμή","Latin small letter u with ring above":"Λατινικό μικρό γράμμα u με δακτύλιο επάνω","Latin small letter u with tilde":"Λατινικό μικρό γράμμα u με περισπωμένη","Latin small letter w with circumflex":"Λατινικό μικρό γράμμα w με αιχμή","Latin small letter y with circumflex":"Λατινικό μικρό γράμμα y με αιχμή","Latin small letter z with acute":"Λατινικό μικρό γράμμα z με οξεία","Latin small letter z with caron":"Λατινικό μικρό γράμμα z με αμβλεία","Latin small letter z with dot above":"Λατινικό μικρό γράμμα z με τελεία επάνω","Latin small ligature ij":"Λατινικό μικρό σύμπλεγμα ij","Latin small ligature oe":"Λατινικό μικρό σύμπλεγμα oe","Left double quotation mark":"Διπλό αριστερό ερωτηματικό","Left single quotation mark":"Μονό αριστερό ερωτηματικό","Left-pointing double angle quotation mark":"Διπλό ερωτηματικό αριστερής γωνίας","leftwards arrow to bar":"αριστερό βέλος σε γραμμή","leftwards dashed arrow":"αριστερό βέλος με παύλες","leftwards double arrow":"αριστερό διπλό βέλος","Less-than or equal to":"Σύμβολο μικρότερο ή ίσο από","Less-than sign":"Σύμβολο μικρότερο από","Lira sign":"Σύμβολο λίρας Τουρκίας","Livre tournois sign":"Σύμβολο λίβρα τουρ Γαλλίας","Logical and":"Λογικός τελεστής τομής","Logical or":"Λογικός τελεστής ένωσης",Macron:"Μακριά παύλα","Manat sign":"Σύμβολο μανάτ Αζερμπαϊτζάν","Mill sign":"Σύμβολο χιλιοστού νομίσματος","Minus sign":"Σύμβολο αφαίρεσης","Multiplication sign":"Σύμβολο πολλαπλασιασμού","N-ary product":"Νιοστό παραγοντικό","N-ary summation":"Νιοστή άθροιση",Nabla:"Ανάδελτα","Naira sign":"Σύμβολο Ναΐρα Νιγηρίας","New sheqel sign":"Σύμβολο νέου σεκέλ Ισραήλ","Nordic mark sign":"Σύμβολο μάρκου Νορβηγίας","Not an element of":"Όχι στοιχείο του","Not equal to":"Όχι ίσο με","Not sign":"Σύμβολο άρνησης","on with exclamation mark with left right arrow above":"ενεργό με θαυμαστικό με αριστερό δεξί βέλος άνω",Overline:"Άνω γραμμή","Paragraph sign":"Σύμβολο παραγράφου","Partial differential":"Μερικό διαφορικό","Per mille sign":"Σύμβολο τοις χιλίοις","Per ten thousand sign":"Σύμβολο δεκάκις χιλίοις","Peseta sign":"Σύμβολο πεσέτας Ισπανίας","Peso sign":"Σύμβολο πέσος Μεξικού","Plus-minus sign":"Σύμβολο συν-πλην","Pound sign":"Σύμβολο λίρας Αγγλίας","Proportional to":"Αναλογικό με","Question exclamation mark":"Ερωτηματικό","Registered sign":"Σύμβολο καταχώρησης","Reversed paragraph sign":"Σύμβολο αντεστραμμένης παραγράφου","Right double quotation mark":"Δεξί διπλό ερωτηματικό","Right single quotation mark":"Μονό δεξιό ερωτηματικό","Right-pointing double angle quotation mark":"Διπλό ερωτηματικό δεξιάς γωνίας","rightwards arrow to bar":"δεξιό βέλος σε γραμμή","rightwards dashed arrow":"δεξιό βέλος με παύλες","rightwards double arrow":"δεξιό διπλό βέλος","Ruble sign":"Σύμβολο ρουβλίου Ρωσίας","Rupee sign":"Σύμβολο ρουπίας Ινδίας","Section sign":"Σύμβολο τομέα","Single left-pointing angle quotation mark":"Μονό ερωτηματικό αριστερής γωνίας","Single low-9 quotation mark":"Μονό κάτω-9 εισαγωγικό","Single right-pointing angle quotation mark":"Μονό ερωτηματικό δεξιάς γωνίας","soon with rightwards arrow above":"σύντομα με δεξί βέλος άνω","Special characters":"Ειδικοί χαρακτήρες","Spesmilo sign":"Σύμβολο σπεσμίλο","Square root":"Τετραγωνική ρίζα","Tenge sign":"Σύμβολο τένγκε Καζακστάν","There exists":"Υπάρχει","Tilde operator":"Τελεστής περισπωμένης","top with upwards arrow above":"κορυφή με άνω βέλος επάνω","Trade mark sign":"Σύμβολο εμπορικού σήματος","Tugrik sign":"Σύμβολο τουγκρίκ Μογγολίας","Turkish lira sign":"Σύμβολο λίρας Τουρκίας","Two dot leader":"Οδηγός δύο τελειών",Union:"Ένωση","up down arrow with base":"άνω κάτω βέλος με βάση","upwards arrow to bar":"άνω βέλος σε γραμμή","upwards dashed arrow":"άνω βέλος με παύλες","upwards double arrow":"άνω διπλό βέλος","Vulgar fraction one half":"Ανάγωγο Κλάσμα ενός δευτέρου","Vulgar fraction one quarter":"Ανάγωγο Κλάσμα ενός τετάρτου","Vulgar fraction three quarters":"Ανάγωγο Κλάσμα τριών τετάρτων","Won sign":"Σύμβολο Γουάν Κίνας","Yen sign":"Σύμβολο Γιέν"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(t){const a=t.el=t.el||{};a.dictionary=Object.assign(a.dictionary||{},{"Almost equal to":"Περίπου ίσο με",Angle:"Γωνία","Approximately equal to":"Κατά προσέγγιση ίσο με","Asterisk operator":"Τελεστής αστερίσκος","Austral sign":"Σύμβολο αουστράλ Αργεντινής","back with leftwards arrow above":"όπισθεν με αριστερό βέλος άνω","Bitcoin sign":"Σύμβολο Bitcoin","Cedi sign":"Σύμβολο σίντι Γκάνας","Cent sign":"Σύμβολο λεπτού","Character categories":"Κατηγορίες χαρακτήρων","Colon sign":"Σύμβολο άνω κάτω τελείας","Contains as member":"Περιέχει ως μέλος","Copyright sign":"Σύμβολο πνευματικής ιδιοκτησίας","Cruzeiro sign":"Σύμβολο Κρουζέιρο","Currency sign":"Σύμβολο νομίσματος","Degree sign":"Σύμβολο βαθμών Κελσίου","Division sign":"Σύμβολο διαίρεσης","Dollar sign":"Σύμβολο δολλαρίου","Dong sign":"Σύμβολο Ντόνγκ Βιετνάμ","Double dagger":"Διπλός σταυρός","Double exclamation mark":"Διπλό θαυμαστικό","Double low-9 quotation mark":"Διπλό κάτω-9 εισαγωγικό","Double question mark":"Διπλό ερωτηματικό","downwards arrow to bar":"κάτω βέλος σε γραμμή","downwards dashed arrow":"κάτω βέλος με παύλες","downwards double arrow":"κάτω διπλό βέλος","downwards simple arrow":"απλό βέλος προς τα κάτω","Drachma sign":"Σύμβολο δραχμής Ελλάδας","Element of":"Στοιχείο του","Em dash":"Μικρή παύλα","Empty set":"Κενό σύνολο","En dash":"Μεγάλη παύλα","end with leftwards arrow above":"τέλος με αριστερό βέλος άνω","Euro sign":"Σύμβολο ευρώ","Euro-currency sign":"Σύμβολο ευρωνομίσματος","Exclamation question mark":"Θαυμαστικό","For all":"Σύμβολο για όλα","Fraction slash":"Κάθετος κλάσματος","French franc sign":"Σύμβολο γαλλικού φράγκου","German penny sign":"Σύμβολο γερμανικού λεπτού","Greater-than or equal to":"Σύμβολο μεγαλύτερο ή ίσο από","Greater-than sign":"Σύμβολο μεγαλύτερο από","Guarani sign":"Σύμβολο γκουαράνι Παραγουάης","Horizontal ellipsis":"Οριζόντια έλλειψη","Hryvnia sign":"Σύμβολο γρίβνα Ουκρανίας","Identical to":"Ταυτόσημο με","Indian rupee sign":"Σύμβολο ρουπίας Ινδίας",Infinity:"Άπειρο",Integral:"Ολοκλήρωμα",Intersection:"Τομή","Inverted exclamation mark":"Αντεστραμμένο θαυμαστικό","Inverted question mark":"Αντεστραμμένο ερωτηματικό","Kip sign":"Σύμβολο κίπ Λάος","Latin capital letter a with breve":"Λατινικό κεφαλαίο γράμμα a με μισοφέγγαρο","Latin capital letter a with macron":"Λατινικό κεφαλαίο γράμμα a με παύλα","Latin capital letter a with ogonek":"Λατινικό κεφαλαίο γράμμα a με μικρή ουρά","Latin capital letter c with acute":"Λατινικό κεφαλαίο γράμμα c με δεξί τόνο","Latin capital letter c with caron":"Λατινικό κεφαλαίο γράμμα c με ανάποδο καπελάκι","Latin capital letter c with circumflex":"Λατινικό κεφαλαίο γράμμα c με καπελάκι","Latin capital letter c with dot above":"Λατινικό κεφαλαίο γράμμα c με τελεία επάνω","Latin capital letter d with caron":"Λατινικό κεφαλαίο γράμμα d με ανάποδο καπελάκι","Latin capital letter d with stroke":"Λατινικό κεφαλαίο γράμμα d με σταυρωμένη παύλα","Latin capital letter e with breve":"Λατινικό κεφαλαίο γράμμα e με μισοφέγγαρο","Latin capital letter e with caron":"Λατινικό κεφαλαίο γράμμα e με ανάποδο καπελάκι","Latin capital letter e with dot above":"Λατινικό κεφαλαίο γράμμα e με τελεία επάνω","Latin capital letter e with macron":"Λατινικό κεφαλαίο γράμμα e με παύλα","Latin capital letter e with ogonek":"Λατινικό κεφαλαίο γράμμα e με μικρή ουρά","Latin capital letter eng":"Λατινικό κεφαλαίο γράμμα eng","Latin capital letter g with breve":"Λατινικό κεφαλαίο γράμμα g με βραχεία","Latin capital letter g with cedilla":"Λατινικό κεφαλαίο γράμμα g με υποστιγμή","Latin capital letter g with circumflex":"Λατινικό κεφαλαίο γράμμα g με καπελάκι","Latin capital letter g with dot above":"Λατινικό κεφαλαίο γράμμα g με τελεία επάνω","Latin capital letter h with circumflex":"Λατινικό κεφαλαίο γράμμα h με αιχμή","Latin capital letter h with stroke":"Λατινικό κεφαλαίο γράμμα h με κάθετο","Latin capital letter i with breve":"Λατινικό κεφαλαίο γράμμα i με βραχεία","Latin capital letter i with dot above":"Λατινικό κεφαλαίο γράμμα i με τελεία επάνω","Latin capital letter i with macron":"Λατινικό κεφαλαίο γράμμα i με μακριά παύλα","Latin capital letter i with ogonek":"Λατινικό κεφαλαίο γράμμα i με ανάστροφη υποστιγμή","Latin capital letter i with tilde":"Λατινικό κεφαλαίο γράμμα i με περισπωμένη","Latin capital letter j with circumflex":"Λατινικό κεφαλαίο γράμμα j με αιχμή","Latin capital letter k with cedilla":"Λατινικό κεφαλαίο γράμμα k με υποστιγμή","Latin capital letter l with acute":"Λατινικό κεφαλαίο γράμμα l με οξεία","Latin capital letter l with caron":"Λατινικό κεφαλαίο γράμμα l με αμβλεία","Latin capital letter l with cedilla":"Λατινικό κεφαλαίο γράμμα l με υποστιγμή","Latin capital letter l with middle dot":"Λατινικό κεφαλαίο γράμμα l με μεσαία τελεία","Latin capital letter l with stroke":"Λατινικό κεφαλαίο γράμμα l με κάθετο","Latin capital letter n with acute":"Λατινικό κεφαλαίο γράμμα n με οξεία","Latin capital letter n with caron":"Λατινικό κεφαλαίο γράμμα n με αμβλεία","Latin capital letter n with cedilla":"Λατινικό κεφαλαίο γράμμα n με υποστιγμή","Latin capital letter o with breve":"Λατινικό κεφαλαίο γράμμα o με βραχεία","Latin capital letter o with double acute":"Λατινικό κεφαλαίο γράμμα o με διπλή οξεία","Latin capital letter o with macron":"Λατινικό κεφαλαίο γράμμα o με μακριά παύλα","Latin capital letter r with acute":"Λατινικό κεφαλαίο γράμμα r με οξεία","Latin capital letter r with caron":"Λατινικό κεφαλαίο γράμμα r με αμβλεία","Latin capital letter r with cedilla":"Λατινικό κεφαλαίο γράμμα r με υποστιγμή","Latin capital letter s with acute":"Λατινικό κεφαλαίο γράμμα s με οξεία","Latin capital letter s with caron":"Λατινικό κεφαλαίο γράμμα s με αμβλεία","Latin capital letter s with cedilla":"Λατινικό κεφαλαίο γράμμα s με υποστιγμή","Latin capital letter s with circumflex":"Λατινικό κεφαλαίο γράμμα s με αιχμή","Latin capital letter t with caron":"Λατινικό κεφαλαίο γράμμα t με αμβλεία","Latin capital letter t with cedilla":"Λατινικό κεφαλαίο γράμμα t με υποστιγμή","Latin capital letter t with stroke":"Λατινικό κεφαλαίο γράμμα t με κάθετο","Latin capital letter u with breve":"Λατινικό κεφαλαίο γράμμα u με βραχεία","Latin capital letter u with double acute":"Λατινικό κεφαλαίο γράμμα u με διπλή οξεία","Latin capital letter u with macron":"Λατινικό κεφαλαίο γράμμα u με μακριά παύλα","Latin capital letter u with ogonek":"Λατινικό κεφαλαίο γράμμα u με ανάστροφη υποστιγμή","Latin capital letter u with ring above":"Λατινικό κεφαλαίο γράμμα u με δακτύλιο επάνω","Latin capital letter u with tilde":"Λατινικό κεφαλαίο γράμμα u με περισπωμένη","Latin capital letter w with circumflex":"Λατινικό κεφαλαίο γράμμα w με αιχμή","Latin capital letter y with circumflex":"Λατινικό κεφαλαίο γράμμα y με αιχμή","Latin capital letter y with diaeresis":"Λατινικό κεφαλαίο γράμμα y με διαλυτικά","Latin capital letter z with acute":"Λατινικό κεφαλαίο γράμμα z με οξεία","Latin capital letter z with caron":"Λατινικό κεφαλαίο γράμμα z με αμβλεία","Latin capital letter z with dot above":"Λατινικό κεφαλαίο γράμμα z με τελεία επάνω","Latin capital ligature ij":"Λατινικό κεφαλαίο σύμπλεγμα ij","Latin capital ligature oe":"Λατινικό κεφαλαίο σύμπλεγμα oe","Latin small letter a with breve":"Λατινικό μικρό γράμμα a με μισοφέγγαρο","Latin small letter a with macron":"Λατινικό μικρό γράμμα a με παύλα","Latin small letter a with ogonek":"Λατινικό μικρό γράμμα a με μικρή ουρά","Latin small letter c with acute":"Λατινικό μικρό γράμμα c με δεξί τόνο","Latin small letter c with caron":"Λατινικό μικρό γράμμα c με ανάποδο καπελάκι","Latin small letter c with circumflex":"Λατινικό μικρό γράμμα c με καπελάκι","Latin small letter c with dot above":"Λατινικό μικρό γράμμα c με τελεία επάνω","Latin small letter d with caron":"Λατινικό μικρό γράμμα d με ανάποδο καπελάκι","Latin small letter d with stroke":"Λατινικό μικρό γράμμα d με σταυρωμένη παύλα","Latin small letter dotless i":"Λατινικό μικρό γράμμα i χωρίς τελεία","Latin small letter e with breve":"Λατινικό μικρό γράμμα e με μισοφέγγαρο","Latin small letter e with caron":"Λατινικό μικρό γράμμα e με ανάποδο καπελάκι","Latin small letter e with dot above":"Λατινικό μικρό γράμμα e με τελεία επάνω","Latin small letter e with macron":"Λατινικό μικρό γράμμα e με παύλα","Latin small letter e with ogonek":"Λατινικό μικρό γράμμα e με μικρή ουρά","Latin small letter eng":"Λατινικό μικρό γράμμα eng","Latin small letter f with hook":"Λατινικό μικρό γράμμα f με άγκιστρο","Latin small letter g with breve":"Λατινικό μικρό γράμμα g με βραχεία","Latin small letter g with cedilla":"Λατινικό μικρό γράμμα g με υποστιγμή","Latin small letter g with circumflex":"Λατινικό μικρό γράμμα g με καπελάκι","Latin small letter g with dot above":"Λατινικό μικρό γράμμα g με τελεία επάνω","Latin small letter h with circumflex":"Λατινικό μικρό γράμμα h με αιχμή","Latin small letter h with stroke":"Λατινικό μικρό γράμμα h με κάθετο","Latin small letter i with breve":"Λατινικό μικρό γράμμα i με βραχεία","Latin small letter i with macron":"Λατινικό μικρό γράμμα i με μακριά παύλα","Latin small letter i with ogonek":"Λατινικό μικρό γράμμα i με ανάστροφη υποστιγμή","Latin small letter i with tilde":"Λατινικό μικρό γράμμα i με περισπωμένη","Latin small letter j with circumflex":"Λατινικό μικρό γράμμα j με αιχμή","Latin small letter k with cedilla":"Λατινικό μικρό γράμμα k με υποστιγμή","Latin small letter kra":"Λατινικό μικρό γράμμα kra","Latin small letter l with acute":"Λατινικό μικρό γράμμα l με οξεία","Latin small letter l with caron":"Λατινικό μικρό γράμμα l με αμβλεία","Latin small letter l with cedilla":"Λατινικό μικρό γράμμα l με υποστιγμή","Latin small letter l with middle dot":"Λατινικό μικρό γράμμα l με μεσαία τελεία","Latin small letter l with stroke":"Λατινικό μικρό γράμμα l με κάθετο","Latin small letter long s":"Λατινικό μικρό γράμμα μακρό s","Latin small letter n preceded by apostrophe":"Λατινικό μικρό γράμμα n με απόστροφο που προηγείται","Latin small letter n with acute":"Λατινικό μικρό γράμμα n με οξεία","Latin small letter n with caron":"Λατινικό μικρό γράμμα n με αμβλεία","Latin small letter n with cedilla":"Λατινικό μικρό γράμμα n με υποστιγμή","Latin small letter o with breve":"Λατινικό μικρό γράμμα o με βραχεία","Latin small letter o with double acute":"Λατινικό μικρό γράμμα o με διπλή οξεία","Latin small letter o with macron":"Λατινικό κεφαλαίο γράμμα o με μακριά παύλα","Latin small letter r with acute":"Λατινικό μικρό γράμμα r με οξεία","Latin small letter r with caron":"Λατινικό μικρό γράμμα r με αμβλεία","Latin small letter r with cedilla":"Λατινικό μικρό γράμμα r με υποστιγμή","Latin small letter s with acute":"Λατινικό μικρό γράμμα s με οξεία","Latin small letter s with caron":"Λατινικό μικρό γράμμα s με αμβλεία","Latin small letter s with cedilla":"Λατινικό μικρό γράμμα s με υποστιγμή","Latin small letter s with circumflex":"Λατινικό μικρό γράμμα s με αιχμή","Latin small letter t with caron":"Λατινικό μικρό γράμμα t με αμβλεία","Latin small letter t with cedilla":"Λατινικό μικρό γράμμα t με υποστιγμή","Latin small letter t with stroke":"Λατινικό μικρό γράμμα t με κάθετο","Latin small letter u with breve":"Λατινικό μικρό γράμμα u με βραχεία","Latin small letter u with double acute":"Λατινικό μικρό γράμμα u με διπλή οξεία","Latin small letter u with macron":"Λατινικό μικρό γράμμα u με μακριά παύλα","Latin small letter u with ogonek":"Λατινικό μικρό γράμμα u με ανάστροφη υποστιγμή","Latin small letter u with ring above":"Λατινικό μικρό γράμμα u με δακτύλιο επάνω","Latin small letter u with tilde":"Λατινικό μικρό γράμμα u με περισπωμένη","Latin small letter w with circumflex":"Λατινικό μικρό γράμμα w με αιχμή","Latin small letter y with circumflex":"Λατινικό μικρό γράμμα y με αιχμή","Latin small letter z with acute":"Λατινικό μικρό γράμμα z με οξεία","Latin small letter z with caron":"Λατινικό μικρό γράμμα z με αμβλεία","Latin small letter z with dot above":"Λατινικό μικρό γράμμα z με τελεία επάνω","Latin small ligature ij":"Λατινικό μικρό σύμπλεγμα ij","Latin small ligature oe":"Λατινικό μικρό σύμπλεγμα oe","Left double quotation mark":"Διπλό αριστερό ερωτηματικό","Left single quotation mark":"Μονό αριστερό ερωτηματικό","Left-pointing double angle quotation mark":"Διπλό ερωτηματικό αριστερής γωνίας","leftwards arrow to bar":"αριστερό βέλος σε γραμμή","leftwards dashed arrow":"αριστερό βέλος με παύλες","leftwards double arrow":"αριστερό διπλό βέλος","leftwards simple arrow":"απλό βέλος προς τα αριστερά","Less-than or equal to":"Σύμβολο μικρότερο ή ίσο από","Less-than sign":"Σύμβολο μικρότερο από","Lira sign":"Σύμβολο λίρας Τουρκίας","Livre tournois sign":"Σύμβολο λίβρα τουρ Γαλλίας","Logical and":"Λογικός τελεστής τομής","Logical or":"Λογικός τελεστής ένωσης",Macron:"Μακριά παύλα","Manat sign":"Σύμβολο μανάτ Αζερμπαϊτζάν","Mill sign":"Σύμβολο χιλιοστού νομίσματος","Minus sign":"Σύμβολο αφαίρεσης","Multiplication sign":"Σύμβολο πολλαπλασιασμού","N-ary product":"Νιοστό παραγοντικό","N-ary summation":"Νιοστή άθροιση",Nabla:"Ανάδελτα","Naira sign":"Σύμβολο Ναΐρα Νιγηρίας","New sheqel sign":"Σύμβολο νέου σεκέλ Ισραήλ","Nordic mark sign":"Σύμβολο μάρκου Νορβηγίας","Not an element of":"Όχι στοιχείο του","Not equal to":"Όχι ίσο με","Not sign":"Σύμβολο άρνησης","on with exclamation mark with left right arrow above":"ενεργό με θαυμαστικό με αριστερό δεξί βέλος άνω",Overline:"Άνω γραμμή","Paragraph sign":"Σύμβολο παραγράφου","Partial differential":"Μερικό διαφορικό","Per mille sign":"Σύμβολο τοις χιλίοις","Per ten thousand sign":"Σύμβολο δεκάκις χιλίοις","Peseta sign":"Σύμβολο πεσέτας Ισπανίας","Peso sign":"Σύμβολο πέσος Μεξικού","Plus-minus sign":"Σύμβολο συν-πλην","Pound sign":"Σύμβολο λίρας Αγγλίας","Proportional to":"Αναλογικό με","Question exclamation mark":"Ερωτηματικό","Registered sign":"Σύμβολο καταχώρησης","Reversed paragraph sign":"Σύμβολο αντεστραμμένης παραγράφου","Right double quotation mark":"Δεξί διπλό ερωτηματικό","Right single quotation mark":"Μονό δεξιό ερωτηματικό","Right-pointing double angle quotation mark":"Διπλό ερωτηματικό δεξιάς γωνίας","rightwards arrow to bar":"δεξιό βέλος σε γραμμή","rightwards dashed arrow":"δεξιό βέλος με παύλες","rightwards double arrow":"δεξιό διπλό βέλος","rightwards simple arrow":"απλό βέλος προς τα δεξιά","Ruble sign":"Σύμβολο ρουβλίου Ρωσίας","Rupee sign":"Σύμβολο ρουπίας Ινδίας","Section sign":"Σύμβολο τομέα","Single left-pointing angle quotation mark":"Μονό ερωτηματικό αριστερής γωνίας","Single low-9 quotation mark":"Μονό κάτω-9 εισαγωγικό","Single right-pointing angle quotation mark":"Μονό ερωτηματικό δεξιάς γωνίας","soon with rightwards arrow above":"σύντομα με δεξί βέλος άνω","Special characters":"Ειδικοί χαρακτήρες","Spesmilo sign":"Σύμβολο σπεσμίλο","Square root":"Τετραγωνική ρίζα","Tenge sign":"Σύμβολο τένγκε Καζακστάν","There exists":"Υπάρχει","Tilde operator":"Τελεστής περισπωμένης","top with upwards arrow above":"κορυφή με άνω βέλος επάνω","Trade mark sign":"Σύμβολο εμπορικού σήματος","Tugrik sign":"Σύμβολο τουγκρίκ Μογγολίας","Turkish lira sign":"Σύμβολο λίρας Τουρκίας","Two dot leader":"Οδηγός δύο τελειών",Union:"Ένωση","up down arrow with base":"άνω κάτω βέλος με βάση","upwards arrow to bar":"άνω βέλος σε γραμμή","upwards dashed arrow":"άνω βέλος με παύλες","upwards double arrow":"άνω διπλό βέλος","upwards simple arrow":"απλό βέλος προς τα πάνω","Vulgar fraction one half":"Ανάγωγο Κλάσμα ενός δευτέρου","Vulgar fraction one quarter":"Ανάγωγο Κλάσμα ενός τετάρτου","Vulgar fraction three quarters":"Ανάγωγο Κλάσμα τριών τετάρτων","Won sign":"Σύμβολο Γουάν Κίνας","Yen sign":"Σύμβολο Γιέν"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/special-characters/translations/en-au.js b/core/assets/vendor/ckeditor5/special-characters/translations/en-au.js
index 5eda5824f2..e2a8a09ef9 100644
--- a/core/assets/vendor/ckeditor5/special-characters/translations/en-au.js
+++ b/core/assets/vendor/ckeditor5/special-characters/translations/en-au.js
@@ -1 +1 @@
-!function(t){const a=t["en-au"]=t["en-au"]||{};a.dictionary=Object.assign(a.dictionary||{},{"Almost equal to":"Almost equal to",Angle:"Angle","Approximately equal to":"Approximately equal to","Asterisk operator":"Asterisk operator","Austral sign":"Austral sign","back with leftwards arrow above":"back with leftwards arrow above","Bitcoin sign":"Bitcoin sign","Cedi sign":"Cedi sign","Cent sign":"Cent sign","Character categories":"Character categories","Colon sign":"Colon sign","Contains as member":"Contains as member","Copyright sign":"Copyright sign","Cruzeiro sign":"Cruzeiro sign","Currency sign":"Currency sign","Degree sign":"Degree sign","Division sign":"Division sign","Dollar sign":"Dollar sign","Dong sign":"Dong sign","Double dagger":"Double dagger","Double exclamation mark":"Double exclamation mark","Double low-9 quotation mark":"Double low-9 quotation mark","Double question mark":"Double question mark","downwards arrow to bar":"downwards arrow to bar","downwards dashed arrow":"downwards dashed arrow","downwards double arrow":"downwards double arrow","Drachma sign":"Drachma sign","Element of":"Element of","Em dash":"Em dash","Empty set":"Empty set","En dash":"En dash","end with leftwards arrow above":"end with leftwards arrow above","Euro sign":"Euro sign","Euro-currency sign":"Euro-currency sign","Exclamation question mark":"Exclamation question mark","For all":"For all","Fraction slash":"Fraction slash","French franc sign":"French franc sign","German penny sign":"German penny sign","Greater-than or equal to":"Greater-than or equal to","Greater-than sign":"Greater-than sign","Guarani sign":"Guarani sign","Horizontal ellipsis":"Horizontal ellipsis","Hryvnia sign":"Hryvnia sign","Identical to":"Identical to","Indian rupee sign":"Indian rupee sign",Infinity:"Infinity",Integral:"Integral",Intersection:"Intersection","Inverted exclamation mark":"Inverted exclamation mark","Inverted question mark":"Inverted question mark","Kip sign":"Kip sign","Latin capital letter a with breve":"Latin capital letter a with breve","Latin capital letter a with macron":"Latin capital letter a with macron","Latin capital letter a with ogonek":"Latin capital letter a with ogonek","Latin capital letter c with acute":"Latin capital letter c with acute","Latin capital letter c with caron":"Latin capital letter c with caron","Latin capital letter c with circumflex":"Latin capital letter c with circumflex","Latin capital letter c with dot above":"Latin capital letter c with dot above","Latin capital letter d with caron":"Latin capital letter d with caron","Latin capital letter d with stroke":"Latin capital letter d with stroke","Latin capital letter e with breve":"Latin capital letter e with breve","Latin capital letter e with caron":"Latin capital letter e with caron","Latin capital letter e with dot above":"Latin capital letter e with dot above","Latin capital letter e with macron":"Latin capital letter e with macron","Latin capital letter e with ogonek":"Latin capital letter e with ogonek","Latin capital letter eng":"Latin capital letter eng","Latin capital letter g with breve":"Latin capital letter g with breve","Latin capital letter g with cedilla":"Latin capital letter g with cedilla","Latin capital letter g with circumflex":"Latin capital letter g with circumflex","Latin capital letter g with dot above":"Latin capital letter g with dot above","Latin capital letter h with circumflex":"Latin capital letter h with circumflex","Latin capital letter h with stroke":"Latin capital letter h with stroke","Latin capital letter i with breve":"Latin capital letter i with breve","Latin capital letter i with dot above":"Latin capital letter i with dot above","Latin capital letter i with macron":"Latin capital letter i with macron","Latin capital letter i with ogonek":"Latin capital letter i with ogonek","Latin capital letter i with tilde":"Latin capital letter i with tilde","Latin capital letter j with circumflex":"Latin capital letter j with circumflex","Latin capital letter k with cedilla":"Latin capital letter k with cedilla","Latin capital letter l with acute":"Latin capital letter l with acute","Latin capital letter l with caron":"Latin capital letter l with caron","Latin capital letter l with cedilla":"Latin capital letter l with cedilla","Latin capital letter l with middle dot":"Latin capital letter l with middle dot","Latin capital letter l with stroke":"Latin capital letter l with stroke","Latin capital letter n with acute":"Latin capital letter n with acute","Latin capital letter n with caron":"Latin capital letter n with caron","Latin capital letter n with cedilla":"Latin capital letter n with cedilla","Latin capital letter o with breve":"Latin capital letter o with breve","Latin capital letter o with double acute":"Latin capital letter o with double acute","Latin capital letter o with macron":"Latin capital letter o with macron","Latin capital letter r with acute":"Latin capital letter r with acute","Latin capital letter r with caron":"Latin capital letter r with caron","Latin capital letter r with cedilla":"Latin capital letter r with cedilla","Latin capital letter s with acute":"Latin capital letter s with acute","Latin capital letter s with caron":"Latin capital letter s with caron","Latin capital letter s with cedilla":"Latin capital letter s with cedilla","Latin capital letter s with circumflex":"Latin capital letter s with circumflex","Latin capital letter t with caron":"Latin capital letter t with caron","Latin capital letter t with cedilla":"Latin capital letter t with cedilla","Latin capital letter t with stroke":"Latin capital letter t with stroke","Latin capital letter u with breve":"Latin capital letter u with breve","Latin capital letter u with double acute":"Latin capital letter u with double acute","Latin capital letter u with macron":"Latin capital letter u with macron","Latin capital letter u with ogonek":"Latin capital letter u with ogonek","Latin capital letter u with ring above":"Latin capital letter u with ring above","Latin capital letter u with tilde":"Latin capital letter u with tilde","Latin capital letter w with circumflex":"Latin capital letter w with circumflex","Latin capital letter y with circumflex":"Latin capital letter y with circumflex","Latin capital letter y with diaeresis":"Latin capital letter y with diaeresis","Latin capital letter z with acute":"Latin capital letter z with acute","Latin capital letter z with caron":"Latin capital letter z with caron","Latin capital letter z with dot above":"Latin capital letter z with dot above","Latin capital ligature ij":"Latin capital ligature ij","Latin capital ligature oe":"Latin capital ligature oe","Latin small letter a with breve":"Latin small letter a with breve","Latin small letter a with macron":"Latin small letter a with macron","Latin small letter a with ogonek":"Latin small letter a with ogonek","Latin small letter c with acute":"Latin small letter c with acute","Latin small letter c with caron":"Latin small letter c with caron","Latin small letter c with circumflex":"Latin small letter c with circumflex","Latin small letter c with dot above":"Latin small letter c with dot above","Latin small letter d with caron":"Latin small letter d with caron","Latin small letter d with stroke":"Latin small letter d with stroke","Latin small letter dotless i":"Latin small letter dotless i","Latin small letter e with breve":"Latin small letter e with breve","Latin small letter e with caron":"Latin small letter e with caron","Latin small letter e with dot above":"Latin small letter e with dot above","Latin small letter e with macron":"Latin small letter e with macron","Latin small letter e with ogonek":"Latin small letter e with ogonek","Latin small letter eng":"Latin small letter eng","Latin small letter f with hook":"Latin small letter f with hook","Latin small letter g with breve":"Latin small letter g with breve","Latin small letter g with cedilla":"Latin small letter g with cedilla","Latin small letter g with circumflex":"Latin small letter g with circumflex","Latin small letter g with dot above":"Latin small letter g with dot above","Latin small letter h with circumflex":"Latin small letter h with circumflex","Latin small letter h with stroke":"Latin small letter h with stroke","Latin small letter i with breve":"Latin small letter i with breve","Latin small letter i with macron":"Latin small letter i with macron","Latin small letter i with ogonek":"Latin small letter i with ogonek","Latin small letter i with tilde":"Latin small letter i with tilde","Latin small letter j with circumflex":"Latin small letter j with circumflex","Latin small letter k with cedilla":"Latin small letter k with cedilla","Latin small letter kra":"Latin small letter kra","Latin small letter l with acute":"Latin small letter l with acute","Latin small letter l with caron":"Latin small letter l with caron","Latin small letter l with cedilla":"Latin small letter l with cedilla","Latin small letter l with middle dot":"Latin small letter l with middle dot","Latin small letter l with stroke":"Latin small letter l with stroke","Latin small letter long s":"Latin small letter long s","Latin small letter n preceded by apostrophe":"Latin small letter n preceded by apostrophe","Latin small letter n with acute":"Latin small letter n with acute","Latin small letter n with caron":"Latin small letter n with caron","Latin small letter n with cedilla":"Latin small letter n with cedilla","Latin small letter o with breve":"Latin small letter o with breve","Latin small letter o with double acute":"Latin small letter o with double acute","Latin small letter o with macron":"Latin small letter o with macron","Latin small letter r with acute":"Latin small letter r with acute","Latin small letter r with caron":"Latin small letter r with caron","Latin small letter r with cedilla":"Latin small letter r with cedilla","Latin small letter s with acute":"Latin small letter s with acute","Latin small letter s with caron":"Latin small letter s with caron","Latin small letter s with cedilla":"Latin small letter s with cedilla","Latin small letter s with circumflex":"Latin small letter s with circumflex","Latin small letter t with caron":"Latin small letter t with caron","Latin small letter t with cedilla":"Latin small letter t with cedilla","Latin small letter t with stroke":"Latin small letter t with stroke","Latin small letter u with breve":"Latin small letter u with breve","Latin small letter u with double acute":"Latin small letter u with double acute","Latin small letter u with macron":"Latin small letter u with macron","Latin small letter u with ogonek":"Latin small letter u with ogonek","Latin small letter u with ring above":"Latin small letter u with ring above","Latin small letter u with tilde":"Latin small letter u with tilde","Latin small letter w with circumflex":"Latin small letter w with circumflex","Latin small letter y with circumflex":"Latin small letter y with circumflex","Latin small letter z with acute":"Latin small letter z with acute","Latin small letter z with caron":"Latin small letter z with caron","Latin small letter z with dot above":"Latin small letter z with dot above","Latin small ligature ij":"Latin small ligature ij","Latin small ligature oe":"Latin small ligature oe","Left double quotation mark":"Left double quotation mark","Left single quotation mark":"Left single quotation mark","Left-pointing double angle quotation mark":"Left-pointing double angle quotation mark","leftwards arrow to bar":"leftwards arrow to bar","leftwards dashed arrow":"leftwards dashed arrow","leftwards double arrow":"leftwards double arrow","Less-than or equal to":"Less-than or equal to","Less-than sign":"Less-than sign","Lira sign":"Lira sign","Livre tournois sign":"Livre tournois sign","Logical and":"Logical and","Logical or":"Logical or",Macron:"Macron","Manat sign":"Manat sign","Mill sign":"Mill sign","Minus sign":"Minus sign","Multiplication sign":"Multiplication sign","N-ary product":"N-ary product","N-ary summation":"N-ary summation",Nabla:"Nabla","Naira sign":"Naira sign","New sheqel sign":"New sheqel sign","Nordic mark sign":"Nordic mark sign","Not an element of":"Not an element of","Not equal to":"Not equal to","Not sign":"Not sign","on with exclamation mark with left right arrow above":"on with exclamation mark with left right arrow above",Overline:"Overline","Paragraph sign":"Paragraph sign","Partial differential":"Partial differential","Per mille sign":"Per mille sign","Per ten thousand sign":"Per ten thousand sign","Peseta sign":"Peseta sign","Peso sign":"Peso sign","Plus-minus sign":"Plus-minus sign","Pound sign":"Pound sign","Proportional to":"Proportional to","Question exclamation mark":"Question exclamation mark","Registered sign":"Registered sign","Reversed paragraph sign":"Reversed paragraph sign","Right double quotation mark":"Right double quotation mark","Right single quotation mark":"Right single quotation mark","Right-pointing double angle quotation mark":"Right-pointing double angle quotation mark","rightwards arrow to bar":"rightwards arrow to bar","rightwards dashed arrow":"rightwards dashed arrow","rightwards double arrow":"rightwards double arrow","Ruble sign":"Ruble sign","Rupee sign":"Rupee sign","Section sign":"Section sign","Single left-pointing angle quotation mark":"Single left-pointing angle quotation mark","Single low-9 quotation mark":"Single low-9 quotation mark","Single right-pointing angle quotation mark":"Single right-pointing angle quotation mark","soon with rightwards arrow above":"soon with rightwards arrow above","Special characters":"Special characters","Spesmilo sign":"Spesmilo sign","Square root":"Square root","Tenge sign":"Tenge sign","There exists":"There exists","Tilde operator":"Tilde operator","top with upwards arrow above":"top with upwards arrow above","Trade mark sign":"Trade mark sign","Tugrik sign":"Tugrik sign","Turkish lira sign":"Turkish lira sign","Two dot leader":"Two dot leader",Union:"Union","up down arrow with base":"up down arrow with base","upwards arrow to bar":"upwards arrow to bar","upwards dashed arrow":"upwards dashed arrow","upwards double arrow":"upwards double arrow","Vulgar fraction one half":"Vulgar fraction one half","Vulgar fraction one quarter":"Vulgar fraction one quarter","Vulgar fraction three quarters":"Vulgar fraction three quarters","Won sign":"Won sign","Yen sign":"Yen sign"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(t){const a=t["en-au"]=t["en-au"]||{};a.dictionary=Object.assign(a.dictionary||{},{"Almost equal to":"Almost equal to",Angle:"Angle","Approximately equal to":"Approximately equal to","Asterisk operator":"Asterisk operator","Austral sign":"Austral sign","back with leftwards arrow above":"back with leftwards arrow above","Bitcoin sign":"Bitcoin sign","Cedi sign":"Cedi sign","Cent sign":"Cent sign","Character categories":"Character categories","Colon sign":"Colon sign","Contains as member":"Contains as member","Copyright sign":"Copyright sign","Cruzeiro sign":"Cruzeiro sign","Currency sign":"Currency sign","Degree sign":"Degree sign","Division sign":"Division sign","Dollar sign":"Dollar sign","Dong sign":"Dong sign","Double dagger":"Double dagger","Double exclamation mark":"Double exclamation mark","Double low-9 quotation mark":"Double low-9 quotation mark","Double question mark":"Double question mark","downwards arrow to bar":"downwards arrow to bar","downwards dashed arrow":"downwards dashed arrow","downwards double arrow":"downwards double arrow","downwards simple arrow":"downwards simple arrow","Drachma sign":"Drachma sign","Element of":"Element of","Em dash":"Em dash","Empty set":"Empty set","En dash":"En dash","end with leftwards arrow above":"end with leftwards arrow above","Euro sign":"Euro sign","Euro-currency sign":"Euro-currency sign","Exclamation question mark":"Exclamation question mark","For all":"For all","Fraction slash":"Fraction slash","French franc sign":"French franc sign","German penny sign":"German penny sign","Greater-than or equal to":"Greater-than or equal to","Greater-than sign":"Greater-than sign","Guarani sign":"Guarani sign","Horizontal ellipsis":"Horizontal ellipsis","Hryvnia sign":"Hryvnia sign","Identical to":"Identical to","Indian rupee sign":"Indian rupee sign",Infinity:"Infinity",Integral:"Integral",Intersection:"Intersection","Inverted exclamation mark":"Inverted exclamation mark","Inverted question mark":"Inverted question mark","Kip sign":"Kip sign","Latin capital letter a with breve":"Latin capital letter a with breve","Latin capital letter a with macron":"Latin capital letter a with macron","Latin capital letter a with ogonek":"Latin capital letter a with ogonek","Latin capital letter c with acute":"Latin capital letter c with acute","Latin capital letter c with caron":"Latin capital letter c with caron","Latin capital letter c with circumflex":"Latin capital letter c with circumflex","Latin capital letter c with dot above":"Latin capital letter c with dot above","Latin capital letter d with caron":"Latin capital letter d with caron","Latin capital letter d with stroke":"Latin capital letter d with stroke","Latin capital letter e with breve":"Latin capital letter e with breve","Latin capital letter e with caron":"Latin capital letter e with caron","Latin capital letter e with dot above":"Latin capital letter e with dot above","Latin capital letter e with macron":"Latin capital letter e with macron","Latin capital letter e with ogonek":"Latin capital letter e with ogonek","Latin capital letter eng":"Latin capital letter eng","Latin capital letter g with breve":"Latin capital letter g with breve","Latin capital letter g with cedilla":"Latin capital letter g with cedilla","Latin capital letter g with circumflex":"Latin capital letter g with circumflex","Latin capital letter g with dot above":"Latin capital letter g with dot above","Latin capital letter h with circumflex":"Latin capital letter h with circumflex","Latin capital letter h with stroke":"Latin capital letter h with stroke","Latin capital letter i with breve":"Latin capital letter i with breve","Latin capital letter i with dot above":"Latin capital letter i with dot above","Latin capital letter i with macron":"Latin capital letter i with macron","Latin capital letter i with ogonek":"Latin capital letter i with ogonek","Latin capital letter i with tilde":"Latin capital letter i with tilde","Latin capital letter j with circumflex":"Latin capital letter j with circumflex","Latin capital letter k with cedilla":"Latin capital letter k with cedilla","Latin capital letter l with acute":"Latin capital letter l with acute","Latin capital letter l with caron":"Latin capital letter l with caron","Latin capital letter l with cedilla":"Latin capital letter l with cedilla","Latin capital letter l with middle dot":"Latin capital letter l with middle dot","Latin capital letter l with stroke":"Latin capital letter l with stroke","Latin capital letter n with acute":"Latin capital letter n with acute","Latin capital letter n with caron":"Latin capital letter n with caron","Latin capital letter n with cedilla":"Latin capital letter n with cedilla","Latin capital letter o with breve":"Latin capital letter o with breve","Latin capital letter o with double acute":"Latin capital letter o with double acute","Latin capital letter o with macron":"Latin capital letter o with macron","Latin capital letter r with acute":"Latin capital letter r with acute","Latin capital letter r with caron":"Latin capital letter r with caron","Latin capital letter r with cedilla":"Latin capital letter r with cedilla","Latin capital letter s with acute":"Latin capital letter s with acute","Latin capital letter s with caron":"Latin capital letter s with caron","Latin capital letter s with cedilla":"Latin capital letter s with cedilla","Latin capital letter s with circumflex":"Latin capital letter s with circumflex","Latin capital letter t with caron":"Latin capital letter t with caron","Latin capital letter t with cedilla":"Latin capital letter t with cedilla","Latin capital letter t with stroke":"Latin capital letter t with stroke","Latin capital letter u with breve":"Latin capital letter u with breve","Latin capital letter u with double acute":"Latin capital letter u with double acute","Latin capital letter u with macron":"Latin capital letter u with macron","Latin capital letter u with ogonek":"Latin capital letter u with ogonek","Latin capital letter u with ring above":"Latin capital letter u with ring above","Latin capital letter u with tilde":"Latin capital letter u with tilde","Latin capital letter w with circumflex":"Latin capital letter w with circumflex","Latin capital letter y with circumflex":"Latin capital letter y with circumflex","Latin capital letter y with diaeresis":"Latin capital letter y with diaeresis","Latin capital letter z with acute":"Latin capital letter z with acute","Latin capital letter z with caron":"Latin capital letter z with caron","Latin capital letter z with dot above":"Latin capital letter z with dot above","Latin capital ligature ij":"Latin capital ligature ij","Latin capital ligature oe":"Latin capital ligature oe","Latin small letter a with breve":"Latin small letter a with breve","Latin small letter a with macron":"Latin small letter a with macron","Latin small letter a with ogonek":"Latin small letter a with ogonek","Latin small letter c with acute":"Latin small letter c with acute","Latin small letter c with caron":"Latin small letter c with caron","Latin small letter c with circumflex":"Latin small letter c with circumflex","Latin small letter c with dot above":"Latin small letter c with dot above","Latin small letter d with caron":"Latin small letter d with caron","Latin small letter d with stroke":"Latin small letter d with stroke","Latin small letter dotless i":"Latin small letter dotless i","Latin small letter e with breve":"Latin small letter e with breve","Latin small letter e with caron":"Latin small letter e with caron","Latin small letter e with dot above":"Latin small letter e with dot above","Latin small letter e with macron":"Latin small letter e with macron","Latin small letter e with ogonek":"Latin small letter e with ogonek","Latin small letter eng":"Latin small letter eng","Latin small letter f with hook":"Latin small letter f with hook","Latin small letter g with breve":"Latin small letter g with breve","Latin small letter g with cedilla":"Latin small letter g with cedilla","Latin small letter g with circumflex":"Latin small letter g with circumflex","Latin small letter g with dot above":"Latin small letter g with dot above","Latin small letter h with circumflex":"Latin small letter h with circumflex","Latin small letter h with stroke":"Latin small letter h with stroke","Latin small letter i with breve":"Latin small letter i with breve","Latin small letter i with macron":"Latin small letter i with macron","Latin small letter i with ogonek":"Latin small letter i with ogonek","Latin small letter i with tilde":"Latin small letter i with tilde","Latin small letter j with circumflex":"Latin small letter j with circumflex","Latin small letter k with cedilla":"Latin small letter k with cedilla","Latin small letter kra":"Latin small letter kra","Latin small letter l with acute":"Latin small letter l with acute","Latin small letter l with caron":"Latin small letter l with caron","Latin small letter l with cedilla":"Latin small letter l with cedilla","Latin small letter l with middle dot":"Latin small letter l with middle dot","Latin small letter l with stroke":"Latin small letter l with stroke","Latin small letter long s":"Latin small letter long s","Latin small letter n preceded by apostrophe":"Latin small letter n preceded by apostrophe","Latin small letter n with acute":"Latin small letter n with acute","Latin small letter n with caron":"Latin small letter n with caron","Latin small letter n with cedilla":"Latin small letter n with cedilla","Latin small letter o with breve":"Latin small letter o with breve","Latin small letter o with double acute":"Latin small letter o with double acute","Latin small letter o with macron":"Latin small letter o with macron","Latin small letter r with acute":"Latin small letter r with acute","Latin small letter r with caron":"Latin small letter r with caron","Latin small letter r with cedilla":"Latin small letter r with cedilla","Latin small letter s with acute":"Latin small letter s with acute","Latin small letter s with caron":"Latin small letter s with caron","Latin small letter s with cedilla":"Latin small letter s with cedilla","Latin small letter s with circumflex":"Latin small letter s with circumflex","Latin small letter t with caron":"Latin small letter t with caron","Latin small letter t with cedilla":"Latin small letter t with cedilla","Latin small letter t with stroke":"Latin small letter t with stroke","Latin small letter u with breve":"Latin small letter u with breve","Latin small letter u with double acute":"Latin small letter u with double acute","Latin small letter u with macron":"Latin small letter u with macron","Latin small letter u with ogonek":"Latin small letter u with ogonek","Latin small letter u with ring above":"Latin small letter u with ring above","Latin small letter u with tilde":"Latin small letter u with tilde","Latin small letter w with circumflex":"Latin small letter w with circumflex","Latin small letter y with circumflex":"Latin small letter y with circumflex","Latin small letter z with acute":"Latin small letter z with acute","Latin small letter z with caron":"Latin small letter z with caron","Latin small letter z with dot above":"Latin small letter z with dot above","Latin small ligature ij":"Latin small ligature ij","Latin small ligature oe":"Latin small ligature oe","Left double quotation mark":"Left double quotation mark","Left single quotation mark":"Left single quotation mark","Left-pointing double angle quotation mark":"Left-pointing double angle quotation mark","leftwards arrow to bar":"leftwards arrow to bar","leftwards dashed arrow":"leftwards dashed arrow","leftwards double arrow":"leftwards double arrow","leftwards simple arrow":"leftwards simple arrow","Less-than or equal to":"Less-than or equal to","Less-than sign":"Less-than sign","Lira sign":"Lira sign","Livre tournois sign":"Livre tournois sign","Logical and":"Logical and","Logical or":"Logical or",Macron:"Macron","Manat sign":"Manat sign","Mill sign":"Mill sign","Minus sign":"Minus sign","Multiplication sign":"Multiplication sign","N-ary product":"N-ary product","N-ary summation":"N-ary summation",Nabla:"Nabla","Naira sign":"Naira sign","New sheqel sign":"New sheqel sign","Nordic mark sign":"Nordic mark sign","Not an element of":"Not an element of","Not equal to":"Not equal to","Not sign":"Not sign","on with exclamation mark with left right arrow above":"on with exclamation mark with left right arrow above",Overline:"Overline","Paragraph sign":"Paragraph sign","Partial differential":"Partial differential","Per mille sign":"Per mille sign","Per ten thousand sign":"Per ten thousand sign","Peseta sign":"Peseta sign","Peso sign":"Peso sign","Plus-minus sign":"Plus-minus sign","Pound sign":"Pound sign","Proportional to":"Proportional to","Question exclamation mark":"Question exclamation mark","Registered sign":"Registered sign","Reversed paragraph sign":"Reversed paragraph sign","Right double quotation mark":"Right double quotation mark","Right single quotation mark":"Right single quotation mark","Right-pointing double angle quotation mark":"Right-pointing double angle quotation mark","rightwards arrow to bar":"rightwards arrow to bar","rightwards dashed arrow":"rightwards dashed arrow","rightwards double arrow":"rightwards double arrow","rightwards simple arrow":"rightwards simple arrow","Ruble sign":"Ruble sign","Rupee sign":"Rupee sign","Section sign":"Section sign","Single left-pointing angle quotation mark":"Single left-pointing angle quotation mark","Single low-9 quotation mark":"Single low-9 quotation mark","Single right-pointing angle quotation mark":"Single right-pointing angle quotation mark","soon with rightwards arrow above":"soon with rightwards arrow above","Special characters":"Special characters","Spesmilo sign":"Spesmilo sign","Square root":"Square root","Tenge sign":"Tenge sign","There exists":"There exists","Tilde operator":"Tilde operator","top with upwards arrow above":"top with upwards arrow above","Trade mark sign":"Trade mark sign","Tugrik sign":"Tugrik sign","Turkish lira sign":"Turkish lira sign","Two dot leader":"Two dot leader",Union:"Union","up down arrow with base":"up down arrow with base","upwards arrow to bar":"upwards arrow to bar","upwards dashed arrow":"upwards dashed arrow","upwards double arrow":"upwards double arrow","upwards simple arrow":"upwards simple arrow","Vulgar fraction one half":"Vulgar fraction one half","Vulgar fraction one quarter":"Vulgar fraction one quarter","Vulgar fraction three quarters":"Vulgar fraction three quarters","Won sign":"Won sign","Yen sign":"Yen sign"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/special-characters/translations/es.js b/core/assets/vendor/ckeditor5/special-characters/translations/es.js
index aae12fbf01..901389d285 100644
--- a/core/assets/vendor/ckeditor5/special-characters/translations/es.js
+++ b/core/assets/vendor/ckeditor5/special-characters/translations/es.js
@@ -1 +1 @@
-!function(a){const t=a.es=a.es||{};t.dictionary=Object.assign(t.dictionary||{},{"Almost equal to":"Casi igual a",Angle:"Ángulo","Approximately equal to":"Aproximadamente igual a","Asterisk operator":"Operador asterisco","Austral sign":"Signo de austral","back with leftwards arrow above":"«back» con una flecha hacia la izquierda arriba","Bitcoin sign":"Signo del bitcóin","Cedi sign":"Signo de cedi","Cent sign":"Signo del centavo","Character categories":"Categorías de caracteres","Colon sign":"Signo del colón","Contains as member":"Contiene como miembro","Copyright sign":"Signo de derechos de autor","Cruzeiro sign":"Signo del cruceiro","Currency sign":"Signo monetario","Degree sign":"Signo de grado","Division sign":"Signo de división","Dollar sign":"Signo del dólar","Dong sign":"Signo de dong","Double dagger":"Cruz doble","Double exclamation mark":"Signo de exclamación doble","Double low-9 quotation mark":"Comilla tipográfica en forma de 9 doble y baja","Double question mark":"Signo de interrogación doble","downwards arrow to bar":"flecha hacia abajo hasta una barra","downwards dashed arrow":"flecha punteada hacia abajo","downwards double arrow":"flecha doble hacia abajo","Drachma sign":"Signo de dracma","Element of":"Elemento de","Em dash":"Raya","Empty set":"Conjunto vacío","En dash":"Semirraya","end with leftwards arrow above":"«end» con una flecha hacia la izquierda arriba","Euro sign":"Signo del euro","Euro-currency sign":"Signo de la moneda euro","Exclamation question mark":"Signo de interrogación exclamativa","For all":"Para todo","Fraction slash":"Barra fraccionaria","French franc sign":"Signo del franco francés","German penny sign":"Signo de centavo alemán","Greater-than or equal to":"Mayor que o igual a","Greater-than sign":"Signo de mayor que","Guarani sign":"Signo del guaraní","Horizontal ellipsis":"Puntos suspensivos horizontales","Hryvnia sign":"Signo de grivna","Identical to":"Idéntico a","Indian rupee sign":"Signo de rupia india",Infinity:"Infinito",Integral:"Integral",Intersection:"Intersección","Inverted exclamation mark":"Signo de exclamación de apertura","Inverted question mark":"Signo de interrogación de apertura","Kip sign":"Signo de kip","Latin capital letter a with breve":"Letra latina mayúscula «A» con acento breve","Latin capital letter a with macron":"Letra latina mayúscula «A» con macrón","Latin capital letter a with ogonek":"Letra latina mayúscula «A» con ogonek","Latin capital letter c with acute":"Letra latina mayúscula «C» con acento agudo","Latin capital letter c with caron":"Letra latina mayúscula «C» con acento anticircunflejo","Latin capital letter c with circumflex":"Letra latina mayúscula «C» con acento circunflejo","Latin capital letter c with dot above":"Letra latina mayúscula «C» con punto superior","Latin capital letter d with caron":"Letra latina mayúscula «D» con acento anticircunflejo","Latin capital letter d with stroke":"Letra latina mayúscula «D» con barra horizontal","Latin capital letter e with breve":"Letra latina mayúscula «e» con acento breve","Latin capital letter e with caron":"Letra latina mayúscula «E» con acento anticircunflejo","Latin capital letter e with dot above":"Letra latina mayúscula «E» con punto superior","Latin capital letter e with macron":"Letra latina mayúscula «E» con macrón","Latin capital letter e with ogonek":"Letra latina mayúscula «E» con ogonek","Latin capital letter eng":"Letra latina mayúscula «Eng»","Latin capital letter g with breve":"Letra latina mayúscula «G» con acento breve","Latin capital letter g with cedilla":"Letra latina mayúscula «G» con cedilla","Latin capital letter g with circumflex":"Letra latina mayúscula «G» con acento circunflejo","Latin capital letter g with dot above":"Letra latina mayúscula «G» con punto superior","Latin capital letter h with circumflex":"Letra latina mayúscula «H» con acento circunflejo","Latin capital letter h with stroke":"Letra latina mayúscula «H» con barra horizontal","Latin capital letter i with breve":"Letra latina mayúscula «I» con acento breve","Latin capital letter i with dot above":"Letra latina mayúscula «I» con punto superior","Latin capital letter i with macron":"Letra latina mayúscula «I» con macrón","Latin capital letter i with ogonek":"Letra latina mayúscula «I» con ogonek","Latin capital letter i with tilde":"Letra latina mayúscula «I» con tilde","Latin capital letter j with circumflex":"Letra latina mayúscula «J» con acento circunflejo","Latin capital letter k with cedilla":"Letra latina mayúscula «K» con cedilla","Latin capital letter l with acute":"Letra latina mayúscula «L» con acento agudo","Latin capital letter l with caron":"Letra latina mayúscula «I» con acento anticircunflejo","Latin capital letter l with cedilla":"Letra latina mayúscula «I» con cedilla","Latin capital letter l with middle dot":"Letra latina mayúscula «L» con punto medio","Latin capital letter l with stroke":"Letra latina mayúscula «L» con barra diagonal","Latin capital letter n with acute":"Letra latina mayúscula «N» con acento agudo","Latin capital letter n with caron":"Letra latina mayúscula «n» con acento anticircunflejo","Latin capital letter n with cedilla":"Letra latina mayúscula «N» con cedilla","Latin capital letter o with breve":"Letra latina mayúscula «O» con acento breve","Latin capital letter o with double acute":"Letra latina mayúscula «O» con doble acento agudo","Latin capital letter o with macron":"Letra latina mayúscula «O» con macrón","Latin capital letter r with acute":"Letra latina mayúscula «R» con acento agudo","Latin capital letter r with caron":"Letra latina mayúscula «R» con acento anticircunflejo","Latin capital letter r with cedilla":"Letra latina mayúscula «R» con cedilla","Latin capital letter s with acute":"Letra latina mayúscula «S» con acento agudo","Latin capital letter s with caron":"Letra latina mayúscula «S» con acento anticircunflejo","Latin capital letter s with cedilla":"Letra latina mayúscula «S» con cedilla","Latin capital letter s with circumflex":"Letra latina mayúscula «S» con acento circunflejo","Latin capital letter t with caron":"Letra latina mayúscula «T» con acento anticircunflejo","Latin capital letter t with cedilla":"Letra latina mayúscula «T» con cedilla","Latin capital letter t with stroke":"Letra latina mayúscula «T» con barra horizontal","Latin capital letter u with breve":"Letra latina mayúscula «U» con acento breve","Latin capital letter u with double acute":"Letra latina mayúscula «U» con doble acento agudo","Latin capital letter u with macron":"Letra latina mayúscula «U» con macrón","Latin capital letter u with ogonek":"Letra latina mayúscula «U» con ogonek","Latin capital letter u with ring above":"Letra latina mayúscula «U» con anillo superior","Latin capital letter u with tilde":"Letra latina mayúscula «U» con tilde","Latin capital letter w with circumflex":"Letra latina mayúscula «W» con acento circunflejo","Latin capital letter y with circumflex":"Letra latina mayúscula «Y» con acento circunflejo","Latin capital letter y with diaeresis":"Letra latina mayúscula «Y» con diéresis","Latin capital letter z with acute":"Letra latina mayúscula «Z» con acento agudo","Latin capital letter z with caron":"Letra latina mayúscula «Z» con acento anticircunflejo","Latin capital letter z with dot above":"Letra latina mayúscula «Z» con punto superior","Latin capital ligature ij":"Ligadura latina mayúscula «IJ»","Latin capital ligature oe":"Ligadura latina mayúscula «OE»","Latin small letter a with breve":"Letra latina minúscula «a» con acento breve","Latin small letter a with macron":"Letra latina minúscula «a» con macrón","Latin small letter a with ogonek":"Letra latina minúscula «a» con ogonek","Latin small letter c with acute":"Letra latina minúscula «c» con acento agudo","Latin small letter c with caron":"Letra latina minúscula «c» con acento anticircunflejo","Latin small letter c with circumflex":"Letra latina minúscula «c» con acento circunflejo","Latin small letter c with dot above":"Letra latina minúscula «c» con punto superior","Latin small letter d with caron":"Letra latina minúscula «d» con acento anticircunflejo","Latin small letter d with stroke":"Letra latina minúscula «d» con barra horizontal","Latin small letter dotless i":"Letra latina minúscula «i» sin punto","Latin small letter e with breve":"Letra latina minúscula «e» con acento breve","Latin small letter e with caron":"Letra latina minúscula «e» con acento anticircunflejo","Latin small letter e with dot above":"Letra latina minúscula «e» con punto superior","Latin small letter e with macron":"Letra latina minúscula «e» con macrón","Latin small letter e with ogonek":"Letra latina minúscula «e» con ogonek","Latin small letter eng":"Letra latina minúscula «eng»","Latin small letter f with hook":"Letra latina minúscula «f» con gancho","Latin small letter g with breve":"Letra latina minúscula «g» con acento breve","Latin small letter g with cedilla":"Letra latina minúscula «g» con cedilla","Latin small letter g with circumflex":"Letra latina minúscula «g» con acento circunflejo","Latin small letter g with dot above":"Letra latina minúscula «g» con punto superior","Latin small letter h with circumflex":"Letra latina minúscula «h» con acento circunflejo","Latin small letter h with stroke":"Letra latina minúscula «h» con barra horizontal","Latin small letter i with breve":"Letra latina minúscula «i» con acento breve","Latin small letter i with macron":"Letra latina minúscula «i» con macrón","Latin small letter i with ogonek":"Letra latina minúscula «i» con ogonek","Latin small letter i with tilde":"Letra latina minúscula «i» con tilde","Latin small letter j with circumflex":"Letra latina minúscula «j» con acento circunflejo","Latin small letter k with cedilla":"Letra latina minúscula «k» con cedilla","Latin small letter kra":"Letra latina minúscula «kra»","Latin small letter l with acute":"Letra latina minúscula «l» con acento agudo","Latin small letter l with caron":"Letra latina minúscula «i» con acento anticircunflejo","Latin small letter l with cedilla":"Letra latina minúscula «l» con cedilla","Latin small letter l with middle dot":"Letra latina minúscula «l» con punto medio","Latin small letter l with stroke":"Letra latina minúscula «l» con barra diagonal","Latin small letter long s":"Letra latina minúscula «s» larga","Latin small letter n preceded by apostrophe":"Letra latina minúscula «n» precedida de apóstrofo","Latin small letter n with acute":"Letra latina minúscula «n» con acento agudo","Latin small letter n with caron":"Letra latina minúscula «n» con acento anticircunflejo","Latin small letter n with cedilla":"Letra latina minúscula «n» con cedilla","Latin small letter o with breve":"Letra latina minúscula «o» con acento breve","Latin small letter o with double acute":"Letra latina minúscula «o» con doble acento agudo","Latin small letter o with macron":"Letra latina minúscula «o» con macrón","Latin small letter r with acute":"Letra latina minúscula «r» con acento agudo","Latin small letter r with caron":"Letra latina minúscula «r» con acento anticircunflejo","Latin small letter r with cedilla":"Letra latina minúscula «r» con cedilla","Latin small letter s with acute":"Letra latina minúscula «s» con acento agudo","Latin small letter s with caron":"Letra latina minúscula «s» con acento anticircunflejo","Latin small letter s with cedilla":"Letra latina minúscula «s» con cedilla","Latin small letter s with circumflex":"Letra latina minúscula «s» con acento circunflejo","Latin small letter t with caron":"Letra latina minúscula «t» con acento anticircunflejo","Latin small letter t with cedilla":"Letra latina minúscula «t» con cedilla","Latin small letter t with stroke":"Letra latina minúscula «t» con barra horizontal","Latin small letter u with breve":"Letra latina minúscula «u» con acento breve","Latin small letter u with double acute":"Letra latina minúscula «u» con doble acento agudo","Latin small letter u with macron":"Letra latina minúscula «u» con macrón","Latin small letter u with ogonek":"Letra latina minúscula «u» con ogonek","Latin small letter u with ring above":"Letra latina minúscula «u» con anillo superior","Latin small letter u with tilde":"Letra latina minúscula «u» con tilde","Latin small letter w with circumflex":"Letra latina minúscula «w» con acento circunflejo","Latin small letter y with circumflex":"Letra latina minúscula «y» con acento circunflejo","Latin small letter z with acute":"Letra latina minúscula «z» con acento agudo","Latin small letter z with caron":"Letra latina minúscula «z» con acento anticircunflejo","Latin small letter z with dot above":"Letra latina minúscula «z» con punto superior","Latin small ligature ij":"Ligadura latina minúscula «ij»","Latin small ligature oe":"Ligadura latina minúscula «oe»","Left double quotation mark":"Comilla tipográfica doble de apertura","Left single quotation mark":"Comilla tipográfica de apertura","Left-pointing double angle quotation mark":"Comilla tipográfica doble angular de apertura","leftwards arrow to bar":"flecha hacia la izquierda hasta una barra","leftwards dashed arrow":"flecha punteada hacia la izquierda","leftwards double arrow":"flecha doble hacia la izquierda","Less-than or equal to":"Menor que o igual a","Less-than sign":"Signo de menor que","Lira sign":"Signo de la lira","Livre tournois sign":"Signo de libra tornesa","Logical and":"Y lógico","Logical or":"O lógico",Macron:"Macrón","Manat sign":"Signo de manat","Mill sign":"Signo de milésima","Minus sign":"Signo de resta","Multiplication sign":"Signo de multiplicación","N-ary product":"Productorio","N-ary summation":"Sumatoria",Nabla:"Nabla","Naira sign":"Signo de naira","New sheqel sign":"Signo del nuevo séquel","Nordic mark sign":"Signo de marco nórdico","Not an element of":"No es un elemento de","Not equal to":"No igual a","Not sign":"Signo de negación","on with exclamation mark with left right arrow above":"«on» seguido de un signo de exclamación y con una flecha hacia la izquierda y derecha arriba",Overline:"Línea alta","Paragraph sign":"Signo de párrafo","Partial differential":"Diferencial parcial","Per mille sign":"Signo de por mil","Per ten thousand sign":"Signo de por diez mil","Peseta sign":"Signo de la peseta","Peso sign":"Signo del peso","Plus-minus sign":"Signo más-menos","Pound sign":"Signo de la libra","Proportional to":"Proporcional a","Question exclamation mark":"Signo de exclamación interrogativa","Registered sign":"Signo de marca registrada","Reversed paragraph sign":"Signo de antígrafo invertido","Right double quotation mark":"Comilla tipográfica de cierre","Right single quotation mark":"Comilla tipográfica de cierre","Right-pointing double angle quotation mark":"Comilla tipográfica dobe angular de cierre","rightwards arrow to bar":"flecha hacia la derecha hasta una barra","rightwards dashed arrow":"flecha punteada hacia la derecha","rightwards double arrow":"flecha doble hacia la derecha","Ruble sign":"Signo del rublo","Rupee sign":"Signo de la rupia","Section sign":"Signo de sección","Single left-pointing angle quotation mark":"Comilla tipográfica simple angular de apertura","Single low-9 quotation mark":"Comilla tipográfica en forma de 9 simple y baja","Single right-pointing angle quotation mark":"Comilla tipográfica simple angular de cierre","soon with rightwards arrow above":"«soon» con una flecha hacia la derecha arriba","Special characters":"Caracteres especiales","Spesmilo sign":"Signo de spesmilo","Square root":"Raíz cuadrada","Tenge sign":"Signo de tenge","There exists":"Existe","Tilde operator":"Operador de tilde","top with upwards arrow above":"«top» con una flecha hacia arriba arriba","Trade mark sign":"Signo de marca comercial","Tugrik sign":"Signo de tugrik","Turkish lira sign":"Signo de lira turca","Two dot leader":"Punto de inicio doble",Union:"Unión","up down arrow with base":"flecha hacia arriba y abajo con una base","upwards arrow to bar":"flecha hacia arriba hasta una barra","upwards dashed arrow":"flecha punteada hacia arriba","upwards double arrow":"flecha doble hacia arriba","Vulgar fraction one half":"Fracción ordinaria de un medio","Vulgar fraction one quarter":"Fracción ordinaria de un cuarto","Vulgar fraction three quarters":"Fracción ordinaria de tres cuartos","Won sign":"Signo del won","Yen sign":"Signo del yen"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(a){const t=a.es=a.es||{};t.dictionary=Object.assign(t.dictionary||{},{"Almost equal to":"Casi igual a",Angle:"Ángulo","Approximately equal to":"Aproximadamente igual a","Asterisk operator":"Operador asterisco","Austral sign":"Signo de austral","back with leftwards arrow above":"«back» con una flecha hacia la izquierda arriba","Bitcoin sign":"Signo del bitcóin","Cedi sign":"Signo de cedi","Cent sign":"Signo del centavo","Character categories":"Categorías de caracteres","Colon sign":"Signo del colón","Contains as member":"Contiene como miembro","Copyright sign":"Signo de derechos de autor","Cruzeiro sign":"Signo del cruceiro","Currency sign":"Signo monetario","Degree sign":"Signo de grado","Division sign":"Signo de división","Dollar sign":"Signo del dólar","Dong sign":"Signo de dong","Double dagger":"Cruz doble","Double exclamation mark":"Signo de exclamación doble","Double low-9 quotation mark":"Comilla tipográfica en forma de 9 doble y baja","Double question mark":"Signo de interrogación doble","downwards arrow to bar":"flecha hacia abajo hasta una barra","downwards dashed arrow":"flecha punteada hacia abajo","downwards double arrow":"flecha doble hacia abajo","downwards simple arrow":"flecha simple hacia abajo","Drachma sign":"Signo de dracma","Element of":"Elemento de","Em dash":"Raya","Empty set":"Conjunto vacío","En dash":"Semirraya","end with leftwards arrow above":"«end» con una flecha hacia la izquierda arriba","Euro sign":"Signo del euro","Euro-currency sign":"Signo de la moneda euro","Exclamation question mark":"Signo de interrogación exclamativa","For all":"Para todo","Fraction slash":"Barra fraccionaria","French franc sign":"Signo del franco francés","German penny sign":"Signo de centavo alemán","Greater-than or equal to":"Mayor que o igual a","Greater-than sign":"Signo de mayor que","Guarani sign":"Signo del guaraní","Horizontal ellipsis":"Puntos suspensivos horizontales","Hryvnia sign":"Signo de grivna","Identical to":"Idéntico a","Indian rupee sign":"Signo de rupia india",Infinity:"Infinito",Integral:"Integral",Intersection:"Intersección","Inverted exclamation mark":"Signo de exclamación de apertura","Inverted question mark":"Signo de interrogación de apertura","Kip sign":"Signo de kip","Latin capital letter a with breve":"Letra latina mayúscula «A» con acento breve","Latin capital letter a with macron":"Letra latina mayúscula «A» con macrón","Latin capital letter a with ogonek":"Letra latina mayúscula «A» con ogonek","Latin capital letter c with acute":"Letra latina mayúscula «C» con acento agudo","Latin capital letter c with caron":"Letra latina mayúscula «C» con acento anticircunflejo","Latin capital letter c with circumflex":"Letra latina mayúscula «C» con acento circunflejo","Latin capital letter c with dot above":"Letra latina mayúscula «C» con punto superior","Latin capital letter d with caron":"Letra latina mayúscula «D» con acento anticircunflejo","Latin capital letter d with stroke":"Letra latina mayúscula «D» con barra horizontal","Latin capital letter e with breve":"Letra latina mayúscula «e» con acento breve","Latin capital letter e with caron":"Letra latina mayúscula «E» con acento anticircunflejo","Latin capital letter e with dot above":"Letra latina mayúscula «E» con punto superior","Latin capital letter e with macron":"Letra latina mayúscula «E» con macrón","Latin capital letter e with ogonek":"Letra latina mayúscula «E» con ogonek","Latin capital letter eng":"Letra latina mayúscula «Eng»","Latin capital letter g with breve":"Letra latina mayúscula «G» con acento breve","Latin capital letter g with cedilla":"Letra latina mayúscula «G» con cedilla","Latin capital letter g with circumflex":"Letra latina mayúscula «G» con acento circunflejo","Latin capital letter g with dot above":"Letra latina mayúscula «G» con punto superior","Latin capital letter h with circumflex":"Letra latina mayúscula «H» con acento circunflejo","Latin capital letter h with stroke":"Letra latina mayúscula «H» con barra horizontal","Latin capital letter i with breve":"Letra latina mayúscula «I» con acento breve","Latin capital letter i with dot above":"Letra latina mayúscula «I» con punto superior","Latin capital letter i with macron":"Letra latina mayúscula «I» con macrón","Latin capital letter i with ogonek":"Letra latina mayúscula «I» con ogonek","Latin capital letter i with tilde":"Letra latina mayúscula «I» con tilde","Latin capital letter j with circumflex":"Letra latina mayúscula «J» con acento circunflejo","Latin capital letter k with cedilla":"Letra latina mayúscula «K» con cedilla","Latin capital letter l with acute":"Letra latina mayúscula «L» con acento agudo","Latin capital letter l with caron":"Letra latina mayúscula «I» con acento anticircunflejo","Latin capital letter l with cedilla":"Letra latina mayúscula «I» con cedilla","Latin capital letter l with middle dot":"Letra latina mayúscula «L» con punto medio","Latin capital letter l with stroke":"Letra latina mayúscula «L» con barra diagonal","Latin capital letter n with acute":"Letra latina mayúscula «N» con acento agudo","Latin capital letter n with caron":"Letra latina mayúscula «n» con acento anticircunflejo","Latin capital letter n with cedilla":"Letra latina mayúscula «N» con cedilla","Latin capital letter o with breve":"Letra latina mayúscula «O» con acento breve","Latin capital letter o with double acute":"Letra latina mayúscula «O» con doble acento agudo","Latin capital letter o with macron":"Letra latina mayúscula «O» con macrón","Latin capital letter r with acute":"Letra latina mayúscula «R» con acento agudo","Latin capital letter r with caron":"Letra latina mayúscula «R» con acento anticircunflejo","Latin capital letter r with cedilla":"Letra latina mayúscula «R» con cedilla","Latin capital letter s with acute":"Letra latina mayúscula «S» con acento agudo","Latin capital letter s with caron":"Letra latina mayúscula «S» con acento anticircunflejo","Latin capital letter s with cedilla":"Letra latina mayúscula «S» con cedilla","Latin capital letter s with circumflex":"Letra latina mayúscula «S» con acento circunflejo","Latin capital letter t with caron":"Letra latina mayúscula «T» con acento anticircunflejo","Latin capital letter t with cedilla":"Letra latina mayúscula «T» con cedilla","Latin capital letter t with stroke":"Letra latina mayúscula «T» con barra horizontal","Latin capital letter u with breve":"Letra latina mayúscula «U» con acento breve","Latin capital letter u with double acute":"Letra latina mayúscula «U» con doble acento agudo","Latin capital letter u with macron":"Letra latina mayúscula «U» con macrón","Latin capital letter u with ogonek":"Letra latina mayúscula «U» con ogonek","Latin capital letter u with ring above":"Letra latina mayúscula «U» con anillo superior","Latin capital letter u with tilde":"Letra latina mayúscula «U» con tilde","Latin capital letter w with circumflex":"Letra latina mayúscula «W» con acento circunflejo","Latin capital letter y with circumflex":"Letra latina mayúscula «Y» con acento circunflejo","Latin capital letter y with diaeresis":"Letra latina mayúscula «Y» con diéresis","Latin capital letter z with acute":"Letra latina mayúscula «Z» con acento agudo","Latin capital letter z with caron":"Letra latina mayúscula «Z» con acento anticircunflejo","Latin capital letter z with dot above":"Letra latina mayúscula «Z» con punto superior","Latin capital ligature ij":"Ligadura latina mayúscula «IJ»","Latin capital ligature oe":"Ligadura latina mayúscula «OE»","Latin small letter a with breve":"Letra latina minúscula «a» con acento breve","Latin small letter a with macron":"Letra latina minúscula «a» con macrón","Latin small letter a with ogonek":"Letra latina minúscula «a» con ogonek","Latin small letter c with acute":"Letra latina minúscula «c» con acento agudo","Latin small letter c with caron":"Letra latina minúscula «c» con acento anticircunflejo","Latin small letter c with circumflex":"Letra latina minúscula «c» con acento circunflejo","Latin small letter c with dot above":"Letra latina minúscula «c» con punto superior","Latin small letter d with caron":"Letra latina minúscula «d» con acento anticircunflejo","Latin small letter d with stroke":"Letra latina minúscula «d» con barra horizontal","Latin small letter dotless i":"Letra latina minúscula «i» sin punto","Latin small letter e with breve":"Letra latina minúscula «e» con acento breve","Latin small letter e with caron":"Letra latina minúscula «e» con acento anticircunflejo","Latin small letter e with dot above":"Letra latina minúscula «e» con punto superior","Latin small letter e with macron":"Letra latina minúscula «e» con macrón","Latin small letter e with ogonek":"Letra latina minúscula «e» con ogonek","Latin small letter eng":"Letra latina minúscula «eng»","Latin small letter f with hook":"Letra latina minúscula «f» con gancho","Latin small letter g with breve":"Letra latina minúscula «g» con acento breve","Latin small letter g with cedilla":"Letra latina minúscula «g» con cedilla","Latin small letter g with circumflex":"Letra latina minúscula «g» con acento circunflejo","Latin small letter g with dot above":"Letra latina minúscula «g» con punto superior","Latin small letter h with circumflex":"Letra latina minúscula «h» con acento circunflejo","Latin small letter h with stroke":"Letra latina minúscula «h» con barra horizontal","Latin small letter i with breve":"Letra latina minúscula «i» con acento breve","Latin small letter i with macron":"Letra latina minúscula «i» con macrón","Latin small letter i with ogonek":"Letra latina minúscula «i» con ogonek","Latin small letter i with tilde":"Letra latina minúscula «i» con tilde","Latin small letter j with circumflex":"Letra latina minúscula «j» con acento circunflejo","Latin small letter k with cedilla":"Letra latina minúscula «k» con cedilla","Latin small letter kra":"Letra latina minúscula «kra»","Latin small letter l with acute":"Letra latina minúscula «l» con acento agudo","Latin small letter l with caron":"Letra latina minúscula «i» con acento anticircunflejo","Latin small letter l with cedilla":"Letra latina minúscula «l» con cedilla","Latin small letter l with middle dot":"Letra latina minúscula «l» con punto medio","Latin small letter l with stroke":"Letra latina minúscula «l» con barra diagonal","Latin small letter long s":"Letra latina minúscula «s» larga","Latin small letter n preceded by apostrophe":"Letra latina minúscula «n» precedida de apóstrofo","Latin small letter n with acute":"Letra latina minúscula «n» con acento agudo","Latin small letter n with caron":"Letra latina minúscula «n» con acento anticircunflejo","Latin small letter n with cedilla":"Letra latina minúscula «n» con cedilla","Latin small letter o with breve":"Letra latina minúscula «o» con acento breve","Latin small letter o with double acute":"Letra latina minúscula «o» con doble acento agudo","Latin small letter o with macron":"Letra latina minúscula «o» con macrón","Latin small letter r with acute":"Letra latina minúscula «r» con acento agudo","Latin small letter r with caron":"Letra latina minúscula «r» con acento anticircunflejo","Latin small letter r with cedilla":"Letra latina minúscula «r» con cedilla","Latin small letter s with acute":"Letra latina minúscula «s» con acento agudo","Latin small letter s with caron":"Letra latina minúscula «s» con acento anticircunflejo","Latin small letter s with cedilla":"Letra latina minúscula «s» con cedilla","Latin small letter s with circumflex":"Letra latina minúscula «s» con acento circunflejo","Latin small letter t with caron":"Letra latina minúscula «t» con acento anticircunflejo","Latin small letter t with cedilla":"Letra latina minúscula «t» con cedilla","Latin small letter t with stroke":"Letra latina minúscula «t» con barra horizontal","Latin small letter u with breve":"Letra latina minúscula «u» con acento breve","Latin small letter u with double acute":"Letra latina minúscula «u» con doble acento agudo","Latin small letter u with macron":"Letra latina minúscula «u» con macrón","Latin small letter u with ogonek":"Letra latina minúscula «u» con ogonek","Latin small letter u with ring above":"Letra latina minúscula «u» con anillo superior","Latin small letter u with tilde":"Letra latina minúscula «u» con tilde","Latin small letter w with circumflex":"Letra latina minúscula «w» con acento circunflejo","Latin small letter y with circumflex":"Letra latina minúscula «y» con acento circunflejo","Latin small letter z with acute":"Letra latina minúscula «z» con acento agudo","Latin small letter z with caron":"Letra latina minúscula «z» con acento anticircunflejo","Latin small letter z with dot above":"Letra latina minúscula «z» con punto superior","Latin small ligature ij":"Ligadura latina minúscula «ij»","Latin small ligature oe":"Ligadura latina minúscula «oe»","Left double quotation mark":"Comilla tipográfica doble de apertura","Left single quotation mark":"Comilla tipográfica de apertura","Left-pointing double angle quotation mark":"Comilla tipográfica doble angular de apertura","leftwards arrow to bar":"flecha hacia la izquierda hasta una barra","leftwards dashed arrow":"flecha punteada hacia la izquierda","leftwards double arrow":"flecha doble hacia la izquierda","leftwards simple arrow":"flecha simple hacia la izquierda","Less-than or equal to":"Menor que o igual a","Less-than sign":"Signo de menor que","Lira sign":"Signo de la lira","Livre tournois sign":"Signo de libra tornesa","Logical and":"Y lógico","Logical or":"O lógico",Macron:"Macrón","Manat sign":"Signo de manat","Mill sign":"Signo de milésima","Minus sign":"Signo de resta","Multiplication sign":"Signo de multiplicación","N-ary product":"Productorio","N-ary summation":"Sumatoria",Nabla:"Nabla","Naira sign":"Signo de naira","New sheqel sign":"Signo del nuevo séquel","Nordic mark sign":"Signo de marco nórdico","Not an element of":"No es un elemento de","Not equal to":"No igual a","Not sign":"Signo de negación","on with exclamation mark with left right arrow above":"«on» seguido de un signo de exclamación y con una flecha hacia la izquierda y derecha arriba",Overline:"Línea alta","Paragraph sign":"Signo de párrafo","Partial differential":"Diferencial parcial","Per mille sign":"Signo de por mil","Per ten thousand sign":"Signo de por diez mil","Peseta sign":"Signo de la peseta","Peso sign":"Signo del peso","Plus-minus sign":"Signo más-menos","Pound sign":"Signo de la libra","Proportional to":"Proporcional a","Question exclamation mark":"Signo de exclamación interrogativa","Registered sign":"Signo de marca registrada","Reversed paragraph sign":"Signo de antígrafo invertido","Right double quotation mark":"Comilla tipográfica de cierre","Right single quotation mark":"Comilla tipográfica de cierre","Right-pointing double angle quotation mark":"Comilla tipográfica dobe angular de cierre","rightwards arrow to bar":"flecha hacia la derecha hasta una barra","rightwards dashed arrow":"flecha punteada hacia la derecha","rightwards double arrow":"flecha doble hacia la derecha","rightwards simple arrow":"flecha simple hacia la derecha","Ruble sign":"Signo del rublo","Rupee sign":"Signo de la rupia","Section sign":"Signo de sección","Single left-pointing angle quotation mark":"Comilla tipográfica simple angular de apertura","Single low-9 quotation mark":"Comilla tipográfica en forma de 9 simple y baja","Single right-pointing angle quotation mark":"Comilla tipográfica simple angular de cierre","soon with rightwards arrow above":"«soon» con una flecha hacia la derecha arriba","Special characters":"Caracteres especiales","Spesmilo sign":"Signo de spesmilo","Square root":"Raíz cuadrada","Tenge sign":"Signo de tenge","There exists":"Existe","Tilde operator":"Operador de tilde","top with upwards arrow above":"«top» con una flecha hacia arriba arriba","Trade mark sign":"Signo de marca comercial","Tugrik sign":"Signo de tugrik","Turkish lira sign":"Signo de lira turca","Two dot leader":"Punto de inicio doble",Union:"Unión","up down arrow with base":"flecha hacia arriba y abajo con una base","upwards arrow to bar":"flecha hacia arriba hasta una barra","upwards dashed arrow":"flecha punteada hacia arriba","upwards double arrow":"flecha doble hacia arriba","upwards simple arrow":"flecha simple hacia arriba","Vulgar fraction one half":"Fracción ordinaria de un medio","Vulgar fraction one quarter":"Fracción ordinaria de un cuarto","Vulgar fraction three quarters":"Fracción ordinaria de tres cuartos","Won sign":"Signo del won","Yen sign":"Signo del yen"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/special-characters/translations/et.js b/core/assets/vendor/ckeditor5/special-characters/translations/et.js
index f16123f5a5..81ef5beb41 100644
--- a/core/assets/vendor/ckeditor5/special-characters/translations/et.js
+++ b/core/assets/vendor/ckeditor5/special-characters/translations/et.js
@@ -1 +1 @@
-!function(a){const t=a.et=a.et||{};t.dictionary=Object.assign(t.dictionary||{},{"Almost equal to":"Peaaegu võrdne",Angle:"Nurk","Approximately equal to":"Ligikaudu võrdne","Asterisk operator":"Tärnisisestaja","Austral sign":"Australimärk","back with leftwards arrow above":"BACK ülemise vasaknoolega","Bitcoin sign":"Bitcoini märk","Cedi sign":"Sedimärk","Cent sign":"Sendi märk","Character categories":"Märkide kategooriad","Colon sign":"Koolon","Contains as member":"Sisaldab liikmena","Copyright sign":"Autoriõigusmärk","Cruzeiro sign":"Kruseiromärk","Currency sign":"Valuutamärk","Degree sign":"Kraadimärk","Division sign":"Jagamismärk","Dollar sign":"Dollarimärk","Dong sign":"Dongimärk","Double dagger":"Topeltpistoda","Double exclamation mark":"Topelthüüumärk","Double low-9 quotation mark":"Kahekordsed madalad üheksakujulised jutumärgid","Double question mark":"Topeltküsimärk","downwards arrow to bar":"kriipsu suunatud allanool","downwards dashed arrow":"katkendnool alla","downwards double arrow":"topeltnool alla","Drachma sign":"Drahmimärk","Element of":"Esineb elemendina","Em dash":"Mõttekriips","Empty set":"Tühihulk","En dash":"Sidekriips","end with leftwards arrow above":"LÕPP ülemise vasaknoolega","Euro sign":"Euro märk","Euro-currency sign":"Euromärk","Exclamation question mark":"Hüüuküsimärk","For all":"Kõigile","Fraction slash":"Kaldus murrupoolitaja","French franc sign":"Prantsuse frangi märk","German penny sign":"Saksa penni märk","Greater-than or equal to":"Suurem-kui või võrdne","Greater-than sign":"Suurem-kui märk","Guarani sign":"Guaraniimärk","Horizontal ellipsis":"Horisontaalne ellips","Hryvnia sign":"Grivnamärk","Identical to":"Samane","Indian rupee sign":"India ruupia märk",Infinity:"Lõpmatus",Integral:"Integraal",Intersection:"Ühisosa","Inverted exclamation mark":"Tagurpidine hüüumärk","Inverted question mark":"Tagurpidine küsimärk","Kip sign":"Kipimärk","Latin capital letter a with breve":"Ladina suurtäht A kaarega","Latin capital letter a with macron":"Ladina suurtäht A ülakriipsuga","Latin capital letter a with ogonek":"Ladina suurtäht A pöördsediiga","Latin capital letter c with acute":"Ladina suurtäht C akuudiga","Latin capital letter c with caron":"Ladina suurtäht C haagiga","Latin capital letter c with circumflex":"Ladina suurtäht C tsirkumfleksiga","Latin capital letter c with dot above":"Ladina suurtäht C ülapunktiga","Latin capital letter d with caron":"Ladina suurtäht D haagiga","Latin capital letter d with stroke":"Ladina suurtäht D läbiva kriipsuga","Latin capital letter e with breve":"Ladina suurtäht E kaarega","Latin capital letter e with caron":"Ladina suurtäht E haagiga","Latin capital letter e with dot above":"Ladina suurtäht E ülapunktiga","Latin capital letter e with macron":"Ladina suurtäht E ülakriipsuga","Latin capital letter e with ogonek":"Ladina suurtäht E pöördsediiga","Latin capital letter eng":"Ladina suurtäht ENG","Latin capital letter g with breve":"Ladina suurtäht G kaarega","Latin capital letter g with cedilla":"Ladina suurtäht G sediiga","Latin capital letter g with circumflex":"Ladina suurtäht G tsirkumfleksiga","Latin capital letter g with dot above":"Ladina suurtäht G ülapunktiga","Latin capital letter h with circumflex":"Ladina suurtäht H tsirkumfleksiga","Latin capital letter h with stroke":"Ladina suurtäht H läbiva kriipsuga","Latin capital letter i with breve":"Ladina suurtäht I kaarega","Latin capital letter i with dot above":"Ladina suurtäht I ülapunktiga","Latin capital letter i with macron":"Ladina suurtäht I ülakriipsuga","Latin capital letter i with ogonek":"Ladina suurtäht I pöördsediiga","Latin capital letter i with tilde":"Ladina suurtäht I tildega","Latin capital letter j with circumflex":"Ladina suurtäht J tsirkumfleksiga","Latin capital letter k with cedilla":"Ladina suurtäht K sediiga","Latin capital letter l with acute":"Ladina suurtäht I akuudiga","Latin capital letter l with caron":"Ladina suurtäht I haagiga","Latin capital letter l with cedilla":"Ladina suurtäht I sediiga","Latin capital letter l with middle dot":"Ladina suurtäht I keskmise punktiga","Latin capital letter l with stroke":"Ladina suurtäht I läbiva kriipsuga","Latin capital letter n with acute":"Ladina suurtäht N akuudiga","Latin capital letter n with caron":"Ladina suurtäht N haagiga","Latin capital letter n with cedilla":"Ladina suurtäht N sediiga","Latin capital letter o with breve":"Ladina suurtäht O kaarega","Latin capital letter o with double acute":"Ladina suurtäht O topeltakuudiga","Latin capital letter o with macron":"Ladina suurtäht O ülakriipsuga","Latin capital letter r with acute":"Ladina suurtäht R akuudiga","Latin capital letter r with caron":"Ladina suurtäht R haagiga","Latin capital letter r with cedilla":"Ladina suurtäht R sediiga","Latin capital letter s with acute":"Ladina suurtäht S akuudiga","Latin capital letter s with caron":"Ladina suurtäht S haagiga","Latin capital letter s with cedilla":"Ladina suurtäht S sediiga","Latin capital letter s with circumflex":"Ladina suurtäht S tsirkumfleksiga","Latin capital letter t with caron":"Ladina suurtäht T haagiga","Latin capital letter t with cedilla":"Ladina suurtäht T sediiga","Latin capital letter t with stroke":"Ladina suurtäht T läbiva kriipsuga","Latin capital letter u with breve":"Ladina suurtäht U kaarega","Latin capital letter u with double acute":"Ladina suurtäht U topeltakuudiga","Latin capital letter u with macron":"Ladina suurtäht U ülakriipsuga","Latin capital letter u with ogonek":"Ladina suurtäht U pöördsediiga","Latin capital letter u with ring above":"Ladina suurtäht U ülaringiga","Latin capital letter u with tilde":"Ladina suurtäht U tildega","Latin capital letter w with circumflex":"Ladina suurtäht W tsirkumfleksiga","Latin capital letter y with circumflex":"Ladina suurtäht Y tsirkumfleksiga","Latin capital letter y with diaeresis":"Ladina suurtäht Y täppidega","Latin capital letter z with acute":"Ladina suurtäht Z akuudiga","Latin capital letter z with caron":"Ladina suurtäht Z haagiga","Latin capital letter z with dot above":"Ladina suurtäht Z ülapunktiga","Latin capital ligature ij":"Ladina suurligatuur IJ","Latin capital ligature oe":"Ladina suurligatuur OE","Latin small letter a with breve":"Ladina väiketäht A kaarega","Latin small letter a with macron":"Ladina väiketäht A ülakriipsuga","Latin small letter a with ogonek":"Ladina väiketäht A pöördsediiga","Latin small letter c with acute":"Ladina väiketäht C akuudiga","Latin small letter c with caron":"Ladina väiketäht C haagiga","Latin small letter c with circumflex":"Ladina väiketäht C tsirkumfleksiga","Latin small letter c with dot above":"Ladina väiketäht C ülapunktiga","Latin small letter d with caron":"Ladina väiketäht D haagiga","Latin small letter d with stroke":"Ladina väiketäht D läbiva kriipsuga","Latin small letter dotless i":"Ladina väiketäht I ilma täpita","Latin small letter e with breve":"Ladina väiketäht E kaarega","Latin small letter e with caron":"Ladina väiketäht E haagiga","Latin small letter e with dot above":"Ladina väiketäht E ülapunktiga","Latin small letter e with macron":"Ladina väiketäht E ülakriipsuga","Latin small letter e with ogonek":"Ladina väiketäht E pöördsediiga","Latin small letter eng":"Ladina väiketäht ENG","Latin small letter f with hook":"Ladina väiketäht F konksuga","Latin small letter g with breve":"Ladina väiketäht G kaarega","Latin small letter g with cedilla":"Ladina väiketäht G sediiga","Latin small letter g with circumflex":"Ladina väiketäht G tsirkumfleksiga","Latin small letter g with dot above":"Ladina väiketäht G ülapunktiga","Latin small letter h with circumflex":"Ladina väiketäht H tsirkumfleksiga","Latin small letter h with stroke":"Ladina väiketäht H läbiva kriipsuga","Latin small letter i with breve":"Ladina väiketäht I kaarega","Latin small letter i with macron":"Ladina väiketäht I ülakriipsuga","Latin small letter i with ogonek":"Ladina väiketäht I pöördsediiga","Latin small letter i with tilde":"Ladina väiketäht I tildega","Latin small letter j with circumflex":"Ladina väiketäht J tsirkumfleksiga","Latin small letter k with cedilla":"Ladina väiketäht K sediiga","Latin small letter kra":"Ladina väiketäht KRA","Latin small letter l with acute":"Ladina väiketäht I akuudiga","Latin small letter l with caron":"Ladina väiketäht I haagiga","Latin small letter l with cedilla":"Ladina väiketäht I sediiga","Latin small letter l with middle dot":"Ladina väiketäht I keskmise punktiga","Latin small letter l with stroke":"Ladina väiketäht I läbiva kriipsuga","Latin small letter long s":"Ladina väiketäht pikk S","Latin small letter n preceded by apostrophe":"Ladina väiketäht N koos eelneva ülakomaga","Latin small letter n with acute":"Ladina väiketäht N akuudiga","Latin small letter n with caron":"Ladina väiketäht N haagiga","Latin small letter n with cedilla":"Ladina väiketäht N sediiga","Latin small letter o with breve":"Ladina väiketäht O kaarega","Latin small letter o with double acute":"Ladina väiketäht O topeltakuudiga","Latin small letter o with macron":"Ladina väiketäht O ülakriipsuga","Latin small letter r with acute":"Ladina väiketäht R akuudiga","Latin small letter r with caron":"Ladina väiketäht R haagiga","Latin small letter r with cedilla":"Ladina väiketäht R sediiga","Latin small letter s with acute":"Ladina väiketäht S akuudiga","Latin small letter s with caron":"Ladina väiketäht S haagiga","Latin small letter s with cedilla":"Ladina väiketäht S sediiga","Latin small letter s with circumflex":"Ladina väiketäht S tsirkumfleksiga","Latin small letter t with caron":"Ladina väiketäht T haagiga","Latin small letter t with cedilla":"Ladina väiketäht T sediiga","Latin small letter t with stroke":"Ladina väiketäht T läbiva kriipsuga","Latin small letter u with breve":"Ladina väiketäht U kaarega","Latin small letter u with double acute":"Ladina väiketäht U topeltakuudiga","Latin small letter u with macron":"Ladina väiketäht U ülakriipsuga","Latin small letter u with ogonek":"Ladina väiketäht U pöördsediiga","Latin small letter u with ring above":"Ladina väiketäht U ülaringiga","Latin small letter u with tilde":"Ladina väiketäht U tildega","Latin small letter w with circumflex":"Ladina väiketäht W tsirkumfleksiga","Latin small letter y with circumflex":"Ladina väiketäht Y tsirkumfleksiga","Latin small letter z with acute":"Ladina väiketäht Z akuudiga","Latin small letter z with caron":"Ladina väiketäht Z haagiga","Latin small letter z with dot above":"Ladina väiketäht Z ülapunktiga","Latin small ligature ij":"Ladina väikeligatuur IJ","Latin small ligature oe":"Ladina väikeligatuur OE","Left double quotation mark":"Vasakpoolsed kahekordsed jutumärgid","Left single quotation mark":"Vasakpoolne ühekordne jutumärk","Left-pointing double angle quotation mark":"Vasakule suunatud kahekordse nurgaga jutumärgid","leftwards arrow to bar":"kriipsu suunatud vasaknool","leftwards dashed arrow":"katkendnool vasakule","leftwards double arrow":"topeltnool vasakule","Less-than or equal to":"Väiksem-kui või võrdne","Less-than sign":"Väiksem-kui märk","Lira sign":"Liirimärk","Livre tournois sign":"Livre tournois' märk","Logical and":"Loogiline ja","Logical or":"Loogiline või",Macron:"Ülakriips","Manat sign":"Manatimärk","Mill sign":"Valuutatuhandiku märk","Minus sign":"Miinusmärk","Multiplication sign":"Korrutusmärk","N-ary product":"N-aari tulem","N-ary summation":"N-aar liitmine",Nabla:"Nabla","Naira sign":"Nairamärk","New sheqel sign":"Uusseekelimärk","Nordic mark sign":"Põhjamaade marga märk","Not an element of":"Ei esine elemendina","Not equal to":"Ei võrdu","Not sign":"Keelumärk","on with exclamation mark with left right arrow above":"hüüumärgiga ON koos ülemise vasak-parem noolega",Overline:"Ülajoon","Paragraph sign":"Lõigumärk","Partial differential":"Osaline diferentsiaal","Per mille sign":"Promillimärk","Per ten thousand sign":"Kümnetuhandikosa märk","Peseta sign":"Peseetamärk","Peso sign":"Peesomärk","Plus-minus sign":"Pluss-miinus märk","Pound sign":"Naela märk","Proportional to":"Esineb proportsionaalsus","Question exclamation mark":"Küsihüüumärk","Registered sign":"Registreerimiskujutis","Reversed paragraph sign":"Ümberpööratud lõigumärk","Right double quotation mark":"Parempoolsed kahekordsed jutumärgid","Right single quotation mark":"Parempoolne ühekordne jutumärk","Right-pointing double angle quotation mark":"Paremale suunatud kahekordse nurgaga jutumärgid","rightwards arrow to bar":"kriipsu suunatud paremnool","rightwards dashed arrow":"katkendnool paremale","rightwards double arrow":"topeltnool paremale","Ruble sign":"Rublamärk","Rupee sign":"Ruupiamärk","Section sign":"Paragrahvimärk","Single left-pointing angle quotation mark":"Ühekordne vasakule suunatud nurgaga jutumärk","Single low-9 quotation mark":"Ühekordne madal üheksakujuline jutumärk","Single right-pointing angle quotation mark":"Ühekordne paremale suunatud nurgaga jutumärk","soon with rightwards arrow above":"SOON ülemise paremnoolega","Special characters":"Erimärgid","Spesmilo sign":"Spesmilomärk","Square root":"Ruutjuur","Tenge sign":"Tengemärk","There exists":"Leidub","Tilde operator":"Tildesisestaja","top with upwards arrow above":"TOP ülemise ülesnoolega","Trade mark sign":"Kaubamärgikujutis","Tugrik sign":"Tugrikumärk","Turkish lira sign":"Türgi liiri märk","Two dot leader":"Kahetäpiline punktiir",Union:"Ühend","up down arrow with base":"üles-alla nool aluskriipsuga","upwards arrow to bar":"kriipsu suunatud ülesnool","upwards dashed arrow":"katkendnool üles","upwards double arrow":"topeltnool üles","Vulgar fraction one half":"Harilik murd üks kahendik","Vulgar fraction one quarter":"Harilik murd üks neljandik","Vulgar fraction three quarters":"Harilik murd kolm neljandikku","Won sign":"Vonnimärk","Yen sign":"Jeenimärk"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(a){const t=a.et=a.et||{};t.dictionary=Object.assign(t.dictionary||{},{"Almost equal to":"Peaaegu võrdne",Angle:"Nurk","Approximately equal to":"Ligikaudu võrdne","Asterisk operator":"Tärnisisestaja","Austral sign":"Australimärk","back with leftwards arrow above":"BACK ülemise vasaknoolega","Bitcoin sign":"Bitcoini märk","Cedi sign":"Sedimärk","Cent sign":"Sendi märk","Character categories":"Märkide kategooriad","Colon sign":"Koolon","Contains as member":"Sisaldab liikmena","Copyright sign":"Autoriõigusmärk","Cruzeiro sign":"Kruseiromärk","Currency sign":"Valuutamärk","Degree sign":"Kraadimärk","Division sign":"Jagamismärk","Dollar sign":"Dollarimärk","Dong sign":"Dongimärk","Double dagger":"Topeltpistoda","Double exclamation mark":"Topelthüüumärk","Double low-9 quotation mark":"Kahekordsed madalad üheksakujulised jutumärgid","Double question mark":"Topeltküsimärk","downwards arrow to bar":"kriipsu suunatud allanool","downwards dashed arrow":"katkendnool alla","downwards double arrow":"topeltnool alla","downwards simple arrow":"allapoole suunatud lihtne nool","Drachma sign":"Drahmimärk","Element of":"Esineb elemendina","Em dash":"Mõttekriips","Empty set":"Tühihulk","En dash":"Sidekriips","end with leftwards arrow above":"LÕPP ülemise vasaknoolega","Euro sign":"Euro märk","Euro-currency sign":"Euromärk","Exclamation question mark":"Hüüuküsimärk","For all":"Kõigile","Fraction slash":"Kaldus murrupoolitaja","French franc sign":"Prantsuse frangi märk","German penny sign":"Saksa penni märk","Greater-than or equal to":"Suurem-kui või võrdne","Greater-than sign":"Suurem-kui märk","Guarani sign":"Guaraniimärk","Horizontal ellipsis":"Horisontaalne ellips","Hryvnia sign":"Grivnamärk","Identical to":"Samane","Indian rupee sign":"India ruupia märk",Infinity:"Lõpmatus",Integral:"Integraal",Intersection:"Ühisosa","Inverted exclamation mark":"Tagurpidine hüüumärk","Inverted question mark":"Tagurpidine küsimärk","Kip sign":"Kipimärk","Latin capital letter a with breve":"Ladina suurtäht A kaarega","Latin capital letter a with macron":"Ladina suurtäht A ülakriipsuga","Latin capital letter a with ogonek":"Ladina suurtäht A pöördsediiga","Latin capital letter c with acute":"Ladina suurtäht C akuudiga","Latin capital letter c with caron":"Ladina suurtäht C haagiga","Latin capital letter c with circumflex":"Ladina suurtäht C tsirkumfleksiga","Latin capital letter c with dot above":"Ladina suurtäht C ülapunktiga","Latin capital letter d with caron":"Ladina suurtäht D haagiga","Latin capital letter d with stroke":"Ladina suurtäht D läbiva kriipsuga","Latin capital letter e with breve":"Ladina suurtäht E kaarega","Latin capital letter e with caron":"Ladina suurtäht E haagiga","Latin capital letter e with dot above":"Ladina suurtäht E ülapunktiga","Latin capital letter e with macron":"Ladina suurtäht E ülakriipsuga","Latin capital letter e with ogonek":"Ladina suurtäht E pöördsediiga","Latin capital letter eng":"Ladina suurtäht ENG","Latin capital letter g with breve":"Ladina suurtäht G kaarega","Latin capital letter g with cedilla":"Ladina suurtäht G sediiga","Latin capital letter g with circumflex":"Ladina suurtäht G tsirkumfleksiga","Latin capital letter g with dot above":"Ladina suurtäht G ülapunktiga","Latin capital letter h with circumflex":"Ladina suurtäht H tsirkumfleksiga","Latin capital letter h with stroke":"Ladina suurtäht H läbiva kriipsuga","Latin capital letter i with breve":"Ladina suurtäht I kaarega","Latin capital letter i with dot above":"Ladina suurtäht I ülapunktiga","Latin capital letter i with macron":"Ladina suurtäht I ülakriipsuga","Latin capital letter i with ogonek":"Ladina suurtäht I pöördsediiga","Latin capital letter i with tilde":"Ladina suurtäht I tildega","Latin capital letter j with circumflex":"Ladina suurtäht J tsirkumfleksiga","Latin capital letter k with cedilla":"Ladina suurtäht K sediiga","Latin capital letter l with acute":"Ladina suurtäht I akuudiga","Latin capital letter l with caron":"Ladina suurtäht I haagiga","Latin capital letter l with cedilla":"Ladina suurtäht I sediiga","Latin capital letter l with middle dot":"Ladina suurtäht I keskmise punktiga","Latin capital letter l with stroke":"Ladina suurtäht I läbiva kriipsuga","Latin capital letter n with acute":"Ladina suurtäht N akuudiga","Latin capital letter n with caron":"Ladina suurtäht N haagiga","Latin capital letter n with cedilla":"Ladina suurtäht N sediiga","Latin capital letter o with breve":"Ladina suurtäht O kaarega","Latin capital letter o with double acute":"Ladina suurtäht O topeltakuudiga","Latin capital letter o with macron":"Ladina suurtäht O ülakriipsuga","Latin capital letter r with acute":"Ladina suurtäht R akuudiga","Latin capital letter r with caron":"Ladina suurtäht R haagiga","Latin capital letter r with cedilla":"Ladina suurtäht R sediiga","Latin capital letter s with acute":"Ladina suurtäht S akuudiga","Latin capital letter s with caron":"Ladina suurtäht S haagiga","Latin capital letter s with cedilla":"Ladina suurtäht S sediiga","Latin capital letter s with circumflex":"Ladina suurtäht S tsirkumfleksiga","Latin capital letter t with caron":"Ladina suurtäht T haagiga","Latin capital letter t with cedilla":"Ladina suurtäht T sediiga","Latin capital letter t with stroke":"Ladina suurtäht T läbiva kriipsuga","Latin capital letter u with breve":"Ladina suurtäht U kaarega","Latin capital letter u with double acute":"Ladina suurtäht U topeltakuudiga","Latin capital letter u with macron":"Ladina suurtäht U ülakriipsuga","Latin capital letter u with ogonek":"Ladina suurtäht U pöördsediiga","Latin capital letter u with ring above":"Ladina suurtäht U ülaringiga","Latin capital letter u with tilde":"Ladina suurtäht U tildega","Latin capital letter w with circumflex":"Ladina suurtäht W tsirkumfleksiga","Latin capital letter y with circumflex":"Ladina suurtäht Y tsirkumfleksiga","Latin capital letter y with diaeresis":"Ladina suurtäht Y täppidega","Latin capital letter z with acute":"Ladina suurtäht Z akuudiga","Latin capital letter z with caron":"Ladina suurtäht Z haagiga","Latin capital letter z with dot above":"Ladina suurtäht Z ülapunktiga","Latin capital ligature ij":"Ladina suurligatuur IJ","Latin capital ligature oe":"Ladina suurligatuur OE","Latin small letter a with breve":"Ladina väiketäht A kaarega","Latin small letter a with macron":"Ladina väiketäht A ülakriipsuga","Latin small letter a with ogonek":"Ladina väiketäht A pöördsediiga","Latin small letter c with acute":"Ladina väiketäht C akuudiga","Latin small letter c with caron":"Ladina väiketäht C haagiga","Latin small letter c with circumflex":"Ladina väiketäht C tsirkumfleksiga","Latin small letter c with dot above":"Ladina väiketäht C ülapunktiga","Latin small letter d with caron":"Ladina väiketäht D haagiga","Latin small letter d with stroke":"Ladina väiketäht D läbiva kriipsuga","Latin small letter dotless i":"Ladina väiketäht I ilma täpita","Latin small letter e with breve":"Ladina väiketäht E kaarega","Latin small letter e with caron":"Ladina väiketäht E haagiga","Latin small letter e with dot above":"Ladina väiketäht E ülapunktiga","Latin small letter e with macron":"Ladina väiketäht E ülakriipsuga","Latin small letter e with ogonek":"Ladina väiketäht E pöördsediiga","Latin small letter eng":"Ladina väiketäht ENG","Latin small letter f with hook":"Ladina väiketäht F konksuga","Latin small letter g with breve":"Ladina väiketäht G kaarega","Latin small letter g with cedilla":"Ladina väiketäht G sediiga","Latin small letter g with circumflex":"Ladina väiketäht G tsirkumfleksiga","Latin small letter g with dot above":"Ladina väiketäht G ülapunktiga","Latin small letter h with circumflex":"Ladina väiketäht H tsirkumfleksiga","Latin small letter h with stroke":"Ladina väiketäht H läbiva kriipsuga","Latin small letter i with breve":"Ladina väiketäht I kaarega","Latin small letter i with macron":"Ladina väiketäht I ülakriipsuga","Latin small letter i with ogonek":"Ladina väiketäht I pöördsediiga","Latin small letter i with tilde":"Ladina väiketäht I tildega","Latin small letter j with circumflex":"Ladina väiketäht J tsirkumfleksiga","Latin small letter k with cedilla":"Ladina väiketäht K sediiga","Latin small letter kra":"Ladina väiketäht KRA","Latin small letter l with acute":"Ladina väiketäht I akuudiga","Latin small letter l with caron":"Ladina väiketäht I haagiga","Latin small letter l with cedilla":"Ladina väiketäht I sediiga","Latin small letter l with middle dot":"Ladina väiketäht I keskmise punktiga","Latin small letter l with stroke":"Ladina väiketäht I läbiva kriipsuga","Latin small letter long s":"Ladina väiketäht pikk S","Latin small letter n preceded by apostrophe":"Ladina väiketäht N koos eelneva ülakomaga","Latin small letter n with acute":"Ladina väiketäht N akuudiga","Latin small letter n with caron":"Ladina väiketäht N haagiga","Latin small letter n with cedilla":"Ladina väiketäht N sediiga","Latin small letter o with breve":"Ladina väiketäht O kaarega","Latin small letter o with double acute":"Ladina väiketäht O topeltakuudiga","Latin small letter o with macron":"Ladina väiketäht O ülakriipsuga","Latin small letter r with acute":"Ladina väiketäht R akuudiga","Latin small letter r with caron":"Ladina väiketäht R haagiga","Latin small letter r with cedilla":"Ladina väiketäht R sediiga","Latin small letter s with acute":"Ladina väiketäht S akuudiga","Latin small letter s with caron":"Ladina väiketäht S haagiga","Latin small letter s with cedilla":"Ladina väiketäht S sediiga","Latin small letter s with circumflex":"Ladina väiketäht S tsirkumfleksiga","Latin small letter t with caron":"Ladina väiketäht T haagiga","Latin small letter t with cedilla":"Ladina väiketäht T sediiga","Latin small letter t with stroke":"Ladina väiketäht T läbiva kriipsuga","Latin small letter u with breve":"Ladina väiketäht U kaarega","Latin small letter u with double acute":"Ladina väiketäht U topeltakuudiga","Latin small letter u with macron":"Ladina väiketäht U ülakriipsuga","Latin small letter u with ogonek":"Ladina väiketäht U pöördsediiga","Latin small letter u with ring above":"Ladina väiketäht U ülaringiga","Latin small letter u with tilde":"Ladina väiketäht U tildega","Latin small letter w with circumflex":"Ladina väiketäht W tsirkumfleksiga","Latin small letter y with circumflex":"Ladina väiketäht Y tsirkumfleksiga","Latin small letter z with acute":"Ladina väiketäht Z akuudiga","Latin small letter z with caron":"Ladina väiketäht Z haagiga","Latin small letter z with dot above":"Ladina väiketäht Z ülapunktiga","Latin small ligature ij":"Ladina väikeligatuur IJ","Latin small ligature oe":"Ladina väikeligatuur OE","Left double quotation mark":"Vasakpoolsed kahekordsed jutumärgid","Left single quotation mark":"Vasakpoolne ühekordne jutumärk","Left-pointing double angle quotation mark":"Vasakule suunatud kahekordse nurgaga jutumärgid","leftwards arrow to bar":"kriipsu suunatud vasaknool","leftwards dashed arrow":"katkendnool vasakule","leftwards double arrow":"topeltnool vasakule","leftwards simple arrow":"vasakule suunatud lihtne nool","Less-than or equal to":"Väiksem-kui või võrdne","Less-than sign":"Väiksem-kui märk","Lira sign":"Liirimärk","Livre tournois sign":"Livre tournois' märk","Logical and":"Loogiline ja","Logical or":"Loogiline või",Macron:"Ülakriips","Manat sign":"Manatimärk","Mill sign":"Valuutatuhandiku märk","Minus sign":"Miinusmärk","Multiplication sign":"Korrutusmärk","N-ary product":"N-aari tulem","N-ary summation":"N-aar liitmine",Nabla:"Nabla","Naira sign":"Nairamärk","New sheqel sign":"Uusseekelimärk","Nordic mark sign":"Põhjamaade marga märk","Not an element of":"Ei esine elemendina","Not equal to":"Ei võrdu","Not sign":"Keelumärk","on with exclamation mark with left right arrow above":"hüüumärgiga ON koos ülemise vasak-parem noolega",Overline:"Ülajoon","Paragraph sign":"Lõigumärk","Partial differential":"Osaline diferentsiaal","Per mille sign":"Promillimärk","Per ten thousand sign":"Kümnetuhandikosa märk","Peseta sign":"Peseetamärk","Peso sign":"Peesomärk","Plus-minus sign":"Pluss-miinus märk","Pound sign":"Naela märk","Proportional to":"Esineb proportsionaalsus","Question exclamation mark":"Küsihüüumärk","Registered sign":"Registreerimiskujutis","Reversed paragraph sign":"Ümberpööratud lõigumärk","Right double quotation mark":"Parempoolsed kahekordsed jutumärgid","Right single quotation mark":"Parempoolne ühekordne jutumärk","Right-pointing double angle quotation mark":"Paremale suunatud kahekordse nurgaga jutumärgid","rightwards arrow to bar":"kriipsu suunatud paremnool","rightwards dashed arrow":"katkendnool paremale","rightwards double arrow":"topeltnool paremale","rightwards simple arrow":"paremale suunatud lihtne nool","Ruble sign":"Rublamärk","Rupee sign":"Ruupiamärk","Section sign":"Paragrahvimärk","Single left-pointing angle quotation mark":"Ühekordne vasakule suunatud nurgaga jutumärk","Single low-9 quotation mark":"Ühekordne madal üheksakujuline jutumärk","Single right-pointing angle quotation mark":"Ühekordne paremale suunatud nurgaga jutumärk","soon with rightwards arrow above":"SOON ülemise paremnoolega","Special characters":"Erimärgid","Spesmilo sign":"Spesmilomärk","Square root":"Ruutjuur","Tenge sign":"Tengemärk","There exists":"Leidub","Tilde operator":"Tildesisestaja","top with upwards arrow above":"TOP ülemise ülesnoolega","Trade mark sign":"Kaubamärgikujutis","Tugrik sign":"Tugrikumärk","Turkish lira sign":"Türgi liiri märk","Two dot leader":"Kahetäpiline punktiir",Union:"Ühend","up down arrow with base":"üles-alla nool aluskriipsuga","upwards arrow to bar":"kriipsu suunatud ülesnool","upwards dashed arrow":"katkendnool üles","upwards double arrow":"topeltnool üles","upwards simple arrow":"ülespoole suunatud lihtne nool","Vulgar fraction one half":"Harilik murd üks kahendik","Vulgar fraction one quarter":"Harilik murd üks neljandik","Vulgar fraction three quarters":"Harilik murd kolm neljandikku","Won sign":"Vonnimärk","Yen sign":"Jeenimärk"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/special-characters/translations/fa.js b/core/assets/vendor/ckeditor5/special-characters/translations/fa.js
index 8b61c2b29c..ba852dca3a 100644
--- a/core/assets/vendor/ckeditor5/special-characters/translations/fa.js
+++ b/core/assets/vendor/ckeditor5/special-characters/translations/fa.js
@@ -1 +1 @@
-!function(t){const a=t.fa=t.fa||{};a.dictionary=Object.assign(a.dictionary||{},{"Almost equal to":"",Angle:"","Approximately equal to":"","Asterisk operator":"","Austral sign":"","back with leftwards arrow above":"","Bitcoin sign":"","Cedi sign":"","Cent sign":"","Character categories":"","Colon sign":"","Contains as member":"","Copyright sign":"","Cruzeiro sign":"","Currency sign":"","Degree sign":"","Division sign":"","Dollar sign":"","Dong sign":"","Double dagger":"","Double exclamation mark":"","Double low-9 quotation mark":"","Double question mark":"","downwards arrow to bar":"","downwards dashed arrow":"","downwards double arrow":"downwards double arrow","Drachma sign":"","Element of":"","Em dash":"","Empty set":"","En dash":"","end with leftwards arrow above":"","Euro sign":"","Euro-currency sign":"","Exclamation question mark":"","For all":"","Fraction slash":"","French franc sign":"","German penny sign":"","Greater-than or equal to":"","Greater-than sign":"","Guarani sign":"","Horizontal ellipsis":"","Hryvnia sign":"","Identical to":"","Indian rupee sign":"",Infinity:"",Integral:"",Intersection:"","Inverted exclamation mark":"","Inverted question mark":"","Kip sign":"","Latin capital letter a with breve":"","Latin capital letter a with macron":"","Latin capital letter a with ogonek":"","Latin capital letter c with acute":"","Latin capital letter c with caron":"","Latin capital letter c with circumflex":"","Latin capital letter c with dot above":"","Latin capital letter d with caron":"","Latin capital letter d with stroke":"","Latin capital letter e with breve":"","Latin capital letter e with caron":"","Latin capital letter e with dot above":"","Latin capital letter e with macron":"","Latin capital letter e with ogonek":"","Latin capital letter eng":"","Latin capital letter g with breve":"","Latin capital letter g with cedilla":"","Latin capital letter g with circumflex":"","Latin capital letter g with dot above":"","Latin capital letter h with circumflex":"","Latin capital letter h with stroke":"","Latin capital letter i with breve":"","Latin capital letter i with dot above":"","Latin capital letter i with macron":"","Latin capital letter i with ogonek":"","Latin capital letter i with tilde":"","Latin capital letter j with circumflex":"","Latin capital letter k with cedilla":"","Latin capital letter l with acute":"","Latin capital letter l with caron":"","Latin capital letter l with cedilla":"","Latin capital letter l with middle dot":"","Latin capital letter l with stroke":"","Latin capital letter n with acute":"","Latin capital letter n with caron":"","Latin capital letter n with cedilla":"","Latin capital letter o with breve":"","Latin capital letter o with double acute":"","Latin capital letter o with macron":"","Latin capital letter r with acute":"","Latin capital letter r with caron":"","Latin capital letter r with cedilla":"","Latin capital letter s with acute":"","Latin capital letter s with caron":"","Latin capital letter s with cedilla":"","Latin capital letter s with circumflex":"","Latin capital letter t with caron":"","Latin capital letter t with cedilla":"","Latin capital letter t with stroke":"","Latin capital letter u with breve":"","Latin capital letter u with double acute":"","Latin capital letter u with macron":"","Latin capital letter u with ogonek":"","Latin capital letter u with ring above":"","Latin capital letter u with tilde":"","Latin capital letter w with circumflex":"","Latin capital letter y with circumflex":"","Latin capital letter y with diaeresis":"","Latin capital letter z with acute":"","Latin capital letter z with caron":"","Latin capital letter z with dot above":"","Latin capital ligature ij":"","Latin capital ligature oe":"","Latin small letter a with breve":"","Latin small letter a with macron":"","Latin small letter a with ogonek":"","Latin small letter c with acute":"","Latin small letter c with caron":"","Latin small letter c with circumflex":"","Latin small letter c with dot above":"","Latin small letter d with caron":"","Latin small letter d with stroke":"","Latin small letter dotless i":"","Latin small letter e with breve":"","Latin small letter e with caron":"","Latin small letter e with dot above":"","Latin small letter e with macron":"","Latin small letter e with ogonek":"","Latin small letter eng":"","Latin small letter f with hook":"","Latin small letter g with breve":"","Latin small letter g with cedilla":"","Latin small letter g with circumflex":"","Latin small letter g with dot above":"","Latin small letter h with circumflex":"","Latin small letter h with stroke":"","Latin small letter i with breve":"","Latin small letter i with macron":"","Latin small letter i with ogonek":"","Latin small letter i with tilde":"","Latin small letter j with circumflex":"","Latin small letter k with cedilla":"","Latin small letter kra":"","Latin small letter l with acute":"","Latin small letter l with caron":"","Latin small letter l with cedilla":"","Latin small letter l with middle dot":"","Latin small letter l with stroke":"","Latin small letter long s":"","Latin small letter n preceded by apostrophe":"","Latin small letter n with acute":"","Latin small letter n with caron":"","Latin small letter n with cedilla":"","Latin small letter o with breve":"","Latin small letter o with double acute":"","Latin small letter o with macron":"","Latin small letter r with acute":"","Latin small letter r with caron":"","Latin small letter r with cedilla":"","Latin small letter s with acute":"","Latin small letter s with caron":"","Latin small letter s with cedilla":"","Latin small letter s with circumflex":"","Latin small letter t with caron":"","Latin small letter t with cedilla":"","Latin small letter t with stroke":"","Latin small letter u with breve":"","Latin small letter u with double acute":"","Latin small letter u with macron":"","Latin small letter u with ogonek":"","Latin small letter u with ring above":"","Latin small letter u with tilde":"","Latin small letter w with circumflex":"","Latin small letter y with circumflex":"","Latin small letter z with acute":"","Latin small letter z with caron":"","Latin small letter z with dot above":"","Latin small ligature ij":"","Latin small ligature oe":"","Left double quotation mark":"","Left single quotation mark":"","Left-pointing double angle quotation mark":"","leftwards arrow to bar":"","leftwards dashed arrow":"leftwards dashed arrow","leftwards double arrow":"پیکان دوتایی چپ","Less-than or equal to":"","Less-than sign":"","Lira sign":"","Livre tournois sign":"","Logical and":"","Logical or":"",Macron:"","Manat sign":"","Mill sign":"","Minus sign":"","Multiplication sign":"","N-ary product":"","N-ary summation":"",Nabla:"","Naira sign":"","New sheqel sign":"","Nordic mark sign":"","Not an element of":"","Not equal to":"","Not sign":"","on with exclamation mark with left right arrow above":"",Overline:"","Paragraph sign":"","Partial differential":"","Per mille sign":"","Per ten thousand sign":"","Peseta sign":"","Peso sign":"","Plus-minus sign":"","Pound sign":"","Proportional to":"","Question exclamation mark":"","Registered sign":"","Reversed paragraph sign":"","Right double quotation mark":"","Right single quotation mark":"","Right-pointing double angle quotation mark":"","rightwards arrow to bar":"","rightwards dashed arrow":"","rightwards double arrow":"","Ruble sign":"","Rupee sign":"","Section sign":"","Single left-pointing angle quotation mark":"","Single low-9 quotation mark":"","Single right-pointing angle quotation mark":"","soon with rightwards arrow above":"","Special characters":"کاراکترهای ویژه","Spesmilo sign":"","Square root":"","Tenge sign":"","There exists":"","Tilde operator":"","top with upwards arrow above":"","Trade mark sign":"","Tugrik sign":"","Turkish lira sign":"","Two dot leader":"",Union:"","up down arrow with base":"","upwards arrow to bar":"","upwards dashed arrow":"","upwards double arrow":"","Vulgar fraction one half":"","Vulgar fraction one quarter":"","Vulgar fraction three quarters":"","Won sign":"","Yen sign":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(t){const a=t.fa=t.fa||{};a.dictionary=Object.assign(a.dictionary||{},{"Almost equal to":"",Angle:"","Approximately equal to":"","Asterisk operator":"","Austral sign":"","back with leftwards arrow above":"","Bitcoin sign":"","Cedi sign":"","Cent sign":"","Character categories":"","Colon sign":"","Contains as member":"","Copyright sign":"","Cruzeiro sign":"","Currency sign":"","Degree sign":"","Division sign":"","Dollar sign":"","Dong sign":"","Double dagger":"","Double exclamation mark":"","Double low-9 quotation mark":"","Double question mark":"","downwards arrow to bar":"","downwards dashed arrow":"","downwards double arrow":"downwards double arrow","downwards simple arrow":"","Drachma sign":"","Element of":"","Em dash":"","Empty set":"","En dash":"","end with leftwards arrow above":"","Euro sign":"","Euro-currency sign":"","Exclamation question mark":"","For all":"","Fraction slash":"","French franc sign":"","German penny sign":"","Greater-than or equal to":"","Greater-than sign":"","Guarani sign":"","Horizontal ellipsis":"","Hryvnia sign":"","Identical to":"","Indian rupee sign":"",Infinity:"",Integral:"",Intersection:"","Inverted exclamation mark":"","Inverted question mark":"","Kip sign":"","Latin capital letter a with breve":"","Latin capital letter a with macron":"","Latin capital letter a with ogonek":"","Latin capital letter c with acute":"","Latin capital letter c with caron":"","Latin capital letter c with circumflex":"","Latin capital letter c with dot above":"","Latin capital letter d with caron":"","Latin capital letter d with stroke":"","Latin capital letter e with breve":"","Latin capital letter e with caron":"","Latin capital letter e with dot above":"","Latin capital letter e with macron":"","Latin capital letter e with ogonek":"","Latin capital letter eng":"","Latin capital letter g with breve":"","Latin capital letter g with cedilla":"","Latin capital letter g with circumflex":"","Latin capital letter g with dot above":"","Latin capital letter h with circumflex":"","Latin capital letter h with stroke":"","Latin capital letter i with breve":"","Latin capital letter i with dot above":"","Latin capital letter i with macron":"","Latin capital letter i with ogonek":"","Latin capital letter i with tilde":"","Latin capital letter j with circumflex":"","Latin capital letter k with cedilla":"","Latin capital letter l with acute":"","Latin capital letter l with caron":"","Latin capital letter l with cedilla":"","Latin capital letter l with middle dot":"","Latin capital letter l with stroke":"","Latin capital letter n with acute":"","Latin capital letter n with caron":"","Latin capital letter n with cedilla":"","Latin capital letter o with breve":"","Latin capital letter o with double acute":"","Latin capital letter o with macron":"","Latin capital letter r with acute":"","Latin capital letter r with caron":"","Latin capital letter r with cedilla":"","Latin capital letter s with acute":"","Latin capital letter s with caron":"","Latin capital letter s with cedilla":"","Latin capital letter s with circumflex":"","Latin capital letter t with caron":"","Latin capital letter t with cedilla":"","Latin capital letter t with stroke":"","Latin capital letter u with breve":"","Latin capital letter u with double acute":"","Latin capital letter u with macron":"","Latin capital letter u with ogonek":"","Latin capital letter u with ring above":"","Latin capital letter u with tilde":"","Latin capital letter w with circumflex":"","Latin capital letter y with circumflex":"","Latin capital letter y with diaeresis":"","Latin capital letter z with acute":"","Latin capital letter z with caron":"","Latin capital letter z with dot above":"","Latin capital ligature ij":"","Latin capital ligature oe":"","Latin small letter a with breve":"","Latin small letter a with macron":"","Latin small letter a with ogonek":"","Latin small letter c with acute":"","Latin small letter c with caron":"","Latin small letter c with circumflex":"","Latin small letter c with dot above":"","Latin small letter d with caron":"","Latin small letter d with stroke":"","Latin small letter dotless i":"","Latin small letter e with breve":"","Latin small letter e with caron":"","Latin small letter e with dot above":"","Latin small letter e with macron":"","Latin small letter e with ogonek":"","Latin small letter eng":"","Latin small letter f with hook":"","Latin small letter g with breve":"","Latin small letter g with cedilla":"","Latin small letter g with circumflex":"","Latin small letter g with dot above":"","Latin small letter h with circumflex":"","Latin small letter h with stroke":"","Latin small letter i with breve":"","Latin small letter i with macron":"","Latin small letter i with ogonek":"","Latin small letter i with tilde":"","Latin small letter j with circumflex":"","Latin small letter k with cedilla":"","Latin small letter kra":"","Latin small letter l with acute":"","Latin small letter l with caron":"","Latin small letter l with cedilla":"","Latin small letter l with middle dot":"","Latin small letter l with stroke":"","Latin small letter long s":"","Latin small letter n preceded by apostrophe":"","Latin small letter n with acute":"","Latin small letter n with caron":"","Latin small letter n with cedilla":"","Latin small letter o with breve":"","Latin small letter o with double acute":"","Latin small letter o with macron":"","Latin small letter r with acute":"","Latin small letter r with caron":"","Latin small letter r with cedilla":"","Latin small letter s with acute":"","Latin small letter s with caron":"","Latin small letter s with cedilla":"","Latin small letter s with circumflex":"","Latin small letter t with caron":"","Latin small letter t with cedilla":"","Latin small letter t with stroke":"","Latin small letter u with breve":"","Latin small letter u with double acute":"","Latin small letter u with macron":"","Latin small letter u with ogonek":"","Latin small letter u with ring above":"","Latin small letter u with tilde":"","Latin small letter w with circumflex":"","Latin small letter y with circumflex":"","Latin small letter z with acute":"","Latin small letter z with caron":"","Latin small letter z with dot above":"","Latin small ligature ij":"","Latin small ligature oe":"","Left double quotation mark":"","Left single quotation mark":"","Left-pointing double angle quotation mark":"","leftwards arrow to bar":"","leftwards dashed arrow":"leftwards dashed arrow","leftwards double arrow":"پیکان دوتایی چپ","leftwards simple arrow":"","Less-than or equal to":"","Less-than sign":"","Lira sign":"","Livre tournois sign":"","Logical and":"","Logical or":"",Macron:"","Manat sign":"","Mill sign":"","Minus sign":"","Multiplication sign":"","N-ary product":"","N-ary summation":"",Nabla:"","Naira sign":"","New sheqel sign":"","Nordic mark sign":"","Not an element of":"","Not equal to":"","Not sign":"","on with exclamation mark with left right arrow above":"",Overline:"","Paragraph sign":"","Partial differential":"","Per mille sign":"","Per ten thousand sign":"","Peseta sign":"","Peso sign":"","Plus-minus sign":"","Pound sign":"","Proportional to":"","Question exclamation mark":"","Registered sign":"","Reversed paragraph sign":"","Right double quotation mark":"","Right single quotation mark":"","Right-pointing double angle quotation mark":"","rightwards arrow to bar":"","rightwards dashed arrow":"","rightwards double arrow":"","rightwards simple arrow":"","Ruble sign":"","Rupee sign":"","Section sign":"","Single left-pointing angle quotation mark":"","Single low-9 quotation mark":"","Single right-pointing angle quotation mark":"","soon with rightwards arrow above":"","Special characters":"کاراکترهای ویژه","Spesmilo sign":"","Square root":"","Tenge sign":"","There exists":"","Tilde operator":"","top with upwards arrow above":"","Trade mark sign":"","Tugrik sign":"","Turkish lira sign":"","Two dot leader":"",Union:"","up down arrow with base":"","upwards arrow to bar":"","upwards dashed arrow":"","upwards double arrow":"","upwards simple arrow":"","Vulgar fraction one half":"","Vulgar fraction one quarter":"","Vulgar fraction three quarters":"","Won sign":"","Yen sign":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/special-characters/translations/fi.js b/core/assets/vendor/ckeditor5/special-characters/translations/fi.js
index 32f6db7d5c..81a2a1db4c 100644
--- a/core/assets/vendor/ckeditor5/special-characters/translations/fi.js
+++ b/core/assets/vendor/ckeditor5/special-characters/translations/fi.js
@@ -1 +1 @@
-!function(a){const i=a.fi=a.fi||{};i.dictionary=Object.assign(i.dictionary||{},{"Almost equal to":"Likimain yhtä suuri kuin -merkki",Angle:"Kulma","Approximately equal to":"Suunnilleen yhtä suuri kuin -merkki","Asterisk operator":"Asteriskioperaattori","Austral sign":"Australin merkki","back with leftwards arrow above":"BACK-nuoli","Bitcoin sign":"Bitcoinin merkki","Cedi sign":"Cedin merkki","Cent sign":"Sentin merkki","Character categories":"Merkkiluokat","Colon sign":"Colónin merkki","Contains as member":"Käänteisen joukkoon kuulumisen merkki","Copyright sign":"Tekijänoikeusmerkki","Cruzeiro sign":"Cruzeiron merkki","Currency sign":"Valuuttamerkki","Degree sign":"Asteen merkki","Division sign":"Jakomerkki","Dollar sign":"Dollarin merkki","Dong sign":"Dongin merkki","Double dagger":"Kaksoisristi","Double exclamation mark":"Kaksoishuutomerkki","Double low-9 quotation mark":"Rivinalinen kokolainausmerkki","Double question mark":"Kaksoiskysymysmerkki","downwards arrow to bar":"nuoli alas perusviivalla","downwards dashed arrow":"pisteviivanuoli alas","downwards double arrow":"kaksoisnuoli alas","Drachma sign":"Drakman merkki","Element of":"Joukkoon kuulumisen merkki","Em dash":"M-viiva","Empty set":"Tyhjän joukon merkki","En dash":"N-viiva","end with leftwards arrow above":"END-nuoli","Euro sign":"Euron merkki","Euro-currency sign":"Eurovaluutan merkki","Exclamation question mark":"Huutomerkki ja kysymysmerkki","For all":"Kaikkikvanttori","Fraction slash":"Murtoluvun vinoviiva","French franc sign":"Ranskan frangin merkki","German penny sign":"Saksan pfennigin merkki","Greater-than or equal to":"Suurempi tai yhtä suuri kuin -merkki","Greater-than sign":"Suurempi kuin -merkki","Guarani sign":"Guaranin merkki","Horizontal ellipsis":"Kolme pistettä vaakasuunnassa","Hryvnia sign":"Hryvnian merkki","Identical to":"Identtisesti yhtä suuri merkki -kuin","Indian rupee sign":"Intian rupian merkki",Infinity:"Äärettömän merkki",Integral:"Integraalimerkki",Intersection:"Leikkauksen merkki","Inverted exclamation mark":"Ylösalainen huutomerkki","Inverted question mark":"Ylösalainen kysymysmerkki","Kip sign":"Kipin merkki","Latin capital letter a with breve":"Latinalainen suuraakkonen a ja lyhyysmerkki","Latin capital letter a with macron":"Latinalainen suuraakkonen a ja pituusmerkki","Latin capital letter a with ogonek":"Latinalainen suuraakkonen a ja ogonek","Latin capital letter c with acute":"Latinalainen suuraakkonen c ja akuutti","Latin capital letter c with caron":"Latinalainen suuraakkonen c ja hattu","Latin capital letter c with circumflex":"Latinalainen suuraakkonen c ja sirkumfleksi","Latin capital letter c with dot above":"Latinalainen suuraakkonen c ja yläpuolinen piste","Latin capital letter d with caron":"Latinalainen suuraakkonen d ja hattu","Latin capital letter d with stroke":"Latinalainen suuraakkonen d ja poikkiviiva","Latin capital letter e with breve":"Latinalainen suuraakkonen e ja lyhyysmerkki","Latin capital letter e with caron":"Latinalainen suuraakkonen e ja hattu","Latin capital letter e with dot above":"Latinalainen suuraakkonen e ja yläpuolinen piste","Latin capital letter e with macron":"Latinalainen suuraakkonen e ja pituusmerkki","Latin capital letter e with ogonek":"Latinalainen suuraakkonen e ja ogonek","Latin capital letter eng":"Latinalainen suuraakkonen äng","Latin capital letter g with breve":"Latinalainen suuraakkonen g ja lyhyysmerkki","Latin capital letter g with cedilla":"Latinalainen suuraakkonen g ja sedilji","Latin capital letter g with circumflex":"Latinalainen suuraakkonen g ja sirkumfleksi","Latin capital letter g with dot above":"Latinalainen suuraakkonen g ja yläpuolinen piste","Latin capital letter h with circumflex":"Latinalainen suuraakkonen h ja sirkumfleksi","Latin capital letter h with stroke":"Latinalainen suuraakkonen h ja poikkiviiva","Latin capital letter i with breve":"Latinalainen suuraakkonen i ja lyhyysmerkki","Latin capital letter i with dot above":"Latinalainen suuraakkonen i ja yläpuolinen piste","Latin capital letter i with macron":"Latinalainen suuraakkonen i ja pituusmerkki","Latin capital letter i with ogonek":"Latinalainen suuraakkonen i ja ogonek","Latin capital letter i with tilde":"Latinalainen suuraakkonen i ja tilde","Latin capital letter j with circumflex":"Latinalainen suuraakkonen j ja sirkumfleksi","Latin capital letter k with cedilla":"Latinalainen suuraakkonen k ja sedilji","Latin capital letter l with acute":"Latinalainen suuraakkonen l ja akuutti","Latin capital letter l with caron":"Latinalainen suuraakkonen l ja hattu","Latin capital letter l with cedilla":"Latinalainen suuraakkonen l ja sedilji","Latin capital letter l with middle dot":"Latinalainen suuraakkonen l ja piste keskellä","Latin capital letter l with stroke":"Latinalainen suuraakkonen l ja poikkiviiva","Latin capital letter n with acute":"Latinalainen suuraakkonen n ja akuutti","Latin capital letter n with caron":"Latinalainen suuraakkonen n ja hattu","Latin capital letter n with cedilla":"Latinalainen suuraakkonen n ja sedilji","Latin capital letter o with breve":"Latinalainen suuraakkonen o ja lyhyysmerkki","Latin capital letter o with double acute":"Latinalainen suuraakkonen o ja kaksoisakuutti","Latin capital letter o with macron":"Latinalainen suuraakkonen o ja pituusmerkki","Latin capital letter r with acute":"Latinalainen suuraakkonen r ja akuutti","Latin capital letter r with caron":"Latinalainen suuraakkonen r ja hattu","Latin capital letter r with cedilla":"Latinalainen suuraakkonen r ja sedilji","Latin capital letter s with acute":"Latinalainen suuraakkonen s ja akuutti","Latin capital letter s with caron":"Latinalainen suuraakkonen s ja hattu","Latin capital letter s with cedilla":"Latinalainen suuraakkonen s ja sedilji","Latin capital letter s with circumflex":"Latinalainen suuraakkonen s ja sirkumfleksi","Latin capital letter t with caron":"Latinalainen suuraakkonen t ja hattu","Latin capital letter t with cedilla":"Latinalainen suuraakkonen t ja sedilji","Latin capital letter t with stroke":"Latinalainen suuraakkonen t ja poikkiviiva","Latin capital letter u with breve":"Latinalainen suuraakkonen u ja lyhyysmerkki","Latin capital letter u with double acute":"Latinalainen suuraakkonen u ja kaksoisakuutti","Latin capital letter u with macron":"Latinalainen suuraakkonen u ja pituusmerkki","Latin capital letter u with ogonek":"Latinalainen suuraakkonen u ja ogonek","Latin capital letter u with ring above":"Latinalainen suuraakkonen u ja yläpuolinen ympyrä","Latin capital letter u with tilde":"Latinalainen suuraakkonen u ja tilde","Latin capital letter w with circumflex":"Latinalainen suuraakkonen w ja sirkumfleksi","Latin capital letter y with circumflex":"Latinalainen suuraakkonen y ja sirkumfleksi","Latin capital letter y with diaeresis":"Latinalainen suuraakkonen y ja treema","Latin capital letter z with acute":"Latinalainen suuraakkonen z ja akuutti","Latin capital letter z with caron":"Latinalainen suuraakkonen z ja hattu","Latin capital letter z with dot above":"Latinalainen suuraakkonen z ja yläpuolinen piste","Latin capital ligature ij":"Latinalainen suuraakkosligatuuri ij","Latin capital ligature oe":"Latinalainen suuraakkosligatuuri oe","Latin small letter a with breve":"Latinalainen pienaakkonen a ja lyhyysmerkki","Latin small letter a with macron":"Latinalainen pienaakkonen a ja pituusmerkki","Latin small letter a with ogonek":"Latinalainen pienaakkonen a ja ogonek","Latin small letter c with acute":"Latinalainen pienaakkonen c ja akuutti","Latin small letter c with caron":"Latinalainen pienaakkonen c ja hattu","Latin small letter c with circumflex":"Latinalainen pienaakkonen c ja sirkumfleksi","Latin small letter c with dot above":"Latinalainen pienaakkonen c ja yläpuolinen piste","Latin small letter d with caron":"Latinalainen pienaakkonen d ja hattu","Latin small letter d with stroke":"Latinalainen pienaakkonen d ja poikkiviiva","Latin small letter dotless i":"Latinalainen pienaakkonen pisteetön i","Latin small letter e with breve":"Latinalainen pienaakkonen e ja lyhyysmerkki","Latin small letter e with caron":"Latinalainen pienaakkonen e ja hattu","Latin small letter e with dot above":"Latinalainen pienaakkonen e ja yläpuolinen piste","Latin small letter e with macron":"Latinalainen pienaakkonen e ja pituusmerkki","Latin small letter e with ogonek":"Latinalainen pienaakkonen e ja ogonek","Latin small letter eng":"Latinalainen pienaakkonen äng","Latin small letter f with hook":"Latinalainen pienaakkonen f jossa koukku","Latin small letter g with breve":"Latinalainen pienaakkonen g ja lyhyysmerkki","Latin small letter g with cedilla":"Latinalainen pienaakkonen g ja sedilji","Latin small letter g with circumflex":"Latinalainen pienaakkonen g ja sirkumfleksi","Latin small letter g with dot above":"Latinalainen pienaakkonen g ja yläpuolinen piste","Latin small letter h with circumflex":"Latinalainen pienaakkonen h ja sirkumfleksi","Latin small letter h with stroke":"Latinalainen pienaakkonen h ja poikkiviiva","Latin small letter i with breve":"Latinalainen pienaakkonen i ja lyhyysmerkki","Latin small letter i with macron":"Latinalainen pienaakkonen i ja pituusmerkki","Latin small letter i with ogonek":"Latinalainen pienaakkonen i ja ogonek","Latin small letter i with tilde":"Latinalainen pienaakkonen i ja tilde","Latin small letter j with circumflex":"Latinalainen pienaakkonen j ja sirkumfleksi","Latin small letter k with cedilla":"Latinalainen pienaakkonen k ja sedilji","Latin small letter kra":"Latinalainen pienaakkonen kra","Latin small letter l with acute":"Latinalainen pienaakkonen l ja akuutti","Latin small letter l with caron":"Latinalainen pienaakkonen l ja hattu","Latin small letter l with cedilla":"Latinalainen pienaakkonen l ja sedilji","Latin small letter l with middle dot":"Latinalainen pienaakkonen l ja piste keskellä","Latin small letter l with stroke":"Latinalainen pienaakkonen l ja poikkiviiva","Latin small letter long s":"Latinalainen pienaakkonen pitkä s","Latin small letter n preceded by apostrophe":"Latinalainen pienaakkonen n jota edeltää heittomerkki","Latin small letter n with acute":"Latinalainen pienaakkonen n ja akuutti","Latin small letter n with caron":"Latinalainen pienaakkonen n ja hattu","Latin small letter n with cedilla":"Latinalainen pienaakkonen n ja sedilji","Latin small letter o with breve":"Latinalainen pienaakkonen o ja lyhyysmerkki","Latin small letter o with double acute":"Latinalainen pienaakkonen o ja kaksoisakuutti","Latin small letter o with macron":"Latinalainen pienaakkonen o ja pituusmerkki","Latin small letter r with acute":"Latinalainen pienaakkonen r ja akuutti","Latin small letter r with caron":"Latinalainen pienaakkonen r ja hattu","Latin small letter r with cedilla":"Latinalainen pienaakkonen r ja sedilji","Latin small letter s with acute":"Latinalainen pienaakkonen s ja akuutti","Latin small letter s with caron":"Latinalainen pienaakkonen s ja hattu","Latin small letter s with cedilla":"Latinalainen pienaakkonen s ja sedilji","Latin small letter s with circumflex":"Latinalainen pienaakkonen s ja sirkumfleksi","Latin small letter t with caron":"Latinalainen pienaakkonen t ja hattu","Latin small letter t with cedilla":"Latinalainen pienaakkonen t ja sedilji","Latin small letter t with stroke":"Latinalainen pienaakkonen t ja poikkiviiva","Latin small letter u with breve":"Latinalainen pienaakkonen u ja lyhyysmerkki","Latin small letter u with double acute":"Latinalainen pienaakkonen u ja kaksoisakuutti","Latin small letter u with macron":"Latinalainen pienaakkonen u ja pituusmerkki","Latin small letter u with ogonek":"Latinalainen pienaakkonen u ja ogonek","Latin small letter u with ring above":"Latinalainen pienaakkonen u ja yläpuolinen ympyrä","Latin small letter u with tilde":"Latinalainen pienaakkonen u ja tilde","Latin small letter w with circumflex":"Latinalainen pienaakkonen w ja sirkumfleksi","Latin small letter y with circumflex":"Latinalainen pienaakkonen y ja sirkumfleksi","Latin small letter z with acute":"Latinalainen pienaakkonen z ja akuutti","Latin small letter z with caron":"Latinalainen pienaakkonen z ja hattu","Latin small letter z with dot above":"Latinalainen pienaakkonen z ja yläpuolinen piste","Latin small ligature ij":"Latinalainen pienaakkosligatuuri ij","Latin small ligature oe":"Latinalainen pienaakkosligatuuri oe","Left double quotation mark":"Ylösalainen kokolainausmerkki","Left single quotation mark":"Ylösalainen puolilainausmerkki","Left-pointing double angle quotation mark":"Vasemmalle osoittava kaksinkertainen kulmalainausmerkki","leftwards arrow to bar":"nuoli vasemmalle perusviivalla","leftwards dashed arrow":"pisteviivanuoli vasemmalle","leftwards double arrow":"kaksoisnuoli vasemmalle","Less-than or equal to":"Pienempi tai yhtä suuri kuin -merkki","Less-than sign":"Pienempi kuin -merkki","Lira sign":"Liiran merkki","Livre tournois sign":"Livre tournois’n merkki","Logical and":"Looginen ja-merkki","Logical or":"Looginen tai-merkki",Macron:"Pituusmerkki","Manat sign":"Manatin merkki","Mill sign":"Valuutan tuhannesosan merkki","Minus sign":"Miinusmerkki","Multiplication sign":"Kertomerkki","N-ary product":"Tulo","N-ary summation":"Summa",Nabla:"Nablan merkki","Naira sign":"Nairan merkki","New sheqel sign":"Uuden sekelin merkki","Nordic mark sign":"Riikintaalerin merkki","Not an element of":"Joukkoon kuulumattomuuden merkki","Not equal to":"Eri suuri kuin -merkki","Not sign":"Negaation merkki","on with exclamation mark with left right arrow above":"ON!-nuoli",Overline:"Yläviiva","Paragraph sign":"Kappaleen merkki","Partial differential":"Osittaisderivaatta","Per mille sign":"Promillemerkki","Per ten thousand sign":"Peruspisteen merkki","Peseta sign":"Pesetan merkki","Peso sign":"Peson merkki","Plus-minus sign":"Plus-miinus-merkki","Pound sign":"Punnan merkki","Proportional to":"Suhteellisuuden merkki","Question exclamation mark":"Kysymysmerkki ja huutomerkki","Registered sign":"Rekisteröidyn tavaramerkin merkki","Reversed paragraph sign":"Käännetty kappaleen merkki","Right double quotation mark":"Kokolainausmerkki","Right single quotation mark":"Puolilainausmerkki","Right-pointing double angle quotation mark":"Oikealle osoittava kaksinkertainen kulmalainausmerkki","rightwards arrow to bar":"nuoli oikealle perusviivalla","rightwards dashed arrow":"pisteviivanuoli oikealle","rightwards double arrow":"kaksoisnuoli oikealle","Ruble sign":"Ruplan merkki","Rupee sign":"Rupian merkki","Section sign":"Pykälämerkki","Single left-pointing angle quotation mark":"Vasemmalle osoittava kulmapuolilainausmerkki","Single low-9 quotation mark":"Rivinalinen puolilainausmerkki","Single right-pointing angle quotation mark":"Oikealle osoittava kulmapuolilainausmerkki","soon with rightwards arrow above":"SOON-nuoli","Special characters":"Erikoismerkit","Spesmilo sign":"Spesmilon merkki","Square root":"Neliöjuuri","Tenge sign":"Tengen merkki","There exists":"Olemassaolokvanttori","Tilde operator":"Tildeoperaattori","top with upwards arrow above":"TOP-nuoli","Trade mark sign":"Tavaramerkin merkki","Tugrik sign":"Tugrikin merkki","Turkish lira sign":"Turkin liiran merkki","Two dot leader":"Kaksi täytemerkkiä",Union:"Yhdisteen merkki","up down arrow with base":"nuoli ylös ja alas perusviivalla","upwards arrow to bar":"nuoli ylös perusviivalla","upwards dashed arrow":"pisteviivanuoli ylös","upwards double arrow":"kaksoisnuoli ylös","Vulgar fraction one half":"Puolikkaan merkki","Vulgar fraction one quarter":"Neljäsosan merkki","Vulgar fraction three quarters":"Kolmen neljäsosan merkki","Won sign":"Wonin merkki","Yen sign":"Jenin merkki"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(a){const i=a.fi=a.fi||{};i.dictionary=Object.assign(i.dictionary||{},{"Almost equal to":"Likimain yhtä suuri kuin -merkki",Angle:"Kulma","Approximately equal to":"Suunnilleen yhtä suuri kuin -merkki","Asterisk operator":"Asteriskioperaattori","Austral sign":"Australin merkki","back with leftwards arrow above":"BACK-nuoli","Bitcoin sign":"Bitcoinin merkki","Cedi sign":"Cedin merkki","Cent sign":"Sentin merkki","Character categories":"Merkkiluokat","Colon sign":"Colónin merkki","Contains as member":"Käänteisen joukkoon kuulumisen merkki","Copyright sign":"Tekijänoikeusmerkki","Cruzeiro sign":"Cruzeiron merkki","Currency sign":"Valuuttamerkki","Degree sign":"Asteen merkki","Division sign":"Jakomerkki","Dollar sign":"Dollarin merkki","Dong sign":"Dongin merkki","Double dagger":"Kaksoisristi","Double exclamation mark":"Kaksoishuutomerkki","Double low-9 quotation mark":"Rivinalinen kokolainausmerkki","Double question mark":"Kaksoiskysymysmerkki","downwards arrow to bar":"nuoli alas perusviivalla","downwards dashed arrow":"pisteviivanuoli alas","downwards double arrow":"kaksoisnuoli alas","downwards simple arrow":"yksinkertainen nuoli alas","Drachma sign":"Drakman merkki","Element of":"Joukkoon kuulumisen merkki","Em dash":"M-viiva","Empty set":"Tyhjän joukon merkki","En dash":"N-viiva","end with leftwards arrow above":"END-nuoli","Euro sign":"Euron merkki","Euro-currency sign":"Eurovaluutan merkki","Exclamation question mark":"Huutomerkki ja kysymysmerkki","For all":"Kaikkikvanttori","Fraction slash":"Murtoluvun vinoviiva","French franc sign":"Ranskan frangin merkki","German penny sign":"Saksan pfennigin merkki","Greater-than or equal to":"Suurempi tai yhtä suuri kuin -merkki","Greater-than sign":"Suurempi kuin -merkki","Guarani sign":"Guaranin merkki","Horizontal ellipsis":"Kolme pistettä vaakasuunnassa","Hryvnia sign":"Hryvnian merkki","Identical to":"Identtisesti yhtä suuri merkki -kuin","Indian rupee sign":"Intian rupian merkki",Infinity:"Äärettömän merkki",Integral:"Integraalimerkki",Intersection:"Leikkauksen merkki","Inverted exclamation mark":"Ylösalainen huutomerkki","Inverted question mark":"Ylösalainen kysymysmerkki","Kip sign":"Kipin merkki","Latin capital letter a with breve":"Latinalainen suuraakkonen a ja lyhyysmerkki","Latin capital letter a with macron":"Latinalainen suuraakkonen a ja pituusmerkki","Latin capital letter a with ogonek":"Latinalainen suuraakkonen a ja ogonek","Latin capital letter c with acute":"Latinalainen suuraakkonen c ja akuutti","Latin capital letter c with caron":"Latinalainen suuraakkonen c ja hattu","Latin capital letter c with circumflex":"Latinalainen suuraakkonen c ja sirkumfleksi","Latin capital letter c with dot above":"Latinalainen suuraakkonen c ja yläpuolinen piste","Latin capital letter d with caron":"Latinalainen suuraakkonen d ja hattu","Latin capital letter d with stroke":"Latinalainen suuraakkonen d ja poikkiviiva","Latin capital letter e with breve":"Latinalainen suuraakkonen e ja lyhyysmerkki","Latin capital letter e with caron":"Latinalainen suuraakkonen e ja hattu","Latin capital letter e with dot above":"Latinalainen suuraakkonen e ja yläpuolinen piste","Latin capital letter e with macron":"Latinalainen suuraakkonen e ja pituusmerkki","Latin capital letter e with ogonek":"Latinalainen suuraakkonen e ja ogonek","Latin capital letter eng":"Latinalainen suuraakkonen äng","Latin capital letter g with breve":"Latinalainen suuraakkonen g ja lyhyysmerkki","Latin capital letter g with cedilla":"Latinalainen suuraakkonen g ja sedilji","Latin capital letter g with circumflex":"Latinalainen suuraakkonen g ja sirkumfleksi","Latin capital letter g with dot above":"Latinalainen suuraakkonen g ja yläpuolinen piste","Latin capital letter h with circumflex":"Latinalainen suuraakkonen h ja sirkumfleksi","Latin capital letter h with stroke":"Latinalainen suuraakkonen h ja poikkiviiva","Latin capital letter i with breve":"Latinalainen suuraakkonen i ja lyhyysmerkki","Latin capital letter i with dot above":"Latinalainen suuraakkonen i ja yläpuolinen piste","Latin capital letter i with macron":"Latinalainen suuraakkonen i ja pituusmerkki","Latin capital letter i with ogonek":"Latinalainen suuraakkonen i ja ogonek","Latin capital letter i with tilde":"Latinalainen suuraakkonen i ja tilde","Latin capital letter j with circumflex":"Latinalainen suuraakkonen j ja sirkumfleksi","Latin capital letter k with cedilla":"Latinalainen suuraakkonen k ja sedilji","Latin capital letter l with acute":"Latinalainen suuraakkonen l ja akuutti","Latin capital letter l with caron":"Latinalainen suuraakkonen l ja hattu","Latin capital letter l with cedilla":"Latinalainen suuraakkonen l ja sedilji","Latin capital letter l with middle dot":"Latinalainen suuraakkonen l ja piste keskellä","Latin capital letter l with stroke":"Latinalainen suuraakkonen l ja poikkiviiva","Latin capital letter n with acute":"Latinalainen suuraakkonen n ja akuutti","Latin capital letter n with caron":"Latinalainen suuraakkonen n ja hattu","Latin capital letter n with cedilla":"Latinalainen suuraakkonen n ja sedilji","Latin capital letter o with breve":"Latinalainen suuraakkonen o ja lyhyysmerkki","Latin capital letter o with double acute":"Latinalainen suuraakkonen o ja kaksoisakuutti","Latin capital letter o with macron":"Latinalainen suuraakkonen o ja pituusmerkki","Latin capital letter r with acute":"Latinalainen suuraakkonen r ja akuutti","Latin capital letter r with caron":"Latinalainen suuraakkonen r ja hattu","Latin capital letter r with cedilla":"Latinalainen suuraakkonen r ja sedilji","Latin capital letter s with acute":"Latinalainen suuraakkonen s ja akuutti","Latin capital letter s with caron":"Latinalainen suuraakkonen s ja hattu","Latin capital letter s with cedilla":"Latinalainen suuraakkonen s ja sedilji","Latin capital letter s with circumflex":"Latinalainen suuraakkonen s ja sirkumfleksi","Latin capital letter t with caron":"Latinalainen suuraakkonen t ja hattu","Latin capital letter t with cedilla":"Latinalainen suuraakkonen t ja sedilji","Latin capital letter t with stroke":"Latinalainen suuraakkonen t ja poikkiviiva","Latin capital letter u with breve":"Latinalainen suuraakkonen u ja lyhyysmerkki","Latin capital letter u with double acute":"Latinalainen suuraakkonen u ja kaksoisakuutti","Latin capital letter u with macron":"Latinalainen suuraakkonen u ja pituusmerkki","Latin capital letter u with ogonek":"Latinalainen suuraakkonen u ja ogonek","Latin capital letter u with ring above":"Latinalainen suuraakkonen u ja yläpuolinen ympyrä","Latin capital letter u with tilde":"Latinalainen suuraakkonen u ja tilde","Latin capital letter w with circumflex":"Latinalainen suuraakkonen w ja sirkumfleksi","Latin capital letter y with circumflex":"Latinalainen suuraakkonen y ja sirkumfleksi","Latin capital letter y with diaeresis":"Latinalainen suuraakkonen y ja treema","Latin capital letter z with acute":"Latinalainen suuraakkonen z ja akuutti","Latin capital letter z with caron":"Latinalainen suuraakkonen z ja hattu","Latin capital letter z with dot above":"Latinalainen suuraakkonen z ja yläpuolinen piste","Latin capital ligature ij":"Latinalainen suuraakkosligatuuri ij","Latin capital ligature oe":"Latinalainen suuraakkosligatuuri oe","Latin small letter a with breve":"Latinalainen pienaakkonen a ja lyhyysmerkki","Latin small letter a with macron":"Latinalainen pienaakkonen a ja pituusmerkki","Latin small letter a with ogonek":"Latinalainen pienaakkonen a ja ogonek","Latin small letter c with acute":"Latinalainen pienaakkonen c ja akuutti","Latin small letter c with caron":"Latinalainen pienaakkonen c ja hattu","Latin small letter c with circumflex":"Latinalainen pienaakkonen c ja sirkumfleksi","Latin small letter c with dot above":"Latinalainen pienaakkonen c ja yläpuolinen piste","Latin small letter d with caron":"Latinalainen pienaakkonen d ja hattu","Latin small letter d with stroke":"Latinalainen pienaakkonen d ja poikkiviiva","Latin small letter dotless i":"Latinalainen pienaakkonen pisteetön i","Latin small letter e with breve":"Latinalainen pienaakkonen e ja lyhyysmerkki","Latin small letter e with caron":"Latinalainen pienaakkonen e ja hattu","Latin small letter e with dot above":"Latinalainen pienaakkonen e ja yläpuolinen piste","Latin small letter e with macron":"Latinalainen pienaakkonen e ja pituusmerkki","Latin small letter e with ogonek":"Latinalainen pienaakkonen e ja ogonek","Latin small letter eng":"Latinalainen pienaakkonen äng","Latin small letter f with hook":"Latinalainen pienaakkonen f jossa koukku","Latin small letter g with breve":"Latinalainen pienaakkonen g ja lyhyysmerkki","Latin small letter g with cedilla":"Latinalainen pienaakkonen g ja sedilji","Latin small letter g with circumflex":"Latinalainen pienaakkonen g ja sirkumfleksi","Latin small letter g with dot above":"Latinalainen pienaakkonen g ja yläpuolinen piste","Latin small letter h with circumflex":"Latinalainen pienaakkonen h ja sirkumfleksi","Latin small letter h with stroke":"Latinalainen pienaakkonen h ja poikkiviiva","Latin small letter i with breve":"Latinalainen pienaakkonen i ja lyhyysmerkki","Latin small letter i with macron":"Latinalainen pienaakkonen i ja pituusmerkki","Latin small letter i with ogonek":"Latinalainen pienaakkonen i ja ogonek","Latin small letter i with tilde":"Latinalainen pienaakkonen i ja tilde","Latin small letter j with circumflex":"Latinalainen pienaakkonen j ja sirkumfleksi","Latin small letter k with cedilla":"Latinalainen pienaakkonen k ja sedilji","Latin small letter kra":"Latinalainen pienaakkonen kra","Latin small letter l with acute":"Latinalainen pienaakkonen l ja akuutti","Latin small letter l with caron":"Latinalainen pienaakkonen l ja hattu","Latin small letter l with cedilla":"Latinalainen pienaakkonen l ja sedilji","Latin small letter l with middle dot":"Latinalainen pienaakkonen l ja piste keskellä","Latin small letter l with stroke":"Latinalainen pienaakkonen l ja poikkiviiva","Latin small letter long s":"Latinalainen pienaakkonen pitkä s","Latin small letter n preceded by apostrophe":"Latinalainen pienaakkonen n jota edeltää heittomerkki","Latin small letter n with acute":"Latinalainen pienaakkonen n ja akuutti","Latin small letter n with caron":"Latinalainen pienaakkonen n ja hattu","Latin small letter n with cedilla":"Latinalainen pienaakkonen n ja sedilji","Latin small letter o with breve":"Latinalainen pienaakkonen o ja lyhyysmerkki","Latin small letter o with double acute":"Latinalainen pienaakkonen o ja kaksoisakuutti","Latin small letter o with macron":"Latinalainen pienaakkonen o ja pituusmerkki","Latin small letter r with acute":"Latinalainen pienaakkonen r ja akuutti","Latin small letter r with caron":"Latinalainen pienaakkonen r ja hattu","Latin small letter r with cedilla":"Latinalainen pienaakkonen r ja sedilji","Latin small letter s with acute":"Latinalainen pienaakkonen s ja akuutti","Latin small letter s with caron":"Latinalainen pienaakkonen s ja hattu","Latin small letter s with cedilla":"Latinalainen pienaakkonen s ja sedilji","Latin small letter s with circumflex":"Latinalainen pienaakkonen s ja sirkumfleksi","Latin small letter t with caron":"Latinalainen pienaakkonen t ja hattu","Latin small letter t with cedilla":"Latinalainen pienaakkonen t ja sedilji","Latin small letter t with stroke":"Latinalainen pienaakkonen t ja poikkiviiva","Latin small letter u with breve":"Latinalainen pienaakkonen u ja lyhyysmerkki","Latin small letter u with double acute":"Latinalainen pienaakkonen u ja kaksoisakuutti","Latin small letter u with macron":"Latinalainen pienaakkonen u ja pituusmerkki","Latin small letter u with ogonek":"Latinalainen pienaakkonen u ja ogonek","Latin small letter u with ring above":"Latinalainen pienaakkonen u ja yläpuolinen ympyrä","Latin small letter u with tilde":"Latinalainen pienaakkonen u ja tilde","Latin small letter w with circumflex":"Latinalainen pienaakkonen w ja sirkumfleksi","Latin small letter y with circumflex":"Latinalainen pienaakkonen y ja sirkumfleksi","Latin small letter z with acute":"Latinalainen pienaakkonen z ja akuutti","Latin small letter z with caron":"Latinalainen pienaakkonen z ja hattu","Latin small letter z with dot above":"Latinalainen pienaakkonen z ja yläpuolinen piste","Latin small ligature ij":"Latinalainen pienaakkosligatuuri ij","Latin small ligature oe":"Latinalainen pienaakkosligatuuri oe","Left double quotation mark":"Ylösalainen kokolainausmerkki","Left single quotation mark":"Ylösalainen puolilainausmerkki","Left-pointing double angle quotation mark":"Vasemmalle osoittava kaksinkertainen kulmalainausmerkki","leftwards arrow to bar":"nuoli vasemmalle perusviivalla","leftwards dashed arrow":"pisteviivanuoli vasemmalle","leftwards double arrow":"kaksoisnuoli vasemmalle","leftwards simple arrow":"yksinkertainen nuoli vasempaan","Less-than or equal to":"Pienempi tai yhtä suuri kuin -merkki","Less-than sign":"Pienempi kuin -merkki","Lira sign":"Liiran merkki","Livre tournois sign":"Livre tournois’n merkki","Logical and":"Looginen ja-merkki","Logical or":"Looginen tai-merkki",Macron:"Pituusmerkki","Manat sign":"Manatin merkki","Mill sign":"Valuutan tuhannesosan merkki","Minus sign":"Miinusmerkki","Multiplication sign":"Kertomerkki","N-ary product":"Tulo","N-ary summation":"Summa",Nabla:"Nablan merkki","Naira sign":"Nairan merkki","New sheqel sign":"Uuden sekelin merkki","Nordic mark sign":"Riikintaalerin merkki","Not an element of":"Joukkoon kuulumattomuuden merkki","Not equal to":"Eri suuri kuin -merkki","Not sign":"Negaation merkki","on with exclamation mark with left right arrow above":"ON!-nuoli",Overline:"Yläviiva","Paragraph sign":"Kappaleen merkki","Partial differential":"Osittaisderivaatta","Per mille sign":"Promillemerkki","Per ten thousand sign":"Peruspisteen merkki","Peseta sign":"Pesetan merkki","Peso sign":"Peson merkki","Plus-minus sign":"Plus-miinus-merkki","Pound sign":"Punnan merkki","Proportional to":"Suhteellisuuden merkki","Question exclamation mark":"Kysymysmerkki ja huutomerkki","Registered sign":"Rekisteröidyn tavaramerkin merkki","Reversed paragraph sign":"Käännetty kappaleen merkki","Right double quotation mark":"Kokolainausmerkki","Right single quotation mark":"Puolilainausmerkki","Right-pointing double angle quotation mark":"Oikealle osoittava kaksinkertainen kulmalainausmerkki","rightwards arrow to bar":"nuoli oikealle perusviivalla","rightwards dashed arrow":"pisteviivanuoli oikealle","rightwards double arrow":"kaksoisnuoli oikealle","rightwards simple arrow":"yksinkertainen nuoli oikeaan","Ruble sign":"Ruplan merkki","Rupee sign":"Rupian merkki","Section sign":"Pykälämerkki","Single left-pointing angle quotation mark":"Vasemmalle osoittava kulmapuolilainausmerkki","Single low-9 quotation mark":"Rivinalinen puolilainausmerkki","Single right-pointing angle quotation mark":"Oikealle osoittava kulmapuolilainausmerkki","soon with rightwards arrow above":"SOON-nuoli","Special characters":"Erikoismerkit","Spesmilo sign":"Spesmilon merkki","Square root":"Neliöjuuri","Tenge sign":"Tengen merkki","There exists":"Olemassaolokvanttori","Tilde operator":"Tildeoperaattori","top with upwards arrow above":"TOP-nuoli","Trade mark sign":"Tavaramerkin merkki","Tugrik sign":"Tugrikin merkki","Turkish lira sign":"Turkin liiran merkki","Two dot leader":"Kaksi täytemerkkiä",Union:"Yhdisteen merkki","up down arrow with base":"nuoli ylös ja alas perusviivalla","upwards arrow to bar":"nuoli ylös perusviivalla","upwards dashed arrow":"pisteviivanuoli ylös","upwards double arrow":"kaksoisnuoli ylös","upwards simple arrow":"yksinkertainen nuoli ylös","Vulgar fraction one half":"Puolikkaan merkki","Vulgar fraction one quarter":"Neljäsosan merkki","Vulgar fraction three quarters":"Kolmen neljäsosan merkki","Won sign":"Wonin merkki","Yen sign":"Jenin merkki"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/special-characters/translations/fr.js b/core/assets/vendor/ckeditor5/special-characters/translations/fr.js
index 7079bdf77b..971c8024a2 100644
--- a/core/assets/vendor/ckeditor5/special-characters/translations/fr.js
+++ b/core/assets/vendor/ckeditor5/special-characters/translations/fr.js
@@ -1 +1 @@
-!function(e){const t=e.fr=e.fr||{};t.dictionary=Object.assign(t.dictionary||{},{"Almost equal to":"Presque égal à",Angle:"Angle","Approximately equal to":"Environ égal à","Asterisk operator":"Astérisque","Austral sign":"Austral","back with leftwards arrow above":"Précédent avec flèche vers la gauche","Bitcoin sign":"Bitcoin","Cedi sign":"Cédi","Cent sign":"Centime","Character categories":"Catégories de caractères","Colon sign":"Deux points","Contains as member":"Contient","Copyright sign":"Copyright","Cruzeiro sign":"Cruzeiro","Currency sign":"Symbole monétaire","Degree sign":"Degré","Division sign":"Division","Dollar sign":"Dollar","Dong sign":"Dong","Double dagger":"Croix de Lorraine","Double exclamation mark":"Double point d'exclamation","Double low-9 quotation mark":"Guillemet-virgule double inférieur","Double question mark":"Double point d'interrogation","downwards arrow to bar":"Flèche vers le bas avec barre de fin","downwards dashed arrow":"Flèche en pointillés vers le bas","downwards double arrow":"Double flèche vers le bas","Drachma sign":"Drachme","Element of":"Appartient à","Em dash":"Tiret long","Empty set":"Élément vide","En dash":"Tiret","end with leftwards arrow above":"Fin avec flèche vers la gauche","Euro sign":"Euro","Euro-currency sign":"Symbole monétaire de l'euro","Exclamation question mark":"Point exclamation et question","For all":"Pour tout","Fraction slash":"Fraction","French franc sign":"Franc français","German penny sign":"Pfennig","Greater-than or equal to":"Signe supérieur ou égal","Greater-than sign":"Signe supérieur","Guarani sign":"Guarani","Horizontal ellipsis":"Trois points","Hryvnia sign":"Hryvnia","Identical to":"Identique à","Indian rupee sign":"Roupie indienne",Infinity:"Infini",Integral:"Intégrale",Intersection:"Intersection","Inverted exclamation mark":"Point d'exclamation inversé","Inverted question mark":"Point d'interrogation inversé","Kip sign":"Kip","Latin capital letter a with breve":"A bref majuscule","Latin capital letter a with macron":"A barre majuscule","Latin capital letter a with ogonek":"A ogonek majuscule","Latin capital letter c with acute":"C accent aigu majuscule","Latin capital letter c with caron":"C caron majuscule","Latin capital letter c with circumflex":"C circonflexe majuscule","Latin capital letter c with dot above":"C point suscrit majuscule","Latin capital letter d with caron":"D caron majuscule","Latin capital letter d with stroke":"D barré majuscule","Latin capital letter e with breve":"E bref majuscule","Latin capital letter e with caron":"E caron majuscule","Latin capital letter e with dot above":"E point suscrit majuscule","Latin capital letter e with macron":"E macron majuscule","Latin capital letter e with ogonek":"E ogonek majuscule","Latin capital letter eng":"Eng majuscule","Latin capital letter g with breve":"G bref majuscule","Latin capital letter g with cedilla":"G cédille majuscule","Latin capital letter g with circumflex":"G accent circonflexe majuscule","Latin capital letter g with dot above":"G point suscrit majuscule","Latin capital letter h with circumflex":"H accent circonflexe majuscule","Latin capital letter h with stroke":"H barré majuscule","Latin capital letter i with breve":"I bref majuscule","Latin capital letter i with dot above":"I point suscrit majuscule","Latin capital letter i with macron":"I macron majuscule","Latin capital letter i with ogonek":"I ogonek majuscule","Latin capital letter i with tilde":"I tilde majuscule","Latin capital letter j with circumflex":"J accent circonflexe majuscule","Latin capital letter k with cedilla":"K cédille majuscule","Latin capital letter l with acute":"L accent aigu majuscule","Latin capital letter l with caron":"L caron majuscule","Latin capital letter l with cedilla":"L cédille majuscule","Latin capital letter l with middle dot":"L point médian majuscule","Latin capital letter l with stroke":"L barré majuscule","Latin capital letter n with acute":"N accent aigu majuscule","Latin capital letter n with caron":"N caron majuscule","Latin capital letter n with cedilla":"N cédille majuscule","Latin capital letter o with breve":"O bref majuscule","Latin capital letter o with double acute":"O double accent aigu majuscule","Latin capital letter o with macron":"O macron majuscule","Latin capital letter r with acute":"R accent aigu majuscule","Latin capital letter r with caron":"R caron majuscule","Latin capital letter r with cedilla":"R cédille majuscule","Latin capital letter s with acute":"S accent aigu majuscule","Latin capital letter s with caron":"S caron majuscule","Latin capital letter s with cedilla":"S cédille majuscule","Latin capital letter s with circumflex":"S circonflexe majuscule","Latin capital letter t with caron":"T caron majuscule","Latin capital letter t with cedilla":"T cédille majuscule","Latin capital letter t with stroke":"T barré majuscule","Latin capital letter u with breve":"U bref majuscule","Latin capital letter u with double acute":"U double accent aigu majuscule","Latin capital letter u with macron":"U macron majuscule","Latin capital letter u with ogonek":"U ogonek majuscule","Latin capital letter u with ring above":"U rond en chef majuscule","Latin capital letter u with tilde":"U tilde majuscule","Latin capital letter w with circumflex":"W circonflexe majuscule","Latin capital letter y with circumflex":"Y circonflexe majuscule","Latin capital letter y with diaeresis":"Y tréma majuscule","Latin capital letter z with acute":"Z accent circonflexe majuscule","Latin capital letter z with caron":"Z caron majuscule","Latin capital letter z with dot above":"Z point suscrit majuscule","Latin capital ligature ij":"Digramme soudé IJ majuscule","Latin capital ligature oe":"O-E entrelacé majuscule","Latin small letter a with breve":"A bref minuscule","Latin small letter a with macron":"A barre minuscule","Latin small letter a with ogonek":"A ogonek minuscule","Latin small letter c with acute":"C accent aigu minuscule","Latin small letter c with caron":"C caron minuscule","Latin small letter c with circumflex":"C circonflexe minuscule","Latin small letter c with dot above":"C point suscrit minuscule","Latin small letter d with caron":"C caron minuscule","Latin small letter d with stroke":"D barré minuscule","Latin small letter dotless i":"I sans point minuscule","Latin small letter e with breve":"E bref minuscule","Latin small letter e with caron":"E caron minuscule","Latin small letter e with dot above":"E point suscrit minuscule","Latin small letter e with macron":"E macron minuscule","Latin small letter e with ogonek":"E ogonek minuscule","Latin small letter eng":"Eng minuscule","Latin small letter f with hook":"Fonction","Latin small letter g with breve":"G bref minuscule","Latin small letter g with cedilla":"G cédille minuscule","Latin small letter g with circumflex":"G accent circonflexe minuscule","Latin small letter g with dot above":"G point suscrit minuscule","Latin small letter h with circumflex":"H accent circonflexe minuscule","Latin small letter h with stroke":"H barré minuscule","Latin small letter i with breve":"I bref minuscule","Latin small letter i with macron":"I macron minuscule","Latin small letter i with ogonek":"I ogonek minuscule","Latin small letter i with tilde":"I tilde minuscule","Latin small letter j with circumflex":"J accent circonflexe minuscule","Latin small letter k with cedilla":"K cédille minuscule","Latin small letter kra":"Kra minuscule","Latin small letter l with acute":"L accent aigu minuscule","Latin small letter l with caron":"L caron minuscule","Latin small letter l with cedilla":"L cédille minuscule","Latin small letter l with middle dot":"L point médian minuscule","Latin small letter l with stroke":"L barré minuscule","Latin small letter long s":"S long minuscule","Latin small letter n preceded by apostrophe":"Apostrophe N minuscule","Latin small letter n with acute":"N accent aigu minuscule","Latin small letter n with caron":"N caron minuscule","Latin small letter n with cedilla":"N cédille minuscule","Latin small letter o with breve":"O bref minuscule","Latin small letter o with double acute":"O double accent aigu minuscule","Latin small letter o with macron":"O macron minuscule","Latin small letter r with acute":"R accent aigu minuscule","Latin small letter r with caron":"R caron minuscule","Latin small letter r with cedilla":"R cédille minuscule","Latin small letter s with acute":"S accent aigu minuscule","Latin small letter s with caron":"S caron minuscule","Latin small letter s with cedilla":"S cédille minuscule","Latin small letter s with circumflex":"S circonflexe minuscule","Latin small letter t with caron":"T caron minuscule","Latin small letter t with cedilla":"T cédille minuscule","Latin small letter t with stroke":"T barré minuscule","Latin small letter u with breve":"U bref minuscule","Latin small letter u with double acute":"U double accent aigu minuscule","Latin small letter u with macron":"U macron minuscule","Latin small letter u with ogonek":"U ogonek minuscule","Latin small letter u with ring above":"U rond en chef minuscule","Latin small letter u with tilde":"U tilde minuscule","Latin small letter w with circumflex":"W circonflexe minuscule","Latin small letter y with circumflex":"Y circonflexe minuscule","Latin small letter z with acute":"Z accent circonflexe minuscule","Latin small letter z with caron":"Z caron minuscule","Latin small letter z with dot above":"Z point suscrit minuscule","Latin small ligature ij":"Digramme soudé IJ minuscule","Latin small ligature oe":"O-E entrelacé minuscule","Left double quotation mark":"Guillemet-apostrophe double culbuté","Left single quotation mark":"Guillemet-apostrophe culbuté","Left-pointing double angle quotation mark":"Guillemet double vers la gauche","leftwards arrow to bar":"Flèche vers la gauche avec barre de fin","leftwards dashed arrow":"Flèche en pointillés vers la gauche","leftwards double arrow":"Double flèche vers la gauche","Less-than or equal to":"Signe inférieur ou égal","Less-than sign":"Signe inférieur","Lira sign":"Lire","Livre tournois sign":"Livre tournois","Logical and":"Et logique","Logical or":"Ou logique",Macron:"Macron","Manat sign":"Manat","Mill sign":"Moulin","Minus sign":"Moins","Multiplication sign":"Multiplication","N-ary product":"Produit","N-ary summation":"Somme",Nabla:"Nabla","Naira sign":"Naira","New sheqel sign":"Shekel","Nordic mark sign":"Mark nordique","Not an element of":"N'appartient pas à","Not equal to":"Différent de","Not sign":"Négation logique","on with exclamation mark with left right arrow above":"Allumé avec flèches vers la gauche et la droite",Overline:"Macron long","Paragraph sign":"Fin de paragraphe","Partial differential":"Partiellement différent","Per mille sign":"Pour mille","Per ten thousand sign":"Pour dix milles","Peseta sign":"Peseta","Peso sign":"Peso","Plus-minus sign":"Plus ou moins","Pound sign":"Livre sterling","Proportional to":"Proportionnel à","Question exclamation mark":"Point d'interrogation et exclamation","Registered sign":"Registered","Reversed paragraph sign":"Fin de paragraphe inversé","Right double quotation mark":"Guillemet-apostrophe double","Right single quotation mark":"Guillemet-apostrophe","Right-pointing double angle quotation mark":"Guillemet double vers la droite","rightwards arrow to bar":"Flèche vers la droite avec barre de fin","rightwards dashed arrow":"Flèche en pointillés vers la droite","rightwards double arrow":"Double flèche vers la droite","Ruble sign":"Rouble","Rupee sign":"Roupie","Section sign":"Paragraphe","Single left-pointing angle quotation mark":"Guillemet simple vers la gauche","Single low-9 quotation mark":"Guillemet-virgule inférieur","Single right-pointing angle quotation mark":"Guillemet simple vers la droite","soon with rightwards arrow above":"Bientôt avec flèche vers la droite","Special characters":"Caractères spéciaux","Spesmilo sign":"Spesmilo","Square root":"Racine carrée","Tenge sign":"Tenge","There exists":"Existe","Tilde operator":"Tilde","top with upwards arrow above":"Haut avec flèche vers le haut","Trade mark sign":"Marque déposée","Tugrik sign":"Tugrik","Turkish lira sign":"Lire turque","Two dot leader":"Deux points",Union:"Union","up down arrow with base":"Flèche haut et bas avec barre de fin","upwards arrow to bar":"Flèche vers le haut avec barre de fin","upwards dashed arrow":"Flèche en pointillés vers le haut","upwards double arrow":"Double flèche vers le haut","Vulgar fraction one half":"Un demi","Vulgar fraction one quarter":"Un quart","Vulgar fraction three quarters":"Trois quarts","Won sign":"Won","Yen sign":"Yen"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(e){const t=e.fr=e.fr||{};t.dictionary=Object.assign(t.dictionary||{},{"Almost equal to":"Presque égal à",Angle:"Angle","Approximately equal to":"Environ égal à","Asterisk operator":"Astérisque","Austral sign":"Austral","back with leftwards arrow above":"Précédent avec flèche vers la gauche","Bitcoin sign":"Bitcoin","Cedi sign":"Cédi","Cent sign":"Centime","Character categories":"Catégories de caractères","Colon sign":"Deux points","Contains as member":"Contient","Copyright sign":"Copyright","Cruzeiro sign":"Cruzeiro","Currency sign":"Symbole monétaire","Degree sign":"Degré","Division sign":"Division","Dollar sign":"Dollar","Dong sign":"Dong","Double dagger":"Croix de Lorraine","Double exclamation mark":"Double point d'exclamation","Double low-9 quotation mark":"Guillemet-virgule double inférieur","Double question mark":"Double point d'interrogation","downwards arrow to bar":"Flèche vers le bas avec barre de fin","downwards dashed arrow":"Flèche en pointillés vers le bas","downwards double arrow":"Double flèche vers le bas","downwards simple arrow":"flèche simple vers le bas","Drachma sign":"Drachme","Element of":"Appartient à","Em dash":"Tiret long","Empty set":"Élément vide","En dash":"Tiret","end with leftwards arrow above":"Fin avec flèche vers la gauche","Euro sign":"Euro","Euro-currency sign":"Symbole monétaire de l'euro","Exclamation question mark":"Point exclamation et question","For all":"Pour tout","Fraction slash":"Fraction","French franc sign":"Franc français","German penny sign":"Pfennig","Greater-than or equal to":"Signe supérieur ou égal","Greater-than sign":"Signe supérieur","Guarani sign":"Guarani","Horizontal ellipsis":"Trois points","Hryvnia sign":"Hryvnia","Identical to":"Identique à","Indian rupee sign":"Roupie indienne",Infinity:"Infini",Integral:"Intégrale",Intersection:"Intersection","Inverted exclamation mark":"Point d'exclamation inversé","Inverted question mark":"Point d'interrogation inversé","Kip sign":"Kip","Latin capital letter a with breve":"A bref majuscule","Latin capital letter a with macron":"A barre majuscule","Latin capital letter a with ogonek":"A ogonek majuscule","Latin capital letter c with acute":"C accent aigu majuscule","Latin capital letter c with caron":"C caron majuscule","Latin capital letter c with circumflex":"C circonflexe majuscule","Latin capital letter c with dot above":"C point suscrit majuscule","Latin capital letter d with caron":"D caron majuscule","Latin capital letter d with stroke":"D barré majuscule","Latin capital letter e with breve":"E bref majuscule","Latin capital letter e with caron":"E caron majuscule","Latin capital letter e with dot above":"E point suscrit majuscule","Latin capital letter e with macron":"E macron majuscule","Latin capital letter e with ogonek":"E ogonek majuscule","Latin capital letter eng":"Eng majuscule","Latin capital letter g with breve":"G bref majuscule","Latin capital letter g with cedilla":"G cédille majuscule","Latin capital letter g with circumflex":"G accent circonflexe majuscule","Latin capital letter g with dot above":"G point suscrit majuscule","Latin capital letter h with circumflex":"H accent circonflexe majuscule","Latin capital letter h with stroke":"H barré majuscule","Latin capital letter i with breve":"I bref majuscule","Latin capital letter i with dot above":"I point suscrit majuscule","Latin capital letter i with macron":"I macron majuscule","Latin capital letter i with ogonek":"I ogonek majuscule","Latin capital letter i with tilde":"I tilde majuscule","Latin capital letter j with circumflex":"J accent circonflexe majuscule","Latin capital letter k with cedilla":"K cédille majuscule","Latin capital letter l with acute":"L accent aigu majuscule","Latin capital letter l with caron":"L caron majuscule","Latin capital letter l with cedilla":"L cédille majuscule","Latin capital letter l with middle dot":"L point médian majuscule","Latin capital letter l with stroke":"L barré majuscule","Latin capital letter n with acute":"N accent aigu majuscule","Latin capital letter n with caron":"N caron majuscule","Latin capital letter n with cedilla":"N cédille majuscule","Latin capital letter o with breve":"O bref majuscule","Latin capital letter o with double acute":"O double accent aigu majuscule","Latin capital letter o with macron":"O macron majuscule","Latin capital letter r with acute":"R accent aigu majuscule","Latin capital letter r with caron":"R caron majuscule","Latin capital letter r with cedilla":"R cédille majuscule","Latin capital letter s with acute":"S accent aigu majuscule","Latin capital letter s with caron":"S caron majuscule","Latin capital letter s with cedilla":"S cédille majuscule","Latin capital letter s with circumflex":"S circonflexe majuscule","Latin capital letter t with caron":"T caron majuscule","Latin capital letter t with cedilla":"T cédille majuscule","Latin capital letter t with stroke":"T barré majuscule","Latin capital letter u with breve":"U bref majuscule","Latin capital letter u with double acute":"U double accent aigu majuscule","Latin capital letter u with macron":"U macron majuscule","Latin capital letter u with ogonek":"U ogonek majuscule","Latin capital letter u with ring above":"U rond en chef majuscule","Latin capital letter u with tilde":"U tilde majuscule","Latin capital letter w with circumflex":"W circonflexe majuscule","Latin capital letter y with circumflex":"Y circonflexe majuscule","Latin capital letter y with diaeresis":"Y tréma majuscule","Latin capital letter z with acute":"Z accent circonflexe majuscule","Latin capital letter z with caron":"Z caron majuscule","Latin capital letter z with dot above":"Z point suscrit majuscule","Latin capital ligature ij":"Digramme soudé IJ majuscule","Latin capital ligature oe":"O-E entrelacé majuscule","Latin small letter a with breve":"A bref minuscule","Latin small letter a with macron":"A barre minuscule","Latin small letter a with ogonek":"A ogonek minuscule","Latin small letter c with acute":"C accent aigu minuscule","Latin small letter c with caron":"C caron minuscule","Latin small letter c with circumflex":"C circonflexe minuscule","Latin small letter c with dot above":"C point suscrit minuscule","Latin small letter d with caron":"C caron minuscule","Latin small letter d with stroke":"D barré minuscule","Latin small letter dotless i":"I sans point minuscule","Latin small letter e with breve":"E bref minuscule","Latin small letter e with caron":"E caron minuscule","Latin small letter e with dot above":"E point suscrit minuscule","Latin small letter e with macron":"E macron minuscule","Latin small letter e with ogonek":"E ogonek minuscule","Latin small letter eng":"Eng minuscule","Latin small letter f with hook":"Fonction","Latin small letter g with breve":"G bref minuscule","Latin small letter g with cedilla":"G cédille minuscule","Latin small letter g with circumflex":"G accent circonflexe minuscule","Latin small letter g with dot above":"G point suscrit minuscule","Latin small letter h with circumflex":"H accent circonflexe minuscule","Latin small letter h with stroke":"H barré minuscule","Latin small letter i with breve":"I bref minuscule","Latin small letter i with macron":"I macron minuscule","Latin small letter i with ogonek":"I ogonek minuscule","Latin small letter i with tilde":"I tilde minuscule","Latin small letter j with circumflex":"J accent circonflexe minuscule","Latin small letter k with cedilla":"K cédille minuscule","Latin small letter kra":"Kra minuscule","Latin small letter l with acute":"L accent aigu minuscule","Latin small letter l with caron":"L caron minuscule","Latin small letter l with cedilla":"L cédille minuscule","Latin small letter l with middle dot":"L point médian minuscule","Latin small letter l with stroke":"L barré minuscule","Latin small letter long s":"S long minuscule","Latin small letter n preceded by apostrophe":"Apostrophe N minuscule","Latin small letter n with acute":"N accent aigu minuscule","Latin small letter n with caron":"N caron minuscule","Latin small letter n with cedilla":"N cédille minuscule","Latin small letter o with breve":"O bref minuscule","Latin small letter o with double acute":"O double accent aigu minuscule","Latin small letter o with macron":"O macron minuscule","Latin small letter r with acute":"R accent aigu minuscule","Latin small letter r with caron":"R caron minuscule","Latin small letter r with cedilla":"R cédille minuscule","Latin small letter s with acute":"S accent aigu minuscule","Latin small letter s with caron":"S caron minuscule","Latin small letter s with cedilla":"S cédille minuscule","Latin small letter s with circumflex":"S circonflexe minuscule","Latin small letter t with caron":"T caron minuscule","Latin small letter t with cedilla":"T cédille minuscule","Latin small letter t with stroke":"T barré minuscule","Latin small letter u with breve":"U bref minuscule","Latin small letter u with double acute":"U double accent aigu minuscule","Latin small letter u with macron":"U macron minuscule","Latin small letter u with ogonek":"U ogonek minuscule","Latin small letter u with ring above":"U rond en chef minuscule","Latin small letter u with tilde":"U tilde minuscule","Latin small letter w with circumflex":"W circonflexe minuscule","Latin small letter y with circumflex":"Y circonflexe minuscule","Latin small letter z with acute":"Z accent circonflexe minuscule","Latin small letter z with caron":"Z caron minuscule","Latin small letter z with dot above":"Z point suscrit minuscule","Latin small ligature ij":"Digramme soudé IJ minuscule","Latin small ligature oe":"O-E entrelacé minuscule","Left double quotation mark":"Guillemet-apostrophe double culbuté","Left single quotation mark":"Guillemet-apostrophe culbuté","Left-pointing double angle quotation mark":"Guillemet double vers la gauche","leftwards arrow to bar":"Flèche vers la gauche avec barre de fin","leftwards dashed arrow":"Flèche en pointillés vers la gauche","leftwards double arrow":"Double flèche vers la gauche","leftwards simple arrow":"flèche simple vers la gauche","Less-than or equal to":"Signe inférieur ou égal","Less-than sign":"Signe inférieur","Lira sign":"Lire","Livre tournois sign":"Livre tournois","Logical and":"Et logique","Logical or":"Ou logique",Macron:"Macron","Manat sign":"Manat","Mill sign":"Moulin","Minus sign":"Moins","Multiplication sign":"Multiplication","N-ary product":"Produit","N-ary summation":"Somme",Nabla:"Nabla","Naira sign":"Naira","New sheqel sign":"Shekel","Nordic mark sign":"Mark nordique","Not an element of":"N'appartient pas à","Not equal to":"Différent de","Not sign":"Négation logique","on with exclamation mark with left right arrow above":"Allumé avec flèches vers la gauche et la droite",Overline:"Macron long","Paragraph sign":"Fin de paragraphe","Partial differential":"Partiellement différent","Per mille sign":"Pour mille","Per ten thousand sign":"Pour dix milles","Peseta sign":"Peseta","Peso sign":"Peso","Plus-minus sign":"Plus ou moins","Pound sign":"Livre sterling","Proportional to":"Proportionnel à","Question exclamation mark":"Point d'interrogation et exclamation","Registered sign":"Registered","Reversed paragraph sign":"Fin de paragraphe inversé","Right double quotation mark":"Guillemet-apostrophe double","Right single quotation mark":"Guillemet-apostrophe","Right-pointing double angle quotation mark":"Guillemet double vers la droite","rightwards arrow to bar":"Flèche vers la droite avec barre de fin","rightwards dashed arrow":"Flèche en pointillés vers la droite","rightwards double arrow":"Double flèche vers la droite","rightwards simple arrow":"flèche simple vers la droite","Ruble sign":"Rouble","Rupee sign":"Roupie","Section sign":"Paragraphe","Single left-pointing angle quotation mark":"Guillemet simple vers la gauche","Single low-9 quotation mark":"Guillemet-virgule inférieur","Single right-pointing angle quotation mark":"Guillemet simple vers la droite","soon with rightwards arrow above":"Bientôt avec flèche vers la droite","Special characters":"Caractères spéciaux","Spesmilo sign":"Spesmilo","Square root":"Racine carrée","Tenge sign":"Tenge","There exists":"Existe","Tilde operator":"Tilde","top with upwards arrow above":"Haut avec flèche vers le haut","Trade mark sign":"Marque déposée","Tugrik sign":"Tugrik","Turkish lira sign":"Lire turque","Two dot leader":"Deux points",Union:"Union","up down arrow with base":"Flèche haut et bas avec barre de fin","upwards arrow to bar":"Flèche vers le haut avec barre de fin","upwards dashed arrow":"Flèche en pointillés vers le haut","upwards double arrow":"Double flèche vers le haut","upwards simple arrow":"flèche simple vers le haut","Vulgar fraction one half":"Un demi","Vulgar fraction one quarter":"Un quart","Vulgar fraction three quarters":"Trois quarts","Won sign":"Won","Yen sign":"Yen"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/special-characters/translations/gl.js b/core/assets/vendor/ckeditor5/special-characters/translations/gl.js
index 2533ea2a7b..dde224d985 100644
--- a/core/assets/vendor/ckeditor5/special-characters/translations/gl.js
+++ b/core/assets/vendor/ckeditor5/special-characters/translations/gl.js
@@ -1 +1 @@
-!function(a){const o=a.gl=a.gl||{};o.dictionary=Object.assign(o.dictionary||{},{"Almost equal to":"Case igual a",Angle:"Ángulo","Approximately equal to":"Aproximadamente igual a","Asterisk operator":"Operador asterisco","Austral sign":"Símbolo do austral","back with leftwards arrow above":"cara atrás, coa frecha cara á esquerda enriba","Bitcoin sign":"Símbolo do Bitcoin","Cedi sign":"Símbolo do cedi","Cent sign":"Símbolo do centavo","Character categories":"Categorías de caracteres","Colon sign":"Símbolo do colón","Contains as member":"Conten a","Copyright sign":"Símbolo de copyright","Cruzeiro sign":"Símbolo do cruceiro","Currency sign":"Símbolo de moeda","Degree sign":"Signo de grao","Division sign":"Signo de división","Dollar sign":"Símbolo do dolar","Dong sign":"Símbolo do dong","Double dagger":"Daga dobre","Double exclamation mark":"Marca de dobre exclamación","Double low-9 quotation mark":"Marca de acoutamento comiña dobre baixo-9","Double question mark":"Marca de dobre interrogación","downwards arrow to bar":"frecha cara abaixo con tope","downwards dashed arrow":"frecha de guións cara abaixo","downwards double arrow":"frecha dobre cara abaixo","Drachma sign":"Símbolo do dracma","Element of":"Pertenza","Em dash":"Guión longo (raia)","Empty set":"Conxunto baleiro","En dash":"Guión curto","end with leftwards arrow above":"final, coa frecha cara á esquerda enriba","Euro sign":"Símbolo do euro","Euro-currency sign":"Símbolo da moeda do euro","Exclamation question mark":"Marca de exclamación interrogación","For all":"Para todo","Fraction slash":"Barra de fracción","French franc sign":"Símbolo do franco francés","German penny sign":"Símbolo do penique alemán","Greater-than or equal to":"Maior ou igual que","Greater-than sign":"Maior que","Guarani sign":"Símbolo do guaraní","Horizontal ellipsis":"Elipse horizontal","Hryvnia sign":"Símbolo do hryvnia","Identical to":"Idéntico a","Indian rupee sign":"Símbolo da rupia india",Infinity:"Infinito",Integral:"Integral",Intersection:"Intersección","Inverted exclamation mark":"Marca invertida de exclamación","Inverted question mark":"Marca invertida de interrogación","Kip sign":"Símbolo do kip","Latin capital letter a with breve":"A maiúsculo latino con acento breve","Latin capital letter a with macron":"A maiúsculo latino con macron","Latin capital letter a with ogonek":"A maiúsculo latino con ogonek","Latin capital letter c with acute":"C maiúsculo latino con acento agudo","Latin capital letter c with caron":"C maiúsculo latino con caron","Latin capital letter c with circumflex":"C maiúsculo latino con acento circunflexo","Latin capital letter c with dot above":"C maiúsculo latino con punto enriba","Latin capital letter d with caron":"D maiúsculo latino con caron","Latin capital letter d with stroke":"D maiúsculo latino barrado","Latin capital letter e with breve":"E maiúsculo latino con acento breve","Latin capital letter e with caron":"E maiúsculo latino con caron","Latin capital letter e with dot above":"E maiúsculo latino con punto enriba","Latin capital letter e with macron":"E maiúsculo latino con macron","Latin capital letter e with ogonek":"E maiúsculo latino con ogonek","Latin capital letter eng":"Eng (engma) mziúsculo latino","Latin capital letter g with breve":"G maiúsculo latino con acento breve","Latin capital letter g with cedilla":"G maiúsculo latino con cedilla","Latin capital letter g with circumflex":"G maiúsculo latino con acento circunflexo","Latin capital letter g with dot above":"G maiúsculo latino con punto enriba","Latin capital letter h with circumflex":"H maiúsculo latino con acento circunflexo","Latin capital letter h with stroke":"H maiúsculo latino barrado","Latin capital letter i with breve":"I maiúsculo latino con acento breve","Latin capital letter i with dot above":"I maiúsculo latino con punto enriba","Latin capital letter i with macron":"I maiúsculo latino con macron","Latin capital letter i with ogonek":"I maiúsculo latino con ogonek","Latin capital letter i with tilde":"I maiúsculo latino con til","Latin capital letter j with circumflex":"J maiúsculo latino con acento circunflexo","Latin capital letter k with cedilla":"K maiúsculo latino con cedilla","Latin capital letter l with acute":"L maiúsculo latino con acento agudo","Latin capital letter l with caron":"L maiúsculo latino con caron","Latin capital letter l with cedilla":"L maiúsculo latino con cedilla","Latin capital letter l with middle dot":"L maiúsculo latino con punto medio","Latin capital letter l with stroke":"L maiúsculo latino barrado","Latin capital letter n with acute":"N maiúsculo latino con acento agudo","Latin capital letter n with caron":"N maiúsculo latino con caron","Latin capital letter n with cedilla":"N maiúsculo latino con cedilla","Latin capital letter o with breve":"O maiúsculo latino con acento breve","Latin capital letter o with double acute":"O maiúsculo latino con acento agudo dobre","Latin capital letter o with macron":"O maiúsculo latino con macron","Latin capital letter r with acute":"R maiúsculo latino con acento agudo","Latin capital letter r with caron":"R maiúsculo latino con caron","Latin capital letter r with cedilla":"R maiúsculo latino con cedilla","Latin capital letter s with acute":"S maiúsculo latino con acento agudo","Latin capital letter s with caron":"S maiúsculo latino con caron","Latin capital letter s with cedilla":"S maiúsculo latino con cedilla","Latin capital letter s with circumflex":"S maiúsculo latino con acento circunflexo","Latin capital letter t with caron":"T maiúsculo latino con caron","Latin capital letter t with cedilla":"T maiúsculo latino con cedilla","Latin capital letter t with stroke":"T maiúsculo latino barrado","Latin capital letter u with breve":"U maiúsculo latino con acento breve","Latin capital letter u with double acute":"U maiúsculo latino con acento agudo dobre","Latin capital letter u with macron":"U maiúsculo latino con macron","Latin capital letter u with ogonek":"U maiúsculo latino con ogonek","Latin capital letter u with ring above":"U maiúsculo latino con anel enriba","Latin capital letter u with tilde":"U maiúsculo latino con til","Latin capital letter w with circumflex":"W maiúsculo latino con acento circunflexo","Latin capital letter y with circumflex":"Y maiúsculo latino con acento circunflexo","Latin capital letter y with diaeresis":"Y maiúsculo latino con diérese","Latin capital letter z with acute":"Z maiúsculo latino con acento agudo","Latin capital letter z with caron":"Z maiúsculo latino con caron","Latin capital letter z with dot above":"Z maiúsculo latino con punto enriba","Latin capital ligature ij":"Ligadura IJ maiúsculo latino","Latin capital ligature oe":"Ligadura OE maiúsculo latino","Latin small letter a with breve":"a minúsculo latino con acento breve","Latin small letter a with macron":"a minúsculo latino con macron","Latin small letter a with ogonek":"a minúsculo latino con ogonek","Latin small letter c with acute":"c minúsculo latino con acento agudo","Latin small letter c with caron":"cminúsculo latino con caron","Latin small letter c with circumflex":"c minúsculo latino con acento circunflexo","Latin small letter c with dot above":"c minúsculo latino con punto enriba","Latin small letter d with caron":"d minúsculo latino con caron","Latin small letter d with stroke":"d minúsculo latino barrado","Latin small letter dotless i":"i minúsculo latino sen punto","Latin small letter e with breve":"e minúsculo latino con acento breve","Latin small letter e with caron":"e minúsculo latino con caron","Latin small letter e with dot above":"e  minúsculo latino con punto enriba","Latin small letter e with macron":"e minúsculo latino con macron","Latin small letter e with ogonek":"e minúsculo latino con ogonek","Latin small letter eng":"Eng (engma) minúsculo latino","Latin small letter f with hook":"f minúsculo latino con gancho","Latin small letter g with breve":"g minúsculo latino con acento breve","Latin small letter g with cedilla":"g minúsculo latino con cedilla","Latin small letter g with circumflex":"g minúsculo latino con acento circunflexo","Latin small letter g with dot above":"g minúsculo latino con punto enriba","Latin small letter h with circumflex":"h minúsculo latino con acento circunflexo","Latin small letter h with stroke":"h minúsculo latino barrado","Latin small letter i with breve":"i minúsculo latino con acento breve","Latin small letter i with macron":"i minúsculo latino con macron","Latin small letter i with ogonek":"i minúsculo latino con ogonek","Latin small letter i with tilde":"i minúsculo latino con til","Latin small letter j with circumflex":"j minúsculo latino con acento circunflexo","Latin small letter k with cedilla":"k minúsculo latino con cedilla","Latin small letter kra":"Letra kra minúscula","Latin small letter l with acute":"l minúsculo latino con acento agudo","Latin small letter l with caron":"l minúsculo latino con caron","Latin small letter l with cedilla":"l minúsculo latino con cedilla","Latin small letter l with middle dot":"l minúsculo latino con punto medio","Latin small letter l with stroke":"l minúsculo latino barrado","Latin small letter long s":"s minúsculo latino larga","Latin small letter n preceded by apostrophe":"n minúsculo latino precedido de apostrofe","Latin small letter n with acute":"n minúsculo latino con acento agudo","Latin small letter n with caron":"n minúsculo latino con caron","Latin small letter n with cedilla":"n minúsculo latino con cedilla","Latin small letter o with breve":"o minúsculo latino con acento breve","Latin small letter o with double acute":"o minúsculo latino con acento agudo dobre","Latin small letter o with macron":"o minúsculo latino con macron","Latin small letter r with acute":"r minúsculo latino con acento agudo","Latin small letter r with caron":"r minúsculo latino con caron","Latin small letter r with cedilla":"r minúsculo latino con cedilla","Latin small letter s with acute":"s minúsculo latino con acento agudo","Latin small letter s with caron":"s minúsculo latino con caron","Latin small letter s with cedilla":"s minúsculo latino con cedilla","Latin small letter s with circumflex":"s minúsculo latino con acento circunflexo","Latin small letter t with caron":"t minúsculo latino con caron","Latin small letter t with cedilla":"t minúsculo latino con cedilla","Latin small letter t with stroke":"t minúsculo latino barrado","Latin small letter u with breve":"u minúsculo latino con acento breve","Latin small letter u with double acute":"u minúsculo latino con acento agudo dobre","Latin small letter u with macron":"u minúsculo latino con macron","Latin small letter u with ogonek":"u minúsculo latino con ogonek","Latin small letter u with ring above":"u minúsculo latino con anel enriba","Latin small letter u with tilde":"u minúsculo latino con til","Latin small letter w with circumflex":"w minúsculo latino con acento circunflexo","Latin small letter y with circumflex":"y minúsculo latino con acento circunflexo","Latin small letter z with acute":"z minúsculo latino con acento agudo","Latin small letter z with caron":"z minúsculo latino con caron","Latin small letter z with dot above":"z minúsculo latino con punto enriba","Latin small ligature ij":"Ligadura ij minúsculo latino","Latin small ligature oe":"Ligadura oe minúsculo latino","Left double quotation mark":"Marca de acoutamento comiña dobre esquerda","Left single quotation mark":"Marca de acoutamento comiña sinxela esquerda","Left-pointing double angle quotation mark":"Marca de acoutamento ángulo esquerdo dobre","leftwards arrow to bar":"frecha cara á esquerda con tope","leftwards dashed arrow":"frecha de guións cara á esquerda","leftwards double arrow":"frecha dobre cara á esquerda","Less-than or equal to":"Menor ou igual que","Less-than sign":"Menor que","Lira sign":"Símbolo da lira","Livre tournois sign":"Símbolo da libra tournois","Logical and":"E lóxico (conxunción)","Logical or":"Ou lóxico (disxunción)",Macron:"Macron","Manat sign":"Símbolo do manat","Mill sign":"Símbolo do mill","Minus sign":"Signo menos","Multiplication sign":"Signo de multiplicación","N-ary product":"Produto de n elementos, produtorio","N-ary summation":"Suma de n elementos, sumatorio",Nabla:"Nabla (Gradiente)","Naira sign":"Símbolo da naira","New sheqel sign":"Símbolo do novo xequel","Nordic mark sign":"Símbolo do marco nordico","Not an element of":"Non pertenza","Not equal to":"Distinto de","Not sign":"Signo non","on with exclamation mark with left right arrow above":"activado, con signo de exclamación coa frecha esquerda-dereita enrriba",Overline:"Liña superior","Paragraph sign":"Signo de parágrafo","Partial differential":"Derivada parcial","Per mille sign":"Signo de por milleiro","Per ten thousand sign":"Signo de por dez mil","Peseta sign":"Símbolo da peseta","Peso sign":"Símbolo do peso","Plus-minus sign":"Signo más/menos","Pound sign":"Símbolo da libra","Proportional to":"Proporcional a","Question exclamation mark":"Marca de interrogación exclamación","Registered sign":"Símbolo de rexistrado","Reversed paragraph sign":"Signo invertido do parágrafo","Right double quotation mark":"Marca de acoutamento comiña dobre dereita","Right single quotation mark":"Marca de acoutamento comiña sinxela dereita","Right-pointing double angle quotation mark":"Marca de acoutamento ángulo dereito dobre","rightwards arrow to bar":"frecha cara á dereita con tope","rightwards dashed arrow":"frecha de guións cara á dereita","rightwards double arrow":"frecha dobre cara á dereita","Ruble sign":"Símbolo do rublo","Rupee sign":"Símbolo da rupia","Section sign":"Signo de sección","Single left-pointing angle quotation mark":"Marca de acoutamento ángulo esquerdo sinxelo","Single low-9 quotation mark":"Marca de acoutamento comiña sinxela baixo-9","Single right-pointing angle quotation mark":"Marca de acoutamento ángulo dereito sinxelo","soon with rightwards arrow above":"logo, coa frecha cara á dereita enriba","Special characters":"Caracteres especiais","Spesmilo sign":"Símbolo do spesmilo","Square root":"Raíz cadrada","Tenge sign":"Símbolo do tenge","There exists":"Existe","Tilde operator":"Operador til","top with upwards arrow above":"superior, coa frecha cara arriba enriba","Trade mark sign":"Símbolo de marca de fábrica","Tugrik sign":"Símbolo do tugrik","Turkish lira sign":"Símbolo da lira turca","Two dot leader":"Líder de dous puntos",Union:"Unión","up down arrow with base":"frecha arriba-abaixo con base","upwards arrow to bar":"frecha cara arriba con tope","upwards dashed arrow":"frecha de guións cara arriba","upwards double arrow":"frecha dobre cara arriba","Vulgar fraction one half":"Fracción común dun medio","Vulgar fraction one quarter":"Fracción común dun cuarto","Vulgar fraction three quarters":"Fracción común de tres cuartos","Won sign":"Símbolo do won","Yen sign":"Símbolo do yen"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(a){const o=a.gl=a.gl||{};o.dictionary=Object.assign(o.dictionary||{},{"Almost equal to":"Case igual a",Angle:"Ángulo","Approximately equal to":"Aproximadamente igual a","Asterisk operator":"Operador asterisco","Austral sign":"Símbolo do austral","back with leftwards arrow above":"cara atrás, coa frecha cara á esquerda enriba","Bitcoin sign":"Símbolo do Bitcoin","Cedi sign":"Símbolo do cedi","Cent sign":"Símbolo do centavo","Character categories":"Categorías de caracteres","Colon sign":"Símbolo do colón","Contains as member":"Conten a","Copyright sign":"Símbolo de copyright","Cruzeiro sign":"Símbolo do cruceiro","Currency sign":"Símbolo de moeda","Degree sign":"Signo de grao","Division sign":"Signo de división","Dollar sign":"Símbolo do dolar","Dong sign":"Símbolo do dong","Double dagger":"Daga dobre","Double exclamation mark":"Marca de dobre exclamación","Double low-9 quotation mark":"Marca de acoutamento comiña dobre baixo-9","Double question mark":"Marca de dobre interrogación","downwards arrow to bar":"frecha cara abaixo con tope","downwards dashed arrow":"frecha de guións cara abaixo","downwards double arrow":"frecha dobre cara abaixo","downwards simple arrow":"","Drachma sign":"Símbolo do dracma","Element of":"Pertenza","Em dash":"Guión longo (raia)","Empty set":"Conxunto baleiro","En dash":"Guión curto","end with leftwards arrow above":"final, coa frecha cara á esquerda enriba","Euro sign":"Símbolo do euro","Euro-currency sign":"Símbolo da moeda do euro","Exclamation question mark":"Marca de exclamación interrogación","For all":"Para todo","Fraction slash":"Barra de fracción","French franc sign":"Símbolo do franco francés","German penny sign":"Símbolo do penique alemán","Greater-than or equal to":"Maior ou igual que","Greater-than sign":"Maior que","Guarani sign":"Símbolo do guaraní","Horizontal ellipsis":"Elipse horizontal","Hryvnia sign":"Símbolo do hryvnia","Identical to":"Idéntico a","Indian rupee sign":"Símbolo da rupia india",Infinity:"Infinito",Integral:"Integral",Intersection:"Intersección","Inverted exclamation mark":"Marca invertida de exclamación","Inverted question mark":"Marca invertida de interrogación","Kip sign":"Símbolo do kip","Latin capital letter a with breve":"A maiúsculo latino con acento breve","Latin capital letter a with macron":"A maiúsculo latino con macron","Latin capital letter a with ogonek":"A maiúsculo latino con ogonek","Latin capital letter c with acute":"C maiúsculo latino con acento agudo","Latin capital letter c with caron":"C maiúsculo latino con caron","Latin capital letter c with circumflex":"C maiúsculo latino con acento circunflexo","Latin capital letter c with dot above":"C maiúsculo latino con punto enriba","Latin capital letter d with caron":"D maiúsculo latino con caron","Latin capital letter d with stroke":"D maiúsculo latino barrado","Latin capital letter e with breve":"E maiúsculo latino con acento breve","Latin capital letter e with caron":"E maiúsculo latino con caron","Latin capital letter e with dot above":"E maiúsculo latino con punto enriba","Latin capital letter e with macron":"E maiúsculo latino con macron","Latin capital letter e with ogonek":"E maiúsculo latino con ogonek","Latin capital letter eng":"Eng (engma) mziúsculo latino","Latin capital letter g with breve":"G maiúsculo latino con acento breve","Latin capital letter g with cedilla":"G maiúsculo latino con cedilla","Latin capital letter g with circumflex":"G maiúsculo latino con acento circunflexo","Latin capital letter g with dot above":"G maiúsculo latino con punto enriba","Latin capital letter h with circumflex":"H maiúsculo latino con acento circunflexo","Latin capital letter h with stroke":"H maiúsculo latino barrado","Latin capital letter i with breve":"I maiúsculo latino con acento breve","Latin capital letter i with dot above":"I maiúsculo latino con punto enriba","Latin capital letter i with macron":"I maiúsculo latino con macron","Latin capital letter i with ogonek":"I maiúsculo latino con ogonek","Latin capital letter i with tilde":"I maiúsculo latino con til","Latin capital letter j with circumflex":"J maiúsculo latino con acento circunflexo","Latin capital letter k with cedilla":"K maiúsculo latino con cedilla","Latin capital letter l with acute":"L maiúsculo latino con acento agudo","Latin capital letter l with caron":"L maiúsculo latino con caron","Latin capital letter l with cedilla":"L maiúsculo latino con cedilla","Latin capital letter l with middle dot":"L maiúsculo latino con punto medio","Latin capital letter l with stroke":"L maiúsculo latino barrado","Latin capital letter n with acute":"N maiúsculo latino con acento agudo","Latin capital letter n with caron":"N maiúsculo latino con caron","Latin capital letter n with cedilla":"N maiúsculo latino con cedilla","Latin capital letter o with breve":"O maiúsculo latino con acento breve","Latin capital letter o with double acute":"O maiúsculo latino con acento agudo dobre","Latin capital letter o with macron":"O maiúsculo latino con macron","Latin capital letter r with acute":"R maiúsculo latino con acento agudo","Latin capital letter r with caron":"R maiúsculo latino con caron","Latin capital letter r with cedilla":"R maiúsculo latino con cedilla","Latin capital letter s with acute":"S maiúsculo latino con acento agudo","Latin capital letter s with caron":"S maiúsculo latino con caron","Latin capital letter s with cedilla":"S maiúsculo latino con cedilla","Latin capital letter s with circumflex":"S maiúsculo latino con acento circunflexo","Latin capital letter t with caron":"T maiúsculo latino con caron","Latin capital letter t with cedilla":"T maiúsculo latino con cedilla","Latin capital letter t with stroke":"T maiúsculo latino barrado","Latin capital letter u with breve":"U maiúsculo latino con acento breve","Latin capital letter u with double acute":"U maiúsculo latino con acento agudo dobre","Latin capital letter u with macron":"U maiúsculo latino con macron","Latin capital letter u with ogonek":"U maiúsculo latino con ogonek","Latin capital letter u with ring above":"U maiúsculo latino con anel enriba","Latin capital letter u with tilde":"U maiúsculo latino con til","Latin capital letter w with circumflex":"W maiúsculo latino con acento circunflexo","Latin capital letter y with circumflex":"Y maiúsculo latino con acento circunflexo","Latin capital letter y with diaeresis":"Y maiúsculo latino con diérese","Latin capital letter z with acute":"Z maiúsculo latino con acento agudo","Latin capital letter z with caron":"Z maiúsculo latino con caron","Latin capital letter z with dot above":"Z maiúsculo latino con punto enriba","Latin capital ligature ij":"Ligadura IJ maiúsculo latino","Latin capital ligature oe":"Ligadura OE maiúsculo latino","Latin small letter a with breve":"a minúsculo latino con acento breve","Latin small letter a with macron":"a minúsculo latino con macron","Latin small letter a with ogonek":"a minúsculo latino con ogonek","Latin small letter c with acute":"c minúsculo latino con acento agudo","Latin small letter c with caron":"cminúsculo latino con caron","Latin small letter c with circumflex":"c minúsculo latino con acento circunflexo","Latin small letter c with dot above":"c minúsculo latino con punto enriba","Latin small letter d with caron":"d minúsculo latino con caron","Latin small letter d with stroke":"d minúsculo latino barrado","Latin small letter dotless i":"i minúsculo latino sen punto","Latin small letter e with breve":"e minúsculo latino con acento breve","Latin small letter e with caron":"e minúsculo latino con caron","Latin small letter e with dot above":"e  minúsculo latino con punto enriba","Latin small letter e with macron":"e minúsculo latino con macron","Latin small letter e with ogonek":"e minúsculo latino con ogonek","Latin small letter eng":"Eng (engma) minúsculo latino","Latin small letter f with hook":"f minúsculo latino con gancho","Latin small letter g with breve":"g minúsculo latino con acento breve","Latin small letter g with cedilla":"g minúsculo latino con cedilla","Latin small letter g with circumflex":"g minúsculo latino con acento circunflexo","Latin small letter g with dot above":"g minúsculo latino con punto enriba","Latin small letter h with circumflex":"h minúsculo latino con acento circunflexo","Latin small letter h with stroke":"h minúsculo latino barrado","Latin small letter i with breve":"i minúsculo latino con acento breve","Latin small letter i with macron":"i minúsculo latino con macron","Latin small letter i with ogonek":"i minúsculo latino con ogonek","Latin small letter i with tilde":"i minúsculo latino con til","Latin small letter j with circumflex":"j minúsculo latino con acento circunflexo","Latin small letter k with cedilla":"k minúsculo latino con cedilla","Latin small letter kra":"Letra kra minúscula","Latin small letter l with acute":"l minúsculo latino con acento agudo","Latin small letter l with caron":"l minúsculo latino con caron","Latin small letter l with cedilla":"l minúsculo latino con cedilla","Latin small letter l with middle dot":"l minúsculo latino con punto medio","Latin small letter l with stroke":"l minúsculo latino barrado","Latin small letter long s":"s minúsculo latino larga","Latin small letter n preceded by apostrophe":"n minúsculo latino precedido de apostrofe","Latin small letter n with acute":"n minúsculo latino con acento agudo","Latin small letter n with caron":"n minúsculo latino con caron","Latin small letter n with cedilla":"n minúsculo latino con cedilla","Latin small letter o with breve":"o minúsculo latino con acento breve","Latin small letter o with double acute":"o minúsculo latino con acento agudo dobre","Latin small letter o with macron":"o minúsculo latino con macron","Latin small letter r with acute":"r minúsculo latino con acento agudo","Latin small letter r with caron":"r minúsculo latino con caron","Latin small letter r with cedilla":"r minúsculo latino con cedilla","Latin small letter s with acute":"s minúsculo latino con acento agudo","Latin small letter s with caron":"s minúsculo latino con caron","Latin small letter s with cedilla":"s minúsculo latino con cedilla","Latin small letter s with circumflex":"s minúsculo latino con acento circunflexo","Latin small letter t with caron":"t minúsculo latino con caron","Latin small letter t with cedilla":"t minúsculo latino con cedilla","Latin small letter t with stroke":"t minúsculo latino barrado","Latin small letter u with breve":"u minúsculo latino con acento breve","Latin small letter u with double acute":"u minúsculo latino con acento agudo dobre","Latin small letter u with macron":"u minúsculo latino con macron","Latin small letter u with ogonek":"u minúsculo latino con ogonek","Latin small letter u with ring above":"u minúsculo latino con anel enriba","Latin small letter u with tilde":"u minúsculo latino con til","Latin small letter w with circumflex":"w minúsculo latino con acento circunflexo","Latin small letter y with circumflex":"y minúsculo latino con acento circunflexo","Latin small letter z with acute":"z minúsculo latino con acento agudo","Latin small letter z with caron":"z minúsculo latino con caron","Latin small letter z with dot above":"z minúsculo latino con punto enriba","Latin small ligature ij":"Ligadura ij minúsculo latino","Latin small ligature oe":"Ligadura oe minúsculo latino","Left double quotation mark":"Marca de acoutamento comiña dobre esquerda","Left single quotation mark":"Marca de acoutamento comiña sinxela esquerda","Left-pointing double angle quotation mark":"Marca de acoutamento ángulo esquerdo dobre","leftwards arrow to bar":"frecha cara á esquerda con tope","leftwards dashed arrow":"frecha de guións cara á esquerda","leftwards double arrow":"frecha dobre cara á esquerda","leftwards simple arrow":"","Less-than or equal to":"Menor ou igual que","Less-than sign":"Menor que","Lira sign":"Símbolo da lira","Livre tournois sign":"Símbolo da libra tournois","Logical and":"E lóxico (conxunción)","Logical or":"Ou lóxico (disxunción)",Macron:"Macron","Manat sign":"Símbolo do manat","Mill sign":"Símbolo do mill","Minus sign":"Signo menos","Multiplication sign":"Signo de multiplicación","N-ary product":"Produto de n elementos, produtorio","N-ary summation":"Suma de n elementos, sumatorio",Nabla:"Nabla (Gradiente)","Naira sign":"Símbolo da naira","New sheqel sign":"Símbolo do novo xequel","Nordic mark sign":"Símbolo do marco nordico","Not an element of":"Non pertenza","Not equal to":"Distinto de","Not sign":"Signo non","on with exclamation mark with left right arrow above":"activado, con signo de exclamación coa frecha esquerda-dereita enrriba",Overline:"Liña superior","Paragraph sign":"Signo de parágrafo","Partial differential":"Derivada parcial","Per mille sign":"Signo de por milleiro","Per ten thousand sign":"Signo de por dez mil","Peseta sign":"Símbolo da peseta","Peso sign":"Símbolo do peso","Plus-minus sign":"Signo más/menos","Pound sign":"Símbolo da libra","Proportional to":"Proporcional a","Question exclamation mark":"Marca de interrogación exclamación","Registered sign":"Símbolo de rexistrado","Reversed paragraph sign":"Signo invertido do parágrafo","Right double quotation mark":"Marca de acoutamento comiña dobre dereita","Right single quotation mark":"Marca de acoutamento comiña sinxela dereita","Right-pointing double angle quotation mark":"Marca de acoutamento ángulo dereito dobre","rightwards arrow to bar":"frecha cara á dereita con tope","rightwards dashed arrow":"frecha de guións cara á dereita","rightwards double arrow":"frecha dobre cara á dereita","rightwards simple arrow":"","Ruble sign":"Símbolo do rublo","Rupee sign":"Símbolo da rupia","Section sign":"Signo de sección","Single left-pointing angle quotation mark":"Marca de acoutamento ángulo esquerdo sinxelo","Single low-9 quotation mark":"Marca de acoutamento comiña sinxela baixo-9","Single right-pointing angle quotation mark":"Marca de acoutamento ángulo dereito sinxelo","soon with rightwards arrow above":"logo, coa frecha cara á dereita enriba","Special characters":"Caracteres especiais","Spesmilo sign":"Símbolo do spesmilo","Square root":"Raíz cadrada","Tenge sign":"Símbolo do tenge","There exists":"Existe","Tilde operator":"Operador til","top with upwards arrow above":"superior, coa frecha cara arriba enriba","Trade mark sign":"Símbolo de marca de fábrica","Tugrik sign":"Símbolo do tugrik","Turkish lira sign":"Símbolo da lira turca","Two dot leader":"Líder de dous puntos",Union:"Unión","up down arrow with base":"frecha arriba-abaixo con base","upwards arrow to bar":"frecha cara arriba con tope","upwards dashed arrow":"frecha de guións cara arriba","upwards double arrow":"frecha dobre cara arriba","upwards simple arrow":"","Vulgar fraction one half":"Fracción común dun medio","Vulgar fraction one quarter":"Fracción común dun cuarto","Vulgar fraction three quarters":"Fracción común de tres cuartos","Won sign":"Símbolo do won","Yen sign":"Símbolo do yen"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/special-characters/translations/he.js b/core/assets/vendor/ckeditor5/special-characters/translations/he.js
index 3a27391024..a22ad29fc9 100644
--- a/core/assets/vendor/ckeditor5/special-characters/translations/he.js
+++ b/core/assets/vendor/ckeditor5/special-characters/translations/he.js
@@ -1 +1 @@
-!function(t){const a=t.he=t.he||{};a.dictionary=Object.assign(a.dictionary||{},{"Almost equal to":"כמעט שווה ל-",Angle:"זווית","Approximately equal to":"שווה בקירוב ל-","Asterisk operator":"אופרטור כוכבית","Austral sign":"סמל אאוסטרל","back with leftwards arrow above":'"back" ומעליו חץ שמאלה',"Bitcoin sign":"סמל ביטקוין","Cedi sign":"סמל סדי","Cent sign":"סמל סנט","Character categories":"קטגוריות תווים","Colon sign":"סמל קולון","Contains as member":"מכיל כחבר","Copyright sign":"סימן זכויות יוצרים","Cruzeiro sign":"סמל קרוזיירו","Currency sign":"סמל מטבע","Degree sign":"סימן מעלה","Division sign":"סימן חילוק","Dollar sign":"סמל דולר","Dong sign":"סמל דונג","Double dagger":"דקר כפול","Double exclamation mark":"סימן קריאה כפול","Double low-9 quotation mark":"מירכאות נמוכות כפולות בצורת 9","Double question mark":"סימן שאלה כפול","downwards arrow to bar":"חץ למטה לפס","downwards dashed arrow":"חץ מקווקו למטה","downwards double arrow":"חץ כפול למטה","Drachma sign":"סמל דרכמה","Element of":"שייך ל-","Em dash":"קו מפריד ארוך","Empty set":"הקבוצה הריקה","En dash":"קו מפריד רגיל","end with leftwards arrow above":'"end" ומעליו חץ שמאלה',"Euro sign":"סמל אירו","Euro-currency sign":"סמל יחידת מטבע אירופאית","Exclamation question mark":"סימן קריאה/שאלה","For all":"לכל","Fraction slash":"לוכסן שבר","French franc sign":"סמל פרנק צרפתי","German penny sign":"סמל פני גרמני","Greater-than or equal to":'סימן "גדול/שווה"',"Greater-than sign":'סימן "גדול מ-"',"Guarani sign":"סמל גוארני","Horizontal ellipsis":"שלוש נקודות אופקיות","Hryvnia sign":"סמל הריבניה","Identical to":"זהה ל-","Indian rupee sign":"סמל רופי הודי",Infinity:"אינסוף",Integral:"אינטגרל",Intersection:"חיתוך","Inverted exclamation mark":"סימן קריאה הפוך","Inverted question mark":"סימן שאלה הפוך","Kip sign":"סמל קיפ","Latin capital letter a with breve":"a גדולה לטינית עם ברווה","Latin capital letter a with macron":"a גדולה לטינית עם קו עילי","Latin capital letter a with ogonek":"a גדולה לטינית עם זנבון","Latin capital letter c with acute":"c גדולה לטינית עם סימן הטעמה עילי","Latin capital letter c with caron":"c גדולה לטינית עם וי קטן","Latin capital letter c with circumflex":"c גדולה לטינית עם גג","Latin capital letter c with dot above":"c גדולה לטינית עם נקודה עילית","Latin capital letter d with caron":"d גדולה לטינית עם וי קטן","Latin capital letter d with stroke":"d גדולה לטינית עם קו","Latin capital letter e with breve":"e גדולה לטינית עם ברווה","Latin capital letter e with caron":"e גדולה לטינית עם וי קטן","Latin capital letter e with dot above":"e גדולה לטינית עם נקודה עילית","Latin capital letter e with macron":"e גדולה לטינית עם קו עילי","Latin capital letter e with ogonek":"e גדולה לטינית עם זנבון","Latin capital letter eng":"אנג גדולה לטינית","Latin capital letter g with breve":"g גדולה לטינית עם ברווה","Latin capital letter g with cedilla":"g גדולה לטינית עם סדיליה","Latin capital letter g with circumflex":"g גדולה לטינית עם גג","Latin capital letter g with dot above":"g גדולה לטינית עם נקודה עילית","Latin capital letter h with circumflex":"h גדולה לטינית עם גג","Latin capital letter h with stroke":"h גדולה לטינית עם קו","Latin capital letter i with breve":"i גדולה לטינית עם ברווה","Latin capital letter i with dot above":"i גדולה לטינית עם נקודה עילית","Latin capital letter i with macron":"i גדולה לטינית עם קו עילי","Latin capital letter i with ogonek":"i גדולה לטינית עם זנבון","Latin capital letter i with tilde":"i גדולה לטינית עם טילדה","Latin capital letter j with circumflex":"j גדולה לטינית עם גג","Latin capital letter k with cedilla":"k גדולה לטינית עם סדיליה","Latin capital letter l with acute":"l גדולה לטינית עם סימן הטעמה עילי","Latin capital letter l with caron":"l גדולה לטינית עם וי קטן","Latin capital letter l with cedilla":"l גדולה לטינית עם סדיליה","Latin capital letter l with middle dot":"l גדולה לטינית עם נקודה אמצעית","Latin capital letter l with stroke":"l גדולה לטינית עם קו","Latin capital letter n with acute":"n גדולה לטינית עם סימן הטעמה עילי","Latin capital letter n with caron":"n גדולה לטינית עם וי קטן","Latin capital letter n with cedilla":"n גדולה לטינית עם סדיליה","Latin capital letter o with breve":"o גדולה לטינית עם ברווה","Latin capital letter o with double acute":"o גדולה לטינית עם סימן הטעמה עילי כפול","Latin capital letter o with macron":"o גדולה לטינית עם קו עילי","Latin capital letter r with acute":"r גדולה לטינית עם סימן הטעמה עילי","Latin capital letter r with caron":"r גדולה לטינית עם וי קטן","Latin capital letter r with cedilla":"r גדולה לטינית עם סדיליה","Latin capital letter s with acute":"s גדולה לטינית עם סימן הטעמה עילי","Latin capital letter s with caron":"s גדולה לטינית עם וי קטן","Latin capital letter s with cedilla":"s גדולה לטינית עם סדיליה","Latin capital letter s with circumflex":"s גדולה לטינית עם גג","Latin capital letter t with caron":"t גדולה לטינית עם וי קטן","Latin capital letter t with cedilla":"t גדולה לטינית עם סדיליה","Latin capital letter t with stroke":"t גדולה לטינית עם קו","Latin capital letter u with breve":"u גדולה לטינית עם ברווה","Latin capital letter u with double acute":"u גדולה לטינית עם סימן הטעמה עילי כפול","Latin capital letter u with macron":"u גדולה לטינית עם קו עילי","Latin capital letter u with ogonek":"u גדולה לטינית עם זנבון","Latin capital letter u with ring above":"u גדולה לטינית עם טבעת עילית","Latin capital letter u with tilde":"u גדולה לטינית עם טילדה","Latin capital letter w with circumflex":"w גדולה לטינית עם גג","Latin capital letter y with circumflex":"y גדולה לטינית עם גג","Latin capital letter y with diaeresis":"y גדולה לטינית עם אומלאוט","Latin capital letter z with acute":"z גדולה לטינית עם סימן הטעמה עילי","Latin capital letter z with caron":"z גדולה לטינית עם וי קטן","Latin capital letter z with dot above":"z גדולה לטינית עם נקודה עילית","Latin capital ligature ij":"ליגטורה גדולה לטינית ij","Latin capital ligature oe":"ליגטורה גדולה לטינית oe","Latin small letter a with breve":"a קטנה לטינית עם ברווה","Latin small letter a with macron":"a קטנה לטינית עם קו עילי","Latin small letter a with ogonek":"a קטנה לטינית עם זנבון","Latin small letter c with acute":"c קטנה לטינית עם סימן הטעמה עילי","Latin small letter c with caron":"c גדולה לטינית עם וי קטן","Latin small letter c with circumflex":"c קטנה לטינית עם גג","Latin small letter c with dot above":"c קטנה לטינית עם נקודה עילית","Latin small letter d with caron":"d קטנה לטינית עם וי קטן","Latin small letter d with stroke":"d קטנה לטינית עם קו","Latin small letter dotless i":"i קטנה לטינית עם נקודה עילית","Latin small letter e with breve":"e קטנה לטינית עם ברווה","Latin small letter e with caron":"e קטנה לטינית עם וי קטן","Latin small letter e with dot above":"e קטנה לטינית עם נקודה עילית","Latin small letter e with macron":"e קטנה לטינית עם קו עילי","Latin small letter e with ogonek":"e קטנה לטינית עם זנבון","Latin small letter eng":"אנג קטנה לטינית","Latin small letter f with hook":"f קטנה לטינית עם וו","Latin small letter g with breve":"g קטנה לטינית עם ברווה","Latin small letter g with cedilla":"g קטנה לטינית עם סדיליה","Latin small letter g with circumflex":"g קטנה לטינית עם גג","Latin small letter g with dot above":"g קטנה לטינית עם נקודה עילית","Latin small letter h with circumflex":"h קטנה לטינית עם גג","Latin small letter h with stroke":"h קטנה לטינית עם קו","Latin small letter i with breve":"i קטנה לטינית עם ברווה","Latin small letter i with macron":"i קטנה לטינית עם קו עילי","Latin small letter i with ogonek":"i קטנה לטינית עם זנבון","Latin small letter i with tilde":"i קטנה לטינית עם טילדה","Latin small letter j with circumflex":"j קטנה לטינית עם גג","Latin small letter k with cedilla":"k קטנה לטינית עם סדיליה","Latin small letter kra":"קרה קטנה לטינית","Latin small letter l with acute":"l קטנה לטינית עם סימן הטעמה עילי","Latin small letter l with caron":"l קטנה לטינית עם וי קטן","Latin small letter l with cedilla":"l קטנה לטינית עם סימן הטעמה עילי","Latin small letter l with middle dot":"l קטנה לטינית עם נקודה אמצעית","Latin small letter l with stroke":"l קטנה לטינית עם קו","Latin small letter long s":"s ארוכה קטנה לטינית","Latin small letter n preceded by apostrophe":"n קטנה לטינית ולפניה אפוסטרוף","Latin small letter n with acute":"n קטנה לטינית עם סימן הטעמה עילי","Latin small letter n with caron":"n קטנה לטינית עם וי קטן","Latin small letter n with cedilla":"n קטנה לטינית עם סדיליה","Latin small letter o with breve":"o קטנה לטינית עם ברווה","Latin small letter o with double acute":"o קטנה לטינית עם סימן הטעמה עילי כפול","Latin small letter o with macron":"o קטנה לטינית עם קו עילי","Latin small letter r with acute":"r קטנה לטינית עם סימן הטעמה עילי","Latin small letter r with caron":"r קטנה לטינית עם וי קטן","Latin small letter r with cedilla":"r קטנה לטינית עם סדיליה","Latin small letter s with acute":"s קטנה לטינית עם סימן הטעמה עילי","Latin small letter s with caron":"s קטנה לטינית עם וי קטן","Latin small letter s with cedilla":"s קטנה לטינית עם סדיליה","Latin small letter s with circumflex":"s קטנה לטינית עם גג","Latin small letter t with caron":"t קטנה לטינית עם וי קטן","Latin small letter t with cedilla":"t קטנה לטינית עם סדיליה","Latin small letter t with stroke":"t קטנה לטינית עם קו","Latin small letter u with breve":"u קטנה לטינית עם ברווה","Latin small letter u with double acute":"u קטנה לטינית עם סימן הטעמה עילי כפול","Latin small letter u with macron":"u קטנה לטינית עם קו עילי","Latin small letter u with ogonek":"u קטנה לטינית עם זנבון","Latin small letter u with ring above":"u קטנה לטינית עם טבעת עילית","Latin small letter u with tilde":"u קטנה לטינית עם טילדה","Latin small letter w with circumflex":"w קטנה לטינית עם גג","Latin small letter y with circumflex":"y קטנה לטינית עם גג","Latin small letter z with acute":"z קטנה לטינית עם סימן הטעמה עילי","Latin small letter z with caron":"z קטנה לטינית עם וי קטן","Latin small letter z with dot above":"z קטנה לטינית עם נקודה עילית","Latin small ligature ij":"ליגטורה קטנה לטינית ij","Latin small ligature oe":"ליגטורה קטנה לטינית oe","Left double quotation mark":"מירכאות שמאליות כפולות","Left single quotation mark":"מירכאות שמאליות יחידות","Left-pointing double angle quotation mark":"מירכאות מחודדות כפולות פונות שמאלה","leftwards arrow to bar":"חץ שמאלה לפס","leftwards dashed arrow":"חץ מקווקו שמאלה","leftwards double arrow":"חץ כפול שמאלה","Less-than or equal to":'סימן "קטן/שווה"',"Less-than sign":'סימן "קטן מ-"',"Lira sign":"סמל לירה","Livre tournois sign":"סמל ליבר טורנואה","Logical and":'"וגם" לוגי',"Logical or":'"או" לוגי',Macron:"קו עילי","Manat sign":"סמל מאנאט","Mill sign":"סמל מיל","Minus sign":"סימן מינוס","Multiplication sign":"סימן כפל","N-ary product":"תוצר N","N-ary summation":"סכום N",Nabla:"נבלה","Naira sign":"סמל נאירה","New sheqel sign":"סמל שקל חדש","Nordic mark sign":"סמל מארק נורדי","Not an element of":"לא שייך ל-","Not equal to":"לא שווה ל-","Not sign":"סימן שלילה","on with exclamation mark with left right arrow above":'"on" עם סימן קריאה ומעליו חץ שמאלה וימינה',Overline:"קו עליון","Paragraph sign":"סימן פסקה","Partial differential":"נגזרת חלקית","Per mille sign":"סימן אלפית","Per ten thousand sign":"סימן רבבית","Peseta sign":"סמל פסטה","Peso sign":"סמל פסו","Plus-minus sign":"סימן פלוס-מינוס","Pound sign":'סמל ליש"ט',"Proportional to":"יחס ישר","Question exclamation mark":"סימן שאלה/קריאה","Registered sign":"סימן רשום","Reversed paragraph sign":"סימן פסקה הפוך","Right double quotation mark":"מירכאות ימניות כפולות","Right single quotation mark":"מירכאות ימניות יחידות","Right-pointing double angle quotation mark":"מירכאות מחודדות כפולות פונות ימינה","rightwards arrow to bar":"חץ ימינה לפס","rightwards dashed arrow":"חץ מקווקו ימינה","rightwards double arrow":"חץ כפול ימינה","Ruble sign":"סמל רובל","Rupee sign":"סמל רופי","Section sign":"סימן סעיף","Single left-pointing angle quotation mark":"מירכאות מחודדות יחידות פונות שמאלה","Single low-9 quotation mark":"מירכאות נמוכות יחידות בצורת 9","Single right-pointing angle quotation mark":"מירכאות מחודדות יחידות פונות ימינה","soon with rightwards arrow above":'"soon" ומעליו חץ ימינה',"Special characters":"תווים מיוחדים","Spesmilo sign":"סמל ספסמילו","Square root":"שורש ריבועי","Tenge sign":"סמל טנגה","There exists":"קיים","Tilde operator":"אופרטור טילדה","top with upwards arrow above":'"top" ומעליו חץ למעלה',"Trade mark sign":"סימן סמל מסחרי","Tugrik sign":"סמל טוגרוג","Turkish lira sign":"סמל לירה טורקית","Two dot leader":"מחבר שתי נקודות",Union:"איחוד","up down arrow with base":"חץ למעלה ולמטה עם בסיס","upwards arrow to bar":"חץ למעלה לפס","upwards dashed arrow":"חץ מקווקו למעלה","upwards double arrow":"חץ כפול למעלה","Vulgar fraction one half":"שבר פשוט חצי","Vulgar fraction one quarter":"שבר פשוט רבע","Vulgar fraction three quarters":"שבר פשוט שלושה רבעים","Won sign":"סמל וון","Yen sign":"סמל ין"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(t){const a=t.he=t.he||{};a.dictionary=Object.assign(a.dictionary||{},{"Almost equal to":"כמעט שווה ל-",Angle:"זווית","Approximately equal to":"שווה בקירוב ל-","Asterisk operator":"אופרטור כוכבית","Austral sign":"סמל אאוסטרל","back with leftwards arrow above":'"back" ומעליו חץ שמאלה',"Bitcoin sign":"סמל ביטקוין","Cedi sign":"סמל סדי","Cent sign":"סמל סנט","Character categories":"קטגוריות תווים","Colon sign":"סמל קולון","Contains as member":"מכיל כחבר","Copyright sign":"סימן זכויות יוצרים","Cruzeiro sign":"סמל קרוזיירו","Currency sign":"סמל מטבע","Degree sign":"סימן מעלה","Division sign":"סימן חילוק","Dollar sign":"סמל דולר","Dong sign":"סמל דונג","Double dagger":"דקר כפול","Double exclamation mark":"סימן קריאה כפול","Double low-9 quotation mark":"מירכאות נמוכות כפולות בצורת 9","Double question mark":"סימן שאלה כפול","downwards arrow to bar":"חץ למטה לפס","downwards dashed arrow":"חץ מקווקו למטה","downwards double arrow":"חץ כפול למטה","downwards simple arrow":"חץ פשוט כלפי מטה","Drachma sign":"סמל דרכמה","Element of":"שייך ל-","Em dash":"קו מפריד ארוך","Empty set":"הקבוצה הריקה","En dash":"קו מפריד רגיל","end with leftwards arrow above":'"end" ומעליו חץ שמאלה',"Euro sign":"סמל אירו","Euro-currency sign":"סמל יחידת מטבע אירופאית","Exclamation question mark":"סימן קריאה/שאלה","For all":"לכל","Fraction slash":"לוכסן שבר","French franc sign":"סמל פרנק צרפתי","German penny sign":"סמל פני גרמני","Greater-than or equal to":'סימן "גדול/שווה"',"Greater-than sign":'סימן "גדול מ-"',"Guarani sign":"סמל גוארני","Horizontal ellipsis":"שלוש נקודות אופקיות","Hryvnia sign":"סמל הריבניה","Identical to":"זהה ל-","Indian rupee sign":"סמל רופי הודי",Infinity:"אינסוף",Integral:"אינטגרל",Intersection:"חיתוך","Inverted exclamation mark":"סימן קריאה הפוך","Inverted question mark":"סימן שאלה הפוך","Kip sign":"סמל קיפ","Latin capital letter a with breve":"a גדולה לטינית עם ברווה","Latin capital letter a with macron":"a גדולה לטינית עם קו עילי","Latin capital letter a with ogonek":"a גדולה לטינית עם זנבון","Latin capital letter c with acute":"c גדולה לטינית עם סימן הטעמה עילי","Latin capital letter c with caron":"c גדולה לטינית עם וי קטן","Latin capital letter c with circumflex":"c גדולה לטינית עם גג","Latin capital letter c with dot above":"c גדולה לטינית עם נקודה עילית","Latin capital letter d with caron":"d גדולה לטינית עם וי קטן","Latin capital letter d with stroke":"d גדולה לטינית עם קו","Latin capital letter e with breve":"e גדולה לטינית עם ברווה","Latin capital letter e with caron":"e גדולה לטינית עם וי קטן","Latin capital letter e with dot above":"e גדולה לטינית עם נקודה עילית","Latin capital letter e with macron":"e גדולה לטינית עם קו עילי","Latin capital letter e with ogonek":"e גדולה לטינית עם זנבון","Latin capital letter eng":"אנג גדולה לטינית","Latin capital letter g with breve":"g גדולה לטינית עם ברווה","Latin capital letter g with cedilla":"g גדולה לטינית עם סדיליה","Latin capital letter g with circumflex":"g גדולה לטינית עם גג","Latin capital letter g with dot above":"g גדולה לטינית עם נקודה עילית","Latin capital letter h with circumflex":"h גדולה לטינית עם גג","Latin capital letter h with stroke":"h גדולה לטינית עם קו","Latin capital letter i with breve":"i גדולה לטינית עם ברווה","Latin capital letter i with dot above":"i גדולה לטינית עם נקודה עילית","Latin capital letter i with macron":"i גדולה לטינית עם קו עילי","Latin capital letter i with ogonek":"i גדולה לטינית עם זנבון","Latin capital letter i with tilde":"i גדולה לטינית עם טילדה","Latin capital letter j with circumflex":"j גדולה לטינית עם גג","Latin capital letter k with cedilla":"k גדולה לטינית עם סדיליה","Latin capital letter l with acute":"l גדולה לטינית עם סימן הטעמה עילי","Latin capital letter l with caron":"l גדולה לטינית עם וי קטן","Latin capital letter l with cedilla":"l גדולה לטינית עם סדיליה","Latin capital letter l with middle dot":"l גדולה לטינית עם נקודה אמצעית","Latin capital letter l with stroke":"l גדולה לטינית עם קו","Latin capital letter n with acute":"n גדולה לטינית עם סימן הטעמה עילי","Latin capital letter n with caron":"n גדולה לטינית עם וי קטן","Latin capital letter n with cedilla":"n גדולה לטינית עם סדיליה","Latin capital letter o with breve":"o גדולה לטינית עם ברווה","Latin capital letter o with double acute":"o גדולה לטינית עם סימן הטעמה עילי כפול","Latin capital letter o with macron":"o גדולה לטינית עם קו עילי","Latin capital letter r with acute":"r גדולה לטינית עם סימן הטעמה עילי","Latin capital letter r with caron":"r גדולה לטינית עם וי קטן","Latin capital letter r with cedilla":"r גדולה לטינית עם סדיליה","Latin capital letter s with acute":"s גדולה לטינית עם סימן הטעמה עילי","Latin capital letter s with caron":"s גדולה לטינית עם וי קטן","Latin capital letter s with cedilla":"s גדולה לטינית עם סדיליה","Latin capital letter s with circumflex":"s גדולה לטינית עם גג","Latin capital letter t with caron":"t גדולה לטינית עם וי קטן","Latin capital letter t with cedilla":"t גדולה לטינית עם סדיליה","Latin capital letter t with stroke":"t גדולה לטינית עם קו","Latin capital letter u with breve":"u גדולה לטינית עם ברווה","Latin capital letter u with double acute":"u גדולה לטינית עם סימן הטעמה עילי כפול","Latin capital letter u with macron":"u גדולה לטינית עם קו עילי","Latin capital letter u with ogonek":"u גדולה לטינית עם זנבון","Latin capital letter u with ring above":"u גדולה לטינית עם טבעת עילית","Latin capital letter u with tilde":"u גדולה לטינית עם טילדה","Latin capital letter w with circumflex":"w גדולה לטינית עם גג","Latin capital letter y with circumflex":"y גדולה לטינית עם גג","Latin capital letter y with diaeresis":"y גדולה לטינית עם אומלאוט","Latin capital letter z with acute":"z גדולה לטינית עם סימן הטעמה עילי","Latin capital letter z with caron":"z גדולה לטינית עם וי קטן","Latin capital letter z with dot above":"z גדולה לטינית עם נקודה עילית","Latin capital ligature ij":"ליגטורה גדולה לטינית ij","Latin capital ligature oe":"ליגטורה גדולה לטינית oe","Latin small letter a with breve":"a קטנה לטינית עם ברווה","Latin small letter a with macron":"a קטנה לטינית עם קו עילי","Latin small letter a with ogonek":"a קטנה לטינית עם זנבון","Latin small letter c with acute":"c קטנה לטינית עם סימן הטעמה עילי","Latin small letter c with caron":"c גדולה לטינית עם וי קטן","Latin small letter c with circumflex":"c קטנה לטינית עם גג","Latin small letter c with dot above":"c קטנה לטינית עם נקודה עילית","Latin small letter d with caron":"d קטנה לטינית עם וי קטן","Latin small letter d with stroke":"d קטנה לטינית עם קו","Latin small letter dotless i":"i קטנה לטינית עם נקודה עילית","Latin small letter e with breve":"e קטנה לטינית עם ברווה","Latin small letter e with caron":"e קטנה לטינית עם וי קטן","Latin small letter e with dot above":"e קטנה לטינית עם נקודה עילית","Latin small letter e with macron":"e קטנה לטינית עם קו עילי","Latin small letter e with ogonek":"e קטנה לטינית עם זנבון","Latin small letter eng":"אנג קטנה לטינית","Latin small letter f with hook":"f קטנה לטינית עם וו","Latin small letter g with breve":"g קטנה לטינית עם ברווה","Latin small letter g with cedilla":"g קטנה לטינית עם סדיליה","Latin small letter g with circumflex":"g קטנה לטינית עם גג","Latin small letter g with dot above":"g קטנה לטינית עם נקודה עילית","Latin small letter h with circumflex":"h קטנה לטינית עם גג","Latin small letter h with stroke":"h קטנה לטינית עם קו","Latin small letter i with breve":"i קטנה לטינית עם ברווה","Latin small letter i with macron":"i קטנה לטינית עם קו עילי","Latin small letter i with ogonek":"i קטנה לטינית עם זנבון","Latin small letter i with tilde":"i קטנה לטינית עם טילדה","Latin small letter j with circumflex":"j קטנה לטינית עם גג","Latin small letter k with cedilla":"k קטנה לטינית עם סדיליה","Latin small letter kra":"קרה קטנה לטינית","Latin small letter l with acute":"l קטנה לטינית עם סימן הטעמה עילי","Latin small letter l with caron":"l קטנה לטינית עם וי קטן","Latin small letter l with cedilla":"l קטנה לטינית עם סימן הטעמה עילי","Latin small letter l with middle dot":"l קטנה לטינית עם נקודה אמצעית","Latin small letter l with stroke":"l קטנה לטינית עם קו","Latin small letter long s":"s ארוכה קטנה לטינית","Latin small letter n preceded by apostrophe":"n קטנה לטינית ולפניה אפוסטרוף","Latin small letter n with acute":"n קטנה לטינית עם סימן הטעמה עילי","Latin small letter n with caron":"n קטנה לטינית עם וי קטן","Latin small letter n with cedilla":"n קטנה לטינית עם סדיליה","Latin small letter o with breve":"o קטנה לטינית עם ברווה","Latin small letter o with double acute":"o קטנה לטינית עם סימן הטעמה עילי כפול","Latin small letter o with macron":"o קטנה לטינית עם קו עילי","Latin small letter r with acute":"r קטנה לטינית עם סימן הטעמה עילי","Latin small letter r with caron":"r קטנה לטינית עם וי קטן","Latin small letter r with cedilla":"r קטנה לטינית עם סדיליה","Latin small letter s with acute":"s קטנה לטינית עם סימן הטעמה עילי","Latin small letter s with caron":"s קטנה לטינית עם וי קטן","Latin small letter s with cedilla":"s קטנה לטינית עם סדיליה","Latin small letter s with circumflex":"s קטנה לטינית עם גג","Latin small letter t with caron":"t קטנה לטינית עם וי קטן","Latin small letter t with cedilla":"t קטנה לטינית עם סדיליה","Latin small letter t with stroke":"t קטנה לטינית עם קו","Latin small letter u with breve":"u קטנה לטינית עם ברווה","Latin small letter u with double acute":"u קטנה לטינית עם סימן הטעמה עילי כפול","Latin small letter u with macron":"u קטנה לטינית עם קו עילי","Latin small letter u with ogonek":"u קטנה לטינית עם זנבון","Latin small letter u with ring above":"u קטנה לטינית עם טבעת עילית","Latin small letter u with tilde":"u קטנה לטינית עם טילדה","Latin small letter w with circumflex":"w קטנה לטינית עם גג","Latin small letter y with circumflex":"y קטנה לטינית עם גג","Latin small letter z with acute":"z קטנה לטינית עם סימן הטעמה עילי","Latin small letter z with caron":"z קטנה לטינית עם וי קטן","Latin small letter z with dot above":"z קטנה לטינית עם נקודה עילית","Latin small ligature ij":"ליגטורה קטנה לטינית ij","Latin small ligature oe":"ליגטורה קטנה לטינית oe","Left double quotation mark":"מירכאות שמאליות כפולות","Left single quotation mark":"מירכאות שמאליות יחידות","Left-pointing double angle quotation mark":"מירכאות מחודדות כפולות פונות שמאלה","leftwards arrow to bar":"חץ שמאלה לפס","leftwards dashed arrow":"חץ מקווקו שמאלה","leftwards double arrow":"חץ כפול שמאלה","leftwards simple arrow":"חץ פשוט שמאלה","Less-than or equal to":'סימן "קטן/שווה"',"Less-than sign":'סימן "קטן מ-"',"Lira sign":"סמל לירה","Livre tournois sign":"סמל ליבר טורנואה","Logical and":'"וגם" לוגי',"Logical or":'"או" לוגי',Macron:"קו עילי","Manat sign":"סמל מאנאט","Mill sign":"סמל מיל","Minus sign":"סימן מינוס","Multiplication sign":"סימן כפל","N-ary product":"תוצר N","N-ary summation":"סכום N",Nabla:"נבלה","Naira sign":"סמל נאירה","New sheqel sign":"סמל שקל חדש","Nordic mark sign":"סמל מארק נורדי","Not an element of":"לא שייך ל-","Not equal to":"לא שווה ל-","Not sign":"סימן שלילה","on with exclamation mark with left right arrow above":'"on" עם סימן קריאה ומעליו חץ שמאלה וימינה',Overline:"קו עליון","Paragraph sign":"סימן פסקה","Partial differential":"נגזרת חלקית","Per mille sign":"סימן אלפית","Per ten thousand sign":"סימן רבבית","Peseta sign":"סמל פסטה","Peso sign":"סמל פסו","Plus-minus sign":"סימן פלוס-מינוס","Pound sign":'סמל ליש"ט',"Proportional to":"יחס ישר","Question exclamation mark":"סימן שאלה/קריאה","Registered sign":"סימן רשום","Reversed paragraph sign":"סימן פסקה הפוך","Right double quotation mark":"מירכאות ימניות כפולות","Right single quotation mark":"מירכאות ימניות יחידות","Right-pointing double angle quotation mark":"מירכאות מחודדות כפולות פונות ימינה","rightwards arrow to bar":"חץ ימינה לפס","rightwards dashed arrow":"חץ מקווקו ימינה","rightwards double arrow":"חץ כפול ימינה","rightwards simple arrow":"חץ פשוט ימינה","Ruble sign":"סמל רובל","Rupee sign":"סמל רופי","Section sign":"סימן סעיף","Single left-pointing angle quotation mark":"מירכאות מחודדות יחידות פונות שמאלה","Single low-9 quotation mark":"מירכאות נמוכות יחידות בצורת 9","Single right-pointing angle quotation mark":"מירכאות מחודדות יחידות פונות ימינה","soon with rightwards arrow above":'"soon" ומעליו חץ ימינה',"Special characters":"תווים מיוחדים","Spesmilo sign":"סמל ספסמילו","Square root":"שורש ריבועי","Tenge sign":"סמל טנגה","There exists":"קיים","Tilde operator":"אופרטור טילדה","top with upwards arrow above":'"top" ומעליו חץ למעלה',"Trade mark sign":"סימן סמל מסחרי","Tugrik sign":"סמל טוגרוג","Turkish lira sign":"סמל לירה טורקית","Two dot leader":"מחבר שתי נקודות",Union:"איחוד","up down arrow with base":"חץ למעלה ולמטה עם בסיס","upwards arrow to bar":"חץ למעלה לפס","upwards dashed arrow":"חץ מקווקו למעלה","upwards double arrow":"חץ כפול למעלה","upwards simple arrow":"חץ פשוט כלפי מעלה","Vulgar fraction one half":"שבר פשוט חצי","Vulgar fraction one quarter":"שבר פשוט רבע","Vulgar fraction three quarters":"שבר פשוט שלושה רבעים","Won sign":"סמל וון","Yen sign":"סמל ין"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/special-characters/translations/hi.js b/core/assets/vendor/ckeditor5/special-characters/translations/hi.js
index 1d92187eda..f58d6d8f8f 100644
--- a/core/assets/vendor/ckeditor5/special-characters/translations/hi.js
+++ b/core/assets/vendor/ckeditor5/special-characters/translations/hi.js
@@ -1 +1 @@
-!function(t){const a=t.hi=t.hi||{};a.dictionary=Object.assign(a.dictionary||{},{"Almost equal to":"Almost equal to",Angle:"Angle","Approximately equal to":"Approximately equal to","Asterisk operator":"Asterisk operator","Austral sign":"Austral sign","back with leftwards arrow above":"back with leftwards arrow above","Bitcoin sign":"Bitcoin sign","Cedi sign":"Cedi sign","Cent sign":"Cent sign","Character categories":"Character categories","Colon sign":"Colon sign","Contains as member":"Contains as member","Copyright sign":"Copyright sign","Cruzeiro sign":"Cruzeiro sign","Currency sign":"Currency sign","Degree sign":"Degree sign","Division sign":"Division sign","Dollar sign":"Dollar sign","Dong sign":"Dong sign","Double dagger":"Double dagger","Double exclamation mark":"Double exclamation mark","Double low-9 quotation mark":"Double low-9 quotation mark","Double question mark":"Double question mark","downwards arrow to bar":"downwards arrow to bar","downwards dashed arrow":"downwards dashed arrow","downwards double arrow":"downwards double arrow","Drachma sign":"Drachma sign","Element of":"Element of","Em dash":"Em dash","Empty set":"Empty set","En dash":"En dash","end with leftwards arrow above":"end with leftwards arrow above","Euro sign":"Euro sign","Euro-currency sign":"Euro-currency sign","Exclamation question mark":"Exclamation question mark","For all":"For all","Fraction slash":"Fraction slash","French franc sign":"French franc sign","German penny sign":"German penny sign","Greater-than or equal to":"Greater-than or equal to","Greater-than sign":"Greater-than sign","Guarani sign":"Guarani sign","Horizontal ellipsis":"Horizontal ellipsis","Hryvnia sign":"Hryvnia sign","Identical to":"Identical to","Indian rupee sign":"Indian rupee sign",Infinity:"Infinity",Integral:"Integral",Intersection:"Intersection","Inverted exclamation mark":"Inverted exclamation mark","Inverted question mark":"Inverted question mark","Kip sign":"Kip sign","Latin capital letter a with breve":"Latin capital letter a with breve","Latin capital letter a with macron":"Latin capital letter a with macron","Latin capital letter a with ogonek":"Latin capital letter a with ogonek","Latin capital letter c with acute":"Latin capital letter c with acute","Latin capital letter c with caron":"Latin capital letter c with caron","Latin capital letter c with circumflex":"Latin capital letter c with circumflex","Latin capital letter c with dot above":"Latin capital letter c with dot above","Latin capital letter d with caron":"Latin capital letter d with caron","Latin capital letter d with stroke":"Latin capital letter d with stroke","Latin capital letter e with breve":"Latin capital letter e with breve","Latin capital letter e with caron":"Latin capital letter e with caron","Latin capital letter e with dot above":"Latin capital letter e with dot above","Latin capital letter e with macron":"Latin capital letter e with macron","Latin capital letter e with ogonek":"Latin capital letter e with ogonek","Latin capital letter eng":"Latin capital letter eng","Latin capital letter g with breve":"Latin capital letter g with breve","Latin capital letter g with cedilla":"Latin capital letter g with cedilla","Latin capital letter g with circumflex":"Latin capital letter g with circumflex","Latin capital letter g with dot above":"Latin capital letter g with dot above","Latin capital letter h with circumflex":"Latin capital letter h with circumflex","Latin capital letter h with stroke":"Latin capital letter h with stroke","Latin capital letter i with breve":"Latin capital letter i with breve","Latin capital letter i with dot above":"Latin capital letter i with dot above","Latin capital letter i with macron":"Latin capital letter i with macron","Latin capital letter i with ogonek":"Latin capital letter i with ogonek","Latin capital letter i with tilde":"Latin capital letter i with tilde","Latin capital letter j with circumflex":"Latin capital letter j with circumflex","Latin capital letter k with cedilla":"Latin capital letter k with cedilla","Latin capital letter l with acute":"Latin capital letter l with acute","Latin capital letter l with caron":"Latin capital letter l with caron","Latin capital letter l with cedilla":"Latin capital letter l with cedilla","Latin capital letter l with middle dot":"Latin capital letter l with middle dot","Latin capital letter l with stroke":"Latin capital letter l with stroke","Latin capital letter n with acute":"Latin capital letter n with acute","Latin capital letter n with caron":"Latin capital letter n with caron","Latin capital letter n with cedilla":"Latin capital letter n with cedilla","Latin capital letter o with breve":"Latin capital letter o with breve","Latin capital letter o with double acute":"Latin capital letter o with double acute","Latin capital letter o with macron":"Latin capital letter o with macron","Latin capital letter r with acute":"Latin capital letter r with acute","Latin capital letter r with caron":"Latin capital letter r with caron","Latin capital letter r with cedilla":"Latin capital letter r with cedilla","Latin capital letter s with acute":"Latin capital letter s with acute","Latin capital letter s with caron":"Latin capital letter s with caron","Latin capital letter s with cedilla":"Latin capital letter s with cedilla","Latin capital letter s with circumflex":"Latin capital letter s with circumflex","Latin capital letter t with caron":"Latin capital letter t with caron","Latin capital letter t with cedilla":"Latin capital letter t with cedilla","Latin capital letter t with stroke":"Latin capital letter t with stroke","Latin capital letter u with breve":"Latin capital letter u with breve","Latin capital letter u with double acute":"Latin capital letter u with double acute","Latin capital letter u with macron":"Latin capital letter u with macron","Latin capital letter u with ogonek":"Latin capital letter u with ogonek","Latin capital letter u with ring above":"Latin capital letter u with ring above","Latin capital letter u with tilde":"Latin capital letter u with tilde","Latin capital letter w with circumflex":"Latin capital letter w with circumflex","Latin capital letter y with circumflex":"Latin capital letter y with circumflex","Latin capital letter y with diaeresis":"Latin capital letter y with diaeresis","Latin capital letter z with acute":"Latin capital letter z with acute","Latin capital letter z with caron":"Latin capital letter z with caron","Latin capital letter z with dot above":"Latin capital letter z with dot above","Latin capital ligature ij":"Latin capital ligature ij","Latin capital ligature oe":"Latin capital ligature oe","Latin small letter a with breve":"Latin small letter a with breve","Latin small letter a with macron":"Latin small letter a with macron","Latin small letter a with ogonek":"Latin small letter a with ogonek","Latin small letter c with acute":"Latin small letter c with acute","Latin small letter c with caron":"Latin small letter c with caron","Latin small letter c with circumflex":"Latin small letter c with circumflex","Latin small letter c with dot above":"Latin small letter c with dot above","Latin small letter d with caron":"Latin small letter d with caron","Latin small letter d with stroke":"Latin small letter d with stroke","Latin small letter dotless i":"Latin small letter dotless i","Latin small letter e with breve":"Latin small letter e with breve","Latin small letter e with caron":"Latin small letter e with caron","Latin small letter e with dot above":"Latin small letter e with dot above","Latin small letter e with macron":"Latin small letter e with macron","Latin small letter e with ogonek":"Latin small letter e with ogonek","Latin small letter eng":"Latin small letter eng","Latin small letter f with hook":"Latin small letter f with hook","Latin small letter g with breve":"Latin small letter g with breve","Latin small letter g with cedilla":"Latin small letter g with cedilla","Latin small letter g with circumflex":"Latin small letter g with circumflex","Latin small letter g with dot above":"Latin small letter g with dot above","Latin small letter h with circumflex":"Latin small letter h with circumflex","Latin small letter h with stroke":"Latin small letter h with stroke","Latin small letter i with breve":"Latin small letter i with breve","Latin small letter i with macron":"Latin small letter i with macron","Latin small letter i with ogonek":"Latin small letter i with ogonek","Latin small letter i with tilde":"Latin small letter i with tilde","Latin small letter j with circumflex":"Latin small letter j with circumflex","Latin small letter k with cedilla":"Latin small letter k with cedilla","Latin small letter kra":"Latin small letter kra","Latin small letter l with acute":"Latin small letter l with acute","Latin small letter l with caron":"Latin small letter l with caron","Latin small letter l with cedilla":"Latin small letter l with cedilla","Latin small letter l with middle dot":"Latin small letter l with middle dot","Latin small letter l with stroke":"Latin small letter l with stroke","Latin small letter long s":"Latin small letter long s","Latin small letter n preceded by apostrophe":"Latin small letter n preceded by apostrophe","Latin small letter n with acute":"Latin small letter n with acute","Latin small letter n with caron":"Latin small letter n with caron","Latin small letter n with cedilla":"Latin small letter n with cedilla","Latin small letter o with breve":"Latin small letter o with breve","Latin small letter o with double acute":"Latin small letter o with double acute","Latin small letter o with macron":"Latin small letter o with macron","Latin small letter r with acute":"Latin small letter r with acute","Latin small letter r with caron":"Latin small letter r with caron","Latin small letter r with cedilla":"Latin small letter r with cedilla","Latin small letter s with acute":"Latin small letter s with acute","Latin small letter s with caron":"Latin small letter s with caron","Latin small letter s with cedilla":"Latin small letter s with cedilla","Latin small letter s with circumflex":"Latin small letter s with circumflex","Latin small letter t with caron":"Latin small letter t with caron","Latin small letter t with cedilla":"Latin small letter t with cedilla","Latin small letter t with stroke":"Latin small letter t with stroke","Latin small letter u with breve":"Latin small letter u with breve","Latin small letter u with double acute":"Latin small letter u with double acute","Latin small letter u with macron":"Latin small letter u with macron","Latin small letter u with ogonek":"Latin small letter u with ogonek","Latin small letter u with ring above":"Latin small letter u with ring above","Latin small letter u with tilde":"Latin small letter u with tilde","Latin small letter w with circumflex":"Latin small letter w with circumflex","Latin small letter y with circumflex":"Latin small letter y with circumflex","Latin small letter z with acute":"Latin small letter z with acute","Latin small letter z with caron":"Latin small letter z with caron","Latin small letter z with dot above":"Latin small letter z with dot above","Latin small ligature ij":"Latin small ligature ij","Latin small ligature oe":"Latin small ligature oe","Left double quotation mark":"Left double quotation mark","Left single quotation mark":"Left single quotation mark","Left-pointing double angle quotation mark":"Left-pointing double angle quotation mark","leftwards arrow to bar":"leftwards arrow to bar","leftwards dashed arrow":"leftwards dashed arrow","leftwards double arrow":"leftwards double arrow","Less-than or equal to":"Less-than or equal to","Less-than sign":"Less-than sign","Lira sign":"Lira sign","Livre tournois sign":"Livre tournois sign","Logical and":"Logical and","Logical or":"Logical or",Macron:"Macron","Manat sign":"Manat sign","Mill sign":"Mill sign","Minus sign":"Minus sign","Multiplication sign":"Multiplication sign","N-ary product":"N-ary product","N-ary summation":"N-ary summation",Nabla:"Nabla","Naira sign":"Naira sign","New sheqel sign":"New sheqel sign","Nordic mark sign":"Nordic mark sign","Not an element of":"Not an element of","Not equal to":"Not equal to","Not sign":"Not sign","on with exclamation mark with left right arrow above":"on with exclamation mark with left right arrow above",Overline:"Overline","Paragraph sign":"Paragraph sign","Partial differential":"Partial differential","Per mille sign":"Per mille sign","Per ten thousand sign":"Per ten thousand sign","Peseta sign":"Peseta sign","Peso sign":"Peso sign","Plus-minus sign":"Plus-minus sign","Pound sign":"Pound sign","Proportional to":"Proportional to","Question exclamation mark":"Question exclamation mark","Registered sign":"Registered sign","Reversed paragraph sign":"Reversed paragraph sign","Right double quotation mark":"Right double quotation mark","Right single quotation mark":"Right single quotation mark","Right-pointing double angle quotation mark":"Right-pointing double angle quotation mark","rightwards arrow to bar":"rightwards arrow to bar","rightwards dashed arrow":"rightwards dashed arrow","rightwards double arrow":"rightwards double arrow","Ruble sign":"Ruble sign","Rupee sign":"Rupee sign","Section sign":"Section sign","Single left-pointing angle quotation mark":"Single left-pointing angle quotation mark","Single low-9 quotation mark":"Single low-9 quotation mark","Single right-pointing angle quotation mark":"Single right-pointing angle quotation mark","soon with rightwards arrow above":"soon with rightwards arrow above","Special characters":"Special characters","Spesmilo sign":"Spesmilo sign","Square root":"Square root","Tenge sign":"Tenge sign","There exists":"There exists","Tilde operator":"Tilde operator","top with upwards arrow above":"top with upwards arrow above","Trade mark sign":"Trade mark sign","Tugrik sign":"Tugrik sign","Turkish lira sign":"Turkish lira sign","Two dot leader":"Two dot leader",Union:"Union","up down arrow with base":"up down arrow with base","upwards arrow to bar":"upwards arrow to bar","upwards dashed arrow":"upwards dashed arrow","upwards double arrow":"upwards double arrow","Vulgar fraction one half":"Vulgar fraction one half","Vulgar fraction one quarter":"Vulgar fraction one quarter","Vulgar fraction three quarters":"Vulgar fraction three quarters","Won sign":"Won sign","Yen sign":"Yen sign"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(t){const a=t.hi=t.hi||{};a.dictionary=Object.assign(a.dictionary||{},{"Almost equal to":"Almost equal to",Angle:"Angle","Approximately equal to":"Approximately equal to","Asterisk operator":"Asterisk operator","Austral sign":"Austral sign","back with leftwards arrow above":"back with leftwards arrow above","Bitcoin sign":"Bitcoin sign","Cedi sign":"Cedi sign","Cent sign":"Cent sign","Character categories":"Character categories","Colon sign":"Colon sign","Contains as member":"Contains as member","Copyright sign":"Copyright sign","Cruzeiro sign":"Cruzeiro sign","Currency sign":"Currency sign","Degree sign":"Degree sign","Division sign":"Division sign","Dollar sign":"Dollar sign","Dong sign":"Dong sign","Double dagger":"Double dagger","Double exclamation mark":"Double exclamation mark","Double low-9 quotation mark":"Double low-9 quotation mark","Double question mark":"Double question mark","downwards arrow to bar":"downwards arrow to bar","downwards dashed arrow":"downwards dashed arrow","downwards double arrow":"downwards double arrow","downwards simple arrow":"सिम्पल ऐरो नीचे की तरफ","Drachma sign":"Drachma sign","Element of":"Element of","Em dash":"Em dash","Empty set":"Empty set","En dash":"En dash","end with leftwards arrow above":"end with leftwards arrow above","Euro sign":"Euro sign","Euro-currency sign":"Euro-currency sign","Exclamation question mark":"Exclamation question mark","For all":"For all","Fraction slash":"Fraction slash","French franc sign":"French franc sign","German penny sign":"German penny sign","Greater-than or equal to":"Greater-than or equal to","Greater-than sign":"Greater-than sign","Guarani sign":"Guarani sign","Horizontal ellipsis":"Horizontal ellipsis","Hryvnia sign":"Hryvnia sign","Identical to":"Identical to","Indian rupee sign":"Indian rupee sign",Infinity:"Infinity",Integral:"Integral",Intersection:"Intersection","Inverted exclamation mark":"Inverted exclamation mark","Inverted question mark":"Inverted question mark","Kip sign":"Kip sign","Latin capital letter a with breve":"Latin capital letter a with breve","Latin capital letter a with macron":"Latin capital letter a with macron","Latin capital letter a with ogonek":"Latin capital letter a with ogonek","Latin capital letter c with acute":"Latin capital letter c with acute","Latin capital letter c with caron":"Latin capital letter c with caron","Latin capital letter c with circumflex":"Latin capital letter c with circumflex","Latin capital letter c with dot above":"Latin capital letter c with dot above","Latin capital letter d with caron":"Latin capital letter d with caron","Latin capital letter d with stroke":"Latin capital letter d with stroke","Latin capital letter e with breve":"Latin capital letter e with breve","Latin capital letter e with caron":"Latin capital letter e with caron","Latin capital letter e with dot above":"Latin capital letter e with dot above","Latin capital letter e with macron":"Latin capital letter e with macron","Latin capital letter e with ogonek":"Latin capital letter e with ogonek","Latin capital letter eng":"Latin capital letter eng","Latin capital letter g with breve":"Latin capital letter g with breve","Latin capital letter g with cedilla":"Latin capital letter g with cedilla","Latin capital letter g with circumflex":"Latin capital letter g with circumflex","Latin capital letter g with dot above":"Latin capital letter g with dot above","Latin capital letter h with circumflex":"Latin capital letter h with circumflex","Latin capital letter h with stroke":"Latin capital letter h with stroke","Latin capital letter i with breve":"Latin capital letter i with breve","Latin capital letter i with dot above":"Latin capital letter i with dot above","Latin capital letter i with macron":"Latin capital letter i with macron","Latin capital letter i with ogonek":"Latin capital letter i with ogonek","Latin capital letter i with tilde":"Latin capital letter i with tilde","Latin capital letter j with circumflex":"Latin capital letter j with circumflex","Latin capital letter k with cedilla":"Latin capital letter k with cedilla","Latin capital letter l with acute":"Latin capital letter l with acute","Latin capital letter l with caron":"Latin capital letter l with caron","Latin capital letter l with cedilla":"Latin capital letter l with cedilla","Latin capital letter l with middle dot":"Latin capital letter l with middle dot","Latin capital letter l with stroke":"Latin capital letter l with stroke","Latin capital letter n with acute":"Latin capital letter n with acute","Latin capital letter n with caron":"Latin capital letter n with caron","Latin capital letter n with cedilla":"Latin capital letter n with cedilla","Latin capital letter o with breve":"Latin capital letter o with breve","Latin capital letter o with double acute":"Latin capital letter o with double acute","Latin capital letter o with macron":"Latin capital letter o with macron","Latin capital letter r with acute":"Latin capital letter r with acute","Latin capital letter r with caron":"Latin capital letter r with caron","Latin capital letter r with cedilla":"Latin capital letter r with cedilla","Latin capital letter s with acute":"Latin capital letter s with acute","Latin capital letter s with caron":"Latin capital letter s with caron","Latin capital letter s with cedilla":"Latin capital letter s with cedilla","Latin capital letter s with circumflex":"Latin capital letter s with circumflex","Latin capital letter t with caron":"Latin capital letter t with caron","Latin capital letter t with cedilla":"Latin capital letter t with cedilla","Latin capital letter t with stroke":"Latin capital letter t with stroke","Latin capital letter u with breve":"Latin capital letter u with breve","Latin capital letter u with double acute":"Latin capital letter u with double acute","Latin capital letter u with macron":"Latin capital letter u with macron","Latin capital letter u with ogonek":"Latin capital letter u with ogonek","Latin capital letter u with ring above":"Latin capital letter u with ring above","Latin capital letter u with tilde":"Latin capital letter u with tilde","Latin capital letter w with circumflex":"Latin capital letter w with circumflex","Latin capital letter y with circumflex":"Latin capital letter y with circumflex","Latin capital letter y with diaeresis":"Latin capital letter y with diaeresis","Latin capital letter z with acute":"Latin capital letter z with acute","Latin capital letter z with caron":"Latin capital letter z with caron","Latin capital letter z with dot above":"Latin capital letter z with dot above","Latin capital ligature ij":"Latin capital ligature ij","Latin capital ligature oe":"Latin capital ligature oe","Latin small letter a with breve":"Latin small letter a with breve","Latin small letter a with macron":"Latin small letter a with macron","Latin small letter a with ogonek":"Latin small letter a with ogonek","Latin small letter c with acute":"Latin small letter c with acute","Latin small letter c with caron":"Latin small letter c with caron","Latin small letter c with circumflex":"Latin small letter c with circumflex","Latin small letter c with dot above":"Latin small letter c with dot above","Latin small letter d with caron":"Latin small letter d with caron","Latin small letter d with stroke":"Latin small letter d with stroke","Latin small letter dotless i":"Latin small letter dotless i","Latin small letter e with breve":"Latin small letter e with breve","Latin small letter e with caron":"Latin small letter e with caron","Latin small letter e with dot above":"Latin small letter e with dot above","Latin small letter e with macron":"Latin small letter e with macron","Latin small letter e with ogonek":"Latin small letter e with ogonek","Latin small letter eng":"Latin small letter eng","Latin small letter f with hook":"Latin small letter f with hook","Latin small letter g with breve":"Latin small letter g with breve","Latin small letter g with cedilla":"Latin small letter g with cedilla","Latin small letter g with circumflex":"Latin small letter g with circumflex","Latin small letter g with dot above":"Latin small letter g with dot above","Latin small letter h with circumflex":"Latin small letter h with circumflex","Latin small letter h with stroke":"Latin small letter h with stroke","Latin small letter i with breve":"Latin small letter i with breve","Latin small letter i with macron":"Latin small letter i with macron","Latin small letter i with ogonek":"Latin small letter i with ogonek","Latin small letter i with tilde":"Latin small letter i with tilde","Latin small letter j with circumflex":"Latin small letter j with circumflex","Latin small letter k with cedilla":"Latin small letter k with cedilla","Latin small letter kra":"Latin small letter kra","Latin small letter l with acute":"Latin small letter l with acute","Latin small letter l with caron":"Latin small letter l with caron","Latin small letter l with cedilla":"Latin small letter l with cedilla","Latin small letter l with middle dot":"Latin small letter l with middle dot","Latin small letter l with stroke":"Latin small letter l with stroke","Latin small letter long s":"Latin small letter long s","Latin small letter n preceded by apostrophe":"Latin small letter n preceded by apostrophe","Latin small letter n with acute":"Latin small letter n with acute","Latin small letter n with caron":"Latin small letter n with caron","Latin small letter n with cedilla":"Latin small letter n with cedilla","Latin small letter o with breve":"Latin small letter o with breve","Latin small letter o with double acute":"Latin small letter o with double acute","Latin small letter o with macron":"Latin small letter o with macron","Latin small letter r with acute":"Latin small letter r with acute","Latin small letter r with caron":"Latin small letter r with caron","Latin small letter r with cedilla":"Latin small letter r with cedilla","Latin small letter s with acute":"Latin small letter s with acute","Latin small letter s with caron":"Latin small letter s with caron","Latin small letter s with cedilla":"Latin small letter s with cedilla","Latin small letter s with circumflex":"Latin small letter s with circumflex","Latin small letter t with caron":"Latin small letter t with caron","Latin small letter t with cedilla":"Latin small letter t with cedilla","Latin small letter t with stroke":"Latin small letter t with stroke","Latin small letter u with breve":"Latin small letter u with breve","Latin small letter u with double acute":"Latin small letter u with double acute","Latin small letter u with macron":"Latin small letter u with macron","Latin small letter u with ogonek":"Latin small letter u with ogonek","Latin small letter u with ring above":"Latin small letter u with ring above","Latin small letter u with tilde":"Latin small letter u with tilde","Latin small letter w with circumflex":"Latin small letter w with circumflex","Latin small letter y with circumflex":"Latin small letter y with circumflex","Latin small letter z with acute":"Latin small letter z with acute","Latin small letter z with caron":"Latin small letter z with caron","Latin small letter z with dot above":"Latin small letter z with dot above","Latin small ligature ij":"Latin small ligature ij","Latin small ligature oe":"Latin small ligature oe","Left double quotation mark":"Left double quotation mark","Left single quotation mark":"Left single quotation mark","Left-pointing double angle quotation mark":"Left-pointing double angle quotation mark","leftwards arrow to bar":"leftwards arrow to bar","leftwards dashed arrow":"leftwards dashed arrow","leftwards double arrow":"leftwards double arrow","leftwards simple arrow":"सिम्पल ऐरो बाएं तरफ","Less-than or equal to":"Less-than or equal to","Less-than sign":"Less-than sign","Lira sign":"Lira sign","Livre tournois sign":"Livre tournois sign","Logical and":"Logical and","Logical or":"Logical or",Macron:"Macron","Manat sign":"Manat sign","Mill sign":"Mill sign","Minus sign":"Minus sign","Multiplication sign":"Multiplication sign","N-ary product":"N-ary product","N-ary summation":"N-ary summation",Nabla:"Nabla","Naira sign":"Naira sign","New sheqel sign":"New sheqel sign","Nordic mark sign":"Nordic mark sign","Not an element of":"Not an element of","Not equal to":"Not equal to","Not sign":"Not sign","on with exclamation mark with left right arrow above":"on with exclamation mark with left right arrow above",Overline:"Overline","Paragraph sign":"Paragraph sign","Partial differential":"Partial differential","Per mille sign":"Per mille sign","Per ten thousand sign":"Per ten thousand sign","Peseta sign":"Peseta sign","Peso sign":"Peso sign","Plus-minus sign":"Plus-minus sign","Pound sign":"Pound sign","Proportional to":"Proportional to","Question exclamation mark":"Question exclamation mark","Registered sign":"Registered sign","Reversed paragraph sign":"Reversed paragraph sign","Right double quotation mark":"Right double quotation mark","Right single quotation mark":"Right single quotation mark","Right-pointing double angle quotation mark":"Right-pointing double angle quotation mark","rightwards arrow to bar":"rightwards arrow to bar","rightwards dashed arrow":"rightwards dashed arrow","rightwards double arrow":"rightwards double arrow","rightwards simple arrow":"सिम्पल ऐरो दाएं तरफ","Ruble sign":"Ruble sign","Rupee sign":"Rupee sign","Section sign":"Section sign","Single left-pointing angle quotation mark":"Single left-pointing angle quotation mark","Single low-9 quotation mark":"Single low-9 quotation mark","Single right-pointing angle quotation mark":"Single right-pointing angle quotation mark","soon with rightwards arrow above":"soon with rightwards arrow above","Special characters":"Special characters","Spesmilo sign":"Spesmilo sign","Square root":"Square root","Tenge sign":"Tenge sign","There exists":"There exists","Tilde operator":"Tilde operator","top with upwards arrow above":"top with upwards arrow above","Trade mark sign":"Trade mark sign","Tugrik sign":"Tugrik sign","Turkish lira sign":"Turkish lira sign","Two dot leader":"Two dot leader",Union:"Union","up down arrow with base":"up down arrow with base","upwards arrow to bar":"upwards arrow to bar","upwards dashed arrow":"upwards dashed arrow","upwards double arrow":"upwards double arrow","upwards simple arrow":"सिम्पल ऐरो ऊपर की तरफ","Vulgar fraction one half":"Vulgar fraction one half","Vulgar fraction one quarter":"Vulgar fraction one quarter","Vulgar fraction three quarters":"Vulgar fraction three quarters","Won sign":"Won sign","Yen sign":"Yen sign"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/special-characters/translations/hu.js b/core/assets/vendor/ckeditor5/special-characters/translations/hu.js
index cb7bfbdd8d..c1bfd35572 100644
--- a/core/assets/vendor/ckeditor5/special-characters/translations/hu.js
+++ b/core/assets/vendor/ckeditor5/special-characters/translations/hu.js
@@ -1 +1 @@
-!function(t){const e=t.hu=t.hu||{};e.dictionary=Object.assign(e.dictionary||{},{"Almost equal to":"Majdnem egyenlő",Angle:"Szög","Approximately equal to":"Közelítőleg egyenlő","Asterisk operator":"Csillag műveleti jel","Austral sign":"Ausztrál szimbólum","back with leftwards arrow above":"back felirat felette balra nyíllal","Bitcoin sign":"Bitcoin jel","Cedi sign":"Cedi szimbólum","Cent sign":"Cent jel","Character categories":"Karakterek kategóriái","Colon sign":"Kettőspont","Contains as member":"Tagként tartalmaz","Copyright sign":"Copyright jele","Cruzeiro sign":"Cruizero szimbólum","Currency sign":"Pénznem jel","Degree sign":"Fokjel","Division sign":"Osztásjel","Dollar sign":"Dollár jel","Dong sign":"Dong szimbólum","Double dagger":"Kettős kereszt","Double exclamation mark":"Kettős felkiáltójel","Double low-9 quotation mark":"Dupla 9-es alakú alsó idézőjel","Double question mark":"Dupla kérdőjel","downwards arrow to bar":"vonalig érő lefele nyíl","downwards dashed arrow":"szaggatott nyíl lefelé","downwards double arrow":"dupla nyíl lefelé","Drachma sign":"Drachma szimbólum","Element of":"Része","Em dash":"Kvirtmínusz","Empty set":"Üres halmaz","En dash":"Félkvirtmínusz","end with leftwards arrow above":"end felirat felette balra nyíllal","Euro sign":"Euró jel","Euro-currency sign":"Euró pénznem jel","Exclamation question mark":"Felkiáltó- és kérdőjel","For all":"Mindenre","Fraction slash":"Törtvonás","French franc sign":"Francia frank jel","German penny sign":"Német pfennig szimbólum","Greater-than or equal to":"Nagyobb vagy egyenlő jel","Greater-than sign":"Nagyobb jel","Guarani sign":"Guarani  szimbólum","Horizontal ellipsis":"Vízszintes három pont","Hryvnia sign":"Hrivnya szimbólum","Identical to":"Azonos","Indian rupee sign":"Indiai rúpia szimbólum",Infinity:"Végtelen",Integral:"Integrál",Intersection:"Metszet","Inverted exclamation mark":"Fordított felkiáltójel","Inverted question mark":"Fordított kérdőjel","Kip sign":"Kip szimbólum","Latin capital letter a with breve":"Latin nagy a betű brevével","Latin capital letter a with macron":"Latin nagy a betű macronnal","Latin capital letter a with ogonek":"Latin nagy a betű ogonekkel","Latin capital letter c with acute":"Latin nagy c betű éles ékezettel","Latin capital letter c with caron":"Latin nagy c betű hacsekkel","Latin capital letter c with circumflex":"Latin nagy c betű háztető ékezettel","Latin capital letter c with dot above":"Latin nagy c betű egy pontos ékezettel","Latin capital letter d with caron":"Latin nagy d betű hacsekkel","Latin capital letter d with stroke":"Latin nagy d betű áthúzva","Latin capital letter e with breve":"Latin nagy e betű brevével","Latin capital letter e with caron":"Latin nagy e betű hacsekkel","Latin capital letter e with dot above":"Latin nagy e betű egy pontos ékezettel","Latin capital letter e with macron":"Latin nagy e betű macronnal","Latin capital letter e with ogonek":"Latin nagy e betű ogonekkel","Latin capital letter eng":"Latin nagybetűs eng","Latin capital letter g with breve":"Latin nagy g betű brevével","Latin capital letter g with cedilla":"Latin nagy g betű cedillával","Latin capital letter g with circumflex":"Latin nagy g betű háztető ékezettel","Latin capital letter g with dot above":"Latin nagy g betű egy pontos ékezettel","Latin capital letter h with circumflex":"Latin nagy h betű háztető ékezettel","Latin capital letter h with stroke":"Latin nagy h betű áthúzva","Latin capital letter i with breve":"Latin nagy i betű brevével","Latin capital letter i with dot above":"Latin nagy i betű egy pontos ékezettel","Latin capital letter i with macron":"Latin nagy i betű macronnal","Latin capital letter i with ogonek":"Latin nagy i betű ogonekkel","Latin capital letter i with tilde":"Latin nagy i betű tildével","Latin capital letter j with circumflex":"Latin nagy j betű háztető ékezettel","Latin capital letter k with cedilla":"Latin nagy k betű cedillával","Latin capital letter l with acute":"Latin nagy l betű éles ékezettel","Latin capital letter l with caron":"Latin nagy l betű hacsekkel","Latin capital letter l with cedilla":"Latin nagy l betű cedillával","Latin capital letter l with middle dot":"Latin nagy l betű középen ponttal","Latin capital letter l with stroke":"Latin nagy l betű áthúzva","Latin capital letter n with acute":"Latin nagy n betű éles ékezettel","Latin capital letter n with caron":"Latin nagy n betű hacsekkel","Latin capital letter n with cedilla":"Latin nagy n betű cedillával","Latin capital letter o with breve":"Latin nagy o betű brevével","Latin capital letter o with double acute":"Latin nagy o betű kettős éles ékezettel","Latin capital letter o with macron":"Latin nagy o betű macronnal","Latin capital letter r with acute":"Latin nagy r betű éles ékezettel","Latin capital letter r with caron":"Latin nagy r betű hacsekkel","Latin capital letter r with cedilla":"Latin nagy r betű cedillával","Latin capital letter s with acute":"Latin nagy s betű éles ékezettel","Latin capital letter s with caron":"Latin nagy s betű hacsekkel","Latin capital letter s with cedilla":"Latin nagy s betű cedillával","Latin capital letter s with circumflex":"Latin nagy s betű háztető ékezettel","Latin capital letter t with caron":"Latin nagy t betű hacsekkel","Latin capital letter t with cedilla":"Latin nagy t betű cedillával","Latin capital letter t with stroke":"Latin nagy t betű áthúzva","Latin capital letter u with breve":"Latin nagy u betű brevével","Latin capital letter u with double acute":"Latin nagy u betű kettős éles ékezettel","Latin capital letter u with macron":"Latin nagy u betű macronnal","Latin capital letter u with ogonek":"Latin nagy u betű ogonekkel","Latin capital letter u with ring above":"Latin nagy u betű karika ékezettel","Latin capital letter u with tilde":"Latin nagy u betű tildével","Latin capital letter w with circumflex":"Latin nagy w betű háztető ékezettel","Latin capital letter y with circumflex":"Latin nagy y betű háztető ékezettel","Latin capital letter y with diaeresis":"Latin nagy y betű diarézissel","Latin capital letter z with acute":"Latin nagy z betű éles ékezettel","Latin capital letter z with caron":"Latin nagy z betű hacsekkel","Latin capital letter z with dot above":"Latin nagy z betű egy pontos ékezettel","Latin capital ligature ij":"Latin nagy ij ligatúra","Latin capital ligature oe":"Latin nagy oe ligatúra","Latin small letter a with breve":"Latin kis a betű brevével","Latin small letter a with macron":"Latin kis a betű macronnal","Latin small letter a with ogonek":"Latin kis a betű ogonekkel","Latin small letter c with acute":"Latin kis c betű betű éles ékezettel","Latin small letter c with caron":"Latin kis c betű hacsekkel","Latin small letter c with circumflex":"Latin kis c betű betű háztető ékezettel","Latin small letter c with dot above":"Latin kis c betű egy pontos ékezettel","Latin small letter d with caron":"Latin kis d betű hacsekkel","Latin small letter d with stroke":"Latin kis d betű áthúzva","Latin small letter dotless i":"Latin pont nélküli kis i betű","Latin small letter e with breve":"Latin kis e betű brevével","Latin small letter e with caron":"Latin kis e betű hacsekkel","Latin small letter e with dot above":"Latin kis e betű egy pontos ékezettel","Latin small letter e with macron":"Latin kis e betű macronnal","Latin small letter e with ogonek":"Latin kis e betű ogonekkel","Latin small letter eng":"Latin kisbetűs eng","Latin small letter f with hook":"Latin kisbetűs f-horog","Latin small letter g with breve":"Latin kis g betű brevével","Latin small letter g with cedilla":"Latin kis g betű cedillával","Latin small letter g with circumflex":"Latin kis g betű háztető ékezettel","Latin small letter g with dot above":"Latin kis g betű egy pontos ékezettel","Latin small letter h with circumflex":"Latin kis h betű háztető ékezettel","Latin small letter h with stroke":"Latin kis h betű áthúzva","Latin small letter i with breve":"Latin kis i betű brevével","Latin small letter i with macron":"Latin kis i betű macronnal","Latin small letter i with ogonek":"Latin kis i betű ogonekkel","Latin small letter i with tilde":"Latin kis i betű tildével","Latin small letter j with circumflex":"Latin kis j betű háztető ékezettel","Latin small letter k with cedilla":"Latin kis k betű cedillával","Latin small letter kra":"latin kisbetűs kra","Latin small letter l with acute":"Latin kis l betű éles ékezettel","Latin small letter l with caron":"Latin kis l betű hacsekkel","Latin small letter l with cedilla":"Latin kis l betű cedillával","Latin small letter l with middle dot":"Latin kis l betű középen ponttal","Latin small letter l with stroke":"Latin kis l betű áthúzva","Latin small letter long s":"Latin kisbetűs hosszú s","Latin small letter n preceded by apostrophe":"Latin kis n betű előtte aposztróffal","Latin small letter n with acute":"Latin kis n betű éles ékezettel","Latin small letter n with caron":"Latin kis n betű hacsekkel","Latin small letter n with cedilla":"Latin kis n betű cedillával","Latin small letter o with breve":"Latin kis o betű brevével","Latin small letter o with double acute":"Latin kis o betű kettős éles ékezettel","Latin small letter o with macron":"Latin kis o betű macronnal","Latin small letter r with acute":"Latin kis r betű éles ékezettel","Latin small letter r with caron":"Latin kis r betű hacsekkel","Latin small letter r with cedilla":"Latin kis r betű cedillával","Latin small letter s with acute":"Latin kis s betű éles ékezettel","Latin small letter s with caron":"Latin kis s betű hacsekkel","Latin small letter s with cedilla":"Latin kis s betű cedillával","Latin small letter s with circumflex":"Latin kis s betű háztető ékezettel","Latin small letter t with caron":"Latin kis t betű hacsekkel","Latin small letter t with cedilla":"Latin kis t betű cedillával","Latin small letter t with stroke":"Latin kis t betű áthúzva","Latin small letter u with breve":"Latin kis u betű brevével","Latin small letter u with double acute":"Latin kis u betű kettős éles ékezettel","Latin small letter u with macron":"Latin kis u betű macronnal","Latin small letter u with ogonek":"Latin kis u betű ogonekkel","Latin small letter u with ring above":"Latin kis u betű karika ékezettel","Latin small letter u with tilde":"Latin kis u betű tildével","Latin small letter w with circumflex":"Latin kis w betű háztető ékezettel","Latin small letter y with circumflex":"Latin kis y betű háztető ékezettel","Latin small letter z with acute":"Latin kis z betű éles ékezettel","Latin small letter z with caron":"Latin kis z betű hacsekkel","Latin small letter z with dot above":"Latin kis z betű egy pontos ékezettel","Latin small ligature ij":"Latin kis ij ligatúra","Latin small ligature oe":"Latin kis oe ligatúra","Left double quotation mark":"Bal oldali dupla idézőjel","Left single quotation mark":"Bal oldali szimpla idézőjel","Left-pointing double angle quotation mark":"Bal oldali dupla szögletes idézőjel","leftwards arrow to bar":"vonalig érő balra nyíl","leftwards dashed arrow":"szaggatott nyíl balra","leftwards double arrow":"dupla nyíl balra","Less-than or equal to":"Kisebb vagy egyenlő jel","Less-than sign":"Kisebb jel","Lira sign":"Líra jel","Livre tournois sign":"Livre tournois szimbólum","Logical and":"Logikai és ","Logical or":"Logikai vagy",Macron:"Macron","Manat sign":"Manat szimbólum","Mill sign":"Mill szimbólum","Minus sign":"Mínuszjel","Multiplication sign":"Szorzójel","N-ary product":"N-áris produktum","N-ary summation":"N-áris szumma",Nabla:"Nabla","Naira sign":"Naira szimbólum","New sheqel sign":"Új sékel szimbólum","Nordic mark sign":"Északi márka szimbólum","Not an element of":"Nem része","Not equal to":"Nem egyenlő","Not sign":"Nem szimbólum","on with exclamation mark with left right arrow above":"on felirat felkiáltójellel és felette jobbra-balra nyíllal",Overline:"Föléhúzás","Paragraph sign":"Bekezdésjel","Partial differential":"Parciális derivált","Per mille sign":"Ezrelékjel","Per ten thousand sign":"Tízezrelékjel","Peseta sign":"Peseta szimbólum","Peso sign":"Peso szimbólum","Plus-minus sign":"Pluszmínusz-jel","Pound sign":"Font jel","Proportional to":"Aránylik","Question exclamation mark":"Kérdő- és felkiáltójel","Registered sign":"Bejegyzett védjegy szimbólum","Reversed paragraph sign":"Fordított bekezdésjel","Right double quotation mark":"Jobb oldali dupla idézőjel","Right single quotation mark":"Jobb oldali szimpla idézőjel","Right-pointing double angle quotation mark":"Jobb oldali dupla szögletes idézőjel","rightwards arrow to bar":"vonalig érő jobbra nyíl","rightwards dashed arrow":"szaggatott nyíl jobbra","rightwards double arrow":"dupla nyíl jobbra","Ruble sign":"Rubel szimbólum","Rupee sign":"Rúpia szimbólum","Section sign":"Szakaszjel","Single left-pointing angle quotation mark":"Szimpla bal oldali szögletes idézőjel","Single low-9 quotation mark":"Szimpla 9-es alakú alsó idézőjel","Single right-pointing angle quotation mark":"Jobb oldali szimpla szögletes idézőjel","soon with rightwards arrow above":"soon felirat felette jobbra nyíllal","Special characters":"Speciális karakterek","Spesmilo sign":"Spesmilo szimbólum","Square root":"Négyzetgyök","Tenge sign":"Tenge szimbólum","There exists":"Létezik","Tilde operator":"Hullámvonal","top with upwards arrow above":"top felirat felette felfele nyíllal","Trade mark sign":"Kereskedelmi védjegy szimbólum","Tugrik sign":"Tugrik szimbólum","Turkish lira sign":"Török líra szimbólum","Two dot leader":"Két bevezető pont",Union:"Egyesítés","up down arrow with base":"fel-le nyíl alapvonallal","upwards arrow to bar":"vonalig érő felfele nyíl","upwards dashed arrow":"szaggatott nyíl felfelé","upwards double arrow":"dupla nyíl felfelé","Vulgar fraction one half":"Vulgáris tört egyketted","Vulgar fraction one quarter":"Vulgáris tört egynegyed","Vulgar fraction three quarters":"Vulgáris tört háromnegyed","Won sign":"Won szimbólum","Yen sign":"Yen jel"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(t){const e=t.hu=t.hu||{};e.dictionary=Object.assign(e.dictionary||{},{"Almost equal to":"Majdnem egyenlő",Angle:"Szög","Approximately equal to":"Közelítőleg egyenlő","Asterisk operator":"Csillag műveleti jel","Austral sign":"Ausztrál szimbólum","back with leftwards arrow above":"back felirat felette balra nyíllal","Bitcoin sign":"Bitcoin jel","Cedi sign":"Cedi szimbólum","Cent sign":"Cent jel","Character categories":"Karakterek kategóriái","Colon sign":"Kettőspont","Contains as member":"Tagként tartalmaz","Copyright sign":"Copyright jele","Cruzeiro sign":"Cruizero szimbólum","Currency sign":"Pénznem jel","Degree sign":"Fokjel","Division sign":"Osztásjel","Dollar sign":"Dollár jel","Dong sign":"Dong szimbólum","Double dagger":"Kettős kereszt","Double exclamation mark":"Kettős felkiáltójel","Double low-9 quotation mark":"Dupla 9-es alakú alsó idézőjel","Double question mark":"Dupla kérdőjel","downwards arrow to bar":"vonalig érő lefele nyíl","downwards dashed arrow":"szaggatott nyíl lefelé","downwards double arrow":"dupla nyíl lefelé","downwards simple arrow":"lefelé mutató egyszerű nyíl","Drachma sign":"Drachma szimbólum","Element of":"Része","Em dash":"Kvirtmínusz","Empty set":"Üres halmaz","En dash":"Félkvirtmínusz","end with leftwards arrow above":"end felirat felette balra nyíllal","Euro sign":"Euró jel","Euro-currency sign":"Euró pénznem jel","Exclamation question mark":"Felkiáltó- és kérdőjel","For all":"Mindenre","Fraction slash":"Törtvonás","French franc sign":"Francia frank jel","German penny sign":"Német pfennig szimbólum","Greater-than or equal to":"Nagyobb vagy egyenlő jel","Greater-than sign":"Nagyobb jel","Guarani sign":"Guarani  szimbólum","Horizontal ellipsis":"Vízszintes három pont","Hryvnia sign":"Hrivnya szimbólum","Identical to":"Azonos","Indian rupee sign":"Indiai rúpia szimbólum",Infinity:"Végtelen",Integral:"Integrál",Intersection:"Metszet","Inverted exclamation mark":"Fordított felkiáltójel","Inverted question mark":"Fordított kérdőjel","Kip sign":"Kip szimbólum","Latin capital letter a with breve":"Latin nagy a betű brevével","Latin capital letter a with macron":"Latin nagy a betű macronnal","Latin capital letter a with ogonek":"Latin nagy a betű ogonekkel","Latin capital letter c with acute":"Latin nagy c betű éles ékezettel","Latin capital letter c with caron":"Latin nagy c betű hacsekkel","Latin capital letter c with circumflex":"Latin nagy c betű háztető ékezettel","Latin capital letter c with dot above":"Latin nagy c betű egy pontos ékezettel","Latin capital letter d with caron":"Latin nagy d betű hacsekkel","Latin capital letter d with stroke":"Latin nagy d betű áthúzva","Latin capital letter e with breve":"Latin nagy e betű brevével","Latin capital letter e with caron":"Latin nagy e betű hacsekkel","Latin capital letter e with dot above":"Latin nagy e betű egy pontos ékezettel","Latin capital letter e with macron":"Latin nagy e betű macronnal","Latin capital letter e with ogonek":"Latin nagy e betű ogonekkel","Latin capital letter eng":"Latin nagybetűs eng","Latin capital letter g with breve":"Latin nagy g betű brevével","Latin capital letter g with cedilla":"Latin nagy g betű cedillával","Latin capital letter g with circumflex":"Latin nagy g betű háztető ékezettel","Latin capital letter g with dot above":"Latin nagy g betű egy pontos ékezettel","Latin capital letter h with circumflex":"Latin nagy h betű háztető ékezettel","Latin capital letter h with stroke":"Latin nagy h betű áthúzva","Latin capital letter i with breve":"Latin nagy i betű brevével","Latin capital letter i with dot above":"Latin nagy i betű egy pontos ékezettel","Latin capital letter i with macron":"Latin nagy i betű macronnal","Latin capital letter i with ogonek":"Latin nagy i betű ogonekkel","Latin capital letter i with tilde":"Latin nagy i betű tildével","Latin capital letter j with circumflex":"Latin nagy j betű háztető ékezettel","Latin capital letter k with cedilla":"Latin nagy k betű cedillával","Latin capital letter l with acute":"Latin nagy l betű éles ékezettel","Latin capital letter l with caron":"Latin nagy l betű hacsekkel","Latin capital letter l with cedilla":"Latin nagy l betű cedillával","Latin capital letter l with middle dot":"Latin nagy l betű középen ponttal","Latin capital letter l with stroke":"Latin nagy l betű áthúzva","Latin capital letter n with acute":"Latin nagy n betű éles ékezettel","Latin capital letter n with caron":"Latin nagy n betű hacsekkel","Latin capital letter n with cedilla":"Latin nagy n betű cedillával","Latin capital letter o with breve":"Latin nagy o betű brevével","Latin capital letter o with double acute":"Latin nagy o betű kettős éles ékezettel","Latin capital letter o with macron":"Latin nagy o betű macronnal","Latin capital letter r with acute":"Latin nagy r betű éles ékezettel","Latin capital letter r with caron":"Latin nagy r betű hacsekkel","Latin capital letter r with cedilla":"Latin nagy r betű cedillával","Latin capital letter s with acute":"Latin nagy s betű éles ékezettel","Latin capital letter s with caron":"Latin nagy s betű hacsekkel","Latin capital letter s with cedilla":"Latin nagy s betű cedillával","Latin capital letter s with circumflex":"Latin nagy s betű háztető ékezettel","Latin capital letter t with caron":"Latin nagy t betű hacsekkel","Latin capital letter t with cedilla":"Latin nagy t betű cedillával","Latin capital letter t with stroke":"Latin nagy t betű áthúzva","Latin capital letter u with breve":"Latin nagy u betű brevével","Latin capital letter u with double acute":"Latin nagy u betű kettős éles ékezettel","Latin capital letter u with macron":"Latin nagy u betű macronnal","Latin capital letter u with ogonek":"Latin nagy u betű ogonekkel","Latin capital letter u with ring above":"Latin nagy u betű karika ékezettel","Latin capital letter u with tilde":"Latin nagy u betű tildével","Latin capital letter w with circumflex":"Latin nagy w betű háztető ékezettel","Latin capital letter y with circumflex":"Latin nagy y betű háztető ékezettel","Latin capital letter y with diaeresis":"Latin nagy y betű diarézissel","Latin capital letter z with acute":"Latin nagy z betű éles ékezettel","Latin capital letter z with caron":"Latin nagy z betű hacsekkel","Latin capital letter z with dot above":"Latin nagy z betű egy pontos ékezettel","Latin capital ligature ij":"Latin nagy ij ligatúra","Latin capital ligature oe":"Latin nagy oe ligatúra","Latin small letter a with breve":"Latin kis a betű brevével","Latin small letter a with macron":"Latin kis a betű macronnal","Latin small letter a with ogonek":"Latin kis a betű ogonekkel","Latin small letter c with acute":"Latin kis c betű betű éles ékezettel","Latin small letter c with caron":"Latin kis c betű hacsekkel","Latin small letter c with circumflex":"Latin kis c betű betű háztető ékezettel","Latin small letter c with dot above":"Latin kis c betű egy pontos ékezettel","Latin small letter d with caron":"Latin kis d betű hacsekkel","Latin small letter d with stroke":"Latin kis d betű áthúzva","Latin small letter dotless i":"Latin pont nélküli kis i betű","Latin small letter e with breve":"Latin kis e betű brevével","Latin small letter e with caron":"Latin kis e betű hacsekkel","Latin small letter e with dot above":"Latin kis e betű egy pontos ékezettel","Latin small letter e with macron":"Latin kis e betű macronnal","Latin small letter e with ogonek":"Latin kis e betű ogonekkel","Latin small letter eng":"Latin kisbetűs eng","Latin small letter f with hook":"Latin kisbetűs f-horog","Latin small letter g with breve":"Latin kis g betű brevével","Latin small letter g with cedilla":"Latin kis g betű cedillával","Latin small letter g with circumflex":"Latin kis g betű háztető ékezettel","Latin small letter g with dot above":"Latin kis g betű egy pontos ékezettel","Latin small letter h with circumflex":"Latin kis h betű háztető ékezettel","Latin small letter h with stroke":"Latin kis h betű áthúzva","Latin small letter i with breve":"Latin kis i betű brevével","Latin small letter i with macron":"Latin kis i betű macronnal","Latin small letter i with ogonek":"Latin kis i betű ogonekkel","Latin small letter i with tilde":"Latin kis i betű tildével","Latin small letter j with circumflex":"Latin kis j betű háztető ékezettel","Latin small letter k with cedilla":"Latin kis k betű cedillával","Latin small letter kra":"latin kisbetűs kra","Latin small letter l with acute":"Latin kis l betű éles ékezettel","Latin small letter l with caron":"Latin kis l betű hacsekkel","Latin small letter l with cedilla":"Latin kis l betű cedillával","Latin small letter l with middle dot":"Latin kis l betű középen ponttal","Latin small letter l with stroke":"Latin kis l betű áthúzva","Latin small letter long s":"Latin kisbetűs hosszú s","Latin small letter n preceded by apostrophe":"Latin kis n betű előtte aposztróffal","Latin small letter n with acute":"Latin kis n betű éles ékezettel","Latin small letter n with caron":"Latin kis n betű hacsekkel","Latin small letter n with cedilla":"Latin kis n betű cedillával","Latin small letter o with breve":"Latin kis o betű brevével","Latin small letter o with double acute":"Latin kis o betű kettős éles ékezettel","Latin small letter o with macron":"Latin kis o betű macronnal","Latin small letter r with acute":"Latin kis r betű éles ékezettel","Latin small letter r with caron":"Latin kis r betű hacsekkel","Latin small letter r with cedilla":"Latin kis r betű cedillával","Latin small letter s with acute":"Latin kis s betű éles ékezettel","Latin small letter s with caron":"Latin kis s betű hacsekkel","Latin small letter s with cedilla":"Latin kis s betű cedillával","Latin small letter s with circumflex":"Latin kis s betű háztető ékezettel","Latin small letter t with caron":"Latin kis t betű hacsekkel","Latin small letter t with cedilla":"Latin kis t betű cedillával","Latin small letter t with stroke":"Latin kis t betű áthúzva","Latin small letter u with breve":"Latin kis u betű brevével","Latin small letter u with double acute":"Latin kis u betű kettős éles ékezettel","Latin small letter u with macron":"Latin kis u betű macronnal","Latin small letter u with ogonek":"Latin kis u betű ogonekkel","Latin small letter u with ring above":"Latin kis u betű karika ékezettel","Latin small letter u with tilde":"Latin kis u betű tildével","Latin small letter w with circumflex":"Latin kis w betű háztető ékezettel","Latin small letter y with circumflex":"Latin kis y betű háztető ékezettel","Latin small letter z with acute":"Latin kis z betű éles ékezettel","Latin small letter z with caron":"Latin kis z betű hacsekkel","Latin small letter z with dot above":"Latin kis z betű egy pontos ékezettel","Latin small ligature ij":"Latin kis ij ligatúra","Latin small ligature oe":"Latin kis oe ligatúra","Left double quotation mark":"Bal oldali dupla idézőjel","Left single quotation mark":"Bal oldali szimpla idézőjel","Left-pointing double angle quotation mark":"Bal oldali dupla szögletes idézőjel","leftwards arrow to bar":"vonalig érő balra nyíl","leftwards dashed arrow":"szaggatott nyíl balra","leftwards double arrow":"dupla nyíl balra","leftwards simple arrow":"balra mutató egyszerű nyíl","Less-than or equal to":"Kisebb vagy egyenlő jel","Less-than sign":"Kisebb jel","Lira sign":"Líra jel","Livre tournois sign":"Livre tournois szimbólum","Logical and":"Logikai és ","Logical or":"Logikai vagy",Macron:"Macron","Manat sign":"Manat szimbólum","Mill sign":"Mill szimbólum","Minus sign":"Mínuszjel","Multiplication sign":"Szorzójel","N-ary product":"N-áris produktum","N-ary summation":"N-áris szumma",Nabla:"Nabla","Naira sign":"Naira szimbólum","New sheqel sign":"Új sékel szimbólum","Nordic mark sign":"Északi márka szimbólum","Not an element of":"Nem része","Not equal to":"Nem egyenlő","Not sign":"Nem szimbólum","on with exclamation mark with left right arrow above":"on felirat felkiáltójellel és felette jobbra-balra nyíllal",Overline:"Föléhúzás","Paragraph sign":"Bekezdésjel","Partial differential":"Parciális derivált","Per mille sign":"Ezrelékjel","Per ten thousand sign":"Tízezrelékjel","Peseta sign":"Peseta szimbólum","Peso sign":"Peso szimbólum","Plus-minus sign":"Pluszmínusz-jel","Pound sign":"Font jel","Proportional to":"Aránylik","Question exclamation mark":"Kérdő- és felkiáltójel","Registered sign":"Bejegyzett védjegy szimbólum","Reversed paragraph sign":"Fordított bekezdésjel","Right double quotation mark":"Jobb oldali dupla idézőjel","Right single quotation mark":"Jobb oldali szimpla idézőjel","Right-pointing double angle quotation mark":"Jobb oldali dupla szögletes idézőjel","rightwards arrow to bar":"vonalig érő jobbra nyíl","rightwards dashed arrow":"szaggatott nyíl jobbra","rightwards double arrow":"dupla nyíl jobbra","rightwards simple arrow":"jobbra mutató egyszerű nyíl","Ruble sign":"Rubel szimbólum","Rupee sign":"Rúpia szimbólum","Section sign":"Szakaszjel","Single left-pointing angle quotation mark":"Szimpla bal oldali szögletes idézőjel","Single low-9 quotation mark":"Szimpla 9-es alakú alsó idézőjel","Single right-pointing angle quotation mark":"Jobb oldali szimpla szögletes idézőjel","soon with rightwards arrow above":"soon felirat felette jobbra nyíllal","Special characters":"Speciális karakterek","Spesmilo sign":"Spesmilo szimbólum","Square root":"Négyzetgyök","Tenge sign":"Tenge szimbólum","There exists":"Létezik","Tilde operator":"Hullámvonal","top with upwards arrow above":"top felirat felette felfele nyíllal","Trade mark sign":"Kereskedelmi védjegy szimbólum","Tugrik sign":"Tugrik szimbólum","Turkish lira sign":"Török líra szimbólum","Two dot leader":"Két bevezető pont",Union:"Egyesítés","up down arrow with base":"fel-le nyíl alapvonallal","upwards arrow to bar":"vonalig érő felfele nyíl","upwards dashed arrow":"szaggatott nyíl felfelé","upwards double arrow":"dupla nyíl felfelé","upwards simple arrow":"felfelé mutató egyszerű nyíl","Vulgar fraction one half":"Vulgáris tört egyketted","Vulgar fraction one quarter":"Vulgáris tört egynegyed","Vulgar fraction three quarters":"Vulgáris tört háromnegyed","Won sign":"Won szimbólum","Yen sign":"Yen jel"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/special-characters/translations/id.js b/core/assets/vendor/ckeditor5/special-characters/translations/id.js
index 8fcc21f605..7be2eef637 100644
--- a/core/assets/vendor/ckeditor5/special-characters/translations/id.js
+++ b/core/assets/vendor/ckeditor5/special-characters/translations/id.js
@@ -1 +1 @@
-!function(a){const t=a.id=a.id||{};t.dictionary=Object.assign(t.dictionary||{},{"Almost equal to":"Hampir sama dengan",Angle:"Sudut","Approximately equal to":"Kira-kira sama dengan","Asterisk operator":"Operator asteris","Austral sign":"Simbol austral","back with leftwards arrow above":"belakang dengan panah kiri di atas","Bitcoin sign":"Tanda bitcoin","Cedi sign":"Simbol cedi","Cent sign":"Tanda sen","Character categories":"Kategori karakter","Colon sign":"Tanda titik dua","Contains as member":"Berisi sebagai anggota","Copyright sign":"Simbol hak cipta","Cruzeiro sign":"Simbol cruzeiro ","Currency sign":"Tanda mata uang","Degree sign":"Tanda derajat","Division sign":"Tanda pembagian","Dollar sign":"Tanda dollar","Dong sign":"Simbol dong","Double dagger":"Diesis","Double exclamation mark":"Tanda seru ganda","Double low-9 quotation mark":"Tanda kutip 9 bawah ganda","Double question mark":"Tanda tanya ganda","downwards arrow to bar":"panah bawah ke bar","downwards dashed arrow":"Panah putus-putus ke ke bawah","downwards double arrow":"Panah ganda ke bawah","Drachma sign":"Simbol drakhma","Element of":"Elemen dari","Em dash":"Tanda pisah em","Empty set":"Himpunan kosong","En dash":"Tanda pisah en","end with leftwards arrow above":"akhir dengan panah kiri di atas","Euro sign":"Tanda euro","Euro-currency sign":"Tanda mata uang euro","Exclamation question mark":"Tanda seru dan tanya","For all":"Untuk semua","Fraction slash":"Garis bagi pecahan","French franc sign":"Simbol franc Prancis","German penny sign":"Simbol penny Jerman","Greater-than or equal to":"Lebih dari atau sama dengan","Greater-than sign":"Tanda lebih besar dari","Guarani sign":"Simbol guarani","Horizontal ellipsis":"Elipsis horizontal","Hryvnia sign":"Simbol hryvnia","Identical to":"Identik dengan","Indian rupee sign":"Tanda rupee India",Infinity:"Tak hingga",Integral:"Integral",Intersection:"Irisan","Inverted exclamation mark":"Tanda seru terbalik","Inverted question mark":"Tanda tanya terbalik","Kip sign":"Simbol kip","Latin capital letter a with breve":"Huruf Latin besar a dengan breve","Latin capital letter a with macron":"Huruf Latin besar a dengan macron","Latin capital letter a with ogonek":"Huruf Latin besar a dengan ogonek","Latin capital letter c with acute":"Huruf Latin besar c dengan akut","Latin capital letter c with caron":"Huruf Latin besar c dengan caron","Latin capital letter c with circumflex":"Huruf Latin besar c dengan sirkumfleks","Latin capital letter c with dot above":"Huruf Latin besar c dengan titik di atas","Latin capital letter d with caron":"Huruf Latin besar d dengan caron","Latin capital letter d with stroke":"Huruf Latin besar d dengan garis","Latin capital letter e with breve":"Huruf Latin besar e dengan breve","Latin capital letter e with caron":"Huruf Latin besar e dengan caron","Latin capital letter e with dot above":"Huruf Latin besar e dengan titik di atas","Latin capital letter e with macron":"Huruf Latin besar e dengan macron","Latin capital letter e with ogonek":"Huruf Latin besar e dengan ogonek","Latin capital letter eng":"Huruf Latin besar eng","Latin capital letter g with breve":"Huruf Latin besar g dengan breve","Latin capital letter g with cedilla":"Huruf Latin besar g dengan cedilla","Latin capital letter g with circumflex":"Huruf Latin besar g dengan sirkumfleks","Latin capital letter g with dot above":"Huruf Latin besar g dengan titik di atas","Latin capital letter h with circumflex":"Huruf Latin besar h dengan sirkumfleks","Latin capital letter h with stroke":"Huruf Latin besar h dengan garis","Latin capital letter i with breve":"Huruf Latin besar i dengan breve","Latin capital letter i with dot above":"Huruf Latin besar i dengan titik di atas","Latin capital letter i with macron":"Huruf Latin besar i dengan macron","Latin capital letter i with ogonek":"Huruf Latin besar i dengan ogonek","Latin capital letter i with tilde":"Huruf Latin besar i dengan tilde","Latin capital letter j with circumflex":"Huruf Latin besar j dengan sirkumfleks","Latin capital letter k with cedilla":"Huruf Latin besar k dengan cedilla","Latin capital letter l with acute":"Huruf Latin besar l dengan akut","Latin capital letter l with caron":"Huruf Latin besar l dengan caron","Latin capital letter l with cedilla":"Huruf Latin besar l dengan cedilla","Latin capital letter l with middle dot":"Huruf Latin besar l dengan titik di tengah","Latin capital letter l with stroke":"Huruf Latin besar l dengan garis","Latin capital letter n with acute":"Huruf Latin besar n dengan akut","Latin capital letter n with caron":"Huruf Latin besar n dengan caron","Latin capital letter n with cedilla":"Huruf Latin besar n dengan cedilla","Latin capital letter o with breve":"Huruf Latin besar o dengan breve","Latin capital letter o with double acute":"Huruf Latin besar o dengan akut ganda","Latin capital letter o with macron":"Huruf Latin besar o dengan macron","Latin capital letter r with acute":"Huruf Latin besar r dengan akut","Latin capital letter r with caron":"Huruf Latin besar r dengan caron","Latin capital letter r with cedilla":"Huruf Latin besar r dengan cedilla","Latin capital letter s with acute":"Huruf Latin besar s dengan akut","Latin capital letter s with caron":"Huruf Latin besar s dengan caron","Latin capital letter s with cedilla":"Huruf Latin besar s dengan cedilla","Latin capital letter s with circumflex":"Huruf Latin besar s dengan sirkumfleks","Latin capital letter t with caron":"Huruf Latin besar t dengan caron","Latin capital letter t with cedilla":"Huruf Latin besar t dengan cedilla","Latin capital letter t with stroke":"Huruf Latin besar t dengan garis","Latin capital letter u with breve":"Huruf Latin besar u dengan breve","Latin capital letter u with double acute":"Huruf Latin besar u dengan akut ganda","Latin capital letter u with macron":"Huruf Latin besar u dengan macron","Latin capital letter u with ogonek":"Huruf Latin besar u dengan ogonek","Latin capital letter u with ring above":"Huruf Latin besar u dengan cincin di atas","Latin capital letter u with tilde":"Huruf Latin besar u dengan tilde","Latin capital letter w with circumflex":"Huruf Latin besar w dengan sirkumfleks","Latin capital letter y with circumflex":"Huruf Latin besar y dengan sirkumfleks","Latin capital letter y with diaeresis":"Huruf Latin besar y dengan diaresis","Latin capital letter z with acute":"Huruf Latin besar z dengan akut","Latin capital letter z with caron":"Huruf Latin besar z dengan caron","Latin capital letter z with dot above":"Huruf Latin besar z dengan titik di atas","Latin capital ligature ij":"Ligatur Latin kapital ij","Latin capital ligature oe":"Ligatur Latin kapital oe","Latin small letter a with breve":"Huruf Latin kecil a dengan breve","Latin small letter a with macron":"Huruf Latin kecil a dengan macron","Latin small letter a with ogonek":"Huruf Latin kecil a dengan ogonek","Latin small letter c with acute":"Huruf Latin kecil c dengan akut","Latin small letter c with caron":"Huruf Latin kecil c dengan caron","Latin small letter c with circumflex":"Huruf Latin kecil c dengan sirkumfleks","Latin small letter c with dot above":"Huruf Latin kecil c dengan titik di atas","Latin small letter d with caron":"Huruf Latin kecil d dengan caron","Latin small letter d with stroke":"Huruf Latin kecil d dengan garis","Latin small letter dotless i":"Huruf Latin kecil tanpa titik i","Latin small letter e with breve":"Huruf Latin kecil e dengan breve","Latin small letter e with caron":"Huruf Latin kecil e dengan caron","Latin small letter e with dot above":"Huruf Latin kecil e dengan titik di atas","Latin small letter e with macron":"Huruf Latin kecil e dengan macron","Latin small letter e with ogonek":"Huruf Latin kecil e dengan ogonek","Latin small letter eng":"Huruf Latin kecil eng","Latin small letter f with hook":"Huruf Latin kecil f dengan kait","Latin small letter g with breve":"Huruf Latin kecil g dengan breve","Latin small letter g with cedilla":"Huruf Latin kecil g dengan cedilla","Latin small letter g with circumflex":"Huruf Latin kecil g dengan sirkumfleks","Latin small letter g with dot above":"Huruf Latin kecil g dengan titik di atas","Latin small letter h with circumflex":"Huruf Latin kecil h dengan sirkumfleks","Latin small letter h with stroke":"Huruf Latin kecil h dengan garis","Latin small letter i with breve":"Huruf Latin kecil i dengan breve","Latin small letter i with macron":"Huruf Latin kecil i dengan macron","Latin small letter i with ogonek":"Huruf Latin kecil i dengan ogonek","Latin small letter i with tilde":"Huruf Latin kecil i dengan tilde","Latin small letter j with circumflex":"Huruf Latin kecil j dengan sirkumfleks","Latin small letter k with cedilla":"Huruf Latin kecil k dengan cedilla","Latin small letter kra":"Huruf Latin kecil kra","Latin small letter l with acute":"Huruf Latin kecil l dengan akut","Latin small letter l with caron":"Huruf Latin kecil l dengan caron","Latin small letter l with cedilla":"Huruf Latin kecil l dengan cedilla","Latin small letter l with middle dot":"Huruf Latin kecil l dengan titik di tengah","Latin small letter l with stroke":"Huruf Latin kecil l dengan garis","Latin small letter long s":"Huruf Latin kecil s panjang","Latin small letter n preceded by apostrophe":"Huruf Latin kecil n yang didahului apostrof ","Latin small letter n with acute":"Huruf Latin kecil n dengan akut","Latin small letter n with caron":"Huruf Latin kecil n dengan caron","Latin small letter n with cedilla":"Huruf Latin kecil n dengan cedilla","Latin small letter o with breve":"Huruf Latin kecil o dengan breve","Latin small letter o with double acute":"Huruf Latin kecil o dengan akut ganda","Latin small letter o with macron":"Huruf Latin kecil o dengan macron","Latin small letter r with acute":"Huruf Latin kecil r dengan akut","Latin small letter r with caron":"Huruf Latin kecil r dengan caron","Latin small letter r with cedilla":"Huruf Latin kecil r dengan cedilla","Latin small letter s with acute":"Huruf Latin kecil s dengan akut","Latin small letter s with caron":"Huruf Latin kecil s dengan caron","Latin small letter s with cedilla":"Huruf Latin kecil s dengan cedilla","Latin small letter s with circumflex":"Huruf Latin kecil s dengan sirkumfleks","Latin small letter t with caron":"Huruf Latin kecil t dengan caron","Latin small letter t with cedilla":"Huruf Latin kecil t dengan cedilla","Latin small letter t with stroke":"Huruf Latin kecil t dengan garis","Latin small letter u with breve":"Huruf Latin kecil u dengan breve","Latin small letter u with double acute":"Huruf Latin kecil u dengan akut ganda","Latin small letter u with macron":"Huruf Latin kecil u dengan macron","Latin small letter u with ogonek":"Huruf Latin kecil u dengan ogonek","Latin small letter u with ring above":"Huruf Latin kecil u dengan cincin di atas","Latin small letter u with tilde":"Huruf Latin kecil u dengan tilde","Latin small letter w with circumflex":"Huruf Latin kecil w dengan sirkumfleks","Latin small letter y with circumflex":"Huruf Latin kecil y dengan sirkumfleks","Latin small letter z with acute":"Huruf Latin kecil z dengan akut","Latin small letter z with caron":"Huruf Latin kecil z dengan caron","Latin small letter z with dot above":"Huruf Latin kecil z dengan titik di atas","Latin small ligature ij":"Ligatur Latin kecil ij","Latin small ligature oe":"Ligatur Latin kecil oe","Left double quotation mark":"Tanda kutip ganda kiri","Left single quotation mark":"Tanda kutip tunggal kiri","Left-pointing double angle quotation mark":"Tanda kutip bersudut ganda mengarah ke kiri","leftwards arrow to bar":"panah kiri ke bar","leftwards dashed arrow":"Panah putus-putus ke kiri","leftwards double arrow":"Panah ganda ke kiri","Less-than or equal to":"Kurang dari atau sama dengan","Less-than sign":"Tanda kurang dari","Lira sign":"Simbol lira","Livre tournois sign":"Simbol livre tournois","Logical and":'"Dan" logis',"Logical or":'"Atau" logis',Macron:"Macron","Manat sign":"Simbol manat","Mill sign":"Simbol mill","Minus sign":"Tanda negatif","Multiplication sign":"Tanda perkalian","N-ary product":"Produk N-ary","N-ary summation":"Penjumlahan N-Ary",Nabla:"Nabla","Naira sign":"Simbol naira","New sheqel sign":"Simbol shekel baru","Nordic mark sign":"Simbol mark Nordik","Not an element of":"Bukan sebuah elemen dari","Not equal to":"Tidak sama dengan","Not sign":'Tanda "bukan"',"on with exclamation mark with left right arrow above":"nyala tanda seru dengan panah kiri kanan di atas",Overline:"Garis atas","Paragraph sign":"Simbol paragraf","Partial differential":"Turunan parsial","Per mille sign":"Tanda permil","Per ten thousand sign":"Tanda persepuluh ribu","Peseta sign":"Simbol peseta","Peso sign":"Tanda peso","Plus-minus sign":"Tanda lebih kurang","Pound sign":"Tanda pound","Proportional to":"Proporsional dengan","Question exclamation mark":"Tanda tanya dan seru","Registered sign":"Simbol merek dagang terdaftar","Reversed paragraph sign":"Simbol paragraf terbalik","Right double quotation mark":"Tanda kutip ganda kanan","Right single quotation mark":"Tanda kutip tunggal kanan","Right-pointing double angle quotation mark":"Tanda kutip bersudut ganda mengarah ke kanan","rightwards arrow to bar":"panah kanan ke bar","rightwards dashed arrow":"Panah putus-putus ke kanan","rightwards double arrow":"Panah ganda ke kanan","Ruble sign":"Simbol rubel","Rupee sign":"Tanda rupee","Section sign":"Simbol bagian","Single left-pointing angle quotation mark":"Tanda kutip bersudut mengarah ke kiri tunggal","Single low-9 quotation mark":"Tanda kutip 9 bawah tunggal","Single right-pointing angle quotation mark":"Tanda kutip bersudut mengarah ke kanan tunggal","soon with rightwards arrow above":"segera (soon) dengan panah arah kanan di atas","Special characters":"Karakter spesial","Spesmilo sign":"Simbol spesmilo","Square root":"Akar kuadrat","Tenge sign":"Simbol tenge","There exists":"Ada","Tilde operator":"Operator tilde","top with upwards arrow above":"puncak (top) dengan panah arah atas di atas","Trade mark sign":"Simbol merek dagang","Tugrik sign":"Simbol tugrik","Turkish lira sign":"Simbol lira Turki","Two dot leader":"Dua titik utama",Union:"Himpunan","up down arrow with base":"panah atas bawah dari dasar","upwards arrow to bar":"panah atas ke bar","upwards dashed arrow":"Panah putus-putus ke atas","upwards double arrow":"Panah ganda ke atas","Vulgar fraction one half":"Pecahan vulgar satu perdua","Vulgar fraction one quarter":"Pecahan vulgar satu perempat","Vulgar fraction three quarters":"Pecahan vulgar tiga perempat","Won sign":"Tanda won","Yen sign":"Tanda yen"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(a){const t=a.id=a.id||{};t.dictionary=Object.assign(t.dictionary||{},{"Almost equal to":"Hampir sama dengan",Angle:"Sudut","Approximately equal to":"Kira-kira sama dengan","Asterisk operator":"Operator asteris","Austral sign":"Simbol austral","back with leftwards arrow above":"belakang dengan panah kiri di atas","Bitcoin sign":"Tanda bitcoin","Cedi sign":"Simbol cedi","Cent sign":"Tanda sen","Character categories":"Kategori karakter","Colon sign":"Tanda titik dua","Contains as member":"Berisi sebagai anggota","Copyright sign":"Simbol hak cipta","Cruzeiro sign":"Simbol cruzeiro ","Currency sign":"Tanda mata uang","Degree sign":"Tanda derajat","Division sign":"Tanda pembagian","Dollar sign":"Tanda dollar","Dong sign":"Simbol dong","Double dagger":"Diesis","Double exclamation mark":"Tanda seru ganda","Double low-9 quotation mark":"Tanda kutip 9 bawah ganda","Double question mark":"Tanda tanya ganda","downwards arrow to bar":"panah bawah ke bar","downwards dashed arrow":"Panah putus-putus ke ke bawah","downwards double arrow":"Panah ganda ke bawah","downwards simple arrow":"panah bawah sederhana","Drachma sign":"Simbol drakhma","Element of":"Elemen dari","Em dash":"Tanda pisah em","Empty set":"Himpunan kosong","En dash":"Tanda pisah en","end with leftwards arrow above":"akhir dengan panah kiri di atas","Euro sign":"Tanda euro","Euro-currency sign":"Tanda mata uang euro","Exclamation question mark":"Tanda seru dan tanya","For all":"Untuk semua","Fraction slash":"Garis bagi pecahan","French franc sign":"Simbol franc Prancis","German penny sign":"Simbol penny Jerman","Greater-than or equal to":"Lebih dari atau sama dengan","Greater-than sign":"Tanda lebih besar dari","Guarani sign":"Simbol guarani","Horizontal ellipsis":"Elipsis horizontal","Hryvnia sign":"Simbol hryvnia","Identical to":"Identik dengan","Indian rupee sign":"Tanda rupee India",Infinity:"Tak hingga",Integral:"Integral",Intersection:"Irisan","Inverted exclamation mark":"Tanda seru terbalik","Inverted question mark":"Tanda tanya terbalik","Kip sign":"Simbol kip","Latin capital letter a with breve":"Huruf Latin besar a dengan breve","Latin capital letter a with macron":"Huruf Latin besar a dengan macron","Latin capital letter a with ogonek":"Huruf Latin besar a dengan ogonek","Latin capital letter c with acute":"Huruf Latin besar c dengan akut","Latin capital letter c with caron":"Huruf Latin besar c dengan caron","Latin capital letter c with circumflex":"Huruf Latin besar c dengan sirkumfleks","Latin capital letter c with dot above":"Huruf Latin besar c dengan titik di atas","Latin capital letter d with caron":"Huruf Latin besar d dengan caron","Latin capital letter d with stroke":"Huruf Latin besar d dengan garis","Latin capital letter e with breve":"Huruf Latin besar e dengan breve","Latin capital letter e with caron":"Huruf Latin besar e dengan caron","Latin capital letter e with dot above":"Huruf Latin besar e dengan titik di atas","Latin capital letter e with macron":"Huruf Latin besar e dengan macron","Latin capital letter e with ogonek":"Huruf Latin besar e dengan ogonek","Latin capital letter eng":"Huruf Latin besar eng","Latin capital letter g with breve":"Huruf Latin besar g dengan breve","Latin capital letter g with cedilla":"Huruf Latin besar g dengan cedilla","Latin capital letter g with circumflex":"Huruf Latin besar g dengan sirkumfleks","Latin capital letter g with dot above":"Huruf Latin besar g dengan titik di atas","Latin capital letter h with circumflex":"Huruf Latin besar h dengan sirkumfleks","Latin capital letter h with stroke":"Huruf Latin besar h dengan garis","Latin capital letter i with breve":"Huruf Latin besar i dengan breve","Latin capital letter i with dot above":"Huruf Latin besar i dengan titik di atas","Latin capital letter i with macron":"Huruf Latin besar i dengan macron","Latin capital letter i with ogonek":"Huruf Latin besar i dengan ogonek","Latin capital letter i with tilde":"Huruf Latin besar i dengan tilde","Latin capital letter j with circumflex":"Huruf Latin besar j dengan sirkumfleks","Latin capital letter k with cedilla":"Huruf Latin besar k dengan cedilla","Latin capital letter l with acute":"Huruf Latin besar l dengan akut","Latin capital letter l with caron":"Huruf Latin besar l dengan caron","Latin capital letter l with cedilla":"Huruf Latin besar l dengan cedilla","Latin capital letter l with middle dot":"Huruf Latin besar l dengan titik di tengah","Latin capital letter l with stroke":"Huruf Latin besar l dengan garis","Latin capital letter n with acute":"Huruf Latin besar n dengan akut","Latin capital letter n with caron":"Huruf Latin besar n dengan caron","Latin capital letter n with cedilla":"Huruf Latin besar n dengan cedilla","Latin capital letter o with breve":"Huruf Latin besar o dengan breve","Latin capital letter o with double acute":"Huruf Latin besar o dengan akut ganda","Latin capital letter o with macron":"Huruf Latin besar o dengan macron","Latin capital letter r with acute":"Huruf Latin besar r dengan akut","Latin capital letter r with caron":"Huruf Latin besar r dengan caron","Latin capital letter r with cedilla":"Huruf Latin besar r dengan cedilla","Latin capital letter s with acute":"Huruf Latin besar s dengan akut","Latin capital letter s with caron":"Huruf Latin besar s dengan caron","Latin capital letter s with cedilla":"Huruf Latin besar s dengan cedilla","Latin capital letter s with circumflex":"Huruf Latin besar s dengan sirkumfleks","Latin capital letter t with caron":"Huruf Latin besar t dengan caron","Latin capital letter t with cedilla":"Huruf Latin besar t dengan cedilla","Latin capital letter t with stroke":"Huruf Latin besar t dengan garis","Latin capital letter u with breve":"Huruf Latin besar u dengan breve","Latin capital letter u with double acute":"Huruf Latin besar u dengan akut ganda","Latin capital letter u with macron":"Huruf Latin besar u dengan macron","Latin capital letter u with ogonek":"Huruf Latin besar u dengan ogonek","Latin capital letter u with ring above":"Huruf Latin besar u dengan cincin di atas","Latin capital letter u with tilde":"Huruf Latin besar u dengan tilde","Latin capital letter w with circumflex":"Huruf Latin besar w dengan sirkumfleks","Latin capital letter y with circumflex":"Huruf Latin besar y dengan sirkumfleks","Latin capital letter y with diaeresis":"Huruf Latin besar y dengan diaresis","Latin capital letter z with acute":"Huruf Latin besar z dengan akut","Latin capital letter z with caron":"Huruf Latin besar z dengan caron","Latin capital letter z with dot above":"Huruf Latin besar z dengan titik di atas","Latin capital ligature ij":"Ligatur Latin kapital ij","Latin capital ligature oe":"Ligatur Latin kapital oe","Latin small letter a with breve":"Huruf Latin kecil a dengan breve","Latin small letter a with macron":"Huruf Latin kecil a dengan macron","Latin small letter a with ogonek":"Huruf Latin kecil a dengan ogonek","Latin small letter c with acute":"Huruf Latin kecil c dengan akut","Latin small letter c with caron":"Huruf Latin kecil c dengan caron","Latin small letter c with circumflex":"Huruf Latin kecil c dengan sirkumfleks","Latin small letter c with dot above":"Huruf Latin kecil c dengan titik di atas","Latin small letter d with caron":"Huruf Latin kecil d dengan caron","Latin small letter d with stroke":"Huruf Latin kecil d dengan garis","Latin small letter dotless i":"Huruf Latin kecil tanpa titik i","Latin small letter e with breve":"Huruf Latin kecil e dengan breve","Latin small letter e with caron":"Huruf Latin kecil e dengan caron","Latin small letter e with dot above":"Huruf Latin kecil e dengan titik di atas","Latin small letter e with macron":"Huruf Latin kecil e dengan macron","Latin small letter e with ogonek":"Huruf Latin kecil e dengan ogonek","Latin small letter eng":"Huruf Latin kecil eng","Latin small letter f with hook":"Huruf Latin kecil f dengan kait","Latin small letter g with breve":"Huruf Latin kecil g dengan breve","Latin small letter g with cedilla":"Huruf Latin kecil g dengan cedilla","Latin small letter g with circumflex":"Huruf Latin kecil g dengan sirkumfleks","Latin small letter g with dot above":"Huruf Latin kecil g dengan titik di atas","Latin small letter h with circumflex":"Huruf Latin kecil h dengan sirkumfleks","Latin small letter h with stroke":"Huruf Latin kecil h dengan garis","Latin small letter i with breve":"Huruf Latin kecil i dengan breve","Latin small letter i with macron":"Huruf Latin kecil i dengan macron","Latin small letter i with ogonek":"Huruf Latin kecil i dengan ogonek","Latin small letter i with tilde":"Huruf Latin kecil i dengan tilde","Latin small letter j with circumflex":"Huruf Latin kecil j dengan sirkumfleks","Latin small letter k with cedilla":"Huruf Latin kecil k dengan cedilla","Latin small letter kra":"Huruf Latin kecil kra","Latin small letter l with acute":"Huruf Latin kecil l dengan akut","Latin small letter l with caron":"Huruf Latin kecil l dengan caron","Latin small letter l with cedilla":"Huruf Latin kecil l dengan cedilla","Latin small letter l with middle dot":"Huruf Latin kecil l dengan titik di tengah","Latin small letter l with stroke":"Huruf Latin kecil l dengan garis","Latin small letter long s":"Huruf Latin kecil s panjang","Latin small letter n preceded by apostrophe":"Huruf Latin kecil n yang didahului apostrof ","Latin small letter n with acute":"Huruf Latin kecil n dengan akut","Latin small letter n with caron":"Huruf Latin kecil n dengan caron","Latin small letter n with cedilla":"Huruf Latin kecil n dengan cedilla","Latin small letter o with breve":"Huruf Latin kecil o dengan breve","Latin small letter o with double acute":"Huruf Latin kecil o dengan akut ganda","Latin small letter o with macron":"Huruf Latin kecil o dengan macron","Latin small letter r with acute":"Huruf Latin kecil r dengan akut","Latin small letter r with caron":"Huruf Latin kecil r dengan caron","Latin small letter r with cedilla":"Huruf Latin kecil r dengan cedilla","Latin small letter s with acute":"Huruf Latin kecil s dengan akut","Latin small letter s with caron":"Huruf Latin kecil s dengan caron","Latin small letter s with cedilla":"Huruf Latin kecil s dengan cedilla","Latin small letter s with circumflex":"Huruf Latin kecil s dengan sirkumfleks","Latin small letter t with caron":"Huruf Latin kecil t dengan caron","Latin small letter t with cedilla":"Huruf Latin kecil t dengan cedilla","Latin small letter t with stroke":"Huruf Latin kecil t dengan garis","Latin small letter u with breve":"Huruf Latin kecil u dengan breve","Latin small letter u with double acute":"Huruf Latin kecil u dengan akut ganda","Latin small letter u with macron":"Huruf Latin kecil u dengan macron","Latin small letter u with ogonek":"Huruf Latin kecil u dengan ogonek","Latin small letter u with ring above":"Huruf Latin kecil u dengan cincin di atas","Latin small letter u with tilde":"Huruf Latin kecil u dengan tilde","Latin small letter w with circumflex":"Huruf Latin kecil w dengan sirkumfleks","Latin small letter y with circumflex":"Huruf Latin kecil y dengan sirkumfleks","Latin small letter z with acute":"Huruf Latin kecil z dengan akut","Latin small letter z with caron":"Huruf Latin kecil z dengan caron","Latin small letter z with dot above":"Huruf Latin kecil z dengan titik di atas","Latin small ligature ij":"Ligatur Latin kecil ij","Latin small ligature oe":"Ligatur Latin kecil oe","Left double quotation mark":"Tanda kutip ganda kiri","Left single quotation mark":"Tanda kutip tunggal kiri","Left-pointing double angle quotation mark":"Tanda kutip bersudut ganda mengarah ke kiri","leftwards arrow to bar":"panah kiri ke bar","leftwards dashed arrow":"Panah putus-putus ke kiri","leftwards double arrow":"Panah ganda ke kiri","leftwards simple arrow":"panah kiri sederhana","Less-than or equal to":"Kurang dari atau sama dengan","Less-than sign":"Tanda kurang dari","Lira sign":"Simbol lira","Livre tournois sign":"Simbol livre tournois","Logical and":'"Dan" logis',"Logical or":'"Atau" logis',Macron:"Macron","Manat sign":"Simbol manat","Mill sign":"Simbol mill","Minus sign":"Tanda negatif","Multiplication sign":"Tanda perkalian","N-ary product":"Produk N-ary","N-ary summation":"Penjumlahan N-Ary",Nabla:"Nabla","Naira sign":"Simbol naira","New sheqel sign":"Simbol shekel baru","Nordic mark sign":"Simbol mark Nordik","Not an element of":"Bukan sebuah elemen dari","Not equal to":"Tidak sama dengan","Not sign":'Tanda "bukan"',"on with exclamation mark with left right arrow above":"nyala tanda seru dengan panah kiri kanan di atas",Overline:"Garis atas","Paragraph sign":"Simbol paragraf","Partial differential":"Turunan parsial","Per mille sign":"Tanda permil","Per ten thousand sign":"Tanda persepuluh ribu","Peseta sign":"Simbol peseta","Peso sign":"Tanda peso","Plus-minus sign":"Tanda lebih kurang","Pound sign":"Tanda pound","Proportional to":"Proporsional dengan","Question exclamation mark":"Tanda tanya dan seru","Registered sign":"Simbol merek dagang terdaftar","Reversed paragraph sign":"Simbol paragraf terbalik","Right double quotation mark":"Tanda kutip ganda kanan","Right single quotation mark":"Tanda kutip tunggal kanan","Right-pointing double angle quotation mark":"Tanda kutip bersudut ganda mengarah ke kanan","rightwards arrow to bar":"panah kanan ke bar","rightwards dashed arrow":"Panah putus-putus ke kanan","rightwards double arrow":"Panah ganda ke kanan","rightwards simple arrow":"panah kanan sederhana","Ruble sign":"Simbol rubel","Rupee sign":"Tanda rupee","Section sign":"Simbol bagian","Single left-pointing angle quotation mark":"Tanda kutip bersudut mengarah ke kiri tunggal","Single low-9 quotation mark":"Tanda kutip 9 bawah tunggal","Single right-pointing angle quotation mark":"Tanda kutip bersudut mengarah ke kanan tunggal","soon with rightwards arrow above":"segera (soon) dengan panah arah kanan di atas","Special characters":"Karakter spesial","Spesmilo sign":"Simbol spesmilo","Square root":"Akar kuadrat","Tenge sign":"Simbol tenge","There exists":"Ada","Tilde operator":"Operator tilde","top with upwards arrow above":"puncak (top) dengan panah arah atas di atas","Trade mark sign":"Simbol merek dagang","Tugrik sign":"Simbol tugrik","Turkish lira sign":"Simbol lira Turki","Two dot leader":"Dua titik utama",Union:"Himpunan","up down arrow with base":"panah atas bawah dari dasar","upwards arrow to bar":"panah atas ke bar","upwards dashed arrow":"Panah putus-putus ke atas","upwards double arrow":"Panah ganda ke atas","upwards simple arrow":"panah atas sederhana","Vulgar fraction one half":"Pecahan vulgar satu perdua","Vulgar fraction one quarter":"Pecahan vulgar satu perempat","Vulgar fraction three quarters":"Pecahan vulgar tiga perempat","Won sign":"Tanda won","Yen sign":"Tanda yen"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/special-characters/translations/it.js b/core/assets/vendor/ckeditor5/special-characters/translations/it.js
index d19f3beeb2..667f2ee751 100644
--- a/core/assets/vendor/ckeditor5/special-characters/translations/it.js
+++ b/core/assets/vendor/ckeditor5/special-characters/translations/it.js
@@ -1 +1 @@
-!function(a){const t=a.it=a.it||{};t.dictionary=Object.assign(t.dictionary||{},{"Almost equal to":"Quasi uguale a",Angle:"Angolo","Approximately equal to":"Approssimativamente uguale a","Asterisk operator":"Operatore asterisco","Austral sign":"Simbolo austral","back with leftwards arrow above":"back con sopra freccia verso sinistra","Bitcoin sign":"Simbolo bitcoin","Cedi sign":"Simbolo cedi","Cent sign":"Simbolo centesimo","Character categories":"Categorie di caratteri","Colon sign":"Simbolo colon","Contains as member":"Contiene","Copyright sign":"Simbolo copyright","Cruzeiro sign":"Simbolo cruzeiro","Currency sign":"Simbolo valuta","Degree sign":"Simbolo gradi","Division sign":"Segno di divisione","Dollar sign":"Simbolo dollaro","Dong sign":"Simbolo dong","Double dagger":"Doppio obelisco","Double exclamation mark":"Doppio punto esclamativo","Double low-9 quotation mark":"Doppie virgolette basse","Double question mark":"Doppio punto interrogativo","downwards arrow to bar":"Freccia verso barra in basso","downwards dashed arrow":"Freccia tratteggiata verso il basso","downwards double arrow":"Freccia doppia verso il basso","Drachma sign":"Simbolo dracma","Element of":"Elemento di","Em dash":"Trattino lungo (em)","Empty set":"Insieme vuoto","En dash":"Trattino medio (en)","end with leftwards arrow above":"end con sopra freccia verso sinistra","Euro sign":"Simbolo euro","Euro-currency sign":"Simbolo valuta euro","Exclamation question mark":"Punti esclamativo e interrogativo","For all":"Per ogni","Fraction slash":"Barra di frazione","French franc sign":"Simbolo franco francese","German penny sign":"Simbolo pfennig tedesco","Greater-than or equal to":"Maggiore o uguale a","Greater-than sign":"Simbolo maggiore di","Guarani sign":"Simbolo guaraní","Horizontal ellipsis":"Puntini di sospensione orizzontali","Hryvnia sign":"Simbolo grivnia","Identical to":"Identico a","Indian rupee sign":"Simbolo rupia indiana",Infinity:"Infinito",Integral:"Integrale",Intersection:"Intersezione","Inverted exclamation mark":"Punto esclamativo invertito","Inverted question mark":"Punto interrogativo invertito","Kip sign":"Simbolo kip","Latin capital letter a with breve":"Lettera A latina maiuscola con breve","Latin capital letter a with macron":"Lettera A latina maiuscola con macron","Latin capital letter a with ogonek":"Lettera A latina maiuscola con codetta","Latin capital letter c with acute":"Lettera C latina maiuscola con accento acuto","Latin capital letter c with caron":"Lettera C latina maiuscola con pipa","Latin capital letter c with circumflex":"Lettera C latina maiuscola con accento circonflesso","Latin capital letter c with dot above":"Lettera C latina maiuscola con punto sovrascritto","Latin capital letter d with caron":"Lettera D latina maiuscola con pipa","Latin capital letter d with stroke":"Lettera D latina maiuscola con barra","Latin capital letter e with breve":"Lettera E latina maiuscola con accento breve","Latin capital letter e with caron":"Lettera E latina maiuscola con pipa","Latin capital letter e with dot above":"Lettera E latina maiuscola con punto sovrascritto","Latin capital letter e with macron":"Lettera E latina maiuscola con macron","Latin capital letter e with ogonek":"Lettera E latina maiuscola con codetta","Latin capital letter eng":"Nasale velare maiuscola","Latin capital letter g with breve":"Lettera G latina maiuscola con breve","Latin capital letter g with cedilla":"Lettera G latina maiuscola con cediglia","Latin capital letter g with circumflex":"Lettera G latina maiuscola con accento circonflesso","Latin capital letter g with dot above":"Lettera G latina maiuscola con punto sovrascritto","Latin capital letter h with circumflex":"Lettera H latina maiuscola con accento circonflesso","Latin capital letter h with stroke":"Lettera H latina maiuscola con barra","Latin capital letter i with breve":"Lettera I latina maiuscola con breve","Latin capital letter i with dot above":"Lettera I latina maiuscola con punto sovrascritto","Latin capital letter i with macron":"Lettera I latina maiuscola con macron","Latin capital letter i with ogonek":"Lettera I latina maiuscola con codetta","Latin capital letter i with tilde":"Lettera I latina maiuscola con tilde","Latin capital letter j with circumflex":"Lettera J latina maiuscola con accento circonflesso","Latin capital letter k with cedilla":"Lettera K latina maiuscola con cediglia","Latin capital letter l with acute":"Lettera L latina maiuscola con accento acuto","Latin capital letter l with caron":"Lettera L latina maiuscola con pipa","Latin capital letter l with cedilla":"Lettera L latina maiuscola con cediglia","Latin capital letter l with middle dot":"Lettera L latina maiuscola con punto in mezzo","Latin capital letter l with stroke":"Lettera L latina maiuscola con barra","Latin capital letter n with acute":"Lettera N latina maiuscola con accento acuto","Latin capital letter n with caron":"Lettera N latina maiuscola con pipa","Latin capital letter n with cedilla":"Lettera N latina maiuscola con cediglia","Latin capital letter o with breve":"Lettera O latina maiuscola con breve","Latin capital letter o with double acute":"Lettera O latina maiuscola con doppio accento acuto","Latin capital letter o with macron":"Lettera O latina maiuscola con macron","Latin capital letter r with acute":"Lettera R latina maiuscola con accento acuto","Latin capital letter r with caron":"Lettera R latina maiuscola con pipa","Latin capital letter r with cedilla":"Lettera R latina maiuscola con cediglia","Latin capital letter s with acute":"Lettera S latina maiuscola con accento acuto","Latin capital letter s with caron":"Lettera S latina maiuscola con pipa","Latin capital letter s with cedilla":"Lettera S latina maiuscola con cediglia","Latin capital letter s with circumflex":"Lettera S latina maiuscola con accento circonflesso","Latin capital letter t with caron":"Lettera T latina maiuscola con pipa","Latin capital letter t with cedilla":"Lettera T latina maiuscola con cediglia","Latin capital letter t with stroke":"Lettera T latina maiuscola con barra","Latin capital letter u with breve":"Lettera U latina maiuscola con breve","Latin capital letter u with double acute":"Lettera U latina maiuscola con doppio accento acuto","Latin capital letter u with macron":"Lettera U latina maiuscola con macron","Latin capital letter u with ogonek":"Lettera U latina maiuscola con codetta","Latin capital letter u with ring above":"Lettera U latina maiuscola con anello in alto","Latin capital letter u with tilde":"Lettera U latina maiuscola con tilde","Latin capital letter w with circumflex":"Lettera W latina maiuscola con accento circonflesso","Latin capital letter y with circumflex":"Lettera Y latina maiuscola con accento circonflesso","Latin capital letter y with diaeresis":"Lettera Y latina maiuscola con dieresi","Latin capital letter z with acute":"Lettera Z latina maiuscola con accento acuto","Latin capital letter z with caron":"Lettera Z latina maiuscola con pipa","Latin capital letter z with dot above":"Lettera Z latina maiuscola con punto sovrascritto","Latin capital ligature ij":"Legatura IJ latina maiuscola","Latin capital ligature oe":"Legatura OE latina maiuscola","Latin small letter a with breve":"Lettera A latina minuscola con breve","Latin small letter a with macron":"Lettera A latina minuscola con macron","Latin small letter a with ogonek":"Lettera A latina minuscola con codetta","Latin small letter c with acute":"Lettera C latina minuscola con accento acuto","Latin small letter c with caron":"Lettera C latina minuscola con pipa","Latin small letter c with circumflex":"Lettera C latina minuscola con accento circonflesso","Latin small letter c with dot above":"Lettera C latina minuscola con punto sovrascritto","Latin small letter d with caron":"Lettera D latina minuscola con pipa","Latin small letter d with stroke":"Lettera D latina minuscola con barra","Latin small letter dotless i":"Lettera I latina minuscola senza punto","Latin small letter e with breve":"Lettera E latina minuscola con accento breve","Latin small letter e with caron":"Lettera E latina minuscola con pipa","Latin small letter e with dot above":"Lettera E latina minuscola con punto sovrascritto","Latin small letter e with macron":"Lettera E latina minuscola con macron","Latin small letter e with ogonek":"Lettera E latina minuscola con codetta","Latin small letter eng":"Nasale velare minuscola","Latin small letter f with hook":"Lettera f latina minuscola con gancio","Latin small letter g with breve":"Lettera G latina minuscola con breve","Latin small letter g with cedilla":"Lettera G latina minuscola con cediglia","Latin small letter g with circumflex":"Lettera G latina minuscola con accento circonflesso","Latin small letter g with dot above":"Lettera G latina minuscola con punto sovrascritto","Latin small letter h with circumflex":"Lettera H latina minuscola con accento circonflesso","Latin small letter h with stroke":"Lettera H latina minuscola con barra","Latin small letter i with breve":"Lettera I latina minuscola con breve","Latin small letter i with macron":"Lettera I latina minuscola con macron","Latin small letter i with ogonek":"Lettera I latina minuscola con codetta","Latin small letter i with tilde":"Lettera I latina minuscola con tilde","Latin small letter j with circumflex":"Lettera J latina minuscola con accento circonflesso","Latin small letter k with cedilla":"Lettera K latina minuscola con cediglia","Latin small letter kra":"Lettera Kra latina minuscola","Latin small letter l with acute":"Lettera L latina minuscola con accento acuto","Latin small letter l with caron":"Lettera L latina minuscola con pipa","Latin small letter l with cedilla":"Lettera L latina minuscola con cediglia","Latin small letter l with middle dot":"Lettera L latina minuscola con punto in mezzo","Latin small letter l with stroke":"Lettera L latina minuscola con barra","Latin small letter long s":"Lettera S latina lunga minuscola","Latin small letter n preceded by apostrophe":"Lettera N latina minuscola preceduta da apostrofo","Latin small letter n with acute":"Lettera N latina minuscola con accento acuto","Latin small letter n with caron":"Lettera N latina minuscola con pipa","Latin small letter n with cedilla":"Lettera N latina minuscola con cediglia","Latin small letter o with breve":"Lettera O latina minuscola con breve","Latin small letter o with double acute":"Lettera O latina minuscola con doppio accento acuto","Latin small letter o with macron":"Lettera O latina minuscola con macron","Latin small letter r with acute":"Lettera R latina minuscola con accento acuto","Latin small letter r with caron":"Lettera R latina minuscola con pipa","Latin small letter r with cedilla":"Lettera R latina minuscola con cediglia","Latin small letter s with acute":"Lettera S latina minuscola con accento acuto","Latin small letter s with caron":"Lettera S latina minuscola con pipa","Latin small letter s with cedilla":"Lettera S latina minuscola con cediglia","Latin small letter s with circumflex":"Lettera S latina minuscola con accento circonflesso","Latin small letter t with caron":"Lettera T latina minuscola con pipa","Latin small letter t with cedilla":"Lettera T latina minuscola con cediglia","Latin small letter t with stroke":"Lettera T latina minuscola con barra","Latin small letter u with breve":"Lettera U latina minuscola con breve","Latin small letter u with double acute":"Lettera U latina minuscola con doppio accento acuto","Latin small letter u with macron":"Lettera U latina minuscola con macron","Latin small letter u with ogonek":"Lettera U latina minuscola con codetta","Latin small letter u with ring above":"Lettera U latina minuscola con cerchio in alto","Latin small letter u with tilde":"Lettera U latina minuscola con tilde","Latin small letter w with circumflex":"Lettera W latina minuscola con accento circonflesso","Latin small letter y with circumflex":"Lettera Y latina minuscola con accento circonflesso","Latin small letter z with acute":"Lettera Z latina minuscola con accento acuto","Latin small letter z with caron":"Lettera Z latina minuscola con pipa","Latin small letter z with dot above":"Lettera Z latina minuscola con punto sovrascritto","Latin small ligature ij":"Legatura IJ latina minuscola","Latin small ligature oe":"Legatura OE latina minuscola","Left double quotation mark":"Doppie virgolette a sinistra","Left single quotation mark":"Virgoletta a sinistra","Left-pointing double angle quotation mark":"Virgolette doppie angolari a sinistra","leftwards arrow to bar":"Freccia verso barra a sinistra","leftwards dashed arrow":"Freccia tratteggiata verso sinistra","leftwards double arrow":"Freccia doppia verso sinistra","Less-than or equal to":"Minore o uguale a","Less-than sign":"Simbolo minore di","Lira sign":"Simbolo lira","Livre tournois sign":"Simbolo livre tournois","Logical and":"E logico","Logical or":"O logico",Macron:"Macron","Manat sign":"Simbolo manat","Mill sign":"Simbolo millesimo","Minus sign":"Segno di sottrazione","Multiplication sign":"Segno di moltiplicazione","N-ary product":"Prodotto ennesimo","N-ary summation":"Sommatoria",Nabla:"Nabla","Naira sign":"Simbolo naira","New sheqel sign":"Simbolo nuovo shekel","Nordic mark sign":"Simbolo marco nordico","Not an element of":"Non parte di","Not equal to":"Non uguale a","Not sign":"Simbolo Not","on with exclamation mark with left right arrow above":"on! con sopra freccia verso sinistra",Overline:"Linea alta","Paragraph sign":"Simbolo paragrafo","Partial differential":"Derivata parziale","Per mille sign":"Simbolo per mille","Per ten thousand sign":"Simbolo per diecimila","Peseta sign":"Simbolo peseta","Peso sign":"Simbolo peso","Plus-minus sign":"Segno più o meno","Pound sign":"Simbolo sterlina","Proportional to":"Proporzionale a","Question exclamation mark":"Punti interrogativo ed esclamativo","Registered sign":"Simbolo marchio registrato","Reversed paragraph sign":"Simbolo paragrafo invertito","Right double quotation mark":"Doppie virgolette a destra","Right single quotation mark":"Virgoletta a destra","Right-pointing double angle quotation mark":"Virgolette doppie angolari a destra","rightwards arrow to bar":"Freccia verso barra a destra","rightwards dashed arrow":"Freccia tratteggiata verso destra","rightwards double arrow":"Freccia doppia verso destra","Ruble sign":"Simbolo rublo","Rupee sign":"Simbolo rupia","Section sign":"Simbolo sezione","Single left-pointing angle quotation mark":"Virgoletta angolare a sinistra","Single low-9 quotation mark":"Virgoletta bassa","Single right-pointing angle quotation mark":"Virgoletta angolare a destra","soon with rightwards arrow above":"soon con sopra freccia verso destra","Special characters":"Caratteri speciali","Spesmilo sign":"Simbolo spesmilo","Square root":"Radice quadrata","Tenge sign":"Simbolo tenge","There exists":"Esiste","Tilde operator":"Operatore tilde","top with upwards arrow above":"top con sopra freccia verso l'alto","Trade mark sign":"Simbolo trademark","Tugrik sign":"Simbolo tugrik","Turkish lira sign":"Simbolo lira turca","Two dot leader":"Due punti iniziali",Union:"Unione","up down arrow with base":"Doppia freccia verticale con base","upwards arrow to bar":"Freccia verso barra in alto","upwards dashed arrow":"Freccia tratteggiata verso l'alto","upwards double arrow":"Freccia doppia verso l'alto","Vulgar fraction one half":"Frazione semplice un mezzo","Vulgar fraction one quarter":"Frazione semplice un quarto","Vulgar fraction three quarters":"Frazione semplice tre quarti","Won sign":"Simbolo won","Yen sign":"Simbolo yen"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(a){const t=a.it=a.it||{};t.dictionary=Object.assign(t.dictionary||{},{"Almost equal to":"Quasi uguale a",Angle:"Angolo","Approximately equal to":"Approssimativamente uguale a","Asterisk operator":"Operatore asterisco","Austral sign":"Simbolo austral","back with leftwards arrow above":"back con sopra freccia verso sinistra","Bitcoin sign":"Simbolo bitcoin","Cedi sign":"Simbolo cedi","Cent sign":"Simbolo centesimo","Character categories":"Categorie di caratteri","Colon sign":"Simbolo colon","Contains as member":"Contiene","Copyright sign":"Simbolo copyright","Cruzeiro sign":"Simbolo cruzeiro","Currency sign":"Simbolo valuta","Degree sign":"Simbolo gradi","Division sign":"Segno di divisione","Dollar sign":"Simbolo dollaro","Dong sign":"Simbolo dong","Double dagger":"Doppio obelisco","Double exclamation mark":"Doppio punto esclamativo","Double low-9 quotation mark":"Doppie virgolette basse","Double question mark":"Doppio punto interrogativo","downwards arrow to bar":"Freccia verso barra in basso","downwards dashed arrow":"Freccia tratteggiata verso il basso","downwards double arrow":"Freccia doppia verso il basso","downwards simple arrow":"freccia semplice verso il basso","Drachma sign":"Simbolo dracma","Element of":"Elemento di","Em dash":"Trattino lungo (em)","Empty set":"Insieme vuoto","En dash":"Trattino medio (en)","end with leftwards arrow above":"end con sopra freccia verso sinistra","Euro sign":"Simbolo euro","Euro-currency sign":"Simbolo valuta euro","Exclamation question mark":"Punti esclamativo e interrogativo","For all":"Per ogni","Fraction slash":"Barra di frazione","French franc sign":"Simbolo franco francese","German penny sign":"Simbolo pfennig tedesco","Greater-than or equal to":"Maggiore o uguale a","Greater-than sign":"Simbolo maggiore di","Guarani sign":"Simbolo guaraní","Horizontal ellipsis":"Puntini di sospensione orizzontali","Hryvnia sign":"Simbolo grivnia","Identical to":"Identico a","Indian rupee sign":"Simbolo rupia indiana",Infinity:"Infinito",Integral:"Integrale",Intersection:"Intersezione","Inverted exclamation mark":"Punto esclamativo invertito","Inverted question mark":"Punto interrogativo invertito","Kip sign":"Simbolo kip","Latin capital letter a with breve":"Lettera A latina maiuscola con breve","Latin capital letter a with macron":"Lettera A latina maiuscola con macron","Latin capital letter a with ogonek":"Lettera A latina maiuscola con codetta","Latin capital letter c with acute":"Lettera C latina maiuscola con accento acuto","Latin capital letter c with caron":"Lettera C latina maiuscola con pipa","Latin capital letter c with circumflex":"Lettera C latina maiuscola con accento circonflesso","Latin capital letter c with dot above":"Lettera C latina maiuscola con punto sovrascritto","Latin capital letter d with caron":"Lettera D latina maiuscola con pipa","Latin capital letter d with stroke":"Lettera D latina maiuscola con barra","Latin capital letter e with breve":"Lettera E latina maiuscola con accento breve","Latin capital letter e with caron":"Lettera E latina maiuscola con pipa","Latin capital letter e with dot above":"Lettera E latina maiuscola con punto sovrascritto","Latin capital letter e with macron":"Lettera E latina maiuscola con macron","Latin capital letter e with ogonek":"Lettera E latina maiuscola con codetta","Latin capital letter eng":"Nasale velare maiuscola","Latin capital letter g with breve":"Lettera G latina maiuscola con breve","Latin capital letter g with cedilla":"Lettera G latina maiuscola con cediglia","Latin capital letter g with circumflex":"Lettera G latina maiuscola con accento circonflesso","Latin capital letter g with dot above":"Lettera G latina maiuscola con punto sovrascritto","Latin capital letter h with circumflex":"Lettera H latina maiuscola con accento circonflesso","Latin capital letter h with stroke":"Lettera H latina maiuscola con barra","Latin capital letter i with breve":"Lettera I latina maiuscola con breve","Latin capital letter i with dot above":"Lettera I latina maiuscola con punto sovrascritto","Latin capital letter i with macron":"Lettera I latina maiuscola con macron","Latin capital letter i with ogonek":"Lettera I latina maiuscola con codetta","Latin capital letter i with tilde":"Lettera I latina maiuscola con tilde","Latin capital letter j with circumflex":"Lettera J latina maiuscola con accento circonflesso","Latin capital letter k with cedilla":"Lettera K latina maiuscola con cediglia","Latin capital letter l with acute":"Lettera L latina maiuscola con accento acuto","Latin capital letter l with caron":"Lettera L latina maiuscola con pipa","Latin capital letter l with cedilla":"Lettera L latina maiuscola con cediglia","Latin capital letter l with middle dot":"Lettera L latina maiuscola con punto in mezzo","Latin capital letter l with stroke":"Lettera L latina maiuscola con barra","Latin capital letter n with acute":"Lettera N latina maiuscola con accento acuto","Latin capital letter n with caron":"Lettera N latina maiuscola con pipa","Latin capital letter n with cedilla":"Lettera N latina maiuscola con cediglia","Latin capital letter o with breve":"Lettera O latina maiuscola con breve","Latin capital letter o with double acute":"Lettera O latina maiuscola con doppio accento acuto","Latin capital letter o with macron":"Lettera O latina maiuscola con macron","Latin capital letter r with acute":"Lettera R latina maiuscola con accento acuto","Latin capital letter r with caron":"Lettera R latina maiuscola con pipa","Latin capital letter r with cedilla":"Lettera R latina maiuscola con cediglia","Latin capital letter s with acute":"Lettera S latina maiuscola con accento acuto","Latin capital letter s with caron":"Lettera S latina maiuscola con pipa","Latin capital letter s with cedilla":"Lettera S latina maiuscola con cediglia","Latin capital letter s with circumflex":"Lettera S latina maiuscola con accento circonflesso","Latin capital letter t with caron":"Lettera T latina maiuscola con pipa","Latin capital letter t with cedilla":"Lettera T latina maiuscola con cediglia","Latin capital letter t with stroke":"Lettera T latina maiuscola con barra","Latin capital letter u with breve":"Lettera U latina maiuscola con breve","Latin capital letter u with double acute":"Lettera U latina maiuscola con doppio accento acuto","Latin capital letter u with macron":"Lettera U latina maiuscola con macron","Latin capital letter u with ogonek":"Lettera U latina maiuscola con codetta","Latin capital letter u with ring above":"Lettera U latina maiuscola con anello in alto","Latin capital letter u with tilde":"Lettera U latina maiuscola con tilde","Latin capital letter w with circumflex":"Lettera W latina maiuscola con accento circonflesso","Latin capital letter y with circumflex":"Lettera Y latina maiuscola con accento circonflesso","Latin capital letter y with diaeresis":"Lettera Y latina maiuscola con dieresi","Latin capital letter z with acute":"Lettera Z latina maiuscola con accento acuto","Latin capital letter z with caron":"Lettera Z latina maiuscola con pipa","Latin capital letter z with dot above":"Lettera Z latina maiuscola con punto sovrascritto","Latin capital ligature ij":"Legatura IJ latina maiuscola","Latin capital ligature oe":"Legatura OE latina maiuscola","Latin small letter a with breve":"Lettera A latina minuscola con breve","Latin small letter a with macron":"Lettera A latina minuscola con macron","Latin small letter a with ogonek":"Lettera A latina minuscola con codetta","Latin small letter c with acute":"Lettera C latina minuscola con accento acuto","Latin small letter c with caron":"Lettera C latina minuscola con pipa","Latin small letter c with circumflex":"Lettera C latina minuscola con accento circonflesso","Latin small letter c with dot above":"Lettera C latina minuscola con punto sovrascritto","Latin small letter d with caron":"Lettera D latina minuscola con pipa","Latin small letter d with stroke":"Lettera D latina minuscola con barra","Latin small letter dotless i":"Lettera I latina minuscola senza punto","Latin small letter e with breve":"Lettera E latina minuscola con accento breve","Latin small letter e with caron":"Lettera E latina minuscola con pipa","Latin small letter e with dot above":"Lettera E latina minuscola con punto sovrascritto","Latin small letter e with macron":"Lettera E latina minuscola con macron","Latin small letter e with ogonek":"Lettera E latina minuscola con codetta","Latin small letter eng":"Nasale velare minuscola","Latin small letter f with hook":"Lettera f latina minuscola con gancio","Latin small letter g with breve":"Lettera G latina minuscola con breve","Latin small letter g with cedilla":"Lettera G latina minuscola con cediglia","Latin small letter g with circumflex":"Lettera G latina minuscola con accento circonflesso","Latin small letter g with dot above":"Lettera G latina minuscola con punto sovrascritto","Latin small letter h with circumflex":"Lettera H latina minuscola con accento circonflesso","Latin small letter h with stroke":"Lettera H latina minuscola con barra","Latin small letter i with breve":"Lettera I latina minuscola con breve","Latin small letter i with macron":"Lettera I latina minuscola con macron","Latin small letter i with ogonek":"Lettera I latina minuscola con codetta","Latin small letter i with tilde":"Lettera I latina minuscola con tilde","Latin small letter j with circumflex":"Lettera J latina minuscola con accento circonflesso","Latin small letter k with cedilla":"Lettera K latina minuscola con cediglia","Latin small letter kra":"Lettera Kra latina minuscola","Latin small letter l with acute":"Lettera L latina minuscola con accento acuto","Latin small letter l with caron":"Lettera L latina minuscola con pipa","Latin small letter l with cedilla":"Lettera L latina minuscola con cediglia","Latin small letter l with middle dot":"Lettera L latina minuscola con punto in mezzo","Latin small letter l with stroke":"Lettera L latina minuscola con barra","Latin small letter long s":"Lettera S latina lunga minuscola","Latin small letter n preceded by apostrophe":"Lettera N latina minuscola preceduta da apostrofo","Latin small letter n with acute":"Lettera N latina minuscola con accento acuto","Latin small letter n with caron":"Lettera N latina minuscola con pipa","Latin small letter n with cedilla":"Lettera N latina minuscola con cediglia","Latin small letter o with breve":"Lettera O latina minuscola con breve","Latin small letter o with double acute":"Lettera O latina minuscola con doppio accento acuto","Latin small letter o with macron":"Lettera O latina minuscola con macron","Latin small letter r with acute":"Lettera R latina minuscola con accento acuto","Latin small letter r with caron":"Lettera R latina minuscola con pipa","Latin small letter r with cedilla":"Lettera R latina minuscola con cediglia","Latin small letter s with acute":"Lettera S latina minuscola con accento acuto","Latin small letter s with caron":"Lettera S latina minuscola con pipa","Latin small letter s with cedilla":"Lettera S latina minuscola con cediglia","Latin small letter s with circumflex":"Lettera S latina minuscola con accento circonflesso","Latin small letter t with caron":"Lettera T latina minuscola con pipa","Latin small letter t with cedilla":"Lettera T latina minuscola con cediglia","Latin small letter t with stroke":"Lettera T latina minuscola con barra","Latin small letter u with breve":"Lettera U latina minuscola con breve","Latin small letter u with double acute":"Lettera U latina minuscola con doppio accento acuto","Latin small letter u with macron":"Lettera U latina minuscola con macron","Latin small letter u with ogonek":"Lettera U latina minuscola con codetta","Latin small letter u with ring above":"Lettera U latina minuscola con cerchio in alto","Latin small letter u with tilde":"Lettera U latina minuscola con tilde","Latin small letter w with circumflex":"Lettera W latina minuscola con accento circonflesso","Latin small letter y with circumflex":"Lettera Y latina minuscola con accento circonflesso","Latin small letter z with acute":"Lettera Z latina minuscola con accento acuto","Latin small letter z with caron":"Lettera Z latina minuscola con pipa","Latin small letter z with dot above":"Lettera Z latina minuscola con punto sovrascritto","Latin small ligature ij":"Legatura IJ latina minuscola","Latin small ligature oe":"Legatura OE latina minuscola","Left double quotation mark":"Doppie virgolette a sinistra","Left single quotation mark":"Virgoletta a sinistra","Left-pointing double angle quotation mark":"Virgolette doppie angolari a sinistra","leftwards arrow to bar":"Freccia verso barra a sinistra","leftwards dashed arrow":"Freccia tratteggiata verso sinistra","leftwards double arrow":"Freccia doppia verso sinistra","leftwards simple arrow":"freccia semplice verso sinistra","Less-than or equal to":"Minore o uguale a","Less-than sign":"Simbolo minore di","Lira sign":"Simbolo lira","Livre tournois sign":"Simbolo livre tournois","Logical and":"E logico","Logical or":"O logico",Macron:"Macron","Manat sign":"Simbolo manat","Mill sign":"Simbolo millesimo","Minus sign":"Segno di sottrazione","Multiplication sign":"Segno di moltiplicazione","N-ary product":"Prodotto ennesimo","N-ary summation":"Sommatoria",Nabla:"Nabla","Naira sign":"Simbolo naira","New sheqel sign":"Simbolo nuovo shekel","Nordic mark sign":"Simbolo marco nordico","Not an element of":"Non parte di","Not equal to":"Non uguale a","Not sign":"Simbolo Not","on with exclamation mark with left right arrow above":"on! con sopra freccia verso sinistra",Overline:"Linea alta","Paragraph sign":"Simbolo paragrafo","Partial differential":"Derivata parziale","Per mille sign":"Simbolo per mille","Per ten thousand sign":"Simbolo per diecimila","Peseta sign":"Simbolo peseta","Peso sign":"Simbolo peso","Plus-minus sign":"Segno più o meno","Pound sign":"Simbolo sterlina","Proportional to":"Proporzionale a","Question exclamation mark":"Punti interrogativo ed esclamativo","Registered sign":"Simbolo marchio registrato","Reversed paragraph sign":"Simbolo paragrafo invertito","Right double quotation mark":"Doppie virgolette a destra","Right single quotation mark":"Virgoletta a destra","Right-pointing double angle quotation mark":"Virgolette doppie angolari a destra","rightwards arrow to bar":"Freccia verso barra a destra","rightwards dashed arrow":"Freccia tratteggiata verso destra","rightwards double arrow":"Freccia doppia verso destra","rightwards simple arrow":"freccia semplice verso destra","Ruble sign":"Simbolo rublo","Rupee sign":"Simbolo rupia","Section sign":"Simbolo sezione","Single left-pointing angle quotation mark":"Virgoletta angolare a sinistra","Single low-9 quotation mark":"Virgoletta bassa","Single right-pointing angle quotation mark":"Virgoletta angolare a destra","soon with rightwards arrow above":"soon con sopra freccia verso destra","Special characters":"Caratteri speciali","Spesmilo sign":"Simbolo spesmilo","Square root":"Radice quadrata","Tenge sign":"Simbolo tenge","There exists":"Esiste","Tilde operator":"Operatore tilde","top with upwards arrow above":"top con sopra freccia verso l'alto","Trade mark sign":"Simbolo trademark","Tugrik sign":"Simbolo tugrik","Turkish lira sign":"Simbolo lira turca","Two dot leader":"Due punti iniziali",Union:"Unione","up down arrow with base":"Doppia freccia verticale con base","upwards arrow to bar":"Freccia verso barra in alto","upwards dashed arrow":"Freccia tratteggiata verso l'alto","upwards double arrow":"Freccia doppia verso l'alto","upwards simple arrow":"freccia semplice verso l'alto","Vulgar fraction one half":"Frazione semplice un mezzo","Vulgar fraction one quarter":"Frazione semplice un quarto","Vulgar fraction three quarters":"Frazione semplice tre quarti","Won sign":"Simbolo won","Yen sign":"Simbolo yen"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/special-characters/translations/ja.js b/core/assets/vendor/ckeditor5/special-characters/translations/ja.js
index 3780b1d85c..1c796dcf53 100644
--- a/core/assets/vendor/ckeditor5/special-characters/translations/ja.js
+++ b/core/assets/vendor/ckeditor5/special-characters/translations/ja.js
@@ -1 +1 @@
-!function(t){const a=t.ja=t.ja||{};a.dictionary=Object.assign(a.dictionary||{},{"Almost equal to":"ほぼ等しい",Angle:"角","Approximately equal to":"およそ等しい","Asterisk operator":"アスタリスク演算子","Austral sign":"アウストラル記号","back with leftwards arrow above":"左向き矢印が上にあるBack","Bitcoin sign":"ビットコイン記号","Cedi sign":"セディ記号","Cent sign":"セント記号","Character categories":"文字カテゴリ","Colon sign":"コロン記号","Contains as member":"要素として含む","Copyright sign":"著作権表示記号","Cruzeiro sign":"クルゼイロ記号","Currency sign":"通貨記号","Degree sign":"度記号","Division sign":"除算記号","Dollar sign":"ドル記号","Dong sign":"ドン記号","Double dagger":"ダブルダガー","Double exclamation mark":"二重感嘆符","Double low-9 quotation mark":"下側の二重引用符","Double question mark":"二重疑問符","downwards arrow to bar":"横線に向かう下向き矢印","downwards dashed arrow":"下向き破線矢印","downwards double arrow":"下向き二重矢印","Drachma sign":"ドラクマ記号","Element of":"要素である","Em dash":"全角ダッシュ","Empty set":"空集合","En dash":"半角ダッシュ","end with leftwards arrow above":"左向き矢印が上にあるEnd","Euro sign":"ユーロ記号","Euro-currency sign":"ユーロ通貨記号","Exclamation question mark":"感嘆符疑問符","For all":"任意の","Fraction slash":"分数の斜線","French franc sign":"フランスフラン記号","German penny sign":"ドイツペニー記号","Greater-than or equal to":"大なりまたは等しい","Greater-than sign":"大なり記号","Guarani sign":"グアラニ記号","Horizontal ellipsis":"水平の省略記号","Hryvnia sign":"フリヴニャ記号","Identical to":"同一である","Indian rupee sign":"インドルピー記号",Infinity:"無限",Integral:"積分",Intersection:"集合積","Inverted exclamation mark":"ひっくり返った感嘆符","Inverted question mark":"ひっくり返った疑問符","Kip sign":"キップ記号","Latin capital letter a with breve":"ブリーブ付きラテン大文字A","Latin capital letter a with macron":"マクロン付きラテン大文字A","Latin capital letter a with ogonek":"オゴネク付きラテン大文字A","Latin capital letter c with acute":"アキュート付きラテン大文字C","Latin capital letter c with caron":"キャロン付きラテン大文字C","Latin capital letter c with circumflex":"サーカムフレックス付きラテン大文字C","Latin capital letter c with dot above":"上点付きラテン大文字C","Latin capital letter d with caron":"キャロン付きラテン大文字D","Latin capital letter d with stroke":"ストローク付きラテン大文字D","Latin capital letter e with breve":"ブリーブ付きラテン大文字E","Latin capital letter e with caron":"キャロン付きラテン大文字E","Latin capital letter e with dot above":"上点付きラテン大文字E","Latin capital letter e with macron":"マクロン付きラテン大文字E","Latin capital letter e with ogonek":"オゴネク付きラテン大文字E","Latin capital letter eng":"ラテン大文字ENG","Latin capital letter g with breve":"ブリーブ付きラテン大文字G","Latin capital letter g with cedilla":"セディラ付きラテン大文字G","Latin capital letter g with circumflex":"サーカムフレックス付きラテン大文字G","Latin capital letter g with dot above":"上点付きラテン大文字G","Latin capital letter h with circumflex":"サーカムフレックス付きラテン大文字H","Latin capital letter h with stroke":"ストローク付きラテン大文字H","Latin capital letter i with breve":"ブリーブ付きラテン大文字I","Latin capital letter i with dot above":"上点付きラテン大文字I","Latin capital letter i with macron":"マクロン付きラテン大文字I","Latin capital letter i with ogonek":"オゴネク付きラテン大文字I","Latin capital letter i with tilde":"チルダ付きラテン大文字I","Latin capital letter j with circumflex":"サーカムフレックス付きラテン大文字J","Latin capital letter k with cedilla":"セディラ付きラテン大文字K","Latin capital letter l with acute":"アキュート付きラテン大文字L","Latin capital letter l with caron":"キャロン付きラテン大文字L","Latin capital letter l with cedilla":"セディラ付きラテン大文字L","Latin capital letter l with middle dot":"中点付きラテン大文字L","Latin capital letter l with stroke":"ストローク付きラテン大文字L","Latin capital letter n with acute":"アキュート付きラテン大文字N","Latin capital letter n with caron":"キャロン付きラテン大文字N","Latin capital letter n with cedilla":"セディラ付きラテン大文字N","Latin capital letter o with breve":"ブリーブ付きラテン大文字O","Latin capital letter o with double acute":"ダブルアキュート付きラテン大文字O","Latin capital letter o with macron":"マクロン付きラテン大文字O","Latin capital letter r with acute":"アキュート付きラテン大文字R","Latin capital letter r with caron":"キャロン付きラテン大文字R","Latin capital letter r with cedilla":"セディラ付きラテン大文字R","Latin capital letter s with acute":"アキュート付きラテン大文字S","Latin capital letter s with caron":"キャロン付きラテン大文字S","Latin capital letter s with cedilla":"セディラ付きラテン大文字S","Latin capital letter s with circumflex":"サーカムフレックス付きラテン大文字S","Latin capital letter t with caron":"キャロン付きラテン大文字T","Latin capital letter t with cedilla":"セディラ付きラテン大文字T","Latin capital letter t with stroke":"ストローク付きラテン大文字T","Latin capital letter u with breve":"ブリーブ付きラテン大文字U","Latin capital letter u with double acute":"ダブルアキュート付きラテン大文字U","Latin capital letter u with macron":"マクロン付きラテン大文字U","Latin capital letter u with ogonek":"オゴネク付きラテン大文字U","Latin capital letter u with ring above":"上丸付きラテン大文字U","Latin capital letter u with tilde":"チルダ付きラテン大文字U","Latin capital letter w with circumflex":"サーカムフレックス付きラテン大文字W","Latin capital letter y with circumflex":"サーカムフレックス付きラテン大文字Y","Latin capital letter y with diaeresis":"ダイエレシス付きラテン大文字Y","Latin capital letter z with acute":"アキュート付きラテン大文字Z","Latin capital letter z with caron":"キャロン付きラテン大文字Z","Latin capital letter z with dot above":"上点付きラテン大文字Z","Latin capital ligature ij":"ラテン大文字連字IJ","Latin capital ligature oe":"ラテン大文字連字OE","Latin small letter a with breve":"ブリーブ付きラテン小文字a","Latin small letter a with macron":"マクロン付きラテン小文字a","Latin small letter a with ogonek":"オゴネク付きラテン小文字a","Latin small letter c with acute":"アキュート付きラテン小文字c","Latin small letter c with caron":"キャロン付きラテン小文字c","Latin small letter c with circumflex":"サーカムフレックス付きラテン小文字c","Latin small letter c with dot above":"上点付きラテン小文字c","Latin small letter d with caron":"キャロン付きラテン小文字d","Latin small letter d with stroke":"ストローク付きラテン小文字d","Latin small letter dotless i":"ラテン小文字点のないi","Latin small letter e with breve":"ブリーブ付きラテン小文字e","Latin small letter e with caron":"キャロン付きラテン小文字e","Latin small letter e with dot above":"上点付きラテン小文字e","Latin small letter e with macron":"マクロン付きラテン小文字e","Latin small letter e with ogonek":"オゴネク付きラテン小文字e","Latin small letter eng":"ラテン小文字eng","Latin small letter f with hook":"フック付きラテン小文字f","Latin small letter g with breve":"ブリーブ付きラテン小文字g","Latin small letter g with cedilla":"セディラ付きラテン小文字g","Latin small letter g with circumflex":"サーカムフレックス付きラテン小文字g","Latin small letter g with dot above":"上点付きラテン小文字g","Latin small letter h with circumflex":"サーカムフレックス付きラテン小文字h","Latin small letter h with stroke":"ストローク付きラテン小文字h","Latin small letter i with breve":"ブリーブ付きラテン小文字i","Latin small letter i with macron":"マクロン付きラテン小文字i","Latin small letter i with ogonek":"オゴネク付きラテン小文字i","Latin small letter i with tilde":"チルダ付きラテン小文字i","Latin small letter j with circumflex":"サーカムフレックス付きラテン小文字j","Latin small letter k with cedilla":"セディラ付きラテン小文字k","Latin small letter kra":"ラテン小文字kra","Latin small letter l with acute":"アキュート付きラテン小文字l","Latin small letter l with caron":"キャロン付きラテン小文字l","Latin small letter l with cedilla":"セディラ付きラテン小文字l","Latin small letter l with middle dot":"中点付きラテン小文字l","Latin small letter l with stroke":"ストローク付きラテン小文字l","Latin small letter long s":"ラテン小文字長いs","Latin small letter n preceded by apostrophe":"アポストロフィが前に付くラテン小文字n","Latin small letter n with acute":"アキュート付きラテン小文字n","Latin small letter n with caron":"キャロン付きラテン小文字n","Latin small letter n with cedilla":"セディラ付きラテン小文字n","Latin small letter o with breve":"ブリーブ付きラテン小文字o","Latin small letter o with double acute":"ダブルアキュート付きラテン小文字o","Latin small letter o with macron":"マクロン付きラテン小文字o","Latin small letter r with acute":"アキュート付きラテン小文字r","Latin small letter r with caron":"キャロン付きラテン小文字r","Latin small letter r with cedilla":"セディラ付きラテン小文字r","Latin small letter s with acute":"アキュート付きラテン小文字s","Latin small letter s with caron":"キャロン付きラテン小文字s","Latin small letter s with cedilla":"セディラ付きラテン小文字s","Latin small letter s with circumflex":"サーカムフレックス付きラテン小文字s","Latin small letter t with caron":"キャロン付きラテン小文字t","Latin small letter t with cedilla":"セディラ付きラテン小文字t","Latin small letter t with stroke":"ストローク付きラテン小文字t","Latin small letter u with breve":"ブリーブ付きラテン小文字u","Latin small letter u with double acute":"ダブルアキュート付きラテン小文字u","Latin small letter u with macron":"マクロン付きラテン小文字u","Latin small letter u with ogonek":"オゴネク付きラテン小文字u","Latin small letter u with ring above":"上丸付きラテン小文字u","Latin small letter u with tilde":"チルダ付きラテン小文字u","Latin small letter w with circumflex":"サーカムフレックス付きラテン小文字w","Latin small letter y with circumflex":"サーカムフレックス付きラテン小文字y","Latin small letter z with acute":"アキュート付きラテン小文字z","Latin small letter z with caron":"キャロン付きラテン小文字z","Latin small letter z with dot above":"上点付きラテン小文字z","Latin small ligature ij":"ラテン小文字連字ij","Latin small ligature oe":"ラテン小文字連字oe","Left double quotation mark":"左の二重引用符","Left single quotation mark":"左の一重引用符","Left-pointing double angle quotation mark":"左を指す角張った二重引用符","leftwards arrow to bar":"縦線に向かう左向き矢印","leftwards dashed arrow":"左向き破線矢印","leftwards double arrow":"左向き二重矢印","Less-than or equal to":"小なりまたは等しい","Less-than sign":"小なり記号","Lira sign":"リラ記号","Livre tournois sign":"リーヴルトゥルノワ記号","Logical and":"論理積","Logical or":"論理和",Macron:"マクロン","Manat sign":"マナト記号","Mill sign":"ミル記号","Minus sign":"マイナス記号","Multiplication sign":"乗算記号","N-ary product":"配列用の積","N-ary summation":"配列用の和",Nabla:"ナブラ","Naira sign":"ナイラ記号","New sheqel sign":"新シェケル記号","Nordic mark sign":"ノルディックマーク記号","Not an element of":"要素でない","Not equal to":"等しくない","Not sign":"否定記号","on with exclamation mark with left right arrow above":"左右両方を向いた矢印が上にある感嘆符付きOn",Overline:"上線","Paragraph sign":"段落記号","Partial differential":"偏微分","Per mille sign":"パーミル記号","Per ten thousand sign":"一万分率記号","Peseta sign":"ペセタ記号","Peso sign":"ペソ記号","Plus-minus sign":"プラスマイナス記号","Pound sign":"ポンド記号","Proportional to":"比例","Question exclamation mark":"疑問符感嘆符","Registered sign":"登録商標記号","Reversed paragraph sign":"反転した段落記号","Right double quotation mark":"右の二重引用符","Right single quotation mark":"右の一重引用符","Right-pointing double angle quotation mark":"右を指す角張った二重引用符","rightwards arrow to bar":"縦線に向かう右向き矢印","rightwards dashed arrow":"右向き破線矢印","rightwards double arrow":"右向き二重矢印","Ruble sign":"ルーブル記号","Rupee sign":"ルピー記号","Section sign":"節記号","Single left-pointing angle quotation mark":"左を指す角張った一重引用符","Single low-9 quotation mark":"下側の一重引用符","Single right-pointing angle quotation mark":"右を指す角張った一重引用符","soon with rightwards arrow above":"右向き矢印が上にあるSoon","Special characters":"特殊文字","Spesmilo sign":"スぺスミロ記号","Square root":"平方根","Tenge sign":"テンゲ記号","There exists":"存在する","Tilde operator":"チルダ演算子","top with upwards arrow above":"上向き矢印が上にあるTop","Trade mark sign":"商標記号","Tugrik sign":"トゥグルグ記号","Turkish lira sign":"トルコリラ記号","Two dot leader":"二点のリーダー(点線)",Union:"集合和","up down arrow with base":"ベース付き上下両方を向いた矢印","upwards arrow to bar":"横線に向かう上向き矢印","upwards dashed arrow":"上向き破線矢印","upwards double arrow":"上向き二重矢印","Vulgar fraction one half":"常分数2分の1","Vulgar fraction one quarter":"常分数4分の1","Vulgar fraction three quarters":"常分数4分の3","Won sign":"ウォン記号","Yen sign":"円記号"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(t){const a=t.ja=t.ja||{};a.dictionary=Object.assign(a.dictionary||{},{"Almost equal to":"ほぼ等しい",Angle:"角","Approximately equal to":"およそ等しい","Asterisk operator":"アスタリスク演算子","Austral sign":"アウストラル記号","back with leftwards arrow above":"左向き矢印が上にあるBack","Bitcoin sign":"ビットコイン記号","Cedi sign":"セディ記号","Cent sign":"セント記号","Character categories":"文字カテゴリ","Colon sign":"コロン記号","Contains as member":"要素として含む","Copyright sign":"著作権表示記号","Cruzeiro sign":"クルゼイロ記号","Currency sign":"通貨記号","Degree sign":"度記号","Division sign":"除算記号","Dollar sign":"ドル記号","Dong sign":"ドン記号","Double dagger":"ダブルダガー","Double exclamation mark":"二重感嘆符","Double low-9 quotation mark":"下側の二重引用符","Double question mark":"二重疑問符","downwards arrow to bar":"横線に向かう下向き矢印","downwards dashed arrow":"下向き破線矢印","downwards double arrow":"下向き二重矢印","downwards simple arrow":"シンプルな下向き矢印","Drachma sign":"ドラクマ記号","Element of":"要素である","Em dash":"全角ダッシュ","Empty set":"空集合","En dash":"半角ダッシュ","end with leftwards arrow above":"左向き矢印が上にあるEnd","Euro sign":"ユーロ記号","Euro-currency sign":"ユーロ通貨記号","Exclamation question mark":"感嘆符疑問符","For all":"任意の","Fraction slash":"分数の斜線","French franc sign":"フランスフラン記号","German penny sign":"ドイツペニー記号","Greater-than or equal to":"大なりまたは等しい","Greater-than sign":"大なり記号","Guarani sign":"グアラニ記号","Horizontal ellipsis":"水平の省略記号","Hryvnia sign":"フリヴニャ記号","Identical to":"同一である","Indian rupee sign":"インドルピー記号",Infinity:"無限",Integral:"積分",Intersection:"集合積","Inverted exclamation mark":"ひっくり返った感嘆符","Inverted question mark":"ひっくり返った疑問符","Kip sign":"キップ記号","Latin capital letter a with breve":"ブリーブ付きラテン大文字A","Latin capital letter a with macron":"マクロン付きラテン大文字A","Latin capital letter a with ogonek":"オゴネク付きラテン大文字A","Latin capital letter c with acute":"アキュート付きラテン大文字C","Latin capital letter c with caron":"キャロン付きラテン大文字C","Latin capital letter c with circumflex":"サーカムフレックス付きラテン大文字C","Latin capital letter c with dot above":"上点付きラテン大文字C","Latin capital letter d with caron":"キャロン付きラテン大文字D","Latin capital letter d with stroke":"ストローク付きラテン大文字D","Latin capital letter e with breve":"ブリーブ付きラテン大文字E","Latin capital letter e with caron":"キャロン付きラテン大文字E","Latin capital letter e with dot above":"上点付きラテン大文字E","Latin capital letter e with macron":"マクロン付きラテン大文字E","Latin capital letter e with ogonek":"オゴネク付きラテン大文字E","Latin capital letter eng":"ラテン大文字ENG","Latin capital letter g with breve":"ブリーブ付きラテン大文字G","Latin capital letter g with cedilla":"セディラ付きラテン大文字G","Latin capital letter g with circumflex":"サーカムフレックス付きラテン大文字G","Latin capital letter g with dot above":"上点付きラテン大文字G","Latin capital letter h with circumflex":"サーカムフレックス付きラテン大文字H","Latin capital letter h with stroke":"ストローク付きラテン大文字H","Latin capital letter i with breve":"ブリーブ付きラテン大文字I","Latin capital letter i with dot above":"上点付きラテン大文字I","Latin capital letter i with macron":"マクロン付きラテン大文字I","Latin capital letter i with ogonek":"オゴネク付きラテン大文字I","Latin capital letter i with tilde":"チルダ付きラテン大文字I","Latin capital letter j with circumflex":"サーカムフレックス付きラテン大文字J","Latin capital letter k with cedilla":"セディラ付きラテン大文字K","Latin capital letter l with acute":"アキュート付きラテン大文字L","Latin capital letter l with caron":"キャロン付きラテン大文字L","Latin capital letter l with cedilla":"セディラ付きラテン大文字L","Latin capital letter l with middle dot":"中点付きラテン大文字L","Latin capital letter l with stroke":"ストローク付きラテン大文字L","Latin capital letter n with acute":"アキュート付きラテン大文字N","Latin capital letter n with caron":"キャロン付きラテン大文字N","Latin capital letter n with cedilla":"セディラ付きラテン大文字N","Latin capital letter o with breve":"ブリーブ付きラテン大文字O","Latin capital letter o with double acute":"ダブルアキュート付きラテン大文字O","Latin capital letter o with macron":"マクロン付きラテン大文字O","Latin capital letter r with acute":"アキュート付きラテン大文字R","Latin capital letter r with caron":"キャロン付きラテン大文字R","Latin capital letter r with cedilla":"セディラ付きラテン大文字R","Latin capital letter s with acute":"アキュート付きラテン大文字S","Latin capital letter s with caron":"キャロン付きラテン大文字S","Latin capital letter s with cedilla":"セディラ付きラテン大文字S","Latin capital letter s with circumflex":"サーカムフレックス付きラテン大文字S","Latin capital letter t with caron":"キャロン付きラテン大文字T","Latin capital letter t with cedilla":"セディラ付きラテン大文字T","Latin capital letter t with stroke":"ストローク付きラテン大文字T","Latin capital letter u with breve":"ブリーブ付きラテン大文字U","Latin capital letter u with double acute":"ダブルアキュート付きラテン大文字U","Latin capital letter u with macron":"マクロン付きラテン大文字U","Latin capital letter u with ogonek":"オゴネク付きラテン大文字U","Latin capital letter u with ring above":"上丸付きラテン大文字U","Latin capital letter u with tilde":"チルダ付きラテン大文字U","Latin capital letter w with circumflex":"サーカムフレックス付きラテン大文字W","Latin capital letter y with circumflex":"サーカムフレックス付きラテン大文字Y","Latin capital letter y with diaeresis":"ダイエレシス付きラテン大文字Y","Latin capital letter z with acute":"アキュート付きラテン大文字Z","Latin capital letter z with caron":"キャロン付きラテン大文字Z","Latin capital letter z with dot above":"上点付きラテン大文字Z","Latin capital ligature ij":"ラテン大文字連字IJ","Latin capital ligature oe":"ラテン大文字連字OE","Latin small letter a with breve":"ブリーブ付きラテン小文字a","Latin small letter a with macron":"マクロン付きラテン小文字a","Latin small letter a with ogonek":"オゴネク付きラテン小文字a","Latin small letter c with acute":"アキュート付きラテン小文字c","Latin small letter c with caron":"キャロン付きラテン小文字c","Latin small letter c with circumflex":"サーカムフレックス付きラテン小文字c","Latin small letter c with dot above":"上点付きラテン小文字c","Latin small letter d with caron":"キャロン付きラテン小文字d","Latin small letter d with stroke":"ストローク付きラテン小文字d","Latin small letter dotless i":"ラテン小文字点のないi","Latin small letter e with breve":"ブリーブ付きラテン小文字e","Latin small letter e with caron":"キャロン付きラテン小文字e","Latin small letter e with dot above":"上点付きラテン小文字e","Latin small letter e with macron":"マクロン付きラテン小文字e","Latin small letter e with ogonek":"オゴネク付きラテン小文字e","Latin small letter eng":"ラテン小文字eng","Latin small letter f with hook":"フック付きラテン小文字f","Latin small letter g with breve":"ブリーブ付きラテン小文字g","Latin small letter g with cedilla":"セディラ付きラテン小文字g","Latin small letter g with circumflex":"サーカムフレックス付きラテン小文字g","Latin small letter g with dot above":"上点付きラテン小文字g","Latin small letter h with circumflex":"サーカムフレックス付きラテン小文字h","Latin small letter h with stroke":"ストローク付きラテン小文字h","Latin small letter i with breve":"ブリーブ付きラテン小文字i","Latin small letter i with macron":"マクロン付きラテン小文字i","Latin small letter i with ogonek":"オゴネク付きラテン小文字i","Latin small letter i with tilde":"チルダ付きラテン小文字i","Latin small letter j with circumflex":"サーカムフレックス付きラテン小文字j","Latin small letter k with cedilla":"セディラ付きラテン小文字k","Latin small letter kra":"ラテン小文字kra","Latin small letter l with acute":"アキュート付きラテン小文字l","Latin small letter l with caron":"キャロン付きラテン小文字l","Latin small letter l with cedilla":"セディラ付きラテン小文字l","Latin small letter l with middle dot":"中点付きラテン小文字l","Latin small letter l with stroke":"ストローク付きラテン小文字l","Latin small letter long s":"ラテン小文字長いs","Latin small letter n preceded by apostrophe":"アポストロフィが前に付くラテン小文字n","Latin small letter n with acute":"アキュート付きラテン小文字n","Latin small letter n with caron":"キャロン付きラテン小文字n","Latin small letter n with cedilla":"セディラ付きラテン小文字n","Latin small letter o with breve":"ブリーブ付きラテン小文字o","Latin small letter o with double acute":"ダブルアキュート付きラテン小文字o","Latin small letter o with macron":"マクロン付きラテン小文字o","Latin small letter r with acute":"アキュート付きラテン小文字r","Latin small letter r with caron":"キャロン付きラテン小文字r","Latin small letter r with cedilla":"セディラ付きラテン小文字r","Latin small letter s with acute":"アキュート付きラテン小文字s","Latin small letter s with caron":"キャロン付きラテン小文字s","Latin small letter s with cedilla":"セディラ付きラテン小文字s","Latin small letter s with circumflex":"サーカムフレックス付きラテン小文字s","Latin small letter t with caron":"キャロン付きラテン小文字t","Latin small letter t with cedilla":"セディラ付きラテン小文字t","Latin small letter t with stroke":"ストローク付きラテン小文字t","Latin small letter u with breve":"ブリーブ付きラテン小文字u","Latin small letter u with double acute":"ダブルアキュート付きラテン小文字u","Latin small letter u with macron":"マクロン付きラテン小文字u","Latin small letter u with ogonek":"オゴネク付きラテン小文字u","Latin small letter u with ring above":"上丸付きラテン小文字u","Latin small letter u with tilde":"チルダ付きラテン小文字u","Latin small letter w with circumflex":"サーカムフレックス付きラテン小文字w","Latin small letter y with circumflex":"サーカムフレックス付きラテン小文字y","Latin small letter z with acute":"アキュート付きラテン小文字z","Latin small letter z with caron":"キャロン付きラテン小文字z","Latin small letter z with dot above":"上点付きラテン小文字z","Latin small ligature ij":"ラテン小文字連字ij","Latin small ligature oe":"ラテン小文字連字oe","Left double quotation mark":"左の二重引用符","Left single quotation mark":"左の一重引用符","Left-pointing double angle quotation mark":"左を指す角張った二重引用符","leftwards arrow to bar":"縦線に向かう左向き矢印","leftwards dashed arrow":"左向き破線矢印","leftwards double arrow":"左向き二重矢印","leftwards simple arrow":"シンプルな左向き矢印","Less-than or equal to":"小なりまたは等しい","Less-than sign":"小なり記号","Lira sign":"リラ記号","Livre tournois sign":"リーヴルトゥルノワ記号","Logical and":"論理積","Logical or":"論理和",Macron:"マクロン","Manat sign":"マナト記号","Mill sign":"ミル記号","Minus sign":"マイナス記号","Multiplication sign":"乗算記号","N-ary product":"配列用の積","N-ary summation":"配列用の和",Nabla:"ナブラ","Naira sign":"ナイラ記号","New sheqel sign":"新シェケル記号","Nordic mark sign":"ノルディックマーク記号","Not an element of":"要素でない","Not equal to":"等しくない","Not sign":"否定記号","on with exclamation mark with left right arrow above":"左右両方を向いた矢印が上にある感嘆符付きOn",Overline:"上線","Paragraph sign":"段落記号","Partial differential":"偏微分","Per mille sign":"パーミル記号","Per ten thousand sign":"一万分率記号","Peseta sign":"ペセタ記号","Peso sign":"ペソ記号","Plus-minus sign":"プラスマイナス記号","Pound sign":"ポンド記号","Proportional to":"比例","Question exclamation mark":"疑問符感嘆符","Registered sign":"登録商標記号","Reversed paragraph sign":"反転した段落記号","Right double quotation mark":"右の二重引用符","Right single quotation mark":"右の一重引用符","Right-pointing double angle quotation mark":"右を指す角張った二重引用符","rightwards arrow to bar":"縦線に向かう右向き矢印","rightwards dashed arrow":"右向き破線矢印","rightwards double arrow":"右向き二重矢印","rightwards simple arrow":"シンプルな右向き矢印","Ruble sign":"ルーブル記号","Rupee sign":"ルピー記号","Section sign":"節記号","Single left-pointing angle quotation mark":"左を指す角張った一重引用符","Single low-9 quotation mark":"下側の一重引用符","Single right-pointing angle quotation mark":"右を指す角張った一重引用符","soon with rightwards arrow above":"右向き矢印が上にあるSoon","Special characters":"特殊文字","Spesmilo sign":"スぺスミロ記号","Square root":"平方根","Tenge sign":"テンゲ記号","There exists":"存在する","Tilde operator":"チルダ演算子","top with upwards arrow above":"上向き矢印が上にあるTop","Trade mark sign":"商標記号","Tugrik sign":"トゥグルグ記号","Turkish lira sign":"トルコリラ記号","Two dot leader":"二点のリーダー(点線)",Union:"集合和","up down arrow with base":"ベース付き上下両方を向いた矢印","upwards arrow to bar":"横線に向かう上向き矢印","upwards dashed arrow":"上向き破線矢印","upwards double arrow":"上向き二重矢印","upwards simple arrow":"シンプルな上向き矢印","Vulgar fraction one half":"常分数2分の1","Vulgar fraction one quarter":"常分数4分の1","Vulgar fraction three quarters":"常分数4分の3","Won sign":"ウォン記号","Yen sign":"円記号"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/special-characters/translations/ko.js b/core/assets/vendor/ckeditor5/special-characters/translations/ko.js
index 42dc06f70f..02f8861fa6 100644
--- a/core/assets/vendor/ckeditor5/special-characters/translations/ko.js
+++ b/core/assets/vendor/ckeditor5/special-characters/translations/ko.js
@@ -1 +1 @@
-!function(t){const a=t.ko=t.ko||{};a.dictionary=Object.assign(a.dictionary||{},{"Almost equal to":"거의 같음",Angle:"각","Approximately equal to":"대략 같음","Asterisk operator":"별표 연산자","Austral sign":"오스트랄 기호","back with leftwards arrow above":"BACK 위 왼쪽 화살표","Bitcoin sign":"비트코인 기호","Cedi sign":"세디 기호","Cent sign":"센트 기호","Character categories":"문자 카테고리","Colon sign":"콜론 기호","Contains as member":"원소로 포함","Copyright sign":"저작권 기호","Cruzeiro sign":"크루제이루 기호","Currency sign":"통화 기호","Degree sign":"도 기호","Division sign":"나누기 기호","Dollar sign":"달러 기호","Dong sign":"동 기호","Double dagger":"겹칼표","Double exclamation mark":"겹느낌표","Double low-9 quotation mark":"낮은 겹따옴표","Double question mark":"겹물음표","downwards arrow to bar":"아래쪽 바를 향한 화살표","downwards dashed arrow":"아래쪽 대시 화살표","downwards double arrow":"아래쪽 겹화살표","Drachma sign":"드라크마 기호","Element of":"원소","Em dash":"엠 대시","Empty set":"공집합","En dash":"엔 대시","end with leftwards arrow above":"END 위 왼쪽 화살표","Euro sign":"유로 기호","Euro-currency sign":"유로화 기호","Exclamation question mark":"느낌표 물음표","For all":"전칭","Fraction slash":"분수 슬래시","French franc sign":"프랑스 프랑 기호","German penny sign":"독일 페니 기호","Greater-than or equal to":"더 크거나 같음","Greater-than sign":"더 큼 기호","Guarani sign":"과라니 기호","Horizontal ellipsis":"세 점 줄임표","Hryvnia sign":"흐리브냐 기호","Identical to":"합동","Indian rupee sign":"인도 루피 기호",Infinity:"무한대",Integral:"적분",Intersection:"교집합","Inverted exclamation mark":"역느낌표","Inverted question mark":"역물음표","Kip sign":"킵 기호","Latin capital letter a with breve":"반달점 부호가 있는 라틴어 대문자 A","Latin capital letter a with macron":"장음 부호가 있는 라틴어 대문자 A","Latin capital letter a with ogonek":"꼬리 부호가 있는 라틴어 대문자 A","Latin capital letter c with acute":"양음 부호가 있는 라틴어 대문자 C","Latin capital letter c with caron":"반대 곡절 부호가 있는 라틴어 대문자 C","Latin capital letter c with circumflex":"곡절 부호가 있는 라틴어 대문자 C","Latin capital letter c with dot above":"위에 점 부호가 있는 라틴어 대문자 C","Latin capital letter d with caron":"반대 곡절 부호가 있는 라틴어 대문자 D","Latin capital letter d with stroke":"획 부호가 있는 라틴어 대문자 D","Latin capital letter e with breve":"반달점 부호가 있는 라틴어 대문자 E","Latin capital letter e with caron":"반대 곡절 부호가 있는 라틴어 대문자 E","Latin capital letter e with dot above":"위에 점 부호가 있는 라틴어 대문자 E","Latin capital letter e with macron":"장음 부호가 있는 라틴어 대문자 E","Latin capital letter e with ogonek":"꼬리 부호가 있는 라틴어 대문자 E","Latin capital letter eng":"라틴어 대문자 엥","Latin capital letter g with breve":"반달점 부호가 있는 라틴어 대문자 G","Latin capital letter g with cedilla":"갈고리 부호가 있는 라틴어 대문자 G","Latin capital letter g with circumflex":"곡절 부호가 있는 라틴어 대문자 G","Latin capital letter g with dot above":"위에 점 부호가 있는 라틴어 대문자 G","Latin capital letter h with circumflex":"곡절 부호가 있는 라틴어 대문자 H","Latin capital letter h with stroke":"획 부호가 있는 라틴어 대문자 H","Latin capital letter i with breve":"반달점 부호가 있는 라틴어 대문자 I","Latin capital letter i with dot above":"위에 점 부호가 있는 라틴어 대문자 I","Latin capital letter i with macron":"장음 부호가 있는 라틴어 대문자 I","Latin capital letter i with ogonek":"꼬리 부호가 있는 라틴어 대문자 I","Latin capital letter i with tilde":"물결 부호가 있는 라틴어 대문자 I","Latin capital letter j with circumflex":"곡절 부호가 있는 라틴어 대문자 J","Latin capital letter k with cedilla":"갈고리 부호가 있는 라틴어 대문자 K","Latin capital letter l with acute":"양음 부호가 있는 라틴어 대문자 I","Latin capital letter l with caron":"반대 곡절 부호가 있는 라틴어 대문자 I","Latin capital letter l with cedilla":"갈고리 부호가 있는 라틴어 대문자 I","Latin capital letter l with middle dot":"중간에 점 부호가 있는 라틴어 대문자 I","Latin capital letter l with stroke":"획 부호가 있는 라틴어 대문자 I","Latin capital letter n with acute":"양음 부호가 있는 라틴어 대문자 N","Latin capital letter n with caron":"반대 곡절 부호가 있는 라틴어 대문자 N","Latin capital letter n with cedilla":"갈고리 부호가 있는 라틴어 대문자 N","Latin capital letter o with breve":"반달점 부호가 있는 라틴어 대문자 O","Latin capital letter o with double acute":"이중 양음 부호가 있는 라틴어 대문자 O","Latin capital letter o with macron":"장음 부호가 있는 라틴어 대문자 O","Latin capital letter r with acute":"양음 부호가 있는 라틴어 대문자 R","Latin capital letter r with caron":"반대 곡절 부호가 있는 라틴어 대문자 R","Latin capital letter r with cedilla":"갈고리 부호가 있는 라틴어 대문자 R","Latin capital letter s with acute":"양음 부호가 있는 라틴어 대문자 S","Latin capital letter s with caron":"반대 곡절 부호가 있는 라틴어 대문자 S","Latin capital letter s with cedilla":"갈고리 부호가 있는 라틴어 대문자 S","Latin capital letter s with circumflex":"곡절 부호가 있는 라틴어 대문자 S","Latin capital letter t with caron":"반대 곡절 부호가 있는 라틴어 대문자 T","Latin capital letter t with cedilla":"갈고리 부호가 있는 라틴어 대문자 T","Latin capital letter t with stroke":"획 부호가 있는 라틴어 대문자 T","Latin capital letter u with breve":"반달점 부호가 있는 라틴어 대문자 U","Latin capital letter u with double acute":"이중 양음 부호가 있는 라틴어 대문자 U","Latin capital letter u with macron":"장음 부호가 있는 라틴어 대문자 U","Latin capital letter u with ogonek":"꼬리 부호가 있는 라틴어 대문자 U","Latin capital letter u with ring above":"위에 고리가 있는 라틴어 대문자 U","Latin capital letter u with tilde":"물결 부호가 있는 라틴어 대문자 U","Latin capital letter w with circumflex":"곡절 부호가 있는 라틴어 대문자 W","Latin capital letter y with circumflex":"곡절 부호가 있는 라틴어 대문자 Y","Latin capital letter y with diaeresis":"분음 부호가 있는 라틴어 대문자 Y","Latin capital letter z with acute":"양음 부호가 있는 라틴어 대문자 Z","Latin capital letter z with caron":"반대 곡절 부호가 있는 라틴어 대문자 Z","Latin capital letter z with dot above":"위에 점 부호가 있는 라틴어 대문자 Z","Latin capital ligature ij":"라틴어 대문자 합자 IJ","Latin capital ligature oe":"라틴어 대문자 합자 OE","Latin small letter a with breve":"반달점 부호가 있는 라틴어 소문자 a","Latin small letter a with macron":"장음 부호가 있는 라틴어 소문자 a","Latin small letter a with ogonek":"꼬리 부호가 있는 라틴어 소문자 a","Latin small letter c with acute":"양음 부호가 있는 라틴어 소문자 c","Latin small letter c with caron":"반대 곡절 부호가 있는 라틴어 소문자 c","Latin small letter c with circumflex":"곡절 부호가 있는 라틴어 소문자 c","Latin small letter c with dot above":"위에 점 부호가 있는 라틴어 소문자 c","Latin small letter d with caron":"반대 곡절 부호가 있는 라틴어 소문자 d","Latin small letter d with stroke":"획 부호가 있는 라틴어 소문자 d","Latin small letter dotless i":"라틴어 소문자 점 없는 i","Latin small letter e with breve":"반달점 부호가 있는 라틴어 소문자 e","Latin small letter e with caron":"반대 곡절 부호가 있는 라틴어 소문자 e","Latin small letter e with dot above":"위에 점 부호가 있는 라틴어 소문자 e","Latin small letter e with macron":"장음 부호가 있는 라틴어 소문자 e","Latin small letter e with ogonek":"꼬리 부호가 있는 라틴어 소문자 e","Latin small letter eng":"라틴어 소문자 엥","Latin small letter f with hook":"밑이 구부러진 라틴어 소문자 f","Latin small letter g with breve":"반달점 부호가 있는 라틴어 소문자 g","Latin small letter g with cedilla":"갈고리 부호가 있는 라틴어 소문자 g","Latin small letter g with circumflex":"곡절 부호가 있는 라틴어 소문자 g","Latin small letter g with dot above":"위에 점 부호가 있는 라틴어 소문자 g","Latin small letter h with circumflex":"곡절 부호가 있는 라틴어 소문자 h","Latin small letter h with stroke":"획 부호가 있는 라틴어 소문자 h","Latin small letter i with breve":"반달점 부호가 있는 라틴어 소문자 i","Latin small letter i with macron":"장음 부호가 있는 라틴어 소문자 i","Latin small letter i with ogonek":"꼬리 부호가 있는 라틴어 소문자 i","Latin small letter i with tilde":"물결 부호가 있는 라틴어 소문자 i","Latin small letter j with circumflex":"곡절 부호가 있는 라틴어 소문자 j","Latin small letter k with cedilla":"갈고리 부호가 있는 라틴어 소문자 k","Latin small letter kra":"라틴어 소문자 크라","Latin small letter l with acute":"양음 부호가 있는 라틴어 소문자 i","Latin small letter l with caron":"반대 곡절 부호가 있는 라틴어 소문자 i","Latin small letter l with cedilla":"갈고리 부호가 있는 라틴어 소문자 i","Latin small letter l with middle dot":"중간에 점 부호가 있는 라틴어 소문자 i","Latin small letter l with stroke":"획 부호가 있는 라틴어 소문자 i","Latin small letter long s":"라틴어 소문자 긴 s","Latin small letter n preceded by apostrophe":"아포스트로피 다음에 있는 라틴어 소문자 n","Latin small letter n with acute":"양음 부호가 있는 라틴어 소문자 n","Latin small letter n with caron":"반대 곡절 부호가 있는 라틴어 소문자 n","Latin small letter n with cedilla":"갈고리 부호가 있는 라틴어 소문자 n","Latin small letter o with breve":"반달점 부호가 있는 라틴어 소문자 o","Latin small letter o with double acute":"이중 양음 부호가 있는 라틴어 소문자 o","Latin small letter o with macron":"장음 부호가 있는 라틴어 소문자 o","Latin small letter r with acute":"양음 부호가 있는 라틴어 소문자 r","Latin small letter r with caron":"반대 곡절 부호가 있는 라틴어 소문자 r","Latin small letter r with cedilla":"갈고리 부호가 있는 라틴어 소문자 r","Latin small letter s with acute":"양음 부호가 있는 라틴어 소문자 s","Latin small letter s with caron":"반대 곡절 부호가 있는 라틴어 소문자 s","Latin small letter s with cedilla":"갈고리 부호가 있는 라틴어 소문자 s","Latin small letter s with circumflex":"곡절 부호가 있는 라틴어 소문자 s","Latin small letter t with caron":"반대 곡절 부호가 있는 라틴어 소문자 t","Latin small letter t with cedilla":"갈고리 부호가 있는 라틴어 소문자 t","Latin small letter t with stroke":"획 부호가 있는 라틴어 소문자 t","Latin small letter u with breve":"반달점 부호가 있는 라틴어 소문자 u","Latin small letter u with double acute":"이중 양음 부호가 있는 라틴어 소문자 u","Latin small letter u with macron":"장음 부호가 있는 라틴어 소문자 u","Latin small letter u with ogonek":"꼬리 부호가 있는 라틴어 소문자 u","Latin small letter u with ring above":"위에 고리가 있는 라틴어 소문자 u","Latin small letter u with tilde":"물결 부호가 있는 라틴어 소문자 u","Latin small letter w with circumflex":"곡절 부호가 있는 라틴어 소문자 w","Latin small letter y with circumflex":"곡절 부호가 있는 라틴어 소문자 y","Latin small letter z with acute":"양음 부호가 있는 라틴어 소문자 z","Latin small letter z with caron":"반대 곡절 부호가 있는 라틴어 소문자 z","Latin small letter z with dot above":"위에 점 부호가 있는 라틴어 소문자 z","Latin small ligature ij":"라틴어 소문자 합자 ij","Latin small ligature oe":"라틴어 소문자 합자 oe","Left double quotation mark":"왼쪽 큰따옴표","Left single quotation mark":"왼쪽 작은따옴표","Left-pointing double angle quotation mark":"왼쪽 겹화살괄호","leftwards arrow to bar":"왼쪽 바를 향한 화살표","leftwards dashed arrow":"왼쪽 대시 화살표","leftwards double arrow":"왼쪽 겹화살표","Less-than or equal to":"더 작거나 같음","Less-than sign":"더 작음 기호","Lira sign":"리라 기호","Livre tournois sign":"리브르 트르누아 기호","Logical and":"논리곱","Logical or":"논리합",Macron:"장음 부호","Manat sign":"마나트 기호","Mill sign":"밀 기호","Minus sign":"빼기 기호","Multiplication sign":"곱하기 기호","N-ary product":"중복순열","N-ary summation":"누계합",Nabla:"나블라","Naira sign":"나이라 기호","New sheqel sign":"뉴 세켈 기호","Nordic mark sign":"노르딕 마크 기호","Not an element of":"원소가 아님","Not equal to":"같지 않음","Not sign":"부정 기호","on with exclamation mark with left right arrow above":"ON! 위 왼쪽 오른쪽 화살표",Overline:"윗줄","Paragraph sign":"단락 기호","Partial differential":"편미분","Per mille sign":"퍼 마일 기호","Per ten thousand sign":"만분율 기호","Peseta sign":"페세타 기호","Peso sign":"페소 기호","Plus-minus sign":"더하기 빼기 기호","Pound sign":"파운드 기호","Proportional to":"비례","Question exclamation mark":"물음표 느낌표","Registered sign":"등록 상표 기호","Reversed paragraph sign":"반전된 단락 기호","Right double quotation mark":"오른쪽 큰따옴표","Right single quotation mark":"오른쪽 작은따옴표","Right-pointing double angle quotation mark":"오른쪽 겹화살괄호","rightwards arrow to bar":"오른쪽 바를 향한 화살표","rightwards dashed arrow":"오른쪽 대시 화살표","rightwards double arrow":"오른쪽 겹화살표","Ruble sign":"루블 기호","Rupee sign":"루피 기호","Section sign":"구역 기호","Single left-pointing angle quotation mark":"왼쪽 홑화살괄호","Single low-9 quotation mark":"낮은 홑따옴표","Single right-pointing angle quotation mark":"오른쪽 홑화살괄호","soon with rightwards arrow above":"SOON 위 오른쪽 화살표","Special characters":"특수 문자","Spesmilo sign":"스페스밀로 기호","Square root":"제곱근","Tenge sign":"텡게 기호","There exists":"존재","Tilde operator":"물결표 연산자","top with upwards arrow above":"TOP 위 위쪽 화살표","Trade mark sign":"상표 기호","Tugrik sign":"투그리크 기호","Turkish lira sign":"터키 리라 기호","Two dot leader":"두 점 줄임표",Union:"합집합","up down arrow with base":"받침이 있는 위아래 화살표","upwards arrow to bar":"위쪽 바를 향한 화살표","upwards dashed arrow":"위쪽 대시 화살표","upwards double arrow":"위쪽 겹화살표","Vulgar fraction one half":"2분의 1","Vulgar fraction one quarter":"4분의 1","Vulgar fraction three quarters":"4분의 3","Won sign":"원 기호","Yen sign":"엔 기호"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(t){const a=t.ko=t.ko||{};a.dictionary=Object.assign(a.dictionary||{},{"Almost equal to":"거의 같음",Angle:"각","Approximately equal to":"대략 같음","Asterisk operator":"별표 연산자","Austral sign":"오스트랄 기호","back with leftwards arrow above":"BACK 위 왼쪽 화살표","Bitcoin sign":"비트코인 기호","Cedi sign":"세디 기호","Cent sign":"센트 기호","Character categories":"문자 카테고리","Colon sign":"콜론 기호","Contains as member":"원소로 포함","Copyright sign":"저작권 기호","Cruzeiro sign":"크루제이루 기호","Currency sign":"통화 기호","Degree sign":"도 기호","Division sign":"나누기 기호","Dollar sign":"달러 기호","Dong sign":"동 기호","Double dagger":"겹칼표","Double exclamation mark":"겹느낌표","Double low-9 quotation mark":"낮은 겹따옴표","Double question mark":"겹물음표","downwards arrow to bar":"아래쪽 바를 향한 화살표","downwards dashed arrow":"아래쪽 대시 화살표","downwards double arrow":"아래쪽 겹화살표","downwards simple arrow":"아래쪽 단순 화살표","Drachma sign":"드라크마 기호","Element of":"원소","Em dash":"엠 대시","Empty set":"공집합","En dash":"엔 대시","end with leftwards arrow above":"END 위 왼쪽 화살표","Euro sign":"유로 기호","Euro-currency sign":"유로화 기호","Exclamation question mark":"느낌표 물음표","For all":"전칭","Fraction slash":"분수 슬래시","French franc sign":"프랑스 프랑 기호","German penny sign":"독일 페니 기호","Greater-than or equal to":"더 크거나 같음","Greater-than sign":"더 큼 기호","Guarani sign":"과라니 기호","Horizontal ellipsis":"세 점 줄임표","Hryvnia sign":"흐리브냐 기호","Identical to":"합동","Indian rupee sign":"인도 루피 기호",Infinity:"무한대",Integral:"적분",Intersection:"교집합","Inverted exclamation mark":"역느낌표","Inverted question mark":"역물음표","Kip sign":"킵 기호","Latin capital letter a with breve":"반달점 부호가 있는 라틴어 대문자 A","Latin capital letter a with macron":"장음 부호가 있는 라틴어 대문자 A","Latin capital letter a with ogonek":"꼬리 부호가 있는 라틴어 대문자 A","Latin capital letter c with acute":"양음 부호가 있는 라틴어 대문자 C","Latin capital letter c with caron":"반대 곡절 부호가 있는 라틴어 대문자 C","Latin capital letter c with circumflex":"곡절 부호가 있는 라틴어 대문자 C","Latin capital letter c with dot above":"위에 점 부호가 있는 라틴어 대문자 C","Latin capital letter d with caron":"반대 곡절 부호가 있는 라틴어 대문자 D","Latin capital letter d with stroke":"획 부호가 있는 라틴어 대문자 D","Latin capital letter e with breve":"반달점 부호가 있는 라틴어 대문자 E","Latin capital letter e with caron":"반대 곡절 부호가 있는 라틴어 대문자 E","Latin capital letter e with dot above":"위에 점 부호가 있는 라틴어 대문자 E","Latin capital letter e with macron":"장음 부호가 있는 라틴어 대문자 E","Latin capital letter e with ogonek":"꼬리 부호가 있는 라틴어 대문자 E","Latin capital letter eng":"라틴어 대문자 엥","Latin capital letter g with breve":"반달점 부호가 있는 라틴어 대문자 G","Latin capital letter g with cedilla":"갈고리 부호가 있는 라틴어 대문자 G","Latin capital letter g with circumflex":"곡절 부호가 있는 라틴어 대문자 G","Latin capital letter g with dot above":"위에 점 부호가 있는 라틴어 대문자 G","Latin capital letter h with circumflex":"곡절 부호가 있는 라틴어 대문자 H","Latin capital letter h with stroke":"획 부호가 있는 라틴어 대문자 H","Latin capital letter i with breve":"반달점 부호가 있는 라틴어 대문자 I","Latin capital letter i with dot above":"위에 점 부호가 있는 라틴어 대문자 I","Latin capital letter i with macron":"장음 부호가 있는 라틴어 대문자 I","Latin capital letter i with ogonek":"꼬리 부호가 있는 라틴어 대문자 I","Latin capital letter i with tilde":"물결 부호가 있는 라틴어 대문자 I","Latin capital letter j with circumflex":"곡절 부호가 있는 라틴어 대문자 J","Latin capital letter k with cedilla":"갈고리 부호가 있는 라틴어 대문자 K","Latin capital letter l with acute":"양음 부호가 있는 라틴어 대문자 I","Latin capital letter l with caron":"반대 곡절 부호가 있는 라틴어 대문자 I","Latin capital letter l with cedilla":"갈고리 부호가 있는 라틴어 대문자 I","Latin capital letter l with middle dot":"중간에 점 부호가 있는 라틴어 대문자 I","Latin capital letter l with stroke":"획 부호가 있는 라틴어 대문자 I","Latin capital letter n with acute":"양음 부호가 있는 라틴어 대문자 N","Latin capital letter n with caron":"반대 곡절 부호가 있는 라틴어 대문자 N","Latin capital letter n with cedilla":"갈고리 부호가 있는 라틴어 대문자 N","Latin capital letter o with breve":"반달점 부호가 있는 라틴어 대문자 O","Latin capital letter o with double acute":"이중 양음 부호가 있는 라틴어 대문자 O","Latin capital letter o with macron":"장음 부호가 있는 라틴어 대문자 O","Latin capital letter r with acute":"양음 부호가 있는 라틴어 대문자 R","Latin capital letter r with caron":"반대 곡절 부호가 있는 라틴어 대문자 R","Latin capital letter r with cedilla":"갈고리 부호가 있는 라틴어 대문자 R","Latin capital letter s with acute":"양음 부호가 있는 라틴어 대문자 S","Latin capital letter s with caron":"반대 곡절 부호가 있는 라틴어 대문자 S","Latin capital letter s with cedilla":"갈고리 부호가 있는 라틴어 대문자 S","Latin capital letter s with circumflex":"곡절 부호가 있는 라틴어 대문자 S","Latin capital letter t with caron":"반대 곡절 부호가 있는 라틴어 대문자 T","Latin capital letter t with cedilla":"갈고리 부호가 있는 라틴어 대문자 T","Latin capital letter t with stroke":"획 부호가 있는 라틴어 대문자 T","Latin capital letter u with breve":"반달점 부호가 있는 라틴어 대문자 U","Latin capital letter u with double acute":"이중 양음 부호가 있는 라틴어 대문자 U","Latin capital letter u with macron":"장음 부호가 있는 라틴어 대문자 U","Latin capital letter u with ogonek":"꼬리 부호가 있는 라틴어 대문자 U","Latin capital letter u with ring above":"위에 고리가 있는 라틴어 대문자 U","Latin capital letter u with tilde":"물결 부호가 있는 라틴어 대문자 U","Latin capital letter w with circumflex":"곡절 부호가 있는 라틴어 대문자 W","Latin capital letter y with circumflex":"곡절 부호가 있는 라틴어 대문자 Y","Latin capital letter y with diaeresis":"분음 부호가 있는 라틴어 대문자 Y","Latin capital letter z with acute":"양음 부호가 있는 라틴어 대문자 Z","Latin capital letter z with caron":"반대 곡절 부호가 있는 라틴어 대문자 Z","Latin capital letter z with dot above":"위에 점 부호가 있는 라틴어 대문자 Z","Latin capital ligature ij":"라틴어 대문자 합자 IJ","Latin capital ligature oe":"라틴어 대문자 합자 OE","Latin small letter a with breve":"반달점 부호가 있는 라틴어 소문자 a","Latin small letter a with macron":"장음 부호가 있는 라틴어 소문자 a","Latin small letter a with ogonek":"꼬리 부호가 있는 라틴어 소문자 a","Latin small letter c with acute":"양음 부호가 있는 라틴어 소문자 c","Latin small letter c with caron":"반대 곡절 부호가 있는 라틴어 소문자 c","Latin small letter c with circumflex":"곡절 부호가 있는 라틴어 소문자 c","Latin small letter c with dot above":"위에 점 부호가 있는 라틴어 소문자 c","Latin small letter d with caron":"반대 곡절 부호가 있는 라틴어 소문자 d","Latin small letter d with stroke":"획 부호가 있는 라틴어 소문자 d","Latin small letter dotless i":"라틴어 소문자 점 없는 i","Latin small letter e with breve":"반달점 부호가 있는 라틴어 소문자 e","Latin small letter e with caron":"반대 곡절 부호가 있는 라틴어 소문자 e","Latin small letter e with dot above":"위에 점 부호가 있는 라틴어 소문자 e","Latin small letter e with macron":"장음 부호가 있는 라틴어 소문자 e","Latin small letter e with ogonek":"꼬리 부호가 있는 라틴어 소문자 e","Latin small letter eng":"라틴어 소문자 엥","Latin small letter f with hook":"밑이 구부러진 라틴어 소문자 f","Latin small letter g with breve":"반달점 부호가 있는 라틴어 소문자 g","Latin small letter g with cedilla":"갈고리 부호가 있는 라틴어 소문자 g","Latin small letter g with circumflex":"곡절 부호가 있는 라틴어 소문자 g","Latin small letter g with dot above":"위에 점 부호가 있는 라틴어 소문자 g","Latin small letter h with circumflex":"곡절 부호가 있는 라틴어 소문자 h","Latin small letter h with stroke":"획 부호가 있는 라틴어 소문자 h","Latin small letter i with breve":"반달점 부호가 있는 라틴어 소문자 i","Latin small letter i with macron":"장음 부호가 있는 라틴어 소문자 i","Latin small letter i with ogonek":"꼬리 부호가 있는 라틴어 소문자 i","Latin small letter i with tilde":"물결 부호가 있는 라틴어 소문자 i","Latin small letter j with circumflex":"곡절 부호가 있는 라틴어 소문자 j","Latin small letter k with cedilla":"갈고리 부호가 있는 라틴어 소문자 k","Latin small letter kra":"라틴어 소문자 크라","Latin small letter l with acute":"양음 부호가 있는 라틴어 소문자 i","Latin small letter l with caron":"반대 곡절 부호가 있는 라틴어 소문자 i","Latin small letter l with cedilla":"갈고리 부호가 있는 라틴어 소문자 i","Latin small letter l with middle dot":"중간에 점 부호가 있는 라틴어 소문자 i","Latin small letter l with stroke":"획 부호가 있는 라틴어 소문자 i","Latin small letter long s":"라틴어 소문자 긴 s","Latin small letter n preceded by apostrophe":"아포스트로피 다음에 있는 라틴어 소문자 n","Latin small letter n with acute":"양음 부호가 있는 라틴어 소문자 n","Latin small letter n with caron":"반대 곡절 부호가 있는 라틴어 소문자 n","Latin small letter n with cedilla":"갈고리 부호가 있는 라틴어 소문자 n","Latin small letter o with breve":"반달점 부호가 있는 라틴어 소문자 o","Latin small letter o with double acute":"이중 양음 부호가 있는 라틴어 소문자 o","Latin small letter o with macron":"장음 부호가 있는 라틴어 소문자 o","Latin small letter r with acute":"양음 부호가 있는 라틴어 소문자 r","Latin small letter r with caron":"반대 곡절 부호가 있는 라틴어 소문자 r","Latin small letter r with cedilla":"갈고리 부호가 있는 라틴어 소문자 r","Latin small letter s with acute":"양음 부호가 있는 라틴어 소문자 s","Latin small letter s with caron":"반대 곡절 부호가 있는 라틴어 소문자 s","Latin small letter s with cedilla":"갈고리 부호가 있는 라틴어 소문자 s","Latin small letter s with circumflex":"곡절 부호가 있는 라틴어 소문자 s","Latin small letter t with caron":"반대 곡절 부호가 있는 라틴어 소문자 t","Latin small letter t with cedilla":"갈고리 부호가 있는 라틴어 소문자 t","Latin small letter t with stroke":"획 부호가 있는 라틴어 소문자 t","Latin small letter u with breve":"반달점 부호가 있는 라틴어 소문자 u","Latin small letter u with double acute":"이중 양음 부호가 있는 라틴어 소문자 u","Latin small letter u with macron":"장음 부호가 있는 라틴어 소문자 u","Latin small letter u with ogonek":"꼬리 부호가 있는 라틴어 소문자 u","Latin small letter u with ring above":"위에 고리가 있는 라틴어 소문자 u","Latin small letter u with tilde":"물결 부호가 있는 라틴어 소문자 u","Latin small letter w with circumflex":"곡절 부호가 있는 라틴어 소문자 w","Latin small letter y with circumflex":"곡절 부호가 있는 라틴어 소문자 y","Latin small letter z with acute":"양음 부호가 있는 라틴어 소문자 z","Latin small letter z with caron":"반대 곡절 부호가 있는 라틴어 소문자 z","Latin small letter z with dot above":"위에 점 부호가 있는 라틴어 소문자 z","Latin small ligature ij":"라틴어 소문자 합자 ij","Latin small ligature oe":"라틴어 소문자 합자 oe","Left double quotation mark":"왼쪽 큰따옴표","Left single quotation mark":"왼쪽 작은따옴표","Left-pointing double angle quotation mark":"왼쪽 겹화살괄호","leftwards arrow to bar":"왼쪽 바를 향한 화살표","leftwards dashed arrow":"왼쪽 대시 화살표","leftwards double arrow":"왼쪽 겹화살표","leftwards simple arrow":"왼쪽 단순 화살표","Less-than or equal to":"더 작거나 같음","Less-than sign":"더 작음 기호","Lira sign":"리라 기호","Livre tournois sign":"리브르 트르누아 기호","Logical and":"논리곱","Logical or":"논리합",Macron:"장음 부호","Manat sign":"마나트 기호","Mill sign":"밀 기호","Minus sign":"빼기 기호","Multiplication sign":"곱하기 기호","N-ary product":"중복순열","N-ary summation":"누계합",Nabla:"나블라","Naira sign":"나이라 기호","New sheqel sign":"뉴 세켈 기호","Nordic mark sign":"노르딕 마크 기호","Not an element of":"원소가 아님","Not equal to":"같지 않음","Not sign":"부정 기호","on with exclamation mark with left right arrow above":"ON! 위 왼쪽 오른쪽 화살표",Overline:"윗줄","Paragraph sign":"단락 기호","Partial differential":"편미분","Per mille sign":"퍼 마일 기호","Per ten thousand sign":"만분율 기호","Peseta sign":"페세타 기호","Peso sign":"페소 기호","Plus-minus sign":"더하기 빼기 기호","Pound sign":"파운드 기호","Proportional to":"비례","Question exclamation mark":"물음표 느낌표","Registered sign":"등록 상표 기호","Reversed paragraph sign":"반전된 단락 기호","Right double quotation mark":"오른쪽 큰따옴표","Right single quotation mark":"오른쪽 작은따옴표","Right-pointing double angle quotation mark":"오른쪽 겹화살괄호","rightwards arrow to bar":"오른쪽 바를 향한 화살표","rightwards dashed arrow":"오른쪽 대시 화살표","rightwards double arrow":"오른쪽 겹화살표","rightwards simple arrow":"오른쪽 단순 화살표","Ruble sign":"루블 기호","Rupee sign":"루피 기호","Section sign":"구역 기호","Single left-pointing angle quotation mark":"왼쪽 홑화살괄호","Single low-9 quotation mark":"낮은 홑따옴표","Single right-pointing angle quotation mark":"오른쪽 홑화살괄호","soon with rightwards arrow above":"SOON 위 오른쪽 화살표","Special characters":"특수 문자","Spesmilo sign":"스페스밀로 기호","Square root":"제곱근","Tenge sign":"텡게 기호","There exists":"존재","Tilde operator":"물결표 연산자","top with upwards arrow above":"TOP 위 위쪽 화살표","Trade mark sign":"상표 기호","Tugrik sign":"투그리크 기호","Turkish lira sign":"터키 리라 기호","Two dot leader":"두 점 줄임표",Union:"합집합","up down arrow with base":"받침이 있는 위아래 화살표","upwards arrow to bar":"위쪽 바를 향한 화살표","upwards dashed arrow":"위쪽 대시 화살표","upwards double arrow":"위쪽 겹화살표","upwards simple arrow":"위쪽 단순 화살표","Vulgar fraction one half":"2분의 1","Vulgar fraction one quarter":"4분의 1","Vulgar fraction three quarters":"4분의 3","Won sign":"원 기호","Yen sign":"엔 기호"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/special-characters/translations/lt.js b/core/assets/vendor/ckeditor5/special-characters/translations/lt.js
index f14fcc44b1..e785038007 100644
--- a/core/assets/vendor/ckeditor5/special-characters/translations/lt.js
+++ b/core/assets/vendor/ckeditor5/special-characters/translations/lt.js
@@ -1 +1 @@
-!function(i){const a=i.lt=i.lt||{};a.dictionary=Object.assign(a.dictionary||{},{"Almost equal to":"Beveik lygu",Angle:"Kampas","Approximately equal to":"Apytiksliai lygu","Asterisk operator":"Žvaigždutė","Austral sign":"Australo ženklas","back with leftwards arrow above":"atgal su rodykle kairėn viršuje","Bitcoin sign":"Bitkoino ženklas","Cedi sign":"Cedi ženklas","Cent sign":"Cento ženklas","Character categories":"Simbolių kategorijos","Colon sign":"Dvitaškio ženklas","Contains as member":"Skaitosi kaip narys","Copyright sign":"Autorinių teisių simbolis","Cruzeiro sign":"Cruzeiro ženklas","Currency sign":"Valiutos ženklas","Degree sign":"Laipsnio ženklas","Division sign":"Dalybos ženklas","Dollar sign":"Dolerio ženklas","Dong sign":"Dongo ženklas","Double dagger":"Dvigubo kryžiaus ženklas","Double exclamation mark":"Dvigubas šauktukas","Double low-9 quotation mark":"Dviguba žema „9“ kabutė","Double question mark":"Dvigubas klaustukas","downwards arrow to bar":"rodyklė į juostą žemyn","downwards dashed arrow":"punktyrinė rodyklė žemyn","downwards double arrow":"dviguba rodyklė žemyn","Drachma sign":"Drachmos ženklas","Element of":"Narys","Em dash":"Brūkšnys","Empty set":"Nulinė reikšmė","En dash":"Brūkšnelis","end with leftwards arrow above":"pabaiga su rodykle kairėn viršuje","Euro sign":"Euro ženklas","Euro-currency sign":"Euro valiutos ženklas","Exclamation question mark":"Šauktukas klaustukas","For all":"Bendrumo kvantorius","Fraction slash":"Trupmeninis pasvirasis brūkšnys","French franc sign":"Prancūzų franko ženklas","German penny sign":"Vokietijos cento ženklas","Greater-than or equal to":"Daugiau nei arba lygu","Greater-than sign":"Daugiau nei ženklas","Guarani sign":"Guaranos ženklas","Horizontal ellipsis":"Horizontali elipsė","Hryvnia sign":"Grivinos ženklas","Identical to":"Identiškas","Indian rupee sign":"Indijos rupijos ženklas",Infinity:"Begalybė",Integral:"Integralas",Intersection:"Sankirta","Inverted exclamation mark":"Apverstas šauktukas","Inverted question mark":"Apverstas klaustukas","Kip sign":"Kipo ženklas","Latin capital letter a with breve":"Lotynų didžioji raidė a su lankeliu","Latin capital letter a with macron":"Lotynų didžioji raidė a su makronu","Latin capital letter a with ogonek":"Lotynų didžioji raidė a su nosine","Latin capital letter c with acute":"Lotynų didžioji raidė c su dešininiu kirčiu","Latin capital letter c with caron":"Lotynų didžioji raidė c su paukščiuku","Latin capital letter c with circumflex":"Lotynų didžioji raidė c su cirkumfleksu","Latin capital letter c with dot above":"Lotynų didžioji raidė c su tašku viršuje","Latin capital letter d with caron":"Lotynų didžioji raidė d su paukščiuku","Latin capital letter d with stroke":"Lotynų didžioji raidė d su pasviruoju brūkšneliu","Latin capital letter e with breve":"Lotynų didžioji raidė e su lankeliu","Latin capital letter e with caron":"Lotynų didžioji raidė e su paukščiuku","Latin capital letter e with dot above":"Lotynų didžioji raidė e su tašku viršuje","Latin capital letter e with macron":"Lotynų didžioji raidė e su makronu","Latin capital letter e with ogonek":"Lotynų didžioji raidė e su nosine","Latin capital letter eng":"Lotynų didžioji raidė eng","Latin capital letter g with breve":"Lotynų didžioji raidė g su lankeliu","Latin capital letter g with cedilla":"Lotynų didžioji raidė g su sedile","Latin capital letter g with circumflex":"Lotynų didžioji raidė g su cirkumfleksu","Latin capital letter g with dot above":"Lotynų didžioji raidė g su tašku viršuje","Latin capital letter h with circumflex":"Lotynų didžioji raidė h su cirkumfleksu","Latin capital letter h with stroke":"Lotynų didžioji raidė h su pasviruoju brūkšneliu","Latin capital letter i with breve":"Lotynų didžioji raidė i su lankeliu","Latin capital letter i with dot above":"Lotynų didžioji raidė i su tašku viršuje","Latin capital letter i with macron":"Lotynų didžioji raidė i su makronu","Latin capital letter i with ogonek":"Lotynų didžioji raidė i su nosine","Latin capital letter i with tilde":"Lotynų didžioji raidė i su riestiniu kirčiu","Latin capital letter j with circumflex":"Lotynų didžioji raidė j su cirkumfleksu","Latin capital letter k with cedilla":"Lotynų didžioji raidė k su sedile","Latin capital letter l with acute":"Lotynų didžioji raidė l su dešininiu kirčiu","Latin capital letter l with caron":"Lotynų didžioji raidė l su paukščiuku","Latin capital letter l with cedilla":"Lotynų didžioji raidė l su sedile","Latin capital letter l with middle dot":"Lotynų didžioji raidė l su tašku viduryje","Latin capital letter l with stroke":"Lotynų didžioji raidė l su pasviruoju brūkšneliu","Latin capital letter n with acute":"Lotynų didžioji raidė n su dešininiu kirčiu","Latin capital letter n with caron":"Lotynų didžioji raidė n su paukščiuku","Latin capital letter n with cedilla":"Lotynų didžioji raidė n su sedile","Latin capital letter o with breve":"Lotynų didžioji raidė o su lankeliu","Latin capital letter o with double acute":"Lotynų didžioji raidė o su dvigubu dešininiu kirčiu","Latin capital letter o with macron":"Lotynų didžioji raidė o su makronu","Latin capital letter r with acute":"Lotynų didžioji raidė r su dešininiu kirčiu","Latin capital letter r with caron":"Lotynų didžioji raidė r su paukščiuku","Latin capital letter r with cedilla":"Lotynų didžioji raidė r su sedile","Latin capital letter s with acute":"Lotynų didžioji raidė s su dešininiu kirčiu","Latin capital letter s with caron":"Lotynų didžioji raidė s su paukščiuku","Latin capital letter s with cedilla":"Lotynų didžioji raidė s su sedile","Latin capital letter s with circumflex":"Lotynų didžioji raidė s su cirkumfleksu","Latin capital letter t with caron":"Lotynų didžioji raidė t su paukščiuku","Latin capital letter t with cedilla":"Lotynų didžioji raidė t su sedile","Latin capital letter t with stroke":"Lotynų didžioji raidė t su pasviruoju brūkšneliu","Latin capital letter u with breve":"Lotynų didžioji raidė u su lankeliu","Latin capital letter u with double acute":"Lotynų didžioji raidė u su dvigubu dešininiu kirčiu","Latin capital letter u with macron":"Lotynų didžioji raidė u su makronu","Latin capital letter u with ogonek":"Lotynų didžioji raidė u su nosine","Latin capital letter u with ring above":"Lotynų didžioji raidė u su žiedu viršuje","Latin capital letter u with tilde":"Lotynų didžioji raidė u su riestiniu kirčiu","Latin capital letter w with circumflex":"Lotynų didžioji raidė w su cirkumfleksu","Latin capital letter y with circumflex":"Lotynų didžioji raidė y su cirkumfleksu","Latin capital letter y with diaeresis":"Lotynų didžioji raidė y su diaereze","Latin capital letter z with acute":"Lotynų didžioji raidė z su dešininiu kirčiu","Latin capital letter z with caron":"Lotynų didžioji raidė z su paukščiuku","Latin capital letter z with dot above":"Lotynų didžioji raidė z su tašku viršuje","Latin capital ligature ij":"Lotynų didžioji ligatūra ij","Latin capital ligature oe":"Lotynų didžioji ligatūra oe","Latin small letter a with breve":"Lotynų mažoji raidė a su lankeliu","Latin small letter a with macron":"Lotynų mažoji raidė a su makronu","Latin small letter a with ogonek":"Lotynų mažoji raidė a su nosine","Latin small letter c with acute":"Lotynų mažoji raidė c su dešininiu kirčiu","Latin small letter c with caron":"Lotynų mažoji raidė c su paukščiuku","Latin small letter c with circumflex":"Lotynų mažoji raidė c su cirkumfleksu","Latin small letter c with dot above":"Lotynų mažoji raidė c su tašku viršuje","Latin small letter d with caron":"Lotynų mažoji raidė d su paukščiuku","Latin small letter d with stroke":"Lotynų mažoji raidė d su pasviruoju brūkšneliu","Latin small letter dotless i":"Lotynų mažoji raidė i be taškų","Latin small letter e with breve":"Lotynų mažoji raidė e su lankeliu","Latin small letter e with caron":"Lotynų didžioji raidė e su paukščiuku","Latin small letter e with dot above":"Lotynų mažoji raidė e su tašku viršuje","Latin small letter e with macron":"Lotynų mažoji raidė e su makronu","Latin small letter e with ogonek":"Lotynų mažoji raidė e su nosine","Latin small letter eng":"Lotynų mažoji raidė eng","Latin small letter f with hook":"Lotynų mažoji raidė f su kabliuku","Latin small letter g with breve":"Lotynų mažoji raidė g su lankeliu","Latin small letter g with cedilla":"Lotynų mažoji raidė g su sedile","Latin small letter g with circumflex":"Lotynų mažoji raidė g su cirkumfleksu","Latin small letter g with dot above":"Lotynų mažoji raidė g su tašku viršuje","Latin small letter h with circumflex":"Lotynų mažoji raidė h su cirkumfleksu","Latin small letter h with stroke":"Lotynų mažoji raidė h su pasviruoju brūkšneliu","Latin small letter i with breve":"Lotynų mažoji raidė i su lankeliu","Latin small letter i with macron":"Lotynų mažoji raidė i su makronu","Latin small letter i with ogonek":"Lotynų mažoji raidė i su nosine","Latin small letter i with tilde":"Lotynų mažoji raidė i su riestiniu kirčiu","Latin small letter j with circumflex":"Lotynų mažoji raidė j su cirkumfleksu","Latin small letter k with cedilla":"Lotynų mažoji raidė k su sedile","Latin small letter kra":"Lotynų mažoji raidė kra","Latin small letter l with acute":"Lotynų mažoji raidė l su dešininiu kirčiu","Latin small letter l with caron":"Lotynų mažoji raidė l su paukščiuku","Latin small letter l with cedilla":"Lotynų mažoji raidė l su sedile","Latin small letter l with middle dot":"Lotynų mažoji raidė l su tašku viduryje","Latin small letter l with stroke":"Lotynų mažoji raidė l su pasviruoju brūkšneliu","Latin small letter long s":"Lotynų mažoji ilga raidė s","Latin small letter n preceded by apostrophe":"Lotynų mažoji raidė n su apostrofu priešais","Latin small letter n with acute":"Lotynų mažoji raidė n su dešininiu kirčiu","Latin small letter n with caron":"Lotynų mažoji raidė n su paukščiuku","Latin small letter n with cedilla":"Lotynų mažoji raidė n su sedile","Latin small letter o with breve":"Lotynų mažoji raidė o su lankeliu","Latin small letter o with double acute":"Lotynų mažoji raidė o su dvigubu dešininiu kirčiu","Latin small letter o with macron":"Lotynų mažoji raidė o su makronu","Latin small letter r with acute":"Lotynų mažoji raidė r su dešininiu kirčiu","Latin small letter r with caron":"Lotynų mažoji raidė r su paukščiuku","Latin small letter r with cedilla":"Lotynų mažoji raidė r su sedile","Latin small letter s with acute":"Lotynų mažoji raidė s su dešininiu kirčiu","Latin small letter s with caron":"Lotynų mažoji raidė s su paukščiuku","Latin small letter s with cedilla":"Lotynų mažoji raidė s su sedile","Latin small letter s with circumflex":"Lotynų mažoji raidė s su cirkumfleksu","Latin small letter t with caron":"Lotynų mažoji raidė t su paukščiuku","Latin small letter t with cedilla":"Lotynų mažoji raidė t su sedile","Latin small letter t with stroke":"Lotynų mažoji raidė t su pasviruoju brūkšneliu","Latin small letter u with breve":"Lotynų mažoji raidė u su lankeliu","Latin small letter u with double acute":"Lotynų mažoji raidė u su dvigubu dešininiu kirčiu","Latin small letter u with macron":"Lotynų mažoji raidė u su makronu","Latin small letter u with ogonek":"Lotynų mažoji raidė u su nosine","Latin small letter u with ring above":"Lotynų mažoji raidė u su žiedu viršuje","Latin small letter u with tilde":"Lotynų mažoji raidė u su riestiniu kirčiu","Latin small letter w with circumflex":"Lotynų mažoji raidė w su cirkumfleksu","Latin small letter y with circumflex":"Lotynų mažoji raidė y su cirkumfleksu","Latin small letter z with acute":"Lotynų mažoji raidė z su dešininiu kirčiu","Latin small letter z with caron":"Lotynų mažoji raidė z su paukščiuku","Latin small letter z with dot above":"Lotynų mažoji raidė z su tašku viršuje","Latin small ligature ij":"Lotynų mažoji ligatūra ij","Latin small ligature oe":"Lotynų mažoji ligatūra oe","Left double quotation mark":"Kairė dviguba kabutė","Left single quotation mark":"Vienguba kairė kabutė","Left-pointing double angle quotation mark":"Kairėn nukreipto kampo dviguba kabutė","leftwards arrow to bar":"rodyklė į kairę juostą","leftwards dashed arrow":"punktyrinė rodyklė kairėn","leftwards double arrow":"dviguba rodyklė kairėn","Less-than or equal to":"Mažiau nei arba lygu ","Less-than sign":"Mažiau nei ženklas","Lira sign":"Liros ženklas","Livre tournois sign":"Livre tournois ženklas","Logical and":"Konjunkcija","Logical or":"Disjunkcija",Macron:"Makronas","Manat sign":"Manatos ženklas","Mill sign":"Malūno ženklas","Minus sign":"Minuso ženklas","Multiplication sign":"Daugybos ženklas","N-ary product":"Dekarto produktas","N-ary summation":"Sigma sumavimas",Nabla:"Nabla","Naira sign":"Nairos ženklas","New sheqel sign":"Naujojo šekelio ženklas","Nordic mark sign":"Šiaurietiškas ženklas","Not an element of":"Ne narys","Not equal to":"Nelygu","Not sign":"Neigimas","on with exclamation mark with left right arrow above":"įjungta su šauktuku su rodykle kairėn dešinėn viršuje",Overline:"Viršutinė juosta","Paragraph sign":"Pastraipos ženklas","Partial differential":"Dalinė išvestinė","Per mille sign":"Promilės ženklas","Per ten thousand sign":"Ten tūkstančių ženklas","Peseta sign":"Pesetos ženklas","Peso sign":"Peso ženklas","Plus-minus sign":"Pliuso-minuso ženklas","Pound sign":"Svaro ženklas","Proportional to":"Proporcingas","Question exclamation mark":"Klaustukas šauktukas","Registered sign":"Registruoto prekės ženklo simbolis","Reversed paragraph sign":"Apverstas pastraipos ženklas","Right double quotation mark":"Dešinė dviguba kabutė","Right single quotation mark":"Vienguba dešinė kabutė","Right-pointing double angle quotation mark":"Dešinėn nukreipto kampo dviguba kabutė","rightwards arrow to bar":"rodyklė į dešinę juostą","rightwards dashed arrow":"punktyrinė rodyklė dešinėn","rightwards double arrow":"dviguba rodyklė dešinėn","Ruble sign":"Rublio ženklas","Rupee sign":"Rupijos ženklas","Section sign":"Skirsnio ženklas","Single left-pointing angle quotation mark":"Vienguba kairėn nukreipto kampo kabutė","Single low-9 quotation mark":"Vienguba žema „9“ kabutė","Single right-pointing angle quotation mark":"Vienguba dešinėn nukreipto kampo kabutė","soon with rightwards arrow above":"netrukus su rodykle dešinėn viršuje","Special characters":"Išskirtiniai simboliai","Spesmilo sign":"Spesmilo ženklas","Square root":"Kvadratinė šaknis","Tenge sign":"Tengės ženklas","There exists":"Egzistavimo kvantorius","Tilde operator":"Ekvivalentas","top with upwards arrow above":"viršus su rodykle aukštyn viršuje","Trade mark sign":"Prekės ženklo simbolis","Tugrik sign":"Tugriko ženklas","Turkish lira sign":"Turkijos liros ženklas","Two dot leader":"Two taškų linijos",Union:"Sąjunga","up down arrow with base":"rodyklė aukštyn žemyn su pagrindu","upwards arrow to bar":"rodyklė į juostą aukštyn","upwards dashed arrow":"punktyrinė rodyklė aukštyn","upwards double arrow":"dviguba rodyklė aukštyn","Vulgar fraction one half":"Paprastoji trupmena one antroji","Vulgar fraction one quarter":"Paprastoji trupmena one ketvirtadalis","Vulgar fraction three quarters":"Paprastoji trupmena three ketvirtadaliai","Won sign":"Vonos ženklas","Yen sign":"Jenos ženklas"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(i){const a=i.lt=i.lt||{};a.dictionary=Object.assign(a.dictionary||{},{"Almost equal to":"Beveik lygu",Angle:"Kampas","Approximately equal to":"Apytiksliai lygu","Asterisk operator":"Žvaigždutė","Austral sign":"Australo ženklas","back with leftwards arrow above":"atgal su rodykle kairėn viršuje","Bitcoin sign":"Bitkoino ženklas","Cedi sign":"Cedi ženklas","Cent sign":"Cento ženklas","Character categories":"Simbolių kategorijos","Colon sign":"Dvitaškio ženklas","Contains as member":"Skaitosi kaip narys","Copyright sign":"Autorinių teisių simbolis","Cruzeiro sign":"Cruzeiro ženklas","Currency sign":"Valiutos ženklas","Degree sign":"Laipsnio ženklas","Division sign":"Dalybos ženklas","Dollar sign":"Dolerio ženklas","Dong sign":"Dongo ženklas","Double dagger":"Dvigubo kryžiaus ženklas","Double exclamation mark":"Dvigubas šauktukas","Double low-9 quotation mark":"Dviguba žema „9“ kabutė","Double question mark":"Dvigubas klaustukas","downwards arrow to bar":"rodyklė į juostą žemyn","downwards dashed arrow":"punktyrinė rodyklė žemyn","downwards double arrow":"dviguba rodyklė žemyn","downwards simple arrow":"Į apačią paprasta rodyklė","Drachma sign":"Drachmos ženklas","Element of":"Narys","Em dash":"Brūkšnys","Empty set":"Nulinė reikšmė","En dash":"Brūkšnelis","end with leftwards arrow above":"pabaiga su rodykle kairėn viršuje","Euro sign":"Euro ženklas","Euro-currency sign":"Euro valiutos ženklas","Exclamation question mark":"Šauktukas klaustukas","For all":"Bendrumo kvantorius","Fraction slash":"Trupmeninis pasvirasis brūkšnys","French franc sign":"Prancūzų franko ženklas","German penny sign":"Vokietijos cento ženklas","Greater-than or equal to":"Daugiau nei arba lygu","Greater-than sign":"Daugiau nei ženklas","Guarani sign":"Guaranos ženklas","Horizontal ellipsis":"Horizontali elipsė","Hryvnia sign":"Grivinos ženklas","Identical to":"Identiškas","Indian rupee sign":"Indijos rupijos ženklas",Infinity:"Begalybė",Integral:"Integralas",Intersection:"Sankirta","Inverted exclamation mark":"Apverstas šauktukas","Inverted question mark":"Apverstas klaustukas","Kip sign":"Kipo ženklas","Latin capital letter a with breve":"Lotynų didžioji raidė a su lankeliu","Latin capital letter a with macron":"Lotynų didžioji raidė a su makronu","Latin capital letter a with ogonek":"Lotynų didžioji raidė a su nosine","Latin capital letter c with acute":"Lotynų didžioji raidė c su dešininiu kirčiu","Latin capital letter c with caron":"Lotynų didžioji raidė c su paukščiuku","Latin capital letter c with circumflex":"Lotynų didžioji raidė c su cirkumfleksu","Latin capital letter c with dot above":"Lotynų didžioji raidė c su tašku viršuje","Latin capital letter d with caron":"Lotynų didžioji raidė d su paukščiuku","Latin capital letter d with stroke":"Lotynų didžioji raidė d su pasviruoju brūkšneliu","Latin capital letter e with breve":"Lotynų didžioji raidė e su lankeliu","Latin capital letter e with caron":"Lotynų didžioji raidė e su paukščiuku","Latin capital letter e with dot above":"Lotynų didžioji raidė e su tašku viršuje","Latin capital letter e with macron":"Lotynų didžioji raidė e su makronu","Latin capital letter e with ogonek":"Lotynų didžioji raidė e su nosine","Latin capital letter eng":"Lotynų didžioji raidė eng","Latin capital letter g with breve":"Lotynų didžioji raidė g su lankeliu","Latin capital letter g with cedilla":"Lotynų didžioji raidė g su sedile","Latin capital letter g with circumflex":"Lotynų didžioji raidė g su cirkumfleksu","Latin capital letter g with dot above":"Lotynų didžioji raidė g su tašku viršuje","Latin capital letter h with circumflex":"Lotynų didžioji raidė h su cirkumfleksu","Latin capital letter h with stroke":"Lotynų didžioji raidė h su pasviruoju brūkšneliu","Latin capital letter i with breve":"Lotynų didžioji raidė i su lankeliu","Latin capital letter i with dot above":"Lotynų didžioji raidė i su tašku viršuje","Latin capital letter i with macron":"Lotynų didžioji raidė i su makronu","Latin capital letter i with ogonek":"Lotynų didžioji raidė i su nosine","Latin capital letter i with tilde":"Lotynų didžioji raidė i su riestiniu kirčiu","Latin capital letter j with circumflex":"Lotynų didžioji raidė j su cirkumfleksu","Latin capital letter k with cedilla":"Lotynų didžioji raidė k su sedile","Latin capital letter l with acute":"Lotynų didžioji raidė l su dešininiu kirčiu","Latin capital letter l with caron":"Lotynų didžioji raidė l su paukščiuku","Latin capital letter l with cedilla":"Lotynų didžioji raidė l su sedile","Latin capital letter l with middle dot":"Lotynų didžioji raidė l su tašku viduryje","Latin capital letter l with stroke":"Lotynų didžioji raidė l su pasviruoju brūkšneliu","Latin capital letter n with acute":"Lotynų didžioji raidė n su dešininiu kirčiu","Latin capital letter n with caron":"Lotynų didžioji raidė n su paukščiuku","Latin capital letter n with cedilla":"Lotynų didžioji raidė n su sedile","Latin capital letter o with breve":"Lotynų didžioji raidė o su lankeliu","Latin capital letter o with double acute":"Lotynų didžioji raidė o su dvigubu dešininiu kirčiu","Latin capital letter o with macron":"Lotynų didžioji raidė o su makronu","Latin capital letter r with acute":"Lotynų didžioji raidė r su dešininiu kirčiu","Latin capital letter r with caron":"Lotynų didžioji raidė r su paukščiuku","Latin capital letter r with cedilla":"Lotynų didžioji raidė r su sedile","Latin capital letter s with acute":"Lotynų didžioji raidė s su dešininiu kirčiu","Latin capital letter s with caron":"Lotynų didžioji raidė s su paukščiuku","Latin capital letter s with cedilla":"Lotynų didžioji raidė s su sedile","Latin capital letter s with circumflex":"Lotynų didžioji raidė s su cirkumfleksu","Latin capital letter t with caron":"Lotynų didžioji raidė t su paukščiuku","Latin capital letter t with cedilla":"Lotynų didžioji raidė t su sedile","Latin capital letter t with stroke":"Lotynų didžioji raidė t su pasviruoju brūkšneliu","Latin capital letter u with breve":"Lotynų didžioji raidė u su lankeliu","Latin capital letter u with double acute":"Lotynų didžioji raidė u su dvigubu dešininiu kirčiu","Latin capital letter u with macron":"Lotynų didžioji raidė u su makronu","Latin capital letter u with ogonek":"Lotynų didžioji raidė u su nosine","Latin capital letter u with ring above":"Lotynų didžioji raidė u su žiedu viršuje","Latin capital letter u with tilde":"Lotynų didžioji raidė u su riestiniu kirčiu","Latin capital letter w with circumflex":"Lotynų didžioji raidė w su cirkumfleksu","Latin capital letter y with circumflex":"Lotynų didžioji raidė y su cirkumfleksu","Latin capital letter y with diaeresis":"Lotynų didžioji raidė y su diaereze","Latin capital letter z with acute":"Lotynų didžioji raidė z su dešininiu kirčiu","Latin capital letter z with caron":"Lotynų didžioji raidė z su paukščiuku","Latin capital letter z with dot above":"Lotynų didžioji raidė z su tašku viršuje","Latin capital ligature ij":"Lotynų didžioji ligatūra ij","Latin capital ligature oe":"Lotynų didžioji ligatūra oe","Latin small letter a with breve":"Lotynų mažoji raidė a su lankeliu","Latin small letter a with macron":"Lotynų mažoji raidė a su makronu","Latin small letter a with ogonek":"Lotynų mažoji raidė a su nosine","Latin small letter c with acute":"Lotynų mažoji raidė c su dešininiu kirčiu","Latin small letter c with caron":"Lotynų mažoji raidė c su paukščiuku","Latin small letter c with circumflex":"Lotynų mažoji raidė c su cirkumfleksu","Latin small letter c with dot above":"Lotynų mažoji raidė c su tašku viršuje","Latin small letter d with caron":"Lotynų mažoji raidė d su paukščiuku","Latin small letter d with stroke":"Lotynų mažoji raidė d su pasviruoju brūkšneliu","Latin small letter dotless i":"Lotynų mažoji raidė i be taškų","Latin small letter e with breve":"Lotynų mažoji raidė e su lankeliu","Latin small letter e with caron":"Lotynų didžioji raidė e su paukščiuku","Latin small letter e with dot above":"Lotynų mažoji raidė e su tašku viršuje","Latin small letter e with macron":"Lotynų mažoji raidė e su makronu","Latin small letter e with ogonek":"Lotynų mažoji raidė e su nosine","Latin small letter eng":"Lotynų mažoji raidė eng","Latin small letter f with hook":"Lotynų mažoji raidė f su kabliuku","Latin small letter g with breve":"Lotynų mažoji raidė g su lankeliu","Latin small letter g with cedilla":"Lotynų mažoji raidė g su sedile","Latin small letter g with circumflex":"Lotynų mažoji raidė g su cirkumfleksu","Latin small letter g with dot above":"Lotynų mažoji raidė g su tašku viršuje","Latin small letter h with circumflex":"Lotynų mažoji raidė h su cirkumfleksu","Latin small letter h with stroke":"Lotynų mažoji raidė h su pasviruoju brūkšneliu","Latin small letter i with breve":"Lotynų mažoji raidė i su lankeliu","Latin small letter i with macron":"Lotynų mažoji raidė i su makronu","Latin small letter i with ogonek":"Lotynų mažoji raidė i su nosine","Latin small letter i with tilde":"Lotynų mažoji raidė i su riestiniu kirčiu","Latin small letter j with circumflex":"Lotynų mažoji raidė j su cirkumfleksu","Latin small letter k with cedilla":"Lotynų mažoji raidė k su sedile","Latin small letter kra":"Lotynų mažoji raidė kra","Latin small letter l with acute":"Lotynų mažoji raidė l su dešininiu kirčiu","Latin small letter l with caron":"Lotynų mažoji raidė l su paukščiuku","Latin small letter l with cedilla":"Lotynų mažoji raidė l su sedile","Latin small letter l with middle dot":"Lotynų mažoji raidė l su tašku viduryje","Latin small letter l with stroke":"Lotynų mažoji raidė l su pasviruoju brūkšneliu","Latin small letter long s":"Lotynų mažoji ilga raidė s","Latin small letter n preceded by apostrophe":"Lotynų mažoji raidė n su apostrofu priešais","Latin small letter n with acute":"Lotynų mažoji raidė n su dešininiu kirčiu","Latin small letter n with caron":"Lotynų mažoji raidė n su paukščiuku","Latin small letter n with cedilla":"Lotynų mažoji raidė n su sedile","Latin small letter o with breve":"Lotynų mažoji raidė o su lankeliu","Latin small letter o with double acute":"Lotynų mažoji raidė o su dvigubu dešininiu kirčiu","Latin small letter o with macron":"Lotynų mažoji raidė o su makronu","Latin small letter r with acute":"Lotynų mažoji raidė r su dešininiu kirčiu","Latin small letter r with caron":"Lotynų mažoji raidė r su paukščiuku","Latin small letter r with cedilla":"Lotynų mažoji raidė r su sedile","Latin small letter s with acute":"Lotynų mažoji raidė s su dešininiu kirčiu","Latin small letter s with caron":"Lotynų mažoji raidė s su paukščiuku","Latin small letter s with cedilla":"Lotynų mažoji raidė s su sedile","Latin small letter s with circumflex":"Lotynų mažoji raidė s su cirkumfleksu","Latin small letter t with caron":"Lotynų mažoji raidė t su paukščiuku","Latin small letter t with cedilla":"Lotynų mažoji raidė t su sedile","Latin small letter t with stroke":"Lotynų mažoji raidė t su pasviruoju brūkšneliu","Latin small letter u with breve":"Lotynų mažoji raidė u su lankeliu","Latin small letter u with double acute":"Lotynų mažoji raidė u su dvigubu dešininiu kirčiu","Latin small letter u with macron":"Lotynų mažoji raidė u su makronu","Latin small letter u with ogonek":"Lotynų mažoji raidė u su nosine","Latin small letter u with ring above":"Lotynų mažoji raidė u su žiedu viršuje","Latin small letter u with tilde":"Lotynų mažoji raidė u su riestiniu kirčiu","Latin small letter w with circumflex":"Lotynų mažoji raidė w su cirkumfleksu","Latin small letter y with circumflex":"Lotynų mažoji raidė y su cirkumfleksu","Latin small letter z with acute":"Lotynų mažoji raidė z su dešininiu kirčiu","Latin small letter z with caron":"Lotynų mažoji raidė z su paukščiuku","Latin small letter z with dot above":"Lotynų mažoji raidė z su tašku viršuje","Latin small ligature ij":"Lotynų mažoji ligatūra ij","Latin small ligature oe":"Lotynų mažoji ligatūra oe","Left double quotation mark":"Kairė dviguba kabutė","Left single quotation mark":"Vienguba kairė kabutė","Left-pointing double angle quotation mark":"Kairėn nukreipto kampo dviguba kabutė","leftwards arrow to bar":"rodyklė į kairę juostą","leftwards dashed arrow":"punktyrinė rodyklė kairėn","leftwards double arrow":"dviguba rodyklė kairėn","leftwards simple arrow":"Į kairę paprasta rodyklė","Less-than or equal to":"Mažiau nei arba lygu ","Less-than sign":"Mažiau nei ženklas","Lira sign":"Liros ženklas","Livre tournois sign":"Livre tournois ženklas","Logical and":"Konjunkcija","Logical or":"Disjunkcija",Macron:"Makronas","Manat sign":"Manatos ženklas","Mill sign":"Malūno ženklas","Minus sign":"Minuso ženklas","Multiplication sign":"Daugybos ženklas","N-ary product":"Dekarto produktas","N-ary summation":"Sigma sumavimas",Nabla:"Nabla","Naira sign":"Nairos ženklas","New sheqel sign":"Naujojo šekelio ženklas","Nordic mark sign":"Šiaurietiškas ženklas","Not an element of":"Ne narys","Not equal to":"Nelygu","Not sign":"Neigimas","on with exclamation mark with left right arrow above":"įjungta su šauktuku su rodykle kairėn dešinėn viršuje",Overline:"Viršutinė juosta","Paragraph sign":"Pastraipos ženklas","Partial differential":"Dalinė išvestinė","Per mille sign":"Promilės ženklas","Per ten thousand sign":"Ten tūkstančių ženklas","Peseta sign":"Pesetos ženklas","Peso sign":"Peso ženklas","Plus-minus sign":"Pliuso-minuso ženklas","Pound sign":"Svaro ženklas","Proportional to":"Proporcingas","Question exclamation mark":"Klaustukas šauktukas","Registered sign":"Registruoto prekės ženklo simbolis","Reversed paragraph sign":"Apverstas pastraipos ženklas","Right double quotation mark":"Dešinė dviguba kabutė","Right single quotation mark":"Vienguba dešinė kabutė","Right-pointing double angle quotation mark":"Dešinėn nukreipto kampo dviguba kabutė","rightwards arrow to bar":"rodyklė į dešinę juostą","rightwards dashed arrow":"punktyrinė rodyklė dešinėn","rightwards double arrow":"dviguba rodyklė dešinėn","rightwards simple arrow":"Į dešinę paprasta rodyklė","Ruble sign":"Rublio ženklas","Rupee sign":"Rupijos ženklas","Section sign":"Skirsnio ženklas","Single left-pointing angle quotation mark":"Vienguba kairėn nukreipto kampo kabutė","Single low-9 quotation mark":"Vienguba žema „9“ kabutė","Single right-pointing angle quotation mark":"Vienguba dešinėn nukreipto kampo kabutė","soon with rightwards arrow above":"netrukus su rodykle dešinėn viršuje","Special characters":"Išskirtiniai simboliai","Spesmilo sign":"Spesmilo ženklas","Square root":"Kvadratinė šaknis","Tenge sign":"Tengės ženklas","There exists":"Egzistavimo kvantorius","Tilde operator":"Ekvivalentas","top with upwards arrow above":"viršus su rodykle aukštyn viršuje","Trade mark sign":"Prekės ženklo simbolis","Tugrik sign":"Tugriko ženklas","Turkish lira sign":"Turkijos liros ženklas","Two dot leader":"Two taškų linijos",Union:"Sąjunga","up down arrow with base":"rodyklė aukštyn žemyn su pagrindu","upwards arrow to bar":"rodyklė į juostą aukštyn","upwards dashed arrow":"punktyrinė rodyklė aukštyn","upwards double arrow":"dviguba rodyklė aukštyn","upwards simple arrow":"Į viršų paprasta rodyklė","Vulgar fraction one half":"Paprastoji trupmena one antroji","Vulgar fraction one quarter":"Paprastoji trupmena one ketvirtadalis","Vulgar fraction three quarters":"Paprastoji trupmena three ketvirtadaliai","Won sign":"Vonos ženklas","Yen sign":"Jenos ženklas"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/special-characters/translations/lv.js b/core/assets/vendor/ckeditor5/special-characters/translations/lv.js
index c14397e40e..088a5faa95 100644
--- a/core/assets/vendor/ckeditor5/special-characters/translations/lv.js
+++ b/core/assets/vendor/ckeditor5/special-characters/translations/lv.js
@@ -1 +1 @@
-!function(a){const t=a.lv=a.lv||{};t.dictionary=Object.assign(t.dictionary||{},{"Almost equal to":"Gandrīz vienāds ar",Angle:"Stūris","Approximately equal to":"Aptuveni vienāds ar","Asterisk operator":"Asterisks","Austral sign":"Austrāla zīme","back with leftwards arrow above":"atpakaļ ar kreisi vērstu bultiņu augšpusē","Bitcoin sign":"Bitkoina zīme","Cedi sign":"Sedi zīme","Cent sign":"Centa zīme","Character categories":"Rakstzīmju kategorijas","Colon sign":"Kols","Contains as member":"Satur kā ","Copyright sign":"Autortiesību zīme","Cruzeiro sign":"Kruzeiro zīme","Currency sign":"Valūtas zīme","Degree sign":"Grādu zīme","Division sign":"Dalīšanas zīme","Dollar sign":"Dolārzīme","Dong sign":"Donga zīme","Double dagger":"Dubults duncis","Double exclamation mark":"Dubulta izsaukuma zīme","Double low-9 quotation mark":"Dubultās zemās-9 pēdiņās","Double question mark":"Dubulta jautājumzīme","downwards arrow to bar":"lejupvērsta bultiņa uz joslu","downwards dashed arrow":"lejupvērsta pārtrauktā bultiņa","downwards double arrow":"lejupvērsta dubultā bultiņa","Drachma sign":"Drahmas zīme","Element of":"Elements no","Em dash":"Domuzīme","Empty set":"Tukša kopa","En dash":"Īsa domuzīme","end with leftwards arrow above":"beigt ar kreisi vērstu bultiņu augšpusē","Euro sign":"Eirozīme","Euro-currency sign":"Eiro valūtas zīme","Exclamation question mark":"Izsaukuma jautājuma zīme","For all":"Visiem","Fraction slash":"Dalīšanas slīpsvītra","French franc sign":"Franču franka zīme","German penny sign":"Vācu santīma zīme","Greater-than or equal to":"Lielāks par vai vienāds ar","Greater-than sign":"Vairāk nekā zīme","Guarani sign":"Guarani zīme","Horizontal ellipsis":"Horizontālā elipse","Hryvnia sign":"Grivnas zīme","Identical to":"Vienāds ar","Indian rupee sign":"Indijas rūpijas zīme",Infinity:"Bezgalība",Integral:"Integrālis",Intersection:"Intersekcija","Inverted exclamation mark":"Apgriezta izsaukuma zīme","Inverted question mark":"Apgriezta jautājuma zīme","Kip sign":"Kipa zīme","Latin capital letter a with breve":"Latīņu lielais burts a ar īsuma zīmi","Latin capital letter a with macron":"Latīņu lielais burts a ar garumzīmi","Latin capital letter a with ogonek":"Latīņu lielais burts a ar ogoneku","Latin capital letter c with acute":"Latīņu lielais burts c ar akūtu","Latin capital letter c with caron":"Latīņu lielais burts c ar karonu","Latin capital letter c with circumflex":"Latīņu lielais burts c ar cirkumfleksu","Latin capital letter c with dot above":"Latīņu lielais burts c ar punktu augšpusē","Latin capital letter d with caron":"Latīņu lielais burts d ar karonu","Latin capital letter d with stroke":"Latīņu lielais burts d ar līniju","Latin capital letter e with breve":"Latīņu lielais burts e ar īsuma zīmi","Latin capital letter e with caron":"Latīņu lielais burts e ar karonu","Latin capital letter e with dot above":"Latīņu lielais burts e ar punktu augšpusē","Latin capital letter e with macron":"Latīņu lielais burts e ar garumzīmi","Latin capital letter e with ogonek":"Latīņu lielais burts e ar ogoneku","Latin capital letter eng":"Latīņu lielais burts eng","Latin capital letter g with breve":"Latīņu lielais burts g ar īsuma zīmi","Latin capital letter g with cedilla":"Latīņu lielais burts g ar sediļu","Latin capital letter g with circumflex":"Latīņu lielais burts g ar cirkumfleksu","Latin capital letter g with dot above":"Latīņu lielais burts g ar punktu augšpusē","Latin capital letter h with circumflex":"Latīņu lielais burts h ar cirkumfleksu","Latin capital letter h with stroke":"Latīņu lielais burts h ar līniju","Latin capital letter i with breve":"Latīņu lielais burts i ar īsuma zīmi","Latin capital letter i with dot above":"Latīņu lielais burts i ar punktu augšpusē","Latin capital letter i with macron":"Latīņu lielais burts i ar garumzīmi","Latin capital letter i with ogonek":"Latīņu lielais burts i ar ogoneku","Latin capital letter i with tilde":"Latīņu lielais burts i ar tildi","Latin capital letter j with circumflex":"Latīņu lielais burts j ar cirkumfleksu","Latin capital letter k with cedilla":"Latīņu lielais burts k ar sediļu","Latin capital letter l with acute":"Latīņu lielais burts l ar akūtu","Latin capital letter l with caron":"Latīņu lielais burts l ar karonu","Latin capital letter l with cedilla":"Latīņu lielais burts l ar sediļu","Latin capital letter l with middle dot":"Latīņu lielais burts l ar vidējo punktu","Latin capital letter l with stroke":"Latīņu lielais burts l ar līniju","Latin capital letter n with acute":"Latīņu lielais burts n ar akūtu","Latin capital letter n with caron":"Latīņu lielais burts n ar karonu","Latin capital letter n with cedilla":"Latīņu lielais burts n ar sediļu","Latin capital letter o with breve":"Latīņu lielais burts o ar īsuma zīmi","Latin capital letter o with double acute":"Latīņu lielais burts o ar dubultu akūtu","Latin capital letter o with macron":"Latīņu lielais burts o ar garumzīmi","Latin capital letter r with acute":"Latīņu lielais burts r ar akūtu","Latin capital letter r with caron":"Latīņu lielais burts r ar karonu","Latin capital letter r with cedilla":"Latīņu lielais burts r ar sediļu","Latin capital letter s with acute":"Latīņu lielais burts s ar akūtu","Latin capital letter s with caron":"Latīņu lielais burts s ar karonu","Latin capital letter s with cedilla":"Latīņu lielais burts s ar sediļu","Latin capital letter s with circumflex":"Latīņu lielais burts s ar cirkumfleksu","Latin capital letter t with caron":"Latīņu lielais burts t ar karonu","Latin capital letter t with cedilla":"Latīņu lielais burts t ar sediļu","Latin capital letter t with stroke":"Latīņu lielais burts t ar līniju","Latin capital letter u with breve":"Latīņu lielais burts u ar īsuma zīmi","Latin capital letter u with double acute":"Latīņu lielais burts u ar dubultu akūtu","Latin capital letter u with macron":"Latīņu lielais burts u ar garumzīmi","Latin capital letter u with ogonek":"Latīņu lielais burts u ar ogoneku","Latin capital letter u with ring above":"Latīņu lielais burts u ar gredzenu augšpusē","Latin capital letter u with tilde":"Latīņu lielais burts u ar tildi","Latin capital letter w with circumflex":"Latīņu lielais burts w ar cirkumfleksu","Latin capital letter y with circumflex":"Latīņu lielais burts y ar cirkumfleksu","Latin capital letter y with diaeresis":"Latīņu lielais burts y ar diaerēzi","Latin capital letter z with acute":"Latīņu lielais burts z ar akūtu","Latin capital letter z with caron":"Latīņu lielais burts z ar karonu","Latin capital letter z with dot above":"Latīņu lielais burts z ar punktu augšpusē","Latin capital ligature ij":"Latīņu lielā ligatūra ij","Latin capital ligature oe":"Latīņu lielā ligatūra oe","Latin small letter a with breve":"Latīņu mazais burts a ar īsuma zīmi","Latin small letter a with macron":"Latīņu mazais burts a ar garumzīmi","Latin small letter a with ogonek":"Latīņu mazais burts a ar ogoneku","Latin small letter c with acute":"Latīņu mazais burts c ar akūtu","Latin small letter c with caron":"Latīņu mazais burts c ar karonu","Latin small letter c with circumflex":"Latīņu mazais burts c ar cirkumfleksu","Latin small letter c with dot above":"Latīņu mazais burts c ar punktu augšpusē","Latin small letter d with caron":"Latīņu mazais burts d ar karonu","Latin small letter d with stroke":"Latīņu mazais burts d ar līniju","Latin small letter dotless i":"Latīņu mazais bezpunkta burts i","Latin small letter e with breve":"Latīņu mazais burts e ar īsuma zīmi","Latin small letter e with caron":"Latīņu mazais burts e ar karonu","Latin small letter e with dot above":"Latīņu mazais burts e ar punktu augšpusē","Latin small letter e with macron":"Latīņu mazais burts e ar garumzīmi","Latin small letter e with ogonek":"Latīņu mazais burts e ar ogoneku","Latin small letter eng":"Latīņu mazais burts eng","Latin small letter f with hook":"Latīņu mazais burts f ar āķi","Latin small letter g with breve":"Latīņu mazais burts g ar īsuma zīmi","Latin small letter g with cedilla":"Latīņu mazais burts g ar sediļu","Latin small letter g with circumflex":"Latīņu mazais burts g ar cirkumfleksu","Latin small letter g with dot above":"Latīņu mazais burts e ar punktu augšpusē","Latin small letter h with circumflex":"Latīņu mazais burts c ar cirkumfleksu","Latin small letter h with stroke":"Latīņu mazais burts h ar līniju","Latin small letter i with breve":"Latīņu mazais burts i ar īsuma zīmi","Latin small letter i with macron":"Latīņu mazais burts i ar garumzīmi","Latin small letter i with ogonek":"Latīņu mazais burts i ar ogoneku","Latin small letter i with tilde":"Latīņu mazais burts i ar tildi","Latin small letter j with circumflex":"Latīņu mazais burts j ar cirkumfleksu","Latin small letter k with cedilla":"Latīņu mazais burts k ar sediļu","Latin small letter kra":"Latīņu mazais burts kra","Latin small letter l with acute":"Latīņu mazais burts l ar akūtu","Latin small letter l with caron":"Latīņu mazais burts l ar karonu","Latin small letter l with cedilla":"Latīņu mazais burts l ar sediļu","Latin small letter l with middle dot":"Latīņu mazais burts l ar vidējo punktu","Latin small letter l with stroke":"Latīņu mazais burts l ar līniju","Latin small letter long s":"Latīņu mazais burts garais s","Latin small letter n preceded by apostrophe":"Latīņu mazais burts n, pirms kura ir apostrofs","Latin small letter n with acute":"Latīņu mazais burts n ar akūtu","Latin small letter n with caron":"Latīņu mazais burts n ar karonu","Latin small letter n with cedilla":"Latīņu mazais burts n ar sediļu","Latin small letter o with breve":"Latīņu mazais burts o ar īsuma zīmi","Latin small letter o with double acute":"Latīņu mazais burts o ar dubultu akūtu","Latin small letter o with macron":"Latīņu mazais burts o ar garumzīmi","Latin small letter r with acute":"Latīņu mazais burts r ar akūtu","Latin small letter r with caron":"Latīņu mazais burts r ar karonu","Latin small letter r with cedilla":"Latīņu mazais burts r ar sediļu","Latin small letter s with acute":"Latīņu mazais burts s ar akūtu","Latin small letter s with caron":"Latīņu mazais burts s ar karonu","Latin small letter s with cedilla":"Latīņu mazais burts s ar sediļu","Latin small letter s with circumflex":"Latīņu mazais burts s ar cirkumfleksu","Latin small letter t with caron":"Latīņu mazais burts t ar karonu","Latin small letter t with cedilla":"Latīņu mazais burts t ar sediļu","Latin small letter t with stroke":"Latīņu mazais burts t ar līniju","Latin small letter u with breve":"Latīņu mazais burts u ar īsuma zīmi","Latin small letter u with double acute":"Latīņu mazais burts u ar dubultu akūtu","Latin small letter u with macron":"Latīņu mazais burts u ar garumzīmi","Latin small letter u with ogonek":"Latīņu mazais burts u ar ogoneku","Latin small letter u with ring above":"Latīņu mazais burts u ar gredzenu augšpusē","Latin small letter u with tilde":"Latīņu mazais burts u ar tildi","Latin small letter w with circumflex":"Latīņu mazais burts w ar cirkumfleksu","Latin small letter y with circumflex":"Latīņu mazais burts y ar cirkumfleksu","Latin small letter z with acute":"Latīņu mazais burts z ar akūtu","Latin small letter z with caron":"Latīņu mazais burts z ar karonu","Latin small letter z with dot above":"Latīņu mazais burts z ar punktu augšpusē","Latin small ligature ij":"Latīņu mazā ligatūra ij","Latin small ligature oe":"Latīņu mazā ligatūra oe","Left double quotation mark":"Kreisās dubultās pēdiņas","Left single quotation mark":"Viena kreisā pēdiņa","Left-pointing double angle quotation mark":"Pa kreisi vērstas dubultās stūrainās pēdiņas","leftwards arrow to bar":"pa kreisi vērstā bultiņa uz joslu","leftwards dashed arrow":"pa kreisi vērstā partrauktā bultiņa","leftwards double arrow":"pa kreisi vērstā dubultbultiņa","Less-than or equal to":"Mazāks par vai vienāds ar","Less-than sign":"Mazāk nekā zīme","Lira sign":"Liras zīme","Livre tournois sign":"Tours mārciņu zīme","Logical and":"Loģisks un ","Logical or":"Loģisks vai",Macron:"Garumzīme","Manat sign":"Manata zīme","Mill sign":"Millas zīmes","Minus sign":"Mīnus zīme","Multiplication sign":"Reizināšanas zīme","N-ary product":"N-ārs produkts","N-ary summation":"N-āra summa",Nabla:"Nabla","Naira sign":"Nairas zīme","New sheqel sign":"Šekeļa zīme","Nordic mark sign":"Ziemeļu markas zīme","Not an element of":"Nav elements","Not equal to":"Nav vienāds ar","Not sign":"Aizlieguma zīme","on with exclamation mark with left right arrow above":"ieslēgts ar izsaukuma zīmi ar kreiso-labo bultiņu augšpusē",Overline:"Virssvītra","Paragraph sign":"Rindkopas zīme","Partial differential":"Daļējs diferenciālis","Per mille sign":"Promiles zīme","Per ten thousand sign":"Desmit tūkstošās daļas zīme","Peseta sign":"Pesetas zīme","Peso sign":"Peso zīme","Plus-minus sign":"Plus-mīnus zīme","Pound sign":"Mārciņas zīme","Proportional to":"Proporcionāls","Question exclamation mark":"Jautājuma izsaukuma zīme","Registered sign":"Reģistrēta prečuzīmes zīme","Reversed paragraph sign":"Apgrieztā rindkopas zīme","Right double quotation mark":"Labās dubultās pēdiņas","Right single quotation mark":"Viena labā pēdiņa","Right-pointing double angle quotation mark":"Pa labi vērstas dubultās stūrainās pēdiņas","rightwards arrow to bar":"pa labi vērstā bultiņa uz joslu","rightwards dashed arrow":"pa labi vērstā partrauktā bultiņa","rightwards double arrow":"pa labi vērstā dubultbultiņa","Ruble sign":"Rubļa zīme","Rupee sign":"Rūpijas zīme","Section sign":"Sekcijas zīme","Single left-pointing angle quotation mark":"Pa kreisi vērsta stūrainā pēdiņa","Single low-9 quotation mark":"Viena zemā-9 pēdiņās","Single right-pointing angle quotation mark":"Pa labi vērsta stūrainā pēdiņa","soon with rightwards arrow above":"drīz ar uz labo pusi vērstu bultiņu augšpusē","Special characters":"Speciālie simboli","Spesmilo sign":"Spesmilo zīme","Square root":"Kvadrātsakne","Tenge sign":"Tenges zīme","There exists":"Eksistē","Tilde operator":"Tildes operators","top with upwards arrow above":"augšpusē ar augšupvērstu bultiņu augšpusē","Trade mark sign":"Prečuzīmes zīme","Tugrik sign":"Tugrika zīme","Turkish lira sign":"Turcijas liras zīme","Two dot leader":"Divu punktu līderis",Union:"Savienība","up down arrow with base":"augšup-lejupvērsta bultiņa ar pamatni","upwards arrow to bar":"augšupvērsta bultiņa uz joslu","upwards dashed arrow":"augšupvērsta pārtrauktā bultiņa","upwards double arrow":"augšupvērsta dubultā bultiņa","Vulgar fraction one half":"Viena puse","Vulgar fraction one quarter":"Viena ceturtdaļa","Vulgar fraction three quarters":"Trīs ceturtdaļas","Won sign":"Vonas zīme","Yen sign":"Jenas zīme"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(a){const t=a.lv=a.lv||{};t.dictionary=Object.assign(t.dictionary||{},{"Almost equal to":"Gandrīz vienāds ar",Angle:"Stūris","Approximately equal to":"Aptuveni vienāds ar","Asterisk operator":"Asterisks","Austral sign":"Austrāla zīme","back with leftwards arrow above":"atpakaļ ar kreisi vērstu bultiņu augšpusē","Bitcoin sign":"Bitkoina zīme","Cedi sign":"Sedi zīme","Cent sign":"Centa zīme","Character categories":"Rakstzīmju kategorijas","Colon sign":"Kols","Contains as member":"Satur kā ","Copyright sign":"Autortiesību zīme","Cruzeiro sign":"Kruzeiro zīme","Currency sign":"Valūtas zīme","Degree sign":"Grādu zīme","Division sign":"Dalīšanas zīme","Dollar sign":"Dolārzīme","Dong sign":"Donga zīme","Double dagger":"Dubults duncis","Double exclamation mark":"Dubulta izsaukuma zīme","Double low-9 quotation mark":"Dubultās zemās-9 pēdiņās","Double question mark":"Dubulta jautājumzīme","downwards arrow to bar":"lejupvērsta bultiņa uz joslu","downwards dashed arrow":"lejupvērsta pārtrauktā bultiņa","downwards double arrow":"lejupvērsta dubultā bultiņa","downwards simple arrow":"vienkāršā bulta lejup","Drachma sign":"Drahmas zīme","Element of":"Elements no","Em dash":"Domuzīme","Empty set":"Tukša kopa","En dash":"Īsa domuzīme","end with leftwards arrow above":"beigt ar kreisi vērstu bultiņu augšpusē","Euro sign":"Eirozīme","Euro-currency sign":"Eiro valūtas zīme","Exclamation question mark":"Izsaukuma jautājuma zīme","For all":"Visiem","Fraction slash":"Dalīšanas slīpsvītra","French franc sign":"Franču franka zīme","German penny sign":"Vācu santīma zīme","Greater-than or equal to":"Lielāks par vai vienāds ar","Greater-than sign":"Vairāk nekā zīme","Guarani sign":"Guarani zīme","Horizontal ellipsis":"Horizontālā elipse","Hryvnia sign":"Grivnas zīme","Identical to":"Vienāds ar","Indian rupee sign":"Indijas rūpijas zīme",Infinity:"Bezgalība",Integral:"Integrālis",Intersection:"Intersekcija","Inverted exclamation mark":"Apgriezta izsaukuma zīme","Inverted question mark":"Apgriezta jautājuma zīme","Kip sign":"Kipa zīme","Latin capital letter a with breve":"Latīņu lielais burts a ar īsuma zīmi","Latin capital letter a with macron":"Latīņu lielais burts a ar garumzīmi","Latin capital letter a with ogonek":"Latīņu lielais burts a ar ogoneku","Latin capital letter c with acute":"Latīņu lielais burts c ar akūtu","Latin capital letter c with caron":"Latīņu lielais burts c ar karonu","Latin capital letter c with circumflex":"Latīņu lielais burts c ar cirkumfleksu","Latin capital letter c with dot above":"Latīņu lielais burts c ar punktu augšpusē","Latin capital letter d with caron":"Latīņu lielais burts d ar karonu","Latin capital letter d with stroke":"Latīņu lielais burts d ar līniju","Latin capital letter e with breve":"Latīņu lielais burts e ar īsuma zīmi","Latin capital letter e with caron":"Latīņu lielais burts e ar karonu","Latin capital letter e with dot above":"Latīņu lielais burts e ar punktu augšpusē","Latin capital letter e with macron":"Latīņu lielais burts e ar garumzīmi","Latin capital letter e with ogonek":"Latīņu lielais burts e ar ogoneku","Latin capital letter eng":"Latīņu lielais burts eng","Latin capital letter g with breve":"Latīņu lielais burts g ar īsuma zīmi","Latin capital letter g with cedilla":"Latīņu lielais burts g ar sediļu","Latin capital letter g with circumflex":"Latīņu lielais burts g ar cirkumfleksu","Latin capital letter g with dot above":"Latīņu lielais burts g ar punktu augšpusē","Latin capital letter h with circumflex":"Latīņu lielais burts h ar cirkumfleksu","Latin capital letter h with stroke":"Latīņu lielais burts h ar līniju","Latin capital letter i with breve":"Latīņu lielais burts i ar īsuma zīmi","Latin capital letter i with dot above":"Latīņu lielais burts i ar punktu augšpusē","Latin capital letter i with macron":"Latīņu lielais burts i ar garumzīmi","Latin capital letter i with ogonek":"Latīņu lielais burts i ar ogoneku","Latin capital letter i with tilde":"Latīņu lielais burts i ar tildi","Latin capital letter j with circumflex":"Latīņu lielais burts j ar cirkumfleksu","Latin capital letter k with cedilla":"Latīņu lielais burts k ar sediļu","Latin capital letter l with acute":"Latīņu lielais burts l ar akūtu","Latin capital letter l with caron":"Latīņu lielais burts l ar karonu","Latin capital letter l with cedilla":"Latīņu lielais burts l ar sediļu","Latin capital letter l with middle dot":"Latīņu lielais burts l ar vidējo punktu","Latin capital letter l with stroke":"Latīņu lielais burts l ar līniju","Latin capital letter n with acute":"Latīņu lielais burts n ar akūtu","Latin capital letter n with caron":"Latīņu lielais burts n ar karonu","Latin capital letter n with cedilla":"Latīņu lielais burts n ar sediļu","Latin capital letter o with breve":"Latīņu lielais burts o ar īsuma zīmi","Latin capital letter o with double acute":"Latīņu lielais burts o ar dubultu akūtu","Latin capital letter o with macron":"Latīņu lielais burts o ar garumzīmi","Latin capital letter r with acute":"Latīņu lielais burts r ar akūtu","Latin capital letter r with caron":"Latīņu lielais burts r ar karonu","Latin capital letter r with cedilla":"Latīņu lielais burts r ar sediļu","Latin capital letter s with acute":"Latīņu lielais burts s ar akūtu","Latin capital letter s with caron":"Latīņu lielais burts s ar karonu","Latin capital letter s with cedilla":"Latīņu lielais burts s ar sediļu","Latin capital letter s with circumflex":"Latīņu lielais burts s ar cirkumfleksu","Latin capital letter t with caron":"Latīņu lielais burts t ar karonu","Latin capital letter t with cedilla":"Latīņu lielais burts t ar sediļu","Latin capital letter t with stroke":"Latīņu lielais burts t ar līniju","Latin capital letter u with breve":"Latīņu lielais burts u ar īsuma zīmi","Latin capital letter u with double acute":"Latīņu lielais burts u ar dubultu akūtu","Latin capital letter u with macron":"Latīņu lielais burts u ar garumzīmi","Latin capital letter u with ogonek":"Latīņu lielais burts u ar ogoneku","Latin capital letter u with ring above":"Latīņu lielais burts u ar gredzenu augšpusē","Latin capital letter u with tilde":"Latīņu lielais burts u ar tildi","Latin capital letter w with circumflex":"Latīņu lielais burts w ar cirkumfleksu","Latin capital letter y with circumflex":"Latīņu lielais burts y ar cirkumfleksu","Latin capital letter y with diaeresis":"Latīņu lielais burts y ar diaerēzi","Latin capital letter z with acute":"Latīņu lielais burts z ar akūtu","Latin capital letter z with caron":"Latīņu lielais burts z ar karonu","Latin capital letter z with dot above":"Latīņu lielais burts z ar punktu augšpusē","Latin capital ligature ij":"Latīņu lielā ligatūra ij","Latin capital ligature oe":"Latīņu lielā ligatūra oe","Latin small letter a with breve":"Latīņu mazais burts a ar īsuma zīmi","Latin small letter a with macron":"Latīņu mazais burts a ar garumzīmi","Latin small letter a with ogonek":"Latīņu mazais burts a ar ogoneku","Latin small letter c with acute":"Latīņu mazais burts c ar akūtu","Latin small letter c with caron":"Latīņu mazais burts c ar karonu","Latin small letter c with circumflex":"Latīņu mazais burts c ar cirkumfleksu","Latin small letter c with dot above":"Latīņu mazais burts c ar punktu augšpusē","Latin small letter d with caron":"Latīņu mazais burts d ar karonu","Latin small letter d with stroke":"Latīņu mazais burts d ar līniju","Latin small letter dotless i":"Latīņu mazais bezpunkta burts i","Latin small letter e with breve":"Latīņu mazais burts e ar īsuma zīmi","Latin small letter e with caron":"Latīņu mazais burts e ar karonu","Latin small letter e with dot above":"Latīņu mazais burts e ar punktu augšpusē","Latin small letter e with macron":"Latīņu mazais burts e ar garumzīmi","Latin small letter e with ogonek":"Latīņu mazais burts e ar ogoneku","Latin small letter eng":"Latīņu mazais burts eng","Latin small letter f with hook":"Latīņu mazais burts f ar āķi","Latin small letter g with breve":"Latīņu mazais burts g ar īsuma zīmi","Latin small letter g with cedilla":"Latīņu mazais burts g ar sediļu","Latin small letter g with circumflex":"Latīņu mazais burts g ar cirkumfleksu","Latin small letter g with dot above":"Latīņu mazais burts e ar punktu augšpusē","Latin small letter h with circumflex":"Latīņu mazais burts c ar cirkumfleksu","Latin small letter h with stroke":"Latīņu mazais burts h ar līniju","Latin small letter i with breve":"Latīņu mazais burts i ar īsuma zīmi","Latin small letter i with macron":"Latīņu mazais burts i ar garumzīmi","Latin small letter i with ogonek":"Latīņu mazais burts i ar ogoneku","Latin small letter i with tilde":"Latīņu mazais burts i ar tildi","Latin small letter j with circumflex":"Latīņu mazais burts j ar cirkumfleksu","Latin small letter k with cedilla":"Latīņu mazais burts k ar sediļu","Latin small letter kra":"Latīņu mazais burts kra","Latin small letter l with acute":"Latīņu mazais burts l ar akūtu","Latin small letter l with caron":"Latīņu mazais burts l ar karonu","Latin small letter l with cedilla":"Latīņu mazais burts l ar sediļu","Latin small letter l with middle dot":"Latīņu mazais burts l ar vidējo punktu","Latin small letter l with stroke":"Latīņu mazais burts l ar līniju","Latin small letter long s":"Latīņu mazais burts garais s","Latin small letter n preceded by apostrophe":"Latīņu mazais burts n, pirms kura ir apostrofs","Latin small letter n with acute":"Latīņu mazais burts n ar akūtu","Latin small letter n with caron":"Latīņu mazais burts n ar karonu","Latin small letter n with cedilla":"Latīņu mazais burts n ar sediļu","Latin small letter o with breve":"Latīņu mazais burts o ar īsuma zīmi","Latin small letter o with double acute":"Latīņu mazais burts o ar dubultu akūtu","Latin small letter o with macron":"Latīņu mazais burts o ar garumzīmi","Latin small letter r with acute":"Latīņu mazais burts r ar akūtu","Latin small letter r with caron":"Latīņu mazais burts r ar karonu","Latin small letter r with cedilla":"Latīņu mazais burts r ar sediļu","Latin small letter s with acute":"Latīņu mazais burts s ar akūtu","Latin small letter s with caron":"Latīņu mazais burts s ar karonu","Latin small letter s with cedilla":"Latīņu mazais burts s ar sediļu","Latin small letter s with circumflex":"Latīņu mazais burts s ar cirkumfleksu","Latin small letter t with caron":"Latīņu mazais burts t ar karonu","Latin small letter t with cedilla":"Latīņu mazais burts t ar sediļu","Latin small letter t with stroke":"Latīņu mazais burts t ar līniju","Latin small letter u with breve":"Latīņu mazais burts u ar īsuma zīmi","Latin small letter u with double acute":"Latīņu mazais burts u ar dubultu akūtu","Latin small letter u with macron":"Latīņu mazais burts u ar garumzīmi","Latin small letter u with ogonek":"Latīņu mazais burts u ar ogoneku","Latin small letter u with ring above":"Latīņu mazais burts u ar gredzenu augšpusē","Latin small letter u with tilde":"Latīņu mazais burts u ar tildi","Latin small letter w with circumflex":"Latīņu mazais burts w ar cirkumfleksu","Latin small letter y with circumflex":"Latīņu mazais burts y ar cirkumfleksu","Latin small letter z with acute":"Latīņu mazais burts z ar akūtu","Latin small letter z with caron":"Latīņu mazais burts z ar karonu","Latin small letter z with dot above":"Latīņu mazais burts z ar punktu augšpusē","Latin small ligature ij":"Latīņu mazā ligatūra ij","Latin small ligature oe":"Latīņu mazā ligatūra oe","Left double quotation mark":"Kreisās dubultās pēdiņas","Left single quotation mark":"Viena kreisā pēdiņa","Left-pointing double angle quotation mark":"Pa kreisi vērstas dubultās stūrainās pēdiņas","leftwards arrow to bar":"pa kreisi vērstā bultiņa uz joslu","leftwards dashed arrow":"pa kreisi vērstā partrauktā bultiņa","leftwards double arrow":"pa kreisi vērstā dubultbultiņa","leftwards simple arrow":"vienkāršā bulta pa kreisi","Less-than or equal to":"Mazāks par vai vienāds ar","Less-than sign":"Mazāk nekā zīme","Lira sign":"Liras zīme","Livre tournois sign":"Tours mārciņu zīme","Logical and":"Loģisks un ","Logical or":"Loģisks vai",Macron:"Garumzīme","Manat sign":"Manata zīme","Mill sign":"Millas zīmes","Minus sign":"Mīnus zīme","Multiplication sign":"Reizināšanas zīme","N-ary product":"N-ārs produkts","N-ary summation":"N-āra summa",Nabla:"Nabla","Naira sign":"Nairas zīme","New sheqel sign":"Šekeļa zīme","Nordic mark sign":"Ziemeļu markas zīme","Not an element of":"Nav elements","Not equal to":"Nav vienāds ar","Not sign":"Aizlieguma zīme","on with exclamation mark with left right arrow above":"ieslēgts ar izsaukuma zīmi ar kreiso-labo bultiņu augšpusē",Overline:"Virssvītra","Paragraph sign":"Rindkopas zīme","Partial differential":"Daļējs diferenciālis","Per mille sign":"Promiles zīme","Per ten thousand sign":"Desmit tūkstošās daļas zīme","Peseta sign":"Pesetas zīme","Peso sign":"Peso zīme","Plus-minus sign":"Plus-mīnus zīme","Pound sign":"Mārciņas zīme","Proportional to":"Proporcionāls","Question exclamation mark":"Jautājuma izsaukuma zīme","Registered sign":"Reģistrēta prečuzīmes zīme","Reversed paragraph sign":"Apgrieztā rindkopas zīme","Right double quotation mark":"Labās dubultās pēdiņas","Right single quotation mark":"Viena labā pēdiņa","Right-pointing double angle quotation mark":"Pa labi vērstas dubultās stūrainās pēdiņas","rightwards arrow to bar":"pa labi vērstā bultiņa uz joslu","rightwards dashed arrow":"pa labi vērstā partrauktā bultiņa","rightwards double arrow":"pa labi vērstā dubultbultiņa","rightwards simple arrow":"vienkāršā bulta pa labi","Ruble sign":"Rubļa zīme","Rupee sign":"Rūpijas zīme","Section sign":"Sekcijas zīme","Single left-pointing angle quotation mark":"Pa kreisi vērsta stūrainā pēdiņa","Single low-9 quotation mark":"Viena zemā-9 pēdiņās","Single right-pointing angle quotation mark":"Pa labi vērsta stūrainā pēdiņa","soon with rightwards arrow above":"drīz ar uz labo pusi vērstu bultiņu augšpusē","Special characters":"Speciālie simboli","Spesmilo sign":"Spesmilo zīme","Square root":"Kvadrātsakne","Tenge sign":"Tenges zīme","There exists":"Eksistē","Tilde operator":"Tildes operators","top with upwards arrow above":"augšpusē ar augšupvērstu bultiņu augšpusē","Trade mark sign":"Prečuzīmes zīme","Tugrik sign":"Tugrika zīme","Turkish lira sign":"Turcijas liras zīme","Two dot leader":"Divu punktu līderis",Union:"Savienība","up down arrow with base":"augšup-lejupvērsta bultiņa ar pamatni","upwards arrow to bar":"augšupvērsta bultiņa uz joslu","upwards dashed arrow":"augšupvērsta pārtrauktā bultiņa","upwards double arrow":"augšupvērsta dubultā bultiņa","upwards simple arrow":"vienkāršā bulta uz augšu","Vulgar fraction one half":"Viena puse","Vulgar fraction one quarter":"Viena ceturtdaļa","Vulgar fraction three quarters":"Trīs ceturtdaļas","Won sign":"Vonas zīme","Yen sign":"Jenas zīme"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/special-characters/translations/ms.js b/core/assets/vendor/ckeditor5/special-characters/translations/ms.js
index 188ec4e86c..4d8c655192 100644
--- a/core/assets/vendor/ckeditor5/special-characters/translations/ms.js
+++ b/core/assets/vendor/ckeditor5/special-characters/translations/ms.js
@@ -1 +1 @@
-!function(a){const t=a.ms=a.ms||{};t.dictionary=Object.assign(t.dictionary||{},{"Almost equal to":"Hampir sama dengan",Angle:"Sudut","Approximately equal to":"Kira-kira sama dengan","Asterisk operator":"Pengoperasi asterisk","Austral sign":"Simbol Austral","back with leftwards arrow above":"kembali dengan anak panah arah kiri di atas","Bitcoin sign":"Simbol Bitcoin","Cedi sign":"Simbol Cedi","Cent sign":"Simbol sen","Character categories":"Kategori aksara","Colon sign":"Tanda titik bertindih","Contains as member":"Terkandung sebagai anggota","Copyright sign":"Simbol hak cipta","Cruzeiro sign":"Simbol Cruzeiro","Currency sign":"Simbol mata wang","Degree sign":"Simbol darjah","Division sign":"Simbol bahagi","Dollar sign":"Simbol Dolar","Dong sign":"Simbol Dong","Double dagger":"Tanda rujuk kembar","Double exclamation mark":"Tanda seru berkembar","Double low-9 quotation mark":"Tanda petikan rendah 9 berkembar","Double question mark":"Tanda soal berkembar","downwards arrow to bar":"anak panah arah bawah ke bar","downwards dashed arrow":"anak panah bersengkang arah bawah","downwards double arrow":"anak panah berkembar arah bawah","Drachma sign":"Simbol Drachma","Element of":"Unsur bagi","Em dash":"Sengkang em","Empty set":"Set kosong","En dash":"Sengkang en","end with leftwards arrow above":"tamatkan dengan anak panah arah kiri di atas","Euro sign":"Simbol Euro","Euro-currency sign":"Simbol mata wang Euro","Exclamation question mark":"Tanda soal seru","For all":"Untuk semua","Fraction slash":"Garis condong pecahan","French franc sign":"Simbol Franc Perancis","German penny sign":"Simbol Peni Jerman","Greater-than or equal to":"Lebih besar daripada atau sama dengan","Greater-than sign":"Simbol lebih besar daripada","Guarani sign":"Simbol Guarani","Horizontal ellipsis":"Elipsis Mendatar","Hryvnia sign":"Simbol Hryvnia","Identical to":"Serupa dengan","Indian rupee sign":"Simbol Rupee India",Infinity:"Infiniti",Integral:"Integral",Intersection:"Persilangan","Inverted exclamation mark":"Tanda seru terbalik","Inverted question mark":"Tanda soal terbalik","Kip sign":"Simbol Kip","Latin capital letter a with breve":"Huruf Latin a besar dengan tanda singkat","Latin capital letter a with macron":"Huruf Latin a besar dengan tanda makron","Latin capital letter a with ogonek":"Huruf Latin a besar dengan tanda ogonek","Latin capital letter c with acute":"Huruf Latin c besar dengan tanda tirus","Latin capital letter c with caron":"Huruf Latin c besar dengan tanda caron","Latin capital letter c with circumflex":"Huruf Latin c besar dengan tanda sirkumfleks","Latin capital letter c with dot above":"Huruf Latin c besar dengan titik di atas","Latin capital letter d with caron":"Huruf Latin d besar dengan tanda caron","Latin capital letter d with stroke":"Huruf Latin d besar dengan garis miring","Latin capital letter e with breve":"Huruf Latin e besar dengan tanda singkat","Latin capital letter e with caron":"Huruf Latin e besar dengan tanda caron","Latin capital letter e with dot above":"Huruf Latin e besar dengan titik di atas","Latin capital letter e with macron":"Huruf Latin e besar dengan tanda makron","Latin capital letter e with ogonek":"Huruf Latin e besar dengan tanda ogonek","Latin capital letter eng":"Huruf Latin eng besar","Latin capital letter g with breve":"Huruf Latin g besar dengan tanda singkat","Latin capital letter g with cedilla":"Huruf Latin g besar dengan tanda sedila","Latin capital letter g with circumflex":"Huruf Latin g besar dengan tanda sirkumfleks","Latin capital letter g with dot above":"Huruf Latin g besar dengan titik di atas","Latin capital letter h with circumflex":"Huruf Latin h besar dengan tanda sirkumfleks","Latin capital letter h with stroke":"Huruf Latin h besar dengan garis miring","Latin capital letter i with breve":"Huruf Latin i besar dengan tanda singkat","Latin capital letter i with dot above":"Huruf Latin i besar dengan titik di atas","Latin capital letter i with macron":"Huruf Latin i besar dengan tanda makron","Latin capital letter i with ogonek":"Huruf Latin i besar dengan tanda ogonek","Latin capital letter i with tilde":"Huruf Latin i besar dengan tanda tilde","Latin capital letter j with circumflex":"Huruf Latin j besar dengan tanda sirkumfleks","Latin capital letter k with cedilla":"Huruf Latin k besar dengan tanda sedila","Latin capital letter l with acute":"Huruf Latin l besar dengan tanda tirus","Latin capital letter l with caron":"Huruf Latin l besar dengan tanda caron","Latin capital letter l with cedilla":"Huruf Latin l besar dengan tanda sedila","Latin capital letter l with middle dot":"Huruf Latin l besar dengan titik tengah","Latin capital letter l with stroke":"Huruf Latin l besar dengan garis miring","Latin capital letter n with acute":"Huruf Latin n besar dengan tanda tirus","Latin capital letter n with caron":"Huruf Latin n besar dengan tanda caron","Latin capital letter n with cedilla":"Huruf Latin n besar dengan tanda sedila","Latin capital letter o with breve":"Huruf Latin o besar dengan tanda singkat","Latin capital letter o with double acute":"Huruf Latin o besar dengan tanda tirus berkembar","Latin capital letter o with macron":"Huruf Latin o besar dengan tanda makron","Latin capital letter r with acute":"Huruf Latin r besar dengan tanda tirus","Latin capital letter r with caron":"Huruf Latin r besar dengan tanda caron","Latin capital letter r with cedilla":"Huruf Latin r besar dengan tanda sedila","Latin capital letter s with acute":"Huruf Latin s besar dengan tanda tirus","Latin capital letter s with caron":"Huruf Latin s besar dengan tanda caron","Latin capital letter s with cedilla":"Huruf Latin s besar dengan tanda sedila","Latin capital letter s with circumflex":"Huruf Latin s besar dengan tanda sirkumfleks","Latin capital letter t with caron":"Huruf Latin t besar dengan tanda caron","Latin capital letter t with cedilla":"Huruf Latin t besar dengan tanda sedila","Latin capital letter t with stroke":"Huruf Latin t besar dengan garis miring","Latin capital letter u with breve":"Huruf Latin u besar dengan tanda singkat","Latin capital letter u with double acute":"Huruf Latin u besar dengan tanda tirus berkembar","Latin capital letter u with macron":"Huruf Latin u besar dengan tanda makron","Latin capital letter u with ogonek":"Huruf Latin u besar dengan tanda ogonek","Latin capital letter u with ring above":"Huruf Latin u besar dengan bulatan di atas","Latin capital letter u with tilde":"Huruf Latin u besar dengan tanda tilde","Latin capital letter w with circumflex":"Huruf Latin w besar dengan tanda sirkumfleks","Latin capital letter y with circumflex":"Huruf Latin y besar dengan tanda sirkumfleks","Latin capital letter y with diaeresis":"Huruf Latin y besar dengan tanda diaresis","Latin capital letter z with acute":"Huruf Latin z besar dengan tanda tirus","Latin capital letter z with caron":"Huruf Latin z besar dengan tanda caron","Latin capital letter z with dot above":"Huruf Latin z besar dengan titik di atas","Latin capital ligature ij":"Huruf kembar Latin ij besar","Latin capital ligature oe":"Huruf kembar Latin oe besar","Latin small letter a with breve":"Huruf Latin a kecil dengan tanda singkat","Latin small letter a with macron":"Huruf Latin a kecil dengan tanda makron","Latin small letter a with ogonek":"Huruf Latin a kecil dengan tanda ogonek","Latin small letter c with acute":"Huruf Latin c kecil dengan tanda tirus","Latin small letter c with caron":"Huruf Latin c kecil dengan tanda caron","Latin small letter c with circumflex":"Huruf Latin c kecil dengan tanda Sirkumfleks","Latin small letter c with dot above":"Huruf Latin c kecil dengan titik di atas","Latin small letter d with caron":"Huruf Latin d kecil dengan tanda caron","Latin small letter d with stroke":"Huruf Latin d kecil dengan garis miring","Latin small letter dotless i":"Huruf Latin i kecil tanpa titik","Latin small letter e with breve":"Huruf Latin e kecil dengan tanda singkat","Latin small letter e with caron":"Huruf Latin e kecil dengan tanda caron","Latin small letter e with dot above":"Huruf Latin e kecil dengan titik di atas","Latin small letter e with macron":"Huruf Latin e kecil dengan tanda makron","Latin small letter e with ogonek":"Huruf Latin e kecil dengan tanda ogonek","Latin small letter eng":"Huruf Latin eng kecil","Latin small letter f with hook":"Huruf Latin f kecil dengan cangkuk","Latin small letter g with breve":"Huruf Latin g kecil dengan tanda singkat","Latin small letter g with cedilla":"Huruf Latin g kecil dengan tanda sedila","Latin small letter g with circumflex":"Huruf Latin g kecil dengan tanda sirkumfleks","Latin small letter g with dot above":"Huruf Latin g kecil dengan titik di atas","Latin small letter h with circumflex":"Huruf Latin h kecil dengan tanda sirkumfleks","Latin small letter h with stroke":"Huruf Latin h kecil dengan garis miring","Latin small letter i with breve":"Huruf Latin i kecil dengan tanda singkat","Latin small letter i with macron":"Huruf Latin i kecil dengan tanda makron","Latin small letter i with ogonek":"Huruf Latin i kecil dengan tanda ogonek","Latin small letter i with tilde":"Huruf Latin i kecil dengan tanda tilde","Latin small letter j with circumflex":"Huruf Latin j kecil dengan tanda sirkumfleks","Latin small letter k with cedilla":"Huruf Latin k kecil dengan tanda sedila","Latin small letter kra":"Huruf Latin kra kecil","Latin small letter l with acute":"Huruf Latin l kecil dengan tanda tirus","Latin small letter l with caron":"Huruf Latin l kecil dengan tanda caron","Latin small letter l with cedilla":"Huruf Latin l kecil dengan tanda sedila","Latin small letter l with middle dot":"Huruf Latin l kecil dengan titik tengah","Latin small letter l with stroke":"Huruf Latin l kecil dengan garis miring","Latin small letter long s":"Huruf latin s panjang kecil","Latin small letter n preceded by apostrophe":"Huruf Latin n kecil didahului dengan koma atas","Latin small letter n with acute":"Huruf Latin n kecil dengan tanda tirus","Latin small letter n with caron":"Huruf Latin n kecil dengan tanda caron","Latin small letter n with cedilla":"Huruf Latin n kecil dengan tanda sedila","Latin small letter o with breve":"Huruf Latin o kecil dengan tanda singkat","Latin small letter o with double acute":"Huruf Latin o kecil dengan tanda tirus berkembar","Latin small letter o with macron":"Huruf Latin o kecil dengan tanda makron","Latin small letter r with acute":"Huruf Latin r kecil dengan tanda tirus","Latin small letter r with caron":"Huruf Latin r kecil dengan tanda caron","Latin small letter r with cedilla":"Huruf Latin r kecil dengan tanda sedila","Latin small letter s with acute":"Huruf Latin s kecil dengan tanda tirus","Latin small letter s with caron":"Huruf Latin s kecil dengan tanda caron","Latin small letter s with cedilla":"Huruf Latin s kecil dengan tanda sedila","Latin small letter s with circumflex":"Huruf Latin s kecil dengan tanda sirkumfleks","Latin small letter t with caron":"Huruf Latin t kecil dengan tanda caron","Latin small letter t with cedilla":"Huruf Latin t kecil dengan tanda sedila","Latin small letter t with stroke":"Huruf Latin t kecil dengan garis miring","Latin small letter u with breve":"Huruf Latin u kecil dengan tanda singkat","Latin small letter u with double acute":"Huruf Latin u kecil dengan tanda tirus berkembar","Latin small letter u with macron":"Huruf Latin u kecil dengan tanda makron","Latin small letter u with ogonek":"Huruf Latin u kecil dengan tanda ogonek","Latin small letter u with ring above":"Huruf Latin u kecil dengan bulatan di atas","Latin small letter u with tilde":"Huruf Latin u kecil dengan tanda tilde","Latin small letter w with circumflex":"Huruf Latin w kecil dengan tanda sirkumfleks","Latin small letter y with circumflex":"Huruf Latin y kecil dengan tanda sirkumfleks","Latin small letter z with acute":"Huruf Latin z kecil dengan tanda tirus","Latin small letter z with caron":"Huruf Latin z kecil dengan tanda caron","Latin small letter z with dot above":"Huruf Latin z kecil dengan titik di atas","Latin small ligature ij":"Huruf kembar Latin ij kecil","Latin small ligature oe":"Huruf kembar Latin oe kecil","Left double quotation mark":"Tanda petikan berkembar kiri","Left single quotation mark":"Tanda petikan tunggal kiri","Left-pointing double angle quotation mark":"Tanda petikan sudut ke kiri berkembar","leftwards arrow to bar":"anak panah arah kiri ke bar","leftwards dashed arrow":"anak panah bersengkang arah kiri","leftwards double arrow":"anak panah berkembar arah kiri","Less-than or equal to":"Kurang daripada atau sama dengan","Less-than sign":"Simbol kurang daripada","Lira sign":"Simbol Lira","Livre tournois sign":"Simbol Livre Tournois","Logical and":"Logik dan","Logical or":"Logik atau",Macron:"Tanda makron","Manat sign":"Simbol Manat","Mill sign":"Simbol Mill","Minus sign":"Simbol tolak","Multiplication sign":"Simbol darab","N-ary product":"Hasil per - n - an","N-ary summation":"Penghasiltambahan per - n - an",Nabla:"Nabla","Naira sign":"Simbol Naira","New sheqel sign":"Simbol Sheqel baru","Nordic mark sign":"Simbol lambang Nordik","Not an element of":"Bukan unsur bagi","Not equal to":"Tidak sama dengan","Not sign":"Bukan simbol","on with exclamation mark with left right arrow above":"pada dengan tanda seru dengan anak panah kiri kanan di atas",Overline:"Garisan atas","Paragraph sign":"Tanda perenggan","Partial differential":"Pembezaan separa","Per mille sign":"Simbol per mille","Per ten thousand sign":"Simbol per sepuluh ribu","Peseta sign":"Simbol Peseta","Peso sign":"Simbol Peso","Plus-minus sign":"Simbol tambah tolak","Pound sign":"Simbol Paun","Proportional to":"Berkadaran dengan","Question exclamation mark":"Tanda seru soal","Registered sign":"Simbol berdaftar","Reversed paragraph sign":"Tanda perenggan terbalik","Right double quotation mark":"Tanda petikan berkembar kanan","Right single quotation mark":"Tanda petikan tunggal kanan","Right-pointing double angle quotation mark":"Tanda petikan sudut ke kanan berkembar","rightwards arrow to bar":"anak panah arah kanan ke bar","rightwards dashed arrow":"anak panah bersengkang arah kanan","rightwards double arrow":"anak panah berkembar arah kanan","Ruble sign":"Simbol Ruble","Rupee sign":"Simbol Rupee","Section sign":"Simbol seksyen","Single left-pointing angle quotation mark":"Tanda petikan sudut ke kiri tunggal","Single low-9 quotation mark":"Tanda petikan rendah 9 tunggal","Single right-pointing angle quotation mark":"Tanda petikan sudut ke kanan tunggal","soon with rightwards arrow above":"tidak lama lagi dengan anak panah arah kanan di atas","Special characters":"Aksara istimewa","Spesmilo sign":"Simbol Spesmilo","Square root":"Punca kuasa","Tenge sign":"Simbol Tenge","There exists":"Wujud","Tilde operator":"Pengoperasi tilde","top with upwards arrow above":"atas dengan anak panah arah atas di atas","Trade mark sign":"Simbol tanda dagangan","Tugrik sign":"Simbol Tugrik","Turkish lira sign":"Simbol Lira Turki","Two dot leader":"Pendahulu dua titik",Union:"Penyatuan","up down arrow with base":"anak panah atas bawah dengan dasar","upwards arrow to bar":"anak panah arah atas ke bar","upwards dashed arrow":"anak panah bersengkang arah atas","upwards double arrow":"anak panah berkembar arah atas","Vulgar fraction one half":"Pecahan kasar satu per dua","Vulgar fraction one quarter":"Pecahan kasar satu per empat","Vulgar fraction three quarters":"Pecahan kasar tiga per empat","Won sign":"Simbol Won","Yen sign":"Simbol Yen"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(a){const t=a.ms=a.ms||{};t.dictionary=Object.assign(t.dictionary||{},{"Almost equal to":"Hampir sama dengan",Angle:"Sudut","Approximately equal to":"Kira-kira sama dengan","Asterisk operator":"Pengoperasi asterisk","Austral sign":"Simbol Austral","back with leftwards arrow above":"kembali dengan anak panah arah kiri di atas","Bitcoin sign":"Simbol Bitcoin","Cedi sign":"Simbol Cedi","Cent sign":"Simbol sen","Character categories":"Kategori aksara","Colon sign":"Tanda titik bertindih","Contains as member":"Terkandung sebagai anggota","Copyright sign":"Simbol hak cipta","Cruzeiro sign":"Simbol Cruzeiro","Currency sign":"Simbol mata wang","Degree sign":"Simbol darjah","Division sign":"Simbol bahagi","Dollar sign":"Simbol Dolar","Dong sign":"Simbol Dong","Double dagger":"Tanda rujuk kembar","Double exclamation mark":"Tanda seru berkembar","Double low-9 quotation mark":"Tanda petikan rendah 9 berkembar","Double question mark":"Tanda soal berkembar","downwards arrow to bar":"anak panah arah bawah ke bar","downwards dashed arrow":"anak panah bersengkang arah bawah","downwards double arrow":"anak panah berkembar arah bawah","downwards simple arrow":"anak panah mudah ke bawah","Drachma sign":"Simbol Drachma","Element of":"Unsur bagi","Em dash":"Sengkang em","Empty set":"Set kosong","En dash":"Sengkang en","end with leftwards arrow above":"tamatkan dengan anak panah arah kiri di atas","Euro sign":"Simbol Euro","Euro-currency sign":"Simbol mata wang Euro","Exclamation question mark":"Tanda soal seru","For all":"Untuk semua","Fraction slash":"Garis condong pecahan","French franc sign":"Simbol Franc Perancis","German penny sign":"Simbol Peni Jerman","Greater-than or equal to":"Lebih besar daripada atau sama dengan","Greater-than sign":"Simbol lebih besar daripada","Guarani sign":"Simbol Guarani","Horizontal ellipsis":"Elipsis Mendatar","Hryvnia sign":"Simbol Hryvnia","Identical to":"Serupa dengan","Indian rupee sign":"Simbol Rupee India",Infinity:"Infiniti",Integral:"Integral",Intersection:"Persilangan","Inverted exclamation mark":"Tanda seru terbalik","Inverted question mark":"Tanda soal terbalik","Kip sign":"Simbol Kip","Latin capital letter a with breve":"Huruf Latin a besar dengan tanda singkat","Latin capital letter a with macron":"Huruf Latin a besar dengan tanda makron","Latin capital letter a with ogonek":"Huruf Latin a besar dengan tanda ogonek","Latin capital letter c with acute":"Huruf Latin c besar dengan tanda tirus","Latin capital letter c with caron":"Huruf Latin c besar dengan tanda caron","Latin capital letter c with circumflex":"Huruf Latin c besar dengan tanda sirkumfleks","Latin capital letter c with dot above":"Huruf Latin c besar dengan titik di atas","Latin capital letter d with caron":"Huruf Latin d besar dengan tanda caron","Latin capital letter d with stroke":"Huruf Latin d besar dengan garis miring","Latin capital letter e with breve":"Huruf Latin e besar dengan tanda singkat","Latin capital letter e with caron":"Huruf Latin e besar dengan tanda caron","Latin capital letter e with dot above":"Huruf Latin e besar dengan titik di atas","Latin capital letter e with macron":"Huruf Latin e besar dengan tanda makron","Latin capital letter e with ogonek":"Huruf Latin e besar dengan tanda ogonek","Latin capital letter eng":"Huruf Latin eng besar","Latin capital letter g with breve":"Huruf Latin g besar dengan tanda singkat","Latin capital letter g with cedilla":"Huruf Latin g besar dengan tanda sedila","Latin capital letter g with circumflex":"Huruf Latin g besar dengan tanda sirkumfleks","Latin capital letter g with dot above":"Huruf Latin g besar dengan titik di atas","Latin capital letter h with circumflex":"Huruf Latin h besar dengan tanda sirkumfleks","Latin capital letter h with stroke":"Huruf Latin h besar dengan garis miring","Latin capital letter i with breve":"Huruf Latin i besar dengan tanda singkat","Latin capital letter i with dot above":"Huruf Latin i besar dengan titik di atas","Latin capital letter i with macron":"Huruf Latin i besar dengan tanda makron","Latin capital letter i with ogonek":"Huruf Latin i besar dengan tanda ogonek","Latin capital letter i with tilde":"Huruf Latin i besar dengan tanda tilde","Latin capital letter j with circumflex":"Huruf Latin j besar dengan tanda sirkumfleks","Latin capital letter k with cedilla":"Huruf Latin k besar dengan tanda sedila","Latin capital letter l with acute":"Huruf Latin l besar dengan tanda tirus","Latin capital letter l with caron":"Huruf Latin l besar dengan tanda caron","Latin capital letter l with cedilla":"Huruf Latin l besar dengan tanda sedila","Latin capital letter l with middle dot":"Huruf Latin l besar dengan titik tengah","Latin capital letter l with stroke":"Huruf Latin l besar dengan garis miring","Latin capital letter n with acute":"Huruf Latin n besar dengan tanda tirus","Latin capital letter n with caron":"Huruf Latin n besar dengan tanda caron","Latin capital letter n with cedilla":"Huruf Latin n besar dengan tanda sedila","Latin capital letter o with breve":"Huruf Latin o besar dengan tanda singkat","Latin capital letter o with double acute":"Huruf Latin o besar dengan tanda tirus berkembar","Latin capital letter o with macron":"Huruf Latin o besar dengan tanda makron","Latin capital letter r with acute":"Huruf Latin r besar dengan tanda tirus","Latin capital letter r with caron":"Huruf Latin r besar dengan tanda caron","Latin capital letter r with cedilla":"Huruf Latin r besar dengan tanda sedila","Latin capital letter s with acute":"Huruf Latin s besar dengan tanda tirus","Latin capital letter s with caron":"Huruf Latin s besar dengan tanda caron","Latin capital letter s with cedilla":"Huruf Latin s besar dengan tanda sedila","Latin capital letter s with circumflex":"Huruf Latin s besar dengan tanda sirkumfleks","Latin capital letter t with caron":"Huruf Latin t besar dengan tanda caron","Latin capital letter t with cedilla":"Huruf Latin t besar dengan tanda sedila","Latin capital letter t with stroke":"Huruf Latin t besar dengan garis miring","Latin capital letter u with breve":"Huruf Latin u besar dengan tanda singkat","Latin capital letter u with double acute":"Huruf Latin u besar dengan tanda tirus berkembar","Latin capital letter u with macron":"Huruf Latin u besar dengan tanda makron","Latin capital letter u with ogonek":"Huruf Latin u besar dengan tanda ogonek","Latin capital letter u with ring above":"Huruf Latin u besar dengan bulatan di atas","Latin capital letter u with tilde":"Huruf Latin u besar dengan tanda tilde","Latin capital letter w with circumflex":"Huruf Latin w besar dengan tanda sirkumfleks","Latin capital letter y with circumflex":"Huruf Latin y besar dengan tanda sirkumfleks","Latin capital letter y with diaeresis":"Huruf Latin y besar dengan tanda diaresis","Latin capital letter z with acute":"Huruf Latin z besar dengan tanda tirus","Latin capital letter z with caron":"Huruf Latin z besar dengan tanda caron","Latin capital letter z with dot above":"Huruf Latin z besar dengan titik di atas","Latin capital ligature ij":"Huruf kembar Latin ij besar","Latin capital ligature oe":"Huruf kembar Latin oe besar","Latin small letter a with breve":"Huruf Latin a kecil dengan tanda singkat","Latin small letter a with macron":"Huruf Latin a kecil dengan tanda makron","Latin small letter a with ogonek":"Huruf Latin a kecil dengan tanda ogonek","Latin small letter c with acute":"Huruf Latin c kecil dengan tanda tirus","Latin small letter c with caron":"Huruf Latin c kecil dengan tanda caron","Latin small letter c with circumflex":"Huruf Latin c kecil dengan tanda Sirkumfleks","Latin small letter c with dot above":"Huruf Latin c kecil dengan titik di atas","Latin small letter d with caron":"Huruf Latin d kecil dengan tanda caron","Latin small letter d with stroke":"Huruf Latin d kecil dengan garis miring","Latin small letter dotless i":"Huruf Latin i kecil tanpa titik","Latin small letter e with breve":"Huruf Latin e kecil dengan tanda singkat","Latin small letter e with caron":"Huruf Latin e kecil dengan tanda caron","Latin small letter e with dot above":"Huruf Latin e kecil dengan titik di atas","Latin small letter e with macron":"Huruf Latin e kecil dengan tanda makron","Latin small letter e with ogonek":"Huruf Latin e kecil dengan tanda ogonek","Latin small letter eng":"Huruf Latin eng kecil","Latin small letter f with hook":"Huruf Latin f kecil dengan cangkuk","Latin small letter g with breve":"Huruf Latin g kecil dengan tanda singkat","Latin small letter g with cedilla":"Huruf Latin g kecil dengan tanda sedila","Latin small letter g with circumflex":"Huruf Latin g kecil dengan tanda sirkumfleks","Latin small letter g with dot above":"Huruf Latin g kecil dengan titik di atas","Latin small letter h with circumflex":"Huruf Latin h kecil dengan tanda sirkumfleks","Latin small letter h with stroke":"Huruf Latin h kecil dengan garis miring","Latin small letter i with breve":"Huruf Latin i kecil dengan tanda singkat","Latin small letter i with macron":"Huruf Latin i kecil dengan tanda makron","Latin small letter i with ogonek":"Huruf Latin i kecil dengan tanda ogonek","Latin small letter i with tilde":"Huruf Latin i kecil dengan tanda tilde","Latin small letter j with circumflex":"Huruf Latin j kecil dengan tanda sirkumfleks","Latin small letter k with cedilla":"Huruf Latin k kecil dengan tanda sedila","Latin small letter kra":"Huruf Latin kra kecil","Latin small letter l with acute":"Huruf Latin l kecil dengan tanda tirus","Latin small letter l with caron":"Huruf Latin l kecil dengan tanda caron","Latin small letter l with cedilla":"Huruf Latin l kecil dengan tanda sedila","Latin small letter l with middle dot":"Huruf Latin l kecil dengan titik tengah","Latin small letter l with stroke":"Huruf Latin l kecil dengan garis miring","Latin small letter long s":"Huruf latin s panjang kecil","Latin small letter n preceded by apostrophe":"Huruf Latin n kecil didahului dengan koma atas","Latin small letter n with acute":"Huruf Latin n kecil dengan tanda tirus","Latin small letter n with caron":"Huruf Latin n kecil dengan tanda caron","Latin small letter n with cedilla":"Huruf Latin n kecil dengan tanda sedila","Latin small letter o with breve":"Huruf Latin o kecil dengan tanda singkat","Latin small letter o with double acute":"Huruf Latin o kecil dengan tanda tirus berkembar","Latin small letter o with macron":"Huruf Latin o kecil dengan tanda makron","Latin small letter r with acute":"Huruf Latin r kecil dengan tanda tirus","Latin small letter r with caron":"Huruf Latin r kecil dengan tanda caron","Latin small letter r with cedilla":"Huruf Latin r kecil dengan tanda sedila","Latin small letter s with acute":"Huruf Latin s kecil dengan tanda tirus","Latin small letter s with caron":"Huruf Latin s kecil dengan tanda caron","Latin small letter s with cedilla":"Huruf Latin s kecil dengan tanda sedila","Latin small letter s with circumflex":"Huruf Latin s kecil dengan tanda sirkumfleks","Latin small letter t with caron":"Huruf Latin t kecil dengan tanda caron","Latin small letter t with cedilla":"Huruf Latin t kecil dengan tanda sedila","Latin small letter t with stroke":"Huruf Latin t kecil dengan garis miring","Latin small letter u with breve":"Huruf Latin u kecil dengan tanda singkat","Latin small letter u with double acute":"Huruf Latin u kecil dengan tanda tirus berkembar","Latin small letter u with macron":"Huruf Latin u kecil dengan tanda makron","Latin small letter u with ogonek":"Huruf Latin u kecil dengan tanda ogonek","Latin small letter u with ring above":"Huruf Latin u kecil dengan bulatan di atas","Latin small letter u with tilde":"Huruf Latin u kecil dengan tanda tilde","Latin small letter w with circumflex":"Huruf Latin w kecil dengan tanda sirkumfleks","Latin small letter y with circumflex":"Huruf Latin y kecil dengan tanda sirkumfleks","Latin small letter z with acute":"Huruf Latin z kecil dengan tanda tirus","Latin small letter z with caron":"Huruf Latin z kecil dengan tanda caron","Latin small letter z with dot above":"Huruf Latin z kecil dengan titik di atas","Latin small ligature ij":"Huruf kembar Latin ij kecil","Latin small ligature oe":"Huruf kembar Latin oe kecil","Left double quotation mark":"Tanda petikan berkembar kiri","Left single quotation mark":"Tanda petikan tunggal kiri","Left-pointing double angle quotation mark":"Tanda petikan sudut ke kiri berkembar","leftwards arrow to bar":"anak panah arah kiri ke bar","leftwards dashed arrow":"anak panah bersengkang arah kiri","leftwards double arrow":"anak panah berkembar arah kiri","leftwards simple arrow":"anak panah mudah ke kiri","Less-than or equal to":"Kurang daripada atau sama dengan","Less-than sign":"Simbol kurang daripada","Lira sign":"Simbol Lira","Livre tournois sign":"Simbol Livre Tournois","Logical and":"Logik dan","Logical or":"Logik atau",Macron:"Tanda makron","Manat sign":"Simbol Manat","Mill sign":"Simbol Mill","Minus sign":"Simbol tolak","Multiplication sign":"Simbol darab","N-ary product":"Hasil per - n - an","N-ary summation":"Penghasiltambahan per - n - an",Nabla:"Nabla","Naira sign":"Simbol Naira","New sheqel sign":"Simbol Sheqel baru","Nordic mark sign":"Simbol lambang Nordik","Not an element of":"Bukan unsur bagi","Not equal to":"Tidak sama dengan","Not sign":"Bukan simbol","on with exclamation mark with left right arrow above":"pada dengan tanda seru dengan anak panah kiri kanan di atas",Overline:"Garisan atas","Paragraph sign":"Tanda perenggan","Partial differential":"Pembezaan separa","Per mille sign":"Simbol per mille","Per ten thousand sign":"Simbol per sepuluh ribu","Peseta sign":"Simbol Peseta","Peso sign":"Simbol Peso","Plus-minus sign":"Simbol tambah tolak","Pound sign":"Simbol Paun","Proportional to":"Berkadaran dengan","Question exclamation mark":"Tanda seru soal","Registered sign":"Simbol berdaftar","Reversed paragraph sign":"Tanda perenggan terbalik","Right double quotation mark":"Tanda petikan berkembar kanan","Right single quotation mark":"Tanda petikan tunggal kanan","Right-pointing double angle quotation mark":"Tanda petikan sudut ke kanan berkembar","rightwards arrow to bar":"anak panah arah kanan ke bar","rightwards dashed arrow":"anak panah bersengkang arah kanan","rightwards double arrow":"anak panah berkembar arah kanan","rightwards simple arrow":"anak panah mudah ke kanan","Ruble sign":"Simbol Ruble","Rupee sign":"Simbol Rupee","Section sign":"Simbol seksyen","Single left-pointing angle quotation mark":"Tanda petikan sudut ke kiri tunggal","Single low-9 quotation mark":"Tanda petikan rendah 9 tunggal","Single right-pointing angle quotation mark":"Tanda petikan sudut ke kanan tunggal","soon with rightwards arrow above":"tidak lama lagi dengan anak panah arah kanan di atas","Special characters":"Aksara istimewa","Spesmilo sign":"Simbol Spesmilo","Square root":"Punca kuasa","Tenge sign":"Simbol Tenge","There exists":"Wujud","Tilde operator":"Pengoperasi tilde","top with upwards arrow above":"atas dengan anak panah arah atas di atas","Trade mark sign":"Simbol tanda dagangan","Tugrik sign":"Simbol Tugrik","Turkish lira sign":"Simbol Lira Turki","Two dot leader":"Pendahulu dua titik",Union:"Penyatuan","up down arrow with base":"anak panah atas bawah dengan dasar","upwards arrow to bar":"anak panah arah atas ke bar","upwards dashed arrow":"anak panah bersengkang arah atas","upwards double arrow":"anak panah berkembar arah atas","upwards simple arrow":"anak panah mudah ke atas","Vulgar fraction one half":"Pecahan kasar satu per dua","Vulgar fraction one quarter":"Pecahan kasar satu per empat","Vulgar fraction three quarters":"Pecahan kasar tiga per empat","Won sign":"Simbol Won","Yen sign":"Simbol Yen"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/special-characters/translations/nl.js b/core/assets/vendor/ckeditor5/special-characters/translations/nl.js
index 1baaa6b57d..b3a061a07a 100644
--- a/core/assets/vendor/ckeditor5/special-characters/translations/nl.js
+++ b/core/assets/vendor/ckeditor5/special-characters/translations/nl.js
@@ -1 +1 @@
-!function(e){const t=e.nl=e.nl||{};t.dictionary=Object.assign(t.dictionary||{},{"Almost equal to":"Bijna gelijk aan",Angle:"Hoek","Approximately equal to":"Ongeveer gelijk aan","Asterisk operator":"Asterisk teken","Austral sign":"Austral teken","back with leftwards arrow above":"back met linkswijzende pijl erboven","Bitcoin sign":"Bitcoin teken","Cedi sign":"Cedi teken","Cent sign":"Cent teken","Character categories":"Karakter categorieën","Colon sign":"Colón teken","Contains as member":"Bevat als onderdeel","Copyright sign":"Copyrightteken","Cruzeiro sign":"Cruzeiro teken","Currency sign":"Valuta teken","Degree sign":"Graden teken","Division sign":"Deel teken","Dollar sign":"Dollar teken","Dong sign":"Dong teken","Double dagger":"Dubbele obelisk","Double exclamation mark":"Dubbel uitroepteken","Double low-9 quotation mark":"Dubbel laag aanhalingsteken","Double question mark":"Dubbel vraagteken","downwards arrow to bar":"benedenwijzende pijl naar streep","downwards dashed arrow":"benedenwijzende gestreepte pijl","downwards double arrow":"benedenwijzende dubbele pijl","Drachma sign":"Drachme teken","Element of":"Onderdeel van","Em dash":"Kastlijntje","Empty set":"Lege set","En dash":"Half kastlijntje","end with leftwards arrow above":"end met linkswijzende pijl erboven","Euro sign":"Euro teken","Euro-currency sign":"Euro-valuta teken","Exclamation question mark":"Uitroepteken-vraagteken","For all":"Voor alles","Fraction slash":"Breuk teken","French franc sign":"Franse frank teken","German penny sign":"Duitse penny teken","Greater-than or equal to":"Groter-dan of gelijk aan","Greater-than sign":"Groter-dan teken","Guarani sign":"Guarani teken","Horizontal ellipsis":"Horizontale ellips","Hryvnia sign":"Grivna teken","Identical to":"Gelijk aan","Indian rupee sign":"Indiaanse roepie teken",Infinity:"Infinity",Integral:"Integraal",Intersection:"Kruispunt","Inverted exclamation mark":"Omgekeerd uitroepteken","Inverted question mark":"Omgekeerd vraagteken","Kip sign":"Kip teken","Latin capital letter a with breve":"Latijnse hoofdletter a met breve","Latin capital letter a with macron":"Latijnse hoofdletter a met macron","Latin capital letter a with ogonek":"Latijnse hoofdletter a met ogonek","Latin capital letter c with acute":"Latijnse hoofdletter c met acute","Latin capital letter c with caron":"Latijnse hoofdletter c met caron","Latin capital letter c with circumflex":"Latijnse hoofdletter c met circumflex","Latin capital letter c with dot above":"Latijnse hoofdletter c met punt erboven","Latin capital letter d with caron":"Latijnse hoofdletter d met caron","Latin capital letter d with stroke":"Latijnse hoofdletter d met dwarsstreep","Latin capital letter e with breve":"Latijnse hoofdletter e met breve","Latin capital letter e with caron":"Latijnse hoofdletter e met haček","Latin capital letter e with dot above":"Latijnse hoofdletter e met punt erboven","Latin capital letter e with macron":"Latijnse hoofdletter e met macron","Latin capital letter e with ogonek":"Latijnse hoofdletter e met ogonek","Latin capital letter eng":"Latijnse hoofdletter eng","Latin capital letter g with breve":"Latijnse hoofdletter g met breve","Latin capital letter g with cedilla":"Latijnse hoofdletter g met cedille","Latin capital letter g with circumflex":"Latijnse hoofdletter g met circumflex","Latin capital letter g with dot above":"Latijnse hoofdletter g met punt erboven","Latin capital letter h with circumflex":"Latijnse hoofdletter h met circumflex","Latin capital letter h with stroke":"Latijnse hoofdletter h met macron\n","Latin capital letter i with breve":"Latijnse hoofdletter i met breve","Latin capital letter i with dot above":"Latijnse hoofdletter i met punt erboven","Latin capital letter i with macron":"Latijnse hoofdletter i met macron","Latin capital letter i with ogonek":"Latijnse hoofdletter i met ogonek","Latin capital letter i with tilde":"Latijnse hoofdletter i met tilde","Latin capital letter j with circumflex":"Latijnse hoofdletter j met circumflex","Latin capital letter k with cedilla":"Latijnse hoofdletter k met cedille","Latin capital letter l with acute":"Latijnse hoofdletter l met accent aigu","Latin capital letter l with caron":"Latijnse hoofdletter l met haček","Latin capital letter l with cedilla":"Latijnse hoofdletter l met cedille","Latin capital letter l with middle dot":"Latijnse hoofdletter l met punt in het midden","Latin capital letter l with stroke":"Latijnse hoofdletter l met dwarsstreep","Latin capital letter n with acute":"Latijnse hoofdletter n met accent aigu","Latin capital letter n with caron":"Latijnse hoofdletter n met haček","Latin capital letter n with cedilla":"Latijnse hoofdletter n met cedille","Latin capital letter o with breve":"Latijnse hoofdletter o met breve","Latin capital letter o with double acute":"Latijnse hoofdletter o met dubbel accent aigu","Latin capital letter o with macron":"Latijnse hoofdletter o met macron","Latin capital letter r with acute":"Latijnse hoofdletter r met accent aigu","Latin capital letter r with caron":"Latijnse hoofdletter r met haček","Latin capital letter r with cedilla":"Latijnse hoofdletter r met cedille","Latin capital letter s with acute":"Latijnse hoofdletter s met accent aigu","Latin capital letter s with caron":"Latijnse hoofdletter s met haček","Latin capital letter s with cedilla":"Latijnse hoofdletter s met cedille","Latin capital letter s with circumflex":"Latijnse hoofdletter s met circumflex","Latin capital letter t with caron":"Latijnse hoofdletter t met haček","Latin capital letter t with cedilla":"Latijnse hoofdletter t met cedille","Latin capital letter t with stroke":"Latijnse hoofdletter t met dwarsstreep","Latin capital letter u with breve":"Latijnse hoofdletter u met breve","Latin capital letter u with double acute":"Latijnse hoofdletter u met dubbele accent aigu","Latin capital letter u with macron":"Latijnse hoofdletter u met macron","Latin capital letter u with ogonek":"Latijnse hoofdletter u met ogonek","Latin capital letter u with ring above":"Latijnse hoofdletter u met ring erboven","Latin capital letter u with tilde":"Latijnse hoofdletter u met tilde","Latin capital letter w with circumflex":"Latijnse hoofdletter w met circumflex","Latin capital letter y with circumflex":"Latijnse hoofdletter y met circumflex","Latin capital letter y with diaeresis":"Latijnse hoofdletter y met trema","Latin capital letter z with acute":"Latijnse hoofdletter z met accent aigu","Latin capital letter z with caron":"Latijnse hoofdletter z met haček","Latin capital letter z with dot above":"Latijnse hoofdletter z met punt erboven","Latin capital ligature ij":"Latijnse hoofdletter ligatuur ij","Latin capital ligature oe":"Latijnse hoofdletter ligatuur oe","Latin small letter a with breve":"Latijnse kleine letter a met breve","Latin small letter a with macron":"Latijnse kleine letter a met macron","Latin small letter a with ogonek":"Latijnse kleine letter a met ogonek","Latin small letter c with acute":"Latijnse kleine letter c met acute","Latin small letter c with caron":"Latijnse kleine letter c met caron","Latin small letter c with circumflex":"Latijnse kleine letter c met circumflex","Latin small letter c with dot above":"Latijnse kleine letter met punt erboven","Latin small letter d with caron":"Latijnse kleine letter d met caron","Latin small letter d with stroke":"Latijnse kleine letter d met dwarsstreep","Latin small letter dotless i":"Latijnse kleine letter i zonder punt","Latin small letter e with breve":"Latijnse kleine letter e met breve","Latin small letter e with caron":"Latijnse kleine letter e met haček","Latin small letter e with dot above":"Latijnse kleine letter e met punt erboven","Latin small letter e with macron":"Latijnse kleine letter e met macron","Latin small letter e with ogonek":"Latijnse kleine letter e met ogonek","Latin small letter eng":"Latijnse kleine letter eng","Latin small letter f with hook":"Latijnse kleine letter f met hoek","Latin small letter g with breve":"Latijnse kleine letter g met breve","Latin small letter g with cedilla":"Latijnse kleine letter g met cedille","Latin small letter g with circumflex":"Latijnse kleine letter g met circumflex","Latin small letter g with dot above":"Latijnse kleine letter g met punt erboven","Latin small letter h with circumflex":"Latijnse kleine letter h met circumflex","Latin small letter h with stroke":"Latijnse kleine letter h met macron","Latin small letter i with breve":"Latijnse kleine letter i met breve","Latin small letter i with macron":"Latijnse kleine letter i met macron","Latin small letter i with ogonek":"Latijnse kleine letter i met ogonek","Latin small letter i with tilde":"Latijnse kleine letter i met tilde","Latin small letter j with circumflex":"Latijnse kleine letter j met circumflex","Latin small letter k with cedilla":"Latijnse kleine letter k met cedille","Latin small letter kra":"Latijnse kleine letter kra","Latin small letter l with acute":"Latijnse kleine letter l met accent aigu","Latin small letter l with caron":"Latijnse kleine letter l met haček","Latin small letter l with cedilla":"Latijnse kleine letter l met cedille","Latin small letter l with middle dot":"Latijnse kleine letter l met punt in het midden","Latin small letter l with stroke":"Latijnse kleine letter l met dwarsstreep","Latin small letter long s":"Latijnse kleine letter lange s","Latin small letter n preceded by apostrophe":"Latijnse kleine letter n voorafgegaan door apostrof","Latin small letter n with acute":"Latijnse kleine letter n met accent aigu","Latin small letter n with caron":"Latijnse kleine letter n met haček","Latin small letter n with cedilla":"Latijnse kleine letter n met cedille","Latin small letter o with breve":"Latijnse kleine letter o met breve","Latin small letter o with double acute":"Latijnse kleine letter o met dubbel accent aigu","Latin small letter o with macron":"Latijnse kleine letter o met macron","Latin small letter r with acute":"Latijnse kleine letter r met accent aigu","Latin small letter r with caron":"Latijnse kleine letter r met haček","Latin small letter r with cedilla":"Latijnse kleine letter r met cedille","Latin small letter s with acute":"Latijnse kleine letter s met accent aigu","Latin small letter s with caron":"Latijnse kleine letter s met haček","Latin small letter s with cedilla":"Latijnse kleine letter s met cedille","Latin small letter s with circumflex":"Latijnse kleine letter s met circumflex","Latin small letter t with caron":"Latijnse kleine letter t met haček","Latin small letter t with cedilla":"Latijnse kleine letter t met cedille","Latin small letter t with stroke":"Latijnse kleine letter t met dwarsstreep","Latin small letter u with breve":"Latijnse kleine letter u met breve","Latin small letter u with double acute":"Latijnse kleine letter u met dubbele accent aigu","Latin small letter u with macron":"Latijnse kleine letter u met macron","Latin small letter u with ogonek":"Latijnse kleine letter u met ogonek","Latin small letter u with ring above":"Latijnse kleine letter u met ring erboven","Latin small letter u with tilde":"Latijnse kleine letter u met tilde","Latin small letter w with circumflex":"Latijnse kleine letter w met circumflex","Latin small letter y with circumflex":"Latijnse kleine letter y met circumflex","Latin small letter z with acute":"Latijnse kleine letter z met accent aigu","Latin small letter z with caron":"Latijnse kleine letter z met haček","Latin small letter z with dot above":"Latijnse kleine letter z met punt erboven","Latin small ligature ij":"Latijnse kleine ligatuur ij","Latin small ligature oe":"Latijnse kleine ligatuur oe","Left double quotation mark":"Linker dubbel aanhalingsteken","Left single quotation mark":"Linker enkelvoudig aanhalingsteken","Left-pointing double angle quotation mark":"Naar links wijzende guillemet","leftwards arrow to bar":"linkswijzende pijl naar streep","leftwards dashed arrow":"linkswijzende gestreepte pijl","leftwards double arrow":"linkswijzende dubbele pijl","Less-than or equal to":"Kleiner-dan of gelijk aan","Less-than sign":"Kleiner-dan teken","Lira sign":"Lira teken","Livre tournois sign":"Livre tournois teken","Logical and":"Logische en","Logical or":"Logische of",Macron:"Makron","Manat sign":"Manat teken","Mill sign":"Mill teken","Minus sign":"Min teken","Multiplication sign":"Vermenigvuldigingsteken","N-ary product":"N-ary product","N-ary summation":"N-ary sommatie",Nabla:"Nabla","Naira sign":"Naira teken","New sheqel sign":"Nieuwe sjekel teken","Nordic mark sign":"Noorse mark teken","Not an element of":"Geen onderdeel van","Not equal to":"Niet gelijk aan","Not sign":"Niet teken","on with exclamation mark with left right arrow above":"on met uitroepteken met links rechts pijl erboven",Overline:"Overline","Paragraph sign":"Paragraaf teken","Partial differential":"Gedeeltelijk differentieel","Per mille sign":"Promilleteken","Per ten thousand sign":"Basispunt","Peseta sign":"Peseta teken","Peso sign":"Peso teken","Plus-minus sign":"Plus-minus teken","Pound sign":"Pond teken","Proportional to":"Verhoudend tot","Question exclamation mark":"Vraagteken-uitroepteken","Registered sign":"Geregistreerd handelsmerkteken","Reversed paragraph sign":"Omgekeerd paragraaf teken","Right double quotation mark":"Rechter dubbel aanhalingsteken","Right single quotation mark":"Rechter enkelvoudig aanhalingsteken","Right-pointing double angle quotation mark":"Naar rechts wijzende guillemet","rightwards arrow to bar":"rechtswijzende pijl naar streep","rightwards dashed arrow":"rechtswijzende gestreepte pijl","rightwards double arrow":"rechtswijzende dubbele pijl","Ruble sign":"Roebel teken","Rupee sign":"Roepie teken","Section sign":"Paragraafsymbool","Single left-pointing angle quotation mark":"Enkel naar links wijzend punthaakje","Single low-9 quotation mark":"Enkelvoudig laag aanhalingsteken","Single right-pointing angle quotation mark":"Enkel naar rechts wijzend punthaakje","soon with rightwards arrow above":"soon met rechtswijzende pijl erboven","Special characters":"Speciale karakters","Spesmilo sign":"Spesmilo teken","Square root":"Vierkantswortel","Tenge sign":"Tenge teken","There exists":"Er bestaat","Tilde operator":"Tidle teken","top with upwards arrow above":"top met bovenwijzende pijl erboven","Trade mark sign":"Handelsmerkteken","Tugrik sign":"Tugrik teken","Turkish lira sign":"Turkse lira teken","Two dot leader":"Dubbele leidende punt",Union:"Unie","up down arrow with base":"boven beneden pijl met streep","upwards arrow to bar":"bovenwijzende pijl naar streep","upwards dashed arrow":"bovenwijzende gestreepte pijl","upwards double arrow":"bovenwijzende dubbele pijl","Vulgar fraction one half":"Gewone breuk een half","Vulgar fraction one quarter":"Gewone breuk een kwart","Vulgar fraction three quarters":"Gewone breuk driekwart","Won sign":"Won teken","Yen sign":"Yen teken"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(e){const t=e.nl=e.nl||{};t.dictionary=Object.assign(t.dictionary||{},{"Almost equal to":"Bijna gelijk aan",Angle:"Hoek","Approximately equal to":"Ongeveer gelijk aan","Asterisk operator":"Asterisk teken","Austral sign":"Austral teken","back with leftwards arrow above":"back met linkswijzende pijl erboven","Bitcoin sign":"Bitcoin teken","Cedi sign":"Cedi teken","Cent sign":"Cent teken","Character categories":"Karakter categorieën","Colon sign":"Colón teken","Contains as member":"Bevat als onderdeel","Copyright sign":"Copyrightteken","Cruzeiro sign":"Cruzeiro teken","Currency sign":"Valuta teken","Degree sign":"Graden teken","Division sign":"Deel teken","Dollar sign":"Dollar teken","Dong sign":"Dong teken","Double dagger":"Dubbele obelisk","Double exclamation mark":"Dubbel uitroepteken","Double low-9 quotation mark":"Dubbel laag aanhalingsteken","Double question mark":"Dubbel vraagteken","downwards arrow to bar":"benedenwijzende pijl naar streep","downwards dashed arrow":"benedenwijzende gestreepte pijl","downwards double arrow":"benedenwijzende dubbele pijl","downwards simple arrow":"simpele pijl naar beneden","Drachma sign":"Drachme teken","Element of":"Onderdeel van","Em dash":"Kastlijntje","Empty set":"Lege set","En dash":"Half kastlijntje","end with leftwards arrow above":"end met linkswijzende pijl erboven","Euro sign":"Euro teken","Euro-currency sign":"Euro-valuta teken","Exclamation question mark":"Uitroepteken-vraagteken","For all":"Voor alles","Fraction slash":"Breuk teken","French franc sign":"Franse frank teken","German penny sign":"Duitse penny teken","Greater-than or equal to":"Groter-dan of gelijk aan","Greater-than sign":"Groter-dan teken","Guarani sign":"Guarani teken","Horizontal ellipsis":"Horizontale ellips","Hryvnia sign":"Grivna teken","Identical to":"Gelijk aan","Indian rupee sign":"Indiaanse roepie teken",Infinity:"Infinity",Integral:"Integraal",Intersection:"Kruispunt","Inverted exclamation mark":"Omgekeerd uitroepteken","Inverted question mark":"Omgekeerd vraagteken","Kip sign":"Kip teken","Latin capital letter a with breve":"Latijnse hoofdletter a met breve","Latin capital letter a with macron":"Latijnse hoofdletter a met macron","Latin capital letter a with ogonek":"Latijnse hoofdletter a met ogonek","Latin capital letter c with acute":"Latijnse hoofdletter c met acute","Latin capital letter c with caron":"Latijnse hoofdletter c met caron","Latin capital letter c with circumflex":"Latijnse hoofdletter c met circumflex","Latin capital letter c with dot above":"Latijnse hoofdletter c met punt erboven","Latin capital letter d with caron":"Latijnse hoofdletter d met caron","Latin capital letter d with stroke":"Latijnse hoofdletter d met dwarsstreep","Latin capital letter e with breve":"Latijnse hoofdletter e met breve","Latin capital letter e with caron":"Latijnse hoofdletter e met haček","Latin capital letter e with dot above":"Latijnse hoofdletter e met punt erboven","Latin capital letter e with macron":"Latijnse hoofdletter e met macron","Latin capital letter e with ogonek":"Latijnse hoofdletter e met ogonek","Latin capital letter eng":"Latijnse hoofdletter eng","Latin capital letter g with breve":"Latijnse hoofdletter g met breve","Latin capital letter g with cedilla":"Latijnse hoofdletter g met cedille","Latin capital letter g with circumflex":"Latijnse hoofdletter g met circumflex","Latin capital letter g with dot above":"Latijnse hoofdletter g met punt erboven","Latin capital letter h with circumflex":"Latijnse hoofdletter h met circumflex","Latin capital letter h with stroke":"Latijnse hoofdletter h met macron\n","Latin capital letter i with breve":"Latijnse hoofdletter i met breve","Latin capital letter i with dot above":"Latijnse hoofdletter i met punt erboven","Latin capital letter i with macron":"Latijnse hoofdletter i met macron","Latin capital letter i with ogonek":"Latijnse hoofdletter i met ogonek","Latin capital letter i with tilde":"Latijnse hoofdletter i met tilde","Latin capital letter j with circumflex":"Latijnse hoofdletter j met circumflex","Latin capital letter k with cedilla":"Latijnse hoofdletter k met cedille","Latin capital letter l with acute":"Latijnse hoofdletter l met accent aigu","Latin capital letter l with caron":"Latijnse hoofdletter l met haček","Latin capital letter l with cedilla":"Latijnse hoofdletter l met cedille","Latin capital letter l with middle dot":"Latijnse hoofdletter l met punt in het midden","Latin capital letter l with stroke":"Latijnse hoofdletter l met dwarsstreep","Latin capital letter n with acute":"Latijnse hoofdletter n met accent aigu","Latin capital letter n with caron":"Latijnse hoofdletter n met haček","Latin capital letter n with cedilla":"Latijnse hoofdletter n met cedille","Latin capital letter o with breve":"Latijnse hoofdletter o met breve","Latin capital letter o with double acute":"Latijnse hoofdletter o met dubbel accent aigu","Latin capital letter o with macron":"Latijnse hoofdletter o met macron","Latin capital letter r with acute":"Latijnse hoofdletter r met accent aigu","Latin capital letter r with caron":"Latijnse hoofdletter r met haček","Latin capital letter r with cedilla":"Latijnse hoofdletter r met cedille","Latin capital letter s with acute":"Latijnse hoofdletter s met accent aigu","Latin capital letter s with caron":"Latijnse hoofdletter s met haček","Latin capital letter s with cedilla":"Latijnse hoofdletter s met cedille","Latin capital letter s with circumflex":"Latijnse hoofdletter s met circumflex","Latin capital letter t with caron":"Latijnse hoofdletter t met haček","Latin capital letter t with cedilla":"Latijnse hoofdletter t met cedille","Latin capital letter t with stroke":"Latijnse hoofdletter t met dwarsstreep","Latin capital letter u with breve":"Latijnse hoofdletter u met breve","Latin capital letter u with double acute":"Latijnse hoofdletter u met dubbele accent aigu","Latin capital letter u with macron":"Latijnse hoofdletter u met macron","Latin capital letter u with ogonek":"Latijnse hoofdletter u met ogonek","Latin capital letter u with ring above":"Latijnse hoofdletter u met ring erboven","Latin capital letter u with tilde":"Latijnse hoofdletter u met tilde","Latin capital letter w with circumflex":"Latijnse hoofdletter w met circumflex","Latin capital letter y with circumflex":"Latijnse hoofdletter y met circumflex","Latin capital letter y with diaeresis":"Latijnse hoofdletter y met trema","Latin capital letter z with acute":"Latijnse hoofdletter z met accent aigu","Latin capital letter z with caron":"Latijnse hoofdletter z met haček","Latin capital letter z with dot above":"Latijnse hoofdletter z met punt erboven","Latin capital ligature ij":"Latijnse hoofdletter ligatuur ij","Latin capital ligature oe":"Latijnse hoofdletter ligatuur oe","Latin small letter a with breve":"Latijnse kleine letter a met breve","Latin small letter a with macron":"Latijnse kleine letter a met macron","Latin small letter a with ogonek":"Latijnse kleine letter a met ogonek","Latin small letter c with acute":"Latijnse kleine letter c met acute","Latin small letter c with caron":"Latijnse kleine letter c met caron","Latin small letter c with circumflex":"Latijnse kleine letter c met circumflex","Latin small letter c with dot above":"Latijnse kleine letter met punt erboven","Latin small letter d with caron":"Latijnse kleine letter d met caron","Latin small letter d with stroke":"Latijnse kleine letter d met dwarsstreep","Latin small letter dotless i":"Latijnse kleine letter i zonder punt","Latin small letter e with breve":"Latijnse kleine letter e met breve","Latin small letter e with caron":"Latijnse kleine letter e met haček","Latin small letter e with dot above":"Latijnse kleine letter e met punt erboven","Latin small letter e with macron":"Latijnse kleine letter e met macron","Latin small letter e with ogonek":"Latijnse kleine letter e met ogonek","Latin small letter eng":"Latijnse kleine letter eng","Latin small letter f with hook":"Latijnse kleine letter f met hoek","Latin small letter g with breve":"Latijnse kleine letter g met breve","Latin small letter g with cedilla":"Latijnse kleine letter g met cedille","Latin small letter g with circumflex":"Latijnse kleine letter g met circumflex","Latin small letter g with dot above":"Latijnse kleine letter g met punt erboven","Latin small letter h with circumflex":"Latijnse kleine letter h met circumflex","Latin small letter h with stroke":"Latijnse kleine letter h met macron","Latin small letter i with breve":"Latijnse kleine letter i met breve","Latin small letter i with macron":"Latijnse kleine letter i met macron","Latin small letter i with ogonek":"Latijnse kleine letter i met ogonek","Latin small letter i with tilde":"Latijnse kleine letter i met tilde","Latin small letter j with circumflex":"Latijnse kleine letter j met circumflex","Latin small letter k with cedilla":"Latijnse kleine letter k met cedille","Latin small letter kra":"Latijnse kleine letter kra","Latin small letter l with acute":"Latijnse kleine letter l met accent aigu","Latin small letter l with caron":"Latijnse kleine letter l met haček","Latin small letter l with cedilla":"Latijnse kleine letter l met cedille","Latin small letter l with middle dot":"Latijnse kleine letter l met punt in het midden","Latin small letter l with stroke":"Latijnse kleine letter l met dwarsstreep","Latin small letter long s":"Latijnse kleine letter lange s","Latin small letter n preceded by apostrophe":"Latijnse kleine letter n voorafgegaan door apostrof","Latin small letter n with acute":"Latijnse kleine letter n met accent aigu","Latin small letter n with caron":"Latijnse kleine letter n met haček","Latin small letter n with cedilla":"Latijnse kleine letter n met cedille","Latin small letter o with breve":"Latijnse kleine letter o met breve","Latin small letter o with double acute":"Latijnse kleine letter o met dubbel accent aigu","Latin small letter o with macron":"Latijnse kleine letter o met macron","Latin small letter r with acute":"Latijnse kleine letter r met accent aigu","Latin small letter r with caron":"Latijnse kleine letter r met haček","Latin small letter r with cedilla":"Latijnse kleine letter r met cedille","Latin small letter s with acute":"Latijnse kleine letter s met accent aigu","Latin small letter s with caron":"Latijnse kleine letter s met haček","Latin small letter s with cedilla":"Latijnse kleine letter s met cedille","Latin small letter s with circumflex":"Latijnse kleine letter s met circumflex","Latin small letter t with caron":"Latijnse kleine letter t met haček","Latin small letter t with cedilla":"Latijnse kleine letter t met cedille","Latin small letter t with stroke":"Latijnse kleine letter t met dwarsstreep","Latin small letter u with breve":"Latijnse kleine letter u met breve","Latin small letter u with double acute":"Latijnse kleine letter u met dubbele accent aigu","Latin small letter u with macron":"Latijnse kleine letter u met macron","Latin small letter u with ogonek":"Latijnse kleine letter u met ogonek","Latin small letter u with ring above":"Latijnse kleine letter u met ring erboven","Latin small letter u with tilde":"Latijnse kleine letter u met tilde","Latin small letter w with circumflex":"Latijnse kleine letter w met circumflex","Latin small letter y with circumflex":"Latijnse kleine letter y met circumflex","Latin small letter z with acute":"Latijnse kleine letter z met accent aigu","Latin small letter z with caron":"Latijnse kleine letter z met haček","Latin small letter z with dot above":"Latijnse kleine letter z met punt erboven","Latin small ligature ij":"Latijnse kleine ligatuur ij","Latin small ligature oe":"Latijnse kleine ligatuur oe","Left double quotation mark":"Linker dubbel aanhalingsteken","Left single quotation mark":"Linker enkelvoudig aanhalingsteken","Left-pointing double angle quotation mark":"Naar links wijzende guillemet","leftwards arrow to bar":"linkswijzende pijl naar streep","leftwards dashed arrow":"linkswijzende gestreepte pijl","leftwards double arrow":"linkswijzende dubbele pijl","leftwards simple arrow":"simpele pijl naar links","Less-than or equal to":"Kleiner-dan of gelijk aan","Less-than sign":"Kleiner-dan teken","Lira sign":"Lira teken","Livre tournois sign":"Livre tournois teken","Logical and":"Logische en","Logical or":"Logische of",Macron:"Makron","Manat sign":"Manat teken","Mill sign":"Mill teken","Minus sign":"Min teken","Multiplication sign":"Vermenigvuldigingsteken","N-ary product":"N-ary product","N-ary summation":"N-ary sommatie",Nabla:"Nabla","Naira sign":"Naira teken","New sheqel sign":"Nieuwe sjekel teken","Nordic mark sign":"Noorse mark teken","Not an element of":"Geen onderdeel van","Not equal to":"Niet gelijk aan","Not sign":"Niet teken","on with exclamation mark with left right arrow above":"on met uitroepteken met links rechts pijl erboven",Overline:"Overline","Paragraph sign":"Paragraaf teken","Partial differential":"Gedeeltelijk differentieel","Per mille sign":"Promilleteken","Per ten thousand sign":"Basispunt","Peseta sign":"Peseta teken","Peso sign":"Peso teken","Plus-minus sign":"Plus-minus teken","Pound sign":"Pond teken","Proportional to":"Verhoudend tot","Question exclamation mark":"Vraagteken-uitroepteken","Registered sign":"Geregistreerd handelsmerkteken","Reversed paragraph sign":"Omgekeerd paragraaf teken","Right double quotation mark":"Rechter dubbel aanhalingsteken","Right single quotation mark":"Rechter enkelvoudig aanhalingsteken","Right-pointing double angle quotation mark":"Naar rechts wijzende guillemet","rightwards arrow to bar":"rechtswijzende pijl naar streep","rightwards dashed arrow":"rechtswijzende gestreepte pijl","rightwards double arrow":"rechtswijzende dubbele pijl","rightwards simple arrow":"simpele pijl naar rechts","Ruble sign":"Roebel teken","Rupee sign":"Roepie teken","Section sign":"Paragraafsymbool","Single left-pointing angle quotation mark":"Enkel naar links wijzend punthaakje","Single low-9 quotation mark":"Enkelvoudig laag aanhalingsteken","Single right-pointing angle quotation mark":"Enkel naar rechts wijzend punthaakje","soon with rightwards arrow above":"soon met rechtswijzende pijl erboven","Special characters":"Speciale karakters","Spesmilo sign":"Spesmilo teken","Square root":"Vierkantswortel","Tenge sign":"Tenge teken","There exists":"Er bestaat","Tilde operator":"Tidle teken","top with upwards arrow above":"top met bovenwijzende pijl erboven","Trade mark sign":"Handelsmerkteken","Tugrik sign":"Tugrik teken","Turkish lira sign":"Turkse lira teken","Two dot leader":"Dubbele leidende punt",Union:"Unie","up down arrow with base":"boven beneden pijl met streep","upwards arrow to bar":"bovenwijzende pijl naar streep","upwards dashed arrow":"bovenwijzende gestreepte pijl","upwards double arrow":"bovenwijzende dubbele pijl","upwards simple arrow":"simpele pijl naar boven","Vulgar fraction one half":"Gewone breuk een half","Vulgar fraction one quarter":"Gewone breuk een kwart","Vulgar fraction three quarters":"Gewone breuk driekwart","Won sign":"Won teken","Yen sign":"Yen teken"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/special-characters/translations/no.js b/core/assets/vendor/ckeditor5/special-characters/translations/no.js
index d6b7cd03e6..73bac2f003 100644
--- a/core/assets/vendor/ckeditor5/special-characters/translations/no.js
+++ b/core/assets/vendor/ckeditor5/special-characters/translations/no.js
@@ -1 +1 @@
-!function(t){const e=t.no=t.no||{};e.dictionary=Object.assign(e.dictionary||{},{"Almost equal to":"Nesten lik",Angle:"Vinkel","Approximately equal to":"Omtrent ik","Asterisk operator":"Asteriskoperatør","Austral sign":"Australtegn","back with leftwards arrow above":"Tilbake med pil mot venstre over","Bitcoin sign":"Bitcoinsymbol","Cedi sign":"Ceditegn","Cent sign":"Cent-tegn","Character categories":"Karakterkategorier","Colon sign":"Kolon","Contains as member":"Inneholder som medlem","Copyright sign":"Opphavsrettstegn","Cruzeiro sign":"Cruzeirotegn","Currency sign":"Valutasymbol","Degree sign":"Grade","Division sign":"Deletegn","Dollar sign":"Dollartegn","Dong sign":"Dongtegn","Double dagger":"Dobbel dolk","Double exclamation mark":"Dobbelt utropstegn","Double low-9 quotation mark":"Dobbelt lav-9-anførselstegn","Double question mark":"Dobbelt spørsmålstegn","downwards arrow to bar":"Pil nedover til strek","downwards dashed arrow":"Stiplet pil nedover","downwards double arrow":"Dobbel pil nedover","Drachma sign":"Drakmetegn","Element of":"Element av","Em dash":"Em-strek","Empty set":"Tomt sett","En dash":"En-strek","end with leftwards arrow above":"Avslutt med pil mot venstre over","Euro sign":"Eurotegn","Euro-currency sign":"Valutasymbol for Euro","Exclamation question mark":"Utrops-spørsmålstegn","For all":"For alle","Fraction slash":"Brøkstrek","French franc sign":"Valutasymbol for franske franc","German penny sign":"Tysk øretegn","Greater-than or equal to":"Stø","Greater-than sign":"Mer enn-tegn","Guarani sign":"Guaranitegn","Horizontal ellipsis":"Horisontal ellipse","Hryvnia sign":"Hryvniategn","Identical to":"Identisk til","Indian rupee sign":"Indisk rupitegn",Infinity:"Uendelig",Integral:"Integrert",Intersection:"Kryss","Inverted exclamation mark":"Invertert utropstegn","Inverted question mark":"Invertert spørsmålstegn","Kip sign":"Kiptegn","Latin capital letter a with breve":"Latinsk stor a med breve","Latin capital letter a with macron":"Latinsk stor a med makron ","Latin capital letter a with ogonek":"Latinsk stor a med kvist","Latin capital letter c with acute":"Latinsk stor c med akutt aksent","Latin capital letter c with caron":"Latinsk stor c med caron","Latin capital letter c with circumflex":"Latinsk stor c med cirkumfleks","Latin capital letter c with dot above":"Latinsk stor c med prikk over","Latin capital letter d with caron":"Latinsk stor d med caron","Latin capital letter d with stroke":"Latinsk stor d med strek","Latin capital letter e with breve":"Latinsk stor e med breve","Latin capital letter e with caron":"Latinsk stor e med caron","Latin capital letter e with dot above":"Latinsk stor e med prikk over","Latin capital letter e with macron":"Latinsk stor e med makron","Latin capital letter e with ogonek":"Latinsk stor e med kvist","Latin capital letter eng":"Latinsk stor eng","Latin capital letter g with breve":"Latinsk stor g med breve","Latin capital letter g with cedilla":"Latinsk stor g med cedille","Latin capital letter g with circumflex":"Latinsk stor g med cirkumfleks","Latin capital letter g with dot above":"Latinsk stor g med prikk over","Latin capital letter h with circumflex":"Latinsk stor h med cirkumfleks","Latin capital letter h with stroke":"\nLatinsk stor h med stek","Latin capital letter i with breve":"Latinsk stor i med breve","Latin capital letter i with dot above":"Latinsk stor i med prikk over ","Latin capital letter i with macron":"Latinsk stor i med makron","Latin capital letter i with ogonek":"Latinsk stor i med kvist","Latin capital letter i with tilde":"Latinsk stor i med tilde","Latin capital letter j with circumflex":"Latinsk stor j med cirkumfleks","Latin capital letter k with cedilla":"Latinsk stor k med cedille","Latin capital letter l with acute":"Latinsk stor l med akutt aksent","Latin capital letter l with caron":"Latinsk stor l med caron","Latin capital letter l with cedilla":"Latinsk stor l med cedille","Latin capital letter l with middle dot":"Latinsk stor l med prikk midt på","Latin capital letter l with stroke":"Latinsk stor l med strek","Latin capital letter n with acute":"Latinsk stor n med akutt aksent","Latin capital letter n with caron":"Latinsk stor n med caron","Latin capital letter n with cedilla":"Latinsk stor n med cedille","Latin capital letter o with breve":"Latinsk stor o med breve","Latin capital letter o with double acute":"Latinsk stor o med dobbel akutt aksent","Latin capital letter o with macron":"Latinsk stor o med makron","Latin capital letter r with acute":"Latinsk stor r med akutt aksent","Latin capital letter r with caron":"Latinsk stor r med caron","Latin capital letter r with cedilla":"Latinsk stor r med cedille","Latin capital letter s with acute":"Latinsk stor s med akutt aksent","Latin capital letter s with caron":"Latinsk stor s med caron","Latin capital letter s with cedilla":"Latinsk stor s med cedille","Latin capital letter s with circumflex":"Latinsk stor s med cirkumfleks","Latin capital letter t with caron":"Latinsk stor t med caron","Latin capital letter t with cedilla":"Latinsk stor t med cedille","Latin capital letter t with stroke":"Latinsk stor t med strek","Latin capital letter u with breve":"Latinsk stor u med breve","Latin capital letter u with double acute":"Latinsk stor u med dobbel akutt aksent","Latin capital letter u with macron":"Latinsk stor u med makron","Latin capital letter u with ogonek":"Latinsk stor u med kvist","Latin capital letter u with ring above":"Latinsk stor u med ring over","Latin capital letter u with tilde":"Latinsk stor u med tilde","Latin capital letter w with circumflex":"Latings stor w med cirkumfleks","Latin capital letter y with circumflex":"Latinsk stor y med cirkumfleks","Latin capital letter y with diaeresis":"Latinsk stor y med trema","Latin capital letter z with acute":"Latinsk stor z med akutt aksent","Latin capital letter z with caron":"Latinsk stor z med caron","Latin capital letter z with dot above":"Latings stor z med prikk over","Latin capital ligature ij":"Latinsk stor digraf ij","Latin capital ligature oe":"Latinsk stor difraf oe","Latin small letter a with breve":"Latinsk liten a med breve","Latin small letter a with macron":"Latinsk liten a med makron ","Latin small letter a with ogonek":"Latinsk liten a med kvist","Latin small letter c with acute":"Latinsk liten c med akutt aksent ","Latin small letter c with caron":"Latinsk liten c med caron","Latin small letter c with circumflex":"Latinsk liten c med cirkumfleks","Latin small letter c with dot above":"Latinsk liten c med prikk over","Latin small letter d with caron":"Latinsk liten d med caron","Latin small letter d with stroke":"Latinsk liten d med strek","Latin small letter dotless i":"Latinsk liten i uten prikk","Latin small letter e with breve":"Latinsk liten e med breve","Latin small letter e with caron":"Latinsk liten e med caron","Latin small letter e with dot above":"Latinsk liten e med prikk over","Latin small letter e with macron":"Latinsk liten e med makron","Latin small letter e with ogonek":"Latinsk liten e med kvist","Latin small letter eng":"Latinsk liten eng","Latin small letter f with hook":"Latinsk liten f med krok","Latin small letter g with breve":"Latinsk liten g med breve","Latin small letter g with cedilla":"Latinsk liten g med cedille ","Latin small letter g with circumflex":"Latinsk liten g med cirkumfleks","Latin small letter g with dot above":"Latinsk liten g med prikk over","Latin small letter h with circumflex":"Latinsk liten h med cirkumfleks","Latin small letter h with stroke":"Latinsk liten h med strek","Latin small letter i with breve":"Latinsk liten i med breve","Latin small letter i with macron":"Latinsk liten i med makron","Latin small letter i with ogonek":"Latinsk liten i med kvist","Latin small letter i with tilde":"Latinsk liten i med tilde","Latin small letter j with circumflex":"Latinsk liten j med cirkumfleks","Latin small letter k with cedilla":"Latinsk liten k med cedille","Latin small letter kra":"Latinsk liten kra","Latin small letter l with acute":"Latinsk liten l med akutt aksent","Latin small letter l with caron":"Latinsk liten l med caron","Latin small letter l with cedilla":"Latinsk liten l med cedille","Latin small letter l with middle dot":"Latinsk liten l med midtprikk","Latin small letter l with stroke":"Latinsk liten l med strek","Latin small letter long s":"Latinsk liten lang s","Latin small letter n preceded by apostrophe":"Latinsk liten n med apostroff foran","Latin small letter n with acute":"Latinsk liten n med akutt aksent ","Latin small letter n with caron":"Latinsk liten n med caron","Latin small letter n with cedilla":"Latinsk liten n med cedille","Latin small letter o with breve":"Latinsk liten o med breve","Latin small letter o with double acute":"Latinsk liten o med dobbel akutt aksent","Latin small letter o with macron":"Latinsk liten o med makron","Latin small letter r with acute":"Latinsk liten r med akutt aksent","Latin small letter r with caron":"Latinsk liten r med caron","Latin small letter r with cedilla":"Latinsk liten r med ceille","Latin small letter s with acute":"Latinsk liten s med akutt aksent","Latin small letter s with caron":"Latinsk liten s med caron","Latin small letter s with cedilla":"Latinsk liten s med cedille","Latin small letter s with circumflex":"Latinsk liten s med cirkumfleks","Latin small letter t with caron":"Latinsk liten t med caron","Latin small letter t with cedilla":"Latinsk liten t med cedille","Latin small letter t with stroke":"Latinsk liten t med strek","Latin small letter u with breve":"Latinsk liten u med breve","Latin small letter u with double acute":"Latinsk liten u med dobbel akutt aksent","Latin small letter u with macron":"Latinsk liten u med makron","Latin small letter u with ogonek":"Latinsk liten u med kvist","Latin small letter u with ring above":"Latinsk liten u med ring over","Latin small letter u with tilde":"Latinsk liten u med tilde","Latin small letter w with circumflex":"Latinsk liten w med cirkumfleks","Latin small letter y with circumflex":"Latinsk liten y med cirkumfleks","Latin small letter z with acute":"Latinsk liten z med akutt aksent","Latin small letter z with caron":"Latinsk liten z med caron","Latin small letter z with dot above":"Latinsk liten z med prikk over","Latin small ligature ij":"Latinsk liten digraf ik","Latin small ligature oe":"Latinsk liten digraf oe","Left double quotation mark":"Venstre dobbelt anførselstegn","Left single quotation mark":"Venstre enkelt anførselstegn","Left-pointing double angle quotation mark":"Venstrepekende dobbelvinklede anførselstegn","leftwards arrow to bar":"Pil mot venstre til strek","leftwards dashed arrow":"Stiplet pil mot venstre ","leftwards double arrow":"Dobbel pil mot venstre","Less-than or equal to":"Mindre eller lik","Less-than sign":"Mindre enn-tegn","Lira sign":"Liretegn","Livre tournois sign":"Livre tournoistegn","Logical and":"Logisk og","Logical or":"Logisk eller",Macron:"Macr","Manat sign":"Manattegn","Mill sign":"Milltegn","Minus sign":"Minustegn","Multiplication sign":"Gangetegn","N-ary product":"N-ary-produkt","N-ary summation":"N-ary-summering",Nabla:"Nabla","Naira sign":"Nairategn","New sheqel sign":"Nytt shekeltegn","Nordic mark sign":"Nordisk marktegn","Not an element of":"Ikke et element av","Not equal to":"Ikke lik","Not sign":"Ikketegn","on with exclamation mark with left right arrow above":"På med utropstegn og venstre-høyre-pil over.",Overline:"Linje over","Paragraph sign":"avsnittstegn","Partial differential":"Delvis forskjell","Per mille sign":"Per mille-tegn","Per ten thousand sign":"Per ti tusen-tegn","Peseta sign":"Pesetategn","Peso sign":"Pesotegn","Plus-minus sign":"Pluss","Pound sign":"Pundtegn","Proportional to":"Proporsjonell til","Question exclamation mark":"Spørmål-utropstegn","Registered sign":"Registrert-tegn","Reversed paragraph sign":"Reversert avsnittstegn","Right double quotation mark":"Høyre dobbelt anførselstegn","Right single quotation mark":"Høyre enkelt anførselstegn","Right-pointing double angle quotation mark":"Høyrepekende dobbelvinklede anførselstegn","rightwards arrow to bar":"Pil mot høyre til strek","rightwards dashed arrow":"Stiplet pil mot høyre","rightwards double arrow":"Dobbel pil mot høyre","Ruble sign":"Rubeltegn","Rupee sign":"Riupitegn","Section sign":"Seksjontegn","Single left-pointing angle quotation mark":"Enkelt anførselstegn mot venstre","Single low-9 quotation mark":"Enkelt lav-9-anførselstegn","Single right-pointing angle quotation mark":"Enkelt anførselstegn mot høyre","soon with rightwards arrow above":"Snart med pil mot høyre over","Special characters":"Spesialtegn","Spesmilo sign":"Spesmilotegn","Square root":"Kvadratrot","Tenge sign":"Tengetegn","There exists":"Det eksisterer","Tilde operator":"Tildeoperatør","top with upwards arrow above":"Topp med pil oppover over","Trade mark sign":"Varemerketegn","Tugrik sign":"Tugriktegn","Turkish lira sign":"Tyrkisk liretegn","Two dot leader":"To prikker leder",Union:"Union","up down arrow with base":"Pil oppover med base","upwards arrow to bar":"Pil oppover til strek ","upwards dashed arrow":"Stiplet pil oppover","upwards double arrow":"Dobbel pil opp","Vulgar fraction one half":"Vulgær brøkdel en halv","Vulgar fraction one quarter":"Vulgær brøkdel en kvart","Vulgar fraction three quarters":"Vulgær brøkdel tre kvarte","Won sign":"Wontegn","Yen sign":"Yentegn"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(t){const e=t.no=t.no||{};e.dictionary=Object.assign(e.dictionary||{},{"Almost equal to":"Nesten lik",Angle:"Vinkel","Approximately equal to":"Omtrent ik","Asterisk operator":"Asteriskoperatør","Austral sign":"Australtegn","back with leftwards arrow above":"Tilbake med pil mot venstre over","Bitcoin sign":"Bitcoinsymbol","Cedi sign":"Ceditegn","Cent sign":"Cent-tegn","Character categories":"Karakterkategorier","Colon sign":"Kolon","Contains as member":"Inneholder som medlem","Copyright sign":"Opphavsrettstegn","Cruzeiro sign":"Cruzeirotegn","Currency sign":"Valutasymbol","Degree sign":"Grade","Division sign":"Deletegn","Dollar sign":"Dollartegn","Dong sign":"Dongtegn","Double dagger":"Dobbel dolk","Double exclamation mark":"Dobbelt utropstegn","Double low-9 quotation mark":"Dobbelt lav-9-anførselstegn","Double question mark":"Dobbelt spørsmålstegn","downwards arrow to bar":"Pil nedover til strek","downwards dashed arrow":"Stiplet pil nedover","downwards double arrow":"Dobbel pil nedover","downwards simple arrow":"ned enkel pil","Drachma sign":"Drakmetegn","Element of":"Element av","Em dash":"Em-strek","Empty set":"Tomt sett","En dash":"En-strek","end with leftwards arrow above":"Avslutt med pil mot venstre over","Euro sign":"Eurotegn","Euro-currency sign":"Valutasymbol for Euro","Exclamation question mark":"Utrops-spørsmålstegn","For all":"For alle","Fraction slash":"Brøkstrek","French franc sign":"Valutasymbol for franske franc","German penny sign":"Tysk øretegn","Greater-than or equal to":"Stø","Greater-than sign":"Mer enn-tegn","Guarani sign":"Guaranitegn","Horizontal ellipsis":"Horisontal ellipse","Hryvnia sign":"Hryvniategn","Identical to":"Identisk til","Indian rupee sign":"Indisk rupitegn",Infinity:"Uendelig",Integral:"Integrert",Intersection:"Kryss","Inverted exclamation mark":"Invertert utropstegn","Inverted question mark":"Invertert spørsmålstegn","Kip sign":"Kiptegn","Latin capital letter a with breve":"Latinsk stor a med breve","Latin capital letter a with macron":"Latinsk stor a med makron ","Latin capital letter a with ogonek":"Latinsk stor a med kvist","Latin capital letter c with acute":"Latinsk stor c med akutt aksent","Latin capital letter c with caron":"Latinsk stor c med caron","Latin capital letter c with circumflex":"Latinsk stor c med cirkumfleks","Latin capital letter c with dot above":"Latinsk stor c med prikk over","Latin capital letter d with caron":"Latinsk stor d med caron","Latin capital letter d with stroke":"Latinsk stor d med strek","Latin capital letter e with breve":"Latinsk stor e med breve","Latin capital letter e with caron":"Latinsk stor e med caron","Latin capital letter e with dot above":"Latinsk stor e med prikk over","Latin capital letter e with macron":"Latinsk stor e med makron","Latin capital letter e with ogonek":"Latinsk stor e med kvist","Latin capital letter eng":"Latinsk stor eng","Latin capital letter g with breve":"Latinsk stor g med breve","Latin capital letter g with cedilla":"Latinsk stor g med cedille","Latin capital letter g with circumflex":"Latinsk stor g med cirkumfleks","Latin capital letter g with dot above":"Latinsk stor g med prikk over","Latin capital letter h with circumflex":"Latinsk stor h med cirkumfleks","Latin capital letter h with stroke":"\nLatinsk stor h med stek","Latin capital letter i with breve":"Latinsk stor i med breve","Latin capital letter i with dot above":"Latinsk stor i med prikk over ","Latin capital letter i with macron":"Latinsk stor i med makron","Latin capital letter i with ogonek":"Latinsk stor i med kvist","Latin capital letter i with tilde":"Latinsk stor i med tilde","Latin capital letter j with circumflex":"Latinsk stor j med cirkumfleks","Latin capital letter k with cedilla":"Latinsk stor k med cedille","Latin capital letter l with acute":"Latinsk stor l med akutt aksent","Latin capital letter l with caron":"Latinsk stor l med caron","Latin capital letter l with cedilla":"Latinsk stor l med cedille","Latin capital letter l with middle dot":"Latinsk stor l med prikk midt på","Latin capital letter l with stroke":"Latinsk stor l med strek","Latin capital letter n with acute":"Latinsk stor n med akutt aksent","Latin capital letter n with caron":"Latinsk stor n med caron","Latin capital letter n with cedilla":"Latinsk stor n med cedille","Latin capital letter o with breve":"Latinsk stor o med breve","Latin capital letter o with double acute":"Latinsk stor o med dobbel akutt aksent","Latin capital letter o with macron":"Latinsk stor o med makron","Latin capital letter r with acute":"Latinsk stor r med akutt aksent","Latin capital letter r with caron":"Latinsk stor r med caron","Latin capital letter r with cedilla":"Latinsk stor r med cedille","Latin capital letter s with acute":"Latinsk stor s med akutt aksent","Latin capital letter s with caron":"Latinsk stor s med caron","Latin capital letter s with cedilla":"Latinsk stor s med cedille","Latin capital letter s with circumflex":"Latinsk stor s med cirkumfleks","Latin capital letter t with caron":"Latinsk stor t med caron","Latin capital letter t with cedilla":"Latinsk stor t med cedille","Latin capital letter t with stroke":"Latinsk stor t med strek","Latin capital letter u with breve":"Latinsk stor u med breve","Latin capital letter u with double acute":"Latinsk stor u med dobbel akutt aksent","Latin capital letter u with macron":"Latinsk stor u med makron","Latin capital letter u with ogonek":"Latinsk stor u med kvist","Latin capital letter u with ring above":"Latinsk stor u med ring over","Latin capital letter u with tilde":"Latinsk stor u med tilde","Latin capital letter w with circumflex":"Latings stor w med cirkumfleks","Latin capital letter y with circumflex":"Latinsk stor y med cirkumfleks","Latin capital letter y with diaeresis":"Latinsk stor y med trema","Latin capital letter z with acute":"Latinsk stor z med akutt aksent","Latin capital letter z with caron":"Latinsk stor z med caron","Latin capital letter z with dot above":"Latings stor z med prikk over","Latin capital ligature ij":"Latinsk stor digraf ij","Latin capital ligature oe":"Latinsk stor difraf oe","Latin small letter a with breve":"Latinsk liten a med breve","Latin small letter a with macron":"Latinsk liten a med makron ","Latin small letter a with ogonek":"Latinsk liten a med kvist","Latin small letter c with acute":"Latinsk liten c med akutt aksent ","Latin small letter c with caron":"Latinsk liten c med caron","Latin small letter c with circumflex":"Latinsk liten c med cirkumfleks","Latin small letter c with dot above":"Latinsk liten c med prikk over","Latin small letter d with caron":"Latinsk liten d med caron","Latin small letter d with stroke":"Latinsk liten d med strek","Latin small letter dotless i":"Latinsk liten i uten prikk","Latin small letter e with breve":"Latinsk liten e med breve","Latin small letter e with caron":"Latinsk liten e med caron","Latin small letter e with dot above":"Latinsk liten e med prikk over","Latin small letter e with macron":"Latinsk liten e med makron","Latin small letter e with ogonek":"Latinsk liten e med kvist","Latin small letter eng":"Latinsk liten eng","Latin small letter f with hook":"Latinsk liten f med krok","Latin small letter g with breve":"Latinsk liten g med breve","Latin small letter g with cedilla":"Latinsk liten g med cedille ","Latin small letter g with circumflex":"Latinsk liten g med cirkumfleks","Latin small letter g with dot above":"Latinsk liten g med prikk over","Latin small letter h with circumflex":"Latinsk liten h med cirkumfleks","Latin small letter h with stroke":"Latinsk liten h med strek","Latin small letter i with breve":"Latinsk liten i med breve","Latin small letter i with macron":"Latinsk liten i med makron","Latin small letter i with ogonek":"Latinsk liten i med kvist","Latin small letter i with tilde":"Latinsk liten i med tilde","Latin small letter j with circumflex":"Latinsk liten j med cirkumfleks","Latin small letter k with cedilla":"Latinsk liten k med cedille","Latin small letter kra":"Latinsk liten kra","Latin small letter l with acute":"Latinsk liten l med akutt aksent","Latin small letter l with caron":"Latinsk liten l med caron","Latin small letter l with cedilla":"Latinsk liten l med cedille","Latin small letter l with middle dot":"Latinsk liten l med midtprikk","Latin small letter l with stroke":"Latinsk liten l med strek","Latin small letter long s":"Latinsk liten lang s","Latin small letter n preceded by apostrophe":"Latinsk liten n med apostroff foran","Latin small letter n with acute":"Latinsk liten n med akutt aksent ","Latin small letter n with caron":"Latinsk liten n med caron","Latin small letter n with cedilla":"Latinsk liten n med cedille","Latin small letter o with breve":"Latinsk liten o med breve","Latin small letter o with double acute":"Latinsk liten o med dobbel akutt aksent","Latin small letter o with macron":"Latinsk liten o med makron","Latin small letter r with acute":"Latinsk liten r med akutt aksent","Latin small letter r with caron":"Latinsk liten r med caron","Latin small letter r with cedilla":"Latinsk liten r med ceille","Latin small letter s with acute":"Latinsk liten s med akutt aksent","Latin small letter s with caron":"Latinsk liten s med caron","Latin small letter s with cedilla":"Latinsk liten s med cedille","Latin small letter s with circumflex":"Latinsk liten s med cirkumfleks","Latin small letter t with caron":"Latinsk liten t med caron","Latin small letter t with cedilla":"Latinsk liten t med cedille","Latin small letter t with stroke":"Latinsk liten t med strek","Latin small letter u with breve":"Latinsk liten u med breve","Latin small letter u with double acute":"Latinsk liten u med dobbel akutt aksent","Latin small letter u with macron":"Latinsk liten u med makron","Latin small letter u with ogonek":"Latinsk liten u med kvist","Latin small letter u with ring above":"Latinsk liten u med ring over","Latin small letter u with tilde":"Latinsk liten u med tilde","Latin small letter w with circumflex":"Latinsk liten w med cirkumfleks","Latin small letter y with circumflex":"Latinsk liten y med cirkumfleks","Latin small letter z with acute":"Latinsk liten z med akutt aksent","Latin small letter z with caron":"Latinsk liten z med caron","Latin small letter z with dot above":"Latinsk liten z med prikk over","Latin small ligature ij":"Latinsk liten digraf ik","Latin small ligature oe":"Latinsk liten digraf oe","Left double quotation mark":"Venstre dobbelt anførselstegn","Left single quotation mark":"Venstre enkelt anførselstegn","Left-pointing double angle quotation mark":"Venstrepekende dobbelvinklede anførselstegn","leftwards arrow to bar":"Pil mot venstre til strek","leftwards dashed arrow":"Stiplet pil mot venstre ","leftwards double arrow":"Dobbel pil mot venstre","leftwards simple arrow":"venstre enkel pil","Less-than or equal to":"Mindre eller lik","Less-than sign":"Mindre enn-tegn","Lira sign":"Liretegn","Livre tournois sign":"Livre tournoistegn","Logical and":"Logisk og","Logical or":"Logisk eller",Macron:"Macr","Manat sign":"Manattegn","Mill sign":"Milltegn","Minus sign":"Minustegn","Multiplication sign":"Gangetegn","N-ary product":"N-ary-produkt","N-ary summation":"N-ary-summering",Nabla:"Nabla","Naira sign":"Nairategn","New sheqel sign":"Nytt shekeltegn","Nordic mark sign":"Nordisk marktegn","Not an element of":"Ikke et element av","Not equal to":"Ikke lik","Not sign":"Ikketegn","on with exclamation mark with left right arrow above":"På med utropstegn og venstre-høyre-pil over.",Overline:"Linje over","Paragraph sign":"avsnittstegn","Partial differential":"Delvis forskjell","Per mille sign":"Per mille-tegn","Per ten thousand sign":"Per ti tusen-tegn","Peseta sign":"Pesetategn","Peso sign":"Pesotegn","Plus-minus sign":"Pluss","Pound sign":"Pundtegn","Proportional to":"Proporsjonell til","Question exclamation mark":"Spørmål-utropstegn","Registered sign":"Registrert-tegn","Reversed paragraph sign":"Reversert avsnittstegn","Right double quotation mark":"Høyre dobbelt anførselstegn","Right single quotation mark":"Høyre enkelt anførselstegn","Right-pointing double angle quotation mark":"Høyrepekende dobbelvinklede anførselstegn","rightwards arrow to bar":"Pil mot høyre til strek","rightwards dashed arrow":"Stiplet pil mot høyre","rightwards double arrow":"Dobbel pil mot høyre","rightwards simple arrow":"høyre enkel pil","Ruble sign":"Rubeltegn","Rupee sign":"Riupitegn","Section sign":"Seksjontegn","Single left-pointing angle quotation mark":"Enkelt anførselstegn mot venstre","Single low-9 quotation mark":"Enkelt lav-9-anførselstegn","Single right-pointing angle quotation mark":"Enkelt anførselstegn mot høyre","soon with rightwards arrow above":"Snart med pil mot høyre over","Special characters":"Spesialtegn","Spesmilo sign":"Spesmilotegn","Square root":"Kvadratrot","Tenge sign":"Tengetegn","There exists":"Det eksisterer","Tilde operator":"Tildeoperatør","top with upwards arrow above":"Topp med pil oppover over","Trade mark sign":"Varemerketegn","Tugrik sign":"Tugriktegn","Turkish lira sign":"Tyrkisk liretegn","Two dot leader":"To prikker leder",Union:"Union","up down arrow with base":"Pil oppover med base","upwards arrow to bar":"Pil oppover til strek ","upwards dashed arrow":"Stiplet pil oppover","upwards double arrow":"Dobbel pil opp","upwards simple arrow":"opp enkel pil","Vulgar fraction one half":"Vulgær brøkdel en halv","Vulgar fraction one quarter":"Vulgær brøkdel en kvart","Vulgar fraction three quarters":"Vulgær brøkdel tre kvarte","Won sign":"Wontegn","Yen sign":"Yentegn"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/special-characters/translations/pl.js b/core/assets/vendor/ckeditor5/special-characters/translations/pl.js
index 185739f7cd..8196109db1 100644
--- a/core/assets/vendor/ckeditor5/special-characters/translations/pl.js
+++ b/core/assets/vendor/ckeditor5/special-characters/translations/pl.js
@@ -1 +1 @@
-!function(a){const i=a.pl=a.pl||{};i.dictionary=Object.assign(i.dictionary||{},{"Almost equal to":"Prawie równe",Angle:"Kąt","Approximately equal to":"W przybliżeniu równe","Asterisk operator":"Operator asterysk","Austral sign":"Znak australa","back with leftwards arrow above":"do tyłu ze strzałką w lewo powyżej","Bitcoin sign":"Znak bitcoina","Cedi sign":"Znak cedi","Cent sign":"Znak centa","Character categories":"Kategorie znaków","Colon sign":"Znak colona","Contains as member":"Zawiera element","Copyright sign":"Znak praw autorskich","Cruzeiro sign":"Znak cruzeiro","Currency sign":"Znak waluty","Degree sign":"Znak stopnia","Division sign":"Znak dzielenia","Dollar sign":"Znak dolara","Dong sign":"Znak donga","Double dagger":"Podwójny sztylet","Double exclamation mark":"Podwójny wykrzyknik","Double low-9 quotation mark":"Podwójny dolny cudzysłów","Double question mark":"Podwójny pytajnik","downwards arrow to bar":"strzałka w dół do belki","downwards dashed arrow":"przerywana strzałka w dół","downwards double arrow":"podwójna strzałka w dół","Drachma sign":"Znak drachmy","Element of":"Należy do","Em dash":"Pauza","Empty set":"Zbiór pusty","En dash":"Półpauza","end with leftwards arrow above":"koniec ze strzałką w lewo powyżej","Euro sign":"Znak euro","Euro-currency sign":"Znak euro","Exclamation question mark":"Wykrzyknik z pytajnikiem","For all":"Kwantyfikator ogólny","Fraction slash":"Kreska ułamkowa","French franc sign":"Znak franka francuskiego","German penny sign":"Znak feniga","Greater-than or equal to":"Znak większe niż lub równe","Greater-than sign":"Znak większości","Guarani sign":"Znak guarani","Horizontal ellipsis":"Wielokropek poziomy","Hryvnia sign":"Znak hrywny","Identical to":"Identyczne","Indian rupee sign":"Znak rupii indyjskiej",Infinity:"Nieskończoność",Integral:"Całka",Intersection:"Część wspólna","Inverted exclamation mark":"Odwrócony wykrzyknik","Inverted question mark":"Odwrócony pytajnik","Kip sign":"Znak kipa","Latin capital letter a with breve":"Łacińska wielka litera a z łuczkiem","Latin capital letter a with macron":"Łacińska wielka litera a z makronem","Latin capital letter a with ogonek":"Łacińska wielka litera a z ogonkiem","Latin capital letter c with acute":"Łacińska wielka litera c z kreską","Latin capital letter c with caron":"Łacińska wielka litera c z ptaszkiem","Latin capital letter c with circumflex":"Łacińska wielka litera c z daszkiem","Latin capital letter c with dot above":"Łacińska wielka litera c z kropką powyżej","Latin capital letter d with caron":"Łacińska wielka litera d z ptaszkiem","Latin capital letter d with stroke":"Łacińska wielka litera d z przekreśleniem","Latin capital letter e with breve":"Łacińska wielka litera e z łuczkiem","Latin capital letter e with caron":"Łacińska wielka litera e z ptaszkiem","Latin capital letter e with dot above":"Łacińska wielka litera e z kropką powyżej","Latin capital letter e with macron":"Łacińska wielka litera e z makronem","Latin capital letter e with ogonek":"Łacińska wielka litera e z ogonkiem","Latin capital letter eng":"Łacińska wielka litera eng","Latin capital letter g with breve":"Łacińska wielka litera g z łuczkiem","Latin capital letter g with cedilla":"Łacińska wielka litera g z haczykiem","Latin capital letter g with circumflex":"Łacińska wielka litera g z daszkiem","Latin capital letter g with dot above":"Łacińska wielka litera g z kropką powyżej","Latin capital letter h with circumflex":"Łacińska wielka litera h z daszkiem","Latin capital letter h with stroke":"Łacińska wielka litera h z przekreśleniem","Latin capital letter i with breve":"Łacińska wielka litera i z łuczkiem","Latin capital letter i with dot above":"Łacińska wielka litera i z kropką powyżej","Latin capital letter i with macron":"Łacińska wielka litera i z makronem","Latin capital letter i with ogonek":"Łacińska wielka litera i z ogonkiem","Latin capital letter i with tilde":" Łacińska wielka litera i z tyldą","Latin capital letter j with circumflex":"Łacińska wielka litera j z daszkiem","Latin capital letter k with cedilla":"Łacińska wielka litera k z haczykiem","Latin capital letter l with acute":"Łacińska wielka litera l z kreską","Latin capital letter l with caron":"Łacińska wielka litera l z ptaszkiem","Latin capital letter l with cedilla":"Łacińska wielka litera l z haczykiem","Latin capital letter l with middle dot":"Łacińska wielka litera l z kropką pośrodku","Latin capital letter l with stroke":"Łacińska wielka litera l z przekreśleniem","Latin capital letter n with acute":"Łacińska wielka litera n z kreską","Latin capital letter n with caron":"Łacińska wielka litera n z ptaszkiem","Latin capital letter n with cedilla":"Łacińska wielka litera n z haczykiem","Latin capital letter o with breve":"Łacińska wielka litera o z łuczkiem","Latin capital letter o with double acute":"Łacińska wielka litera o z dwiema kreskami","Latin capital letter o with macron":"Łacińska wielka litera o z makronem","Latin capital letter r with acute":"Łacińska wielka litera r z kreską","Latin capital letter r with caron":"Łacińska wielka litera r z ptaszkiem","Latin capital letter r with cedilla":"Łacińska wielka litera r z haczykiem","Latin capital letter s with acute":"Łacińska wielka litera s z kreską","Latin capital letter s with caron":"Łacińska wielka litera s z ptaszkiem","Latin capital letter s with cedilla":"Łacińska wielka litera s z haczykiem","Latin capital letter s with circumflex":"Łacińska wielka litera s z daszkiem","Latin capital letter t with caron":"Łacińska wielka litera t z ptaszkiem","Latin capital letter t with cedilla":"Łacińska wielka litera t z haczykiem","Latin capital letter t with stroke":"Łacińska wielka litera t z przekreśleniem","Latin capital letter u with breve":"Łacińska wielka litera u z łuczkiem","Latin capital letter u with double acute":"Łacińska wielka litera u z dwiema kreskami","Latin capital letter u with macron":"Łacińska wielka litera u z makronem","Latin capital letter u with ogonek":"Łacińska wielka litera u z ogonkiem","Latin capital letter u with ring above":"Łacińska wielka litera u z kółkiem powyżej","Latin capital letter u with tilde":"Łacińska wielka litera u z tyldą","Latin capital letter w with circumflex":"Łacińska wielka litera w z daszkiem","Latin capital letter y with circumflex":"Łacińska wielka litera y z daszkiem","Latin capital letter y with diaeresis":"Łacińska wielka litera y z dwiema kropkami","Latin capital letter z with acute":"Łacińska wielka litera z z kreską","Latin capital letter z with caron":"Łacińska wielka litera z z ptaszkiem","Latin capital letter z with dot above":"Łacińska wielka litera z z kropką powyżej","Latin capital ligature ij":"Łacińska wielka ligatura ij","Latin capital ligature oe":"Łacińska wielka ligatura oe","Latin small letter a with breve":"Łacińska mała litera a z łuczkiem","Latin small letter a with macron":"Łacińska mała litera a z makronem","Latin small letter a with ogonek":"Łacińska mała litera a z ogonkiem","Latin small letter c with acute":"Łacińska mała litera c z kreską","Latin small letter c with caron":"Łacińska mała litera c z ptaszkiem","Latin small letter c with circumflex":"Łacińska mała litera c z daszkiem","Latin small letter c with dot above":"Łacińska mała litera c z kropką powyżej","Latin small letter d with caron":"Łacińska mała litera d z ptaszkiem","Latin small letter d with stroke":"Łacińska mała litera d z przekreśleniem","Latin small letter dotless i":"Łacińska mała litera i bez kropki","Latin small letter e with breve":"Łacińska mała litera e z łuczkiem","Latin small letter e with caron":"Łacińska mała litera e z ptaszkiem","Latin small letter e with dot above":"Łacińska mała litera e z kropką powyżej","Latin small letter e with macron":"Łacińska mała litera e z makronem","Latin small letter e with ogonek":"Łacińska mała litera e z ogonkiem","Latin small letter eng":"Łacińska mała litera eng","Latin small letter f with hook":"Łacińska mała litera f z zawijasem","Latin small letter g with breve":"Łacińska mała litera g z łuczkiem","Latin small letter g with cedilla":"Łacińska mała litera g z haczykiem","Latin small letter g with circumflex":"Łacińska mała litera g z daszkiem","Latin small letter g with dot above":"Łacińska mała litera g z kropką powyżej","Latin small letter h with circumflex":"Łacińska mała litera h z daszkiem","Latin small letter h with stroke":"Łacińska mała litera h z przekreśleniem","Latin small letter i with breve":"Łacińska mała litera i z łuczkiem","Latin small letter i with macron":"Łacińska mała litera i z makronem","Latin small letter i with ogonek":"Łacińska mała litera i z ogonkiem","Latin small letter i with tilde":"Łacińska mała litera i z tyldą","Latin small letter j with circumflex":"Łacińska mała litera j z daszkiem","Latin small letter k with cedilla":"Łacińska mała litera k z haczykiem","Latin small letter kra":"Łacińska mała litera kra","Latin small letter l with acute":"Łacińska mała litera l z kreską","Latin small letter l with caron":"Łacińska mała litera l z ptaszkiem","Latin small letter l with cedilla":"Łacińska mała litera l z haczykiem","Latin small letter l with middle dot":"Łacińska mała litera l z kropką pośrodku","Latin small letter l with stroke":"Łacińska mała litera l z przekreśleniem","Latin small letter long s":"Łacińska litera długie s","Latin small letter n preceded by apostrophe":"Łacińska mała litera n poprzedzona apostrofem","Latin small letter n with acute":"Łacińska mała litera n z kreską","Latin small letter n with caron":"Łacińska mała litera n z ptaszkiem","Latin small letter n with cedilla":"Łacińska mała litera n z haczykiem","Latin small letter o with breve":"Łacińska mała litera o z łuczkiem","Latin small letter o with double acute":"Łacińska mała litera o z dwiema kreskami","Latin small letter o with macron":"Łacińska mała litera o z makronem","Latin small letter r with acute":"Łacińska mała litera r z kreską","Latin small letter r with caron":"Łacińska mała litera r z ptaszkiem","Latin small letter r with cedilla":"Łacińska mała litera r z haczykiem","Latin small letter s with acute":"Łacińska mała litera s z kreską","Latin small letter s with caron":"Łacińska mała litera s z ptaszkiem","Latin small letter s with cedilla":"Łacińska wielka litera s z haczykiem","Latin small letter s with circumflex":"Łacińska mała litera s z daszkiem","Latin small letter t with caron":"Łacińska mała litera t z ptaszkiem","Latin small letter t with cedilla":"Łacińska mała litera t z haczykiem","Latin small letter t with stroke":"Łacińska mała litera t z przekreśleniem","Latin small letter u with breve":"Łacińska mała litera u z łuczkiem","Latin small letter u with double acute":"Łacińska mała litera u z dwiema kreskami","Latin small letter u with macron":"Łacińska mała litera u z makronem","Latin small letter u with ogonek":"Łacińska mała litera u z ogonkiem","Latin small letter u with ring above":"Łacińska mała litera u z kółkiem powyżej","Latin small letter u with tilde":"Łacińska mała litera u z tyldą","Latin small letter w with circumflex":"Łacińska mała litera w z daszkiem","Latin small letter y with circumflex":"Łacińska mała litera y z daszkiem","Latin small letter z with acute":"Łacińska mała litera z z kreską","Latin small letter z with caron":"Łacińska mała litera z z ptaszkiem","Latin small letter z with dot above":"Łacińska mała litera z z kropką powyżej","Latin small ligature ij":"Łacińska mała ligatura ij","Latin small ligature oe":"Łacińska mała ligatura oe","Left double quotation mark":"Podwójny lewy cudzysłów","Left single quotation mark":"Pojedynczy lewy cudzysłów","Left-pointing double angle quotation mark":"Podwójny lewy cudzysłów kątowy","leftwards arrow to bar":"strzałka w lewo do belki","leftwards dashed arrow":"przerywana strzałka w lewo","leftwards double arrow":"podwójna strzałka w lewo","Less-than or equal to":"Znak mniejsze niż lub równe","Less-than sign":"Znak mniejszości","Lira sign":"Znak liry","Livre tournois sign":"Symbol liwra turońskiego","Logical and":"Koniunkcja logiczna","Logical or":"Alternatywa logiczna",Macron:"Makron","Manat sign":"Znak manata","Mill sign":"Symbol mila","Minus sign":"Znak minus","Multiplication sign":"Znak mnożenia","N-ary product":"Iloczyn n-argumentowy","N-ary summation":"Suma n-argumentowa",Nabla:"Operator nabla","Naira sign":"Znak nairy","New sheqel sign":"Znak nowego szekla","Nordic mark sign":"Znak marki nordyckiej","Not an element of":"Nie należy do","Not equal to":"Różne","Not sign":"Znak negacji","on with exclamation mark with left right arrow above":"na z wykrzyknikiem i strzałką w lewo i prawo powyżej",Overline:"Nadkreślenie","Paragraph sign":"Znak akapitu","Partial differential":"Pochodna cząstkowa","Per mille sign":"Znak promila","Per ten thousand sign":"Punkt bazowy","Peseta sign":"Znak pesety","Peso sign":"Znak peso","Plus-minus sign":"Znak plus-minus","Pound sign":"Znak funta","Proportional to":"Proporcjonalność","Question exclamation mark":"Pytajnik z wykrzyknikiem","Registered sign":"Zastrzeżony znak towarowy","Reversed paragraph sign":"Odwrócony znak akapitu","Right double quotation mark":"Podwójny prawy cudzysłów","Right single quotation mark":"Pojedynczy prawy cudzysłów","Right-pointing double angle quotation mark":"Podwójny prawy cudzysłów kątowy","rightwards arrow to bar":"strzałka w prawo do belki","rightwards dashed arrow":"przerywana strzałka w prawo","rightwards double arrow":"podwójna strzałka w prawo","Ruble sign":"Znak rubla","Rupee sign":"Znak rupii","Section sign":"Znak sekcji","Single left-pointing angle quotation mark":"Pojedynczy lewy cudzysłów kątowy","Single low-9 quotation mark":"Pojedynczy dolny cudzysłów","Single right-pointing angle quotation mark":"Pojedynczy prawy cudzysłów kątowy","soon with rightwards arrow above":"wkrótce ze strzałką w prawo powyżej","Special characters":"Znaki specjalne","Spesmilo sign":"Symbol spesmilo","Square root":"Pierwiastek kwadratowy","Tenge sign":"Znak tenge","There exists":"Kwantyfikator szczegółowy","Tilde operator":"Operator tylda","top with upwards arrow above":"do góry ze strzałką w górę powyżej","Trade mark sign":"Symbol znaku towarowego","Tugrik sign":"Znak tugrika","Turkish lira sign":"Znak liry tureckiej","Two dot leader":"Dwie kropki wiodące",Union:"Suma zbiorów","up down arrow with base":"strzałka w górę i w dół z podstawą","upwards arrow to bar":"strzałka w górę do belki","upwards dashed arrow":"przerywana strzałka w górę","upwards double arrow":"podwójna strzałka w górę","Vulgar fraction one half":"Ułamek zwykły jedna druga","Vulgar fraction one quarter":"Ułamek zwykły jedna czwarta","Vulgar fraction three quarters":"Ułamek zwykły trzy czwarte","Won sign":"Znak wona","Yen sign":"Znak jena"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(a){const i=a.pl=a.pl||{};i.dictionary=Object.assign(i.dictionary||{},{"Almost equal to":"Prawie równe",Angle:"Kąt","Approximately equal to":"W przybliżeniu równe","Asterisk operator":"Operator asterysk","Austral sign":"Znak australa","back with leftwards arrow above":"do tyłu ze strzałką w lewo powyżej","Bitcoin sign":"Znak bitcoina","Cedi sign":"Znak cedi","Cent sign":"Znak centa","Character categories":"Kategorie znaków","Colon sign":"Znak colona","Contains as member":"Zawiera element","Copyright sign":"Znak praw autorskich","Cruzeiro sign":"Znak cruzeiro","Currency sign":"Znak waluty","Degree sign":"Znak stopnia","Division sign":"Znak dzielenia","Dollar sign":"Znak dolara","Dong sign":"Znak donga","Double dagger":"Podwójny sztylet","Double exclamation mark":"Podwójny wykrzyknik","Double low-9 quotation mark":"Podwójny dolny cudzysłów","Double question mark":"Podwójny pytajnik","downwards arrow to bar":"strzałka w dół do belki","downwards dashed arrow":"przerywana strzałka w dół","downwards double arrow":"podwójna strzałka w dół","downwards simple arrow":"prosta strzałka w dół","Drachma sign":"Znak drachmy","Element of":"Należy do","Em dash":"Pauza","Empty set":"Zbiór pusty","En dash":"Półpauza","end with leftwards arrow above":"koniec ze strzałką w lewo powyżej","Euro sign":"Znak euro","Euro-currency sign":"Znak euro","Exclamation question mark":"Wykrzyknik z pytajnikiem","For all":"Kwantyfikator ogólny","Fraction slash":"Kreska ułamkowa","French franc sign":"Znak franka francuskiego","German penny sign":"Znak feniga","Greater-than or equal to":"Znak większe niż lub równe","Greater-than sign":"Znak większości","Guarani sign":"Znak guarani","Horizontal ellipsis":"Wielokropek poziomy","Hryvnia sign":"Znak hrywny","Identical to":"Identyczne","Indian rupee sign":"Znak rupii indyjskiej",Infinity:"Nieskończoność",Integral:"Całka",Intersection:"Część wspólna","Inverted exclamation mark":"Odwrócony wykrzyknik","Inverted question mark":"Odwrócony pytajnik","Kip sign":"Znak kipa","Latin capital letter a with breve":"Łacińska wielka litera a z łuczkiem","Latin capital letter a with macron":"Łacińska wielka litera a z makronem","Latin capital letter a with ogonek":"Łacińska wielka litera a z ogonkiem","Latin capital letter c with acute":"Łacińska wielka litera c z kreską","Latin capital letter c with caron":"Łacińska wielka litera c z ptaszkiem","Latin capital letter c with circumflex":"Łacińska wielka litera c z daszkiem","Latin capital letter c with dot above":"Łacińska wielka litera c z kropką powyżej","Latin capital letter d with caron":"Łacińska wielka litera d z ptaszkiem","Latin capital letter d with stroke":"Łacińska wielka litera d z przekreśleniem","Latin capital letter e with breve":"Łacińska wielka litera e z łuczkiem","Latin capital letter e with caron":"Łacińska wielka litera e z ptaszkiem","Latin capital letter e with dot above":"Łacińska wielka litera e z kropką powyżej","Latin capital letter e with macron":"Łacińska wielka litera e z makronem","Latin capital letter e with ogonek":"Łacińska wielka litera e z ogonkiem","Latin capital letter eng":"Łacińska wielka litera eng","Latin capital letter g with breve":"Łacińska wielka litera g z łuczkiem","Latin capital letter g with cedilla":"Łacińska wielka litera g z haczykiem","Latin capital letter g with circumflex":"Łacińska wielka litera g z daszkiem","Latin capital letter g with dot above":"Łacińska wielka litera g z kropką powyżej","Latin capital letter h with circumflex":"Łacińska wielka litera h z daszkiem","Latin capital letter h with stroke":"Łacińska wielka litera h z przekreśleniem","Latin capital letter i with breve":"Łacińska wielka litera i z łuczkiem","Latin capital letter i with dot above":"Łacińska wielka litera i z kropką powyżej","Latin capital letter i with macron":"Łacińska wielka litera i z makronem","Latin capital letter i with ogonek":"Łacińska wielka litera i z ogonkiem","Latin capital letter i with tilde":" Łacińska wielka litera i z tyldą","Latin capital letter j with circumflex":"Łacińska wielka litera j z daszkiem","Latin capital letter k with cedilla":"Łacińska wielka litera k z haczykiem","Latin capital letter l with acute":"Łacińska wielka litera l z kreską","Latin capital letter l with caron":"Łacińska wielka litera l z ptaszkiem","Latin capital letter l with cedilla":"Łacińska wielka litera l z haczykiem","Latin capital letter l with middle dot":"Łacińska wielka litera l z kropką pośrodku","Latin capital letter l with stroke":"Łacińska wielka litera l z przekreśleniem","Latin capital letter n with acute":"Łacińska wielka litera n z kreską","Latin capital letter n with caron":"Łacińska wielka litera n z ptaszkiem","Latin capital letter n with cedilla":"Łacińska wielka litera n z haczykiem","Latin capital letter o with breve":"Łacińska wielka litera o z łuczkiem","Latin capital letter o with double acute":"Łacińska wielka litera o z dwiema kreskami","Latin capital letter o with macron":"Łacińska wielka litera o z makronem","Latin capital letter r with acute":"Łacińska wielka litera r z kreską","Latin capital letter r with caron":"Łacińska wielka litera r z ptaszkiem","Latin capital letter r with cedilla":"Łacińska wielka litera r z haczykiem","Latin capital letter s with acute":"Łacińska wielka litera s z kreską","Latin capital letter s with caron":"Łacińska wielka litera s z ptaszkiem","Latin capital letter s with cedilla":"Łacińska wielka litera s z haczykiem","Latin capital letter s with circumflex":"Łacińska wielka litera s z daszkiem","Latin capital letter t with caron":"Łacińska wielka litera t z ptaszkiem","Latin capital letter t with cedilla":"Łacińska wielka litera t z haczykiem","Latin capital letter t with stroke":"Łacińska wielka litera t z przekreśleniem","Latin capital letter u with breve":"Łacińska wielka litera u z łuczkiem","Latin capital letter u with double acute":"Łacińska wielka litera u z dwiema kreskami","Latin capital letter u with macron":"Łacińska wielka litera u z makronem","Latin capital letter u with ogonek":"Łacińska wielka litera u z ogonkiem","Latin capital letter u with ring above":"Łacińska wielka litera u z kółkiem powyżej","Latin capital letter u with tilde":"Łacińska wielka litera u z tyldą","Latin capital letter w with circumflex":"Łacińska wielka litera w z daszkiem","Latin capital letter y with circumflex":"Łacińska wielka litera y z daszkiem","Latin capital letter y with diaeresis":"Łacińska wielka litera y z dwiema kropkami","Latin capital letter z with acute":"Łacińska wielka litera z z kreską","Latin capital letter z with caron":"Łacińska wielka litera z z ptaszkiem","Latin capital letter z with dot above":"Łacińska wielka litera z z kropką powyżej","Latin capital ligature ij":"Łacińska wielka ligatura ij","Latin capital ligature oe":"Łacińska wielka ligatura oe","Latin small letter a with breve":"Łacińska mała litera a z łuczkiem","Latin small letter a with macron":"Łacińska mała litera a z makronem","Latin small letter a with ogonek":"Łacińska mała litera a z ogonkiem","Latin small letter c with acute":"Łacińska mała litera c z kreską","Latin small letter c with caron":"Łacińska mała litera c z ptaszkiem","Latin small letter c with circumflex":"Łacińska mała litera c z daszkiem","Latin small letter c with dot above":"Łacińska mała litera c z kropką powyżej","Latin small letter d with caron":"Łacińska mała litera d z ptaszkiem","Latin small letter d with stroke":"Łacińska mała litera d z przekreśleniem","Latin small letter dotless i":"Łacińska mała litera i bez kropki","Latin small letter e with breve":"Łacińska mała litera e z łuczkiem","Latin small letter e with caron":"Łacińska mała litera e z ptaszkiem","Latin small letter e with dot above":"Łacińska mała litera e z kropką powyżej","Latin small letter e with macron":"Łacińska mała litera e z makronem","Latin small letter e with ogonek":"Łacińska mała litera e z ogonkiem","Latin small letter eng":"Łacińska mała litera eng","Latin small letter f with hook":"Łacińska mała litera f z zawijasem","Latin small letter g with breve":"Łacińska mała litera g z łuczkiem","Latin small letter g with cedilla":"Łacińska mała litera g z haczykiem","Latin small letter g with circumflex":"Łacińska mała litera g z daszkiem","Latin small letter g with dot above":"Łacińska mała litera g z kropką powyżej","Latin small letter h with circumflex":"Łacińska mała litera h z daszkiem","Latin small letter h with stroke":"Łacińska mała litera h z przekreśleniem","Latin small letter i with breve":"Łacińska mała litera i z łuczkiem","Latin small letter i with macron":"Łacińska mała litera i z makronem","Latin small letter i with ogonek":"Łacińska mała litera i z ogonkiem","Latin small letter i with tilde":"Łacińska mała litera i z tyldą","Latin small letter j with circumflex":"Łacińska mała litera j z daszkiem","Latin small letter k with cedilla":"Łacińska mała litera k z haczykiem","Latin small letter kra":"Łacińska mała litera kra","Latin small letter l with acute":"Łacińska mała litera l z kreską","Latin small letter l with caron":"Łacińska mała litera l z ptaszkiem","Latin small letter l with cedilla":"Łacińska mała litera l z haczykiem","Latin small letter l with middle dot":"Łacińska mała litera l z kropką pośrodku","Latin small letter l with stroke":"Łacińska mała litera l z przekreśleniem","Latin small letter long s":"Łacińska litera długie s","Latin small letter n preceded by apostrophe":"Łacińska mała litera n poprzedzona apostrofem","Latin small letter n with acute":"Łacińska mała litera n z kreską","Latin small letter n with caron":"Łacińska mała litera n z ptaszkiem","Latin small letter n with cedilla":"Łacińska mała litera n z haczykiem","Latin small letter o with breve":"Łacińska mała litera o z łuczkiem","Latin small letter o with double acute":"Łacińska mała litera o z dwiema kreskami","Latin small letter o with macron":"Łacińska mała litera o z makronem","Latin small letter r with acute":"Łacińska mała litera r z kreską","Latin small letter r with caron":"Łacińska mała litera r z ptaszkiem","Latin small letter r with cedilla":"Łacińska mała litera r z haczykiem","Latin small letter s with acute":"Łacińska mała litera s z kreską","Latin small letter s with caron":"Łacińska mała litera s z ptaszkiem","Latin small letter s with cedilla":"Łacińska wielka litera s z haczykiem","Latin small letter s with circumflex":"Łacińska mała litera s z daszkiem","Latin small letter t with caron":"Łacińska mała litera t z ptaszkiem","Latin small letter t with cedilla":"Łacińska mała litera t z haczykiem","Latin small letter t with stroke":"Łacińska mała litera t z przekreśleniem","Latin small letter u with breve":"Łacińska mała litera u z łuczkiem","Latin small letter u with double acute":"Łacińska mała litera u z dwiema kreskami","Latin small letter u with macron":"Łacińska mała litera u z makronem","Latin small letter u with ogonek":"Łacińska mała litera u z ogonkiem","Latin small letter u with ring above":"Łacińska mała litera u z kółkiem powyżej","Latin small letter u with tilde":"Łacińska mała litera u z tyldą","Latin small letter w with circumflex":"Łacińska mała litera w z daszkiem","Latin small letter y with circumflex":"Łacińska mała litera y z daszkiem","Latin small letter z with acute":"Łacińska mała litera z z kreską","Latin small letter z with caron":"Łacińska mała litera z z ptaszkiem","Latin small letter z with dot above":"Łacińska mała litera z z kropką powyżej","Latin small ligature ij":"Łacińska mała ligatura ij","Latin small ligature oe":"Łacińska mała ligatura oe","Left double quotation mark":"Podwójny lewy cudzysłów","Left single quotation mark":"Pojedynczy lewy cudzysłów","Left-pointing double angle quotation mark":"Podwójny lewy cudzysłów kątowy","leftwards arrow to bar":"strzałka w lewo do belki","leftwards dashed arrow":"przerywana strzałka w lewo","leftwards double arrow":"podwójna strzałka w lewo","leftwards simple arrow":"prosta strzałka w lewo","Less-than or equal to":"Znak mniejsze niż lub równe","Less-than sign":"Znak mniejszości","Lira sign":"Znak liry","Livre tournois sign":"Symbol liwra turońskiego","Logical and":"Koniunkcja logiczna","Logical or":"Alternatywa logiczna",Macron:"Makron","Manat sign":"Znak manata","Mill sign":"Symbol mila","Minus sign":"Znak minus","Multiplication sign":"Znak mnożenia","N-ary product":"Iloczyn n-argumentowy","N-ary summation":"Suma n-argumentowa",Nabla:"Operator nabla","Naira sign":"Znak nairy","New sheqel sign":"Znak nowego szekla","Nordic mark sign":"Znak marki nordyckiej","Not an element of":"Nie należy do","Not equal to":"Różne","Not sign":"Znak negacji","on with exclamation mark with left right arrow above":"na z wykrzyknikiem i strzałką w lewo i prawo powyżej",Overline:"Nadkreślenie","Paragraph sign":"Znak akapitu","Partial differential":"Pochodna cząstkowa","Per mille sign":"Znak promila","Per ten thousand sign":"Punkt bazowy","Peseta sign":"Znak pesety","Peso sign":"Znak peso","Plus-minus sign":"Znak plus-minus","Pound sign":"Znak funta","Proportional to":"Proporcjonalność","Question exclamation mark":"Pytajnik z wykrzyknikiem","Registered sign":"Zastrzeżony znak towarowy","Reversed paragraph sign":"Odwrócony znak akapitu","Right double quotation mark":"Podwójny prawy cudzysłów","Right single quotation mark":"Pojedynczy prawy cudzysłów","Right-pointing double angle quotation mark":"Podwójny prawy cudzysłów kątowy","rightwards arrow to bar":"strzałka w prawo do belki","rightwards dashed arrow":"przerywana strzałka w prawo","rightwards double arrow":"podwójna strzałka w prawo","rightwards simple arrow":"prosta strzałka w prawo","Ruble sign":"Znak rubla","Rupee sign":"Znak rupii","Section sign":"Znak sekcji","Single left-pointing angle quotation mark":"Pojedynczy lewy cudzysłów kątowy","Single low-9 quotation mark":"Pojedynczy dolny cudzysłów","Single right-pointing angle quotation mark":"Pojedynczy prawy cudzysłów kątowy","soon with rightwards arrow above":"wkrótce ze strzałką w prawo powyżej","Special characters":"Znaki specjalne","Spesmilo sign":"Symbol spesmilo","Square root":"Pierwiastek kwadratowy","Tenge sign":"Znak tenge","There exists":"Kwantyfikator szczegółowy","Tilde operator":"Operator tylda","top with upwards arrow above":"do góry ze strzałką w górę powyżej","Trade mark sign":"Symbol znaku towarowego","Tugrik sign":"Znak tugrika","Turkish lira sign":"Znak liry tureckiej","Two dot leader":"Dwie kropki wiodące",Union:"Suma zbiorów","up down arrow with base":"strzałka w górę i w dół z podstawą","upwards arrow to bar":"strzałka w górę do belki","upwards dashed arrow":"przerywana strzałka w górę","upwards double arrow":"podwójna strzałka w górę","upwards simple arrow":"prosta strzałka w górę","Vulgar fraction one half":"Ułamek zwykły jedna druga","Vulgar fraction one quarter":"Ułamek zwykły jedna czwarta","Vulgar fraction three quarters":"Ułamek zwykły trzy czwarte","Won sign":"Znak wona","Yen sign":"Znak jena"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/special-characters/translations/pt-br.js b/core/assets/vendor/ckeditor5/special-characters/translations/pt-br.js
index f66eaa02ff..93291d7d6b 100644
--- a/core/assets/vendor/ckeditor5/special-characters/translations/pt-br.js
+++ b/core/assets/vendor/ckeditor5/special-characters/translations/pt-br.js
@@ -1 +1 @@
-!function(a){const o=a["pt-br"]=a["pt-br"]||{};o.dictionary=Object.assign(o.dictionary||{},{"Almost equal to":"Quase igual a",Angle:"Ângulo","Approximately equal to":"Aproximadamente igual a","Asterisk operator":"Operador asterisco","Austral sign":"Símbolo de Austral","back with leftwards arrow above":"volta com a seta esquerda acima","Bitcoin sign":"Símbolo do Bitcoin","Cedi sign":"Símbolo de Cedi","Cent sign":"Símbolo de Centavo","Character categories":"Categoria de caracteres","Colon sign":"Sinal de dois pontos","Contains as member":"Contém como membro","Copyright sign":"Símbolo de direitos reservados","Cruzeiro sign":"Símbolo do Cruzeiro","Currency sign":"Símbolo de moeda","Degree sign":"Sinal de grau","Division sign":"Sinal de divisão","Dollar sign":"Símbolo do dólar","Dong sign":"Símbolo do Dong","Double dagger":"Adaga dupla","Double exclamation mark":"Sinal do ponto de exclamação duplo","Double low-9 quotation mark":"Aspas duplas baixas simples","Double question mark":"Ponto de interrogação duplo","downwards arrow to bar":"seta para baixo para barra","downwards dashed arrow":"Seta tracejada para baixo","downwards double arrow":"Seta dupla para baixo","Drachma sign":"Sinal de Dracma","Element of":"Elemento de","Em dash":"Travessão","Empty set":"Conjunto vazio","En dash":"Traço","end with leftwards arrow above":"termina com a seta esquerda acima","Euro sign":"Símbolo do Euro","Euro-currency sign":"Símbolo da Moeda do Euro","Exclamation question mark":"Ponto de exclamação","For all":"Para todos","Fraction slash":"Barra de fração","French franc sign":"Símbolo do Franco Francês","German penny sign":"Símbolo do Centavo Alemão","Greater-than or equal to":"Maior que ou igual a","Greater-than sign":"Sinal maior que","Guarani sign":"Símbolo de Guarani","Horizontal ellipsis":"Elipse horizontal","Hryvnia sign":"Símbolo de Hryvnia","Identical to":"Idêntico a","Indian rupee sign":"Símbolo da Rupia Indiana",Infinity:"Infinito",Integral:"Integral",Intersection:"Interseção","Inverted exclamation mark":"Ponto de exclamação invertido","Inverted question mark":"Ponto de interrogação invertido","Kip sign":"Símbolo do Kip","Latin capital letter a with breve":"Símbolo latim maiúsculo A com breve","Latin capital letter a with macron":"Símbolo latim maiúsculo A com macron","Latin capital letter a with ogonek":"Símbolo latim maiúsculo A com ogonek","Latin capital letter c with acute":"Símbolo latim maiúsculo C com acento agudo","Latin capital letter c with caron":"Símbolo latim maiúsculo C com caron","Latin capital letter c with circumflex":"Símbolo latim maiúsculo C com acento circunflexo","Latin capital letter c with dot above":"Símbolo latim maiúsculo C com ponto acima","Latin capital letter d with caron":"Símbolo latim maiúsculo D com caron","Latin capital letter d with stroke":"Símbolo latin maiúsculo D com um traçado vertical","Latin capital letter e with breve":"Símbolo latim maiúsculo E com breve","Latin capital letter e with caron":"Símbolo latim maiúsculo E com caron","Latin capital letter e with dot above":"Símbolo latim maiúsculo E com ponto acima","Latin capital letter e with macron":"Símbolo latim maiúsculo E com macron","Latin capital letter e with ogonek":"Símbolo latim maiúsculo E com ogonek","Latin capital letter eng":"Símbolo latim maiúsculo Eng","Latin capital letter g with breve":"Símbolo latim maiúsculo G com breve","Latin capital letter g with cedilla":"Símbolo latim maiúsculo G com cedilha","Latin capital letter g with circumflex":"Símbolo latim maiúsculo G com acento circunflexo","Latin capital letter g with dot above":"Símbolo latim maiúsculo G com ponto acima","Latin capital letter h with circumflex":"Símbolo latim maiúsculo H com acento circunflexo","Latin capital letter h with stroke":"Símbolo latin maiúsculo H com um traçado vertical","Latin capital letter i with breve":"Símbolo latim maiúsculo I com breve","Latin capital letter i with dot above":"Símbolo latim maiúsculo I com ponto acima","Latin capital letter i with macron":"Símbolo latim maiúsculo I com macron","Latin capital letter i with ogonek":"Símbolo latim maiúsculo I com ogonek","Latin capital letter i with tilde":"Símbolo latim maiúsculo I com til","Latin capital letter j with circumflex":"Símbolo latim maiúsculo J com acento circunflexo","Latin capital letter k with cedilla":"Símbolo latim maiúsculo K com cedilha","Latin capital letter l with acute":"Símbolo latim maiúsculo l com acento agudo","Latin capital letter l with caron":"Símbolo latim maiúsculo I com caron","Latin capital letter l with cedilla":"Símbolo latim maiúsculo L com cedilha","Latin capital letter l with middle dot":"Símbolo latin maiúsculo L com ponto no meio","Latin capital letter l with stroke":"Símbolo latin maiúsculo L com um traçado vertical","Latin capital letter n with acute":"Símbolo latim maiúsculo N com acento agudo","Latin capital letter n with caron":"Símbolo latim maiúsculo N com caron","Latin capital letter n with cedilla":"Símbolo latim maiúsculo N com cedilha","Latin capital letter o with breve":"Símbolo latim maiúsculo O com breve","Latin capital letter o with double acute":"Símbolo latim maiúsculo O com acento agudo duplo","Latin capital letter o with macron":"Símbolo latim maiúsculo I com macron","Latin capital letter r with acute":"Símbolo latim maiúsculo R com acento agudo","Latin capital letter r with caron":"Símbolo latim maiúsculo R com caron","Latin capital letter r with cedilla":"Símbolo latim maiúsculo R com cedilha","Latin capital letter s with acute":"Símbolo latim maiúsculo S com acento agudo","Latin capital letter s with caron":"Símbolo latim maiúsculo S com caron","Latin capital letter s with cedilla":"Símbolo latim maiúsculo S com cedilha","Latin capital letter s with circumflex":"Símbolo latim maiúsculo S com acento circunflexo","Latin capital letter t with caron":"Símbolo latim maiúsculo T com caron","Latin capital letter t with cedilla":"Símbolo latim maiúsculo T com cedilha","Latin capital letter t with stroke":"Símbolo latin maiúsculo T com um traçado vertical","Latin capital letter u with breve":"Símbolo latim maiúsculo U com breve","Latin capital letter u with double acute":"Símbolo latim maiúsculo U com acento agudo duplo","Latin capital letter u with macron":"Símbolo latim maiúsculo I com macron","Latin capital letter u with ogonek":"Símbolo latim maiúsculo U com ogonek","Latin capital letter u with ring above":"Símbolo latim maiúsculo U com anel acima","Latin capital letter u with tilde":"Símbolo latim maiúsculo U com til","Latin capital letter w with circumflex":"Símbolo latim maiúsculo W com acento circunflexo","Latin capital letter y with circumflex":"Símbolo latim maiúsculo Y com acento circunflexo","Latin capital letter y with diaeresis":"Símbolo latim maiúsculo Z com trema","Latin capital letter z with acute":"Símbolo latim maiúsculo Z com acento agudo","Latin capital letter z with caron":"Símbolo latim maiúsculo Z com caron","Latin capital letter z with dot above":"Símbolo latim maiúsculo Z com ponto acima","Latin capital ligature ij":"Símbolo latin maiúsculo ligadura IJ","Latin capital ligature oe":"Símbolo latin maiúsculo ligadura OE","Latin small letter a with breve":"Símbolo latim minúsculo A com breve","Latin small letter a with macron":"Símbolo latim minúsculo A com macron","Latin small letter a with ogonek":"Símbolo latim minúsculo A com ogonek","Latin small letter c with acute":"Símbolo latim minúsculo C com acento agudo","Latin small letter c with caron":"Símbolo latim minúsculo C com caron","Latin small letter c with circumflex":"Símbolo latim minúsculo C com acento circunflexo","Latin small letter c with dot above":"Símbolo latim minúsculo C com ponto acima","Latin small letter d with caron":"Símbolo latim minúsculo D com caron","Latin small letter d with stroke":"Símbolo latin minúsculo D com um traçado vertical","Latin small letter dotless i":"Símbolo latin sem ponto I","Latin small letter e with breve":"Símbolo latim minúsculo E com breve","Latin small letter e with caron":"Símbolo latim minúsculo E com caron","Latin small letter e with dot above":"Símbolo latim minúsculo E com ponto acima","Latin small letter e with macron":"Símbolo latim minúsculo E com macron","Latin small letter e with ogonek":"Símbolo latim minúsculo E com ogonek","Latin small letter eng":"Símbolo latim minúsculo Eng","Latin small letter f with hook":"Símbolo latim minúsculo F com gancho","Latin small letter g with breve":"Símbolo latim minúsculo G com breve","Latin small letter g with cedilla":"Símbolo latim minúsculo G com cedilha","Latin small letter g with circumflex":"Símbolo latim minúsculo G com acento circunflexo","Latin small letter g with dot above":"Símbolo latim minúsculo G com ponto acima","Latin small letter h with circumflex":"Símbolo latim minúsculo H com acento circunflexo","Latin small letter h with stroke":"Símbolo latin minúsculo H com um traçado vertical","Latin small letter i with breve":"Símbolo latim minúsculo I com breve","Latin small letter i with macron":"Símbolo latim minúsculo I com macron","Latin small letter i with ogonek":"Símbolo latim minúsculo I com ogonek","Latin small letter i with tilde":"Símbolo latim minúsculo I com til","Latin small letter j with circumflex":"Símbolo latim minúsculo J com acento circunflexo","Latin small letter k with cedilla":"Símbolo latim minúsculo K com cedilha","Latin small letter kra":"Símbolo latin minúsculo K","Latin small letter l with acute":"Símbolo latim minúsculo I com acento agudo","Latin small letter l with caron":"Símbolo latim minúsculo I com caron","Latin small letter l with cedilla":"Símbolo latim minúsculo L com cedilha","Latin small letter l with middle dot":"Símbolo latin minúsculo L com ponto no meio","Latin small letter l with stroke":"Símbolo latin minúsculo L com um traçado vertical","Latin small letter long s":"Símbolo latim minúsculo long s","Latin small letter n preceded by apostrophe":"Símbolo latim minúsculo N precedido por apóstrofe","Latin small letter n with acute":"Símbolo latim minúsculo N com acento agudo","Latin small letter n with caron":"Símbolo latim minúsculo N com caron","Latin small letter n with cedilla":"Símbolo latim minúsculo N com cedilha","Latin small letter o with breve":"Símbolo latim minúsculo O com breve","Latin small letter o with double acute":"Símbolo latim minúsculo O com acento agudo duplo","Latin small letter o with macron":"Símbolo latim minúsculo O com macron","Latin small letter r with acute":"Símbolo latim minúsculo R com acento agudo","Latin small letter r with caron":"Símbolo latim minúsculo R com caron","Latin small letter r with cedilla":"Símbolo latim minúsculo R com cedilha","Latin small letter s with acute":"Símbolo latim minúsculo S com acento agudo","Latin small letter s with caron":"Símbolo latim minúsculo S com caron","Latin small letter s with cedilla":"Símbolo latim minúsculo S com cedilha","Latin small letter s with circumflex":"Símbolo latim minúsculo S com acento circunflexo","Latin small letter t with caron":"Símbolo latim minúsculo T com caron","Latin small letter t with cedilla":"Símbolo latim minúsculo T com cedilha","Latin small letter t with stroke":"Símbolo latin minúsculo T com um traçado vertical","Latin small letter u with breve":"Símbolo latim minúsculo U com breve","Latin small letter u with double acute":"Símbolo latim minúsculo U com acento agudo","Latin small letter u with macron":"Símbolo latim minúsculo U com macron","Latin small letter u with ogonek":"Símbolo latim minúsculo U com ogonek","Latin small letter u with ring above":"Símbolo latim minúsculo U com anel acima","Latin small letter u with tilde":"Símbolo latim minúsculo U com til","Latin small letter w with circumflex":"Símbolo latim minúsculo W com acento circunflexo","Latin small letter y with circumflex":"Símbolo latim minúsculo Y com acento circunflexo","Latin small letter z with acute":"Símbolo latim minúsculo Z com acento agudo","Latin small letter z with caron":"Símbolo latim minúsculo Z com caron","Latin small letter z with dot above":"Símbolo latim minúsculo Z com ponto acima","Latin small ligature ij":"Símbolo latin minúsculo ligadura IJ","Latin small ligature oe":"Símbolo latin minúsculo ligadura OE","Left double quotation mark":"Aspas dupla esquerda","Left single quotation mark":"Aspas simples esquerda","Left-pointing double angle quotation mark":"Aspas angulares duplas esquerda","leftwards arrow to bar":"seta para a esquerda para barra","leftwards dashed arrow":"Seta tracejada para esquerda","leftwards double arrow":"Seta dupla para esquerda","Less-than or equal to":"Menor que ou igual a","Less-than sign":"Sinal menor que","Lira sign":"Símbolo da Lira","Livre tournois sign":"Símbolo de Livre tournois","Logical and":"Operador lógico AND","Logical or":"Operador lógico OR",Macron:"Macron","Manat sign":"Símbolo do Manat","Mill sign":"Símbolo de Mill","Minus sign":"Sinal de menos","Multiplication sign":"Sinal de multiplicação","N-ary product":"Símbolo Produto N-ário","N-ary summation":"Somatório",Nabla:"Nabla","Naira sign":"Símbolo de Naira","New sheqel sign":"Símbolo do Novo Sheqel","Nordic mark sign":"Símbolo da Marca Nórdica","Not an element of":"Não é um elemento de","Not equal to":"Diferente de","Not sign":"Sinal de não","on with exclamation mark with left right arrow above":"com ponto de exclamação com a seta esquerda direita acima",Overline:"Sobrepor","Paragraph sign":"Símbolo de parágrafo","Partial differential":"Diferencial parcial","Per mille sign":"Símbolo de por 1 mil","Per ten thousand sign":"Símbolo de por 10 mil","Peseta sign":"Símbolo de Peseta","Peso sign":"Sinal de Peso","Plus-minus sign":"Sinal de mais ou menos","Pound sign":"Símbolo de Libra","Proportional to":"Proporcional a","Question exclamation mark":"Ponto de interrogação","Registered sign":"Símbolo de registrado","Reversed paragraph sign":"Símbolo de parágrafo reverso","Right double quotation mark":"Aspas dupla direita","Right single quotation mark":"Aspas simples direita","Right-pointing double angle quotation mark":"Aspas angulares duplas direita","rightwards arrow to bar":"seta para a direita para barra","rightwards dashed arrow":"Seta tracejada para direita","rightwards double arrow":"Seta dupla para direita","Ruble sign":"Símbolo do Rublo Russo","Rupee sign":"Símbolo da Rupia","Section sign":"Símbolo de seleção","Single left-pointing angle quotation mark":"Aspas angulares simples esquerda","Single low-9 quotation mark":"Aspas baixas simples","Single right-pointing angle quotation mark":"Aspas angulares simples direita","soon with rightwards arrow above":"Símbolo soon com a seta para a direita acima","Special characters":"Caracteres especiais","Spesmilo sign":"Símbolo do Spesmilo","Square root":"Raiz quadrada","Tenge sign":"Símbolo do Tenge","There exists":"Existe","Tilde operator":"Operador til","top with upwards arrow above":"Símbolo topo com a seta para cima acima","Trade mark sign":"Símbolo de marca registrada","Tugrik sign":"Símbolo de Tugrik","Turkish lira sign":"Símbolo da Lira Turca","Two dot leader":"Dois pontos",Union:"União","up down arrow with base":"seta para baixo com base","upwards arrow to bar":"seta para cima para barra","upwards dashed arrow":"Seta tracejada para cima","upwards double arrow":"Seta dupla para cima","Vulgar fraction one half":"Fração um meio","Vulgar fraction one quarter":"Fração um quarto","Vulgar fraction three quarters":"Fração três quartos","Won sign":"Símbolo do Won","Yen sign":"Símbolo do Yen"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(a){const o=a["pt-br"]=a["pt-br"]||{};o.dictionary=Object.assign(o.dictionary||{},{"Almost equal to":"Quase igual a",Angle:"Ângulo","Approximately equal to":"Aproximadamente igual a","Asterisk operator":"Operador asterisco","Austral sign":"Símbolo de Austral","back with leftwards arrow above":"volta com a seta esquerda acima","Bitcoin sign":"Símbolo do Bitcoin","Cedi sign":"Símbolo de Cedi","Cent sign":"Símbolo de Centavo","Character categories":"Categoria de caracteres","Colon sign":"Sinal de dois pontos","Contains as member":"Contém como membro","Copyright sign":"Símbolo de direitos reservados","Cruzeiro sign":"Símbolo do Cruzeiro","Currency sign":"Símbolo de moeda","Degree sign":"Sinal de grau","Division sign":"Sinal de divisão","Dollar sign":"Símbolo do dólar","Dong sign":"Símbolo do Dong","Double dagger":"Adaga dupla","Double exclamation mark":"Sinal do ponto de exclamação duplo","Double low-9 quotation mark":"Aspas duplas baixas simples","Double question mark":"Ponto de interrogação duplo","downwards arrow to bar":"seta para baixo para barra","downwards dashed arrow":"Seta tracejada para baixo","downwards double arrow":"Seta dupla para baixo","downwards simple arrow":"seta simples para baixo","Drachma sign":"Sinal de Dracma","Element of":"Elemento de","Em dash":"Travessão","Empty set":"Conjunto vazio","En dash":"Traço","end with leftwards arrow above":"termina com a seta esquerda acima","Euro sign":"Símbolo do Euro","Euro-currency sign":"Símbolo da Moeda do Euro","Exclamation question mark":"Ponto de exclamação","For all":"Para todos","Fraction slash":"Barra de fração","French franc sign":"Símbolo do Franco Francês","German penny sign":"Símbolo do Centavo Alemão","Greater-than or equal to":"Maior que ou igual a","Greater-than sign":"Sinal maior que","Guarani sign":"Símbolo de Guarani","Horizontal ellipsis":"Elipse horizontal","Hryvnia sign":"Símbolo de Hryvnia","Identical to":"Idêntico a","Indian rupee sign":"Símbolo da Rupia Indiana",Infinity:"Infinito",Integral:"Integral",Intersection:"Interseção","Inverted exclamation mark":"Ponto de exclamação invertido","Inverted question mark":"Ponto de interrogação invertido","Kip sign":"Símbolo do Kip","Latin capital letter a with breve":"Símbolo latim maiúsculo A com breve","Latin capital letter a with macron":"Símbolo latim maiúsculo A com macron","Latin capital letter a with ogonek":"Símbolo latim maiúsculo A com ogonek","Latin capital letter c with acute":"Símbolo latim maiúsculo C com acento agudo","Latin capital letter c with caron":"Símbolo latim maiúsculo C com caron","Latin capital letter c with circumflex":"Símbolo latim maiúsculo C com acento circunflexo","Latin capital letter c with dot above":"Símbolo latim maiúsculo C com ponto acima","Latin capital letter d with caron":"Símbolo latim maiúsculo D com caron","Latin capital letter d with stroke":"Símbolo latin maiúsculo D com um traçado vertical","Latin capital letter e with breve":"Símbolo latim maiúsculo E com breve","Latin capital letter e with caron":"Símbolo latim maiúsculo E com caron","Latin capital letter e with dot above":"Símbolo latim maiúsculo E com ponto acima","Latin capital letter e with macron":"Símbolo latim maiúsculo E com macron","Latin capital letter e with ogonek":"Símbolo latim maiúsculo E com ogonek","Latin capital letter eng":"Símbolo latim maiúsculo Eng","Latin capital letter g with breve":"Símbolo latim maiúsculo G com breve","Latin capital letter g with cedilla":"Símbolo latim maiúsculo G com cedilha","Latin capital letter g with circumflex":"Símbolo latim maiúsculo G com acento circunflexo","Latin capital letter g with dot above":"Símbolo latim maiúsculo G com ponto acima","Latin capital letter h with circumflex":"Símbolo latim maiúsculo H com acento circunflexo","Latin capital letter h with stroke":"Símbolo latin maiúsculo H com um traçado vertical","Latin capital letter i with breve":"Símbolo latim maiúsculo I com breve","Latin capital letter i with dot above":"Símbolo latim maiúsculo I com ponto acima","Latin capital letter i with macron":"Símbolo latim maiúsculo I com macron","Latin capital letter i with ogonek":"Símbolo latim maiúsculo I com ogonek","Latin capital letter i with tilde":"Símbolo latim maiúsculo I com til","Latin capital letter j with circumflex":"Símbolo latim maiúsculo J com acento circunflexo","Latin capital letter k with cedilla":"Símbolo latim maiúsculo K com cedilha","Latin capital letter l with acute":"Símbolo latim maiúsculo l com acento agudo","Latin capital letter l with caron":"Símbolo latim maiúsculo I com caron","Latin capital letter l with cedilla":"Símbolo latim maiúsculo L com cedilha","Latin capital letter l with middle dot":"Símbolo latin maiúsculo L com ponto no meio","Latin capital letter l with stroke":"Símbolo latin maiúsculo L com um traçado vertical","Latin capital letter n with acute":"Símbolo latim maiúsculo N com acento agudo","Latin capital letter n with caron":"Símbolo latim maiúsculo N com caron","Latin capital letter n with cedilla":"Símbolo latim maiúsculo N com cedilha","Latin capital letter o with breve":"Símbolo latim maiúsculo O com breve","Latin capital letter o with double acute":"Símbolo latim maiúsculo O com acento agudo duplo","Latin capital letter o with macron":"Símbolo latim maiúsculo I com macron","Latin capital letter r with acute":"Símbolo latim maiúsculo R com acento agudo","Latin capital letter r with caron":"Símbolo latim maiúsculo R com caron","Latin capital letter r with cedilla":"Símbolo latim maiúsculo R com cedilha","Latin capital letter s with acute":"Símbolo latim maiúsculo S com acento agudo","Latin capital letter s with caron":"Símbolo latim maiúsculo S com caron","Latin capital letter s with cedilla":"Símbolo latim maiúsculo S com cedilha","Latin capital letter s with circumflex":"Símbolo latim maiúsculo S com acento circunflexo","Latin capital letter t with caron":"Símbolo latim maiúsculo T com caron","Latin capital letter t with cedilla":"Símbolo latim maiúsculo T com cedilha","Latin capital letter t with stroke":"Símbolo latin maiúsculo T com um traçado vertical","Latin capital letter u with breve":"Símbolo latim maiúsculo U com breve","Latin capital letter u with double acute":"Símbolo latim maiúsculo U com acento agudo duplo","Latin capital letter u with macron":"Símbolo latim maiúsculo I com macron","Latin capital letter u with ogonek":"Símbolo latim maiúsculo U com ogonek","Latin capital letter u with ring above":"Símbolo latim maiúsculo U com anel acima","Latin capital letter u with tilde":"Símbolo latim maiúsculo U com til","Latin capital letter w with circumflex":"Símbolo latim maiúsculo W com acento circunflexo","Latin capital letter y with circumflex":"Símbolo latim maiúsculo Y com acento circunflexo","Latin capital letter y with diaeresis":"Símbolo latim maiúsculo Z com trema","Latin capital letter z with acute":"Símbolo latim maiúsculo Z com acento agudo","Latin capital letter z with caron":"Símbolo latim maiúsculo Z com caron","Latin capital letter z with dot above":"Símbolo latim maiúsculo Z com ponto acima","Latin capital ligature ij":"Símbolo latin maiúsculo ligadura IJ","Latin capital ligature oe":"Símbolo latin maiúsculo ligadura OE","Latin small letter a with breve":"Símbolo latim minúsculo A com breve","Latin small letter a with macron":"Símbolo latim minúsculo A com macron","Latin small letter a with ogonek":"Símbolo latim minúsculo A com ogonek","Latin small letter c with acute":"Símbolo latim minúsculo C com acento agudo","Latin small letter c with caron":"Símbolo latim minúsculo C com caron","Latin small letter c with circumflex":"Símbolo latim minúsculo C com acento circunflexo","Latin small letter c with dot above":"Símbolo latim minúsculo C com ponto acima","Latin small letter d with caron":"Símbolo latim minúsculo D com caron","Latin small letter d with stroke":"Símbolo latin minúsculo D com um traçado vertical","Latin small letter dotless i":"Símbolo latin sem ponto I","Latin small letter e with breve":"Símbolo latim minúsculo E com breve","Latin small letter e with caron":"Símbolo latim minúsculo E com caron","Latin small letter e with dot above":"Símbolo latim minúsculo E com ponto acima","Latin small letter e with macron":"Símbolo latim minúsculo E com macron","Latin small letter e with ogonek":"Símbolo latim minúsculo E com ogonek","Latin small letter eng":"Símbolo latim minúsculo Eng","Latin small letter f with hook":"Símbolo latim minúsculo F com gancho","Latin small letter g with breve":"Símbolo latim minúsculo G com breve","Latin small letter g with cedilla":"Símbolo latim minúsculo G com cedilha","Latin small letter g with circumflex":"Símbolo latim minúsculo G com acento circunflexo","Latin small letter g with dot above":"Símbolo latim minúsculo G com ponto acima","Latin small letter h with circumflex":"Símbolo latim minúsculo H com acento circunflexo","Latin small letter h with stroke":"Símbolo latin minúsculo H com um traçado vertical","Latin small letter i with breve":"Símbolo latim minúsculo I com breve","Latin small letter i with macron":"Símbolo latim minúsculo I com macron","Latin small letter i with ogonek":"Símbolo latim minúsculo I com ogonek","Latin small letter i with tilde":"Símbolo latim minúsculo I com til","Latin small letter j with circumflex":"Símbolo latim minúsculo J com acento circunflexo","Latin small letter k with cedilla":"Símbolo latim minúsculo K com cedilha","Latin small letter kra":"Símbolo latin minúsculo K","Latin small letter l with acute":"Símbolo latim minúsculo I com acento agudo","Latin small letter l with caron":"Símbolo latim minúsculo I com caron","Latin small letter l with cedilla":"Símbolo latim minúsculo L com cedilha","Latin small letter l with middle dot":"Símbolo latin minúsculo L com ponto no meio","Latin small letter l with stroke":"Símbolo latin minúsculo L com um traçado vertical","Latin small letter long s":"Símbolo latim minúsculo long s","Latin small letter n preceded by apostrophe":"Símbolo latim minúsculo N precedido por apóstrofe","Latin small letter n with acute":"Símbolo latim minúsculo N com acento agudo","Latin small letter n with caron":"Símbolo latim minúsculo N com caron","Latin small letter n with cedilla":"Símbolo latim minúsculo N com cedilha","Latin small letter o with breve":"Símbolo latim minúsculo O com breve","Latin small letter o with double acute":"Símbolo latim minúsculo O com acento agudo duplo","Latin small letter o with macron":"Símbolo latim minúsculo O com macron","Latin small letter r with acute":"Símbolo latim minúsculo R com acento agudo","Latin small letter r with caron":"Símbolo latim minúsculo R com caron","Latin small letter r with cedilla":"Símbolo latim minúsculo R com cedilha","Latin small letter s with acute":"Símbolo latim minúsculo S com acento agudo","Latin small letter s with caron":"Símbolo latim minúsculo S com caron","Latin small letter s with cedilla":"Símbolo latim minúsculo S com cedilha","Latin small letter s with circumflex":"Símbolo latim minúsculo S com acento circunflexo","Latin small letter t with caron":"Símbolo latim minúsculo T com caron","Latin small letter t with cedilla":"Símbolo latim minúsculo T com cedilha","Latin small letter t with stroke":"Símbolo latin minúsculo T com um traçado vertical","Latin small letter u with breve":"Símbolo latim minúsculo U com breve","Latin small letter u with double acute":"Símbolo latim minúsculo U com acento agudo","Latin small letter u with macron":"Símbolo latim minúsculo U com macron","Latin small letter u with ogonek":"Símbolo latim minúsculo U com ogonek","Latin small letter u with ring above":"Símbolo latim minúsculo U com anel acima","Latin small letter u with tilde":"Símbolo latim minúsculo U com til","Latin small letter w with circumflex":"Símbolo latim minúsculo W com acento circunflexo","Latin small letter y with circumflex":"Símbolo latim minúsculo Y com acento circunflexo","Latin small letter z with acute":"Símbolo latim minúsculo Z com acento agudo","Latin small letter z with caron":"Símbolo latim minúsculo Z com caron","Latin small letter z with dot above":"Símbolo latim minúsculo Z com ponto acima","Latin small ligature ij":"Símbolo latin minúsculo ligadura IJ","Latin small ligature oe":"Símbolo latin minúsculo ligadura OE","Left double quotation mark":"Aspas dupla esquerda","Left single quotation mark":"Aspas simples esquerda","Left-pointing double angle quotation mark":"Aspas angulares duplas esquerda","leftwards arrow to bar":"seta para a esquerda para barra","leftwards dashed arrow":"Seta tracejada para esquerda","leftwards double arrow":"Seta dupla para esquerda","leftwards simple arrow":"seta simples para a esquerda","Less-than or equal to":"Menor que ou igual a","Less-than sign":"Sinal menor que","Lira sign":"Símbolo da Lira","Livre tournois sign":"Símbolo de Livre tournois","Logical and":"Operador lógico AND","Logical or":"Operador lógico OR",Macron:"Macron","Manat sign":"Símbolo do Manat","Mill sign":"Símbolo de Mill","Minus sign":"Sinal de menos","Multiplication sign":"Sinal de multiplicação","N-ary product":"Símbolo Produto N-ário","N-ary summation":"Somatório",Nabla:"Nabla","Naira sign":"Símbolo de Naira","New sheqel sign":"Símbolo do Novo Sheqel","Nordic mark sign":"Símbolo da Marca Nórdica","Not an element of":"Não é um elemento de","Not equal to":"Diferente de","Not sign":"Sinal de não","on with exclamation mark with left right arrow above":"com ponto de exclamação com a seta esquerda direita acima",Overline:"Sobrepor","Paragraph sign":"Símbolo de parágrafo","Partial differential":"Diferencial parcial","Per mille sign":"Símbolo de por 1 mil","Per ten thousand sign":"Símbolo de por 10 mil","Peseta sign":"Símbolo de Peseta","Peso sign":"Sinal de Peso","Plus-minus sign":"Sinal de mais ou menos","Pound sign":"Símbolo de Libra","Proportional to":"Proporcional a","Question exclamation mark":"Ponto de interrogação","Registered sign":"Símbolo de registrado","Reversed paragraph sign":"Símbolo de parágrafo reverso","Right double quotation mark":"Aspas dupla direita","Right single quotation mark":"Aspas simples direita","Right-pointing double angle quotation mark":"Aspas angulares duplas direita","rightwards arrow to bar":"seta para a direita para barra","rightwards dashed arrow":"Seta tracejada para direita","rightwards double arrow":"Seta dupla para direita","rightwards simple arrow":"seta simples para a direita","Ruble sign":"Símbolo do Rublo Russo","Rupee sign":"Símbolo da Rupia","Section sign":"Símbolo de seleção","Single left-pointing angle quotation mark":"Aspas angulares simples esquerda","Single low-9 quotation mark":"Aspas baixas simples","Single right-pointing angle quotation mark":"Aspas angulares simples direita","soon with rightwards arrow above":"Símbolo soon com a seta para a direita acima","Special characters":"Caracteres especiais","Spesmilo sign":"Símbolo do Spesmilo","Square root":"Raiz quadrada","Tenge sign":"Símbolo do Tenge","There exists":"Existe","Tilde operator":"Operador til","top with upwards arrow above":"Símbolo topo com a seta para cima acima","Trade mark sign":"Símbolo de marca registrada","Tugrik sign":"Símbolo de Tugrik","Turkish lira sign":"Símbolo da Lira Turca","Two dot leader":"Dois pontos",Union:"União","up down arrow with base":"seta para baixo com base","upwards arrow to bar":"seta para cima para barra","upwards dashed arrow":"Seta tracejada para cima","upwards double arrow":"Seta dupla para cima","upwards simple arrow":"seta simples para cima","Vulgar fraction one half":"Fração um meio","Vulgar fraction one quarter":"Fração um quarto","Vulgar fraction three quarters":"Fração três quartos","Won sign":"Símbolo do Won","Yen sign":"Símbolo do Yen"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/special-characters/translations/pt.js b/core/assets/vendor/ckeditor5/special-characters/translations/pt.js
index ac7db116dc..f0bfbe8dbc 100644
--- a/core/assets/vendor/ckeditor5/special-characters/translations/pt.js
+++ b/core/assets/vendor/ckeditor5/special-characters/translations/pt.js
@@ -1 +1 @@
-!function(a){const t=a.pt=a.pt||{};t.dictionary=Object.assign(t.dictionary||{},{"Almost equal to":"Quase igual a",Angle:"Ângulo","Approximately equal to":"Aproximadamente igual a","Asterisk operator":"Operador asterisco","Austral sign":"Sinal de austral","back with leftwards arrow above":'"back" com seta para a esquerda em cima',"Bitcoin sign":"Sinal de bitcoin","Cedi sign":"Sinal de cedi","Cent sign":"Sinal de cêntimo","Character categories":"Categorias de carateres","Colon sign":"Sinal de colombo","Contains as member":"Contém como membro","Copyright sign":"Sinal de copyright","Cruzeiro sign":"Sinal de cruzeiro","Currency sign":"Sinal monetário","Degree sign":"Sinal de grau","Division sign":"Sinal de divisão","Dollar sign":"Cifrão","Dong sign":"Sinal de dong","Double dagger":"Óbelo duplo","Double exclamation mark":"Ponto de exclamação duplo","Double low-9 quotation mark":"Aspas curvas inferiores","Double question mark":"Duplo ponto de interrogação","downwards arrow to bar":"seta para baixo contra uma barra","downwards dashed arrow":"seta tracejada para baixo","downwards double arrow":"seta dupla para baixo","Drachma sign":"Sinal de dracma","Element of":"Elemento de","Em dash":"Travessão","Empty set":"Conjunto vazio","En dash":"Traço","end with leftwards arrow above":'"end" com seta para a esquerda em cima',"Euro sign":"Sinal de euro","Euro-currency sign":"Sinal monetário do euro","Exclamation question mark":"Sinal de interrogação exclamativa","For all":"Para todo","Fraction slash":"Barra de fração","French franc sign":"Sinal de franco francês","German penny sign":"Sinal de fénigue alemão","Greater-than or equal to":"Maior que ou igual a","Greater-than sign":"Sinal de maior","Guarani sign":"Sinal de guarani","Horizontal ellipsis":"Reticências horizontais","Hryvnia sign":"Sinal de grívnia","Identical to":"Idêntico a","Indian rupee sign":"Sinal de rupia indiana",Infinity:"Infinito",Integral:"Inteiro",Intersection:"Interseção","Inverted exclamation mark":"Ponto de exclamação invertido","Inverted question mark":"Ponto de interrogação invertido","Kip sign":"Sinal de kip","Latin capital letter a with breve":"Latim - letra maiúscula a com breve","Latin capital letter a with macron":"Latim - letra maiúscula a com mácron","Latin capital letter a with ogonek":"Latim - letra maiúscula a com ogonek","Latin capital letter c with acute":"Latim - letra maiúscula c com acento agudo","Latin capital letter c with caron":"Latim - letra maiúscula c com cáron","Latin capital letter c with circumflex":"Latim - letra maiúscula c com acento circunflexo","Latin capital letter c with dot above":"Latim - letra maiúscula c com um ponto por cima","Latin capital letter d with caron":"Latim - letra maiúscula d com cáron","Latin capital letter d with stroke":"Latim - letra maiúscula d cortada por um traço","Latin capital letter e with breve":"Latim - letra maiúscula e com breve","Latin capital letter e with caron":"Latim - letra maiúscula e com cáron","Latin capital letter e with dot above":"Latim - letra maiúscula e com um ponto por cima","Latin capital letter e with macron":"Latim - letra maiúscula e com mácron","Latin capital letter e with ogonek":"Latim - letra maiúscula e com ogonek","Latin capital letter eng":"Latim - letra maiúscula eng (fonema velar nasal)","Latin capital letter g with breve":"Latim - letra maiúscula g com breve","Latin capital letter g with cedilla":"Latim - letra maiúscula g com cedilha","Latin capital letter g with circumflex":"Latim - letra maiúscula g com acento circunflexo","Latin capital letter g with dot above":"Latim - letra maiúscula g com um ponto por cima","Latin capital letter h with circumflex":"Latim - letra maiúscula h com acento circunflexo","Latin capital letter h with stroke":"Latim - letra maiúscula h cortada por um traço","Latin capital letter i with breve":"Latim - letra maiúscula i com breve","Latin capital letter i with dot above":"Latim - letra maiúscula i com um ponto por cima","Latin capital letter i with macron":"Latim - letra maiúscula i com mácron","Latin capital letter i with ogonek":"Latim - letra maiúscula i com ogonek","Latin capital letter i with tilde":"Latim - letra maiúscula i com til","Latin capital letter j with circumflex":"Latim - letra maiúscula j com acento circunflexo","Latin capital letter k with cedilla":"Latim - letra maiúscula k com cedilha","Latin capital letter l with acute":"Latim - letra maiúscula l com acento agudo","Latin capital letter l with caron":"Latim - letra maiúscula l com cáron","Latin capital letter l with cedilla":"Latim - letra maiúscula l com cedilha","Latin capital letter l with middle dot":"Latim - letra maiúscula l com ponto central","Latin capital letter l with stroke":"Latim - letra maiúscula l cortada por um traço","Latin capital letter n with acute":"Latim - letra maiúscula n com acento agudo","Latin capital letter n with caron":"Latim - letra maiúscula n com cáron","Latin capital letter n with cedilla":"Latim - letra maiúscula n com cedilha","Latin capital letter o with breve":"Latim - letra maiúscula o com breve","Latin capital letter o with double acute":"Latim - letra maiúscula o com acento agudo duplo","Latin capital letter o with macron":"Latim - letra maiúscula o com mácron","Latin capital letter r with acute":"Latim - letra maiúscula r com acento agudo","Latin capital letter r with caron":"Latim - letra maiúscula r com cáron","Latin capital letter r with cedilla":"Latim - letra maiúscula r com cedilha","Latin capital letter s with acute":"Latim - letra maiúscula s com acento agudo","Latin capital letter s with caron":"Latim - letra maiúscula s com cáron","Latin capital letter s with cedilla":"Latim - letra maiúscula s com cedilha","Latin capital letter s with circumflex":"Latim - letra maiúscula s com acento circunflexo","Latin capital letter t with caron":"Latim - letra maiúscula t com cáron","Latin capital letter t with cedilla":"Latim - letra maiúscula t com cedilha","Latin capital letter t with stroke":"Latim - letra maiúscula t cortada por um traço","Latin capital letter u with breve":"Latim - letra maiúscula u com breve","Latin capital letter u with double acute":"Latim - letra maiúscula u com acento agudo duplo","Latin capital letter u with macron":"Latim - letra maiúscula u com mácron","Latin capital letter u with ogonek":"Latim - letra maiúscula u com ogonek","Latin capital letter u with ring above":"Latim - letra maiúscula u com círculo por cima","Latin capital letter u with tilde":"Latim - letra maiúscula u com til","Latin capital letter w with circumflex":"Latim - letra maiúscula w com acento circunflexo","Latin capital letter y with circumflex":"Latim - letra maiúscula y com acento circunflexo","Latin capital letter y with diaeresis":"Latim - letra maiúscula y com trema","Latin capital letter z with acute":"Latim - letra maiúscula z com acento agudo","Latin capital letter z with caron":"Latim - letra maiúscula z com cáron","Latin capital letter z with dot above":"Latim - letra maiúscula z com um ponto por cima","Latin capital ligature ij":"Latim - digrama das letras maiúsculas ligadas ij","Latin capital ligature oe":"Latim - digrama das letras maiúsculas ligadas oe","Latin small letter a with breve":"Latim - letra minúscula a com breve","Latin small letter a with macron":"Latim - letra minúscula a com mácron","Latin small letter a with ogonek":"Latim - letra minúscula a com ogonek","Latin small letter c with acute":"Latim - letra minúscula c com acento agudo","Latin small letter c with caron":"Latim - letra minúscula c com cáron","Latin small letter c with circumflex":"Latim - letra minúscula c com acento circunflexo","Latin small letter c with dot above":"Latim - letra minúscula c com um ponto por cima","Latin small letter d with caron":"Latim - letra minúscula d com cáron","Latin small letter d with stroke":"Latim - letra minúscula d cortada por um traço","Latin small letter dotless i":"Latim - letra minúscula i, sem ponto","Latin small letter e with breve":"Latim - letra minúscula e com breve","Latin small letter e with caron":"Latim - letra minúscula e com cáron","Latin small letter e with dot above":"Latim - letra minúscula e com um ponto por cima","Latin small letter e with macron":"Latim - letra minúscula e com mácron","Latin small letter e with ogonek":"Latim - letra minúscula e com ogonek","Latin small letter eng":"Latim - letra minúscula eng (fonema velar nasal)","Latin small letter f with hook":"Latim - letra minúscula f com gancho","Latin small letter g with breve":"Latim - letra minúscula g com breve","Latin small letter g with cedilla":"Latim - letra minúscula g com cedilha","Latin small letter g with circumflex":"Latim - letra minúscula g com acento circunflexo","Latin small letter g with dot above":"Latim - letra minúscula g com um ponto por cima","Latin small letter h with circumflex":"Latim - letra minúscula h com acento circunflexo","Latin small letter h with stroke":"Latim - letra minúscula h cortada por um traço","Latin small letter i with breve":"Latim - letra minúscula i com breve","Latin small letter i with macron":"Latim - letra minúscula i com mácron","Latin small letter i with ogonek":"Latim - letra minúscula i com ogonek","Latin small letter i with tilde":"Latim - letra minúscula i com til","Latin small letter j with circumflex":"Latim - letra minúscula j com acento circunflexo","Latin small letter k with cedilla":"Latim - letra minúscula k com cedilha","Latin small letter kra":"Latim - letra minúscula kra (pequeno k)","Latin small letter l with acute":"Latim - letra minúscula l com acento agudo","Latin small letter l with caron":"Latim - letra minúscula l com cáron","Latin small letter l with cedilla":"Latim - letra minúscula l com cedilha","Latin small letter l with middle dot":"Latim - letra minúscula l com ponto central","Latin small letter l with stroke":"Latim - letra minúscula l cortada por um traço","Latin small letter long s":"Latim - s prolongado (símbolo do fonema fricativo alveolar surdo)","Latin small letter n preceded by apostrophe":"Latim - letra minúscula n precedida por um apóstrofo","Latin small letter n with acute":"Latim - letra minúscula n com acento agudo","Latin small letter n with caron":"Latim - letra minúscula n com cáron","Latin small letter n with cedilla":"Latim - letra minúscula n com cedilha","Latin small letter o with breve":"Latim - letra minúscula o com breve","Latin small letter o with double acute":"Latim - letra minúscula o com acento agudo duplo","Latin small letter o with macron":"Latim - letra minúscula o com mácron","Latin small letter r with acute":"Latim - letra minúscula r com acento agudo","Latin small letter r with caron":"Latim - letra minúscula r com cáron","Latin small letter r with cedilla":"Latim - letra minúscula r com cedilha","Latin small letter s with acute":"Latim - letra minúscula s com acento agudo","Latin small letter s with caron":"Latim - letra minúscula s com cáron","Latin small letter s with cedilla":"Latim - letra minúscula s com cedilha","Latin small letter s with circumflex":"Latim - letra minúscula s com acento circunflexo","Latin small letter t with caron":"Latim - letra minúscula t com cáron","Latin small letter t with cedilla":"Latim - letra minúscula t com cedilha","Latin small letter t with stroke":"Latim - letra minúscula t cortada por um traço","Latin small letter u with breve":"Latim - letra minúscula u com breve","Latin small letter u with double acute":"Latim - letra minúscula u com acento agudo duplo","Latin small letter u with macron":"Latim - letra minúscula u com mácron","Latin small letter u with ogonek":"Latim - letra minúscula u com ogonek","Latin small letter u with ring above":"Latim - letra minúscula u com círculo por cima","Latin small letter u with tilde":"Latim - letra minúscula u com til","Latin small letter w with circumflex":"Latim - letra minúscula w com acento circunflexo","Latin small letter y with circumflex":"Latim - letra minúscula y com acento circunflexo","Latin small letter z with acute":"Latim - letra minúscula z com acento agudo","Latin small letter z with caron":"Latim - letra minúscula z com cáron","Latin small letter z with dot above":"Latim - letra minúscula z com um ponto por cima","Latin small ligature ij":"Latim - digrama das letras minúsculas ligadas ij","Latin small ligature oe":"Latim - digrama das letras minúsculas ligadas oe","Left double quotation mark":"Aspas esquerdas","Left single quotation mark":"Plica esquerda","Left-pointing double angle quotation mark":"Aspas esquerdas em ângulo","leftwards arrow to bar":"seta para a esquerda contra uma barra","leftwards dashed arrow":"seta tracejada para a esquerda","leftwards double arrow":"seta dupla para a esquerda","Less-than or equal to":"Menor que ou igual a","Less-than sign":"Sinal de menor","Lira sign":"Sinal de lira","Livre tournois sign":"Sinal de libra de tours","Logical and":"E lógico","Logical or":"Ou lógico",Macron:"Mácron","Manat sign":"Sinal de manat","Mill sign":"Sinal de mill","Minus sign":"Sinal de subtração","Multiplication sign":"Sinal de multiplicação","N-ary product":"N-ésimo produto","N-ary summation":"N-ésimo somatório",Nabla:"Nabla","Naira sign":"Sinal de naira","New sheqel sign":"Sinal de novo sheqel","Nordic mark sign":"Sinal de marca nórdica","Not an element of":"Não é um elemento de","Not equal to":"Diferente de","Not sign":"Sinal de negação","on with exclamation mark with left right arrow above":'"on" com sinal de exclamação com seta para a direita e para a esquerda em cima',Overline:"Linha sobreposta","Paragraph sign":"Sinal de parágrafo","Partial differential":"Diferencial parcial","Per mille sign":"Sinal de permilagem","Per ten thousand sign":"Razão de um para dez mil","Peseta sign":"Sinal de peseta","Peso sign":"Sinal de peso","Plus-minus sign":"Sinal de adição-subtração","Pound sign":"Sinal de libra","Proportional to":"Proporcional a","Question exclamation mark":"Sinal de exclamação interrogativa","Registered sign":"Sinal de registado","Reversed paragraph sign":"Sinal de parágrafo invertido","Right double quotation mark":"Aspas direitas","Right single quotation mark":"Plica direita","Right-pointing double angle quotation mark":"Aspas direitas em ângulo","rightwards arrow to bar":"seta para a direita contra uma barra","rightwards dashed arrow":"seta tracejada para a direita","rightwards double arrow":"seta dupla para a direita","Ruble sign":"Sinal de rublo","Rupee sign":"Sinal de rupia","Section sign":"Sinal de secção","Single left-pointing angle quotation mark":"Plica esquerda em ângulo","Single low-9 quotation mark":"Plica curva inferior","Single right-pointing angle quotation mark":"Plica direita em ângulo","soon with rightwards arrow above":'"soon" com seta para a direita em cima',"Special characters":"Carateres especiais","Spesmilo sign":"Sinal de spesmilo","Square root":"Raiz quadrada","Tenge sign":"Sinal de tengue","There exists":"Existe","Tilde operator":"Operador de til","top with upwards arrow above":'"Top" com seta para cima em cima',"Trade mark sign":"Sinal de marca comercial","Tugrik sign":"Sinal de tugrique","Turkish lira sign":"Sinal de lira turca","Two dot leader":"Dois pontos de seguimento",Union:"União","up down arrow with base":"seta bidirecional vertical com base","upwards arrow to bar":"seta para cima contra uma barra","upwards dashed arrow":"seta tracejada para cima","upwards double arrow":"seta dupla para cima","Vulgar fraction one half":"Fração comum - um meio","Vulgar fraction one quarter":"Fração comum - um quarto","Vulgar fraction three quarters":"Fração comum - três quartos","Won sign":"Sinal de won","Yen sign":"Sinal de iene"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(a){const t=a.pt=a.pt||{};t.dictionary=Object.assign(t.dictionary||{},{"Almost equal to":"Quase igual a",Angle:"Ângulo","Approximately equal to":"Aproximadamente igual a","Asterisk operator":"Operador asterisco","Austral sign":"Sinal de austral","back with leftwards arrow above":'"back" com seta para a esquerda em cima',"Bitcoin sign":"Sinal de bitcoin","Cedi sign":"Sinal de cedi","Cent sign":"Sinal de cêntimo","Character categories":"Categorias de carateres","Colon sign":"Sinal de colombo","Contains as member":"Contém como membro","Copyright sign":"Sinal de copyright","Cruzeiro sign":"Sinal de cruzeiro","Currency sign":"Sinal monetário","Degree sign":"Sinal de grau","Division sign":"Sinal de divisão","Dollar sign":"Cifrão","Dong sign":"Sinal de dong","Double dagger":"Óbelo duplo","Double exclamation mark":"Ponto de exclamação duplo","Double low-9 quotation mark":"Aspas curvas inferiores","Double question mark":"Duplo ponto de interrogação","downwards arrow to bar":"seta para baixo contra uma barra","downwards dashed arrow":"seta tracejada para baixo","downwards double arrow":"seta dupla para baixo","downwards simple arrow":"seta simples para baixo","Drachma sign":"Sinal de dracma","Element of":"Elemento de","Em dash":"Travessão","Empty set":"Conjunto vazio","En dash":"Traço","end with leftwards arrow above":'"end" com seta para a esquerda em cima',"Euro sign":"Sinal de euro","Euro-currency sign":"Sinal monetário do euro","Exclamation question mark":"Sinal de interrogação exclamativa","For all":"Para todo","Fraction slash":"Barra de fração","French franc sign":"Sinal de franco francês","German penny sign":"Sinal de fénigue alemão","Greater-than or equal to":"Maior que ou igual a","Greater-than sign":"Sinal de maior","Guarani sign":"Sinal de guarani","Horizontal ellipsis":"Reticências horizontais","Hryvnia sign":"Sinal de grívnia","Identical to":"Idêntico a","Indian rupee sign":"Sinal de rupia indiana",Infinity:"Infinito",Integral:"Inteiro",Intersection:"Interseção","Inverted exclamation mark":"Ponto de exclamação invertido","Inverted question mark":"Ponto de interrogação invertido","Kip sign":"Sinal de kip","Latin capital letter a with breve":"Latim - letra maiúscula a com breve","Latin capital letter a with macron":"Latim - letra maiúscula a com mácron","Latin capital letter a with ogonek":"Latim - letra maiúscula a com ogonek","Latin capital letter c with acute":"Latim - letra maiúscula c com acento agudo","Latin capital letter c with caron":"Latim - letra maiúscula c com cáron","Latin capital letter c with circumflex":"Latim - letra maiúscula c com acento circunflexo","Latin capital letter c with dot above":"Latim - letra maiúscula c com um ponto por cima","Latin capital letter d with caron":"Latim - letra maiúscula d com cáron","Latin capital letter d with stroke":"Latim - letra maiúscula d cortada por um traço","Latin capital letter e with breve":"Latim - letra maiúscula e com breve","Latin capital letter e with caron":"Latim - letra maiúscula e com cáron","Latin capital letter e with dot above":"Latim - letra maiúscula e com um ponto por cima","Latin capital letter e with macron":"Latim - letra maiúscula e com mácron","Latin capital letter e with ogonek":"Latim - letra maiúscula e com ogonek","Latin capital letter eng":"Latim - letra maiúscula eng (fonema velar nasal)","Latin capital letter g with breve":"Latim - letra maiúscula g com breve","Latin capital letter g with cedilla":"Latim - letra maiúscula g com cedilha","Latin capital letter g with circumflex":"Latim - letra maiúscula g com acento circunflexo","Latin capital letter g with dot above":"Latim - letra maiúscula g com um ponto por cima","Latin capital letter h with circumflex":"Latim - letra maiúscula h com acento circunflexo","Latin capital letter h with stroke":"Latim - letra maiúscula h cortada por um traço","Latin capital letter i with breve":"Latim - letra maiúscula i com breve","Latin capital letter i with dot above":"Latim - letra maiúscula i com um ponto por cima","Latin capital letter i with macron":"Latim - letra maiúscula i com mácron","Latin capital letter i with ogonek":"Latim - letra maiúscula i com ogonek","Latin capital letter i with tilde":"Latim - letra maiúscula i com til","Latin capital letter j with circumflex":"Latim - letra maiúscula j com acento circunflexo","Latin capital letter k with cedilla":"Latim - letra maiúscula k com cedilha","Latin capital letter l with acute":"Latim - letra maiúscula l com acento agudo","Latin capital letter l with caron":"Latim - letra maiúscula l com cáron","Latin capital letter l with cedilla":"Latim - letra maiúscula l com cedilha","Latin capital letter l with middle dot":"Latim - letra maiúscula l com ponto central","Latin capital letter l with stroke":"Latim - letra maiúscula l cortada por um traço","Latin capital letter n with acute":"Latim - letra maiúscula n com acento agudo","Latin capital letter n with caron":"Latim - letra maiúscula n com cáron","Latin capital letter n with cedilla":"Latim - letra maiúscula n com cedilha","Latin capital letter o with breve":"Latim - letra maiúscula o com breve","Latin capital letter o with double acute":"Latim - letra maiúscula o com acento agudo duplo","Latin capital letter o with macron":"Latim - letra maiúscula o com mácron","Latin capital letter r with acute":"Latim - letra maiúscula r com acento agudo","Latin capital letter r with caron":"Latim - letra maiúscula r com cáron","Latin capital letter r with cedilla":"Latim - letra maiúscula r com cedilha","Latin capital letter s with acute":"Latim - letra maiúscula s com acento agudo","Latin capital letter s with caron":"Latim - letra maiúscula s com cáron","Latin capital letter s with cedilla":"Latim - letra maiúscula s com cedilha","Latin capital letter s with circumflex":"Latim - letra maiúscula s com acento circunflexo","Latin capital letter t with caron":"Latim - letra maiúscula t com cáron","Latin capital letter t with cedilla":"Latim - letra maiúscula t com cedilha","Latin capital letter t with stroke":"Latim - letra maiúscula t cortada por um traço","Latin capital letter u with breve":"Latim - letra maiúscula u com breve","Latin capital letter u with double acute":"Latim - letra maiúscula u com acento agudo duplo","Latin capital letter u with macron":"Latim - letra maiúscula u com mácron","Latin capital letter u with ogonek":"Latim - letra maiúscula u com ogonek","Latin capital letter u with ring above":"Latim - letra maiúscula u com círculo por cima","Latin capital letter u with tilde":"Latim - letra maiúscula u com til","Latin capital letter w with circumflex":"Latim - letra maiúscula w com acento circunflexo","Latin capital letter y with circumflex":"Latim - letra maiúscula y com acento circunflexo","Latin capital letter y with diaeresis":"Latim - letra maiúscula y com trema","Latin capital letter z with acute":"Latim - letra maiúscula z com acento agudo","Latin capital letter z with caron":"Latim - letra maiúscula z com cáron","Latin capital letter z with dot above":"Latim - letra maiúscula z com um ponto por cima","Latin capital ligature ij":"Latim - digrama das letras maiúsculas ligadas ij","Latin capital ligature oe":"Latim - digrama das letras maiúsculas ligadas oe","Latin small letter a with breve":"Latim - letra minúscula a com breve","Latin small letter a with macron":"Latim - letra minúscula a com mácron","Latin small letter a with ogonek":"Latim - letra minúscula a com ogonek","Latin small letter c with acute":"Latim - letra minúscula c com acento agudo","Latin small letter c with caron":"Latim - letra minúscula c com cáron","Latin small letter c with circumflex":"Latim - letra minúscula c com acento circunflexo","Latin small letter c with dot above":"Latim - letra minúscula c com um ponto por cima","Latin small letter d with caron":"Latim - letra minúscula d com cáron","Latin small letter d with stroke":"Latim - letra minúscula d cortada por um traço","Latin small letter dotless i":"Latim - letra minúscula i, sem ponto","Latin small letter e with breve":"Latim - letra minúscula e com breve","Latin small letter e with caron":"Latim - letra minúscula e com cáron","Latin small letter e with dot above":"Latim - letra minúscula e com um ponto por cima","Latin small letter e with macron":"Latim - letra minúscula e com mácron","Latin small letter e with ogonek":"Latim - letra minúscula e com ogonek","Latin small letter eng":"Latim - letra minúscula eng (fonema velar nasal)","Latin small letter f with hook":"Latim - letra minúscula f com gancho","Latin small letter g with breve":"Latim - letra minúscula g com breve","Latin small letter g with cedilla":"Latim - letra minúscula g com cedilha","Latin small letter g with circumflex":"Latim - letra minúscula g com acento circunflexo","Latin small letter g with dot above":"Latim - letra minúscula g com um ponto por cima","Latin small letter h with circumflex":"Latim - letra minúscula h com acento circunflexo","Latin small letter h with stroke":"Latim - letra minúscula h cortada por um traço","Latin small letter i with breve":"Latim - letra minúscula i com breve","Latin small letter i with macron":"Latim - letra minúscula i com mácron","Latin small letter i with ogonek":"Latim - letra minúscula i com ogonek","Latin small letter i with tilde":"Latim - letra minúscula i com til","Latin small letter j with circumflex":"Latim - letra minúscula j com acento circunflexo","Latin small letter k with cedilla":"Latim - letra minúscula k com cedilha","Latin small letter kra":"Latim - letra minúscula kra (pequeno k)","Latin small letter l with acute":"Latim - letra minúscula l com acento agudo","Latin small letter l with caron":"Latim - letra minúscula l com cáron","Latin small letter l with cedilla":"Latim - letra minúscula l com cedilha","Latin small letter l with middle dot":"Latim - letra minúscula l com ponto central","Latin small letter l with stroke":"Latim - letra minúscula l cortada por um traço","Latin small letter long s":"Latim - s prolongado (símbolo do fonema fricativo alveolar surdo)","Latin small letter n preceded by apostrophe":"Latim - letra minúscula n precedida por um apóstrofo","Latin small letter n with acute":"Latim - letra minúscula n com acento agudo","Latin small letter n with caron":"Latim - letra minúscula n com cáron","Latin small letter n with cedilla":"Latim - letra minúscula n com cedilha","Latin small letter o with breve":"Latim - letra minúscula o com breve","Latin small letter o with double acute":"Latim - letra minúscula o com acento agudo duplo","Latin small letter o with macron":"Latim - letra minúscula o com mácron","Latin small letter r with acute":"Latim - letra minúscula r com acento agudo","Latin small letter r with caron":"Latim - letra minúscula r com cáron","Latin small letter r with cedilla":"Latim - letra minúscula r com cedilha","Latin small letter s with acute":"Latim - letra minúscula s com acento agudo","Latin small letter s with caron":"Latim - letra minúscula s com cáron","Latin small letter s with cedilla":"Latim - letra minúscula s com cedilha","Latin small letter s with circumflex":"Latim - letra minúscula s com acento circunflexo","Latin small letter t with caron":"Latim - letra minúscula t com cáron","Latin small letter t with cedilla":"Latim - letra minúscula t com cedilha","Latin small letter t with stroke":"Latim - letra minúscula t cortada por um traço","Latin small letter u with breve":"Latim - letra minúscula u com breve","Latin small letter u with double acute":"Latim - letra minúscula u com acento agudo duplo","Latin small letter u with macron":"Latim - letra minúscula u com mácron","Latin small letter u with ogonek":"Latim - letra minúscula u com ogonek","Latin small letter u with ring above":"Latim - letra minúscula u com círculo por cima","Latin small letter u with tilde":"Latim - letra minúscula u com til","Latin small letter w with circumflex":"Latim - letra minúscula w com acento circunflexo","Latin small letter y with circumflex":"Latim - letra minúscula y com acento circunflexo","Latin small letter z with acute":"Latim - letra minúscula z com acento agudo","Latin small letter z with caron":"Latim - letra minúscula z com cáron","Latin small letter z with dot above":"Latim - letra minúscula z com um ponto por cima","Latin small ligature ij":"Latim - digrama das letras minúsculas ligadas ij","Latin small ligature oe":"Latim - digrama das letras minúsculas ligadas oe","Left double quotation mark":"Aspas esquerdas","Left single quotation mark":"Plica esquerda","Left-pointing double angle quotation mark":"Aspas esquerdas em ângulo","leftwards arrow to bar":"seta para a esquerda contra uma barra","leftwards dashed arrow":"seta tracejada para a esquerda","leftwards double arrow":"seta dupla para a esquerda","leftwards simple arrow":"seta simples para a esquerda","Less-than or equal to":"Menor que ou igual a","Less-than sign":"Sinal de menor","Lira sign":"Sinal de lira","Livre tournois sign":"Sinal de libra de tours","Logical and":"E lógico","Logical or":"Ou lógico",Macron:"Mácron","Manat sign":"Sinal de manat","Mill sign":"Sinal de mill","Minus sign":"Sinal de subtração","Multiplication sign":"Sinal de multiplicação","N-ary product":"N-ésimo produto","N-ary summation":"N-ésimo somatório",Nabla:"Nabla","Naira sign":"Sinal de naira","New sheqel sign":"Sinal de novo sheqel","Nordic mark sign":"Sinal de marca nórdica","Not an element of":"Não é um elemento de","Not equal to":"Diferente de","Not sign":"Sinal de negação","on with exclamation mark with left right arrow above":'"on" com sinal de exclamação com seta para a direita e para a esquerda em cima',Overline:"Linha sobreposta","Paragraph sign":"Sinal de parágrafo","Partial differential":"Diferencial parcial","Per mille sign":"Sinal de permilagem","Per ten thousand sign":"Razão de um para dez mil","Peseta sign":"Sinal de peseta","Peso sign":"Sinal de peso","Plus-minus sign":"Sinal de adição-subtração","Pound sign":"Sinal de libra","Proportional to":"Proporcional a","Question exclamation mark":"Sinal de exclamação interrogativa","Registered sign":"Sinal de registado","Reversed paragraph sign":"Sinal de parágrafo invertido","Right double quotation mark":"Aspas direitas","Right single quotation mark":"Plica direita","Right-pointing double angle quotation mark":"Aspas direitas em ângulo","rightwards arrow to bar":"seta para a direita contra uma barra","rightwards dashed arrow":"seta tracejada para a direita","rightwards double arrow":"seta dupla para a direita","rightwards simple arrow":"seta simples para a direita","Ruble sign":"Sinal de rublo","Rupee sign":"Sinal de rupia","Section sign":"Sinal de secção","Single left-pointing angle quotation mark":"Plica esquerda em ângulo","Single low-9 quotation mark":"Plica curva inferior","Single right-pointing angle quotation mark":"Plica direita em ângulo","soon with rightwards arrow above":'"soon" com seta para a direita em cima',"Special characters":"Carateres especiais","Spesmilo sign":"Sinal de spesmilo","Square root":"Raiz quadrada","Tenge sign":"Sinal de tengue","There exists":"Existe","Tilde operator":"Operador de til","top with upwards arrow above":'"Top" com seta para cima em cima',"Trade mark sign":"Sinal de marca comercial","Tugrik sign":"Sinal de tugrique","Turkish lira sign":"Sinal de lira turca","Two dot leader":"Dois pontos de seguimento",Union:"União","up down arrow with base":"seta bidirecional vertical com base","upwards arrow to bar":"seta para cima contra uma barra","upwards dashed arrow":"seta tracejada para cima","upwards double arrow":"seta dupla para cima","upwards simple arrow":"seta simples para cima","Vulgar fraction one half":"Fração comum - um meio","Vulgar fraction one quarter":"Fração comum - um quarto","Vulgar fraction three quarters":"Fração comum - três quartos","Won sign":"Sinal de won","Yen sign":"Sinal de iene"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/special-characters/translations/ro.js b/core/assets/vendor/ckeditor5/special-characters/translations/ro.js
index c5c7725d0a..f6944a835f 100644
--- a/core/assets/vendor/ckeditor5/special-characters/translations/ro.js
+++ b/core/assets/vendor/ckeditor5/special-characters/translations/ro.js
@@ -1 +1 @@
-!function(t){const a=t.ro=t.ro||{};a.dictionary=Object.assign(a.dictionary||{},{"Almost equal to":"Aproape egal cu",Angle:"Unghi","Approximately equal to":"Aproximativ egal cu","Asterisk operator":"Operatorul asterisc","Austral sign":"Simbolul pentru austral","back with leftwards arrow above":"înapoi cu săgeată spre stânga deasupra","Bitcoin sign":"Simbolul pentru Bitcoin","Cedi sign":"Simbolul pentru cedi","Cent sign":"Simbolul pentru cent","Character categories":"Categorii de caractere","Colon sign":"Două puncte","Contains as member":"Conține ca membru","Copyright sign":"Simbolul pentru copyright","Cruzeiro sign":"Simbolul pentru cruzeiro","Currency sign":"Simbolul pentru valută","Degree sign":"Simbolul pentru grad","Division sign":"Semnul împărțirii","Dollar sign":"Simbolul dolarului","Dong sign":"Simbolul pentru dong","Double dagger":"Dublă obelă (dagger)","Double exclamation mark":"Semnul exclamării dublu","Double low-9 quotation mark":"Ghilimele jos în formă de 99","Double question mark":"Doublu semnul întrebării","downwards arrow to bar":"săgeată în jos spre bară","downwards dashed arrow":"săgeată în jos cu linie întreruptă","downwards double arrow":"săgeată dublă în jos","Drachma sign":"Simbolul pentru drahmă","Element of":"Element al","Em dash":"Linie de dialog (em dash)","Empty set":"Mulțimea vidă","En dash":"Linie de pauză (en dash)","end with leftwards arrow above":"sfârșit cu săgeată spre stânga deasupra","Euro sign":"Simbolul euro","Euro-currency sign":"Simbolul monedei euro","Exclamation question mark":"Semnele exclamării și întrebării","For all":"Pentru toți","Fraction slash":"Bară de fracție (oblică)","French franc sign":"Simbolul pentru francul francez","German penny sign":"Simbolul pentru pfenigul german","Greater-than or equal to":"Simbolul „mai mare sau egal”","Greater-than sign":"Simbolul „mai mare decât”","Guarani sign":"Simbolul pentru guarani","Horizontal ellipsis":"Puncte de suspensie","Hryvnia sign":"Simbolul pentru grivnă (hrivnă)","Identical to":"Identic cu","Indian rupee sign":"Simbolul pentru rupia indiană",Infinity:"Infinit",Integral:"Integrală",Intersection:"Intersecție","Inverted exclamation mark":"Semnul exclamării inversat","Inverted question mark":"Semnul întrebării inversat","Kip sign":"Simbolul pentru kip","Latin capital letter a with breve":"Litera A majusculă cu breve („căciulă”)","Latin capital letter a with macron":"Litera A majusculă cu macron","Latin capital letter a with ogonek":"Litera A majusculă cu codiță (ogonek)","Latin capital letter c with acute":"Litera C majusculă cu accent ascuțit","Latin capital letter c with caron":"Litera C majusculă cu caron (circumflex inversat)","Latin capital letter c with circumflex":"Litera C majusculă cu accent circumflex","Latin capital letter c with dot above":"Litera C majusculă cu punct deasupra","Latin capital letter d with caron":"Litera D majusculă cu caron (circumflex inversat)","Latin capital letter d with stroke":"Litera D barată majusculă","Latin capital letter e with breve":"Litera E majusculă cu breve („căciulă”)","Latin capital letter e with caron":"Litera E majusculă cu caron (circumflex inversat)","Latin capital letter e with dot above":"Litera E majusculă cu punct deasupra","Latin capital letter e with macron":"Litera E majusculă cu macron","Latin capital letter e with ogonek":"Litera E majusculă cu ogonek („codiță”)","Latin capital letter eng":"Litera ENG majusculă","Latin capital letter g with breve":"Litera G majusculă cu breve („căciulă”)","Latin capital letter g with cedilla":"Litera G majusculă cu sedilă","Latin capital letter g with circumflex":"Litera G majusculă cu accent circumflex","Latin capital letter g with dot above":"Litera G majusculă cu punct deasupra","Latin capital letter h with circumflex":"Litera H majusculă cu accent circumflex","Latin capital letter h with stroke":"Litera H barată majusculă","Latin capital letter i with breve":"Litera I majusculă cu breve („căciulă”)","Latin capital letter i with dot above":"Litera I majusculă cu punct deasupra","Latin capital letter i with macron":"Litera I majusculă cu macron","Latin capital letter i with ogonek":"Litera I majusculă cu ogonek („codiță”)","Latin capital letter i with tilde":"Litera I majusculă cu tildă","Latin capital letter j with circumflex":"Litera J majusculă cu accent circumflex","Latin capital letter k with cedilla":"Litera K majusculă cu sedilă","Latin capital letter l with acute":"Litera L majusculă cu accent ascuțit","Latin capital letter l with caron":"Litera L majusculă cu caron (circumflex inversat)","Latin capital letter l with cedilla":"Litera L majusculă cu sedilă","Latin capital letter l with middle dot":"Litera L majusculă cu punct median","Latin capital letter l with stroke":"Litera L majusculă cu bară oblică","Latin capital letter n with acute":"Litera N majusculă cu accent ascuțit","Latin capital letter n with caron":"Litera N majusculă cu caron (circumflex inversat)","Latin capital letter n with cedilla":"Litera N majusculă cu sedilă","Latin capital letter o with breve":"Litera O majusculă cu breve („căciulă”)","Latin capital letter o with double acute":"Litera O majusculă cu dublu accent ascuțit","Latin capital letter o with macron":"Litera O majusculă cu macron","Latin capital letter r with acute":"Litera R majusculă cu accent ascuțit","Latin capital letter r with caron":"Litera R majusculă cu caron (circumflex inversat)","Latin capital letter r with cedilla":"Litera R majusculă cu sedilă","Latin capital letter s with acute":"Litera S majusculă cu accent ascuțit","Latin capital letter s with caron":"Litera S majusculă cu caron (circumflex inversat)","Latin capital letter s with cedilla":"Litera S majusculă cu sedilă","Latin capital letter s with circumflex":"Litera S majusculă cu accent circumflex","Latin capital letter t with caron":"Litera T majusculă cu caron (circumflex inversat)","Latin capital letter t with cedilla":"Litera T majusculă cu sedilă","Latin capital letter t with stroke":"Litera T majusculă barată","Latin capital letter u with breve":"Litera U majusculă cu breve („căciulă”)","Latin capital letter u with double acute":"Litera U majusculă cu dublu accent ascuțit","Latin capital letter u with macron":"Litera U majusculă cu macron","Latin capital letter u with ogonek":"Litera U majusculă cu ogonek („codiță”)","Latin capital letter u with ring above":"Litera majusculă U cu inel deasupra","Latin capital letter u with tilde":"Litera U majusculă cu tildă","Latin capital letter w with circumflex":"Litera W majusculă cu accent circumflex","Latin capital letter y with circumflex":"Litera Y majusculă cu accent circumflex","Latin capital letter y with diaeresis":"Litera Y majusculă cu tremă","Latin capital letter z with acute":"Litera Z majusculă cu accent ascuțit","Latin capital letter z with caron":"Litera Z majusculă cu caron (circumflex inversat)","Latin capital letter z with dot above":"Litera Z majusculă cu punct deasupra","Latin capital ligature ij":"Ligatură formată din literele majuscule IJ","Latin capital ligature oe":"Ligatură formată din literele OE majuscule","Latin small letter a with breve":"Litera A minusculă cu breve („căciulă”)","Latin small letter a with macron":"Litera A minusculă cu macron","Latin small letter a with ogonek":"Litera A minusculă cu codiță (ogonek)","Latin small letter c with acute":"Litera C minusculă cu accent ascuțit","Latin small letter c with caron":"Litera C minusculă cu caron (circumflex inversat)","Latin small letter c with circumflex":"Litera C minusculă cu accent circumflex","Latin small letter c with dot above":"Litera C minusculă cu punct deasupra","Latin small letter d with caron":"Litera D minusculă cu caron (circumflex inversat)","Latin small letter d with stroke":"Litera D barată minusculă","Latin small letter dotless i":"Litera I minusculă fără punct","Latin small letter e with breve":"Litera E minusculă cu breve („căciulă”)","Latin small letter e with caron":"Litera E minusculă cu caron (circumflex inversat)","Latin small letter e with dot above":"Litera E minusculă cu punct deasupra","Latin small letter e with macron":"Litera E minusculă cu macron","Latin small letter e with ogonek":"Litera E minusculă cu ogonek („codiță”)","Latin small letter eng":"Litera ENG minusculă","Latin small letter f with hook":"Litera F minusculă cu cârlig","Latin small letter g with breve":"Litera G minusculă cu breve („căciulă”)","Latin small letter g with cedilla":"Litera G minusculă cu sedilă","Latin small letter g with circumflex":"Litera G minusculă cu accent circumflex","Latin small letter g with dot above":"Litera G minusculă cu punct deasupra","Latin small letter h with circumflex":"Litera H minusculă cu accent circumflex","Latin small letter h with stroke":"Litera H barată minusculă","Latin small letter i with breve":"Litera I minusculă cu breve („căciulă”)","Latin small letter i with macron":"Litera I minusculă cu macron","Latin small letter i with ogonek":"Litera I minusculă cu ogonek („codiță”)","Latin small letter i with tilde":"Litera I minusculă cu tildă","Latin small letter j with circumflex":"Litera J minusculă cu accent circumflex","Latin small letter k with cedilla":"Litera K minusculă cu sedilă","Latin small letter kra":"Litera KRA minusculă","Latin small letter l with acute":"Litera L minusculă cu accent ascuțit","Latin small letter l with caron":"Litera L minusculă cu caron (circumflex inversat)","Latin small letter l with cedilla":"Litera L minusculă cu sedilă","Latin small letter l with middle dot":"Litera L minusculă cu punct median","Latin small letter l with stroke":"Litera L minusculă cu bară oblică","Latin small letter long s":"Litera S lungă minusculă","Latin small letter n preceded by apostrophe":"Litera N minusculă cu apostrof în față","Latin small letter n with acute":"Litera N minusculă cu accent ascuțit","Latin small letter n with caron":"Litera N minusculă cu caron (circumflex inversat)","Latin small letter n with cedilla":"Litera N minusculă cu sedilă","Latin small letter o with breve":"Litera O minusculă cu breve („căciulă”)","Latin small letter o with double acute":"Litera O minusculă cu dublu accent ascuțit","Latin small letter o with macron":"Litera O minusculă cu macron","Latin small letter r with acute":"Litera R minusculă cu accent ascuțit","Latin small letter r with caron":"Litera R minusculă cu caron (circumflex inversat)","Latin small letter r with cedilla":"Litera R minusculă cu sedilă","Latin small letter s with acute":"Litera S minusculă cu accent ascuțit","Latin small letter s with caron":"Litera S minusculă cu caron (circumflex inversat)","Latin small letter s with cedilla":"Litera S minusculă cu sedilă","Latin small letter s with circumflex":"Litera S minusculă cu accent circumflex","Latin small letter t with caron":"Litera T minusculă cu caron (circumflex inversat)","Latin small letter t with cedilla":"Litera T minusculă cu sedilă","Latin small letter t with stroke":"Litera T minusculă barată","Latin small letter u with breve":"Litera U minusculă cu breve („căciulă”)","Latin small letter u with double acute":"Litera U minusculă cu dublu accent ascuțit","Latin small letter u with macron":"Litera U minusculă cu macron","Latin small letter u with ogonek":"Litera U minusculă cu ogonek („codiță”)","Latin small letter u with ring above":"Litera minusculă U cu inel deasupra","Latin small letter u with tilde":"Litera U minusculă cu tildă","Latin small letter w with circumflex":"Litera W minusculă cu accent circumflex","Latin small letter y with circumflex":"Litera Y minusculă cu accent circumflex","Latin small letter z with acute":"Litera Z minusculă cu accent ascuțit","Latin small letter z with caron":"Litera Z minusculă cu caron (circumflex inversat)","Latin small letter z with dot above":"Litera Z minusculă cu punct deasupra","Latin small ligature ij":"Ligatură formată din literele minuscule IJ","Latin small ligature oe":"Ligatură formată din literele OE minuscule","Left double quotation mark":"Ghilimele sus în formă de 66","Left single quotation mark":"Semnul citării simplu stânga (în formă de 6)","Left-pointing double angle quotation mark":"Ghilimele unghiulare cu vârful spre stânga","leftwards arrow to bar":"săgeată la stânga spre bară","leftwards dashed arrow":"săgeată la stânga cu linie întreruptă","leftwards double arrow":"săgeată dublă spre stânga","Less-than or equal to":"Simbolul „mai mic sau egal”","Less-than sign":"Simbolul „mai mic decât”","Lira sign":"Simbolul pentru liră","Livre tournois sign":"Simbolul pentru livra tournois","Logical and":"ȘI logic","Logical or":"SAU logic",Macron:"Macron","Manat sign":"Simbolul pentru manat","Mill sign":"Simbolul pentru mill","Minus sign":"Semnul minus","Multiplication sign":"Semnul înmulțirii","N-ary product":"Produs cartezian (simbol matematic)","N-ary summation":"Sumă (simbol matematic)",Nabla:"Nabla","Naira sign":"Simbolul pentru naira","New sheqel sign":"Simbolul pentru shekelul nou","Nordic mark sign":"Simbolul pentru marca nordică","Not an element of":"Nu este un element al","Not equal to":"Diferit de (nu este egal cu)","Not sign":"Negare","on with exclamation mark with left right arrow above":"„on” cu semn de exclamare și săgeată spre stânga deasupra",Overline:"Linie deasupra","Paragraph sign":"Simbolul pentru paragraf","Partial differential":"Diferențială parțială","Per mille sign":"Promilă","Per ten thousand sign":"La zece mii","Peseta sign":"Simbolul pentru peseta","Peso sign":"Simbolul pentru peso","Plus-minus sign":"Semnul plus/minus","Pound sign":"Simbolul lirei sterline","Proportional to":"Proporțional cu","Question exclamation mark":"Semnele întrebării și exclamării","Registered sign":"Simbolul de marcă înregistrată","Reversed paragraph sign":"Simbolul pentru paragraf, inversat","Right double quotation mark":"Ghilimele sus în formă de 99","Right single quotation mark":"Semnul citării simplu dreapta (în formă de 9)","Right-pointing double angle quotation mark":"Ghilimele unghiulare cu vârful spre dreapta","rightwards arrow to bar":"săgeată la dreapta spre bară","rightwards dashed arrow":"săgeată la dreapta cu linie întreruptă","rightwards double arrow":"săgeată dublă spre dreapta","Ruble sign":"Simbolul pentru rublă","Rupee sign":"Simbolul pentru rupie","Section sign":"Simbolul pentru secțiune","Single left-pointing angle quotation mark":"Ghilimele unghiulare simple cu vârful spre stânga","Single low-9 quotation mark":"Ghilimele simple jos în formă de 9","Single right-pointing angle quotation mark":"Ghilimele unghiulare simple cu vârful spre dreapta","soon with rightwards arrow above":"„soon” cu săgeată spre dreapta deasupra","Special characters":"Caractere speciale","Spesmilo sign":"Simbolul pentru spesmilo","Square root":"Rădăcină pătrată","Tenge sign":"Simbolul pentru tenge","There exists":"Există","Tilde operator":"Operatorul tildă","top with upwards arrow above":"„top” cu săgeată în sus deasupra","Trade mark sign":"Simbolul de marcă comercială","Tugrik sign":"Simbolul pentru tugrik","Turkish lira sign":"Simbolul pentru lira turcească","Two dot leader":"Două puncte orizontale pe linia de bază",Union:"Uniune","up down arrow with base":"săgeată în sus și în jos cu linie de bază","upwards arrow to bar":"săgeată în sus spre bară","upwards dashed arrow":"săgeată în sus cu linie întreruptă","upwards double arrow":"săgeată dublă în sus","Vulgar fraction one half":"Jumătate (fracție în scrierea comună)","Vulgar fraction one quarter":"Un sfert (fracție în scrierea comună)","Vulgar fraction three quarters":"Trei sferturi (fracție în scrierea comună)","Won sign":"Simbolul pentru won","Yen sign":"Simbolul yenului"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(t){const a=t.ro=t.ro||{};a.dictionary=Object.assign(a.dictionary||{},{"Almost equal to":"Aproape egal cu",Angle:"Unghi","Approximately equal to":"Aproximativ egal cu","Asterisk operator":"Operatorul asterisc","Austral sign":"Simbolul pentru austral","back with leftwards arrow above":"înapoi cu săgeată spre stânga deasupra","Bitcoin sign":"Simbolul pentru Bitcoin","Cedi sign":"Simbolul pentru cedi","Cent sign":"Simbolul pentru cent","Character categories":"Categorii de caractere","Colon sign":"Două puncte","Contains as member":"Conține ca membru","Copyright sign":"Simbolul pentru copyright","Cruzeiro sign":"Simbolul pentru cruzeiro","Currency sign":"Simbolul pentru valută","Degree sign":"Simbolul pentru grad","Division sign":"Semnul împărțirii","Dollar sign":"Simbolul dolarului","Dong sign":"Simbolul pentru dong","Double dagger":"Dublă obelă (dagger)","Double exclamation mark":"Semnul exclamării dublu","Double low-9 quotation mark":"Ghilimele jos în formă de 99","Double question mark":"Doublu semnul întrebării","downwards arrow to bar":"săgeată în jos spre bară","downwards dashed arrow":"săgeată în jos cu linie întreruptă","downwards double arrow":"săgeată dublă în jos","downwards simple arrow":"săgeată simplă în jos","Drachma sign":"Simbolul pentru drahmă","Element of":"Element al","Em dash":"Linie de dialog (em dash)","Empty set":"Mulțimea vidă","En dash":"Linie de pauză (en dash)","end with leftwards arrow above":"sfârșit cu săgeată spre stânga deasupra","Euro sign":"Simbolul euro","Euro-currency sign":"Simbolul monedei euro","Exclamation question mark":"Semnele exclamării și întrebării","For all":"Pentru toți","Fraction slash":"Bară de fracție (oblică)","French franc sign":"Simbolul pentru francul francez","German penny sign":"Simbolul pentru pfenigul german","Greater-than or equal to":"Simbolul „mai mare sau egal”","Greater-than sign":"Simbolul „mai mare decât”","Guarani sign":"Simbolul pentru guarani","Horizontal ellipsis":"Puncte de suspensie","Hryvnia sign":"Simbolul pentru grivnă (hrivnă)","Identical to":"Identic cu","Indian rupee sign":"Simbolul pentru rupia indiană",Infinity:"Infinit",Integral:"Integrală",Intersection:"Intersecție","Inverted exclamation mark":"Semnul exclamării inversat","Inverted question mark":"Semnul întrebării inversat","Kip sign":"Simbolul pentru kip","Latin capital letter a with breve":"Litera A majusculă cu breve („căciulă”)","Latin capital letter a with macron":"Litera A majusculă cu macron","Latin capital letter a with ogonek":"Litera A majusculă cu codiță (ogonek)","Latin capital letter c with acute":"Litera C majusculă cu accent ascuțit","Latin capital letter c with caron":"Litera C majusculă cu caron (circumflex inversat)","Latin capital letter c with circumflex":"Litera C majusculă cu accent circumflex","Latin capital letter c with dot above":"Litera C majusculă cu punct deasupra","Latin capital letter d with caron":"Litera D majusculă cu caron (circumflex inversat)","Latin capital letter d with stroke":"Litera D barată majusculă","Latin capital letter e with breve":"Litera E majusculă cu breve („căciulă”)","Latin capital letter e with caron":"Litera E majusculă cu caron (circumflex inversat)","Latin capital letter e with dot above":"Litera E majusculă cu punct deasupra","Latin capital letter e with macron":"Litera E majusculă cu macron","Latin capital letter e with ogonek":"Litera E majusculă cu ogonek („codiță”)","Latin capital letter eng":"Litera ENG majusculă","Latin capital letter g with breve":"Litera G majusculă cu breve („căciulă”)","Latin capital letter g with cedilla":"Litera G majusculă cu sedilă","Latin capital letter g with circumflex":"Litera G majusculă cu accent circumflex","Latin capital letter g with dot above":"Litera G majusculă cu punct deasupra","Latin capital letter h with circumflex":"Litera H majusculă cu accent circumflex","Latin capital letter h with stroke":"Litera H barată majusculă","Latin capital letter i with breve":"Litera I majusculă cu breve („căciulă”)","Latin capital letter i with dot above":"Litera I majusculă cu punct deasupra","Latin capital letter i with macron":"Litera I majusculă cu macron","Latin capital letter i with ogonek":"Litera I majusculă cu ogonek („codiță”)","Latin capital letter i with tilde":"Litera I majusculă cu tildă","Latin capital letter j with circumflex":"Litera J majusculă cu accent circumflex","Latin capital letter k with cedilla":"Litera K majusculă cu sedilă","Latin capital letter l with acute":"Litera L majusculă cu accent ascuțit","Latin capital letter l with caron":"Litera L majusculă cu caron (circumflex inversat)","Latin capital letter l with cedilla":"Litera L majusculă cu sedilă","Latin capital letter l with middle dot":"Litera L majusculă cu punct median","Latin capital letter l with stroke":"Litera L majusculă cu bară oblică","Latin capital letter n with acute":"Litera N majusculă cu accent ascuțit","Latin capital letter n with caron":"Litera N majusculă cu caron (circumflex inversat)","Latin capital letter n with cedilla":"Litera N majusculă cu sedilă","Latin capital letter o with breve":"Litera O majusculă cu breve („căciulă”)","Latin capital letter o with double acute":"Litera O majusculă cu dublu accent ascuțit","Latin capital letter o with macron":"Litera O majusculă cu macron","Latin capital letter r with acute":"Litera R majusculă cu accent ascuțit","Latin capital letter r with caron":"Litera R majusculă cu caron (circumflex inversat)","Latin capital letter r with cedilla":"Litera R majusculă cu sedilă","Latin capital letter s with acute":"Litera S majusculă cu accent ascuțit","Latin capital letter s with caron":"Litera S majusculă cu caron (circumflex inversat)","Latin capital letter s with cedilla":"Litera S majusculă cu sedilă","Latin capital letter s with circumflex":"Litera S majusculă cu accent circumflex","Latin capital letter t with caron":"Litera T majusculă cu caron (circumflex inversat)","Latin capital letter t with cedilla":"Litera T majusculă cu sedilă","Latin capital letter t with stroke":"Litera T majusculă barată","Latin capital letter u with breve":"Litera U majusculă cu breve („căciulă”)","Latin capital letter u with double acute":"Litera U majusculă cu dublu accent ascuțit","Latin capital letter u with macron":"Litera U majusculă cu macron","Latin capital letter u with ogonek":"Litera U majusculă cu ogonek („codiță”)","Latin capital letter u with ring above":"Litera majusculă U cu inel deasupra","Latin capital letter u with tilde":"Litera U majusculă cu tildă","Latin capital letter w with circumflex":"Litera W majusculă cu accent circumflex","Latin capital letter y with circumflex":"Litera Y majusculă cu accent circumflex","Latin capital letter y with diaeresis":"Litera Y majusculă cu tremă","Latin capital letter z with acute":"Litera Z majusculă cu accent ascuțit","Latin capital letter z with caron":"Litera Z majusculă cu caron (circumflex inversat)","Latin capital letter z with dot above":"Litera Z majusculă cu punct deasupra","Latin capital ligature ij":"Ligatură formată din literele majuscule IJ","Latin capital ligature oe":"Ligatură formată din literele OE majuscule","Latin small letter a with breve":"Litera A minusculă cu breve („căciulă”)","Latin small letter a with macron":"Litera A minusculă cu macron","Latin small letter a with ogonek":"Litera A minusculă cu codiță (ogonek)","Latin small letter c with acute":"Litera C minusculă cu accent ascuțit","Latin small letter c with caron":"Litera C minusculă cu caron (circumflex inversat)","Latin small letter c with circumflex":"Litera C minusculă cu accent circumflex","Latin small letter c with dot above":"Litera C minusculă cu punct deasupra","Latin small letter d with caron":"Litera D minusculă cu caron (circumflex inversat)","Latin small letter d with stroke":"Litera D barată minusculă","Latin small letter dotless i":"Litera I minusculă fără punct","Latin small letter e with breve":"Litera E minusculă cu breve („căciulă”)","Latin small letter e with caron":"Litera E minusculă cu caron (circumflex inversat)","Latin small letter e with dot above":"Litera E minusculă cu punct deasupra","Latin small letter e with macron":"Litera E minusculă cu macron","Latin small letter e with ogonek":"Litera E minusculă cu ogonek („codiță”)","Latin small letter eng":"Litera ENG minusculă","Latin small letter f with hook":"Litera F minusculă cu cârlig","Latin small letter g with breve":"Litera G minusculă cu breve („căciulă”)","Latin small letter g with cedilla":"Litera G minusculă cu sedilă","Latin small letter g with circumflex":"Litera G minusculă cu accent circumflex","Latin small letter g with dot above":"Litera G minusculă cu punct deasupra","Latin small letter h with circumflex":"Litera H minusculă cu accent circumflex","Latin small letter h with stroke":"Litera H barată minusculă","Latin small letter i with breve":"Litera I minusculă cu breve („căciulă”)","Latin small letter i with macron":"Litera I minusculă cu macron","Latin small letter i with ogonek":"Litera I minusculă cu ogonek („codiță”)","Latin small letter i with tilde":"Litera I minusculă cu tildă","Latin small letter j with circumflex":"Litera J minusculă cu accent circumflex","Latin small letter k with cedilla":"Litera K minusculă cu sedilă","Latin small letter kra":"Litera KRA minusculă","Latin small letter l with acute":"Litera L minusculă cu accent ascuțit","Latin small letter l with caron":"Litera L minusculă cu caron (circumflex inversat)","Latin small letter l with cedilla":"Litera L minusculă cu sedilă","Latin small letter l with middle dot":"Litera L minusculă cu punct median","Latin small letter l with stroke":"Litera L minusculă cu bară oblică","Latin small letter long s":"Litera S lungă minusculă","Latin small letter n preceded by apostrophe":"Litera N minusculă cu apostrof în față","Latin small letter n with acute":"Litera N minusculă cu accent ascuțit","Latin small letter n with caron":"Litera N minusculă cu caron (circumflex inversat)","Latin small letter n with cedilla":"Litera N minusculă cu sedilă","Latin small letter o with breve":"Litera O minusculă cu breve („căciulă”)","Latin small letter o with double acute":"Litera O minusculă cu dublu accent ascuțit","Latin small letter o with macron":"Litera O minusculă cu macron","Latin small letter r with acute":"Litera R minusculă cu accent ascuțit","Latin small letter r with caron":"Litera R minusculă cu caron (circumflex inversat)","Latin small letter r with cedilla":"Litera R minusculă cu sedilă","Latin small letter s with acute":"Litera S minusculă cu accent ascuțit","Latin small letter s with caron":"Litera S minusculă cu caron (circumflex inversat)","Latin small letter s with cedilla":"Litera S minusculă cu sedilă","Latin small letter s with circumflex":"Litera S minusculă cu accent circumflex","Latin small letter t with caron":"Litera T minusculă cu caron (circumflex inversat)","Latin small letter t with cedilla":"Litera T minusculă cu sedilă","Latin small letter t with stroke":"Litera T minusculă barată","Latin small letter u with breve":"Litera U minusculă cu breve („căciulă”)","Latin small letter u with double acute":"Litera U minusculă cu dublu accent ascuțit","Latin small letter u with macron":"Litera U minusculă cu macron","Latin small letter u with ogonek":"Litera U minusculă cu ogonek („codiță”)","Latin small letter u with ring above":"Litera minusculă U cu inel deasupra","Latin small letter u with tilde":"Litera U minusculă cu tildă","Latin small letter w with circumflex":"Litera W minusculă cu accent circumflex","Latin small letter y with circumflex":"Litera Y minusculă cu accent circumflex","Latin small letter z with acute":"Litera Z minusculă cu accent ascuțit","Latin small letter z with caron":"Litera Z minusculă cu caron (circumflex inversat)","Latin small letter z with dot above":"Litera Z minusculă cu punct deasupra","Latin small ligature ij":"Ligatură formată din literele minuscule IJ","Latin small ligature oe":"Ligatură formată din literele OE minuscule","Left double quotation mark":"Ghilimele sus în formă de 66","Left single quotation mark":"Semnul citării simplu stânga (în formă de 6)","Left-pointing double angle quotation mark":"Ghilimele unghiulare cu vârful spre stânga","leftwards arrow to bar":"săgeată la stânga spre bară","leftwards dashed arrow":"săgeată la stânga cu linie întreruptă","leftwards double arrow":"săgeată dublă spre stânga","leftwards simple arrow":"săgeată simplă spre stânga","Less-than or equal to":"Simbolul „mai mic sau egal”","Less-than sign":"Simbolul „mai mic decât”","Lira sign":"Simbolul pentru liră","Livre tournois sign":"Simbolul pentru livra tournois","Logical and":"ȘI logic","Logical or":"SAU logic",Macron:"Macron","Manat sign":"Simbolul pentru manat","Mill sign":"Simbolul pentru mill","Minus sign":"Semnul minus","Multiplication sign":"Semnul înmulțirii","N-ary product":"Produs cartezian (simbol matematic)","N-ary summation":"Sumă (simbol matematic)",Nabla:"Nabla","Naira sign":"Simbolul pentru naira","New sheqel sign":"Simbolul pentru shekelul nou","Nordic mark sign":"Simbolul pentru marca nordică","Not an element of":"Nu este un element al","Not equal to":"Diferit de (nu este egal cu)","Not sign":"Negare","on with exclamation mark with left right arrow above":"„on” cu semn de exclamare și săgeată spre stânga deasupra",Overline:"Linie deasupra","Paragraph sign":"Simbolul pentru paragraf","Partial differential":"Diferențială parțială","Per mille sign":"Promilă","Per ten thousand sign":"La zece mii","Peseta sign":"Simbolul pentru peseta","Peso sign":"Simbolul pentru peso","Plus-minus sign":"Semnul plus/minus","Pound sign":"Simbolul lirei sterline","Proportional to":"Proporțional cu","Question exclamation mark":"Semnele întrebării și exclamării","Registered sign":"Simbolul de marcă înregistrată","Reversed paragraph sign":"Simbolul pentru paragraf, inversat","Right double quotation mark":"Ghilimele sus în formă de 99","Right single quotation mark":"Semnul citării simplu dreapta (în formă de 9)","Right-pointing double angle quotation mark":"Ghilimele unghiulare cu vârful spre dreapta","rightwards arrow to bar":"săgeată la dreapta spre bară","rightwards dashed arrow":"săgeată la dreapta cu linie întreruptă","rightwards double arrow":"săgeată dublă spre dreapta","rightwards simple arrow":"săgeată simplă spre dreapta","Ruble sign":"Simbolul pentru rublă","Rupee sign":"Simbolul pentru rupie","Section sign":"Simbolul pentru secțiune","Single left-pointing angle quotation mark":"Ghilimele unghiulare simple cu vârful spre stânga","Single low-9 quotation mark":"Ghilimele simple jos în formă de 9","Single right-pointing angle quotation mark":"Ghilimele unghiulare simple cu vârful spre dreapta","soon with rightwards arrow above":"„soon” cu săgeată spre dreapta deasupra","Special characters":"Caractere speciale","Spesmilo sign":"Simbolul pentru spesmilo","Square root":"Rădăcină pătrată","Tenge sign":"Simbolul pentru tenge","There exists":"Există","Tilde operator":"Operatorul tildă","top with upwards arrow above":"„top” cu săgeată în sus deasupra","Trade mark sign":"Simbolul de marcă comercială","Tugrik sign":"Simbolul pentru tugrik","Turkish lira sign":"Simbolul pentru lira turcească","Two dot leader":"Două puncte orizontale pe linia de bază",Union:"Uniune","up down arrow with base":"săgeată în sus și în jos cu linie de bază","upwards arrow to bar":"săgeată în sus spre bară","upwards dashed arrow":"săgeată în sus cu linie întreruptă","upwards double arrow":"săgeată dublă în sus","upwards simple arrow":"săgeată simplă în sus","Vulgar fraction one half":"Jumătate (fracție în scrierea comună)","Vulgar fraction one quarter":"Un sfert (fracție în scrierea comună)","Vulgar fraction three quarters":"Trei sferturi (fracție în scrierea comună)","Won sign":"Simbolul pentru won","Yen sign":"Simbolul yenului"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/special-characters/translations/ru.js b/core/assets/vendor/ckeditor5/special-characters/translations/ru.js
index 8894fa265a..80ffea1bc7 100644
--- a/core/assets/vendor/ckeditor5/special-characters/translations/ru.js
+++ b/core/assets/vendor/ckeditor5/special-characters/translations/ru.js
@@ -1 +1 @@
-!function(t){const a=t.ru=t.ru||{};a.dictionary=Object.assign(a.dictionary||{},{"Almost equal to":"Почти равный",Angle:"Угол","Approximately equal to":"Конгруэнтность (геометрическое равенство)","Asterisk operator":"Оператор звездочка","Austral sign":"Символ аргентинского аустраля","back with leftwards arrow above":"Стрелка влево над словом BACK (назад)","Bitcoin sign":"Символ биткоина","Cedi sign":"Символ ганского седи","Cent sign":"Символ цента","Character categories":"Категории","Colon sign":"Символ двоеточия","Contains as member":"Содержит как член","Copyright sign":"Знак авторского права","Cruzeiro sign":"Символ бразильского крузейро","Currency sign":"Символ валюты","Degree sign":"Знак градуса","Division sign":"Знак деления","Dollar sign":"Символ доллара","Dong sign":"Символ донга","Double dagger":"Двойной крестик","Double exclamation mark":"Двойной восклицательный знак","Double low-9 quotation mark":"Нижняя двойная открывающая кавычка","Double question mark":"Двойной вопросительный знак","downwards arrow to bar":"Стрелка вниз, упирающаяся в планку","downwards dashed arrow":"Пунктирная стрелка вниз","downwards double arrow":"Двойная стрелка вниз","Drachma sign":"Символ драхмы","Element of":"Принадлежит","Em dash":"Длинное тире","Empty set":"Пустое множество","En dash":"Среднее тире","end with leftwards arrow above":"Стрелка влево над словом END (конец)","Euro sign":"Символ евро","Euro-currency sign":"Символ евровалюты","Exclamation question mark":"Восклицательный вопросительный знак","For all":"Для всех","Fraction slash":"Дробная наклонная черта","French franc sign":"Символ французского франка","German penny sign":"Символ немецкого пенни","Greater-than or equal to":"Больше либо равно","Greater-than sign":"Знак больше","Guarani sign":"Символ гуарани","Horizontal ellipsis":"Многоточие","Hryvnia sign":"Символ гривны","Identical to":"Тождественно равно","Indian rupee sign":"Символ индийской рупии",Infinity:"Бесконечность",Integral:"Интеграл",Intersection:"Пересечение","Inverted exclamation mark":"Перевернутый восклицательный знак","Inverted question mark":"Перевернутый вопросительный знак","Kip sign":"Символ кипа","Latin capital letter a with breve":"Латинская заглавная буква «A» с бревисом","Latin capital letter a with macron":"Латинская заглавная буква «A» с макроном","Latin capital letter a with ogonek":"Латинская заглавная буква «A» с огонеком","Latin capital letter c with acute":"Латинская заглавная буква «C» с акутом","Latin capital letter c with caron":"Латинская заглавная буква «C» с гачеком","Latin capital letter c with circumflex":"Латинская заглавная буква «C» с циркумфлексом","Latin capital letter c with dot above":"Латинская заглавная буква «C» с точкой сверху","Latin capital letter d with caron":"Латинская заглавная буква «D» с гачеком","Latin capital letter d with stroke":"Латинская заглавная буква «D» со штрихом","Latin capital letter e with breve":"Латинская заглавная буква «E» с бревисом","Latin capital letter e with caron":"Латинская заглавная буква «E» с гачеком","Latin capital letter e with dot above":"Латинская заглавная буква «E» с точкой сверху","Latin capital letter e with macron":"Латинская заглавная буква «E» с макроном","Latin capital letter e with ogonek":"Латинская заглавная буква «E» с огонеком","Latin capital letter eng":"Латинская заглавная буква энг","Latin capital letter g with breve":"Латинская заглавная буква «G» с бревисом","Latin capital letter g with cedilla":"Латинская заглавная буква «G» с седилью","Latin capital letter g with circumflex":"Латинская заглавная буква «G» с циркумфлексом","Latin capital letter g with dot above":"Латинская заглавная буква «G» с точкой сверху","Latin capital letter h with circumflex":"Латинская заглавная буква «H» с циркумфлексом","Latin capital letter h with stroke":"Латинская заглавная буква «H» со штрихом","Latin capital letter i with breve":"Латинская заглавная буква «I» с бревисом","Latin capital letter i with dot above":"Латинская заглавная буква «I» с точкой сверху","Latin capital letter i with macron":"Латинская заглавная буква «I» с макроном","Latin capital letter i with ogonek":"Латинская заглавная буква «I» с огонеком","Latin capital letter i with tilde":"Латинская заглавная буква «I» с тильдой","Latin capital letter j with circumflex":"Латинская заглавная буква «J» с циркумфлексом","Latin capital letter k with cedilla":"Латинская заглавная буква «K» с седилью","Latin capital letter l with acute":"Латинская заглавная буква «L» с акутом","Latin capital letter l with caron":"Латинская заглавная буква «L» с гачеком","Latin capital letter l with cedilla":"Латинская заглавная буква «L» с седилью","Latin capital letter l with middle dot":"Латинская заглавная буква «L» с внутристрочной точкой","Latin capital letter l with stroke":"Латинская заглавная буква «L» со штрихом","Latin capital letter n with acute":"Латинская заглавная буква «N» с акутом","Latin capital letter n with caron":"Латинская заглавная буква «N» с гачеком","Latin capital letter n with cedilla":"Латинская заглавная буква «N» с седилью","Latin capital letter o with breve":"Латинская заглавная буква «O» с бревисом","Latin capital letter o with double acute":"Латинская заглавная буква «O» с двойным акутом","Latin capital letter o with macron":"Латинская заглавная буква «O» с макроном","Latin capital letter r with acute":"Латинская заглавная буква «R» с акутом","Latin capital letter r with caron":"Латинская заглавная буква «R» с гачеком","Latin capital letter r with cedilla":"Латинская заглавная буква «R» с седилью","Latin capital letter s with acute":"Латинская заглавная буква «S» с акутом","Latin capital letter s with caron":"Латинская заглавная буква «S» с гачеком","Latin capital letter s with cedilla":"Латинская заглавная буква «S» с седилью","Latin capital letter s with circumflex":"Латинская заглавная буква «S» с циркумфлексом","Latin capital letter t with caron":"Латинская заглавная буква «T» с гачеком","Latin capital letter t with cedilla":"Латинская заглавная буква «T» с седилью","Latin capital letter t with stroke":"Латинская заглавная буква «T» со штрихом","Latin capital letter u with breve":"Латинская заглавная буква «U» с бревисом","Latin capital letter u with double acute":"Латинская заглавная буква «U» с двойным акутом","Latin capital letter u with macron":"Латинская заглавная буква «U» с макроном","Latin capital letter u with ogonek":"Латинская заглавная буква «U» с огонеком","Latin capital letter u with ring above":"Латинская заглавная буква «U» с кружком сверху","Latin capital letter u with tilde":"Латинская заглавная буква «U» с тильдой","Latin capital letter w with circumflex":"Латинская заглавная буква «W» с циркумфлексом","Latin capital letter y with circumflex":"Латинская заглавная буква «Y» с циркумфлексом","Latin capital letter y with diaeresis":"Латинская заглавная буква «Y» с диэрезисом","Latin capital letter z with acute":"Латинская заглавная буква «Z» с акутом","Latin capital letter z with caron":"Латинская заглавная буква «Z» с гачеком","Latin capital letter z with dot above":"Латинская заглавная буква «Z» с точкой сверху","Latin capital ligature ij":"Латинская заглавная лигатура «IJ»","Latin capital ligature oe":"Латинская заглавная лигатура OE","Latin small letter a with breve":"Латинская строчная буква «a» с бревисом","Latin small letter a with macron":"Латинская строчная буква «a» с макроном","Latin small letter a with ogonek":"Латинская строчная буква «a» с огонеком","Latin small letter c with acute":"Латинская строчная буква «c» с акутом","Latin small letter c with caron":"Латинская строчная буква «c» с гачеком","Latin small letter c with circumflex":"Латинская строчная буква «c» с циркумфлексом","Latin small letter c with dot above":"Латинская строчная буква «c» с точкой сверху","Latin small letter d with caron":"Латинская строчная буква «d» с гачеком","Latin small letter d with stroke":"Латинская строчная буква «d» со штрихом","Latin small letter dotless i":"Латинская строчная буква «i» без точки","Latin small letter e with breve":"Латинская строчная буква «e» с бревисом","Latin small letter e with caron":"Латинская строчная буква «e» с гачеком","Latin small letter e with dot above":"Латинская строчная буква «e» с точкой сверху","Latin small letter e with macron":"Латинская строчная буква «e» с макроном","Latin small letter e with ogonek":"Латинская строчная буква «e» с огонеком","Latin small letter eng":"Латинская строчная буква энг","Latin small letter f with hook":"Латинская строчная буква «f» с хвостиком","Latin small letter g with breve":"Латинская строчная буква «g» с бревисом","Latin small letter g with cedilla":"Латинская строчная буква «g» с седилью","Latin small letter g with circumflex":"Латинская строчная буква «g» с циркумфлексом","Latin small letter g with dot above":"Латинская строчная буква «g» с точкой сверху","Latin small letter h with circumflex":"Латинская строчная буква «h» с циркумфлексом","Latin small letter h with stroke":"Латинская строчная буква «h» со штрихом","Latin small letter i with breve":"Латинская строчная буква «i» с бревисом","Latin small letter i with macron":"Латинская строчная буква «i» с макроном","Latin small letter i with ogonek":"Латинская строчная буква «i» с огонеком","Latin small letter i with tilde":"Латинская строчная буква «i» с тильдой","Latin small letter j with circumflex":"Латинская строчная буква «j» с циркумфлексом","Latin small letter k with cedilla":"Латинская строчная буква «k» с седилью","Latin small letter kra":"Латинская строчная буква кра","Latin small letter l with acute":"Латинская строчная буква «l» с акутом","Latin small letter l with caron":"Латинская строчная буква «l» с гачеком","Latin small letter l with cedilla":"Латинская строчная буква «l» с седилью","Latin small letter l with middle dot":"Латинская строчная буква «l» с внутристрочной точкой","Latin small letter l with stroke":"Латинская строчная буква «l» со штрихом","Latin small letter long s":"Латинская строчная буква длинная «s»","Latin small letter n preceded by apostrophe":"Латинская строчная буква «n» с предшествующим апострофом","Latin small letter n with acute":"Латинская строчная буква «n» с акутом","Latin small letter n with caron":"Латинская строчная буква «n» с гачеком","Latin small letter n with cedilla":"Латинская строчная буква «n» с седилью","Latin small letter o with breve":"Латинская строчная буква «o» с бревисом","Latin small letter o with double acute":"Латинская строчная буква «o» с двойным акутом","Latin small letter o with macron":"Латинская строчная буква «o» с макроном","Latin small letter r with acute":"Латинская строчная буква «r» с акутом","Latin small letter r with caron":"Латинская строчная буква «r» с гачеком","Latin small letter r with cedilla":"Латинская строчная буква «r» с седилью","Latin small letter s with acute":"Латинская строчная буква «s» с акутом","Latin small letter s with caron":"Латинская строчная буква «s» с гачеком","Latin small letter s with cedilla":"Латинская строчная буква «s» с седилью","Latin small letter s with circumflex":"Латинская строчная буква «s» с циркумфлексом","Latin small letter t with caron":"Латинская строчная буква «t» с гачеком","Latin small letter t with cedilla":"Латинская строчная буква «t» с седилью","Latin small letter t with stroke":"Латинская строчная буква «t» со штрихом","Latin small letter u with breve":"Латинская строчная буква «u» с бревисом","Latin small letter u with double acute":"Латинская строчная буква «u» с двойным акутом","Latin small letter u with macron":"Латинская строчная буква «u» с макроном","Latin small letter u with ogonek":"Латинская строчная буква «u» с огонеком","Latin small letter u with ring above":"Латинская строчная буква «u» с кружком сверху","Latin small letter u with tilde":"Латинская строчная буква «u» с тильдой","Latin small letter w with circumflex":"Латинская строчная буква «w» с циркумфлексом","Latin small letter y with circumflex":"Латинская строчная буква «y» с циркумфлексом","Latin small letter z with acute":"Латинская строчная буква «z» с акутом","Latin small letter z with caron":"Латинская строчная буква «z» с гачеком","Latin small letter z with dot above":"Латинская строчная буква «z» с точкой сверху","Latin small ligature ij":"Латинская строчная лигатура «ij»","Latin small ligature oe":"Латинская строчная лигатура oe","Left double quotation mark":"Открывающая двойная кавычка","Left single quotation mark":"Открывающая одинарная кавычка","Left-pointing double angle quotation mark":"Открывающая левая кавычка «ёлочка»","leftwards arrow to bar":"Стрелка влево, упирающаяся в планку","leftwards dashed arrow":"Пунктирная стрелка влево","leftwards double arrow":"Двойная стрелка влево","Less-than or equal to":"Меньше либо равно","Less-than sign":"Знак меньше","Lira sign":"Символ лиры","Livre tournois sign":"Символ турского ливра","Logical and":"Логическое И","Logical or":"Логическое ИЛИ",Macron:"Макрон","Manat sign":"Символ маната","Mill sign":"Символ милль","Minus sign":"Знак минус","Multiplication sign":"Знак умножения","N-ary product":"N-арное произведение","N-ary summation":"N-арная сумма",Nabla:"Набла","Naira sign":"Символ найры","New sheqel sign":"Символ нового шекеля","Nordic mark sign":"Символ скандинавской марки","Not an element of":"Не принадлежит","Not equal to":"Не равно","Not sign":"Знак отрицания","on with exclamation mark with left right arrow above":"Стрелка влево и вправо над словом ON! (включить)",Overline:"Надчёркивание","Paragraph sign":"Знак абзаца","Partial differential":"Частичный дифференциал","Per mille sign":"Знак промилле","Per ten thousand sign":"Знак на десять тысяч","Peseta sign":"Символ песеты","Peso sign":"Символ песо","Plus-minus sign":"Знак плюс-минус","Pound sign":"Символ фунта стерлингов","Proportional to":"Пропорционально","Question exclamation mark":"Вопросительный восклицательный знак","Registered sign":"Зарегистрированный товарный знак","Reversed paragraph sign":"Обратный знак абзаца","Right double quotation mark":"Закрывающая двойная кавычка","Right single quotation mark":"Закрывающая одинарная кавычка","Right-pointing double angle quotation mark":"Закрывающая правая кавычка «ёлочка»","rightwards arrow to bar":"Стрелка вправо, упирающаяся в планку","rightwards dashed arrow":"Пунктирная стрелка вправо","rightwards double arrow":"Двойная стрелка вправо","Ruble sign":"Символ рубля","Rupee sign":"Символ рупии","Section sign":"Параграф","Single left-pointing angle quotation mark":"Одинарная открывающая (левая) французская угловая кавычка","Single low-9 quotation mark":"Нижняя одинарная открывающая кавычка","Single right-pointing angle quotation mark":"Одинарная закрывающая (правая) французская угловая кавычка","soon with rightwards arrow above":"Стрелка вправо над словом SOON (скоро)","Special characters":"Спецсимволы","Spesmilo sign":"Символ спесмило","Square root":"Квадратный корень","Tenge sign":"Символ тенге","There exists":"Существует","Tilde operator":"Оператор тильда","top with upwards arrow above":"Стрелка вверх над словом TOP (верх)","Trade mark sign":"Знак торговой марки","Tugrik sign":"Символ тугрика","Turkish lira sign":"Символ турецкой лиры","Two dot leader":"Двухточечный пунктир",Union:"Объединение","up down arrow with base":"Стрелка вверх и вниз от планки внизу","upwards arrow to bar":"Стрелка вверх, упирающаяся в планку","upwards dashed arrow":"Пунктирная стрелка вверх","upwards double arrow":"Двойная стрелка вверх","Vulgar fraction one half":"Дробь – одна вторая","Vulgar fraction one quarter":"Дробь – одна четверть","Vulgar fraction three quarters":"Дробь – три четверти","Won sign":"Символ воны","Yen sign":"Символ иены"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(t){const a=t.ru=t.ru||{};a.dictionary=Object.assign(a.dictionary||{},{"Almost equal to":"Почти равный",Angle:"Угол","Approximately equal to":"Конгруэнтность (геометрическое равенство)","Asterisk operator":"Оператор звездочка","Austral sign":"Символ аргентинского аустраля","back with leftwards arrow above":"Стрелка влево над словом BACK (назад)","Bitcoin sign":"Символ биткоина","Cedi sign":"Символ ганского седи","Cent sign":"Символ цента","Character categories":"Категории","Colon sign":"Символ двоеточия","Contains as member":"Содержит как член","Copyright sign":"Знак авторского права","Cruzeiro sign":"Символ бразильского крузейро","Currency sign":"Символ валюты","Degree sign":"Знак градуса","Division sign":"Знак деления","Dollar sign":"Символ доллара","Dong sign":"Символ донга","Double dagger":"Двойной крестик","Double exclamation mark":"Двойной восклицательный знак","Double low-9 quotation mark":"Нижняя двойная открывающая кавычка","Double question mark":"Двойной вопросительный знак","downwards arrow to bar":"Стрелка вниз, упирающаяся в планку","downwards dashed arrow":"Пунктирная стрелка вниз","downwards double arrow":"Двойная стрелка вниз","downwards simple arrow":"простая стрелка вниз","Drachma sign":"Символ драхмы","Element of":"Принадлежит","Em dash":"Длинное тире","Empty set":"Пустое множество","En dash":"Среднее тире","end with leftwards arrow above":"Стрелка влево над словом END (конец)","Euro sign":"Символ евро","Euro-currency sign":"Символ евровалюты","Exclamation question mark":"Восклицательный вопросительный знак","For all":"Для всех","Fraction slash":"Дробная наклонная черта","French franc sign":"Символ французского франка","German penny sign":"Символ немецкого пенни","Greater-than or equal to":"Больше либо равно","Greater-than sign":"Знак больше","Guarani sign":"Символ гуарани","Horizontal ellipsis":"Многоточие","Hryvnia sign":"Символ гривны","Identical to":"Тождественно равно","Indian rupee sign":"Символ индийской рупии",Infinity:"Бесконечность",Integral:"Интеграл",Intersection:"Пересечение","Inverted exclamation mark":"Перевернутый восклицательный знак","Inverted question mark":"Перевернутый вопросительный знак","Kip sign":"Символ кипа","Latin capital letter a with breve":"Латинская заглавная буква «A» с бревисом","Latin capital letter a with macron":"Латинская заглавная буква «A» с макроном","Latin capital letter a with ogonek":"Латинская заглавная буква «A» с огонеком","Latin capital letter c with acute":"Латинская заглавная буква «C» с акутом","Latin capital letter c with caron":"Латинская заглавная буква «C» с гачеком","Latin capital letter c with circumflex":"Латинская заглавная буква «C» с циркумфлексом","Latin capital letter c with dot above":"Латинская заглавная буква «C» с точкой сверху","Latin capital letter d with caron":"Латинская заглавная буква «D» с гачеком","Latin capital letter d with stroke":"Латинская заглавная буква «D» со штрихом","Latin capital letter e with breve":"Латинская заглавная буква «E» с бревисом","Latin capital letter e with caron":"Латинская заглавная буква «E» с гачеком","Latin capital letter e with dot above":"Латинская заглавная буква «E» с точкой сверху","Latin capital letter e with macron":"Латинская заглавная буква «E» с макроном","Latin capital letter e with ogonek":"Латинская заглавная буква «E» с огонеком","Latin capital letter eng":"Латинская заглавная буква энг","Latin capital letter g with breve":"Латинская заглавная буква «G» с бревисом","Latin capital letter g with cedilla":"Латинская заглавная буква «G» с седилью","Latin capital letter g with circumflex":"Латинская заглавная буква «G» с циркумфлексом","Latin capital letter g with dot above":"Латинская заглавная буква «G» с точкой сверху","Latin capital letter h with circumflex":"Латинская заглавная буква «H» с циркумфлексом","Latin capital letter h with stroke":"Латинская заглавная буква «H» со штрихом","Latin capital letter i with breve":"Латинская заглавная буква «I» с бревисом","Latin capital letter i with dot above":"Латинская заглавная буква «I» с точкой сверху","Latin capital letter i with macron":"Латинская заглавная буква «I» с макроном","Latin capital letter i with ogonek":"Латинская заглавная буква «I» с огонеком","Latin capital letter i with tilde":"Латинская заглавная буква «I» с тильдой","Latin capital letter j with circumflex":"Латинская заглавная буква «J» с циркумфлексом","Latin capital letter k with cedilla":"Латинская заглавная буква «K» с седилью","Latin capital letter l with acute":"Латинская заглавная буква «L» с акутом","Latin capital letter l with caron":"Латинская заглавная буква «L» с гачеком","Latin capital letter l with cedilla":"Латинская заглавная буква «L» с седилью","Latin capital letter l with middle dot":"Латинская заглавная буква «L» с внутристрочной точкой","Latin capital letter l with stroke":"Латинская заглавная буква «L» со штрихом","Latin capital letter n with acute":"Латинская заглавная буква «N» с акутом","Latin capital letter n with caron":"Латинская заглавная буква «N» с гачеком","Latin capital letter n with cedilla":"Латинская заглавная буква «N» с седилью","Latin capital letter o with breve":"Латинская заглавная буква «O» с бревисом","Latin capital letter o with double acute":"Латинская заглавная буква «O» с двойным акутом","Latin capital letter o with macron":"Латинская заглавная буква «O» с макроном","Latin capital letter r with acute":"Латинская заглавная буква «R» с акутом","Latin capital letter r with caron":"Латинская заглавная буква «R» с гачеком","Latin capital letter r with cedilla":"Латинская заглавная буква «R» с седилью","Latin capital letter s with acute":"Латинская заглавная буква «S» с акутом","Latin capital letter s with caron":"Латинская заглавная буква «S» с гачеком","Latin capital letter s with cedilla":"Латинская заглавная буква «S» с седилью","Latin capital letter s with circumflex":"Латинская заглавная буква «S» с циркумфлексом","Latin capital letter t with caron":"Латинская заглавная буква «T» с гачеком","Latin capital letter t with cedilla":"Латинская заглавная буква «T» с седилью","Latin capital letter t with stroke":"Латинская заглавная буква «T» со штрихом","Latin capital letter u with breve":"Латинская заглавная буква «U» с бревисом","Latin capital letter u with double acute":"Латинская заглавная буква «U» с двойным акутом","Latin capital letter u with macron":"Латинская заглавная буква «U» с макроном","Latin capital letter u with ogonek":"Латинская заглавная буква «U» с огонеком","Latin capital letter u with ring above":"Латинская заглавная буква «U» с кружком сверху","Latin capital letter u with tilde":"Латинская заглавная буква «U» с тильдой","Latin capital letter w with circumflex":"Латинская заглавная буква «W» с циркумфлексом","Latin capital letter y with circumflex":"Латинская заглавная буква «Y» с циркумфлексом","Latin capital letter y with diaeresis":"Латинская заглавная буква «Y» с диэрезисом","Latin capital letter z with acute":"Латинская заглавная буква «Z» с акутом","Latin capital letter z with caron":"Латинская заглавная буква «Z» с гачеком","Latin capital letter z with dot above":"Латинская заглавная буква «Z» с точкой сверху","Latin capital ligature ij":"Латинская заглавная лигатура «IJ»","Latin capital ligature oe":"Латинская заглавная лигатура OE","Latin small letter a with breve":"Латинская строчная буква «a» с бревисом","Latin small letter a with macron":"Латинская строчная буква «a» с макроном","Latin small letter a with ogonek":"Латинская строчная буква «a» с огонеком","Latin small letter c with acute":"Латинская строчная буква «c» с акутом","Latin small letter c with caron":"Латинская строчная буква «c» с гачеком","Latin small letter c with circumflex":"Латинская строчная буква «c» с циркумфлексом","Latin small letter c with dot above":"Латинская строчная буква «c» с точкой сверху","Latin small letter d with caron":"Латинская строчная буква «d» с гачеком","Latin small letter d with stroke":"Латинская строчная буква «d» со штрихом","Latin small letter dotless i":"Латинская строчная буква «i» без точки","Latin small letter e with breve":"Латинская строчная буква «e» с бревисом","Latin small letter e with caron":"Латинская строчная буква «e» с гачеком","Latin small letter e with dot above":"Латинская строчная буква «e» с точкой сверху","Latin small letter e with macron":"Латинская строчная буква «e» с макроном","Latin small letter e with ogonek":"Латинская строчная буква «e» с огонеком","Latin small letter eng":"Латинская строчная буква энг","Latin small letter f with hook":"Латинская строчная буква «f» с хвостиком","Latin small letter g with breve":"Латинская строчная буква «g» с бревисом","Latin small letter g with cedilla":"Латинская строчная буква «g» с седилью","Latin small letter g with circumflex":"Латинская строчная буква «g» с циркумфлексом","Latin small letter g with dot above":"Латинская строчная буква «g» с точкой сверху","Latin small letter h with circumflex":"Латинская строчная буква «h» с циркумфлексом","Latin small letter h with stroke":"Латинская строчная буква «h» со штрихом","Latin small letter i with breve":"Латинская строчная буква «i» с бревисом","Latin small letter i with macron":"Латинская строчная буква «i» с макроном","Latin small letter i with ogonek":"Латинская строчная буква «i» с огонеком","Latin small letter i with tilde":"Латинская строчная буква «i» с тильдой","Latin small letter j with circumflex":"Латинская строчная буква «j» с циркумфлексом","Latin small letter k with cedilla":"Латинская строчная буква «k» с седилью","Latin small letter kra":"Латинская строчная буква кра","Latin small letter l with acute":"Латинская строчная буква «l» с акутом","Latin small letter l with caron":"Латинская строчная буква «l» с гачеком","Latin small letter l with cedilla":"Латинская строчная буква «l» с седилью","Latin small letter l with middle dot":"Латинская строчная буква «l» с внутристрочной точкой","Latin small letter l with stroke":"Латинская строчная буква «l» со штрихом","Latin small letter long s":"Латинская строчная буква длинная «s»","Latin small letter n preceded by apostrophe":"Латинская строчная буква «n» с предшествующим апострофом","Latin small letter n with acute":"Латинская строчная буква «n» с акутом","Latin small letter n with caron":"Латинская строчная буква «n» с гачеком","Latin small letter n with cedilla":"Латинская строчная буква «n» с седилью","Latin small letter o with breve":"Латинская строчная буква «o» с бревисом","Latin small letter o with double acute":"Латинская строчная буква «o» с двойным акутом","Latin small letter o with macron":"Латинская строчная буква «o» с макроном","Latin small letter r with acute":"Латинская строчная буква «r» с акутом","Latin small letter r with caron":"Латинская строчная буква «r» с гачеком","Latin small letter r with cedilla":"Латинская строчная буква «r» с седилью","Latin small letter s with acute":"Латинская строчная буква «s» с акутом","Latin small letter s with caron":"Латинская строчная буква «s» с гачеком","Latin small letter s with cedilla":"Латинская строчная буква «s» с седилью","Latin small letter s with circumflex":"Латинская строчная буква «s» с циркумфлексом","Latin small letter t with caron":"Латинская строчная буква «t» с гачеком","Latin small letter t with cedilla":"Латинская строчная буква «t» с седилью","Latin small letter t with stroke":"Латинская строчная буква «t» со штрихом","Latin small letter u with breve":"Латинская строчная буква «u» с бревисом","Latin small letter u with double acute":"Латинская строчная буква «u» с двойным акутом","Latin small letter u with macron":"Латинская строчная буква «u» с макроном","Latin small letter u with ogonek":"Латинская строчная буква «u» с огонеком","Latin small letter u with ring above":"Латинская строчная буква «u» с кружком сверху","Latin small letter u with tilde":"Латинская строчная буква «u» с тильдой","Latin small letter w with circumflex":"Латинская строчная буква «w» с циркумфлексом","Latin small letter y with circumflex":"Латинская строчная буква «y» с циркумфлексом","Latin small letter z with acute":"Латинская строчная буква «z» с акутом","Latin small letter z with caron":"Латинская строчная буква «z» с гачеком","Latin small letter z with dot above":"Латинская строчная буква «z» с точкой сверху","Latin small ligature ij":"Латинская строчная лигатура «ij»","Latin small ligature oe":"Латинская строчная лигатура oe","Left double quotation mark":"Открывающая двойная кавычка","Left single quotation mark":"Открывающая одинарная кавычка","Left-pointing double angle quotation mark":"Открывающая левая кавычка «ёлочка»","leftwards arrow to bar":"Стрелка влево, упирающаяся в планку","leftwards dashed arrow":"Пунктирная стрелка влево","leftwards double arrow":"Двойная стрелка влево","leftwards simple arrow":"простая стрелка влево","Less-than or equal to":"Меньше либо равно","Less-than sign":"Знак меньше","Lira sign":"Символ лиры","Livre tournois sign":"Символ турского ливра","Logical and":"Логическое И","Logical or":"Логическое ИЛИ",Macron:"Макрон","Manat sign":"Символ маната","Mill sign":"Символ милль","Minus sign":"Знак минус","Multiplication sign":"Знак умножения","N-ary product":"N-арное произведение","N-ary summation":"N-арная сумма",Nabla:"Набла","Naira sign":"Символ найры","New sheqel sign":"Символ нового шекеля","Nordic mark sign":"Символ скандинавской марки","Not an element of":"Не принадлежит","Not equal to":"Не равно","Not sign":"Знак отрицания","on with exclamation mark with left right arrow above":"Стрелка влево и вправо над словом ON! (включить)",Overline:"Надчёркивание","Paragraph sign":"Знак абзаца","Partial differential":"Частичный дифференциал","Per mille sign":"Знак промилле","Per ten thousand sign":"Знак на десять тысяч","Peseta sign":"Символ песеты","Peso sign":"Символ песо","Plus-minus sign":"Знак плюс-минус","Pound sign":"Символ фунта стерлингов","Proportional to":"Пропорционально","Question exclamation mark":"Вопросительный восклицательный знак","Registered sign":"Зарегистрированный товарный знак","Reversed paragraph sign":"Обратный знак абзаца","Right double quotation mark":"Закрывающая двойная кавычка","Right single quotation mark":"Закрывающая одинарная кавычка","Right-pointing double angle quotation mark":"Закрывающая правая кавычка «ёлочка»","rightwards arrow to bar":"Стрелка вправо, упирающаяся в планку","rightwards dashed arrow":"Пунктирная стрелка вправо","rightwards double arrow":"Двойная стрелка вправо","rightwards simple arrow":"простая стрелка вправо","Ruble sign":"Символ рубля","Rupee sign":"Символ рупии","Section sign":"Параграф","Single left-pointing angle quotation mark":"Одинарная открывающая (левая) французская угловая кавычка","Single low-9 quotation mark":"Нижняя одинарная открывающая кавычка","Single right-pointing angle quotation mark":"Одинарная закрывающая (правая) французская угловая кавычка","soon with rightwards arrow above":"Стрелка вправо над словом SOON (скоро)","Special characters":"Спецсимволы","Spesmilo sign":"Символ спесмило","Square root":"Квадратный корень","Tenge sign":"Символ тенге","There exists":"Существует","Tilde operator":"Оператор тильда","top with upwards arrow above":"Стрелка вверх над словом TOP (верх)","Trade mark sign":"Знак торговой марки","Tugrik sign":"Символ тугрика","Turkish lira sign":"Символ турецкой лиры","Two dot leader":"Двухточечный пунктир",Union:"Объединение","up down arrow with base":"Стрелка вверх и вниз от планки внизу","upwards arrow to bar":"Стрелка вверх, упирающаяся в планку","upwards dashed arrow":"Пунктирная стрелка вверх","upwards double arrow":"Двойная стрелка вверх","upwards simple arrow":"простая стрелка вверх","Vulgar fraction one half":"Дробь – одна вторая","Vulgar fraction one quarter":"Дробь – одна четверть","Vulgar fraction three quarters":"Дробь – три четверти","Won sign":"Символ воны","Yen sign":"Символ иены"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/special-characters/translations/sk.js b/core/assets/vendor/ckeditor5/special-characters/translations/sk.js
index 21aea58109..44fd34d78b 100644
--- a/core/assets/vendor/ckeditor5/special-characters/translations/sk.js
+++ b/core/assets/vendor/ckeditor5/special-characters/translations/sk.js
@@ -1 +1 @@
-!function(a){const t=a.sk=a.sk||{};t.dictionary=Object.assign(t.dictionary||{},{"Almost equal to":"Čiastočne rovný",Angle:"Uhol","Approximately equal to":"Aproximácia","Asterisk operator":"Hviezdička / násobenie","Austral sign":"Znak Austral","back with leftwards arrow above":"Šípka späť","Bitcoin sign":"Mena Bitcoin","Cedi sign":"Znak Cedi","Cent sign":"Znak cent","Character categories":"Kategórie znakov","Colon sign":"Dvojbodka","Contains as member":"Obsahuje prvok","Copyright sign":"Copyright","Cruzeiro sign":"Mena Cruzeiro","Currency sign":"Znak meny","Degree sign":"Znak stupeň","Division sign":"Delenie","Dollar sign":"Znak Dolár","Dong sign":"Znak Dong","Double dagger":"Dvojkríž","Double exclamation mark":"Dvojitý výkričník","Double low-9 quotation mark":"Dvojitá spodná uvodzovka","Double question mark":"Dvojitý otáznik","downwards arrow to bar":"šípka nadol do zvislej čiary","downwards dashed arrow":"prerušovaná šípka nadol","downwards double arrow":"dvojitá šípka nadol","Drachma sign":"Znak Drachma","Element of":"Patrí / Je súčasťou","Em dash":"Dlhá pomĺčka","Empty set":"Prázdna množina","En dash":"Pomĺčka","end with leftwards arrow above":"Šípka koniec","Euro sign":"Znak Euro","Euro-currency sign":"Mena Euro","Exclamation question mark":"Výkričník a otáznik","For all":"Pre všetky prvky v množine","Fraction slash":"Lomítko / Delenie","French franc sign":"Mena Francúzsky Frank","German penny sign":"Nemecká penny","Greater-than or equal to":"Väčší alebo rovný","Greater-than sign":"Väčší ako","Guarani sign":"Znak Guarani","Horizontal ellipsis":"Trojbodka","Hryvnia sign":"Znak Hryvnia","Identical to":"Identický k","Indian rupee sign":"Znak Indická rupia",Infinity:"Nekonečno",Integral:"Integrál",Intersection:"Priesečník / Prienik","Inverted exclamation mark":"Obrátený výkričník","Inverted question mark":"Obrátený otáznik","Kip sign":"Znak Kip","Latin capital letter a with breve":"Latinské veľké písmeno a s mäkčeňom","Latin capital letter a with macron":"Latinské veľké písmeno a s čiarou","Latin capital letter a with ogonek":"Latinské veľké písmeno a s háčikom","Latin capital letter c with acute":"Latinské veľké písmeno c s dĺžňom","Latin capital letter c with caron":"Latinské veľké písmeno c s mäkčeňom","Latin capital letter c with circumflex":"Latinské veľké písmeno c s obráteným mäkčeňom","Latin capital letter c with dot above":"Latinské veľké písmeno c s bodkou nad znakom","Latin capital letter d with caron":"Latinské veľké písmeno d s mäkčeňom","Latin capital letter d with stroke":"Latinské veľké písmeno d s prečiarknutím","Latin capital letter e with breve":"Latinské veľké písmeno e s mäkčeňom","Latin capital letter e with caron":"Latinské veľké písmeno e s mäkčeňom","Latin capital letter e with dot above":"Latinské veľké písmeno e s bodkou nad znakom","Latin capital letter e with macron":"Latinské veľké písmeno e s čiarou","Latin capital letter e with ogonek":"Latinské veľké písmeno e s háčikom","Latin capital letter eng":"Latinské veľké písmeno Eng","Latin capital letter g with breve":"Latinské veľké písmeno g s mäkčeňom","Latin capital letter g with cedilla":"Latinské veľké písmeno g s háčikom","Latin capital letter g with circumflex":"Latinské veľké písmeno g s obráteným mäkčeňom","Latin capital letter g with dot above":"Latinské veľké písmeno g s bodkou nad znakom","Latin capital letter h with circumflex":"Latinské veľké písmeno h s obráteným mäkčeňom","Latin capital letter h with stroke":"Latinské veľké písmeno h s prečiarknutím","Latin capital letter i with breve":"Latinské veľké písmeno i s mäkčeňom","Latin capital letter i with dot above":"Latinské veľké písmeno i s bodkou nad znakom","Latin capital letter i with macron":"Latinské veľké písmeno i s čiarou","Latin capital letter i with ogonek":"Latinské veľké písmeno i s háčikom","Latin capital letter i with tilde":"Latinské veľké písmeno i s vlnovkou","Latin capital letter j with circumflex":"Latinské veľké písmeno j s obráteným mäkčeňom","Latin capital letter k with cedilla":"Latinské veľké písmeno k s háčikom","Latin capital letter l with acute":"Latinské veľké písmeno l s dĺžňom","Latin capital letter l with caron":"Latinské veľké písmeno l s mäkčeňom","Latin capital letter l with cedilla":"Latinské veľké písmeno l s háčikom","Latin capital letter l with middle dot":"Latinské veľké písmeno l s bodkou uprostred","Latin capital letter l with stroke":"Latinské veľké písmeno l s prečiarknutím","Latin capital letter n with acute":"Latinské veľké písmeno n s dĺžňom","Latin capital letter n with caron":"Latinské veľké písmeno n s mäkčeňom","Latin capital letter n with cedilla":"Latinské veľké písmeno n s háčikom","Latin capital letter o with breve":"Latinské veľké písmeno o s mäkčeňom","Latin capital letter o with double acute":"Latinské veľké písmeno o s dĺžňom","Latin capital letter o with macron":"Latinské veľké písmeno o s čiarou","Latin capital letter r with acute":"Latinské veľké písmeno r s dĺžňom","Latin capital letter r with caron":"Latinské veľké písmeno r s mäkčeňom","Latin capital letter r with cedilla":"Latinské veľké písmeno r s háčikom","Latin capital letter s with acute":"Latinské veľké písmeno s s dĺžňom","Latin capital letter s with caron":"Latinské veľké písmeno s s mäkčeňom","Latin capital letter s with cedilla":"Latinské veľké písmeno s s háčikom","Latin capital letter s with circumflex":"Latinské veľké písmeno s s obráteným mäkčeňom","Latin capital letter t with caron":"Latinské veľké písmeno t s mäkčeňom","Latin capital letter t with cedilla":"Latinské veľké písmeno t s háčikom","Latin capital letter t with stroke":"Latinské veľké písmeno t s prečiarknutím","Latin capital letter u with breve":"Latinské veľké písmeno u s mäkčeňom","Latin capital letter u with double acute":"Latinské veľké písmeno u s dvojitým dĺžňom","Latin capital letter u with macron":"Latinské veľké písmeno u s čiarou","Latin capital letter u with ogonek":"Latinské veľké písmeno u s háčikom","Latin capital letter u with ring above":"Latinské veľké písmeno u s krúžkom nad znakom","Latin capital letter u with tilde":"Latinské veľké písmeno u s vlnovkou","Latin capital letter w with circumflex":"Latinské veľké písmeno w s obráteným mäkčeňom","Latin capital letter y with circumflex":"Latinské veľké písmeno y s obráteným mäkčeňom","Latin capital letter y with diaeresis":"Latinské veľké písmeno y s dvojbodkou nad znakom","Latin capital letter z with acute":"Latinské veľké písmeno z s dĺžňom","Latin capital letter z with caron":"Latinské veľké písmeno z s mäkčeňom","Latin capital letter z with dot above":"Latinské veľké písmeno z s bodkou nad znakom","Latin capital ligature ij":"Latinský veľký znak ligatúry ij","Latin capital ligature oe":"Latinský veľký znak ligatúry oe","Latin small letter a with breve":"Latinské malé písmeno a s mäkčeňom","Latin small letter a with macron":"Latinské malé písmeno a s čiarou","Latin small letter a with ogonek":"Latinské malé písmeno a s háčikom","Latin small letter c with acute":"Latinské malé písmeno c s dĺžňom","Latin small letter c with caron":"Latinské malé písmeno c s mäkčeňom","Latin small letter c with circumflex":"Latinské malé písmeno c s obráteným mäkčeňom","Latin small letter c with dot above":"Latinské malé písmeno c s bodkou nad znakom","Latin small letter d with caron":"Latinské malé písmeno d s mäkčeňom","Latin small letter d with stroke":"Latinské malé písmeno d s prečiarknutím","Latin small letter dotless i":"Latinské malé písmeno i bez bodky","Latin small letter e with breve":"Latinské malé písmeno e s mäkčeňom","Latin small letter e with caron":"Latinské malé písmeno e s mäkčeňom","Latin small letter e with dot above":"Latinské malé písmeno e s bodkou nad znakom","Latin small letter e with macron":"Latinské malé písmeno e s čiarou","Latin small letter e with ogonek":"Latinské malé písmeno e s háčikom","Latin small letter eng":"Latinské malé písmeno Eng","Latin small letter f with hook":"Funkcia","Latin small letter g with breve":"Latinské malé písmeno g s mäkčeňom","Latin small letter g with cedilla":"Latinské malé písmeno g s háčikom","Latin small letter g with circumflex":"Latinské malé písmeno g s obráteným mäkčeňom","Latin small letter g with dot above":"Latinské malé písmeno g s bodkou nad znakom","Latin small letter h with circumflex":"Latinské malé písmeno h s obráteným mäkčeňom","Latin small letter h with stroke":"Latinské malé písmeno h s prečiarknutím","Latin small letter i with breve":"Latinské malé písmeno i s mäkčeňom","Latin small letter i with macron":"Latinské malé písmeno i s čiarou","Latin small letter i with ogonek":"Latinské malé písmeno i s háčikom","Latin small letter i with tilde":"Latinské malé písmeno i s vlnovkou","Latin small letter j with circumflex":"Latinské malé písmeno j s obráteným mäkčeňom","Latin small letter k with cedilla":"Latinské malé písmeno k s háčikom","Latin small letter kra":"latinský malý znak Kra","Latin small letter l with acute":"Latinské malé písmeno l s dĺžňom","Latin small letter l with caron":"Latinské malé písmeno l s mäkčeňom","Latin small letter l with cedilla":"Latinské malé písmeno l s háčikom","Latin small letter l with middle dot":"Latinské malé písmeno l s bodkou uprostred","Latin small letter l with stroke":"Latinské malé písmeno l s prečiarknutím","Latin small letter long s":"Malé dlhé písmeno s","Latin small letter n preceded by apostrophe":"Latinské malé písmeno n s apostrofom","Latin small letter n with acute":"Latinské malé písmeno n s dĺžňom","Latin small letter n with caron":"Latinské malé písmeno n s mäkčeňom","Latin small letter n with cedilla":"Latinské malé písmeno n s háčikom","Latin small letter o with breve":"Latinské malé písmeno o s mäkčeňom","Latin small letter o with double acute":"Latinské malé písmeno o s dĺžňom","Latin small letter o with macron":"Latinské malé písmeno o s čiarou","Latin small letter r with acute":"Latinské malé písmeno r s dĺžňom","Latin small letter r with caron":"Latinské malé písmeno r s mäkčeňom","Latin small letter r with cedilla":"Latinské malé písmeno r s háčikom","Latin small letter s with acute":"Latinské malé písmeno s s dĺžňom","Latin small letter s with caron":"Latinské malé písmeno s s mäkčeňom","Latin small letter s with cedilla":"Latinské malé písmeno s s háčikom","Latin small letter s with circumflex":"Latinské malé písmeno s s obráteným mäkčeňom","Latin small letter t with caron":"Latinské malé písmeno t s mäkčeňom","Latin small letter t with cedilla":"Latinské malé písmeno t s háčikom","Latin small letter t with stroke":"Latinské malé písmeno t s prečiarknutím","Latin small letter u with breve":"Latinské malé písmeno u s mäkčeňom","Latin small letter u with double acute":"Latinské malé písmeno u s dvojitým dĺžňom","Latin small letter u with macron":"Latinské malé písmeno o s čiarou","Latin small letter u with ogonek":"Latinské malé písmeno u s háčikom","Latin small letter u with ring above":"Latinské malé písmeno u s krúžkom nad znakom","Latin small letter u with tilde":"Latinské malé písmeno u s vlnovkou","Latin small letter w with circumflex":"Latinské malé písmeno w s obráteným mäkčeňom","Latin small letter y with circumflex":"Latinské malé písmeno y s obráteným mäkčeňom","Latin small letter z with acute":"Latinské malé písmeno z s dĺžňom","Latin small letter z with caron":"Malé písmeno s z mäkčeňom","Latin small letter z with dot above":"Latinské malé písmeno z s bodkou nad znakom","Latin small ligature ij":"Latinský malý znak ligatúry ij","Latin small ligature oe":"Latinský malý znak ligatúry oe","Left double quotation mark":"Ľavá dvojitá uvodzovka","Left single quotation mark":"Ľavá uvodzovka","Left-pointing double angle quotation mark":"Dvojitá šípka ukazujúca doľava","leftwards arrow to bar":"šípka doľava do zvislej čiary","leftwards dashed arrow":"prerušovaná šípka doľava","leftwards double arrow":"dvojitá šípka doľava","Less-than or equal to":"Menší alebo rovný","Less-than sign":"Menší ako","Lira sign":"Mena Líra","Livre tournois sign":"Znak Livre tournois","Logical and":"Logický AND","Logical or":"Logický OR",Macron:"Horná čiara","Manat sign":"Znak Manat","Mill sign":"Znak Mill","Minus sign":"Znak mínus","Multiplication sign":"Násobenie","N-ary product":"Znak cyklického násobenia","N-ary summation":"Znak cyklického sčítania",Nabla:"Nabla","Naira sign":"Znak Naira","New sheqel sign":"Nový znak šekelu","Nordic mark sign":"Znak Nórska marka","Not an element of":"Nepatrí / Nie je súčasťou","Not equal to":"Nerovná sa","Not sign":"Nie je rovný","on with exclamation mark with left right arrow above":"ON s výkričníkom so šípkou doľava doprava hore",Overline:"Preškrtnutie","Paragraph sign":"Odsek","Partial differential":"Parciálna diferencia","Per mille sign":"Promile","Per ten thousand sign":"Na desaťtisíc","Peseta sign":"Znak Peseta","Peso sign":"Znak Peso","Plus-minus sign":"Znak plus-mínus","Pound sign":"Znak Libra","Proportional to":"Úmerný k","Question exclamation mark":"Otáznik a výkričník","Registered sign":"Registrovaný","Reversed paragraph sign":"Obrátený znak odseku","Right double quotation mark":"Pravá dvojitá uvodzovka","Right single quotation mark":"Pravá uvodzovka","Right-pointing double angle quotation mark":"Dvojitá šípka ukazujúca doprava","rightwards arrow to bar":"šípka doprava do zvislej čiary","rightwards dashed arrow":"čiarkovaná šípka doprava","rightwards double arrow":"dvojitá šípka doprava","Ruble sign":"Znak Ruble","Rupee sign":"Znak Rupee","Section sign":"Sekcia","Single left-pointing angle quotation mark":"Šípka ukazujúca doľava","Single low-9 quotation mark":"Spodná uvodzovka","Single right-pointing angle quotation mark":"Šípka ukazujúca doprava","soon with rightwards arrow above":"čoskoro so šípkou doprava hore","Special characters":"Špeciálne znaky","Spesmilo sign":"Znak Spesmilo","Square root":"Odmocnina","Tenge sign":"Znak Tenge","There exists":"Existuje v množine","Tilde operator":"Vlnovka","top with upwards arrow above":"TOP so šípkou hore","Trade mark sign":"Ochranná známka","Tugrik sign":"Znak Tugrik","Turkish lira sign":"Znak Turecká líra","Two dot leader":"Horizontálna dvojbodka",Union:"Zjednotenie","up down arrow with base":"Šípka hore-dole od základne","upwards arrow to bar":"šípka nahor do zvislej čiary","upwards dashed arrow":"čiarkovaná šípka nahor","upwards double arrow":"dvojitá šípka nahor","Vulgar fraction one half":"Polovica","Vulgar fraction one quarter":"Jedna štvrtina","Vulgar fraction three quarters":"Tri štvrtiny","Won sign":"Znak Won","Yen sign":"Znak Jen"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(a){const t=a.sk=a.sk||{};t.dictionary=Object.assign(t.dictionary||{},{"Almost equal to":"Čiastočne rovný",Angle:"Uhol","Approximately equal to":"Aproximácia","Asterisk operator":"Hviezdička / násobenie","Austral sign":"Znak Austral","back with leftwards arrow above":"Šípka späť","Bitcoin sign":"Mena Bitcoin","Cedi sign":"Znak Cedi","Cent sign":"Znak cent","Character categories":"Kategórie znakov","Colon sign":"Dvojbodka","Contains as member":"Obsahuje prvok","Copyright sign":"Copyright","Cruzeiro sign":"Mena Cruzeiro","Currency sign":"Znak meny","Degree sign":"Znak stupeň","Division sign":"Delenie","Dollar sign":"Znak Dolár","Dong sign":"Znak Dong","Double dagger":"Dvojkríž","Double exclamation mark":"Dvojitý výkričník","Double low-9 quotation mark":"Dvojitá spodná uvodzovka","Double question mark":"Dvojitý otáznik","downwards arrow to bar":"šípka nadol do zvislej čiary","downwards dashed arrow":"prerušovaná šípka nadol","downwards double arrow":"dvojitá šípka nadol","downwards simple arrow":"jednoduchá šípka nadol","Drachma sign":"Znak Drachma","Element of":"Patrí / Je súčasťou","Em dash":"Dlhá pomĺčka","Empty set":"Prázdna množina","En dash":"Pomĺčka","end with leftwards arrow above":"Šípka koniec","Euro sign":"Znak Euro","Euro-currency sign":"Mena Euro","Exclamation question mark":"Výkričník a otáznik","For all":"Pre všetky prvky v množine","Fraction slash":"Lomítko / Delenie","French franc sign":"Mena Francúzsky Frank","German penny sign":"Nemecká penny","Greater-than or equal to":"Väčší alebo rovný","Greater-than sign":"Väčší ako","Guarani sign":"Znak Guarani","Horizontal ellipsis":"Trojbodka","Hryvnia sign":"Znak Hryvnia","Identical to":"Identický k","Indian rupee sign":"Znak Indická rupia",Infinity:"Nekonečno",Integral:"Integrál",Intersection:"Priesečník / Prienik","Inverted exclamation mark":"Obrátený výkričník","Inverted question mark":"Obrátený otáznik","Kip sign":"Znak Kip","Latin capital letter a with breve":"Latinské veľké písmeno a s mäkčeňom","Latin capital letter a with macron":"Latinské veľké písmeno a s čiarou","Latin capital letter a with ogonek":"Latinské veľké písmeno a s háčikom","Latin capital letter c with acute":"Latinské veľké písmeno c s dĺžňom","Latin capital letter c with caron":"Latinské veľké písmeno c s mäkčeňom","Latin capital letter c with circumflex":"Latinské veľké písmeno c s obráteným mäkčeňom","Latin capital letter c with dot above":"Latinské veľké písmeno c s bodkou nad znakom","Latin capital letter d with caron":"Latinské veľké písmeno d s mäkčeňom","Latin capital letter d with stroke":"Latinské veľké písmeno d s prečiarknutím","Latin capital letter e with breve":"Latinské veľké písmeno e s mäkčeňom","Latin capital letter e with caron":"Latinské veľké písmeno e s mäkčeňom","Latin capital letter e with dot above":"Latinské veľké písmeno e s bodkou nad znakom","Latin capital letter e with macron":"Latinské veľké písmeno e s čiarou","Latin capital letter e with ogonek":"Latinské veľké písmeno e s háčikom","Latin capital letter eng":"Latinské veľké písmeno Eng","Latin capital letter g with breve":"Latinské veľké písmeno g s mäkčeňom","Latin capital letter g with cedilla":"Latinské veľké písmeno g s háčikom","Latin capital letter g with circumflex":"Latinské veľké písmeno g s obráteným mäkčeňom","Latin capital letter g with dot above":"Latinské veľké písmeno g s bodkou nad znakom","Latin capital letter h with circumflex":"Latinské veľké písmeno h s obráteným mäkčeňom","Latin capital letter h with stroke":"Latinské veľké písmeno h s prečiarknutím","Latin capital letter i with breve":"Latinské veľké písmeno i s mäkčeňom","Latin capital letter i with dot above":"Latinské veľké písmeno i s bodkou nad znakom","Latin capital letter i with macron":"Latinské veľké písmeno i s čiarou","Latin capital letter i with ogonek":"Latinské veľké písmeno i s háčikom","Latin capital letter i with tilde":"Latinské veľké písmeno i s vlnovkou","Latin capital letter j with circumflex":"Latinské veľké písmeno j s obráteným mäkčeňom","Latin capital letter k with cedilla":"Latinské veľké písmeno k s háčikom","Latin capital letter l with acute":"Latinské veľké písmeno l s dĺžňom","Latin capital letter l with caron":"Latinské veľké písmeno l s mäkčeňom","Latin capital letter l with cedilla":"Latinské veľké písmeno l s háčikom","Latin capital letter l with middle dot":"Latinské veľké písmeno l s bodkou uprostred","Latin capital letter l with stroke":"Latinské veľké písmeno l s prečiarknutím","Latin capital letter n with acute":"Latinské veľké písmeno n s dĺžňom","Latin capital letter n with caron":"Latinské veľké písmeno n s mäkčeňom","Latin capital letter n with cedilla":"Latinské veľké písmeno n s háčikom","Latin capital letter o with breve":"Latinské veľké písmeno o s mäkčeňom","Latin capital letter o with double acute":"Latinské veľké písmeno o s dĺžňom","Latin capital letter o with macron":"Latinské veľké písmeno o s čiarou","Latin capital letter r with acute":"Latinské veľké písmeno r s dĺžňom","Latin capital letter r with caron":"Latinské veľké písmeno r s mäkčeňom","Latin capital letter r with cedilla":"Latinské veľké písmeno r s háčikom","Latin capital letter s with acute":"Latinské veľké písmeno s s dĺžňom","Latin capital letter s with caron":"Latinské veľké písmeno s s mäkčeňom","Latin capital letter s with cedilla":"Latinské veľké písmeno s s háčikom","Latin capital letter s with circumflex":"Latinské veľké písmeno s s obráteným mäkčeňom","Latin capital letter t with caron":"Latinské veľké písmeno t s mäkčeňom","Latin capital letter t with cedilla":"Latinské veľké písmeno t s háčikom","Latin capital letter t with stroke":"Latinské veľké písmeno t s prečiarknutím","Latin capital letter u with breve":"Latinské veľké písmeno u s mäkčeňom","Latin capital letter u with double acute":"Latinské veľké písmeno u s dvojitým dĺžňom","Latin capital letter u with macron":"Latinské veľké písmeno u s čiarou","Latin capital letter u with ogonek":"Latinské veľké písmeno u s háčikom","Latin capital letter u with ring above":"Latinské veľké písmeno u s krúžkom nad znakom","Latin capital letter u with tilde":"Latinské veľké písmeno u s vlnovkou","Latin capital letter w with circumflex":"Latinské veľké písmeno w s obráteným mäkčeňom","Latin capital letter y with circumflex":"Latinské veľké písmeno y s obráteným mäkčeňom","Latin capital letter y with diaeresis":"Latinské veľké písmeno y s dvojbodkou nad znakom","Latin capital letter z with acute":"Latinské veľké písmeno z s dĺžňom","Latin capital letter z with caron":"Latinské veľké písmeno z s mäkčeňom","Latin capital letter z with dot above":"Latinské veľké písmeno z s bodkou nad znakom","Latin capital ligature ij":"Latinský veľký znak ligatúry ij","Latin capital ligature oe":"Latinský veľký znak ligatúry oe","Latin small letter a with breve":"Latinské malé písmeno a s mäkčeňom","Latin small letter a with macron":"Latinské malé písmeno a s čiarou","Latin small letter a with ogonek":"Latinské malé písmeno a s háčikom","Latin small letter c with acute":"Latinské malé písmeno c s dĺžňom","Latin small letter c with caron":"Latinské malé písmeno c s mäkčeňom","Latin small letter c with circumflex":"Latinské malé písmeno c s obráteným mäkčeňom","Latin small letter c with dot above":"Latinské malé písmeno c s bodkou nad znakom","Latin small letter d with caron":"Latinské malé písmeno d s mäkčeňom","Latin small letter d with stroke":"Latinské malé písmeno d s prečiarknutím","Latin small letter dotless i":"Latinské malé písmeno i bez bodky","Latin small letter e with breve":"Latinské malé písmeno e s mäkčeňom","Latin small letter e with caron":"Latinské malé písmeno e s mäkčeňom","Latin small letter e with dot above":"Latinské malé písmeno e s bodkou nad znakom","Latin small letter e with macron":"Latinské malé písmeno e s čiarou","Latin small letter e with ogonek":"Latinské malé písmeno e s háčikom","Latin small letter eng":"Latinské malé písmeno Eng","Latin small letter f with hook":"Funkcia","Latin small letter g with breve":"Latinské malé písmeno g s mäkčeňom","Latin small letter g with cedilla":"Latinské malé písmeno g s háčikom","Latin small letter g with circumflex":"Latinské malé písmeno g s obráteným mäkčeňom","Latin small letter g with dot above":"Latinské malé písmeno g s bodkou nad znakom","Latin small letter h with circumflex":"Latinské malé písmeno h s obráteným mäkčeňom","Latin small letter h with stroke":"Latinské malé písmeno h s prečiarknutím","Latin small letter i with breve":"Latinské malé písmeno i s mäkčeňom","Latin small letter i with macron":"Latinské malé písmeno i s čiarou","Latin small letter i with ogonek":"Latinské malé písmeno i s háčikom","Latin small letter i with tilde":"Latinské malé písmeno i s vlnovkou","Latin small letter j with circumflex":"Latinské malé písmeno j s obráteným mäkčeňom","Latin small letter k with cedilla":"Latinské malé písmeno k s háčikom","Latin small letter kra":"latinský malý znak Kra","Latin small letter l with acute":"Latinské malé písmeno l s dĺžňom","Latin small letter l with caron":"Latinské malé písmeno l s mäkčeňom","Latin small letter l with cedilla":"Latinské malé písmeno l s háčikom","Latin small letter l with middle dot":"Latinské malé písmeno l s bodkou uprostred","Latin small letter l with stroke":"Latinské malé písmeno l s prečiarknutím","Latin small letter long s":"Malé dlhé písmeno s","Latin small letter n preceded by apostrophe":"Latinské malé písmeno n s apostrofom","Latin small letter n with acute":"Latinské malé písmeno n s dĺžňom","Latin small letter n with caron":"Latinské malé písmeno n s mäkčeňom","Latin small letter n with cedilla":"Latinské malé písmeno n s háčikom","Latin small letter o with breve":"Latinské malé písmeno o s mäkčeňom","Latin small letter o with double acute":"Latinské malé písmeno o s dĺžňom","Latin small letter o with macron":"Latinské malé písmeno o s čiarou","Latin small letter r with acute":"Latinské malé písmeno r s dĺžňom","Latin small letter r with caron":"Latinské malé písmeno r s mäkčeňom","Latin small letter r with cedilla":"Latinské malé písmeno r s háčikom","Latin small letter s with acute":"Latinské malé písmeno s s dĺžňom","Latin small letter s with caron":"Latinské malé písmeno s s mäkčeňom","Latin small letter s with cedilla":"Latinské malé písmeno s s háčikom","Latin small letter s with circumflex":"Latinské malé písmeno s s obráteným mäkčeňom","Latin small letter t with caron":"Latinské malé písmeno t s mäkčeňom","Latin small letter t with cedilla":"Latinské malé písmeno t s háčikom","Latin small letter t with stroke":"Latinské malé písmeno t s prečiarknutím","Latin small letter u with breve":"Latinské malé písmeno u s mäkčeňom","Latin small letter u with double acute":"Latinské malé písmeno u s dvojitým dĺžňom","Latin small letter u with macron":"Latinské malé písmeno o s čiarou","Latin small letter u with ogonek":"Latinské malé písmeno u s háčikom","Latin small letter u with ring above":"Latinské malé písmeno u s krúžkom nad znakom","Latin small letter u with tilde":"Latinské malé písmeno u s vlnovkou","Latin small letter w with circumflex":"Latinské malé písmeno w s obráteným mäkčeňom","Latin small letter y with circumflex":"Latinské malé písmeno y s obráteným mäkčeňom","Latin small letter z with acute":"Latinské malé písmeno z s dĺžňom","Latin small letter z with caron":"Malé písmeno s z mäkčeňom","Latin small letter z with dot above":"Latinské malé písmeno z s bodkou nad znakom","Latin small ligature ij":"Latinský malý znak ligatúry ij","Latin small ligature oe":"Latinský malý znak ligatúry oe","Left double quotation mark":"Ľavá dvojitá uvodzovka","Left single quotation mark":"Ľavá uvodzovka","Left-pointing double angle quotation mark":"Dvojitá šípka ukazujúca doľava","leftwards arrow to bar":"šípka doľava do zvislej čiary","leftwards dashed arrow":"prerušovaná šípka doľava","leftwards double arrow":"dvojitá šípka doľava","leftwards simple arrow":"jednoduchá šípka doľava","Less-than or equal to":"Menší alebo rovný","Less-than sign":"Menší ako","Lira sign":"Mena Líra","Livre tournois sign":"Znak Livre tournois","Logical and":"Logický AND","Logical or":"Logický OR",Macron:"Horná čiara","Manat sign":"Znak Manat","Mill sign":"Znak Mill","Minus sign":"Znak mínus","Multiplication sign":"Násobenie","N-ary product":"Znak cyklického násobenia","N-ary summation":"Znak cyklického sčítania",Nabla:"Nabla","Naira sign":"Znak Naira","New sheqel sign":"Nový znak šekelu","Nordic mark sign":"Znak Nórska marka","Not an element of":"Nepatrí / Nie je súčasťou","Not equal to":"Nerovná sa","Not sign":"Nie je rovný","on with exclamation mark with left right arrow above":"ON s výkričníkom so šípkou doľava doprava hore",Overline:"Preškrtnutie","Paragraph sign":"Odsek","Partial differential":"Parciálna diferencia","Per mille sign":"Promile","Per ten thousand sign":"Na desaťtisíc","Peseta sign":"Znak Peseta","Peso sign":"Znak Peso","Plus-minus sign":"Znak plus-mínus","Pound sign":"Znak Libra","Proportional to":"Úmerný k","Question exclamation mark":"Otáznik a výkričník","Registered sign":"Registrovaný","Reversed paragraph sign":"Obrátený znak odseku","Right double quotation mark":"Pravá dvojitá uvodzovka","Right single quotation mark":"Pravá uvodzovka","Right-pointing double angle quotation mark":"Dvojitá šípka ukazujúca doprava","rightwards arrow to bar":"šípka doprava do zvislej čiary","rightwards dashed arrow":"čiarkovaná šípka doprava","rightwards double arrow":"dvojitá šípka doprava","rightwards simple arrow":"jednoduchá šípka doprava","Ruble sign":"Znak Ruble","Rupee sign":"Znak Rupee","Section sign":"Sekcia","Single left-pointing angle quotation mark":"Šípka ukazujúca doľava","Single low-9 quotation mark":"Spodná uvodzovka","Single right-pointing angle quotation mark":"Šípka ukazujúca doprava","soon with rightwards arrow above":"čoskoro so šípkou doprava hore","Special characters":"Špeciálne znaky","Spesmilo sign":"Znak Spesmilo","Square root":"Odmocnina","Tenge sign":"Znak Tenge","There exists":"Existuje v množine","Tilde operator":"Vlnovka","top with upwards arrow above":"TOP so šípkou hore","Trade mark sign":"Ochranná známka","Tugrik sign":"Znak Tugrik","Turkish lira sign":"Znak Turecká líra","Two dot leader":"Horizontálna dvojbodka",Union:"Zjednotenie","up down arrow with base":"Šípka hore-dole od základne","upwards arrow to bar":"šípka nahor do zvislej čiary","upwards dashed arrow":"čiarkovaná šípka nahor","upwards double arrow":"dvojitá šípka nahor","upwards simple arrow":"jednoduchá šípka nahor","Vulgar fraction one half":"Polovica","Vulgar fraction one quarter":"Jedna štvrtina","Vulgar fraction three quarters":"Tri štvrtiny","Won sign":"Znak Won","Yen sign":"Znak Jen"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/special-characters/translations/sr-latn.js b/core/assets/vendor/ckeditor5/special-characters/translations/sr-latn.js
index d8eee96d96..a3b3978e8b 100644
--- a/core/assets/vendor/ckeditor5/special-characters/translations/sr-latn.js
+++ b/core/assets/vendor/ckeditor5/special-characters/translations/sr-latn.js
@@ -1 +1 @@
-!function(a){const t=a["sr-latn"]=a["sr-latn"]||{};t.dictionary=Object.assign(t.dictionary||{},{"Almost equal to":"Skoro jednako",Angle:"Ugao","Approximately equal to":"Otprilike jednako","Asterisk operator":"Asterisk operator","Austral sign":"Australni znak","back with leftwards arrow above":"Nazad sa strelicom levo","Bitcoin sign":"Znak bitcoina","Cedi sign":"Znak cedi","Cent sign":"Znak centа","Character categories":"Kategorija karaktera","Colon sign":"Dvotačka","Contains as member":"Sadrži kao član","Copyright sign":"Simbol autorskog prava","Cruzeiro sign":"Znak cruzeiro","Currency sign":"Znak valute","Degree sign":"Znak stepena","Division sign":"Znak divizije","Dollar sign":"Znak dolara","Dong sign":"Znak dong","Double dagger":"Dvostruki bodež","Double exclamation mark":"Dvosrtuki uzvičnik","Double low-9 quotation mark":"Dvostruki niski-9 navodnik","Double question mark":"Dvostruki upitnik","downwards arrow to bar":"Strelica prema dole ka traci","downwards dashed arrow":"Prekidana strelica prema dole","downwards double arrow":"Dupla strelica prema dole","Drachma sign":"Znak drahma","Element of":"Element od","Em dash":"Em crtica","Empty set":"Prazan set","En dash":"En crtica","end with leftwards arrow above":"Završite strelicom levo","Euro sign":"Znak eura","Euro-currency sign":"Znak valute eura","Exclamation question mark":"Znak uzvičnika upitnika","For all":"Za sve","Fraction slash":"Crta frakcije","French franc sign":"Znak francuskog franaka","German penny sign":"Znak nemački peni","Greater-than or equal to":"Znak veće od ili jednako","Greater-than sign":"Znak veće od","Guarani sign":"Znak guarani","Horizontal ellipsis":"Horizontalna elipsa","Hryvnia sign":"Znak grivna","Identical to":"Identičan","Indian rupee sign":"Znak indijske rupije",Infinity:"Beskonačnost",Integral:"Integral",Intersection:"Raskrsnica","Inverted exclamation mark":"Obrnuti uzvičnik","Inverted question mark":"Obrnuti upitnik","Kip sign":"Znak kip","Latin capital letter a with breve":"Latinsko veliko slovo a sa brevom","Latin capital letter a with macron":"Latinsko veliko slovo a sa makronom","Latin capital letter a with ogonek":"Latinsko veliko slovo a sa ogonek","Latin capital letter c with acute":"Latinsko veliko slovo c sa akutom","Latin capital letter c with caron":"Latinsko veliko slovo c sa caronom","Latin capital letter c with circumflex":"Latinsko veliko slovo c sa circumflex","Latin capital letter c with dot above":"Latinsko veliko slovo c sa tačkom iznad","Latin capital letter d with caron":"Latinsko veliko slovo d sa caronom","Latin capital letter d with stroke":"Latinsko veliko slovo d sa stroke","Latin capital letter e with breve":"Latinsko veliko slovo e sa breve","Latin capital letter e with caron":"Latinsko veliko slovo e sa caron","Latin capital letter e with dot above":"Latinsko veliko slovo e sa tačkom iznad","Latin capital letter e with macron":"Latinsko veliko slovo e sa macron","Latin capital letter e with ogonek":"Latinsko veliko slovo e sa ogonek","Latin capital letter eng":"Latinsko veliko slovo eng","Latin capital letter g with breve":"Latinsko veliko slovo g sa breve","Latin capital letter g with cedilla":"Latinsko veliko slovo g sa cedillom","Latin capital letter g with circumflex":"Latinsko veliko slovo g sa circumflex","Latin capital letter g with dot above":"Latinsko veliko slovo g sa tačkom iznad","Latin capital letter h with circumflex":"Latinsko veliko slovo h sa circumflex","Latin capital letter h with stroke":"Latinsko veliko slovo h sa stroke","Latin capital letter i with breve":"Latinsko veloko slovo i sa breve","Latin capital letter i with dot above":"Latinsko veliko slovo i sa tackom iznad","Latin capital letter i with macron":"Latinsko veliko slovo i sa macron","Latin capital letter i with ogonek":"Latinsko veliko slovo i sa ogonek","Latin capital letter i with tilde":"Latinsko veliko slovo i sa tildom","Latin capital letter j with circumflex":"Latinsko veliko slovo j sa circumflex","Latin capital letter k with cedilla":"Latinsko veliko slovo k sa cedila","Latin capital letter l with acute":"Latinsko veloko slovo l sa akutom","Latin capital letter l with caron":"Latinsko veliko slovo l sa caron","Latin capital letter l with cedilla":"Latinsko veliko slovo l sa cedila","Latin capital letter l with middle dot":"Latinsko veliko slovo l sa srednjom tačkom","Latin capital letter l with stroke":"Latinsko veliko slovo l sa stroke","Latin capital letter n with acute":"Latinsko veliko slovo n sa akutom ","Latin capital letter n with caron":"Latinsko veliko slovo n sa caron","Latin capital letter n with cedilla":"Latinsko veliko slovo n sa cedilom","Latin capital letter o with breve":"Latinsko veliko slovo o sa breve","Latin capital letter o with double acute":"Latinsko veliko slovo o sa dvostrukom akutom","Latin capital letter o with macron":"Latinsko veliko slovo o sa macron","Latin capital letter r with acute":"Latinsko veliko slovo r sa akutom","Latin capital letter r with caron":"Latinsko veliko slovo r sa caron","Latin capital letter r with cedilla":"Latinsko veliko slovo r sa cedila","Latin capital letter s with acute":"Latinsko veliko slovo s sa akutom","Latin capital letter s with caron":"Latinsko veliko slovo s sa caron","Latin capital letter s with cedilla":"Latinsko veliko slovo s sa cedila","Latin capital letter s with circumflex":"Latinsko veliko slovo s sa circumflex","Latin capital letter t with caron":"Latinsko veliko slovo t sa caron","Latin capital letter t with cedilla":"Latinsko veliko slovo t sa cedila","Latin capital letter t with stroke":"Latinsko veliko slovo t sa stroke","Latin capital letter u with breve":"Latinsko veliko slovo u sa breve","Latin capital letter u with double acute":"Latinsko veliko slovo u s dvostrukom akutom","Latin capital letter u with macron":"Latinsko veliko slovo u sa macron","Latin capital letter u with ogonek":"Latinsko veliko slovo u sa ogonek","Latin capital letter u with ring above":"Latinsko veliko slovo u s prstenom iznad","Latin capital letter u with tilde":"Latinsko veliko slovo u sa tildom","Latin capital letter w with circumflex":"Latinsko veliko slovo w sa circumflex","Latin capital letter y with circumflex":"Latinsko veliko slovo y sa circumflex","Latin capital letter y with diaeresis":"Latinsko veliko slovo y sa dijarezom","Latin capital letter z with acute":"Latinsko veliko slovo z sa akutom","Latin capital letter z with caron":"Latinsko veliko slovo z sa caron","Latin capital letter z with dot above":"Latinsko veliko slovo z sa tačkom iznad","Latin capital ligature ij":"Latinska velika ligatura ij","Latin capital ligature oe":"Latinska velika ligatura oe","Latin small letter a with breve":"Latinsko malo slovo a sa  brevom","Latin small letter a with macron":"Latinsko malo slovo a sa makronom","Latin small letter a with ogonek":"Latinsko malo slovo a sa ogonek","Latin small letter c with acute":"Latinsko malo slovo c sa akutom","Latin small letter c with caron":"Latinsko malo slovo c sa caronom","Latin small letter c with circumflex":"Latino malo slovo c sa circumflex","Latin small letter c with dot above":"Latinsko malo slovo c sa tačkom iznad","Latin small letter d with caron":"Latinsko malo slovo d sa caronom","Latin small letter d with stroke":"Latinsko malo slovo d sa stroke","Latin small letter dotless i":"Latinsko malo slovo i bez tačke","Latin small letter e with breve":"Latinsko malo slovo e sa breve","Latin small letter e with caron":"Latinsko malo slovo e sa caron","Latin small letter e with dot above":"Latinsko malo slovo e sa tačkom iznad","Latin small letter e with macron":"Latinsko malo slovo e sa macron","Latin small letter e with ogonek":"Latinsko malo slovo e sa ogonek","Latin small letter eng":"Latinsko malo slovo eng","Latin small letter f with hook":"Latinsko malo slovo f sa kukom","Latin small letter g with breve":"Latinsko malo slovo g sa breve","Latin small letter g with cedilla":"Latinsko malo slovo g sa cedillom","Latin small letter g with circumflex":"Latinsko malo slovo g sa circumflex","Latin small letter g with dot above":"Latinsko malo slovo g sa tačkom iznad","Latin small letter h with circumflex":"Latinsko malo slovo h sa circumflex","Latin small letter h with stroke":"Latinsko malo slovo h sa stroke","Latin small letter i with breve":"Latinsko malo slovo i sa breve","Latin small letter i with macron":"Latinsko malo slovo i sa macron","Latin small letter i with ogonek":"Latinsko malo slovo i sa ogonek","Latin small letter i with tilde":"Latinsko malo slovo i sa tildom","Latin small letter j with circumflex":"Latinsko malo slovo j sa circumflex","Latin small letter k with cedilla":"Latinsko malo slovo k sa cedila","Latin small letter kra":"Latinsko malo slovo kra","Latin small letter l with acute":"Latinsko malo slovo l sa akutom","Latin small letter l with caron":"Latinsko malo slovo l sa caron","Latin small letter l with cedilla":"Latinsko malo slovo l sa cedila","Latin small letter l with middle dot":"Latinsko malo slovo l sa srednjom tačkom","Latin small letter l with stroke":"Latinsko malo slovo l sa stroke","Latin small letter long s":"Latinsko malo slovo dugačko s","Latin small letter n preceded by apostrophe":"Latinsko malo slovo n koje prethodi apostrof","Latin small letter n with acute":"Latinsko malo slovo n sa akutom ","Latin small letter n with caron":"Latinsko malo slovo n sa caron ","Latin small letter n with cedilla":"Latinsko malo slovo n sa cedilom","Latin small letter o with breve":"Latinsko malo slovo o sa breve","Latin small letter o with double acute":"Latinsko malo slovo o sa dvostrukom akutom","Latin small letter o with macron":"Latinsko malo slovo o sa macron","Latin small letter r with acute":"Latinsko malo slovo r sa akutom","Latin small letter r with caron":"Latinsko malo slovo r sa caron","Latin small letter r with cedilla":"Latinsko malo slovo r sa cedila","Latin small letter s with acute":"Latinsko malo slovo s sa akutom","Latin small letter s with caron":"Latinsko malo slovo s sa caron","Latin small letter s with cedilla":"Latinsko malo slovo s sa cedila","Latin small letter s with circumflex":"Latinsko malo slovo s sa circumflex","Latin small letter t with caron":"Latinsko malo slovo t sa caron","Latin small letter t with cedilla":"Latinsko malo slovo t sa cedila","Latin small letter t with stroke":"Latinsko malo slovo t sa stroke","Latin small letter u with breve":"Latinsko malo slovo u sa breve","Latin small letter u with double acute":"Latinsko malo slovo u s dvostrukom akutom","Latin small letter u with macron":"Latinsko malo slovo u sa macron","Latin small letter u with ogonek":"Latinsko malo slovo u sa ogonek","Latin small letter u with ring above":"Latinsko malo slovo u s prstenom iznad","Latin small letter u with tilde":"Latinsko malo slovo u sa tildom","Latin small letter w with circumflex":"Latinsko malo slovo w sa circumflex","Latin small letter y with circumflex":"Latinsko malo slovo y sa circumflex","Latin small letter z with acute":"Latinsko malo slovo z sa akutom","Latin small letter z with caron":"Latinsko malo slovo z sa caron","Latin small letter z with dot above":"Latinsko malo slovo z sa tačkom iznad","Latin small ligature ij":"Latinska mala ligatura ij","Latin small ligature oe":"Latinska mala ligatura oe","Left double quotation mark":"Levi dvostruki navodnik","Left single quotation mark":"Levi pojedinačni navodnik","Left-pointing double angle quotation mark":"Levi dvostrani navodnik dvostrukog ugla","leftwards arrow to bar":"Strelica nalevo ka traci","leftwards dashed arrow":"Prekidana strelica levo","leftwards double arrow":"Dupla strlica levo","Less-than or equal to":"Znak manje od ili jednako","Less-than sign":"Znak manje od","Lira sign":"Znak lire","Livre tournois sign":"Znak livre tournois","Logical and":"Logički i","Logical or":"Logički ili",Macron:"Macron","Manat sign":"Znak manat","Mill sign":"Znak mlina","Minus sign":"Znak minus","Multiplication sign":"Znak množenja","N-ary product":"N-ari proizvod","N-ary summation":"N-ari zbir",Nabla:"Nabla","Naira sign":"Znak naira","New sheqel sign":"Znak novi šekel","Nordic mark sign":"Nordijski znak","Not an element of":"Nije element","Not equal to":"Nejednako sa","Not sign":"Nije znak","on with exclamation mark with left right arrow above":"Uključeno sa uzvičnikom sa strelicom levo desno",Overline:"Overline","Paragraph sign":"Znak paragraf","Partial differential":"Delimični diferencijal","Per mille sign":"Znak per mile","Per ten thousand sign":"Znak za deset hiljada","Peseta sign":"Znak pezeta","Peso sign":"Znak peso","Plus-minus sign":"Znak plus-minus","Pound sign":"Znak funti","Proportional to":"Srazmerno","Question exclamation mark":"Znak upitnika uzvičnika","Registered sign":"Registrovani znak","Reversed paragraph sign":"Obrnuti znak paragrafa","Right double quotation mark":"Desni dvostruki navodnik","Right single quotation mark":"Desni pojedinačni navodnik","Right-pointing double angle quotation mark":"Desni dvostrani navodnik dvostrukog ugla","rightwards arrow to bar":"Strelica nadesno ka traci","rightwards dashed arrow":"Prekidana strelica desno","rightwards double arrow":"Dupla strelica desno","Ruble sign":"Znak ruble","Rupee sign":"Znak rupia","Section sign":"Znak sekcija","Single left-pointing angle quotation mark":"Pojedinačni navodnik ugla levog pokazivanja","Single low-9 quotation mark":"Jedan niski-9 navodnik","Single right-pointing angle quotation mark":"Pojedinačni navodnik ugla desnog pokazivanja","soon with rightwards arrow above":"Uskoro sa strelicom nadesno","Special characters":"Specijalni karakteri","Spesmilo sign":"Znak spesmilio","Square root":"Kvadratni koren","Tenge sign":"Znak tenge","There exists":"Postoji","Tilde operator":"Tilde operator","top with upwards arrow above":"Na vrhu sa strelicom prema gore","Trade mark sign":"Znak brenda","Tugrik sign":"Znak tugrik","Turkish lira sign":"Znak turskih lira","Two dot leader":"Vodja sa dve tačke",Union:"Unija","up down arrow with base":"Strelica nadole sa bazom","upwards arrow to bar":"Strelica prema gore ka traci","upwards dashed arrow":"Prekidana strelica prema gore","upwards double arrow":"Dupla strelica prema gore","Vulgar fraction one half":"Vulgarna frakcija jedna polovina","Vulgar fraction one quarter":"Vulgarna frakcija jedna četvrtina","Vulgar fraction three quarters":"Vulgarna frakcija tri četvrtine","Won sign":"Znak von","Yen sign":"Znak jena"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(a){const t=a["sr-latn"]=a["sr-latn"]||{};t.dictionary=Object.assign(t.dictionary||{},{"Almost equal to":"Skoro jednako",Angle:"Ugao","Approximately equal to":"Otprilike jednako","Asterisk operator":"Asterisk operator","Austral sign":"Australni znak","back with leftwards arrow above":"Nazad sa strelicom levo","Bitcoin sign":"Znak bitcoina","Cedi sign":"Znak cedi","Cent sign":"Znak centа","Character categories":"Kategorija karaktera","Colon sign":"Dvotačka","Contains as member":"Sadrži kao član","Copyright sign":"Simbol autorskog prava","Cruzeiro sign":"Znak cruzeiro","Currency sign":"Znak valute","Degree sign":"Znak stepena","Division sign":"Znak divizije","Dollar sign":"Znak dolara","Dong sign":"Znak dong","Double dagger":"Dvostruki bodež","Double exclamation mark":"Dvosrtuki uzvičnik","Double low-9 quotation mark":"Dvostruki niski-9 navodnik","Double question mark":"Dvostruki upitnik","downwards arrow to bar":"Strelica prema dole ka traci","downwards dashed arrow":"Prekidana strelica prema dole","downwards double arrow":"Dupla strelica prema dole","downwards simple arrow":"","Drachma sign":"Znak drahma","Element of":"Element od","Em dash":"Em crtica","Empty set":"Prazan set","En dash":"En crtica","end with leftwards arrow above":"Završite strelicom levo","Euro sign":"Znak eura","Euro-currency sign":"Znak valute eura","Exclamation question mark":"Znak uzvičnika upitnika","For all":"Za sve","Fraction slash":"Crta frakcije","French franc sign":"Znak francuskog franaka","German penny sign":"Znak nemački peni","Greater-than or equal to":"Znak veće od ili jednako","Greater-than sign":"Znak veće od","Guarani sign":"Znak guarani","Horizontal ellipsis":"Horizontalna elipsa","Hryvnia sign":"Znak grivna","Identical to":"Identičan","Indian rupee sign":"Znak indijske rupije",Infinity:"Beskonačnost",Integral:"Integral",Intersection:"Raskrsnica","Inverted exclamation mark":"Obrnuti uzvičnik","Inverted question mark":"Obrnuti upitnik","Kip sign":"Znak kip","Latin capital letter a with breve":"Latinsko veliko slovo a sa brevom","Latin capital letter a with macron":"Latinsko veliko slovo a sa makronom","Latin capital letter a with ogonek":"Latinsko veliko slovo a sa ogonek","Latin capital letter c with acute":"Latinsko veliko slovo c sa akutom","Latin capital letter c with caron":"Latinsko veliko slovo c sa caronom","Latin capital letter c with circumflex":"Latinsko veliko slovo c sa circumflex","Latin capital letter c with dot above":"Latinsko veliko slovo c sa tačkom iznad","Latin capital letter d with caron":"Latinsko veliko slovo d sa caronom","Latin capital letter d with stroke":"Latinsko veliko slovo d sa stroke","Latin capital letter e with breve":"Latinsko veliko slovo e sa breve","Latin capital letter e with caron":"Latinsko veliko slovo e sa caron","Latin capital letter e with dot above":"Latinsko veliko slovo e sa tačkom iznad","Latin capital letter e with macron":"Latinsko veliko slovo e sa macron","Latin capital letter e with ogonek":"Latinsko veliko slovo e sa ogonek","Latin capital letter eng":"Latinsko veliko slovo eng","Latin capital letter g with breve":"Latinsko veliko slovo g sa breve","Latin capital letter g with cedilla":"Latinsko veliko slovo g sa cedillom","Latin capital letter g with circumflex":"Latinsko veliko slovo g sa circumflex","Latin capital letter g with dot above":"Latinsko veliko slovo g sa tačkom iznad","Latin capital letter h with circumflex":"Latinsko veliko slovo h sa circumflex","Latin capital letter h with stroke":"Latinsko veliko slovo h sa stroke","Latin capital letter i with breve":"Latinsko veloko slovo i sa breve","Latin capital letter i with dot above":"Latinsko veliko slovo i sa tackom iznad","Latin capital letter i with macron":"Latinsko veliko slovo i sa macron","Latin capital letter i with ogonek":"Latinsko veliko slovo i sa ogonek","Latin capital letter i with tilde":"Latinsko veliko slovo i sa tildom","Latin capital letter j with circumflex":"Latinsko veliko slovo j sa circumflex","Latin capital letter k with cedilla":"Latinsko veliko slovo k sa cedila","Latin capital letter l with acute":"Latinsko veloko slovo l sa akutom","Latin capital letter l with caron":"Latinsko veliko slovo l sa caron","Latin capital letter l with cedilla":"Latinsko veliko slovo l sa cedila","Latin capital letter l with middle dot":"Latinsko veliko slovo l sa srednjom tačkom","Latin capital letter l with stroke":"Latinsko veliko slovo l sa stroke","Latin capital letter n with acute":"Latinsko veliko slovo n sa akutom ","Latin capital letter n with caron":"Latinsko veliko slovo n sa caron","Latin capital letter n with cedilla":"Latinsko veliko slovo n sa cedilom","Latin capital letter o with breve":"Latinsko veliko slovo o sa breve","Latin capital letter o with double acute":"Latinsko veliko slovo o sa dvostrukom akutom","Latin capital letter o with macron":"Latinsko veliko slovo o sa macron","Latin capital letter r with acute":"Latinsko veliko slovo r sa akutom","Latin capital letter r with caron":"Latinsko veliko slovo r sa caron","Latin capital letter r with cedilla":"Latinsko veliko slovo r sa cedila","Latin capital letter s with acute":"Latinsko veliko slovo s sa akutom","Latin capital letter s with caron":"Latinsko veliko slovo s sa caron","Latin capital letter s with cedilla":"Latinsko veliko slovo s sa cedila","Latin capital letter s with circumflex":"Latinsko veliko slovo s sa circumflex","Latin capital letter t with caron":"Latinsko veliko slovo t sa caron","Latin capital letter t with cedilla":"Latinsko veliko slovo t sa cedila","Latin capital letter t with stroke":"Latinsko veliko slovo t sa stroke","Latin capital letter u with breve":"Latinsko veliko slovo u sa breve","Latin capital letter u with double acute":"Latinsko veliko slovo u s dvostrukom akutom","Latin capital letter u with macron":"Latinsko veliko slovo u sa macron","Latin capital letter u with ogonek":"Latinsko veliko slovo u sa ogonek","Latin capital letter u with ring above":"Latinsko veliko slovo u s prstenom iznad","Latin capital letter u with tilde":"Latinsko veliko slovo u sa tildom","Latin capital letter w with circumflex":"Latinsko veliko slovo w sa circumflex","Latin capital letter y with circumflex":"Latinsko veliko slovo y sa circumflex","Latin capital letter y with diaeresis":"Latinsko veliko slovo y sa dijarezom","Latin capital letter z with acute":"Latinsko veliko slovo z sa akutom","Latin capital letter z with caron":"Latinsko veliko slovo z sa caron","Latin capital letter z with dot above":"Latinsko veliko slovo z sa tačkom iznad","Latin capital ligature ij":"Latinska velika ligatura ij","Latin capital ligature oe":"Latinska velika ligatura oe","Latin small letter a with breve":"Latinsko malo slovo a sa  brevom","Latin small letter a with macron":"Latinsko malo slovo a sa makronom","Latin small letter a with ogonek":"Latinsko malo slovo a sa ogonek","Latin small letter c with acute":"Latinsko malo slovo c sa akutom","Latin small letter c with caron":"Latinsko malo slovo c sa caronom","Latin small letter c with circumflex":"Latino malo slovo c sa circumflex","Latin small letter c with dot above":"Latinsko malo slovo c sa tačkom iznad","Latin small letter d with caron":"Latinsko malo slovo d sa caronom","Latin small letter d with stroke":"Latinsko malo slovo d sa stroke","Latin small letter dotless i":"Latinsko malo slovo i bez tačke","Latin small letter e with breve":"Latinsko malo slovo e sa breve","Latin small letter e with caron":"Latinsko malo slovo e sa caron","Latin small letter e with dot above":"Latinsko malo slovo e sa tačkom iznad","Latin small letter e with macron":"Latinsko malo slovo e sa macron","Latin small letter e with ogonek":"Latinsko malo slovo e sa ogonek","Latin small letter eng":"Latinsko malo slovo eng","Latin small letter f with hook":"Latinsko malo slovo f sa kukom","Latin small letter g with breve":"Latinsko malo slovo g sa breve","Latin small letter g with cedilla":"Latinsko malo slovo g sa cedillom","Latin small letter g with circumflex":"Latinsko malo slovo g sa circumflex","Latin small letter g with dot above":"Latinsko malo slovo g sa tačkom iznad","Latin small letter h with circumflex":"Latinsko malo slovo h sa circumflex","Latin small letter h with stroke":"Latinsko malo slovo h sa stroke","Latin small letter i with breve":"Latinsko malo slovo i sa breve","Latin small letter i with macron":"Latinsko malo slovo i sa macron","Latin small letter i with ogonek":"Latinsko malo slovo i sa ogonek","Latin small letter i with tilde":"Latinsko malo slovo i sa tildom","Latin small letter j with circumflex":"Latinsko malo slovo j sa circumflex","Latin small letter k with cedilla":"Latinsko malo slovo k sa cedila","Latin small letter kra":"Latinsko malo slovo kra","Latin small letter l with acute":"Latinsko malo slovo l sa akutom","Latin small letter l with caron":"Latinsko malo slovo l sa caron","Latin small letter l with cedilla":"Latinsko malo slovo l sa cedila","Latin small letter l with middle dot":"Latinsko malo slovo l sa srednjom tačkom","Latin small letter l with stroke":"Latinsko malo slovo l sa stroke","Latin small letter long s":"Latinsko malo slovo dugačko s","Latin small letter n preceded by apostrophe":"Latinsko malo slovo n koje prethodi apostrof","Latin small letter n with acute":"Latinsko malo slovo n sa akutom ","Latin small letter n with caron":"Latinsko malo slovo n sa caron ","Latin small letter n with cedilla":"Latinsko malo slovo n sa cedilom","Latin small letter o with breve":"Latinsko malo slovo o sa breve","Latin small letter o with double acute":"Latinsko malo slovo o sa dvostrukom akutom","Latin small letter o with macron":"Latinsko malo slovo o sa macron","Latin small letter r with acute":"Latinsko malo slovo r sa akutom","Latin small letter r with caron":"Latinsko malo slovo r sa caron","Latin small letter r with cedilla":"Latinsko malo slovo r sa cedila","Latin small letter s with acute":"Latinsko malo slovo s sa akutom","Latin small letter s with caron":"Latinsko malo slovo s sa caron","Latin small letter s with cedilla":"Latinsko malo slovo s sa cedila","Latin small letter s with circumflex":"Latinsko malo slovo s sa circumflex","Latin small letter t with caron":"Latinsko malo slovo t sa caron","Latin small letter t with cedilla":"Latinsko malo slovo t sa cedila","Latin small letter t with stroke":"Latinsko malo slovo t sa stroke","Latin small letter u with breve":"Latinsko malo slovo u sa breve","Latin small letter u with double acute":"Latinsko malo slovo u s dvostrukom akutom","Latin small letter u with macron":"Latinsko malo slovo u sa macron","Latin small letter u with ogonek":"Latinsko malo slovo u sa ogonek","Latin small letter u with ring above":"Latinsko malo slovo u s prstenom iznad","Latin small letter u with tilde":"Latinsko malo slovo u sa tildom","Latin small letter w with circumflex":"Latinsko malo slovo w sa circumflex","Latin small letter y with circumflex":"Latinsko malo slovo y sa circumflex","Latin small letter z with acute":"Latinsko malo slovo z sa akutom","Latin small letter z with caron":"Latinsko malo slovo z sa caron","Latin small letter z with dot above":"Latinsko malo slovo z sa tačkom iznad","Latin small ligature ij":"Latinska mala ligatura ij","Latin small ligature oe":"Latinska mala ligatura oe","Left double quotation mark":"Levi dvostruki navodnik","Left single quotation mark":"Levi pojedinačni navodnik","Left-pointing double angle quotation mark":"Levi dvostrani navodnik dvostrukog ugla","leftwards arrow to bar":"Strelica nalevo ka traci","leftwards dashed arrow":"Prekidana strelica levo","leftwards double arrow":"Dupla strlica levo","leftwards simple arrow":"","Less-than or equal to":"Znak manje od ili jednako","Less-than sign":"Znak manje od","Lira sign":"Znak lire","Livre tournois sign":"Znak livre tournois","Logical and":"Logički i","Logical or":"Logički ili",Macron:"Macron","Manat sign":"Znak manat","Mill sign":"Znak mlina","Minus sign":"Znak minus","Multiplication sign":"Znak množenja","N-ary product":"N-ari proizvod","N-ary summation":"N-ari zbir",Nabla:"Nabla","Naira sign":"Znak naira","New sheqel sign":"Znak novi šekel","Nordic mark sign":"Nordijski znak","Not an element of":"Nije element","Not equal to":"Nejednako sa","Not sign":"Nije znak","on with exclamation mark with left right arrow above":"Uključeno sa uzvičnikom sa strelicom levo desno",Overline:"Overline","Paragraph sign":"Znak paragraf","Partial differential":"Delimični diferencijal","Per mille sign":"Znak per mile","Per ten thousand sign":"Znak za deset hiljada","Peseta sign":"Znak pezeta","Peso sign":"Znak peso","Plus-minus sign":"Znak plus-minus","Pound sign":"Znak funti","Proportional to":"Srazmerno","Question exclamation mark":"Znak upitnika uzvičnika","Registered sign":"Registrovani znak","Reversed paragraph sign":"Obrnuti znak paragrafa","Right double quotation mark":"Desni dvostruki navodnik","Right single quotation mark":"Desni pojedinačni navodnik","Right-pointing double angle quotation mark":"Desni dvostrani navodnik dvostrukog ugla","rightwards arrow to bar":"Strelica nadesno ka traci","rightwards dashed arrow":"Prekidana strelica desno","rightwards double arrow":"Dupla strelica desno","rightwards simple arrow":"","Ruble sign":"Znak ruble","Rupee sign":"Znak rupia","Section sign":"Znak sekcija","Single left-pointing angle quotation mark":"Pojedinačni navodnik ugla levog pokazivanja","Single low-9 quotation mark":"Jedan niski-9 navodnik","Single right-pointing angle quotation mark":"Pojedinačni navodnik ugla desnog pokazivanja","soon with rightwards arrow above":"Uskoro sa strelicom nadesno","Special characters":"Specijalni karakteri","Spesmilo sign":"Znak spesmilio","Square root":"Kvadratni koren","Tenge sign":"Znak tenge","There exists":"Postoji","Tilde operator":"Tilde operator","top with upwards arrow above":"Na vrhu sa strelicom prema gore","Trade mark sign":"Znak brenda","Tugrik sign":"Znak tugrik","Turkish lira sign":"Znak turskih lira","Two dot leader":"Vodja sa dve tačke",Union:"Unija","up down arrow with base":"Strelica nadole sa bazom","upwards arrow to bar":"Strelica prema gore ka traci","upwards dashed arrow":"Prekidana strelica prema gore","upwards double arrow":"Dupla strelica prema gore","upwards simple arrow":"","Vulgar fraction one half":"Vulgarna frakcija jedna polovina","Vulgar fraction one quarter":"Vulgarna frakcija jedna četvrtina","Vulgar fraction three quarters":"Vulgarna frakcija tri četvrtine","Won sign":"Znak von","Yen sign":"Znak jena"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/special-characters/translations/sr.js b/core/assets/vendor/ckeditor5/special-characters/translations/sr.js
index c9349287f4..4a9108b982 100644
--- a/core/assets/vendor/ckeditor5/special-characters/translations/sr.js
+++ b/core/assets/vendor/ckeditor5/special-characters/translations/sr.js
@@ -1 +1 @@
-!function(t){const a=t.sr=t.sr||{};a.dictionary=Object.assign(a.dictionary||{},{"Almost equal to":"Скоро једнако",Angle:"Угао","Approximately equal to":"Отприлике једнако","Asterisk operator":"Астерикс оператор","Austral sign":"Аустрални знак","back with leftwards arrow above":"Назад са стрелицом лево","Bitcoin sign":"Знак биткиона","Cedi sign":"Знак цеди","Cent sign":"Знак цента","Character categories":"Категорија карактера","Colon sign":"Двотачка","Contains as member":"Садржи као члан","Copyright sign":"Симбол ауторског права","Cruzeiro sign":"Знак црузеиро","Currency sign":"Знак валуте","Degree sign":"Знак степена","Division sign":"Знак дивизије","Dollar sign":"Знак долара","Dong sign":"Знак донг","Double dagger":"Двоструки бодеж","Double exclamation mark":"Двоструки узвичник","Double low-9 quotation mark":"Двоструки ниски -9 наводник","Double question mark":"Двоструки упитник","downwards arrow to bar":"Стрелица према доле ка траци","downwards dashed arrow":"Прекидана стрелица према доле","downwards double arrow":"Дупла стрелица према доле","Drachma sign":"Знак драхма","Element of":"Елемент од","Em dash":"Ем цртица","Empty set":"Празан сет","En dash":"Ен цртица","end with leftwards arrow above":"Завршите стрелицом лево","Euro sign":"Знак еура","Euro-currency sign":"Знак валуте еура","Exclamation question mark":"Знак узвичника упитника","For all":"За све","Fraction slash":"Црта фракције","French franc sign":"Знак француског франака","German penny sign":"Знак немачки пени","Greater-than or equal to":"Знак веће од или једнако","Greater-than sign":"Знак веће од","Guarani sign":"Знак гуарани","Horizontal ellipsis":"Хоризонтална елипса","Hryvnia sign":"Знак гривна","Identical to":"Идентичан","Indian rupee sign":"Знак индијске рупије",Infinity:"Бесконачност",Integral:"Интеграл",Intersection:"Раскрсница","Inverted exclamation mark":"Обрнути узвичник","Inverted question mark":"Обрнути упитник","Kip sign":"Знак кип","Latin capital letter a with breve":"Латинско велико слово а  са бревом ","Latin capital letter a with macron":"Латинско белико слово а са макроном","Latin capital letter a with ogonek":"Латинско велико слово а са огонек","Latin capital letter c with acute":"Латинско велико слово ц са акутом","Latin capital letter c with caron":"Латинско велико слово ц са цароном","Latin capital letter c with circumflex":"Латинско велико слово ц са цирцумфлекс","Latin capital letter c with dot above":"Латинско велико слово ц са тачком изнад","Latin capital letter d with caron":"Латинско велико слово д са цароном","Latin capital letter d with stroke":"Латинско велико слово д са строке","Latin capital letter e with breve":"Латинско велико слово е са бреве","Latin capital letter e with caron":"Латинско велико слово е са царон","Latin capital letter e with dot above":"Латинско велико слово е са тачком изнад","Latin capital letter e with macron":"Латинско велико слово е са мацрон","Latin capital letter e with ogonek":"Латинско велико слово е са огонек","Latin capital letter eng":"Латинско велико слово енг","Latin capital letter g with breve":"Латинск велико слово г са бреве","Latin capital letter g with cedilla":"Латинско велико слово г са цедилом","Latin capital letter g with circumflex":"Латинско велико слово г са цирцумфлекс","Latin capital letter g with dot above":"Латинско велико слово г са тачком изнад","Latin capital letter h with circumflex":"Латинско велико слово х са цирцумфлекс","Latin capital letter h with stroke":"Латинско велико слово х са строке","Latin capital letter i with breve":"Латинско велико слово и са бреве","Latin capital letter i with dot above":"Латинско велико слово и са тачком изнад","Latin capital letter i with macron":"Латинско велико слово и са мацрон","Latin capital letter i with ogonek":"Латинско велоко слово и са огонек","Latin capital letter i with tilde":"Латинско велико слово и са тилдом","Latin capital letter j with circumflex":"Латинско велико слово ј са цирцумфлекс","Latin capital letter k with cedilla":"Латинско велико слово к са цедила","Latin capital letter l with acute":"Лаинско велико слово л са акутом","Latin capital letter l with caron":"Латинско велико слово л са царон","Latin capital letter l with cedilla":"Латинско велико слово л са цедила","Latin capital letter l with middle dot":"Латинско велико слово л са среднјом тачком","Latin capital letter l with stroke":"Латинско велико слово л са строке","Latin capital letter n with acute":"Латинско влико слово н са акутом","Latin capital letter n with caron":"Латинско велико слово н са царон","Latin capital letter n with cedilla":"Латинско велико слово н са цедилом","Latin capital letter o with breve":"Латинско велико слово о са бреве","Latin capital letter o with double acute":"Латинско велико слово о са двоструком акутом","Latin capital letter o with macron":"Латинско велико слово о са мацрон","Latin capital letter r with acute":"Латинско велико слово р са акутом","Latin capital letter r with caron":"Латинско велико слово р са царон","Latin capital letter r with cedilla":"Латинско велико слово р са цедила","Latin capital letter s with acute":"Латинско велоко слово с са акутом","Latin capital letter s with caron":"Латинско велико слово с са царон","Latin capital letter s with cedilla":"Латинско велико слово с са цедила","Latin capital letter s with circumflex":"Латинско велико слово с са цирцумфлекс","Latin capital letter t with caron":"Латинско велико слово т са царон","Latin capital letter t with cedilla":"Латинско велико слово т са цедила","Latin capital letter t with stroke":"Латинско велико слово т са строке","Latin capital letter u with breve":"Латинско велико слово у са бреве","Latin capital letter u with double acute":"Латинско велико слово у с двоструким акутом","Latin capital letter u with macron":"Латинско велико слово у са мацрон","Latin capital letter u with ogonek":"Латинско велико слово у са огонек","Latin capital letter u with ring above":"Латинско велико слово у с престеном изнад","Latin capital letter u with tilde":"Латинско велико слово у са тилдом","Latin capital letter w with circumflex":"Латинско велико слово дупло в са цирцумфлекс","Latin capital letter y with circumflex":"Латинско велико слово ипсилон са цирцумфлекс","Latin capital letter y with diaeresis":"Латинско велико слово ипсилон са дијарезом","Latin capital letter z with acute":"Латинско велико слово з са акутом","Latin capital letter z with caron":"Латинско велико слово з са царон","Latin capital letter z with dot above":"Латинско велико слово з са тачком изнад","Latin capital ligature ij":"Латинска велика лигатура иј","Latin capital ligature oe":"Латинска велика лигатура ое","Latin small letter a with breve":"Латинско мало слово а са бревом","Latin small letter a with macron":"Латинско мало слово а са макроном","Latin small letter a with ogonek":"Латинско мало слово с са огонек","Latin small letter c with acute":"Латинско мало слово ц са акутом","Latin small letter c with caron":"Латинско мало слово ц са цароном","Latin small letter c with circumflex":"Латинско мало слово ц са цирцумфлекс","Latin small letter c with dot above":"Латинско мало слвово ц са тачком изнад","Latin small letter d with caron":"Латинско мало слово д са цароном","Latin small letter d with stroke":"Латинско мало слово д са строке","Latin small letter dotless i":"Латинско мало слово и без тачке","Latin small letter e with breve":"Латинско мало слово е са бреве","Latin small letter e with caron":"Латинско мало слово е са царон","Latin small letter e with dot above":"Латинско мало слово е са тачком изнад","Latin small letter e with macron":"Латинско мало слово е са мацрон","Latin small letter e with ogonek":"Латинско мало слво е са огонек","Latin small letter eng":"Латинско мало слово енг","Latin small letter f with hook":"Латинско мало слово ф са куком","Latin small letter g with breve":"Латинско мало слово г са бреве","Latin small letter g with cedilla":"Латинско мало слово г са цедилом","Latin small letter g with circumflex":"Латинско мало слобо г са цирцумфлекс","Latin small letter g with dot above":"Латинско мало слово г са тачком изнад","Latin small letter h with circumflex":"Латинско мало слово х са цирцумфлекс","Latin small letter h with stroke":"Латинско мало слово х са строке","Latin small letter i with breve":"Латинско мало слово и са бреве","Latin small letter i with macron":"Латинско мало слово и са мацрон","Latin small letter i with ogonek":"Латинско мало слово и са огонек","Latin small letter i with tilde":"Латинско мало слово и са тилдом","Latin small letter j with circumflex":"Латнцско мало слово ј са цирцумфлекс","Latin small letter k with cedilla":"Латинско мало слово к са цедила","Latin small letter kra":"Латинско мало слово кра","Latin small letter l with acute":"Латинско мало слово л са акутом","Latin small letter l with caron":"Латинско мало слово л са царон","Latin small letter l with cedilla":"Латинско мало слово л са цедила","Latin small letter l with middle dot":"Латинско мало слово са цреднјом тачком","Latin small letter l with stroke":"Латинско мало слово л са строке","Latin small letter long s":"Латинско мало слово дугачко с","Latin small letter n preceded by apostrophe":"Латинско мало слово н које претходи апостроф","Latin small letter n with acute":"Латинско мало слово н са  акутом","Latin small letter n with caron":"Латинско мало слово н са царон","Latin small letter n with cedilla":"Латинско мало слово н са цедилом","Latin small letter o with breve":"Латинско мало слово о са бреве","Latin small letter o with double acute":"Латинско мало слово о са двоструком акутом","Latin small letter o with macron":"Латинско мало слово о са марон","Latin small letter r with acute":"Латинско мало слово р са акутом","Latin small letter r with caron":"Латинско мало слово р са царон","Latin small letter r with cedilla":"Латинско мало слово р са цедила","Latin small letter s with acute":"Латинско мало слово с са акутом","Latin small letter s with caron":"Латинско мало слово с са царон","Latin small letter s with cedilla":"Латинско мало слово с са цедила","Latin small letter s with circumflex":"Латинско мало слово с са цирцумфлекс","Latin small letter t with caron":"Латинско мало слово т са царон","Latin small letter t with cedilla":"Латинско мало слово т са цедила","Latin small letter t with stroke":"Латинско мало слово т са строке","Latin small letter u with breve":"Латинско мало слово у са бреве","Latin small letter u with double acute":"Латинско мало слово у с двоструким акутом","Latin small letter u with macron":"Латинско мало слово у са мацрон","Latin small letter u with ogonek":"Латинско мало слово у са огонек","Latin small letter u with ring above":"Латинско мало слово у с прстеном изнад","Latin small letter u with tilde":"Латинско мало слово у са тилдом","Latin small letter w with circumflex":"Латинско мало слово дупло в са цирцумфлекс","Latin small letter y with circumflex":"Латинско мало слово ипсилон са цирцумфлекс","Latin small letter z with acute":"Латинско мало слово з са акутом","Latin small letter z with caron":"Латинско мало слово з са царон","Latin small letter z with dot above":"Латинско мало слово з са тачком изнад","Latin small ligature ij":"Латинска мала лигатура иј","Latin small ligature oe":"Латинска мала лигатура ое","Left double quotation mark":"Леви двоструки наводник","Left single quotation mark":"Леви појединачни наводник","Left-pointing double angle quotation mark":"Леви двострани наводник двоструког угла ","leftwards arrow to bar":"Стрелица налево ка траци","leftwards dashed arrow":"Прекидана стрелица лево","leftwards double arrow":"Дупла стрелица лево","Less-than or equal to":"Збак мање од или једнако","Less-than sign":"Знак мање од","Lira sign":"Знак лире","Livre tournois sign":"Знак ливре тоурноис","Logical and":"Логички и","Logical or":"Локички или",Macron:"Мацрон","Manat sign":"Знак манат","Mill sign":"Знак млна","Minus sign":"Знак минус","Multiplication sign":"Знак множења","N-ary product":"Н-ари производ","N-ary summation":"Н-ари збир",Nabla:"Набла","Naira sign":"Знак наира","New sheqel sign":"Знак нови шекел","Nordic mark sign":"Нордијски знак","Not an element of":"Није елемент","Not equal to":"Неједнако са","Not sign":"Није знак","on with exclamation mark with left right arrow above":"Укључено са узвичником са стрелицомлево десно",Overline:"Оверлине","Paragraph sign":"Знак параграф","Partial differential":"Делимични диференцијал","Per mille sign":"Знак пер миле","Per ten thousand sign":"Знак за десет хиљада","Peseta sign":"Знак пезета","Peso sign":"Знак песо","Plus-minus sign":"Знак плус-минус","Pound sign":"Знак фунти","Proportional to":"Сразмерно","Question exclamation mark":"Знак упитника узвичника","Registered sign":"Регистровани знак","Reversed paragraph sign":"Обрнути знак параграфа","Right double quotation mark":"Десни двоструки наводник","Right single quotation mark":"Десни појединачни наводник","Right-pointing double angle quotation mark":"Десни двострани наводик двоструког угла ","rightwards arrow to bar":"Стрелица надесно ка траци","rightwards dashed arrow":"Прекидана стрелица десно","rightwards double arrow":"Дупла стрелица десно","Ruble sign":"Знак рубле","Rupee sign":"Знак рупиа","Section sign":"Знак селекција","Single left-pointing angle quotation mark":"Појединачни наводник угла левог показиванја","Single low-9 quotation mark":"Један ниски -9 наводник","Single right-pointing angle quotation mark":"Појединачни наводник угла десног показивања","soon with rightwards arrow above":"Ускоро са стрелицом надесно","Special characters":"Специјални карактери","Spesmilo sign":"Знак спесмилио","Square root":"Квадратни корен","Tenge sign":"Знак тенге","There exists":"Постоји","Tilde operator":"Тилде оператор","top with upwards arrow above":"На врху са стрелицом према горе","Trade mark sign":"Знак бренда","Tugrik sign":"Знак тугрик","Turkish lira sign":"Знак турских лира","Two dot leader":"Вођа са две тачке",Union:"Унија","up down arrow with base":"Стрелица на доле са базом","upwards arrow to bar":"Стрелица према горе ка траци","upwards dashed arrow":"Прекидана стрелица према горе","upwards double arrow":"Дупла стрелица према горе","Vulgar fraction one half":"Вулгарна фракција једна половина","Vulgar fraction one quarter":"Вулгарна фракција једна четвртина","Vulgar fraction three quarters":"Вулгарна фрација три четвртине","Won sign":"Знак вон","Yen sign":"Знак јена"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(t){const a=t.sr=t.sr||{};a.dictionary=Object.assign(a.dictionary||{},{"Almost equal to":"Скоро једнако",Angle:"Угао","Approximately equal to":"Отприлике једнако","Asterisk operator":"Астерикс оператор","Austral sign":"Аустрални знак","back with leftwards arrow above":"Назад са стрелицом лево","Bitcoin sign":"Знак биткиона","Cedi sign":"Знак цеди","Cent sign":"Знак цента","Character categories":"Категорија карактера","Colon sign":"Двотачка","Contains as member":"Садржи као члан","Copyright sign":"Симбол ауторског права","Cruzeiro sign":"Знак црузеиро","Currency sign":"Знак валуте","Degree sign":"Знак степена","Division sign":"Знак дивизије","Dollar sign":"Знак долара","Dong sign":"Знак донг","Double dagger":"Двоструки бодеж","Double exclamation mark":"Двоструки узвичник","Double low-9 quotation mark":"Двоструки ниски -9 наводник","Double question mark":"Двоструки упитник","downwards arrow to bar":"Стрелица према доле ка траци","downwards dashed arrow":"Прекидана стрелица према доле","downwards double arrow":"Дупла стрелица према доле","downwards simple arrow":"jednostavna strelica nadole","Drachma sign":"Знак драхма","Element of":"Елемент од","Em dash":"Ем цртица","Empty set":"Празан сет","En dash":"Ен цртица","end with leftwards arrow above":"Завршите стрелицом лево","Euro sign":"Знак еура","Euro-currency sign":"Знак валуте еура","Exclamation question mark":"Знак узвичника упитника","For all":"За све","Fraction slash":"Црта фракције","French franc sign":"Знак француског франака","German penny sign":"Знак немачки пени","Greater-than or equal to":"Знак веће од или једнако","Greater-than sign":"Знак веће од","Guarani sign":"Знак гуарани","Horizontal ellipsis":"Хоризонтална елипса","Hryvnia sign":"Знак гривна","Identical to":"Идентичан","Indian rupee sign":"Знак индијске рупије",Infinity:"Бесконачност",Integral:"Интеграл",Intersection:"Раскрсница","Inverted exclamation mark":"Обрнути узвичник","Inverted question mark":"Обрнути упитник","Kip sign":"Знак кип","Latin capital letter a with breve":"Латинско велико слово а  са бревом ","Latin capital letter a with macron":"Латинско белико слово а са макроном","Latin capital letter a with ogonek":"Латинско велико слово а са огонек","Latin capital letter c with acute":"Латинско велико слово ц са акутом","Latin capital letter c with caron":"Латинско велико слово ц са цароном","Latin capital letter c with circumflex":"Латинско велико слово ц са цирцумфлекс","Latin capital letter c with dot above":"Латинско велико слово ц са тачком изнад","Latin capital letter d with caron":"Латинско велико слово д са цароном","Latin capital letter d with stroke":"Латинско велико слово д са строке","Latin capital letter e with breve":"Латинско велико слово е са бреве","Latin capital letter e with caron":"Латинско велико слово е са царон","Latin capital letter e with dot above":"Латинско велико слово е са тачком изнад","Latin capital letter e with macron":"Латинско велико слово е са мацрон","Latin capital letter e with ogonek":"Латинско велико слово е са огонек","Latin capital letter eng":"Латинско велико слово енг","Latin capital letter g with breve":"Латинск велико слово г са бреве","Latin capital letter g with cedilla":"Латинско велико слово г са цедилом","Latin capital letter g with circumflex":"Латинско велико слово г са цирцумфлекс","Latin capital letter g with dot above":"Латинско велико слово г са тачком изнад","Latin capital letter h with circumflex":"Латинско велико слово х са цирцумфлекс","Latin capital letter h with stroke":"Латинско велико слово х са строке","Latin capital letter i with breve":"Латинско велико слово и са бреве","Latin capital letter i with dot above":"Латинско велико слово и са тачком изнад","Latin capital letter i with macron":"Латинско велико слово и са мацрон","Latin capital letter i with ogonek":"Латинско велоко слово и са огонек","Latin capital letter i with tilde":"Латинско велико слово и са тилдом","Latin capital letter j with circumflex":"Латинско велико слово ј са цирцумфлекс","Latin capital letter k with cedilla":"Латинско велико слово к са цедила","Latin capital letter l with acute":"Лаинско велико слово л са акутом","Latin capital letter l with caron":"Латинско велико слово л са царон","Latin capital letter l with cedilla":"Латинско велико слово л са цедила","Latin capital letter l with middle dot":"Латинско велико слово л са среднјом тачком","Latin capital letter l with stroke":"Латинско велико слово л са строке","Latin capital letter n with acute":"Латинско влико слово н са акутом","Latin capital letter n with caron":"Латинско велико слово н са царон","Latin capital letter n with cedilla":"Латинско велико слово н са цедилом","Latin capital letter o with breve":"Латинско велико слово о са бреве","Latin capital letter o with double acute":"Латинско велико слово о са двоструком акутом","Latin capital letter o with macron":"Латинско велико слово о са мацрон","Latin capital letter r with acute":"Латинско велико слово р са акутом","Latin capital letter r with caron":"Латинско велико слово р са царон","Latin capital letter r with cedilla":"Латинско велико слово р са цедила","Latin capital letter s with acute":"Латинско велоко слово с са акутом","Latin capital letter s with caron":"Латинско велико слово с са царон","Latin capital letter s with cedilla":"Латинско велико слово с са цедила","Latin capital letter s with circumflex":"Латинско велико слово с са цирцумфлекс","Latin capital letter t with caron":"Латинско велико слово т са царон","Latin capital letter t with cedilla":"Латинско велико слово т са цедила","Latin capital letter t with stroke":"Латинско велико слово т са строке","Latin capital letter u with breve":"Латинско велико слово у са бреве","Latin capital letter u with double acute":"Латинско велико слово у с двоструким акутом","Latin capital letter u with macron":"Латинско велико слово у са мацрон","Latin capital letter u with ogonek":"Латинско велико слово у са огонек","Latin capital letter u with ring above":"Латинско велико слово у с престеном изнад","Latin capital letter u with tilde":"Латинско велико слово у са тилдом","Latin capital letter w with circumflex":"Латинско велико слово дупло в са цирцумфлекс","Latin capital letter y with circumflex":"Латинско велико слово ипсилон са цирцумфлекс","Latin capital letter y with diaeresis":"Латинско велико слово ипсилон са дијарезом","Latin capital letter z with acute":"Латинско велико слово з са акутом","Latin capital letter z with caron":"Латинско велико слово з са царон","Latin capital letter z with dot above":"Латинско велико слово з са тачком изнад","Latin capital ligature ij":"Латинска велика лигатура иј","Latin capital ligature oe":"Латинска велика лигатура ое","Latin small letter a with breve":"Латинско мало слово а са бревом","Latin small letter a with macron":"Латинско мало слово а са макроном","Latin small letter a with ogonek":"Латинско мало слово с са огонек","Latin small letter c with acute":"Латинско мало слово ц са акутом","Latin small letter c with caron":"Латинско мало слово ц са цароном","Latin small letter c with circumflex":"Латинско мало слово ц са цирцумфлекс","Latin small letter c with dot above":"Латинско мало слвово ц са тачком изнад","Latin small letter d with caron":"Латинско мало слово д са цароном","Latin small letter d with stroke":"Латинско мало слово д са строке","Latin small letter dotless i":"Латинско мало слово и без тачке","Latin small letter e with breve":"Латинско мало слово е са бреве","Latin small letter e with caron":"Латинско мало слово е са царон","Latin small letter e with dot above":"Латинско мало слово е са тачком изнад","Latin small letter e with macron":"Латинско мало слово е са мацрон","Latin small letter e with ogonek":"Латинско мало слво е са огонек","Latin small letter eng":"Латинско мало слово енг","Latin small letter f with hook":"Латинско мало слово ф са куком","Latin small letter g with breve":"Латинско мало слово г са бреве","Latin small letter g with cedilla":"Латинско мало слово г са цедилом","Latin small letter g with circumflex":"Латинско мало слобо г са цирцумфлекс","Latin small letter g with dot above":"Латинско мало слово г са тачком изнад","Latin small letter h with circumflex":"Латинско мало слово х са цирцумфлекс","Latin small letter h with stroke":"Латинско мало слово х са строке","Latin small letter i with breve":"Латинско мало слово и са бреве","Latin small letter i with macron":"Латинско мало слово и са мацрон","Latin small letter i with ogonek":"Латинско мало слово и са огонек","Latin small letter i with tilde":"Латинско мало слово и са тилдом","Latin small letter j with circumflex":"Латнцско мало слово ј са цирцумфлекс","Latin small letter k with cedilla":"Латинско мало слово к са цедила","Latin small letter kra":"Латинско мало слово кра","Latin small letter l with acute":"Латинско мало слово л са акутом","Latin small letter l with caron":"Латинско мало слово л са царон","Latin small letter l with cedilla":"Латинско мало слово л са цедила","Latin small letter l with middle dot":"Латинско мало слово са цреднјом тачком","Latin small letter l with stroke":"Латинско мало слово л са строке","Latin small letter long s":"Латинско мало слово дугачко с","Latin small letter n preceded by apostrophe":"Латинско мало слово н које претходи апостроф","Latin small letter n with acute":"Латинско мало слово н са  акутом","Latin small letter n with caron":"Латинско мало слово н са царон","Latin small letter n with cedilla":"Латинско мало слово н са цедилом","Latin small letter o with breve":"Латинско мало слово о са бреве","Latin small letter o with double acute":"Латинско мало слово о са двоструком акутом","Latin small letter o with macron":"Латинско мало слово о са марон","Latin small letter r with acute":"Латинско мало слово р са акутом","Latin small letter r with caron":"Латинско мало слово р са царон","Latin small letter r with cedilla":"Латинско мало слово р са цедила","Latin small letter s with acute":"Латинско мало слово с са акутом","Latin small letter s with caron":"Латинско мало слово с са царон","Latin small letter s with cedilla":"Латинско мало слово с са цедила","Latin small letter s with circumflex":"Латинско мало слово с са цирцумфлекс","Latin small letter t with caron":"Латинско мало слово т са царон","Latin small letter t with cedilla":"Латинско мало слово т са цедила","Latin small letter t with stroke":"Латинско мало слово т са строке","Latin small letter u with breve":"Латинско мало слово у са бреве","Latin small letter u with double acute":"Латинско мало слово у с двоструким акутом","Latin small letter u with macron":"Латинско мало слово у са мацрон","Latin small letter u with ogonek":"Латинско мало слово у са огонек","Latin small letter u with ring above":"Латинско мало слово у с прстеном изнад","Latin small letter u with tilde":"Латинско мало слово у са тилдом","Latin small letter w with circumflex":"Латинско мало слово дупло в са цирцумфлекс","Latin small letter y with circumflex":"Латинско мало слово ипсилон са цирцумфлекс","Latin small letter z with acute":"Латинско мало слово з са акутом","Latin small letter z with caron":"Латинско мало слово з са царон","Latin small letter z with dot above":"Латинско мало слово з са тачком изнад","Latin small ligature ij":"Латинска мала лигатура иј","Latin small ligature oe":"Латинска мала лигатура ое","Left double quotation mark":"Леви двоструки наводник","Left single quotation mark":"Леви појединачни наводник","Left-pointing double angle quotation mark":"Леви двострани наводник двоструког угла ","leftwards arrow to bar":"Стрелица налево ка траци","leftwards dashed arrow":"Прекидана стрелица лево","leftwards double arrow":"Дупла стрелица лево","leftwards simple arrow":"jednostavna strelica nalevo","Less-than or equal to":"Збак мање од или једнако","Less-than sign":"Знак мање од","Lira sign":"Знак лире","Livre tournois sign":"Знак ливре тоурноис","Logical and":"Логички и","Logical or":"Локички или",Macron:"Мацрон","Manat sign":"Знак манат","Mill sign":"Знак млна","Minus sign":"Знак минус","Multiplication sign":"Знак множења","N-ary product":"Н-ари производ","N-ary summation":"Н-ари збир",Nabla:"Набла","Naira sign":"Знак наира","New sheqel sign":"Знак нови шекел","Nordic mark sign":"Нордијски знак","Not an element of":"Није елемент","Not equal to":"Неједнако са","Not sign":"Није знак","on with exclamation mark with left right arrow above":"Укључено са узвичником са стрелицомлево десно",Overline:"Оверлине","Paragraph sign":"Знак параграф","Partial differential":"Делимични диференцијал","Per mille sign":"Знак пер миле","Per ten thousand sign":"Знак за десет хиљада","Peseta sign":"Знак пезета","Peso sign":"Знак песо","Plus-minus sign":"Знак плус-минус","Pound sign":"Знак фунти","Proportional to":"Сразмерно","Question exclamation mark":"Знак упитника узвичника","Registered sign":"Регистровани знак","Reversed paragraph sign":"Обрнути знак параграфа","Right double quotation mark":"Десни двоструки наводник","Right single quotation mark":"Десни појединачни наводник","Right-pointing double angle quotation mark":"Десни двострани наводик двоструког угла ","rightwards arrow to bar":"Стрелица надесно ка траци","rightwards dashed arrow":"Прекидана стрелица десно","rightwards double arrow":"Дупла стрелица десно","rightwards simple arrow":"jednostavna strelica udesno","Ruble sign":"Знак рубле","Rupee sign":"Знак рупиа","Section sign":"Знак селекција","Single left-pointing angle quotation mark":"Појединачни наводник угла левог показиванја","Single low-9 quotation mark":"Један ниски -9 наводник","Single right-pointing angle quotation mark":"Појединачни наводник угла десног показивања","soon with rightwards arrow above":"Ускоро са стрелицом надесно","Special characters":"Специјални карактери","Spesmilo sign":"Знак спесмилио","Square root":"Квадратни корен","Tenge sign":"Знак тенге","There exists":"Постоји","Tilde operator":"Тилде оператор","top with upwards arrow above":"На врху са стрелицом према горе","Trade mark sign":"Знак бренда","Tugrik sign":"Знак тугрик","Turkish lira sign":"Знак турских лира","Two dot leader":"Вођа са две тачке",Union:"Унија","up down arrow with base":"Стрелица на доле са базом","upwards arrow to bar":"Стрелица према горе ка траци","upwards dashed arrow":"Прекидана стрелица према горе","upwards double arrow":"Дупла стрелица према горе","upwards simple arrow":"jednostavna strelica nagore","Vulgar fraction one half":"Вулгарна фракција једна половина","Vulgar fraction one quarter":"Вулгарна фракција једна четвртина","Vulgar fraction three quarters":"Вулгарна фрација три четвртине","Won sign":"Знак вон","Yen sign":"Знак јена"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/special-characters/translations/sv.js b/core/assets/vendor/ckeditor5/special-characters/translations/sv.js
index 196c67c00e..b1402b648e 100644
--- a/core/assets/vendor/ckeditor5/special-characters/translations/sv.js
+++ b/core/assets/vendor/ckeditor5/special-characters/translations/sv.js
@@ -1 +1 @@
-!function(t){const e=t.sv=t.sv||{};e.dictionary=Object.assign(e.dictionary||{},{"Almost equal to":"Nästan lika med",Angle:"Vinkel","Approximately equal to":"Ungefär lika med","Asterisk operator":"Asteriskoperatör","Austral sign":"Australisk skylt","back with leftwards arrow above":"tillbaka med pil åt vänster ovanför","Bitcoin sign":"Bitcoin-tecken","Cedi sign":"Cedi-tecken","Cent sign":"Cent-tecken","Character categories":"Karaktärskategorier","Colon sign":"Colon-tecken","Contains as member":"Innehåller som medlem","Copyright sign":"Upphovsrättstecken","Cruzeiro sign":"Kryssningsskylt","Currency sign":"Valutateknik","Degree sign":"Gradbeteckning","Division sign":"Tecken på en avdelning","Dollar sign":"Dollartecken","Dong sign":"Dong-tecken","Double dagger":"Dubbel dolk","Double exclamation mark":"Dubbelt utropstecken","Double low-9 quotation mark":"Dubbla låg-9 citationstecken","Double question mark":"Dubbelt frågetecken","downwards arrow to bar":"pil nedåt för att sätta en bar","downwards dashed arrow":"streckad pil nedåt","downwards double arrow":"dubbelpil nedåt","Drachma sign":"Drachma tecken","Element of":"Element av","Em dash":"Em streck","Empty set":"Tom uppsättning","En dash":"Ett streck","end with leftwards arrow above":"avsluta med en pil åt vänster ovanför","Euro sign":"Euro-skylt","Euro-currency sign":"Tecken på euro-valuta","Exclamation question mark":"Utrop frågetecken","For all":"För alla","Fraction slash":"Fraktion snedstreck","French franc sign":"Franska franc tecken","German penny sign":"Tyska penny-tecken","Greater-than or equal to":"Större än eller lika med","Greater-than sign":"Större än-tecken","Guarani sign":"Guarani-tecken","Horizontal ellipsis":"Horisontell ellips","Hryvnia sign":"Hryvnia tecken","Identical to":"Identisk med","Indian rupee sign":"Indisk rupie tecken",Infinity:"Oändlighet",Integral:"Integrerad",Intersection:"Korsning","Inverted exclamation mark":"Inverterat utropstecken","Inverted question mark":"Inverterat frågetecken","Kip sign":"Kip-tecken","Latin capital letter a with breve":"Den latinska storbokstaven a med breve","Latin capital letter a with macron":"Den latinska storbokstaven a med makron","Latin capital letter a with ogonek":"Den latinska huvudbokstaven a med ogonek","Latin capital letter c with acute":"Den latinska storbokstaven c med akut","Latin capital letter c with caron":"Den latinska storbokstaven c med caron","Latin capital letter c with circumflex":"Den latinska storbokstaven c med omljud","Latin capital letter c with dot above":"Latinsk huvudbokstav c med punkt ovan","Latin capital letter d with caron":"Latin stor bokstav d med caron","Latin capital letter d with stroke":"Latin stor bokstav d med streck","Latin capital letter e with breve":"Den latinska storbokstaven e med breve","Latin capital letter e with caron":"Latin stor bokstav e med caron","Latin capital letter e with dot above":"Latinsk huvudbokstav e med punkt ovan","Latin capital letter e with macron":"Latinskt huvudstadbrev e med macron","Latin capital letter e with ogonek":"Den latinska storbokstaven e med ogonek","Latin capital letter eng":"Latinsk stor bokstav eng","Latin capital letter g with breve":"Den latinska storbokstaven g med breve","Latin capital letter g with cedilla":"Den latinska storbokstaven g med cedilla","Latin capital letter g with circumflex":"Den latinska storbokstaven g med omljud","Latin capital letter g with dot above":"Latinsk huvudbokstav g med punkt ovan","Latin capital letter h with circumflex":"Latinsk huvudbokstav h med circumflex","Latin capital letter h with stroke":"Latin stor bokstav h med streck","Latin capital letter i with breve":"Den latinska storbokstaven i med breve","Latin capital letter i with dot above":"Latinsk stor bokstav i med prick ovanför","Latin capital letter i with macron":"Den latinska storbokstaven i med makron","Latin capital letter i with ogonek":"Den latinska storbokstaven i med ogonek","Latin capital letter i with tilde":"Den latinska storbokstaven i med tilde","Latin capital letter j with circumflex":"Den latinska storbokstaven j med omljud","Latin capital letter k with cedilla":"Den latinska storbokstaven k med cedilla","Latin capital letter l with acute":"Den latinska storbokstaven l med akut","Latin capital letter l with caron":"Latin stor bokstav l med caron","Latin capital letter l with cedilla":"Den latinska storbokstaven l med cedilla","Latin capital letter l with middle dot":"Latinsk huvudbokstav l med mittpunkt","Latin capital letter l with stroke":"Latinska huvudbokstaven l med streck","Latin capital letter n with acute":"Den latinska huvudbokstaven n med akut","Latin capital letter n with caron":"Den latinska huvudbokstaven n med caron","Latin capital letter n with cedilla":"Den latinska storbokstaven n med cedilla","Latin capital letter o with breve":"Den latinska storbokstaven o med breve","Latin capital letter o with double acute":"Latinsk huvudbokstav o med dubbel akut","Latin capital letter o with macron":"Den latinska storbokstaven o med makron","Latin capital letter r with acute":"Latinsk huvudbokstav r med akut","Latin capital letter r with caron":"Latinsk huvudstadbokstav r med caron","Latin capital letter r with cedilla":"Den latinska storbokstaven r med cedilla","Latin capital letter s with acute":"Latinskt huvudbrev s med akut","Latin capital letter s with caron":"Latin stor bokstav s med caron","Latin capital letter s with cedilla":"Latinsk huvudbokstav s med cedilla","Latin capital letter s with circumflex":"Den latinska storbokstaven s med circumflex","Latin capital letter t with caron":"Den latinska storbokstaven t med caron","Latin capital letter t with cedilla":"Den latinska storbokstaven t med cedilla","Latin capital letter t with stroke":"Latin stor bokstav t med streck","Latin capital letter u with breve":"Den latinska storbokstaven u med breve","Latin capital letter u with double acute":"Den latinska storbokstaven u med dubbel spets","Latin capital letter u with macron":"Den latinska storbokstaven u med makron","Latin capital letter u with ogonek":"Den latinska storbokstaven u med ogonek","Latin capital letter u with ring above":"Latinsk versalbokstav u med ring ovanför","Latin capital letter u with tilde":"Den latinska storbokstaven u med tilde","Latin capital letter w with circumflex":"Den latinska storbokstaven w med omljud","Latin capital letter y with circumflex":"Den latinska versalbokstaven y med circumflex","Latin capital letter y with diaeresis":"Den latinska storbokstaven y med diaeresis","Latin capital letter z with acute":"Den latinska storbokstaven z med akut","Latin capital letter z with caron":"Den latinska storbokstaven z med caron","Latin capital letter z with dot above":"Latinsk versalbokstav z med punkt ovanför","Latin capital ligature ij":"Latinisk huvudbokstavsligatur ij","Latin capital ligature oe":"Latinsk huvudboksligatur oe","Latin small letter a with breve":"Den latinska lilla bokstaven a med breve","Latin small letter a with macron":"Latin liten bokstav a med makron","Latin small letter a with ogonek":"Den latinska lilla bokstaven a med ogonek","Latin small letter c with acute":"Den latinska lilla bokstaven c med akut","Latin small letter c with caron":"Den latinska lilla bokstaven c med caron","Latin small letter c with circumflex":"Den latinska lilla bokstaven c med circumflex","Latin small letter c with dot above":"Den latinska lilla bokstaven c med en punkt ovanför","Latin small letter d with caron":"Latin liten bokstav d med caron","Latin small letter d with stroke":"Latin liten bokstav d med streck","Latin small letter dotless i":"latinsk liten bokstav utan punkt i","Latin small letter e with breve":"Den latinska lilla bokstaven e med breve","Latin small letter e with caron":"Den latinska lilla bokstaven e med caron","Latin small letter e with dot above":"Den latinska lilla bokstaven e med en punkt ovanför","Latin small letter e with macron":"Den latinska lilla bokstaven e med makron","Latin small letter e with ogonek":"Den latinska lilla bokstaven e med ogonek","Latin small letter eng":"Latin liten bokstav eng","Latin small letter f with hook":"Latin liten bokstav f med krok","Latin small letter g with breve":"Den latinska lilla bokstaven g med breve","Latin small letter g with cedilla":"Den latinska lilla bokstaven g med cedilla","Latin small letter g with circumflex":"Den latinska lilla bokstaven g med omljud","Latin small letter g with dot above":"Den latinska lilla bokstaven g med en punkt ovanför","Latin small letter h with circumflex":"Den latinska lilla bokstaven h med omljud","Latin small letter h with stroke":"Latin liten bokstav h med streck","Latin small letter i with breve":"Den latinska lilla bokstaven i med breve","Latin small letter i with macron":"Den latinska lilla bokstaven i med makron","Latin small letter i with ogonek":"Den latinska lilla bokstaven i med ogonek","Latin small letter i with tilde":"Den latinska lilla bokstaven i med tilde","Latin small letter j with circumflex":"Den latinska lilla bokstaven j med circumflex","Latin small letter k with cedilla":"Den latinska lilla bokstaven k med cedilla","Latin small letter kra":"Den latinska lilla bokstaven kra","Latin small letter l with acute":"Den latinska lilla bokstaven l med akut","Latin small letter l with caron":"Den latinska lilla bokstaven l med caron","Latin small letter l with cedilla":"Den latinska lilla bokstaven l med cedilla","Latin small letter l with middle dot":"Latinsk liten bokstav l med mittpunkt","Latin small letter l with stroke":"Latinska lilla bokstaven l med streck","Latin small letter long s":"Latin liten bokstav lång s","Latin small letter n preceded by apostrophe":"Den latinska lilla bokstaven n föregås av en apostrof","Latin small letter n with acute":"Den latinska lilla bokstaven n med akut","Latin small letter n with caron":"Den latinska lilla bokstaven n med caron","Latin small letter n with cedilla":"Den latinska lilla bokstaven n med cedilla","Latin small letter o with breve":"Den latinska lilla bokstaven o med breve","Latin small letter o with double acute":"Den latinska lilla bokstaven o med dubbel spets","Latin small letter o with macron":"Den latinska lilla bokstaven o med makron","Latin small letter r with acute":"Den latinska lilla bokstaven r med akut","Latin small letter r with caron":"Den latinska lilla bokstaven r med caron","Latin small letter r with cedilla":"Den latinska lilla bokstaven r med cedilla","Latin small letter s with acute":"Den latinska lilla bokstaven s med akut","Latin small letter s with caron":"Latinska små brev s med caron","Latin small letter s with cedilla":"Latinska små bokstäver s med cedilla","Latin small letter s with circumflex":"Latinska små bokstäver s med circumflex","Latin small letter t with caron":"Den latinska lilla bokstaven t med caron","Latin small letter t with cedilla":"Den latinska lilla bokstaven t med cedilla","Latin small letter t with stroke":"Latin liten bokstav t med streck","Latin small letter u with breve":"Den latinska lilla bokstaven u med breve","Latin small letter u with double acute":"Den latinska lilla bokstaven u med dubbel spets","Latin small letter u with macron":"Den latinska lilla bokstaven u med makron","Latin small letter u with ogonek":"Den latinska lilla bokstaven u med ogonek","Latin small letter u with ring above":"Latin liten bokstav u med ring ovanför","Latin small letter u with tilde":"Den latinska lilla bokstaven u med tilde","Latin small letter w with circumflex":"Den latinska lilla bokstaven w med omljud","Latin small letter y with circumflex":"Den latinska lilla bokstaven y med circumflex","Latin small letter z with acute":"Den latinska lilla bokstaven z med akut","Latin small letter z with caron":"Den latinska lilla bokstaven z med caron","Latin small letter z with dot above":"Den latinska lilla bokstaven z med en punkt ovanför","Latin small ligature ij":"latinsk liten ligatur ij","Latin small ligature oe":"Latin liten ligatur oe","Left double quotation mark":"Vänster dubbelt citationstecken","Left single quotation mark":"Vänster enkelt citationstecken","Left-pointing double angle quotation mark":"Vänsterpekande dubbelt vinklat citationstecken","leftwards arrow to bar":"pil åt vänster till baren","leftwards dashed arrow":"streckad pil åt vänster","leftwards double arrow":"dubbelpil åt vänster","Less-than or equal to":"Mindre än eller lika med","Less-than sign":"Mindre än-tecken","Lira sign":"Lira-tecken","Livre tournois sign":"Turneringens bokskylt","Logical and":"Logisk och","Logical or":"Logisk eller",Macron:"Macron","Manat sign":"Manat-tecken","Mill sign":"Kvarnskylt","Minus sign":"Minustecken","Multiplication sign":"Multiplikationstecken","N-ary product":"N-ary produkt","N-ary summation":"N-ständig summering",Nabla:"Nabla","Naira sign":"Naira-tecken","New sheqel sign":"Ny sheqel-skylt","Nordic mark sign":"Nordiskt märke tecken","Not an element of":"Inte en del av","Not equal to":"Inte lika med","Not sign":"Inte underteckna","on with exclamation mark with left right arrow above":"på med utropstecken med vänster högerpil ovanför",Overline:"Överlinje","Paragraph sign":"Paragraftecken","Partial differential":"Partiell differential","Per mille sign":"Per mille sign","Per ten thousand sign":"Per tiotusen tecken","Peseta sign":"Peseta-tecken","Peso sign":"Peso-tecken","Plus-minus sign":"Plustecken","Pound sign":"Pundskyltning","Proportional to":"Proportionerligt till","Question exclamation mark":"Fråga utropstecken","Registered sign":"Registrerat tecken","Reversed paragraph sign":"Omvänt paragraftecken","Right double quotation mark":"Höger dubbelt citationstecken","Right single quotation mark":"Höger enkelt citationstecken","Right-pointing double angle quotation mark":"Högerpekande dubbelt vinklat citationstecken","rightwards arrow to bar":"pil åt höger till bar","rightwards dashed arrow":"streckad pil åt höger","rightwards double arrow":"dubbelpil åt höger","Ruble sign":"Rubel tecken","Rupee sign":"Tecken på rupier","Section sign":"Sektionsskylt","Single left-pointing angle quotation mark":"Enbart vänsterpekande vinkelhängetecken","Single low-9 quotation mark":"Enstaka låg-9 citationstecken","Single right-pointing angle quotation mark":"Enbart högerpekande vinkelstämplat citationstecken","soon with rightwards arrow above":"snart med högerpilen ovan","Special characters":"Specialtecken","Spesmilo sign":"Spesmilo skylt","Square root":"Kvadratrot","Tenge sign":"Tenge-tecken","There exists":"Tom uppsättning","Tilde operator":"Tilde-operatör","top with upwards arrow above":"överst med en uppåtriktad pil ovanför","Trade mark sign":"Varumärkesskylt","Tugrik sign":"Tugrik-tecken","Turkish lira sign":"Turkiska liran tecken","Two dot leader":"Två punkts ledare",Union:"Unionen","up down arrow with base":"upp ner pil med bas","upwards arrow to bar":"uppåtriktad pil till streck","upwards dashed arrow":"streckad pil uppåt","upwards double arrow":"dubbelpil uppåt","Vulgar fraction one half":"Vulgärfraktion hälften","Vulgar fraction one quarter":"Vulgärfraktion en fjärdedel","Vulgar fraction three quarters":"Vulgärfraktion tre fjärdedelar","Won sign":"Vunnit tecken","Yen sign":"Yen-tecken"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(t){const e=t.sv=t.sv||{};e.dictionary=Object.assign(e.dictionary||{},{"Almost equal to":"Nästan lika med",Angle:"Vinkel","Approximately equal to":"Ungefär lika med","Asterisk operator":"Asteriskoperatör","Austral sign":"Australisk skylt","back with leftwards arrow above":"tillbaka med pil åt vänster ovanför","Bitcoin sign":"Bitcoin-tecken","Cedi sign":"Cedi-tecken","Cent sign":"Cent-tecken","Character categories":"Karaktärskategorier","Colon sign":"Colon-tecken","Contains as member":"Innehåller som medlem","Copyright sign":"Upphovsrättstecken","Cruzeiro sign":"Kryssningsskylt","Currency sign":"Valutateknik","Degree sign":"Gradbeteckning","Division sign":"Tecken på en avdelning","Dollar sign":"Dollartecken","Dong sign":"Dong-tecken","Double dagger":"Dubbel dolk","Double exclamation mark":"Dubbelt utropstecken","Double low-9 quotation mark":"Dubbla låg-9 citationstecken","Double question mark":"Dubbelt frågetecken","downwards arrow to bar":"pil nedåt för att sätta en bar","downwards dashed arrow":"streckad pil nedåt","downwards double arrow":"dubbelpil nedåt","downwards simple arrow":"enkel nedåtpil","Drachma sign":"Drachma tecken","Element of":"Element av","Em dash":"Em streck","Empty set":"Tom uppsättning","En dash":"Ett streck","end with leftwards arrow above":"avsluta med en pil åt vänster ovanför","Euro sign":"Euro-skylt","Euro-currency sign":"Tecken på euro-valuta","Exclamation question mark":"Utrop frågetecken","For all":"För alla","Fraction slash":"Fraktion snedstreck","French franc sign":"Franska franc tecken","German penny sign":"Tyska penny-tecken","Greater-than or equal to":"Större än eller lika med","Greater-than sign":"Större än-tecken","Guarani sign":"Guarani-tecken","Horizontal ellipsis":"Horisontell ellips","Hryvnia sign":"Hryvnia tecken","Identical to":"Identisk med","Indian rupee sign":"Indisk rupie tecken",Infinity:"Oändlighet",Integral:"Integrerad",Intersection:"Korsning","Inverted exclamation mark":"Inverterat utropstecken","Inverted question mark":"Inverterat frågetecken","Kip sign":"Kip-tecken","Latin capital letter a with breve":"Den latinska storbokstaven a med breve","Latin capital letter a with macron":"Den latinska storbokstaven a med makron","Latin capital letter a with ogonek":"Den latinska huvudbokstaven a med ogonek","Latin capital letter c with acute":"Den latinska storbokstaven c med akut","Latin capital letter c with caron":"Den latinska storbokstaven c med caron","Latin capital letter c with circumflex":"Den latinska storbokstaven c med omljud","Latin capital letter c with dot above":"Latinsk huvudbokstav c med punkt ovan","Latin capital letter d with caron":"Latin stor bokstav d med caron","Latin capital letter d with stroke":"Latin stor bokstav d med streck","Latin capital letter e with breve":"Den latinska storbokstaven e med breve","Latin capital letter e with caron":"Latin stor bokstav e med caron","Latin capital letter e with dot above":"Latinsk huvudbokstav e med punkt ovan","Latin capital letter e with macron":"Latinskt huvudstadbrev e med macron","Latin capital letter e with ogonek":"Den latinska storbokstaven e med ogonek","Latin capital letter eng":"Latinsk stor bokstav eng","Latin capital letter g with breve":"Den latinska storbokstaven g med breve","Latin capital letter g with cedilla":"Den latinska storbokstaven g med cedilla","Latin capital letter g with circumflex":"Den latinska storbokstaven g med omljud","Latin capital letter g with dot above":"Latinsk huvudbokstav g med punkt ovan","Latin capital letter h with circumflex":"Latinsk huvudbokstav h med circumflex","Latin capital letter h with stroke":"Latin stor bokstav h med streck","Latin capital letter i with breve":"Den latinska storbokstaven i med breve","Latin capital letter i with dot above":"Latinsk stor bokstav i med prick ovanför","Latin capital letter i with macron":"Den latinska storbokstaven i med makron","Latin capital letter i with ogonek":"Den latinska storbokstaven i med ogonek","Latin capital letter i with tilde":"Den latinska storbokstaven i med tilde","Latin capital letter j with circumflex":"Den latinska storbokstaven j med omljud","Latin capital letter k with cedilla":"Den latinska storbokstaven k med cedilla","Latin capital letter l with acute":"Den latinska storbokstaven l med akut","Latin capital letter l with caron":"Latin stor bokstav l med caron","Latin capital letter l with cedilla":"Den latinska storbokstaven l med cedilla","Latin capital letter l with middle dot":"Latinsk huvudbokstav l med mittpunkt","Latin capital letter l with stroke":"Latinska huvudbokstaven l med streck","Latin capital letter n with acute":"Den latinska huvudbokstaven n med akut","Latin capital letter n with caron":"Den latinska huvudbokstaven n med caron","Latin capital letter n with cedilla":"Den latinska storbokstaven n med cedilla","Latin capital letter o with breve":"Den latinska storbokstaven o med breve","Latin capital letter o with double acute":"Latinsk huvudbokstav o med dubbel akut","Latin capital letter o with macron":"Den latinska storbokstaven o med makron","Latin capital letter r with acute":"Latinsk huvudbokstav r med akut","Latin capital letter r with caron":"Latinsk huvudstadbokstav r med caron","Latin capital letter r with cedilla":"Den latinska storbokstaven r med cedilla","Latin capital letter s with acute":"Latinskt huvudbrev s med akut","Latin capital letter s with caron":"Latin stor bokstav s med caron","Latin capital letter s with cedilla":"Latinsk huvudbokstav s med cedilla","Latin capital letter s with circumflex":"Den latinska storbokstaven s med circumflex","Latin capital letter t with caron":"Den latinska storbokstaven t med caron","Latin capital letter t with cedilla":"Den latinska storbokstaven t med cedilla","Latin capital letter t with stroke":"Latin stor bokstav t med streck","Latin capital letter u with breve":"Den latinska storbokstaven u med breve","Latin capital letter u with double acute":"Den latinska storbokstaven u med dubbel spets","Latin capital letter u with macron":"Den latinska storbokstaven u med makron","Latin capital letter u with ogonek":"Den latinska storbokstaven u med ogonek","Latin capital letter u with ring above":"Latinsk versalbokstav u med ring ovanför","Latin capital letter u with tilde":"Den latinska storbokstaven u med tilde","Latin capital letter w with circumflex":"Den latinska storbokstaven w med omljud","Latin capital letter y with circumflex":"Den latinska versalbokstaven y med circumflex","Latin capital letter y with diaeresis":"Den latinska storbokstaven y med diaeresis","Latin capital letter z with acute":"Den latinska storbokstaven z med akut","Latin capital letter z with caron":"Den latinska storbokstaven z med caron","Latin capital letter z with dot above":"Latinsk versalbokstav z med punkt ovanför","Latin capital ligature ij":"Latinisk huvudbokstavsligatur ij","Latin capital ligature oe":"Latinsk huvudboksligatur oe","Latin small letter a with breve":"Den latinska lilla bokstaven a med breve","Latin small letter a with macron":"Latin liten bokstav a med makron","Latin small letter a with ogonek":"Den latinska lilla bokstaven a med ogonek","Latin small letter c with acute":"Den latinska lilla bokstaven c med akut","Latin small letter c with caron":"Den latinska lilla bokstaven c med caron","Latin small letter c with circumflex":"Den latinska lilla bokstaven c med circumflex","Latin small letter c with dot above":"Den latinska lilla bokstaven c med en punkt ovanför","Latin small letter d with caron":"Latin liten bokstav d med caron","Latin small letter d with stroke":"Latin liten bokstav d med streck","Latin small letter dotless i":"latinsk liten bokstav utan punkt i","Latin small letter e with breve":"Den latinska lilla bokstaven e med breve","Latin small letter e with caron":"Den latinska lilla bokstaven e med caron","Latin small letter e with dot above":"Den latinska lilla bokstaven e med en punkt ovanför","Latin small letter e with macron":"Den latinska lilla bokstaven e med makron","Latin small letter e with ogonek":"Den latinska lilla bokstaven e med ogonek","Latin small letter eng":"Latin liten bokstav eng","Latin small letter f with hook":"Latin liten bokstav f med krok","Latin small letter g with breve":"Den latinska lilla bokstaven g med breve","Latin small letter g with cedilla":"Den latinska lilla bokstaven g med cedilla","Latin small letter g with circumflex":"Den latinska lilla bokstaven g med omljud","Latin small letter g with dot above":"Den latinska lilla bokstaven g med en punkt ovanför","Latin small letter h with circumflex":"Den latinska lilla bokstaven h med omljud","Latin small letter h with stroke":"Latin liten bokstav h med streck","Latin small letter i with breve":"Den latinska lilla bokstaven i med breve","Latin small letter i with macron":"Den latinska lilla bokstaven i med makron","Latin small letter i with ogonek":"Den latinska lilla bokstaven i med ogonek","Latin small letter i with tilde":"Den latinska lilla bokstaven i med tilde","Latin small letter j with circumflex":"Den latinska lilla bokstaven j med circumflex","Latin small letter k with cedilla":"Den latinska lilla bokstaven k med cedilla","Latin small letter kra":"Den latinska lilla bokstaven kra","Latin small letter l with acute":"Den latinska lilla bokstaven l med akut","Latin small letter l with caron":"Den latinska lilla bokstaven l med caron","Latin small letter l with cedilla":"Den latinska lilla bokstaven l med cedilla","Latin small letter l with middle dot":"Latinsk liten bokstav l med mittpunkt","Latin small letter l with stroke":"Latinska lilla bokstaven l med streck","Latin small letter long s":"Latin liten bokstav lång s","Latin small letter n preceded by apostrophe":"Den latinska lilla bokstaven n föregås av en apostrof","Latin small letter n with acute":"Den latinska lilla bokstaven n med akut","Latin small letter n with caron":"Den latinska lilla bokstaven n med caron","Latin small letter n with cedilla":"Den latinska lilla bokstaven n med cedilla","Latin small letter o with breve":"Den latinska lilla bokstaven o med breve","Latin small letter o with double acute":"Den latinska lilla bokstaven o med dubbel spets","Latin small letter o with macron":"Den latinska lilla bokstaven o med makron","Latin small letter r with acute":"Den latinska lilla bokstaven r med akut","Latin small letter r with caron":"Den latinska lilla bokstaven r med caron","Latin small letter r with cedilla":"Den latinska lilla bokstaven r med cedilla","Latin small letter s with acute":"Den latinska lilla bokstaven s med akut","Latin small letter s with caron":"Latinska små brev s med caron","Latin small letter s with cedilla":"Latinska små bokstäver s med cedilla","Latin small letter s with circumflex":"Latinska små bokstäver s med circumflex","Latin small letter t with caron":"Den latinska lilla bokstaven t med caron","Latin small letter t with cedilla":"Den latinska lilla bokstaven t med cedilla","Latin small letter t with stroke":"Latin liten bokstav t med streck","Latin small letter u with breve":"Den latinska lilla bokstaven u med breve","Latin small letter u with double acute":"Den latinska lilla bokstaven u med dubbel spets","Latin small letter u with macron":"Den latinska lilla bokstaven u med makron","Latin small letter u with ogonek":"Den latinska lilla bokstaven u med ogonek","Latin small letter u with ring above":"Latin liten bokstav u med ring ovanför","Latin small letter u with tilde":"Den latinska lilla bokstaven u med tilde","Latin small letter w with circumflex":"Den latinska lilla bokstaven w med omljud","Latin small letter y with circumflex":"Den latinska lilla bokstaven y med circumflex","Latin small letter z with acute":"Den latinska lilla bokstaven z med akut","Latin small letter z with caron":"Den latinska lilla bokstaven z med caron","Latin small letter z with dot above":"Den latinska lilla bokstaven z med en punkt ovanför","Latin small ligature ij":"latinsk liten ligatur ij","Latin small ligature oe":"Latin liten ligatur oe","Left double quotation mark":"Vänster dubbelt citationstecken","Left single quotation mark":"Vänster enkelt citationstecken","Left-pointing double angle quotation mark":"Vänsterpekande dubbelt vinklat citationstecken","leftwards arrow to bar":"pil åt vänster till baren","leftwards dashed arrow":"streckad pil åt vänster","leftwards double arrow":"dubbelpil åt vänster","leftwards simple arrow":"enkel vänsterpil","Less-than or equal to":"Mindre än eller lika med","Less-than sign":"Mindre än-tecken","Lira sign":"Lira-tecken","Livre tournois sign":"Turneringens bokskylt","Logical and":"Logisk och","Logical or":"Logisk eller",Macron:"Macron","Manat sign":"Manat-tecken","Mill sign":"Kvarnskylt","Minus sign":"Minustecken","Multiplication sign":"Multiplikationstecken","N-ary product":"N-ary produkt","N-ary summation":"N-ständig summering",Nabla:"Nabla","Naira sign":"Naira-tecken","New sheqel sign":"Ny sheqel-skylt","Nordic mark sign":"Nordiskt märke tecken","Not an element of":"Inte en del av","Not equal to":"Inte lika med","Not sign":"Inte underteckna","on with exclamation mark with left right arrow above":"på med utropstecken med vänster högerpil ovanför",Overline:"Överlinje","Paragraph sign":"Paragraftecken","Partial differential":"Partiell differential","Per mille sign":"Per mille sign","Per ten thousand sign":"Per tiotusen tecken","Peseta sign":"Peseta-tecken","Peso sign":"Peso-tecken","Plus-minus sign":"Plustecken","Pound sign":"Pundskyltning","Proportional to":"Proportionerligt till","Question exclamation mark":"Fråga utropstecken","Registered sign":"Registrerat tecken","Reversed paragraph sign":"Omvänt paragraftecken","Right double quotation mark":"Höger dubbelt citationstecken","Right single quotation mark":"Höger enkelt citationstecken","Right-pointing double angle quotation mark":"Högerpekande dubbelt vinklat citationstecken","rightwards arrow to bar":"pil åt höger till bar","rightwards dashed arrow":"streckad pil åt höger","rightwards double arrow":"dubbelpil åt höger","rightwards simple arrow":"enkel högerpil","Ruble sign":"Rubel tecken","Rupee sign":"Tecken på rupier","Section sign":"Sektionsskylt","Single left-pointing angle quotation mark":"Enbart vänsterpekande vinkelhängetecken","Single low-9 quotation mark":"Enstaka låg-9 citationstecken","Single right-pointing angle quotation mark":"Enbart högerpekande vinkelstämplat citationstecken","soon with rightwards arrow above":"snart med högerpilen ovan","Special characters":"Specialtecken","Spesmilo sign":"Spesmilo skylt","Square root":"Kvadratrot","Tenge sign":"Tenge-tecken","There exists":"Tom uppsättning","Tilde operator":"Tilde-operatör","top with upwards arrow above":"överst med en uppåtriktad pil ovanför","Trade mark sign":"Varumärkesskylt","Tugrik sign":"Tugrik-tecken","Turkish lira sign":"Turkiska liran tecken","Two dot leader":"Två punkts ledare",Union:"Unionen","up down arrow with base":"upp ner pil med bas","upwards arrow to bar":"uppåtriktad pil till streck","upwards dashed arrow":"streckad pil uppåt","upwards double arrow":"dubbelpil uppåt","upwards simple arrow":"enkel uppåtpil","Vulgar fraction one half":"Vulgärfraktion hälften","Vulgar fraction one quarter":"Vulgärfraktion en fjärdedel","Vulgar fraction three quarters":"Vulgärfraktion tre fjärdedelar","Won sign":"Vunnit tecken","Yen sign":"Yen-tecken"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/special-characters/translations/th.js b/core/assets/vendor/ckeditor5/special-characters/translations/th.js
index 169d6ebe1f..eb68ef0b8c 100644
--- a/core/assets/vendor/ckeditor5/special-characters/translations/th.js
+++ b/core/assets/vendor/ckeditor5/special-characters/translations/th.js
@@ -1 +1 @@
-!function(t){const a=t.th=t.th||{};a.dictionary=Object.assign(a.dictionary||{},{"Almost equal to":"เกือบเท่ากับ",Angle:"มุม","Approximately equal to":"ประมาณเท่ากับ","Asterisk operator":"ตัวปฏิบัติการดอกจัน","Austral sign":"สัญลักษณ์ออสตรัล","back with leftwards arrow above":"ย้อนกลับมีลูกศรซ้ายข้างบน","Bitcoin sign":"สัญลักษณ์บิตคอยน์","Cedi sign":"สัญลักษณ์เซดี","Cent sign":"สัญลักษณ์เซนต์","Character categories":"หมวดหมู่อักขระ","Colon sign":"สัญลักษณ์ทวิภาค","Contains as member":"มีเป็นสมาชิก","Copyright sign":"สัญลักษณ์ลิขสิทธิ์","Cruzeiro sign":"สัญลักษณ์ครูเซโร","Currency sign":"สัญลักษณ์สกุลเงิน","Degree sign":"สัญลักษณ์องศา","Division sign":"สัญลักษณ์หาร","Dollar sign":"สัญลักษณ์ดอลลาร์","Dong sign":"สัญลักษณ์ดง","Double dagger":"กริชซ้อน","Double exclamation mark":"เครื่องหมายอัศเจรีย์คู่","Double low-9 quotation mark":"อัญประกาศคู่มีหัวด้านล่าง","Double question mark":"เครื่องหมายปรัศนีคู่","downwards arrow to bar":"ลูกศรชี้ลงชนขีด","downwards dashed arrow":"ลูกศรลงเส้นประ","downwards double arrow":"ลูกศรลงคู่","Drachma sign":"สัญลักษณ์ดรักมา","Element of":"องค์ประกอบของ","Em dash":"ขีดยาว","Empty set":"เซตว่าง","En dash":"ขีด","end with leftwards arrow above":"สิ้นสุดมีลูกศรซ้ายข้างบน","Euro sign":"สัญลักษณ์ยูโร","Euro-currency sign":"สัญลักษณ์สกุลเงินยูโร","Exclamation question mark":"เครื่องหมายอัศเจรีย์ปรัศนี","For all":"สำหรับทั้งหมด","Fraction slash":"ขีดแบ่ง","French franc sign":"สัญลักษณ์ฟรังก์ฝรั่งเศส","German penny sign":"สัญลักษณ์เพนนีเยอรมัน","Greater-than or equal to":"มากกว่าหรือเท่ากับ","Greater-than sign":"สัญลักษณ์มากกว่า","Guarani sign":"สัญลักษณ์กวารานี","Horizontal ellipsis":"จุดไข่ปลาแนวนอน","Hryvnia sign":"สัญลักษณ์ฮริฟเนีย","Identical to":"เหมือนกับ","Indian rupee sign":"สัญลักษณ์อินเดียรูปี",Infinity:"อนันต์",Integral:"อินทิกรัล",Intersection:"อินเตอร์เซกชัน","Inverted exclamation mark":"อัศเจรีย์กลับหัว","Inverted question mark":"ปรัศนีกลับหัว","Kip sign":"สัญลักษณ์กีบ","Latin capital letter a with breve":"ตัวอักษรลาตินเอตัวพิมพ์ใหญ่มีเบรฟ","Latin capital letter a with macron":"ตัวอักษรลาตินเอตัวพิมพ์ใหญ่มีมาครอน","Latin capital letter a with ogonek":"ตัวอักษรลาตินเอตัวพิมพ์ใหญ่มีโอโกเนก","Latin capital letter c with acute":"ตัวอักษรลาตินซีตัวพิมพ์ใหญ่มีอะคิวต์","Latin capital letter c with caron":"ตัวอักษรลาตินซีตัวพิมพ์ใหญ่มีคารอน","Latin capital letter c with circumflex":"ตัวอักษรลาตินซีตัวพิมพ์ใหญ่มีเซอร์คัมเฟล็กซ์","Latin capital letter c with dot above":"ตัวอักษรลาตินซีตัวพิมพ์ใหญ่มีจุดข้างบน","Latin capital letter d with caron":"ตัวอักษรลาตินดีตัวพิมพ์ใหญ่มีคารอน","Latin capital letter d with stroke":"ตัวอักษรลาตินดีตัวพิมพ์ใหญ่มีสโตรก","Latin capital letter e with breve":"ตัวอักษรลาตินอีตัวพิมพ์ใหญ่มีเบรฟ","Latin capital letter e with caron":"ตัวอักษรลาตินอีตัวพิมพ์เล็กมีคารอน","Latin capital letter e with dot above":"ตัวอักษรลาตินอีตัวพิมพ์ใหญ่มีจุดข้างบน","Latin capital letter e with macron":"ตัวอักษรลาตินอีตัวพิมพ์ใหญ่มีมาครอน","Latin capital letter e with ogonek":"ตัวอักษรลาตินอีตัวพิมพ์ใหญ่มีโอโกเนก","Latin capital letter eng":"ตัวอักษรลาตินอังตัวพิมพ์ใหญ่","Latin capital letter g with breve":"ตัวอักษรลาตินจีตัวพิมพ์ใหญ่มีเบรฟ","Latin capital letter g with cedilla":"ตัวอักษรลาตินจีตัวพิมพ์ใหญ่มีเซดีลลา","Latin capital letter g with circumflex":"ตัวอักษรลาตินจีตัวพิมพ์ใหญ่มีเซอร์คัมเฟล็กซ์","Latin capital letter g with dot above":"ตัวอักษรลาตินจีตัวพิมพ์ใหญ่มีจุดข้างบน","Latin capital letter h with circumflex":"ตัวอักษรลาตินเอชตัวพิมพ์ใหญ่มีเซอร์คัมเฟล็กซ์","Latin capital letter h with stroke":"ตัวอักษรลาตินเอชตัวพิมพ์ใหญ่มีสโตรก","Latin capital letter i with breve":"ตัวอักษรลาตินไอตัวพิมพ์ใหญ่มีเบรฟ","Latin capital letter i with dot above":"ตัวอักษรลาตินไอตัวพิมพ์ใหญ่มีจุดข้างบน","Latin capital letter i with macron":"ตัวอักษรลาตินไอตัวพิมพ์ใหญ่มีมาครอน","Latin capital letter i with ogonek":"ตัวอักษรลาตินไอตัวพิมพ์ใหญ่มีโอโกเนก","Latin capital letter i with tilde":"ตัวอักษรลาตินไอตัวพิมพ์ใหญ่มีทิลด์","Latin capital letter j with circumflex":"ตัวอักษรลาตินเจตัวพิมพ์ใหญ่มีเซอร์คัมเฟล็กซ์","Latin capital letter k with cedilla":"ตัวอักษรลาตินเคตัวพิมพ์ใหญ่มีเซดีลลา","Latin capital letter l with acute":"ตัวอักษรลาตินแอลตัวพิมพ์ใหญ่มีอะคิวต์","Latin capital letter l with caron":"ตัวอักษรลาตินแอลตัวพิมพ์ใหญ่มีคารอน","Latin capital letter l with cedilla":"ตัวอักษรลาตินแอลตัวพิมพ์ใหญ่มีเซดีลลา","Latin capital letter l with middle dot":"ตัวอักษรลาตินแอลตัวพิมพ์ใหญ่มีจุดกลาง","Latin capital letter l with stroke":"ตัวอักษรลาตินแอลตัวพิมพ์ใหญ่มีสโตรก","Latin capital letter n with acute":"ตัวอักษรลาตินเอ็นตัวพิมพ์ใหญ่มีอะคิวต์","Latin capital letter n with caron":"ตัวอักษรลาตินเอ็นตัวพิมพ์ใหญ่มีคารอน","Latin capital letter n with cedilla":"ตัวอักษรลาตินเอ็นตัวพิมพ์ใหญ่มีเซดีลลา","Latin capital letter o with breve":"ตัวอักษรลาตินโอตัวพิมพ์ใหญ่มีเบรฟ","Latin capital letter o with double acute":"ตัวอักษรลาตินโอตัวพิมพ์ใหญ่มีดับเบิลอะคิวต์","Latin capital letter o with macron":"ตัวอักษรลาตินโอตัวพิมพ์ใหญ่มีมาครอน","Latin capital letter r with acute":"ตัวอักษรลาตินอาร์ตัวพิมพ์ใหญ่มีอะคิวต์","Latin capital letter r with caron":"ตัวอักษรลาตินอาร์ตัวพิมพ์ใหญ่มีคารอน","Latin capital letter r with cedilla":"ตัวอักษรลาตินอาร์ตัวพิมพ์ใหญ่มีเซดีลลา","Latin capital letter s with acute":"ตัวอักษรลาตินเอสตัวพิมพ์ใหญ่มีอะคิวต์","Latin capital letter s with caron":"ตัวอักษรลาตินเอสตัวพิมพ์ใหญ่มีคารอน","Latin capital letter s with cedilla":"ตัวอักษรลาตินเอสตัวพิมพ์ใหญ่มีเซดีลลา","Latin capital letter s with circumflex":"ตัวอักษรลาตินเอสตัวพิมพ์ใหญ่มีเซอร์คัมเฟล็กซ์","Latin capital letter t with caron":"ตัวอักษรลาตินทีตัวพิมพ์ใหญ่มีคารอน","Latin capital letter t with cedilla":"ตัวอักษรลาตินทีตัวพิมพ์ใหญ่มีเซดีลลา","Latin capital letter t with stroke":"ตัวอักษรลาตินทีตัวพิมพ์ใหญ่มีสโตรก","Latin capital letter u with breve":"ตัวอักษรลาตินยูตัวพิมพ์ใหญ่มีเบรฟ","Latin capital letter u with double acute":"ตัวอักษรลาตินยูตัวพิมพ์ใหญ่มีดับเบิลอะคิวต์","Latin capital letter u with macron":"ตัวอักษรลาตินยูตัวพิมพ์ใหญ่มีมาครอน","Latin capital letter u with ogonek":"ตัวอักษรลาตินยูตัวพิมพ์ใหญ่มีโอโกเนก","Latin capital letter u with ring above":"ตัวอักษรลาตินยูตัวพิมพ์ใหญ่มีแหวนข้างบน","Latin capital letter u with tilde":"ตัวอักษรลาตินยูตัวพิมพ์ใหญ่มีทิลด์","Latin capital letter w with circumflex":"ตัวอักษรลาตินดับเบิลยูตัวพิมพ์ใหญ่มีเซอร์คัมเฟล็กซ์","Latin capital letter y with circumflex":"ตัวอักษรลาตินวายตัวพิมพ์ใหญ่มีเซอร์คัมเฟล็กซ์","Latin capital letter y with diaeresis":"ตัวอักษรลาตินวายตัวพิมพ์ใหญ่มีไดอาเรซิส","Latin capital letter z with acute":"ตัวอักษรลาตินแซดตัวพิมพ์ใหญ่มีอะคิวต์","Latin capital letter z with caron":"ตัวอักษรลาตินแซดตัวพิมพ์ใหญ่มีคารอน","Latin capital letter z with dot above":"ตัวอักษรลาตินแซดตัวพิมพ์ใหญ่มีจุดข้างบน","Latin capital ligature ij":"ตัวอักษรลาตินแฝดไอเจตัวพิมพ์ใหญ่","Latin capital ligature oe":"ตัวอักษรลาตินแฝดโออีตัวพิมพ์ใหญ่","Latin small letter a with breve":"ตัวอักษรลาตินเอตัวพิมพ์เล็กมีเบรฟ","Latin small letter a with macron":"ตัวอักษรลาตินเอตัวพิมพ์เล็กมีมาครอน","Latin small letter a with ogonek":"ตัวอักษรลาตินเอตัวพิมพ์เล็กมีโอโกเนก","Latin small letter c with acute":"ตัวอักษรลาตินซีตัวพิมพ์เล็กมีอะคิวต์","Latin small letter c with caron":"ตัวอักษรลาตินซีตัวพิมพ์เล็กมีคารอน","Latin small letter c with circumflex":"ตัวอักษรลาตินซีตัวพิมพ์เล็กมีเซอร์คัมเฟล็กซ์","Latin small letter c with dot above":"ตัวอักษรลาตินซีตัวพิมพ์เล็กมีจุดข้างบน","Latin small letter d with caron":"ตัวอักษรลาตินดีตัวพิมพ์เล็กมีคารอน","Latin small letter d with stroke":"ตัวอักษรลาตินดีตัวพิมพ์เล็กมีสโตรก","Latin small letter dotless i":"ตัวอักษรลาตินไอไม่มีจุดตัวพิมพ์เล็ก","Latin small letter e with breve":"ตัวอักษรลาตินอีตัวพิมพ์เล็กมีเบรฟ","Latin small letter e with caron":"ตัวอักษรลาตินอีตัวเล็กใหญ่มีคารอน","Latin small letter e with dot above":"ตัวอักษรลาตินอีตัวพิมพ์เล็กมีจุดข้างบน","Latin small letter e with macron":"ตัวอักษรลาตินอีตัวพิมพ์เล็กมีมาครอน","Latin small letter e with ogonek":"ตัวอักษรลาตินอีตัวพิมพ์ใหญ่มีโอโกเนก","Latin small letter eng":"ตัวอักษรลาตินอังตัวพิมพ์เล็ก","Latin small letter f with hook":"ตัวอักษรลาตินเอฟเล็กมีตะขอ","Latin small letter g with breve":"ตัวอักษรลาตินจีตัวพิมพ์เล็กมีเบรฟ","Latin small letter g with cedilla":"ตัวอักษรลาตินจีตัวพิมพ์เล็กมีเซดีลลา","Latin small letter g with circumflex":"ตัวอักษรลาตินจีตัวพิมพ์เล็กมีเซอร์คัมเฟล็กซ์","Latin small letter g with dot above":"ตัวอักษรลาตินจีตัวพิมพ์เล็กมีจุดข้างบน","Latin small letter h with circumflex":"ตัวอักษรลาตินเอชตัวพิมพ์เล็กมีเซอร์คัมเฟล็กซ์","Latin small letter h with stroke":"ตัวอักษรลาตินเอชตัวพิมพ์เล็กมีสโตรก","Latin small letter i with breve":"ตัวอักษรลาตินไอตัวพิมพ์เล็กมีเบรฟ","Latin small letter i with macron":"ตัวอักษรลาตินไอตัวพิมพ์เล็กมีมาครอน","Latin small letter i with ogonek":"ตัวอักษรลาตินไอตัวพิมพ์เล็กมีโอโกเนก","Latin small letter i with tilde":"ตัวอักษรลาตินไอตัวพิมพ์เล็กมีทิลด์","Latin small letter j with circumflex":"ตัวอักษรลาตินเจตัวพิมพ์เล็กมีเซอร์คัมเฟล็กซ์","Latin small letter k with cedilla":"ตัวอักษรลาตินเคตัวพิมพ์เล็กมีเซดีลลา","Latin small letter kra":"ตัวอักษรลาตินคราตัวพิมพ์เล็ก","Latin small letter l with acute":"ตัวอักษรลาตินแอลตัวพิมพ์เล็กมีอะคิวต์","Latin small letter l with caron":"ตัวอักษรลาตินแอลตัวพิมพ์เล็กมีคารอน","Latin small letter l with cedilla":"ตัวอักษรลาตินแอลตัวพิมพ์เล็กมีเซดีลลา","Latin small letter l with middle dot":"ตัวอักษรลาตินแอลตัวพิมพ์เล็กมีจุดกลาง","Latin small letter l with stroke":"ตัวอักษรลาตินแอลตัวพิมพ์เล็กมีสโตรก","Latin small letter long s":"ตัวอักษรลาตินเล็กเอสยาว","Latin small letter n preceded by apostrophe":"ตัวอักษรลาตินเอ็นตัวพิมพ์เล็กนำหน้าด้วยอะพอสทรอฟี","Latin small letter n with acute":"ตัวอักษรลาตินเอ็นตัวพิมพ์เล็กมีอะคิวต์","Latin small letter n with caron":"ตัวอักษรลาตินเอ็นตัวพิมพ์เล็กมีคารอน","Latin small letter n with cedilla":"ตัวอักษรลาตินเอ็นตัวพิมพ์เล็กมีเซดีลลา","Latin small letter o with breve":"ตัวอักษรลาตินโอตัวพิมพ์เล็กมีเบรฟ","Latin small letter o with double acute":"ตัวอักษรลาตินโอตัวพิมพ์เล็กมีดับเบิลอะคิวต์","Latin small letter o with macron":"ตัวอักษรลาตินโอตัวพิมพ์เล็กมีมาครอน","Latin small letter r with acute":"ตัวอักษรลาตินอาร์ตัวพิมพ์เล็กมีอะคิวต์","Latin small letter r with caron":"ตัวอักษรลาตินอาร์ตัวพิมพ์เล็กมีคารอน","Latin small letter r with cedilla":"ตัวอักษรลาตินอาร์ตัวพิมพ์เล็กมีเซดีลลา","Latin small letter s with acute":"ตัวอักษรลาตินเอสตัวพิมพ์เล็กมีอะคิวต์","Latin small letter s with caron":"ตัวอักษรลาตินเอสตัวพิมพ์เล็กมีคารอน","Latin small letter s with cedilla":"ตัวอักษรลาตินเอสตัวพิมพ์เล็กมีเซดีลลา","Latin small letter s with circumflex":"ตัวอักษรลาตินเอสตัวพิมพ์เล็กมีเซอร์คัมเฟล็กซ์","Latin small letter t with caron":"ตัวอักษรลาตินทีตัวพิมพ์เล็กมีคารอน","Latin small letter t with cedilla":"ตัวอักษรลาตินทีตัวพิมพ์เล็กมีเซดีลลา","Latin small letter t with stroke":"ตัวอักษรลาตินทีตัวพิมพ์เล็กมีสโตรก","Latin small letter u with breve":"ตัวอักษรลาตินยูตัวพิมพ์เล็กมีเบรฟ","Latin small letter u with double acute":"ตัวอักษรลาตินยูตัวพิมพ์เล็กมีดับเบิลอะคิวต์","Latin small letter u with macron":"ตัวอักษรลาตินยูตัวพิมพ์เล็กมีมาครอน","Latin small letter u with ogonek":"ตัวอักษรลาตินยูตัวพิมพ์เล็กมีโอโกเนก","Latin small letter u with ring above":"ตัวอักษรลาตินยูตัวพิมพ์เล็กมีแหวนข้างบน","Latin small letter u with tilde":"ตัวอักษรลาตินยูตัวพิมพ์เล็กมีทิลด์","Latin small letter w with circumflex":"ตัวอักษรลาตินดับเบิลยูตัวพิมพ์เล็กมีเซอร์คัมเฟล็กซ์","Latin small letter y with circumflex":"ตัวอักษรลาตินวายตัวพิมพ์เล็กมีเซอร์คัมเฟล็กซ์","Latin small letter z with acute":"ตัวอักษรลาตินแซดตัวพิมพ์เล็กมีอะคิวต์","Latin small letter z with caron":"ตัวอักษรลาตินแซดตัวพิมพ์เล็กมีคารอน","Latin small letter z with dot above":"ตัวอักษรลาตินแซดตัวพิมพ์เล็กมีจุดข้างบน","Latin small ligature ij":"ตัวอักษรลาตินแฝดไอเจตัวพิมพ์เล็ก","Latin small ligature oe":"ตัวอักษรลาตินแฝดโออีตัวพิมพ์เล็ก","Left double quotation mark":"อัญประกาศคู่ด้านซ้าย","Left single quotation mark":"อัญประกาศเดี่ยวด้านซ้าย","Left-pointing double angle quotation mark":"อัญประกาศคู่เอียงซ้าย","leftwards arrow to bar":"ลูกศรชี้ซ้ายชนขีด","leftwards dashed arrow":"ลูกศรซ้ายเส้นประ","leftwards double arrow":"ลูกศรซ้ายคู่","Less-than or equal to":"น้อยกว่าหรือเท่ากับ","Less-than sign":"สัญลักษณ์น้อยกว่า","Lira sign":"สัญลักษณ์ลีรา","Livre tournois sign":"สัญลักษณ์ลิฟร์ ทัวร์นัวส์","Logical and":"ตรรกะและ","Logical or":"ตรรกะหรือ",Macron:"มาครอน","Manat sign":"สัญลักษณ์มานัต","Mill sign":"สัญลักษณ์มิลล์","Minus sign":"สัญลักษณ์ลบ","Multiplication sign":"สัญลักษณ์คูณ","N-ary product":"ผลคูณเอ็นเรย์","N-ary summation":"ผลรวมเอ็นเรย์",Nabla:"นาบลา","Naira sign":"สัญลักษณ์ไนรา","New sheqel sign":"สัญลักษณ์นิวเชเกล","Nordic mark sign":"สัญลักษณ์มาร์กนอร์ดิก","Not an element of":"ไม่ใช่องค์ประกอบของ","Not equal to":"ไม่เท่ากับ","Not sign":"สัญลักษณ์ไม่ใช่","on with exclamation mark with left right arrow above":"เปิดมีอัศเจรีย์มีลูกศรซ้ายขวาข้างบน",Overline:"ขีดบน","Paragraph sign":"สัญลักษณ์ย่อหน้า","Partial differential":"อนุพันธ์ย่อย","Per mille sign":"สัญลักษณ์ต่อพัน","Per ten thousand sign":"สัญลักษณ์ต่อหมื่น","Peseta sign":"สัญลักษณ์ปีเซตา","Peso sign":"สัญลักษณ์เปโซ","Plus-minus sign":"สัญลักษณ์บวกลบ","Pound sign":"สัญลักษณ์ปอนด์","Proportional to":"สัดส่วนกับ","Question exclamation mark":"เครื่องหมายปรัศนีอัศเจรีย์","Registered sign":"สัญลักษณ์จดทะเบียน","Reversed paragraph sign":"สัญลักษณ์ย่อหน้ากลับหัว","Right double quotation mark":"อัญประกาศคู่ด้านขวา","Right single quotation mark":"อัญประกาศเดี่ยวด้านขวา","Right-pointing double angle quotation mark":"อัญประกาศคู่เอียงขวา","rightwards arrow to bar":"ลูกศรชี้ขวาชนขีด","rightwards dashed arrow":"ลูกศรขวาเส้นประ","rightwards double arrow":"ลูกศรขวาคู่","Ruble sign":"สัญลักษณ์รูเบิล","Rupee sign":"สัญลักษณ์รูปี","Section sign":"สัญลักษณ์มาตรา","Single left-pointing angle quotation mark":"อัญประกาศเดี่ยวเอียงซ้าย","Single low-9 quotation mark":"อัญประกาศเดี่ยวมีหัวด้านล่าง","Single right-pointing angle quotation mark":"อัญประกาศเดี่ยวเอียงขวา","soon with rightwards arrow above":"เร็ว ๆ นี้มีลูกศรขวาข้างบน","Special characters":"อักขระพิเศษ","Spesmilo sign":"สัญลักษณ์สเปสมิโล","Square root":"รากที่สอง","Tenge sign":"สัญลักษณ์เทงเจ","There exists":"มีอยู่","Tilde operator":"ตัวปฏิบัติการทิลด์","top with upwards arrow above":"บนสุดมีลูกศรขึ้นข้างบน","Trade mark sign":"สัญลักษณ์เครื่องหมายการค้า","Tugrik sign":"สัญลักษณ์ทูกรีก","Turkish lira sign":"สัญลักษณ์ลีราตุรกี","Two dot leader":"สองจุดนำ",Union:"ยูเนียน","up down arrow with base":"ลูกศรขึ้นลงมีฐาน","upwards arrow to bar":"ลูกศรชี้ขึ้นชนขีด","upwards dashed arrow":"ลูกศรขึ้นเส้นประ","upwards double arrow":"ลูกศรขึ้นคู่","Vulgar fraction one half":"เศษหนึ่งส่วนสอง","Vulgar fraction one quarter":"เศษหนึ่งส่วนสี่","Vulgar fraction three quarters":"เศษหนึ่งส่วนสาม","Won sign":"สัญลักษณ์วอน","Yen sign":"สัญลักษณ์เยน"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(t){const a=t.th=t.th||{};a.dictionary=Object.assign(a.dictionary||{},{"Almost equal to":"เกือบเท่ากับ",Angle:"มุม","Approximately equal to":"ประมาณเท่ากับ","Asterisk operator":"ตัวปฏิบัติการดอกจัน","Austral sign":"สัญลักษณ์ออสตรัล","back with leftwards arrow above":"ย้อนกลับมีลูกศรซ้ายข้างบน","Bitcoin sign":"สัญลักษณ์บิตคอยน์","Cedi sign":"สัญลักษณ์เซดี","Cent sign":"สัญลักษณ์เซนต์","Character categories":"หมวดหมู่อักขระ","Colon sign":"สัญลักษณ์ทวิภาค","Contains as member":"มีเป็นสมาชิก","Copyright sign":"สัญลักษณ์ลิขสิทธิ์","Cruzeiro sign":"สัญลักษณ์ครูเซโร","Currency sign":"สัญลักษณ์สกุลเงิน","Degree sign":"สัญลักษณ์องศา","Division sign":"สัญลักษณ์หาร","Dollar sign":"สัญลักษณ์ดอลลาร์","Dong sign":"สัญลักษณ์ดง","Double dagger":"กริชซ้อน","Double exclamation mark":"เครื่องหมายอัศเจรีย์คู่","Double low-9 quotation mark":"อัญประกาศคู่มีหัวด้านล่าง","Double question mark":"เครื่องหมายปรัศนีคู่","downwards arrow to bar":"ลูกศรชี้ลงชนขีด","downwards dashed arrow":"ลูกศรลงเส้นประ","downwards double arrow":"ลูกศรลงคู่","downwards simple arrow":"ลูกศรลงธรรมดา","Drachma sign":"สัญลักษณ์ดรักมา","Element of":"องค์ประกอบของ","Em dash":"ขีดยาว","Empty set":"เซตว่าง","En dash":"ขีด","end with leftwards arrow above":"สิ้นสุดมีลูกศรซ้ายข้างบน","Euro sign":"สัญลักษณ์ยูโร","Euro-currency sign":"สัญลักษณ์สกุลเงินยูโร","Exclamation question mark":"เครื่องหมายอัศเจรีย์ปรัศนี","For all":"สำหรับทั้งหมด","Fraction slash":"ขีดแบ่ง","French franc sign":"สัญลักษณ์ฟรังก์ฝรั่งเศส","German penny sign":"สัญลักษณ์เพนนีเยอรมัน","Greater-than or equal to":"มากกว่าหรือเท่ากับ","Greater-than sign":"สัญลักษณ์มากกว่า","Guarani sign":"สัญลักษณ์กวารานี","Horizontal ellipsis":"จุดไข่ปลาแนวนอน","Hryvnia sign":"สัญลักษณ์ฮริฟเนีย","Identical to":"เหมือนกับ","Indian rupee sign":"สัญลักษณ์อินเดียรูปี",Infinity:"อนันต์",Integral:"อินทิกรัล",Intersection:"อินเตอร์เซกชัน","Inverted exclamation mark":"อัศเจรีย์กลับหัว","Inverted question mark":"ปรัศนีกลับหัว","Kip sign":"สัญลักษณ์กีบ","Latin capital letter a with breve":"ตัวอักษรลาตินเอตัวพิมพ์ใหญ่มีเบรฟ","Latin capital letter a with macron":"ตัวอักษรลาตินเอตัวพิมพ์ใหญ่มีมาครอน","Latin capital letter a with ogonek":"ตัวอักษรลาตินเอตัวพิมพ์ใหญ่มีโอโกเนก","Latin capital letter c with acute":"ตัวอักษรลาตินซีตัวพิมพ์ใหญ่มีอะคิวต์","Latin capital letter c with caron":"ตัวอักษรลาตินซีตัวพิมพ์ใหญ่มีคารอน","Latin capital letter c with circumflex":"ตัวอักษรลาตินซีตัวพิมพ์ใหญ่มีเซอร์คัมเฟล็กซ์","Latin capital letter c with dot above":"ตัวอักษรลาตินซีตัวพิมพ์ใหญ่มีจุดข้างบน","Latin capital letter d with caron":"ตัวอักษรลาตินดีตัวพิมพ์ใหญ่มีคารอน","Latin capital letter d with stroke":"ตัวอักษรลาตินดีตัวพิมพ์ใหญ่มีสโตรก","Latin capital letter e with breve":"ตัวอักษรลาตินอีตัวพิมพ์ใหญ่มีเบรฟ","Latin capital letter e with caron":"ตัวอักษรลาตินอีตัวพิมพ์เล็กมีคารอน","Latin capital letter e with dot above":"ตัวอักษรลาตินอีตัวพิมพ์ใหญ่มีจุดข้างบน","Latin capital letter e with macron":"ตัวอักษรลาตินอีตัวพิมพ์ใหญ่มีมาครอน","Latin capital letter e with ogonek":"ตัวอักษรลาตินอีตัวพิมพ์ใหญ่มีโอโกเนก","Latin capital letter eng":"ตัวอักษรลาตินอังตัวพิมพ์ใหญ่","Latin capital letter g with breve":"ตัวอักษรลาตินจีตัวพิมพ์ใหญ่มีเบรฟ","Latin capital letter g with cedilla":"ตัวอักษรลาตินจีตัวพิมพ์ใหญ่มีเซดีลลา","Latin capital letter g with circumflex":"ตัวอักษรลาตินจีตัวพิมพ์ใหญ่มีเซอร์คัมเฟล็กซ์","Latin capital letter g with dot above":"ตัวอักษรลาตินจีตัวพิมพ์ใหญ่มีจุดข้างบน","Latin capital letter h with circumflex":"ตัวอักษรลาตินเอชตัวพิมพ์ใหญ่มีเซอร์คัมเฟล็กซ์","Latin capital letter h with stroke":"ตัวอักษรลาตินเอชตัวพิมพ์ใหญ่มีสโตรก","Latin capital letter i with breve":"ตัวอักษรลาตินไอตัวพิมพ์ใหญ่มีเบรฟ","Latin capital letter i with dot above":"ตัวอักษรลาตินไอตัวพิมพ์ใหญ่มีจุดข้างบน","Latin capital letter i with macron":"ตัวอักษรลาตินไอตัวพิมพ์ใหญ่มีมาครอน","Latin capital letter i with ogonek":"ตัวอักษรลาตินไอตัวพิมพ์ใหญ่มีโอโกเนก","Latin capital letter i with tilde":"ตัวอักษรลาตินไอตัวพิมพ์ใหญ่มีทิลด์","Latin capital letter j with circumflex":"ตัวอักษรลาตินเจตัวพิมพ์ใหญ่มีเซอร์คัมเฟล็กซ์","Latin capital letter k with cedilla":"ตัวอักษรลาตินเคตัวพิมพ์ใหญ่มีเซดีลลา","Latin capital letter l with acute":"ตัวอักษรลาตินแอลตัวพิมพ์ใหญ่มีอะคิวต์","Latin capital letter l with caron":"ตัวอักษรลาตินแอลตัวพิมพ์ใหญ่มีคารอน","Latin capital letter l with cedilla":"ตัวอักษรลาตินแอลตัวพิมพ์ใหญ่มีเซดีลลา","Latin capital letter l with middle dot":"ตัวอักษรลาตินแอลตัวพิมพ์ใหญ่มีจุดกลาง","Latin capital letter l with stroke":"ตัวอักษรลาตินแอลตัวพิมพ์ใหญ่มีสโตรก","Latin capital letter n with acute":"ตัวอักษรลาตินเอ็นตัวพิมพ์ใหญ่มีอะคิวต์","Latin capital letter n with caron":"ตัวอักษรลาตินเอ็นตัวพิมพ์ใหญ่มีคารอน","Latin capital letter n with cedilla":"ตัวอักษรลาตินเอ็นตัวพิมพ์ใหญ่มีเซดีลลา","Latin capital letter o with breve":"ตัวอักษรลาตินโอตัวพิมพ์ใหญ่มีเบรฟ","Latin capital letter o with double acute":"ตัวอักษรลาตินโอตัวพิมพ์ใหญ่มีดับเบิลอะคิวต์","Latin capital letter o with macron":"ตัวอักษรลาตินโอตัวพิมพ์ใหญ่มีมาครอน","Latin capital letter r with acute":"ตัวอักษรลาตินอาร์ตัวพิมพ์ใหญ่มีอะคิวต์","Latin capital letter r with caron":"ตัวอักษรลาตินอาร์ตัวพิมพ์ใหญ่มีคารอน","Latin capital letter r with cedilla":"ตัวอักษรลาตินอาร์ตัวพิมพ์ใหญ่มีเซดีลลา","Latin capital letter s with acute":"ตัวอักษรลาตินเอสตัวพิมพ์ใหญ่มีอะคิวต์","Latin capital letter s with caron":"ตัวอักษรลาตินเอสตัวพิมพ์ใหญ่มีคารอน","Latin capital letter s with cedilla":"ตัวอักษรลาตินเอสตัวพิมพ์ใหญ่มีเซดีลลา","Latin capital letter s with circumflex":"ตัวอักษรลาตินเอสตัวพิมพ์ใหญ่มีเซอร์คัมเฟล็กซ์","Latin capital letter t with caron":"ตัวอักษรลาตินทีตัวพิมพ์ใหญ่มีคารอน","Latin capital letter t with cedilla":"ตัวอักษรลาตินทีตัวพิมพ์ใหญ่มีเซดีลลา","Latin capital letter t with stroke":"ตัวอักษรลาตินทีตัวพิมพ์ใหญ่มีสโตรก","Latin capital letter u with breve":"ตัวอักษรลาตินยูตัวพิมพ์ใหญ่มีเบรฟ","Latin capital letter u with double acute":"ตัวอักษรลาตินยูตัวพิมพ์ใหญ่มีดับเบิลอะคิวต์","Latin capital letter u with macron":"ตัวอักษรลาตินยูตัวพิมพ์ใหญ่มีมาครอน","Latin capital letter u with ogonek":"ตัวอักษรลาตินยูตัวพิมพ์ใหญ่มีโอโกเนก","Latin capital letter u with ring above":"ตัวอักษรลาตินยูตัวพิมพ์ใหญ่มีแหวนข้างบน","Latin capital letter u with tilde":"ตัวอักษรลาตินยูตัวพิมพ์ใหญ่มีทิลด์","Latin capital letter w with circumflex":"ตัวอักษรลาตินดับเบิลยูตัวพิมพ์ใหญ่มีเซอร์คัมเฟล็กซ์","Latin capital letter y with circumflex":"ตัวอักษรลาตินวายตัวพิมพ์ใหญ่มีเซอร์คัมเฟล็กซ์","Latin capital letter y with diaeresis":"ตัวอักษรลาตินวายตัวพิมพ์ใหญ่มีไดอาเรซิส","Latin capital letter z with acute":"ตัวอักษรลาตินแซดตัวพิมพ์ใหญ่มีอะคิวต์","Latin capital letter z with caron":"ตัวอักษรลาตินแซดตัวพิมพ์ใหญ่มีคารอน","Latin capital letter z with dot above":"ตัวอักษรลาตินแซดตัวพิมพ์ใหญ่มีจุดข้างบน","Latin capital ligature ij":"ตัวอักษรลาตินแฝดไอเจตัวพิมพ์ใหญ่","Latin capital ligature oe":"ตัวอักษรลาตินแฝดโออีตัวพิมพ์ใหญ่","Latin small letter a with breve":"ตัวอักษรลาตินเอตัวพิมพ์เล็กมีเบรฟ","Latin small letter a with macron":"ตัวอักษรลาตินเอตัวพิมพ์เล็กมีมาครอน","Latin small letter a with ogonek":"ตัวอักษรลาตินเอตัวพิมพ์เล็กมีโอโกเนก","Latin small letter c with acute":"ตัวอักษรลาตินซีตัวพิมพ์เล็กมีอะคิวต์","Latin small letter c with caron":"ตัวอักษรลาตินซีตัวพิมพ์เล็กมีคารอน","Latin small letter c with circumflex":"ตัวอักษรลาตินซีตัวพิมพ์เล็กมีเซอร์คัมเฟล็กซ์","Latin small letter c with dot above":"ตัวอักษรลาตินซีตัวพิมพ์เล็กมีจุดข้างบน","Latin small letter d with caron":"ตัวอักษรลาตินดีตัวพิมพ์เล็กมีคารอน","Latin small letter d with stroke":"ตัวอักษรลาตินดีตัวพิมพ์เล็กมีสโตรก","Latin small letter dotless i":"ตัวอักษรลาตินไอไม่มีจุดตัวพิมพ์เล็ก","Latin small letter e with breve":"ตัวอักษรลาตินอีตัวพิมพ์เล็กมีเบรฟ","Latin small letter e with caron":"ตัวอักษรลาตินอีตัวเล็กใหญ่มีคารอน","Latin small letter e with dot above":"ตัวอักษรลาตินอีตัวพิมพ์เล็กมีจุดข้างบน","Latin small letter e with macron":"ตัวอักษรลาตินอีตัวพิมพ์เล็กมีมาครอน","Latin small letter e with ogonek":"ตัวอักษรลาตินอีตัวพิมพ์ใหญ่มีโอโกเนก","Latin small letter eng":"ตัวอักษรลาตินอังตัวพิมพ์เล็ก","Latin small letter f with hook":"ตัวอักษรลาตินเอฟเล็กมีตะขอ","Latin small letter g with breve":"ตัวอักษรลาตินจีตัวพิมพ์เล็กมีเบรฟ","Latin small letter g with cedilla":"ตัวอักษรลาตินจีตัวพิมพ์เล็กมีเซดีลลา","Latin small letter g with circumflex":"ตัวอักษรลาตินจีตัวพิมพ์เล็กมีเซอร์คัมเฟล็กซ์","Latin small letter g with dot above":"ตัวอักษรลาตินจีตัวพิมพ์เล็กมีจุดข้างบน","Latin small letter h with circumflex":"ตัวอักษรลาตินเอชตัวพิมพ์เล็กมีเซอร์คัมเฟล็กซ์","Latin small letter h with stroke":"ตัวอักษรลาตินเอชตัวพิมพ์เล็กมีสโตรก","Latin small letter i with breve":"ตัวอักษรลาตินไอตัวพิมพ์เล็กมีเบรฟ","Latin small letter i with macron":"ตัวอักษรลาตินไอตัวพิมพ์เล็กมีมาครอน","Latin small letter i with ogonek":"ตัวอักษรลาตินไอตัวพิมพ์เล็กมีโอโกเนก","Latin small letter i with tilde":"ตัวอักษรลาตินไอตัวพิมพ์เล็กมีทิลด์","Latin small letter j with circumflex":"ตัวอักษรลาตินเจตัวพิมพ์เล็กมีเซอร์คัมเฟล็กซ์","Latin small letter k with cedilla":"ตัวอักษรลาตินเคตัวพิมพ์เล็กมีเซดีลลา","Latin small letter kra":"ตัวอักษรลาตินคราตัวพิมพ์เล็ก","Latin small letter l with acute":"ตัวอักษรลาตินแอลตัวพิมพ์เล็กมีอะคิวต์","Latin small letter l with caron":"ตัวอักษรลาตินแอลตัวพิมพ์เล็กมีคารอน","Latin small letter l with cedilla":"ตัวอักษรลาตินแอลตัวพิมพ์เล็กมีเซดีลลา","Latin small letter l with middle dot":"ตัวอักษรลาตินแอลตัวพิมพ์เล็กมีจุดกลาง","Latin small letter l with stroke":"ตัวอักษรลาตินแอลตัวพิมพ์เล็กมีสโตรก","Latin small letter long s":"ตัวอักษรลาตินเล็กเอสยาว","Latin small letter n preceded by apostrophe":"ตัวอักษรลาตินเอ็นตัวพิมพ์เล็กนำหน้าด้วยอะพอสทรอฟี","Latin small letter n with acute":"ตัวอักษรลาตินเอ็นตัวพิมพ์เล็กมีอะคิวต์","Latin small letter n with caron":"ตัวอักษรลาตินเอ็นตัวพิมพ์เล็กมีคารอน","Latin small letter n with cedilla":"ตัวอักษรลาตินเอ็นตัวพิมพ์เล็กมีเซดีลลา","Latin small letter o with breve":"ตัวอักษรลาตินโอตัวพิมพ์เล็กมีเบรฟ","Latin small letter o with double acute":"ตัวอักษรลาตินโอตัวพิมพ์เล็กมีดับเบิลอะคิวต์","Latin small letter o with macron":"ตัวอักษรลาตินโอตัวพิมพ์เล็กมีมาครอน","Latin small letter r with acute":"ตัวอักษรลาตินอาร์ตัวพิมพ์เล็กมีอะคิวต์","Latin small letter r with caron":"ตัวอักษรลาตินอาร์ตัวพิมพ์เล็กมีคารอน","Latin small letter r with cedilla":"ตัวอักษรลาตินอาร์ตัวพิมพ์เล็กมีเซดีลลา","Latin small letter s with acute":"ตัวอักษรลาตินเอสตัวพิมพ์เล็กมีอะคิวต์","Latin small letter s with caron":"ตัวอักษรลาตินเอสตัวพิมพ์เล็กมีคารอน","Latin small letter s with cedilla":"ตัวอักษรลาตินเอสตัวพิมพ์เล็กมีเซดีลลา","Latin small letter s with circumflex":"ตัวอักษรลาตินเอสตัวพิมพ์เล็กมีเซอร์คัมเฟล็กซ์","Latin small letter t with caron":"ตัวอักษรลาตินทีตัวพิมพ์เล็กมีคารอน","Latin small letter t with cedilla":"ตัวอักษรลาตินทีตัวพิมพ์เล็กมีเซดีลลา","Latin small letter t with stroke":"ตัวอักษรลาตินทีตัวพิมพ์เล็กมีสโตรก","Latin small letter u with breve":"ตัวอักษรลาตินยูตัวพิมพ์เล็กมีเบรฟ","Latin small letter u with double acute":"ตัวอักษรลาตินยูตัวพิมพ์เล็กมีดับเบิลอะคิวต์","Latin small letter u with macron":"ตัวอักษรลาตินยูตัวพิมพ์เล็กมีมาครอน","Latin small letter u with ogonek":"ตัวอักษรลาตินยูตัวพิมพ์เล็กมีโอโกเนก","Latin small letter u with ring above":"ตัวอักษรลาตินยูตัวพิมพ์เล็กมีแหวนข้างบน","Latin small letter u with tilde":"ตัวอักษรลาตินยูตัวพิมพ์เล็กมีทิลด์","Latin small letter w with circumflex":"ตัวอักษรลาตินดับเบิลยูตัวพิมพ์เล็กมีเซอร์คัมเฟล็กซ์","Latin small letter y with circumflex":"ตัวอักษรลาตินวายตัวพิมพ์เล็กมีเซอร์คัมเฟล็กซ์","Latin small letter z with acute":"ตัวอักษรลาตินแซดตัวพิมพ์เล็กมีอะคิวต์","Latin small letter z with caron":"ตัวอักษรลาตินแซดตัวพิมพ์เล็กมีคารอน","Latin small letter z with dot above":"ตัวอักษรลาตินแซดตัวพิมพ์เล็กมีจุดข้างบน","Latin small ligature ij":"ตัวอักษรลาตินแฝดไอเจตัวพิมพ์เล็ก","Latin small ligature oe":"ตัวอักษรลาตินแฝดโออีตัวพิมพ์เล็ก","Left double quotation mark":"อัญประกาศคู่ด้านซ้าย","Left single quotation mark":"อัญประกาศเดี่ยวด้านซ้าย","Left-pointing double angle quotation mark":"อัญประกาศคู่เอียงซ้าย","leftwards arrow to bar":"ลูกศรชี้ซ้ายชนขีด","leftwards dashed arrow":"ลูกศรซ้ายเส้นประ","leftwards double arrow":"ลูกศรซ้ายคู่","leftwards simple arrow":"ลูกศรซ้ายธรรมดา","Less-than or equal to":"น้อยกว่าหรือเท่ากับ","Less-than sign":"สัญลักษณ์น้อยกว่า","Lira sign":"สัญลักษณ์ลีรา","Livre tournois sign":"สัญลักษณ์ลิฟร์ ทัวร์นัวส์","Logical and":"ตรรกะและ","Logical or":"ตรรกะหรือ",Macron:"มาครอน","Manat sign":"สัญลักษณ์มานัต","Mill sign":"สัญลักษณ์มิลล์","Minus sign":"สัญลักษณ์ลบ","Multiplication sign":"สัญลักษณ์คูณ","N-ary product":"ผลคูณเอ็นเรย์","N-ary summation":"ผลรวมเอ็นเรย์",Nabla:"นาบลา","Naira sign":"สัญลักษณ์ไนรา","New sheqel sign":"สัญลักษณ์นิวเชเกล","Nordic mark sign":"สัญลักษณ์มาร์กนอร์ดิก","Not an element of":"ไม่ใช่องค์ประกอบของ","Not equal to":"ไม่เท่ากับ","Not sign":"สัญลักษณ์ไม่ใช่","on with exclamation mark with left right arrow above":"เปิดมีอัศเจรีย์มีลูกศรซ้ายขวาข้างบน",Overline:"ขีดบน","Paragraph sign":"สัญลักษณ์ย่อหน้า","Partial differential":"อนุพันธ์ย่อย","Per mille sign":"สัญลักษณ์ต่อพัน","Per ten thousand sign":"สัญลักษณ์ต่อหมื่น","Peseta sign":"สัญลักษณ์ปีเซตา","Peso sign":"สัญลักษณ์เปโซ","Plus-minus sign":"สัญลักษณ์บวกลบ","Pound sign":"สัญลักษณ์ปอนด์","Proportional to":"สัดส่วนกับ","Question exclamation mark":"เครื่องหมายปรัศนีอัศเจรีย์","Registered sign":"สัญลักษณ์จดทะเบียน","Reversed paragraph sign":"สัญลักษณ์ย่อหน้ากลับหัว","Right double quotation mark":"อัญประกาศคู่ด้านขวา","Right single quotation mark":"อัญประกาศเดี่ยวด้านขวา","Right-pointing double angle quotation mark":"อัญประกาศคู่เอียงขวา","rightwards arrow to bar":"ลูกศรชี้ขวาชนขีด","rightwards dashed arrow":"ลูกศรขวาเส้นประ","rightwards double arrow":"ลูกศรขวาคู่","rightwards simple arrow":"ลูกศรขวาธรรมดา","Ruble sign":"สัญลักษณ์รูเบิล","Rupee sign":"สัญลักษณ์รูปี","Section sign":"สัญลักษณ์มาตรา","Single left-pointing angle quotation mark":"อัญประกาศเดี่ยวเอียงซ้าย","Single low-9 quotation mark":"อัญประกาศเดี่ยวมีหัวด้านล่าง","Single right-pointing angle quotation mark":"อัญประกาศเดี่ยวเอียงขวา","soon with rightwards arrow above":"เร็ว ๆ นี้มีลูกศรขวาข้างบน","Special characters":"อักขระพิเศษ","Spesmilo sign":"สัญลักษณ์สเปสมิโล","Square root":"รากที่สอง","Tenge sign":"สัญลักษณ์เทงเจ","There exists":"มีอยู่","Tilde operator":"ตัวปฏิบัติการทิลด์","top with upwards arrow above":"บนสุดมีลูกศรขึ้นข้างบน","Trade mark sign":"สัญลักษณ์เครื่องหมายการค้า","Tugrik sign":"สัญลักษณ์ทูกรีก","Turkish lira sign":"สัญลักษณ์ลีราตุรกี","Two dot leader":"สองจุดนำ",Union:"ยูเนียน","up down arrow with base":"ลูกศรขึ้นลงมีฐาน","upwards arrow to bar":"ลูกศรชี้ขึ้นชนขีด","upwards dashed arrow":"ลูกศรขึ้นเส้นประ","upwards double arrow":"ลูกศรขึ้นคู่","upwards simple arrow":"ลูกศรขึ้นธรรมดา","Vulgar fraction one half":"เศษหนึ่งส่วนสอง","Vulgar fraction one quarter":"เศษหนึ่งส่วนสี่","Vulgar fraction three quarters":"เศษหนึ่งส่วนสาม","Won sign":"สัญลักษณ์วอน","Yen sign":"สัญลักษณ์เยน"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/special-characters/translations/tk.js b/core/assets/vendor/ckeditor5/special-characters/translations/tk.js
index ecd7e8a5a0..0e086556e2 100644
--- a/core/assets/vendor/ckeditor5/special-characters/translations/tk.js
+++ b/core/assets/vendor/ckeditor5/special-characters/translations/tk.js
@@ -1 +1 @@
-!function(t){const a=t.tk=t.tk||{};a.dictionary=Object.assign(a.dictionary||{},{"Almost equal to":"",Angle:"","Approximately equal to":"","Asterisk operator":"","Austral sign":"","back with leftwards arrow above":"","Bitcoin sign":"","Cedi sign":"","Cent sign":"","Character categories":"","Colon sign":"Iki nokat nyşany","Contains as member":"","Copyright sign":"","Cruzeiro sign":"","Currency sign":"","Degree sign":"","Division sign":"","Dollar sign":"","Dong sign":"","Double dagger":"","Double exclamation mark":"","Double low-9 quotation mark":"","Double question mark":"","downwards arrow to bar":"","downwards dashed arrow":"","downwards double arrow":"","Drachma sign":"","Element of":"","Em dash":"","Empty set":"","En dash":"","end with leftwards arrow above":"","Euro sign":"","Euro-currency sign":"","Exclamation question mark":"","For all":"","Fraction slash":"","French franc sign":"","German penny sign":"","Greater-than or equal to":"","Greater-than sign":"","Guarani sign":"","Horizontal ellipsis":"","Hryvnia sign":"","Identical to":"","Indian rupee sign":"",Infinity:"",Integral:"",Intersection:"","Inverted exclamation mark":"","Inverted question mark":"","Kip sign":"","Latin capital letter a with breve":"","Latin capital letter a with macron":"","Latin capital letter a with ogonek":"","Latin capital letter c with acute":"","Latin capital letter c with caron":"","Latin capital letter c with circumflex":"","Latin capital letter c with dot above":"","Latin capital letter d with caron":"","Latin capital letter d with stroke":"","Latin capital letter e with breve":"","Latin capital letter e with caron":"","Latin capital letter e with dot above":"","Latin capital letter e with macron":"","Latin capital letter e with ogonek":"","Latin capital letter eng":"","Latin capital letter g with breve":"","Latin capital letter g with cedilla":"","Latin capital letter g with circumflex":"","Latin capital letter g with dot above":"","Latin capital letter h with circumflex":"","Latin capital letter h with stroke":"","Latin capital letter i with breve":"","Latin capital letter i with dot above":"","Latin capital letter i with macron":"","Latin capital letter i with ogonek":"","Latin capital letter i with tilde":"","Latin capital letter j with circumflex":"","Latin capital letter k with cedilla":"","Latin capital letter l with acute":"","Latin capital letter l with caron":"","Latin capital letter l with cedilla":"","Latin capital letter l with middle dot":"","Latin capital letter l with stroke":"","Latin capital letter n with acute":"","Latin capital letter n with caron":"","Latin capital letter n with cedilla":"","Latin capital letter o with breve":"","Latin capital letter o with double acute":"","Latin capital letter o with macron":"","Latin capital letter r with acute":"","Latin capital letter r with caron":"","Latin capital letter r with cedilla":"","Latin capital letter s with acute":"","Latin capital letter s with caron":"","Latin capital letter s with cedilla":"","Latin capital letter s with circumflex":"","Latin capital letter t with caron":"","Latin capital letter t with cedilla":"","Latin capital letter t with stroke":"","Latin capital letter u with breve":"","Latin capital letter u with double acute":"","Latin capital letter u with macron":"","Latin capital letter u with ogonek":"","Latin capital letter u with ring above":"","Latin capital letter u with tilde":"","Latin capital letter w with circumflex":"","Latin capital letter y with circumflex":"","Latin capital letter y with diaeresis":"","Latin capital letter z with acute":"","Latin capital letter z with caron":"","Latin capital letter z with dot above":"","Latin capital ligature ij":"","Latin capital ligature oe":"","Latin small letter a with breve":"","Latin small letter a with macron":"","Latin small letter a with ogonek":"","Latin small letter c with acute":"","Latin small letter c with caron":"","Latin small letter c with circumflex":"","Latin small letter c with dot above":"","Latin small letter d with caron":"","Latin small letter d with stroke":"","Latin small letter dotless i":"","Latin small letter e with breve":"","Latin small letter e with caron":"","Latin small letter e with dot above":"","Latin small letter e with macron":"","Latin small letter e with ogonek":"","Latin small letter eng":"","Latin small letter f with hook":"","Latin small letter g with breve":"","Latin small letter g with cedilla":"","Latin small letter g with circumflex":"","Latin small letter g with dot above":"","Latin small letter h with circumflex":"","Latin small letter h with stroke":"","Latin small letter i with breve":"","Latin small letter i with macron":"","Latin small letter i with ogonek":"","Latin small letter i with tilde":"","Latin small letter j with circumflex":"","Latin small letter k with cedilla":"","Latin small letter kra":"","Latin small letter l with acute":"","Latin small letter l with caron":"","Latin small letter l with cedilla":"","Latin small letter l with middle dot":"","Latin small letter l with stroke":"","Latin small letter long s":"","Latin small letter n preceded by apostrophe":"","Latin small letter n with acute":"","Latin small letter n with caron":"","Latin small letter n with cedilla":"","Latin small letter o with breve":"","Latin small letter o with double acute":"","Latin small letter o with macron":"","Latin small letter r with acute":"","Latin small letter r with caron":"","Latin small letter r with cedilla":"","Latin small letter s with acute":"","Latin small letter s with caron":"","Latin small letter s with cedilla":"","Latin small letter s with circumflex":"","Latin small letter t with caron":"","Latin small letter t with cedilla":"","Latin small letter t with stroke":"","Latin small letter u with breve":"","Latin small letter u with double acute":"","Latin small letter u with macron":"","Latin small letter u with ogonek":"","Latin small letter u with ring above":"","Latin small letter u with tilde":"","Latin small letter w with circumflex":"","Latin small letter y with circumflex":"","Latin small letter z with acute":"","Latin small letter z with caron":"","Latin small letter z with dot above":"","Latin small ligature ij":"","Latin small ligature oe":"","Left double quotation mark":"","Left single quotation mark":"","Left-pointing double angle quotation mark":"","leftwards arrow to bar":"","leftwards dashed arrow":"","leftwards double arrow":"çepe tarap goşa ok","Less-than or equal to":"","Less-than sign":"","Lira sign":"","Livre tournois sign":"","Logical and":"","Logical or":"",Macron:"","Manat sign":"","Mill sign":"","Minus sign":"","Multiplication sign":"","N-ary product":"","N-ary summation":"",Nabla:"","Naira sign":"","New sheqel sign":"","Nordic mark sign":"","Not an element of":"","Not equal to":"","Not sign":"","on with exclamation mark with left right arrow above":"",Overline:"","Paragraph sign":"","Partial differential":"","Per mille sign":"","Per ten thousand sign":"","Peseta sign":"","Peso sign":"","Plus-minus sign":"","Pound sign":"","Proportional to":"","Question exclamation mark":"","Registered sign":"","Reversed paragraph sign":"","Right double quotation mark":"","Right single quotation mark":"","Right-pointing double angle quotation mark":"","rightwards arrow to bar":"","rightwards dashed arrow":"","rightwards double arrow":"","Ruble sign":"","Rupee sign":"","Section sign":"","Single left-pointing angle quotation mark":"","Single low-9 quotation mark":"","Single right-pointing angle quotation mark":"","soon with rightwards arrow above":"","Special characters":"Ýörite nyşanlar","Spesmilo sign":"","Square root":"","Tenge sign":"","There exists":"","Tilde operator":"","top with upwards arrow above":"","Trade mark sign":"","Tugrik sign":"","Turkish lira sign":"","Two dot leader":"",Union:"","up down arrow with base":"","upwards arrow to bar":"","upwards dashed arrow":"","upwards double arrow":"","Vulgar fraction one half":"","Vulgar fraction one quarter":"","Vulgar fraction three quarters":"","Won sign":"","Yen sign":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(t){const a=t.tk=t.tk||{};a.dictionary=Object.assign(a.dictionary||{},{"Almost equal to":"",Angle:"","Approximately equal to":"","Asterisk operator":"","Austral sign":"","back with leftwards arrow above":"","Bitcoin sign":"","Cedi sign":"","Cent sign":"","Character categories":"","Colon sign":"Iki nokat nyşany","Contains as member":"","Copyright sign":"","Cruzeiro sign":"","Currency sign":"","Degree sign":"","Division sign":"","Dollar sign":"","Dong sign":"","Double dagger":"","Double exclamation mark":"","Double low-9 quotation mark":"","Double question mark":"","downwards arrow to bar":"","downwards dashed arrow":"","downwards double arrow":"","downwards simple arrow":"","Drachma sign":"","Element of":"","Em dash":"","Empty set":"","En dash":"","end with leftwards arrow above":"","Euro sign":"","Euro-currency sign":"","Exclamation question mark":"","For all":"","Fraction slash":"","French franc sign":"","German penny sign":"","Greater-than or equal to":"","Greater-than sign":"","Guarani sign":"","Horizontal ellipsis":"","Hryvnia sign":"","Identical to":"","Indian rupee sign":"",Infinity:"",Integral:"",Intersection:"","Inverted exclamation mark":"","Inverted question mark":"","Kip sign":"","Latin capital letter a with breve":"","Latin capital letter a with macron":"","Latin capital letter a with ogonek":"","Latin capital letter c with acute":"","Latin capital letter c with caron":"","Latin capital letter c with circumflex":"","Latin capital letter c with dot above":"","Latin capital letter d with caron":"","Latin capital letter d with stroke":"","Latin capital letter e with breve":"","Latin capital letter e with caron":"","Latin capital letter e with dot above":"","Latin capital letter e with macron":"","Latin capital letter e with ogonek":"","Latin capital letter eng":"","Latin capital letter g with breve":"","Latin capital letter g with cedilla":"","Latin capital letter g with circumflex":"","Latin capital letter g with dot above":"","Latin capital letter h with circumflex":"","Latin capital letter h with stroke":"","Latin capital letter i with breve":"","Latin capital letter i with dot above":"","Latin capital letter i with macron":"","Latin capital letter i with ogonek":"","Latin capital letter i with tilde":"","Latin capital letter j with circumflex":"","Latin capital letter k with cedilla":"","Latin capital letter l with acute":"","Latin capital letter l with caron":"","Latin capital letter l with cedilla":"","Latin capital letter l with middle dot":"","Latin capital letter l with stroke":"","Latin capital letter n with acute":"","Latin capital letter n with caron":"","Latin capital letter n with cedilla":"","Latin capital letter o with breve":"","Latin capital letter o with double acute":"","Latin capital letter o with macron":"","Latin capital letter r with acute":"","Latin capital letter r with caron":"","Latin capital letter r with cedilla":"","Latin capital letter s with acute":"","Latin capital letter s with caron":"","Latin capital letter s with cedilla":"","Latin capital letter s with circumflex":"","Latin capital letter t with caron":"","Latin capital letter t with cedilla":"","Latin capital letter t with stroke":"","Latin capital letter u with breve":"","Latin capital letter u with double acute":"","Latin capital letter u with macron":"","Latin capital letter u with ogonek":"","Latin capital letter u with ring above":"","Latin capital letter u with tilde":"","Latin capital letter w with circumflex":"","Latin capital letter y with circumflex":"","Latin capital letter y with diaeresis":"","Latin capital letter z with acute":"","Latin capital letter z with caron":"","Latin capital letter z with dot above":"","Latin capital ligature ij":"","Latin capital ligature oe":"","Latin small letter a with breve":"","Latin small letter a with macron":"","Latin small letter a with ogonek":"","Latin small letter c with acute":"","Latin small letter c with caron":"","Latin small letter c with circumflex":"","Latin small letter c with dot above":"","Latin small letter d with caron":"","Latin small letter d with stroke":"","Latin small letter dotless i":"","Latin small letter e with breve":"","Latin small letter e with caron":"","Latin small letter e with dot above":"","Latin small letter e with macron":"","Latin small letter e with ogonek":"","Latin small letter eng":"","Latin small letter f with hook":"","Latin small letter g with breve":"","Latin small letter g with cedilla":"","Latin small letter g with circumflex":"","Latin small letter g with dot above":"","Latin small letter h with circumflex":"","Latin small letter h with stroke":"","Latin small letter i with breve":"","Latin small letter i with macron":"","Latin small letter i with ogonek":"","Latin small letter i with tilde":"","Latin small letter j with circumflex":"","Latin small letter k with cedilla":"","Latin small letter kra":"","Latin small letter l with acute":"","Latin small letter l with caron":"","Latin small letter l with cedilla":"","Latin small letter l with middle dot":"","Latin small letter l with stroke":"","Latin small letter long s":"","Latin small letter n preceded by apostrophe":"","Latin small letter n with acute":"","Latin small letter n with caron":"","Latin small letter n with cedilla":"","Latin small letter o with breve":"","Latin small letter o with double acute":"","Latin small letter o with macron":"","Latin small letter r with acute":"","Latin small letter r with caron":"","Latin small letter r with cedilla":"","Latin small letter s with acute":"","Latin small letter s with caron":"","Latin small letter s with cedilla":"","Latin small letter s with circumflex":"","Latin small letter t with caron":"","Latin small letter t with cedilla":"","Latin small letter t with stroke":"","Latin small letter u with breve":"","Latin small letter u with double acute":"","Latin small letter u with macron":"","Latin small letter u with ogonek":"","Latin small letter u with ring above":"","Latin small letter u with tilde":"","Latin small letter w with circumflex":"","Latin small letter y with circumflex":"","Latin small letter z with acute":"","Latin small letter z with caron":"","Latin small letter z with dot above":"","Latin small ligature ij":"","Latin small ligature oe":"","Left double quotation mark":"","Left single quotation mark":"","Left-pointing double angle quotation mark":"","leftwards arrow to bar":"","leftwards dashed arrow":"","leftwards double arrow":"çepe tarap goşa ok","leftwards simple arrow":"","Less-than or equal to":"","Less-than sign":"","Lira sign":"","Livre tournois sign":"","Logical and":"","Logical or":"",Macron:"","Manat sign":"","Mill sign":"","Minus sign":"","Multiplication sign":"","N-ary product":"","N-ary summation":"",Nabla:"","Naira sign":"","New sheqel sign":"","Nordic mark sign":"","Not an element of":"","Not equal to":"","Not sign":"","on with exclamation mark with left right arrow above":"",Overline:"","Paragraph sign":"","Partial differential":"","Per mille sign":"","Per ten thousand sign":"","Peseta sign":"","Peso sign":"","Plus-minus sign":"","Pound sign":"","Proportional to":"","Question exclamation mark":"","Registered sign":"","Reversed paragraph sign":"","Right double quotation mark":"","Right single quotation mark":"","Right-pointing double angle quotation mark":"","rightwards arrow to bar":"","rightwards dashed arrow":"","rightwards double arrow":"","rightwards simple arrow":"","Ruble sign":"","Rupee sign":"","Section sign":"","Single left-pointing angle quotation mark":"","Single low-9 quotation mark":"","Single right-pointing angle quotation mark":"","soon with rightwards arrow above":"","Special characters":"Ýörite nyşanlar","Spesmilo sign":"","Square root":"","Tenge sign":"","There exists":"","Tilde operator":"","top with upwards arrow above":"","Trade mark sign":"","Tugrik sign":"","Turkish lira sign":"","Two dot leader":"",Union:"","up down arrow with base":"","upwards arrow to bar":"","upwards dashed arrow":"","upwards double arrow":"","upwards simple arrow":"","Vulgar fraction one half":"","Vulgar fraction one quarter":"","Vulgar fraction three quarters":"","Won sign":"","Yen sign":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/special-characters/translations/tr.js b/core/assets/vendor/ckeditor5/special-characters/translations/tr.js
index f249119fe8..d79ff163bf 100644
--- a/core/assets/vendor/ckeditor5/special-characters/translations/tr.js
+++ b/core/assets/vendor/ckeditor5/special-characters/translations/tr.js
@@ -1 +1 @@
-!function(a){const t=a.tr=a.tr||{};t.dictionary=Object.assign(t.dictionary||{},{"Almost equal to":"Neredeyse eşit",Angle:"Açı","Approximately equal to":"Yaklaşık olarak eşit","Asterisk operator":"Yıldız operatörü","Austral sign":"Austral işareti","back with leftwards arrow above":"geri sol ok yukarıda","Bitcoin sign":"Bitcoin işareti","Cedi sign":"Cedi işareti","Cent sign":"Kuruş işareti","Character categories":"Karakter kategorileri","Colon sign":"İki nokta üst üste işareti","Contains as member":"Üye olarak içerir","Copyright sign":"Telif hakkı işareti","Cruzeiro sign":"Cruzeiro işareti","Currency sign":"Para birimi işareti","Degree sign":"Derece işareti","Division sign":"Bölme işareti","Dollar sign":"Dolar işareti","Dong sign":"Dong işareti","Double dagger":"Çift hançer","Double exclamation mark":"Çift ünlem işareti","Double low-9 quotation mark":"Çift düşük 9 tırnak işareti","Double question mark":"Çift soru işareti","downwards arrow to bar":"aşağı ok çubuğu","downwards dashed arrow":"aşağı doğru kesik ok","downwards double arrow":"aşağı çift ok","Drachma sign":"Drahmisi işareti","Element of":"Öğesi","Em dash":"Uzun çizgi","Empty set":"Boş küme","En dash":"Çizgi","end with leftwards arrow above":"sona sol ok yukarıda","Euro sign":"Avro işareti","Euro-currency sign":"Avro para birimi simgesi","Exclamation question mark":"Ünlem soru işareti","For all":"Hepsi için","Fraction slash":"Kesir eğik çizgi","French franc sign":"Fransız Frangı işareti","German penny sign":"Alman kuruş işareti","Greater-than or equal to":"Büyük veya eşit","Greater-than sign":"Büyüktür işareti","Guarani sign":"Guarani işareti","Horizontal ellipsis":"Yatay elips","Hryvnia sign":"Grivnası işareti","Identical to":"Benzeri","Indian rupee sign":"Hint Rupisi işareti",Infinity:"Sonsuzluk",Integral:"İntegral",Intersection:"Kesişim","Inverted exclamation mark":"Ters ünlem işareti","Inverted question mark":"Ters soru işareti","Kip sign":"Kip işareti","Latin capital letter a with breve":"Üstü yuvarlak büyük a harfi","Latin capital letter a with macron":"Üstü çizili büyük a harfi","Latin capital letter a with ogonek":"Altı kuyruklu işaretli büyük a harfi","Latin capital letter c with acute":"Üzeri tırnaklı büyük c harfi","Latin capital letter c with caron":"Üstü ters şapkalı büyük c harfi","Latin capital letter c with circumflex":"Üzeri şapkalı büyük c harfi","Latin capital letter c with dot above":"Üstü noktalı büyük c harfi","Latin capital letter d with caron":"Üstü ters şapkalı büyük d harfi","Latin capital letter d with stroke":"Ortası çizgili büyük d harfi","Latin capital letter e with breve":"Üstü ters şapkalı büyük e harfi","Latin capital letter e with caron":"Üstü ters şapkalı büyük e harfi","Latin capital letter e with dot above":"Üstü noktalı büyük e harfi","Latin capital letter e with macron":"Üstü çizili büyük e harfi","Latin capital letter e with ogonek":"Altı kuyruklu büyük e harfi","Latin capital letter eng":"Alttan kuyruklu büyük n harfi","Latin capital letter g with breve":"Üstü ters şapkalı büyük g harfi","Latin capital letter g with cedilla":"Altı kuyruklu büyük g harfi","Latin capital letter g with circumflex":"Üzeri şapkalı büyük g harfi","Latin capital letter g with dot above":"Üstü noktalı büyük g harfi","Latin capital letter h with circumflex":"Üzeri şapkalı büyük h harfi","Latin capital letter h with stroke":"Üst kısmı çizgili büyük h harfi","Latin capital letter i with breve":"Üstü ters şapkalı büyük i harfi","Latin capital letter i with dot above":"Üstü noktalı büyük i harfi","Latin capital letter i with macron":"Üstü çizili büyük i harfi","Latin capital letter i with ogonek":"Altı kuyruklu büyük i harfi","Latin capital letter i with tilde":"Üstü tilda işaretli büyük i harfi","Latin capital letter j with circumflex":"Üzeri şapkalı büyük j harfi","Latin capital letter k with cedilla":"Altı kuyruklu büyük k harfi","Latin capital letter l with acute":"Üzeri tırnaklı büyük L harfi","Latin capital letter l with caron":"Üstü ters şapkalı büyük L harfi","Latin capital letter l with cedilla":"Altı kuyruklu büyük L harfi","Latin capital letter l with middle dot":"Ortası noktalı büyük L harfi","Latin capital letter l with stroke":"Üst kısmı çizgili büyük L harfi","Latin capital letter n with acute":"Üzeri tırnaklı büyük n harfi","Latin capital letter n with caron":"Üstü ters şapkalı büyük n harfi","Latin capital letter n with cedilla":"Altı kuyruklu büyük n harfi","Latin capital letter o with breve":"Üstü ters şapkalı büyük o harfi","Latin capital letter o with double acute":"Üstü çift tırnaklı büyük o harfi","Latin capital letter o with macron":"Üstü çizili büyük o harfi","Latin capital letter r with acute":"Üzeri tırnaklı büyük r harfi","Latin capital letter r with caron":"Üstü ters şapkalı büyük r harfi","Latin capital letter r with cedilla":"Altı kuyruklu büyük r harfi","Latin capital letter s with acute":"Üzeri tırnaklı büyük s harfi","Latin capital letter s with caron":"Üstü ters şapkalı büyük s harfi","Latin capital letter s with cedilla":"Altı kuyruklu büyük s harfi","Latin capital letter s with circumflex":"Üzeri şapkalı büyük s harfi","Latin capital letter t with caron":"Üstü ters şapkalı büyük t harfi","Latin capital letter t with cedilla":"Altı kuyruklu büyük t harfi","Latin capital letter t with stroke":"Üst kısmı çizgili büyük t harfi","Latin capital letter u with breve":"Üstü ters şapkalı büyük u harfi","Latin capital letter u with double acute":"Üstü çift tırnaklı büyük u harfi","Latin capital letter u with macron":"Üstü çizili büyük u harfi","Latin capital letter u with ogonek":"Altı kuyruklu büyük u harfi","Latin capital letter u with ring above":"Üstü derece işaretli büyük u harfi","Latin capital letter u with tilde":"Üstü tildalı büyük u harfi","Latin capital letter w with circumflex":"Üzeri şapkalı büyük w harfi","Latin capital letter y with circumflex":"Üzeri şapkalı büyük y harfi","Latin capital letter y with diaeresis":"Üstü çift noktalı büyük y harfi","Latin capital letter z with acute":"Üzeri tırnaklı büyük z harfi","Latin capital letter z with caron":"Üstü ters şapkalı büyük z harfi","Latin capital letter z with dot above":"Üstü noktalı büyük z harfi","Latin capital ligature ij":"Büyük ij harfi","Latin capital ligature oe":"Büyük yunan OE harfi","Latin small letter a with breve":"Üstü yuvarlak küçük a harfi","Latin small letter a with macron":"Üstü çizili küçük a harfi","Latin small letter a with ogonek":"Altı kuyruklu işaretli küçük a harfi","Latin small letter c with acute":"Üzeri tırnaklı küçük c harfi","Latin small letter c with caron":"Üstü ters şapkalı küçük c harfi","Latin small letter c with circumflex":"Üzeri şapkalı küçük c harfi","Latin small letter c with dot above":"Üstü noktalı küçük c harfi","Latin small letter d with caron":"Üstü ters şapkalı küçük d harfi","Latin small letter d with stroke":"Ortası çizgili küçük d harfi","Latin small letter dotless i":"Noktası küçük i harfi","Latin small letter e with breve":"Üstü ters şapkalı küçük e harfi","Latin small letter e with caron":"Üstü ters şapkalı küçük e harfi","Latin small letter e with dot above":"Üstü noktalı küçük e harfi","Latin small letter e with macron":"Üstü çizili küçük e harfi","Latin small letter e with ogonek":"Altı kuyruklu küçük e harfi","Latin small letter eng":"Alttan kuyruklu küçük n harfi","Latin small letter f with hook":"Latince küçük f harfi","Latin small letter g with breve":"Üstü ters şapkalı küçük g harfi","Latin small letter g with cedilla":"Altı kuyruklu küçük g harfi","Latin small letter g with circumflex":"Üzeri şapkalı küçük g harfi","Latin small letter g with dot above":"Üstü noktalı küçük g harfi","Latin small letter h with circumflex":"Üzeri şapkalı küçük g harfi","Latin small letter h with stroke":"Üst kısmı çizgili küçük h harfi","Latin small letter i with breve":"Üstü ters şapkalı küçük i harfi","Latin small letter i with macron":"Üstü çizili küçük i harfi","Latin small letter i with ogonek":"Altı kuyruklu küçük i harfi","Latin small letter i with tilde":"Üstü tilda işaretli küçük i harfi","Latin small letter j with circumflex":"Üzeri şapkalı küçük j harfi","Latin small letter k with cedilla":"Altı kuyruklu küçük k harfi","Latin small letter kra":"Küçük küt k harfi","Latin small letter l with acute":"Üzeri tırnaklı küçük L harfi","Latin small letter l with caron":"Üstü ters şapkalı küçük L harfi","Latin small letter l with cedilla":"Altı kuyruklu küçük L harfi","Latin small letter l with middle dot":"Ortası noktalı küçük L harfi","Latin small letter l with stroke":"Üst kısmı çizgili küçük L harfi","Latin small letter long s":"Uzun küçük s harfi","Latin small letter n preceded by apostrophe":"Önden apostrof küçük n harfi","Latin small letter n with acute":"Üzeri tırnaklı küçük n harfi","Latin small letter n with caron":"Üstü ters şapkalı küçük n harfi","Latin small letter n with cedilla":"Altı kuyruklu küçük n harfi","Latin small letter o with breve":"Üstü ters şapkalı küçük o harfi","Latin small letter o with double acute":"Üstü çift tırnaklı küçük o harfi","Latin small letter o with macron":"Üstü çizili küçük o harfi","Latin small letter r with acute":"Üzeri tırnaklı küçük r harfi","Latin small letter r with caron":"Üstü ters şapkalı küçük r harfi","Latin small letter r with cedilla":"Altı kuyruklu küçük r harfi","Latin small letter s with acute":"Üzeri tırnaklı küçük s harfi","Latin small letter s with caron":"Üstü ters şapkalı küçük s harfi","Latin small letter s with cedilla":"Altı kuyruklu küçük s harfi","Latin small letter s with circumflex":"Üzeri şapkalı küçük s harfi","Latin small letter t with caron":"Üstü ters şapkalı küçük t harfi","Latin small letter t with cedilla":"Altı kuyruklu küçük t harfi","Latin small letter t with stroke":"Üst kısmı çizgili küçük t harfi","Latin small letter u with breve":"Üstü ters şapkalı küçük u harfi","Latin small letter u with double acute":"Üstü çift tırnaklı küçük u harfi","Latin small letter u with macron":"Üstü çizili küçük u harfi","Latin small letter u with ogonek":"Altı kuyruklu küçük u harfi","Latin small letter u with ring above":"Üstü derece işaretli küçük u harfi","Latin small letter u with tilde":"Üstü tildalı küçük u harfi","Latin small letter w with circumflex":"Üzeri şapkalı küçük w harfi","Latin small letter y with circumflex":"Üzeri şapkalı küçük y harfi","Latin small letter z with acute":"Üzeri tırnaklı küçük z harfi","Latin small letter z with caron":"Üstü ters şapkalı küçük z harfi","Latin small letter z with dot above":"Üstü noktalı küçük z harfi","Latin small ligature ij":"Küçük ij harfi","Latin small ligature oe":"Küçük yunan OE harfi","Left double quotation mark":"Sol çift tırnak işareti","Left single quotation mark":"Sol tek tırnak işareti","Left-pointing double angle quotation mark":"Sola dönük çift açılı tırnak işareti","leftwards arrow to bar":"sola ok çubuğu","leftwards dashed arrow":"sola kesik çizgili ok","leftwards double arrow":"sola çift ok","Less-than or equal to":"Küçük veya eşit","Less-than sign":"Küçüktür işareti","Lira sign":"Lira işareti","Livre tournois sign":"Livre tournois işareti","Logical and":"Mantıksal VE","Logical or":"Mantıksal VEYA",Macron:"Uzatma işareti","Manat sign":"Manat işareti","Mill sign":"Mill işareti","Minus sign":"Eksi işareti","Multiplication sign":"Çarpma işareti","N-ary product":"N-ary ürünü","N-ary summation":"N-ary toplamı",Nabla:"Nabla","Naira sign":"Naira işareti","New sheqel sign":"Yeni şekel işareti","Nordic mark sign":"İskandinav işareti","Not an element of":"Onun öğesi değil","Not equal to":"Eşit değil","Not sign":"İmzalanmamış","on with exclamation mark with left right arrow above":"üzerinde sol sağ ok bulunan ünlem işaretiyle",Overline:"Üstü çizili","Paragraph sign":"Paragraf işareti","Partial differential":"Kısmi diferansiyel","Per mille sign":"Bin işareti için","Per ten thousand sign":"Her on bine göre işareti","Peseta sign":"Peseta işareti","Peso sign":"Peso işareti","Plus-minus sign":"Artı eksi işareti","Pound sign":"Sterlin işareti","Proportional to":"Orantılı","Question exclamation mark":"Soru ünlem işareti","Registered sign":"Kayıtlı işareti","Reversed paragraph sign":"Ters paragraf işareti","Right double quotation mark":"Sağ çift tırnak işareti","Right single quotation mark":"Sağ tek tırnak işareti","Right-pointing double angle quotation mark":"Sağa bakan çift açılı tırnak işareti","rightwards arrow to bar":"sağa ok çubuğu","rightwards dashed arrow":"sağa kesik çizgili ok","rightwards double arrow":"sağa çift ok","Ruble sign":"Ruble işareti","Rupee sign":"Rupi işareti","Section sign":"Bölüm işareti","Single left-pointing angle quotation mark":"Tek sola dönük açı tırnak işareti","Single low-9 quotation mark":"Tek düşük 9 tırnak işareti","Single right-pointing angle quotation mark":"Sağa bakan tek açılı tırnak işareti","soon with rightwards arrow above":"yakında sağ ok ile","Special characters":"Özel karakterler","Spesmilo sign":"Spesmilo işareti","Square root":"Kare kök","Tenge sign":"Tenge işareti","There exists":"Var","Tilde operator":"Tilde operatörü","top with upwards arrow above":"en üst yukarı oku","Trade mark sign":"Ticari marka işareti","Tugrik sign":"Tugrik işareti","Turkish lira sign":"Türk Lirası işareti","Two dot leader":"Öncelikli iki nokta",Union:"Birleşik","up down arrow with base":"taban ile yukarı aşağı ok","upwards arrow to bar":"yukarı ok çubuğu","upwards dashed arrow":"yukarı doğru kesik ok","upwards double arrow":"yukarı çift ok","Vulgar fraction one half":"Kaba kesir bir buçuk","Vulgar fraction one quarter":"Kaba kesir bir çeyrek","Vulgar fraction three quarters":"Kaba bölüm dörtte üç","Won sign":"Kazanılan işaret","Yen sign":"Yen işareti"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(a){const t=a.tr=a.tr||{};t.dictionary=Object.assign(t.dictionary||{},{"Almost equal to":"Neredeyse eşit",Angle:"Açı","Approximately equal to":"Yaklaşık olarak eşit","Asterisk operator":"Yıldız operatörü","Austral sign":"Austral işareti","back with leftwards arrow above":"geri sol ok yukarıda","Bitcoin sign":"Bitcoin işareti","Cedi sign":"Cedi işareti","Cent sign":"Kuruş işareti","Character categories":"Karakter kategorileri","Colon sign":"İki nokta üst üste işareti","Contains as member":"Üye olarak içerir","Copyright sign":"Telif hakkı işareti","Cruzeiro sign":"Cruzeiro işareti","Currency sign":"Para birimi işareti","Degree sign":"Derece işareti","Division sign":"Bölme işareti","Dollar sign":"Dolar işareti","Dong sign":"Dong işareti","Double dagger":"Çift hançer","Double exclamation mark":"Çift ünlem işareti","Double low-9 quotation mark":"Çift düşük 9 tırnak işareti","Double question mark":"Çift soru işareti","downwards arrow to bar":"aşağı ok çubuğu","downwards dashed arrow":"aşağı doğru kesik ok","downwards double arrow":"aşağı çift ok","downwards simple arrow":"aşağı doğru basit ok","Drachma sign":"Drahmisi işareti","Element of":"Öğesi","Em dash":"Uzun çizgi","Empty set":"Boş küme","En dash":"Çizgi","end with leftwards arrow above":"sona sol ok yukarıda","Euro sign":"Avro işareti","Euro-currency sign":"Avro para birimi simgesi","Exclamation question mark":"Ünlem soru işareti","For all":"Hepsi için","Fraction slash":"Kesir eğik çizgi","French franc sign":"Fransız Frangı işareti","German penny sign":"Alman kuruş işareti","Greater-than or equal to":"Büyük veya eşit","Greater-than sign":"Büyüktür işareti","Guarani sign":"Guarani işareti","Horizontal ellipsis":"Yatay elips","Hryvnia sign":"Grivnası işareti","Identical to":"Benzeri","Indian rupee sign":"Hint Rupisi işareti",Infinity:"Sonsuzluk",Integral:"İntegral",Intersection:"Kesişim","Inverted exclamation mark":"Ters ünlem işareti","Inverted question mark":"Ters soru işareti","Kip sign":"Kip işareti","Latin capital letter a with breve":"Üstü yuvarlak büyük a harfi","Latin capital letter a with macron":"Üstü çizili büyük a harfi","Latin capital letter a with ogonek":"Altı kuyruklu işaretli büyük a harfi","Latin capital letter c with acute":"Üzeri tırnaklı büyük c harfi","Latin capital letter c with caron":"Üstü ters şapkalı büyük c harfi","Latin capital letter c with circumflex":"Üzeri şapkalı büyük c harfi","Latin capital letter c with dot above":"Üstü noktalı büyük c harfi","Latin capital letter d with caron":"Üstü ters şapkalı büyük d harfi","Latin capital letter d with stroke":"Ortası çizgili büyük d harfi","Latin capital letter e with breve":"Üstü ters şapkalı büyük e harfi","Latin capital letter e with caron":"Üstü ters şapkalı büyük e harfi","Latin capital letter e with dot above":"Üstü noktalı büyük e harfi","Latin capital letter e with macron":"Üstü çizili büyük e harfi","Latin capital letter e with ogonek":"Altı kuyruklu büyük e harfi","Latin capital letter eng":"Alttan kuyruklu büyük n harfi","Latin capital letter g with breve":"Üstü ters şapkalı büyük g harfi","Latin capital letter g with cedilla":"Altı kuyruklu büyük g harfi","Latin capital letter g with circumflex":"Üzeri şapkalı büyük g harfi","Latin capital letter g with dot above":"Üstü noktalı büyük g harfi","Latin capital letter h with circumflex":"Üzeri şapkalı büyük h harfi","Latin capital letter h with stroke":"Üst kısmı çizgili büyük h harfi","Latin capital letter i with breve":"Üstü ters şapkalı büyük i harfi","Latin capital letter i with dot above":"Üstü noktalı büyük i harfi","Latin capital letter i with macron":"Üstü çizili büyük i harfi","Latin capital letter i with ogonek":"Altı kuyruklu büyük i harfi","Latin capital letter i with tilde":"Üstü tilda işaretli büyük i harfi","Latin capital letter j with circumflex":"Üzeri şapkalı büyük j harfi","Latin capital letter k with cedilla":"Altı kuyruklu büyük k harfi","Latin capital letter l with acute":"Üzeri tırnaklı büyük L harfi","Latin capital letter l with caron":"Üstü ters şapkalı büyük L harfi","Latin capital letter l with cedilla":"Altı kuyruklu büyük L harfi","Latin capital letter l with middle dot":"Ortası noktalı büyük L harfi","Latin capital letter l with stroke":"Üst kısmı çizgili büyük L harfi","Latin capital letter n with acute":"Üzeri tırnaklı büyük n harfi","Latin capital letter n with caron":"Üstü ters şapkalı büyük n harfi","Latin capital letter n with cedilla":"Altı kuyruklu büyük n harfi","Latin capital letter o with breve":"Üstü ters şapkalı büyük o harfi","Latin capital letter o with double acute":"Üstü çift tırnaklı büyük o harfi","Latin capital letter o with macron":"Üstü çizili büyük o harfi","Latin capital letter r with acute":"Üzeri tırnaklı büyük r harfi","Latin capital letter r with caron":"Üstü ters şapkalı büyük r harfi","Latin capital letter r with cedilla":"Altı kuyruklu büyük r harfi","Latin capital letter s with acute":"Üzeri tırnaklı büyük s harfi","Latin capital letter s with caron":"Üstü ters şapkalı büyük s harfi","Latin capital letter s with cedilla":"Altı kuyruklu büyük s harfi","Latin capital letter s with circumflex":"Üzeri şapkalı büyük s harfi","Latin capital letter t with caron":"Üstü ters şapkalı büyük t harfi","Latin capital letter t with cedilla":"Altı kuyruklu büyük t harfi","Latin capital letter t with stroke":"Üst kısmı çizgili büyük t harfi","Latin capital letter u with breve":"Üstü ters şapkalı büyük u harfi","Latin capital letter u with double acute":"Üstü çift tırnaklı büyük u harfi","Latin capital letter u with macron":"Üstü çizili büyük u harfi","Latin capital letter u with ogonek":"Altı kuyruklu büyük u harfi","Latin capital letter u with ring above":"Üstü derece işaretli büyük u harfi","Latin capital letter u with tilde":"Üstü tildalı büyük u harfi","Latin capital letter w with circumflex":"Üzeri şapkalı büyük w harfi","Latin capital letter y with circumflex":"Üzeri şapkalı büyük y harfi","Latin capital letter y with diaeresis":"Üstü çift noktalı büyük y harfi","Latin capital letter z with acute":"Üzeri tırnaklı büyük z harfi","Latin capital letter z with caron":"Üstü ters şapkalı büyük z harfi","Latin capital letter z with dot above":"Üstü noktalı büyük z harfi","Latin capital ligature ij":"Büyük ij harfi","Latin capital ligature oe":"Büyük yunan OE harfi","Latin small letter a with breve":"Üstü yuvarlak küçük a harfi","Latin small letter a with macron":"Üstü çizili küçük a harfi","Latin small letter a with ogonek":"Altı kuyruklu işaretli küçük a harfi","Latin small letter c with acute":"Üzeri tırnaklı küçük c harfi","Latin small letter c with caron":"Üstü ters şapkalı küçük c harfi","Latin small letter c with circumflex":"Üzeri şapkalı küçük c harfi","Latin small letter c with dot above":"Üstü noktalı küçük c harfi","Latin small letter d with caron":"Üstü ters şapkalı küçük d harfi","Latin small letter d with stroke":"Ortası çizgili küçük d harfi","Latin small letter dotless i":"Noktası küçük i harfi","Latin small letter e with breve":"Üstü ters şapkalı küçük e harfi","Latin small letter e with caron":"Üstü ters şapkalı küçük e harfi","Latin small letter e with dot above":"Üstü noktalı küçük e harfi","Latin small letter e with macron":"Üstü çizili küçük e harfi","Latin small letter e with ogonek":"Altı kuyruklu küçük e harfi","Latin small letter eng":"Alttan kuyruklu küçük n harfi","Latin small letter f with hook":"Latince küçük f harfi","Latin small letter g with breve":"Üstü ters şapkalı küçük g harfi","Latin small letter g with cedilla":"Altı kuyruklu küçük g harfi","Latin small letter g with circumflex":"Üzeri şapkalı küçük g harfi","Latin small letter g with dot above":"Üstü noktalı küçük g harfi","Latin small letter h with circumflex":"Üzeri şapkalı küçük g harfi","Latin small letter h with stroke":"Üst kısmı çizgili küçük h harfi","Latin small letter i with breve":"Üstü ters şapkalı küçük i harfi","Latin small letter i with macron":"Üstü çizili küçük i harfi","Latin small letter i with ogonek":"Altı kuyruklu küçük i harfi","Latin small letter i with tilde":"Üstü tilda işaretli küçük i harfi","Latin small letter j with circumflex":"Üzeri şapkalı küçük j harfi","Latin small letter k with cedilla":"Altı kuyruklu küçük k harfi","Latin small letter kra":"Küçük küt k harfi","Latin small letter l with acute":"Üzeri tırnaklı küçük L harfi","Latin small letter l with caron":"Üstü ters şapkalı küçük L harfi","Latin small letter l with cedilla":"Altı kuyruklu küçük L harfi","Latin small letter l with middle dot":"Ortası noktalı küçük L harfi","Latin small letter l with stroke":"Üst kısmı çizgili küçük L harfi","Latin small letter long s":"Uzun küçük s harfi","Latin small letter n preceded by apostrophe":"Önden apostrof küçük n harfi","Latin small letter n with acute":"Üzeri tırnaklı küçük n harfi","Latin small letter n with caron":"Üstü ters şapkalı küçük n harfi","Latin small letter n with cedilla":"Altı kuyruklu küçük n harfi","Latin small letter o with breve":"Üstü ters şapkalı küçük o harfi","Latin small letter o with double acute":"Üstü çift tırnaklı küçük o harfi","Latin small letter o with macron":"Üstü çizili küçük o harfi","Latin small letter r with acute":"Üzeri tırnaklı küçük r harfi","Latin small letter r with caron":"Üstü ters şapkalı küçük r harfi","Latin small letter r with cedilla":"Altı kuyruklu küçük r harfi","Latin small letter s with acute":"Üzeri tırnaklı küçük s harfi","Latin small letter s with caron":"Üstü ters şapkalı küçük s harfi","Latin small letter s with cedilla":"Altı kuyruklu küçük s harfi","Latin small letter s with circumflex":"Üzeri şapkalı küçük s harfi","Latin small letter t with caron":"Üstü ters şapkalı küçük t harfi","Latin small letter t with cedilla":"Altı kuyruklu küçük t harfi","Latin small letter t with stroke":"Üst kısmı çizgili küçük t harfi","Latin small letter u with breve":"Üstü ters şapkalı küçük u harfi","Latin small letter u with double acute":"Üstü çift tırnaklı küçük u harfi","Latin small letter u with macron":"Üstü çizili küçük u harfi","Latin small letter u with ogonek":"Altı kuyruklu küçük u harfi","Latin small letter u with ring above":"Üstü derece işaretli küçük u harfi","Latin small letter u with tilde":"Üstü tildalı küçük u harfi","Latin small letter w with circumflex":"Üzeri şapkalı küçük w harfi","Latin small letter y with circumflex":"Üzeri şapkalı küçük y harfi","Latin small letter z with acute":"Üzeri tırnaklı küçük z harfi","Latin small letter z with caron":"Üstü ters şapkalı küçük z harfi","Latin small letter z with dot above":"Üstü noktalı küçük z harfi","Latin small ligature ij":"Küçük ij harfi","Latin small ligature oe":"Küçük yunan OE harfi","Left double quotation mark":"Sol çift tırnak işareti","Left single quotation mark":"Sol tek tırnak işareti","Left-pointing double angle quotation mark":"Sola dönük çift açılı tırnak işareti","leftwards arrow to bar":"sola ok çubuğu","leftwards dashed arrow":"sola kesik çizgili ok","leftwards double arrow":"sola çift ok","leftwards simple arrow":"sola doğru basit ok","Less-than or equal to":"Küçük veya eşit","Less-than sign":"Küçüktür işareti","Lira sign":"Lira işareti","Livre tournois sign":"Livre tournois işareti","Logical and":"Mantıksal VE","Logical or":"Mantıksal VEYA",Macron:"Uzatma işareti","Manat sign":"Manat işareti","Mill sign":"Mill işareti","Minus sign":"Eksi işareti","Multiplication sign":"Çarpma işareti","N-ary product":"N-ary ürünü","N-ary summation":"N-ary toplamı",Nabla:"Nabla","Naira sign":"Naira işareti","New sheqel sign":"Yeni şekel işareti","Nordic mark sign":"İskandinav işareti","Not an element of":"Onun öğesi değil","Not equal to":"Eşit değil","Not sign":"İmzalanmamış","on with exclamation mark with left right arrow above":"üzerinde sol sağ ok bulunan ünlem işaretiyle",Overline:"Üstü çizili","Paragraph sign":"Paragraf işareti","Partial differential":"Kısmi diferansiyel","Per mille sign":"Bin işareti için","Per ten thousand sign":"Her on bine göre işareti","Peseta sign":"Peseta işareti","Peso sign":"Peso işareti","Plus-minus sign":"Artı eksi işareti","Pound sign":"Sterlin işareti","Proportional to":"Orantılı","Question exclamation mark":"Soru ünlem işareti","Registered sign":"Kayıtlı işareti","Reversed paragraph sign":"Ters paragraf işareti","Right double quotation mark":"Sağ çift tırnak işareti","Right single quotation mark":"Sağ tek tırnak işareti","Right-pointing double angle quotation mark":"Sağa bakan çift açılı tırnak işareti","rightwards arrow to bar":"sağa ok çubuğu","rightwards dashed arrow":"sağa kesik çizgili ok","rightwards double arrow":"sağa çift ok","rightwards simple arrow":"sağa doğru basit ok","Ruble sign":"Ruble işareti","Rupee sign":"Rupi işareti","Section sign":"Bölüm işareti","Single left-pointing angle quotation mark":"Tek sola dönük açı tırnak işareti","Single low-9 quotation mark":"Tek düşük 9 tırnak işareti","Single right-pointing angle quotation mark":"Sağa bakan tek açılı tırnak işareti","soon with rightwards arrow above":"yakında sağ ok ile","Special characters":"Özel karakterler","Spesmilo sign":"Spesmilo işareti","Square root":"Kare kök","Tenge sign":"Tenge işareti","There exists":"Var","Tilde operator":"Tilde operatörü","top with upwards arrow above":"en üst yukarı oku","Trade mark sign":"Ticari marka işareti","Tugrik sign":"Tugrik işareti","Turkish lira sign":"Türk Lirası işareti","Two dot leader":"Öncelikli iki nokta",Union:"Birleşik","up down arrow with base":"taban ile yukarı aşağı ok","upwards arrow to bar":"yukarı ok çubuğu","upwards dashed arrow":"yukarı doğru kesik ok","upwards double arrow":"yukarı çift ok","upwards simple arrow":"yukarı doğru basit ok","Vulgar fraction one half":"Kaba kesir bir buçuk","Vulgar fraction one quarter":"Kaba kesir bir çeyrek","Vulgar fraction three quarters":"Kaba bölüm dörtte üç","Won sign":"Kazanılan işaret","Yen sign":"Yen işareti"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/special-characters/translations/uk.js b/core/assets/vendor/ckeditor5/special-characters/translations/uk.js
index 0b92df4a0b..420b9a83e0 100644
--- a/core/assets/vendor/ckeditor5/special-characters/translations/uk.js
+++ b/core/assets/vendor/ckeditor5/special-characters/translations/uk.js
@@ -1 +1 @@
-!function(t){const a=t.uk=t.uk||{};a.dictionary=Object.assign(a.dictionary||{},{"Almost equal to":"Майже дорівнює",Angle:"Кут","Approximately equal to":"Приблизно дорівнює","Asterisk operator":"Оператор зірочка","Austral sign":"Символ аустрала","back with leftwards arrow above":"back зі стрілкою вліво зверху","Bitcoin sign":"Символ біткоїна","Cedi sign":"Символ седі","Cent sign":"Символ цента","Character categories":"Категорії символів","Colon sign":"Символ двокрапки","Contains as member":"Містить як елемент","Copyright sign":"Знак авторського права","Cruzeiro sign":"Символ крузейро","Currency sign":"Символ валюти","Degree sign":"Знак ступеня","Division sign":"Знак ділення","Dollar sign":"Символ долара","Dong sign":"Символ донга","Double dagger":"Подвійний хрестик","Double exclamation mark":"Подвійний знак оклику","Double low-9 quotation mark":"Подвійні нижні лапки","Double question mark":"Подвійний знак питання","downwards arrow to bar":"стрілка вниз до блоку","downwards dashed arrow":"пунктирна стрілка вниз","downwards double arrow":"подвійна стрілка вниз","Drachma sign":"Символ драхми","Element of":"Елемент","Em dash":"Довге тире","Empty set":"Порожній набір","En dash":"Тире","end with leftwards arrow above":"end зі стрілкою вліво зверху","Euro sign":"Символ євро","Euro-currency sign":"Символ євровалюти","Exclamation question mark":"Знак оклику і знак питання","For all":"Для всіх","Fraction slash":"Риска дробу","French franc sign":"Символ французького франка","German penny sign":"Символ німецького пенні","Greater-than or equal to":"Більше або дорівнює","Greater-than sign":"Знак більше","Guarani sign":"Символ гуарані","Horizontal ellipsis":"Горизонтальний еліпс","Hryvnia sign":"Символ гривні","Identical to":"Ідентичне до","Indian rupee sign":"Символ індійської рупії",Infinity:"Нескінченність",Integral:"Інтеграл",Intersection:"Перетин","Inverted exclamation mark":"Перевернутий знак оклику","Inverted question mark":"Перевернутий знак питання","Kip sign":"Символ кіпа","Latin capital letter a with breve":"Латинська велика літера а з бревісом","Latin capital letter a with macron":"Латинська велика літера а зі знаком довготи","Latin capital letter a with ogonek":"Латинська велика літера а з хвостиком","Latin capital letter c with acute":"Латинська велика літера с з гострим наголосом","Latin capital letter c with caron":"Латинська велика літера с з пташкою","Latin capital letter c with circumflex":"Латинська велика літера с з дашком","Latin capital letter c with dot above":"Латинська велика літера с з крапкою згори","Latin capital letter d with caron":"Латинська велика літера d з пташкою","Latin capital letter d with stroke":"Латинська велика літера d з рискою","Latin capital letter e with breve":"Латинська велика літера е з бревісом","Latin capital letter e with caron":"Латинська велика літера е з пташкою","Latin capital letter e with dot above":"Латинська велика літера е з крапкою вгорі","Latin capital letter e with macron":"Латинська велика літера е зі знаком довготи","Latin capital letter e with ogonek":"Латинська велика літера е з хвостиком","Latin capital letter eng":"Латинські великі літери eng","Latin capital letter g with breve":"Латинська велика літера g з бревісом","Latin capital letter g with cedilla":"Латинська велика літера g з седилем","Latin capital letter g with circumflex":"Латинська велика літера g з дашком","Latin capital letter g with dot above":"Латинська велика літера g з крапкою вгорі","Latin capital letter h with circumflex":"Латинська велика літера h з дашком","Latin capital letter h with stroke":"Латинська велика літера h з рискою","Latin capital letter i with breve":"Латинська велика літера і з бревісом","Latin capital letter i with dot above":"Латинська велика літера і з крапкою вгорі","Latin capital letter i with macron":"Латинська велика літера і зі знаком довготи","Latin capital letter i with ogonek":"Латинська велика літера і з пташкою","Latin capital letter i with tilde":"Латинська велика літера і з тильдою","Latin capital letter j with circumflex":"Латинська велика літера j з дашком","Latin capital letter k with cedilla":"Латинська велика літера k з седилем","Latin capital letter l with acute":"Латинська велика літера l з гострим наголосом","Latin capital letter l with caron":"Латинська велика літера l із пташкою","Latin capital letter l with cedilla":"Латинська велика літера l із седилем","Latin capital letter l with middle dot":"Латинська велика літера l з середньою крапкою","Latin capital letter l with stroke":"Латинська велика літера l з рискою","Latin capital letter n with acute":"Латинська велика літера n з гострим наголосом","Latin capital letter n with caron":"Латинська велика літера n із пташкою","Latin capital letter n with cedilla":"Латинська велика літера n із седилем","Latin capital letter o with breve":"Латинська велика літера о з бревісом","Latin capital letter o with double acute":"Латинська велика літера о з подвійним наголосом","Latin capital letter o with macron":"Латинська велика літера о зі знаком довготи","Latin capital letter r with acute":"Латинська велика літера r з гострим наголосом","Latin capital letter r with caron":"Латинська велика літера r із пташкою","Latin capital letter r with cedilla":"Латинська велика літера r із седилем","Latin capital letter s with acute":"Латинська велика літера s із гострим наголосом","Latin capital letter s with caron":"Латинська велика літера s із пташкою","Latin capital letter s with cedilla":"Латинська велика літера s із седилем","Latin capital letter s with circumflex":"Латинська велика літера s із дашком","Latin capital letter t with caron":"Латинська велика літера t із пташкою","Latin capital letter t with cedilla":"Латинська велика літера t із седилем","Latin capital letter t with stroke":"Латинська велика літера t із рискою","Latin capital letter u with breve":"Латинська велика літера u із бревісом","Latin capital letter u with double acute":"Латинська велика літера u із подвійним наголосом","Latin capital letter u with macron":"Латинська велика літера u зі знаком довготи","Latin capital letter u with ogonek":"Латинська велика літера u з хвостиком","Latin capital letter u with ring above":"Латинська велика літера u із кільцем вгорі","Latin capital letter u with tilde":"Латинська велика літера u із тильдою","Latin capital letter w with circumflex":"Латинська велика літера w із дашком","Latin capital letter y with circumflex":"Латинська велика літера y із дашком","Latin capital letter y with diaeresis":"Латинська велика літера y з умляутом","Latin capital letter z with acute":"Латинська велика літера z з гострим наголосом","Latin capital letter z with caron":"Латинська велика літера z з пташкою","Latin capital letter z with dot above":"Латинська велика літера z з крапкою вгорі","Latin capital ligature ij":"Латинська велика лігатура ij","Latin capital ligature oe":"Латинська велика лігатура ое","Latin small letter a with breve":"Латинська мала літера а з бревісом","Latin small letter a with macron":"Латинська мала літера а зі знаком довготи","Latin small letter a with ogonek":"Латинська мала літера а з хвостиком","Latin small letter c with acute":"Латинська мала літера с з гострим наголосом","Latin small letter c with caron":"Латинська мала літера с з пташкою","Latin small letter c with circumflex":"Латинська мала літера с з дашком","Latin small letter c with dot above":"Латинська мала літера с з крапкою згори","Latin small letter d with caron":"Латинська мала літера d з пташкою","Latin small letter d with stroke":"Латинська мала літера d з рискою","Latin small letter dotless i":"Латинська мала літера і без крапки","Latin small letter e with breve":"Латинська мала літера е з бревісом","Latin small letter e with caron":"Латинська мала літера е з пташкою","Latin small letter e with dot above":"Латинська мала літера е з крапкою вгорі","Latin small letter e with macron":"Латинська мала літера е зі знаком довготи","Latin small letter e with ogonek":"Латинська мала літера е з хвостиком","Latin small letter eng":"Латинські малі літери eng","Latin small letter f with hook":"Латинська мала літера f з гачком","Latin small letter g with breve":"Латинська мала літера g з бревісом","Latin small letter g with cedilla":"Латинська мала літера g з седилем","Latin small letter g with circumflex":"Латинська мала літера g з дашком","Latin small letter g with dot above":"Латинська мала літера g з крапкою вгорі","Latin small letter h with circumflex":"Латинська мала літера h з дашком","Latin small letter h with stroke":"Латинська мала літера h з рискою","Latin small letter i with breve":"Латинська мала літера і з бревісом","Latin small letter i with macron":"Латинська мала літера і зі знаком довготи","Latin small letter i with ogonek":"Латинська мала літера і з пташкою","Latin small letter i with tilde":"Латинська мала літера і з тильдою","Latin small letter j with circumflex":"Латинська мала літера j з дашком","Latin small letter k with cedilla":"Латинська мала літера k з седилем","Latin small letter kra":"Латинська мала літера kra","Latin small letter l with acute":"Латинська мала літера l з гострим наголосом","Latin small letter l with caron":"Латинська мала літера l із пташкою","Latin small letter l with cedilla":"Латинська мала літера l із седилем","Latin small letter l with middle dot":"Латинська мала літера l з середньою крапкою","Latin small letter l with stroke":"Латинська мала літера l з рискою","Latin small letter long s":"Латинська мала літера довга s","Latin small letter n preceded by apostrophe":"Латинська мала літера n з апострофом","Latin small letter n with acute":"Латинська мала літера n з гострим наголосом","Latin small letter n with caron":"Латинська мала літера n із пташкою","Latin small letter n with cedilla":"Латинська мала літера n із седилем","Latin small letter o with breve":"Латинська мала літера о з бревісом","Latin small letter o with double acute":"Латинська мала літера о з подвійним наголосом","Latin small letter o with macron":"Латинська мала літера о зі знаком довготи","Latin small letter r with acute":"Латинська мала літера r з гострим наголосом","Latin small letter r with caron":"Латинська мала літера r із пташкою","Latin small letter r with cedilla":"Латинська мала літера r із седилем","Latin small letter s with acute":"Латинська мала літера s із гострим наголосом ","Latin small letter s with caron":"Латинська мала літера s із пташкою","Latin small letter s with cedilla":"Латинська мала літера s із седилем","Latin small letter s with circumflex":"Латинська мала літера s із дашком","Latin small letter t with caron":"Латинська мала літера t із пташкою","Latin small letter t with cedilla":"Латинська мала літера t із седилем","Latin small letter t with stroke":"Латинська мала літера t із рискою","Latin small letter u with breve":"Латинська мала літера u із бревісом","Latin small letter u with double acute":"Латинська мала літера  uіз подвійним наголосом","Latin small letter u with macron":"Латинська мала літера u зі знаком довготи","Latin small letter u with ogonek":"Латинська мала літера u з хвостиком","Latin small letter u with ring above":"Латинська мала літера u із кільцем вгорі","Latin small letter u with tilde":"Латинська мала літера u із тильдою","Latin small letter w with circumflex":"Латинська мала літера w із дашком","Latin small letter y with circumflex":"Латинська мала літера y із дашком","Latin small letter z with acute":"Латинська мала літера z з гострим наголосом","Latin small letter z with caron":"Латинська мала літера z з пташкою","Latin small letter z with dot above":"Латинська мала літера  z з крапкою вгорі","Latin small ligature ij":"Латинська мала лігатура ij","Latin small ligature oe":"Латинська мала лігатура ое","Left double quotation mark":"Подвійні ліві лапки","Left single quotation mark":"Одинарна ліва лапка","Left-pointing double angle quotation mark":"Подвійні лівосторонні кутові лапки","leftwards arrow to bar":"стрілка вліво до блоку","leftwards dashed arrow":"пунктирна стрілка вліво","leftwards double arrow":"подвійна стрілка вліво","Less-than or equal to":"Менше або дорівнює","Less-than sign":"Знак менше","Lira sign":"Символ ліри","Livre tournois sign":"Символ турського лівру","Logical and":"Логічний сполучник and","Logical or":"Логічний сполучник or",Macron:"Знак довготи","Manat sign":"Символ маната","Mill sign":"Символ мільйона","Minus sign":"Знак мінус","Multiplication sign":"Знак множення","N-ary product":"Пі","N-ary summation":"Сигма",Nabla:"Набла","Naira sign":"Символ найри","New sheqel sign":"Символ нового шекеля","Nordic mark sign":"Символ нордичної марки","Not an element of":"Не елемент","Not equal to":"Не дорівнює","Not sign":"Знак не","on with exclamation mark with left right arrow above":"on зі знаком оклику зі стрілкою вліво-вправо зверху",Overline:"Риска згори","Paragraph sign":"Знак абзацу","Partial differential":"Частинні похідні","Per mille sign":"Знак проміле","Per ten thousand sign":"Знак на десять тисяч","Peseta sign":"Символ песети","Peso sign":"Символ песо","Plus-minus sign":"Знак плюс-мінус","Pound sign":"Символ фунта","Proportional to":"Пропорційно до","Question exclamation mark":"Знак питання і знак оклику","Registered sign":"Знак реєстрації","Reversed paragraph sign":"Перевернутий знак абзацу","Right double quotation mark":"Подвійні праві лапки","Right single quotation mark":"Одинарна права лапка","Right-pointing double angle quotation mark":"Подвійні правосторонні кутові лапки","rightwards arrow to bar":"стрілка вправо до блоку","rightwards dashed arrow":"пунктирна стрілка вправо","rightwards double arrow":"подвійна стрілка вправо","Ruble sign":"Символ рубля","Rupee sign":"Символ рупії","Section sign":"Знак розділу","Single left-pointing angle quotation mark":"Одинарна лівостороння кутова лапка","Single low-9 quotation mark":"Одинарна нижня лапка","Single right-pointing angle quotation mark":"Одинарна правостороння кутова лапка","soon with rightwards arrow above":"soon зі стрілкою вправо зверху","Special characters":"Спеціальні символи","Spesmilo sign":"Символ спесміло","Square root":"Квадратний корінь","Tenge sign":"Символ тенге","There exists":"Там існує","Tilde operator":"Оператор тильди","top with upwards arrow above":"top зі стрілкою вгору зверху","Trade mark sign":"Знак торгової марки","Tugrik sign":"Символ тугрика","Turkish lira sign":"Символ турецької ліри","Two dot leader":"Лідер із двох крапок",Union:"Юніон","up down arrow with base":"стрілка вгору-вниз із основою","upwards arrow to bar":"стрілка вгору до блоку","upwards dashed arrow":"пунктирна стрілка вгору","upwards double arrow":"подвійна стрілка вгору","Vulgar fraction one half":"Звичайний дріб одна друга","Vulgar fraction one quarter":"Звичайний дріб одна четверта","Vulgar fraction three quarters":"Звичайний дріб три четвертих","Won sign":"Символ вони","Yen sign":"Символ єни"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(t){const a=t.uk=t.uk||{};a.dictionary=Object.assign(a.dictionary||{},{"Almost equal to":"Майже дорівнює",Angle:"Кут","Approximately equal to":"Приблизно дорівнює","Asterisk operator":"Оператор зірочка","Austral sign":"Символ аустрала","back with leftwards arrow above":"back зі стрілкою вліво зверху","Bitcoin sign":"Символ біткоїна","Cedi sign":"Символ седі","Cent sign":"Символ цента","Character categories":"Категорії символів","Colon sign":"Символ двокрапки","Contains as member":"Містить як елемент","Copyright sign":"Знак авторського права","Cruzeiro sign":"Символ крузейро","Currency sign":"Символ валюти","Degree sign":"Знак ступеня","Division sign":"Знак ділення","Dollar sign":"Символ долара","Dong sign":"Символ донга","Double dagger":"Подвійний хрестик","Double exclamation mark":"Подвійний знак оклику","Double low-9 quotation mark":"Подвійні нижні лапки","Double question mark":"Подвійний знак питання","downwards arrow to bar":"стрілка вниз до блоку","downwards dashed arrow":"пунктирна стрілка вниз","downwards double arrow":"подвійна стрілка вниз","downwards simple arrow":"проста стрілка вниз","Drachma sign":"Символ драхми","Element of":"Елемент","Em dash":"Довге тире","Empty set":"Порожній набір","En dash":"Тире","end with leftwards arrow above":"end зі стрілкою вліво зверху","Euro sign":"Символ євро","Euro-currency sign":"Символ євровалюти","Exclamation question mark":"Знак оклику і знак питання","For all":"Для всіх","Fraction slash":"Риска дробу","French franc sign":"Символ французького франка","German penny sign":"Символ німецького пенні","Greater-than or equal to":"Більше або дорівнює","Greater-than sign":"Знак більше","Guarani sign":"Символ гуарані","Horizontal ellipsis":"Горизонтальний еліпс","Hryvnia sign":"Символ гривні","Identical to":"Ідентичне до","Indian rupee sign":"Символ індійської рупії",Infinity:"Нескінченність",Integral:"Інтеграл",Intersection:"Перетин","Inverted exclamation mark":"Перевернутий знак оклику","Inverted question mark":"Перевернутий знак питання","Kip sign":"Символ кіпа","Latin capital letter a with breve":"Латинська велика літера а з бревісом","Latin capital letter a with macron":"Латинська велика літера а зі знаком довготи","Latin capital letter a with ogonek":"Латинська велика літера а з хвостиком","Latin capital letter c with acute":"Латинська велика літера с з гострим наголосом","Latin capital letter c with caron":"Латинська велика літера с з пташкою","Latin capital letter c with circumflex":"Латинська велика літера с з дашком","Latin capital letter c with dot above":"Латинська велика літера с з крапкою згори","Latin capital letter d with caron":"Латинська велика літера d з пташкою","Latin capital letter d with stroke":"Латинська велика літера d з рискою","Latin capital letter e with breve":"Латинська велика літера е з бревісом","Latin capital letter e with caron":"Латинська велика літера е з пташкою","Latin capital letter e with dot above":"Латинська велика літера е з крапкою вгорі","Latin capital letter e with macron":"Латинська велика літера е зі знаком довготи","Latin capital letter e with ogonek":"Латинська велика літера е з хвостиком","Latin capital letter eng":"Латинські великі літери eng","Latin capital letter g with breve":"Латинська велика літера g з бревісом","Latin capital letter g with cedilla":"Латинська велика літера g з седилем","Latin capital letter g with circumflex":"Латинська велика літера g з дашком","Latin capital letter g with dot above":"Латинська велика літера g з крапкою вгорі","Latin capital letter h with circumflex":"Латинська велика літера h з дашком","Latin capital letter h with stroke":"Латинська велика літера h з рискою","Latin capital letter i with breve":"Латинська велика літера і з бревісом","Latin capital letter i with dot above":"Латинська велика літера і з крапкою вгорі","Latin capital letter i with macron":"Латинська велика літера і зі знаком довготи","Latin capital letter i with ogonek":"Латинська велика літера і з пташкою","Latin capital letter i with tilde":"Латинська велика літера і з тильдою","Latin capital letter j with circumflex":"Латинська велика літера j з дашком","Latin capital letter k with cedilla":"Латинська велика літера k з седилем","Latin capital letter l with acute":"Латинська велика літера l з гострим наголосом","Latin capital letter l with caron":"Латинська велика літера l із пташкою","Latin capital letter l with cedilla":"Латинська велика літера l із седилем","Latin capital letter l with middle dot":"Латинська велика літера l з середньою крапкою","Latin capital letter l with stroke":"Латинська велика літера l з рискою","Latin capital letter n with acute":"Латинська велика літера n з гострим наголосом","Latin capital letter n with caron":"Латинська велика літера n із пташкою","Latin capital letter n with cedilla":"Латинська велика літера n із седилем","Latin capital letter o with breve":"Латинська велика літера о з бревісом","Latin capital letter o with double acute":"Латинська велика літера о з подвійним наголосом","Latin capital letter o with macron":"Латинська велика літера о зі знаком довготи","Latin capital letter r with acute":"Латинська велика літера r з гострим наголосом","Latin capital letter r with caron":"Латинська велика літера r із пташкою","Latin capital letter r with cedilla":"Латинська велика літера r із седилем","Latin capital letter s with acute":"Латинська велика літера s із гострим наголосом","Latin capital letter s with caron":"Латинська велика літера s із пташкою","Latin capital letter s with cedilla":"Латинська велика літера s із седилем","Latin capital letter s with circumflex":"Латинська велика літера s із дашком","Latin capital letter t with caron":"Латинська велика літера t із пташкою","Latin capital letter t with cedilla":"Латинська велика літера t із седилем","Latin capital letter t with stroke":"Латинська велика літера t із рискою","Latin capital letter u with breve":"Латинська велика літера u із бревісом","Latin capital letter u with double acute":"Латинська велика літера u із подвійним наголосом","Latin capital letter u with macron":"Латинська велика літера u зі знаком довготи","Latin capital letter u with ogonek":"Латинська велика літера u з хвостиком","Latin capital letter u with ring above":"Латинська велика літера u із кільцем вгорі","Latin capital letter u with tilde":"Латинська велика літера u із тильдою","Latin capital letter w with circumflex":"Латинська велика літера w із дашком","Latin capital letter y with circumflex":"Латинська велика літера y із дашком","Latin capital letter y with diaeresis":"Латинська велика літера y з умляутом","Latin capital letter z with acute":"Латинська велика літера z з гострим наголосом","Latin capital letter z with caron":"Латинська велика літера z з пташкою","Latin capital letter z with dot above":"Латинська велика літера z з крапкою вгорі","Latin capital ligature ij":"Латинська велика лігатура ij","Latin capital ligature oe":"Латинська велика лігатура ое","Latin small letter a with breve":"Латинська мала літера а з бревісом","Latin small letter a with macron":"Латинська мала літера а зі знаком довготи","Latin small letter a with ogonek":"Латинська мала літера а з хвостиком","Latin small letter c with acute":"Латинська мала літера с з гострим наголосом","Latin small letter c with caron":"Латинська мала літера с з пташкою","Latin small letter c with circumflex":"Латинська мала літера с з дашком","Latin small letter c with dot above":"Латинська мала літера с з крапкою згори","Latin small letter d with caron":"Латинська мала літера d з пташкою","Latin small letter d with stroke":"Латинська мала літера d з рискою","Latin small letter dotless i":"Латинська мала літера і без крапки","Latin small letter e with breve":"Латинська мала літера е з бревісом","Latin small letter e with caron":"Латинська мала літера е з пташкою","Latin small letter e with dot above":"Латинська мала літера е з крапкою вгорі","Latin small letter e with macron":"Латинська мала літера е зі знаком довготи","Latin small letter e with ogonek":"Латинська мала літера е з хвостиком","Latin small letter eng":"Латинські малі літери eng","Latin small letter f with hook":"Латинська мала літера f з гачком","Latin small letter g with breve":"Латинська мала літера g з бревісом","Latin small letter g with cedilla":"Латинська мала літера g з седилем","Latin small letter g with circumflex":"Латинська мала літера g з дашком","Latin small letter g with dot above":"Латинська мала літера g з крапкою вгорі","Latin small letter h with circumflex":"Латинська мала літера h з дашком","Latin small letter h with stroke":"Латинська мала літера h з рискою","Latin small letter i with breve":"Латинська мала літера і з бревісом","Latin small letter i with macron":"Латинська мала літера і зі знаком довготи","Latin small letter i with ogonek":"Латинська мала літера і з пташкою","Latin small letter i with tilde":"Латинська мала літера і з тильдою","Latin small letter j with circumflex":"Латинська мала літера j з дашком","Latin small letter k with cedilla":"Латинська мала літера k з седилем","Latin small letter kra":"Латинська мала літера kra","Latin small letter l with acute":"Латинська мала літера l з гострим наголосом","Latin small letter l with caron":"Латинська мала літера l із пташкою","Latin small letter l with cedilla":"Латинська мала літера l із седилем","Latin small letter l with middle dot":"Латинська мала літера l з середньою крапкою","Latin small letter l with stroke":"Латинська мала літера l з рискою","Latin small letter long s":"Латинська мала літера довга s","Latin small letter n preceded by apostrophe":"Латинська мала літера n з апострофом","Latin small letter n with acute":"Латинська мала літера n з гострим наголосом","Latin small letter n with caron":"Латинська мала літера n із пташкою","Latin small letter n with cedilla":"Латинська мала літера n із седилем","Latin small letter o with breve":"Латинська мала літера о з бревісом","Latin small letter o with double acute":"Латинська мала літера о з подвійним наголосом","Latin small letter o with macron":"Латинська мала літера о зі знаком довготи","Latin small letter r with acute":"Латинська мала літера r з гострим наголосом","Latin small letter r with caron":"Латинська мала літера r із пташкою","Latin small letter r with cedilla":"Латинська мала літера r із седилем","Latin small letter s with acute":"Латинська мала літера s із гострим наголосом ","Latin small letter s with caron":"Латинська мала літера s із пташкою","Latin small letter s with cedilla":"Латинська мала літера s із седилем","Latin small letter s with circumflex":"Латинська мала літера s із дашком","Latin small letter t with caron":"Латинська мала літера t із пташкою","Latin small letter t with cedilla":"Латинська мала літера t із седилем","Latin small letter t with stroke":"Латинська мала літера t із рискою","Latin small letter u with breve":"Латинська мала літера u із бревісом","Latin small letter u with double acute":"Латинська мала літера  uіз подвійним наголосом","Latin small letter u with macron":"Латинська мала літера u зі знаком довготи","Latin small letter u with ogonek":"Латинська мала літера u з хвостиком","Latin small letter u with ring above":"Латинська мала літера u із кільцем вгорі","Latin small letter u with tilde":"Латинська мала літера u із тильдою","Latin small letter w with circumflex":"Латинська мала літера w із дашком","Latin small letter y with circumflex":"Латинська мала літера y із дашком","Latin small letter z with acute":"Латинська мала літера z з гострим наголосом","Latin small letter z with caron":"Латинська мала літера z з пташкою","Latin small letter z with dot above":"Латинська мала літера  z з крапкою вгорі","Latin small ligature ij":"Латинська мала лігатура ij","Latin small ligature oe":"Латинська мала лігатура ое","Left double quotation mark":"Подвійні ліві лапки","Left single quotation mark":"Одинарна ліва лапка","Left-pointing double angle quotation mark":"Подвійні лівосторонні кутові лапки","leftwards arrow to bar":"стрілка вліво до блоку","leftwards dashed arrow":"пунктирна стрілка вліво","leftwards double arrow":"подвійна стрілка вліво","leftwards simple arrow":"проста стрілка вліво","Less-than or equal to":"Менше або дорівнює","Less-than sign":"Знак менше","Lira sign":"Символ ліри","Livre tournois sign":"Символ турського лівру","Logical and":"Логічний сполучник and","Logical or":"Логічний сполучник or",Macron:"Знак довготи","Manat sign":"Символ маната","Mill sign":"Символ мільйона","Minus sign":"Знак мінус","Multiplication sign":"Знак множення","N-ary product":"Пі","N-ary summation":"Сигма",Nabla:"Набла","Naira sign":"Символ найри","New sheqel sign":"Символ нового шекеля","Nordic mark sign":"Символ нордичної марки","Not an element of":"Не елемент","Not equal to":"Не дорівнює","Not sign":"Знак не","on with exclamation mark with left right arrow above":"on зі знаком оклику зі стрілкою вліво-вправо зверху",Overline:"Риска згори","Paragraph sign":"Знак абзацу","Partial differential":"Частинні похідні","Per mille sign":"Знак проміле","Per ten thousand sign":"Знак на десять тисяч","Peseta sign":"Символ песети","Peso sign":"Символ песо","Plus-minus sign":"Знак плюс-мінус","Pound sign":"Символ фунта","Proportional to":"Пропорційно до","Question exclamation mark":"Знак питання і знак оклику","Registered sign":"Знак реєстрації","Reversed paragraph sign":"Перевернутий знак абзацу","Right double quotation mark":"Подвійні праві лапки","Right single quotation mark":"Одинарна права лапка","Right-pointing double angle quotation mark":"Подвійні правосторонні кутові лапки","rightwards arrow to bar":"стрілка вправо до блоку","rightwards dashed arrow":"пунктирна стрілка вправо","rightwards double arrow":"подвійна стрілка вправо","rightwards simple arrow":"проста стрілка вправо","Ruble sign":"Символ рубля","Rupee sign":"Символ рупії","Section sign":"Знак розділу","Single left-pointing angle quotation mark":"Одинарна лівостороння кутова лапка","Single low-9 quotation mark":"Одинарна нижня лапка","Single right-pointing angle quotation mark":"Одинарна правостороння кутова лапка","soon with rightwards arrow above":"soon зі стрілкою вправо зверху","Special characters":"Спеціальні символи","Spesmilo sign":"Символ спесміло","Square root":"Квадратний корінь","Tenge sign":"Символ тенге","There exists":"Там існує","Tilde operator":"Оператор тильди","top with upwards arrow above":"top зі стрілкою вгору зверху","Trade mark sign":"Знак торгової марки","Tugrik sign":"Символ тугрика","Turkish lira sign":"Символ турецької ліри","Two dot leader":"Лідер із двох крапок",Union:"Юніон","up down arrow with base":"стрілка вгору-вниз із основою","upwards arrow to bar":"стрілка вгору до блоку","upwards dashed arrow":"пунктирна стрілка вгору","upwards double arrow":"подвійна стрілка вгору","upwards simple arrow":"проста стрілка вгору","Vulgar fraction one half":"Звичайний дріб одна друга","Vulgar fraction one quarter":"Звичайний дріб одна четверта","Vulgar fraction three quarters":"Звичайний дріб три четвертих","Won sign":"Символ вони","Yen sign":"Символ єни"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/special-characters/translations/ur.js b/core/assets/vendor/ckeditor5/special-characters/translations/ur.js
index f449eade73..a3c61bf35c 100644
--- a/core/assets/vendor/ckeditor5/special-characters/translations/ur.js
+++ b/core/assets/vendor/ckeditor5/special-characters/translations/ur.js
@@ -1 +1 @@
-!function(t){const a=t.ur=t.ur||{};a.dictionary=Object.assign(a.dictionary||{},{"Almost equal to":"",Angle:"","Approximately equal to":"","Asterisk operator":"","Austral sign":"","back with leftwards arrow above":"","Bitcoin sign":"","Cedi sign":"","Cent sign":"","Character categories":"","Colon sign":"","Contains as member":"","Copyright sign":"","Cruzeiro sign":"","Currency sign":"","Degree sign":"","Division sign":"","Dollar sign":"","Dong sign":"","Double dagger":"","Double exclamation mark":"","Double low-9 quotation mark":"","Double question mark":"","downwards arrow to bar":"","downwards dashed arrow":"","downwards double arrow":"","Drachma sign":"علامتِ دراچمہ ","Element of":"","Em dash":"","Empty set":"","En dash":"","end with leftwards arrow above":"","Euro sign":"","Euro-currency sign":"","Exclamation question mark":"","For all":"","Fraction slash":"","French franc sign":"","German penny sign":"علامت جرمن پینی","Greater-than or equal to":"","Greater-than sign":"","Guarani sign":"علامتِ گوارانی","Horizontal ellipsis":"","Hryvnia sign":"","Identical to":"","Indian rupee sign":"انڈین روپیہ کی علامت",Infinity:"",Integral:"",Intersection:"","Inverted exclamation mark":"","Inverted question mark":"","Kip sign":"","Latin capital letter a with breve":"","Latin capital letter a with macron":"","Latin capital letter a with ogonek":"","Latin capital letter c with acute":"","Latin capital letter c with caron":"","Latin capital letter c with circumflex":"","Latin capital letter c with dot above":"","Latin capital letter d with caron":"","Latin capital letter d with stroke":"","Latin capital letter e with breve":"","Latin capital letter e with caron":"","Latin capital letter e with dot above":"","Latin capital letter e with macron":"","Latin capital letter e with ogonek":"","Latin capital letter eng":"","Latin capital letter g with breve":"","Latin capital letter g with cedilla":"","Latin capital letter g with circumflex":"","Latin capital letter g with dot above":"","Latin capital letter h with circumflex":"","Latin capital letter h with stroke":"","Latin capital letter i with breve":"","Latin capital letter i with dot above":"","Latin capital letter i with macron":"","Latin capital letter i with ogonek":"","Latin capital letter i with tilde":"","Latin capital letter j with circumflex":"","Latin capital letter k with cedilla":"","Latin capital letter l with acute":"","Latin capital letter l with caron":"","Latin capital letter l with cedilla":"","Latin capital letter l with middle dot":"","Latin capital letter l with stroke":"","Latin capital letter n with acute":"","Latin capital letter n with caron":"","Latin capital letter n with cedilla":"","Latin capital letter o with breve":"","Latin capital letter o with double acute":"","Latin capital letter o with macron":"","Latin capital letter r with acute":"","Latin capital letter r with caron":"","Latin capital letter r with cedilla":"","Latin capital letter s with acute":"","Latin capital letter s with caron":"","Latin capital letter s with cedilla":"","Latin capital letter s with circumflex":"","Latin capital letter t with caron":"","Latin capital letter t with cedilla":"","Latin capital letter t with stroke":"","Latin capital letter u with breve":"","Latin capital letter u with double acute":"","Latin capital letter u with macron":"","Latin capital letter u with ogonek":"","Latin capital letter u with ring above":"","Latin capital letter u with tilde":"","Latin capital letter w with circumflex":"","Latin capital letter y with circumflex":"","Latin capital letter y with diaeresis":"","Latin capital letter z with acute":"","Latin capital letter z with caron":"","Latin capital letter z with dot above":"","Latin capital ligature ij":"","Latin capital ligature oe":"","Latin small letter a with breve":"","Latin small letter a with macron":"","Latin small letter a with ogonek":"","Latin small letter c with acute":"","Latin small letter c with caron":"","Latin small letter c with circumflex":"","Latin small letter c with dot above":"","Latin small letter d with caron":"","Latin small letter d with stroke":"","Latin small letter dotless i":"","Latin small letter e with breve":"","Latin small letter e with caron":"","Latin small letter e with dot above":"","Latin small letter e with macron":"","Latin small letter e with ogonek":"","Latin small letter eng":"","Latin small letter f with hook":"","Latin small letter g with breve":"","Latin small letter g with cedilla":"","Latin small letter g with circumflex":"","Latin small letter g with dot above":"","Latin small letter h with circumflex":"","Latin small letter h with stroke":"","Latin small letter i with breve":"","Latin small letter i with macron":"","Latin small letter i with ogonek":"","Latin small letter i with tilde":"","Latin small letter j with circumflex":"","Latin small letter k with cedilla":"","Latin small letter kra":"","Latin small letter l with acute":"","Latin small letter l with caron":"","Latin small letter l with cedilla":"","Latin small letter l with middle dot":"","Latin small letter l with stroke":"","Latin small letter long s":"","Latin small letter n preceded by apostrophe":"","Latin small letter n with acute":"","Latin small letter n with caron":"","Latin small letter n with cedilla":"","Latin small letter o with breve":"","Latin small letter o with double acute":"","Latin small letter o with macron":"","Latin small letter r with acute":"","Latin small letter r with caron":"","Latin small letter r with cedilla":"","Latin small letter s with acute":"","Latin small letter s with caron":"","Latin small letter s with cedilla":"","Latin small letter s with circumflex":"","Latin small letter t with caron":"","Latin small letter t with cedilla":"","Latin small letter t with stroke":"","Latin small letter u with breve":"","Latin small letter u with double acute":"","Latin small letter u with macron":"","Latin small letter u with ogonek":"","Latin small letter u with ring above":"","Latin small letter u with tilde":"","Latin small letter w with circumflex":"","Latin small letter y with circumflex":"","Latin small letter z with acute":"","Latin small letter z with caron":"","Latin small letter z with dot above":"","Latin small ligature ij":"","Latin small ligature oe":"","Left double quotation mark":"","Left single quotation mark":"","Left-pointing double angle quotation mark":"","leftwards arrow to bar":"","leftwards dashed arrow":"","leftwards double arrow":"","Less-than or equal to":"","Less-than sign":"","Lira sign":"","Livre tournois sign":"","Logical and":"","Logical or":"",Macron:"","Manat sign":"","Mill sign":"","Minus sign":"","Multiplication sign":"","N-ary product":"","N-ary summation":"",Nabla:"","Naira sign":"","New sheqel sign":"","Nordic mark sign":"","Not an element of":"","Not equal to":"","Not sign":"","on with exclamation mark with left right arrow above":"",Overline:"","Paragraph sign":"","Partial differential":"","Per mille sign":"","Per ten thousand sign":"","Peseta sign":"","Peso sign":"علامتِ پیسو","Plus-minus sign":"","Pound sign":"","Proportional to":"","Question exclamation mark":"","Registered sign":"","Reversed paragraph sign":"","Right double quotation mark":"","Right single quotation mark":"","Right-pointing double angle quotation mark":"","rightwards arrow to bar":"","rightwards dashed arrow":"","rightwards double arrow":"","Ruble sign":"","Rupee sign":"","Section sign":"","Single left-pointing angle quotation mark":"","Single low-9 quotation mark":"","Single right-pointing angle quotation mark":"","soon with rightwards arrow above":"","Special characters":"","Spesmilo sign":"","Square root":"","Tenge sign":"","There exists":"","Tilde operator":"","top with upwards arrow above":"","Trade mark sign":"","Tugrik sign":"","Turkish lira sign":"","Two dot leader":"",Union:"","up down arrow with base":"","upwards arrow to bar":"","upwards dashed arrow":"","upwards double arrow":"","Vulgar fraction one half":"","Vulgar fraction one quarter":"","Vulgar fraction three quarters":"","Won sign":"","Yen sign":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(t){const a=t.ur=t.ur||{};a.dictionary=Object.assign(a.dictionary||{},{"Almost equal to":"",Angle:"","Approximately equal to":"","Asterisk operator":"","Austral sign":"","back with leftwards arrow above":"","Bitcoin sign":"","Cedi sign":"","Cent sign":"","Character categories":"","Colon sign":"","Contains as member":"","Copyright sign":"","Cruzeiro sign":"","Currency sign":"","Degree sign":"","Division sign":"","Dollar sign":"","Dong sign":"","Double dagger":"","Double exclamation mark":"","Double low-9 quotation mark":"","Double question mark":"","downwards arrow to bar":"","downwards dashed arrow":"","downwards double arrow":"","downwards simple arrow":"","Drachma sign":"علامتِ دراچمہ ","Element of":"","Em dash":"","Empty set":"","En dash":"","end with leftwards arrow above":"","Euro sign":"","Euro-currency sign":"","Exclamation question mark":"","For all":"","Fraction slash":"","French franc sign":"","German penny sign":"علامت جرمن پینی","Greater-than or equal to":"","Greater-than sign":"","Guarani sign":"علامتِ گوارانی","Horizontal ellipsis":"","Hryvnia sign":"","Identical to":"","Indian rupee sign":"انڈین روپیہ کی علامت",Infinity:"",Integral:"",Intersection:"","Inverted exclamation mark":"","Inverted question mark":"","Kip sign":"","Latin capital letter a with breve":"","Latin capital letter a with macron":"","Latin capital letter a with ogonek":"","Latin capital letter c with acute":"","Latin capital letter c with caron":"","Latin capital letter c with circumflex":"","Latin capital letter c with dot above":"","Latin capital letter d with caron":"","Latin capital letter d with stroke":"","Latin capital letter e with breve":"","Latin capital letter e with caron":"","Latin capital letter e with dot above":"","Latin capital letter e with macron":"","Latin capital letter e with ogonek":"","Latin capital letter eng":"","Latin capital letter g with breve":"","Latin capital letter g with cedilla":"","Latin capital letter g with circumflex":"","Latin capital letter g with dot above":"","Latin capital letter h with circumflex":"","Latin capital letter h with stroke":"","Latin capital letter i with breve":"","Latin capital letter i with dot above":"","Latin capital letter i with macron":"","Latin capital letter i with ogonek":"","Latin capital letter i with tilde":"","Latin capital letter j with circumflex":"","Latin capital letter k with cedilla":"","Latin capital letter l with acute":"","Latin capital letter l with caron":"","Latin capital letter l with cedilla":"","Latin capital letter l with middle dot":"","Latin capital letter l with stroke":"","Latin capital letter n with acute":"","Latin capital letter n with caron":"","Latin capital letter n with cedilla":"","Latin capital letter o with breve":"","Latin capital letter o with double acute":"","Latin capital letter o with macron":"","Latin capital letter r with acute":"","Latin capital letter r with caron":"","Latin capital letter r with cedilla":"","Latin capital letter s with acute":"","Latin capital letter s with caron":"","Latin capital letter s with cedilla":"","Latin capital letter s with circumflex":"","Latin capital letter t with caron":"","Latin capital letter t with cedilla":"","Latin capital letter t with stroke":"","Latin capital letter u with breve":"","Latin capital letter u with double acute":"","Latin capital letter u with macron":"","Latin capital letter u with ogonek":"","Latin capital letter u with ring above":"","Latin capital letter u with tilde":"","Latin capital letter w with circumflex":"","Latin capital letter y with circumflex":"","Latin capital letter y with diaeresis":"","Latin capital letter z with acute":"","Latin capital letter z with caron":"","Latin capital letter z with dot above":"","Latin capital ligature ij":"","Latin capital ligature oe":"","Latin small letter a with breve":"","Latin small letter a with macron":"","Latin small letter a with ogonek":"","Latin small letter c with acute":"","Latin small letter c with caron":"","Latin small letter c with circumflex":"","Latin small letter c with dot above":"","Latin small letter d with caron":"","Latin small letter d with stroke":"","Latin small letter dotless i":"","Latin small letter e with breve":"","Latin small letter e with caron":"","Latin small letter e with dot above":"","Latin small letter e with macron":"","Latin small letter e with ogonek":"","Latin small letter eng":"","Latin small letter f with hook":"","Latin small letter g with breve":"","Latin small letter g with cedilla":"","Latin small letter g with circumflex":"","Latin small letter g with dot above":"","Latin small letter h with circumflex":"","Latin small letter h with stroke":"","Latin small letter i with breve":"","Latin small letter i with macron":"","Latin small letter i with ogonek":"","Latin small letter i with tilde":"","Latin small letter j with circumflex":"","Latin small letter k with cedilla":"","Latin small letter kra":"","Latin small letter l with acute":"","Latin small letter l with caron":"","Latin small letter l with cedilla":"","Latin small letter l with middle dot":"","Latin small letter l with stroke":"","Latin small letter long s":"","Latin small letter n preceded by apostrophe":"","Latin small letter n with acute":"","Latin small letter n with caron":"","Latin small letter n with cedilla":"","Latin small letter o with breve":"","Latin small letter o with double acute":"","Latin small letter o with macron":"","Latin small letter r with acute":"","Latin small letter r with caron":"","Latin small letter r with cedilla":"","Latin small letter s with acute":"","Latin small letter s with caron":"","Latin small letter s with cedilla":"","Latin small letter s with circumflex":"","Latin small letter t with caron":"","Latin small letter t with cedilla":"","Latin small letter t with stroke":"","Latin small letter u with breve":"","Latin small letter u with double acute":"","Latin small letter u with macron":"","Latin small letter u with ogonek":"","Latin small letter u with ring above":"","Latin small letter u with tilde":"","Latin small letter w with circumflex":"","Latin small letter y with circumflex":"","Latin small letter z with acute":"","Latin small letter z with caron":"","Latin small letter z with dot above":"","Latin small ligature ij":"","Latin small ligature oe":"","Left double quotation mark":"","Left single quotation mark":"","Left-pointing double angle quotation mark":"","leftwards arrow to bar":"","leftwards dashed arrow":"","leftwards double arrow":"","leftwards simple arrow":"","Less-than or equal to":"","Less-than sign":"","Lira sign":"","Livre tournois sign":"","Logical and":"","Logical or":"",Macron:"","Manat sign":"","Mill sign":"","Minus sign":"","Multiplication sign":"","N-ary product":"","N-ary summation":"",Nabla:"","Naira sign":"","New sheqel sign":"","Nordic mark sign":"","Not an element of":"","Not equal to":"","Not sign":"","on with exclamation mark with left right arrow above":"",Overline:"","Paragraph sign":"","Partial differential":"","Per mille sign":"","Per ten thousand sign":"","Peseta sign":"","Peso sign":"علامتِ پیسو","Plus-minus sign":"","Pound sign":"","Proportional to":"","Question exclamation mark":"","Registered sign":"","Reversed paragraph sign":"","Right double quotation mark":"","Right single quotation mark":"","Right-pointing double angle quotation mark":"","rightwards arrow to bar":"","rightwards dashed arrow":"","rightwards double arrow":"","rightwards simple arrow":"","Ruble sign":"","Rupee sign":"","Section sign":"","Single left-pointing angle quotation mark":"","Single low-9 quotation mark":"","Single right-pointing angle quotation mark":"","soon with rightwards arrow above":"","Special characters":"","Spesmilo sign":"","Square root":"","Tenge sign":"","There exists":"","Tilde operator":"","top with upwards arrow above":"","Trade mark sign":"","Tugrik sign":"","Turkish lira sign":"","Two dot leader":"",Union:"","up down arrow with base":"","upwards arrow to bar":"","upwards dashed arrow":"","upwards double arrow":"","upwards simple arrow":"","Vulgar fraction one half":"","Vulgar fraction one quarter":"","Vulgar fraction three quarters":"","Won sign":"","Yen sign":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/special-characters/translations/uz.js b/core/assets/vendor/ckeditor5/special-characters/translations/uz.js
index 9041ea8f93..b664e41b13 100644
--- a/core/assets/vendor/ckeditor5/special-characters/translations/uz.js
+++ b/core/assets/vendor/ckeditor5/special-characters/translations/uz.js
@@ -1 +1 @@
-!function(t){const a=t.uz=t.uz||{};a.dictionary=Object.assign(a.dictionary||{},{"Almost equal to":"",Angle:"","Approximately equal to":"","Asterisk operator":"","Austral sign":"","back with leftwards arrow above":"","Bitcoin sign":"","Cedi sign":"","Cent sign":"","Character categories":"Kategoriyalar","Colon sign":"","Contains as member":"","Copyright sign":"","Cruzeiro sign":"","Currency sign":"","Degree sign":"","Division sign":"","Dollar sign":"","Dong sign":"","Double dagger":"","Double exclamation mark":"","Double low-9 quotation mark":"","Double question mark":"","downwards arrow to bar":"","downwards dashed arrow":"","downwards double arrow":"","Drachma sign":"","Element of":"","Em dash":"","Empty set":"","En dash":"","end with leftwards arrow above":"","Euro sign":"","Euro-currency sign":"","Exclamation question mark":"","For all":"","Fraction slash":"","French franc sign":"","German penny sign":"","Greater-than or equal to":"","Greater-than sign":"","Guarani sign":"","Horizontal ellipsis":"","Hryvnia sign":"","Identical to":"","Indian rupee sign":"",Infinity:"",Integral:"",Intersection:"","Inverted exclamation mark":"","Inverted question mark":"","Kip sign":"","Latin capital letter a with breve":"","Latin capital letter a with macron":"","Latin capital letter a with ogonek":"","Latin capital letter c with acute":"","Latin capital letter c with caron":"","Latin capital letter c with circumflex":"","Latin capital letter c with dot above":"","Latin capital letter d with caron":"","Latin capital letter d with stroke":"","Latin capital letter e with breve":"","Latin capital letter e with caron":"","Latin capital letter e with dot above":"","Latin capital letter e with macron":"","Latin capital letter e with ogonek":"","Latin capital letter eng":"","Latin capital letter g with breve":"","Latin capital letter g with cedilla":"","Latin capital letter g with circumflex":"","Latin capital letter g with dot above":"","Latin capital letter h with circumflex":"","Latin capital letter h with stroke":"","Latin capital letter i with breve":"","Latin capital letter i with dot above":"","Latin capital letter i with macron":"","Latin capital letter i with ogonek":"","Latin capital letter i with tilde":"","Latin capital letter j with circumflex":"","Latin capital letter k with cedilla":"","Latin capital letter l with acute":"","Latin capital letter l with caron":"","Latin capital letter l with cedilla":"","Latin capital letter l with middle dot":"","Latin capital letter l with stroke":"","Latin capital letter n with acute":"","Latin capital letter n with caron":"","Latin capital letter n with cedilla":"","Latin capital letter o with breve":"","Latin capital letter o with double acute":"","Latin capital letter o with macron":"","Latin capital letter r with acute":"","Latin capital letter r with caron":"","Latin capital letter r with cedilla":"","Latin capital letter s with acute":"","Latin capital letter s with caron":"","Latin capital letter s with cedilla":"","Latin capital letter s with circumflex":"","Latin capital letter t with caron":"","Latin capital letter t with cedilla":"","Latin capital letter t with stroke":"","Latin capital letter u with breve":"","Latin capital letter u with double acute":"","Latin capital letter u with macron":"","Latin capital letter u with ogonek":"","Latin capital letter u with ring above":"","Latin capital letter u with tilde":"","Latin capital letter w with circumflex":"","Latin capital letter y with circumflex":"","Latin capital letter y with diaeresis":"","Latin capital letter z with acute":"","Latin capital letter z with caron":"","Latin capital letter z with dot above":"","Latin capital ligature ij":"","Latin capital ligature oe":"","Latin small letter a with breve":"","Latin small letter a with macron":"","Latin small letter a with ogonek":"","Latin small letter c with acute":"","Latin small letter c with caron":"","Latin small letter c with circumflex":"","Latin small letter c with dot above":"","Latin small letter d with caron":"","Latin small letter d with stroke":"","Latin small letter dotless i":"","Latin small letter e with breve":"","Latin small letter e with caron":"","Latin small letter e with dot above":"","Latin small letter e with macron":"","Latin small letter e with ogonek":"","Latin small letter eng":"","Latin small letter f with hook":"","Latin small letter g with breve":"","Latin small letter g with cedilla":"","Latin small letter g with circumflex":"","Latin small letter g with dot above":"","Latin small letter h with circumflex":"","Latin small letter h with stroke":"","Latin small letter i with breve":"","Latin small letter i with macron":"","Latin small letter i with ogonek":"","Latin small letter i with tilde":"","Latin small letter j with circumflex":"","Latin small letter k with cedilla":"","Latin small letter kra":"","Latin small letter l with acute":"","Latin small letter l with caron":"","Latin small letter l with cedilla":"","Latin small letter l with middle dot":"","Latin small letter l with stroke":"","Latin small letter long s":"","Latin small letter n preceded by apostrophe":"","Latin small letter n with acute":"","Latin small letter n with caron":"","Latin small letter n with cedilla":"","Latin small letter o with breve":"","Latin small letter o with double acute":"","Latin small letter o with macron":"","Latin small letter r with acute":"","Latin small letter r with caron":"","Latin small letter r with cedilla":"","Latin small letter s with acute":"","Latin small letter s with caron":"","Latin small letter s with cedilla":"","Latin small letter s with circumflex":"","Latin small letter t with caron":"","Latin small letter t with cedilla":"","Latin small letter t with stroke":"","Latin small letter u with breve":"","Latin small letter u with double acute":"","Latin small letter u with macron":"","Latin small letter u with ogonek":"","Latin small letter u with ring above":"","Latin small letter u with tilde":"","Latin small letter w with circumflex":"","Latin small letter y with circumflex":"","Latin small letter z with acute":"","Latin small letter z with caron":"","Latin small letter z with dot above":"","Latin small ligature ij":"","Latin small ligature oe":"","Left double quotation mark":"","Left single quotation mark":"","Left-pointing double angle quotation mark":"","leftwards arrow to bar":"","leftwards dashed arrow":"","leftwards double arrow":"","Less-than or equal to":"","Less-than sign":"","Lira sign":"","Livre tournois sign":"","Logical and":"","Logical or":"",Macron:"","Manat sign":"","Mill sign":"","Minus sign":"","Multiplication sign":"","N-ary product":"","N-ary summation":"",Nabla:"","Naira sign":"","New sheqel sign":"","Nordic mark sign":"","Not an element of":"","Not equal to":"","Not sign":"","on with exclamation mark with left right arrow above":"",Overline:"","Paragraph sign":"","Partial differential":"","Per mille sign":"","Per ten thousand sign":"","Peseta sign":"","Peso sign":"","Plus-minus sign":"","Pound sign":"","Proportional to":"","Question exclamation mark":"","Registered sign":"","Reversed paragraph sign":"","Right double quotation mark":"","Right single quotation mark":"","Right-pointing double angle quotation mark":"","rightwards arrow to bar":"","rightwards dashed arrow":"","rightwards double arrow":"","Ruble sign":"","Rupee sign":"","Section sign":"","Single left-pointing angle quotation mark":"","Single low-9 quotation mark":"","Single right-pointing angle quotation mark":"","soon with rightwards arrow above":"","Special characters":"Maxsus belgilar","Spesmilo sign":"","Square root":"","Tenge sign":"","There exists":"","Tilde operator":"","top with upwards arrow above":"","Trade mark sign":"","Tugrik sign":"","Turkish lira sign":"","Two dot leader":"",Union:"","up down arrow with base":"","upwards arrow to bar":"","upwards dashed arrow":"","upwards double arrow":"","Vulgar fraction one half":"","Vulgar fraction one quarter":"","Vulgar fraction three quarters":"","Won sign":"","Yen sign":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(t){const a=t.uz=t.uz||{};a.dictionary=Object.assign(a.dictionary||{},{"Almost equal to":"",Angle:"","Approximately equal to":"","Asterisk operator":"","Austral sign":"","back with leftwards arrow above":"","Bitcoin sign":"","Cedi sign":"","Cent sign":"","Character categories":"Kategoriyalar","Colon sign":"","Contains as member":"","Copyright sign":"","Cruzeiro sign":"","Currency sign":"","Degree sign":"","Division sign":"","Dollar sign":"","Dong sign":"","Double dagger":"","Double exclamation mark":"","Double low-9 quotation mark":"","Double question mark":"","downwards arrow to bar":"","downwards dashed arrow":"","downwards double arrow":"","downwards simple arrow":"","Drachma sign":"","Element of":"","Em dash":"","Empty set":"","En dash":"","end with leftwards arrow above":"","Euro sign":"","Euro-currency sign":"","Exclamation question mark":"","For all":"","Fraction slash":"","French franc sign":"","German penny sign":"","Greater-than or equal to":"","Greater-than sign":"","Guarani sign":"","Horizontal ellipsis":"","Hryvnia sign":"","Identical to":"","Indian rupee sign":"",Infinity:"",Integral:"",Intersection:"","Inverted exclamation mark":"","Inverted question mark":"","Kip sign":"","Latin capital letter a with breve":"","Latin capital letter a with macron":"","Latin capital letter a with ogonek":"","Latin capital letter c with acute":"","Latin capital letter c with caron":"","Latin capital letter c with circumflex":"","Latin capital letter c with dot above":"","Latin capital letter d with caron":"","Latin capital letter d with stroke":"","Latin capital letter e with breve":"","Latin capital letter e with caron":"","Latin capital letter e with dot above":"","Latin capital letter e with macron":"","Latin capital letter e with ogonek":"","Latin capital letter eng":"","Latin capital letter g with breve":"","Latin capital letter g with cedilla":"","Latin capital letter g with circumflex":"","Latin capital letter g with dot above":"","Latin capital letter h with circumflex":"","Latin capital letter h with stroke":"","Latin capital letter i with breve":"","Latin capital letter i with dot above":"","Latin capital letter i with macron":"","Latin capital letter i with ogonek":"","Latin capital letter i with tilde":"","Latin capital letter j with circumflex":"","Latin capital letter k with cedilla":"","Latin capital letter l with acute":"","Latin capital letter l with caron":"","Latin capital letter l with cedilla":"","Latin capital letter l with middle dot":"","Latin capital letter l with stroke":"","Latin capital letter n with acute":"","Latin capital letter n with caron":"","Latin capital letter n with cedilla":"","Latin capital letter o with breve":"","Latin capital letter o with double acute":"","Latin capital letter o with macron":"","Latin capital letter r with acute":"","Latin capital letter r with caron":"","Latin capital letter r with cedilla":"","Latin capital letter s with acute":"","Latin capital letter s with caron":"","Latin capital letter s with cedilla":"","Latin capital letter s with circumflex":"","Latin capital letter t with caron":"","Latin capital letter t with cedilla":"","Latin capital letter t with stroke":"","Latin capital letter u with breve":"","Latin capital letter u with double acute":"","Latin capital letter u with macron":"","Latin capital letter u with ogonek":"","Latin capital letter u with ring above":"","Latin capital letter u with tilde":"","Latin capital letter w with circumflex":"","Latin capital letter y with circumflex":"","Latin capital letter y with diaeresis":"","Latin capital letter z with acute":"","Latin capital letter z with caron":"","Latin capital letter z with dot above":"","Latin capital ligature ij":"","Latin capital ligature oe":"","Latin small letter a with breve":"","Latin small letter a with macron":"","Latin small letter a with ogonek":"","Latin small letter c with acute":"","Latin small letter c with caron":"","Latin small letter c with circumflex":"","Latin small letter c with dot above":"","Latin small letter d with caron":"","Latin small letter d with stroke":"","Latin small letter dotless i":"","Latin small letter e with breve":"","Latin small letter e with caron":"","Latin small letter e with dot above":"","Latin small letter e with macron":"","Latin small letter e with ogonek":"","Latin small letter eng":"","Latin small letter f with hook":"","Latin small letter g with breve":"","Latin small letter g with cedilla":"","Latin small letter g with circumflex":"","Latin small letter g with dot above":"","Latin small letter h with circumflex":"","Latin small letter h with stroke":"","Latin small letter i with breve":"","Latin small letter i with macron":"","Latin small letter i with ogonek":"","Latin small letter i with tilde":"","Latin small letter j with circumflex":"","Latin small letter k with cedilla":"","Latin small letter kra":"","Latin small letter l with acute":"","Latin small letter l with caron":"","Latin small letter l with cedilla":"","Latin small letter l with middle dot":"","Latin small letter l with stroke":"","Latin small letter long s":"","Latin small letter n preceded by apostrophe":"","Latin small letter n with acute":"","Latin small letter n with caron":"","Latin small letter n with cedilla":"","Latin small letter o with breve":"","Latin small letter o with double acute":"","Latin small letter o with macron":"","Latin small letter r with acute":"","Latin small letter r with caron":"","Latin small letter r with cedilla":"","Latin small letter s with acute":"","Latin small letter s with caron":"","Latin small letter s with cedilla":"","Latin small letter s with circumflex":"","Latin small letter t with caron":"","Latin small letter t with cedilla":"","Latin small letter t with stroke":"","Latin small letter u with breve":"","Latin small letter u with double acute":"","Latin small letter u with macron":"","Latin small letter u with ogonek":"","Latin small letter u with ring above":"","Latin small letter u with tilde":"","Latin small letter w with circumflex":"","Latin small letter y with circumflex":"","Latin small letter z with acute":"","Latin small letter z with caron":"","Latin small letter z with dot above":"","Latin small ligature ij":"","Latin small ligature oe":"","Left double quotation mark":"","Left single quotation mark":"","Left-pointing double angle quotation mark":"","leftwards arrow to bar":"","leftwards dashed arrow":"","leftwards double arrow":"","leftwards simple arrow":"","Less-than or equal to":"","Less-than sign":"","Lira sign":"","Livre tournois sign":"","Logical and":"","Logical or":"",Macron:"","Manat sign":"","Mill sign":"","Minus sign":"","Multiplication sign":"","N-ary product":"","N-ary summation":"",Nabla:"","Naira sign":"","New sheqel sign":"","Nordic mark sign":"","Not an element of":"","Not equal to":"","Not sign":"","on with exclamation mark with left right arrow above":"",Overline:"","Paragraph sign":"","Partial differential":"","Per mille sign":"","Per ten thousand sign":"","Peseta sign":"","Peso sign":"","Plus-minus sign":"","Pound sign":"","Proportional to":"","Question exclamation mark":"","Registered sign":"","Reversed paragraph sign":"","Right double quotation mark":"","Right single quotation mark":"","Right-pointing double angle quotation mark":"","rightwards arrow to bar":"","rightwards dashed arrow":"","rightwards double arrow":"","rightwards simple arrow":"","Ruble sign":"","Rupee sign":"","Section sign":"","Single left-pointing angle quotation mark":"","Single low-9 quotation mark":"","Single right-pointing angle quotation mark":"","soon with rightwards arrow above":"","Special characters":"Maxsus belgilar","Spesmilo sign":"","Square root":"","Tenge sign":"","There exists":"","Tilde operator":"","top with upwards arrow above":"","Trade mark sign":"","Tugrik sign":"","Turkish lira sign":"","Two dot leader":"",Union:"","up down arrow with base":"","upwards arrow to bar":"","upwards dashed arrow":"","upwards double arrow":"","upwards simple arrow":"","Vulgar fraction one half":"","Vulgar fraction one quarter":"","Vulgar fraction three quarters":"","Won sign":"","Yen sign":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/special-characters/translations/vi.js b/core/assets/vendor/ckeditor5/special-characters/translations/vi.js
index 62f7f24eb2..b7902add6a 100644
--- a/core/assets/vendor/ckeditor5/special-characters/translations/vi.js
+++ b/core/assets/vendor/ckeditor5/special-characters/translations/vi.js
@@ -1 +1 @@
-!function(i){const t=i.vi=i.vi||{};t.dictionary=Object.assign(t.dictionary||{},{"Almost equal to":"Gần bằng",Angle:"Góc","Approximately equal to":"Xấp xỉ bằng","Asterisk operator":"Toán tử dấu hoa thị","Austral sign":"Ký hiệu Austral","back with leftwards arrow above":"back với mũi tên hướng sang trái ở trên","Bitcoin sign":"Ký hiệu Bitcoin","Cedi sign":"Ký hiệu Cedi","Cent sign":"Ký hiệu Cent","Character categories":"Danh mục ký tự","Colon sign":"Ký hiệu Colon","Contains as member":"Chứa","Copyright sign":"Ký hiệu bản quyền","Cruzeiro sign":"Ký hiệu Cruzeiro","Currency sign":"Ký hiệu tiền tệ","Degree sign":"Ký hiệu độ","Division sign":"Ký hiệu chia","Dollar sign":"Ký hiệu Đô la","Dong sign":"Ký hiệu Đồng","Double dagger":"Dấu chữ thập kép","Double exclamation mark":"Dấu chấm than kép","Double low-9 quotation mark":"Dấu nháy kép kiểu low-9","Double question mark":"Dấu chấm hỏi kép","downwards arrow to bar":"mũi tên hướng xuống dưới về phía thanh","downwards dashed arrow":"mũi tên đứt nét hướng xuống","downwards double arrow":"mũi tên kép hướng xuống","Drachma sign":"Ký hiệu Drachma","Element of":"Thuộc","Em dash":"Gạch ngang dài","Empty set":"Tập hợp rỗng","En dash":"Gạch ngang ngắn","end with leftwards arrow above":"end với mũi tên hướng sang trái ở trên","Euro sign":"Ký hiệu Euro","Euro-currency sign":"Ký hiệu tiền tệ Euro","Exclamation question mark":"Dấu chấm than và chấm hỏi","For all":"Với mọi","Fraction slash":"Dấu gạch chéo phân số","French franc sign":"Ký hiệu franc Pháp","German penny sign":"Ký hiệu penny Đức","Greater-than or equal to":"Lớn hơn hoặc bằng","Greater-than sign":"Ký hiệu lớn hơn","Guarani sign":"Ký hiệu Guarani","Horizontal ellipsis":"Dấu chấm lửng ngang","Hryvnia sign":"Ký hiệu Hryvnia","Identical to":"Tương đương","Indian rupee sign":"Ký hiệu rupee Ấn Độ",Infinity:"Vô cực",Integral:"Tích phân",Intersection:"Giao","Inverted exclamation mark":"Dấu chấm than ngược","Inverted question mark":"Dấu hỏi ngược","Kip sign":"Ký hiệu Kip","Latin capital letter a with breve":"Chữ cái Latinh a viết hoa với dấu trăng","Latin capital letter a with macron":"Chữ cái Latinh a viết hoa với dấu trường âm","Latin capital letter a with ogonek":"Chữ cái Latinh a viết hoa với dấu ogonek","Latin capital letter c with acute":"Chữ cái Latinh c viết hoa với dấu sắc","Latin capital letter c with caron":"Chữ cái Latinh c viết hoa với dấu mũ ngược","Latin capital letter c with circumflex":"Chữ cái Latinh c viết hoa với dấu mũ","Latin capital letter c with dot above":"Chữ cái Latinh c viết hoa với dấu chấm ở trên","Latin capital letter d with caron":"Chữ cái Latinh d viết hoa với dấu mũ ngược","Latin capital letter d with stroke":"Chữ cái Latinh d viết hoa với dấu gạch ngang","Latin capital letter e with breve":"Chữ cái Latinh e viết hoa với dấu trăng","Latin capital letter e with caron":"Chữ cái Latinh e viết hoa với dấu mũ ngược","Latin capital letter e with dot above":"Chữ cái Latinh e viết hoa với dấu chấm ở trên","Latin capital letter e with macron":"Chữ cái Latinh e viết hoa với dấu trường âm","Latin capital letter e with ogonek":"Chữ cái Latinh e viết hoa với dấu ogonek","Latin capital letter eng":"Chữ cái Latinh Ŋ viết hoa","Latin capital letter g with breve":"Chữ cái Latinh g viết hoa với dấu trăng","Latin capital letter g with cedilla":"Chữ cái Latinh g viết hoa với dấu móc dưới","Latin capital letter g with circumflex":"Chữ cái Latinh g viết hoa với dấu mũ","Latin capital letter g with dot above":"Chữ cái Latinh g viết hoa với dấu chấm ở trên","Latin capital letter h with circumflex":"Chữ cái Latinh h viết hoa với dấu mũ","Latin capital letter h with stroke":"Chữ cái Latinh h viết hoa với dấu gạch ngang","Latin capital letter i with breve":"Chữ cái Latinh i viết hoa với dấu trăng","Latin capital letter i with dot above":"Chữ cái Latinh i viết hoa với dấu chấm ở trên","Latin capital letter i with macron":"Chữ cái Latinh i viết hoa với dấu trường âm","Latin capital letter i with ogonek":"Chữ cái Latinh i viết hoa với dấu ogonek","Latin capital letter i with tilde":"Chữ cái Latinh i viết hoa với dấu ngã","Latin capital letter j with circumflex":"Chữ cái Latinh j viết hoa với dấu mũ","Latin capital letter k with cedilla":"Chữ cái Latinh k viết hoa với dấu móc dưới","Latin capital letter l with acute":"Chữ cái Latinh l viết hoa với dấu sắc","Latin capital letter l with caron":"Chữ cái Latinh l viết hoa với dấu mũ ngược","Latin capital letter l with cedilla":"Chữ cái Latinh l viết hoa với dấu móc dưới","Latin capital letter l with middle dot":"Chữ cái Latinh l viết hoa với dấu chấm ở giữa","Latin capital letter l with stroke":"Chữ cái Latinh l viết hoa với dấu gạch ngang","Latin capital letter n with acute":"Chữ cái Latinh n viết hoa với dấu sắc","Latin capital letter n with caron":"Chữ cái Latinh n viết hoa với dấu mũ ngược","Latin capital letter n with cedilla":"Chữ cái Latinh n viết hoa với dấu móc dưới","Latin capital letter o with breve":"Chữ cái Latinh o viết hoa với dấu trăng","Latin capital letter o with double acute":"Chữ cái Latinh o viết hoa với dấu sắc kép","Latin capital letter o with macron":"Chữ cái Latinh o viết hoa với dấu trường âm","Latin capital letter r with acute":"Chữ cái Latinh r viết hoa với dấu sắc","Latin capital letter r with caron":"Chữ cái Latinh r viết hoa với dấu mũ ngược","Latin capital letter r with cedilla":"Chữ cái Latinh r viết hoa với dấu móc dưới","Latin capital letter s with acute":"Chữ cái Latinh s viết hoa với dấu sắc","Latin capital letter s with caron":"Chữ cái Latinh s viết hoa với dấu mũ ngược","Latin capital letter s with cedilla":"Chữ cái Latinh s viết hoa với dấu móc dưới","Latin capital letter s with circumflex":"Chữ cái Latinh s viết hoa với dấu mũ","Latin capital letter t with caron":"Chữ cái Latinh t viết hoa với dấu mũ ngược","Latin capital letter t with cedilla":"Chữ cái Latinh t viết hoa với dấu móc dưới","Latin capital letter t with stroke":"Chữ cái Latinh t viết hoa với dấu gạch ngang","Latin capital letter u with breve":"Chữ cái Latinh u viết hoa với dấu trăng","Latin capital letter u with double acute":"Chữ cái Latinh u viết hoa với dấu sắc kép","Latin capital letter u with macron":"Chữ cái Latinh u viết hoa với dấu trường âm","Latin capital letter u with ogonek":"Chữ cái Latinh u viết hoa với dấu ogonek","Latin capital letter u with ring above":"Chữ cái Latinh u viết hoa với vòng tròn ở trên","Latin capital letter u with tilde":"Chữ cái Latinh u viết hoa với dấu ngã","Latin capital letter w with circumflex":"Chữ cái Latinh w viết hoa với dấu mũ","Latin capital letter y with circumflex":"Chữ cái Latinh y viết hoa với dấu mũ","Latin capital letter y with diaeresis":"Chữ cái Latinh y viết hoa với dấu tách đôi","Latin capital letter z with acute":"Chữ cái Latinh z viết hoa với dấu sắc","Latin capital letter z with caron":"Chữ cái Latinh z viết hoa với dấu mũ ngược","Latin capital letter z with dot above":"Chữ cái Latinh z viết hoa với dấu chấm ở trên","Latin capital ligature ij":"Chữ ghép Latinh ij viết hoa","Latin capital ligature oe":"Chữ ghép Latinh oe viết hoa","Latin small letter a with breve":"Chữ cái Latinh a viết thường với dấu trăng","Latin small letter a with macron":"Chữ cái Latinh a viết thường với dấu trường âm","Latin small letter a with ogonek":"Chữ cái Latinh a viết thường với dấu ogonek","Latin small letter c with acute":"Chữ cái Latinh c viết thường với dấu sắc","Latin small letter c with caron":"Chữ cái Latinh c viết thường với dấu mũ ngược","Latin small letter c with circumflex":"Chữ cái Latinh c viết thường với dấu mũ","Latin small letter c with dot above":"Chữ cái Latinh c viết thường với dấu chấm ở trên","Latin small letter d with caron":"Chữ cái Latinh d viết thường với dấu mũ ngược","Latin small letter d with stroke":"Chữ cái Latinh d viết thường với dấu gạch ngang","Latin small letter dotless i":"Chữ cái Latinh i viết thường không dấu chấm","Latin small letter e with breve":"Chữ cái Latinh e viết thường với dấu trăng","Latin small letter e with caron":"Chữ cái Latinh e viết thường với dấu mũ ngược","Latin small letter e with dot above":"Chữ cái Latinh e viết thường với dấu chấm ở trên","Latin small letter e with macron":"Chữ cái Latinh e viết thường với dấu trường âm","Latin small letter e with ogonek":"Chữ cái Latinh e viết thường với dấu ogonek","Latin small letter eng":"Chữ cái Latinh ŋ viết thường","Latin small letter f with hook":"Chữ cái Latinh f viết thường với móc","Latin small letter g with breve":"Chữ cái Latinh g viết thường với dấu trăng","Latin small letter g with cedilla":"Chữ cái Latinh g viết thường với dấu móc dưới","Latin small letter g with circumflex":"Chữ cái Latinh g viết thường với dấu mũ","Latin small letter g with dot above":"Chữ cái Latinh g viết thường với dấu chấm ở trên","Latin small letter h with circumflex":"Chữ cái Latinh h viết thường với dấu mũ","Latin small letter h with stroke":"Chữ cái Latinh h viết thường với dấu gạch ngang","Latin small letter i with breve":"Chữ cái Latinh i viết thường với dấu trăng","Latin small letter i with macron":"Chữ cái Latinh i viết thường với dấu trường âm","Latin small letter i with ogonek":"Chữ cái Latinh i viết thường với dấu ogonek","Latin small letter i with tilde":"Chữ cái Latinh i viết thường với dấu ngã","Latin small letter j with circumflex":"Chữ cái Latinh j viết thường với dấu mũ","Latin small letter k with cedilla":"Chữ cái Latinh k viết hoa với dấu móc dưới","Latin small letter kra":"Chữ cái Latinh k viết thường","Latin small letter l with acute":"Chữ cái Latinh l viết thường với dấu sắc","Latin small letter l with caron":"Chữ cái Latinh l viết thường với dấu mũ ngược","Latin small letter l with cedilla":"Chữ cái Latinh l viết thường với dấu móc dưới","Latin small letter l with middle dot":"Chữ cái Latinh l viết thường với dấu chấm ở giữa","Latin small letter l with stroke":"Chữ cái Latinh l viết thường với dấu gạch ngang","Latin small letter long s":"Chữ cái Latinh s dài viết thường","Latin small letter n preceded by apostrophe":"Chữ cái Latinh n viết thường có dấu viết lược đứng trước","Latin small letter n with acute":"Chữ cái Latinh n viết thường với dấu sắc","Latin small letter n with caron":"Chữ cái Latinh n viết thường với dấu mũ ngược","Latin small letter n with cedilla":"Chữ cái Latinh n viết thường với dấu móc dưới","Latin small letter o with breve":"Chữ cái Latinh o viết thường với dấu trăng","Latin small letter o with double acute":"Chữ cái Latinh o viết thường với dấu sắc kép","Latin small letter o with macron":"Chữ cái Latinh o viết thường với dấu trường âm","Latin small letter r with acute":"Chữ cái Latinh r viết thường với dấu sắc","Latin small letter r with caron":"Chữ cái Latinh r viết thường với dấu mũ ngược","Latin small letter r with cedilla":"Chữ cái Latinh r viết thường với dấu móc dưới","Latin small letter s with acute":"Chữ cái Latinh s viết thường với dấu sắc","Latin small letter s with caron":"Chữ cái Latinh s viết thường với dấu mũ ngược","Latin small letter s with cedilla":"Chữ cái Latinh s viết thường với dấu móc dưới","Latin small letter s with circumflex":"Chữ cái Latinh s viết thường với dấu mũ","Latin small letter t with caron":"Chữ cái Latinh t viết thường với dấu mũ ngược","Latin small letter t with cedilla":"Chữ cái Latinh t viết thường với dấu móc dưới","Latin small letter t with stroke":"Chữ cái Latinh t viết thường với dấu gạch ngang","Latin small letter u with breve":"Chữ cái Latinh u viết thường với dấu trăng","Latin small letter u with double acute":"Chữ cái Latinh u viết thường với dấu sắc kép","Latin small letter u with macron":"Chữ cái Latinh u viết thường với dấu trường âm","Latin small letter u with ogonek":"Chữ cái Latinh u viết thường với dấu ogonek","Latin small letter u with ring above":"Chữ cái Latinh u viết thường với vòng tròn ở trên","Latin small letter u with tilde":"Chữ cái Latinh u viết hoa với dấu ngã","Latin small letter w with circumflex":"Chữ cái Latinh w viết thường với dấu mũ","Latin small letter y with circumflex":"Chữ cái Latinh y viết thường với dấu mũ","Latin small letter z with acute":"Chữ cái Latinh z viết thường với dấu sắc","Latin small letter z with caron":"Chữ cái Latinh z viết thường với dấu mũ ngược","Latin small letter z with dot above":"Chữ cái Latinh z viết thường với dấu chấm ở trên","Latin small ligature ij":"Chữ ghép Latinh ij viết thường","Latin small ligature oe":"Chữ ghép Latinh oe viết thường","Left double quotation mark":"Dấu nháy kép bên trái","Left single quotation mark":"Dấu nháy đơn bên trái","Left-pointing double angle quotation mark":"Dấu nháy kép dạng góc chỉ sang bên trái","leftwards arrow to bar":"mũi tên hướng sang trái về phía thanh","leftwards dashed arrow":"mũi tên đứt nét hướng sang trái","leftwards double arrow":"mũi tên kép hướng sang trái","Less-than or equal to":"Nhỏ hơn hoặc bằng","Less-than sign":"Ký hiệu nhỏ hơn","Lira sign":"Ký hiệu Lira","Livre tournois sign":"Ký hiệu Livre tournois","Logical and":"Và logic","Logical or":"Hoặc logic",Macron:"Dấu trường âm","Manat sign":"Ký hiệu Manat","Mill sign":"Ký hiệu Mill","Minus sign":"Ký hiệu trừ","Multiplication sign":"Ký hiệu nhân","N-ary product":"Tích n số nguyên","N-ary summation":"Phép tổng n số nguyên",Nabla:"Nabla","Naira sign":"Ký hiệu Naira","New sheqel sign":"Ký hiệu Shekel mới","Nordic mark sign":"Ký hiệu Mác Bắc Âu","Not an element of":"Không thuộc","Not equal to":"Không bằng","Not sign":"Không","on with exclamation mark with left right arrow above":"on với dấu chấm than và mũi tên trái phải ở trên",Overline:"Gạch trên","Paragraph sign":"Ký hiệu đoạn văn","Partial differential":"Vi phân riêng phần","Per mille sign":"Ký hiệu phần nghìn","Per ten thousand sign":"Ký hiệu phần vạn","Peseta sign":"Ký hiệu Peseta","Peso sign":"Ký hiệu Peso","Plus-minus sign":"Ký hiệu cộng-trừ","Pound sign":"Ký hiệu Bảng Anh","Proportional to":"Tương ứng với","Question exclamation mark":"Dấu chấm hỏi và chấm than","Registered sign":"Ký hiệu đăng ký thương hiệu","Reversed paragraph sign":"Ký hiệu đoạn văn đảo ngược","Right double quotation mark":"Dấu nháy kép bên phải","Right single quotation mark":"Dấu nháy đơn bên phải","Right-pointing double angle quotation mark":"Dấu nháy kép dạng góc chỉ sang bên phải","rightwards arrow to bar":"mũi tên hướng sang phải về phía thanh","rightwards dashed arrow":"mũi tên đứt nét hướng sang phải","rightwards double arrow":"mũi tên kép hướng sang phải","Ruble sign":"Ký hiệu Rúp","Rupee sign":"Ký hiệu Rupee","Section sign":"Ký hiệu phân đoạn","Single left-pointing angle quotation mark":"Dấu nháy đơn dạng góc chỉ sang bên trái","Single low-9 quotation mark":"Dấu nháy đơn kiểu low-9","Single right-pointing angle quotation mark":"Dấu nháy đơn dạng góc chỉ sang bên phải","soon with rightwards arrow above":"soon với mũi tên hướng sang phải ở trên","Special characters":"Các ký tự đặc biệt","Spesmilo sign":"Ký hiệu Spesmilo","Square root":"Căn bậc hai","Tenge sign":"Ký hiệu Tenge","There exists":"Tồn tại","Tilde operator":"Toán tử dấu ngã","top with upwards arrow above":"top với mũi tên hướng lên ở trên","Trade mark sign":"Ký hiệu thương hiệu","Tugrik sign":"Ký hiệu Tögrög","Turkish lira sign":"Ký hiệu lira Thổ Nhĩ Kỳ","Two dot leader":"Hàng hai dấu chấm",Union:"Hợp","up down arrow with base":"mũi tên lên xuống có đế","upwards arrow to bar":"mũi tên hướng lên trên về phía thanh","upwards dashed arrow":"mũi tên đứt nét hướng lên","upwards double arrow":"mũi tên kép hướng lên","Vulgar fraction one half":"Phân số thường một phần hai","Vulgar fraction one quarter":"Phân số thường một phần tư","Vulgar fraction three quarters":"Phân số thường ba phần tư","Won sign":"Ký hiệu Won","Yen sign":"Ký hiệu Yên Nhật"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(i){const t=i.vi=i.vi||{};t.dictionary=Object.assign(t.dictionary||{},{"Almost equal to":"Gần bằng",Angle:"Góc","Approximately equal to":"Xấp xỉ bằng","Asterisk operator":"Toán tử dấu hoa thị","Austral sign":"Ký hiệu Austral","back with leftwards arrow above":"back với mũi tên hướng sang trái ở trên","Bitcoin sign":"Ký hiệu Bitcoin","Cedi sign":"Ký hiệu Cedi","Cent sign":"Ký hiệu Cent","Character categories":"Danh mục ký tự","Colon sign":"Ký hiệu Colon","Contains as member":"Chứa","Copyright sign":"Ký hiệu bản quyền","Cruzeiro sign":"Ký hiệu Cruzeiro","Currency sign":"Ký hiệu tiền tệ","Degree sign":"Ký hiệu độ","Division sign":"Ký hiệu chia","Dollar sign":"Ký hiệu Đô la","Dong sign":"Ký hiệu Đồng","Double dagger":"Dấu chữ thập kép","Double exclamation mark":"Dấu chấm than kép","Double low-9 quotation mark":"Dấu nháy kép kiểu low-9","Double question mark":"Dấu chấm hỏi kép","downwards arrow to bar":"mũi tên hướng xuống dưới về phía thanh","downwards dashed arrow":"mũi tên đứt nét hướng xuống","downwards double arrow":"mũi tên kép hướng xuống","downwards simple arrow":"mũi tên đơn giản chỉ xuống dưới","Drachma sign":"Ký hiệu Drachma","Element of":"Thuộc","Em dash":"Gạch ngang dài","Empty set":"Tập hợp rỗng","En dash":"Gạch ngang ngắn","end with leftwards arrow above":"end với mũi tên hướng sang trái ở trên","Euro sign":"Ký hiệu Euro","Euro-currency sign":"Ký hiệu tiền tệ Euro","Exclamation question mark":"Dấu chấm than và chấm hỏi","For all":"Với mọi","Fraction slash":"Dấu gạch chéo phân số","French franc sign":"Ký hiệu franc Pháp","German penny sign":"Ký hiệu penny Đức","Greater-than or equal to":"Lớn hơn hoặc bằng","Greater-than sign":"Ký hiệu lớn hơn","Guarani sign":"Ký hiệu Guarani","Horizontal ellipsis":"Dấu chấm lửng ngang","Hryvnia sign":"Ký hiệu Hryvnia","Identical to":"Tương đương","Indian rupee sign":"Ký hiệu rupee Ấn Độ",Infinity:"Vô cực",Integral:"Tích phân",Intersection:"Giao","Inverted exclamation mark":"Dấu chấm than ngược","Inverted question mark":"Dấu hỏi ngược","Kip sign":"Ký hiệu Kip","Latin capital letter a with breve":"Chữ cái Latinh a viết hoa với dấu trăng","Latin capital letter a with macron":"Chữ cái Latinh a viết hoa với dấu trường âm","Latin capital letter a with ogonek":"Chữ cái Latinh a viết hoa với dấu ogonek","Latin capital letter c with acute":"Chữ cái Latinh c viết hoa với dấu sắc","Latin capital letter c with caron":"Chữ cái Latinh c viết hoa với dấu mũ ngược","Latin capital letter c with circumflex":"Chữ cái Latinh c viết hoa với dấu mũ","Latin capital letter c with dot above":"Chữ cái Latinh c viết hoa với dấu chấm ở trên","Latin capital letter d with caron":"Chữ cái Latinh d viết hoa với dấu mũ ngược","Latin capital letter d with stroke":"Chữ cái Latinh d viết hoa với dấu gạch ngang","Latin capital letter e with breve":"Chữ cái Latinh e viết hoa với dấu trăng","Latin capital letter e with caron":"Chữ cái Latinh e viết hoa với dấu mũ ngược","Latin capital letter e with dot above":"Chữ cái Latinh e viết hoa với dấu chấm ở trên","Latin capital letter e with macron":"Chữ cái Latinh e viết hoa với dấu trường âm","Latin capital letter e with ogonek":"Chữ cái Latinh e viết hoa với dấu ogonek","Latin capital letter eng":"Chữ cái Latinh Ŋ viết hoa","Latin capital letter g with breve":"Chữ cái Latinh g viết hoa với dấu trăng","Latin capital letter g with cedilla":"Chữ cái Latinh g viết hoa với dấu móc dưới","Latin capital letter g with circumflex":"Chữ cái Latinh g viết hoa với dấu mũ","Latin capital letter g with dot above":"Chữ cái Latinh g viết hoa với dấu chấm ở trên","Latin capital letter h with circumflex":"Chữ cái Latinh h viết hoa với dấu mũ","Latin capital letter h with stroke":"Chữ cái Latinh h viết hoa với dấu gạch ngang","Latin capital letter i with breve":"Chữ cái Latinh i viết hoa với dấu trăng","Latin capital letter i with dot above":"Chữ cái Latinh i viết hoa với dấu chấm ở trên","Latin capital letter i with macron":"Chữ cái Latinh i viết hoa với dấu trường âm","Latin capital letter i with ogonek":"Chữ cái Latinh i viết hoa với dấu ogonek","Latin capital letter i with tilde":"Chữ cái Latinh i viết hoa với dấu ngã","Latin capital letter j with circumflex":"Chữ cái Latinh j viết hoa với dấu mũ","Latin capital letter k with cedilla":"Chữ cái Latinh k viết hoa với dấu móc dưới","Latin capital letter l with acute":"Chữ cái Latinh l viết hoa với dấu sắc","Latin capital letter l with caron":"Chữ cái Latinh l viết hoa với dấu mũ ngược","Latin capital letter l with cedilla":"Chữ cái Latinh l viết hoa với dấu móc dưới","Latin capital letter l with middle dot":"Chữ cái Latinh l viết hoa với dấu chấm ở giữa","Latin capital letter l with stroke":"Chữ cái Latinh l viết hoa với dấu gạch ngang","Latin capital letter n with acute":"Chữ cái Latinh n viết hoa với dấu sắc","Latin capital letter n with caron":"Chữ cái Latinh n viết hoa với dấu mũ ngược","Latin capital letter n with cedilla":"Chữ cái Latinh n viết hoa với dấu móc dưới","Latin capital letter o with breve":"Chữ cái Latinh o viết hoa với dấu trăng","Latin capital letter o with double acute":"Chữ cái Latinh o viết hoa với dấu sắc kép","Latin capital letter o with macron":"Chữ cái Latinh o viết hoa với dấu trường âm","Latin capital letter r with acute":"Chữ cái Latinh r viết hoa với dấu sắc","Latin capital letter r with caron":"Chữ cái Latinh r viết hoa với dấu mũ ngược","Latin capital letter r with cedilla":"Chữ cái Latinh r viết hoa với dấu móc dưới","Latin capital letter s with acute":"Chữ cái Latinh s viết hoa với dấu sắc","Latin capital letter s with caron":"Chữ cái Latinh s viết hoa với dấu mũ ngược","Latin capital letter s with cedilla":"Chữ cái Latinh s viết hoa với dấu móc dưới","Latin capital letter s with circumflex":"Chữ cái Latinh s viết hoa với dấu mũ","Latin capital letter t with caron":"Chữ cái Latinh t viết hoa với dấu mũ ngược","Latin capital letter t with cedilla":"Chữ cái Latinh t viết hoa với dấu móc dưới","Latin capital letter t with stroke":"Chữ cái Latinh t viết hoa với dấu gạch ngang","Latin capital letter u with breve":"Chữ cái Latinh u viết hoa với dấu trăng","Latin capital letter u with double acute":"Chữ cái Latinh u viết hoa với dấu sắc kép","Latin capital letter u with macron":"Chữ cái Latinh u viết hoa với dấu trường âm","Latin capital letter u with ogonek":"Chữ cái Latinh u viết hoa với dấu ogonek","Latin capital letter u with ring above":"Chữ cái Latinh u viết hoa với vòng tròn ở trên","Latin capital letter u with tilde":"Chữ cái Latinh u viết hoa với dấu ngã","Latin capital letter w with circumflex":"Chữ cái Latinh w viết hoa với dấu mũ","Latin capital letter y with circumflex":"Chữ cái Latinh y viết hoa với dấu mũ","Latin capital letter y with diaeresis":"Chữ cái Latinh y viết hoa với dấu tách đôi","Latin capital letter z with acute":"Chữ cái Latinh z viết hoa với dấu sắc","Latin capital letter z with caron":"Chữ cái Latinh z viết hoa với dấu mũ ngược","Latin capital letter z with dot above":"Chữ cái Latinh z viết hoa với dấu chấm ở trên","Latin capital ligature ij":"Chữ ghép Latinh ij viết hoa","Latin capital ligature oe":"Chữ ghép Latinh oe viết hoa","Latin small letter a with breve":"Chữ cái Latinh a viết thường với dấu trăng","Latin small letter a with macron":"Chữ cái Latinh a viết thường với dấu trường âm","Latin small letter a with ogonek":"Chữ cái Latinh a viết thường với dấu ogonek","Latin small letter c with acute":"Chữ cái Latinh c viết thường với dấu sắc","Latin small letter c with caron":"Chữ cái Latinh c viết thường với dấu mũ ngược","Latin small letter c with circumflex":"Chữ cái Latinh c viết thường với dấu mũ","Latin small letter c with dot above":"Chữ cái Latinh c viết thường với dấu chấm ở trên","Latin small letter d with caron":"Chữ cái Latinh d viết thường với dấu mũ ngược","Latin small letter d with stroke":"Chữ cái Latinh d viết thường với dấu gạch ngang","Latin small letter dotless i":"Chữ cái Latinh i viết thường không dấu chấm","Latin small letter e with breve":"Chữ cái Latinh e viết thường với dấu trăng","Latin small letter e with caron":"Chữ cái Latinh e viết thường với dấu mũ ngược","Latin small letter e with dot above":"Chữ cái Latinh e viết thường với dấu chấm ở trên","Latin small letter e with macron":"Chữ cái Latinh e viết thường với dấu trường âm","Latin small letter e with ogonek":"Chữ cái Latinh e viết thường với dấu ogonek","Latin small letter eng":"Chữ cái Latinh ŋ viết thường","Latin small letter f with hook":"Chữ cái Latinh f viết thường với móc","Latin small letter g with breve":"Chữ cái Latinh g viết thường với dấu trăng","Latin small letter g with cedilla":"Chữ cái Latinh g viết thường với dấu móc dưới","Latin small letter g with circumflex":"Chữ cái Latinh g viết thường với dấu mũ","Latin small letter g with dot above":"Chữ cái Latinh g viết thường với dấu chấm ở trên","Latin small letter h with circumflex":"Chữ cái Latinh h viết thường với dấu mũ","Latin small letter h with stroke":"Chữ cái Latinh h viết thường với dấu gạch ngang","Latin small letter i with breve":"Chữ cái Latinh i viết thường với dấu trăng","Latin small letter i with macron":"Chữ cái Latinh i viết thường với dấu trường âm","Latin small letter i with ogonek":"Chữ cái Latinh i viết thường với dấu ogonek","Latin small letter i with tilde":"Chữ cái Latinh i viết thường với dấu ngã","Latin small letter j with circumflex":"Chữ cái Latinh j viết thường với dấu mũ","Latin small letter k with cedilla":"Chữ cái Latinh k viết hoa với dấu móc dưới","Latin small letter kra":"Chữ cái Latinh k viết thường","Latin small letter l with acute":"Chữ cái Latinh l viết thường với dấu sắc","Latin small letter l with caron":"Chữ cái Latinh l viết thường với dấu mũ ngược","Latin small letter l with cedilla":"Chữ cái Latinh l viết thường với dấu móc dưới","Latin small letter l with middle dot":"Chữ cái Latinh l viết thường với dấu chấm ở giữa","Latin small letter l with stroke":"Chữ cái Latinh l viết thường với dấu gạch ngang","Latin small letter long s":"Chữ cái Latinh s dài viết thường","Latin small letter n preceded by apostrophe":"Chữ cái Latinh n viết thường có dấu viết lược đứng trước","Latin small letter n with acute":"Chữ cái Latinh n viết thường với dấu sắc","Latin small letter n with caron":"Chữ cái Latinh n viết thường với dấu mũ ngược","Latin small letter n with cedilla":"Chữ cái Latinh n viết thường với dấu móc dưới","Latin small letter o with breve":"Chữ cái Latinh o viết thường với dấu trăng","Latin small letter o with double acute":"Chữ cái Latinh o viết thường với dấu sắc kép","Latin small letter o with macron":"Chữ cái Latinh o viết thường với dấu trường âm","Latin small letter r with acute":"Chữ cái Latinh r viết thường với dấu sắc","Latin small letter r with caron":"Chữ cái Latinh r viết thường với dấu mũ ngược","Latin small letter r with cedilla":"Chữ cái Latinh r viết thường với dấu móc dưới","Latin small letter s with acute":"Chữ cái Latinh s viết thường với dấu sắc","Latin small letter s with caron":"Chữ cái Latinh s viết thường với dấu mũ ngược","Latin small letter s with cedilla":"Chữ cái Latinh s viết thường với dấu móc dưới","Latin small letter s with circumflex":"Chữ cái Latinh s viết thường với dấu mũ","Latin small letter t with caron":"Chữ cái Latinh t viết thường với dấu mũ ngược","Latin small letter t with cedilla":"Chữ cái Latinh t viết thường với dấu móc dưới","Latin small letter t with stroke":"Chữ cái Latinh t viết thường với dấu gạch ngang","Latin small letter u with breve":"Chữ cái Latinh u viết thường với dấu trăng","Latin small letter u with double acute":"Chữ cái Latinh u viết thường với dấu sắc kép","Latin small letter u with macron":"Chữ cái Latinh u viết thường với dấu trường âm","Latin small letter u with ogonek":"Chữ cái Latinh u viết thường với dấu ogonek","Latin small letter u with ring above":"Chữ cái Latinh u viết thường với vòng tròn ở trên","Latin small letter u with tilde":"Chữ cái Latinh u viết hoa với dấu ngã","Latin small letter w with circumflex":"Chữ cái Latinh w viết thường với dấu mũ","Latin small letter y with circumflex":"Chữ cái Latinh y viết thường với dấu mũ","Latin small letter z with acute":"Chữ cái Latinh z viết thường với dấu sắc","Latin small letter z with caron":"Chữ cái Latinh z viết thường với dấu mũ ngược","Latin small letter z with dot above":"Chữ cái Latinh z viết thường với dấu chấm ở trên","Latin small ligature ij":"Chữ ghép Latinh ij viết thường","Latin small ligature oe":"Chữ ghép Latinh oe viết thường","Left double quotation mark":"Dấu nháy kép bên trái","Left single quotation mark":"Dấu nháy đơn bên trái","Left-pointing double angle quotation mark":"Dấu nháy kép dạng góc chỉ sang bên trái","leftwards arrow to bar":"mũi tên hướng sang trái về phía thanh","leftwards dashed arrow":"mũi tên đứt nét hướng sang trái","leftwards double arrow":"mũi tên kép hướng sang trái","leftwards simple arrow":"mũi tên đơn giản chỉ sang trái","Less-than or equal to":"Nhỏ hơn hoặc bằng","Less-than sign":"Ký hiệu nhỏ hơn","Lira sign":"Ký hiệu Lira","Livre tournois sign":"Ký hiệu Livre tournois","Logical and":"Và logic","Logical or":"Hoặc logic",Macron:"Dấu trường âm","Manat sign":"Ký hiệu Manat","Mill sign":"Ký hiệu Mill","Minus sign":"Ký hiệu trừ","Multiplication sign":"Ký hiệu nhân","N-ary product":"Tích n số nguyên","N-ary summation":"Phép tổng n số nguyên",Nabla:"Nabla","Naira sign":"Ký hiệu Naira","New sheqel sign":"Ký hiệu Shekel mới","Nordic mark sign":"Ký hiệu Mác Bắc Âu","Not an element of":"Không thuộc","Not equal to":"Không bằng","Not sign":"Không","on with exclamation mark with left right arrow above":"on với dấu chấm than và mũi tên trái phải ở trên",Overline:"Gạch trên","Paragraph sign":"Ký hiệu đoạn văn","Partial differential":"Vi phân riêng phần","Per mille sign":"Ký hiệu phần nghìn","Per ten thousand sign":"Ký hiệu phần vạn","Peseta sign":"Ký hiệu Peseta","Peso sign":"Ký hiệu Peso","Plus-minus sign":"Ký hiệu cộng-trừ","Pound sign":"Ký hiệu Bảng Anh","Proportional to":"Tương ứng với","Question exclamation mark":"Dấu chấm hỏi và chấm than","Registered sign":"Ký hiệu đăng ký thương hiệu","Reversed paragraph sign":"Ký hiệu đoạn văn đảo ngược","Right double quotation mark":"Dấu nháy kép bên phải","Right single quotation mark":"Dấu nháy đơn bên phải","Right-pointing double angle quotation mark":"Dấu nháy kép dạng góc chỉ sang bên phải","rightwards arrow to bar":"mũi tên hướng sang phải về phía thanh","rightwards dashed arrow":"mũi tên đứt nét hướng sang phải","rightwards double arrow":"mũi tên kép hướng sang phải","rightwards simple arrow":"mũi tên đơn giản chỉ sang phải","Ruble sign":"Ký hiệu Rúp","Rupee sign":"Ký hiệu Rupee","Section sign":"Ký hiệu phân đoạn","Single left-pointing angle quotation mark":"Dấu nháy đơn dạng góc chỉ sang bên trái","Single low-9 quotation mark":"Dấu nháy đơn kiểu low-9","Single right-pointing angle quotation mark":"Dấu nháy đơn dạng góc chỉ sang bên phải","soon with rightwards arrow above":"soon với mũi tên hướng sang phải ở trên","Special characters":"Các ký tự đặc biệt","Spesmilo sign":"Ký hiệu Spesmilo","Square root":"Căn bậc hai","Tenge sign":"Ký hiệu Tenge","There exists":"Tồn tại","Tilde operator":"Toán tử dấu ngã","top with upwards arrow above":"top với mũi tên hướng lên ở trên","Trade mark sign":"Ký hiệu thương hiệu","Tugrik sign":"Ký hiệu Tögrög","Turkish lira sign":"Ký hiệu lira Thổ Nhĩ Kỳ","Two dot leader":"Hàng hai dấu chấm",Union:"Hợp","up down arrow with base":"mũi tên lên xuống có đế","upwards arrow to bar":"mũi tên hướng lên trên về phía thanh","upwards dashed arrow":"mũi tên đứt nét hướng lên","upwards double arrow":"mũi tên kép hướng lên","upwards simple arrow":"mũi tên đơn giản chỉ lên trên","Vulgar fraction one half":"Phân số thường một phần hai","Vulgar fraction one quarter":"Phân số thường một phần tư","Vulgar fraction three quarters":"Phân số thường ba phần tư","Won sign":"Ký hiệu Won","Yen sign":"Ký hiệu Yên Nhật"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/special-characters/translations/zh-cn.js b/core/assets/vendor/ckeditor5/special-characters/translations/zh-cn.js
index 729a8f8e4b..0d78e9dd36 100644
--- a/core/assets/vendor/ckeditor5/special-characters/translations/zh-cn.js
+++ b/core/assets/vendor/ckeditor5/special-characters/translations/zh-cn.js
@@ -1 +1 @@
-!function(t){const a=t["zh-cn"]=t["zh-cn"]||{};a.dictionary=Object.assign(a.dictionary||{},{"Almost equal to":"约等于",Angle:"角","Approximately equal to":"近似等于","Asterisk operator":"星号运算符","Austral sign":"澳大利亚货币符号","back with leftwards arrow above":"带有back标识的向左箭头","Bitcoin sign":"比特币符号","Cedi sign":"塞地符号","Cent sign":"分币符号","Character categories":"字符类别","Colon sign":"科朗符号","Contains as member":"包含","Copyright sign":"版权符号","Cruzeiro sign":"克鲁塞罗符号","Currency sign":"货币符号","Degree sign":"度数符号","Division sign":"除号","Dollar sign":"美元符号","Dong sign":"越南盾符号","Double dagger":"双剑号","Double exclamation mark":"双叹号","Double low-9 quotation mark":"低位后双引号","Double question mark":"双问号","downwards arrow to bar":"头部带杠的向下箭头","downwards dashed arrow":"向下虚线箭头","downwards double arrow":"向下双箭头","Drachma sign":"德拉克马符号","Element of":"属于","Em dash":"长破折号","Empty set":"空集","En dash":"短破折号","end with leftwards arrow above":"带有end标识的向左箭头","Euro sign":"欧元符号","Euro-currency sign":"欧元货币符号","Exclamation question mark":"感叹疑问号","For all":"对于全部","Fraction slash":"分数斜线","French franc sign":"法国法郎符号","German penny sign":"德国便士符号","Greater-than or equal to":"大于等于","Greater-than sign":"大于号","Guarani sign":"瓜拉尼货币符号","Horizontal ellipsis":"省略号","Hryvnia sign":"戈里夫纳符号","Identical to":"恒等于","Indian rupee sign":"印度卢比符号",Infinity:"无穷大",Integral:"积分",Intersection:"交集","Inverted exclamation mark":"反感叹号","Inverted question mark":"反问号","Kip sign":" 基普符号","Latin capital letter a with breve":"带短音符的大写拉丁字母a","Latin capital letter a with macron":"带长音符的大写拉丁字母a","Latin capital letter a with ogonek":"带反尾形符的大写拉丁字母a","Latin capital letter c with acute":"带锐音符的大写拉丁字母c","Latin capital letter c with caron":"带抑扬符的大写拉丁字母c","Latin capital letter c with circumflex":"带扬抑符的大写拉丁字母c","Latin capital letter c with dot above":"带上点的大写拉丁字母c","Latin capital letter d with caron":"带抑扬符的大写拉丁字母d","Latin capital letter d with stroke":"带删节线的大写拉丁字母d","Latin capital letter e with breve":"带短音符的大写拉丁字母e","Latin capital letter e with caron":"带抑扬符的大写拉丁字母e","Latin capital letter e with dot above":"带上点的大写拉丁字母e","Latin capital letter e with macron":"带长音符的大写拉丁字母e","Latin capital letter e with ogonek":"带反尾形符的大写拉丁字母e","Latin capital letter eng":"大写拉丁字母eng","Latin capital letter g with breve":"带短音符的大写拉丁字母g","Latin capital letter g with cedilla":"带软音符的大写拉丁字母g","Latin capital letter g with circumflex":"带扬抑符的大写拉丁字母g","Latin capital letter g with dot above":"带上点的大写拉丁字母g","Latin capital letter h with circumflex":"带扬抑符的大写拉丁字母h","Latin capital letter h with stroke":"带删节线的大写拉丁字母h","Latin capital letter i with breve":"带短音符的大写拉丁字母i","Latin capital letter i with dot above":"带上点的大写拉丁字母i","Latin capital letter i with macron":"带长音符的大写拉丁字母i","Latin capital letter i with ogonek":"带反尾形符的大写拉丁字母i","Latin capital letter i with tilde":"带腭化符的大写拉丁字母i","Latin capital letter j with circumflex":"带扬抑符的大写拉丁字母j","Latin capital letter k with cedilla":"带软音符的大写拉丁字母k","Latin capital letter l with acute":"带锐音符的大写拉丁字母l","Latin capital letter l with caron":"带抑扬符的大写拉丁字母l","Latin capital letter l with cedilla":"带软音符的大写拉丁字母l","Latin capital letter l with middle dot":"带中点的大写拉丁字母l","Latin capital letter l with stroke":"带删节线的大写拉丁字母l","Latin capital letter n with acute":"带锐音符的大写拉丁字母n","Latin capital letter n with caron":"带抑扬符的大写拉丁字母n","Latin capital letter n with cedilla":"带软音符的大写拉丁字母n","Latin capital letter o with breve":"带短音符的大写拉丁字母o","Latin capital letter o with double acute":"带双锐音符的大写拉丁字母o","Latin capital letter o with macron":"带长音符的大写拉丁字母o","Latin capital letter r with acute":"带锐音符的大写拉丁字母r","Latin capital letter r with caron":"带抑扬符的大写拉丁字母r","Latin capital letter r with cedilla":"带软音符的大写拉丁字母r","Latin capital letter s with acute":"带锐音符的大写拉丁字母s","Latin capital letter s with caron":"带抑扬符的大写拉丁字母s","Latin capital letter s with cedilla":"带软音符的大写拉丁字母s","Latin capital letter s with circumflex":"带扬抑符的大写拉丁字母s","Latin capital letter t with caron":"带抑扬符的大写拉丁字母t","Latin capital letter t with cedilla":"带软音符的大写拉丁字母t","Latin capital letter t with stroke":"带删节线的大写拉丁字母t","Latin capital letter u with breve":"带短音符的大写拉丁字母u","Latin capital letter u with double acute":"带双锐音符的大写拉丁字母u","Latin capital letter u with macron":"带长音符的大写拉丁字母u","Latin capital letter u with ogonek":"带反尾形符的大写拉丁字母u","Latin capital letter u with ring above":"带上圆圈的大写拉丁字母u","Latin capital letter u with tilde":"带腭化符的大写拉丁字母u","Latin capital letter w with circumflex":"带扬抑符的大写拉丁字母w","Latin capital letter y with circumflex":"带扬抑符的大写拉丁字母y","Latin capital letter y with diaeresis":"带分音符的大写拉丁字母y","Latin capital letter z with acute":"带锐音符的大写拉丁字母z","Latin capital letter z with caron":"带抑扬符的大写拉丁字母z","Latin capital letter z with dot above":"带上点的大写拉丁字母z","Latin capital ligature ij":"大写拉丁连字符ij","Latin capital ligature oe":"大写拉丁连字符oe","Latin small letter a with breve":"带短音符的小写拉丁字母a","Latin small letter a with macron":"带长音符的小写拉丁字母a","Latin small letter a with ogonek":"带反尾形符的小写拉丁字母a","Latin small letter c with acute":"带锐音符的小写拉丁字母c","Latin small letter c with caron":"带抑扬符的小写拉丁字母c","Latin small letter c with circumflex":"带扬抑符的小写拉丁字母c","Latin small letter c with dot above":"带上点的小写拉丁字母c","Latin small letter d with caron":"带抑扬符的小写拉丁字母d","Latin small letter d with stroke":"带删节线的小写拉丁字母d","Latin small letter dotless i":"没有点的小写拉丁字母i","Latin small letter e with breve":"带短音符的小写拉丁字母e","Latin small letter e with caron":"带抑扬符的小写拉丁字母e","Latin small letter e with dot above":"带上点的小写拉丁字母e","Latin small letter e with macron":"带长音符的小写拉丁字母e","Latin small letter e with ogonek":"带反尾形符的小写拉丁字母e","Latin small letter eng":"小写拉丁字母eng","Latin small letter f with hook":"带钩的拉丁文小写字母 F","Latin small letter g with breve":"带短音符的小写拉丁字母g","Latin small letter g with cedilla":"带软音符的小写拉丁字母g","Latin small letter g with circumflex":"带扬抑符的小写拉丁字母g","Latin small letter g with dot above":"带上点的小写拉丁字母g","Latin small letter h with circumflex":"带扬抑符的小写拉丁字母h","Latin small letter h with stroke":"带删节线的小写拉丁字母h","Latin small letter i with breve":"带短音符的小写拉丁字母i","Latin small letter i with macron":"带长音符的小写拉丁字母i","Latin small letter i with ogonek":"带反尾形符的小写拉丁字母i","Latin small letter i with tilde":"带腭化符的小写拉丁字母i","Latin small letter j with circumflex":"带扬抑符的小写拉丁字母j","Latin small letter k with cedilla":"带软音符的小写拉丁字母k","Latin small letter kra":"小写拉丁字母kra","Latin small letter l with acute":"带锐音符的小写拉丁字母l","Latin small letter l with caron":"带抑扬符的小写拉丁字母l","Latin small letter l with cedilla":"带软音符的小写拉丁字母l","Latin small letter l with middle dot":"带中点的小写拉丁字母l","Latin small letter l with stroke":"带删节线的小写拉丁字母l","Latin small letter long s":"小写拉丁字母长s","Latin small letter n preceded by apostrophe":"冠以撇号的小写拉丁字母n","Latin small letter n with acute":"带锐音符的小写拉丁字母n","Latin small letter n with caron":"带抑扬符的小写拉丁字母n","Latin small letter n with cedilla":"带软音符的小写拉丁字母n","Latin small letter o with breve":"带短音符的小写拉丁字母o","Latin small letter o with double acute":"带双锐音符的小写拉丁字母o","Latin small letter o with macron":"带长音符的小写拉丁字母o","Latin small letter r with acute":"带锐音符的小写拉丁字母r","Latin small letter r with caron":"带抑扬符的小写拉丁字母r","Latin small letter r with cedilla":"带软音符的小写拉丁字母r","Latin small letter s with acute":"带锐音符的小写拉丁字母s","Latin small letter s with caron":"带抑扬符的小写拉丁字母s","Latin small letter s with cedilla":"带软音符的小写拉丁字母s","Latin small letter s with circumflex":"带扬抑符的小写拉丁字母s","Latin small letter t with caron":"带抑扬符的小写拉丁字母t","Latin small letter t with cedilla":"带软音符的小写拉丁字母t","Latin small letter t with stroke":"带删节线的小写拉丁字母t","Latin small letter u with breve":"带短音符的小写拉丁字母u","Latin small letter u with double acute":"带双锐音符的小写拉丁字母u","Latin small letter u with macron":"带长音符的小写拉丁字母u","Latin small letter u with ogonek":"带反尾形符的小写拉丁字母u","Latin small letter u with ring above":"带上圆圈的小写拉丁字母u","Latin small letter u with tilde":"带腭化符的小写拉丁字母u","Latin small letter w with circumflex":"带扬抑符的小写拉丁字母w","Latin small letter y with circumflex":"带扬抑符的小写拉丁字母y","Latin small letter z with acute":"带锐音符的小写拉丁字母z","Latin small letter z with caron":"带抑扬符的小写拉丁字母z","Latin small letter z with dot above":"带上点的小写拉丁字母z","Latin small ligature ij":"小写拉丁连字符ij","Latin small ligature oe":"小写拉丁连字符oe","Left double quotation mark":"左双引号","Left single quotation mark":"左单引号","Left-pointing double angle quotation mark":"双左尖括号","leftwards arrow to bar":"头部带杠的向左箭头","leftwards dashed arrow":"向左虚线箭头","leftwards double arrow":"向左双箭头","Less-than or equal to":"小于等于","Less-than sign":"小于号","Lira sign":"里拉符号","Livre tournois sign":"里弗尔符号","Logical and":"逻辑与","Logical or":"逻辑或",Macron:"长音符号","Manat sign":"马纳特符号","Mill sign":"密尔符号","Minus sign":"负号","Multiplication sign":"称号","N-ary product":"N 元乘积","N-ary summation":"N 元求和",Nabla:"劈形算符","Naira sign":"奈拉符号","New sheqel sign":"新谢克尔符号","Nordic mark sign":"北欧马克征符号","Not an element of":"不属于","Not equal to":"不等于","Not sign":"非","on with exclamation mark with left right arrow above":"带有NO！标识的左右双向箭头",Overline:"上划线","Paragraph sign":"段落符号","Partial differential":"偏微分","Per mille sign":"千分号","Per ten thousand sign":"万分号","Peseta sign":"比塞塔符号","Peso sign":"比索符号","Plus-minus sign":"正负号","Pound sign":"英镑符号","Proportional to":"比例","Question exclamation mark":"疑问感叹号","Registered sign":"注册商标","Reversed paragraph sign":"反向段落符号","Right double quotation mark":"右双引号","Right single quotation mark":"右单引号","Right-pointing double angle quotation mark":"双右尖括号","rightwards arrow to bar":"头部带杠的向右箭头","rightwards dashed arrow":"向右虚线箭头","rightwards double arrow":"向右双箭头","Ruble sign":"俄罗斯卢布","Rupee sign":"卢比符号","Section sign":"节标记","Single left-pointing angle quotation mark":"单左尖括号","Single low-9 quotation mark":"低位后单引号","Single right-pointing angle quotation mark":"单右尖括号","soon with rightwards arrow above":"带有soon标识的向右箭头","Special characters":"特殊字符","Spesmilo sign":"斯佩斯米洛符号","Square root":"平方根","Tenge sign":"坚戈符号","There exists":"存在","Tilde operator":"波浪线运算符","top with upwards arrow above":"带有top标识的向上箭头","Trade mark sign":"商标符号","Tugrik sign":"图格里克符号","Turkish lira sign":"土耳其里拉符号","Two dot leader":"二点前导符",Union:"并集","up down arrow with base":"处于基线的上下箭头","upwards arrow to bar":"头部带杠的向上箭头","upwards dashed arrow":"向上虚线箭头","upwards double arrow":"向上双箭头","Vulgar fraction one half":"普通分数二分之一","Vulgar fraction one quarter":"普通分数四分之一","Vulgar fraction three quarters":"普通分数四分之三","Won sign":"韩元符号","Yen sign":"日元符号"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(t){const a=t["zh-cn"]=t["zh-cn"]||{};a.dictionary=Object.assign(a.dictionary||{},{"Almost equal to":"约等于",Angle:"角","Approximately equal to":"近似等于","Asterisk operator":"星号运算符","Austral sign":"澳大利亚货币符号","back with leftwards arrow above":"带有back标识的向左箭头","Bitcoin sign":"比特币符号","Cedi sign":"塞地符号","Cent sign":"分币符号","Character categories":"字符类别","Colon sign":"科朗符号","Contains as member":"包含","Copyright sign":"版权符号","Cruzeiro sign":"克鲁塞罗符号","Currency sign":"货币符号","Degree sign":"度数符号","Division sign":"除号","Dollar sign":"美元符号","Dong sign":"越南盾符号","Double dagger":"双剑号","Double exclamation mark":"双叹号","Double low-9 quotation mark":"低位后双引号","Double question mark":"双问号","downwards arrow to bar":"头部带杠的向下箭头","downwards dashed arrow":"向下虚线箭头","downwards double arrow":"向下双箭头","downwards simple arrow":"向下简单箭头","Drachma sign":"德拉克马符号","Element of":"属于","Em dash":"长破折号","Empty set":"空集","En dash":"短破折号","end with leftwards arrow above":"带有end标识的向左箭头","Euro sign":"欧元符号","Euro-currency sign":"欧元货币符号","Exclamation question mark":"感叹疑问号","For all":"对于全部","Fraction slash":"分数斜线","French franc sign":"法国法郎符号","German penny sign":"德国便士符号","Greater-than or equal to":"大于等于","Greater-than sign":"大于号","Guarani sign":"瓜拉尼货币符号","Horizontal ellipsis":"省略号","Hryvnia sign":"戈里夫纳符号","Identical to":"恒等于","Indian rupee sign":"印度卢比符号",Infinity:"无穷大",Integral:"积分",Intersection:"交集","Inverted exclamation mark":"反感叹号","Inverted question mark":"反问号","Kip sign":" 基普符号","Latin capital letter a with breve":"带短音符的大写拉丁字母a","Latin capital letter a with macron":"带长音符的大写拉丁字母a","Latin capital letter a with ogonek":"带反尾形符的大写拉丁字母a","Latin capital letter c with acute":"带锐音符的大写拉丁字母c","Latin capital letter c with caron":"带抑扬符的大写拉丁字母c","Latin capital letter c with circumflex":"带扬抑符的大写拉丁字母c","Latin capital letter c with dot above":"带上点的大写拉丁字母c","Latin capital letter d with caron":"带抑扬符的大写拉丁字母d","Latin capital letter d with stroke":"带删节线的大写拉丁字母d","Latin capital letter e with breve":"带短音符的大写拉丁字母e","Latin capital letter e with caron":"带抑扬符的大写拉丁字母e","Latin capital letter e with dot above":"带上点的大写拉丁字母e","Latin capital letter e with macron":"带长音符的大写拉丁字母e","Latin capital letter e with ogonek":"带反尾形符的大写拉丁字母e","Latin capital letter eng":"大写拉丁字母eng","Latin capital letter g with breve":"带短音符的大写拉丁字母g","Latin capital letter g with cedilla":"带软音符的大写拉丁字母g","Latin capital letter g with circumflex":"带扬抑符的大写拉丁字母g","Latin capital letter g with dot above":"带上点的大写拉丁字母g","Latin capital letter h with circumflex":"带扬抑符的大写拉丁字母h","Latin capital letter h with stroke":"带删节线的大写拉丁字母h","Latin capital letter i with breve":"带短音符的大写拉丁字母i","Latin capital letter i with dot above":"带上点的大写拉丁字母i","Latin capital letter i with macron":"带长音符的大写拉丁字母i","Latin capital letter i with ogonek":"带反尾形符的大写拉丁字母i","Latin capital letter i with tilde":"带腭化符的大写拉丁字母i","Latin capital letter j with circumflex":"带扬抑符的大写拉丁字母j","Latin capital letter k with cedilla":"带软音符的大写拉丁字母k","Latin capital letter l with acute":"带锐音符的大写拉丁字母l","Latin capital letter l with caron":"带抑扬符的大写拉丁字母l","Latin capital letter l with cedilla":"带软音符的大写拉丁字母l","Latin capital letter l with middle dot":"带中点的大写拉丁字母l","Latin capital letter l with stroke":"带删节线的大写拉丁字母l","Latin capital letter n with acute":"带锐音符的大写拉丁字母n","Latin capital letter n with caron":"带抑扬符的大写拉丁字母n","Latin capital letter n with cedilla":"带软音符的大写拉丁字母n","Latin capital letter o with breve":"带短音符的大写拉丁字母o","Latin capital letter o with double acute":"带双锐音符的大写拉丁字母o","Latin capital letter o with macron":"带长音符的大写拉丁字母o","Latin capital letter r with acute":"带锐音符的大写拉丁字母r","Latin capital letter r with caron":"带抑扬符的大写拉丁字母r","Latin capital letter r with cedilla":"带软音符的大写拉丁字母r","Latin capital letter s with acute":"带锐音符的大写拉丁字母s","Latin capital letter s with caron":"带抑扬符的大写拉丁字母s","Latin capital letter s with cedilla":"带软音符的大写拉丁字母s","Latin capital letter s with circumflex":"带扬抑符的大写拉丁字母s","Latin capital letter t with caron":"带抑扬符的大写拉丁字母t","Latin capital letter t with cedilla":"带软音符的大写拉丁字母t","Latin capital letter t with stroke":"带删节线的大写拉丁字母t","Latin capital letter u with breve":"带短音符的大写拉丁字母u","Latin capital letter u with double acute":"带双锐音符的大写拉丁字母u","Latin capital letter u with macron":"带长音符的大写拉丁字母u","Latin capital letter u with ogonek":"带反尾形符的大写拉丁字母u","Latin capital letter u with ring above":"带上圆圈的大写拉丁字母u","Latin capital letter u with tilde":"带腭化符的大写拉丁字母u","Latin capital letter w with circumflex":"带扬抑符的大写拉丁字母w","Latin capital letter y with circumflex":"带扬抑符的大写拉丁字母y","Latin capital letter y with diaeresis":"带分音符的大写拉丁字母y","Latin capital letter z with acute":"带锐音符的大写拉丁字母z","Latin capital letter z with caron":"带抑扬符的大写拉丁字母z","Latin capital letter z with dot above":"带上点的大写拉丁字母z","Latin capital ligature ij":"大写拉丁连字符ij","Latin capital ligature oe":"大写拉丁连字符oe","Latin small letter a with breve":"带短音符的小写拉丁字母a","Latin small letter a with macron":"带长音符的小写拉丁字母a","Latin small letter a with ogonek":"带反尾形符的小写拉丁字母a","Latin small letter c with acute":"带锐音符的小写拉丁字母c","Latin small letter c with caron":"带抑扬符的小写拉丁字母c","Latin small letter c with circumflex":"带扬抑符的小写拉丁字母c","Latin small letter c with dot above":"带上点的小写拉丁字母c","Latin small letter d with caron":"带抑扬符的小写拉丁字母d","Latin small letter d with stroke":"带删节线的小写拉丁字母d","Latin small letter dotless i":"没有点的小写拉丁字母i","Latin small letter e with breve":"带短音符的小写拉丁字母e","Latin small letter e with caron":"带抑扬符的小写拉丁字母e","Latin small letter e with dot above":"带上点的小写拉丁字母e","Latin small letter e with macron":"带长音符的小写拉丁字母e","Latin small letter e with ogonek":"带反尾形符的小写拉丁字母e","Latin small letter eng":"小写拉丁字母eng","Latin small letter f with hook":"带钩的拉丁文小写字母 F","Latin small letter g with breve":"带短音符的小写拉丁字母g","Latin small letter g with cedilla":"带软音符的小写拉丁字母g","Latin small letter g with circumflex":"带扬抑符的小写拉丁字母g","Latin small letter g with dot above":"带上点的小写拉丁字母g","Latin small letter h with circumflex":"带扬抑符的小写拉丁字母h","Latin small letter h with stroke":"带删节线的小写拉丁字母h","Latin small letter i with breve":"带短音符的小写拉丁字母i","Latin small letter i with macron":"带长音符的小写拉丁字母i","Latin small letter i with ogonek":"带反尾形符的小写拉丁字母i","Latin small letter i with tilde":"带腭化符的小写拉丁字母i","Latin small letter j with circumflex":"带扬抑符的小写拉丁字母j","Latin small letter k with cedilla":"带软音符的小写拉丁字母k","Latin small letter kra":"小写拉丁字母kra","Latin small letter l with acute":"带锐音符的小写拉丁字母l","Latin small letter l with caron":"带抑扬符的小写拉丁字母l","Latin small letter l with cedilla":"带软音符的小写拉丁字母l","Latin small letter l with middle dot":"带中点的小写拉丁字母l","Latin small letter l with stroke":"带删节线的小写拉丁字母l","Latin small letter long s":"小写拉丁字母长s","Latin small letter n preceded by apostrophe":"冠以撇号的小写拉丁字母n","Latin small letter n with acute":"带锐音符的小写拉丁字母n","Latin small letter n with caron":"带抑扬符的小写拉丁字母n","Latin small letter n with cedilla":"带软音符的小写拉丁字母n","Latin small letter o with breve":"带短音符的小写拉丁字母o","Latin small letter o with double acute":"带双锐音符的小写拉丁字母o","Latin small letter o with macron":"带长音符的小写拉丁字母o","Latin small letter r with acute":"带锐音符的小写拉丁字母r","Latin small letter r with caron":"带抑扬符的小写拉丁字母r","Latin small letter r with cedilla":"带软音符的小写拉丁字母r","Latin small letter s with acute":"带锐音符的小写拉丁字母s","Latin small letter s with caron":"带抑扬符的小写拉丁字母s","Latin small letter s with cedilla":"带软音符的小写拉丁字母s","Latin small letter s with circumflex":"带扬抑符的小写拉丁字母s","Latin small letter t with caron":"带抑扬符的小写拉丁字母t","Latin small letter t with cedilla":"带软音符的小写拉丁字母t","Latin small letter t with stroke":"带删节线的小写拉丁字母t","Latin small letter u with breve":"带短音符的小写拉丁字母u","Latin small letter u with double acute":"带双锐音符的小写拉丁字母u","Latin small letter u with macron":"带长音符的小写拉丁字母u","Latin small letter u with ogonek":"带反尾形符的小写拉丁字母u","Latin small letter u with ring above":"带上圆圈的小写拉丁字母u","Latin small letter u with tilde":"带腭化符的小写拉丁字母u","Latin small letter w with circumflex":"带扬抑符的小写拉丁字母w","Latin small letter y with circumflex":"带扬抑符的小写拉丁字母y","Latin small letter z with acute":"带锐音符的小写拉丁字母z","Latin small letter z with caron":"带抑扬符的小写拉丁字母z","Latin small letter z with dot above":"带上点的小写拉丁字母z","Latin small ligature ij":"小写拉丁连字符ij","Latin small ligature oe":"小写拉丁连字符oe","Left double quotation mark":"左双引号","Left single quotation mark":"左单引号","Left-pointing double angle quotation mark":"双左尖括号","leftwards arrow to bar":"头部带杠的向左箭头","leftwards dashed arrow":"向左虚线箭头","leftwards double arrow":"向左双箭头","leftwards simple arrow":"向左简单箭头","Less-than or equal to":"小于等于","Less-than sign":"小于号","Lira sign":"里拉符号","Livre tournois sign":"里弗尔符号","Logical and":"逻辑与","Logical or":"逻辑或",Macron:"长音符号","Manat sign":"马纳特符号","Mill sign":"密尔符号","Minus sign":"负号","Multiplication sign":"称号","N-ary product":"N 元乘积","N-ary summation":"N 元求和",Nabla:"劈形算符","Naira sign":"奈拉符号","New sheqel sign":"新谢克尔符号","Nordic mark sign":"北欧马克征符号","Not an element of":"不属于","Not equal to":"不等于","Not sign":"非","on with exclamation mark with left right arrow above":"带有NO！标识的左右双向箭头",Overline:"上划线","Paragraph sign":"段落符号","Partial differential":"偏微分","Per mille sign":"千分号","Per ten thousand sign":"万分号","Peseta sign":"比塞塔符号","Peso sign":"比索符号","Plus-minus sign":"正负号","Pound sign":"英镑符号","Proportional to":"比例","Question exclamation mark":"疑问感叹号","Registered sign":"注册商标","Reversed paragraph sign":"反向段落符号","Right double quotation mark":"右双引号","Right single quotation mark":"右单引号","Right-pointing double angle quotation mark":"双右尖括号","rightwards arrow to bar":"头部带杠的向右箭头","rightwards dashed arrow":"向右虚线箭头","rightwards double arrow":"向右双箭头","rightwards simple arrow":"向右简单箭头","Ruble sign":"俄罗斯卢布","Rupee sign":"卢比符号","Section sign":"节标记","Single left-pointing angle quotation mark":"单左尖括号","Single low-9 quotation mark":"低位后单引号","Single right-pointing angle quotation mark":"单右尖括号","soon with rightwards arrow above":"带有soon标识的向右箭头","Special characters":"特殊字符","Spesmilo sign":"斯佩斯米洛符号","Square root":"平方根","Tenge sign":"坚戈符号","There exists":"存在","Tilde operator":"波浪线运算符","top with upwards arrow above":"带有top标识的向上箭头","Trade mark sign":"商标符号","Tugrik sign":"图格里克符号","Turkish lira sign":"土耳其里拉符号","Two dot leader":"二点前导符",Union:"并集","up down arrow with base":"处于基线的上下箭头","upwards arrow to bar":"头部带杠的向上箭头","upwards dashed arrow":"向上虚线箭头","upwards double arrow":"向上双箭头","upwards simple arrow":"向上简单箭头","Vulgar fraction one half":"普通分数二分之一","Vulgar fraction one quarter":"普通分数四分之一","Vulgar fraction three quarters":"普通分数四分之三","Won sign":"韩元符号","Yen sign":"日元符号"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/special-characters/translations/zh.js b/core/assets/vendor/ckeditor5/special-characters/translations/zh.js
index afdb68f854..ccbc4b6bf6 100644
--- a/core/assets/vendor/ckeditor5/special-characters/translations/zh.js
+++ b/core/assets/vendor/ckeditor5/special-characters/translations/zh.js
@@ -1 +1 @@
-!function(t){const a=t.zh=t.zh||{};a.dictionary=Object.assign(a.dictionary||{},{"Almost equal to":"幾乎等於",Angle:"角度","Approximately equal to":"約等於","Asterisk operator":"星號運算子","Austral sign":"奧斯特拉爾符號","back with leftwards arrow above":"Back 上方有向左箭號","Bitcoin sign":"比特幣符號","Cedi sign":"塞地符號","Cent sign":"美分符號","Character categories":"字元類別","Colon sign":"冒號","Contains as member":"包含","Copyright sign":"版權符號","Cruzeiro sign":"克魯薩多符號","Currency sign":"貨幣符號","Degree sign":"度符號","Division sign":"除號","Dollar sign":"貨幣符號","Dong sign":"盾符號","Double dagger":"雙劍註釋符號","Double exclamation mark":"雙驚嘆號","Double low-9 quotation mark":"雙下 9 形引號","Double question mark":"雙問號","downwards arrow to bar":"向下停止箭頭","downwards dashed arrow":"向下虛線箭頭","downwards double arrow":"向下雙箭頭","Drachma sign":"得拉克馬符號","Element of":"屬於","Em dash":"長破折號","Empty set":"空集合","En dash":"短破折號","end with leftwards arrow above":"End 上方有向左箭號","Euro sign":"歐元符號","Euro-currency sign":"歐元貨幣符號","Exclamation question mark":"驚嘆疑問號","For all":"對於所有","Fraction slash":"分數斜線","French franc sign":"法國法郎符號","German penny sign":"德國便士符號","Greater-than or equal to":"大於或等於","Greater-than sign":"大於符號","Guarani sign":"瓜拉尼符號","Horizontal ellipsis":"水平省略符號","Hryvnia sign":"赫伐尼亞符號","Identical to":"恆等於","Indian rupee sign":"印度盧比符號",Infinity:"無限",Integral:"積分",Intersection:"交集","Inverted exclamation mark":"倒驚嘆號","Inverted question mark":"倒問號","Kip sign":"基普符號","Latin capital letter a with breve":"拉丁大寫字母 A 帶短音符號","Latin capital letter a with macron":"拉丁大寫字母 A 帶長音符號","Latin capital letter a with ogonek":"拉丁大寫字母 A 帶 Ogonek","Latin capital letter c with acute":"拉丁大寫字母 C 帶尖音符號","Latin capital letter c with caron":"拉丁大寫字母 C 帶上勾符號","Latin capital letter c with circumflex":"拉丁大寫字母 C 帶抑揚符號","Latin capital letter c with dot above":"上有一點的拉丁大寫字母 C","Latin capital letter d with caron":"拉丁大寫字母 D 帶上勾符號","Latin capital letter d with stroke":"拉丁大寫字母 D 帶粗線符號","Latin capital letter e with breve":"拉丁大寫字母 E 帶短音符號","Latin capital letter e with caron":"拉丁大寫字母 E 帶上勾符號","Latin capital letter e with dot above":"上有一點的拉丁大寫字母 E","Latin capital letter e with macron":"拉丁大寫字母 E 帶長音符號","Latin capital letter e with ogonek":"拉丁大寫字母 E 帶 Ogonek","Latin capital letter eng":"拉丁大寫字母 Eng","Latin capital letter g with breve":"拉丁大寫字母 G 帶短音符號","Latin capital letter g with cedilla":"拉丁大寫字母 G 帶下尾符號","Latin capital letter g with circumflex":"拉丁大寫字母 G 帶抑揚符號","Latin capital letter g with dot above":"上有一點的拉丁大寫字母 G","Latin capital letter h with circumflex":"拉丁大寫字母 H 帶抑揚符號","Latin capital letter h with stroke":"拉丁大寫字母 H 帶粗線符號","Latin capital letter i with breve":"拉丁大寫字母 I 帶短音符號","Latin capital letter i with dot above":"上有一點的拉丁大寫字母 I","Latin capital letter i with macron":"拉丁大寫字母 I 帶長音符號","Latin capital letter i with ogonek":"拉丁大寫字母 I 帶 Ogonek","Latin capital letter i with tilde":"拉丁大寫字母 I 帶波狀符號","Latin capital letter j with circumflex":"拉丁大寫字母 J 帶抑揚符號","Latin capital letter k with cedilla":"拉丁大寫字母 K 帶下尾符號","Latin capital letter l with acute":"拉丁大寫字母 L 帶尖音符號","Latin capital letter l with caron":"拉丁大寫字母 L 帶上勾符號","Latin capital letter l with cedilla":"拉丁大寫字母 L 帶下尾符號","Latin capital letter l with middle dot":"中間一點的拉丁大寫字母 L","Latin capital letter l with stroke":"拉丁大寫字母 L 帶粗線符號","Latin capital letter n with acute":"拉丁大寫字母 N 帶尖音符號","Latin capital letter n with caron":"拉丁大寫字母 N 帶上勾符號","Latin capital letter n with cedilla":"拉丁大寫字母 N 帶下尾符號","Latin capital letter o with breve":"拉丁大寫字母 O 帶短音符號","Latin capital letter o with double acute":"拉丁大寫字母 O 帶雙尖音符號","Latin capital letter o with macron":"拉丁大寫字母 O 帶長音符號","Latin capital letter r with acute":"拉丁大寫字母 R 帶尖音符號","Latin capital letter r with caron":"拉丁大寫字母 R 帶上勾符號","Latin capital letter r with cedilla":"拉丁大寫字母 R 帶下尾符號","Latin capital letter s with acute":"拉丁大寫字母 S 帶尖音符號","Latin capital letter s with caron":"拉丁大寫字母 S 帶上勾符號","Latin capital letter s with cedilla":"拉丁大寫字母 S 帶下尾符號","Latin capital letter s with circumflex":"拉丁大寫字母 S 帶抑揚符號","Latin capital letter t with caron":"拉丁大寫字母 T 帶上勾符號","Latin capital letter t with cedilla":"拉丁大寫字母 T 帶下尾符號","Latin capital letter t with stroke":"拉丁大寫字母 T 帶粗線符號","Latin capital letter u with breve":"拉丁大寫字母 U 帶短音符號","Latin capital letter u with double acute":"拉丁大寫字母 U 帶雙尖音符號","Latin capital letter u with macron":"拉丁大寫字母 U 帶長音符號","Latin capital letter u with ogonek":"拉丁大寫字母 U 帶 Ogonek","Latin capital letter u with ring above":"拉丁大寫字母 U 帶上圓圈","Latin capital letter u with tilde":"拉丁大寫字母 U 帶波狀符號","Latin capital letter w with circumflex":"拉丁大寫字母 W 帶抑揚符號","Latin capital letter y with circumflex":"拉丁大寫字母 Y 帶抑揚符號","Latin capital letter y with diaeresis":"拉丁大寫字母 Y 帶分音符號","Latin capital letter z with acute":"拉丁大寫字母 Z 帶尖音符號","Latin capital letter z with caron":"拉丁大寫字母 Z 帶上勾符號","Latin capital letter z with dot above":"上有一點的拉丁大寫字母 Z","Latin capital ligature ij":"拉丁大寫連字 IJ","Latin capital ligature oe":"拉丁大寫連字 OE","Latin small letter a with breve":"拉丁小寫字母 a 帶短音符號","Latin small letter a with macron":"拉丁小寫字母 a 帶長音符號","Latin small letter a with ogonek":"拉丁小寫字母 a 帶 Ogonek","Latin small letter c with acute":"拉丁小寫字母 c 帶尖音符號","Latin small letter c with caron":"拉丁小寫字母 c 帶上勾符號","Latin small letter c with circumflex":"拉丁小寫字母 c 帶抑揚符號","Latin small letter c with dot above":"上有一點的拉丁小寫字母 c","Latin small letter d with caron":"拉丁小寫字母 d 帶上勾符號","Latin small letter d with stroke":"拉丁小寫字母 d 帶粗線符號","Latin small letter dotless i":"拉丁小寫字母無點 I","Latin small letter e with breve":"拉丁小寫字母 e 帶短音符號","Latin small letter e with caron":"拉丁小寫字母 e 帶上勾符號","Latin small letter e with dot above":"上有一點的拉丁小寫字母 e","Latin small letter e with macron":"拉丁小寫字母 e 帶長音符號","Latin small letter e with ogonek":"拉丁小寫字母 e 帶 Ogonek","Latin small letter eng":"拉丁小寫字母 Eng","Latin small letter f with hook":"帶鉤的拉丁小寫字母 f","Latin small letter g with breve":"拉丁小寫字母 g 帶短音符號","Latin small letter g with cedilla":"拉丁小寫字母 g 帶下尾符號","Latin small letter g with circumflex":"拉丁小寫字母 g 帶抑揚符號","Latin small letter g with dot above":"上有一點的拉丁小寫字母 g","Latin small letter h with circumflex":"拉丁小寫字母 h 帶抑揚符號","Latin small letter h with stroke":"拉丁小寫字母 h 帶粗線符號","Latin small letter i with breve":"拉丁小寫字母 i 帶短音符號","Latin small letter i with macron":"拉丁小寫字母 i 帶長音符號","Latin small letter i with ogonek":"拉丁小寫字母 i 帶 Ogonek","Latin small letter i with tilde":"拉丁小寫字母 i 帶波狀符號","Latin small letter j with circumflex":"拉丁小寫字母 j 帶抑揚符號","Latin small letter k with cedilla":"拉丁小寫字母 k 帶下尾符號","Latin small letter kra":"拉丁小寫字母 kra","Latin small letter l with acute":"拉丁小寫字母 l 帶尖音符號","Latin small letter l with caron":"拉丁小寫字母 l 帶上勾符號","Latin small letter l with cedilla":"拉丁小寫字母 l 帶下尾符號","Latin small letter l with middle dot":"中間一點的拉丁小寫字母 l","Latin small letter l with stroke":"拉丁小寫字母 l 帶粗線符號","Latin small letter long s":"拉丁小寫字母長 s","Latin small letter n preceded by apostrophe":"前有撇號的拉丁小寫字母 n","Latin small letter n with acute":"拉丁小寫字母 n 帶尖音符號","Latin small letter n with caron":"拉丁小寫字母 n 帶上勾符號","Latin small letter n with cedilla":"拉丁小寫字母 n 帶下尾符號","Latin small letter o with breve":"拉丁小寫字母 o 帶短音符號","Latin small letter o with double acute":"拉丁小寫字母 o 帶雙尖音符號","Latin small letter o with macron":"拉丁小寫字母 o 帶長音符號","Latin small letter r with acute":"拉丁小寫字母 r 帶尖音符號","Latin small letter r with caron":"拉丁小寫字母 r 帶上勾符號","Latin small letter r with cedilla":"拉丁小寫字母 r 帶下尾符號","Latin small letter s with acute":"拉丁小寫字母 s 帶尖音符號","Latin small letter s with caron":"拉丁小寫字母 s 帶上勾符號","Latin small letter s with cedilla":"拉丁小寫字母 s 帶下尾符號","Latin small letter s with circumflex":"拉丁小寫字母 s 帶抑揚符號","Latin small letter t with caron":"拉丁小寫字母 t 帶上勾符號","Latin small letter t with cedilla":"拉丁小寫字母 t 帶下尾符號","Latin small letter t with stroke":"拉丁小寫字母 t 帶粗線符號","Latin small letter u with breve":"拉丁小寫字母 u 帶短音符號","Latin small letter u with double acute":"拉丁小寫字母 u 帶雙尖音符號","Latin small letter u with macron":"拉丁小寫字母 u 帶長音符號","Latin small letter u with ogonek":"拉丁小寫字母 u 帶 Ogonek","Latin small letter u with ring above":"拉丁小寫字母 u 帶上圓圈","Latin small letter u with tilde":"拉丁小寫字母 u 帶波狀符號","Latin small letter w with circumflex":"拉丁小寫字母 w 帶抑揚符號","Latin small letter y with circumflex":"拉丁小寫字母 y 帶抑揚符號","Latin small letter z with acute":"拉丁小寫字母 z 帶尖音符號","Latin small letter z with caron":"拉丁小寫字母 z 帶上勾符號","Latin small letter z with dot above":"上有一點的拉丁小寫字母 z","Latin small ligature ij":"拉丁小寫連字 ij","Latin small ligature oe":"拉丁小寫連字 oe","Left double quotation mark":"左雙引號","Left single quotation mark":"左單引號","Left-pointing double angle quotation mark":"左尖雙角括號","leftwards arrow to bar":"向左停止箭頭","leftwards dashed arrow":"向左虛線箭頭","leftwards double arrow":"向左雙箭頭","Less-than or equal to":"小於或等於","Less-than sign":"小於符號","Lira sign":"里拉符號","Livre tournois sign":"里弗爾法鎊符號","Logical and":"邏輯 And","Logical or":"邏輯 Or",Macron:"長音符號","Manat sign":"馬納特符號","Mill sign":"密爾符號","Minus sign":"減號","Multiplication sign":"乘號","N-ary product":"N 元乘積","N-ary summation":"N 元總合",Nabla:"倒三角算子","Naira sign":"奈及利亞奈拉符號","New sheqel sign":"新謝克爾符號","Nordic mark sign":"日耳曼馬克符號","Not an element of":"不屬於","Not equal to":"不等於","Not sign":"Not 符號","on with exclamation mark with left right arrow above":"帶驚嘆號的 On 上方有左右雙向箭號",Overline:"頂線","Paragraph sign":"段落符號","Partial differential":"偏微分","Per mille sign":"千分號","Per ten thousand sign":"萬分號","Peseta sign":"比塞塔符號","Peso sign":"披索符號","Plus-minus sign":"加減符號","Pound sign":"英鎊符號","Proportional to":"正比於","Question exclamation mark":"疑問驚嘆號","Registered sign":"註冊商標符號","Reversed paragraph sign":"反段落符號","Right double quotation mark":"右雙引號","Right single quotation mark":"右單引號","Right-pointing double angle quotation mark":"右尖雙角括號","rightwards arrow to bar":"向右停止箭頭","rightwards dashed arrow":"向右虛線箭頭","rightwards double arrow":"向右雙箭頭","Ruble sign":"盧布符號","Rupee sign":"印度盧比符號","Section sign":"章節符號","Single left-pointing angle quotation mark":"單左尖角括號","Single low-9 quotation mark":"單下 9 形引號","Single right-pointing angle quotation mark":"單右尖角括號","soon with rightwards arrow above":"Soon 上方有向右箭號","Special characters":"特殊字元","Spesmilo sign":"Spesmilo 貨幣符號","Square root":"平方根","Tenge sign":"勘察加幣符號","There exists":"存在","Tilde operator":"波狀符號運算子","top with upwards arrow above":"Top 上方有向上箭號","Trade mark sign":"商標符號","Tugrik sign":"圖格里克符號","Turkish lira sign":"土耳其里拉符號","Two dot leader":"兩點前置字元",Union:"聯集","up down arrow with base":"有底線的上下箭號","upwards arrow to bar":"向上停止箭頭","upwards dashed arrow":"向上虛線箭頭","upwards double arrow":"向上雙箭頭","Vulgar fraction one half":"普通分數二分之一","Vulgar fraction one quarter":"普通分數四分之一","Vulgar fraction three quarters":"普通分數四分之三","Won sign":"圜符號","Yen sign":"日圓符號"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(t){const a=t.zh=t.zh||{};a.dictionary=Object.assign(a.dictionary||{},{"Almost equal to":"幾乎等於",Angle:"角度","Approximately equal to":"約等於","Asterisk operator":"星號運算子","Austral sign":"奧斯特拉爾符號","back with leftwards arrow above":"Back 上方有向左箭號","Bitcoin sign":"比特幣符號","Cedi sign":"塞地符號","Cent sign":"美分符號","Character categories":"字元類別","Colon sign":"冒號","Contains as member":"包含","Copyright sign":"版權符號","Cruzeiro sign":"克魯薩多符號","Currency sign":"貨幣符號","Degree sign":"度符號","Division sign":"除號","Dollar sign":"貨幣符號","Dong sign":"盾符號","Double dagger":"雙劍註釋符號","Double exclamation mark":"雙驚嘆號","Double low-9 quotation mark":"雙下 9 形引號","Double question mark":"雙問號","downwards arrow to bar":"向下停止箭頭","downwards dashed arrow":"向下虛線箭頭","downwards double arrow":"向下雙箭頭","downwards simple arrow":"向下簡單箭號","Drachma sign":"得拉克馬符號","Element of":"屬於","Em dash":"長破折號","Empty set":"空集合","En dash":"短破折號","end with leftwards arrow above":"End 上方有向左箭號","Euro sign":"歐元符號","Euro-currency sign":"歐元貨幣符號","Exclamation question mark":"驚嘆疑問號","For all":"對於所有","Fraction slash":"分數斜線","French franc sign":"法國法郎符號","German penny sign":"德國便士符號","Greater-than or equal to":"大於或等於","Greater-than sign":"大於符號","Guarani sign":"瓜拉尼符號","Horizontal ellipsis":"水平省略符號","Hryvnia sign":"赫伐尼亞符號","Identical to":"恆等於","Indian rupee sign":"印度盧比符號",Infinity:"無限",Integral:"積分",Intersection:"交集","Inverted exclamation mark":"倒驚嘆號","Inverted question mark":"倒問號","Kip sign":"基普符號","Latin capital letter a with breve":"拉丁大寫字母 A 帶短音符號","Latin capital letter a with macron":"拉丁大寫字母 A 帶長音符號","Latin capital letter a with ogonek":"拉丁大寫字母 A 帶 Ogonek","Latin capital letter c with acute":"拉丁大寫字母 C 帶尖音符號","Latin capital letter c with caron":"拉丁大寫字母 C 帶上勾符號","Latin capital letter c with circumflex":"拉丁大寫字母 C 帶抑揚符號","Latin capital letter c with dot above":"上有一點的拉丁大寫字母 C","Latin capital letter d with caron":"拉丁大寫字母 D 帶上勾符號","Latin capital letter d with stroke":"拉丁大寫字母 D 帶粗線符號","Latin capital letter e with breve":"拉丁大寫字母 E 帶短音符號","Latin capital letter e with caron":"拉丁大寫字母 E 帶上勾符號","Latin capital letter e with dot above":"上有一點的拉丁大寫字母 E","Latin capital letter e with macron":"拉丁大寫字母 E 帶長音符號","Latin capital letter e with ogonek":"拉丁大寫字母 E 帶 Ogonek","Latin capital letter eng":"拉丁大寫字母 Eng","Latin capital letter g with breve":"拉丁大寫字母 G 帶短音符號","Latin capital letter g with cedilla":"拉丁大寫字母 G 帶下尾符號","Latin capital letter g with circumflex":"拉丁大寫字母 G 帶抑揚符號","Latin capital letter g with dot above":"上有一點的拉丁大寫字母 G","Latin capital letter h with circumflex":"拉丁大寫字母 H 帶抑揚符號","Latin capital letter h with stroke":"拉丁大寫字母 H 帶粗線符號","Latin capital letter i with breve":"拉丁大寫字母 I 帶短音符號","Latin capital letter i with dot above":"上有一點的拉丁大寫字母 I","Latin capital letter i with macron":"拉丁大寫字母 I 帶長音符號","Latin capital letter i with ogonek":"拉丁大寫字母 I 帶 Ogonek","Latin capital letter i with tilde":"拉丁大寫字母 I 帶波狀符號","Latin capital letter j with circumflex":"拉丁大寫字母 J 帶抑揚符號","Latin capital letter k with cedilla":"拉丁大寫字母 K 帶下尾符號","Latin capital letter l with acute":"拉丁大寫字母 L 帶尖音符號","Latin capital letter l with caron":"拉丁大寫字母 L 帶上勾符號","Latin capital letter l with cedilla":"拉丁大寫字母 L 帶下尾符號","Latin capital letter l with middle dot":"中間一點的拉丁大寫字母 L","Latin capital letter l with stroke":"拉丁大寫字母 L 帶粗線符號","Latin capital letter n with acute":"拉丁大寫字母 N 帶尖音符號","Latin capital letter n with caron":"拉丁大寫字母 N 帶上勾符號","Latin capital letter n with cedilla":"拉丁大寫字母 N 帶下尾符號","Latin capital letter o with breve":"拉丁大寫字母 O 帶短音符號","Latin capital letter o with double acute":"拉丁大寫字母 O 帶雙尖音符號","Latin capital letter o with macron":"拉丁大寫字母 O 帶長音符號","Latin capital letter r with acute":"拉丁大寫字母 R 帶尖音符號","Latin capital letter r with caron":"拉丁大寫字母 R 帶上勾符號","Latin capital letter r with cedilla":"拉丁大寫字母 R 帶下尾符號","Latin capital letter s with acute":"拉丁大寫字母 S 帶尖音符號","Latin capital letter s with caron":"拉丁大寫字母 S 帶上勾符號","Latin capital letter s with cedilla":"拉丁大寫字母 S 帶下尾符號","Latin capital letter s with circumflex":"拉丁大寫字母 S 帶抑揚符號","Latin capital letter t with caron":"拉丁大寫字母 T 帶上勾符號","Latin capital letter t with cedilla":"拉丁大寫字母 T 帶下尾符號","Latin capital letter t with stroke":"拉丁大寫字母 T 帶粗線符號","Latin capital letter u with breve":"拉丁大寫字母 U 帶短音符號","Latin capital letter u with double acute":"拉丁大寫字母 U 帶雙尖音符號","Latin capital letter u with macron":"拉丁大寫字母 U 帶長音符號","Latin capital letter u with ogonek":"拉丁大寫字母 U 帶 Ogonek","Latin capital letter u with ring above":"拉丁大寫字母 U 帶上圓圈","Latin capital letter u with tilde":"拉丁大寫字母 U 帶波狀符號","Latin capital letter w with circumflex":"拉丁大寫字母 W 帶抑揚符號","Latin capital letter y with circumflex":"拉丁大寫字母 Y 帶抑揚符號","Latin capital letter y with diaeresis":"拉丁大寫字母 Y 帶分音符號","Latin capital letter z with acute":"拉丁大寫字母 Z 帶尖音符號","Latin capital letter z with caron":"拉丁大寫字母 Z 帶上勾符號","Latin capital letter z with dot above":"上有一點的拉丁大寫字母 Z","Latin capital ligature ij":"拉丁大寫連字 IJ","Latin capital ligature oe":"拉丁大寫連字 OE","Latin small letter a with breve":"拉丁小寫字母 a 帶短音符號","Latin small letter a with macron":"拉丁小寫字母 a 帶長音符號","Latin small letter a with ogonek":"拉丁小寫字母 a 帶 Ogonek","Latin small letter c with acute":"拉丁小寫字母 c 帶尖音符號","Latin small letter c with caron":"拉丁小寫字母 c 帶上勾符號","Latin small letter c with circumflex":"拉丁小寫字母 c 帶抑揚符號","Latin small letter c with dot above":"上有一點的拉丁小寫字母 c","Latin small letter d with caron":"拉丁小寫字母 d 帶上勾符號","Latin small letter d with stroke":"拉丁小寫字母 d 帶粗線符號","Latin small letter dotless i":"拉丁小寫字母無點 I","Latin small letter e with breve":"拉丁小寫字母 e 帶短音符號","Latin small letter e with caron":"拉丁小寫字母 e 帶上勾符號","Latin small letter e with dot above":"上有一點的拉丁小寫字母 e","Latin small letter e with macron":"拉丁小寫字母 e 帶長音符號","Latin small letter e with ogonek":"拉丁小寫字母 e 帶 Ogonek","Latin small letter eng":"拉丁小寫字母 Eng","Latin small letter f with hook":"帶鉤的拉丁小寫字母 f","Latin small letter g with breve":"拉丁小寫字母 g 帶短音符號","Latin small letter g with cedilla":"拉丁小寫字母 g 帶下尾符號","Latin small letter g with circumflex":"拉丁小寫字母 g 帶抑揚符號","Latin small letter g with dot above":"上有一點的拉丁小寫字母 g","Latin small letter h with circumflex":"拉丁小寫字母 h 帶抑揚符號","Latin small letter h with stroke":"拉丁小寫字母 h 帶粗線符號","Latin small letter i with breve":"拉丁小寫字母 i 帶短音符號","Latin small letter i with macron":"拉丁小寫字母 i 帶長音符號","Latin small letter i with ogonek":"拉丁小寫字母 i 帶 Ogonek","Latin small letter i with tilde":"拉丁小寫字母 i 帶波狀符號","Latin small letter j with circumflex":"拉丁小寫字母 j 帶抑揚符號","Latin small letter k with cedilla":"拉丁小寫字母 k 帶下尾符號","Latin small letter kra":"拉丁小寫字母 kra","Latin small letter l with acute":"拉丁小寫字母 l 帶尖音符號","Latin small letter l with caron":"拉丁小寫字母 l 帶上勾符號","Latin small letter l with cedilla":"拉丁小寫字母 l 帶下尾符號","Latin small letter l with middle dot":"中間一點的拉丁小寫字母 l","Latin small letter l with stroke":"拉丁小寫字母 l 帶粗線符號","Latin small letter long s":"拉丁小寫字母長 s","Latin small letter n preceded by apostrophe":"前有撇號的拉丁小寫字母 n","Latin small letter n with acute":"拉丁小寫字母 n 帶尖音符號","Latin small letter n with caron":"拉丁小寫字母 n 帶上勾符號","Latin small letter n with cedilla":"拉丁小寫字母 n 帶下尾符號","Latin small letter o with breve":"拉丁小寫字母 o 帶短音符號","Latin small letter o with double acute":"拉丁小寫字母 o 帶雙尖音符號","Latin small letter o with macron":"拉丁小寫字母 o 帶長音符號","Latin small letter r with acute":"拉丁小寫字母 r 帶尖音符號","Latin small letter r with caron":"拉丁小寫字母 r 帶上勾符號","Latin small letter r with cedilla":"拉丁小寫字母 r 帶下尾符號","Latin small letter s with acute":"拉丁小寫字母 s 帶尖音符號","Latin small letter s with caron":"拉丁小寫字母 s 帶上勾符號","Latin small letter s with cedilla":"拉丁小寫字母 s 帶下尾符號","Latin small letter s with circumflex":"拉丁小寫字母 s 帶抑揚符號","Latin small letter t with caron":"拉丁小寫字母 t 帶上勾符號","Latin small letter t with cedilla":"拉丁小寫字母 t 帶下尾符號","Latin small letter t with stroke":"拉丁小寫字母 t 帶粗線符號","Latin small letter u with breve":"拉丁小寫字母 u 帶短音符號","Latin small letter u with double acute":"拉丁小寫字母 u 帶雙尖音符號","Latin small letter u with macron":"拉丁小寫字母 u 帶長音符號","Latin small letter u with ogonek":"拉丁小寫字母 u 帶 Ogonek","Latin small letter u with ring above":"拉丁小寫字母 u 帶上圓圈","Latin small letter u with tilde":"拉丁小寫字母 u 帶波狀符號","Latin small letter w with circumflex":"拉丁小寫字母 w 帶抑揚符號","Latin small letter y with circumflex":"拉丁小寫字母 y 帶抑揚符號","Latin small letter z with acute":"拉丁小寫字母 z 帶尖音符號","Latin small letter z with caron":"拉丁小寫字母 z 帶上勾符號","Latin small letter z with dot above":"上有一點的拉丁小寫字母 z","Latin small ligature ij":"拉丁小寫連字 ij","Latin small ligature oe":"拉丁小寫連字 oe","Left double quotation mark":"左雙引號","Left single quotation mark":"左單引號","Left-pointing double angle quotation mark":"左尖雙角括號","leftwards arrow to bar":"向左停止箭頭","leftwards dashed arrow":"向左虛線箭頭","leftwards double arrow":"向左雙箭頭","leftwards simple arrow":"向左簡單箭號","Less-than or equal to":"小於或等於","Less-than sign":"小於符號","Lira sign":"里拉符號","Livre tournois sign":"里弗爾法鎊符號","Logical and":"邏輯 And","Logical or":"邏輯 Or",Macron:"長音符號","Manat sign":"馬納特符號","Mill sign":"密爾符號","Minus sign":"減號","Multiplication sign":"乘號","N-ary product":"N 元乘積","N-ary summation":"N 元總合",Nabla:"倒三角算子","Naira sign":"奈及利亞奈拉符號","New sheqel sign":"新謝克爾符號","Nordic mark sign":"日耳曼馬克符號","Not an element of":"不屬於","Not equal to":"不等於","Not sign":"Not 符號","on with exclamation mark with left right arrow above":"帶驚嘆號的 On 上方有左右雙向箭號",Overline:"頂線","Paragraph sign":"段落符號","Partial differential":"偏微分","Per mille sign":"千分號","Per ten thousand sign":"萬分號","Peseta sign":"比塞塔符號","Peso sign":"披索符號","Plus-minus sign":"加減符號","Pound sign":"英鎊符號","Proportional to":"正比於","Question exclamation mark":"疑問驚嘆號","Registered sign":"註冊商標符號","Reversed paragraph sign":"反段落符號","Right double quotation mark":"右雙引號","Right single quotation mark":"右單引號","Right-pointing double angle quotation mark":"右尖雙角括號","rightwards arrow to bar":"向右停止箭頭","rightwards dashed arrow":"向右虛線箭頭","rightwards double arrow":"向右雙箭頭","rightwards simple arrow":"向右簡單箭號","Ruble sign":"盧布符號","Rupee sign":"印度盧比符號","Section sign":"章節符號","Single left-pointing angle quotation mark":"單左尖角括號","Single low-9 quotation mark":"單下 9 形引號","Single right-pointing angle quotation mark":"單右尖角括號","soon with rightwards arrow above":"Soon 上方有向右箭號","Special characters":"特殊字元","Spesmilo sign":"Spesmilo 貨幣符號","Square root":"平方根","Tenge sign":"勘察加幣符號","There exists":"存在","Tilde operator":"波狀符號運算子","top with upwards arrow above":"Top 上方有向上箭號","Trade mark sign":"商標符號","Tugrik sign":"圖格里克符號","Turkish lira sign":"土耳其里拉符號","Two dot leader":"兩點前置字元",Union:"聯集","up down arrow with base":"有底線的上下箭號","upwards arrow to bar":"向上停止箭頭","upwards dashed arrow":"向上虛線箭頭","upwards double arrow":"向上雙箭頭","upwards simple arrow":"向上簡單箭號","Vulgar fraction one half":"普通分數二分之一","Vulgar fraction one quarter":"普通分數四分之一","Vulgar fraction three quarters":"普通分數四分之三","Won sign":"圜符號","Yen sign":"日圓符號"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/style/style.js b/core/assets/vendor/ckeditor5/style/style.js
index c04304ce7f..a74b0a43a3 100644
--- a/core/assets/vendor/ckeditor5/style/style.js
+++ b/core/assets/vendor/ckeditor5/style/style.js
@@ -2,4 +2,4 @@
 /*!
  * @license Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
  * For licensing, see LICENSE.md.
- */(()=>{var e={529:(e,t,s)=>{"use strict";s.d(t,{Z:()=>l});var n=s(609),i=s.n(n)()((function(e){return e[1]}));i.push([e.id,".ck.ck-dropdown.ck-style-dropdown.ck-style-dropdown_multiple-active>.ck-button>.ck-button__label{font-style:italic}",""]);const l=i},945:(e,t,s)=>{"use strict";s.d(t,{Z:()=>l});var n=s(609),i=s.n(n)()((function(e){return e[1]}));i.push([e.id,":root{--ck-style-panel-columns:3}.ck.ck-style-panel .ck-style-grid{display:grid;grid-template-columns:repeat(var(--ck-style-panel-columns),auto);justify-content:start}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button{display:flex;flex-direction:column;justify-content:space-between}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button .ck-style-grid__button__preview{align-content:center;align-items:center;display:flex;flex-basis:100%;flex-grow:1;justify-content:flex-start}:root{--ck-style-panel-button-width:120px;--ck-style-panel-button-height:80px;--ck-style-panel-button-label-background:#f0f0f0;--ck-style-panel-button-hover-label-background:#ebebeb;--ck-style-panel-button-hover-border-color:#b3b3b3}.ck.ck-style-panel .ck-style-grid{column-gap:var(--ck-spacing-large);row-gap:var(--ck-spacing-large)}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button{--ck-color-button-default-hover-background:var(--ck-color-base-background);--ck-color-button-default-active-background:var(--ck-color-base-background);height:var(--ck-style-panel-button-height);padding:0;width:var(--ck-style-panel-button-width)}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button:not(:focus){border:1px solid var(--ck-color-base-border)}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button .ck-button__label{flex-shrink:0;height:22px;line-height:22px;overflow:hidden;padding:0 var(--ck-spacing-medium);text-overflow:ellipsis;width:100%}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button .ck-style-grid__button__preview{background:var(--ck-color-base-background);border:2px solid var(--ck-color-base-background);opacity:.9;overflow:hidden;padding:var(--ck-spacing-medium);width:100%}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button.ck-disabled{--ck-color-button-default-disabled-background:var(--ck-color-base-foreground)}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button.ck-disabled:not(:focus){border-color:var(--ck-style-panel-button-label-background)}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button.ck-disabled .ck-style-grid__button__preview{border-color:var(--ck-color-base-foreground);filter:saturate(.3);opacity:.4}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button.ck-on{border-color:var(--ck-color-base-active)}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button.ck-on .ck-button__label{box-shadow:0 -1px 0 var(--ck-color-base-active);z-index:1}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button.ck-on:hover{border-color:var(--ck-color-base-active-focus)}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button:not(.ck-on) .ck-button__label{background:var(--ck-style-panel-button-label-background)}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button:not(.ck-on):hover .ck-button__label{background:var(--ck-style-panel-button-hover-label-background)}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button:hover:not(.ck-disabled):not(.ck-on){border-color:var(--ck-style-panel-button-hover-border-color)}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button:hover:not(.ck-disabled):not(.ck-on) .ck-style-grid__button__preview{opacity:1}",""]);const l=i},561:(e,t,s)=>{"use strict";s.d(t,{Z:()=>l});var n=s(609),i=s.n(n)()((function(e){return e[1]}));i.push([e.id,".ck.ck-style-panel .ck-style-panel__style-group>.ck-label{margin:var(--ck-spacing-large) 0}.ck.ck-style-panel .ck-style-panel__style-group:first-child>.ck-label{margin-top:0}",""]);const l=i},662:(e,t,s)=>{"use strict";s.d(t,{Z:()=>l});var n=s(609),i=s.n(n)()((function(e){return e[1]}));i.push([e.id,":root{--ck-style-panel-max-height:470px}.ck.ck-style-panel{max-height:var(--ck-style-panel-max-height);overflow-y:auto;padding:var(--ck-spacing-large)}",""]);const l=i},609:e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var s=e(t);return t[2]?"@media ".concat(t[2]," {").concat(s,"}"):s})).join("")},t.i=function(e,s,n){"string"==typeof e&&(e=[[null,e,""]]);var i={};if(n)for(var l=0;l<this.length;l++){var o=this[l][0];null!=o&&(i[o]=!0)}for(var r=0;r<e.length;r++){var c=[].concat(e[r]);n&&i[c[0]]||(s&&(c[2]?c[2]="".concat(s," and ").concat(c[2]):c[2]=s),t.push(c))}},t}},62:(e,t,s)=>{"use strict";var n,i=function(){return void 0===n&&(n=Boolean(window&&document&&document.all&&!window.atob)),n},l=function(){var e={};return function(t){if(void 0===e[t]){var s=document.querySelector(t);if(window.HTMLIFrameElement&&s instanceof window.HTMLIFrameElement)try{s=s.contentDocument.head}catch(e){s=null}e[t]=s}return e[t]}}(),o=[];function r(e){for(var t=-1,s=0;s<o.length;s++)if(o[s].identifier===e){t=s;break}return t}function c(e,t){for(var s={},n=[],i=0;i<e.length;i++){var l=e[i],c=t.base?l[0]+t.base:l[0],a=s[c]||0,d="".concat(c," ").concat(a);s[c]=a+1;var u=r(d),h={css:l[1],media:l[2],sourceMap:l[3]};-1!==u?(o[u].references++,o[u].updater(h)):o.push({identifier:d,updater:g(h,t),references:1}),n.push(d)}return n}function a(e){var t=document.createElement("style"),n=e.attributes||{};if(void 0===n.nonce){var i=s.nc;i&&(n.nonce=i)}if(Object.keys(n).forEach((function(e){t.setAttribute(e,n[e])})),"function"==typeof e.insert)e.insert(t);else{var o=l(e.insert||"head");if(!o)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");o.appendChild(t)}return t}var d,u=(d=[],function(e,t){return d[e]=t,d.filter(Boolean).join("\n")});function h(e,t,s,n){var i=s?"":n.media?"@media ".concat(n.media," {").concat(n.css,"}"):n.css;if(e.styleSheet)e.styleSheet.cssText=u(t,i);else{var l=document.createTextNode(i),o=e.childNodes;o[t]&&e.removeChild(o[t]),o.length?e.insertBefore(l,o[t]):e.appendChild(l)}}function y(e,t,s){var n=s.css,i=s.media,l=s.sourceMap;if(i?e.setAttribute("media",i):e.removeAttribute("media"),l&&"undefined"!=typeof btoa&&(n+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(l))))," */")),e.styleSheet)e.styleSheet.cssText=n;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(n))}}var k=null,b=0;function g(e,t){var s,n,i;if(t.singleton){var l=b++;s=k||(k=a(t)),n=h.bind(null,s,l,!1),i=h.bind(null,s,l,!0)}else s=a(t),n=y.bind(null,s,t),i=function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(s)};return n(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;n(e=t)}else i()}}e.exports=function(e,t){(t=t||{}).singleton||"boolean"==typeof t.singleton||(t.singleton=i());var s=c(e=e||[],t);return function(e){if(e=e||[],"[object Array]"===Object.prototype.toString.call(e)){for(var n=0;n<s.length;n++){var i=r(s[n]);o[i].references--}for(var l=c(e,t),a=0;a<s.length;a++){var d=r(s[a]);0===o[d].references&&(o[d].updater(),o.splice(d,1))}s=l}}}},704:(e,t,s)=>{e.exports=s(79)("./src/core.js")},273:(e,t,s)=>{e.exports=s(79)("./src/ui.js")},209:(e,t,s)=>{e.exports=s(79)("./src/utils.js")},79:e=>{"use strict";e.exports=CKEditor5.dll}},t={};function s(n){var i=t[n];if(void 0!==i)return i.exports;var l=t[n]={id:n,exports:{}};return e[n](l,l.exports,s),l.exports}s.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return s.d(t,{a:t}),t},s.d=(e,t)=>{for(var n in t)s.o(t,n)&&!s.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},s.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),s.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.nc=void 0;var n={};(()=>{"use strict";s.r(n),s.d(n,{Style:()=>V,StyleEditing:()=>x,StyleUI:()=>w});var e=s(704),t=s(273),i=s(209);const l=["caption","colgroup","dd","dt","figcaption","legend","li","optgroup","option","rp","rt","summary","tbody","td","tfoot","th","thead","tr"];class o extends t.ButtonView{constructor(e,t){super(e),this.styleDefinition=t,this.previewView=this._createPreview(),this.set({label:t.name,class:"ck-style-grid__button",withText:!0}),this.extendTemplate({attributes:{role:"option"}}),this.children.add(this.previewView,0)}_createPreview(){const{element:e,classes:s}=this.styleDefinition,n=new t.View(this.locale);return n.setTemplate({tag:"div",attributes:{class:["ck","ck-reset_all-excluded","ck-style-grid__button__preview","ck-content"]},children:[{tag:this._isPreviewable(e)?e:"div",attributes:{class:s},children:[{text:"AaBbCcDdEeFfGgHhIiJj"}]}]}),n}_isPreviewable(e){return!l.includes(e)}}var r=s(62),c=s.n(r),a=s(945),d={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};c()(a.Z,d);a.Z.locals;class u extends t.View{constructor(e,t){super(e),this.set("activeStyles",[]),this.set("enabledStyles",[]),this.children=this.createCollection(),this.children.delegate("execute").to(this);for(const s of t){const t=new o(e,s);this.children.add(t)}this.on("change:activeStyles",(()=>{for(const e of this.children)e.isOn=this.activeStyles.includes(e.styleDefinition.name)})),this.on("change:enabledStyles",(()=>{for(const e of this.children)e.isEnabled=this.enabledStyles.includes(e.styleDefinition.name)})),this.setTemplate({tag:"div",attributes:{class:["ck","ck-style-grid"],role:"listbox"},children:this.children})}}var h=s(561),y={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};c()(h.Z,y);h.Z.locals;class k extends t.View{constructor(e,s,n){super(e),this.labelView=new t.LabelView(e),this.labelView.text=s,this.gridView=new u(e,n),this.setTemplate({tag:"div",attributes:{class:["ck","ck-style-panel__style-group"],role:"group","aria-labelledby":this.labelView.id},children:[this.labelView,this.gridView]})}}var b=s(662),g={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};c()(b.Z,g);b.Z.locals;class p extends t.View{constructor(e,s){super(e);const n=e.t;this.focusTracker=new i.FocusTracker,this.keystrokes=new i.KeystrokeHandler,this.children=this.createCollection(),this.blockStylesGroupView=new k(e,n("Block styles"),s.block),this.inlineStylesGroupView=new k(e,n("Text styles"),s.inline),this.set("activeStyles",[]),this.set("enabledStyles",[]),this._focusables=new t.ViewCollection,this._focusCycler=new t.FocusCycler({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:["arrowup","arrowleft"],focusNext:["arrowdown","arrowright"]}}),s.block.length&&this.children.add(this.blockStylesGroupView),s.inline.length&&this.children.add(this.inlineStylesGroupView),this.blockStylesGroupView.gridView.delegate("execute").to(this),this.inlineStylesGroupView.gridView.delegate("execute").to(this),this.blockStylesGroupView.gridView.bind("activeStyles","enabledStyles").to(this),this.inlineStylesGroupView.gridView.bind("activeStyles","enabledStyles").to(this),this.setTemplate({tag:"div",attributes:{class:["ck","ck-style-panel"]},children:this.children})}render(){super.render();[...this.blockStylesGroupView.gridView.children,...this.inlineStylesGroupView.gridView.children].forEach((e=>{this._focusables.add(e),this.focusTracker.add(e.element)})),this.keystrokes.listenTo(this.element)}focus(){this._focusCycler.focusFirst()}focusLast(){this._focusCycler.focusLast()}}function f(e,t=[]){const s={block:[],inline:[]};for(const n of t){const t=[],i=[];for(const s of e.getDefinitionsForView(n.element))s.isBlock?t.push(s.model):i.push(s.model);t.length?s.block.push({...n,modelElements:t,isBlock:!0}):s.inline.push({...n,ghsAttributes:i})}return s}var v=s(529),m={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};c()(v.Z,m);v.Z.locals;class w extends e.Plugin{static get pluginName(){return"StyleUI"}init(){const e=this.editor,s=f(e.plugins.get("DataSchema"),e.config.get("style.definitions"));e.ui.componentFactory.add("style",(n=>{const i=n.t,l=(0,t.createDropdown)(n),o=new p(n,s),r=e.commands.get("style");return l.bind("isEnabled").to(r),l.panelView.children.add(o),l.buttonView.withText=!0,l.buttonView.bind("label").to(r,"value",(e=>e.length>1?i("Multiple styles"):1===e.length?e[0]:i("Styles"))),l.bind("class").to(r,"value",(e=>{const t=["ck-style-dropdown"];return e.length>1&&t.push("ck-style-dropdown_multiple-active"),t.join(" ")})),o.delegate("execute").to(l),l.on("execute",(t=>{e.execute("style",{styleName:t.source.styleDefinition.name}),e.editing.view.focus()})),o.bind("activeStyles").to(r,"value"),o.bind("enabledStyles").to(r,"enabledStyles"),l}))}}class _ extends e.Command{constructor(e,t){super(e),this.set("value",[]),this.set("enabledStyles",[]),this._styleDefinitions=t}refresh(){const e=this.editor.model,t=e.document.selection,s=new Set,n=new Set;for(const i of this._styleDefinitions.inline)for(const l of i.ghsAttributes){e.schema.checkAttributeInSelection(t,l)&&n.add(i.name);S(this._getValueFromFirstAllowedNode(l),i.classes)&&s.add(i.name)}const l=(0,i.first)(t.getSelectedBlocks());if(l){const t=l.getAncestors({includeSelf:!0,parentFirst:!0});for(const i of t){if(e.schema.isLimit(i))break;if(e.schema.checkAttribute(i,"htmlAttributes"))for(const e of this._styleDefinitions.block){if(!e.modelElements.includes(i.name))continue;n.add(e.name);S(i.getAttribute("htmlAttributes"),e.classes)&&s.add(e.name)}}}this.enabledStyles=Array.from(n).sort(),this.isEnabled=this.enabledStyles.length>0,this.value=this.isEnabled?Array.from(s).sort():[]}execute({styleName:e,forceValue:t}){if(!this.enabledStyles.includes(e))return void(0,i.logWarning)("style-command-executed-with-incorrect-style-name");const s=this.editor.model,n=s.document.selection,l=this.editor.plugins.get("GeneralHtmlSupport"),o=[...this._styleDefinitions.inline,...this._styleDefinitions.block].find((({name:t})=>t==e)),r=void 0===t?!this.value.includes(o.name):t;s.change((()=>{let e;e=o.isBlock?function(e,t,s){const n=new Set;for(const i of e){const e=i.getAncestors({includeSelf:!0,parentFirst:!0});for(const i of e){if(s.isLimit(i))break;if(t.includes(i.name)){n.add(i);break}}}return n}(n.getSelectedBlocks(),o.modelElements,s.schema):[n];for(const t of e)r?l.addModelHtmlClass(o.element,o.classes,t):l.removeModelHtmlClass(o.element,o.classes,t)}))}_getValueFromFirstAllowedNode(e){const t=this.editor.model,s=t.schema,n=t.document.selection;if(n.isCollapsed)return n.getAttribute(e);for(const t of n.getRanges())for(const n of t.getItems())if(s.checkAttribute(n,e))return n.getAttribute(e);return null}}function S(e,t){return!(!e||!e.classes)&&t.every((t=>e.classes.includes(t)))}class x extends e.Plugin{static get pluginName(){return"StyleEditing"}static get requires(){return["GeneralHtmlSupport"]}init(){const e=this.editor,t=f(e.plugins.get("DataSchema"),e.config.get("style.definitions"));e.commands.add("style",new _(e,t)),this._configureGHSDataFilter(t)}_configureGHSDataFilter({block:e,inline:t}){const s=this.editor.plugins.get("DataFilter");s.loadAllowedConfig(e.map(T)),s.loadAllowedConfig(t.map(T))}}function T({element:e,classes:t}){return{name:e,classes:t}}class V extends e.Plugin{static get pluginName(){return"Style"}static get requires(){return[x,w]}}})(),(window.CKEditor5=window.CKEditor5||{}).style=n})();
\ No newline at end of file
+ */(()=>{var e={529:(e,t,s)=>{"use strict";s.d(t,{Z:()=>l});var n=s(609),i=s.n(n)()((function(e){return e[1]}));i.push([e.id,".ck.ck-dropdown.ck-style-dropdown.ck-style-dropdown_multiple-active>.ck-button>.ck-button__label{font-style:italic}",""]);const l=i},945:(e,t,s)=>{"use strict";s.d(t,{Z:()=>l});var n=s(609),i=s.n(n)()((function(e){return e[1]}));i.push([e.id,":root{--ck-style-panel-columns:3}.ck.ck-style-panel .ck-style-grid{display:grid;grid-template-columns:repeat(var(--ck-style-panel-columns),auto);justify-content:start}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button{display:flex;flex-direction:column;justify-content:space-between}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button .ck-style-grid__button__preview{align-content:center;align-items:center;display:flex;flex-basis:100%;flex-grow:1;justify-content:flex-start}:root{--ck-style-panel-button-width:120px;--ck-style-panel-button-height:80px;--ck-style-panel-button-label-background:#f0f0f0;--ck-style-panel-button-hover-label-background:#ebebeb;--ck-style-panel-button-hover-border-color:#b3b3b3}.ck.ck-style-panel .ck-style-grid{column-gap:var(--ck-spacing-large);row-gap:var(--ck-spacing-large)}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button{--ck-color-button-default-hover-background:var(--ck-color-base-background);--ck-color-button-default-active-background:var(--ck-color-base-background);height:var(--ck-style-panel-button-height);padding:0;width:var(--ck-style-panel-button-width)}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button:not(:focus){border:1px solid var(--ck-color-base-border)}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button .ck-button__label{flex-shrink:0;height:22px;line-height:22px;overflow:hidden;padding:0 var(--ck-spacing-medium);text-overflow:ellipsis;width:100%}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button .ck-style-grid__button__preview{background:var(--ck-color-base-background);border:2px solid var(--ck-color-base-background);opacity:.9;overflow:hidden;padding:var(--ck-spacing-medium);width:100%}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button.ck-disabled{--ck-color-button-default-disabled-background:var(--ck-color-base-foreground)}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button.ck-disabled:not(:focus){border-color:var(--ck-style-panel-button-label-background)}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button.ck-disabled .ck-style-grid__button__preview{border-color:var(--ck-color-base-foreground);filter:saturate(.3);opacity:.4}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button.ck-on{border-color:var(--ck-color-base-active)}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button.ck-on .ck-button__label{box-shadow:0 -1px 0 var(--ck-color-base-active);z-index:1}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button.ck-on:hover{border-color:var(--ck-color-base-active-focus)}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button:not(.ck-on) .ck-button__label{background:var(--ck-style-panel-button-label-background)}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button:not(.ck-on):hover .ck-button__label{background:var(--ck-style-panel-button-hover-label-background)}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button:hover:not(.ck-disabled):not(.ck-on){border-color:var(--ck-style-panel-button-hover-border-color)}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button:hover:not(.ck-disabled):not(.ck-on) .ck-style-grid__button__preview{opacity:1}",""]);const l=i},561:(e,t,s)=>{"use strict";s.d(t,{Z:()=>l});var n=s(609),i=s.n(n)()((function(e){return e[1]}));i.push([e.id,".ck.ck-style-panel .ck-style-panel__style-group>.ck-label{margin:var(--ck-spacing-large) 0}.ck.ck-style-panel .ck-style-panel__style-group:first-child>.ck-label{margin-top:0}",""]);const l=i},662:(e,t,s)=>{"use strict";s.d(t,{Z:()=>l});var n=s(609),i=s.n(n)()((function(e){return e[1]}));i.push([e.id,":root{--ck-style-panel-max-height:470px}.ck.ck-style-panel{max-height:var(--ck-style-panel-max-height);overflow-y:auto;padding:var(--ck-spacing-large)}",""]);const l=i},609:e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var s=e(t);return t[2]?"@media ".concat(t[2]," {").concat(s,"}"):s})).join("")},t.i=function(e,s,n){"string"==typeof e&&(e=[[null,e,""]]);var i={};if(n)for(var l=0;l<this.length;l++){var r=this[l][0];null!=r&&(i[r]=!0)}for(var o=0;o<e.length;o++){var c=[].concat(e[o]);n&&i[c[0]]||(s&&(c[2]?c[2]="".concat(s," and ").concat(c[2]):c[2]=s),t.push(c))}},t}},62:(e,t,s)=>{"use strict";var n,i=function(){return void 0===n&&(n=Boolean(window&&document&&document.all&&!window.atob)),n},l=function(){var e={};return function(t){if(void 0===e[t]){var s=document.querySelector(t);if(window.HTMLIFrameElement&&s instanceof window.HTMLIFrameElement)try{s=s.contentDocument.head}catch(e){s=null}e[t]=s}return e[t]}}(),r=[];function o(e){for(var t=-1,s=0;s<r.length;s++)if(r[s].identifier===e){t=s;break}return t}function c(e,t){for(var s={},n=[],i=0;i<e.length;i++){var l=e[i],c=t.base?l[0]+t.base:l[0],a=s[c]||0,d="".concat(c," ").concat(a);s[c]=a+1;var u=o(d),h={css:l[1],media:l[2],sourceMap:l[3]};-1!==u?(r[u].references++,r[u].updater(h)):r.push({identifier:d,updater:g(h,t),references:1}),n.push(d)}return n}function a(e){var t=document.createElement("style"),n=e.attributes||{};if(void 0===n.nonce){var i=s.nc;i&&(n.nonce=i)}if(Object.keys(n).forEach((function(e){t.setAttribute(e,n[e])})),"function"==typeof e.insert)e.insert(t);else{var r=l(e.insert||"head");if(!r)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");r.appendChild(t)}return t}var d,u=(d=[],function(e,t){return d[e]=t,d.filter(Boolean).join("\n")});function h(e,t,s,n){var i=s?"":n.media?"@media ".concat(n.media," {").concat(n.css,"}"):n.css;if(e.styleSheet)e.styleSheet.cssText=u(t,i);else{var l=document.createTextNode(i),r=e.childNodes;r[t]&&e.removeChild(r[t]),r.length?e.insertBefore(l,r[t]):e.appendChild(l)}}function k(e,t,s){var n=s.css,i=s.media,l=s.sourceMap;if(i?e.setAttribute("media",i):e.removeAttribute("media"),l&&"undefined"!=typeof btoa&&(n+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(l))))," */")),e.styleSheet)e.styleSheet.cssText=n;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(n))}}var y=null,b=0;function g(e,t){var s,n,i;if(t.singleton){var l=b++;s=y||(y=a(t)),n=h.bind(null,s,l,!1),i=h.bind(null,s,l,!0)}else s=a(t),n=k.bind(null,s,t),i=function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(s)};return n(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;n(e=t)}else i()}}e.exports=function(e,t){(t=t||{}).singleton||"boolean"==typeof t.singleton||(t.singleton=i());var s=c(e=e||[],t);return function(e){if(e=e||[],"[object Array]"===Object.prototype.toString.call(e)){for(var n=0;n<s.length;n++){var i=o(s[n]);r[i].references--}for(var l=c(e,t),a=0;a<s.length;a++){var d=o(s[a]);0===r[d].references&&(r[d].updater(),r.splice(d,1))}s=l}}}},704:(e,t,s)=>{e.exports=s(79)("./src/core.js")},273:(e,t,s)=>{e.exports=s(79)("./src/ui.js")},209:(e,t,s)=>{e.exports=s(79)("./src/utils.js")},79:e=>{"use strict";e.exports=CKEditor5.dll}},t={};function s(n){var i=t[n];if(void 0!==i)return i.exports;var l=t[n]={id:n,exports:{}};return e[n](l,l.exports,s),l.exports}s.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return s.d(t,{a:t}),t},s.d=(e,t)=>{for(var n in t)s.o(t,n)&&!s.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},s.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),s.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.nc=void 0;var n={};(()=>{"use strict";s.r(n),s.d(n,{Style:()=>V,StyleEditing:()=>x,StyleUI:()=>w});var e=s(704),t=s(273),i=s(209);const l=["caption","colgroup","dd","dt","figcaption","legend","li","optgroup","option","rp","rt","summary","tbody","td","tfoot","th","thead","tr"];class r extends t.ButtonView{constructor(e,t){super(e),this.styleDefinition=t,this.previewView=this._createPreview(),this.set({label:t.name,class:"ck-style-grid__button",withText:!0}),this.extendTemplate({attributes:{role:"option"}}),this.children.add(this.previewView,0)}_createPreview(){const{element:e,classes:s}=this.styleDefinition,n=new t.View(this.locale);return n.setTemplate({tag:"div",attributes:{class:["ck","ck-reset_all-excluded","ck-style-grid__button__preview","ck-content"],"aria-hidden":"true"},children:[{tag:this._isPreviewable(e)?e:"div",attributes:{class:s},children:[{text:"AaBbCcDdEeFfGgHhIiJj"}]}]}),n}_isPreviewable(e){return!l.includes(e)}}var o=s(62),c=s.n(o),a=s(945),d={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};c()(a.Z,d);a.Z.locals;class u extends t.View{constructor(e,t){super(e),this.focusTracker=new i.FocusTracker,this.keystrokes=new i.KeystrokeHandler,this.set("activeStyles",[]),this.set("enabledStyles",[]),this.children=this.createCollection(),this.children.delegate("execute").to(this);for(const s of t){const t=new r(e,s);this.children.add(t)}this.on("change:activeStyles",(()=>{for(const e of this.children)e.isOn=this.activeStyles.includes(e.styleDefinition.name)})),this.on("change:enabledStyles",(()=>{for(const e of this.children)e.isEnabled=this.enabledStyles.includes(e.styleDefinition.name)})),this.setTemplate({tag:"div",attributes:{class:["ck","ck-style-grid"],role:"listbox"},children:this.children})}render(){super.render();for(const e of this.children)this.focusTracker.add(e.element);(0,t.addKeyboardHandlingForGrid)({keystrokeHandler:this.keystrokes,focusTracker:this.focusTracker,gridItems:this.children,numberOfColumns:3}),this.keystrokes.listenTo(this.element)}focus(){this.children.first.focus()}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}}var h=s(561),k={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};c()(h.Z,k);h.Z.locals;class y extends t.View{constructor(e,s,n){super(e),this.labelView=new t.LabelView(e),this.labelView.text=s,this.gridView=new u(e,n),this.setTemplate({tag:"div",attributes:{class:["ck","ck-style-panel__style-group"],role:"group","aria-labelledby":this.labelView.id},children:[this.labelView,this.gridView]})}}var b=s(662),g={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};c()(b.Z,g);b.Z.locals;class p extends t.View{constructor(e,s){super(e);const n=e.t;this.focusTracker=new i.FocusTracker,this.keystrokes=new i.KeystrokeHandler,this.children=this.createCollection(),this.blockStylesGroupView=new y(e,n("Block styles"),s.block),this.inlineStylesGroupView=new y(e,n("Text styles"),s.inline),this.set("activeStyles",[]),this.set("enabledStyles",[]),this._focusables=new t.ViewCollection,this._focusCycler=new t.FocusCycler({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:["shift + tab"],focusNext:["tab"]}}),s.block.length&&this.children.add(this.blockStylesGroupView),s.inline.length&&this.children.add(this.inlineStylesGroupView),this.blockStylesGroupView.gridView.delegate("execute").to(this),this.inlineStylesGroupView.gridView.delegate("execute").to(this),this.blockStylesGroupView.gridView.bind("activeStyles","enabledStyles").to(this),this.inlineStylesGroupView.gridView.bind("activeStyles","enabledStyles").to(this),this.setTemplate({tag:"div",attributes:{class:["ck","ck-style-panel"]},children:this.children})}render(){super.render(),this._focusables.add(this.blockStylesGroupView.gridView),this._focusables.add(this.inlineStylesGroupView.gridView),this.focusTracker.add(this.blockStylesGroupView.gridView.element),this.focusTracker.add(this.inlineStylesGroupView.gridView.element),this.keystrokes.listenTo(this.element)}focus(){this._focusCycler.focusFirst()}focusLast(){this._focusCycler.focusLast()}}function f(e,t=[]){const s={block:[],inline:[]};for(const n of t){const t=[],i=[];for(const s of e.getDefinitionsForView(n.element))s.isBlock?t.push(s.model):i.push(s.model);t.length?s.block.push({...n,modelElements:t,isBlock:!0}):s.inline.push({...n,ghsAttributes:i})}return s}var m=s(529),v={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};c()(m.Z,v);m.Z.locals;class w extends e.Plugin{static get pluginName(){return"StyleUI"}init(){const e=this.editor,s=f(e.plugins.get("DataSchema"),e.config.get("style.definitions"));e.ui.componentFactory.add("style",(n=>{const i=n.t,l=(0,t.createDropdown)(n),r=new p(n,s),o=e.commands.get("style");return l.bind("isEnabled").to(o),l.panelView.children.add(r),l.buttonView.withText=!0,l.buttonView.bind("label").to(o,"value",(e=>e.length>1?i("Multiple styles"):1===e.length?e[0]:i("Styles"))),l.bind("class").to(o,"value",(e=>{const t=["ck-style-dropdown"];return e.length>1&&t.push("ck-style-dropdown_multiple-active"),t.join(" ")})),r.delegate("execute").to(l),l.on("execute",(t=>{e.execute("style",{styleName:t.source.styleDefinition.name}),e.editing.view.focus()})),r.bind("activeStyles").to(o,"value"),r.bind("enabledStyles").to(o,"enabledStyles"),l}))}}class _ extends e.Command{constructor(e,t){super(e),this.set("value",[]),this.set("enabledStyles",[]),this._styleDefinitions=t}refresh(){const e=this.editor.model,t=e.document.selection,s=new Set,n=new Set;for(const i of this._styleDefinitions.inline)for(const l of i.ghsAttributes){e.schema.checkAttributeInSelection(t,l)&&n.add(i.name);S(this._getValueFromFirstAllowedNode(l),i.classes)&&s.add(i.name)}const l=(0,i.first)(t.getSelectedBlocks());if(l){const t=l.getAncestors({includeSelf:!0,parentFirst:!0});for(const i of t){if(e.schema.isLimit(i))break;if(e.schema.checkAttribute(i,"htmlAttributes"))for(const e of this._styleDefinitions.block){if(!e.modelElements.includes(i.name))continue;n.add(e.name);S(i.getAttribute("htmlAttributes"),e.classes)&&s.add(e.name)}}}this.enabledStyles=Array.from(n).sort(),this.isEnabled=this.enabledStyles.length>0,this.value=this.isEnabled?Array.from(s).sort():[]}execute({styleName:e,forceValue:t}){if(!this.enabledStyles.includes(e))return void(0,i.logWarning)("style-command-executed-with-incorrect-style-name");const s=this.editor.model,n=s.document.selection,l=this.editor.plugins.get("GeneralHtmlSupport"),r=[...this._styleDefinitions.inline,...this._styleDefinitions.block].find((({name:t})=>t==e)),o=void 0===t?!this.value.includes(r.name):t;s.change((()=>{let e;e=r.isBlock?function(e,t,s){const n=new Set;for(const i of e){const e=i.getAncestors({includeSelf:!0,parentFirst:!0});for(const i of e){if(s.isLimit(i))break;if(t.includes(i.name)){n.add(i);break}}}return n}(n.getSelectedBlocks(),r.modelElements,s.schema):[n];for(const t of e)o?l.addModelHtmlClass(r.element,r.classes,t):l.removeModelHtmlClass(r.element,r.classes,t)}))}_getValueFromFirstAllowedNode(e){const t=this.editor.model,s=t.schema,n=t.document.selection;if(n.isCollapsed)return n.getAttribute(e);for(const t of n.getRanges())for(const n of t.getItems())if(s.checkAttribute(n,e))return n.getAttribute(e);return null}}function S(e,t){return!(!e||!e.classes)&&t.every((t=>e.classes.includes(t)))}class x extends e.Plugin{static get pluginName(){return"StyleEditing"}static get requires(){return["GeneralHtmlSupport"]}init(){const e=this.editor,t=f(e.plugins.get("DataSchema"),e.config.get("style.definitions"));e.commands.add("style",new _(e,t)),this._configureGHSDataFilter(t)}_configureGHSDataFilter({block:e,inline:t}){const s=this.editor.plugins.get("DataFilter");s.loadAllowedConfig(e.map(T)),s.loadAllowedConfig(t.map(T))}}function T({element:e,classes:t}){return{name:e,classes:t}}class V extends e.Plugin{static get pluginName(){return"Style"}static get requires(){return[x,w]}}})(),(window.CKEditor5=window.CKEditor5||{}).style=n})();
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/table/table.js b/core/assets/vendor/ckeditor5/table/table.js
index 21589b94be..e81c76e1c3 100644
--- a/core/assets/vendor/ckeditor5/table/table.js
+++ b/core/assets/vendor/ckeditor5/table/table.js
@@ -2,4 +2,4 @@
 /*!
  * @license Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
  * For licensing, see LICENSE.md.
- */(()=>{var e={252:(e,t,o)=>{"use strict";o.d(t,{Z:()=>l});var n=o(609),i=o.n(n)()((function(e){return e[1]}));i.push([e.id,".ck.ck-input-color{display:flex;flex-direction:row-reverse;width:100%}.ck.ck-input-color>input.ck.ck-input-text{flex-grow:1;min-width:auto}.ck.ck-input-color>div.ck.ck-dropdown{min-width:auto}.ck.ck-input-color>div.ck.ck-dropdown>.ck-input-color__button .ck-dropdown__arrow{display:none}.ck.ck-input-color .ck.ck-input-color__button{display:flex}.ck.ck-input-color .ck.ck-input-color__button .ck.ck-input-color__button__preview{overflow:hidden;position:relative}.ck.ck-input-color .ck.ck-input-color__button .ck.ck-input-color__button__preview>.ck.ck-input-color__button__preview__no-color-indicator{display:block;position:absolute}[dir=ltr] .ck.ck-input-color>.ck.ck-input-text{border-bottom-right-radius:0;border-top-right-radius:0}[dir=rtl] .ck.ck-input-color>.ck.ck-input-text{border-bottom-left-radius:0;border-top-left-radius:0}.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button{padding:0}[dir=ltr] .ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button{border-bottom-left-radius:0;border-left-width:0;border-top-left-radius:0}[dir=rtl] .ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button{border-bottom-right-radius:0;border-right-width:0;border-top-right-radius:0}.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button.ck-disabled{background:var(--ck-color-input-disabled-background)}.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button>.ck.ck-input-color__button__preview{border-radius:0}.ck-rounded-corners .ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button>.ck.ck-input-color__button__preview,.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button>.ck.ck-input-color__button__preview.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button>.ck.ck-input-color__button__preview{border:1px solid var(--ck-color-input-border);height:20px;width:20px}.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button>.ck.ck-input-color__button__preview>.ck.ck-input-color__button__preview__no-color-indicator{background:red;border-radius:2px;height:150%;left:50%;top:-30%;transform:rotate(45deg);transform-origin:50%;width:8%}.ck.ck-input-color .ck.ck-input-color__remove-color{border-bottom:1px solid var(--ck-color-input-border);border-bottom-left-radius:0;border-bottom-right-radius:0;padding:calc(var(--ck-spacing-standard)/2) var(--ck-spacing-standard);width:100%}[dir=ltr] .ck.ck-input-color .ck.ck-input-color__remove-color{border-top-right-radius:0}[dir=rtl] .ck.ck-input-color .ck.ck-input-color__remove-color{border-top-left-radius:0}.ck.ck-input-color .ck.ck-input-color__remove-color .ck.ck-icon{margin-right:var(--ck-spacing-standard)}[dir=rtl] .ck.ck-input-color .ck.ck-input-color__remove-color .ck.ck-icon{margin-left:var(--ck-spacing-standard);margin-right:0}",""]);const l=i},934:(e,t,o)=>{"use strict";o.d(t,{Z:()=>l});var n=o(609),i=o.n(n)()((function(e){return e[1]}));i.push([e.id,".ck.ck-form{padding:0 0 var(--ck-spacing-large)}.ck.ck-form:focus{outline:none}.ck.ck-form .ck.ck-input-text{min-width:100%;width:0}.ck.ck-form .ck.ck-dropdown{min-width:100%}.ck.ck-form .ck.ck-dropdown .ck-dropdown__button:not(:focus){border:1px solid var(--ck-color-base-border)}.ck.ck-form .ck.ck-dropdown .ck-dropdown__button .ck-button__label{width:100%}",""]);const l=i},333:(e,t,o)=>{"use strict";o.d(t,{Z:()=>l});var n=o(609),i=o.n(n)()((function(e){return e[1]}));i.push([e.id,".ck.ck-form__row{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-between}.ck.ck-form__row>:not(.ck-label){flex-grow:1}.ck.ck-form__row.ck-table-form__action-row .ck-button-cancel,.ck.ck-form__row.ck-table-form__action-row .ck-button-save{justify-content:center}.ck.ck-form__row{padding:var(--ck-spacing-standard) var(--ck-spacing-large) 0}[dir=ltr] .ck.ck-form__row>:not(.ck-label)+*{margin-left:var(--ck-spacing-large)}[dir=rtl] .ck.ck-form__row>:not(.ck-label)+*{margin-right:var(--ck-spacing-large)}.ck.ck-form__row>.ck-label{min-width:100%;width:100%}.ck.ck-form__row.ck-table-form__action-row{margin-top:var(--ck-spacing-large)}.ck.ck-form__row.ck-table-form__action-row .ck-button .ck-button__label{color:var(--ck-color-text)}",""]);const l=i},272:(e,t,o)=>{"use strict";o.d(t,{Z:()=>l});var n=o(609),i=o.n(n)()((function(e){return e[1]}));i.push([e.id,".ck .ck-insert-table-dropdown__grid{display:flex;flex-direction:row;flex-wrap:wrap}:root{--ck-insert-table-dropdown-padding:10px;--ck-insert-table-dropdown-box-height:11px;--ck-insert-table-dropdown-box-width:12px;--ck-insert-table-dropdown-box-margin:1px}.ck .ck-insert-table-dropdown__grid{padding:var(--ck-insert-table-dropdown-padding) var(--ck-insert-table-dropdown-padding) 0;width:calc(var(--ck-insert-table-dropdown-box-width)*10 + var(--ck-insert-table-dropdown-box-margin)*20 + var(--ck-insert-table-dropdown-padding)*2)}.ck .ck-insert-table-dropdown__label{text-align:center}.ck .ck-insert-table-dropdown-grid-box{border:1px solid var(--ck-color-base-border);border-radius:1px;height:var(--ck-insert-table-dropdown-box-height);margin:var(--ck-insert-table-dropdown-box-margin);outline:none;width:var(--ck-insert-table-dropdown-box-width)}.ck .ck-insert-table-dropdown-grid-box.ck-on{background:var(--ck-color-focus-outer-shadow);border-color:var(--ck-color-focus-border)}",""]);const l=i},660:(e,t,o)=>{"use strict";o.d(t,{Z:()=>l});var n=o(609),i=o.n(n)()((function(e){return e[1]}));i.push([e.id,".ck-content .table{display:table;margin:.9em auto}.ck-content .table table{border:1px double #b3b3b3;border-collapse:collapse;border-spacing:0;height:100%;width:100%}.ck-content .table table td,.ck-content .table table th{border:1px solid #bfbfbf;min-width:2em;padding:.4em}.ck-content .table table th{background:rgba(0,0,0,.05);font-weight:700}.ck-content[dir=rtl] .table th{text-align:right}.ck-content[dir=ltr] .table th{text-align:left}.ck-editor__editable .ck-table-bogus-paragraph{display:inline-block;width:100%}",""]);const l=i},665:(e,t,o)=>{"use strict";o.d(t,{Z:()=>l});var n=o(609),i=o.n(n)()((function(e){return e[1]}));i.push([e.id,":root{--ck-color-table-caption-background:#f7f7f7;--ck-color-table-caption-text:#333;--ck-color-table-caption-highlighted-background:#fd0}.ck-content .table>figcaption{background-color:var(--ck-color-table-caption-background);caption-side:top;color:var(--ck-color-table-caption-text);display:table-caption;font-size:.75em;outline-offset:-1px;padding:.6em;text-align:center;word-break:break-word}.ck.ck-editor__editable .table>figcaption.table__caption_highlighted{animation:ck-table-caption-highlight .6s ease-out}.ck.ck-editor__editable .table>figcaption.ck-placeholder:before{overflow:hidden;padding-left:inherit;padding-right:inherit;text-overflow:ellipsis;white-space:nowrap}@keyframes ck-table-caption-highlight{0%{background-color:var(--ck-color-table-caption-highlighted-background)}to{background-color:var(--ck-color-table-caption-background)}}",""]);const l=i},773:(e,t,o)=>{"use strict";o.d(t,{Z:()=>l});var n=o(609),i=o.n(n)()((function(e){return e[1]}));i.push([e.id,".ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__alignment-row{flex-wrap:wrap}.ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__alignment-row .ck.ck-toolbar:first-of-type{flex-grow:0.57}.ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__alignment-row .ck.ck-toolbar:last-of-type{flex-grow:0.43}.ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__alignment-row .ck.ck-toolbar .ck-button{flex-grow:1}.ck.ck-table-cell-properties-form{width:320px}.ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__padding-row{align-self:flex-end;padding:0;width:25%}.ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__alignment-row .ck.ck-toolbar{background:none;margin-top:var(--ck-spacing-standard)}",""]);const l=i},975:(e,t,o)=>{"use strict";o.d(t,{Z:()=>l});var n=o(609),i=o.n(n)()((function(e){return e[1]}));i.push([e.id,":root{--ck-color-table-column-resizer-hover:var(--ck-color-base-active);--ck-table-column-resizer-width:7px;--ck-table-column-resizer-position-offset:calc(var(--ck-table-column-resizer-width)*-0.5 - 0.5px)}.ck-content .table .ck-table-resized{table-layout:fixed}.ck-content .table table{overflow:hidden}.ck-content .table td,.ck-content .table th{position:relative}.ck.ck-editor__editable .table .ck-table-column-resizer{bottom:-999999px;cursor:col-resize;position:absolute;right:var(--ck-table-column-resizer-position-offset);top:-999999px;user-select:none;width:var(--ck-table-column-resizer-width);z-index:var(--ck-z-default)}.ck.ck-editor__editable .table[draggable] .ck-table-column-resizer,.ck.ck-editor__editable.ck-column-resize_disabled .table .ck-table-column-resizer{display:none}.ck.ck-editor__editable .table .ck-table-column-resizer:hover,.ck.ck-editor__editable .table .ck-table-column-resizer__active{background-color:var(--ck-color-table-column-resizer-hover);opacity:.25}.ck.ck-editor__editable[dir=rtl] .table .ck-table-column-resizer{left:var(--ck-table-column-resizer-position-offset);right:unset}",""]);const l=i},482:(e,t,o)=>{"use strict";o.d(t,{Z:()=>l});var n=o(609),i=o.n(n)()((function(e){return e[1]}));i.push([e.id,":root{--ck-color-table-focused-cell-background:rgba(158,201,250,.3)}.ck-widget.table td.ck-editor__nested-editable.ck-editor__nested-editable_focused,.ck-widget.table td.ck-editor__nested-editable:focus,.ck-widget.table th.ck-editor__nested-editable.ck-editor__nested-editable_focused,.ck-widget.table th.ck-editor__nested-editable:focus{background:var(--ck-color-table-focused-cell-background);border-style:none;outline:1px solid var(--ck-color-focus-border);outline-offset:-1px}",""]);const l=i},686:(e,t,o)=>{"use strict";o.d(t,{Z:()=>l});var n=o(609),i=o.n(n)()((function(e){return e[1]}));i.push([e.id,'.ck.ck-table-form .ck-form__row.ck-table-form__background-row,.ck.ck-table-form .ck-form__row.ck-table-form__border-row{flex-wrap:wrap}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row{align-items:center;flex-wrap:wrap}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-labeled-field-view{align-items:center;display:flex;flex-direction:column-reverse}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-labeled-field-view .ck.ck-dropdown,.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-table-form__dimension-operator{flex-grow:0}.ck.ck-table-form .ck.ck-labeled-field-view{position:relative}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status{bottom:calc(var(--ck-table-properties-error-arrow-size)*-1);left:50%;position:absolute;transform:translate(-50%,100%);z-index:1}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status:after{content:"";left:50%;position:absolute;top:calc(var(--ck-table-properties-error-arrow-size)*-1);transform:translateX(-50%)}:root{--ck-table-properties-error-arrow-size:6px;--ck-table-properties-min-error-width:150px}.ck.ck-table-form .ck-form__row.ck-table-form__border-row .ck-labeled-field-view>.ck-label{font-size:var(--ck-font-size-tiny);text-align:center}.ck.ck-table-form .ck-form__row.ck-table-form__border-row .ck-table-form__border-style,.ck.ck-table-form .ck-form__row.ck-table-form__border-row .ck-table-form__border-width{max-width:80px;min-width:80px;width:80px}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row{padding:0}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-table-form__dimensions-row__height,.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-table-form__dimensions-row__width{margin:0}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-table-form__dimension-operator{align-self:flex-end;display:inline-block;height:var(--ck-ui-component-min-height);line-height:var(--ck-ui-component-min-height);margin:0 var(--ck-spacing-small)}.ck.ck-table-form .ck.ck-labeled-field-view{padding-top:var(--ck-spacing-standard)}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status{border-radius:0}.ck-rounded-corners .ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status,.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status{background:var(--ck-color-base-error);color:var(--ck-color-base-background);min-width:var(--ck-table-properties-min-error-width);padding:var(--ck-spacing-small) var(--ck-spacing-medium);text-align:center}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status:after{border-color:transparent transparent var(--ck-color-base-error) transparent;border-style:solid;border-width:0 var(--ck-table-properties-error-arrow-size) var(--ck-table-properties-error-arrow-size) var(--ck-table-properties-error-arrow-size)}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status{animation:ck-table-form-labeled-view-status-appear .15s ease both}.ck.ck-table-form .ck.ck-labeled-field-view .ck-input.ck-error:not(:focus)+.ck.ck-labeled-field-view__status{display:none}@keyframes ck-table-form-labeled-view-status-appear{0%{opacity:0}to{opacity:1}}',""]);const l=i},99:(e,t,o)=>{"use strict";o.d(t,{Z:()=>l});var n=o(609),i=o.n(n)()((function(e){return e[1]}));i.push([e.id,".ck.ck-table-properties-form .ck-form__row.ck-table-properties-form__alignment-row{align-content:baseline;flex-basis:0;flex-wrap:wrap}.ck.ck-table-properties-form .ck-form__row.ck-table-properties-form__alignment-row .ck.ck-toolbar .ck-toolbar__items{flex-wrap:nowrap}.ck.ck-table-properties-form{width:320px}.ck.ck-table-properties-form .ck-form__row.ck-table-properties-form__alignment-row{align-self:flex-end;padding:0}.ck.ck-table-properties-form .ck-form__row.ck-table-properties-form__alignment-row .ck.ck-toolbar{background:none;margin-top:var(--ck-spacing-standard)}.ck.ck-table-properties-form .ck-form__row.ck-table-properties-form__alignment-row .ck.ck-toolbar .ck-toolbar__items>*{width:40px}",""]);const l=i},475:(e,t,o)=>{"use strict";o.d(t,{Z:()=>l});var n=o(609),i=o.n(n)()((function(e){return e[1]}));i.push([e.id,':root{--ck-table-selected-cell-background:rgba(158,207,250,.3)}.ck.ck-editor__editable .table table td.ck-editor__editable_selected,.ck.ck-editor__editable .table table th.ck-editor__editable_selected{box-shadow:unset;caret-color:transparent;outline:unset;position:relative}.ck.ck-editor__editable .table table td.ck-editor__editable_selected:after,.ck.ck-editor__editable .table table th.ck-editor__editable_selected:after{background-color:var(--ck-table-selected-cell-background);bottom:0;content:"";left:0;pointer-events:none;position:absolute;right:0;top:0}.ck.ck-editor__editable .table table td.ck-editor__editable_selected ::selection,.ck.ck-editor__editable .table table td.ck-editor__editable_selected:focus,.ck.ck-editor__editable .table table th.ck-editor__editable_selected ::selection,.ck.ck-editor__editable .table table th.ck-editor__editable_selected:focus{background-color:transparent}.ck.ck-editor__editable .table table td.ck-editor__editable_selected .ck-widget,.ck.ck-editor__editable .table table th.ck-editor__editable_selected .ck-widget{outline:unset}.ck.ck-editor__editable .table table td.ck-editor__editable_selected .ck-widget>.ck-widget__selection-handle,.ck.ck-editor__editable .table table th.ck-editor__editable_selected .ck-widget>.ck-widget__selection-handle{display:none}',""]);const l=i},609:e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var o=e(t);return t[2]?"@media ".concat(t[2]," {").concat(o,"}"):o})).join("")},t.i=function(e,o,n){"string"==typeof e&&(e=[[null,e,""]]);var i={};if(n)for(var l=0;l<this.length;l++){var r=this[l][0];null!=r&&(i[r]=!0)}for(var s=0;s<e.length;s++){var a=[].concat(e[s]);n&&i[a[0]]||(o&&(a[2]?a[2]="".concat(o," and ").concat(a[2]):a[2]=o),t.push(a))}},t}},62:(e,t,o)=>{"use strict";var n,i=function(){return void 0===n&&(n=Boolean(window&&document&&document.all&&!window.atob)),n},l=function(){var e={};return function(t){if(void 0===e[t]){var o=document.querySelector(t);if(window.HTMLIFrameElement&&o instanceof window.HTMLIFrameElement)try{o=o.contentDocument.head}catch(e){o=null}e[t]=o}return e[t]}}(),r=[];function s(e){for(var t=-1,o=0;o<r.length;o++)if(r[o].identifier===e){t=o;break}return t}function a(e,t){for(var o={},n=[],i=0;i<e.length;i++){var l=e[i],a=t.base?l[0]+t.base:l[0],c=o[a]||0,d="".concat(a," ").concat(c);o[a]=c+1;var u=s(d),h={css:l[1],media:l[2],sourceMap:l[3]};-1!==u?(r[u].references++,r[u].updater(h)):r.push({identifier:d,updater:p(h,t),references:1}),n.push(d)}return n}function c(e){var t=document.createElement("style"),n=e.attributes||{};if(void 0===n.nonce){var i=o.nc;i&&(n.nonce=i)}if(Object.keys(n).forEach((function(e){t.setAttribute(e,n[e])})),"function"==typeof e.insert)e.insert(t);else{var r=l(e.insert||"head");if(!r)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");r.appendChild(t)}return t}var d,u=(d=[],function(e,t){return d[e]=t,d.filter(Boolean).join("\n")});function h(e,t,o,n){var i=o?"":n.media?"@media ".concat(n.media," {").concat(n.css,"}"):n.css;if(e.styleSheet)e.styleSheet.cssText=u(t,i);else{var l=document.createTextNode(i),r=e.childNodes;r[t]&&e.removeChild(r[t]),r.length?e.insertBefore(l,r[t]):e.appendChild(l)}}function b(e,t,o){var n=o.css,i=o.media,l=o.sourceMap;if(i?e.setAttribute("media",i):e.removeAttribute("media"),l&&"undefined"!=typeof btoa&&(n+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(l))))," */")),e.styleSheet)e.styleSheet.cssText=n;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(n))}}var m=null,g=0;function p(e,t){var o,n,i;if(t.singleton){var l=g++;o=m||(m=c(t)),n=h.bind(null,o,l,!1),i=h.bind(null,o,l,!0)}else o=c(t),n=b.bind(null,o,t),i=function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(o)};return n(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;n(e=t)}else i()}}e.exports=function(e,t){(t=t||{}).singleton||"boolean"==typeof t.singleton||(t.singleton=i());var o=a(e=e||[],t);return function(e){if(e=e||[],"[object Array]"===Object.prototype.toString.call(e)){for(var n=0;n<o.length;n++){var i=s(o[n]);r[i].references--}for(var l=a(e,t),c=0;c<o.length;c++){var d=s(o[c]);0===r[d].references&&(r[d].updater(),r.splice(d,1))}o=l}}}},704:(e,t,o)=>{e.exports=o(79)("./src/core.js")},492:(e,t,o)=>{e.exports=o(79)("./src/engine.js")},273:(e,t,o)=>{e.exports=o(79)("./src/ui.js")},209:(e,t,o)=>{e.exports=o(79)("./src/utils.js")},995:(e,t,o)=>{e.exports=o(79)("./src/widget.js")},79:e=>{"use strict";e.exports=CKEditor5.dll}},t={};function o(n){var i=t[n];if(void 0!==i)return i.exports;var l=t[n]={id:n,exports:{}};return e[n](l,l.exports,o),l.exports}o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},o.d=(e,t)=>{for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.nc=void 0;var n={};(()=>{"use strict";o.r(n),o.d(n,{PlainTableOutput:()=>Be,Table:()=>ze,TableCaption:()=>Xo,TableCaptionEditing:()=>Ko,TableCaptionUI:()=>qo,TableCellProperties:()=>_o,TableCellPropertiesEditing:()=>wo,TableCellPropertiesUI:()=>Qt,TableClipboard:()=>ve,TableColumnResize:()=>gn,TableColumnResizeEditing:()=>hn,TableEditing:()=>ce,TableKeyboard:()=>xe,TableMouse:()=>Re,TableProperties:()=>Ho,TablePropertiesEditing:()=>Po,TablePropertiesUI:()=>Do,TableSelection:()=>_e,TableToolbar:()=>De,TableUI:()=>pe,TableUtils:()=>F});var e=o(704),t=o(995);function i(e,t,o,n,i=1){t>i?n.setAttribute(e,t,o):n.removeAttribute(e,o)}function l(e,t,o={}){const n=e.createElement("tableCell",o);return e.insertElement("paragraph",n),e.insert(n,t),n}function r(e,t){const o=t.parent.parent,n=parseInt(o.getAttribute("headingColumns")||0),{column:i}=e.getCellLocation(t);return!!n&&i<n}var s=o(209);function a(){return e=>{e.on("element:table",((e,t,o)=>{const n=t.viewItem;if(!o.consumable.test(n,{name:!0}))return;const{rows:i,headingRows:r,headingColumns:s}=function(e){const t={headingRows:0,headingColumns:0},o=[],n=[];let i;for(const l of Array.from(e.getChildren()))if("tbody"===l.name||"thead"===l.name||"tfoot"===l.name){"thead"!==l.name||i||(i=l);const e=Array.from(l.getChildren()).filter((e=>e.is("element","tr")));for(const l of e)if("thead"===l.parent.name&&l.parent===i)t.headingRows++,o.push(l);else{n.push(l);const e=d(l);e>t.headingColumns&&(t.headingColumns=e)}}return t.rows=[...o,...n],t}(n),a={};s&&(a.headingColumns=s),r&&(a.headingRows=r);const c=o.writer.createElement("table",a);if(o.safeInsert(c,t.modelCursor)){if(o.consumable.consume(n,{name:!0}),i.forEach((e=>o.convertItem(e,o.writer.createPositionAt(c,"end")))),o.convertChildren(n,o.writer.createPositionAt(c,"end")),c.isEmpty){const e=o.writer.createElement("tableRow");o.writer.insert(e,o.writer.createPositionAt(c,"end")),l(o.writer,o.writer.createPositionAt(e,"end"))}o.updateConversionResult(c,t)}}))}}function c(e){return t=>{t.on(`element:${e}`,((e,t,o)=>{if(t.modelRange&&t.viewItem.isEmpty){const e=t.modelRange.start.nodeAfter,n=o.writer.createPositionAt(e,0);o.writer.insertElement("paragraph",n)}}),{priority:"low"})}}function d(e){let t=0,o=0;const n=Array.from(e.getChildren()).filter((e=>"th"===e.name||"td"===e.name));for(;o<n.length&&"th"===n[o].name;){const e=n[o];t+=parseInt(e.getAttribute("colspan")||1),o++}return t}class u{constructor(e,t={}){this._table=e,this._startRow=void 0!==t.row?t.row:t.startRow||0,this._endRow=void 0!==t.row?t.row:t.endRow,this._startColumn=void 0!==t.column?t.column:t.startColumn||0,this._endColumn=void 0!==t.column?t.column:t.endColumn,this._includeAllSlots=!!t.includeAllSlots,this._skipRows=new Set,this._row=0,this._rowIndex=0,this._column=0,this._cellIndex=0,this._spannedCells=new Map,this._nextCellAtColumn=-1}[Symbol.iterator](){return this}next(){const e=this._table.getChild(this._rowIndex);if(!e||this._isOverEndRow())return{done:!0};if(!e.is("element","tableRow"))return this._rowIndex++,this.next();if(this._isOverEndColumn())return this._advanceToNextRow();let t=null;const o=this._getSpanned();if(o)this._includeAllSlots&&!this._shouldSkipSlot()&&(t=this._formatOutValue(o.cell,o.row,o.column));else{const o=e.getChild(this._cellIndex);if(!o)return this._advanceToNextRow();const n=parseInt(o.getAttribute("colspan")||1),i=parseInt(o.getAttribute("rowspan")||1);(n>1||i>1)&&this._recordSpans(o,i,n),this._shouldSkipSlot()||(t=this._formatOutValue(o)),this._nextCellAtColumn=this._column+n}return this._column++,this._column==this._nextCellAtColumn&&this._cellIndex++,t||this.next()}skipRow(e){this._skipRows.add(e)}_advanceToNextRow(){return this._row++,this._rowIndex++,this._column=0,this._cellIndex=0,this._nextCellAtColumn=-1,this.next()}_isOverEndRow(){return void 0!==this._endRow&&this._row>this._endRow}_isOverEndColumn(){return void 0!==this._endColumn&&this._column>this._endColumn}_formatOutValue(e,t=this._row,o=this._column){return{done:!1,value:new h(this,e,t,o)}}_shouldSkipSlot(){const e=this._skipRows.has(this._row),t=this._row<this._startRow,o=this._column<this._startColumn,n=void 0!==this._endColumn&&this._column>this._endColumn;return e||t||o||n}_getSpanned(){const e=this._spannedCells.get(this._row);return e&&e.get(this._column)||null}_recordSpans(e,t,o){const n={cell:e,row:this._row,column:this._column};for(let e=this._row;e<this._row+t;e++)for(let t=this._column;t<this._column+o;t++)e==this._row&&t==this._column||this._markSpannedCell(e,t,n)}_markSpannedCell(e,t,o){this._spannedCells.has(e)||this._spannedCells.set(e,new Map);this._spannedCells.get(e).set(t,o)}}class h{constructor(e,t,o,n){this.cell=t,this.row=e._row,this.column=e._column,this.cellAnchorRow=o,this.cellAnchorColumn=n,this._cellIndex=e._cellIndex,this._rowIndex=e._rowIndex,this._table=e._table}get isAnchor(){return this.row===this.cellAnchorRow&&this.column===this.cellAnchorColumn}get cellWidth(){return parseInt(this.cell.getAttribute("colspan")||1)}get cellHeight(){return parseInt(this.cell.getAttribute("rowspan")||1)}get rowIndex(){return this._rowIndex}getPositionBefore(){return this._table.root.document.model.createPositionAt(this._table.getChild(this.row),this._cellIndex)}}function b(e,o={}){return(n,{writer:i})=>{const l=n.getAttribute("headingRows")||0,r=[];l>0&&r.push(i.createContainerElement("thead",null,i.createSlot((e=>e.is("element","tableRow")&&e.index<l)))),l<e.getRows(n)&&r.push(i.createContainerElement("tbody",null,i.createSlot((e=>e.is("element","tableRow")&&e.index>=l))));const s=i.createContainerElement("figure",{class:"table"},[i.createContainerElement("table",null,r),i.createSlot((e=>!e.is("element","tableRow")))]);return o.asWidget?function(e,o){return o.setCustomProperty("table",!0,e),(0,t.toWidget)(e,o,{hasSelectionHandle:!0})}(s,i):s}}function m(e={}){return(o,{writer:n})=>{const i=o.parent,l=i.parent,r=l.getChildIndex(i),s=new u(l,{row:r}),a=l.getAttribute("headingRows")||0,c=l.getAttribute("headingColumns")||0;for(const i of s)if(i.cell==o){const o=i.row<a||i.column<c?"th":"td";return e.asWidget?(0,t.toWidgetEditable)(n.createEditableElement(o),n):n.createContainerElement(o)}}}function g(e={}){return(t,{writer:o,consumable:n,mapper:i})=>{if(t.parent.is("element","tableCell")&&p(t))return e.asWidget?o.createContainerElement("span",{class:"ck-table-bogus-paragraph"}):(n.consume(t,"insert"),void i.bindElements(t,i.toViewElement(t.parent)))}}function p(e){return 1==e.parent.childCount&&![...e.getAttributeKeys()].length}class f extends e.Command{refresh(){const e=this.editor.model,t=e.document.selection,o=e.schema;this.isEnabled=function(e,t){const o=e.getFirstPosition().parent,n=o===o.root?o:o.parent;return t.checkChild(n,"table")}(t,o)}execute(e={}){const t=this.editor.model,o=this.editor.plugins.get("TableUtils"),n=this.editor.config.get("table"),i=n.defaultHeadings.rows,l=n.defaultHeadings.columns;void 0===e.headingRows&&i&&(e.headingRows=i),void 0===e.headingColumns&&l&&(e.headingColumns=l),t.change((n=>{const i=o.createTable(n,e);t.insertObject(i,null,null,{findOptimalPosition:"auto"}),n.setSelection(n.createPositionAt(i.getNodeByPath([0,0,0]),0))}))}}class w extends e.Command{constructor(e,t={}){super(e),this.order=t.order||"below"}refresh(){const e=this.editor.model.document.selection,t=!!this.editor.plugins.get("TableUtils").getSelectionAffectedTableCells(e).length;this.isEnabled=t}execute(){const e=this.editor,t=e.model.document.selection,o=e.plugins.get("TableUtils"),n="above"===this.order,i=o.getSelectionAffectedTableCells(t),l=o.getRowIndexes(i),r=n?l.first:l.last,s=i[0].findAncestor("table");o.insertRows(s,{at:n?r:r+1,copyStructureFromAbove:!n})}}class k extends e.Command{constructor(e,t={}){super(e),this.order=t.order||"right"}refresh(){const e=this.editor.model.document.selection,t=!!this.editor.plugins.get("TableUtils").getSelectionAffectedTableCells(e).length;this.isEnabled=t}execute(){const e=this.editor,t=e.model.document.selection,o=e.plugins.get("TableUtils"),n="left"===this.order,i=o.getSelectionAffectedTableCells(t),l=o.getColumnIndexes(i),r=n?l.first:l.last,s=i[0].findAncestor("table");o.insertColumns(s,{columns:1,at:n?r:r+1})}}class _ extends e.Command{constructor(e,t={}){super(e),this.direction=t.direction||"horizontally"}refresh(){const e=this.editor.plugins.get("TableUtils").getSelectionAffectedTableCells(this.editor.model.document.selection);this.isEnabled=1===e.length}execute(){const e=this.editor.plugins.get("TableUtils"),t=e.getSelectionAffectedTableCells(this.editor.model.document.selection)[0];"horizontally"===this.direction?e.splitCellHorizontally(t,2):e.splitCellVertically(t,2)}}function v(e,t,o){const{startRow:n,startColumn:r,endRow:s,endColumn:a}=t,c=o.createElement("table"),d=s-n+1;for(let e=0;e<d;e++)o.insertElement("tableRow",c,"end");const h=[...new u(e,{startRow:n,endRow:s,startColumn:r,endColumn:a,includeAllSlots:!0})];for(const{row:e,column:t,cell:i,isAnchor:d,cellAnchorRow:u,cellAnchorColumn:b}of h){const h=e-n,m=c.getChild(h);if(d){const n=o.cloneElement(i);o.append(n,m),x(n,e,t,s,a,o)}else(u<n||b<r)&&l(o,o.createPositionAt(m,"end"))}return function(e,t,o,n,l){const r=parseInt(t.getAttribute("headingRows")||0);if(r>0){i("headingRows",r-o,e,l,0)}const s=parseInt(t.getAttribute("headingColumns")||0);if(s>0){i("headingColumns",s-n,e,l,0)}}(c,e,n,r,o),c}function C(e,t,o=0){const n=[],i=new u(e,{startRow:o,endRow:t-1});for(const e of i){const{row:o,cellHeight:i}=e,l=o+i-1;o<t&&t<=l&&n.push(e)}return n}function y(e,t,o){const n=e.parent,r=n.parent,s=n.index,a=t-s,c={},d=parseInt(e.getAttribute("rowspan"))-a;d>1&&(c.rowspan=d);const h=parseInt(e.getAttribute("colspan")||1);h>1&&(c.colspan=h);const b=s+a,m=[...new u(r,{startRow:s,endRow:b,includeAllSlots:!0})];let g,p=null;for(const t of m){const{row:n,column:i,cell:r}=t;r===e&&void 0===g&&(g=i),void 0!==g&&g===i&&n===b&&(p=l(o,t.getPositionBefore(),c))}return i("rowspan",a,e,o),p}function T(e,t){const o=[],n=new u(e);for(const e of n){const{column:n,cellWidth:i}=e,l=n+i-1;n<t&&t<=l&&o.push(e)}return o}function A(e,t,o,n){const r=o-t,s={},a=parseInt(e.getAttribute("colspan"))-r;a>1&&(s.colspan=a);const c=parseInt(e.getAttribute("rowspan")||1);c>1&&(s.rowspan=c);const d=l(n,n.createPositionAfter(e),s);return i("colspan",r,e,n),d}function x(e,t,o,n,l,r){const s=parseInt(e.getAttribute("colspan")||1),a=parseInt(e.getAttribute("rowspan")||1);if(o+s-1>l){i("colspan",l-o+1,e,r,1)}if(t+a-1>n){i("rowspan",n-t+1,e,r,1)}}function V(e,t){const o=t.getColumns(e),n=new Array(o).fill(0);for(const{column:t}of new u(e))n[t]++;const i=n.reduce(((e,t,o)=>t?e:[...e,o]),[]);if(i.length>0){const o=i[i.length-1];return t.removeColumns(e,{at:o}),!0}return!1}function S(e,t){const o=[],n=t.getRows(e);for(let t=0;t<n;t++){e.getChild(t).isEmpty&&o.push(t)}if(o.length>0){const n=o[o.length-1];return t.removeRows(e,{at:n}),!0}return!1}function R(e,t){V(e,t)||S(e,t)}function I(e,t){const o=Array.from(new u(e,{startColumn:t.firstColumn,endColumn:t.lastColumn,row:t.lastRow}));if(o.every((({cellHeight:e})=>1===e)))return t.lastRow;const n=o[0].cellHeight-1;return t.lastRow+n}function P(e,t){const o=Array.from(new u(e,{startRow:t.firstRow,endRow:t.lastRow,column:t.lastColumn}));if(o.every((({cellWidth:e})=>1===e)))return t.lastColumn;const n=o[0].cellWidth-1;return t.lastColumn+n}class E extends e.Command{constructor(e,t){super(e),this.direction=t.direction,this.isHorizontal="right"==this.direction||"left"==this.direction}refresh(){const e=this._getMergeableCell();this.value=e,this.isEnabled=!!e}execute(){const e=this.editor.model,t=e.document,o=this.editor.plugins.get("TableUtils").getTableCellsContainingSelection(t.selection)[0],n=this.value,i=this.direction;e.change((e=>{const t="right"==i||"down"==i,l=t?o:n,r=t?n:o,s=r.parent;!function(e,t,o){z(e)||(z(t)&&o.remove(o.createRangeIn(t)),o.move(o.createRangeIn(e),o.createPositionAt(t,"end")));o.remove(e)}(r,l,e);const a=this.isHorizontal?"colspan":"rowspan",c=parseInt(o.getAttribute(a)||1),d=parseInt(n.getAttribute(a)||1);e.setAttribute(a,c+d,l),e.setSelection(e.createRangeIn(l));const u=this.editor.plugins.get("TableUtils");R(s.findAncestor("table"),u)}))}_getMergeableCell(){const e=this.editor.model.document,t=this.editor.plugins.get("TableUtils"),o=t.getTableCellsContainingSelection(e.selection)[0];if(!o)return;const n=this.isHorizontal?function(e,t,o){const n=e.parent.parent,i="right"==t?e.nextSibling:e.previousSibling,l=(n.getAttribute("headingColumns")||0)>0;if(!i)return;const s="right"==t?e:i,a="right"==t?i:e,{column:c}=o.getCellLocation(s),{column:d}=o.getCellLocation(a),u=parseInt(s.getAttribute("colspan")||1),h=r(o,s),b=r(o,a);if(l&&h!=b)return;return c+u===d?i:void 0}(o,this.direction,t):function(e,t,o){const n=e.parent,i=n.parent,l=i.getChildIndex(n);if("down"==t&&l===o.getRows(i)-1||"up"==t&&0===l)return;const r=parseInt(e.getAttribute("rowspan")||1),s=i.getAttribute("headingRows")||0,a="down"==t&&l+r===s,c="up"==t&&l===s;if(s&&(a||c))return;const d=parseInt(e.getAttribute("rowspan")||1),h="down"==t?l+d:l,b=[...new u(i,{endRow:h})],m=b.find((t=>t.cell===e)).column,g=b.find((({row:e,cellHeight:o,column:n})=>n===m&&("down"==t?e===h:h===e+o)));return g&&g.cell}(o,this.direction,t);if(!n)return;const i=this.isHorizontal?"rowspan":"colspan",l=parseInt(o.getAttribute(i)||1);return parseInt(n.getAttribute(i)||1)===l?n:void 0}}function z(e){return 1==e.childCount&&e.getChild(0).is("element","paragraph")&&e.getChild(0).isEmpty}class B extends e.Command{refresh(){const e=this.editor.plugins.get("TableUtils"),t=e.getSelectionAffectedTableCells(this.editor.model.document.selection),o=t[0];if(o){const n=o.findAncestor("table"),i=this.editor.plugins.get("TableUtils").getRows(n)-1,l=e.getRowIndexes(t),r=0===l.first&&l.last===i;this.isEnabled=!r}else this.isEnabled=!1}execute(){const e=this.editor.model,t=this.editor.plugins.get("TableUtils"),o=t.getSelectionAffectedTableCells(e.document.selection),n=t.getRowIndexes(o),i=o[0],l=i.findAncestor("table"),r=t.getCellLocation(i).column;e.change((e=>{const o=n.last-n.first+1;t.removeRows(l,{at:n.first,rows:o});const i=function(e,t,o,n){const i=e.getChild(Math.min(t,n-1));let l=i.getChild(0),r=0;for(const e of i.getChildren()){if(r>o)return l;l=e,r+=parseInt(e.getAttribute("colspan")||1)}return l}(l,n.first,r,t.getRows(l));e.setSelection(e.createPositionAt(i,0))}))}}class L extends e.Command{refresh(){const e=this.editor.plugins.get("TableUtils"),t=e.getSelectionAffectedTableCells(this.editor.model.document.selection),o=t[0];if(o){const n=o.findAncestor("table"),i=e.getColumns(n),{first:l,last:r}=e.getColumnIndexes(t);this.isEnabled=r-l<i-1}else this.isEnabled=!1}execute(){const e=this.editor.plugins.get("TableUtils"),[t,o]=function(e,t){const o=t.getSelectionAffectedTableCells(e),n=o[0],i=o.pop(),l=[n,i];return n.isBefore(i)?l:l.reverse()}(this.editor.model.document.selection,e),n=t.parent.parent,i=[...new u(n)],l={first:i.find((e=>e.cell===t)).column,last:i.find((e=>e.cell===o)).column},r=function(e,t,o,n){return parseInt(o.getAttribute("colspan")||1)>1?o:t.previousSibling||o.nextSibling?o.nextSibling||t.previousSibling:n.first?e.reverse().find((({column:e})=>e<n.first)).cell:e.reverse().find((({column:e})=>e>n.last)).cell}(i,t,o,l);this.editor.model.change((e=>{const t=l.last-l.first+1;this.editor.plugins.get("TableUtils").removeColumns(n,{at:l.first,columns:t}),e.setSelection(e.createPositionAt(r,0))}))}}class W extends e.Command{refresh(){const e=this.editor.plugins.get("TableUtils"),t=this.editor.model,o=e.getSelectionAffectedTableCells(t.document.selection),n=o.length>0;this.isEnabled=n,this.value=n&&o.every((e=>this._isInHeading(e,e.parent.parent)))}execute(e={}){if(e.forceValue===this.value)return;const t=this.editor.plugins.get("TableUtils"),o=this.editor.model,n=t.getSelectionAffectedTableCells(o.document.selection),l=n[0].findAncestor("table"),{first:r,last:s}=t.getRowIndexes(n),a=this.value?r:s+1,c=l.getAttribute("headingRows")||0;o.change((e=>{if(a){const t=C(l,a,a>c?c:0);for(const{cell:o}of t)y(o,a,e)}i("headingRows",a,l,e,0)}))}_isInHeading(e,t){const o=parseInt(t.getAttribute("headingRows")||0);return!!o&&e.parent.index<o}}class N extends e.Command{refresh(){const e=this.editor.model,t=this.editor.plugins.get("TableUtils"),o=t.getSelectionAffectedTableCells(e.document.selection),n=o.length>0;this.isEnabled=n,this.value=n&&o.every((e=>r(t,e)))}execute(e={}){if(e.forceValue===this.value)return;const t=this.editor.plugins.get("TableUtils"),o=this.editor.model,n=t.getSelectionAffectedTableCells(o.document.selection),l=n[0].findAncestor("table"),{first:r,last:s}=t.getColumnIndexes(n),a=this.value?r:s+1;o.change((e=>{if(a){const t=T(l,a);for(const{cell:o,column:n}of t)A(o,n,a,e)}i("headingColumns",a,l,e,0)}))}}class F extends e.Plugin{static get pluginName(){return"TableUtils"}init(){this.decorate("insertColumns"),this.decorate("insertRows")}getCellLocation(e){const t=e.parent,o=t.parent,n=o.getChildIndex(t),i=new u(o,{row:n});for(const{cell:t,row:o,column:n}of i)if(t===e)return{row:o,column:n}}createTable(e,t){const o=e.createElement("table"),n=parseInt(t.rows)||2,l=parseInt(t.columns)||2;return D(e,o,0,n,l),t.headingRows&&i("headingRows",Math.min(t.headingRows,n),o,e,0),t.headingColumns&&i("headingColumns",Math.min(t.headingColumns,l),o,e,0),o}insertRows(e,t={}){const o=this.editor.model,n=t.at||0,r=t.rows||1,a=void 0!==t.copyStructureFromAbove,c=t.copyStructureFromAbove?n-1:n,d=this.getRows(e),h=this.getColumns(e);if(n>d)throw new s.CKEditorError("tableutils-insertrows-insert-out-of-range",this,{options:t});o.change((t=>{const o=e.getAttribute("headingRows")||0;if(o>n&&i("headingRows",o+r,e,t,0),!a&&(0===n||n===d))return void D(t,e,n,r,h);const s=a?Math.max(n,c):n,b=new u(e,{endRow:s}),m=new Array(h).fill(1);for(const{row:e,column:o,cellHeight:i,cellWidth:l,cell:s}of b){const d=e+i-1,u=e<=c&&c<=d;e<n&&n<=d?(t.setAttribute("rowspan",i+r,s),m[o]=-l):a&&u&&(m[o]=l)}for(let o=0;o<r;o++){const o=t.createElement("tableRow");t.insert(o,e,n);for(let e=0;e<m.length;e++){const n=m[e],i=t.createPositionAt(o,"end");n>0&&l(t,i,n>1?{colspan:n}:null),e+=Math.abs(n)-1}}}))}insertColumns(e,t={}){const o=this.editor.model,n=t.at||0,i=t.columns||1;o.change((t=>{const o=e.getAttribute("headingColumns");n<o&&t.setAttribute("headingColumns",o+i,e);const l=this.getColumns(e);if(0===n||l===n){for(const o of e.getChildren())o.is("element","tableRow")&&H(i,t,t.createPositionAt(o,n?"end":0));return}const r=new u(e,{column:n,includeAllSlots:!0});for(const e of r){const{row:o,cell:l,cellAnchorColumn:s,cellAnchorRow:a,cellWidth:c,cellHeight:d}=e;if(s<n){t.setAttribute("colspan",c+i,l);const e=a+d-1;for(let t=o;t<=e;t++)r.skipRow(t)}else H(i,t,e.getPositionBefore())}}))}removeRows(e,t){const o=this.editor.model,n=t.rows||1,l=this.getRows(e),r=t.at,a=r+n-1;if(a>l-1)throw new s.CKEditorError("tableutils-removerows-row-index-out-of-range",this,{table:e,options:t});o.change((t=>{const{cellsToMove:o,cellsToTrim:n}=function(e,t,o){const n=new Map,i=[];for(const{row:l,column:r,cellHeight:s,cell:a}of new u(e,{endRow:o})){const e=l+s-1;if(l>=t&&l<=o&&e>o){const e=s-(o-l+1);n.set(r,{cell:a,rowspan:e})}if(l<t&&e>=t){let n;n=e>=o?o-t+1:e-t+1,i.push({cell:a,rowspan:s-n})}}return{cellsToMove:n,cellsToTrim:i}}(e,r,a);if(o.size){!function(e,t,o,n){const l=[...new u(e,{includeAllSlots:!0,row:t})],r=e.getChild(t);let s;for(const{column:e,cell:t,isAnchor:a}of l)if(o.has(e)){const{cell:t,rowspan:l}=o.get(e),a=s?n.createPositionAfter(s):n.createPositionAt(r,0);n.move(n.createRangeOn(t),a),i("rowspan",l,t,n),s=t}else a&&(s=t)}(e,a+1,o,t)}for(let o=a;o>=r;o--)t.remove(e.getChild(o));for(const{rowspan:e,cell:o}of n)i("rowspan",e,o,t);!function(e,t,o,n){const l=e.getAttribute("headingRows")||0;if(t<l){i("headingRows",o<l?l-(o-t+1):t,e,n,0)}}(e,r,a,t),V(e,this)||S(e,this)}))}removeColumns(e,t){const o=this.editor.model,n=t.at,l=t.columns||1,r=t.at+l-1;o.change((t=>{!function(e,t,o){const n=e.getAttribute("headingColumns")||0;if(n&&t.first<n){const i=Math.min(n-1,t.last)-t.first+1;o.setAttribute("headingColumns",n-i,e)}}(e,{first:n,last:r},t);for(let o=r;o>=n;o--)for(const{cell:n,column:l,cellWidth:r}of[...new u(e)])l<=o&&r>1&&l+r>o?i("colspan",r-1,n,t):l===o&&t.remove(n);S(e,this)||V(e,this)}))}splitCellVertically(e,t=2){const o=this.editor.model,n=e.parent.parent,l=parseInt(e.getAttribute("rowspan")||1),r=parseInt(e.getAttribute("colspan")||1);o.change((o=>{if(r>1){const{newCellsSpan:n,updatedSpan:s}=M(r,t);i("colspan",s,e,o);const a={};n>1&&(a.colspan=n),l>1&&(a.rowspan=l);H(r>t?t-1:r-1,o,o.createPositionAfter(e),a)}if(r<t){const s=t-r,a=[...new u(n)],{column:c}=a.find((({cell:t})=>t===e)),d=a.filter((({cell:t,cellWidth:o,column:n})=>t!==e&&n===c||n<c&&n+o>c));for(const{cell:e,cellWidth:t}of d)o.setAttribute("colspan",t+s,e);const h={};l>1&&(h.rowspan=l),H(s,o,o.createPositionAfter(e),h);const b=n.getAttribute("headingColumns")||0;b>c&&i("headingColumns",b+s,n,o)}}))}splitCellHorizontally(e,t=2){const o=this.editor.model,n=e.parent,l=n.parent,r=l.getChildIndex(n),s=parseInt(e.getAttribute("rowspan")||1),a=parseInt(e.getAttribute("colspan")||1);o.change((o=>{if(s>1){const n=[...new u(l,{startRow:r,endRow:r+s-1,includeAllSlots:!0})],{newCellsSpan:c,updatedSpan:d}=M(s,t);i("rowspan",d,e,o);const{column:h}=n.find((({cell:t})=>t===e)),b={};c>1&&(b.rowspan=c),a>1&&(b.colspan=a);for(const e of n){const{column:t,row:n}=e,i=t===h,l=(n+r+d)%c==0;n>=r+d&&i&&l&&H(1,o,e.getPositionBefore(),b)}}if(s<t){const n=t-s,c=[...new u(l,{startRow:0,endRow:r})];for(const{cell:t,cellHeight:i,row:l}of c)if(t!==e&&l+i>r){const e=i+n;o.setAttribute("rowspan",e,t)}const d={};a>1&&(d.colspan=a),D(o,l,r+1,n,1,d);const h=l.getAttribute("headingRows")||0;h>r&&i("headingRows",h+n,l,o)}}))}getColumns(e){return[...e.getChild(0).getChildren()].reduce(((e,t)=>e+parseInt(t.getAttribute("colspan")||1)),0)}getRows(e){return Array.from(e.getChildren()).reduce(((e,t)=>t.is("element","tableRow")?e+1:e),0)}createTableWalker(e,t={}){return new u(e,t)}getSelectedTableCells(e){const t=[];for(const o of this.sortRanges(e.getRanges())){const e=o.getContainedElement();e&&e.is("element","tableCell")&&t.push(e)}return t}getTableCellsContainingSelection(e){const t=[];for(const o of e.getRanges()){const e=o.start.findAncestor("tableCell");e&&t.push(e)}return t}getSelectionAffectedTableCells(e){const t=this.getSelectedTableCells(e);return t.length?t:this.getTableCellsContainingSelection(e)}getRowIndexes(e){const t=e.map((e=>e.parent.index));return this._getFirstLastIndexesObject(t)}getColumnIndexes(e){const t=e[0].findAncestor("table"),o=[...new u(t)].filter((t=>e.includes(t.cell))).map((e=>e.column));return this._getFirstLastIndexesObject(o)}isSelectionRectangular(e){if(e.length<2||!this._areCellInTheSameTableSection(e))return!1;const t=new Set,o=new Set;let n=0;for(const i of e){const{row:e,column:l}=this.getCellLocation(i),r=parseInt(i.getAttribute("rowspan")||1),s=parseInt(i.getAttribute("colspan")||1);t.add(e),o.add(l),r>1&&t.add(e+r-1),s>1&&o.add(l+s-1),n+=r*s}const i=function(e,t){const o=Array.from(e.values()),n=Array.from(t.values()),i=Math.max(...o),l=Math.min(...o),r=Math.max(...n),s=Math.min(...n);return(i-l+1)*(r-s+1)}(t,o);return i==n}sortRanges(e){return Array.from(e).sort(O)}_getFirstLastIndexesObject(e){const t=e.sort(((e,t)=>e-t));return{first:t[0],last:t[t.length-1]}}_areCellInTheSameTableSection(e){const t=e[0].findAncestor("table"),o=this.getRowIndexes(e),n=parseInt(t.getAttribute("headingRows")||0);if(!this._areIndexesInSameSection(o,n))return!1;const i=parseInt(t.getAttribute("headingColumns")||0),l=this.getColumnIndexes(e);return this._areIndexesInSameSection(l,i)}_areIndexesInSameSection({first:e,last:t},o){return e<o===t<o}}function D(e,t,o,n,i,l={}){for(let r=0;r<n;r++){const n=e.createElement("tableRow");e.insert(n,t,o),H(i,e,e.createPositionAt(n,"end"),l)}}function H(e,t,o,n={}){for(let i=0;i<e;i++)l(t,o,n)}function M(e,t){if(e<t)return{newCellsSpan:1,updatedSpan:1};const o=Math.floor(e/t);return{newCellsSpan:o,updatedSpan:e-o*t+o}}function O(e,t){const o=e.start,n=t.start;return o.isBefore(n)?-1:1}class j extends e.Command{refresh(){const e=this.editor.plugins.get(F),t=e.getSelectedTableCells(this.editor.model.document.selection);this.isEnabled=e.isSelectionRectangular(t,this.editor.plugins.get(F))}execute(){const e=this.editor.model,t=this.editor.plugins.get(F);e.change((o=>{const n=t.getSelectedTableCells(e.document.selection),l=n.shift(),{mergeWidth:r,mergeHeight:s}=function(e,t,o){let n=0,i=0;for(const e of t){const{row:t,column:l}=o.getCellLocation(e);n=$(e,l,n,"colspan"),i=$(e,t,i,"rowspan")}const{row:l,column:r}=o.getCellLocation(e);return{mergeWidth:n-r,mergeHeight:i-l}}(l,n,t);i("colspan",r,l,o),i("rowspan",s,l,o);for(const e of n)U(e,l,o);R(l.findAncestor("table"),t),o.setSelection(l,"in")}))}}function U(e,t,o){Z(e)||(Z(t)&&o.remove(o.createRangeIn(t)),o.move(o.createRangeIn(e),o.createPositionAt(t,"end"))),o.remove(e)}function Z(e){return 1==e.childCount&&e.getChild(0).is("element","paragraph")&&e.getChild(0).isEmpty}function $(e,t,o,n){const i=parseInt(e.getAttribute(n)||1);return Math.max(o,t+i)}class K extends e.Command{constructor(e){super(e),this.affectsData=!1}refresh(){const e=this.editor.plugins.get("TableUtils").getSelectionAffectedTableCells(this.editor.model.document.selection);this.isEnabled=e.length>0}execute(){const e=this.editor.model,t=this.editor.plugins.get("TableUtils"),o=t.getSelectionAffectedTableCells(e.document.selection),n=t.getRowIndexes(o),i=o[0].findAncestor("table"),l=[];for(let t=n.first;t<=n.last;t++)for(const o of i.getChild(t).getChildren())l.push(e.createRangeOn(o));e.change((e=>{e.setSelection(l)}))}}class q extends e.Command{constructor(e){super(e),this.affectsData=!1}refresh(){const e=this.editor.plugins.get("TableUtils").getSelectionAffectedTableCells(this.editor.model.document.selection);this.isEnabled=e.length>0}execute(){const e=this.editor.plugins.get("TableUtils"),t=this.editor.model,o=e.getSelectionAffectedTableCells(t.document.selection),n=o[0],i=o.pop(),l=n.findAncestor("table"),r=e.getCellLocation(n),s=e.getCellLocation(i),a=Math.min(r.column,s.column),c=Math.max(r.column,s.column),d=[];for(const e of new u(l,{startColumn:a,endColumn:c}))d.push(t.createRangeOn(e.cell));t.change((e=>{e.setSelection(d)}))}}function G(e){e.document.registerPostFixer((t=>function(e,t){const o=t.document.differ.getChanges();let n=!1;const i=new Set;for(const t of o){let o;"table"==t.name&&"insert"==t.type&&(o=t.position.nodeAfter),"tableRow"!=t.name&&"tableCell"!=t.name||(o=t.position.findAncestor("table")),Y(t)&&(o=t.range.start.findAncestor("table")),o&&!i.has(o)&&(n=J(o,e)||n,n=X(o,e)||n,i.add(o))}return n}(t,e)))}function J(e,t){let o=!1;const n=function(e){const t=parseInt(e.getAttribute("headingRows")||0),o=Array.from(e.getChildren()).reduce(((e,t)=>t.is("element","tableRow")?e+1:e),0),n=[];for(const{row:i,cell:l,cellHeight:r}of new u(e)){if(r<2)continue;const e=i<t?t:o;if(i+r>e){const t=e-i;n.push({cell:l,rowspan:t})}}return n}(e);if(n.length){o=!0;for(const e of n)i("rowspan",e.rowspan,e.cell,t,1)}return o}function X(e,t){let o=!1;const n=function(e){const t=new Array(e.childCount).fill(0);for(const{rowIndex:o}of new u(e,{includeAllSlots:!0}))t[o]++;return t}(e),i=[];for(const[t,o]of n.entries())!o&&e.getChild(t).is("element","tableRow")&&i.push(t);if(i.length){o=!0;for(const o of i.reverse())t.remove(e.getChild(o)),n.splice(o,1)}const r=n.filter(((t,o)=>e.getChild(o).is("element","tableRow"))),s=r[0];if(!r.every((e=>e===s))){const n=r.reduce(((e,t)=>t>e?t:e),0);for(const[i,s]of r.entries()){const r=n-s;if(r){for(let o=0;o<r;o++)l(t,t.createPositionAt(e.getChild(i),"end"));o=!0}}}return o}function Y(e){const t="attribute"===e.type,o=e.attributeKey;return t&&("headingRows"===o||"colspan"===o||"rowspan"===o)}function Q(e){e.document.registerPostFixer((t=>function(e,t){const o=t.document.differ.getChanges();let n=!1;for(const t of o)"insert"==t.type&&"table"==t.name&&(n=ee(t.position.nodeAfter,e)||n),"insert"==t.type&&"tableRow"==t.name&&(n=te(t.position.nodeAfter,e)||n),"insert"==t.type&&"tableCell"==t.name&&(n=oe(t.position.nodeAfter,e)||n),ne(t)&&(n=oe(t.position.parent,e)||n);return n}(t,e)))}function ee(e,t){let o=!1;for(const n of e.getChildren())n.is("element","tableRow")&&(o=te(n,t)||o);return o}function te(e,t){let o=!1;for(const n of e.getChildren())o=oe(n,t)||o;return o}function oe(e,t){if(0==e.childCount)return t.insertElement("paragraph",e),!0;const o=Array.from(e.getChildren()).filter((e=>e.is("$text")));for(const e of o)t.wrap(t.createRangeOn(e),"paragraph");return!!o.length}function ne(e){return!(!e.position||!e.position.parent.is("element","tableCell"))&&("insert"==e.type&&"$text"==e.name||"remove"==e.type)}function ie(e,t){if(!e.is("element","paragraph"))return!1;const o=t.toViewElement(e);return!!o&&p(e)!==o.is("element","span")}var le=o(62),re=o.n(le),se=o(482),ae={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};re()(se.Z,ae);se.Z.locals;class ce extends e.Plugin{static get pluginName(){return"TableEditing"}static get requires(){return[F]}init(){const e=this.editor,t=e.model,o=t.schema,n=e.conversion,i=e.plugins.get(F);o.register("table",{inheritAllFrom:"$blockObject",allowAttributes:["headingRows","headingColumns"]}),o.register("tableRow",{allowIn:"table",isLimit:!0}),o.register("tableCell",{allowContentOf:"$container",allowIn:"tableRow",allowAttributes:["colspan","rowspan"],isLimit:!0,isSelectable:!0}),n.for("upcast").add((e=>{e.on("element:figure",((e,t,o)=>{if(!o.consumable.test(t.viewItem,{name:!0,classes:"table"}))return;const n=function(e){for(const t of e.getChildren())if(t.is("element","table"))return t}(t.viewItem);if(!n||!o.consumable.test(n,{name:!0}))return;o.consumable.consume(t.viewItem,{name:!0,classes:"table"});const i=o.convertItem(n,t.modelCursor),l=(0,s.first)(i.modelRange.getItems());l?(o.convertChildren(t.viewItem,o.writer.createPositionAt(l,"end")),o.updateConversionResult(l,t)):o.consumable.revert(t.viewItem,{name:!0,classes:"table"})}))})),n.for("upcast").add(a()),n.for("editingDowncast").elementToStructure({model:{name:"table",attributes:["headingRows"]},view:b(i,{asWidget:!0})}),n.for("dataDowncast").elementToStructure({model:{name:"table",attributes:["headingRows"]},view:b(i)}),n.for("upcast").elementToElement({model:"tableRow",view:"tr"}),n.for("upcast").add((e=>{e.on("element:tr",((e,t)=>{t.viewItem.isEmpty&&0==t.modelCursor.index&&e.stop()}),{priority:"high"})})),n.for("downcast").elementToElement({model:"tableRow",view:(e,{writer:t})=>e.isEmpty?t.createEmptyElement("tr"):t.createContainerElement("tr")}),n.for("upcast").elementToElement({model:"tableCell",view:"td"}),n.for("upcast").elementToElement({model:"tableCell",view:"th"}),n.for("upcast").add(c("td")),n.for("upcast").add(c("th")),n.for("editingDowncast").elementToElement({model:"tableCell",view:m({asWidget:!0})}),n.for("dataDowncast").elementToElement({model:"tableCell",view:m()}),n.for("editingDowncast").elementToElement({model:"paragraph",view:g({asWidget:!0}),converterPriority:"high"}),n.for("dataDowncast").elementToElement({model:"paragraph",view:g(),converterPriority:"high"}),n.for("downcast").attributeToAttribute({model:"colspan",view:"colspan"}),n.for("upcast").attributeToAttribute({model:{key:"colspan",value:de("colspan")},view:"colspan"}),n.for("downcast").attributeToAttribute({model:"rowspan",view:"rowspan"}),n.for("upcast").attributeToAttribute({model:{key:"rowspan",value:de("rowspan")},view:"rowspan"}),e.data.mapper.on("modelToViewPosition",((e,t)=>{const o=t.modelPosition.parent,n=t.modelPosition.nodeBefore;if(!o.is("element","tableCell"))return;if(!n||!n.is("element","paragraph"))return;const i=t.mapper.toViewElement(n),l=t.mapper.toViewElement(o);i===l&&(t.viewPosition=t.mapper.findPositionIn(l,n.maxOffset))})),e.config.define("table.defaultHeadings.rows",0),e.config.define("table.defaultHeadings.columns",0),e.commands.add("insertTable",new f(e)),e.commands.add("insertTableRowAbove",new w(e,{order:"above"})),e.commands.add("insertTableRowBelow",new w(e,{order:"below"})),e.commands.add("insertTableColumnLeft",new k(e,{order:"left"})),e.commands.add("insertTableColumnRight",new k(e,{order:"right"})),e.commands.add("removeTableRow",new B(e)),e.commands.add("removeTableColumn",new L(e)),e.commands.add("splitTableCellVertically",new _(e,{direction:"vertically"})),e.commands.add("splitTableCellHorizontally",new _(e,{direction:"horizontally"})),e.commands.add("mergeTableCells",new j(e)),e.commands.add("mergeTableCellRight",new E(e,{direction:"right"})),e.commands.add("mergeTableCellLeft",new E(e,{direction:"left"})),e.commands.add("mergeTableCellDown",new E(e,{direction:"down"})),e.commands.add("mergeTableCellUp",new E(e,{direction:"up"})),e.commands.add("setTableColumnHeader",new N(e)),e.commands.add("setTableRowHeader",new W(e)),e.commands.add("selectTableRow",new K(e)),e.commands.add("selectTableColumn",new q(e)),G(t),Q(t),this.listenTo(t.document,"change:data",(()=>{!function(e,t){const o=e.document.differ;for(const e of o.getChanges()){let o,n=!1;if("attribute"==e.type){const t=e.range.start.nodeAfter;if(!t||!t.is("element","table"))continue;if("headingRows"!=e.attributeKey&&"headingColumns"!=e.attributeKey)continue;o=t,n="headingRows"==e.attributeKey}else"tableRow"!=e.name&&"tableCell"!=e.name||(o=e.position.findAncestor("table"),n="tableRow"==e.name);if(!o)continue;const i=o.getAttribute("headingRows")||0,l=o.getAttribute("headingColumns")||0,r=new u(o);for(const e of r){const o=e.row<i||e.column<l?"th":"td",r=t.mapper.toViewElement(e.cell);r&&r.is("element")&&r.name!=o&&t.reconvertItem(n?e.cell.parent:e.cell)}}}(t,e.editing),function(e,t){const o=e.document.differ,n=new Set;for(const e of o.getChanges()){const t="attribute"==e.type?e.range.start.parent:e.position.parent;t.is("element","tableCell")&&n.add(t)}for(const e of n.values()){const o=Array.from(e.getChildren()).filter((e=>ie(e,t.mapper)));for(const e of o)t.reconvertItem(e)}}(t,e.editing)}))}}function de(e){return t=>{const o=parseInt(t.getAttribute(e));return Number.isNaN(o)||o<=0?null:o}}var ue=o(273),he=o(272),be={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};re()(he.Z,be);he.Z.locals;class me extends ue.View{constructor(e){super(e);const t=this.bindTemplate;this._geometryLabelId=`ck-editor__label_${(0,s.uid)()}`,this.items=this._createGridCollection(),this.keystrokes=new s.KeystrokeHandler,this.focusTracker=new s.FocusTracker,this.set("rows",0),this.set("columns",0),this.bind("label").to(this,"columns",this,"rows",((e,t)=>`${t} × ${e}`)),this.setTemplate({tag:"div",attributes:{class:["ck"]},children:[{tag:"div",attributes:{class:["ck-insert-table-dropdown__grid"]},on:{"mouseover@.ck-insert-table-dropdown-grid-box":t.to("boxover")},children:this.items},{tag:"div",attributes:{id:this._geometryLabelId,class:["ck","ck-insert-table-dropdown__label"]},children:[{text:t.to("label")}]}],on:{mousedown:t.to((e=>{e.preventDefault()})),click:t.to((()=>{this.fire("execute")})),keydown:t.to((e=>{"Enter"===e.key&&(this.fire("execute"),e.preventDefault())}))}}),this.on("boxover",((e,t)=>{const{row:o,column:n}=t.target.dataset;this.items.get(10*(o-1)+(n-1)).focus()})),this.focusTracker.on("change:focusedElement",((e,t,o)=>{if(!o)return;const{row:n,column:i}=o.dataset;this.set({rows:parseInt(n),columns:parseInt(i)})})),this.on("change:columns",(()=>this._highlightGridBoxes())),this.on("change:rows",(()=>this._highlightGridBoxes()))}render(){super.render(),(0,ue.addKeyboardHandlingForGrid)({keystrokeHandler:this.keystrokes,focusTracker:this.focusTracker,gridItems:this.items,numberOfColumns:10});for(const e of this.items)this.focusTracker.add(e.element);this.keystrokes.listenTo(this.element)}focus(){this.items.get(0).focus()}focusLast(){this.items.get(0).focus()}_highlightGridBoxes(){const e=this.rows,t=this.columns;this.items.map(((o,n)=>{const i=Math.floor(n/10)<e&&n%10<t;o.set("isOn",i)}))}_createGridCollection(){const e=[];for(let t=0;t<100;t++){const o=Math.floor(t/10),n=t%10;e.push(new ge(this.locale,o+1,n+1,this._geometryLabelId))}return this.createCollection(e)}}class ge extends ue.View{constructor(e,t,o,n){super(e);const i=this.bindTemplate;this.set("isOn",!1),this.setTemplate({tag:"div",attributes:{class:["ck","ck-insert-table-dropdown-grid-box",i.if("isOn","ck-on")],"data-row":t,"data-column":o,tabindex:-1,"aria-labelledby":n}})}focus(){this.element.focus()}}class pe extends e.Plugin{static get pluginName(){return"TableUI"}init(){const e=this.editor,t=this.editor.t,o="ltr"===e.locale.contentLanguageDirection;e.ui.componentFactory.add("insertTable",(o=>{const n=e.commands.get("insertTable"),i=(0,ue.createDropdown)(o);let l;return i.bind("isEnabled").to(n),i.buttonView.set({icon:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M3 6v3h4V6H3zm0 4v3h4v-3H3zm0 4v3h4v-3H3zm5 3h4v-3H8v3zm5 0h4v-3h-4v3zm4-4v-3h-4v3h4zm0-4V6h-4v3h4zm1.5 8a1.5 1.5 0 0 1-1.5 1.5H3A1.5 1.5 0 0 1 1.5 17V4c.222-.863 1.068-1.5 2-1.5h13c.932 0 1.778.637 2 1.5v13zM12 13v-3H8v3h4zm0-4V6H8v3h4z"/></svg>',label:t("Insert table"),tooltip:!0}),i.on("change:isOpen",(()=>{l||(l=new me(o),i.panelView.children.add(l),l.delegate("execute").to(i),i.on("execute",(()=>{e.execute("insertTable",{rows:l.rows,columns:l.columns}),e.editing.view.focus()})))})),i})),e.ui.componentFactory.add("tableColumn",(e=>{const n=[{type:"switchbutton",model:{commandName:"setTableColumnHeader",label:t("Header column"),bindIsOn:!0}},{type:"separator"},{type:"button",model:{commandName:o?"insertTableColumnLeft":"insertTableColumnRight",label:t("Insert column left")}},{type:"button",model:{commandName:o?"insertTableColumnRight":"insertTableColumnLeft",label:t("Insert column right")}},{type:"button",model:{commandName:"removeTableColumn",label:t("Delete column")}},{type:"button",model:{commandName:"selectTableColumn",label:t("Select column")}}];return this._prepareDropdown(t("Column"),'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2.5 1h15A1.5 1.5 0 0 1 19 2.5v15a1.5 1.5 0 0 1-1.5 1.5h-15A1.5 1.5 0 0 1 1 17.5v-15A1.5 1.5 0 0 1 2.5 1zM2 2v16h16V2H2z" opacity=".6"/><path d="M18 7v1H2V7h16zm0 5v1H2v-1h16z" opacity=".6"/><path d="M14 1v18a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1V1a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1zm-2 1H8v4h4V2zm0 6H8v4h4V8zm0 6H8v4h4v-4z"/></svg>',n,e)})),e.ui.componentFactory.add("tableRow",(e=>{const o=[{type:"switchbutton",model:{commandName:"setTableRowHeader",label:t("Header row"),bindIsOn:!0}},{type:"separator"},{type:"button",model:{commandName:"insertTableRowAbove",label:t("Insert row above")}},{type:"button",model:{commandName:"insertTableRowBelow",label:t("Insert row below")}},{type:"button",model:{commandName:"removeTableRow",label:t("Delete row")}},{type:"button",model:{commandName:"selectTableRow",label:t("Select row")}}];return this._prepareDropdown(t("Row"),'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2.5 1h15A1.5 1.5 0 0 1 19 2.5v15a1.5 1.5 0 0 1-1.5 1.5h-15A1.5 1.5 0 0 1 1 17.5v-15A1.5 1.5 0 0 1 2.5 1zM2 2v16h16V2H2z" opacity=".6"/><path d="M7 2h1v16H7V2zm5 0h1v16h-1V2z" opacity=".6"/><path d="M1 6h18a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1zm1 2v4h4V8H2zm6 0v4h4V8H8zm6 0v4h4V8h-4z"/></svg>',o,e)})),e.ui.componentFactory.add("mergeTableCells",(e=>{const n=[{type:"button",model:{commandName:"mergeTableCellUp",label:t("Merge cell up")}},{type:"button",model:{commandName:o?"mergeTableCellRight":"mergeTableCellLeft",label:t("Merge cell right")}},{type:"button",model:{commandName:"mergeTableCellDown",label:t("Merge cell down")}},{type:"button",model:{commandName:o?"mergeTableCellLeft":"mergeTableCellRight",label:t("Merge cell left")}},{type:"separator"},{type:"button",model:{commandName:"splitTableCellVertically",label:t("Split cell vertically")}},{type:"button",model:{commandName:"splitTableCellHorizontally",label:t("Split cell horizontally")}}];return this._prepareMergeSplitButtonDropdown(t("Merge cells"),'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2.5 1h15A1.5 1.5 0 0 1 19 2.5v15a1.5 1.5 0 0 1-1.5 1.5h-15A1.5 1.5 0 0 1 1 17.5v-15A1.5 1.5 0 0 1 2.5 1zM2 2v16h16V2H2z" opacity=".6"/><path d="M7 2h1v16H7V2zm5 0h1v7h-1V2zm6 5v1H2V7h16zM8 12v1H2v-1h6z" opacity=".6"/><path d="M7 7h12a1 1 0 0 1 1 1v11a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1V8a1 1 0 0 1 1-1zm1 2v9h10V9H8z"/></svg>',n,e)}))}_prepareDropdown(e,t,o,n){const i=this.editor,l=(0,ue.createDropdown)(n),r=this._fillDropdownWithListOptions(l,o);return l.buttonView.set({label:e,icon:t,tooltip:!0}),l.bind("isEnabled").toMany(r,"isEnabled",((...e)=>e.some((e=>e)))),this.listenTo(l,"execute",(e=>{i.execute(e.source.commandName),e.source instanceof ue.SwitchButtonView||i.editing.view.focus()})),l}_prepareMergeSplitButtonDropdown(e,t,o,n){const i=this.editor,l=(0,ue.createDropdown)(n,ue.SplitButtonView),r="mergeTableCells",s=i.commands.get(r),a=this._fillDropdownWithListOptions(l,o);return l.buttonView.set({label:e,icon:t,tooltip:!0,isEnabled:!0}),l.bind("isEnabled").toMany([s,...a],"isEnabled",((...e)=>e.some((e=>e)))),this.listenTo(l.buttonView,"execute",(()=>{i.execute(r),i.editing.view.focus()})),this.listenTo(l,"execute",(e=>{i.execute(e.source.commandName),i.editing.view.focus()})),l}_fillDropdownWithListOptions(e,t){const o=this.editor,n=[],i=new s.Collection;for(const e of t)fe(e,o,n,i);return(0,ue.addListToDropdown)(e,i,o.ui.componentFactory),n}}function fe(e,t,o,n){const i=e.model=new ue.Model(e.model),{commandName:l,bindIsOn:r}=e.model;if("button"===e.type||"switchbutton"===e.type){const e=t.commands.get(l);o.push(e),i.set({commandName:l}),i.bind("isEnabled").to(e),r&&i.bind("isOn").to(e,"value")}i.set({withText:!0}),n.add(e)}var we=o(475),ke={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};re()(we.Z,ke);we.Z.locals;class _e extends e.Plugin{static get pluginName(){return"TableSelection"}static get requires(){return[F,F]}init(){const e=this.editor.model;this.listenTo(e,"deleteContent",((e,t)=>this._handleDeleteContent(e,t)),{priority:"high"}),this._defineSelectionConverter(),this._enablePluginDisabling()}getSelectedTableCells(){const e=this.editor.plugins.get(F),t=this.editor.model.document.selection,o=e.getSelectedTableCells(t);return 0==o.length?null:o}getSelectionAsFragment(){const e=this.editor.plugins.get(F),t=this.getSelectedTableCells();return t?this.editor.model.change((o=>{const n=o.createDocumentFragment(),{first:i,last:l}=e.getColumnIndexes(t),{first:r,last:s}=e.getRowIndexes(t),a=t[0].findAncestor("table");let c=s,d=l;if(e.isSelectionRectangular(t)){const e={firstColumn:i,lastColumn:l,firstRow:r,lastRow:s};c=I(a,e),d=P(a,e)}const u=v(a,{startRow:r,startColumn:i,endRow:c,endColumn:d},o);return o.insert(u,n,0),n})):null}setCellSelection(e,t){const o=this._getCellsToSelect(e,t);this.editor.model.change((e=>{e.setSelection(o.cells.map((t=>e.createRangeOn(t))),{backward:o.backward})}))}getFocusCell(){const e=[...this.editor.model.document.selection.getRanges()].pop().getContainedElement();return e&&e.is("element","tableCell")?e:null}getAnchorCell(){const e=this.editor.model.document.selection,t=(0,s.first)(e.getRanges()).getContainedElement();return t&&t.is("element","tableCell")?t:null}_defineSelectionConverter(){const e=this.editor,t=new Set;e.conversion.for("editingDowncast").add((e=>e.on("selection",((e,o,n)=>{const i=n.writer;!function(e){for(const o of t)e.removeClass("ck-editor__editable_selected",o);t.clear()}(i);const l=this.getSelectedTableCells();if(!l)return;for(const e of l){const o=n.mapper.toViewElement(e);i.addClass("ck-editor__editable_selected",o),t.add(o)}const r=n.mapper.toViewElement(l[l.length-1]);i.setSelection(r,0)}),{priority:"lowest"})))}_enablePluginDisabling(){const e=this.editor;this.on("change:isEnabled",(()=>{if(!this.isEnabled){const t=this.getSelectedTableCells();if(!t)return;e.model.change((o=>{const n=o.createPositionAt(t[0],0),i=e.model.schema.getNearestSelectionRange(n);o.setSelection(i)}))}}))}_handleDeleteContent(e,t){const o=this.editor.plugins.get(F),[n,i]=t,l=this.editor.model,r=!i||"backward"==i.direction,s=o.getSelectedTableCells(n);s.length&&(e.stop(),l.change((e=>{const t=s[r?s.length-1:0];l.change((e=>{for(const t of s)l.deleteContent(e.createSelection(t,"in"))}));const o=l.schema.getNearestSelectionRange(e.createPositionAt(t,0));n.is("documentSelection")?e.setSelection(o):n.setTo(o)})))}_getCellsToSelect(e,t){const o=this.editor.plugins.get("TableUtils"),n=o.getCellLocation(e),i=o.getCellLocation(t),l=Math.min(n.row,i.row),r=Math.max(n.row,i.row),s=Math.min(n.column,i.column),a=Math.max(n.column,i.column),c=new Array(r-l+1).fill(null).map((()=>[])),d={startRow:l,endRow:r,startColumn:s,endColumn:a};for(const{row:t,cell:o}of new u(e.findAncestor("table"),d))c[t-l].push(o);const h=i.row<n.row,b=i.column<n.column;return h&&c.reverse(),b&&c.forEach((e=>e.reverse())),{cells:c.flat(),backward:h||b}}}class ve extends e.Plugin{static get pluginName(){return"TableClipboard"}static get requires(){return[_e,F]}init(){const e=this.editor,t=e.editing.view.document;this.listenTo(t,"copy",((e,t)=>this._onCopyCut(e,t))),this.listenTo(t,"cut",((e,t)=>this._onCopyCut(e,t))),this.listenTo(e.model,"insertContent",((e,t)=>this._onInsertContent(e,...t)),{priority:"high"}),this.decorate("_replaceTableSlotCell")}_onCopyCut(e,t){const o=this.editor.plugins.get(_e);if(!o.getSelectedTableCells())return;if("cut"==e.name&&this.editor.isReadOnly)return;t.preventDefault(),e.stop();const n=this.editor.data,i=this.editor.editing.view.document,l=n.toView(o.getSelectionAsFragment());i.fire("clipboardOutput",{dataTransfer:t.dataTransfer,content:l,method:e.name})}_onInsertContent(e,t,o){if(o&&!o.is("documentSelection"))return;const n=this.editor.model,i=this.editor.plugins.get(F);let l=Ce(t,n);if(!l)return;const r=i.getSelectionAffectedTableCells(n.document.selection);r.length?(e.stop(),n.change((e=>{const t={width:i.getColumns(l),height:i.getRows(l)},o=function(e,t,o,n){const i=e[0].findAncestor("table"),l=n.getColumnIndexes(e),r=n.getRowIndexes(e),s={firstColumn:l.first,lastColumn:l.last,firstRow:r.first,lastRow:r.last},a=1===e.length;a&&(s.lastRow+=t.height-1,s.lastColumn+=t.width-1,function(e,t,o,n){const i=n.getColumns(e),l=n.getRows(e);o>i&&n.insertColumns(e,{at:i,columns:o-i});t>l&&n.insertRows(e,{at:l,rows:t-l})}(i,s.lastRow+1,s.lastColumn+1,n));a||!n.isSelectionRectangular(e)?function(e,t,o){const{firstRow:n,lastRow:i,firstColumn:l,lastColumn:r}=t,s={first:n,last:i},a={first:l,last:r};Te(e,l,s,o),Te(e,r+1,s,o),ye(e,n,a,o),ye(e,i+1,a,o,n)}(i,s,o):(s.lastRow=I(i,s),s.lastColumn=P(i,s));return s}(r,t,e,i),n=o.lastRow-o.firstRow+1,s=o.lastColumn-o.firstColumn+1,a={startRow:0,startColumn:0,endRow:Math.min(n,t.height)-1,endColumn:Math.min(s,t.width)-1};l=v(l,a,e);const c=r[0].findAncestor("table"),d=this._replaceSelectedCellsWithPasted(l,t,c,o,e);if(this.editor.plugins.get("TableSelection").isEnabled){const t=i.sortRanges(d.map((t=>e.createRangeOn(t))));e.setSelection(t)}else e.setSelection(d[0],0)}))):R(l,i)}_replaceSelectedCellsWithPasted(e,t,o,n,i){const{width:l,height:r}=t,s=function(e,t,o){const n=new Array(o).fill(null).map((()=>new Array(t).fill(null)));for(const{column:t,row:o,cell:i}of new u(e))n[o][t]=i;return n}(e,l,r),a=[...new u(o,{startRow:n.firstRow,endRow:n.lastRow,startColumn:n.firstColumn,endColumn:n.lastColumn,includeAllSlots:!0})],c=[];let d;for(const e of a){const{row:t,column:o}=e;o===n.firstColumn&&(d=e.getPositionBefore());const a=t-n.firstRow,u=o-n.firstColumn,h=s[a%r][u%l],b=h?i.cloneElement(h):null,m=this._replaceTableSlotCell(e,b,d,i);m&&(x(m,t,o,n.lastRow,n.lastColumn,i),c.push(m),d=i.createPositionAfter(m))}const h=parseInt(o.getAttribute("headingRows")||0),b=parseInt(o.getAttribute("headingColumns")||0),m=n.firstRow<h&&h<=n.lastRow,g=n.firstColumn<b&&b<=n.lastColumn;if(m){const e=ye(o,h,{first:n.firstColumn,last:n.lastColumn},i,n.firstRow);c.push(...e)}if(g){const e=Te(o,b,{first:n.firstRow,last:n.lastRow},i);c.push(...e)}return c}_replaceTableSlotCell(e,t,o,n){const{cell:i,isAnchor:l}=e;return l&&n.remove(i),t?(n.insert(t,o),t):null}getTableIfOnlyTableInContent(e,t){return Ce(e,t)}}function Ce(e,t){if(!e.is("documentFragment")&&!e.is("element"))return null;if(e.is("element","table"))return e;if(1==e.childCount&&e.getChild(0).is("element","table"))return e.getChild(0);const o=t.createRangeIn(e);for(const e of o.getItems())if(e.is("element","table")){const n=t.createRange(o.start,t.createPositionBefore(e));if(t.hasContent(n,{ignoreWhitespaces:!0}))return null;const i=t.createRange(t.createPositionAfter(e),o.end);return t.hasContent(i,{ignoreWhitespaces:!0})?null:e}return null}function ye(e,t,o,n,i=0){if(t<1)return;return C(e,t,i).filter((({column:e,cellWidth:t})=>Ae(e,t,o))).map((({cell:e})=>y(e,t,n)))}function Te(e,t,o,n){if(t<1)return;return T(e,t).filter((({row:e,cellHeight:t})=>Ae(e,t,o))).map((({cell:e,column:o})=>A(e,o,t,n)))}function Ae(e,t,o){const n=e+t-1,{first:i,last:l}=o;return e>=i&&e<=l||e<i&&n>=i}class xe extends e.Plugin{static get pluginName(){return"TableKeyboard"}static get requires(){return[_e,F]}init(){const e=this.editor.editing.view.document;this.listenTo(e,"arrowKey",((...e)=>this._onArrowKey(...e)),{context:"table"}),this.listenTo(e,"tab",((...e)=>this._handleTabOnSelectedTable(...e)),{context:"figure"}),this.listenTo(e,"tab",((...e)=>this._handleTab(...e)),{context:["th","td"]})}_handleTabOnSelectedTable(e,t){const o=this.editor,n=o.model.document.selection.getSelectedElement();n&&n.is("element","table")&&(t.preventDefault(),t.stopPropagation(),e.stop(),o.model.change((e=>{e.setSelection(e.createRangeIn(n.getChild(0).getChild(0)))})))}_handleTab(e,t){const o=this.editor,n=this.editor.plugins.get(F),i=o.model.document.selection,l=!t.shiftKey;let r=n.getTableCellsContainingSelection(i)[0];if(r||(r=this.editor.plugins.get("TableSelection").getFocusCell()),!r)return;t.preventDefault(),t.stopPropagation(),e.stop();const s=r.parent,a=s.parent,c=a.getChildIndex(s),d=s.getChildIndex(r),u=0===d;if(!l&&u&&0===c)return void o.model.change((e=>{e.setSelection(e.createRangeOn(a))}));const h=d===s.childCount-1,b=c===n.getRows(a)-1;if(l&&b&&h&&(o.execute("insertTableRowBelow"),c===n.getRows(a)-1))return void o.model.change((e=>{e.setSelection(e.createRangeOn(a))}));let m;if(l&&h){const e=a.getChild(c+1);m=e.getChild(0)}else if(!l&&u){const e=a.getChild(c-1);m=e.getChild(e.childCount-1)}else m=s.getChild(d+(l?1:-1));o.model.change((e=>{e.setSelection(e.createRangeIn(m))}))}_onArrowKey(e,t){const o=this.editor,n=t.keyCode,i=(0,s.getLocalizedArrowKeyCodeDirection)(n,o.locale.contentLanguageDirection);this._handleArrowKeys(i,t.shiftKey)&&(t.preventDefault(),t.stopPropagation(),e.stop())}_handleArrowKeys(e,t){const o=this.editor.plugins.get(F),n=this.editor.model,i=n.document.selection,l=["right","down"].includes(e),r=o.getSelectedTableCells(i);if(r.length){let o;return o=t?this.editor.plugins.get("TableSelection").getFocusCell():l?r[r.length-1]:r[0],this._navigateFromCellInDirection(o,e,t),!0}const s=i.focus.findAncestor("tableCell");if(!s)return!1;if(!i.isCollapsed)if(t){if(i.isBackward==l&&!i.containsEntireContent(s))return!1}else{const e=i.getSelectedElement();if(!e||!n.schema.isObject(e))return!1}return!!this._isSelectionAtCellEdge(i,s,l)&&(this._navigateFromCellInDirection(s,e,t),!0)}_isSelectionAtCellEdge(e,t,o){const n=this.editor.model,i=this.editor.model.schema,l=o?e.getLastPosition():e.getFirstPosition();if(!i.getLimitElement(l).is("element","tableCell")){return n.createPositionAt(t,o?"end":0).isTouching(l)}const r=n.createSelection(l);return n.modifySelection(r,{direction:o?"forward":"backward"}),l.isEqual(r.focus)}_navigateFromCellInDirection(e,t,o=!1){const n=this.editor.model,i=e.findAncestor("table"),l=[...new u(i,{includeAllSlots:!0})],{row:r,column:s}=l[l.length-1],a=l.find((({cell:t})=>t==e));let{row:c,column:d}=a;switch(t){case"left":d--;break;case"up":c--;break;case"right":d+=a.cellWidth;break;case"down":c+=a.cellHeight}if(c<0||c>r||d<0&&c<=0||d>s&&c>=r)return void n.change((e=>{e.setSelection(e.createRangeOn(i))}));d<0?(d=o?0:s,c--):d>s&&(d=o?s:0,c++);const h=l.find((e=>e.row==c&&e.column==d)).cell,b=["right","down"].includes(t),m=this.editor.plugins.get("TableSelection");if(o&&m.isEnabled){const t=m.getAnchorCell()||e;m.setCellSelection(t,h)}else{const e=n.createPositionAt(h,b?0:"end");n.change((t=>{t.setSelection(e)}))}}}var Ve=o(492);class Se extends Ve.DomEventObserver{constructor(e){super(e),this.domEventType=["mousemove","mouseleave"]}onDomEvent(e){this.fire(e.type,e)}}class Re extends e.Plugin{static get pluginName(){return"TableMouse"}static get requires(){return[_e,F]}init(){this.editor.editing.view.addObserver(Se),this._enableShiftClickSelection(),this._enableMouseDragSelection()}_enableShiftClickSelection(){const e=this.editor,t=e.plugins.get(F);let o=!1;const n=e.plugins.get(_e);this.listenTo(e.editing.view.document,"mousedown",((i,l)=>{const r=e.model.document.selection;if(!this.isEnabled||!n.isEnabled)return;if(!l.domEvent.shiftKey)return;const s=n.getAnchorCell()||t.getTableCellsContainingSelection(r)[0];if(!s)return;const a=this._getModelTableCellFromDomEvent(l);a&&Ie(s,a)&&(o=!0,n.setCellSelection(s,a),l.preventDefault())})),this.listenTo(e.editing.view.document,"mouseup",(()=>{o=!1})),this.listenTo(e.editing.view.document,"selectionChange",(e=>{o&&e.stop()}),{priority:"highest"})}_enableMouseDragSelection(){const e=this.editor;let t,o,n=!1,i=!1;const l=e.plugins.get(_e);this.listenTo(e.editing.view.document,"mousedown",((e,o)=>{this.isEnabled&&l.isEnabled&&(o.domEvent.shiftKey||o.domEvent.ctrlKey||o.domEvent.altKey||(t=this._getModelTableCellFromDomEvent(o)))})),this.listenTo(e.editing.view.document,"mousemove",((e,r)=>{if(!r.domEvent.buttons)return;if(!t)return;const s=this._getModelTableCellFromDomEvent(r);s&&Ie(t,s)&&(o=s,n||o==t||(n=!0)),n&&(i=!0,l.setCellSelection(t,o),r.preventDefault())})),this.listenTo(e.editing.view.document,"mouseup",(()=>{n=!1,i=!1,t=null,o=null})),this.listenTo(e.editing.view.document,"selectionChange",(e=>{i&&e.stop()}),{priority:"highest"})}_getModelTableCellFromDomEvent(e){const t=e.target,o=this.editor.editing.view.createPositionAt(t,0);return this.editor.editing.mapper.toModelPosition(o).parent.findAncestor("tableCell",{includeSelf:!0})}}function Ie(e,t){return e.parent.parent==t.parent.parent}var Pe=o(660),Ee={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};re()(Pe.Z,Ee);Pe.Z.locals;class ze extends e.Plugin{static get requires(){return[ce,pe,_e,Re,xe,ve,t.Widget]}static get pluginName(){return"Table"}}class Be extends e.Plugin{static get pluginName(){return"PlainTableOutput"}static get requires(){return[ze]}init(){const e=this.editor;e.conversion.for("dataDowncast").elementToStructure({model:"table",view:Le,converterPriority:"high"}),e.plugins.has("TableCaption")&&e.conversion.for("dataDowncast").elementToElement({model:"caption",view:(e,{writer:t})=>{if("table"===e.parent.name)return t.createContainerElement("caption")},converterPriority:"high"}),e.plugins.has("TableProperties")&&function(e){const t={"border-width":"tableBorderWidth","border-color":"tableBorderColor","border-style":"tableBorderStyle","background-color":"tableBackgroundColor"};for(const[o,n]of Object.entries(t))e.conversion.for("dataDowncast").add((e=>e.on(`attribute:${n}:table`,((e,t,n)=>{const{item:i,attributeNewValue:l}=t,{mapper:r,writer:s}=n;if(!n.consumable.consume(i,e.name))return;const a=r.toViewElement(i);l?s.setStyle(o,l,a):s.removeStyle(o,a)}),{priority:"high"})))}(e)}}function Le(e,{writer:t}){const o=e.getAttribute("headingRows")||0,n=t.createSlot((e=>e.is("element","tableRow")&&e.index<o)),i=t.createSlot((e=>e.is("element","tableRow")&&e.index>=o)),l=t.createSlot((e=>!e.is("element","tableRow"))),r=t.createContainerElement("thead",null,n),s=t.createContainerElement("tbody",null,i),a=[];return o&&a.push(r),o<e.childCount&&a.push(s),t.createContainerElement("table",null,[l,...a])}function We(e){const t=e.getSelectedElement();return t&&Fe(t)?t:null}function Ne(e){const t=e.getFirstPosition();if(!t)return null;let o=t.parent;for(;o;){if(o.is("element")&&Fe(o))return o;o=o.parent}return null}function Fe(e){return!!e.getCustomProperty("table")&&(0,t.isWidget)(e)}class De extends e.Plugin{static get requires(){return[t.WidgetToolbarRepository]}static get pluginName(){return"TableToolbar"}afterInit(){const e=this.editor,o=e.t,n=e.plugins.get(t.WidgetToolbarRepository),i=e.config.get("table.contentToolbar"),l=e.config.get("table.tableToolbar");i&&n.register("tableContent",{ariaLabel:o("Table toolbar"),items:i,getRelatedElement:Ne}),l&&n.register("table",{ariaLabel:o("Table toolbar"),items:l,getRelatedElement:We})}}var He=o(252),Me={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};re()(He.Z,Me);He.Z.locals;class Oe extends ue.View{constructor(e,t){super(e);const o=this.bindTemplate;this.set("value",""),this.set("id"),this.set("isReadOnly",!1),this.set("hasError",!1),this.set("isFocused",!1),this.set("isEmpty",!0),this.set("ariaDescribedById"),this.options=t,this._dropdownView=this._createDropdownView(),this._inputView=this._createInputTextView(),this._stillTyping=!1,this.setTemplate({tag:"div",attributes:{class:["ck","ck-input-color",o.if("hasError","ck-error")],id:o.to("id"),"aria-invalid":o.if("hasError",!0),"aria-describedby":o.to("ariaDescribedById")},children:[this._dropdownView,this._inputView]}),this.on("change:value",((e,t,o)=>this._setInputValue(o)))}focus(){this._inputView.focus()}_createDropdownView(){const e=this.locale,t=e.t,o=this.bindTemplate,n=this._createColorGrid(e),i=(0,ue.createDropdown)(e),l=new ue.View,r=this._createRemoveColorButton();return l.setTemplate({tag:"span",attributes:{class:["ck","ck-input-color__button__preview"],style:{backgroundColor:o.to("value")}},children:[{tag:"span",attributes:{class:["ck","ck-input-color__button__preview__no-color-indicator",o.if("value","ck-hidden",(e=>""!=e))]}}]}),i.buttonView.extendTemplate({attributes:{class:"ck-input-color__button"}}),i.buttonView.children.add(l),i.buttonView.label=t("Color picker"),i.buttonView.tooltip=!0,i.panelPosition="rtl"===e.uiLanguageDirection?"se":"sw",i.panelView.children.add(r),i.panelView.children.add(n),i.bind("isEnabled").to(this,"isReadOnly",(e=>!e)),i}_createInputTextView(){const e=this.locale,t=new ue.InputTextView(e);return t.extendTemplate({on:{blur:t.bindTemplate.to("blur")}}),t.value=this.value,t.bind("isReadOnly","hasError").to(this),this.bind("isFocused","isEmpty").to(t),t.on("input",(()=>{const e=t.element.value,o=this.options.colorDefinitions.find((t=>e===t.label));this._stillTyping=!0,this.value=o&&o.color||e})),t.on("blur",(()=>{this._stillTyping=!1,this._setInputValue(t.element.value)})),t.delegate("input").to(this),t}_createRemoveColorButton(){const t=this.locale,o=t.t,n=new ue.ButtonView(t),i=this.options.defaultColorValue||"",l=o(i?"Restore default":"Remove color");return n.class="ck-input-color__remove-color",n.withText=!0,n.icon=e.icons.eraser,n.label=l,n.on("execute",(()=>{this.value=i,this._dropdownView.isOpen=!1,this.fire("input")})),n}_createColorGrid(e){const t=new ue.ColorGridView(e,{colorDefinitions:this.options.colorDefinitions,columns:this.options.columns});return t.on("execute",((e,t)=>{this.value=t.value,this._dropdownView.isOpen=!1,this.fire("input")})),t.bind("selectedColor").to(this,"value"),t}_setInputValue(e){if(!this._stillTyping){const t=je(e),o=this.options.colorDefinitions.find((e=>t===je(e.color)));this._inputView.value=o?o.label:e||""}}}function je(e){return e.replace(/([(,])\s+/g,"$1").replace(/^\s+|\s+(?=[),\s]|$)/g,"").replace(/,|\s/g," ")}const Ue=e=>""===e;function Ze(e){return{none:e("None"),solid:e("Solid"),dotted:e("Dotted"),dashed:e("Dashed"),double:e("Double"),groove:e("Groove"),ridge:e("Ridge"),inset:e("Inset"),outset:e("Outset")}}function $e(e){return e('The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".')}function Ke(e){return e('The value is invalid. Try "10px" or "2em" or simply "2".')}function qe(e){return e=e.trim(),Ue(e)||(0,Ve.isColor)(e)}function Ge(e){return e=e.trim(),Ue(e)||tt(e)||(0,Ve.isLength)(e)||(0,Ve.isPercentage)(e)}function Je(e){return e=e.trim(),Ue(e)||tt(e)||(0,Ve.isLength)(e)}function Xe(e,t){const o=new s.Collection,n=Ze(e.t);for(const i in n){const l={type:"button",model:new ue.Model({_borderStyleValue:i,label:n[i],withText:!0})};"none"===i?l.model.bind("isOn").to(e,"borderStyle",(e=>"none"===t?!e:e===i)):l.model.bind("isOn").to(e,"borderStyle",(e=>e===i)),o.add(l)}return o}function Ye(e){const{view:t,icons:o,toolbar:n,labels:i,propertyName:l,nameToValue:r,defaultValue:s}=e;for(const e in i){const a=new ue.ButtonView(t.locale);a.set({label:i[e],icon:o[e],tooltip:i[e]});const c=r?r(e):e;a.bind("isOn").to(t,l,(e=>{let t=e;return""===e&&s&&(t=s),c===t})),a.on("execute",(()=>{t[l]=c})),n.items.add(a)}}const Qe=[{color:"hsl(0, 0%, 0%)",label:"Black"},{color:"hsl(0, 0%, 30%)",label:"Dim grey"},{color:"hsl(0, 0%, 60%)",label:"Grey"},{color:"hsl(0, 0%, 90%)",label:"Light grey"},{color:"hsl(0, 0%, 100%)",label:"White",hasBorder:!0},{color:"hsl(0, 75%, 60%)",label:"Red"},{color:"hsl(30, 75%, 60%)",label:"Orange"},{color:"hsl(60, 75%, 60%)",label:"Yellow"},{color:"hsl(90, 75%, 60%)",label:"Light green"},{color:"hsl(120, 75%, 60%)",label:"Green"},{color:"hsl(150, 75%, 60%)",label:"Aquamarine"},{color:"hsl(180, 75%, 60%)",label:"Turquoise"},{color:"hsl(210, 75%, 60%)",label:"Light blue"},{color:"hsl(240, 75%, 60%)",label:"Blue"},{color:"hsl(270, 75%, 60%)",label:"Purple"}];function et(e){return(t,o,n)=>{const i=new Oe(t.locale,{colorDefinitions:(l=e.colorConfig,l.map((e=>({color:e.model,label:e.label,options:{hasBorder:e.hasBorder}})))),columns:e.columns,defaultColorValue:e.defaultColorValue});var l;return i.set({id:o,ariaDescribedById:n}),i.bind("isReadOnly").to(t,"isEnabled",(e=>!e)),i.bind("hasError").to(t,"errorText",(e=>!!e)),i.on("input",(()=>{t.errorText=null})),t.bind("isEmpty","isFocused").to(i),i}}function tt(e){const t=parseFloat(e);return!Number.isNaN(t)&&e===String(t)}var ot=o(333),nt={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};re()(ot.Z,nt);ot.Z.locals;class it extends ue.View{constructor(e,t={}){super(e);const o=this.bindTemplate;this.set("class",t.class||null),this.children=this.createCollection(),t.children&&t.children.forEach((e=>this.children.add(e))),this.set("_role",null),this.set("_ariaLabelledBy",null),t.labelView&&this.set({_role:"group",_ariaLabelledBy:t.labelView.id}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-form__row",o.to("class")],role:o.to("_role"),"aria-labelledby":o.to("_ariaLabelledBy")},children:this.children})}}var lt=o(934),rt={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};re()(lt.Z,rt);lt.Z.locals;var st=o(686),at={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};re()(st.Z,at);st.Z.locals;var ct=o(773),dt={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};re()(ct.Z,dt);ct.Z.locals;const ut={left:e.icons.alignLeft,center:e.icons.alignCenter,right:e.icons.alignRight,justify:e.icons.alignJustify,top:e.icons.alignTop,middle:e.icons.alignMiddle,bottom:e.icons.alignBottom};class ht extends ue.View{constructor(e,t){super(e),this.set({borderStyle:"",borderWidth:"",borderColor:"",padding:"",backgroundColor:"",width:"",height:"",horizontalAlignment:"",verticalAlignment:""}),this.options=t;const{borderStyleDropdown:o,borderWidthInput:n,borderColorInput:i,borderRowLabel:l}=this._createBorderFields(),{backgroundRowLabel:r,backgroundInput:a}=this._createBackgroundFields(),{widthInput:c,operatorLabel:d,heightInput:u,dimensionsLabel:h}=this._createDimensionFields(),{horizontalAlignmentToolbar:b,verticalAlignmentToolbar:m,alignmentLabel:g}=this._createAlignmentFields();this.focusTracker=new s.FocusTracker,this.keystrokes=new s.KeystrokeHandler,this.children=this.createCollection(),this.borderStyleDropdown=o,this.borderWidthInput=n,this.borderColorInput=i,this.backgroundInput=a,this.paddingInput=this._createPaddingField(),this.widthInput=c,this.heightInput=u,this.horizontalAlignmentToolbar=b,this.verticalAlignmentToolbar=m;const{saveButtonView:p,cancelButtonView:f}=this._createActionButtons();this.saveButtonView=p,this.cancelButtonView=f,this._focusables=new ue.ViewCollection,this._focusCycler=new ue.FocusCycler({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.children.add(new ue.FormHeaderView(e,{label:this.t("Cell properties")})),this.children.add(new it(e,{labelView:l,children:[l,o,i,n],class:"ck-table-form__border-row"})),this.children.add(new it(e,{labelView:r,children:[r,a],class:"ck-table-form__background-row"})),this.children.add(new it(e,{children:[new it(e,{labelView:h,children:[h,c,d,u],class:"ck-table-form__dimensions-row"}),new it(e,{children:[this.paddingInput],class:"ck-table-cell-properties-form__padding-row"})]})),this.children.add(new it(e,{labelView:g,children:[g,b,m],class:"ck-table-cell-properties-form__alignment-row"})),this.children.add(new it(e,{children:[this.saveButtonView,this.cancelButtonView],class:"ck-table-form__action-row"})),this.setTemplate({tag:"form",attributes:{class:["ck","ck-form","ck-table-form","ck-table-cell-properties-form"],tabindex:"-1"},children:this.children})}render(){super.render(),(0,ue.submitHandler)({view:this}),[this.borderStyleDropdown,this.borderColorInput,this.borderWidthInput,this.backgroundInput,this.widthInput,this.heightInput,this.paddingInput,this.horizontalAlignmentToolbar,this.verticalAlignmentToolbar,this.saveButtonView,this.cancelButtonView].forEach((e=>{this._focusables.add(e),this.focusTracker.add(e.element)})),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}_createBorderFields(){const e=this.options.defaultTableCellProperties,t={style:e.borderStyle,width:e.borderWidth,color:e.borderColor},o=et({colorConfig:this.options.borderColors,columns:5,defaultColorValue:t.color}),n=this.locale,i=this.t,l=new ue.LabelView(n);l.text=i("Border");const r=Ze(i),s=new ue.LabeledFieldView(n,ue.createLabeledDropdown);s.set({label:i("Style"),class:"ck-table-form__border-style"}),s.fieldView.buttonView.set({isOn:!1,withText:!0,tooltip:i("Style")}),s.fieldView.buttonView.bind("label").to(this,"borderStyle",(e=>r[e||"none"])),s.fieldView.on("execute",(e=>{this.borderStyle=e.source._borderStyleValue})),s.bind("isEmpty").to(this,"borderStyle",(e=>!e)),(0,ue.addListToDropdown)(s.fieldView,Xe(this,t.style));const a=new ue.LabeledFieldView(n,ue.createLabeledInputText);a.set({label:i("Width"),class:"ck-table-form__border-width"}),a.fieldView.bind("value").to(this,"borderWidth"),a.bind("isEnabled").to(this,"borderStyle",bt),a.fieldView.on("input",(()=>{this.borderWidth=a.fieldView.element.value}));const c=new ue.LabeledFieldView(n,o);return c.set({label:i("Color"),class:"ck-table-form__border-color"}),c.fieldView.bind("value").to(this,"borderColor"),c.bind("isEnabled").to(this,"borderStyle",bt),c.fieldView.on("input",(()=>{this.borderColor=c.fieldView.value})),this.on("change:borderStyle",((e,o,n,i)=>{bt(n)||(this.borderColor="",this.borderWidth=""),bt(i)||(this.borderColor=t.color,this.borderWidth=t.width)})),{borderRowLabel:l,borderStyleDropdown:s,borderColorInput:c,borderWidthInput:a}}_createBackgroundFields(){const e=this.locale,t=this.t,o=new ue.LabelView(e);o.text=t("Background");const n=et({colorConfig:this.options.backgroundColors,columns:5,defaultColorValue:this.options.defaultTableCellProperties.backgroundColor}),i=new ue.LabeledFieldView(e,n);return i.set({label:t("Color"),class:"ck-table-cell-properties-form__background"}),i.fieldView.bind("value").to(this,"backgroundColor"),i.fieldView.on("input",(()=>{this.backgroundColor=i.fieldView.value})),{backgroundRowLabel:o,backgroundInput:i}}_createDimensionFields(){const e=this.locale,t=this.t,o=new ue.LabelView(e);o.text=t("Dimensions");const n=new ue.LabeledFieldView(e,ue.createLabeledInputText);n.set({label:t("Width"),class:"ck-table-form__dimensions-row__width"}),n.fieldView.bind("value").to(this,"width"),n.fieldView.on("input",(()=>{this.width=n.fieldView.element.value}));const i=new ue.View(e);i.setTemplate({tag:"span",attributes:{class:["ck-table-form__dimension-operator"]},children:[{text:"×"}]});const l=new ue.LabeledFieldView(e,ue.createLabeledInputText);return l.set({label:t("Height"),class:"ck-table-form__dimensions-row__height"}),l.fieldView.bind("value").to(this,"height"),l.fieldView.on("input",(()=>{this.height=l.fieldView.element.value})),{dimensionsLabel:o,widthInput:n,operatorLabel:i,heightInput:l}}_createPaddingField(){const e=this.locale,t=this.t,o=new ue.LabeledFieldView(e,ue.createLabeledInputText);return o.set({label:t("Padding"),class:"ck-table-cell-properties-form__padding"}),o.fieldView.bind("value").to(this,"padding"),o.fieldView.on("input",(()=>{this.padding=o.fieldView.element.value})),o}_createAlignmentFields(){const e=this.locale,t=this.t,o=new ue.LabelView(e);o.text=t("Table cell text alignment");const n=new ue.ToolbarView(e),i="rtl"===this.locale.contentLanguageDirection;n.set({isCompact:!0,ariaLabel:t("Horizontal text alignment toolbar")}),Ye({view:this,icons:ut,toolbar:n,labels:this._horizontalAlignmentLabels,propertyName:"horizontalAlignment",nameToValue:e=>{if(i){if("left"===e)return"right";if("right"===e)return"left"}return e},defaultValue:this.options.defaultTableCellProperties.horizontalAlignment});const l=new ue.ToolbarView(e);return l.set({isCompact:!0,ariaLabel:t("Vertical text alignment toolbar")}),Ye({view:this,icons:ut,toolbar:l,labels:this._verticalAlignmentLabels,propertyName:"verticalAlignment",defaultValue:this.options.defaultTableCellProperties.verticalAlignment}),{horizontalAlignmentToolbar:n,verticalAlignmentToolbar:l,alignmentLabel:o}}_createActionButtons(){const t=this.locale,o=this.t,n=new ue.ButtonView(t),i=new ue.ButtonView(t),l=[this.borderWidthInput,this.borderColorInput,this.backgroundInput,this.paddingInput];return n.set({label:o("Save"),icon:e.icons.check,class:"ck-button-save",type:"submit",withText:!0}),n.bind("isEnabled").toMany(l,"errorText",((...e)=>e.every((e=>!e)))),i.set({label:o("Cancel"),icon:e.icons.cancel,class:"ck-button-cancel",withText:!0}),i.delegate("execute").to(this,"cancel"),{saveButtonView:n,cancelButtonView:i}}get _horizontalAlignmentLabels(){const e=this.locale,t=this.t,o=t("Align cell text to the left"),n=t("Align cell text to the center"),i=t("Align cell text to the right"),l=t("Justify cell text");return"rtl"===e.uiLanguageDirection?{right:i,center:n,left:o,justify:l}:{left:o,center:n,right:i,justify:l}}get _verticalAlignmentLabels(){const e=this.t;return{top:e("Align cell text to the top"),middle:e("Align cell text to the middle"),bottom:e("Align cell text to the bottom")}}}function bt(e){return"none"!==e}const mt=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)};const gt="object"==typeof global&&global&&global.Object===Object&&global;var pt="object"==typeof self&&self&&self.Object===Object&&self;const ft=gt||pt||Function("return this")();const wt=function(){return ft.Date.now()};var kt=/\s/;const _t=function(e){for(var t=e.length;t--&&kt.test(e.charAt(t)););return t};var vt=/^\s+/;const Ct=function(e){return e?e.slice(0,_t(e)+1).replace(vt,""):e};const yt=ft.Symbol;var Tt=Object.prototype,At=Tt.hasOwnProperty,xt=Tt.toString,Vt=yt?yt.toStringTag:void 0;const St=function(e){var t=At.call(e,Vt),o=e[Vt];try{e[Vt]=void 0;var n=!0}catch(e){}var i=xt.call(e);return n&&(t?e[Vt]=o:delete e[Vt]),i};var Rt=Object.prototype.toString;const It=function(e){return Rt.call(e)};var Pt=yt?yt.toStringTag:void 0;const Et=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":Pt&&Pt in Object(e)?St(e):It(e)};const zt=function(e){return null!=e&&"object"==typeof e};const Bt=function(e){return"symbol"==typeof e||zt(e)&&"[object Symbol]"==Et(e)};var Lt=/^[-+]0x[0-9a-f]+$/i,Wt=/^0b[01]+$/i,Nt=/^0o[0-7]+$/i,Ft=parseInt;const Dt=function(e){if("number"==typeof e)return e;if(Bt(e))return NaN;if(mt(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=mt(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=Ct(e);var o=Wt.test(e);return o||Nt.test(e)?Ft(e.slice(2),o?2:8):Lt.test(e)?NaN:+e};var Ht=Math.max,Mt=Math.min;const Ot=function(e,t,o){var n,i,l,r,s,a,c=0,d=!1,u=!1,h=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function b(t){var o=n,l=i;return n=i=void 0,c=t,r=e.apply(l,o)}function m(e){return c=e,s=setTimeout(p,t),d?b(e):r}function g(e){var o=e-a;return void 0===a||o>=t||o<0||u&&e-c>=l}function p(){var e=wt();if(g(e))return f(e);s=setTimeout(p,function(e){var o=t-(e-a);return u?Mt(o,l-(e-c)):o}(e))}function f(e){return s=void 0,h&&n?b(e):(n=i=void 0,r)}function w(){var e=wt(),o=g(e);if(n=arguments,i=this,a=e,o){if(void 0===s)return m(a);if(u)return clearTimeout(s),s=setTimeout(p,t),b(a)}return void 0===s&&(s=setTimeout(p,t)),r}return t=Dt(t)||0,mt(o)&&(d=!!o.leading,l=(u="maxWait"in o)?Ht(Dt(o.maxWait)||0,t):l,h="trailing"in o?!!o.trailing:h),w.cancel=function(){void 0!==s&&clearTimeout(s),c=0,n=a=i=s=void 0},w.flush=function(){return void 0===s?r:f(wt())},w},jt=ue.BalloonPanelView.defaultPositions,Ut=[jt.northArrowSouth,jt.northArrowSouthWest,jt.northArrowSouthEast,jt.southArrowNorth,jt.southArrowNorthWest,jt.southArrowNorthEast,jt.viewportStickyNorth];function Zt(e,t){const o=e.plugins.get("ContextualBalloon");if(Ne(e.editing.view.document.selection)){let n;n="cell"===t?Kt(e):$t(e),o.updatePosition(n)}}function $t(e){const t=e.model.document.selection.getFirstPosition().findAncestor("table"),o=e.editing.mapper.toViewElement(t);return{target:e.editing.view.domConverter.mapViewToDom(o),positions:Ut}}function Kt(e){const t=e.editing.mapper,o=e.editing.view.domConverter,n=e.model.document.selection;if(n.rangeCount>1)return{target:()=>function(e,t){const o=t.editing.mapper,n=t.editing.view.domConverter,i=Array.from(e).map((e=>{const t=qt(e.start),i=o.toViewElement(t);return new s.Rect(n.mapViewToDom(i))}));return s.Rect.getBoundingRect(i)}(n.getRanges(),e),positions:Ut};const i=qt(n.getFirstPosition()),l=t.toViewElement(i);return{target:o.mapViewToDom(l),positions:Ut}}function qt(e){return e.nodeAfter&&e.nodeAfter.is("element","tableCell")?e.nodeAfter:e.findAncestor("tableCell")}function Gt(e){if(!e||!mt(e))return e;const{top:t,right:o,bottom:n,left:i}=e;return t==o&&o==n&&n==i?t:void 0}function Jt(e,t){const o=parseFloat(e);return Number.isNaN(o)||String(o)!==String(e)?e:`${o}${t}`}function Xt(e,t={}){const o=Object.assign({borderStyle:"none",borderWidth:"",borderColor:"",backgroundColor:"",width:"",height:""},e);return t.includeAlignmentProperty&&!o.alignment&&(o.alignment="center"),t.includePaddingProperty&&!o.padding&&(o.padding=""),t.includeVerticalAlignmentProperty&&!o.verticalAlignment&&(o.verticalAlignment="middle"),t.includeHorizontalAlignmentProperty&&!o.horizontalAlignment&&(o.horizontalAlignment=t.isRightToLeftContent?"right":"left"),o}const Yt={borderStyle:"tableCellBorderStyle",borderColor:"tableCellBorderColor",borderWidth:"tableCellBorderWidth",width:"tableCellWidth",height:"tableCellHeight",padding:"tableCellPadding",backgroundColor:"tableCellBackgroundColor",horizontalAlignment:"tableCellHorizontalAlignment",verticalAlignment:"tableCellVerticalAlignment"};class Qt extends e.Plugin{static get requires(){return[ue.ContextualBalloon]}static get pluginName(){return"TableCellPropertiesUI"}constructor(e){super(e),e.config.define("table.tableCellProperties",{borderColors:Qe,backgroundColors:Qe})}init(){const e=this.editor,t=e.t;this._defaultTableCellProperties=Xt(e.config.get("table.tableCellProperties.defaultProperties"),{includeVerticalAlignmentProperty:!0,includeHorizontalAlignmentProperty:!0,includePaddingProperty:!0,isRightToLeftContent:"rtl"===e.locale.contentLanguageDirection}),this._balloon=e.plugins.get(ue.ContextualBalloon),this.view=this._createPropertiesView(),this._undoStepBatch=null,e.ui.componentFactory.add("tableCellProperties",(o=>{const n=new ue.ButtonView(o);n.set({label:t("Cell properties"),icon:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m11.105 18-.17 1H2.5A1.5 1.5 0 0 1 1 17.5v-15A1.5 1.5 0 0 1 2.5 1h15A1.5 1.5 0 0 1 19 2.5v9.975l-.85-.124-.15-.302V8h-5v4h.021l-.172.351-1.916.28-.151.027c-.287.063-.54.182-.755.341L8 13v5h3.105zM2 12h5V8H2v4zm10-4H8v4h4V8zM2 2v5h5V2H2zm0 16h5v-5H2v5zM13 7h5V2h-5v5zM8 2v5h4V2H8z" opacity=".6"/><path d="m15.5 11.5 1.323 2.68 2.957.43-2.14 2.085.505 2.946L15.5 18.25l-2.645 1.39.505-2.945-2.14-2.086 2.957-.43L15.5 11.5zM13 6a1 1 0 0 1 1 1v3.172a2.047 2.047 0 0 0-.293.443l-.858 1.736-1.916.28-.151.027A1.976 1.976 0 0 0 9.315 14H7a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h6zm-1 2H8v4h4V8z"/></svg>',tooltip:!0}),this.listenTo(n,"execute",(()=>this._showView()));const i=Object.values(Yt).map((t=>e.commands.get(t)));return n.bind("isEnabled").toMany(i,"isEnabled",((...e)=>e.some((e=>e)))),n}))}destroy(){super.destroy(),this.view.destroy()}_createPropertiesView(){const e=this.editor,t=e.editing.view.document,o=e.config.get("table.tableCellProperties"),n=(0,ue.normalizeColorOptions)(o.borderColors),i=(0,ue.getLocalizedColorOptions)(e.locale,n),l=(0,ue.normalizeColorOptions)(o.backgroundColors),r=(0,ue.getLocalizedColorOptions)(e.locale,l),s=new ht(e.locale,{borderColors:i,backgroundColors:r,defaultTableCellProperties:this._defaultTableCellProperties}),a=e.t;s.render(),this.listenTo(s,"submit",(()=>{this._hideView()})),this.listenTo(s,"cancel",(()=>{this._undoStepBatch.operations.length&&e.execute("undo",this._undoStepBatch),this._hideView()})),s.keystrokes.set("Esc",((e,t)=>{this._hideView(),t()})),this.listenTo(e.ui,"update",(()=>{Ne(t.selection)?this._isViewVisible&&Zt(e,"cell"):this._hideView()})),(0,ue.clickOutsideHandler)({emitter:s,activator:()=>this._isViewInBalloon,contextElements:[this._balloon.view.element],callback:()=>this._hideView()});const c=$e(a),d=Ke(a);return s.on("change:borderStyle",this._getPropertyChangeCallback("tableCellBorderStyle",this._defaultTableCellProperties.borderStyle)),s.on("change:borderColor",this._getValidatedPropertyChangeCallback({viewField:s.borderColorInput,commandName:"tableCellBorderColor",errorText:c,validator:qe,defaultValue:this._defaultTableCellProperties.borderColor})),s.on("change:borderWidth",this._getValidatedPropertyChangeCallback({viewField:s.borderWidthInput,commandName:"tableCellBorderWidth",errorText:d,validator:Je,defaultValue:this._defaultTableCellProperties.borderWidth})),s.on("change:padding",this._getValidatedPropertyChangeCallback({viewField:s.paddingInput,commandName:"tableCellPadding",errorText:d,validator:Ge,defaultValue:this._defaultTableCellProperties.padding})),s.on("change:width",this._getValidatedPropertyChangeCallback({viewField:s.widthInput,commandName:"tableCellWidth",errorText:d,validator:Ge,defaultValue:this._defaultTableCellProperties.width})),s.on("change:height",this._getValidatedPropertyChangeCallback({viewField:s.heightInput,commandName:"tableCellHeight",errorText:d,validator:Ge,defaultValue:this._defaultTableCellProperties.height})),s.on("change:backgroundColor",this._getValidatedPropertyChangeCallback({viewField:s.backgroundInput,commandName:"tableCellBackgroundColor",errorText:c,validator:qe,defaultValue:this._defaultTableCellProperties.backgroundColor})),s.on("change:horizontalAlignment",this._getPropertyChangeCallback("tableCellHorizontalAlignment",this._defaultTableCellProperties.horizontalAlignment)),s.on("change:verticalAlignment",this._getPropertyChangeCallback("tableCellVerticalAlignment",this._defaultTableCellProperties.verticalAlignment)),s}_fillViewFormFromCommandValues(){const e=this.editor.commands,t=e.get("tableCellBorderStyle");Object.entries(Yt).map((([t,o])=>{const n=this._defaultTableCellProperties[t]||"";return[t,e.get(o).value||n]})).forEach((([e,o])=>{("borderColor"!==e&&"borderWidth"!==e||"none"!==t.value)&&this.view.set(e,o)}))}_showView(){const e=this.editor;this._fillViewFormFromCommandValues(),this._balloon.add({view:this.view,position:Kt(e)}),this._undoStepBatch=e.model.createBatch(),this.view.focus()}_hideView(){if(!this._isViewInBalloon)return;const e=this.editor;this.stopListening(e.ui,"update"),this.view.saveButtonView.focus(),this._balloon.remove(this.view),this.editor.editing.view.focus()}get _isViewVisible(){return this._balloon.visibleView===this.view}get _isViewInBalloon(){return this._balloon.hasView(this.view)}_getPropertyChangeCallback(e,t){return(o,n,i,l)=>{(l||t!==i)&&this.editor.execute(e,{value:i,batch:this._undoStepBatch})}}_getValidatedPropertyChangeCallback(e){const{commandName:t,viewField:o,validator:n,errorText:i,defaultValue:l}=e,r=Ot((()=>{o.errorText=i}),500);return(e,i,s,a)=>{r.cancel(),(a||l!==s)&&(n(s)?(this.editor.execute(t,{value:s,batch:this._undoStepBatch}),o.errorText=null):r())}}}function eo(e,t){const{viewElement:o,defaultValue:n,modelAttribute:i,styleName:l,reduceBoxSides:r=!1}=t;e.for("upcast").attributeToAttribute({view:{name:o,styles:{[l]:/[\s\S]+/}},model:{key:i,value:e=>{const t=e.getNormalizedStyle(l),o=r?io(t):t;if(n!==o)return o}}})}function to(e,t,o,n){e.for("upcast").add((e=>e.on("element:"+t,((e,t,i)=>{if(!t.modelRange)return;const l=["border-top-width","border-top-color","border-top-style","border-bottom-width","border-bottom-color","border-bottom-style","border-right-width","border-right-color","border-right-style","border-left-width","border-left-color","border-left-style"].filter((e=>t.viewItem.hasStyle(e)));if(!l.length)return;const r={styles:l};if(!i.consumable.test(t.viewItem,r))return;const s=[...t.modelRange.getItems({shallow:!0})].pop();i.consumable.consume(t.viewItem,r);const a={style:t.viewItem.getNormalizedStyle("border-style"),color:t.viewItem.getNormalizedStyle("border-color"),width:t.viewItem.getNormalizedStyle("border-width")},c={style:io(a.style),color:io(a.color),width:io(a.width)};c.style!==n.style&&i.writer.setAttribute(o.style,c.style,s),c.color!==n.color&&i.writer.setAttribute(o.color,c.color,s),c.width!==n.width&&i.writer.setAttribute(o.width,c.width,s)}))))}function oo(e,{modelElement:t,modelAttribute:o,styleName:n}){e.for("downcast").attributeToAttribute({model:{name:t,key:o},view:e=>({key:"style",value:{[n]:e}})})}function no(e,{modelAttribute:t,styleName:o}){e.for("downcast").add((e=>e.on(`attribute:${t}:table`,((e,t,n)=>{const{item:i,attributeNewValue:l}=t,{mapper:r,writer:s}=n;if(!n.consumable.consume(t.item,e.name))return;const a=[...r.toViewElement(i).getChildren()].find((e=>e.is("element","table")));l?s.setStyle(o,l,a):s.removeStyle(o,a)}))))}function io(e){if(!e)return;return["top","right","bottom","left"].map((t=>e[t])).reduce(((e,t)=>e==t?e:null))||e}class lo extends e.Command{constructor(e,t,o){super(e),this.attributeName=t,this._defaultValue=o}refresh(){const e=this.editor,t=this.editor.plugins.get("TableUtils").getSelectionAffectedTableCells(e.model.document.selection);this.isEnabled=!!t.length,this.value=this._getSingleValue(t)}execute(e={}){const{value:t,batch:o}=e,n=this.editor.model,i=this.editor.plugins.get("TableUtils").getSelectionAffectedTableCells(n.document.selection),l=this._getValueToSet(t);n.enqueueChange(o,(e=>{l?i.forEach((t=>e.setAttribute(this.attributeName,l,t))):i.forEach((t=>e.removeAttribute(this.attributeName,t)))}))}_getAttribute(e){if(!e)return;const t=e.getAttribute(this.attributeName);return t!==this._defaultValue?t:void 0}_getValueToSet(e){if(e!==this._defaultValue)return e}_getSingleValue(e){const t=this._getAttribute(e[0]);return e.every((e=>this._getAttribute(e)===t))?t:void 0}}class ro extends lo{constructor(e,t){super(e,"tableCellPadding",t)}_getAttribute(e){if(!e)return;const t=Gt(e.getAttribute(this.attributeName));return t!==this._defaultValue?t:void 0}_getValueToSet(e){if((e=Jt(e,"px"))!==this._defaultValue)return e}}class so extends lo{constructor(e,t){super(e,"tableCellWidth",t)}_getValueToSet(e){if((e=Jt(e,"px"))!==this._defaultValue)return e}}class ao extends lo{constructor(e,t){super(e,"tableCellHeight",t)}_getValueToSet(e){return(e=Jt(e,"px"))===this._defaultValue?null:e}}class co extends lo{constructor(e,t){super(e,"tableCellBackgroundColor",t)}}class uo extends lo{constructor(e,t){super(e,"tableCellVerticalAlignment",t)}}class ho extends lo{constructor(e,t){super(e,"tableCellHorizontalAlignment",t)}}class bo extends lo{constructor(e,t){super(e,"tableCellBorderStyle",t)}_getAttribute(e){if(!e)return;const t=Gt(e.getAttribute(this.attributeName));return t!==this._defaultValue?t:void 0}}class mo extends lo{constructor(e,t){super(e,"tableCellBorderColor",t)}_getAttribute(e){if(!e)return;const t=Gt(e.getAttribute(this.attributeName));return t!==this._defaultValue?t:void 0}}class go extends lo{constructor(e,t){super(e,"tableCellBorderWidth",t)}_getAttribute(e){if(!e)return;const t=Gt(e.getAttribute(this.attributeName));return t!==this._defaultValue?t:void 0}_getValueToSet(e){if((e=Jt(e,"px"))!==this._defaultValue)return e}}const po=/^(top|middle|bottom)$/,fo=/^(left|center|right|justify)$/;class wo extends e.Plugin{static get pluginName(){return"TableCellPropertiesEditing"}static get requires(){return[ce]}init(){const e=this.editor,t=e.model.schema,o=e.conversion;e.config.define("table.tableCellProperties.defaultProperties",{});const n=Xt(e.config.get("table.tableCellProperties.defaultProperties"),{includeVerticalAlignmentProperty:!0,includeHorizontalAlignmentProperty:!0,includePaddingProperty:!0,isRightToLeftContent:"rtl"===e.locale.contentLanguageDirection});e.data.addStyleProcessorRules(Ve.addBorderRules),function(e,t,o){const n={width:"tableCellBorderWidth",color:"tableCellBorderColor",style:"tableCellBorderStyle"};e.extend("tableCell",{allowAttributes:Object.values(n)}),to(t,"td",n,o),to(t,"th",n,o),oo(t,{modelElement:"tableCell",modelAttribute:n.style,styleName:"border-style"}),oo(t,{modelElement:"tableCell",modelAttribute:n.color,styleName:"border-color"}),oo(t,{modelElement:"tableCell",modelAttribute:n.width,styleName:"border-width"})}(t,o,{color:n.borderColor,style:n.borderStyle,width:n.borderWidth}),e.commands.add("tableCellBorderStyle",new bo(e,n.borderStyle)),e.commands.add("tableCellBorderColor",new mo(e,n.borderColor)),e.commands.add("tableCellBorderWidth",new go(e,n.borderWidth)),ko(t,o,{modelAttribute:"tableCellWidth",styleName:"width",defaultValue:n.width}),e.commands.add("tableCellWidth",new so(e,n.width)),ko(t,o,{modelAttribute:"tableCellHeight",styleName:"height",defaultValue:n.height}),e.commands.add("tableCellHeight",new ao(e,n.height)),e.data.addStyleProcessorRules(Ve.addPaddingRules),ko(t,o,{modelAttribute:"tableCellPadding",styleName:"padding",reduceBoxSides:!0,defaultValue:n.padding}),e.commands.add("tableCellPadding",new ro(e,n.padding)),e.data.addStyleProcessorRules(Ve.addBackgroundRules),ko(t,o,{modelAttribute:"tableCellBackgroundColor",styleName:"background-color",defaultValue:n.backgroundColor}),e.commands.add("tableCellBackgroundColor",new co(e,n.backgroundColor)),function(e,t,o){e.extend("tableCell",{allowAttributes:["tableCellHorizontalAlignment"]}),t.for("downcast").attributeToAttribute({model:{name:"tableCell",key:"tableCellHorizontalAlignment"},view:e=>({key:"style",value:{"text-align":e}})}),t.for("upcast").attributeToAttribute({view:{name:/^(td|th)$/,styles:{"text-align":fo}},model:{key:"tableCellHorizontalAlignment",value:e=>{const t=e.getStyle("text-align");return t===o?null:t}}}).attributeToAttribute({view:{name:/^(td|th)$/,attributes:{align:fo}},model:{key:"tableCellHorizontalAlignment",value:e=>{const t=e.getAttribute("align");return t===o?null:t}}})}(t,o,n.horizontalAlignment),e.commands.add("tableCellHorizontalAlignment",new ho(e,n.horizontalAlignment)),function(e,t,o){e.extend("tableCell",{allowAttributes:["tableCellVerticalAlignment"]}),t.for("downcast").attributeToAttribute({model:{name:"tableCell",key:"tableCellVerticalAlignment"},view:e=>({key:"style",value:{"vertical-align":e}})}),t.for("upcast").attributeToAttribute({view:{name:/^(td|th)$/,styles:{"vertical-align":po}},model:{key:"tableCellVerticalAlignment",value:e=>{const t=e.getStyle("vertical-align");return t===o?null:t}}}).attributeToAttribute({view:{name:/^(td|th)$/,attributes:{valign:po}},model:{key:"tableCellVerticalAlignment",value:e=>{const t=e.getAttribute("valign");return t===o?null:t}}})}(t,o,n.verticalAlignment),e.commands.add("tableCellVerticalAlignment",new uo(e,n.verticalAlignment))}}function ko(e,t,o){const{modelAttribute:n}=o;e.extend("tableCell",{allowAttributes:[n]}),eo(t,{viewElement:/^(td|th)$/,...o}),oo(t,{modelElement:"tableCell",...o})}class _o extends e.Plugin{static get pluginName(){return"TableCellProperties"}static get requires(){return[wo,Qt]}}class vo extends e.Command{constructor(e,t,o){super(e),this.attributeName=t,this._defaultValue=o}refresh(){const e=this.editor.model.document.selection.getFirstPosition().findAncestor("table");this.isEnabled=!!e,this.value=this._getValue(e)}execute(e={}){const t=this.editor.model,o=t.document.selection,{value:n,batch:i}=e,l=o.getFirstPosition().findAncestor("table"),r=this._getValueToSet(n);t.enqueueChange(i,(e=>{r?e.setAttribute(this.attributeName,r,l):e.removeAttribute(this.attributeName,l)}))}_getValue(e){if(!e)return;const t=e.getAttribute(this.attributeName);return t!==this._defaultValue?t:void 0}_getValueToSet(e){if(e!==this._defaultValue)return e}}class Co extends vo{constructor(e,t){super(e,"tableBackgroundColor",t)}}class yo extends vo{constructor(e,t){super(e,"tableBorderColor",t)}_getValue(e){if(!e)return;const t=Gt(e.getAttribute(this.attributeName));return t!==this._defaultValue?t:void 0}}class To extends vo{constructor(e,t){super(e,"tableBorderStyle",t)}_getValue(e){if(!e)return;const t=Gt(e.getAttribute(this.attributeName));return t!==this._defaultValue?t:void 0}}class Ao extends vo{constructor(e,t){super(e,"tableBorderWidth",t)}_getValue(e){if(!e)return;const t=Gt(e.getAttribute(this.attributeName));return t!==this._defaultValue?t:void 0}_getValueToSet(e){if((e=Jt(e,"px"))!==this._defaultValue)return e}}class xo extends vo{constructor(e,t){super(e,"tableWidth",t)}_getValueToSet(e){if((e=Jt(e,"px"))!==this._defaultValue)return e}}class Vo extends vo{constructor(e,t){super(e,"tableHeight",t)}_getValueToSet(e){return(e=Jt(e,"px"))===this._defaultValue?null:e}}class So extends vo{constructor(e,t){super(e,"tableAlignment",t)}}const Ro=/^(left|center|right)$/,Io=/^(left|none|right)$/;class Po extends e.Plugin{static get pluginName(){return"TablePropertiesEditing"}static get requires(){return[ce]}init(){const e=this.editor,t=e.model.schema,o=e.conversion;e.config.define("table.tableProperties.defaultProperties",{});const n=Xt(e.config.get("table.tableProperties.defaultProperties"),{includeAlignmentProperty:!0});e.data.addStyleProcessorRules(Ve.addBorderRules),function(e,t,o){const n={width:"tableBorderWidth",color:"tableBorderColor",style:"tableBorderStyle"};e.extend("table",{allowAttributes:Object.values(n)}),to(t,"table",n,o),no(t,{modelAttribute:n.color,styleName:"border-color"}),no(t,{modelAttribute:n.style,styleName:"border-style"}),no(t,{modelAttribute:n.width,styleName:"border-width"})}(t,o,{color:n.borderColor,style:n.borderStyle,width:n.borderWidth}),e.commands.add("tableBorderColor",new yo(e,n.borderColor)),e.commands.add("tableBorderStyle",new To(e,n.borderStyle)),e.commands.add("tableBorderWidth",new Ao(e,n.borderWidth)),function(e,t,o){e.extend("table",{allowAttributes:["tableAlignment"]}),t.for("downcast").attributeToAttribute({model:{name:"table",key:"tableAlignment"},view:e=>({key:"style",value:{float:"center"===e?"none":e}}),converterPriority:"high"}),t.for("upcast").attributeToAttribute({view:{name:/^(table|figure)$/,styles:{float:Io}},model:{key:"tableAlignment",value:e=>{let t=e.getStyle("float");return"none"===t&&(t="center"),t===o?null:t}}}).attributeToAttribute({view:{attributes:{align:Ro}},model:{name:"table",key:"tableAlignment",value:e=>{const t=e.getAttribute("align");return t===o?null:t}}})}(t,o,n.alignment),e.commands.add("tableAlignment",new So(e,n.alignment)),Eo(t,o,{modelAttribute:"tableWidth",styleName:"width",defaultValue:n.width}),e.commands.add("tableWidth",new xo(e,n.width)),Eo(t,o,{modelAttribute:"tableHeight",styleName:"height",defaultValue:n.height}),e.commands.add("tableHeight",new Vo(e,n.height)),e.data.addStyleProcessorRules(Ve.addBackgroundRules),function(e,t,o){const{modelAttribute:n}=o;e.extend("table",{allowAttributes:[n]}),eo(t,{viewElement:"table",...o}),no(t,o)}(t,o,{modelAttribute:"tableBackgroundColor",styleName:"background-color",defaultValue:n.backgroundColor}),e.commands.add("tableBackgroundColor",new Co(e,n.backgroundColor))}}function Eo(e,t,o){const{modelAttribute:n}=o;e.extend("table",{allowAttributes:[n]}),eo(t,{viewElement:/^(table|figure)$/,...o}),oo(t,{modelElement:"table",...o})}var zo=o(99),Bo={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};re()(zo.Z,Bo);zo.Z.locals;const Lo={left:e.icons.objectLeft,center:e.icons.objectCenter,right:e.icons.objectRight};class Wo extends ue.View{constructor(e,t){super(e),this.set({borderStyle:"",borderWidth:"",borderColor:"",backgroundColor:"",width:"",height:"",alignment:""}),this.options=t;const{borderStyleDropdown:o,borderWidthInput:n,borderColorInput:i,borderRowLabel:l}=this._createBorderFields(),{backgroundRowLabel:r,backgroundInput:a}=this._createBackgroundFields(),{widthInput:c,operatorLabel:d,heightInput:u,dimensionsLabel:h}=this._createDimensionFields(),{alignmentToolbar:b,alignmentLabel:m}=this._createAlignmentFields();this.focusTracker=new s.FocusTracker,this.keystrokes=new s.KeystrokeHandler,this.children=this.createCollection(),this.borderStyleDropdown=o,this.borderWidthInput=n,this.borderColorInput=i,this.backgroundInput=a,this.widthInput=c,this.heightInput=u,this.alignmentToolbar=b;const{saveButtonView:g,cancelButtonView:p}=this._createActionButtons();this.saveButtonView=g,this.cancelButtonView=p,this._focusables=new ue.ViewCollection,this._focusCycler=new ue.FocusCycler({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.children.add(new ue.FormHeaderView(e,{label:this.t("Table properties")})),this.children.add(new it(e,{labelView:l,children:[l,o,i,n],class:"ck-table-form__border-row"})),this.children.add(new it(e,{labelView:r,children:[r,a],class:"ck-table-form__background-row"})),this.children.add(new it(e,{children:[new it(e,{labelView:h,children:[h,c,d,u],class:"ck-table-form__dimensions-row"}),new it(e,{labelView:m,children:[m,b],class:"ck-table-properties-form__alignment-row"})]})),this.children.add(new it(e,{children:[this.saveButtonView,this.cancelButtonView],class:"ck-table-form__action-row"})),this.setTemplate({tag:"form",attributes:{class:["ck","ck-form","ck-table-form","ck-table-properties-form"],tabindex:"-1"},children:this.children})}render(){super.render(),(0,ue.submitHandler)({view:this}),[this.borderStyleDropdown,this.borderColorInput,this.borderWidthInput,this.backgroundInput,this.widthInput,this.heightInput,this.alignmentToolbar,this.saveButtonView,this.cancelButtonView].forEach((e=>{this._focusables.add(e),this.focusTracker.add(e.element)})),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}_createBorderFields(){const e=this.options.defaultTableProperties,t={style:e.borderStyle,width:e.borderWidth,color:e.borderColor},o=et({colorConfig:this.options.borderColors,columns:5,defaultColorValue:t.color}),n=this.locale,i=this.t,l=new ue.LabelView(n);l.text=i("Border");const r=Ze(this.t),s=new ue.LabeledFieldView(n,ue.createLabeledDropdown);s.set({label:i("Style"),class:"ck-table-form__border-style"}),s.fieldView.buttonView.set({isOn:!1,withText:!0,tooltip:i("Style")}),s.fieldView.buttonView.bind("label").to(this,"borderStyle",(e=>r[e||"none"])),s.fieldView.on("execute",(e=>{this.borderStyle=e.source._borderStyleValue})),s.bind("isEmpty").to(this,"borderStyle",(e=>!e)),(0,ue.addListToDropdown)(s.fieldView,Xe(this,t.style));const a=new ue.LabeledFieldView(n,ue.createLabeledInputText);a.set({label:i("Width"),class:"ck-table-form__border-width"}),a.fieldView.bind("value").to(this,"borderWidth"),a.bind("isEnabled").to(this,"borderStyle",No),a.fieldView.on("input",(()=>{this.borderWidth=a.fieldView.element.value}));const c=new ue.LabeledFieldView(n,o);return c.set({label:i("Color"),class:"ck-table-form__border-color"}),c.fieldView.bind("value").to(this,"borderColor"),c.bind("isEnabled").to(this,"borderStyle",No),c.fieldView.on("input",(()=>{this.borderColor=c.fieldView.value})),this.on("change:borderStyle",((e,o,n,i)=>{No(n)||(this.borderColor="",this.borderWidth=""),No(i)||(this.borderColor=t.color,this.borderWidth=t.width)})),{borderRowLabel:l,borderStyleDropdown:s,borderColorInput:c,borderWidthInput:a}}_createBackgroundFields(){const e=this.locale,t=this.t,o=new ue.LabelView(e);o.text=t("Background");const n=et({colorConfig:this.options.backgroundColors,columns:5,defaultColorValue:this.options.defaultTableProperties.backgroundColor}),i=new ue.LabeledFieldView(e,n);return i.set({label:t("Color"),class:"ck-table-properties-form__background"}),i.fieldView.bind("value").to(this,"backgroundColor"),i.fieldView.on("input",(()=>{this.backgroundColor=i.fieldView.value})),{backgroundRowLabel:o,backgroundInput:i}}_createDimensionFields(){const e=this.locale,t=this.t,o=new ue.LabelView(e);o.text=t("Dimensions");const n=new ue.LabeledFieldView(e,ue.createLabeledInputText);n.set({label:t("Width"),class:"ck-table-form__dimensions-row__width"}),n.fieldView.bind("value").to(this,"width"),n.fieldView.on("input",(()=>{this.width=n.fieldView.element.value}));const i=new ue.View(e);i.setTemplate({tag:"span",attributes:{class:["ck-table-form__dimension-operator"]},children:[{text:"×"}]});const l=new ue.LabeledFieldView(e,ue.createLabeledInputText);return l.set({label:t("Height"),class:"ck-table-form__dimensions-row__height"}),l.fieldView.bind("value").to(this,"height"),l.fieldView.on("input",(()=>{this.height=l.fieldView.element.value})),{dimensionsLabel:o,widthInput:n,operatorLabel:i,heightInput:l}}_createAlignmentFields(){const e=this.locale,t=this.t,o=new ue.LabelView(e);o.text=t("Alignment");const n=new ue.ToolbarView(e);return n.set({isCompact:!0,ariaLabel:t("Table alignment toolbar")}),Ye({view:this,icons:Lo,toolbar:n,labels:this._alignmentLabels,propertyName:"alignment",defaultValue:this.options.defaultTableProperties.alignment}),{alignmentLabel:o,alignmentToolbar:n}}_createActionButtons(){const t=this.locale,o=this.t,n=new ue.ButtonView(t),i=new ue.ButtonView(t),l=[this.borderWidthInput,this.borderColorInput,this.backgroundInput,this.widthInput,this.heightInput];return n.set({label:o("Save"),icon:e.icons.check,class:"ck-button-save",type:"submit",withText:!0}),n.bind("isEnabled").toMany(l,"errorText",((...e)=>e.every((e=>!e)))),i.set({label:o("Cancel"),icon:e.icons.cancel,class:"ck-button-cancel",withText:!0}),i.delegate("execute").to(this,"cancel"),{saveButtonView:n,cancelButtonView:i}}get _alignmentLabels(){const e=this.locale,t=this.t,o=t("Align table to the left"),n=t("Center table"),i=t("Align table to the right");return"rtl"===e.uiLanguageDirection?{right:i,center:n,left:o}:{left:o,center:n,right:i}}}function No(e){return"none"!==e}const Fo={borderStyle:"tableBorderStyle",borderColor:"tableBorderColor",borderWidth:"tableBorderWidth",backgroundColor:"tableBackgroundColor",width:"tableWidth",height:"tableHeight",alignment:"tableAlignment"};class Do extends e.Plugin{static get requires(){return[ue.ContextualBalloon]}static get pluginName(){return"TablePropertiesUI"}constructor(e){super(e),e.config.define("table.tableProperties",{borderColors:Qe,backgroundColors:Qe})}init(){const e=this.editor,t=e.t;this._defaultTableProperties=Xt(e.config.get("table.tableProperties.defaultProperties"),{includeAlignmentProperty:!0}),this._balloon=e.plugins.get(ue.ContextualBalloon),this.view=this._createPropertiesView(),this._undoStepBatch=null,e.ui.componentFactory.add("tableProperties",(o=>{const n=new ue.ButtonView(o);n.set({label:t("Table properties"),icon:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M8 2v5h4V2h1v5h5v1h-5v4h.021l-.172.351-1.916.28-.151.027c-.287.063-.54.182-.755.341L8 13v5H7v-5H2v-1h5V8H2V7h5V2h1zm4 6H8v4h4V8z" opacity=".6"/><path d="m15.5 11.5 1.323 2.68 2.957.43-2.14 2.085.505 2.946L15.5 18.25l-2.645 1.39.505-2.945-2.14-2.086 2.957-.43L15.5 11.5zM17 1a2 2 0 0 1 2 2v9.475l-.85-.124-.857-1.736a2.048 2.048 0 0 0-.292-.44L17 3H3v14h7.808l.402.392L10.935 19H3a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h14z"/></svg>',tooltip:!0}),this.listenTo(n,"execute",(()=>this._showView()));const i=Object.values(Fo).map((t=>e.commands.get(t)));return n.bind("isEnabled").toMany(i,"isEnabled",((...e)=>e.some((e=>e)))),n}))}destroy(){super.destroy(),this.view.destroy()}_createPropertiesView(){const e=this.editor,t=e.config.get("table.tableProperties"),o=(0,ue.normalizeColorOptions)(t.borderColors),n=(0,ue.getLocalizedColorOptions)(e.locale,o),i=(0,ue.normalizeColorOptions)(t.backgroundColors),l=(0,ue.getLocalizedColorOptions)(e.locale,i),r=new Wo(e.locale,{borderColors:n,backgroundColors:l,defaultTableProperties:this._defaultTableProperties}),s=e.t;r.render(),this.listenTo(r,"submit",(()=>{this._hideView()})),this.listenTo(r,"cancel",(()=>{this._undoStepBatch.operations.length&&e.execute("undo",this._undoStepBatch),this._hideView()})),r.keystrokes.set("Esc",((e,t)=>{this._hideView(),t()})),(0,ue.clickOutsideHandler)({emitter:r,activator:()=>this._isViewInBalloon,contextElements:[this._balloon.view.element],callback:()=>this._hideView()});const a=$e(s),c=Ke(s);return r.on("change:borderStyle",this._getPropertyChangeCallback("tableBorderStyle",this._defaultTableProperties.borderStyle)),r.on("change:borderColor",this._getValidatedPropertyChangeCallback({viewField:r.borderColorInput,commandName:"tableBorderColor",errorText:a,validator:qe,defaultValue:this._defaultTableProperties.borderColor})),r.on("change:borderWidth",this._getValidatedPropertyChangeCallback({viewField:r.borderWidthInput,commandName:"tableBorderWidth",errorText:c,validator:Je,defaultValue:this._defaultTableProperties.borderWidth})),r.on("change:backgroundColor",this._getValidatedPropertyChangeCallback({viewField:r.backgroundInput,commandName:"tableBackgroundColor",errorText:a,validator:qe,defaultValue:this._defaultTableProperties.backgroundColor})),r.on("change:width",this._getValidatedPropertyChangeCallback({viewField:r.widthInput,commandName:"tableWidth",errorText:c,validator:Ge,defaultValue:this._defaultTableProperties.width})),r.on("change:height",this._getValidatedPropertyChangeCallback({viewField:r.heightInput,commandName:"tableHeight",errorText:c,validator:Ge,defaultValue:this._defaultTableProperties.height})),r.on("change:alignment",this._getPropertyChangeCallback("tableAlignment",this._defaultTableProperties.alignment)),r}_fillViewFormFromCommandValues(){const e=this.editor.commands,t=e.get("tableBorderStyle");Object.entries(Fo).map((([t,o])=>{const n=this._defaultTableProperties[t]||"";return[t,e.get(o).value||n]})).forEach((([e,o])=>{("borderColor"!==e&&"borderWidth"!==e||"none"!==t.value)&&this.view.set(e,o)}))}_showView(){const e=this.editor;this.listenTo(e.ui,"update",(()=>{this._updateView()})),this._fillViewFormFromCommandValues(),this._balloon.add({view:this.view,position:$t(e)}),this._undoStepBatch=e.model.createBatch(),this.view.focus()}_hideView(){const e=this.editor;this.stopListening(e.ui,"update"),this.view.saveButtonView.focus(),this._balloon.remove(this.view),this.editor.editing.view.focus()}_updateView(){const e=this.editor;Ne(e.editing.view.document.selection)?this._isViewVisible&&Zt(e,"table"):this._hideView()}get _isViewVisible(){return this._balloon.visibleView===this.view}get _isViewInBalloon(){return this._balloon.hasView(this.view)}_getPropertyChangeCallback(e,t){return(o,n,i,l)=>{(l||t!==i)&&this.editor.execute(e,{value:i,batch:this._undoStepBatch})}}_getValidatedPropertyChangeCallback(e){const{commandName:t,viewField:o,validator:n,errorText:i,defaultValue:l}=e,r=Ot((()=>{o.errorText=i}),500);return(e,i,s,a)=>{r.cancel(),(a||l!==s)&&(n(s)?(this.editor.execute(t,{value:s,batch:this._undoStepBatch}),o.errorText=null):r())}}}class Ho extends e.Plugin{static get pluginName(){return"TableProperties"}static get requires(){return[Po,Do]}}function Mo(e){e.document.registerPostFixer((t=>function(e,t){const o=t.document.differ.getChanges();let n=!1;for(const t of o){if("insert"!=t.type)continue;if(t.position.parent.is("element","table")||"table"==t.name){const o="table"==t.name?t.position.nodeAfter:t.position.parent,i=Array.from(o.getChildren()).filter((e=>e.is("element","caption"))),l=i.shift();if(!l)continue;for(const t of i)e.move(e.createRangeIn(t),l,"end"),e.remove(t);l.nextSibling&&(e.move(e.createRangeOn(l),o,"end"),n=!0),n=!!i.length||n}}return n}(t,e)))}function Oo(e){return!!e&&e.is("element","table")}function jo(e){for(const t of e.getChildren())if(t.is("element","caption"))return t;return null}function Uo(e){const t=e.parent;return"figcaption"==e.name&&t&&"figure"==t.name&&t.hasClass("table")||"caption"==e.name&&t&&"table"==t.name?{name:!0}:null}function Zo(e){const t=e.getSelectedElement();return t&&t.is("element","table")?t:e.getFirstPosition().findAncestor("table")}class $o extends e.Command{refresh(){const e=Zo(this.editor.model.document.selection);this.isEnabled=!!e,this.isEnabled?this.value=!!jo(e):this.value=!1}execute(e={}){const{focusCaptionOnShow:t}=e;this.editor.model.change((e=>{this.value?this._hideTableCaption(e):this._showTableCaption(e,t)}))}_showTableCaption(e,t){const o=Zo(this.editor.model.document.selection),n=this.editor.plugins.get("TableCaptionEditing")._getSavedCaption(o)||e.createElement("caption");e.append(n,o),t&&e.setSelection(n,"in")}_hideTableCaption(e){const t=Zo(this.editor.model.document.selection),o=this.editor.plugins.get("TableCaptionEditing"),n=jo(t);o._saveCaption(t,n),e.setSelection(e.createRangeIn(t.getChild(0).getChild(0))),e.remove(n)}}class Ko extends e.Plugin{static get pluginName(){return"TableCaptionEditing"}constructor(e){super(e),this._savedCaptionsMap=new WeakMap}init(){const e=this.editor,o=e.model.schema,n=e.editing.view,i=e.t;o.isRegistered("caption")?o.extend("caption",{allowIn:"table"}):o.register("caption",{allowIn:"table",allowContentOf:"$block",isLimit:!0}),e.commands.add("toggleTableCaption",new $o(this.editor)),e.conversion.for("upcast").elementToElement({view:Uo,model:"caption"}),e.conversion.for("dataDowncast").elementToElement({model:"caption",view:(e,{writer:t})=>Oo(e.parent)?t.createContainerElement("figcaption"):null}),e.conversion.for("editingDowncast").elementToElement({model:"caption",view:(e,{writer:o})=>{if(!Oo(e.parent))return null;const l=o.createEditableElement("figcaption");return o.setCustomProperty("tableCaption",!0,l),(0,Ve.enablePlaceholder)({view:n,element:l,text:i("Enter table caption"),keepOnFocus:!0}),(0,t.toWidgetEditable)(l,o)}}),Mo(e.model)}_getSavedCaption(e){const t=this._savedCaptionsMap.get(e);return t?Ve.Element.fromJSON(t):null}_saveCaption(e,t){this._savedCaptionsMap.set(e,t.toJSON())}}class qo extends e.Plugin{static get pluginName(){return"TableCaptionUI"}init(){const t=this.editor,o=t.editing.view,n=t.t;t.ui.componentFactory.add("toggleTableCaption",(i=>{const l=t.commands.get("toggleTableCaption"),r=new ue.ButtonView(i);return r.set({icon:e.icons.caption,tooltip:!0,isToggleable:!0}),r.bind("isOn","isEnabled").to(l,"value","isEnabled"),r.bind("label").to(l,"value",(e=>n(e?"Toggle caption off":"Toggle caption on"))),this.listenTo(r,"execute",(()=>{if(t.execute("toggleTableCaption",{focusCaptionOnShow:!0}),l.value){const e=function(e){const t=Zo(e);return t?jo(t):null}(t.model.document.selection),n=t.editing.mapper.toViewElement(e);if(!n)return;o.scrollToTheSelection(),o.change((e=>{e.addClass("table__caption_highlighted",n)}))}t.editing.view.focus()})),r}))}}var Go=o(665),Jo={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};re()(Go.Z,Jo);Go.Z.locals;class Xo extends e.Plugin{static get pluginName(){return"TableCaption"}static get requires(){return[Ko,qo]}}const Yo=function(e,t,o){var n=!0,i=!0;if("function"!=typeof e)throw new TypeError("Expected a function");return mt(o)&&(n="leading"in o?!!o.leading:n,i="trailing"in o?!!o.trailing:i),Ot(e,t,{leading:n,maxWait:t,trailing:i})};class Qo extends vo{constructor(e,t){super(e,"tableWidth",t)}refresh(){this.isEnabled=!0}execute(e={}){const t=this.editor.model,o=e.table||t.document.selection.getSelectedElement(),{tableWidth:n,columnWidths:i}=e;t.change((e=>{n?(e.setAttribute(this.attributeName,n,o),e.setAttribute("columnWidths",i,o)):e.removeAttribute(this.attributeName,o)}))}}class en extends vo{constructor(e,t){super(e,"columnWidths",t)}refresh(){this.isEnabled=!0}execute(e={}){const t=this.editor.model,o=e.table||t.document.selection.getSelectedElement(),{columnWidths:n}=e;t.change((e=>{n?e.setAttribute(this.attributeName,n,o):e.removeAttribute(this.attributeName,o)}))}}function tn(e,t){return 4e3/on(e,t)}function on(e,t){const o=nn(e,"tbody",t)||nn(e,"thead",t);return ln(t.editing.view.domConverter.mapViewToDom(o))}function nn(e,t,o){return[...[...o.editing.mapper.toViewElement(e).getChildren()].find((e=>e.is("element","table"))).getChildren()].find((e=>e.is("element",t)))}function ln(e){const t=s.global.window.getComputedStyle(e);return"border-box"===t.boxSizing?parseFloat(t.width)-parseFloat(t.paddingLeft)-parseFloat(t.paddingRight)-parseFloat(t.borderLeftWidth)-parseFloat(t.borderRightWidth):parseFloat(t.width)}function rn(e){const t=Math.pow(10,2),o=parseFloat(e);return Math.round(o*t)/t}function sn(e){return e.map((e=>parseFloat(e))).filter((e=>!Number.isNaN(e))).reduce(((e,t)=>e+t),0)}function an(e){e=function(e){const t=e.filter((e=>"auto"===e)).length;if(0===t)return e.map((e=>rn(e)));const o=sn(e),n=Math.max((100-o)/t,5);return e.map((e=>"auto"===e?n:e)).map((e=>rn(e)))}(e);const t=sn(e);return 100===t?e:e.map((e=>rn(100*e/t))).map(((e,t,o)=>{if(!(t===o.length-1))return e;return rn(e+100-sn(o))}))}function cn(e,t){let o=[...t.getChildren()].find((e=>e.hasClass("ck-table-column-resizer")));o||(o=e.createUIElement("div",{class:"ck-table-column-resizer"}),e.insert(e.createPositionAt(t,"end"),o))}function dn(e){const t=s.global.window.getComputedStyle(e);return"border-box"===t.boxSizing?parseInt(t.width):parseFloat(t.width)+parseFloat(t.paddingLeft)+parseFloat(t.paddingRight)+parseFloat(t.borderWidth)}function un(){return e=>e.on("attribute:columnWidths:table",((e,t,o)=>{const n=o.writer,i=t.item,l=[...o.mapper.toViewElement(i).getChildren()].find((e=>e.is("element","table")));t.attributeNewValue?(!function(e,t,o){const n=o.split(",");let i=[...t.getChildren()].find((e=>e.is("element","colgroup")));if(i)for(const t of[...i.getChildren()])e.remove(t);else i=e.createContainerElement("colgroup");for(const t of Array(n.length).keys()){const o=e.createEmptyElement("col");e.setStyle("width",n[t],o),e.insert(e.createPositionAt(i,"end"),o)}e.insert(e.createPositionAt(t,"start"),i)}(n,l,t.attributeNewValue),n.addClass("ck-table-resized",l)):(!function(e,t){const o=[...t.getChildren()].find((e=>e.is("element","colgroup")));e.remove(o)}(n,l),n.removeClass("ck-table-resized",l))}))}class hn extends e.Plugin{static get requires(){return[ce,F]}static get pluginName(){return"TableColumnResizeEditing"}constructor(e){super(e),this._isResizingActive=!1,this.set("_isResizingAllowed",!0),this._resizingData=null,this._domEmitter=Object.create(s.DomEmitterMixin),this._tableUtilsPlugin=e.plugins.get("TableUtils"),this.on("change:_isResizingAllowed",((t,o,n)=>{e.editing.view.change((t=>{t[n?"removeClass":"addClass"]("ck-column-resize_disabled",e.editing.view.document.getRoot())}))}))}init(){this._extendSchema(),this._registerPostFixer(),this._registerConverters(),this._registerResizingListeners(),this._registerColgroupFixer(),this._registerResizerInserter();const e=this.editor,t=e.plugins.get("TableColumnResize");e.commands.add("resizeTableWidth",new Qo(e)),e.commands.add("resizeColumnWidths",new en(e));const o=e.commands.get("resizeTableWidth"),n=e.commands.get("resizeColumnWidths");this.bind("_isResizingAllowed").to(e,"isReadOnly",t,"isEnabled",o,"isEnabled",n,"isEnabled",((e,t,o,n)=>!e&&t&&o&&n))}destroy(){this._domEmitter.stopListening(),super.destroy()}_extendSchema(){this.editor.model.schema.extend("table",{allowAttributes:["tableWidth","columnWidths"]})}_registerPostFixer(){const e=this.editor.model;function t(e,t,o){const n=o._tableUtilsPlugin.getColumns(t);if(0===n-e.length)return;const i=function(e,t){const o=new Set;for(const n of e.getChanges())if("insert"==n.type&&n.position.nodeAfter&&"tableCell"==n.position.nodeAfter.name&&n.position.nodeAfter.getAncestors().includes(t))o.add(n.position.nodeAfter);else if("remove"==n.type){const e=n.position.nodeBefore||n.position.nodeAfter;"tableCell"==e.name&&e.getAncestors().includes(t)&&o.add(e)}return o}(o.editor.model.document.differ,t);for(const r of i){const i=n-e.length;if(0===i)continue;const s=i>0,a=o._tableUtilsPlugin.getCellLocation(r).column;if(s){const n=tn(t,o.editor),r=(l=n,Array(i).fill(l));e.splice(a,0,...r)}else{const t=e.splice(a,Math.abs(i));e[a]+=sn(t)}}var l}e.document.registerPostFixer((o=>{let n=!1;for(const i of function(e){const t=new Set;for(const o of e.document.differ.getChanges()){let n=null;switch(o.type){case"insert":n=["table","tableRow","tableCell"].includes(o.name)?o.position:null;break;case"remove":n=["tableRow","tableCell"].includes(o.name)?o.position:null;break;case"attribute":o.range.start.nodeAfter&&(n=["table","tableRow","tableCell"].includes(o.range.start.nodeAfter.name)?o.range.start:null)}if(!n)continue;const i=n.nodeAfter&&"table"===n.nodeAfter.name?n.nodeAfter:n.findAncestor("table");for(const o of e.createRangeOn(i).getItems())o.is("element")&&"table"===o.name&&o.hasAttribute("columnWidths")&&t.add(o)}return t}(e)){const e=an(i.getAttribute("columnWidths").split(","));t(e,i,this);const l=e.map((e=>`${e}%`)).join(",");i.getAttribute("columnWidths")!==l&&(o.setAttribute("columnWidths",l,i),n=!0)}return n}))}_registerConverters(){const e=this.editor.conversion;var t;e.for("upcast").attributeToAttribute({view:{name:"figure",key:"style",value:{width:/[\s\S]+/}},model:{name:"table",key:"tableWidth",value:e=>e.getStyle("width")}}),e.for("upcast").add((t=this._tableUtilsPlugin,e=>e.on("element:colgroup",((e,o,n)=>{const i=o.viewItem;if(!n.consumable.test(i,{name:!0}))return;n.consumable.consume(i,{name:!0});const l=o.modelCursor.findAncestor("table"),r=t.getColumns(l);let s=[...Array(r).keys()].map((e=>{const t=i.getChild(e);if(!t||!t.is("element","col"))return"auto";const o=t.getStyle("width");return o&&o.endsWith("%")?o:"auto"}));s.includes("auto")&&(s=an(s).map((e=>e+"%"))),n.writer.setAttribute("columnWidths",s.join(","),l)})))),e.for("downcast").attributeToAttribute({model:{name:"table",key:"tableWidth"},view:e=>({name:"figure",key:"style",value:{width:e}})}),e.for("downcast").add(un())}_registerResizingListeners(){const e=this.editor.editing.view;e.addObserver(Se),e.document.on("mousedown",this._onMouseDownHandler.bind(this),{priority:"high"}),this._domEmitter.listenTo(s.global.window.document,"mousemove",Yo(this._onMouseMoveHandler.bind(this),50)),this._domEmitter.listenTo(s.global.window.document,"mouseup",this._onMouseUpHandler.bind(this))}_onMouseDownHandler(e,t){const o=t.target;if(!o.hasClass("ck-table-column-resizer"))return;if(!this._isResizingAllowed)return;t.preventDefault(),e.stop();const n=this.editor,i=function(e,t,o){const n=Array(t.getColumns(e)),i=new u(e);for(const e of i){const t=o.editing.mapper.toViewElement(e.cell),i=dn(o.editing.view.domConverter.mapViewToDom(t));(!n[e.column]||i<n[e.column])&&(n[e.column]=rn(i))}return n}(n.editing.mapper.toModelElement(o.findAncestor("figure")),this._tableUtilsPlugin,n),l=o.findAncestor("table"),r=n.editing.view;[...l.getChildren()].find((e=>e.is("element","colgroup")))||r.change((e=>{!function(e,t,o){const n=e.createContainerElement("colgroup");for(let o=0;o<t.length;o++){const i=e.createEmptyElement("col"),l=`${rn(t[o]/sn(t)*100)}%`;e.setStyle("width",l,i),e.insert(e.createPositionAt(n,"end"),i)}e.insert(e.createPositionAt(o,"start"),n)}(e,i,l)})),this._isResizingActive=!0,this._resizingData=this._getResizingData(t,i),r.change((e=>function(e,t,o){const n=o.widths.viewFigureWidth/o.widths.viewFigureParentWidth;e.addClass("ck-table-resized",t),e.addClass("ck-table-column-resizer__active",o.elements.viewResizer),e.setStyle("width",`${rn(100*n)}%`,t.findAncestor("figure"))}(e,l,this._resizingData)))}_onMouseMoveHandler(e,t){if(!this._isResizingActive)return;if(!this._isResizingAllowed)return void this._onMouseUpHandler();const{columnPosition:o,flags:{isRightEdge:n,isTableCentered:i,isLtrContent:l},elements:{viewFigure:r,viewLeftColumn:s,viewRightColumn:a},widths:{viewFigureParentWidth:c,tableWidth:d,leftColumnWidth:u,rightColumnWidth:h}}=this._resizingData,b=40-u,m=n?c-d:h-40,g=(l?1:-1)*(n&&i?2:1),p=(f=(t.clientX-o)*g,w=Math.min(b,0),k=Math.max(m,0),rn(f<=w?w:f>=k?k:f));var f,w,k;0!==p&&this.editor.editing.view.change((e=>{const t=rn(100*(u+p)/d);if(e.setStyle("width",`${t}%`,s),n){const t=rn(100*(d+p)/c);e.setStyle("width",`${t}%`,r)}else{const t=rn(100*(h-p)/d);e.setStyle("width",`${t}%`,a)}}))}_onMouseUpHandler(){if(!this._isResizingActive)return;const{viewResizer:e,modelTable:t,viewFigure:o,viewColgroup:n}=this._resizingData.elements,i=this.editor,l=i.editing.view,r=t.getAttribute("columnWidths"),s=[...n.getChildren()].map((e=>e.getStyle("width"))).join(","),a=r!==s,c=t.getAttribute("tableWidth"),d=o.getStyle("width"),u=c!==d;(a||u)&&(this._isResizingAllowed?u?i.execute("resizeTableWidth",{table:t,tableWidth:`${rn(d)}%`,columnWidths:s}):i.execute("resizeColumnWidths",{columnWidths:s,table:t}):l.change((e=>{if(r){const t=r.split(",");for(const o of n.getChildren())e.setStyle("width",t.shift(),o)}else e.remove(n);u&&(c?e.setStyle("width",c,o):e.removeStyle("width",o)),r||c||e.removeClass("ck-table-resized",[...o.getChildren()].find((e=>"table"===e.name)))}))),l.change((t=>{t.removeClass("ck-table-column-resizer__active",e)})),this._isResizingActive=!1,this._resizingData=null}_getResizingData(e,t){const o=this.editor,n=e.domEvent.clientX,i=e.target,l=i.findAncestor("td")||i.findAncestor("th"),r=o.editing.mapper.toModelElement(l),s=r.findAncestor("table"),a=function(e,t){const o=t.getCellLocation(e).column;return{leftEdge:o,rightEdge:o+(e.getAttribute("colspan")||1)-1}}(r,this._tableUtilsPlugin).rightEdge,c=a===this._tableUtilsPlugin.getColumns(s)-1,d=!s.hasAttribute("tableAlignment"),u="rtl"!==o.locale.contentLanguageDirection,h=l.findAncestor("table"),b=h.findAncestor("figure"),m=[...h.getChildren()].find((e=>e.is("element","colgroup"))),g=m.getChild(a),p=c?void 0:m.getChild(a+1);return{columnPosition:n,flags:{isRightEdge:c,isTableCentered:d,isLtrContent:u},elements:{viewResizer:i,modelTable:s,viewFigure:b,viewColgroup:m,viewLeftColumn:g,viewRightColumn:p},widths:{viewFigureParentWidth:ln(o.editing.view.domConverter.mapViewToDom(b.parent)),viewFigureWidth:ln(o.editing.view.domConverter.mapViewToDom(b)),tableWidth:on(s,o),leftColumnWidth:t[a],rightColumnWidth:c?void 0:t[a+1]}}}_registerColgroupFixer(){const e=this.editor;this.listenTo(e.editing.view.document,"layoutChanged",(()=>{const t=e.editing.view.document.selection.getFirstPosition().getAncestors().reverse().find((e=>"table"===e.name)),o=t&&[...t.getChildren()].find((e=>e.is("element","colgroup"))),n=e.model.document.selection.getFirstPosition().findAncestor("table");n&&n.hasAttribute("columnWidths")&&t&&!o&&e.editing.reconvertItem(n)}),{priority:"low"})}_registerResizerInserter(){const e=this.editor.editing.view;e.on("render",(()=>{for(const t of e.createRangeIn(e.document.getRoot()))["td","th"].includes(t.item.name)&&e.change((e=>{cn(e,t.item)}))}),{priority:"lowest"})}}var bn=o(975),mn={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};re()(bn.Z,mn);bn.Z.locals;class gn extends e.Plugin{static get requires(){return[hn]}static get pluginName(){return"TableColumnResize"}}})(),(window.CKEditor5=window.CKEditor5||{}).table=n})();
\ No newline at end of file
+ */(()=>{var e={252:(e,t,o)=>{"use strict";o.d(t,{Z:()=>l});var n=o(609),i=o.n(n)()((function(e){return e[1]}));i.push([e.id,".ck.ck-input-color{display:flex;flex-direction:row-reverse;width:100%}.ck.ck-input-color>input.ck.ck-input-text{flex-grow:1;min-width:auto}.ck.ck-input-color>div.ck.ck-dropdown{min-width:auto}.ck.ck-input-color>div.ck.ck-dropdown>.ck-input-color__button .ck-dropdown__arrow{display:none}.ck.ck-input-color .ck.ck-input-color__button{display:flex}.ck.ck-input-color .ck.ck-input-color__button .ck.ck-input-color__button__preview{overflow:hidden;position:relative}.ck.ck-input-color .ck.ck-input-color__button .ck.ck-input-color__button__preview>.ck.ck-input-color__button__preview__no-color-indicator{display:block;position:absolute}[dir=ltr] .ck.ck-input-color>.ck.ck-input-text{border-bottom-right-radius:0;border-top-right-radius:0}[dir=rtl] .ck.ck-input-color>.ck.ck-input-text{border-bottom-left-radius:0;border-top-left-radius:0}.ck.ck-input-color>.ck.ck-input-text:focus{z-index:0}.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button{padding:0}[dir=ltr] .ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button{border-bottom-left-radius:0;border-top-left-radius:0}[dir=ltr] .ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button:not(:focus){border-left:1px solid transparent}[dir=rtl] .ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button{border-bottom-right-radius:0;border-top-right-radius:0}[dir=rtl] .ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button:not(:focus){border-right:1px solid transparent}.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button.ck-disabled{background:var(--ck-color-input-disabled-background)}.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button>.ck.ck-input-color__button__preview{border-radius:0}.ck-rounded-corners .ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button>.ck.ck-input-color__button__preview,.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button>.ck.ck-input-color__button__preview.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button>.ck.ck-input-color__button__preview{border:1px solid var(--ck-color-input-border);height:20px;width:20px}.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button>.ck.ck-input-color__button__preview>.ck.ck-input-color__button__preview__no-color-indicator{background:red;border-radius:2px;height:150%;left:50%;top:-30%;transform:rotate(45deg);transform-origin:50%;width:8%}.ck.ck-input-color .ck.ck-input-color__remove-color{border-bottom-left-radius:0;border-bottom-right-radius:0;padding:calc(var(--ck-spacing-standard)/2) var(--ck-spacing-standard);width:100%}.ck.ck-input-color .ck.ck-input-color__remove-color:not(:focus){border-bottom:1px solid var(--ck-color-input-border)}[dir=ltr] .ck.ck-input-color .ck.ck-input-color__remove-color{border-top-right-radius:0}[dir=rtl] .ck.ck-input-color .ck.ck-input-color__remove-color{border-top-left-radius:0}.ck.ck-input-color .ck.ck-input-color__remove-color .ck.ck-icon{margin-right:var(--ck-spacing-standard)}[dir=rtl] .ck.ck-input-color .ck.ck-input-color__remove-color .ck.ck-icon{margin-left:var(--ck-spacing-standard);margin-right:0}",""]);const l=i},934:(e,t,o)=>{"use strict";o.d(t,{Z:()=>l});var n=o(609),i=o.n(n)()((function(e){return e[1]}));i.push([e.id,".ck.ck-form{padding:0 0 var(--ck-spacing-large)}.ck.ck-form:focus{outline:none}.ck.ck-form .ck.ck-input-text{min-width:100%;width:0}.ck.ck-form .ck.ck-dropdown{min-width:100%}.ck.ck-form .ck.ck-dropdown .ck-dropdown__button:not(:focus){border:1px solid var(--ck-color-base-border)}.ck.ck-form .ck.ck-dropdown .ck-dropdown__button .ck-button__label{width:100%}",""]);const l=i},333:(e,t,o)=>{"use strict";o.d(t,{Z:()=>l});var n=o(609),i=o.n(n)()((function(e){return e[1]}));i.push([e.id,".ck.ck-form__row{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-between}.ck.ck-form__row>:not(.ck-label){flex-grow:1}.ck.ck-form__row.ck-table-form__action-row .ck-button-cancel,.ck.ck-form__row.ck-table-form__action-row .ck-button-save{justify-content:center}.ck.ck-form__row{padding:var(--ck-spacing-standard) var(--ck-spacing-large) 0}[dir=ltr] .ck.ck-form__row>:not(.ck-label)+*{margin-left:var(--ck-spacing-large)}[dir=rtl] .ck.ck-form__row>:not(.ck-label)+*{margin-right:var(--ck-spacing-large)}.ck.ck-form__row>.ck-label{min-width:100%;width:100%}.ck.ck-form__row.ck-table-form__action-row{margin-top:var(--ck-spacing-large)}.ck.ck-form__row.ck-table-form__action-row .ck-button .ck-button__label{color:var(--ck-color-text)}",""]);const l=i},272:(e,t,o)=>{"use strict";o.d(t,{Z:()=>l});var n=o(609),i=o.n(n)()((function(e){return e[1]}));i.push([e.id,".ck .ck-insert-table-dropdown__grid{display:flex;flex-direction:row;flex-wrap:wrap}:root{--ck-insert-table-dropdown-padding:10px;--ck-insert-table-dropdown-box-height:11px;--ck-insert-table-dropdown-box-width:12px;--ck-insert-table-dropdown-box-margin:1px}.ck .ck-insert-table-dropdown__grid{padding:var(--ck-insert-table-dropdown-padding) var(--ck-insert-table-dropdown-padding) 0;width:calc(var(--ck-insert-table-dropdown-box-width)*10 + var(--ck-insert-table-dropdown-box-margin)*20 + var(--ck-insert-table-dropdown-padding)*2)}.ck .ck-insert-table-dropdown__label{text-align:center}.ck .ck-insert-table-dropdown-grid-box{border:1px solid var(--ck-color-base-border);border-radius:1px;margin:var(--ck-insert-table-dropdown-box-margin);min-height:var(--ck-insert-table-dropdown-box-height);min-width:var(--ck-insert-table-dropdown-box-width);outline:none;transition:none}.ck .ck-insert-table-dropdown-grid-box:focus{box-shadow:none}.ck .ck-insert-table-dropdown-grid-box.ck-on{background:var(--ck-color-focus-outer-shadow);border-color:var(--ck-color-focus-border)}",""]);const l=i},660:(e,t,o)=>{"use strict";o.d(t,{Z:()=>l});var n=o(609),i=o.n(n)()((function(e){return e[1]}));i.push([e.id,".ck-content .table{display:table;margin:.9em auto}.ck-content .table table{border:1px double #b3b3b3;border-collapse:collapse;border-spacing:0;height:100%;width:100%}.ck-content .table table td,.ck-content .table table th{border:1px solid #bfbfbf;min-width:2em;padding:.4em}.ck-content .table table th{background:rgba(0,0,0,.05);font-weight:700}.ck-content[dir=rtl] .table th{text-align:right}.ck-content[dir=ltr] .table th{text-align:left}.ck-editor__editable .ck-table-bogus-paragraph{display:inline-block;width:100%}",""]);const l=i},665:(e,t,o)=>{"use strict";o.d(t,{Z:()=>l});var n=o(609),i=o.n(n)()((function(e){return e[1]}));i.push([e.id,":root{--ck-color-table-caption-background:#f7f7f7;--ck-color-table-caption-text:#333;--ck-color-table-caption-highlighted-background:#fd0}.ck-content .table>figcaption{background-color:var(--ck-color-table-caption-background);caption-side:top;color:var(--ck-color-table-caption-text);display:table-caption;font-size:.75em;outline-offset:-1px;padding:.6em;text-align:center;word-break:break-word}.ck.ck-editor__editable .table>figcaption.table__caption_highlighted{animation:ck-table-caption-highlight .6s ease-out}.ck.ck-editor__editable .table>figcaption.ck-placeholder:before{overflow:hidden;padding-left:inherit;padding-right:inherit;text-overflow:ellipsis;white-space:nowrap}@keyframes ck-table-caption-highlight{0%{background-color:var(--ck-color-table-caption-highlighted-background)}to{background-color:var(--ck-color-table-caption-background)}}",""]);const l=i},773:(e,t,o)=>{"use strict";o.d(t,{Z:()=>l});var n=o(609),i=o.n(n)()((function(e){return e[1]}));i.push([e.id,".ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__alignment-row{flex-wrap:wrap}.ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__alignment-row .ck.ck-toolbar:first-of-type{flex-grow:0.57}.ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__alignment-row .ck.ck-toolbar:last-of-type{flex-grow:0.43}.ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__alignment-row .ck.ck-toolbar .ck-button{flex-grow:1}.ck.ck-table-cell-properties-form{width:320px}.ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__padding-row{align-self:flex-end;padding:0;width:25%}.ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__alignment-row .ck.ck-toolbar{background:none;margin-top:var(--ck-spacing-standard)}",""]);const l=i},975:(e,t,o)=>{"use strict";o.d(t,{Z:()=>l});var n=o(609),i=o.n(n)()((function(e){return e[1]}));i.push([e.id,":root{--ck-color-table-column-resizer-hover:var(--ck-color-base-active);--ck-table-column-resizer-width:7px;--ck-table-column-resizer-position-offset:calc(var(--ck-table-column-resizer-width)*-0.5 - 0.5px)}.ck-content .table .ck-table-resized{table-layout:fixed}.ck-content .table table{overflow:hidden}.ck-content .table td,.ck-content .table th{position:relative}.ck.ck-editor__editable .table .ck-table-column-resizer{bottom:-999999px;cursor:col-resize;position:absolute;right:var(--ck-table-column-resizer-position-offset);top:-999999px;user-select:none;width:var(--ck-table-column-resizer-width);z-index:var(--ck-z-default)}.ck.ck-editor__editable .table[draggable] .ck-table-column-resizer,.ck.ck-editor__editable.ck-column-resize_disabled .table .ck-table-column-resizer{display:none}.ck.ck-editor__editable .table .ck-table-column-resizer:hover,.ck.ck-editor__editable .table .ck-table-column-resizer__active{background-color:var(--ck-color-table-column-resizer-hover);opacity:.25}.ck.ck-editor__editable[dir=rtl] .table .ck-table-column-resizer{left:var(--ck-table-column-resizer-position-offset);right:unset}",""]);const l=i},482:(e,t,o)=>{"use strict";o.d(t,{Z:()=>l});var n=o(609),i=o.n(n)()((function(e){return e[1]}));i.push([e.id,":root{--ck-color-table-focused-cell-background:rgba(158,201,250,.3)}.ck-widget.table td.ck-editor__nested-editable.ck-editor__nested-editable_focused,.ck-widget.table td.ck-editor__nested-editable:focus,.ck-widget.table th.ck-editor__nested-editable.ck-editor__nested-editable_focused,.ck-widget.table th.ck-editor__nested-editable:focus{background:var(--ck-color-table-focused-cell-background);border-style:none;outline:1px solid var(--ck-color-focus-border);outline-offset:-1px}",""]);const l=i},686:(e,t,o)=>{"use strict";o.d(t,{Z:()=>l});var n=o(609),i=o.n(n)()((function(e){return e[1]}));i.push([e.id,'.ck.ck-table-form .ck-form__row.ck-table-form__background-row,.ck.ck-table-form .ck-form__row.ck-table-form__border-row{flex-wrap:wrap}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row{align-items:center;flex-wrap:wrap}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-labeled-field-view{align-items:center;display:flex;flex-direction:column-reverse}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-labeled-field-view .ck.ck-dropdown,.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-table-form__dimension-operator{flex-grow:0}.ck.ck-table-form .ck.ck-labeled-field-view{position:relative}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status{bottom:calc(var(--ck-table-properties-error-arrow-size)*-1);left:50%;position:absolute;transform:translate(-50%,100%);z-index:1}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status:after{content:"";left:50%;position:absolute;top:calc(var(--ck-table-properties-error-arrow-size)*-1);transform:translateX(-50%)}:root{--ck-table-properties-error-arrow-size:6px;--ck-table-properties-min-error-width:150px}.ck.ck-table-form .ck-form__row.ck-table-form__border-row .ck-labeled-field-view>.ck-label{font-size:var(--ck-font-size-tiny);text-align:center}.ck.ck-table-form .ck-form__row.ck-table-form__border-row .ck-table-form__border-style,.ck.ck-table-form .ck-form__row.ck-table-form__border-row .ck-table-form__border-width{max-width:80px;min-width:80px;width:80px}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row{padding:0}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-table-form__dimensions-row__height,.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-table-form__dimensions-row__width{margin:0}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-table-form__dimension-operator{align-self:flex-end;display:inline-block;height:var(--ck-ui-component-min-height);line-height:var(--ck-ui-component-min-height);margin:0 var(--ck-spacing-small)}.ck.ck-table-form .ck.ck-labeled-field-view{padding-top:var(--ck-spacing-standard)}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status{border-radius:0}.ck-rounded-corners .ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status,.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status{background:var(--ck-color-base-error);color:var(--ck-color-base-background);min-width:var(--ck-table-properties-min-error-width);padding:var(--ck-spacing-small) var(--ck-spacing-medium);text-align:center}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status:after{border-color:transparent transparent var(--ck-color-base-error) transparent;border-style:solid;border-width:0 var(--ck-table-properties-error-arrow-size) var(--ck-table-properties-error-arrow-size) var(--ck-table-properties-error-arrow-size)}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status{animation:ck-table-form-labeled-view-status-appear .15s ease both}.ck.ck-table-form .ck.ck-labeled-field-view .ck-input.ck-error:not(:focus)+.ck.ck-labeled-field-view__status{display:none}@keyframes ck-table-form-labeled-view-status-appear{0%{opacity:0}to{opacity:1}}',""]);const l=i},99:(e,t,o)=>{"use strict";o.d(t,{Z:()=>l});var n=o(609),i=o.n(n)()((function(e){return e[1]}));i.push([e.id,".ck.ck-table-properties-form .ck-form__row.ck-table-properties-form__alignment-row{align-content:baseline;flex-basis:0;flex-wrap:wrap}.ck.ck-table-properties-form .ck-form__row.ck-table-properties-form__alignment-row .ck.ck-toolbar .ck-toolbar__items{flex-wrap:nowrap}.ck.ck-table-properties-form{width:320px}.ck.ck-table-properties-form .ck-form__row.ck-table-properties-form__alignment-row{align-self:flex-end;padding:0}.ck.ck-table-properties-form .ck-form__row.ck-table-properties-form__alignment-row .ck.ck-toolbar{background:none;margin-top:var(--ck-spacing-standard)}.ck.ck-table-properties-form .ck-form__row.ck-table-properties-form__alignment-row .ck.ck-toolbar .ck-toolbar__items>*{width:40px}",""]);const l=i},475:(e,t,o)=>{"use strict";o.d(t,{Z:()=>l});var n=o(609),i=o.n(n)()((function(e){return e[1]}));i.push([e.id,':root{--ck-table-selected-cell-background:rgba(158,207,250,.3)}.ck.ck-editor__editable .table table td.ck-editor__editable_selected,.ck.ck-editor__editable .table table th.ck-editor__editable_selected{box-shadow:unset;caret-color:transparent;outline:unset;position:relative}.ck.ck-editor__editable .table table td.ck-editor__editable_selected:after,.ck.ck-editor__editable .table table th.ck-editor__editable_selected:after{background-color:var(--ck-table-selected-cell-background);bottom:0;content:"";left:0;pointer-events:none;position:absolute;right:0;top:0}.ck.ck-editor__editable .table table td.ck-editor__editable_selected ::selection,.ck.ck-editor__editable .table table td.ck-editor__editable_selected:focus,.ck.ck-editor__editable .table table th.ck-editor__editable_selected ::selection,.ck.ck-editor__editable .table table th.ck-editor__editable_selected:focus{background-color:transparent}.ck.ck-editor__editable .table table td.ck-editor__editable_selected .ck-widget,.ck.ck-editor__editable .table table th.ck-editor__editable_selected .ck-widget{outline:unset}.ck.ck-editor__editable .table table td.ck-editor__editable_selected .ck-widget>.ck-widget__selection-handle,.ck.ck-editor__editable .table table th.ck-editor__editable_selected .ck-widget>.ck-widget__selection-handle{display:none}',""]);const l=i},609:e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var o=e(t);return t[2]?"@media ".concat(t[2]," {").concat(o,"}"):o})).join("")},t.i=function(e,o,n){"string"==typeof e&&(e=[[null,e,""]]);var i={};if(n)for(var l=0;l<this.length;l++){var r=this[l][0];null!=r&&(i[r]=!0)}for(var s=0;s<e.length;s++){var a=[].concat(e[s]);n&&i[a[0]]||(o&&(a[2]?a[2]="".concat(o," and ").concat(a[2]):a[2]=o),t.push(a))}},t}},62:(e,t,o)=>{"use strict";var n,i=function(){return void 0===n&&(n=Boolean(window&&document&&document.all&&!window.atob)),n},l=function(){var e={};return function(t){if(void 0===e[t]){var o=document.querySelector(t);if(window.HTMLIFrameElement&&o instanceof window.HTMLIFrameElement)try{o=o.contentDocument.head}catch(e){o=null}e[t]=o}return e[t]}}(),r=[];function s(e){for(var t=-1,o=0;o<r.length;o++)if(r[o].identifier===e){t=o;break}return t}function a(e,t){for(var o={},n=[],i=0;i<e.length;i++){var l=e[i],a=t.base?l[0]+t.base:l[0],c=o[a]||0,d="".concat(a," ").concat(c);o[a]=c+1;var u=s(d),h={css:l[1],media:l[2],sourceMap:l[3]};-1!==u?(r[u].references++,r[u].updater(h)):r.push({identifier:d,updater:p(h,t),references:1}),n.push(d)}return n}function c(e){var t=document.createElement("style"),n=e.attributes||{};if(void 0===n.nonce){var i=o.nc;i&&(n.nonce=i)}if(Object.keys(n).forEach((function(e){t.setAttribute(e,n[e])})),"function"==typeof e.insert)e.insert(t);else{var r=l(e.insert||"head");if(!r)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");r.appendChild(t)}return t}var d,u=(d=[],function(e,t){return d[e]=t,d.filter(Boolean).join("\n")});function h(e,t,o,n){var i=o?"":n.media?"@media ".concat(n.media," {").concat(n.css,"}"):n.css;if(e.styleSheet)e.styleSheet.cssText=u(t,i);else{var l=document.createTextNode(i),r=e.childNodes;r[t]&&e.removeChild(r[t]),r.length?e.insertBefore(l,r[t]):e.appendChild(l)}}function b(e,t,o){var n=o.css,i=o.media,l=o.sourceMap;if(i?e.setAttribute("media",i):e.removeAttribute("media"),l&&"undefined"!=typeof btoa&&(n+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(l))))," */")),e.styleSheet)e.styleSheet.cssText=n;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(n))}}var m=null,g=0;function p(e,t){var o,n,i;if(t.singleton){var l=g++;o=m||(m=c(t)),n=h.bind(null,o,l,!1),i=h.bind(null,o,l,!0)}else o=c(t),n=b.bind(null,o,t),i=function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(o)};return n(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;n(e=t)}else i()}}e.exports=function(e,t){(t=t||{}).singleton||"boolean"==typeof t.singleton||(t.singleton=i());var o=a(e=e||[],t);return function(e){if(e=e||[],"[object Array]"===Object.prototype.toString.call(e)){for(var n=0;n<o.length;n++){var i=s(o[n]);r[i].references--}for(var l=a(e,t),c=0;c<o.length;c++){var d=s(o[c]);0===r[d].references&&(r[d].updater(),r.splice(d,1))}o=l}}}},704:(e,t,o)=>{e.exports=o(79)("./src/core.js")},492:(e,t,o)=>{e.exports=o(79)("./src/engine.js")},273:(e,t,o)=>{e.exports=o(79)("./src/ui.js")},209:(e,t,o)=>{e.exports=o(79)("./src/utils.js")},995:(e,t,o)=>{e.exports=o(79)("./src/widget.js")},79:e=>{"use strict";e.exports=CKEditor5.dll}},t={};function o(n){var i=t[n];if(void 0!==i)return i.exports;var l=t[n]={id:n,exports:{}};return e[n](l,l.exports,o),l.exports}o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},o.d=(e,t)=>{for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.nc=void 0;var n={};(()=>{"use strict";o.r(n),o.d(n,{PlainTableOutput:()=>He,Table:()=>Fe,TableCaption:()=>Xo,TableCaptionEditing:()=>Ko,TableCaptionUI:()=>qo,TableCellProperties:()=>_o,TableCellPropertiesEditing:()=>ko,TableCellPropertiesUI:()=>io,TableCellWidthEditing:()=>so,TableClipboard:()=>xe,TableColumnResize:()=>gn,TableColumnResizeEditing:()=>hn,TableEditing:()=>ge,TableKeyboard:()=>Pe,TableMouse:()=>Be,TableProperties:()=>Do,TablePropertiesEditing:()=>Po,TablePropertiesUI:()=>Ho,TableSelection:()=>Ae,TableToolbar:()=>Ue,TableUI:()=>ve,TableUtils:()=>U});var e=o(704),t=o(995);function i(e,t){const{viewElement:o,defaultValue:n,modelAttribute:i,styleName:l,reduceBoxSides:r=!1}=t;e.for("upcast").attributeToAttribute({view:{name:o,styles:{[l]:/[\s\S]+/}},model:{key:i,value:e=>{const t=e.getNormalizedStyle(l),o=r?a(t):t;if(n!==o)return o}}})}function l(e,t,o,n){e.for("upcast").add((e=>e.on("element:"+t,((e,t,i)=>{if(!t.modelRange)return;const l=["border-top-width","border-top-color","border-top-style","border-bottom-width","border-bottom-color","border-bottom-style","border-right-width","border-right-color","border-right-style","border-left-width","border-left-color","border-left-style"].filter((e=>t.viewItem.hasStyle(e)));if(!l.length)return;const r={styles:l};if(!i.consumable.test(t.viewItem,r))return;const s=[...t.modelRange.getItems({shallow:!0})].pop();i.consumable.consume(t.viewItem,r);const c={style:t.viewItem.getNormalizedStyle("border-style"),color:t.viewItem.getNormalizedStyle("border-color"),width:t.viewItem.getNormalizedStyle("border-width")},d={style:a(c.style),color:a(c.color),width:a(c.width)};d.style!==n.style&&i.writer.setAttribute(o.style,d.style,s),d.color!==n.color&&i.writer.setAttribute(o.color,d.color,s),d.width!==n.width&&i.writer.setAttribute(o.width,d.width,s)}))))}function r(e,{modelElement:t,modelAttribute:o,styleName:n}){e.for("downcast").attributeToAttribute({model:{name:t,key:o},view:e=>({key:"style",value:{[n]:e}})})}function s(e,{modelAttribute:t,styleName:o}){e.for("downcast").add((e=>e.on(`attribute:${t}:table`,((e,t,n)=>{const{item:i,attributeNewValue:l}=t,{mapper:r,writer:s}=n;if(!n.consumable.consume(t.item,e.name))return;const a=[...r.toViewElement(i).getChildren()].find((e=>e.is("element","table")));l?s.setStyle(o,l,a):s.removeStyle(o,a)}))))}function a(e){if(!e)return;return["top","right","bottom","left"].map((t=>e[t])).reduce(((e,t)=>e==t?e:null))||e}function c(e,t,o,n,i=1){t>i?n.setAttribute(e,t,o):n.removeAttribute(e,o)}function d(e,t,o={}){const n=e.createElement("tableCell",o);return e.insertElement("paragraph",n),e.insert(n,t),n}function u(e,t){const o=t.parent.parent,n=parseInt(o.getAttribute("headingColumns")||0),{column:i}=e.getCellLocation(t);return!!n&&i<n}function h(e,t,o){const{modelAttribute:n}=o;e.extend("tableCell",{allowAttributes:[n]}),i(t,{viewElement:/^(td|th)$/,...o}),r(t,{modelElement:"tableCell",...o})}var b=o(209);function m(){return e=>{e.on("element:table",((e,t,o)=>{const n=t.viewItem;if(!o.consumable.test(n,{name:!0}))return;const{rows:i,headingRows:l,headingColumns:r}=function(e){const t={headingRows:0,headingColumns:0},o=[],n=[];let i;for(const l of Array.from(e.getChildren()))if("tbody"===l.name||"thead"===l.name||"tfoot"===l.name){"thead"!==l.name||i||(i=l);const e=Array.from(l.getChildren()).filter((e=>e.is("element","tr")));for(const l of e)if("thead"===l.parent.name&&l.parent===i)t.headingRows++,o.push(l);else{n.push(l);const e=p(l);e>t.headingColumns&&(t.headingColumns=e)}}return t.rows=[...o,...n],t}(n),s={};r&&(s.headingColumns=r),l&&(s.headingRows=l);const a=o.writer.createElement("table",s);if(o.safeInsert(a,t.modelCursor)){if(o.consumable.consume(n,{name:!0}),i.forEach((e=>o.convertItem(e,o.writer.createPositionAt(a,"end")))),o.convertChildren(n,o.writer.createPositionAt(a,"end")),a.isEmpty){const e=o.writer.createElement("tableRow");o.writer.insert(e,o.writer.createPositionAt(a,"end")),d(o.writer,o.writer.createPositionAt(e,"end"))}o.updateConversionResult(a,t)}}))}}function g(e){return t=>{t.on(`element:${e}`,((e,t,o)=>{if(t.modelRange&&t.viewItem.isEmpty){const e=t.modelRange.start.nodeAfter,n=o.writer.createPositionAt(e,0);o.writer.insertElement("paragraph",n)}}),{priority:"low"})}}function p(e){let t=0,o=0;const n=Array.from(e.getChildren()).filter((e=>"th"===e.name||"td"===e.name));for(;o<n.length&&"th"===n[o].name;){const e=n[o];t+=parseInt(e.getAttribute("colspan")||1),o++}return t}class f{constructor(e,t={}){this._table=e,this._startRow=void 0!==t.row?t.row:t.startRow||0,this._endRow=void 0!==t.row?t.row:t.endRow,this._startColumn=void 0!==t.column?t.column:t.startColumn||0,this._endColumn=void 0!==t.column?t.column:t.endColumn,this._includeAllSlots=!!t.includeAllSlots,this._skipRows=new Set,this._row=0,this._rowIndex=0,this._column=0,this._cellIndex=0,this._spannedCells=new Map,this._nextCellAtColumn=-1}[Symbol.iterator](){return this}next(){const e=this._table.getChild(this._rowIndex);if(!e||this._isOverEndRow())return{done:!0};if(!e.is("element","tableRow"))return this._rowIndex++,this.next();if(this._isOverEndColumn())return this._advanceToNextRow();let t=null;const o=this._getSpanned();if(o)this._includeAllSlots&&!this._shouldSkipSlot()&&(t=this._formatOutValue(o.cell,o.row,o.column));else{const o=e.getChild(this._cellIndex);if(!o)return this._advanceToNextRow();const n=parseInt(o.getAttribute("colspan")||1),i=parseInt(o.getAttribute("rowspan")||1);(n>1||i>1)&&this._recordSpans(o,i,n),this._shouldSkipSlot()||(t=this._formatOutValue(o)),this._nextCellAtColumn=this._column+n}return this._column++,this._column==this._nextCellAtColumn&&this._cellIndex++,t||this.next()}skipRow(e){this._skipRows.add(e)}_advanceToNextRow(){return this._row++,this._rowIndex++,this._column=0,this._cellIndex=0,this._nextCellAtColumn=-1,this.next()}_isOverEndRow(){return void 0!==this._endRow&&this._row>this._endRow}_isOverEndColumn(){return void 0!==this._endColumn&&this._column>this._endColumn}_formatOutValue(e,t=this._row,o=this._column){return{done:!1,value:new w(this,e,t,o)}}_shouldSkipSlot(){const e=this._skipRows.has(this._row),t=this._row<this._startRow,o=this._column<this._startColumn,n=void 0!==this._endColumn&&this._column>this._endColumn;return e||t||o||n}_getSpanned(){const e=this._spannedCells.get(this._row);return e&&e.get(this._column)||null}_recordSpans(e,t,o){const n={cell:e,row:this._row,column:this._column};for(let e=this._row;e<this._row+t;e++)for(let t=this._column;t<this._column+o;t++)e==this._row&&t==this._column||this._markSpannedCell(e,t,n)}_markSpannedCell(e,t,o){this._spannedCells.has(e)||this._spannedCells.set(e,new Map);this._spannedCells.get(e).set(t,o)}}class w{constructor(e,t,o,n){this.cell=t,this.row=e._row,this.column=e._column,this.cellAnchorRow=o,this.cellAnchorColumn=n,this._cellIndex=e._cellIndex,this._rowIndex=e._rowIndex,this._table=e._table}get isAnchor(){return this.row===this.cellAnchorRow&&this.column===this.cellAnchorColumn}get cellWidth(){return parseInt(this.cell.getAttribute("colspan")||1)}get cellHeight(){return parseInt(this.cell.getAttribute("rowspan")||1)}get rowIndex(){return this._rowIndex}getPositionBefore(){return this._table.root.document.model.createPositionAt(this._table.getChild(this.row),this._cellIndex)}}function k(e,o={}){return(n,{writer:i})=>{const l=n.getAttribute("headingRows")||0,r=[];l>0&&r.push(i.createContainerElement("thead",null,i.createSlot((e=>e.is("element","tableRow")&&e.index<l)))),l<e.getRows(n)&&r.push(i.createContainerElement("tbody",null,i.createSlot((e=>e.is("element","tableRow")&&e.index>=l))));const s=i.createContainerElement("figure",{class:"table"},[i.createContainerElement("table",null,r),i.createSlot((e=>!e.is("element","tableRow")))]);return o.asWidget?function(e,o){return o.setCustomProperty("table",!0,e),(0,t.toWidget)(e,o,{hasSelectionHandle:!0})}(s,i):s}}function _(e={}){return(o,{writer:n})=>{const i=o.parent,l=i.parent,r=l.getChildIndex(i),s=new f(l,{row:r}),a=l.getAttribute("headingRows")||0,c=l.getAttribute("headingColumns")||0;for(const i of s)if(i.cell==o){const o=i.row<a||i.column<c?"th":"td";return e.asWidget?(0,t.toWidgetEditable)(n.createEditableElement(o),n):n.createContainerElement(o)}}}function v(e={}){return(t,{writer:o,consumable:n,mapper:i})=>{if(t.parent.is("element","tableCell")&&C(t))return e.asWidget?o.createContainerElement("span",{class:"ck-table-bogus-paragraph"}):(n.consume(t,"insert"),void i.bindElements(t,i.toViewElement(t.parent)))}}function C(e){return 1==e.parent.childCount&&![...e.getAttributeKeys()].length}class y extends e.Command{refresh(){const e=this.editor.model,t=e.document.selection,o=e.schema;this.isEnabled=function(e,t){const o=e.getFirstPosition().parent,n=o===o.root?o:o.parent;return t.checkChild(n,"table")}(t,o)}execute(e={}){const t=this.editor.model,o=this.editor.plugins.get("TableUtils"),n=this.editor.config.get("table"),i=n.defaultHeadings.rows,l=n.defaultHeadings.columns;void 0===e.headingRows&&i&&(e.headingRows=i),void 0===e.headingColumns&&l&&(e.headingColumns=l),t.change((n=>{const i=o.createTable(n,e);t.insertObject(i,null,null,{findOptimalPosition:"auto"}),n.setSelection(n.createPositionAt(i.getNodeByPath([0,0,0]),0))}))}}class T extends e.Command{constructor(e,t={}){super(e),this.order=t.order||"below"}refresh(){const e=this.editor.model.document.selection,t=!!this.editor.plugins.get("TableUtils").getSelectionAffectedTableCells(e).length;this.isEnabled=t}execute(){const e=this.editor,t=e.model.document.selection,o=e.plugins.get("TableUtils"),n="above"===this.order,i=o.getSelectionAffectedTableCells(t),l=o.getRowIndexes(i),r=n?l.first:l.last,s=i[0].findAncestor("table");o.insertRows(s,{at:n?r:r+1,copyStructureFromAbove:!n})}}class A extends e.Command{constructor(e,t={}){super(e),this.order=t.order||"right"}refresh(){const e=this.editor.model.document.selection,t=!!this.editor.plugins.get("TableUtils").getSelectionAffectedTableCells(e).length;this.isEnabled=t}execute(){const e=this.editor,t=e.model.document.selection,o=e.plugins.get("TableUtils"),n="left"===this.order,i=o.getSelectionAffectedTableCells(t),l=o.getColumnIndexes(i),r=n?l.first:l.last,s=i[0].findAncestor("table");o.insertColumns(s,{columns:1,at:n?r:r+1})}}class x extends e.Command{constructor(e,t={}){super(e),this.direction=t.direction||"horizontally"}refresh(){const e=this.editor.plugins.get("TableUtils").getSelectionAffectedTableCells(this.editor.model.document.selection);this.isEnabled=1===e.length}execute(){const e=this.editor.plugins.get("TableUtils"),t=e.getSelectionAffectedTableCells(this.editor.model.document.selection)[0];"horizontally"===this.direction?e.splitCellHorizontally(t,2):e.splitCellVertically(t,2)}}function V(e,t,o){const{startRow:n,startColumn:i,endRow:l,endColumn:r}=t,s=o.createElement("table"),a=l-n+1;for(let e=0;e<a;e++)o.insertElement("tableRow",s,"end");const u=[...new f(e,{startRow:n,endRow:l,startColumn:i,endColumn:r,includeAllSlots:!0})];for(const{row:e,column:t,cell:a,isAnchor:c,cellAnchorRow:h,cellAnchorColumn:b}of u){const u=e-n,m=s.getChild(u);if(c){const n=o.cloneElement(a);o.append(n,m),E(n,e,t,l,r,o)}else(h<n||b<i)&&d(o,o.createPositionAt(m,"end"))}return function(e,t,o,n,i){const l=parseInt(t.getAttribute("headingRows")||0);if(l>0){c("headingRows",l-o,e,i,0)}const r=parseInt(t.getAttribute("headingColumns")||0);if(r>0){c("headingColumns",r-n,e,i,0)}}(s,e,n,i,o),s}function S(e,t,o=0){const n=[],i=new f(e,{startRow:o,endRow:t-1});for(const e of i){const{row:o,cellHeight:i}=e,l=o+i-1;o<t&&t<=l&&n.push(e)}return n}function R(e,t,o){const n=e.parent,i=n.parent,l=n.index,r=t-l,s={},a=parseInt(e.getAttribute("rowspan"))-r;a>1&&(s.rowspan=a);const u=parseInt(e.getAttribute("colspan")||1);u>1&&(s.colspan=u);const h=l+r,b=[...new f(i,{startRow:l,endRow:h,includeAllSlots:!0})];let m,g=null;for(const t of b){const{row:n,column:i,cell:l}=t;l===e&&void 0===m&&(m=i),void 0!==m&&m===i&&n===h&&(g=d(o,t.getPositionBefore(),s))}return c("rowspan",r,e,o),g}function I(e,t){const o=[],n=new f(e);for(const e of n){const{column:n,cellWidth:i}=e,l=n+i-1;n<t&&t<=l&&o.push(e)}return o}function P(e,t,o,n){const i=o-t,l={},r=parseInt(e.getAttribute("colspan"))-i;r>1&&(l.colspan=r);const s=parseInt(e.getAttribute("rowspan")||1);s>1&&(l.rowspan=s);const a=d(n,n.createPositionAfter(e),l);return c("colspan",i,e,n),a}function E(e,t,o,n,i,l){const r=parseInt(e.getAttribute("colspan")||1),s=parseInt(e.getAttribute("rowspan")||1);if(o+r-1>i){c("colspan",i-o+1,e,l,1)}if(t+s-1>n){c("rowspan",n-t+1,e,l,1)}}function z(e,t){const o=t.getColumns(e),n=new Array(o).fill(0);for(const{column:t}of new f(e))n[t]++;const i=n.reduce(((e,t,o)=>t?e:[...e,o]),[]);if(i.length>0){const o=i[i.length-1];return t.removeColumns(e,{at:o}),!0}return!1}function B(e,t){const o=[],n=t.getRows(e);for(let t=0;t<n;t++){e.getChild(t).isEmpty&&o.push(t)}if(o.length>0){const n=o[o.length-1];return t.removeRows(e,{at:n}),!0}return!1}function W(e,t){z(e,t)||B(e,t)}function L(e,t){const o=Array.from(new f(e,{startColumn:t.firstColumn,endColumn:t.lastColumn,row:t.lastRow}));if(o.every((({cellHeight:e})=>1===e)))return t.lastRow;const n=o[0].cellHeight-1;return t.lastRow+n}function N(e,t){const o=Array.from(new f(e,{startRow:t.firstRow,endRow:t.lastRow,column:t.lastColumn}));if(o.every((({cellWidth:e})=>1===e)))return t.lastColumn;const n=o[0].cellWidth-1;return t.lastColumn+n}class F extends e.Command{constructor(e,t){super(e),this.direction=t.direction,this.isHorizontal="right"==this.direction||"left"==this.direction}refresh(){const e=this._getMergeableCell();this.value=e,this.isEnabled=!!e}execute(){const e=this.editor.model,t=e.document,o=this.editor.plugins.get("TableUtils").getTableCellsContainingSelection(t.selection)[0],n=this.value,i=this.direction;e.change((e=>{const t="right"==i||"down"==i,l=t?o:n,r=t?n:o,s=r.parent;!function(e,t,o){H(e)||(H(t)&&o.remove(o.createRangeIn(t)),o.move(o.createRangeIn(e),o.createPositionAt(t,"end")));o.remove(e)}(r,l,e);const a=this.isHorizontal?"colspan":"rowspan",c=parseInt(o.getAttribute(a)||1),d=parseInt(n.getAttribute(a)||1);e.setAttribute(a,c+d,l),e.setSelection(e.createRangeIn(l));const u=this.editor.plugins.get("TableUtils");W(s.findAncestor("table"),u)}))}_getMergeableCell(){const e=this.editor.model.document,t=this.editor.plugins.get("TableUtils"),o=t.getTableCellsContainingSelection(e.selection)[0];if(!o)return;const n=this.isHorizontal?function(e,t,o){const n=e.parent.parent,i="right"==t?e.nextSibling:e.previousSibling,l=(n.getAttribute("headingColumns")||0)>0;if(!i)return;const r="right"==t?e:i,s="right"==t?i:e,{column:a}=o.getCellLocation(r),{column:c}=o.getCellLocation(s),d=parseInt(r.getAttribute("colspan")||1),h=u(o,r),b=u(o,s);if(l&&h!=b)return;return a+d===c?i:void 0}(o,this.direction,t):function(e,t,o){const n=e.parent,i=n.parent,l=i.getChildIndex(n);if("down"==t&&l===o.getRows(i)-1||"up"==t&&0===l)return;const r=parseInt(e.getAttribute("rowspan")||1),s=i.getAttribute("headingRows")||0,a="down"==t&&l+r===s,c="up"==t&&l===s;if(s&&(a||c))return;const d=parseInt(e.getAttribute("rowspan")||1),u="down"==t?l+d:l,h=[...new f(i,{endRow:u})],b=h.find((t=>t.cell===e)).column,m=h.find((({row:e,cellHeight:o,column:n})=>n===b&&("down"==t?e===u:u===e+o)));return m&&m.cell}(o,this.direction,t);if(!n)return;const i=this.isHorizontal?"rowspan":"colspan",l=parseInt(o.getAttribute(i)||1);return parseInt(n.getAttribute(i)||1)===l?n:void 0}}function H(e){return 1==e.childCount&&e.getChild(0).is("element","paragraph")&&e.getChild(0).isEmpty}class D extends e.Command{refresh(){const e=this.editor.plugins.get("TableUtils"),t=e.getSelectionAffectedTableCells(this.editor.model.document.selection),o=t[0];if(o){const n=o.findAncestor("table"),i=this.editor.plugins.get("TableUtils").getRows(n)-1,l=e.getRowIndexes(t),r=0===l.first&&l.last===i;this.isEnabled=!r}else this.isEnabled=!1}execute(){const e=this.editor.model,t=this.editor.plugins.get("TableUtils"),o=t.getSelectionAffectedTableCells(e.document.selection),n=t.getRowIndexes(o),i=o[0],l=i.findAncestor("table"),r=t.getCellLocation(i).column;e.change((e=>{const o=n.last-n.first+1;t.removeRows(l,{at:n.first,rows:o});const i=function(e,t,o,n){const i=e.getChild(Math.min(t,n-1));let l=i.getChild(0),r=0;for(const e of i.getChildren()){if(r>o)return l;l=e,r+=parseInt(e.getAttribute("colspan")||1)}return l}(l,n.first,r,t.getRows(l));e.setSelection(e.createPositionAt(i,0))}))}}class M extends e.Command{refresh(){const e=this.editor.plugins.get("TableUtils"),t=e.getSelectionAffectedTableCells(this.editor.model.document.selection),o=t[0];if(o){const n=o.findAncestor("table"),i=e.getColumns(n),{first:l,last:r}=e.getColumnIndexes(t);this.isEnabled=r-l<i-1}else this.isEnabled=!1}execute(){const e=this.editor.plugins.get("TableUtils"),[t,o]=function(e,t){const o=t.getSelectionAffectedTableCells(e),n=o[0],i=o.pop(),l=[n,i];return n.isBefore(i)?l:l.reverse()}(this.editor.model.document.selection,e),n=t.parent.parent,i=[...new f(n)],l={first:i.find((e=>e.cell===t)).column,last:i.find((e=>e.cell===o)).column},r=function(e,t,o,n){return parseInt(o.getAttribute("colspan")||1)>1?o:t.previousSibling||o.nextSibling?o.nextSibling||t.previousSibling:n.first?e.reverse().find((({column:e})=>e<n.first)).cell:e.reverse().find((({column:e})=>e>n.last)).cell}(i,t,o,l);this.editor.model.change((e=>{const t=l.last-l.first+1;this.editor.plugins.get("TableUtils").removeColumns(n,{at:l.first,columns:t}),e.setSelection(e.createPositionAt(r,0))}))}}class O extends e.Command{refresh(){const e=this.editor.plugins.get("TableUtils"),t=this.editor.model,o=e.getSelectionAffectedTableCells(t.document.selection),n=o.length>0;this.isEnabled=n,this.value=n&&o.every((e=>this._isInHeading(e,e.parent.parent)))}execute(e={}){if(e.forceValue===this.value)return;const t=this.editor.plugins.get("TableUtils"),o=this.editor.model,n=t.getSelectionAffectedTableCells(o.document.selection),i=n[0].findAncestor("table"),{first:l,last:r}=t.getRowIndexes(n),s=this.value?l:r+1,a=i.getAttribute("headingRows")||0;o.change((e=>{if(s){const t=S(i,s,s>a?a:0);for(const{cell:o}of t)R(o,s,e)}c("headingRows",s,i,e,0)}))}_isInHeading(e,t){const o=parseInt(t.getAttribute("headingRows")||0);return!!o&&e.parent.index<o}}class j extends e.Command{refresh(){const e=this.editor.model,t=this.editor.plugins.get("TableUtils"),o=t.getSelectionAffectedTableCells(e.document.selection),n=o.length>0;this.isEnabled=n,this.value=n&&o.every((e=>u(t,e)))}execute(e={}){if(e.forceValue===this.value)return;const t=this.editor.plugins.get("TableUtils"),o=this.editor.model,n=t.getSelectionAffectedTableCells(o.document.selection),i=n[0].findAncestor("table"),{first:l,last:r}=t.getColumnIndexes(n),s=this.value?l:r+1;o.change((e=>{if(s){const t=I(i,s);for(const{cell:o,column:n}of t)P(o,n,s,e)}c("headingColumns",s,i,e,0)}))}}class U extends e.Plugin{static get pluginName(){return"TableUtils"}init(){this.decorate("insertColumns"),this.decorate("insertRows")}getCellLocation(e){const t=e.parent,o=t.parent,n=o.getChildIndex(t),i=new f(o,{row:n});for(const{cell:t,row:o,column:n}of i)if(t===e)return{row:o,column:n}}createTable(e,t){const o=e.createElement("table"),n=parseInt(t.rows)||2,i=parseInt(t.columns)||2;return $(e,o,0,n,i),t.headingRows&&c("headingRows",Math.min(t.headingRows,n),o,e,0),t.headingColumns&&c("headingColumns",Math.min(t.headingColumns,i),o,e,0),o}insertRows(e,t={}){const o=this.editor.model,n=t.at||0,i=t.rows||1,l=void 0!==t.copyStructureFromAbove,r=t.copyStructureFromAbove?n-1:n,s=this.getRows(e),a=this.getColumns(e);if(n>s)throw new b.CKEditorError("tableutils-insertrows-insert-out-of-range",this,{options:t});o.change((t=>{const o=e.getAttribute("headingRows")||0;if(o>n&&c("headingRows",o+i,e,t,0),!l&&(0===n||n===s))return void $(t,e,n,i,a);const u=l?Math.max(n,r):n,h=new f(e,{endRow:u}),b=new Array(a).fill(1);for(const{row:e,column:o,cellHeight:s,cellWidth:a,cell:c}of h){const d=e+s-1,u=e<=r&&r<=d;e<n&&n<=d?(t.setAttribute("rowspan",s+i,c),b[o]=-a):l&&u&&(b[o]=a)}for(let o=0;o<i;o++){const o=t.createElement("tableRow");t.insert(o,e,n);for(let e=0;e<b.length;e++){const n=b[e],i=t.createPositionAt(o,"end");n>0&&d(t,i,n>1?{colspan:n}:null),e+=Math.abs(n)-1}}}))}insertColumns(e,t={}){const o=this.editor.model,n=t.at||0,i=t.columns||1;o.change((t=>{const o=e.getAttribute("headingColumns");n<o&&t.setAttribute("headingColumns",o+i,e);const l=this.getColumns(e);if(0===n||l===n){for(const o of e.getChildren())o.is("element","tableRow")&&Z(i,t,t.createPositionAt(o,n?"end":0));return}const r=new f(e,{column:n,includeAllSlots:!0});for(const e of r){const{row:o,cell:l,cellAnchorColumn:s,cellAnchorRow:a,cellWidth:c,cellHeight:d}=e;if(s<n){t.setAttribute("colspan",c+i,l);const e=a+d-1;for(let t=o;t<=e;t++)r.skipRow(t)}else Z(i,t,e.getPositionBefore())}}))}removeRows(e,t){const o=this.editor.model,n=t.rows||1,i=this.getRows(e),l=t.at,r=l+n-1;if(r>i-1)throw new b.CKEditorError("tableutils-removerows-row-index-out-of-range",this,{table:e,options:t});o.change((t=>{const{cellsToMove:o,cellsToTrim:n}=function(e,t,o){const n=new Map,i=[];for(const{row:l,column:r,cellHeight:s,cell:a}of new f(e,{endRow:o})){const e=l+s-1;if(l>=t&&l<=o&&e>o){const e=s-(o-l+1);n.set(r,{cell:a,rowspan:e})}if(l<t&&e>=t){let n;n=e>=o?o-t+1:e-t+1,i.push({cell:a,rowspan:s-n})}}return{cellsToMove:n,cellsToTrim:i}}(e,l,r);if(o.size){!function(e,t,o,n){const i=[...new f(e,{includeAllSlots:!0,row:t})],l=e.getChild(t);let r;for(const{column:e,cell:t,isAnchor:s}of i)if(o.has(e)){const{cell:t,rowspan:i}=o.get(e),s=r?n.createPositionAfter(r):n.createPositionAt(l,0);n.move(n.createRangeOn(t),s),c("rowspan",i,t,n),r=t}else s&&(r=t)}(e,r+1,o,t)}for(let o=r;o>=l;o--)t.remove(e.getChild(o));for(const{rowspan:e,cell:o}of n)c("rowspan",e,o,t);!function(e,t,o,n){const i=e.getAttribute("headingRows")||0;if(t<i){c("headingRows",o<i?i-(o-t+1):t,e,n,0)}}(e,l,r,t),z(e,this)||B(e,this)}))}removeColumns(e,t){const o=this.editor.model,n=t.at,i=t.columns||1,l=t.at+i-1;o.change((t=>{!function(e,t,o){const n=e.getAttribute("headingColumns")||0;if(n&&t.first<n){const i=Math.min(n-1,t.last)-t.first+1;o.setAttribute("headingColumns",n-i,e)}}(e,{first:n,last:l},t);for(let o=l;o>=n;o--)for(const{cell:n,column:i,cellWidth:l}of[...new f(e)])i<=o&&l>1&&i+l>o?c("colspan",l-1,n,t):i===o&&t.remove(n);B(e,this)||z(e,this)}))}splitCellVertically(e,t=2){const o=this.editor.model,n=e.parent.parent,i=parseInt(e.getAttribute("rowspan")||1),l=parseInt(e.getAttribute("colspan")||1);o.change((o=>{if(l>1){const{newCellsSpan:n,updatedSpan:r}=K(l,t);c("colspan",r,e,o);const s={};n>1&&(s.colspan=n),i>1&&(s.rowspan=i);Z(l>t?t-1:l-1,o,o.createPositionAfter(e),s)}if(l<t){const r=t-l,s=[...new f(n)],{column:a}=s.find((({cell:t})=>t===e)),d=s.filter((({cell:t,cellWidth:o,column:n})=>t!==e&&n===a||n<a&&n+o>a));for(const{cell:e,cellWidth:t}of d)o.setAttribute("colspan",t+r,e);const u={};i>1&&(u.rowspan=i),Z(r,o,o.createPositionAfter(e),u);const h=n.getAttribute("headingColumns")||0;h>a&&c("headingColumns",h+r,n,o)}}))}splitCellHorizontally(e,t=2){const o=this.editor.model,n=e.parent,i=n.parent,l=i.getChildIndex(n),r=parseInt(e.getAttribute("rowspan")||1),s=parseInt(e.getAttribute("colspan")||1);o.change((o=>{if(r>1){const n=[...new f(i,{startRow:l,endRow:l+r-1,includeAllSlots:!0})],{newCellsSpan:a,updatedSpan:d}=K(r,t);c("rowspan",d,e,o);const{column:u}=n.find((({cell:t})=>t===e)),h={};a>1&&(h.rowspan=a),s>1&&(h.colspan=s);for(const e of n){const{column:t,row:n}=e,i=t===u,r=(n+l+d)%a==0;n>=l+d&&i&&r&&Z(1,o,e.getPositionBefore(),h)}}if(r<t){const n=t-r,a=[...new f(i,{startRow:0,endRow:l})];for(const{cell:t,cellHeight:i,row:r}of a)if(t!==e&&r+i>l){const e=i+n;o.setAttribute("rowspan",e,t)}const d={};s>1&&(d.colspan=s),$(o,i,l+1,n,1,d);const u=i.getAttribute("headingRows")||0;u>l&&c("headingRows",u+n,i,o)}}))}getColumns(e){return[...e.getChild(0).getChildren()].reduce(((e,t)=>e+parseInt(t.getAttribute("colspan")||1)),0)}getRows(e){return Array.from(e.getChildren()).reduce(((e,t)=>t.is("element","tableRow")?e+1:e),0)}createTableWalker(e,t={}){return new f(e,t)}getSelectedTableCells(e){const t=[];for(const o of this.sortRanges(e.getRanges())){const e=o.getContainedElement();e&&e.is("element","tableCell")&&t.push(e)}return t}getTableCellsContainingSelection(e){const t=[];for(const o of e.getRanges()){const e=o.start.findAncestor("tableCell");e&&t.push(e)}return t}getSelectionAffectedTableCells(e){const t=this.getSelectedTableCells(e);return t.length?t:this.getTableCellsContainingSelection(e)}getRowIndexes(e){const t=e.map((e=>e.parent.index));return this._getFirstLastIndexesObject(t)}getColumnIndexes(e){const t=e[0].findAncestor("table"),o=[...new f(t)].filter((t=>e.includes(t.cell))).map((e=>e.column));return this._getFirstLastIndexesObject(o)}isSelectionRectangular(e){if(e.length<2||!this._areCellInTheSameTableSection(e))return!1;const t=new Set,o=new Set;let n=0;for(const i of e){const{row:e,column:l}=this.getCellLocation(i),r=parseInt(i.getAttribute("rowspan")||1),s=parseInt(i.getAttribute("colspan")||1);t.add(e),o.add(l),r>1&&t.add(e+r-1),s>1&&o.add(l+s-1),n+=r*s}const i=function(e,t){const o=Array.from(e.values()),n=Array.from(t.values()),i=Math.max(...o),l=Math.min(...o),r=Math.max(...n),s=Math.min(...n);return(i-l+1)*(r-s+1)}(t,o);return i==n}sortRanges(e){return Array.from(e).sort(q)}_getFirstLastIndexesObject(e){const t=e.sort(((e,t)=>e-t));return{first:t[0],last:t[t.length-1]}}_areCellInTheSameTableSection(e){const t=e[0].findAncestor("table"),o=this.getRowIndexes(e),n=parseInt(t.getAttribute("headingRows")||0);if(!this._areIndexesInSameSection(o,n))return!1;const i=parseInt(t.getAttribute("headingColumns")||0),l=this.getColumnIndexes(e);return this._areIndexesInSameSection(l,i)}_areIndexesInSameSection({first:e,last:t},o){return e<o===t<o}}function $(e,t,o,n,i,l={}){for(let r=0;r<n;r++){const n=e.createElement("tableRow");e.insert(n,t,o),Z(i,e,e.createPositionAt(n,"end"),l)}}function Z(e,t,o,n={}){for(let i=0;i<e;i++)d(t,o,n)}function K(e,t){if(e<t)return{newCellsSpan:1,updatedSpan:1};const o=Math.floor(e/t);return{newCellsSpan:o,updatedSpan:e-o*t+o}}function q(e,t){const o=e.start,n=t.start;return o.isBefore(n)?-1:1}class G extends e.Command{refresh(){const e=this.editor.plugins.get(U),t=e.getSelectedTableCells(this.editor.model.document.selection);this.isEnabled=e.isSelectionRectangular(t,this.editor.plugins.get(U))}execute(){const e=this.editor.model,t=this.editor.plugins.get(U);e.change((o=>{const n=t.getSelectedTableCells(e.document.selection),i=n.shift(),{mergeWidth:l,mergeHeight:r}=function(e,t,o){let n=0,i=0;for(const e of t){const{row:t,column:l}=o.getCellLocation(e);n=Y(e,l,n,"colspan"),i=Y(e,t,i,"rowspan")}const{row:l,column:r}=o.getCellLocation(e);return{mergeWidth:n-r,mergeHeight:i-l}}(i,n,t);c("colspan",l,i,o),c("rowspan",r,i,o);for(const e of n)J(e,i,o);W(i.findAncestor("table"),t),o.setSelection(i,"in")}))}}function J(e,t,o){X(e)||(X(t)&&o.remove(o.createRangeIn(t)),o.move(o.createRangeIn(e),o.createPositionAt(t,"end"))),o.remove(e)}function X(e){return 1==e.childCount&&e.getChild(0).is("element","paragraph")&&e.getChild(0).isEmpty}function Y(e,t,o,n){const i=parseInt(e.getAttribute(n)||1);return Math.max(o,t+i)}class Q extends e.Command{constructor(e){super(e),this.affectsData=!1}refresh(){const e=this.editor.plugins.get("TableUtils").getSelectionAffectedTableCells(this.editor.model.document.selection);this.isEnabled=e.length>0}execute(){const e=this.editor.model,t=this.editor.plugins.get("TableUtils"),o=t.getSelectionAffectedTableCells(e.document.selection),n=t.getRowIndexes(o),i=o[0].findAncestor("table"),l=[];for(let t=n.first;t<=n.last;t++)for(const o of i.getChild(t).getChildren())l.push(e.createRangeOn(o));e.change((e=>{e.setSelection(l)}))}}class ee extends e.Command{constructor(e){super(e),this.affectsData=!1}refresh(){const e=this.editor.plugins.get("TableUtils").getSelectionAffectedTableCells(this.editor.model.document.selection);this.isEnabled=e.length>0}execute(){const e=this.editor.plugins.get("TableUtils"),t=this.editor.model,o=e.getSelectionAffectedTableCells(t.document.selection),n=o[0],i=o.pop(),l=n.findAncestor("table"),r=e.getCellLocation(n),s=e.getCellLocation(i),a=Math.min(r.column,s.column),c=Math.max(r.column,s.column),d=[];for(const e of new f(l,{startColumn:a,endColumn:c}))d.push(t.createRangeOn(e.cell));t.change((e=>{e.setSelection(d)}))}}function te(e){e.document.registerPostFixer((t=>function(e,t){const o=t.document.differ.getChanges();let n=!1;const i=new Set;for(const t of o){let o;"table"==t.name&&"insert"==t.type&&(o=t.position.nodeAfter),"tableRow"!=t.name&&"tableCell"!=t.name||(o=t.position.findAncestor("table")),ie(t)&&(o=t.range.start.findAncestor("table")),o&&!i.has(o)&&(n=oe(o,e)||n,n=ne(o,e)||n,i.add(o))}return n}(t,e)))}function oe(e,t){let o=!1;const n=function(e){const t=parseInt(e.getAttribute("headingRows")||0),o=Array.from(e.getChildren()).reduce(((e,t)=>t.is("element","tableRow")?e+1:e),0),n=[];for(const{row:i,cell:l,cellHeight:r}of new f(e)){if(r<2)continue;const e=i<t?t:o;if(i+r>e){const t=e-i;n.push({cell:l,rowspan:t})}}return n}(e);if(n.length){o=!0;for(const e of n)c("rowspan",e.rowspan,e.cell,t,1)}return o}function ne(e,t){let o=!1;const n=function(e){const t=new Array(e.childCount).fill(0);for(const{rowIndex:o}of new f(e,{includeAllSlots:!0}))t[o]++;return t}(e),i=[];for(const[t,o]of n.entries())!o&&e.getChild(t).is("element","tableRow")&&i.push(t);if(i.length){o=!0;for(const o of i.reverse())t.remove(e.getChild(o)),n.splice(o,1)}const l=n.filter(((t,o)=>e.getChild(o).is("element","tableRow"))),r=l[0];if(!l.every((e=>e===r))){const n=l.reduce(((e,t)=>t>e?t:e),0);for(const[i,r]of l.entries()){const l=n-r;if(l){for(let o=0;o<l;o++)d(t,t.createPositionAt(e.getChild(i),"end"));o=!0}}}return o}function ie(e){const t="attribute"===e.type,o=e.attributeKey;return t&&("headingRows"===o||"colspan"===o||"rowspan"===o)}function le(e){e.document.registerPostFixer((t=>function(e,t){const o=t.document.differ.getChanges();let n=!1;for(const t of o)"insert"==t.type&&"table"==t.name&&(n=re(t.position.nodeAfter,e)||n),"insert"==t.type&&"tableRow"==t.name&&(n=se(t.position.nodeAfter,e)||n),"insert"==t.type&&"tableCell"==t.name&&(n=ae(t.position.nodeAfter,e)||n),ce(t)&&(n=ae(t.position.parent,e)||n);return n}(t,e)))}function re(e,t){let o=!1;for(const n of e.getChildren())n.is("element","tableRow")&&(o=se(n,t)||o);return o}function se(e,t){let o=!1;for(const n of e.getChildren())o=ae(n,t)||o;return o}function ae(e,t){if(0==e.childCount)return t.insertElement("paragraph",e),!0;const o=Array.from(e.getChildren()).filter((e=>e.is("$text")));for(const e of o)t.wrap(t.createRangeOn(e),"paragraph");return!!o.length}function ce(e){return!(!e.position||!e.position.parent.is("element","tableCell"))&&("insert"==e.type&&"$text"==e.name||"remove"==e.type)}function de(e,t){if(!e.is("element","paragraph"))return!1;const o=t.toViewElement(e);return!!o&&C(e)!==o.is("element","span")}var ue=o(62),he=o.n(ue),be=o(482),me={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};he()(be.Z,me);be.Z.locals;class ge extends e.Plugin{static get pluginName(){return"TableEditing"}static get requires(){return[U]}init(){const e=this.editor,t=e.model,o=t.schema,n=e.conversion,i=e.plugins.get(U);o.register("table",{inheritAllFrom:"$blockObject",allowAttributes:["headingRows","headingColumns"]}),o.register("tableRow",{allowIn:"table",isLimit:!0}),o.register("tableCell",{allowContentOf:"$container",allowIn:"tableRow",allowAttributes:["colspan","rowspan"],isLimit:!0,isSelectable:!0}),n.for("upcast").add((e=>{e.on("element:figure",((e,t,o)=>{if(!o.consumable.test(t.viewItem,{name:!0,classes:"table"}))return;const n=function(e){for(const t of e.getChildren())if(t.is("element","table"))return t}(t.viewItem);if(!n||!o.consumable.test(n,{name:!0}))return;o.consumable.consume(t.viewItem,{name:!0,classes:"table"});const i=o.convertItem(n,t.modelCursor),l=(0,b.first)(i.modelRange.getItems());l?(o.convertChildren(t.viewItem,o.writer.createPositionAt(l,"end")),o.updateConversionResult(l,t)):o.consumable.revert(t.viewItem,{name:!0,classes:"table"})}))})),n.for("upcast").add(m()),n.for("editingDowncast").elementToStructure({model:{name:"table",attributes:["headingRows"]},view:k(i,{asWidget:!0})}),n.for("dataDowncast").elementToStructure({model:{name:"table",attributes:["headingRows"]},view:k(i)}),n.for("upcast").elementToElement({model:"tableRow",view:"tr"}),n.for("upcast").add((e=>{e.on("element:tr",((e,t)=>{t.viewItem.isEmpty&&0==t.modelCursor.index&&e.stop()}),{priority:"high"})})),n.for("downcast").elementToElement({model:"tableRow",view:(e,{writer:t})=>e.isEmpty?t.createEmptyElement("tr"):t.createContainerElement("tr")}),n.for("upcast").elementToElement({model:"tableCell",view:"td"}),n.for("upcast").elementToElement({model:"tableCell",view:"th"}),n.for("upcast").add(g("td")),n.for("upcast").add(g("th")),n.for("editingDowncast").elementToElement({model:"tableCell",view:_({asWidget:!0})}),n.for("dataDowncast").elementToElement({model:"tableCell",view:_()}),n.for("editingDowncast").elementToElement({model:"paragraph",view:v({asWidget:!0}),converterPriority:"high"}),n.for("dataDowncast").elementToElement({model:"paragraph",view:v(),converterPriority:"high"}),n.for("downcast").attributeToAttribute({model:"colspan",view:"colspan"}),n.for("upcast").attributeToAttribute({model:{key:"colspan",value:pe("colspan")},view:"colspan"}),n.for("downcast").attributeToAttribute({model:"rowspan",view:"rowspan"}),n.for("upcast").attributeToAttribute({model:{key:"rowspan",value:pe("rowspan")},view:"rowspan"}),e.data.mapper.on("modelToViewPosition",((e,t)=>{const o=t.modelPosition.parent,n=t.modelPosition.nodeBefore;if(!o.is("element","tableCell"))return;if(!n||!n.is("element","paragraph"))return;const i=t.mapper.toViewElement(n),l=t.mapper.toViewElement(o);i===l&&(t.viewPosition=t.mapper.findPositionIn(l,n.maxOffset))})),e.config.define("table.defaultHeadings.rows",0),e.config.define("table.defaultHeadings.columns",0),e.commands.add("insertTable",new y(e)),e.commands.add("insertTableRowAbove",new T(e,{order:"above"})),e.commands.add("insertTableRowBelow",new T(e,{order:"below"})),e.commands.add("insertTableColumnLeft",new A(e,{order:"left"})),e.commands.add("insertTableColumnRight",new A(e,{order:"right"})),e.commands.add("removeTableRow",new D(e)),e.commands.add("removeTableColumn",new M(e)),e.commands.add("splitTableCellVertically",new x(e,{direction:"vertically"})),e.commands.add("splitTableCellHorizontally",new x(e,{direction:"horizontally"})),e.commands.add("mergeTableCells",new G(e)),e.commands.add("mergeTableCellRight",new F(e,{direction:"right"})),e.commands.add("mergeTableCellLeft",new F(e,{direction:"left"})),e.commands.add("mergeTableCellDown",new F(e,{direction:"down"})),e.commands.add("mergeTableCellUp",new F(e,{direction:"up"})),e.commands.add("setTableColumnHeader",new j(e)),e.commands.add("setTableRowHeader",new O(e)),e.commands.add("selectTableRow",new Q(e)),e.commands.add("selectTableColumn",new ee(e)),te(t),le(t),this.listenTo(t.document,"change:data",(()=>{!function(e,t){const o=e.document.differ;for(const e of o.getChanges()){let o,n=!1;if("attribute"==e.type){const t=e.range.start.nodeAfter;if(!t||!t.is("element","table"))continue;if("headingRows"!=e.attributeKey&&"headingColumns"!=e.attributeKey)continue;o=t,n="headingRows"==e.attributeKey}else"tableRow"!=e.name&&"tableCell"!=e.name||(o=e.position.findAncestor("table"),n="tableRow"==e.name);if(!o)continue;const i=o.getAttribute("headingRows")||0,l=o.getAttribute("headingColumns")||0,r=new f(o);for(const e of r){const o=e.row<i||e.column<l?"th":"td",r=t.mapper.toViewElement(e.cell);r&&r.is("element")&&r.name!=o&&t.reconvertItem(n?e.cell.parent:e.cell)}}}(t,e.editing),function(e,t){const o=e.document.differ,n=new Set;for(const e of o.getChanges()){const t="attribute"==e.type?e.range.start.parent:e.position.parent;t.is("element","tableCell")&&n.add(t)}for(const e of n.values()){const o=Array.from(e.getChildren()).filter((e=>de(e,t.mapper)));for(const e of o)t.reconvertItem(e)}}(t,e.editing)}))}}function pe(e){return t=>{const o=parseInt(t.getAttribute(e));return Number.isNaN(o)||o<=0?null:o}}var fe=o(273),we=o(272),ke={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};he()(we.Z,ke);we.Z.locals;class _e extends fe.View{constructor(e){super(e);const t=this.bindTemplate;this.items=this._createGridCollection(),this.keystrokes=new b.KeystrokeHandler,this.focusTracker=new b.FocusTracker,this.set("rows",0),this.set("columns",0),this.bind("label").to(this,"columns",this,"rows",((e,t)=>`${t} × ${e}`)),this.setTemplate({tag:"div",attributes:{class:["ck"]},children:[{tag:"div",attributes:{class:["ck-insert-table-dropdown__grid"]},on:{"mouseover@.ck-insert-table-dropdown-grid-box":t.to("boxover")},children:this.items},{tag:"div",attributes:{class:["ck","ck-insert-table-dropdown__label"],"aria-hidden":!0},children:[{text:t.to("label")}]}],on:{mousedown:t.to((e=>{e.preventDefault()})),click:t.to((()=>{this.fire("execute")}))}}),this.on("boxover",((e,t)=>{const{row:o,column:n}=t.target.dataset;this.items.get(10*(parseInt(o,10)-1)+(parseInt(n,10)-1)).focus()})),this.focusTracker.on("change:focusedElement",((e,t,o)=>{if(!o)return;const{row:n,column:i}=o.dataset;this.set({rows:parseInt(n),columns:parseInt(i)})})),this.on("change:columns",(()=>this._highlightGridBoxes())),this.on("change:rows",(()=>this._highlightGridBoxes()))}render(){super.render(),(0,fe.addKeyboardHandlingForGrid)({keystrokeHandler:this.keystrokes,focusTracker:this.focusTracker,gridItems:this.items,numberOfColumns:10});for(const e of this.items)this.focusTracker.add(e.element);this.keystrokes.listenTo(this.element)}focus(){this.items.get(0).focus()}focusLast(){this.items.get(0).focus()}_highlightGridBoxes(){const e=this.rows,t=this.columns;this.items.map(((o,n)=>{const i=Math.floor(n/10)<e&&n%10<t;o.set("isOn",i)}))}_createGridButton(e,t,o,n){const i=new fe.ButtonView(e);return i.set({label:n,class:"ck-insert-table-dropdown-grid-box"}),i.extendTemplate({attributes:{"data-row":t,"data-column":o}}),i}_createGridCollection(){const e=[];for(let t=0;t<100;t++){const o=Math.floor(t/10),n=t%10,i=`${o+1} × ${n+1}`;e.push(this._createGridButton(this.locale,o+1,n+1,i))}return this.createCollection(e)}}class ve extends e.Plugin{static get pluginName(){return"TableUI"}init(){const e=this.editor,t=this.editor.t,o="ltr"===e.locale.contentLanguageDirection;e.ui.componentFactory.add("insertTable",(o=>{const n=e.commands.get("insertTable"),i=(0,fe.createDropdown)(o);let l;return i.bind("isEnabled").to(n),i.buttonView.set({icon:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M3 6v3h4V6H3zm0 4v3h4v-3H3zm0 4v3h4v-3H3zm5 3h4v-3H8v3zm5 0h4v-3h-4v3zm4-4v-3h-4v3h4zm0-4V6h-4v3h4zm1.5 8a1.5 1.5 0 0 1-1.5 1.5H3A1.5 1.5 0 0 1 1.5 17V4c.222-.863 1.068-1.5 2-1.5h13c.932 0 1.778.637 2 1.5v13zM12 13v-3H8v3h4zm0-4V6H8v3h4z"/></svg>',label:t("Insert table"),tooltip:!0}),i.on("change:isOpen",(()=>{l||(l=new _e(o),i.panelView.children.add(l),l.delegate("execute").to(i),i.on("execute",(()=>{e.execute("insertTable",{rows:l.rows,columns:l.columns}),e.editing.view.focus()})))})),i})),e.ui.componentFactory.add("tableColumn",(e=>{const n=[{type:"switchbutton",model:{commandName:"setTableColumnHeader",label:t("Header column"),bindIsOn:!0}},{type:"separator"},{type:"button",model:{commandName:o?"insertTableColumnLeft":"insertTableColumnRight",label:t("Insert column left")}},{type:"button",model:{commandName:o?"insertTableColumnRight":"insertTableColumnLeft",label:t("Insert column right")}},{type:"button",model:{commandName:"removeTableColumn",label:t("Delete column")}},{type:"button",model:{commandName:"selectTableColumn",label:t("Select column")}}];return this._prepareDropdown(t("Column"),'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2.5 1h15A1.5 1.5 0 0 1 19 2.5v15a1.5 1.5 0 0 1-1.5 1.5h-15A1.5 1.5 0 0 1 1 17.5v-15A1.5 1.5 0 0 1 2.5 1zM2 2v16h16V2H2z" opacity=".6"/><path d="M18 7v1H2V7h16zm0 5v1H2v-1h16z" opacity=".6"/><path d="M14 1v18a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1V1a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1zm-2 1H8v4h4V2zm0 6H8v4h4V8zm0 6H8v4h4v-4z"/></svg>',n,e)})),e.ui.componentFactory.add("tableRow",(e=>{const o=[{type:"switchbutton",model:{commandName:"setTableRowHeader",label:t("Header row"),bindIsOn:!0}},{type:"separator"},{type:"button",model:{commandName:"insertTableRowAbove",label:t("Insert row above")}},{type:"button",model:{commandName:"insertTableRowBelow",label:t("Insert row below")}},{type:"button",model:{commandName:"removeTableRow",label:t("Delete row")}},{type:"button",model:{commandName:"selectTableRow",label:t("Select row")}}];return this._prepareDropdown(t("Row"),'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2.5 1h15A1.5 1.5 0 0 1 19 2.5v15a1.5 1.5 0 0 1-1.5 1.5h-15A1.5 1.5 0 0 1 1 17.5v-15A1.5 1.5 0 0 1 2.5 1zM2 2v16h16V2H2z" opacity=".6"/><path d="M7 2h1v16H7V2zm5 0h1v16h-1V2z" opacity=".6"/><path d="M1 6h18a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1zm1 2v4h4V8H2zm6 0v4h4V8H8zm6 0v4h4V8h-4z"/></svg>',o,e)})),e.ui.componentFactory.add("mergeTableCells",(e=>{const n=[{type:"button",model:{commandName:"mergeTableCellUp",label:t("Merge cell up")}},{type:"button",model:{commandName:o?"mergeTableCellRight":"mergeTableCellLeft",label:t("Merge cell right")}},{type:"button",model:{commandName:"mergeTableCellDown",label:t("Merge cell down")}},{type:"button",model:{commandName:o?"mergeTableCellLeft":"mergeTableCellRight",label:t("Merge cell left")}},{type:"separator"},{type:"button",model:{commandName:"splitTableCellVertically",label:t("Split cell vertically")}},{type:"button",model:{commandName:"splitTableCellHorizontally",label:t("Split cell horizontally")}}];return this._prepareMergeSplitButtonDropdown(t("Merge cells"),'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2.5 1h15A1.5 1.5 0 0 1 19 2.5v15a1.5 1.5 0 0 1-1.5 1.5h-15A1.5 1.5 0 0 1 1 17.5v-15A1.5 1.5 0 0 1 2.5 1zM2 2v16h16V2H2z" opacity=".6"/><path d="M7 2h1v16H7V2zm5 0h1v7h-1V2zm6 5v1H2V7h16zM8 12v1H2v-1h6z" opacity=".6"/><path d="M7 7h12a1 1 0 0 1 1 1v11a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1V8a1 1 0 0 1 1-1zm1 2v9h10V9H8z"/></svg>',n,e)}))}_prepareDropdown(e,t,o,n){const i=this.editor,l=(0,fe.createDropdown)(n),r=this._fillDropdownWithListOptions(l,o);return l.buttonView.set({label:e,icon:t,tooltip:!0}),l.bind("isEnabled").toMany(r,"isEnabled",((...e)=>e.some((e=>e)))),this.listenTo(l,"execute",(e=>{i.execute(e.source.commandName),e.source instanceof fe.SwitchButtonView||i.editing.view.focus()})),l}_prepareMergeSplitButtonDropdown(e,t,o,n){const i=this.editor,l=(0,fe.createDropdown)(n,fe.SplitButtonView),r="mergeTableCells",s=i.commands.get(r),a=this._fillDropdownWithListOptions(l,o);return l.buttonView.set({label:e,icon:t,tooltip:!0,isEnabled:!0}),l.bind("isEnabled").toMany([s,...a],"isEnabled",((...e)=>e.some((e=>e)))),this.listenTo(l.buttonView,"execute",(()=>{i.execute(r),i.editing.view.focus()})),this.listenTo(l,"execute",(e=>{i.execute(e.source.commandName),i.editing.view.focus()})),l}_fillDropdownWithListOptions(e,t){const o=this.editor,n=[],i=new b.Collection;for(const e of t)Ce(e,o,n,i);return(0,fe.addListToDropdown)(e,i,o.ui.componentFactory),n}}function Ce(e,t,o,n){const i=e.model=new fe.Model(e.model),{commandName:l,bindIsOn:r}=e.model;if("button"===e.type||"switchbutton"===e.type){const e=t.commands.get(l);o.push(e),i.set({commandName:l}),i.bind("isEnabled").to(e),r&&i.bind("isOn").to(e,"value")}i.set({withText:!0}),n.add(e)}var ye=o(475),Te={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};he()(ye.Z,Te);ye.Z.locals;class Ae extends e.Plugin{static get pluginName(){return"TableSelection"}static get requires(){return[U,U]}init(){const e=this.editor.model;this.listenTo(e,"deleteContent",((e,t)=>this._handleDeleteContent(e,t)),{priority:"high"}),this._defineSelectionConverter(),this._enablePluginDisabling()}getSelectedTableCells(){const e=this.editor.plugins.get(U),t=this.editor.model.document.selection,o=e.getSelectedTableCells(t);return 0==o.length?null:o}getSelectionAsFragment(){const e=this.editor.plugins.get(U),t=this.getSelectedTableCells();return t?this.editor.model.change((o=>{const n=o.createDocumentFragment(),{first:i,last:l}=e.getColumnIndexes(t),{first:r,last:s}=e.getRowIndexes(t),a=t[0].findAncestor("table");let c=s,d=l;if(e.isSelectionRectangular(t)){const e={firstColumn:i,lastColumn:l,firstRow:r,lastRow:s};c=L(a,e),d=N(a,e)}const u=V(a,{startRow:r,startColumn:i,endRow:c,endColumn:d},o);return o.insert(u,n,0),n})):null}setCellSelection(e,t){const o=this._getCellsToSelect(e,t);this.editor.model.change((e=>{e.setSelection(o.cells.map((t=>e.createRangeOn(t))),{backward:o.backward})}))}getFocusCell(){const e=[...this.editor.model.document.selection.getRanges()].pop().getContainedElement();return e&&e.is("element","tableCell")?e:null}getAnchorCell(){const e=this.editor.model.document.selection,t=(0,b.first)(e.getRanges()).getContainedElement();return t&&t.is("element","tableCell")?t:null}_defineSelectionConverter(){const e=this.editor,t=new Set;e.conversion.for("editingDowncast").add((e=>e.on("selection",((e,o,n)=>{const i=n.writer;!function(e){for(const o of t)e.removeClass("ck-editor__editable_selected",o);t.clear()}(i);const l=this.getSelectedTableCells();if(!l)return;for(const e of l){const o=n.mapper.toViewElement(e);i.addClass("ck-editor__editable_selected",o),t.add(o)}const r=n.mapper.toViewElement(l[l.length-1]);i.setSelection(r,0)}),{priority:"lowest"})))}_enablePluginDisabling(){const e=this.editor;this.on("change:isEnabled",(()=>{if(!this.isEnabled){const t=this.getSelectedTableCells();if(!t)return;e.model.change((o=>{const n=o.createPositionAt(t[0],0),i=e.model.schema.getNearestSelectionRange(n);o.setSelection(i)}))}}))}_handleDeleteContent(e,t){const o=this.editor.plugins.get(U),[n,i]=t,l=this.editor.model,r=!i||"backward"==i.direction,s=o.getSelectedTableCells(n);s.length&&(e.stop(),l.change((e=>{const t=s[r?s.length-1:0];l.change((e=>{for(const t of s)l.deleteContent(e.createSelection(t,"in"))}));const o=l.schema.getNearestSelectionRange(e.createPositionAt(t,0));n.is("documentSelection")?e.setSelection(o):n.setTo(o)})))}_getCellsToSelect(e,t){const o=this.editor.plugins.get("TableUtils"),n=o.getCellLocation(e),i=o.getCellLocation(t),l=Math.min(n.row,i.row),r=Math.max(n.row,i.row),s=Math.min(n.column,i.column),a=Math.max(n.column,i.column),c=new Array(r-l+1).fill(null).map((()=>[])),d={startRow:l,endRow:r,startColumn:s,endColumn:a};for(const{row:t,cell:o}of new f(e.findAncestor("table"),d))c[t-l].push(o);const u=i.row<n.row,h=i.column<n.column;return u&&c.reverse(),h&&c.forEach((e=>e.reverse())),{cells:c.flat(),backward:u||h}}}class xe extends e.Plugin{static get pluginName(){return"TableClipboard"}static get requires(){return[Ae,U]}init(){const e=this.editor,t=e.editing.view.document;this.listenTo(t,"copy",((e,t)=>this._onCopyCut(e,t))),this.listenTo(t,"cut",((e,t)=>this._onCopyCut(e,t))),this.listenTo(e.model,"insertContent",((e,t)=>this._onInsertContent(e,...t)),{priority:"high"}),this.decorate("_replaceTableSlotCell")}_onCopyCut(e,t){const o=this.editor.plugins.get(Ae);if(!o.getSelectedTableCells())return;if("cut"==e.name&&this.editor.isReadOnly)return;t.preventDefault(),e.stop();const n=this.editor.data,i=this.editor.editing.view.document,l=n.toView(o.getSelectionAsFragment());i.fire("clipboardOutput",{dataTransfer:t.dataTransfer,content:l,method:e.name})}_onInsertContent(e,t,o){if(o&&!o.is("documentSelection"))return;const n=this.editor.model,i=this.editor.plugins.get(U);let l=Ve(t,n);if(!l)return;const r=i.getSelectionAffectedTableCells(n.document.selection);r.length?(e.stop(),n.change((e=>{const t={width:i.getColumns(l),height:i.getRows(l)},o=function(e,t,o,n){const i=e[0].findAncestor("table"),l=n.getColumnIndexes(e),r=n.getRowIndexes(e),s={firstColumn:l.first,lastColumn:l.last,firstRow:r.first,lastRow:r.last},a=1===e.length;a&&(s.lastRow+=t.height-1,s.lastColumn+=t.width-1,function(e,t,o,n){const i=n.getColumns(e),l=n.getRows(e);o>i&&n.insertColumns(e,{at:i,columns:o-i});t>l&&n.insertRows(e,{at:l,rows:t-l})}(i,s.lastRow+1,s.lastColumn+1,n));a||!n.isSelectionRectangular(e)?function(e,t,o){const{firstRow:n,lastRow:i,firstColumn:l,lastColumn:r}=t,s={first:n,last:i},a={first:l,last:r};Re(e,l,s,o),Re(e,r+1,s,o),Se(e,n,a,o),Se(e,i+1,a,o,n)}(i,s,o):(s.lastRow=L(i,s),s.lastColumn=N(i,s));return s}(r,t,e,i),n=o.lastRow-o.firstRow+1,s=o.lastColumn-o.firstColumn+1,a={startRow:0,startColumn:0,endRow:Math.min(n,t.height)-1,endColumn:Math.min(s,t.width)-1};l=V(l,a,e);const c=r[0].findAncestor("table"),d=this._replaceSelectedCellsWithPasted(l,t,c,o,e);if(this.editor.plugins.get("TableSelection").isEnabled){const t=i.sortRanges(d.map((t=>e.createRangeOn(t))));e.setSelection(t)}else e.setSelection(d[0],0)}))):W(l,i)}_replaceSelectedCellsWithPasted(e,t,o,n,i){const{width:l,height:r}=t,s=function(e,t,o){const n=new Array(o).fill(null).map((()=>new Array(t).fill(null)));for(const{column:t,row:o,cell:i}of new f(e))n[o][t]=i;return n}(e,l,r),a=[...new f(o,{startRow:n.firstRow,endRow:n.lastRow,startColumn:n.firstColumn,endColumn:n.lastColumn,includeAllSlots:!0})],c=[];let d;for(const e of a){const{row:t,column:o}=e;o===n.firstColumn&&(d=e.getPositionBefore());const a=t-n.firstRow,u=o-n.firstColumn,h=s[a%r][u%l],b=h?i.cloneElement(h):null,m=this._replaceTableSlotCell(e,b,d,i);m&&(E(m,t,o,n.lastRow,n.lastColumn,i),c.push(m),d=i.createPositionAfter(m))}const u=parseInt(o.getAttribute("headingRows")||0),h=parseInt(o.getAttribute("headingColumns")||0),b=n.firstRow<u&&u<=n.lastRow,m=n.firstColumn<h&&h<=n.lastColumn;if(b){const e=Se(o,u,{first:n.firstColumn,last:n.lastColumn},i,n.firstRow);c.push(...e)}if(m){const e=Re(o,h,{first:n.firstRow,last:n.lastRow},i);c.push(...e)}return c}_replaceTableSlotCell(e,t,o,n){const{cell:i,isAnchor:l}=e;return l&&n.remove(i),t?(n.insert(t,o),t):null}getTableIfOnlyTableInContent(e,t){return Ve(e,t)}}function Ve(e,t){if(!e.is("documentFragment")&&!e.is("element"))return null;if(e.is("element","table"))return e;if(1==e.childCount&&e.getChild(0).is("element","table"))return e.getChild(0);const o=t.createRangeIn(e);for(const e of o.getItems())if(e.is("element","table")){const n=t.createRange(o.start,t.createPositionBefore(e));if(t.hasContent(n,{ignoreWhitespaces:!0}))return null;const i=t.createRange(t.createPositionAfter(e),o.end);return t.hasContent(i,{ignoreWhitespaces:!0})?null:e}return null}function Se(e,t,o,n,i=0){if(t<1)return;return S(e,t,i).filter((({column:e,cellWidth:t})=>Ie(e,t,o))).map((({cell:e})=>R(e,t,n)))}function Re(e,t,o,n){if(t<1)return;return I(e,t).filter((({row:e,cellHeight:t})=>Ie(e,t,o))).map((({cell:e,column:o})=>P(e,o,t,n)))}function Ie(e,t,o){const n=e+t-1,{first:i,last:l}=o;return e>=i&&e<=l||e<i&&n>=i}class Pe extends e.Plugin{static get pluginName(){return"TableKeyboard"}static get requires(){return[Ae,U]}init(){const e=this.editor.editing.view.document;this.listenTo(e,"arrowKey",((...e)=>this._onArrowKey(...e)),{context:"table"}),this.listenTo(e,"tab",((...e)=>this._handleTabOnSelectedTable(...e)),{context:"figure"}),this.listenTo(e,"tab",((...e)=>this._handleTab(...e)),{context:["th","td"]})}_handleTabOnSelectedTable(e,t){const o=this.editor,n=o.model.document.selection.getSelectedElement();n&&n.is("element","table")&&(t.preventDefault(),t.stopPropagation(),e.stop(),o.model.change((e=>{e.setSelection(e.createRangeIn(n.getChild(0).getChild(0)))})))}_handleTab(e,t){const o=this.editor,n=this.editor.plugins.get(U),i=o.model.document.selection,l=!t.shiftKey;let r=n.getTableCellsContainingSelection(i)[0];if(r||(r=this.editor.plugins.get("TableSelection").getFocusCell()),!r)return;t.preventDefault(),t.stopPropagation(),e.stop();const s=r.parent,a=s.parent,c=a.getChildIndex(s),d=s.getChildIndex(r),u=0===d;if(!l&&u&&0===c)return void o.model.change((e=>{e.setSelection(e.createRangeOn(a))}));const h=d===s.childCount-1,b=c===n.getRows(a)-1;if(l&&b&&h&&(o.execute("insertTableRowBelow"),c===n.getRows(a)-1))return void o.model.change((e=>{e.setSelection(e.createRangeOn(a))}));let m;if(l&&h){const e=a.getChild(c+1);m=e.getChild(0)}else if(!l&&u){const e=a.getChild(c-1);m=e.getChild(e.childCount-1)}else m=s.getChild(d+(l?1:-1));o.model.change((e=>{e.setSelection(e.createRangeIn(m))}))}_onArrowKey(e,t){const o=this.editor,n=t.keyCode,i=(0,b.getLocalizedArrowKeyCodeDirection)(n,o.locale.contentLanguageDirection);this._handleArrowKeys(i,t.shiftKey)&&(t.preventDefault(),t.stopPropagation(),e.stop())}_handleArrowKeys(e,t){const o=this.editor.plugins.get(U),n=this.editor.model,i=n.document.selection,l=["right","down"].includes(e),r=o.getSelectedTableCells(i);if(r.length){let o;return o=t?this.editor.plugins.get("TableSelection").getFocusCell():l?r[r.length-1]:r[0],this._navigateFromCellInDirection(o,e,t),!0}const s=i.focus.findAncestor("tableCell");if(!s)return!1;if(!i.isCollapsed)if(t){if(i.isBackward==l&&!i.containsEntireContent(s))return!1}else{const e=i.getSelectedElement();if(!e||!n.schema.isObject(e))return!1}return!!this._isSelectionAtCellEdge(i,s,l)&&(this._navigateFromCellInDirection(s,e,t),!0)}_isSelectionAtCellEdge(e,t,o){const n=this.editor.model,i=this.editor.model.schema,l=o?e.getLastPosition():e.getFirstPosition();if(!i.getLimitElement(l).is("element","tableCell")){return n.createPositionAt(t,o?"end":0).isTouching(l)}const r=n.createSelection(l);return n.modifySelection(r,{direction:o?"forward":"backward"}),l.isEqual(r.focus)}_navigateFromCellInDirection(e,t,o=!1){const n=this.editor.model,i=e.findAncestor("table"),l=[...new f(i,{includeAllSlots:!0})],{row:r,column:s}=l[l.length-1],a=l.find((({cell:t})=>t==e));let{row:c,column:d}=a;switch(t){case"left":d--;break;case"up":c--;break;case"right":d+=a.cellWidth;break;case"down":c+=a.cellHeight}if(c<0||c>r||d<0&&c<=0||d>s&&c>=r)return void n.change((e=>{e.setSelection(e.createRangeOn(i))}));d<0?(d=o?0:s,c--):d>s&&(d=o?s:0,c++);const u=l.find((e=>e.row==c&&e.column==d)).cell,h=["right","down"].includes(t),b=this.editor.plugins.get("TableSelection");if(o&&b.isEnabled){const t=b.getAnchorCell()||e;b.setCellSelection(t,u)}else{const e=n.createPositionAt(u,h?0:"end");n.change((t=>{t.setSelection(e)}))}}}var Ee=o(492);class ze extends Ee.DomEventObserver{constructor(e){super(e),this.domEventType=["mousemove","mouseleave"]}onDomEvent(e){this.fire(e.type,e)}}class Be extends e.Plugin{static get pluginName(){return"TableMouse"}static get requires(){return[Ae,U]}init(){this.editor.editing.view.addObserver(ze),this._enableShiftClickSelection(),this._enableMouseDragSelection()}_enableShiftClickSelection(){const e=this.editor,t=e.plugins.get(U);let o=!1;const n=e.plugins.get(Ae);this.listenTo(e.editing.view.document,"mousedown",((i,l)=>{const r=e.model.document.selection;if(!this.isEnabled||!n.isEnabled)return;if(!l.domEvent.shiftKey)return;const s=n.getAnchorCell()||t.getTableCellsContainingSelection(r)[0];if(!s)return;const a=this._getModelTableCellFromDomEvent(l);a&&We(s,a)&&(o=!0,n.setCellSelection(s,a),l.preventDefault())})),this.listenTo(e.editing.view.document,"mouseup",(()=>{o=!1})),this.listenTo(e.editing.view.document,"selectionChange",(e=>{o&&e.stop()}),{priority:"highest"})}_enableMouseDragSelection(){const e=this.editor;let t,o,n=!1,i=!1;const l=e.plugins.get(Ae);this.listenTo(e.editing.view.document,"mousedown",((e,o)=>{this.isEnabled&&l.isEnabled&&(o.domEvent.shiftKey||o.domEvent.ctrlKey||o.domEvent.altKey||(t=this._getModelTableCellFromDomEvent(o)))})),this.listenTo(e.editing.view.document,"mousemove",((e,r)=>{if(!r.domEvent.buttons)return;if(!t)return;const s=this._getModelTableCellFromDomEvent(r);s&&We(t,s)&&(o=s,n||o==t||(n=!0)),n&&(i=!0,l.setCellSelection(t,o),r.preventDefault())})),this.listenTo(e.editing.view.document,"mouseup",(()=>{n=!1,i=!1,t=null,o=null})),this.listenTo(e.editing.view.document,"selectionChange",(e=>{i&&e.stop()}),{priority:"highest"})}_getModelTableCellFromDomEvent(e){const t=e.target,o=this.editor.editing.view.createPositionAt(t,0);return this.editor.editing.mapper.toModelPosition(o).parent.findAncestor("tableCell",{includeSelf:!0})}}function We(e,t){return e.parent.parent==t.parent.parent}var Le=o(660),Ne={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};he()(Le.Z,Ne);Le.Z.locals;class Fe extends e.Plugin{static get requires(){return[ge,ve,Ae,Be,Pe,xe,t.Widget]}static get pluginName(){return"Table"}}class He extends e.Plugin{static get pluginName(){return"PlainTableOutput"}static get requires(){return[Fe]}init(){const e=this.editor;e.conversion.for("dataDowncast").elementToStructure({model:"table",view:De,converterPriority:"high"}),e.plugins.has("TableCaption")&&e.conversion.for("dataDowncast").elementToElement({model:"caption",view:(e,{writer:t})=>{if("table"===e.parent.name)return t.createContainerElement("caption")},converterPriority:"high"}),e.plugins.has("TableProperties")&&function(e){const t={"border-width":"tableBorderWidth","border-color":"tableBorderColor","border-style":"tableBorderStyle","background-color":"tableBackgroundColor"};for(const[o,n]of Object.entries(t))e.conversion.for("dataDowncast").add((e=>e.on(`attribute:${n}:table`,((e,t,n)=>{const{item:i,attributeNewValue:l}=t,{mapper:r,writer:s}=n;if(!n.consumable.consume(i,e.name))return;const a=r.toViewElement(i);l?s.setStyle(o,l,a):s.removeStyle(o,a)}),{priority:"high"})))}(e)}}function De(e,{writer:t}){const o=e.getAttribute("headingRows")||0,n=t.createSlot((e=>e.is("element","tableRow")&&e.index<o)),i=t.createSlot((e=>e.is("element","tableRow")&&e.index>=o)),l=t.createSlot((e=>!e.is("element","tableRow"))),r=t.createContainerElement("thead",null,n),s=t.createContainerElement("tbody",null,i),a=[];return o&&a.push(r),o<e.childCount&&a.push(s),t.createContainerElement("table",null,[l,...a])}function Me(e){const t=e.getSelectedElement();return t&&je(t)?t:null}function Oe(e){const t=e.getFirstPosition();if(!t)return null;let o=t.parent;for(;o;){if(o.is("element")&&je(o))return o;o=o.parent}return null}function je(e){return!!e.getCustomProperty("table")&&(0,t.isWidget)(e)}class Ue extends e.Plugin{static get requires(){return[t.WidgetToolbarRepository]}static get pluginName(){return"TableToolbar"}afterInit(){const e=this.editor,o=e.t,n=e.plugins.get(t.WidgetToolbarRepository),i=e.config.get("table.contentToolbar"),l=e.config.get("table.tableToolbar");i&&n.register("tableContent",{ariaLabel:o("Table toolbar"),items:i,getRelatedElement:Oe}),l&&n.register("table",{ariaLabel:o("Table toolbar"),items:l,getRelatedElement:Me})}}var $e=o(252),Ze={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};he()($e.Z,Ze);$e.Z.locals;class Ke extends fe.View{constructor(e,t){super(e),this.set("value",""),this.set("isReadOnly",!1),this.set("isFocused",!1),this.set("isEmpty",!0),this.options=t,this.focusTracker=new b.FocusTracker,this._focusables=new fe.ViewCollection,this.dropdownView=this._createDropdownView(),this.inputView=this._createInputTextView(),this.keystrokes=new b.KeystrokeHandler,this._stillTyping=!1,this._focusCycler=new fe.FocusCycler({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-input-color"]},children:[this.dropdownView,this.inputView]}),this.on("change:value",((e,t,o)=>this._setInputValue(o)))}render(){super.render(),this.keystrokes.listenTo(this.dropdownView.panelView.element)}focus(){this.inputView.focus()}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}_createDropdownView(){const e=this.locale,t=e.t,o=this.bindTemplate,n=this._createColorGrid(e),i=(0,fe.createDropdown)(e),l=new fe.View,r=this._createRemoveColorButton();return l.setTemplate({tag:"span",attributes:{class:["ck","ck-input-color__button__preview"],style:{backgroundColor:o.to("value")}},children:[{tag:"span",attributes:{class:["ck","ck-input-color__button__preview__no-color-indicator",o.if("value","ck-hidden",(e=>""!=e))]}}]}),i.buttonView.extendTemplate({attributes:{class:"ck-input-color__button"}}),i.buttonView.children.add(l),i.buttonView.label=t("Color picker"),i.buttonView.tooltip=!0,i.panelPosition="rtl"===e.uiLanguageDirection?"se":"sw",i.panelView.children.add(r),i.panelView.children.add(n),i.bind("isEnabled").to(this,"isReadOnly",(e=>!e)),this._focusables.add(r),this._focusables.add(n),this.focusTracker.add(r.element),this.focusTracker.add(n.element),i}_createInputTextView(){const e=this.locale,t=new fe.InputTextView(e);return t.extendTemplate({on:{blur:t.bindTemplate.to("blur")}}),t.value=this.value,t.bind("isReadOnly","hasError").to(this),this.bind("isFocused","isEmpty").to(t),t.on("input",(()=>{const e=t.element.value,o=this.options.colorDefinitions.find((t=>e===t.label));this._stillTyping=!0,this.value=o&&o.color||e})),t.on("blur",(()=>{this._stillTyping=!1,this._setInputValue(t.element.value)})),t.delegate("input").to(this),t}_createRemoveColorButton(){const t=this.locale,o=t.t,n=new fe.ButtonView(t),i=this.options.defaultColorValue||"",l=o(i?"Restore default":"Remove color");return n.class="ck-input-color__remove-color",n.withText=!0,n.icon=e.icons.eraser,n.label=l,n.on("execute",(()=>{this.value=i,this.dropdownView.isOpen=!1,this.fire("input")})),n}_createColorGrid(e){const t=new fe.ColorGridView(e,{colorDefinitions:this.options.colorDefinitions,columns:this.options.columns});return t.on("execute",((e,t)=>{this.value=t.value,this.dropdownView.isOpen=!1,this.fire("input")})),t.bind("selectedColor").to(this,"value"),t}_setInputValue(e){if(!this._stillTyping){const t=qe(e),o=this.options.colorDefinitions.find((e=>t===qe(e.color)));this.inputView.value=o?o.label:e||""}}}function qe(e){return e.replace(/([(,])\s+/g,"$1").replace(/^\s+|\s+(?=[),\s]|$)/g,"").replace(/,|\s/g," ")}const Ge=e=>""===e;function Je(e){return{none:e("None"),solid:e("Solid"),dotted:e("Dotted"),dashed:e("Dashed"),double:e("Double"),groove:e("Groove"),ridge:e("Ridge"),inset:e("Inset"),outset:e("Outset")}}function Xe(e){return e('The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".')}function Ye(e){return e('The value is invalid. Try "10px" or "2em" or simply "2".')}function Qe(e){return e=e.trim(),Ge(e)||(0,Ee.isColor)(e)}function et(e){return e=e.trim(),Ge(e)||rt(e)||(0,Ee.isLength)(e)||(0,Ee.isPercentage)(e)}function tt(e){return e=e.trim(),Ge(e)||rt(e)||(0,Ee.isLength)(e)}function ot(e,t){const o=new b.Collection,n=Je(e.t);for(const i in n){const l={type:"button",model:new fe.Model({_borderStyleValue:i,label:n[i],withText:!0})};"none"===i?l.model.bind("isOn").to(e,"borderStyle",(e=>"none"===t?!e:e===i)):l.model.bind("isOn").to(e,"borderStyle",(e=>e===i)),o.add(l)}return o}function nt(e){const{view:t,icons:o,toolbar:n,labels:i,propertyName:l,nameToValue:r,defaultValue:s}=e;for(const e in i){const a=new fe.ButtonView(t.locale);a.set({label:i[e],icon:o[e],tooltip:i[e]});const c=r?r(e):e;a.bind("isOn").to(t,l,(e=>{let t=e;return""===e&&s&&(t=s),c===t})),a.on("execute",(()=>{t[l]=c})),n.items.add(a)}}const it=[{color:"hsl(0, 0%, 0%)",label:"Black"},{color:"hsl(0, 0%, 30%)",label:"Dim grey"},{color:"hsl(0, 0%, 60%)",label:"Grey"},{color:"hsl(0, 0%, 90%)",label:"Light grey"},{color:"hsl(0, 0%, 100%)",label:"White",hasBorder:!0},{color:"hsl(0, 75%, 60%)",label:"Red"},{color:"hsl(30, 75%, 60%)",label:"Orange"},{color:"hsl(60, 75%, 60%)",label:"Yellow"},{color:"hsl(90, 75%, 60%)",label:"Light green"},{color:"hsl(120, 75%, 60%)",label:"Green"},{color:"hsl(150, 75%, 60%)",label:"Aquamarine"},{color:"hsl(180, 75%, 60%)",label:"Turquoise"},{color:"hsl(210, 75%, 60%)",label:"Light blue"},{color:"hsl(240, 75%, 60%)",label:"Blue"},{color:"hsl(270, 75%, 60%)",label:"Purple"}];function lt(e){return(t,o,n)=>{const i=new Ke(t.locale,{colorDefinitions:(l=e.colorConfig,l.map((e=>({color:e.model,label:e.label,options:{hasBorder:e.hasBorder}})))),columns:e.columns,defaultColorValue:e.defaultColorValue});var l;return i.inputView.set({id:o,ariaDescribedById:n}),i.bind("isReadOnly").to(t,"isEnabled",(e=>!e)),i.bind("hasError").to(t,"errorText",(e=>!!e)),i.on("input",(()=>{t.errorText=null})),t.bind("isEmpty","isFocused").to(i),i}}function rt(e){const t=parseFloat(e);return!Number.isNaN(t)&&e===String(t)}var st=o(333),at={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};he()(st.Z,at);st.Z.locals;class ct extends fe.View{constructor(e,t={}){super(e);const o=this.bindTemplate;this.set("class",t.class||null),this.children=this.createCollection(),t.children&&t.children.forEach((e=>this.children.add(e))),this.set("_role",null),this.set("_ariaLabelledBy",null),t.labelView&&this.set({_role:"group",_ariaLabelledBy:t.labelView.id}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-form__row",o.to("class")],role:o.to("_role"),"aria-labelledby":o.to("_ariaLabelledBy")},children:this.children})}}var dt=o(934),ut={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};he()(dt.Z,ut);dt.Z.locals;var ht=o(686),bt={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};he()(ht.Z,bt);ht.Z.locals;var mt=o(773),gt={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};he()(mt.Z,gt);mt.Z.locals;const pt={left:e.icons.alignLeft,center:e.icons.alignCenter,right:e.icons.alignRight,justify:e.icons.alignJustify,top:e.icons.alignTop,middle:e.icons.alignMiddle,bottom:e.icons.alignBottom};class ft extends fe.View{constructor(e,t){super(e),this.set({borderStyle:"",borderWidth:"",borderColor:"",padding:"",backgroundColor:"",width:"",height:"",horizontalAlignment:"",verticalAlignment:""}),this.options=t;const{borderStyleDropdown:o,borderWidthInput:n,borderColorInput:i,borderRowLabel:l}=this._createBorderFields(),{backgroundRowLabel:r,backgroundInput:s}=this._createBackgroundFields(),{widthInput:a,operatorLabel:c,heightInput:d,dimensionsLabel:u}=this._createDimensionFields(),{horizontalAlignmentToolbar:h,verticalAlignmentToolbar:m,alignmentLabel:g}=this._createAlignmentFields();this.focusTracker=new b.FocusTracker,this.keystrokes=new b.KeystrokeHandler,this.children=this.createCollection(),this.borderStyleDropdown=o,this.borderWidthInput=n,this.borderColorInput=i,this.backgroundInput=s,this.paddingInput=this._createPaddingField(),this.widthInput=a,this.heightInput=d,this.horizontalAlignmentToolbar=h,this.verticalAlignmentToolbar=m;const{saveButtonView:p,cancelButtonView:f}=this._createActionButtons();this.saveButtonView=p,this.cancelButtonView=f,this._focusables=new fe.ViewCollection,this._focusCycler=new fe.FocusCycler({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.children.add(new fe.FormHeaderView(e,{label:this.t("Cell properties")})),this.children.add(new ct(e,{labelView:l,children:[l,o,i,n],class:"ck-table-form__border-row"})),this.children.add(new ct(e,{labelView:r,children:[r,s],class:"ck-table-form__background-row"})),this.children.add(new ct(e,{children:[new ct(e,{labelView:u,children:[u,a,c,d],class:"ck-table-form__dimensions-row"}),new ct(e,{children:[this.paddingInput],class:"ck-table-cell-properties-form__padding-row"})]})),this.children.add(new ct(e,{labelView:g,children:[g,h,m],class:"ck-table-cell-properties-form__alignment-row"})),this.children.add(new ct(e,{children:[this.saveButtonView,this.cancelButtonView],class:"ck-table-form__action-row"})),this.setTemplate({tag:"form",attributes:{class:["ck","ck-form","ck-table-form","ck-table-cell-properties-form"],tabindex:"-1"},children:this.children})}render(){super.render(),(0,fe.submitHandler)({view:this}),[this.borderStyleDropdown,this.borderColorInput,this.borderColorInput.fieldView.dropdownView.buttonView,this.borderWidthInput,this.backgroundInput,this.backgroundInput.fieldView.dropdownView.buttonView,this.widthInput,this.heightInput,this.paddingInput,this.horizontalAlignmentToolbar,this.verticalAlignmentToolbar,this.saveButtonView,this.cancelButtonView].forEach((e=>{this._focusables.add(e),this.focusTracker.add(e.element)})),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}_createBorderFields(){const e=this.options.defaultTableCellProperties,t={style:e.borderStyle,width:e.borderWidth,color:e.borderColor},o=lt({colorConfig:this.options.borderColors,columns:5,defaultColorValue:t.color}),n=this.locale,i=this.t,l=new fe.LabelView(n);l.text=i("Border");const r=Je(i),s=new fe.LabeledFieldView(n,fe.createLabeledDropdown);s.set({label:i("Style"),class:"ck-table-form__border-style"}),s.fieldView.buttonView.set({isOn:!1,withText:!0,tooltip:i("Style")}),s.fieldView.buttonView.bind("label").to(this,"borderStyle",(e=>r[e||"none"])),s.fieldView.on("execute",(e=>{this.borderStyle=e.source._borderStyleValue})),s.bind("isEmpty").to(this,"borderStyle",(e=>!e)),(0,fe.addListToDropdown)(s.fieldView,ot(this,t.style));const a=new fe.LabeledFieldView(n,fe.createLabeledInputText);a.set({label:i("Width"),class:"ck-table-form__border-width"}),a.fieldView.bind("value").to(this,"borderWidth"),a.bind("isEnabled").to(this,"borderStyle",wt),a.fieldView.on("input",(()=>{this.borderWidth=a.fieldView.element.value}));const c=new fe.LabeledFieldView(n,o);return c.set({label:i("Color"),class:"ck-table-form__border-color"}),c.fieldView.bind("value").to(this,"borderColor"),c.bind("isEnabled").to(this,"borderStyle",wt),c.fieldView.on("input",(()=>{this.borderColor=c.fieldView.value})),this.on("change:borderStyle",((e,o,n,i)=>{wt(n)||(this.borderColor="",this.borderWidth=""),wt(i)||(this.borderColor=t.color,this.borderWidth=t.width)})),{borderRowLabel:l,borderStyleDropdown:s,borderColorInput:c,borderWidthInput:a}}_createBackgroundFields(){const e=this.locale,t=this.t,o=new fe.LabelView(e);o.text=t("Background");const n=lt({colorConfig:this.options.backgroundColors,columns:5,defaultColorValue:this.options.defaultTableCellProperties.backgroundColor}),i=new fe.LabeledFieldView(e,n);return i.set({label:t("Color"),class:"ck-table-cell-properties-form__background"}),i.fieldView.bind("value").to(this,"backgroundColor"),i.fieldView.on("input",(()=>{this.backgroundColor=i.fieldView.value})),{backgroundRowLabel:o,backgroundInput:i}}_createDimensionFields(){const e=this.locale,t=this.t,o=new fe.LabelView(e);o.text=t("Dimensions");const n=new fe.LabeledFieldView(e,fe.createLabeledInputText);n.set({label:t("Width"),class:"ck-table-form__dimensions-row__width"}),n.fieldView.bind("value").to(this,"width"),n.fieldView.on("input",(()=>{this.width=n.fieldView.element.value}));const i=new fe.View(e);i.setTemplate({tag:"span",attributes:{class:["ck-table-form__dimension-operator"]},children:[{text:"×"}]});const l=new fe.LabeledFieldView(e,fe.createLabeledInputText);return l.set({label:t("Height"),class:"ck-table-form__dimensions-row__height"}),l.fieldView.bind("value").to(this,"height"),l.fieldView.on("input",(()=>{this.height=l.fieldView.element.value})),{dimensionsLabel:o,widthInput:n,operatorLabel:i,heightInput:l}}_createPaddingField(){const e=this.locale,t=this.t,o=new fe.LabeledFieldView(e,fe.createLabeledInputText);return o.set({label:t("Padding"),class:"ck-table-cell-properties-form__padding"}),o.fieldView.bind("value").to(this,"padding"),o.fieldView.on("input",(()=>{this.padding=o.fieldView.element.value})),o}_createAlignmentFields(){const e=this.locale,t=this.t,o=new fe.LabelView(e);o.text=t("Table cell text alignment");const n=new fe.ToolbarView(e),i="rtl"===this.locale.contentLanguageDirection;n.set({isCompact:!0,ariaLabel:t("Horizontal text alignment toolbar")}),nt({view:this,icons:pt,toolbar:n,labels:this._horizontalAlignmentLabels,propertyName:"horizontalAlignment",nameToValue:e=>{if(i){if("left"===e)return"right";if("right"===e)return"left"}return e},defaultValue:this.options.defaultTableCellProperties.horizontalAlignment});const l=new fe.ToolbarView(e);return l.set({isCompact:!0,ariaLabel:t("Vertical text alignment toolbar")}),nt({view:this,icons:pt,toolbar:l,labels:this._verticalAlignmentLabels,propertyName:"verticalAlignment",defaultValue:this.options.defaultTableCellProperties.verticalAlignment}),{horizontalAlignmentToolbar:n,verticalAlignmentToolbar:l,alignmentLabel:o}}_createActionButtons(){const t=this.locale,o=this.t,n=new fe.ButtonView(t),i=new fe.ButtonView(t),l=[this.borderWidthInput,this.borderColorInput,this.backgroundInput,this.paddingInput];return n.set({label:o("Save"),icon:e.icons.check,class:"ck-button-save",type:"submit",withText:!0}),n.bind("isEnabled").toMany(l,"errorText",((...e)=>e.every((e=>!e)))),i.set({label:o("Cancel"),icon:e.icons.cancel,class:"ck-button-cancel",withText:!0}),i.delegate("execute").to(this,"cancel"),{saveButtonView:n,cancelButtonView:i}}get _horizontalAlignmentLabels(){const e=this.locale,t=this.t,o=t("Align cell text to the left"),n=t("Align cell text to the center"),i=t("Align cell text to the right"),l=t("Justify cell text");return"rtl"===e.uiLanguageDirection?{right:i,center:n,left:o,justify:l}:{left:o,center:n,right:i,justify:l}}get _verticalAlignmentLabels(){const e=this.t;return{top:e("Align cell text to the top"),middle:e("Align cell text to the middle"),bottom:e("Align cell text to the bottom")}}}function wt(e){return"none"!==e}const kt=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)};const _t="object"==typeof global&&global&&global.Object===Object&&global;var vt="object"==typeof self&&self&&self.Object===Object&&self;const Ct=_t||vt||Function("return this")();const yt=function(){return Ct.Date.now()};var Tt=/\s/;const At=function(e){for(var t=e.length;t--&&Tt.test(e.charAt(t)););return t};var xt=/^\s+/;const Vt=function(e){return e?e.slice(0,At(e)+1).replace(xt,""):e};const St=Ct.Symbol;var Rt=Object.prototype,It=Rt.hasOwnProperty,Pt=Rt.toString,Et=St?St.toStringTag:void 0;const zt=function(e){var t=It.call(e,Et),o=e[Et];try{e[Et]=void 0;var n=!0}catch(e){}var i=Pt.call(e);return n&&(t?e[Et]=o:delete e[Et]),i};var Bt=Object.prototype.toString;const Wt=function(e){return Bt.call(e)};var Lt=St?St.toStringTag:void 0;const Nt=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":Lt&&Lt in Object(e)?zt(e):Wt(e)};const Ft=function(e){return null!=e&&"object"==typeof e};const Ht=function(e){return"symbol"==typeof e||Ft(e)&&"[object Symbol]"==Nt(e)};var Dt=/^[-+]0x[0-9a-f]+$/i,Mt=/^0b[01]+$/i,Ot=/^0o[0-7]+$/i,jt=parseInt;const Ut=function(e){if("number"==typeof e)return e;if(Ht(e))return NaN;if(kt(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=kt(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=Vt(e);var o=Mt.test(e);return o||Ot.test(e)?jt(e.slice(2),o?2:8):Dt.test(e)?NaN:+e};var $t=Math.max,Zt=Math.min;const Kt=function(e,t,o){var n,i,l,r,s,a,c=0,d=!1,u=!1,h=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function b(t){var o=n,l=i;return n=i=void 0,c=t,r=e.apply(l,o)}function m(e){return c=e,s=setTimeout(p,t),d?b(e):r}function g(e){var o=e-a;return void 0===a||o>=t||o<0||u&&e-c>=l}function p(){var e=yt();if(g(e))return f(e);s=setTimeout(p,function(e){var o=t-(e-a);return u?Zt(o,l-(e-c)):o}(e))}function f(e){return s=void 0,h&&n?b(e):(n=i=void 0,r)}function w(){var e=yt(),o=g(e);if(n=arguments,i=this,a=e,o){if(void 0===s)return m(a);if(u)return clearTimeout(s),s=setTimeout(p,t),b(a)}return void 0===s&&(s=setTimeout(p,t)),r}return t=Ut(t)||0,kt(o)&&(d=!!o.leading,l=(u="maxWait"in o)?$t(Ut(o.maxWait)||0,t):l,h="trailing"in o?!!o.trailing:h),w.cancel=function(){void 0!==s&&clearTimeout(s),c=0,n=a=i=s=void 0},w.flush=function(){return void 0===s?r:f(yt())},w},qt=fe.BalloonPanelView.defaultPositions,Gt=[qt.northArrowSouth,qt.northArrowSouthWest,qt.northArrowSouthEast,qt.southArrowNorth,qt.southArrowNorthWest,qt.southArrowNorthEast,qt.viewportStickyNorth];function Jt(e,t){const o=e.plugins.get("ContextualBalloon");if(Oe(e.editing.view.document.selection)){let n;n="cell"===t?Yt(e):Xt(e),o.updatePosition(n)}}function Xt(e){const t=e.model.document.selection.getFirstPosition().findAncestor("table"),o=e.editing.mapper.toViewElement(t);return{target:e.editing.view.domConverter.mapViewToDom(o),positions:Gt}}function Yt(e){const t=e.editing.mapper,o=e.editing.view.domConverter,n=e.model.document.selection;if(n.rangeCount>1)return{target:()=>function(e,t){const o=t.editing.mapper,n=t.editing.view.domConverter,i=Array.from(e).map((e=>{const t=Qt(e.start),i=o.toViewElement(t);return new b.Rect(n.mapViewToDom(i))}));return b.Rect.getBoundingRect(i)}(n.getRanges(),e),positions:Gt};const i=Qt(n.getFirstPosition()),l=t.toViewElement(i);return{target:o.mapViewToDom(l),positions:Gt}}function Qt(e){return e.nodeAfter&&e.nodeAfter.is("element","tableCell")?e.nodeAfter:e.findAncestor("tableCell")}function eo(e){if(!e||!kt(e))return e;const{top:t,right:o,bottom:n,left:i}=e;return t==o&&o==n&&n==i?t:void 0}function to(e,t){const o=parseFloat(e);return Number.isNaN(o)||String(o)!==String(e)?e:`${o}${t}`}function oo(e,t={}){const o=Object.assign({borderStyle:"none",borderWidth:"",borderColor:"",backgroundColor:"",width:"",height:""},e);return t.includeAlignmentProperty&&!o.alignment&&(o.alignment="center"),t.includePaddingProperty&&!o.padding&&(o.padding=""),t.includeVerticalAlignmentProperty&&!o.verticalAlignment&&(o.verticalAlignment="middle"),t.includeHorizontalAlignmentProperty&&!o.horizontalAlignment&&(o.horizontalAlignment=t.isRightToLeftContent?"right":"left"),o}const no={borderStyle:"tableCellBorderStyle",borderColor:"tableCellBorderColor",borderWidth:"tableCellBorderWidth",height:"tableCellHeight",width:"tableCellWidth",padding:"tableCellPadding",backgroundColor:"tableCellBackgroundColor",horizontalAlignment:"tableCellHorizontalAlignment",verticalAlignment:"tableCellVerticalAlignment"};class io extends e.Plugin{static get requires(){return[fe.ContextualBalloon]}static get pluginName(){return"TableCellPropertiesUI"}constructor(e){super(e),e.config.define("table.tableCellProperties",{borderColors:it,backgroundColors:it})}init(){const e=this.editor,t=e.t;this._defaultTableCellProperties=oo(e.config.get("table.tableCellProperties.defaultProperties"),{includeVerticalAlignmentProperty:!0,includeHorizontalAlignmentProperty:!0,includePaddingProperty:!0,isRightToLeftContent:"rtl"===e.locale.contentLanguageDirection}),this._balloon=e.plugins.get(fe.ContextualBalloon),this.view=this._createPropertiesView(),this._undoStepBatch=null,e.ui.componentFactory.add("tableCellProperties",(o=>{const n=new fe.ButtonView(o);n.set({label:t("Cell properties"),icon:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m11.105 18-.17 1H2.5A1.5 1.5 0 0 1 1 17.5v-15A1.5 1.5 0 0 1 2.5 1h15A1.5 1.5 0 0 1 19 2.5v9.975l-.85-.124-.15-.302V8h-5v4h.021l-.172.351-1.916.28-.151.027c-.287.063-.54.182-.755.341L8 13v5h3.105zM2 12h5V8H2v4zm10-4H8v4h4V8zM2 2v5h5V2H2zm0 16h5v-5H2v5zM13 7h5V2h-5v5zM8 2v5h4V2H8z" opacity=".6"/><path d="m15.5 11.5 1.323 2.68 2.957.43-2.14 2.085.505 2.946L15.5 18.25l-2.645 1.39.505-2.945-2.14-2.086 2.957-.43L15.5 11.5zM13 6a1 1 0 0 1 1 1v3.172a2.047 2.047 0 0 0-.293.443l-.858 1.736-1.916.28-.151.027A1.976 1.976 0 0 0 9.315 14H7a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h6zm-1 2H8v4h4V8z"/></svg>',tooltip:!0}),this.listenTo(n,"execute",(()=>this._showView()));const i=Object.values(no).map((t=>e.commands.get(t)));return n.bind("isEnabled").toMany(i,"isEnabled",((...e)=>e.some((e=>e)))),n}))}destroy(){super.destroy(),this.view.destroy()}_createPropertiesView(){const e=this.editor,t=e.editing.view.document,o=e.config.get("table.tableCellProperties"),n=(0,fe.normalizeColorOptions)(o.borderColors),i=(0,fe.getLocalizedColorOptions)(e.locale,n),l=(0,fe.normalizeColorOptions)(o.backgroundColors),r=(0,fe.getLocalizedColorOptions)(e.locale,l),s=new ft(e.locale,{borderColors:i,backgroundColors:r,defaultTableCellProperties:this._defaultTableCellProperties}),a=e.t;s.render(),this.listenTo(s,"submit",(()=>{this._hideView()})),this.listenTo(s,"cancel",(()=>{this._undoStepBatch.operations.length&&e.execute("undo",this._undoStepBatch),this._hideView()})),s.keystrokes.set("Esc",((e,t)=>{this._hideView(),t()})),this.listenTo(e.ui,"update",(()=>{Oe(t.selection)?this._isViewVisible&&Jt(e,"cell"):this._hideView()})),(0,fe.clickOutsideHandler)({emitter:s,activator:()=>this._isViewInBalloon,contextElements:[this._balloon.view.element],callback:()=>this._hideView()});const c=Xe(a),d=Ye(a);return s.on("change:borderStyle",this._getPropertyChangeCallback("tableCellBorderStyle",this._defaultTableCellProperties.borderStyle)),s.on("change:borderColor",this._getValidatedPropertyChangeCallback({viewField:s.borderColorInput,commandName:"tableCellBorderColor",errorText:c,validator:Qe,defaultValue:this._defaultTableCellProperties.borderColor})),s.on("change:borderWidth",this._getValidatedPropertyChangeCallback({viewField:s.borderWidthInput,commandName:"tableCellBorderWidth",errorText:d,validator:tt,defaultValue:this._defaultTableCellProperties.borderWidth})),s.on("change:padding",this._getValidatedPropertyChangeCallback({viewField:s.paddingInput,commandName:"tableCellPadding",errorText:d,validator:et,defaultValue:this._defaultTableCellProperties.padding})),s.on("change:width",this._getValidatedPropertyChangeCallback({viewField:s.widthInput,commandName:"tableCellWidth",errorText:d,validator:et,defaultValue:this._defaultTableCellProperties.width})),s.on("change:height",this._getValidatedPropertyChangeCallback({viewField:s.heightInput,commandName:"tableCellHeight",errorText:d,validator:et,defaultValue:this._defaultTableCellProperties.height})),s.on("change:backgroundColor",this._getValidatedPropertyChangeCallback({viewField:s.backgroundInput,commandName:"tableCellBackgroundColor",errorText:c,validator:Qe,defaultValue:this._defaultTableCellProperties.backgroundColor})),s.on("change:horizontalAlignment",this._getPropertyChangeCallback("tableCellHorizontalAlignment",this._defaultTableCellProperties.horizontalAlignment)),s.on("change:verticalAlignment",this._getPropertyChangeCallback("tableCellVerticalAlignment",this._defaultTableCellProperties.verticalAlignment)),s}_fillViewFormFromCommandValues(){const e=this.editor.commands,t=e.get("tableCellBorderStyle");Object.entries(no).map((([t,o])=>{const n=this._defaultTableCellProperties[t]||"";return[t,e.get(o).value||n]})).forEach((([e,o])=>{("borderColor"!==e&&"borderWidth"!==e||"none"!==t.value)&&this.view.set(e,o)}))}_showView(){const e=this.editor;this._fillViewFormFromCommandValues(),this._balloon.add({view:this.view,position:Yt(e)}),this._undoStepBatch=e.model.createBatch(),this.view.focus()}_hideView(){if(!this._isViewInBalloon)return;const e=this.editor;this.stopListening(e.ui,"update"),this.view.saveButtonView.focus(),this._balloon.remove(this.view),this.editor.editing.view.focus()}get _isViewVisible(){return this._balloon.visibleView===this.view}get _isViewInBalloon(){return this._balloon.hasView(this.view)}_getPropertyChangeCallback(e,t){return(o,n,i,l)=>{(l||t!==i)&&this.editor.execute(e,{value:i,batch:this._undoStepBatch})}}_getValidatedPropertyChangeCallback(e){const{commandName:t,viewField:o,validator:n,errorText:i,defaultValue:l}=e,r=Kt((()=>{o.errorText=i}),500);return(e,i,s,a)=>{r.cancel(),(a||l!==s)&&(n(s)?(this.editor.execute(t,{value:s,batch:this._undoStepBatch}),o.errorText=null):r())}}}class lo extends e.Command{constructor(e,t,o){super(e),this.attributeName=t,this._defaultValue=o}refresh(){const e=this.editor,t=this.editor.plugins.get("TableUtils").getSelectionAffectedTableCells(e.model.document.selection);this.isEnabled=!!t.length,this.value=this._getSingleValue(t)}execute(e={}){const{value:t,batch:o}=e,n=this.editor.model,i=this.editor.plugins.get("TableUtils").getSelectionAffectedTableCells(n.document.selection),l=this._getValueToSet(t);n.enqueueChange(o,(e=>{l?i.forEach((t=>e.setAttribute(this.attributeName,l,t))):i.forEach((t=>e.removeAttribute(this.attributeName,t)))}))}_getAttribute(e){if(!e)return;const t=e.getAttribute(this.attributeName);return t!==this._defaultValue?t:void 0}_getValueToSet(e){if(e!==this._defaultValue)return e}_getSingleValue(e){const t=this._getAttribute(e[0]);return e.every((e=>this._getAttribute(e)===t))?t:void 0}}class ro extends lo{constructor(e,t){super(e,"tableCellWidth",t)}_getValueToSet(e){if((e=to(e,"px"))!==this._defaultValue)return e}}class so extends e.Plugin{static get pluginName(){return"TableCellWidthEditing"}static get requires(){return[ge]}init(){const e=this.editor,t=oo(e.config.get("table.tableCellProperties.defaultProperties"));h(e.model.schema,e.conversion,{modelAttribute:"tableCellWidth",styleName:"width",defaultValue:t.width}),e.commands.add("tableCellWidth",new ro(e,t.width))}}class ao extends lo{constructor(e,t){super(e,"tableCellPadding",t)}_getAttribute(e){if(!e)return;const t=eo(e.getAttribute(this.attributeName));return t!==this._defaultValue?t:void 0}_getValueToSet(e){if((e=to(e,"px"))!==this._defaultValue)return e}}class co extends lo{constructor(e,t){super(e,"tableCellHeight",t)}_getValueToSet(e){return(e=to(e,"px"))===this._defaultValue?null:e}}class uo extends lo{constructor(e,t){super(e,"tableCellBackgroundColor",t)}}class ho extends lo{constructor(e,t){super(e,"tableCellVerticalAlignment",t)}}class bo extends lo{constructor(e,t){super(e,"tableCellHorizontalAlignment",t)}}class mo extends lo{constructor(e,t){super(e,"tableCellBorderStyle",t)}_getAttribute(e){if(!e)return;const t=eo(e.getAttribute(this.attributeName));return t!==this._defaultValue?t:void 0}}class go extends lo{constructor(e,t){super(e,"tableCellBorderColor",t)}_getAttribute(e){if(!e)return;const t=eo(e.getAttribute(this.attributeName));return t!==this._defaultValue?t:void 0}}class po extends lo{constructor(e,t){super(e,"tableCellBorderWidth",t)}_getAttribute(e){if(!e)return;const t=eo(e.getAttribute(this.attributeName));return t!==this._defaultValue?t:void 0}_getValueToSet(e){if((e=to(e,"px"))!==this._defaultValue)return e}}const fo=/^(top|middle|bottom)$/,wo=/^(left|center|right|justify)$/;class ko extends e.Plugin{static get pluginName(){return"TableCellPropertiesEditing"}static get requires(){return[ge,so]}init(){const e=this.editor,t=e.model.schema,o=e.conversion;e.config.define("table.tableCellProperties.defaultProperties",{});const n=oo(e.config.get("table.tableCellProperties.defaultProperties"),{includeVerticalAlignmentProperty:!0,includeHorizontalAlignmentProperty:!0,includePaddingProperty:!0,isRightToLeftContent:"rtl"===e.locale.contentLanguageDirection});e.data.addStyleProcessorRules(Ee.addBorderRules),function(e,t,o){const n={width:"tableCellBorderWidth",color:"tableCellBorderColor",style:"tableCellBorderStyle"};e.extend("tableCell",{allowAttributes:Object.values(n)}),l(t,"td",n,o),l(t,"th",n,o),r(t,{modelElement:"tableCell",modelAttribute:n.style,styleName:"border-style"}),r(t,{modelElement:"tableCell",modelAttribute:n.color,styleName:"border-color"}),r(t,{modelElement:"tableCell",modelAttribute:n.width,styleName:"border-width"})}(t,o,{color:n.borderColor,style:n.borderStyle,width:n.borderWidth}),e.commands.add("tableCellBorderStyle",new mo(e,n.borderStyle)),e.commands.add("tableCellBorderColor",new go(e,n.borderColor)),e.commands.add("tableCellBorderWidth",new po(e,n.borderWidth)),h(t,o,{modelAttribute:"tableCellHeight",styleName:"height",defaultValue:n.height}),e.commands.add("tableCellHeight",new co(e,n.height)),e.data.addStyleProcessorRules(Ee.addPaddingRules),h(t,o,{modelAttribute:"tableCellPadding",styleName:"padding",reduceBoxSides:!0,defaultValue:n.padding}),e.commands.add("tableCellPadding",new ao(e,n.padding)),e.data.addStyleProcessorRules(Ee.addBackgroundRules),h(t,o,{modelAttribute:"tableCellBackgroundColor",styleName:"background-color",defaultValue:n.backgroundColor}),e.commands.add("tableCellBackgroundColor",new uo(e,n.backgroundColor)),function(e,t,o){e.extend("tableCell",{allowAttributes:["tableCellHorizontalAlignment"]}),t.for("downcast").attributeToAttribute({model:{name:"tableCell",key:"tableCellHorizontalAlignment"},view:e=>({key:"style",value:{"text-align":e}})}),t.for("upcast").attributeToAttribute({view:{name:/^(td|th)$/,styles:{"text-align":wo}},model:{key:"tableCellHorizontalAlignment",value:e=>{const t=e.getStyle("text-align");return t===o?null:t}}}).attributeToAttribute({view:{name:/^(td|th)$/,attributes:{align:wo}},model:{key:"tableCellHorizontalAlignment",value:e=>{const t=e.getAttribute("align");return t===o?null:t}}})}(t,o,n.horizontalAlignment),e.commands.add("tableCellHorizontalAlignment",new bo(e,n.horizontalAlignment)),function(e,t,o){e.extend("tableCell",{allowAttributes:["tableCellVerticalAlignment"]}),t.for("downcast").attributeToAttribute({model:{name:"tableCell",key:"tableCellVerticalAlignment"},view:e=>({key:"style",value:{"vertical-align":e}})}),t.for("upcast").attributeToAttribute({view:{name:/^(td|th)$/,styles:{"vertical-align":fo}},model:{key:"tableCellVerticalAlignment",value:e=>{const t=e.getStyle("vertical-align");return t===o?null:t}}}).attributeToAttribute({view:{name:/^(td|th)$/,attributes:{valign:fo}},model:{key:"tableCellVerticalAlignment",value:e=>{const t=e.getAttribute("valign");return t===o?null:t}}})}(t,o,n.verticalAlignment),e.commands.add("tableCellVerticalAlignment",new ho(e,n.verticalAlignment))}}class _o extends e.Plugin{static get pluginName(){return"TableCellProperties"}static get requires(){return[ko,io]}}class vo extends e.Command{constructor(e,t,o){super(e),this.attributeName=t,this._defaultValue=o}refresh(){const e=this.editor.model.document.selection.getFirstPosition().findAncestor("table");this.isEnabled=!!e,this.value=this._getValue(e)}execute(e={}){const t=this.editor.model,o=t.document.selection,{value:n,batch:i}=e,l=o.getFirstPosition().findAncestor("table"),r=this._getValueToSet(n);t.enqueueChange(i,(e=>{r?e.setAttribute(this.attributeName,r,l):e.removeAttribute(this.attributeName,l)}))}_getValue(e){if(!e)return;const t=e.getAttribute(this.attributeName);return t!==this._defaultValue?t:void 0}_getValueToSet(e){if(e!==this._defaultValue)return e}}class Co extends vo{constructor(e,t){super(e,"tableBackgroundColor",t)}}class yo extends vo{constructor(e,t){super(e,"tableBorderColor",t)}_getValue(e){if(!e)return;const t=eo(e.getAttribute(this.attributeName));return t!==this._defaultValue?t:void 0}}class To extends vo{constructor(e,t){super(e,"tableBorderStyle",t)}_getValue(e){if(!e)return;const t=eo(e.getAttribute(this.attributeName));return t!==this._defaultValue?t:void 0}}class Ao extends vo{constructor(e,t){super(e,"tableBorderWidth",t)}_getValue(e){if(!e)return;const t=eo(e.getAttribute(this.attributeName));return t!==this._defaultValue?t:void 0}_getValueToSet(e){if((e=to(e,"px"))!==this._defaultValue)return e}}class xo extends vo{constructor(e,t){super(e,"tableWidth",t)}_getValueToSet(e){if((e=to(e,"px"))!==this._defaultValue)return e}}class Vo extends vo{constructor(e,t){super(e,"tableHeight",t)}_getValueToSet(e){return(e=to(e,"px"))===this._defaultValue?null:e}}class So extends vo{constructor(e,t){super(e,"tableAlignment",t)}}const Ro=/^(left|center|right)$/,Io=/^(left|none|right)$/;class Po extends e.Plugin{static get pluginName(){return"TablePropertiesEditing"}static get requires(){return[ge]}init(){const e=this.editor,t=e.model.schema,o=e.conversion;e.config.define("table.tableProperties.defaultProperties",{});const n=oo(e.config.get("table.tableProperties.defaultProperties"),{includeAlignmentProperty:!0});e.data.addStyleProcessorRules(Ee.addBorderRules),function(e,t,o){const n={width:"tableBorderWidth",color:"tableBorderColor",style:"tableBorderStyle"};e.extend("table",{allowAttributes:Object.values(n)}),l(t,"table",n,o),s(t,{modelAttribute:n.color,styleName:"border-color"}),s(t,{modelAttribute:n.style,styleName:"border-style"}),s(t,{modelAttribute:n.width,styleName:"border-width"})}(t,o,{color:n.borderColor,style:n.borderStyle,width:n.borderWidth}),e.commands.add("tableBorderColor",new yo(e,n.borderColor)),e.commands.add("tableBorderStyle",new To(e,n.borderStyle)),e.commands.add("tableBorderWidth",new Ao(e,n.borderWidth)),function(e,t,o){e.extend("table",{allowAttributes:["tableAlignment"]}),t.for("downcast").attributeToAttribute({model:{name:"table",key:"tableAlignment"},view:e=>({key:"style",value:{float:"center"===e?"none":e}}),converterPriority:"high"}),t.for("upcast").attributeToAttribute({view:{name:/^(table|figure)$/,styles:{float:Io}},model:{key:"tableAlignment",value:e=>{let t=e.getStyle("float");return"none"===t&&(t="center"),t===o?null:t}}}).attributeToAttribute({view:{attributes:{align:Ro}},model:{name:"table",key:"tableAlignment",value:e=>{const t=e.getAttribute("align");return t===o?null:t}}})}(t,o,n.alignment),e.commands.add("tableAlignment",new So(e,n.alignment)),Eo(t,o,{modelAttribute:"tableWidth",styleName:"width",defaultValue:n.width}),e.commands.add("tableWidth",new xo(e,n.width)),Eo(t,o,{modelAttribute:"tableHeight",styleName:"height",defaultValue:n.height}),e.commands.add("tableHeight",new Vo(e,n.height)),e.data.addStyleProcessorRules(Ee.addBackgroundRules),function(e,t,o){const{modelAttribute:n}=o;e.extend("table",{allowAttributes:[n]}),i(t,{viewElement:"table",...o}),s(t,o)}(t,o,{modelAttribute:"tableBackgroundColor",styleName:"background-color",defaultValue:n.backgroundColor}),e.commands.add("tableBackgroundColor",new Co(e,n.backgroundColor))}}function Eo(e,t,o){const{modelAttribute:n}=o;e.extend("table",{allowAttributes:[n]}),i(t,{viewElement:/^(table|figure)$/,...o}),r(t,{modelElement:"table",...o})}var zo=o(99),Bo={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};he()(zo.Z,Bo);zo.Z.locals;const Wo={left:e.icons.objectLeft,center:e.icons.objectCenter,right:e.icons.objectRight};class Lo extends fe.View{constructor(e,t){super(e),this.set({borderStyle:"",borderWidth:"",borderColor:"",backgroundColor:"",width:"",height:"",alignment:""}),this.options=t;const{borderStyleDropdown:o,borderWidthInput:n,borderColorInput:i,borderRowLabel:l}=this._createBorderFields(),{backgroundRowLabel:r,backgroundInput:s}=this._createBackgroundFields(),{widthInput:a,operatorLabel:c,heightInput:d,dimensionsLabel:u}=this._createDimensionFields(),{alignmentToolbar:h,alignmentLabel:m}=this._createAlignmentFields();this.focusTracker=new b.FocusTracker,this.keystrokes=new b.KeystrokeHandler,this.children=this.createCollection(),this.borderStyleDropdown=o,this.borderWidthInput=n,this.borderColorInput=i,this.backgroundInput=s,this.widthInput=a,this.heightInput=d,this.alignmentToolbar=h;const{saveButtonView:g,cancelButtonView:p}=this._createActionButtons();this.saveButtonView=g,this.cancelButtonView=p,this._focusables=new fe.ViewCollection,this._focusCycler=new fe.FocusCycler({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.children.add(new fe.FormHeaderView(e,{label:this.t("Table properties")})),this.children.add(new ct(e,{labelView:l,children:[l,o,i,n],class:"ck-table-form__border-row"})),this.children.add(new ct(e,{labelView:r,children:[r,s],class:"ck-table-form__background-row"})),this.children.add(new ct(e,{children:[new ct(e,{labelView:u,children:[u,a,c,d],class:"ck-table-form__dimensions-row"}),new ct(e,{labelView:m,children:[m,h],class:"ck-table-properties-form__alignment-row"})]})),this.children.add(new ct(e,{children:[this.saveButtonView,this.cancelButtonView],class:"ck-table-form__action-row"})),this.setTemplate({tag:"form",attributes:{class:["ck","ck-form","ck-table-form","ck-table-properties-form"],tabindex:"-1"},children:this.children})}render(){super.render(),(0,fe.submitHandler)({view:this}),[this.borderStyleDropdown,this.borderColorInput,this.borderColorInput.fieldView.dropdownView.buttonView,this.borderWidthInput,this.backgroundInput,this.backgroundInput.fieldView.dropdownView.buttonView,this.widthInput,this.heightInput,this.alignmentToolbar,this.saveButtonView,this.cancelButtonView].forEach((e=>{this._focusables.add(e),this.focusTracker.add(e.element)})),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}_createBorderFields(){const e=this.options.defaultTableProperties,t={style:e.borderStyle,width:e.borderWidth,color:e.borderColor},o=lt({colorConfig:this.options.borderColors,columns:5,defaultColorValue:t.color}),n=this.locale,i=this.t,l=new fe.LabelView(n);l.text=i("Border");const r=Je(this.t),s=new fe.LabeledFieldView(n,fe.createLabeledDropdown);s.set({label:i("Style"),class:"ck-table-form__border-style"}),s.fieldView.buttonView.set({isOn:!1,withText:!0,tooltip:i("Style")}),s.fieldView.buttonView.bind("label").to(this,"borderStyle",(e=>r[e||"none"])),s.fieldView.on("execute",(e=>{this.borderStyle=e.source._borderStyleValue})),s.bind("isEmpty").to(this,"borderStyle",(e=>!e)),(0,fe.addListToDropdown)(s.fieldView,ot(this,t.style));const a=new fe.LabeledFieldView(n,fe.createLabeledInputText);a.set({label:i("Width"),class:"ck-table-form__border-width"}),a.fieldView.bind("value").to(this,"borderWidth"),a.bind("isEnabled").to(this,"borderStyle",No),a.fieldView.on("input",(()=>{this.borderWidth=a.fieldView.element.value}));const c=new fe.LabeledFieldView(n,o);return c.set({label:i("Color"),class:"ck-table-form__border-color"}),c.fieldView.bind("value").to(this,"borderColor"),c.bind("isEnabled").to(this,"borderStyle",No),c.fieldView.on("input",(()=>{this.borderColor=c.fieldView.value})),this.on("change:borderStyle",((e,o,n,i)=>{No(n)||(this.borderColor="",this.borderWidth=""),No(i)||(this.borderColor=t.color,this.borderWidth=t.width)})),{borderRowLabel:l,borderStyleDropdown:s,borderColorInput:c,borderWidthInput:a}}_createBackgroundFields(){const e=this.locale,t=this.t,o=new fe.LabelView(e);o.text=t("Background");const n=lt({colorConfig:this.options.backgroundColors,columns:5,defaultColorValue:this.options.defaultTableProperties.backgroundColor}),i=new fe.LabeledFieldView(e,n);return i.set({label:t("Color"),class:"ck-table-properties-form__background"}),i.fieldView.bind("value").to(this,"backgroundColor"),i.fieldView.on("input",(()=>{this.backgroundColor=i.fieldView.value})),{backgroundRowLabel:o,backgroundInput:i}}_createDimensionFields(){const e=this.locale,t=this.t,o=new fe.LabelView(e);o.text=t("Dimensions");const n=new fe.LabeledFieldView(e,fe.createLabeledInputText);n.set({label:t("Width"),class:"ck-table-form__dimensions-row__width"}),n.fieldView.bind("value").to(this,"width"),n.fieldView.on("input",(()=>{this.width=n.fieldView.element.value}));const i=new fe.View(e);i.setTemplate({tag:"span",attributes:{class:["ck-table-form__dimension-operator"]},children:[{text:"×"}]});const l=new fe.LabeledFieldView(e,fe.createLabeledInputText);return l.set({label:t("Height"),class:"ck-table-form__dimensions-row__height"}),l.fieldView.bind("value").to(this,"height"),l.fieldView.on("input",(()=>{this.height=l.fieldView.element.value})),{dimensionsLabel:o,widthInput:n,operatorLabel:i,heightInput:l}}_createAlignmentFields(){const e=this.locale,t=this.t,o=new fe.LabelView(e);o.text=t("Alignment");const n=new fe.ToolbarView(e);return n.set({isCompact:!0,ariaLabel:t("Table alignment toolbar")}),nt({view:this,icons:Wo,toolbar:n,labels:this._alignmentLabels,propertyName:"alignment",defaultValue:this.options.defaultTableProperties.alignment}),{alignmentLabel:o,alignmentToolbar:n}}_createActionButtons(){const t=this.locale,o=this.t,n=new fe.ButtonView(t),i=new fe.ButtonView(t),l=[this.borderWidthInput,this.borderColorInput,this.backgroundInput,this.widthInput,this.heightInput];return n.set({label:o("Save"),icon:e.icons.check,class:"ck-button-save",type:"submit",withText:!0}),n.bind("isEnabled").toMany(l,"errorText",((...e)=>e.every((e=>!e)))),i.set({label:o("Cancel"),icon:e.icons.cancel,class:"ck-button-cancel",withText:!0}),i.delegate("execute").to(this,"cancel"),{saveButtonView:n,cancelButtonView:i}}get _alignmentLabels(){const e=this.locale,t=this.t,o=t("Align table to the left"),n=t("Center table"),i=t("Align table to the right");return"rtl"===e.uiLanguageDirection?{right:i,center:n,left:o}:{left:o,center:n,right:i}}}function No(e){return"none"!==e}const Fo={borderStyle:"tableBorderStyle",borderColor:"tableBorderColor",borderWidth:"tableBorderWidth",backgroundColor:"tableBackgroundColor",width:"tableWidth",height:"tableHeight",alignment:"tableAlignment"};class Ho extends e.Plugin{static get requires(){return[fe.ContextualBalloon]}static get pluginName(){return"TablePropertiesUI"}constructor(e){super(e),e.config.define("table.tableProperties",{borderColors:it,backgroundColors:it})}init(){const e=this.editor,t=e.t;this._defaultTableProperties=oo(e.config.get("table.tableProperties.defaultProperties"),{includeAlignmentProperty:!0}),this._balloon=e.plugins.get(fe.ContextualBalloon),this.view=this._createPropertiesView(),this._undoStepBatch=null,e.ui.componentFactory.add("tableProperties",(o=>{const n=new fe.ButtonView(o);n.set({label:t("Table properties"),icon:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M8 2v5h4V2h1v5h5v1h-5v4h.021l-.172.351-1.916.28-.151.027c-.287.063-.54.182-.755.341L8 13v5H7v-5H2v-1h5V8H2V7h5V2h1zm4 6H8v4h4V8z" opacity=".6"/><path d="m15.5 11.5 1.323 2.68 2.957.43-2.14 2.085.505 2.946L15.5 18.25l-2.645 1.39.505-2.945-2.14-2.086 2.957-.43L15.5 11.5zM17 1a2 2 0 0 1 2 2v9.475l-.85-.124-.857-1.736a2.048 2.048 0 0 0-.292-.44L17 3H3v14h7.808l.402.392L10.935 19H3a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h14z"/></svg>',tooltip:!0}),this.listenTo(n,"execute",(()=>this._showView()));const i=Object.values(Fo).map((t=>e.commands.get(t)));return n.bind("isEnabled").toMany(i,"isEnabled",((...e)=>e.some((e=>e)))),n}))}destroy(){super.destroy(),this.view.destroy()}_createPropertiesView(){const e=this.editor,t=e.config.get("table.tableProperties"),o=(0,fe.normalizeColorOptions)(t.borderColors),n=(0,fe.getLocalizedColorOptions)(e.locale,o),i=(0,fe.normalizeColorOptions)(t.backgroundColors),l=(0,fe.getLocalizedColorOptions)(e.locale,i),r=new Lo(e.locale,{borderColors:n,backgroundColors:l,defaultTableProperties:this._defaultTableProperties}),s=e.t;r.render(),this.listenTo(r,"submit",(()=>{this._hideView()})),this.listenTo(r,"cancel",(()=>{this._undoStepBatch.operations.length&&e.execute("undo",this._undoStepBatch),this._hideView()})),r.keystrokes.set("Esc",((e,t)=>{this._hideView(),t()})),(0,fe.clickOutsideHandler)({emitter:r,activator:()=>this._isViewInBalloon,contextElements:[this._balloon.view.element],callback:()=>this._hideView()});const a=Xe(s),c=Ye(s);return r.on("change:borderStyle",this._getPropertyChangeCallback("tableBorderStyle",this._defaultTableProperties.borderStyle)),r.on("change:borderColor",this._getValidatedPropertyChangeCallback({viewField:r.borderColorInput,commandName:"tableBorderColor",errorText:a,validator:Qe,defaultValue:this._defaultTableProperties.borderColor})),r.on("change:borderWidth",this._getValidatedPropertyChangeCallback({viewField:r.borderWidthInput,commandName:"tableBorderWidth",errorText:c,validator:tt,defaultValue:this._defaultTableProperties.borderWidth})),r.on("change:backgroundColor",this._getValidatedPropertyChangeCallback({viewField:r.backgroundInput,commandName:"tableBackgroundColor",errorText:a,validator:Qe,defaultValue:this._defaultTableProperties.backgroundColor})),r.on("change:width",this._getValidatedPropertyChangeCallback({viewField:r.widthInput,commandName:"tableWidth",errorText:c,validator:et,defaultValue:this._defaultTableProperties.width})),r.on("change:height",this._getValidatedPropertyChangeCallback({viewField:r.heightInput,commandName:"tableHeight",errorText:c,validator:et,defaultValue:this._defaultTableProperties.height})),r.on("change:alignment",this._getPropertyChangeCallback("tableAlignment",this._defaultTableProperties.alignment)),r}_fillViewFormFromCommandValues(){const e=this.editor.commands,t=e.get("tableBorderStyle");Object.entries(Fo).map((([t,o])=>{const n=this._defaultTableProperties[t]||"";return[t,e.get(o).value||n]})).forEach((([e,o])=>{("borderColor"!==e&&"borderWidth"!==e||"none"!==t.value)&&this.view.set(e,o)}))}_showView(){const e=this.editor;this.listenTo(e.ui,"update",(()=>{this._updateView()})),this._fillViewFormFromCommandValues(),this._balloon.add({view:this.view,position:Xt(e)}),this._undoStepBatch=e.model.createBatch(),this.view.focus()}_hideView(){const e=this.editor;this.stopListening(e.ui,"update"),this.view.saveButtonView.focus(),this._balloon.remove(this.view),this.editor.editing.view.focus()}_updateView(){const e=this.editor;Oe(e.editing.view.document.selection)?this._isViewVisible&&Jt(e,"table"):this._hideView()}get _isViewVisible(){return this._balloon.visibleView===this.view}get _isViewInBalloon(){return this._balloon.hasView(this.view)}_getPropertyChangeCallback(e,t){return(o,n,i,l)=>{(l||t!==i)&&this.editor.execute(e,{value:i,batch:this._undoStepBatch})}}_getValidatedPropertyChangeCallback(e){const{commandName:t,viewField:o,validator:n,errorText:i,defaultValue:l}=e,r=Kt((()=>{o.errorText=i}),500);return(e,i,s,a)=>{r.cancel(),(a||l!==s)&&(n(s)?(this.editor.execute(t,{value:s,batch:this._undoStepBatch}),o.errorText=null):r())}}}class Do extends e.Plugin{static get pluginName(){return"TableProperties"}static get requires(){return[Po,Ho]}}function Mo(e){e.document.registerPostFixer((t=>function(e,t){const o=t.document.differ.getChanges();let n=!1;for(const t of o){if("insert"!=t.type)continue;if(t.position.parent.is("element","table")||"table"==t.name){const o="table"==t.name?t.position.nodeAfter:t.position.parent,i=Array.from(o.getChildren()).filter((e=>e.is("element","caption"))),l=i.shift();if(!l)continue;for(const t of i)e.move(e.createRangeIn(t),l,"end"),e.remove(t);l.nextSibling&&(e.move(e.createRangeOn(l),o,"end"),n=!0),n=!!i.length||n}}return n}(t,e)))}function Oo(e){return!!e&&e.is("element","table")}function jo(e){for(const t of e.getChildren())if(t.is("element","caption"))return t;return null}function Uo(e){const t=e.parent;return"figcaption"==e.name&&t&&"figure"==t.name&&t.hasClass("table")||"caption"==e.name&&t&&"table"==t.name?{name:!0}:null}function $o(e){const t=e.getSelectedElement();return t&&t.is("element","table")?t:e.getFirstPosition().findAncestor("table")}class Zo extends e.Command{refresh(){const e=$o(this.editor.model.document.selection);this.isEnabled=!!e,this.isEnabled?this.value=!!jo(e):this.value=!1}execute(e={}){const{focusCaptionOnShow:t}=e;this.editor.model.change((e=>{this.value?this._hideTableCaption(e):this._showTableCaption(e,t)}))}_showTableCaption(e,t){const o=$o(this.editor.model.document.selection),n=this.editor.plugins.get("TableCaptionEditing")._getSavedCaption(o)||e.createElement("caption");e.append(n,o),t&&e.setSelection(n,"in")}_hideTableCaption(e){const t=$o(this.editor.model.document.selection),o=this.editor.plugins.get("TableCaptionEditing"),n=jo(t);o._saveCaption(t,n),e.setSelection(e.createRangeIn(t.getChild(0).getChild(0))),e.remove(n)}}class Ko extends e.Plugin{static get pluginName(){return"TableCaptionEditing"}constructor(e){super(e),this._savedCaptionsMap=new WeakMap}init(){const e=this.editor,o=e.model.schema,n=e.editing.view,i=e.t;o.isRegistered("caption")?o.extend("caption",{allowIn:"table"}):o.register("caption",{allowIn:"table",allowContentOf:"$block",isLimit:!0}),e.commands.add("toggleTableCaption",new Zo(this.editor)),e.conversion.for("upcast").elementToElement({view:Uo,model:"caption"}),e.conversion.for("dataDowncast").elementToElement({model:"caption",view:(e,{writer:t})=>Oo(e.parent)?t.createContainerElement("figcaption"):null}),e.conversion.for("editingDowncast").elementToElement({model:"caption",view:(e,{writer:o})=>{if(!Oo(e.parent))return null;const l=o.createEditableElement("figcaption");return o.setCustomProperty("tableCaption",!0,l),(0,Ee.enablePlaceholder)({view:n,element:l,text:i("Enter table caption"),keepOnFocus:!0}),(0,t.toWidgetEditable)(l,o)}}),Mo(e.model)}_getSavedCaption(e){const t=this._savedCaptionsMap.get(e);return t?Ee.Element.fromJSON(t):null}_saveCaption(e,t){this._savedCaptionsMap.set(e,t.toJSON())}}class qo extends e.Plugin{static get pluginName(){return"TableCaptionUI"}init(){const t=this.editor,o=t.editing.view,n=t.t;t.ui.componentFactory.add("toggleTableCaption",(i=>{const l=t.commands.get("toggleTableCaption"),r=new fe.ButtonView(i);return r.set({icon:e.icons.caption,tooltip:!0,isToggleable:!0}),r.bind("isOn","isEnabled").to(l,"value","isEnabled"),r.bind("label").to(l,"value",(e=>n(e?"Toggle caption off":"Toggle caption on"))),this.listenTo(r,"execute",(()=>{if(t.execute("toggleTableCaption",{focusCaptionOnShow:!0}),l.value){const e=function(e){const t=$o(e);return t?jo(t):null}(t.model.document.selection),n=t.editing.mapper.toViewElement(e);if(!n)return;o.scrollToTheSelection(),o.change((e=>{e.addClass("table__caption_highlighted",n)}))}t.editing.view.focus()})),r}))}}var Go=o(665),Jo={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};he()(Go.Z,Jo);Go.Z.locals;class Xo extends e.Plugin{static get pluginName(){return"TableCaption"}static get requires(){return[Ko,qo]}}const Yo=function(e,t,o){var n=!0,i=!0;if("function"!=typeof e)throw new TypeError("Expected a function");return kt(o)&&(n="leading"in o?!!o.leading:n,i="trailing"in o?!!o.trailing:i),Kt(e,t,{leading:n,maxWait:t,trailing:i})};class Qo extends vo{constructor(e,t){super(e,"tableWidth",t)}refresh(){this.isEnabled=!0}execute(e={}){const t=this.editor.model,o=e.table||t.document.selection.getSelectedElement(),{tableWidth:n,columnWidths:i}=e;t.change((e=>{n?(e.setAttribute(this.attributeName,n,o),e.setAttribute("columnWidths",i,o)):e.removeAttribute(this.attributeName,o)}))}}class en extends vo{constructor(e,t){super(e,"columnWidths",t)}refresh(){this.isEnabled=!0}execute(e={}){const t=this.editor.model,o=e.table||t.document.selection.getSelectedElement(),{columnWidths:n}=e;t.change((e=>{n?e.setAttribute(this.attributeName,n,o):e.removeAttribute(this.attributeName,o)}))}}function tn(e,t){return 4e3/on(e,t)}function on(e,t){const o=nn(e,"tbody",t)||nn(e,"thead",t);return ln(t.editing.view.domConverter.mapViewToDom(o))}function nn(e,t,o){return[...[...o.editing.mapper.toViewElement(e).getChildren()].find((e=>e.is("element","table"))).getChildren()].find((e=>e.is("element",t)))}function ln(e){const t=b.global.window.getComputedStyle(e);return"border-box"===t.boxSizing?parseFloat(t.width)-parseFloat(t.paddingLeft)-parseFloat(t.paddingRight)-parseFloat(t.borderLeftWidth)-parseFloat(t.borderRightWidth):parseFloat(t.width)}function rn(e){const t=Math.pow(10,2),o=parseFloat(e);return Math.round(o*t)/t}function sn(e){return e.map((e=>parseFloat(e))).filter((e=>!Number.isNaN(e))).reduce(((e,t)=>e+t),0)}function an(e){e=function(e){const t=e.filter((e=>"auto"===e)).length;if(0===t)return e.map((e=>rn(e)));const o=sn(e),n=Math.max((100-o)/t,5);return e.map((e=>"auto"===e?n:e)).map((e=>rn(e)))}(e);const t=sn(e);return 100===t?e:e.map((e=>rn(100*e/t))).map(((e,t,o)=>{if(!(t===o.length-1))return e;return rn(e+100-sn(o))}))}function cn(e,t){let o=[...t.getChildren()].find((e=>e.hasClass("ck-table-column-resizer")));o||(o=e.createUIElement("div",{class:"ck-table-column-resizer"}),e.insert(e.createPositionAt(t,"end"),o))}function dn(e){const t=b.global.window.getComputedStyle(e);return"border-box"===t.boxSizing?parseInt(t.width):parseFloat(t.width)+parseFloat(t.paddingLeft)+parseFloat(t.paddingRight)+parseFloat(t.borderWidth)}function un(){return e=>e.on("attribute:columnWidths:table",((e,t,o)=>{const n=o.writer,i=t.item,l=[...o.mapper.toViewElement(i).getChildren()].find((e=>e.is("element","table")));t.attributeNewValue?(!function(e,t,o){const n=o.split(",");let i=[...t.getChildren()].find((e=>e.is("element","colgroup")));if(i)for(const t of[...i.getChildren()])e.remove(t);else i=e.createContainerElement("colgroup");for(const t of Array(n.length).keys()){const o=e.createEmptyElement("col");e.setStyle("width",n[t],o),e.insert(e.createPositionAt(i,"end"),o)}e.insert(e.createPositionAt(t,"start"),i)}(n,l,t.attributeNewValue),n.addClass("ck-table-resized",l)):(!function(e,t){const o=[...t.getChildren()].find((e=>e.is("element","colgroup")));e.remove(o)}(n,l),n.removeClass("ck-table-resized",l))}))}class hn extends e.Plugin{static get requires(){return[ge,U]}static get pluginName(){return"TableColumnResizeEditing"}constructor(e){super(e),this._isResizingActive=!1,this.set("_isResizingAllowed",!0),this._resizingData=null,this._domEmitter=Object.create(b.DomEmitterMixin),this._tableUtilsPlugin=e.plugins.get("TableUtils"),this.on("change:_isResizingAllowed",((t,o,n)=>{e.editing.view.change((t=>{t[n?"removeClass":"addClass"]("ck-column-resize_disabled",e.editing.view.document.getRoot())}))}))}init(){this._extendSchema(),this._registerPostFixer(),this._registerConverters(),this._registerResizingListeners(),this._registerColgroupFixer(),this._registerResizerInserter();const e=this.editor,t=e.plugins.get("TableColumnResize");e.commands.add("resizeTableWidth",new Qo(e)),e.commands.add("resizeColumnWidths",new en(e));const o=e.commands.get("resizeTableWidth"),n=e.commands.get("resizeColumnWidths");this.bind("_isResizingAllowed").to(e,"isReadOnly",t,"isEnabled",o,"isEnabled",n,"isEnabled",((e,t,o,n)=>!e&&t&&o&&n))}destroy(){this._domEmitter.stopListening(),super.destroy()}_extendSchema(){this.editor.model.schema.extend("table",{allowAttributes:["tableWidth","columnWidths"]})}_registerPostFixer(){const e=this.editor.model;function t(e,t,o){const n=o._tableUtilsPlugin.getColumns(t);if(0===n-e.length)return;const i=function(e,t){const o=new Set;for(const n of e.getChanges())if("insert"==n.type&&n.position.nodeAfter&&"tableCell"==n.position.nodeAfter.name&&n.position.nodeAfter.getAncestors().includes(t))o.add(n.position.nodeAfter);else if("remove"==n.type){const e=n.position.nodeBefore||n.position.nodeAfter;"tableCell"==e.name&&e.getAncestors().includes(t)&&o.add(e)}return o}(o.editor.model.document.differ,t);for(const r of i){const i=n-e.length;if(0===i)continue;const s=i>0,a=o._tableUtilsPlugin.getCellLocation(r).column;if(s){const n=tn(t,o.editor),r=(l=n,Array(i).fill(l));e.splice(a,0,...r)}else{const t=e.splice(a,Math.abs(i));e[a]+=sn(t)}}var l}e.document.registerPostFixer((o=>{let n=!1;for(const i of function(e){const t=new Set;for(const o of e.document.differ.getChanges()){let n=null;switch(o.type){case"insert":n=["table","tableRow","tableCell"].includes(o.name)?o.position:null;break;case"remove":n=["tableRow","tableCell"].includes(o.name)?o.position:null;break;case"attribute":o.range.start.nodeAfter&&(n=["table","tableRow","tableCell"].includes(o.range.start.nodeAfter.name)?o.range.start:null)}if(!n)continue;const i=n.nodeAfter&&"table"===n.nodeAfter.name?n.nodeAfter:n.findAncestor("table");for(const o of e.createRangeOn(i).getItems())o.is("element")&&"table"===o.name&&o.hasAttribute("columnWidths")&&t.add(o)}return t}(e)){const e=an(i.getAttribute("columnWidths").split(","));t(e,i,this);const l=e.map((e=>`${e}%`)).join(",");i.getAttribute("columnWidths")!==l&&(o.setAttribute("columnWidths",l,i),n=!0)}return n}))}_registerConverters(){const e=this.editor.conversion;var t;e.for("upcast").attributeToAttribute({view:{name:"figure",key:"style",value:{width:/[\s\S]+/}},model:{name:"table",key:"tableWidth",value:e=>e.getStyle("width")}}),e.for("upcast").add((t=this._tableUtilsPlugin,e=>e.on("element:colgroup",((e,o,n)=>{const i=o.viewItem;if(!n.consumable.test(i,{name:!0}))return;n.consumable.consume(i,{name:!0});const l=o.modelCursor.findAncestor("table"),r=t.getColumns(l);let s=[...Array(r).keys()].map((e=>{const t=i.getChild(e);if(!t||!t.is("element","col"))return"auto";const o=t.getStyle("width");return o&&o.endsWith("%")?o:"auto"}));s.includes("auto")&&(s=an(s).map((e=>e+"%"))),n.writer.setAttribute("columnWidths",s.join(","),l)})))),e.for("downcast").attributeToAttribute({model:{name:"table",key:"tableWidth"},view:e=>({name:"figure",key:"style",value:{width:e}})}),e.for("downcast").add(un())}_registerResizingListeners(){const e=this.editor.editing.view;e.addObserver(ze),e.document.on("mousedown",this._onMouseDownHandler.bind(this),{priority:"high"}),this._domEmitter.listenTo(b.global.window.document,"mousemove",Yo(this._onMouseMoveHandler.bind(this),50)),this._domEmitter.listenTo(b.global.window.document,"mouseup",this._onMouseUpHandler.bind(this))}_onMouseDownHandler(e,t){const o=t.target;if(!o.hasClass("ck-table-column-resizer"))return;if(!this._isResizingAllowed)return;t.preventDefault(),e.stop();const n=this.editor,i=function(e,t,o){const n=Array(t.getColumns(e)),i=new f(e);for(const e of i){const t=o.editing.mapper.toViewElement(e.cell),i=dn(o.editing.view.domConverter.mapViewToDom(t));(!n[e.column]||i<n[e.column])&&(n[e.column]=rn(i))}return n}(n.editing.mapper.toModelElement(o.findAncestor("figure")),this._tableUtilsPlugin,n),l=o.findAncestor("table"),r=n.editing.view;[...l.getChildren()].find((e=>e.is("element","colgroup")))||r.change((e=>{!function(e,t,o){const n=e.createContainerElement("colgroup");for(let o=0;o<t.length;o++){const i=e.createEmptyElement("col"),l=`${rn(t[o]/sn(t)*100)}%`;e.setStyle("width",l,i),e.insert(e.createPositionAt(n,"end"),i)}e.insert(e.createPositionAt(o,"start"),n)}(e,i,l)})),this._isResizingActive=!0,this._resizingData=this._getResizingData(t,i),r.change((e=>function(e,t,o){const n=o.widths.viewFigureWidth/o.widths.viewFigureParentWidth;e.addClass("ck-table-resized",t),e.addClass("ck-table-column-resizer__active",o.elements.viewResizer),e.setStyle("width",`${rn(100*n)}%`,t.findAncestor("figure"))}(e,l,this._resizingData)))}_onMouseMoveHandler(e,t){if(!this._isResizingActive)return;if(!this._isResizingAllowed)return void this._onMouseUpHandler();const{columnPosition:o,flags:{isRightEdge:n,isTableCentered:i,isLtrContent:l},elements:{viewFigure:r,viewLeftColumn:s,viewRightColumn:a},widths:{viewFigureParentWidth:c,tableWidth:d,leftColumnWidth:u,rightColumnWidth:h}}=this._resizingData,b=40-u,m=n?c-d:h-40,g=(l?1:-1)*(n&&i?2:1),p=(f=(t.clientX-o)*g,w=Math.min(b,0),k=Math.max(m,0),rn(f<=w?w:f>=k?k:f));var f,w,k;0!==p&&this.editor.editing.view.change((e=>{const t=rn(100*(u+p)/d);if(e.setStyle("width",`${t}%`,s),n){const t=rn(100*(d+p)/c);e.setStyle("width",`${t}%`,r)}else{const t=rn(100*(h-p)/d);e.setStyle("width",`${t}%`,a)}}))}_onMouseUpHandler(){if(!this._isResizingActive)return;const{viewResizer:e,modelTable:t,viewFigure:o,viewColgroup:n}=this._resizingData.elements,i=this.editor,l=i.editing.view,r=t.getAttribute("columnWidths"),s=[...n.getChildren()].map((e=>e.getStyle("width"))).join(","),a=r!==s,c=t.getAttribute("tableWidth"),d=o.getStyle("width"),u=c!==d;(a||u)&&(this._isResizingAllowed?u?i.execute("resizeTableWidth",{table:t,tableWidth:`${rn(d)}%`,columnWidths:s}):i.execute("resizeColumnWidths",{columnWidths:s,table:t}):l.change((e=>{if(r){const t=r.split(",");for(const o of n.getChildren())e.setStyle("width",t.shift(),o)}else e.remove(n);u&&(c?e.setStyle("width",c,o):e.removeStyle("width",o)),r||c||e.removeClass("ck-table-resized",[...o.getChildren()].find((e=>"table"===e.name)))}))),l.change((t=>{t.removeClass("ck-table-column-resizer__active",e)})),this._isResizingActive=!1,this._resizingData=null}_getResizingData(e,t){const o=this.editor,n=e.domEvent.clientX,i=e.target,l=i.findAncestor("td")||i.findAncestor("th"),r=o.editing.mapper.toModelElement(l),s=r.findAncestor("table"),a=function(e,t){const o=t.getCellLocation(e).column;return{leftEdge:o,rightEdge:o+(e.getAttribute("colspan")||1)-1}}(r,this._tableUtilsPlugin).rightEdge,c=a===this._tableUtilsPlugin.getColumns(s)-1,d=!s.hasAttribute("tableAlignment"),u="rtl"!==o.locale.contentLanguageDirection,h=l.findAncestor("table"),b=h.findAncestor("figure"),m=[...h.getChildren()].find((e=>e.is("element","colgroup"))),g=m.getChild(a),p=c?void 0:m.getChild(a+1);return{columnPosition:n,flags:{isRightEdge:c,isTableCentered:d,isLtrContent:u},elements:{viewResizer:i,modelTable:s,viewFigure:b,viewColgroup:m,viewLeftColumn:g,viewRightColumn:p},widths:{viewFigureParentWidth:ln(o.editing.view.domConverter.mapViewToDom(b.parent)),viewFigureWidth:ln(o.editing.view.domConverter.mapViewToDom(b)),tableWidth:on(s,o),leftColumnWidth:t[a],rightColumnWidth:c?void 0:t[a+1]}}}_registerColgroupFixer(){const e=this.editor;this.listenTo(e.editing.view.document,"layoutChanged",(()=>{const t=e.editing.view.document.selection.getFirstPosition().getAncestors().reverse().find((e=>"table"===e.name)),o=t&&[...t.getChildren()].find((e=>e.is("element","colgroup"))),n=e.model.document.selection.getFirstPosition().findAncestor("table");n&&n.hasAttribute("columnWidths")&&t&&!o&&e.editing.reconvertItem(n)}),{priority:"low"})}_registerResizerInserter(){const e=this.editor.editing.view;e.on("render",(()=>{for(const t of e.createRangeIn(e.document.getRoot()))["td","th"].includes(t.item.name)&&e.change((e=>{cn(e,t.item)}))}),{priority:"lowest"})}}var bn=o(975),mn={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};he()(bn.Z,mn);bn.Z.locals;class gn extends e.Plugin{static get requires(){return[hn,so]}static get pluginName(){return"TableColumnResize"}}})(),(window.CKEditor5=window.CKEditor5||{}).table=n})();
\ No newline at end of file
diff --git a/core/assets/vendor/ckeditor5/table/translations/ko.js b/core/assets/vendor/ckeditor5/table/translations/ko.js
index a35b3251c8..c346b6be24 100644
--- a/core/assets/vendor/ckeditor5/table/translations/ko.js
+++ b/core/assets/vendor/ckeditor5/table/translations/ko.js
@@ -1 +1 @@
-!function(e){const t=e.ko=e.ko||{};t.dictionary=Object.assign(t.dictionary||{},{"Align cell text to the bottom":"셀 텍스트를 아래로 정렬","Align cell text to the center":"셀 텍스트를 가로 가운데로 정렬","Align cell text to the left":"셀 텍스트를 왼쪽으로 정렬","Align cell text to the middle":"셀 텍스트를 세로 가운데로 정렬","Align cell text to the right":"셀 텍스트를 오른쪽으로 정렬","Align cell text to the top":"셀 텍스트를 위로 정렬","Align table to the left":"테이블을 왼쪽으로 정렬","Align table to the right":"테이블을 오른쪽으로 정렬",Alignment:"정렬",Background:"배경색",Border:"테두리","Cell properties":"셀 속성","Center table":"테이블을 가운데로 정렬",Color:"색","Color picker":"색상 선택기",Column:"열",Dashed:"파선","Delete column":"열 삭제","Delete row":"행 삭제",Dimensions:"크기",Dotted:"점선",Double:"이중선","Enter table caption":"테이블 캡션 입력",Groove:"음각선","Header column":"헤더 열","Header row":"헤더 행",Height:"세로","Horizontal text alignment toolbar":"가로 텍스트 정렬 도구 모음","Insert column left":"왼쪽에 열 삽입","Insert column right":"오른쪽에 열 삽입","Insert row above":"위에 행 삽입","Insert row below":"아래에 행 삽입","Insert table":"테이블 삽입",Inset:"측면 음각선","Justify cell text":"셀 텍스트를 양쪽으로 정렬","Merge cell down":"아래 셀과 병합","Merge cell left":"왼쪽 셀과 병합","Merge cell right":"오른쪽 셀과 병합","Merge cell up":"위 셀과 병합","Merge cells":"셀 병합",None:"선 없음",Outset:"측면 양각선",Padding:"여백",Ridge:"양각선",Row:"행","Select column":"열 선택","Select row":"행 선택",Solid:"실선","Split cell horizontally":"가로로 셀 분할","Split cell vertically":"세로로 셀 분할",Style:"스타일","Table alignment toolbar":"표 정렬 도구 모음","Table cell text alignment":"표 셀 텍스트 정렬","Table properties":"표 속성","Table toolbar":"표 도구 모음",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':'유효하지 않은 색입니다. "#FF0000"이나 "rgb(255,0,0)", 또는 "red"를 입력해 보세요.','The value is invalid. Try "10px" or "2em" or simply "2".':'유효하지 않은 값입니다. "10px"이나 "2em", 또는 그냥 "2"를 입력해 보세요.',"Toggle caption off":"캡션 지우기","Toggle caption on":"캡션 넣기","Vertical text alignment toolbar":"세로 텍스트 정렬 도구 모음",Width:"가로"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
+!function(e){const t=e.ko=e.ko||{};t.dictionary=Object.assign(t.dictionary||{},{"Align cell text to the bottom":"셀 텍스트를 아래로 정렬","Align cell text to the center":"셀 텍스트를 가로 가운데로 정렬","Align cell text to the left":"셀 텍스트를 왼쪽으로 정렬","Align cell text to the middle":"셀 텍스트를 세로 가운데로 정렬","Align cell text to the right":"셀 텍스트를 오른쪽으로 정렬","Align cell text to the top":"셀 텍스트를 위로 정렬","Align table to the left":"테이블을 왼쪽으로 정렬","Align table to the right":"테이블을 오른쪽으로 정렬",Alignment:"정렬",Background:"배경색",Border:"테두리","Cell properties":"셀 속성","Center table":"테이블을 가운데로 정렬",Color:"색","Color picker":"색상 선택기",Column:"열",Dashed:"파선","Delete column":"열 삭제","Delete row":"행 삭제",Dimensions:"크기",Dotted:"점선",Double:"이중선","Enter table caption":"테이블 캡션 입력",Groove:"음각선","Header column":"헤더 열","Header row":"헤더 행",Height:"세로","Horizontal text alignment toolbar":"가로 텍스트 정렬 도구 모음","Insert column left":"왼쪽에 열 삽입","Insert column right":"오른쪽에 열 삽입","Insert row above":"위에 행 삽입","Insert row below":"아래에 행 삽입","Insert table":"테이블 삽입",Inset:"측면 음각선","Justify cell text":"셀 텍스트를 양쪽으로 정렬","Merge cell down":"아래 셀과 병합","Merge cell left":"왼쪽 셀과 병합","Merge cell right":"오른쪽 셀과 병합","Merge cell up":"위 셀과 병합","Merge cells":"셀 병합",None:"선 없음",Outset:"측면 양각선",Padding:"여백",Ridge:"양각선",Row:"행","Select column":"열 선택","Select row":"행 선택",Solid:"실선","Split cell horizontally":"가로로 셀 분할","Split cell vertically":"세로로 셀 분할",Style:"스타일","Table alignment toolbar":"표 정렬 도구 모음","Table cell text alignment":"표 셀 텍스트 정렬","Table properties":"표 속성","Table toolbar":"표 도구 모음",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':'유효하지 않은 색입니다. "#FF0000"이나 "rgb(255,0,0)", 또는 "red"를 입력해 보세요.','The value is invalid. Try "10px" or "2em" or simply "2".':'유효하지 않은 값입니다. "10px"나 "2em" 또는 그냥 "2"를 입력해 보세요.',"Toggle caption off":"캡션 지우기","Toggle caption on":"캡션 넣기","Vertical text alignment toolbar":"세로 텍스트 정렬 도구 모음",Width:"가로"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
diff --git a/core/composer.json b/core/composer.json
index 25c3781e1d..47e5279b12 100644
--- a/core/composer.json
+++ b/core/composer.json
@@ -30,7 +30,7 @@
         "symfony/process": "^6.1",
         "symfony/polyfill-iconv": "^1.26",
         "symfony/yaml": "^6.1",
-        "twig/twig": "^3.4",
+        "twig/twig": "^3.4.3",
         "doctrine/annotations": "^1.13",
         "guzzlehttp/guzzle": "^7.5",
         "guzzlehttp/psr7": "^2.4",
diff --git a/core/config/schema/core.data_types.schema.yml b/core/config/schema/core.data_types.schema.yml
index 640421d224..e6d7f243ac 100644
--- a/core/config/schema/core.data_types.schema.yml
+++ b/core/config/schema/core.data_types.schema.yml
@@ -735,12 +735,12 @@ field.field_settings.decimal:
       label: 'Suffix'
 
 field.value.decimal:
-   type: mapping
-   label: 'Default value'
-   mapping:
-     value:
-       type: float
-       label: 'Value'
+  type: mapping
+  label: 'Default value'
+  mapping:
+    value:
+      type: float
+      label: 'Value'
 
 # Schema for the configuration of the Float field type.
 
diff --git a/core/config/schema/core.entity.schema.yml b/core/config/schema/core.entity.schema.yml
index 5603953b1c..7b44b0acb4 100644
--- a/core/config/schema/core.entity.schema.yml
+++ b/core/config/schema/core.entity.schema.yml
@@ -71,16 +71,16 @@ field_formatter:
       type: string
       label: 'Format type machine name'
     label:
-       type: string
-       label: 'Label setting machine name'
+      type: string
+      label: 'Label setting machine name'
     settings:
       type: field.formatter.settings.[%parent.type]
       label: 'Settings'
     third_party_settings:
-       type: sequence
-       label: 'Third party settings'
-       sequence:
-         type: field.formatter.third_party.[%key]
+      type: sequence
+      label: 'Third party settings'
+      sequence:
+        type: field.formatter.third_party.[%key]
 
 field_formatter.entity_view_display:
   type: field_formatter
diff --git a/core/core.libraries.yml b/core/core.libraries.yml
index 0c74bf2d0e..40aa0cb6f9 100644
--- a/core/core.libraries.yml
+++ b/core/core.libraries.yml
@@ -19,10 +19,10 @@ internal.backbone:
 
 ckeditor5:
   remote: https://github.com/ckeditor/ckeditor5
-  version: "35.1.0"
+  version: "35.2.1"
   license:
     name: GNU-GPL-2.0-or-later
-    url: https://github.com/ckeditor/ckeditor5/blob/v35.1.0/LICENSE.md
+    url: https://raw.githubusercontent.com/ckeditor/ckeditor5/v35.2.1/LICENSE.md
     gpl-compatible: true
   js:
     # This file is not aggregated to force the creation of a new aggregate file
@@ -36,10 +36,10 @@ ckeditor5:
 
 ckeditor5.editorClassic:
   remote: https://github.com/ckeditor/ckeditor5
-  version: "35.1.0"
+  version: "35.2.1"
   license:
     name: GNU-GPL-2.0-or-later
-    url: https://github.com/ckeditor/ckeditor5/blob/v35.1.0/LICENSE.md
+    url: https://raw.githubusercontent.com/ckeditor/ckeditor5/v35.2.1/LICENSE.md
     gpl-compatible: true
   js:
     assets/vendor/ckeditor5/editor-classic/editor-classic.js: { minified: true }
@@ -48,10 +48,10 @@ ckeditor5.editorClassic:
 
 ckeditor5.editorDecoupled:
   remote: https://github.com/ckeditor/ckeditor5
-  version: "35.1.0"
+  version: "35.2.1"
   license:
     name: GNU-GPL-2.0-or-later
-    url: https://github.com/ckeditor/ckeditor5/blob/v35.1.0/LICENSE.md
+    url: https://raw.githubusercontent.com/ckeditor/ckeditor5/v35.2.1/LICENSE.md
     gpl-compatible: true
   js:
     assets/vendor/ckeditor5/editor-decoupled/editor-decoupled.js: { minified: true }
@@ -74,10 +74,10 @@ ckeditor5.essentials:
 
 ckeditor5.heading:
   remote: https://github.com/ckeditor/ckeditor5
-  version: "35.1.0"
+  version: "35.2.1"
   license:
     name: GNU-GPL-2.0-or-later
-    url: https://github.com/ckeditor/ckeditor5/blob/v35.1.0/LICENSE.md
+    url: https://raw.githubusercontent.com/ckeditor/ckeditor5/v35.2.1/LICENSE.md
     gpl-compatible: true
   js:
     assets/vendor/ckeditor5/heading/heading.js: { minified: true }
@@ -87,10 +87,10 @@ ckeditor5.heading:
 
 ckeditor5.basic:
   remote: https://github.com/ckeditor/ckeditor5
-  version: "35.1.0"
+  version: "35.2.1"
   license:
     name: GNU-GPL-2.0-or-later
-    url: https://github.com/ckeditor/ckeditor5/blob/v35.1.0/LICENSE.md
+    url: https://raw.githubusercontent.com/ckeditor/ckeditor5/v35.2.1/LICENSE.md
     gpl-compatible: true
   js:
     assets/vendor/ckeditor5/basic-styles/basic-styles.js: { minified: true }
@@ -100,10 +100,10 @@ ckeditor5.basic:
 
 ckeditor5.specialCharacters:
   remote: https://github.com/ckeditor/ckeditor5
-  version: "35.1.0"
+  version: "35.2.1"
   license:
     name: GNU-GPL-2.0-or-later
-    url: https://github.com/ckeditor/ckeditor5/blob/v35.1.0/LICENSE.md
+    url: https://raw.githubusercontent.com/ckeditor/ckeditor5/v35.2.1/LICENSE.md
     gpl-compatible: true
   js:
     assets/vendor/ckeditor5/special-characters/special-characters.js: { minified: true }
@@ -113,10 +113,10 @@ ckeditor5.specialCharacters:
 
 ckeditor5.blockquote:
   remote: https://github.com/ckeditor/ckeditor5
-  version: "35.1.0"
+  version: "35.2.1"
   license:
     name: GNU-GPL-2.0-or-later
-    url: https://github.com/ckeditor/ckeditor5/blob/v35.1.0/LICENSE.md
+    url: https://raw.githubusercontent.com/ckeditor/ckeditor5/v35.2.1/LICENSE.md
     gpl-compatible: true
   js:
     assets/vendor/ckeditor5/block-quote/block-quote.js: { minified: true }
@@ -126,10 +126,10 @@ ckeditor5.blockquote:
 
 ckeditor5.image:
   remote: https://github.com/ckeditor/ckeditor5
-  version: "35.1.0"
+  version: "35.2.1"
   license:
     name: GNU-GPL-2.0-or-later
-    url: https://github.com/ckeditor/ckeditor5/blob/v35.1.0/LICENSE.md
+    url: https://raw.githubusercontent.com/ckeditor/ckeditor5/v35.2.1/LICENSE.md
     gpl-compatible: true
   js:
     assets/vendor/ckeditor5/image/image.js: { minified: true }
@@ -139,10 +139,10 @@ ckeditor5.image:
 
 ckeditor5.link:
   remote: https://github.com/ckeditor/ckeditor5
-  version: "35.1.0"
+  version: "35.2.1"
   license:
     name: GNU-GPL-2.0-or-later
-    url: https://github.com/ckeditor/ckeditor5/blob/v35.1.0/LICENSE.md
+    url: https://raw.githubusercontent.com/ckeditor/ckeditor5/v35.2.1/LICENSE.md
     gpl-compatible: true
   js:
     assets/vendor/ckeditor5/link/link.js: { minified: true }
@@ -152,10 +152,10 @@ ckeditor5.link:
 
 ckeditor5.list:
   remote: https://github.com/ckeditor/ckeditor5
-  version: "35.1.0"
+  version: "35.2.1"
   license:
     name: GNU-GPL-2.0-or-later
-    url: https://github.com/ckeditor/ckeditor5/blob/v35.1.0/LICENSE.md
+    url: https://raw.githubusercontent.com/ckeditor/ckeditor5/v35.2.1/LICENSE.md
     gpl-compatible: true
   js:
     assets/vendor/ckeditor5/list/list.js: { minified: true }
@@ -165,10 +165,10 @@ ckeditor5.list:
 
 ckeditor5.horizontalLine:
   remote: https://github.com/ckeditor/ckeditor5
-  version: "35.1.0"
+  version: "35.2.1"
   license:
     name: GNU-GPL-2.0-or-later
-    url: https://github.com/ckeditor/ckeditor5/blob/v35.1.0/LICENSE.md
+    url: https://raw.githubusercontent.com/ckeditor/ckeditor5/v35.2.1/LICENSE.md
     gpl-compatible: true
   js:
     assets/vendor/ckeditor5/horizontal-line/horizontal-line.js: { minified: true }
@@ -178,10 +178,10 @@ ckeditor5.horizontalLine:
 
 ckeditor5.htmlSupport:
   remote: https://github.com/ckeditor/ckeditor5
-  version: "35.1.0"
+  version: "35.2.1"
   license:
     name: GNU-GPL-2.0-or-later
-    url: https://github.com/ckeditor/ckeditor5/blob/v35.1.0/LICENSE.md
+    url: https://raw.githubusercontent.com/ckeditor/ckeditor5/v35.2.1/LICENSE.md
     gpl-compatible: true
   js:
     assets/vendor/ckeditor5/html-support/html-support.js: { minified: true }
@@ -191,10 +191,10 @@ ckeditor5.htmlSupport:
 
 ckeditor5.alignment:
   remote: https://github.com/ckeditor/ckeditor5
-  version: "35.1.0"
+  version: "35.2.1"
   license:
     name: GNU-GPL-2.0-or-later
-    url: https://github.com/ckeditor/ckeditor5/blob/v35.1.0/LICENSE.md
+    url: https://raw.githubusercontent.com/ckeditor/ckeditor5/v35.2.1/LICENSE.md
     gpl-compatible: true
   js:
     assets/vendor/ckeditor5/alignment/alignment.js: { minified: true }
@@ -204,10 +204,10 @@ ckeditor5.alignment:
 
 ckeditor5.removeFormat:
   remote: https://github.com/ckeditor/ckeditor5
-  version: "35.1.0"
+  version: "35.2.1"
   license:
     name: GNU-GPL-2.0-or-later
-    url: https://github.com/ckeditor/ckeditor5/blob/v35.1.0/LICENSE.md
+    url: https://raw.githubusercontent.com/ckeditor/ckeditor5/v35.2.1/LICENSE.md
     gpl-compatible: true
   js:
     assets/vendor/ckeditor5/remove-format/remove-format.js: { minified: true }
@@ -217,10 +217,10 @@ ckeditor5.removeFormat:
 
 ckeditor5.pasteFromOffice:
   remote: https://github.com/ckeditor/ckeditor5
-  version: "35.1.0"
+  version: "35.2.1"
   license:
     name: GNU-GPL-2.0-or-later
-    url: https://github.com/ckeditor/ckeditor5/blob/v35.1.0/LICENSE.md
+    url: https://raw.githubusercontent.com/ckeditor/ckeditor5/v35.2.1/LICENSE.md
     gpl-compatible: true
   js:
     assets/vendor/ckeditor5/paste-from-office/paste-from-office.js: { minified: true }
@@ -229,10 +229,10 @@ ckeditor5.pasteFromOffice:
 
 ckeditor5.indent:
   remote: https://github.com/ckeditor/ckeditor5
-  version: "35.1.0"
+  version: "35.2.1"
   license:
     name: GNU-GPL-2.0-or-later
-    url: https://github.com/ckeditor/ckeditor5/blob/v35.1.0/LICENSE.md
+    url: https://raw.githubusercontent.com/ckeditor/ckeditor5/v35.2.1/LICENSE.md
     gpl-compatible: true
   js:
     assets/vendor/ckeditor5/indent/indent.js: { minified: true }
@@ -242,10 +242,10 @@ ckeditor5.indent:
 
 ckeditor5.sourceEditing:
   remote: https://github.com/ckeditor/ckeditor5
-  version: "35.1.0"
+  version: "35.2.1"
   license:
     name: GNU-GPL-2.0-or-later
-    url: https://github.com/ckeditor/ckeditor5/blob/v35.1.0/LICENSE.md
+    url: https://raw.githubusercontent.com/ckeditor/ckeditor5/v35.2.1/LICENSE.md
     gpl-compatible: true
   js:
     assets/vendor/ckeditor5/source-editing/source-editing.js: { minified: true }
@@ -255,10 +255,10 @@ ckeditor5.sourceEditing:
 
 ckeditor5.table:
   remote: https://github.com/ckeditor/ckeditor5
-  version: "35.1.0"
+  version: "35.2.1"
   license:
     name: GNU-GPL-2.0-or-later
-    url: https://github.com/ckeditor/ckeditor5/blob/v35.1.0/LICENSE.md
+    url: https://raw.githubusercontent.com/ckeditor/ckeditor5/v35.2.1/LICENSE.md
     gpl-compatible: true
   js:
     assets/vendor/ckeditor5/table/table.js: { minified: true }
@@ -268,10 +268,10 @@ ckeditor5.table:
 
 ckeditor5.language:
   remote: https://github.com/ckeditor/ckeditor5
-  version: "35.1.0"
+  version: "35.2.1"
   license:
     name: GNU-GPL-2.0-or-later
-    url: https://github.com/ckeditor/ckeditor5/blob/v35.1.0/LICENSE.md
+    url: https://raw.githubusercontent.com/ckeditor/ckeditor5/v35.2.1/LICENSE.md
     gpl-compatible: true
   js:
     assets/vendor/ckeditor5/language/language.js: { minified: true }
@@ -281,10 +281,10 @@ ckeditor5.language:
 
 ckeditor5.codeBlock:
   remote: https://github.com/ckeditor/ckeditor5
-  version: "35.1.0"
+  version: "35.2.1"
   license:
     name: GNU-GPL-2.0-or-later
-    url: https://github.com/ckeditor/ckeditor5/blob/v35.1.0/LICENSE.md
+    url: https://raw.githubusercontent.com/ckeditor/ckeditor5/v35.2.1/LICENSE.md
     gpl-compatible: true
   js:
     assets/vendor/ckeditor5/code-block/code-block.js: { minified: true }
@@ -294,10 +294,10 @@ ckeditor5.codeBlock:
 
 ckeditor5.style:
   remote: https://github.com/ckeditor/ckeditor5
-  version: "35.1.0"
+  version: "35.2.1"
   license:
     name: GNU-GPL-2.0-or-later
-    url: https://github.com/ckeditor/ckeditor5/blob/v35.1.0/LICENSE.md
+    url: https://raw.githubusercontent.com/ckeditor/ckeditor5/v35.2.1/LICENSE.md
     gpl-compatible: true
   js:
     assets/vendor/ckeditor5/style/style.js: { minified: true }
diff --git a/core/core.services.yml b/core/core.services.yml
index 1631d5c1a2..6b972c88d4 100644
--- a/core/core.services.yml
+++ b/core/core.services.yml
@@ -15,12 +15,19 @@ parameters:
     debug: false
     auto_reload: null
     cache: true
+    allowed_file_extensions:
+      - css
+      - html
+      - js
+      - svg
+      - twig
   renderer.config:
     required_cache_contexts: ['languages:language_interface', 'theme', 'user.permissions']
     auto_placeholder_conditions:
       max-age: 0
       contexts: ['session', 'user']
       tags: []
+    debug: false
   factory.keyvalue:
     default: keyvalue.database
   http.response.debug_cacheability_headers: false
@@ -717,8 +724,8 @@ services:
     tags:
       - { name: persist }
   current_route_match:
-     class: Drupal\Core\Routing\CurrentRouteMatch
-     arguments: ['@request_stack']
+    class: Drupal\Core\Routing\CurrentRouteMatch
+    arguments: ['@request_stack']
   event_dispatcher:
     class: Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher
     arguments: ['@service_container']
@@ -780,10 +787,10 @@ services:
     calls:
       - [setContainer, ['@service_container']]
   http_middleware.cors:
-     class: Asm89\Stack\Cors
-     arguments: ['%cors.config%']
-     tags:
-       - { name: http_middleware, priority: 250 }
+    class: Asm89\Stack\Cors
+    arguments: ['%cors.config%']
+    tags:
+      - { name: http_middleware, priority: 250 }
   psr7.http_foundation_factory:
     class: Symfony\Bridge\PsrHttpMessage\Factory\HttpFoundationFactory
   psr17.server_request_factory:
@@ -952,12 +959,12 @@ services:
     class: Drupal\Core\Path\PathValidator
     arguments: ['@router', '@router.no_access_checks', '@current_user', '@path_processor_manager']
 
-# The argument to the hashing service defined in services.yml, to the
-# constructor of PhpassHashedPassword is the log2 number of iterations for
-# password stretching.
-# @todo increase by 1 every Drupal version in order to counteract increases in
-# the speed and power of computers available to crack the hashes. The current
-# password hashing method was introduced in Drupal 7 with a log2 count of 15.
+  # The argument to the hashing service defined in services.yml, to the
+  # constructor of PhpassHashedPassword is the log2 number of iterations for
+  # password stretching.
+  # @todo increase by 1 every Drupal version in order to counteract increases in
+  # the speed and power of computers available to crack the hashes. The current
+  # password hashing method was introduced in Drupal 7 with a log2 count of 15.
   password:
     class: Drupal\Core\Password\PhpassHashedPassword
     arguments: [16]
@@ -1558,7 +1565,7 @@ services:
     # We use '.' instead of '%app.root%' as the path for non-namespaced template
     # files so that they match the relative paths of templates loaded via the
     # theme registry or via Twig namespaces.
-    arguments: ['.', '@module_handler', '@theme_handler']
+    arguments: ['.', '@module_handler', '@theme_handler', '%twig.config%']
     tags:
       - { name: twig.loader, priority: 100 }
   twig.loader.theme_registry:
diff --git a/core/drupalci.yml b/core/drupalci.yml
index 94aa2ad22f..cd92d8102d 100644
--- a/core/drupalci.yml
+++ b/core/drupalci.yml
@@ -1,6 +1,11 @@
 # This is the DrupalCI testbot build file for Drupal core.
 # Learn to make one for your own drupal.org project:
 # https://www.drupal.org/drupalorg/docs/drupal-ci/customizing-drupalci-testing
+_phpunit_testgroups_to_execute: &testgroups
+  # Default: all of Drupal core's test suite runs.
+  testgroups: '--all'
+  # Alternative: run only the tests for one particular module.
+  # testgroups: '--module ckeditor5'
 build:
   assessment:
     testing:
@@ -15,32 +20,32 @@ build:
       # deprecated code.
       run_tests.phpunit:
         types: 'PHPUnit-Unit'
-        testgroups: '--all'
         suppress-deprecations: false
         halt-on-fail: false
+        <<: *testgroups
       run_tests.kernel:
         types: 'PHPUnit-Kernel'
-        testgroups: '--all'
         suppress-deprecations: false
         halt-on-fail: false
+        <<: *testgroups
       run_tests.build:
         # Limit concurrency due to disk space concerns.
         concurrency: 15
         types: 'PHPUnit-Build'
-        testgroups: '--all'
         suppress-deprecations: false
         halt-on-fail: false
+        <<: *testgroups
       run_tests.functional:
         types: 'PHPUnit-Functional'
-        testgroups: '--all'
         suppress-deprecations: false
         halt-on-fail: false
+        <<: *testgroups
       run_tests.javascript:
         concurrency: 15
         types: 'PHPUnit-FunctionalJavascript'
-        testgroups: '--all'
         suppress-deprecations: false
         halt-on-fail: false
+        <<: *testgroups
       # Run nightwatch testing.
       # @see https://www.drupal.org/project/drupal/issues/2869825
       nightwatchjs: {}
diff --git a/core/includes/common.inc b/core/includes/common.inc
index d122df3113..c866f72170 100644
--- a/core/includes/common.inc
+++ b/core/includes/common.inc
@@ -360,7 +360,7 @@ function drupal_attach_tabledrag(&$element, array $options) {
  * @param $element
  *   The element to be hidden.
  *
- * @return
+ * @return array
  *   The element.
  *
  * @see \Drupal\Core\Render\RendererInterface
@@ -390,7 +390,7 @@ function hide(&$element) {
  * @param $element
  *   The element to be shown.
  *
- * @return
+ * @return array
  *   The element.
  *
  * @see \Drupal\Core\Render\RendererInterface
@@ -564,7 +564,7 @@ function drupal_get_updaters() {
 /**
  * Assembles the Drupal FileTransfer registry.
  *
- * @return
+ * @return array
  *   The Drupal FileTransfer class registry.
  *
  * @see \Drupal\Core\FileTransfer\FileTransfer
diff --git a/core/includes/errors.inc b/core/includes/errors.inc
index a4bffb2f3b..4bf4fade14 100644
--- a/core/includes/errors.inc
+++ b/core/includes/errors.inc
@@ -113,7 +113,7 @@ function _drupal_error_handler_real($error_level, $message, $filename, $line) {
  * @param $error
  *   Optional error to examine for ERROR_REPORTING_DISPLAY_SOME.
  *
- * @return
+ * @return bool
  *   TRUE if an error should be displayed.
  */
 function error_displayable($error = NULL) {
diff --git a/core/includes/form.inc b/core/includes/form.inc
index 5959b598e8..4f353d0088 100644
--- a/core/includes/form.inc
+++ b/core/includes/form.inc
@@ -156,7 +156,7 @@ function form_select_options($element, $choices = NULL) {
  * @param $key
  *   The key to look for.
  *
- * @return
+ * @return array|bool
  *   An array of indexes that match the given $key. Array will be
  *   empty if no elements were found. FALSE if optgroups were found.
  */
@@ -1011,7 +1011,7 @@ function _batch_populate_queue(&$batch, $set_id) {
  * @param $batch_set
  *   The batch set.
  *
- * @return
+ * @return \Drupal\Core\Queue\QueueInterface|null
  *   The queue object.
  */
 function _batch_queue($batch_set) {
diff --git a/core/includes/install.core.inc b/core/includes/install.core.inc
index d947254701..b18c9e57a3 100644
--- a/core/includes/install.core.inc
+++ b/core/includes/install.core.inc
@@ -549,7 +549,7 @@ function install_begin_request($class_loader, &$install_state) {
  *   (optional) A callback to allow command line processes to update a progress
  *   bar. The callback is passed the $install_state variable.
  *
- * @return
+ * @return array|null
  *   HTML output from the last completed task.
  */
 function install_run_tasks(&$install_state, callable $callback = NULL) {
@@ -606,7 +606,7 @@ function install_run_tasks(&$install_state, callable $callback = NULL) {
  *   An array of information about the current installation state. This is
  *   passed in by reference so that it can be modified by the task.
  *
- * @return
+ * @return array|null
  *   The output of the task function, if there is any.
  */
 function install_run_task($task, &$install_state) {
@@ -709,7 +709,7 @@ function install_run_task($task, &$install_state) {
  * @param $install_state
  *   An array of information about the current installation state.
  *
- * @return
+ * @return array
  *   A list of tasks to be performed, with associated metadata.
  */
 function install_tasks_to_perform($install_state) {
@@ -745,7 +745,7 @@ function install_tasks_to_perform($install_state) {
  * @param $install_state
  *   An array of information about the current installation state.
  *
- * @return
+ * @return array
  *   A list of tasks, with associated metadata as returned by
  *   hook_install_tasks().
  */
@@ -906,7 +906,7 @@ function install_tasks($install_state) {
  * @param $install_state
  *   An array of information about the current installation state.
  *
- * @return
+ * @return array
  *   A list of tasks, with keys equal to the machine-readable task name and
  *   values equal to the name that should be displayed.
  *
@@ -979,7 +979,7 @@ function install_get_form($form_id, array &$install_state) {
  * @param $install_state
  *   An array of information about the current installation state.
  *
- * @return
+ * @return string
  *   The URL to redirect to.
  *
  * @see install_full_redirect_url()
@@ -994,7 +994,7 @@ function install_redirect_url($install_state) {
  * @param $install_state
  *   An array of information about the current installation state.
  *
- * @return
+ * @return string
  *   The complete URL to redirect to.
  *
  * @see install_redirect_url()
@@ -1072,7 +1072,7 @@ function install_display_output($output, $install_state) {
  * @param $install_state
  *   An array of information about the current installation state.
  *
- * @return
+ * @return array
  *   A themed status report, or an exception if there are requirement errors.
  */
 function install_verify_requirements(&$install_state) {
@@ -1118,7 +1118,7 @@ function install_base_system(&$install_state) {
 /**
  * Verifies and returns the last installation task that was completed.
  *
- * @return
+ * @return null|string
  *   The last completed task, if there is one. An exception is thrown if Drupal
  *   is already installed.
  */
@@ -1222,7 +1222,7 @@ function install_database_errors($database, $settings_file) {
  *   profile will be added here, if it was not already selected previously, as
  *   will a list of all available profiles.
  *
- * @return
+ * @return array|null
  *   For interactive installations, a form allowing the profile to be selected,
  *   if the user has a choice that needs to be made. Otherwise, an exception is
  *   thrown if a profile cannot be chosen automatically.
@@ -1310,7 +1310,7 @@ function _install_select_profile(&$install_state) {
 /**
  * Finds all .po files that are useful to the installer.
  *
- * @return
+ * @return array
  *   An associative array of file URIs keyed by language code. URIs as
  *   returned by FileSystemInterface::scanDirectory().
  *
@@ -1341,7 +1341,7 @@ function install_find_translations() {
  *   langcode will be added here, if it was not already selected previously, as
  *   will a list of all available languages.
  *
- * @return
+ * @return array|null
  *   For interactive installations, a form or other page output allowing the
  *   language to be selected or providing information about language selection,
  *   if a language has not been chosen. Otherwise, an exception is thrown if a
@@ -1558,7 +1558,7 @@ function install_bootstrap_full() {
  * @param $install_state
  *   An array of information about the current installation state.
  *
- * @return
+ * @return array
  *   The batch definition.
  */
 function install_profile_modules(&$install_state) {
@@ -1667,7 +1667,7 @@ function install_install_profile(&$install_state) {
  * @param $install_state
  *   An array of information about the current installation state.
  *
- * @return
+ * @return array
  *   The batch definition, if there are language files to download.
  */
 function install_download_additional_translations_operations(&$install_state) {
@@ -1718,7 +1718,7 @@ function install_download_additional_translations_operations(&$install_state) {
  * @param $install_state
  *   An array of information about the current installation state.
  *
- * @return
+ * @return array|null
  *   The batch definition, if there are language files to import.
  */
 function install_import_translations(&$install_state) {
@@ -1848,9 +1848,6 @@ function install_finish_translations(&$install_state) {
  *
  * @param $install_state
  *   An array of information about the current installation state.
- *
- * @return
- *   A message informing the user that the installation is complete.
  */
 function install_finished(&$install_state) {
   $profile = $install_state['parameters']['profile'];
@@ -2110,9 +2107,9 @@ function install_check_requirements($install_state) {
         'value' => $default_file_info['description_default'],
         'severity' => REQUIREMENT_ERROR,
         'description' => t('The @drupal installer requires that the %default-file file must not be deleted or modified from the original download.', [
-            '@drupal' => drupal_install_profile_distribution_name(),
-            '%default-file' => $default_file,
-          ]),
+          '@drupal' => drupal_install_profile_distribution_name(),
+          '%default-file' => $default_file,
+        ]),
       ];
     }
     // Otherwise, if $file does not exist yet, we can try to copy
@@ -2169,11 +2166,11 @@ function install_check_requirements($install_state) {
         'value' => t('The %file does not exist.', ['%file' => $default_file_info['title']]),
         'severity' => REQUIREMENT_ERROR,
         'description' => t('The @drupal installer requires that you create a %file as part of the installation process. Copy the %default_file file to %file. More details about installing Drupal are available in <a href=":install_txt">INSTALL.txt</a>.', [
-            '@drupal' => drupal_install_profile_distribution_name(),
-            '%file' => $file,
-            '%default_file' => $default_file,
-            ':install_txt' => base_path() . 'core/INSTALL.txt',
-          ]),
+          '@drupal' => drupal_install_profile_distribution_name(),
+          '%file' => $file,
+          '%default_file' => $default_file,
+          ':install_txt' => base_path() . 'core/INSTALL.txt',
+        ]),
       ];
     }
     else {
@@ -2188,10 +2185,10 @@ function install_check_requirements($install_state) {
           'value' => t('The %file is not readable.', ['%file' => $default_file_info['title']]),
           'severity' => REQUIREMENT_ERROR,
           'description' => t('@drupal requires read permissions to %file at all times. The <a href=":handbook_url">webhosting issues</a> documentation section offers help on this and other topics.', [
-              '@drupal' => drupal_install_profile_distribution_name(),
-              '%file' => $file,
-              ':handbook_url' => 'https://www.drupal.org/server-permissions',
-            ]),
+            '@drupal' => drupal_install_profile_distribution_name(),
+            '%file' => $file,
+            ':handbook_url' => 'https://www.drupal.org/server-permissions',
+          ]),
         ];
       }
       // If the $file is not writable, throw an error.
@@ -2201,10 +2198,10 @@ function install_check_requirements($install_state) {
           'value' => t('The %file is not writable.', ['%file' => $default_file_info['title']]),
           'severity' => REQUIREMENT_ERROR,
           'description' => t('The @drupal installer requires write permissions to %file during the installation process. The <a href=":handbook_url">webhosting issues</a> documentation section offers help on this and other topics.', [
-              '@drupal' => drupal_install_profile_distribution_name(),
-              '%file' => $file,
-              ':handbook_url' => 'https://www.drupal.org/server-permissions',
-            ]),
+            '@drupal' => drupal_install_profile_distribution_name(),
+            '%file' => $file,
+            ':handbook_url' => 'https://www.drupal.org/server-permissions',
+          ]),
         ];
       }
       else {
@@ -2219,12 +2216,12 @@ function install_check_requirements($install_state) {
           'value' => t('The @file is owned by the web server.', ['@file' => $default_file_info['title']]),
           'severity' => REQUIREMENT_ERROR,
           'description' => t('The @drupal installer failed to create a %file file with proper file ownership. Log on to your web server, remove the existing %file file, and create a new one by copying the %default_file file to %file. More details about installing Drupal are available in <a href=":install_txt">INSTALL.txt</a>. The <a href=":handbook_url">webhosting issues</a> documentation section offers help on this and other topics.', [
-              '@drupal' => drupal_install_profile_distribution_name(),
-              '%file' => $file,
-              '%default_file' => $default_file,
-              ':install_txt' => base_path() . 'core/INSTALL.txt',
-              ':handbook_url' => 'https://www.drupal.org/server-permissions',
-            ]),
+            '@drupal' => drupal_install_profile_distribution_name(),
+            '%file' => $file,
+            '%default_file' => $default_file,
+            ':install_txt' => base_path() . 'core/INSTALL.txt',
+            ':handbook_url' => 'https://www.drupal.org/server-permissions',
+          ]),
         ];
       }
     }
@@ -2260,7 +2257,7 @@ function install_check_requirements($install_state) {
  *   An array of requirements, in the same format as is returned by
  *   hook_requirements().
  *
- * @return
+ * @return array|null
  *   A themed status report, or an exception if there are requirement errors.
  *   If there are only requirement warnings, a themed status report is shown
  *   initially, but the user is allowed to bypass it by providing 'continue=1'
diff --git a/core/includes/install.inc b/core/includes/install.inc
index 06d9500a99..63b5ee5589 100644
--- a/core/includes/install.inc
+++ b/core/includes/install.inc
@@ -93,7 +93,7 @@ function drupal_load_updates() {
 /**
  * Loads the installation profile, extracting its defined distribution name.
  *
- * @return
+ * @return string
  *   The distribution name defined in the profile's .info.yml file. Defaults to
  *   "Drupal" if none is explicitly provided by the installation profile.
  *
@@ -145,7 +145,7 @@ function drupal_install_profile_distribution_version() {
 /**
  * Detects all supported databases that are compiled into PHP.
  *
- * @return
+ * @return array
  *   An array of database types compiled into PHP.
  */
 function drupal_detect_database_types() {
@@ -529,7 +529,7 @@ function _drupal_rewrite_settings_dump_one(\stdClass $variable, $prefix = '', $s
  * @param $install_state
  *   An array of information about the current installation state.
  *
- * @return
+ * @return array
  *   The list of modules to install.
  */
 function drupal_verify_profile($install_state) {
@@ -663,7 +663,7 @@ function drupal_install_system($install_state) {
  *   (optional) Determines whether to attempt fixing the permissions according
  *   to the provided $mask. Defaults to TRUE.
  *
- * @return
+ * @return bool
  *   TRUE on success or FALSE on failure. A message is set for the latter.
  */
 function drupal_verify_install_file($file, $mask = NULL, $type = 'file', $autofix = TRUE) {
@@ -752,7 +752,7 @@ function drupal_verify_install_file($file, $mask = NULL, $type = 'file', $autofi
  * @param $message
  *   (optional) Whether to output messages. Defaults to TRUE.
  *
- * @return
+ * @return bool
  *   TRUE/FALSE whether or not the directory was successfully created.
  */
 function drupal_install_mkdir($file, $mask, $message = TRUE) {
@@ -803,7 +803,7 @@ function drupal_install_mkdir($file, $mask, $message = TRUE) {
  * @param $message
  *   (optional) Whether to output messages. Defaults to TRUE.
  *
- * @return
+ * @return bool
  *   TRUE/FALSE whether or not we were able to fix the file's permissions.
  */
 function drupal_install_fix_file($file, $mask, $message = TRUE) {
@@ -906,7 +906,7 @@ function install_goto($path) {
  * @param $query
  *   (optional) An array of query parameters to merge in to the existing ones.
  *
- * @return
+ * @return string
  *   The URL of the current script, with query parameters modified by the
  *   passed-in $query. The URL is not sanitized, so it still needs to be run
  *   through \Drupal\Component\Utility\UrlHelper::filterBadProtocol() if it will be
@@ -935,7 +935,7 @@ function drupal_current_script_url($query = []) {
  *   The severity of the requirements problem, as returned by
  *   drupal_requirements_severity().
  *
- * @return
+ * @return string
  *   A URL for attempting to proceed to the next step of the script. The URL is
  *   not sanitized, so it still needs to be run through
  *   \Drupal\Component\Utility\UrlHelper::filterBadProtocol() if it will be used
@@ -1010,7 +1010,7 @@ function drupal_check_profile($profile) {
  *   An array of requirements, in the same format as is returned by
  *   hook_requirements().
  *
- * @return
+ * @return int
  *   The highest severity in the array.
  */
 function drupal_requirements_severity(&$requirements) {
@@ -1029,7 +1029,7 @@ function drupal_requirements_severity(&$requirements) {
  * @param $module
  *   Machine name of module to check.
  *
- * @return
+ * @return bool
  *   TRUE or FALSE, depending on whether the requirements are met.
  */
 function drupal_check_module($module) {
@@ -1107,7 +1107,7 @@ function drupal_check_module($module) {
  * @param $langcode
  *   Language code (if any).
  *
- * @return
+ * @return array
  *   The info array.
  */
 function install_profile_info($profile, $langcode = 'en') {
diff --git a/core/includes/module.inc b/core/includes/module.inc
index 0f9aff758c..c938a17df9 100644
--- a/core/includes/module.inc
+++ b/core/includes/module.inc
@@ -29,7 +29,7 @@
  *   (optional) The base file name (without the $type extension). If omitted,
  *   $module is used; i.e., resulting in "$module.$type" by default.
  *
- * @return string|false
+ * @return bool|string
  *   The name of the included file, if successful; FALSE otherwise.
  *
  * @deprecated in drupal:9.4.0 and is removed from drupal:11.0.0.
diff --git a/core/includes/theme.inc b/core/includes/theme.inc
index f235cbf207..c054cfbacf 100644
--- a/core/includes/theme.inc
+++ b/core/includes/theme.inc
@@ -84,7 +84,7 @@
  *   ArrayObject which allows it to be accessed with array syntax and isset(),
  *   and should be more lightweight than the full registry. Defaults to TRUE.
  *
- * @return
+ * @return array|\Drupal\Core\Utility\ThemeRegistry
  *   The complete theme registry array, or an instance of the
  *   Drupal\Core\Utility\ThemeRegistry class.
  */
@@ -245,7 +245,7 @@ function drupal_find_theme_templates($cache, $extension, $path) {
  * @param $theme
  *   The name of a given theme; defaults to the current theme.
  *
- * @return
+ * @return mixed
  *   The value of the requested setting, NULL if the setting does not exist.
  */
 function theme_get_setting($setting_name, $theme = NULL) {
@@ -414,7 +414,7 @@ function theme_render_and_autoescape($arg) {
  * @param \Drupal\Core\Config\Config $config
  *   The configuration object to update.
  *
- * @return
+ * @return \Drupal\Core\Config\Config
  *   The Config object with updated data.
  */
 function theme_settings_convert_to_config(array $theme_settings, Config $config) {
@@ -1397,7 +1397,7 @@ function template_preprocess_page(&$variables) {
  *   of '__' is appropriate for theme hook suggestions. '-' is appropriate for
  *   extra classes.
  *
- * @return
+ * @return array
  *   An array of suggestions, suitable for adding to
  *   hook_theme_suggestions_HOOK_alter() or to $variables['attributes']['class']
  *   if the suggestions represent extra CSS classes.
diff --git a/core/includes/update.inc b/core/includes/update.inc
index 2f0f298e99..5aaeaaeb8a 100644
--- a/core/includes/update.inc
+++ b/core/includes/update.inc
@@ -275,7 +275,7 @@ function update_invoke_post_update($function, &$context) {
 /**
  * Returns a list of all the pending database updates.
  *
- * @return
+ * @return array
  *   An associative array keyed by module name which contains all information
  *   about database updates that need to be run, and any updates that are not
  *   going to proceed due to missing requirements. The system module will
@@ -393,7 +393,7 @@ function update_get_update_list() {
  *   and whose values contain the number of the first requested update for that
  *   module.
  *
- * @return
+ * @return array
  *   An array whose keys are the names of all update functions within the
  *   provided modules that would need to be run in order to fulfill the
  *   request, arranged in the order in which the update functions should be
@@ -459,7 +459,7 @@ function update_resolve_dependencies($starting_updates) {
  *   An array whose keys contain the names of modules and whose values contain
  *   the number of the first requested update for that module.
  *
- * @return
+ * @return array
  *   An array containing all the update functions that should be run for each
  *   module, including the provided starting update and all subsequent updates
  *   that are available. The keys of the array contain the module names, and
@@ -517,7 +517,7 @@ function update_get_update_function_list($starting_updates) {
  *   An organized array of update functions, in the format returned by
  *   update_get_update_function_list().
  *
- * @return
+ * @return array
  *   A multidimensional array representing the dependency graph, suitable for
  *   passing in to Drupal\Component\Graph\Graph::searchAndSort(), but with extra
  *   information about each update function also included. Each array key
@@ -585,7 +585,7 @@ function update_build_dependency_graph($update_functions) {
  *   update_get_update_function_list(). This should represent all module
  *   updates that are requested to run at the time this function is called.
  *
- * @return
+ * @return bool
  *   TRUE if the provided module update is not installed or is not in the
  *   provided list of updates to run; FALSE otherwise.
  */
@@ -601,7 +601,7 @@ function update_is_missing($module, $number, $update_functions) {
  * @param $number
  *   The number of the update within that module.
  *
- * @return
+ * @return bool
  *   TRUE if the database schema indicates that the update has already been
  *   performed; FALSE otherwise.
  */
@@ -617,7 +617,7 @@ function update_already_performed($module, $number) {
  * its hook, only that it be installed. This allows the update system to
  * properly perform updates even on modules that are currently disabled.
  *
- * @return
+ * @return array
  *   An array of return values obtained by merging the results of the
  *   hook_update_dependencies() implementations in all installed modules.
  *
diff --git a/core/lib/Drupal/Component/Assertion/Handle.php b/core/lib/Drupal/Component/Assertion/Handle.php
index ed8ff8f7f6..7ef456c505 100644
--- a/core/lib/Drupal/Component/Assertion/Handle.php
+++ b/core/lib/Drupal/Component/Assertion/Handle.php
@@ -2,12 +2,17 @@
 
 namespace Drupal\Component\Assertion;
 
+trigger_error(__NAMESPACE__ . '\Handle is deprecated in drupal:10.1.0 and is removed from drupal:11.0.0. Instead, use assert_options(ASSERT_EXCEPTION, TRUE). See https://drupal.org/node/3105918', E_USER_DEPRECATED);
+
 /**
  * Handler for runtime assertion failures.
  *
  * @ingroup php_assert
  *
- * @todo Deprecate this class. https://www.drupal.org/node/3054072
+ * @deprecated in drupal:10.1.0 and is removed from drupal:11.0.0. Use
+ *   assert_options(ASSERT_EXCEPTION, TRUE).
+ *
+ * @see https://www.drupal.org/node/3105918
  */
 class Handle {
 
diff --git a/core/lib/Drupal/Component/Diff/Engine/DiffEngine.php b/core/lib/Drupal/Component/Diff/Engine/DiffEngine.php
index f8ec05fbbb..75dfc46ee5 100644
--- a/core/lib/Drupal/Component/Diff/Engine/DiffEngine.php
+++ b/core/lib/Drupal/Component/Diff/Engine/DiffEngine.php
@@ -25,6 +25,7 @@
  * @private
  * @subpackage DifferenceEngine
  */
+#[\AllowDynamicProperties]
 class DiffEngine {
 
   const USE_ASSERTS = FALSE;
diff --git a/core/lib/Drupal/Component/Gettext/PoHeader.php b/core/lib/Drupal/Component/Gettext/PoHeader.php
index 8bc912d3bd..a54377aa53 100644
--- a/core/lib/Drupal/Component/Gettext/PoHeader.php
+++ b/core/lib/Drupal/Component/Gettext/PoHeader.php
@@ -183,10 +183,11 @@ public function __toString() {
    * @param string $pluralforms
    *   The Plural-Forms entry value.
    *
-   * @return
+   * @return array|bool
    *   An indexed array of parsed plural formula data. Containing:
    *   - 'nplurals': The number of plural forms defined by the plural formula.
    *   - 'plurals': Array of plural positions keyed by plural value.
+   *   False when there is no plural string.
    *
    * @throws \Exception
    */
@@ -270,8 +271,9 @@ private function parseHeader($header) {
    * @param string $string
    *   A string containing the arithmetic formula.
    *
-   * @return
-   *   A stack of values and operations to be evaluated.
+   * @return array|bool
+   *   A stack of values and operations to be evaluated. False if the formula
+   *   could not be parsed.
    */
   private function parseArithmetic($string) {
     // Operator precedence table.
diff --git a/core/lib/Drupal/Component/Gettext/PoStreamInterface.php b/core/lib/Drupal/Component/Gettext/PoStreamInterface.php
index 33534ecafb..5999299129 100644
--- a/core/lib/Drupal/Component/Gettext/PoStreamInterface.php
+++ b/core/lib/Drupal/Component/Gettext/PoStreamInterface.php
@@ -23,7 +23,7 @@ public function close();
   /**
    * Gets the URI of the PO stream that is being read or written.
    *
-   * @return
+   * @return string
    *   URI string for this stream.
    */
   public function getURI();
diff --git a/core/lib/Drupal/Component/Gettext/PoStreamReader.php b/core/lib/Drupal/Component/Gettext/PoStreamReader.php
index 9b44426066..87f50601e6 100644
--- a/core/lib/Drupal/Component/Gettext/PoStreamReader.php
+++ b/core/lib/Drupal/Component/Gettext/PoStreamReader.php
@@ -237,7 +237,7 @@ private function readHeader() {
    * indicated by MSGSTR or MSGSTR_ARR followed immediately by an MSGID or
    * MSGCTXT (when items closely follow each other).
    *
-   * @return
+   * @return bool|null
    *   FALSE if an error was logged, NULL otherwise. The errors are considered
    *   non-blocking, so reading can continue, while the errors are collected
    *   for later presentation.
@@ -544,8 +544,9 @@ public function setItemFromArray($value) {
    * @param $string
    *   A string specified with enclosing quotes.
    *
-   * @return
-   *   The string parsed from inside the quotes.
+   * @return bool|string
+   *   The string parsed from inside the quotes. False when the syntax is
+   *   invalid.
    */
   public function parseQuoted($string) {
     if (substr($string, 0, 1) != substr($string, -1, 1)) {
@@ -574,7 +575,7 @@ public function parseQuoted($string) {
    * @param $comment
    *   An array of strings containing a comment.
    *
-   * @return
+   * @return string
    *   Short one-string version of the comment.
    */
   private function shortenComments($comment) {
diff --git a/core/lib/Drupal/Component/Graph/Graph.php b/core/lib/Drupal/Component/Graph/Graph.php
index b155faa662..6fe9cf21b0 100644
--- a/core/lib/Drupal/Component/Graph/Graph.php
+++ b/core/lib/Drupal/Component/Graph/Graph.php
@@ -44,7 +44,7 @@ public function __construct($graph) {
   /**
    * Performs a depth-first search and sort on the directed acyclic graph.
    *
-   * @return
+   * @return array
    *   The given $graph with more secondary keys filled in:
    *   - 'paths': Contains a list of vertices than can be reached on a path from
    *     this vertex.
diff --git a/core/lib/Drupal/Component/Plugin/Definition/PluginDefinition.php b/core/lib/Drupal/Component/Plugin/Definition/PluginDefinition.php
index ed1ac91c2f..fd570872c2 100644
--- a/core/lib/Drupal/Component/Plugin/Definition/PluginDefinition.php
+++ b/core/lib/Drupal/Component/Plugin/Definition/PluginDefinition.php
@@ -5,6 +5,7 @@
 /**
  * Provides object-based plugin definitions.
  */
+#[\AllowDynamicProperties]
 class PluginDefinition implements PluginDefinitionInterface {
 
   /**
diff --git a/core/lib/Drupal/Component/Plugin/Derivative/DeriverInterface.php b/core/lib/Drupal/Component/Plugin/Derivative/DeriverInterface.php
index 32b59ef748..ff13b0fbc6 100644
--- a/core/lib/Drupal/Component/Plugin/Derivative/DeriverInterface.php
+++ b/core/lib/Drupal/Component/Plugin/Derivative/DeriverInterface.php
@@ -20,7 +20,7 @@ interface DeriverInterface {
    *   is derived. It is maybe an entire object or just some array, depending
    *   on the discovery mechanism.
    *
-   * @return array
+   * @return array|null
    *   The full definition array of the derivative plugin, typically a merge of
    *   $base_plugin_definition with extra derivative-specific information. NULL
    *   if the derivative doesn't exist.
diff --git a/core/lib/Drupal/Component/Utility/Unicode.php b/core/lib/Drupal/Component/Utility/Unicode.php
index 7fae041f98..3217aa3545 100644
--- a/core/lib/Drupal/Component/Utility/Unicode.php
+++ b/core/lib/Drupal/Component/Utility/Unicode.php
@@ -77,8 +77,7 @@ class Unicode {
   const STATUS_SINGLEBYTE = 0;
 
   /**
-   * Indicates that full unicode support with the PHP mbstring extension is
-   * being used.
+   * Indicates that full unicode support with PHP mbstring extension is used.
    */
   const STATUS_MULTIBYTE = 1;
 
@@ -132,9 +131,6 @@ public static function check() {
     }
 
     // Check mbstring configuration.
-    if (ini_get('mbstring.func_overload') != 0) {
-      return 'mbstring.func_overload';
-    }
     if (ini_get('mbstring.encoding_translation') != 0) {
       return 'mbstring.encoding_translation';
     }
diff --git a/core/lib/Drupal/Component/Utility/UrlHelper.php b/core/lib/Drupal/Component/Utility/UrlHelper.php
index b23a213518..79e275bdc0 100644
--- a/core/lib/Drupal/Component/Utility/UrlHelper.php
+++ b/core/lib/Drupal/Component/Utility/UrlHelper.php
@@ -73,7 +73,7 @@ public static function buildQuery(array $query, $parent = '') {
    * @param string $parent
    *   Internal use only. Used to build the $query array key for nested items.
    *
-   * @return
+   * @return array
    *   An array containing query parameters.
    */
   public static function filterQueryParameters(array $query, array $exclude = [], $parent = '') {
diff --git a/core/lib/Drupal/Component/Uuid/UuidInterface.php b/core/lib/Drupal/Component/Uuid/UuidInterface.php
index f9f8a7b486..c5637b676c 100644
--- a/core/lib/Drupal/Component/Uuid/UuidInterface.php
+++ b/core/lib/Drupal/Component/Uuid/UuidInterface.php
@@ -10,7 +10,7 @@ interface UuidInterface {
   /**
    * Generates a Universally Unique IDentifier (UUID).
    *
-   * @return
+   * @return string
    *   A 16 byte integer represented as a hex string formatted with 4 hyphens.
    */
   public function generate();
diff --git a/core/lib/Drupal/Core/Action/Plugin/Action/EmailAction.php b/core/lib/Drupal/Core/Action/Plugin/Action/EmailAction.php
index b345418d37..d2354d5802 100644
--- a/core/lib/Drupal/Core/Action/Plugin/Action/EmailAction.php
+++ b/core/lib/Drupal/Core/Action/Plugin/Action/EmailAction.php
@@ -163,25 +163,25 @@ public function defaultConfiguration() {
   public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
     $form['recipient'] = [
       '#type' => 'textfield',
-      '#title' => t('Recipient email address'),
+      '#title' => $this->t('Recipient email address'),
       '#default_value' => $this->configuration['recipient'],
       '#maxlength' => '254',
-      '#description' => t('You may also use tokens: [node:author:mail], [comment:author:mail], etc. Separate recipients with a comma.'),
+      '#description' => $this->t('You may also use tokens: [node:author:mail], [comment:author:mail], etc. Separate recipients with a comma.'),
     ];
     $form['subject'] = [
       '#type' => 'textfield',
-      '#title' => t('Subject'),
+      '#title' => $this->t('Subject'),
       '#default_value' => $this->configuration['subject'],
       '#maxlength' => '254',
-      '#description' => t('The subject of the message.'),
+      '#description' => $this->t('The subject of the message.'),
     ];
     $form['message'] = [
       '#type' => 'textarea',
-      '#title' => t('Message'),
+      '#title' => $this->t('Message'),
       '#default_value' => $this->configuration['message'],
       '#cols' => '80',
       '#rows' => '20',
-      '#description' => t('The message that should be sent. You may include placeholders like [node:title], [user:account-name], [user:display-name] and [comment:body] to represent data that will be different each time message is sent. Not all placeholders will be available in all contexts.'),
+      '#description' => $this->t('The message that should be sent. You may include placeholders like [node:title], [user:account-name], [user:display-name] and [comment:body] to represent data that will be different each time message is sent. Not all placeholders will be available in all contexts.'),
     ];
     return $form;
   }
@@ -190,9 +190,15 @@ public function buildConfigurationForm(array $form, FormStateInterface $form_sta
    * {@inheritdoc}
    */
   public function validateConfigurationForm(array &$form, FormStateInterface $form_state) {
-    if (!$this->emailValidator->isValid($form_state->getValue('recipient')) && strpos($form_state->getValue('recipient'), ':mail') === FALSE) {
-      // We want the literal %author placeholder to be emphasized in the error message.
-      $form_state->setErrorByName('recipient', t('Enter a valid email address or use a token email address such as %author.', ['%author' => '[node:author:mail]']));
+    $recipients = explode(',', $form_state->getValue('recipient'));
+    $recipients = array_filter(array_map('trim', $recipients));
+    foreach ($recipients as $recipient) {
+      if (!$this->emailValidator->isValid($recipient) && strpos($recipient, ':mail') === FALSE) {
+        // We want the literal %author placeholder to be emphasized in the error message.
+        $form_state->setErrorByName('recipient', $this->t('Enter a valid email address or use a token email address such as %author.', [
+          '%author' => '[node:author:mail]',
+        ]));
+      }
     }
   }
 
diff --git a/core/lib/Drupal/Core/Action/Plugin/Action/GotoAction.php b/core/lib/Drupal/Core/Action/Plugin/Action/GotoAction.php
index 9fb6b0b61e..befc21f6a5 100644
--- a/core/lib/Drupal/Core/Action/Plugin/Action/GotoAction.php
+++ b/core/lib/Drupal/Core/Action/Plugin/Action/GotoAction.php
@@ -114,8 +114,8 @@ public function defaultConfiguration() {
   public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
     $form['url'] = [
       '#type' => 'textfield',
-      '#title' => t('URL'),
-      '#description' => t('The URL to which the user should be redirected. This can be an internal URL like /node/1234 or an external URL like @url.', ['@url' => 'http://example.com']),
+      '#title' => $this->t('URL'),
+      '#description' => $this->t('The URL to which the user should be redirected. This can be an internal URL like /node/1234 or an external URL like @url.', ['@url' => 'http://example.com']),
       '#default_value' => $this->configuration['url'],
       '#required' => TRUE,
     ];
diff --git a/core/lib/Drupal/Core/Action/Plugin/Action/MessageAction.php b/core/lib/Drupal/Core/Action/Plugin/Action/MessageAction.php
index 7c892eeed2..19575278cc 100644
--- a/core/lib/Drupal/Core/Action/Plugin/Action/MessageAction.php
+++ b/core/lib/Drupal/Core/Action/Plugin/Action/MessageAction.php
@@ -106,11 +106,11 @@ public function defaultConfiguration() {
   public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
     $form['message'] = [
       '#type' => 'textarea',
-      '#title' => t('Message'),
+      '#title' => $this->t('Message'),
       '#default_value' => $this->configuration['message'],
       '#required' => TRUE,
       '#rows' => '8',
-      '#description' => t('The message to be displayed to the current user. You may include placeholders like [node:title], [user:account-name], [user:display-name] and [comment:body] to represent data that will be different each time message is sent. Not all placeholders will be available in all contexts.'),
+      '#description' => $this->t('The message to be displayed to the current user. You may include placeholders like [node:title], [user:account-name], [user:display-name] and [comment:body] to represent data that will be different each time message is sent. Not all placeholders will be available in all contexts.'),
     ];
     return $form;
   }
diff --git a/core/lib/Drupal/Core/Ajax/OpenDialogCommand.php b/core/lib/Drupal/Core/Ajax/OpenDialogCommand.php
index 623d3961bc..9164fce15c 100644
--- a/core/lib/Drupal/Core/Ajax/OpenDialogCommand.php
+++ b/core/lib/Drupal/Core/Ajax/OpenDialogCommand.php
@@ -37,16 +37,18 @@ class OpenDialogCommand implements CommandInterface, CommandWithAttachedAssetsIn
   protected $content;
 
   /**
-   * Stores dialog-specific options passed directly to jQuery UI dialogs. Any
-   * jQuery UI option can be used. See http://api.jqueryui.com/dialog.
+   * Stores dialog-specific options passed directly to jQuery UI dialogs.
+   *
+   * Any jQuery UI option can be used.
+   *
+   * @see http://api.jqueryui.com/dialog.
    *
    * @var array
    */
   protected $dialogOptions;
 
   /**
-   * Custom settings that will be passed to the Drupal behaviors on the content
-   * of the dialog.
+   * Custom settings passed to Drupal behaviors on the content of the dialog.
    *
    * @var array
    */
diff --git a/core/lib/Drupal/Core/Annotation/QueueWorker.php b/core/lib/Drupal/Core/Annotation/QueueWorker.php
index 354642a72c..b13071132d 100644
--- a/core/lib/Drupal/Core/Annotation/QueueWorker.php
+++ b/core/lib/Drupal/Core/Annotation/QueueWorker.php
@@ -52,15 +52,14 @@ class QueueWorker extends Plugin {
   public $title;
 
   /**
-   * An associative array containing an optional key.
-   *
-   * This property is optional and it does not need to be declared.
-   *
-   * Available keys:
-   * - time (optional): How much time Drupal cron should spend on calling this
-   *   worker in seconds. Defaults to 15.
+   * An optional associative array of settings for cron.
    *
    * @var array
+   *   The array has one key, time, which is set to the time Drupal cron should
+   *   spend on calling this worker in seconds. The default is set in
+   *   \Drupal\Core\Queue\QueueWorkerManager::processDefinition().
+   *
+   * @see \Drupal\Core\Queue\QueueWorkerManager::processDefinition()
    */
   public $cron;
 
diff --git a/core/lib/Drupal/Core/Asset/CssOptimizer.php b/core/lib/Drupal/Core/Asset/CssOptimizer.php
index 4ab6081a30..bc2aef7238 100644
--- a/core/lib/Drupal/Core/Asset/CssOptimizer.php
+++ b/core/lib/Drupal/Core/Asset/CssOptimizer.php
@@ -116,7 +116,7 @@ protected function processFile($css_asset) {
    * @param $reset_basepath
    *   Used internally to facilitate recursive resolution of @import commands.
    *
-   * @return
+   * @return string
    *   Contents of the stylesheet, including any resolved @import commands.
    */
   public function loadFile($file, $optimize = NULL, $reset_basepath = TRUE) {
@@ -178,7 +178,7 @@ public function loadFile($file, $optimize = NULL, $reset_basepath = TRUE) {
    *   An array of matches by a preg_replace_callback() call that scans for
    *   @import-ed CSS files, except for external CSS files.
    *
-   * @return
+   * @return string
    *   The contents of the CSS file at $matches[1], with corrected paths.
    *
    * @see \Drupal\Core\Asset\AssetOptimizerInterface::loadFile()
@@ -209,7 +209,7 @@ protected function loadNestedFile($matches) {
    *   (optional) Boolean whether CSS contents should be minified. Defaults to
    *   FALSE.
    *
-   * @return
+   * @return string
    *   Contents of the stylesheet including the imported stylesheets.
    */
   protected function processCss($contents, $optimize = FALSE) {
diff --git a/core/lib/Drupal/Core/Cache/CacheableDependencyInterface.php b/core/lib/Drupal/Core/Cache/CacheableDependencyInterface.php
index cbce6aac6a..e19ad24f30 100644
--- a/core/lib/Drupal/Core/Cache/CacheableDependencyInterface.php
+++ b/core/lib/Drupal/Core/Cache/CacheableDependencyInterface.php
@@ -46,6 +46,8 @@ public function getCacheTags();
    *
    * @return int
    *   The maximum time in seconds that this object may be cached.
+   *   An object may be cached permanently by returning
+   *   \Drupal\Core\Cache\Cache::PERMANENT.
    */
   public function getCacheMaxAge();
 
diff --git a/core/lib/Drupal/Core/Config/ConfigImporter.php b/core/lib/Drupal/Core/Config/ConfigImporter.php
index e86cc052cb..4846d9f554 100644
--- a/core/lib/Drupal/Core/Config/ConfigImporter.php
+++ b/core/lib/Drupal/Core/Config/ConfigImporter.php
@@ -379,6 +379,9 @@ protected function createExtensionChangelist() {
       return;
     }
 
+    // Reset the module list in case a stale cache item has been set by another
+    // process during deployment.
+    $this->moduleExtensionList->reset();
     // Get a list of modules with dependency weights as values.
     $module_data = $this->moduleExtensionList->getList();
     // Set the actual module weights.
diff --git a/core/lib/Drupal/Core/Config/DatabaseStorage.php b/core/lib/Drupal/Core/Config/DatabaseStorage.php
index 14290691e1..7626bf5080 100644
--- a/core/lib/Drupal/Core/Config/DatabaseStorage.php
+++ b/core/lib/Drupal/Core/Config/DatabaseStorage.php
@@ -324,9 +324,8 @@ public function getCollectionName() {
   public function getAllCollectionNames() {
     try {
       return $this->connection->query('SELECT DISTINCT [collection] FROM {' . $this->connection->escapeTable($this->table) . '} WHERE [collection] <> :collection ORDER by [collection]', [
-          ':collection' => StorageInterface::DEFAULT_COLLECTION,
-        ]
-      )->fetchCol();
+        ':collection' => StorageInterface::DEFAULT_COLLECTION,
+      ])->fetchCol();
     }
     catch (\Exception $e) {
       return [];
diff --git a/core/lib/Drupal/Core/Config/Entity/ConfigDependencyManager.php b/core/lib/Drupal/Core/Config/Entity/ConfigDependencyManager.php
index 107126903e..f171e18494 100644
--- a/core/lib/Drupal/Core/Config/Entity/ConfigDependencyManager.php
+++ b/core/lib/Drupal/Core/Config/Entity/ConfigDependencyManager.php
@@ -186,7 +186,7 @@ public function getDependentEntities($type, $name) {
    * @param array $keys
    *   The keys whose values to extract.
    *
-   * @return
+   * @return array
    *   An array keyed by the $keys passed in. The values are arrays keyed by the
    *   row from the graph and the value is the corresponding value for the key
    *   from the graph.
diff --git a/core/lib/Drupal/Core/Controller/TitleResolverInterface.php b/core/lib/Drupal/Core/Controller/TitleResolverInterface.php
index b83aaeb651..905264961a 100644
--- a/core/lib/Drupal/Core/Controller/TitleResolverInterface.php
+++ b/core/lib/Drupal/Core/Controller/TitleResolverInterface.php
@@ -26,7 +26,7 @@ interface TitleResolverInterface {
    * @param \Symfony\Component\Routing\Route $route
    *   The route information of the route to fetch the title.
    *
-   * @return array|string|null
+   * @return array|string|\Stringable|null
    *   The title for the route.
    */
   public function getTitle(Request $request, Route $route);
diff --git a/core/lib/Drupal/Core/Database/Connection.php b/core/lib/Drupal/Core/Database/Connection.php
index 66dca14273..142e452ceb 100644
--- a/core/lib/Drupal/Core/Database/Connection.php
+++ b/core/lib/Drupal/Core/Database/Connection.php
@@ -1612,7 +1612,7 @@ abstract public function createDatabase($database);
    * @param string $operator
    *   The condition operator, such as "IN", "BETWEEN", etc. Case-sensitive.
    *
-   * @return
+   * @return array|null
    *   The extra handling directives for the specified operator, or NULL.
    *
    * @see \Drupal\Core\Database\Query\Condition::compile()
@@ -1648,7 +1648,7 @@ public function commit() {
    *   is behind, so by passing in the maximum existing ID, it can be assured
    *   that we never issue the same ID.
    *
-   * @return
+   * @return int|string
    *   An integer number larger than any number returned by earlier calls and
    *   also larger than the $existing_id if one was passed in.
    */
diff --git a/core/lib/Drupal/Core/Database/Database.php b/core/lib/Drupal/Core/Database/Database.php
index 6493c87c5c..9b5364942b 100644
--- a/core/lib/Drupal/Core/Database/Database.php
+++ b/core/lib/Drupal/Core/Database/Database.php
@@ -58,8 +58,7 @@ abstract class Database {
   const RETURN_INSERT_ID = 3;
 
   /**
-   * A nested array of all active connections. It is keyed by database name
-   * and target.
+   * A nested array of active connections, keyed by database name and target.
    *
    * @var array
    */
@@ -238,9 +237,41 @@ final public static function parseConnectionInfo(array $info) {
     // Prefix information, default to an empty prefix.
     $info['prefix'] = $info['prefix'] ?? '';
 
-    // Fallback for Drupal 7 settings.php if namespace is not provided.
-    if (empty($info['namespace'])) {
-      $info['namespace'] = 'Drupal\\' . $info['driver'] . '\\Driver\\Database\\' . $info['driver'];
+    // Backwards compatibility layer for Drupal 8 style database connection
+    // arrays. Those have the wrong 'namespace' key set, or not set at all
+    // for core supported database drivers.
+    if (empty($info['namespace']) || (strpos($info['namespace'], 'Drupal\\Core\\Database\\Driver\\') === 0)) {
+      switch (strtolower($info['driver'])) {
+        case 'mysql':
+          $info['namespace'] = 'Drupal\\mysql\\Driver\\Database\\mysql';
+          break;
+
+        case 'pgsql':
+          $info['namespace'] = 'Drupal\\pgsql\\Driver\\Database\\pgsql';
+          break;
+
+        case 'sqlite':
+          $info['namespace'] = 'Drupal\\sqlite\\Driver\\Database\\sqlite';
+          break;
+      }
+    }
+    // Backwards compatibility layer for Drupal 8 style database connection
+    // arrays. Those do not have the 'autoload' key set for core database
+    // drivers.
+    if (empty($info['autoload'])) {
+      switch (trim($info['namespace'], '\\')) {
+        case "Drupal\\mysql\\Driver\\Database\\mysql":
+          $info['autoload'] = "core/modules/mysql/src/Driver/Database/mysql/";
+          break;
+
+        case "Drupal\\pgsql\\Driver\\Database\\pgsql":
+          $info['autoload'] = "core/modules/pgsql/src/Driver/Database/pgsql/";
+          break;
+
+        case "Drupal\\sqlite\\Driver\\Database\\sqlite":
+          $info['autoload'] = "core/modules/sqlite/src/Driver/Database/sqlite/";
+          break;
+      }
     }
 
     return $info;
@@ -268,12 +299,28 @@ final public static function parseConnectionInfo(array $info) {
    *   The database connection information, as defined in settings.php. The
    *   structure of this array depends on the database driver it is connecting
    *   to.
+   * @param \Composer\Autoload\ClassLoader $class_loader
+   *   The class loader. Used for adding the database driver to the autoloader
+   *   if $info['autoload'] is set.
+   * @param string $app_root
+   *   The app root.
    *
    * @see \Drupal\Core\Database\Database::setActiveConnection
    */
-  final public static function addConnectionInfo($key, $target, array $info) {
+  final public static function addConnectionInfo($key, $target, array $info, $class_loader = NULL, $app_root = NULL) {
     if (empty(self::$databaseInfo[$key][$target])) {
-      self::$databaseInfo[$key][$target] = self::parseConnectionInfo($info);
+      $info = self::parseConnectionInfo($info);
+      self::$databaseInfo[$key][$target] = $info;
+
+      // If the database driver is provided by a module, then its code may need
+      // to be instantiated prior to when the module's root namespace is added
+      // to the autoloader, because that happens during service container
+      // initialization but the container definition is likely in the database.
+      // Therefore, allow the connection info to specify an autoload directory
+      // for the driver.
+      if (isset($info['autoload']) && $class_loader && $app_root) {
+        $class_loader->addPsr4($info['namespace'] . '\\', $app_root . '/' . $info['autoload']);
+      }
     }
   }
 
@@ -306,11 +353,16 @@ final public static function getAllConnectionInfo() {
    * @param array $databases
    *   A multi-dimensional array specifying database connection parameters, as
    *   defined in settings.php.
+   * @param \Composer\Autoload\ClassLoader $class_loader
+   *   The class loader. Used for adding the database driver(s) to the
+   *   autoloader if $databases[$key][$target]['autoload'] is set.
+   * @param string $app_root
+   *   The app root.
    */
-  final public static function setMultipleConnectionInfo(array $databases) {
+  final public static function setMultipleConnectionInfo(array $databases, $class_loader = NULL, $app_root = NULL) {
     foreach ($databases as $key => $targets) {
       foreach ($targets as $target => $info) {
-        self::addConnectionInfo($key, $target, $info);
+        self::addConnectionInfo($key, $target, $info, $class_loader, $app_root);
       }
     }
   }
@@ -452,6 +504,10 @@ public static function ignoreTarget($key, $target) {
    *   The URL.
    * @param string $root
    *   The root directory of the Drupal installation.
+   * @param bool|null $include_test_drivers
+   *   (optional) Whether to include test extensions. If FALSE, all 'tests'
+   *   directories are excluded in the search. When NULL will be determined by
+   *   the extension_discovery_scan_tests setting.
    *
    * @return array
    *   The database connection info.
@@ -462,7 +518,7 @@ public static function ignoreTarget($key, $target) {
    * @throws \RuntimeException
    *   Exception thrown when a module provided database driver does not exist.
    */
-  public static function convertDbUrlToConnectionInfo($url, $root) {
+  public static function convertDbUrlToConnectionInfo($url, $root, ?bool $include_test_drivers = NULL) {
     // Check that the URL is well formed, starting with 'scheme://', where
     // 'scheme' is a database driver name.
     if (preg_match('/^(.*):\/\//', $url, $matches) !== 1) {
@@ -491,7 +547,7 @@ public static function convertDbUrlToConnectionInfo($url, $root) {
       // this method can be called before Drupal is installed and is never
       // called during regular runtime.
       $namespace = "Drupal\\$module\\Driver\\Database\\$driver";
-      $psr4_base_directory = Database::findDriverAutoloadDirectory($namespace, $root, TRUE);
+      $psr4_base_directory = Database::findDriverAutoloadDirectory($namespace, $root, $include_test_drivers);
       $additional_class_loader = new ClassLoader();
       $additional_class_loader->addPsr4($namespace . '\\', $psr4_base_directory);
       $additional_class_loader->register(TRUE);
@@ -563,6 +619,10 @@ public static function convertDbUrlToConnectionInfo($url, $root) {
    *   The database driver's namespace.
    * @param string $root
    *   The root directory of the Drupal installation.
+   * @param bool|null $include_test_drivers
+   *   (optional) Whether to include test extensions. If FALSE, all 'tests'
+   *   directories are excluded in the search. When NULL will be determined by
+   *   the extension_discovery_scan_tests setting.
    *
    * @return string|false
    *   The PSR-4 directory to add to the autoloader for the namespace if the
@@ -572,7 +632,7 @@ public static function convertDbUrlToConnectionInfo($url, $root) {
    * @throws \RuntimeException
    *   Exception thrown when a module provided database driver does not exist.
    */
-  public static function findDriverAutoloadDirectory($namespace, $root) {
+  public static function findDriverAutoloadDirectory($namespace, $root, ?bool $include_test_drivers = NULL) {
     // As explained by this method's documentation, return FALSE if the
     // namespace is not a sub-namespace of a Drupal module.
     if (!static::isWithinModuleNamespace($namespace)) {
@@ -585,7 +645,7 @@ public static function findDriverAutoloadDirectory($namespace, $root) {
     // The namespace is within a Drupal module. Find the directory where the
     // module is located.
     $extension_discovery = new ExtensionDiscovery($root, FALSE, []);
-    $modules = $extension_discovery->scan('module');
+    $modules = $extension_discovery->scan('module', $include_test_drivers);
     if (!isset($modules[$module])) {
       throw new \RuntimeException(sprintf("Cannot find the module '%s' for the database driver namespace '%s'", $module, $namespace));
     }
diff --git a/core/lib/Drupal/Core/Database/Log.php b/core/lib/Drupal/Core/Database/Log.php
index 5fd10b18ac..b310d17284 100644
--- a/core/lib/Drupal/Core/Database/Log.php
+++ b/core/lib/Drupal/Core/Database/Log.php
@@ -70,7 +70,7 @@ public function start($logging_key) {
    * @param $logging_key
    *   The logging key to fetch.
    *
-   * @return
+   * @return array
    *   An indexed array of all query records for this logging key.
    */
   public function get($logging_key) {
@@ -141,7 +141,7 @@ public function log(StatementInterface $statement, $args, $time, float $start =
    * See the @link http://php.net/debug_backtrace debug_backtrace() @endlink
    * function.
    *
-   * @return
+   * @return array|null
    *   This method returns a stack trace entry similar to that generated by
    *   debug_backtrace(). However, it flattens the trace entry and the trace
    *   entry before it so that we get the function and args of the function that
diff --git a/core/lib/Drupal/Core/Database/Query/AlterableInterface.php b/core/lib/Drupal/Core/Database/Query/AlterableInterface.php
index a77c26acd3..347019569c 100644
--- a/core/lib/Drupal/Core/Database/Query/AlterableInterface.php
+++ b/core/lib/Drupal/Core/Database/Query/AlterableInterface.php
@@ -30,7 +30,7 @@ public function addTag($tag);
    * @param $tag
    *   The tag to check.
    *
-   * @return
+   * @return bool
    *   TRUE if this query has been marked with this tag, FALSE otherwise.
    */
   public function hasTag($tag);
@@ -43,7 +43,7 @@ public function hasTag($tag);
    * @todo Restore PHPDoc of variadic argument in Drupal 8.8, see
    * https://www.drupal.org/project/drupal/issues/3029729
    *
-   * @return
+   * @return bool
    *   TRUE if this query has been marked with all specified tags, FALSE
    *   otherwise.
    */
@@ -57,7 +57,7 @@ public function hasAllTags();
    * @todo Restore PHPDoc of variadic argument in Drupal 8.8, see
    * https://www.drupal.org/project/drupal/issues/3029729
    *
-   * @return
+   * @return bool
    *   TRUE if this query has been marked with at least one of the specified
    *   tags, FALSE otherwise.
    */
@@ -87,7 +87,7 @@ public function addMetaData($key, $object);
    * @param $key
    *   The unique identifier for the piece of metadata to retrieve.
    *
-   * @return
+   * @return mixed
    *   The previously attached metadata object, or NULL if one doesn't exist.
    */
   public function getMetaData($key);
diff --git a/core/lib/Drupal/Core/Database/Query/ConditionInterface.php b/core/lib/Drupal/Core/Database/Query/ConditionInterface.php
index 5c08c98010..347f25645a 100644
--- a/core/lib/Drupal/Core/Database/Query/ConditionInterface.php
+++ b/core/lib/Drupal/Core/Database/Query/ConditionInterface.php
@@ -170,7 +170,7 @@ public function &conditions();
   /**
    * Gets a complete list of all values to insert into the prepared statement.
    *
-   * @return
+   * @return array
    *   An associative array of placeholders and values.
    */
   public function arguments();
@@ -192,7 +192,7 @@ public function compile(Connection $connection, PlaceholderInterface $queryPlace
   /**
    * Check whether a condition has been previously compiled.
    *
-   * @return
+   * @return bool
    *   TRUE if the condition has been previously compiled.
    */
   public function compiled();
diff --git a/core/lib/Drupal/Core/Database/Query/Insert.php b/core/lib/Drupal/Core/Database/Query/Insert.php
index af4e32820f..cb2ee9d336 100644
--- a/core/lib/Drupal/Core/Database/Query/Insert.php
+++ b/core/lib/Drupal/Core/Database/Query/Insert.php
@@ -57,7 +57,7 @@ public function from(SelectInterface $query) {
   /**
    * Executes the insert query.
    *
-   * @return
+   * @return int|null|string
    *   The last insert ID of the query, if one exists. If the query was given
    *   multiple sets of values to insert, the return value is undefined. If no
    *   fields are specified, this method will do nothing and return NULL. That
diff --git a/core/lib/Drupal/Core/Database/Query/Merge.php b/core/lib/Drupal/Core/Database/Query/Merge.php
index a664182074..88681e30cf 100644
--- a/core/lib/Drupal/Core/Database/Query/Merge.php
+++ b/core/lib/Drupal/Core/Database/Query/Merge.php
@@ -356,7 +356,7 @@ public function __toString() {
   /**
    * Executes the merge database query.
    *
-   * @return
+   * @return int|null
    *   One of the following values:
    *   - Merge::STATUS_INSERT: If the entry does not already exist,
    *     and an INSERT query is executed.
@@ -407,6 +407,7 @@ public function execute() {
       $update->execute();
       return self::STATUS_UPDATE;
     }
+    return NULL;
   }
 
 }
diff --git a/core/lib/Drupal/Core/Database/Query/PlaceholderInterface.php b/core/lib/Drupal/Core/Database/Query/PlaceholderInterface.php
index f2a00dec5c..9295a369ad 100644
--- a/core/lib/Drupal/Core/Database/Query/PlaceholderInterface.php
+++ b/core/lib/Drupal/Core/Database/Query/PlaceholderInterface.php
@@ -15,7 +15,7 @@ public function uniqueIdentifier();
   /**
    * Returns the next placeholder ID for the query.
    *
-   * @return
+   * @return int
    *   The next available placeholder ID as an integer.
    */
   public function nextPlaceholder();
diff --git a/core/lib/Drupal/Core/Database/Query/Select.php b/core/lib/Drupal/Core/Database/Query/Select.php
index 129151a735..93ffa081a6 100644
--- a/core/lib/Drupal/Core/Database/Query/Select.php
+++ b/core/lib/Drupal/Core/Database/Query/Select.php
@@ -93,8 +93,9 @@ class Select extends Query implements SelectInterface {
   protected $range;
 
   /**
-   * An array whose elements specify a query to UNION, and the UNION type. The
-   * 'type' key may be '', 'ALL', or 'DISTINCT' to represent a 'UNION',
+   * An array whose elements specify a query to UNION, and the UNION type.
+   *
+   * The 'type' key may be '', 'ALL', or 'DISTINCT' to represent a 'UNION',
    * 'UNION ALL', or 'UNION DISTINCT' statement, respectively.
    *
    * All entries in this array will be applied from front to back, with the
diff --git a/core/lib/Drupal/Core/Database/Query/SelectInterface.php b/core/lib/Drupal/Core/Database/Query/SelectInterface.php
index 449d0b64d3..d89693fd6f 100644
--- a/core/lib/Drupal/Core/Database/Query/SelectInterface.php
+++ b/core/lib/Drupal/Core/Database/Query/SelectInterface.php
@@ -26,7 +26,7 @@ interface SelectInterface extends ConditionInterface, AlterableInterface, Extend
    * $fields =& $query->getFields();
    * @endcode
    *
-   * @return
+   * @return array
    *   A reference to the fields array structure.
    */
   public function &getFields();
@@ -44,7 +44,7 @@ public function &getFields();
    * $fields =& $query->getExpressions();
    * @endcode
    *
-   * @return
+   * @return array
    *   A reference to the expression array structure.
    */
   public function &getExpressions();
@@ -62,7 +62,7 @@ public function &getExpressions();
    * $fields =& $query->getOrderBy();
    * @endcode
    *
-   * @return
+   * @return array
    *   A reference to the expression array structure.
    */
   public function &getOrderBy();
@@ -80,7 +80,7 @@ public function &getOrderBy();
    * $fields =& $query->getGroupBy();
    * @endcode
    *
-   * @return
+   * @return array
    *   A reference to the group-by array structure.
    */
   public function &getGroupBy();
@@ -98,7 +98,7 @@ public function &getGroupBy();
    * $tables =& $query->getTables();
    * @endcode
    *
-   * @return
+   * @return array
    *   A reference to the tables array structure.
    */
   public function &getTables();
@@ -117,7 +117,7 @@ public function &getTables();
    * $fields =& $query->getUnion();
    * @endcode
    *
-   * @return
+   * @return array
    *   A reference to the union query array structure.
    */
   public function &getUnion();
@@ -145,7 +145,7 @@ public function escapeLike($string);
    * @param string $string
    *   An unsanitized field name.
    *
-   * @return
+   * @return string
    *   The sanitized field name string.
    */
   public function escapeField($string);
@@ -157,7 +157,7 @@ public function escapeField($string);
    *   When collecting the arguments of a subquery, the main placeholder
    *   object should be passed as this parameter.
    *
-   * @return
+   * @return array
    *   An associative array of all placeholder arguments for this query.
    */
   public function getArguments(PlaceholderInterface $queryPlaceholder = NULL);
@@ -190,7 +190,7 @@ public function distinct($distinct = TRUE);
    *   checked for uniqueness, so the requested alias may not be the alias
    *   that is assigned in all cases.
    *
-   * @return
+   * @return string
    *   The unique alias that was assigned for this field.
    */
   public function addField($table_alias, $field, $alias = NULL);
@@ -236,7 +236,7 @@ public function fields($table_alias, array $fields = []);
    * @param $arguments
    *   Any placeholder arguments needed for this expression.
    *
-   * @return
+   * @return string
    *   The unique alias that was assigned for this expression.
    */
   public function addExpression($expression, $alias = NULL, $arguments = []);
@@ -265,7 +265,7 @@ public function addExpression($expression, $alias = NULL, $arguments = []);
    * @param $arguments
    *   An array of arguments to replace into the $condition of this join.
    *
-   * @return
+   * @return string
    *   The unique alias that was assigned for this table.
    */
   public function join($table, $alias = NULL, $condition = NULL, $arguments = []);
@@ -292,7 +292,7 @@ public function join($table, $alias = NULL, $condition = NULL, $arguments = []);
    * @param $arguments
    *   An array of arguments to replace into the $condition of this join.
    *
-   * @return
+   * @return string
    *   The unique alias that was assigned for this table.
    */
   public function innerJoin($table, $alias = NULL, $condition = NULL, $arguments = []);
@@ -319,7 +319,7 @@ public function innerJoin($table, $alias = NULL, $condition = NULL, $arguments =
    * @param $arguments
    *   An array of arguments to replace into the $condition of this join.
    *
-   * @return
+   * @return string
    *   The unique alias that was assigned for this table.
    */
   public function leftJoin($table, $alias = NULL, $condition = NULL, $arguments = []);
@@ -353,7 +353,7 @@ public function leftJoin($table, $alias = NULL, $condition = NULL, $arguments =
    * @param $arguments
    *   An array of arguments to replace into the $condition of this join.
    *
-   * @return
+   * @return string
    *   The unique alias that was assigned for this table.
    */
   public function addJoin($type, $table, $alias = NULL, $condition = NULL, $arguments = []);
@@ -478,7 +478,7 @@ public function countQuery();
   /**
    * Indicates if preExecute() has already been called on that object.
    *
-   * @return
+   * @return bool
    *   TRUE is this query has already been prepared, FALSE otherwise.
    */
   public function isPrepared();
@@ -486,7 +486,7 @@ public function isPrepared();
   /**
    * Generic preparation and validation for a SELECT query.
    *
-   * @return
+   * @return bool
    *   TRUE if the validation was successful, FALSE if not.
    */
   public function preExecute(SelectInterface $query = NULL);
diff --git a/core/lib/Drupal/Core/Database/Query/Truncate.php b/core/lib/Drupal/Core/Database/Query/Truncate.php
index 7cfce9cd7d..01f0c9d47d 100644
--- a/core/lib/Drupal/Core/Database/Query/Truncate.php
+++ b/core/lib/Drupal/Core/Database/Query/Truncate.php
@@ -38,7 +38,7 @@ public function __construct(Connection $connection, $table, array $options = [])
   /**
    * Executes the TRUNCATE query.
    *
-   * @return
+   * @return int|null
    *   Return value is dependent on whether the executed SQL statement is a
    *   TRUNCATE or a DELETE. TRUNCATE is DDL and no information on affected
    *   rows is available. DELETE is DML and will return the number of affected
@@ -56,6 +56,8 @@ public function execute() {
     catch (\Exception $e) {
       $this->connection->exceptionHandler()->handleExecutionException($e, $stmt, [], $this->queryOptions);
     }
+
+    return NULL;
   }
 
   /**
diff --git a/core/lib/Drupal/Core/Database/Query/Update.php b/core/lib/Drupal/Core/Database/Query/Update.php
index 1311083e10..fb7db437af 100644
--- a/core/lib/Drupal/Core/Database/Query/Update.php
+++ b/core/lib/Drupal/Core/Database/Query/Update.php
@@ -115,7 +115,7 @@ public function expression($field, $expression, array $arguments = NULL) {
   /**
    * Executes the UPDATE query.
    *
-   * @return
+   * @return int|null
    *   The number of rows matched by the update query. This includes rows that
    *   actually didn't have to be updated because the values didn't change.
    */
diff --git a/core/lib/Drupal/Core/Database/Schema.php b/core/lib/Drupal/Core/Database/Schema.php
index 191509cc60..9503a23505 100644
--- a/core/lib/Drupal/Core/Database/Schema.php
+++ b/core/lib/Drupal/Core/Database/Schema.php
@@ -162,7 +162,7 @@ protected function buildTableNameCondition($table_name, $operator = '=', $add_pr
    * @param $table
    *   The name of the table in drupal (no prefixing).
    *
-   * @return
+   * @return bool
    *   TRUE if the given table exists, otherwise FALSE.
    */
   public function tableExists($table) {
@@ -240,7 +240,7 @@ public function findTables($table_expression) {
    * @param string $column
    *   The name of the column.
    *
-   * @return
+   * @return bool
    *   TRUE if the given column exists, otherwise FALSE.
    */
   public function fieldExists($table, $column) {
@@ -288,7 +288,7 @@ abstract public function renameTable($table, $new_name);
    * @param $table
    *   The table to be dropped.
    *
-   * @return
+   * @return bool
    *   TRUE if the table was successfully dropped, FALSE if there was no table
    *   by that name to begin with.
    */
@@ -332,7 +332,7 @@ abstract public function addField($table, $field, $spec, $keys_new = []);
    * @param $field
    *   The field to be dropped.
    *
-   * @return
+   * @return bool
    *   TRUE if the field was successfully dropped, FALSE if there was no field
    *   by that name to begin with.
    */
@@ -346,7 +346,7 @@ abstract public function dropField($table, $field);
    * @param $name
    *   The name of the index in drupal (no prefixing).
    *
-   * @return
+   * @return bool
    *   TRUE if the given index exists, otherwise FALSE.
    */
   abstract public function indexExists($table, $name);
@@ -372,7 +372,7 @@ abstract public function addPrimaryKey($table, $fields);
    * @param $table
    *   The table to be altered.
    *
-   * @return
+   * @return bool
    *   TRUE if the primary key was successfully dropped, FALSE if there was no
    *   primary key on this table to begin with.
    */
@@ -423,7 +423,7 @@ abstract public function addUniqueKey($table, $name, $fields);
    * @param $name
    *   The name of the key.
    *
-   * @return
+   * @return bool
    *   TRUE if the key was successfully dropped, FALSE if there was no key by
    *   that name to begin with.
    */
@@ -499,7 +499,7 @@ abstract public function addIndex($table, $name, $fields, array $spec);
    * @param $name
    *   The name of the index.
    *
-   * @return
+   * @return bool
    *   TRUE if the index was successfully dropped, FALSE if there was no index
    *   by that name to begin with.
    */
@@ -605,6 +605,8 @@ abstract public function changeField($table, $field, $field_new, $spec, $keys_ne
    *
    * @throws \Drupal\Core\Database\SchemaObjectExistsException
    *   If the specified table already exists.
+   * @throws \BadMethodCallException
+   *   When ::createTableSql() is not implemented in the concrete driver class.
    */
   public function createTable($name, $table) {
     if ($this->tableExists($name)) {
@@ -616,6 +618,32 @@ public function createTable($name, $table) {
     }
   }
 
+  /**
+   * Generate SQL to create a new table from a Drupal schema definition.
+   *
+   * This method should be implemented in extending classes.
+   *
+   * @param string $name
+   *   The name of the table to create.
+   * @param array $table
+   *   A Schema API table definition array.
+   *
+   * @return array
+   *   An array of SQL statements to create the table.
+   *
+   * @throws \BadMethodCallException
+   *   If the method is not implemented in the concrete driver class.
+   *
+   * @todo This method is called by Schema::createTable on the abstract class, and
+   *   therefore should be defined as well on the abstract class to prevent static
+   *   analysis errors. In D11, consider changing it to an abstract method, or to
+   *   make it private for each driver, and ::createTable actually an abstract
+   *   method here for implementation in each driver.
+   */
+  protected function createTableSql($name, $table) {
+    throw new \BadMethodCallException(get_class($this) . '::createTableSql() not implemented.');
+  }
+
   /**
    * Return an array of field names from an array of key/index column specifiers.
    *
@@ -625,7 +653,7 @@ public function createTable($name, $table) {
    * @param $fields
    *   An array of key/index column specifiers.
    *
-   * @return
+   * @return array
    *   An array of field names.
    */
   public function fieldNames($fields) {
@@ -649,7 +677,7 @@ public function fieldNames($fields) {
    * @param $length
    *   Optional upper limit on the returned string length.
    *
-   * @return
+   * @return string
    *   The prepared comment.
    */
   public function prepareComment($comment, $length = NULL) {
diff --git a/core/lib/Drupal/Core/Database/StatementInterface.php b/core/lib/Drupal/Core/Database/StatementInterface.php
index 3c01801d24..698ca90440 100644
--- a/core/lib/Drupal/Core/Database/StatementInterface.php
+++ b/core/lib/Drupal/Core/Database/StatementInterface.php
@@ -31,7 +31,7 @@ interface StatementInterface extends \Traversable {
    * @param $options
    *   An array of options for this query.
    *
-   * @return
+   * @return bool
    *   TRUE on success, or FALSE on failure.
    */
   public function execute($args = [], $options = []);
@@ -39,7 +39,7 @@ public function execute($args = [], $options = []);
   /**
    * Gets the query string of this statement.
    *
-   * @return
+   * @return string
    *   The query string, in its form with placeholders.
    */
   public function getQueryString();
@@ -55,7 +55,7 @@ public function getConnectionTarget(): string;
   /**
    * Returns the number of rows affected by the last SQL statement.
    *
-   * @return
+   * @return int
    *   The number of rows affected by the last DELETE, INSERT, or UPDATE
    *   statement executed or throws \Drupal\Core\Database\RowCountException
    *   if the last executed statement was SELECT.
@@ -97,8 +97,8 @@ public function setFetchMode($mode, $a1 = NULL, $a2 = []);
    * @param $cursor_offset
    *   Not implemented in all database drivers, don't use.
    *
-   * @return
-   *   A result, formatted according to $mode.
+   * @return array|object|false
+   *   A result, formatted according to $mode, or FALSE on failure.
    */
   public function fetch($mode = NULL, $cursor_orientation = NULL, $cursor_offset = NULL);
 
@@ -108,7 +108,7 @@ public function fetch($mode = NULL, $cursor_orientation = NULL, $cursor_offset =
    * @param $index
    *   The numeric index of the field to return. Defaults to the first field.
    *
-   * @return
+   * @return mixed
    *   A single field from the next record, or FALSE if there is no next record.
    */
   public function fetchField($index = 0);
@@ -141,7 +141,7 @@ public function fetchObject(/* string $class_name = NULL, array $constructor_arg
    * associative arrays. For some reason \PDOStatement does not have a
    * corresponding array helper method, so one is added.
    *
-   * @return
+   * @return array|bool
    *   An associative array, or FALSE if there is no next row.
    */
   public function fetchAssoc();
@@ -156,7 +156,7 @@ public function fetchAssoc();
    * @param $constructor_arguments
    *   If $mode is \PDO::FETCH_CLASS, the arguments to pass to the constructor.
    *
-   * @return
+   * @return array
    *   An array of results.
    */
   public function fetchAll($mode = NULL, $column_index = NULL, $constructor_arguments = NULL);
@@ -169,7 +169,7 @@ public function fetchAll($mode = NULL, $column_index = NULL, $constructor_argume
    * @param $index
    *   The index of the column number to fetch.
    *
-   * @return
+   * @return array
    *   An indexed array, or an empty array if there is no result set.
    */
   public function fetchCol($index = 0);
@@ -189,7 +189,7 @@ public function fetchCol($index = 0);
    * @param $value_index
    *   The numeric index of the field to use as the array value.
    *
-   * @return
+   * @return array
    *   An associative array, or an empty array if there is no result set.
    */
   public function fetchAllKeyed($key_index = 0, $value_index = 1);
@@ -208,7 +208,7 @@ public function fetchAllKeyed($key_index = 0, $value_index = 1);
    *   other value it will be an array of objects. By default, the fetch mode
    *   set for the query will be used.
    *
-   * @return
+   * @return array
    *   An associative array, or an empty array if there is no result set.
    */
   public function fetchAllAssoc($key, $fetch = NULL);
diff --git a/core/lib/Drupal/Core/Database/SupportsTemporaryTablesInterface.php b/core/lib/Drupal/Core/Database/SupportsTemporaryTablesInterface.php
new file mode 100644
index 0000000000..2e6bd0fb06
--- /dev/null
+++ b/core/lib/Drupal/Core/Database/SupportsTemporaryTablesInterface.php
@@ -0,0 +1,39 @@
+<?php
+
+namespace Drupal\Core\Database;
+
+/**
+ * Adds support for temporary tables.
+ *
+ * @ingroup database
+ */
+interface SupportsTemporaryTablesInterface {
+
+  /**
+   * Runs a SELECT query and stores its results in a temporary table.
+   *
+   * Use this as a substitute for ->query() when the results need to stored
+   * in a temporary table. Temporary tables exist for the duration of the page
+   * request. User-supplied arguments to the query should be passed in as
+   * separate parameters so that they can be properly escaped to avoid SQL
+   * injection attacks.
+   *
+   * Note that if you need to know how many results were returned, you should do
+   * a SELECT COUNT(*) on the temporary table afterwards.
+   *
+   * @param string $query
+   *   A string containing a normal SELECT SQL query.
+   * @param array $args
+   *   (optional) An array of values to substitute into the query at placeholder
+   *   markers.
+   * @param array $options
+   *   (optional) An associative array of options to control how the query is
+   *   run. See the documentation for DatabaseConnection::defaultOptions() for
+   *   details.
+   *
+   * @return string
+   *   The name of the temporary table.
+   */
+  public function queryTemporary($query, array $args = [], array $options = []);
+
+}
diff --git a/core/lib/Drupal/Core/Datetime/DateHelper.php b/core/lib/Drupal/Core/Datetime/DateHelper.php
index bbe76d1e2c..63d1188f50 100644
--- a/core/lib/Drupal/Core/Datetime/DateHelper.php
+++ b/core/lib/Drupal/Core/Datetime/DateHelper.php
@@ -436,9 +436,9 @@ public static function seconds($format = 's', $required = FALSE, $increment = 1)
   public static function ampm($required = FALSE) {
     $none = ['' => ''];
     $ampm = [
-             'am' => t('am', [], ['context' => 'ampm']),
-             'pm' => t('pm', [], ['context' => 'ampm']),
-            ];
+      'am' => t('am', [], ['context' => 'ampm']),
+      'pm' => t('pm', [], ['context' => 'ampm']),
+    ];
     return !$required ? $none + $ampm : $ampm;
   }
 
diff --git a/core/lib/Drupal/Core/Datetime/Element/Datelist.php b/core/lib/Drupal/Core/Datetime/Element/Datelist.php
index 6ce98c13de..dbc44cafcb 100644
--- a/core/lib/Drupal/Core/Datetime/Element/Datelist.php
+++ b/core/lib/Drupal/Core/Datetime/Element/Datelist.php
@@ -358,7 +358,7 @@ protected static function checkEmptyInputs($input, $parts) {
    * @param $increment
    *   The value to round to.
    *
-   * @return
+   * @return \Drupal\Core\Datetime\DrupalDateTime
    */
   protected static function incrementRound(&$date, $increment) {
     // Round minutes and seconds, if necessary.
diff --git a/core/lib/Drupal/Core/DrupalKernel.php b/core/lib/Drupal/Core/DrupalKernel.php
index bb6be38b33..5d82d72f05 100644
--- a/core/lib/Drupal/Core/DrupalKernel.php
+++ b/core/lib/Drupal/Core/DrupalKernel.php
@@ -3,7 +3,6 @@
 namespace Drupal\Core;
 
 use Composer\Autoload\ClassLoader;
-use Drupal\Component\Assertion\Handle;
 use Drupal\Component\EventDispatcher\Event;
 use Drupal\Component\FileCache\FileCacheFactory;
 use Drupal\Component\Utility\UrlHelper;
@@ -1020,7 +1019,8 @@ public static function bootEnvironment($app_root = NULL) {
 
         // Web tests are to be conducted with runtime assertions active.
         assert_options(ASSERT_ACTIVE, TRUE);
-        Handle::register();
+        // Force assertion failures to be thrown as exceptions.
+        assert_options(ASSERT_EXCEPTION, TRUE);
 
         // Log fatal errors to the test site directory.
         ini_set('log_errors', 1);
diff --git a/core/lib/Drupal/Core/Entity/Annotation/EntityReferenceSelection.php b/core/lib/Drupal/Core/Entity/Annotation/EntityReferenceSelection.php
index 110beb1ba1..33f64d60ec 100644
--- a/core/lib/Drupal/Core/Entity/Annotation/EntityReferenceSelection.php
+++ b/core/lib/Drupal/Core/Entity/Annotation/EntityReferenceSelection.php
@@ -60,8 +60,9 @@ class EntityReferenceSelection extends Plugin {
   public $group;
 
   /**
-   * An array of entity types that can be referenced by this plugin. Defaults to
-   * all entity types.
+   * An array of entity types that can be referenced by this plugin.
+   *
+   * Defaults to all entity types.
    *
    * This property is optional and it does not need to be declared.
    *
diff --git a/core/lib/Drupal/Core/Entity/Element/EntityAutocomplete.php b/core/lib/Drupal/Core/Entity/Element/EntityAutocomplete.php
index 083de1d639..29507fd2e1 100644
--- a/core/lib/Drupal/Core/Entity/Element/EntityAutocomplete.php
+++ b/core/lib/Drupal/Core/Entity/Element/EntityAutocomplete.php
@@ -202,7 +202,7 @@ public static function validateEntityAutocomplete(array &$element, FormStateInte
         'target_type' => $element['#target_type'],
         'handler' => $element['#selection_handler'],
       ];
-      /** @var /Drupal\Core\Entity\EntityReferenceSelection\SelectionInterface $handler */
+      /** @var \Drupal\Core\Entity\EntityReferenceSelection\SelectionInterface $handler */
       $handler = \Drupal::service('plugin.manager.entity_reference_selection')->getInstance($options);
       $autocreate = (bool) $element['#autocreate'] && $handler instanceof SelectionWithAutocreateInterface;
 
diff --git a/core/lib/Drupal/Core/Entity/EntityDisplayBase.php b/core/lib/Drupal/Core/Entity/EntityDisplayBase.php
index ee07817187..1724addaed 100644
--- a/core/lib/Drupal/Core/Entity/EntityDisplayBase.php
+++ b/core/lib/Drupal/Core/Entity/EntityDisplayBase.php
@@ -13,8 +13,7 @@
 abstract class EntityDisplayBase extends ConfigEntityBase implements EntityDisplayInterface {
 
   /**
-   * The 'mode' for runtime EntityDisplay objects used to render entities with
-   * arbitrary display options rather than a configured view mode or form mode.
+   * The mode used to render entities with arbitrary display options.
    *
    * @todo Prevent creation of a mode with this ID
    *   https://www.drupal.org/node/2410727
@@ -57,8 +56,10 @@ abstract class EntityDisplayBase extends ConfigEntityBase implements EntityDispl
   protected $mode = self::CUSTOM_MODE;
 
   /**
-   * Whether this display is enabled or not. If the entity (form) display
-   * is disabled, we'll fall back to the 'default' display.
+   * Whether this display is enabled or not.
+   *
+   * If the entity (form) display is disabled, we'll fall back to the 'default'
+   * display.
    *
    * @var bool
    */
@@ -79,8 +80,10 @@ abstract class EntityDisplayBase extends ConfigEntityBase implements EntityDispl
   protected $hidden = [];
 
   /**
-   * The original view or form mode that was requested (case of view/form modes
-   * being configured to fall back to the 'default' display).
+   * The original view or form mode that was requested.
+   *
+   * Case of view/form modes being configured to fall back to the 'default'
+   * display.
    *
    * @var string
    */
diff --git a/core/lib/Drupal/Core/Entity/EntityFieldManager.php b/core/lib/Drupal/Core/Entity/EntityFieldManager.php
index 8ccdb86a0a..d97b1c6570 100644
--- a/core/lib/Drupal/Core/Entity/EntityFieldManager.php
+++ b/core/lib/Drupal/Core/Entity/EntityFieldManager.php
@@ -63,8 +63,10 @@ class EntityFieldManager implements EntityFieldManagerInterface {
   protected $activeFieldStorageDefinitions;
 
   /**
-   * An array keyed by entity type. Each value is an array whose keys are
-   * field names and whose value is an array with two entries:
+   * An array of lightweight maps of fields, keyed by entity type.
+   *
+   * Each value is an array whose keys are field names and whose value is an
+   * array with two entries:
    *   - type: The field type.
    *   - bundles: The bundles in which the field appears.
    *
@@ -73,10 +75,11 @@ class EntityFieldManager implements EntityFieldManagerInterface {
   protected $fieldMap = [];
 
   /**
-   * An array keyed by field type. Each value is an array whose key are entity
-   * types including arrays in the same form that $fieldMap.
+   * An array of lightweight maps of fields, keyed by field type.
    *
-   * It helps access the mapping between types and fields by the field type.
+   * Each value is an array whose key are entity types including arrays in the
+   * same form as $fieldMap. It helps access the mapping between types and
+   * fields by the field type.
    *
    * @var array
    */
@@ -373,7 +376,9 @@ public function getFieldDefinitions($entity_type_id, $bundle) {
    */
   protected function buildBundleFieldDefinitions($entity_type_id, $bundle, array $base_field_definitions) {
     $entity_type = $this->entityTypeManager->getDefinition($entity_type_id);
-    $class = $entity_type->getClass();
+
+    // Use a bundle specific class if one is defined.
+    $class = $this->entityTypeManager->getStorage($entity_type_id)->getEntityClass($bundle);
 
     // Allow the entity class to provide bundle fields and bundle-specific
     // overrides of base fields.
diff --git a/core/lib/Drupal/Core/Entity/EntityStorageInterface.php b/core/lib/Drupal/Core/Entity/EntityStorageInterface.php
index eb99d5a90b..99e6bbf7cb 100644
--- a/core/lib/Drupal/Core/Entity/EntityStorageInterface.php
+++ b/core/lib/Drupal/Core/Entity/EntityStorageInterface.php
@@ -145,7 +145,7 @@ public function delete(array $entities);
    * @param \Drupal\Core\Entity\EntityInterface $entity
    *   The entity to save.
    *
-   * @return
+   * @return int|null
    *   SAVED_NEW or SAVED_UPDATED is returned depending on the operation
    *   performed.
    *
diff --git a/core/lib/Drupal/Core/Entity/EntityViewBuilderInterface.php b/core/lib/Drupal/Core/Entity/EntityViewBuilderInterface.php
index 3da4487307..8951a18d14 100644
--- a/core/lib/Drupal/Core/Entity/EntityViewBuilderInterface.php
+++ b/core/lib/Drupal/Core/Entity/EntityViewBuilderInterface.php
@@ -60,7 +60,7 @@ public function view(EntityInterface $entity, $view_mode = 'full', $langcode = N
    *   (optional) For which language the entity should be rendered, defaults to
    *   the current content language.
    *
-   * @return
+   * @return array
    *   A render array for the entities, indexed by the same keys as the
    *   entities array passed in $entities.
    *
diff --git a/core/lib/Drupal/Core/Entity/Plugin/Derivative/DefaultSelectionDeriver.php b/core/lib/Drupal/Core/Entity/Plugin/Derivative/DefaultSelectionDeriver.php
index d46490a8f6..086063a3df 100644
--- a/core/lib/Drupal/Core/Entity/Plugin/Derivative/DefaultSelectionDeriver.php
+++ b/core/lib/Drupal/Core/Entity/Plugin/Derivative/DefaultSelectionDeriver.php
@@ -5,6 +5,7 @@
 use Drupal\Component\Plugin\Derivative\DeriverBase;
 use Drupal\Core\Entity\EntityTypeManagerInterface;
 use Drupal\Core\Plugin\Discovery\ContainerDeriverInterface;
+use Drupal\Core\StringTranslation\StringTranslationTrait;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 
 /**
@@ -17,6 +18,7 @@
  * @see plugin_api
  */
 class DefaultSelectionDeriver extends DeriverBase implements ContainerDeriverInterface {
+  use StringTranslationTrait;
 
   /**
    * The entity type manager.
@@ -51,7 +53,7 @@ public function getDerivativeDefinitions($base_plugin_definition) {
     foreach ($this->entityTypeManager->getDefinitions() as $entity_type_id => $entity_type) {
       $this->derivatives[$entity_type_id] = $base_plugin_definition;
       $this->derivatives[$entity_type_id]['entity_types'] = [$entity_type_id];
-      $this->derivatives[$entity_type_id]['label'] = t('@entity_type selection', ['@entity_type' => $entity_type->getLabel()]);
+      $this->derivatives[$entity_type_id]['label'] = $this->t('@entity_type selection', ['@entity_type' => $entity_type->getLabel()]);
       $this->derivatives[$entity_type_id]['base_plugin_label'] = (string) $base_plugin_definition['label'];
 
       // If the entity type doesn't provide a 'label' key in its plugin
diff --git a/core/lib/Drupal/Core/Entity/Plugin/EntityReferenceSelection/Broken.php b/core/lib/Drupal/Core/Entity/Plugin/EntityReferenceSelection/Broken.php
index e8251e631f..aa53c397d3 100644
--- a/core/lib/Drupal/Core/Entity/Plugin/EntityReferenceSelection/Broken.php
+++ b/core/lib/Drupal/Core/Entity/Plugin/EntityReferenceSelection/Broken.php
@@ -21,7 +21,7 @@ class Broken extends SelectionPluginBase {
   public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
     $form = parent::buildConfigurationForm($form, $form_state);
     $form['selection_handler'] = [
-      '#markup' => t('The selected selection handler is broken.'),
+      '#markup' => $this->t('The selected selection handler is broken.'),
     ];
     return $form;
   }
diff --git a/core/lib/Drupal/Core/Entity/Query/Sql/Condition.php b/core/lib/Drupal/Core/Entity/Query/Sql/Condition.php
index 4d70b1e456..c63216b83a 100644
--- a/core/lib/Drupal/Core/Entity/Query/Sql/Condition.php
+++ b/core/lib/Drupal/Core/Entity/Query/Sql/Condition.php
@@ -25,6 +25,13 @@ class Condition extends ConditionBase {
    */
   protected $query;
 
+  /**
+   * The current SQL query, set by parent condition compile() method calls.
+   *
+   * @var \Drupal\Core\Database\Query\SelectInterface
+   */
+  protected SelectInterface $sqlQuery;
+
   /**
    * {@inheritdoc}
    */
@@ -35,13 +42,13 @@ public function compile($conditionContainer) {
     // SQL query object is only necessary to pass to Query::addField() so it
     // can join tables as necessary. On the other hand, conditions need to be
     // added to the $conditionContainer object to keep grouping.
-    $sql_query = $conditionContainer instanceof SelectInterface ? $conditionContainer : $conditionContainer->sqlQuery;
+    $sql_query = $conditionContainer instanceof SelectInterface ? $conditionContainer : $this->sqlQuery;
     $tables = $this->query->getTables($sql_query);
     foreach ($this->conditions as $condition) {
       if ($condition['field'] instanceof ConditionInterface) {
         $sql_condition = $sql_query->getConnection()->condition($condition['field']->getConjunction());
         // Add the SQL query to the object before calling this method again.
-        $sql_condition->sqlQuery = $sql_query;
+        $condition['field']->sqlQuery = $sql_query;
         $condition['field']->nestedInsideOrCondition = $this->nestedInsideOrCondition || strtoupper($this->conjunction) === 'OR';
         $condition['field']->compile($sql_condition);
         $conditionContainer->condition($sql_condition);
diff --git a/core/lib/Drupal/Core/Entity/Query/Sql/ConditionAggregate.php b/core/lib/Drupal/Core/Entity/Query/Sql/ConditionAggregate.php
index 75784bf11c..9df8c4c2e1 100644
--- a/core/lib/Drupal/Core/Entity/Query/Sql/ConditionAggregate.php
+++ b/core/lib/Drupal/Core/Entity/Query/Sql/ConditionAggregate.php
@@ -12,6 +12,13 @@
  */
 class ConditionAggregate extends ConditionAggregateBase {
 
+  /**
+   * The current SQL query, set by parent condition compile() method calls.
+   *
+   * @var \Drupal\Core\Database\Query\SelectInterface
+   */
+  protected SelectInterface $sqlQuery;
+
   /**
    * {@inheritdoc}
    */
@@ -21,13 +28,13 @@ public function compile($conditionContainer) {
     // SQL query object is only necessary to pass to Query::addField() so it
     // can join tables as necessary. On the other hand, conditions need to be
     // added to the $conditionContainer object to keep grouping.
-    $sql_query = ($conditionContainer instanceof SelectInterface) ? $conditionContainer : $conditionContainer->sqlQuery;
+    $sql_query = ($conditionContainer instanceof SelectInterface) ? $conditionContainer : $this->sqlQuery;
     $tables = new Tables($sql_query);
     foreach ($this->conditions as $condition) {
       if ($condition['field'] instanceof ConditionAggregateInterface) {
         $sql_condition = $sql_query->getConnection()->condition($condition['field']->getConjunction());
         // Add the SQL query to the object before calling this method again.
-        $sql_condition->sqlQuery = $sql_query;
+        $condition['field']->sqlQuery = $sql_query;
         $condition['field']->compile($sql_condition);
         $sql_query->condition($sql_condition);
       }
diff --git a/core/lib/Drupal/Core/Entity/Query/Sql/Query.php b/core/lib/Drupal/Core/Entity/Query/Sql/Query.php
index b022b422e0..b666a441db 100644
--- a/core/lib/Drupal/Core/Entity/Query/Sql/Query.php
+++ b/core/lib/Drupal/Core/Entity/Query/Sql/Query.php
@@ -41,8 +41,9 @@ class Query extends QueryBase implements QueryInterface {
   protected $sqlFields = [];
 
   /**
-   * An array of strings added as to the group by, keyed by the string to avoid
-   * duplicates.
+   * An array of strings for the SQL 'group by' operation.
+   *
+   * Array is keyed by the string to avoid duplicates.
    *
    * @var array
    */
diff --git a/core/lib/Drupal/Core/Entity/RevisionableInterface.php b/core/lib/Drupal/Core/Entity/RevisionableInterface.php
index 1ffe6e088e..e268204f6e 100644
--- a/core/lib/Drupal/Core/Entity/RevisionableInterface.php
+++ b/core/lib/Drupal/Core/Entity/RevisionableInterface.php
@@ -48,7 +48,7 @@ public function setNewRevision($value = TRUE);
   /**
    * Gets the revision identifier of the entity.
    *
-   * @return
+   * @return int|null|string
    *   The revision identifier of the entity, or NULL if the entity does not
    *   have a revision identifier.
    */
diff --git a/core/lib/Drupal/Core/Entity/Sql/DefaultTableMapping.php b/core/lib/Drupal/Core/Entity/Sql/DefaultTableMapping.php
index 7cc5cb2f97..f8f759f055 100644
--- a/core/lib/Drupal/Core/Entity/Sql/DefaultTableMapping.php
+++ b/core/lib/Drupal/Core/Entity/Sql/DefaultTableMapping.php
@@ -54,8 +54,9 @@ class DefaultTableMapping implements TableMappingInterface {
   protected $dataTable;
 
   /**
-   * The table that stores revision field data if the entity supports revisions
-   * and has multilingual support.
+   * The table that stores revision field data.
+   *
+   * Only used if the entity supports revisions and has multilingual support.
    *
    * @var string
    */
diff --git a/core/lib/Drupal/Core/Entity/SynchronizableEntityTrait.php b/core/lib/Drupal/Core/Entity/SynchronizableEntityTrait.php
index 4b7f793efd..abd5e4b30d 100644
--- a/core/lib/Drupal/Core/Entity/SynchronizableEntityTrait.php
+++ b/core/lib/Drupal/Core/Entity/SynchronizableEntityTrait.php
@@ -10,8 +10,7 @@
 trait SynchronizableEntityTrait {
 
   /**
-   * Whether this entity is being created, updated or deleted through a
-   * synchronization process.
+   * Is entity being created updated or deleted through synchronization process.
    *
    * @var bool
    */
diff --git a/core/lib/Drupal/Core/EventSubscriber/FinalExceptionSubscriber.php b/core/lib/Drupal/Core/EventSubscriber/FinalExceptionSubscriber.php
index 3933875768..6c66eefcfb 100644
--- a/core/lib/Drupal/Core/EventSubscriber/FinalExceptionSubscriber.php
+++ b/core/lib/Drupal/Core/EventSubscriber/FinalExceptionSubscriber.php
@@ -179,7 +179,7 @@ protected function isErrorDisplayable($error) {
    * @param $error
    *   Optional error to examine for ERROR_REPORTING_DISPLAY_SOME.
    *
-   * @return
+   * @return array
    *   The updated $error.
    */
   protected function simplifyFileInError($error) {
diff --git a/core/lib/Drupal/Core/Extension/ModuleHandlerInterface.php b/core/lib/Drupal/Core/Extension/ModuleHandlerInterface.php
index 54a8ed26b4..70cbcad101 100644
--- a/core/lib/Drupal/Core/Extension/ModuleHandlerInterface.php
+++ b/core/lib/Drupal/Core/Extension/ModuleHandlerInterface.php
@@ -103,7 +103,7 @@ public function addProfile($name, $path);
    *   information discovered during a Drupal\Core\Extension\ExtensionDiscovery
    *   scan.
    *
-   * @return
+   * @return array
    *   The same array with the new keys for each module:
    *   - requires: An array with the keys being the modules that this module
    *     requires.
diff --git a/core/lib/Drupal/Core/Extension/ThemeInstallerInterface.php b/core/lib/Drupal/Core/Extension/ThemeInstallerInterface.php
index 6f18248cf9..9e5440bc63 100644
--- a/core/lib/Drupal/Core/Extension/ThemeInstallerInterface.php
+++ b/core/lib/Drupal/Core/Extension/ThemeInstallerInterface.php
@@ -44,7 +44,8 @@ public function install(array $theme_list, $install_dependencies = TRUE);
    *   Thrown when trying to uninstall a theme that was not installed.
    *
    * @throws \InvalidArgumentException
-   *   Thrown when trying to uninstall the default theme or the admin theme.
+   *   Thrown when trying to uninstall the admin theme, the default theme or
+   *   a theme that another theme depends on.
    *
    * @see hook_themes_uninstalled()
    */
diff --git a/core/lib/Drupal/Core/Extension/module.api.php b/core/lib/Drupal/Core/Extension/module.api.php
index 69be62ed09..582ba318d7 100644
--- a/core/lib/Drupal/Core/Extension/module.api.php
+++ b/core/lib/Drupal/Core/Extension/module.api.php
@@ -74,7 +74,7 @@
  *
  * See system_hook_info() for all hook groups defined by Drupal core.
  *
- * @return
+ * @return array
  *   An associative array whose keys are hook names and whose values are an
  *   associative array containing:
  *   - group: A string defining the group to which the hook belongs. The module
@@ -797,7 +797,7 @@ function hook_removed_post_updates() {
  * Implementations of this hook should be placed in a mymodule.install file in
  * the same directory as mymodule.module.
  *
- * @return
+ * @return array
  *   A multidimensional array containing information about the module update
  *   dependencies. The first two levels of keys represent the module and update
  *   number (respectively) for which information is being returned, and the
@@ -843,7 +843,7 @@ function hook_update_dependencies() {
  * Implementations of this hook should be placed in a mymodule.install file in
  * the same directory as mymodule.module.
  *
- * @return
+ * @return int
  *   An integer, corresponding to hook_update_N() which has been removed from
  *   mymodule.install.
  *
@@ -864,7 +864,7 @@ function hook_update_last_removed() {
  * of the Drupal file system, for example to update modules that have newer
  * releases, or to install a new theme.
  *
- * @return
+ * @return array
  *   An associative array of information about the updater(s) being provided.
  *   This array is keyed by a unique identifier for each updater, and the
  *   values are subarrays that can contain the following keys:
@@ -962,7 +962,7 @@ function hook_updater_info_alter(&$updaters) {
  *   - runtime: The runtime requirements are being checked and shown on the
  *     status report page.
  *
- * @return
+ * @return array
  *   An associative array where the keys are arbitrary but must be unique (it
  *   is suggested to use the module short name as a prefix) and the values are
  *   themselves associative arrays with the following elements:
@@ -1022,6 +1022,29 @@ function hook_requirements($phase) {
   return $requirements;
 }
 
+/**
+ * Alters requirements data.
+ *
+ * Implementations are able to alter the title, value, description or the
+ * severity of certain requirements defined by hook_requirements()
+ * implementations or even remove such entries.
+ *
+ * @param array $requirements
+ *   The requirements data to be altered.
+ *
+ * @see hook_requirements()
+ */
+function hook_requirements_alter(array &$requirements): void {
+  // Change the title from 'PHP' to 'PHP version'.
+  $requirements['php']['title'] = t('PHP version');
+
+  // Decrease the 'update status' requirement severity from warning to warning.
+  $requirements['update status']['severity'] = REQUIREMENT_INFO;
+
+  // Remove a requirements entry.
+  unset($requirements['foo']);
+}
+
 /**
  * @} End of "addtogroup hooks".
  */
diff --git a/core/lib/Drupal/Core/Field/Annotation/FieldFormatter.php b/core/lib/Drupal/Core/Field/Annotation/FieldFormatter.php
index 9ecac7a348..5f499e9175 100644
--- a/core/lib/Drupal/Core/Field/Annotation/FieldFormatter.php
+++ b/core/lib/Drupal/Core/Field/Annotation/FieldFormatter.php
@@ -64,9 +64,10 @@ class FieldFormatter extends Plugin {
   public $field_types = [];
 
   /**
-   * An integer to determine the weight of this formatter relative to other
-   * formatter in the Field UI when selecting a formatter for a given field
-   * instance.
+   * An integer to determine the weight of this formatter.
+   *
+   * Weight is relative to other formatter in the Field UI when selecting a
+   * formatter for a given field instance.
    *
    * This property is optional and it does not need to be declared.
    *
diff --git a/core/lib/Drupal/Core/Field/Annotation/FieldWidget.php b/core/lib/Drupal/Core/Field/Annotation/FieldWidget.php
index f17612284a..ff7dffd7f2 100644
--- a/core/lib/Drupal/Core/Field/Annotation/FieldWidget.php
+++ b/core/lib/Drupal/Core/Field/Annotation/FieldWidget.php
@@ -70,8 +70,10 @@ class FieldWidget extends Plugin {
   public $multiple_values = FALSE;
 
   /**
-   * An integer to determine the weight of this widget relative to other widgets
-   * in the Field UI when selecting a widget for a given field.
+   * An integer to determine weight of this widget relative to other widgets.
+   *
+   * Other widgets are in the Field UI when selecting a widget for a given
+   * field.
    *
    * This property is optional and it does not need to be declared.
    *
diff --git a/core/lib/Drupal/Core/Field/FieldConfigBase.php b/core/lib/Drupal/Core/Field/FieldConfigBase.php
index 3f4fc4ea5d..bcac237920 100644
--- a/core/lib/Drupal/Core/Field/FieldConfigBase.php
+++ b/core/lib/Drupal/Core/Field/FieldConfigBase.php
@@ -184,8 +184,10 @@ abstract class FieldConfigBase extends ConfigEntityBase implements FieldConfigIn
   protected $constraints = [];
 
   /**
-   * Array of property constraint options keyed by property ID. The values are
-   * associative array of constraint options keyed by constraint plugin ID.
+   * Array of property constraint options keyed by property ID.
+   *
+   * The values are associative array of constraint options keyed by constraint
+   * plugin ID.
    *
    * @var array[]
    */
diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/DecimalFormatter.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/DecimalFormatter.php
index 58e8fffc77..312f846d3d 100644
--- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/DecimalFormatter.php
+++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/DecimalFormatter.php
@@ -42,18 +42,18 @@ public function settingsForm(array $form, FormStateInterface $form_state) {
 
     $elements['decimal_separator'] = [
       '#type' => 'select',
-      '#title' => t('Decimal marker'),
-      '#options' => ['.' => t('Decimal point'), ',' => t('Comma')],
+      '#title' => $this->t('Decimal marker'),
+      '#options' => ['.' => $this->t('Decimal point'), ',' => $this->t('Comma')],
       '#default_value' => $this->getSetting('decimal_separator'),
       '#weight' => 5,
     ];
     $elements['scale'] = [
       '#type' => 'number',
-      '#title' => t('Scale', [], ['context' => 'decimal places']),
+      '#title' => $this->t('Scale', [], ['context' => 'decimal places']),
       '#min' => 0,
       '#max' => 10,
       '#default_value' => $this->getSetting('scale'),
-      '#description' => t('The number of digits to the right of the decimal.'),
+      '#description' => $this->t('The number of digits to the right of the decimal.'),
       '#weight' => 6,
     ];
 
diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/EntityReferenceEntityFormatter.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/EntityReferenceEntityFormatter.php
index 1a982bdc21..5dbff76dd8 100644
--- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/EntityReferenceEntityFormatter.php
+++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/EntityReferenceEntityFormatter.php
@@ -130,7 +130,7 @@ public function settingsForm(array $form, FormStateInterface $form_state) {
     $elements['view_mode'] = [
       '#type' => 'select',
       '#options' => $this->entityDisplayRepository->getViewModeOptions($this->getFieldSetting('target_type')),
-      '#title' => t('View mode'),
+      '#title' => $this->t('View mode'),
       '#default_value' => $this->getSetting('view_mode'),
       '#required' => TRUE,
     ];
@@ -146,7 +146,7 @@ public function settingsSummary() {
 
     $view_modes = $this->entityDisplayRepository->getViewModeOptions($this->getFieldSetting('target_type'));
     $view_mode = $this->getSetting('view_mode');
-    $summary[] = t('Rendered as @mode', ['@mode' => $view_modes[$view_mode] ?? $view_mode]);
+    $summary[] = $this->t('Rendered as @mode', ['@mode' => $view_modes[$view_mode] ?? $view_mode]);
 
     return $summary;
   }
diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/EntityReferenceLabelFormatter.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/EntityReferenceLabelFormatter.php
index ed9a6596d8..5316105a82 100644
--- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/EntityReferenceLabelFormatter.php
+++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/EntityReferenceLabelFormatter.php
@@ -35,7 +35,7 @@ public static function defaultSettings() {
    */
   public function settingsForm(array $form, FormStateInterface $form_state) {
     $elements['link'] = [
-      '#title' => t('Link label to the referenced entity'),
+      '#title' => $this->t('Link label to the referenced entity'),
       '#type' => 'checkbox',
       '#default_value' => $this->getSetting('link'),
     ];
@@ -48,7 +48,7 @@ public function settingsForm(array $form, FormStateInterface $form_state) {
    */
   public function settingsSummary() {
     $summary = [];
-    $summary[] = $this->getSetting('link') ? t('Link to the referenced entity') : t('No link');
+    $summary[] = $this->getSetting('link') ? $this->t('Link to the referenced entity') : $this->t('No link');
     return $summary;
   }
 
diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/NumericFormatterBase.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/NumericFormatterBase.php
index bc3efc7592..2ff9dc0210 100644
--- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/NumericFormatterBase.php
+++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/NumericFormatterBase.php
@@ -16,16 +16,16 @@ abstract class NumericFormatterBase extends FormatterBase {
    */
   public function settingsForm(array $form, FormStateInterface $form_state) {
     $options = [
-      ''  => t('- None -'),
-      '.' => t('Decimal point'),
-      ',' => t('Comma'),
-      ' ' => t('Space'),
-      chr(8201) => t('Thin space'),
-      "'" => t('Apostrophe'),
+      ''  => $this->t('- None -'),
+      '.' => $this->t('Decimal point'),
+      ',' => $this->t('Comma'),
+      ' ' => $this->t('Space'),
+      chr(8201) => $this->t('Thin space'),
+      "'" => $this->t('Apostrophe'),
     ];
     $elements['thousand_separator'] = [
       '#type' => 'select',
-      '#title' => t('Thousand marker'),
+      '#title' => $this->t('Thousand marker'),
       '#options' => $options,
       '#default_value' => $this->getSetting('thousand_separator'),
       '#weight' => 0,
@@ -33,7 +33,7 @@ public function settingsForm(array $form, FormStateInterface $form_state) {
 
     $elements['prefix_suffix'] = [
       '#type' => 'checkbox',
-      '#title' => t('Display prefix and suffix'),
+      '#title' => $this->t('Display prefix and suffix'),
       '#default_value' => $this->getSetting('prefix_suffix'),
       '#weight' => 10,
     ];
@@ -49,7 +49,7 @@ public function settingsSummary() {
 
     $summary[] = $this->numberFormat(1234.1234567890);
     if ($this->getSetting('prefix_suffix')) {
-      $summary[] = t('Display with prefix and suffix.');
+      $summary[] = $this->t('Display with prefix and suffix.');
     }
 
     return $summary;
diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/DecimalItem.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/DecimalItem.php
index 0c9e8195bc..15b7b65545 100644
--- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/DecimalItem.php
+++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/DecimalItem.php
@@ -6,6 +6,7 @@
 use Drupal\Core\Field\FieldStorageDefinitionInterface;
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\TypedData\DataDefinition;
+use Drupal\Core\StringTranslation\TranslatableMarkup;
 
 /**
  * Defines the 'decimal' field type.
@@ -36,7 +37,7 @@ public static function defaultStorageSettings() {
    */
   public static function propertyDefinitions(FieldStorageDefinitionInterface $field_definition) {
     $properties['value'] = DataDefinition::create('string')
-      ->setLabel(t('Decimal value'))
+      ->setLabel(new TranslatableMarkup('Decimal value'))
       ->setRequired(TRUE);
 
     return $properties;
@@ -66,21 +67,21 @@ public function storageSettingsForm(array &$form, FormStateInterface $form_state
 
     $element['precision'] = [
       '#type' => 'number',
-      '#title' => t('Precision'),
+      '#title' => $this->t('Precision'),
       '#min' => 10,
       '#max' => 32,
       '#default_value' => $settings['precision'],
-      '#description' => t('The total number of digits to store in the database, including those to the right of the decimal.'),
+      '#description' => $this->t('The total number of digits to store in the database, including those to the right of the decimal.'),
       '#disabled' => $has_data,
     ];
 
     $element['scale'] = [
       '#type' => 'number',
-      '#title' => t('Scale', [], ['context' => 'decimal places']),
+      '#title' => $this->t('Scale', [], ['context' => 'decimal places']),
       '#min' => 0,
       '#max' => 10,
       '#default_value' => $settings['scale'],
-      '#description' => t('The number of digits to the right of the decimal.'),
+      '#description' => $this->t('The number of digits to the right of the decimal.'),
       '#disabled' => $has_data,
     ];
 
diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/EmailItem.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/EmailItem.php
index a6801fc229..59e918ae94 100644
--- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/EmailItem.php
+++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/EmailItem.php
@@ -8,6 +8,7 @@
 use Drupal\Core\Field\FieldItemBase;
 use Drupal\Core\Render\Element\Email;
 use Drupal\Core\TypedData\DataDefinition;
+use Drupal\Core\StringTranslation\TranslatableMarkup;
 
 /**
  * Defines the 'email' field type.
@@ -27,7 +28,7 @@ class EmailItem extends FieldItemBase {
    */
   public static function propertyDefinitions(FieldStorageDefinitionInterface $field_definition) {
     $properties['value'] = DataDefinition::create('email')
-      ->setLabel(t('Email'))
+      ->setLabel(new TranslatableMarkup('Email'))
       ->setRequired(TRUE);
 
     return $properties;
@@ -58,7 +59,10 @@ public function getConstraints() {
       'value' => [
         'Length' => [
           'max' => Email::EMAIL_MAX_LENGTH,
-          'maxMessage' => t('%name: the email address can not be longer than @max characters.', ['%name' => $this->getFieldDefinition()->getLabel(), '@max' => Email::EMAIL_MAX_LENGTH]),
+          'maxMessage' => $this->t('%name: the email address can not be longer than @max characters.', [
+            '%name' => $this->getFieldDefinition()->getLabel(),
+            '@max' => Email::EMAIL_MAX_LENGTH,
+          ]),
         ],
       ],
     ]);
diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/EntityReferenceItem.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/EntityReferenceItem.php
index 0bf634ea5e..146b9fd68e 100644
--- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/EntityReferenceItem.php
+++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/EntityReferenceItem.php
@@ -362,7 +362,7 @@ protected static function getRandomBundle(EntityTypeInterface $entity_type, arra
   public function storageSettingsForm(array &$form, FormStateInterface $form_state, $has_data) {
     $element['target_type'] = [
       '#type' => 'select',
-      '#title' => t('Type of item to reference'),
+      '#title' => $this->t('Type of item to reference'),
       '#default_value' => $this->getSetting('target_type'),
       '#required' => TRUE,
       '#disabled' => $has_data,
@@ -413,7 +413,7 @@ public function fieldSettingsForm(array $form, FormStateInterface $form_state) {
     ];
     $form['handler'] = [
       '#type' => 'details',
-      '#title' => t('Reference type'),
+      '#title' => $this->t('Reference type'),
       '#open' => TRUE,
       '#tree' => TRUE,
       '#process' => [[static::class, 'formProcessMergeParent']],
@@ -421,7 +421,7 @@ public function fieldSettingsForm(array $form, FormStateInterface $form_state) {
 
     $form['handler']['handler'] = [
       '#type' => 'select',
-      '#title' => t('Reference method'),
+      '#title' => $this->t('Reference method'),
       '#options' => $handlers_options,
       '#default_value' => $field->getSetting('handler'),
       '#required' => TRUE,
@@ -430,7 +430,7 @@ public function fieldSettingsForm(array $form, FormStateInterface $form_state) {
     ];
     $form['handler']['handler_submit'] = [
       '#type' => 'submit',
-      '#value' => t('Change handler'),
+      '#value' => $this->t('Change handler'),
       '#limit_validation_errors' => [],
       '#attributes' => [
         'class' => ['js-hide'],
diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/IntegerItem.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/IntegerItem.php
index 8469126729..1ce7a4463f 100644
--- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/IntegerItem.php
+++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/IntegerItem.php
@@ -5,6 +5,7 @@
 use Drupal\Core\Field\FieldDefinitionInterface;
 use Drupal\Core\Field\FieldStorageDefinitionInterface;
 use Drupal\Core\TypedData\DataDefinition;
+use Drupal\Core\StringTranslation\TranslatableMarkup;
 
 /**
  * Defines the 'integer' field type.
@@ -49,7 +50,7 @@ public static function defaultFieldSettings() {
    */
   public static function propertyDefinitions(FieldStorageDefinitionInterface $field_definition) {
     $properties['value'] = DataDefinition::create('integer')
-      ->setLabel(t('Integer value'))
+      ->setLabel(new TranslatableMarkup('Integer value'))
       ->setRequired(TRUE);
 
     return $properties;
@@ -69,7 +70,7 @@ public function getConstraints() {
         'value' => [
           'Range' => [
             'min' => 0,
-            'minMessage' => t('%name: The integer must be larger or equal to %min.', [
+            'minMessage' => $this->t('%name: The integer must be larger or equal to %min.', [
               '%name' => $this->getFieldDefinition()->getLabel(),
               '%min' => 0,
             ]),
diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/NumericItemBase.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/NumericItemBase.php
index a0c2af0e21..d1f3d644db 100644
--- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/NumericItemBase.php
+++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/NumericItemBase.php
@@ -31,29 +31,29 @@ public function fieldSettingsForm(array $form, FormStateInterface $form_state) {
 
     $element['min'] = [
       '#type' => 'number',
-      '#title' => t('Minimum'),
+      '#title' => $this->t('Minimum'),
       '#default_value' => $settings['min'],
-      '#description' => t('The minimum value that should be allowed in this field. Leave blank for no minimum.'),
+      '#description' => $this->t('The minimum value that should be allowed in this field. Leave blank for no minimum.'),
     ];
     $element['max'] = [
       '#type' => 'number',
-      '#title' => t('Maximum'),
+      '#title' => $this->t('Maximum'),
       '#default_value' => $settings['max'],
-      '#description' => t('The maximum value that should be allowed in this field. Leave blank for no maximum.'),
+      '#description' => $this->t('The maximum value that should be allowed in this field. Leave blank for no maximum.'),
     ];
     $element['prefix'] = [
       '#type' => 'textfield',
-      '#title' => t('Prefix'),
+      '#title' => $this->t('Prefix'),
       '#default_value' => $settings['prefix'],
       '#size' => 60,
-      '#description' => t("Define a string that should be prefixed to the value, like '$ ' or '&euro; '. Leave blank for none. Separate singular and plural values with a pipe ('pound|pounds')."),
+      '#description' => $this->t("Define a string that should be prefixed to the value, like '$ ' or '&euro; '. Leave blank for none. Separate singular and plural values with a pipe ('pound|pounds')."),
     ];
     $element['suffix'] = [
       '#type' => 'textfield',
-      '#title' => t('Suffix'),
+      '#title' => $this->t('Suffix'),
       '#default_value' => $settings['suffix'],
       '#size' => 60,
-      '#description' => t("Define a string that should be suffixed to the value, like ' m', ' kb/s'. Leave blank for none. Separate singular and plural values with a pipe ('pound|pounds')."),
+      '#description' => $this->t("Define a string that should be suffixed to the value, like ' m', ' kb/s'. Leave blank for none. Separate singular and plural values with a pipe ('pound|pounds')."),
     ];
 
     return $element;
@@ -85,7 +85,7 @@ public function getConstraints() {
         'value' => [
           'Range' => [
             'min' => $min,
-            'minMessage' => t('%name: the value may be no less than %min.', ['%name' => $label, '%min' => $min]),
+            'minMessage' => $this->t('%name: the value may be no less than %min.', ['%name' => $label, '%min' => $min]),
           ],
         ],
       ]);
@@ -97,7 +97,10 @@ public function getConstraints() {
         'value' => [
           'Range' => [
             'max' => $max,
-            'maxMessage' => t('%name: the value may be no greater than %max.', ['%name' => $label, '%max' => $max]),
+            'maxMessage' => $this->t('%name: the value may be no greater than %max.', [
+              '%name' => $label,
+              '%max' => $max,
+            ]),
           ],
         ],
       ]);
diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/StringItem.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/StringItem.php
index b51764c294..172f904b26 100644
--- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/StringItem.php
+++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/StringItem.php
@@ -58,7 +58,7 @@ public function getConstraints() {
         'value' => [
           'Length' => [
             'max' => $max_length,
-            'maxMessage' => t('%name: may not be longer than @max characters.', ['%name' => $this->getFieldDefinition()->getLabel(), '@max' => $max_length]),
+            'maxMessage' => $this->t('%name: may not be longer than @max characters.', ['%name' => $this->getFieldDefinition()->getLabel(), '@max' => $max_length]),
           ],
         ],
       ]);
@@ -84,10 +84,10 @@ public function storageSettingsForm(array &$form, FormStateInterface $form_state
 
     $element['max_length'] = [
       '#type' => 'number',
-      '#title' => t('Maximum length'),
+      '#title' => $this->t('Maximum length'),
       '#default_value' => $this->getSetting('max_length'),
       '#required' => TRUE,
-      '#description' => t('The maximum length of the field in characters.'),
+      '#description' => $this->t('The maximum length of the field in characters.'),
       '#min' => 1,
       '#disabled' => $has_data,
     ];
diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/StringItemBase.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/StringItemBase.php
index f59c10c985..fc08eb5014 100644
--- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/StringItemBase.php
+++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/StringItemBase.php
@@ -25,8 +25,6 @@ public static function defaultStorageSettings() {
    * {@inheritdoc}
    */
   public static function propertyDefinitions(FieldStorageDefinitionInterface $field_definition) {
-    // This is called very early by the user entity roles field. Prevent
-    // early t() calls by using the TranslatableMarkup.
     $properties['value'] = DataDefinition::create('string')
       ->setLabel(new TranslatableMarkup('Text value'))
       ->setSetting('case_sensitive', $field_definition->getSetting('case_sensitive'))
diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/BooleanCheckboxWidget.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/BooleanCheckboxWidget.php
index 7991a6f64d..a954dac07d 100644
--- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/BooleanCheckboxWidget.php
+++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/BooleanCheckboxWidget.php
@@ -35,7 +35,7 @@ public static function defaultSettings() {
   public function settingsForm(array $form, FormStateInterface $form_state) {
     $element['display_label'] = [
       '#type' => 'checkbox',
-      '#title' => t('Use field label instead of the "On" label as the label.'),
+      '#title' => $this->t('Use field label instead of the "On" label as the label.'),
       '#default_value' => $this->getSetting('display_label'),
       '#weight' => -1,
     ];
@@ -49,7 +49,7 @@ public function settingsSummary() {
     $summary = [];
 
     $display_label = $this->getSetting('display_label');
-    $summary[] = t('Use field label: @display_label', ['@display_label' => ($display_label ? t('Yes') : t('No'))]);
+    $summary[] = $this->t('Use field label: @display_label', ['@display_label' => ($display_label ? $this->t('Yes') : $this->t('No'))]);
 
     return $summary;
   }
diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/EmailDefaultWidget.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/EmailDefaultWidget.php
index 76d0bdd24e..bf7bb40420 100644
--- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/EmailDefaultWidget.php
+++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/EmailDefaultWidget.php
@@ -43,9 +43,9 @@ public function settingsForm(array $form, FormStateInterface $form_state) {
     ];
     $element['placeholder'] = [
       '#type' => 'textfield',
-      '#title' => t('Placeholder'),
+      '#title' => $this->t('Placeholder'),
       '#default_value' => $this->getSetting('placeholder'),
-      '#description' => t('Text that will be shown inside the field until a value is entered. This hint is usually a sample value or a brief description of the expected format.'),
+      '#description' => $this->t('Text that will be shown inside the field until a value is entered. This hint is usually a sample value or a brief description of the expected format.'),
     ];
     return $element;
   }
@@ -58,12 +58,12 @@ public function settingsSummary() {
 
     $placeholder = $this->getSetting('placeholder');
     if (!empty($placeholder)) {
-      $summary[] = t('Placeholder: @placeholder', ['@placeholder' => $placeholder]);
+      $summary[] = $this->t('Placeholder: @placeholder', ['@placeholder' => $placeholder]);
     }
     else {
-      $summary[] = t('No placeholder');
+      $summary[] = $this->t('No placeholder');
     }
-    $summary[] = t('Textfield size: @size', ['@size' => $this->getSetting('size')]);
+    $summary[] = $this->t('Textfield size: @size', ['@size' => $this->getSetting('size')]);
 
     return $summary;
   }
diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/EntityReferenceAutocompleteWidget.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/EntityReferenceAutocompleteWidget.php
index 2ce3912d8b..22a1b2a085 100644
--- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/EntityReferenceAutocompleteWidget.php
+++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/EntityReferenceAutocompleteWidget.php
@@ -40,10 +40,10 @@ public static function defaultSettings() {
   public function settingsForm(array $form, FormStateInterface $form_state) {
     $element['match_operator'] = [
       '#type' => 'radios',
-      '#title' => t('Autocomplete matching'),
+      '#title' => $this->t('Autocomplete matching'),
       '#default_value' => $this->getSetting('match_operator'),
       '#options' => $this->getMatchOperatorOptions(),
-      '#description' => t('Select the method used to collect autocomplete suggestions. Note that <em>Contains</em> can cause performance issues on sites with thousands of entities.'),
+      '#description' => $this->t('Select the method used to collect autocomplete suggestions. Note that <em>Contains</em> can cause performance issues on sites with thousands of entities.'),
     ];
     $element['match_limit'] = [
       '#type' => 'number',
@@ -54,16 +54,16 @@ public function settingsForm(array $form, FormStateInterface $form_state) {
     ];
     $element['size'] = [
       '#type' => 'number',
-      '#title' => t('Size of textfield'),
+      '#title' => $this->t('Size of textfield'),
       '#default_value' => $this->getSetting('size'),
       '#min' => 1,
       '#required' => TRUE,
     ];
     $element['placeholder'] = [
       '#type' => 'textfield',
-      '#title' => t('Placeholder'),
+      '#title' => $this->t('Placeholder'),
       '#default_value' => $this->getSetting('placeholder'),
-      '#description' => t('Text that will be shown inside the field until a value is entered. This hint is usually a sample value or a brief description of the expected format.'),
+      '#description' => $this->t('Text that will be shown inside the field until a value is entered. This hint is usually a sample value or a brief description of the expected format.'),
     ];
     return $element;
   }
@@ -75,16 +75,16 @@ public function settingsSummary() {
     $summary = [];
 
     $operators = $this->getMatchOperatorOptions();
-    $summary[] = t('Autocomplete matching: @match_operator', ['@match_operator' => $operators[$this->getSetting('match_operator')]]);
+    $summary[] = $this->t('Autocomplete matching: @match_operator', ['@match_operator' => $operators[$this->getSetting('match_operator')]]);
     $size = $this->getSetting('match_limit') ?: $this->t('unlimited');
     $summary[] = $this->t('Autocomplete suggestion list size: @size', ['@size' => $size]);
-    $summary[] = t('Textfield size: @size', ['@size' => $this->getSetting('size')]);
+    $summary[] = $this->t('Textfield size: @size', ['@size' => $this->getSetting('size')]);
     $placeholder = $this->getSetting('placeholder');
     if (!empty($placeholder)) {
-      $summary[] = t('Placeholder: @placeholder', ['@placeholder' => $placeholder]);
+      $summary[] = $this->t('Placeholder: @placeholder', ['@placeholder' => $placeholder]);
     }
     else {
-      $summary[] = t('No placeholder');
+      $summary[] = $this->t('No placeholder');
     }
 
     return $summary;
@@ -207,8 +207,8 @@ protected function getSelectionHandlerSetting($setting_name) {
    */
   protected function getMatchOperatorOptions() {
     return [
-      'STARTS_WITH' => t('Starts with'),
-      'CONTAINS' => t('Contains'),
+      'STARTS_WITH' => $this->t('Starts with'),
+      'CONTAINS' => $this->t('Contains'),
     ];
   }
 
diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/NumberWidget.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/NumberWidget.php
index 976b52832e..f3ad573408 100644
--- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/NumberWidget.php
+++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/NumberWidget.php
@@ -38,9 +38,9 @@ public static function defaultSettings() {
   public function settingsForm(array $form, FormStateInterface $form_state) {
     $element['placeholder'] = [
       '#type' => 'textfield',
-      '#title' => t('Placeholder'),
+      '#title' => $this->t('Placeholder'),
       '#default_value' => $this->getSetting('placeholder'),
-      '#description' => t('Text that will be shown inside the field until a value is entered. This hint is usually a sample value or a brief description of the expected format.'),
+      '#description' => $this->t('Text that will be shown inside the field until a value is entered. This hint is usually a sample value or a brief description of the expected format.'),
     ];
     return $element;
   }
@@ -53,10 +53,10 @@ public function settingsSummary() {
 
     $placeholder = $this->getSetting('placeholder');
     if (!empty($placeholder)) {
-      $summary[] = t('Placeholder: @placeholder', ['@placeholder' => $placeholder]);
+      $summary[] = $this->t('Placeholder: @placeholder', ['@placeholder' => $placeholder]);
     }
     else {
-      $summary[] = t('No placeholder');
+      $summary[] = $this->t('No placeholder');
     }
 
     return $summary;
diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/OptionsButtonsWidget.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/OptionsButtonsWidget.php
index 7787106d85..5c9603ee5b 100644
--- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/OptionsButtonsWidget.php
+++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/OptionsButtonsWidget.php
@@ -64,7 +64,7 @@ public function formElement(FieldItemListInterface $items, $delta, array $elemen
    */
   protected function getEmptyLabel() {
     if (!$this->required && !$this->multiple) {
-      return t('N/A');
+      return $this->t('N/A');
     }
   }
 
diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/OptionsSelectWidget.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/OptionsSelectWidget.php
index b623c8755e..33e92109d2 100644
--- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/OptionsSelectWidget.php
+++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/OptionsSelectWidget.php
@@ -62,7 +62,7 @@ protected function getEmptyLabel() {
     if ($this->multiple) {
       // Multiple select: add a 'none' option for non-required fields.
       if (!$this->required) {
-        return t('- None -');
+        return $this->t('- None -');
       }
     }
     else {
@@ -70,10 +70,10 @@ protected function getEmptyLabel() {
       // and a 'select a value' option for required fields that do not come
       // with a value selected.
       if (!$this->required) {
-        return t('- None -');
+        return $this->t('- None -');
       }
       if (!$this->has_value) {
-        return t('- Select a value -');
+        return $this->t('- Select a value -');
       }
     }
   }
diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/OptionsWidgetBase.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/OptionsWidgetBase.php
index ffbfeb2f71..01d44572e5 100644
--- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/OptionsWidgetBase.php
+++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/OptionsWidgetBase.php
@@ -9,6 +9,7 @@
 use Drupal\Core\Field\WidgetBase;
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\Form\OptGroup;
+use Drupal\Core\StringTranslation\TranslatableMarkup;
 
 /**
  * Base class for the 'options_*' widgets.
@@ -23,8 +24,9 @@
 abstract class OptionsWidgetBase extends WidgetBase {
 
   /**
-   * Abstract over the actual field columns, to allow different field types to
-   * reuse those widgets.
+   * Abstract over the actual field columns.
+   *
+   * Allows different field types to reuse those widgets.
    *
    * @var string
    */
@@ -88,7 +90,7 @@ public function formElement(FieldItemListInterface $items, $delta, array $elemen
    */
   public static function validateElement(array $element, FormStateInterface $form_state) {
     if ($element['#required'] && $element['#value'] == '_none') {
-      $form_state->setError($element, t('@name field is required.', ['@name' => $element['#title']]));
+      $form_state->setError($element, new TranslatableMarkup('@name field is required.', ['@name' => $element['#title']]));
     }
 
     // Massage submitted form values.
diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/StringTextareaWidget.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/StringTextareaWidget.php
index 5f21b5edd4..e3f4a218c3 100644
--- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/StringTextareaWidget.php
+++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/StringTextareaWidget.php
@@ -35,16 +35,16 @@ public static function defaultSettings() {
   public function settingsForm(array $form, FormStateInterface $form_state) {
     $element['rows'] = [
       '#type' => 'number',
-      '#title' => t('Rows'),
+      '#title' => $this->t('Rows'),
       '#default_value' => $this->getSetting('rows'),
       '#required' => TRUE,
       '#min' => 1,
     ];
     $element['placeholder'] = [
       '#type' => 'textfield',
-      '#title' => t('Placeholder'),
+      '#title' => $this->t('Placeholder'),
       '#default_value' => $this->getSetting('placeholder'),
-      '#description' => t('Text that will be shown inside the field until a value is entered. This hint is usually a sample value or a brief description of the expected format.'),
+      '#description' => $this->t('Text that will be shown inside the field until a value is entered. This hint is usually a sample value or a brief description of the expected format.'),
     ];
     return $element;
   }
@@ -55,10 +55,10 @@ public function settingsForm(array $form, FormStateInterface $form_state) {
   public function settingsSummary() {
     $summary = [];
 
-    $summary[] = t('Number of rows: @rows', ['@rows' => $this->getSetting('rows')]);
+    $summary[] = $this->t('Number of rows: @rows', ['@rows' => $this->getSetting('rows')]);
     $placeholder = $this->getSetting('placeholder');
     if (!empty($placeholder)) {
-      $summary[] = t('Placeholder: @placeholder', ['@placeholder' => $placeholder]);
+      $summary[] = $this->t('Placeholder: @placeholder', ['@placeholder' => $placeholder]);
     }
 
     return $summary;
diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/StringTextfieldWidget.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/StringTextfieldWidget.php
index a0bb425f0c..4d86a33f83 100644
--- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/StringTextfieldWidget.php
+++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/StringTextfieldWidget.php
@@ -35,16 +35,16 @@ public static function defaultSettings() {
   public function settingsForm(array $form, FormStateInterface $form_state) {
     $element['size'] = [
       '#type' => 'number',
-      '#title' => t('Size of textfield'),
+      '#title' => $this->t('Size of textfield'),
       '#default_value' => $this->getSetting('size'),
       '#required' => TRUE,
       '#min' => 1,
     ];
     $element['placeholder'] = [
       '#type' => 'textfield',
-      '#title' => t('Placeholder'),
+      '#title' => $this->t('Placeholder'),
       '#default_value' => $this->getSetting('placeholder'),
-      '#description' => t('Text that will be shown inside the field until a value is entered. This hint is usually a sample value or a brief description of the expected format.'),
+      '#description' => $this->t('Text that will be shown inside the field until a value is entered. This hint is usually a sample value or a brief description of the expected format.'),
     ];
     return $element;
   }
@@ -55,10 +55,10 @@ public function settingsForm(array $form, FormStateInterface $form_state) {
   public function settingsSummary() {
     $summary = [];
 
-    $summary[] = t('Textfield size: @size', ['@size' => $this->getSetting('size')]);
+    $summary[] = $this->t('Textfield size: @size', ['@size' => $this->getSetting('size')]);
     $placeholder = $this->getSetting('placeholder');
     if (!empty($placeholder)) {
-      $summary[] = t('Placeholder: @placeholder', ['@placeholder' => $placeholder]);
+      $summary[] = $this->t('Placeholder: @placeholder', ['@placeholder' => $placeholder]);
     }
 
     return $summary;
diff --git a/core/lib/Drupal/Core/File/file.api.php b/core/lib/Drupal/Core/File/file.api.php
index 33a5be1c85..a6c15a7db2 100644
--- a/core/lib/Drupal/Core/File/file.api.php
+++ b/core/lib/Drupal/Core/File/file.api.php
@@ -23,7 +23,7 @@
  * @param $uri
  *   The URI of the file.
  *
- * @return
+ * @return string[]|int
  *   If the user does not have permission to access the file, return -1. If the
  *   user has permission, return an array with the appropriate headers. If the
  *   file is not controlled by the current module, the return value should be
diff --git a/core/lib/Drupal/Core/Flood/FloodInterface.php b/core/lib/Drupal/Core/Flood/FloodInterface.php
index 5e3ead3a4c..fd98398fea 100644
--- a/core/lib/Drupal/Core/Flood/FloodInterface.php
+++ b/core/lib/Drupal/Core/Flood/FloodInterface.php
@@ -54,7 +54,7 @@ public function clear($name, $identifier = NULL);
    *   (optional) Unique identifier of the current user. Defaults to the current
    *   user's IP address).
    *
-   * @return
+   * @return bool
    *   TRUE if the user is allowed to proceed. FALSE if they have exceeded the
    *   threshold and should not be allowed to proceed.
    */
diff --git a/core/lib/Drupal/Core/Form/FormState.php b/core/lib/Drupal/Core/Form/FormState.php
index c4e76a4de4..a4fa4658c4 100644
--- a/core/lib/Drupal/Core/Form/FormState.php
+++ b/core/lib/Drupal/Core/Form/FormState.php
@@ -36,9 +36,10 @@ class FormState implements FormStateInterface {
   protected $complete_form;
 
   /**
-   * An associative array of information stored by Form API that is necessary to
-   * build and rebuild the form from cache when the original context may no
-   * longer be available:
+   * An associative array of information stored by Form API.
+   *
+   * This associative array is necessary to build and rebuild the form from
+   * cache when the original context may no longer be available:
    *   - callback: The actual callback to be used to retrieve the form array.
    *     Can be any callable. If none is provided $form_id is used as the name
    *     of a function to call instead.
@@ -70,8 +71,9 @@ class FormState implements FormStateInterface {
   ];
 
   /**
-   * Similar to self::$build_info, but pertaining to
-   * \Drupal\Core\Form\FormBuilderInterface::rebuildForm().
+   * Similar to self::$build_info.
+   *
+   * But pertaining to \Drupal\Core\Form\FormBuilderInterface::rebuildForm().
    *
    * This property is uncacheable.
    *
@@ -80,6 +82,8 @@ class FormState implements FormStateInterface {
   protected $rebuild_info = [];
 
   /**
+   * Determines whether the form is rebuilt.
+   *
    * Normally, after the entire form processing is completed and submit handlers
    * have run, a form is considered to be done and
    * \Drupal\Core\Form\FormSubmitterInterface::redirectForm() will redirect the
@@ -103,6 +107,8 @@ class FormState implements FormStateInterface {
   protected $rebuild = FALSE;
 
   /**
+   * Determines if only safe element value callbacks are called.
+   *
    * If set to TRUE the form will skip calling form element value callbacks,
    * except for a select list of callbacks provided by Drupal core that are
    * known to be safe.
@@ -116,6 +122,8 @@ class FormState implements FormStateInterface {
   protected $invalidToken = FALSE;
 
   /**
+   * The response object.
+   *
    * Used when a form needs to return some kind of a
    * \Symfony\Component\HttpFoundation\Response object, e.g., a
    * \Symfony\Component\HttpFoundation\BinaryFileResponse when triggering a
@@ -140,8 +148,9 @@ class FormState implements FormStateInterface {
   protected $redirect;
 
   /**
-   * If set to TRUE the form will NOT perform a redirect, even if
-   * self::$redirect is set.
+   * If set to TRUE the form will NOT perform a redirect.
+   *
+   * Redirect will not be performed, even if self::$redirect is set.
    *
    * This property is uncacheable.
    *
@@ -264,6 +273,8 @@ class FormState implements FormStateInterface {
   protected $always_process;
 
   /**
+   * Indicates if a validation will be forced.
+   *
    * Ordinarily, a form is only validated once, but there are times when a form
    * is resubmitted internally and should be validated again. Setting this to
    * TRUE will force that to happen. This is most likely to occur during Ajax
@@ -276,6 +287,8 @@ class FormState implements FormStateInterface {
   protected $must_validate;
 
   /**
+   * Indicates if the form was submitted programmatically.
+   *
    * If TRUE, the form was submitted programmatically, usually invoked via
    * \Drupal\Core\Form\FormBuilderInterface::submitForm(). Defaults to FALSE.
    *
@@ -284,6 +297,8 @@ class FormState implements FormStateInterface {
   protected $programmed = FALSE;
 
   /**
+   * Indicates if programmatic form submissions bypasses #access check.
+   *
    * If TRUE, programmatic form submissions are processed without taking #access
    * into account. Set this to FALSE when submitting a form programmatically
    * with values that may have been input by the user executing the current
@@ -295,6 +310,8 @@ class FormState implements FormStateInterface {
   protected $programmed_bypass_access_check = TRUE;
 
   /**
+   * Indicates correct form submission.
+   *
    * TRUE signifies correct form submission. This is always TRUE for programmed
    * forms coming from \Drupal\Core\Form\FormBuilderInterface::submitForm() (see
    * 'programmed' key), or if the form_id coming from the
@@ -323,10 +340,11 @@ class FormState implements FormStateInterface {
   protected $executed = FALSE;
 
   /**
-   * The form element that triggered submission, which may or may not be a
-   * button (in the case of Ajax forms). This key is often used to distinguish
-   * between various buttons in a submit handler, and is also used in Ajax
-   * handlers.
+   * The form element that triggered submission.
+   *
+   * This may or may not be a button (in the case of Ajax forms). This key is
+   * often used to distinguish between various buttons in a submit handler, and
+   * is also used in Ajax handlers.
    *
    * This property is uncacheable.
    *
@@ -335,6 +353,8 @@ class FormState implements FormStateInterface {
   protected $triggering_element;
 
   /**
+   * Indicates a file element is present.
+   *
    * If TRUE, there is a file element and Form API will set the appropriate
    * 'enctype' HTML attribute on the form.
    *
@@ -352,6 +372,8 @@ class FormState implements FormStateInterface {
   protected $groups = [];
 
   /**
+   * The storage.
+   *
    * This is not a special key, and no specific support is provided for it in
    * the Form API. By tradition it was the location where application-specific
    * data was stored for communication between the submit, validation, and form
diff --git a/core/lib/Drupal/Core/Form/form.api.php b/core/lib/Drupal/Core/Form/form.api.php
index d2f5d2cf65..3fb1ca909a 100644
--- a/core/lib/Drupal/Core/Form/form.api.php
+++ b/core/lib/Drupal/Core/Form/form.api.php
@@ -34,9 +34,8 @@
  *     $context['sandbox'] will be there the next time this function is called
  *     for the current operation. For example, an operation may wish to store a
  *     pointer in a file or an offset for a large query. The 'sandbox' array key
- *     is not initially set when this callback is first called, which makes it
- *     useful for determining whether it is the first call of the callback or
- *     not:
+ *     is empty when this callback is first called, which makes it useful for
+ *     determining whether it is the first call of the callback or not:
  *     @code
  *       if (empty($context['sandbox'])) {
  *         // Perform set-up steps here.
@@ -226,9 +225,15 @@ function hook_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_stat
  * rather than implementing hook_form_alter() and checking the form ID, or
  * using long switch statements to alter multiple forms.
  *
- * Form alter hooks are called in the following order: hook_form_alter(),
- * hook_form_BASE_FORM_ID_alter(), hook_form_FORM_ID_alter(). See
- * hook_form_alter() for more details.
+ * The call order is as follows: all existing form alter functions are called
+ * for module A, then all for module B, etc., followed by all for any base
+ * theme(s), and finally for the theme itself. The module order is determined
+ * by system weight, then by module name.
+ *
+ * Within each module, form alter hooks are called in the following order:
+ * first, hook_form_alter(); second, hook_form_BASE_FORM_ID_alter(); third,
+ * hook_form_FORM_ID_alter(). So, for each module, the more general hooks are
+ * called first followed by the more specific.
  *
  * @param $form
  *   Nested array of form elements that comprise the form.
@@ -278,9 +283,15 @@ function hook_form_FORM_ID_alter(&$form, \Drupal\Core\Form\FormStateInterface $f
  * one exists) check the $form_state. The base form ID is stored under
  * $form_state->getBuildInfo()['base_form_id'].
  *
- * Form alter hooks are called in the following order: hook_form_alter(),
- * hook_form_BASE_FORM_ID_alter(), hook_form_FORM_ID_alter(). See
- * hook_form_alter() for more details.
+ * The call order is as follows: all existing form alter functions are called
+ * for module A, then all for module B, etc., followed by all for any base
+ * theme(s), and finally for the theme itself. The module order is determined
+ * by system weight, then by module name.
+ *
+ * Within each module, form alter hooks are called in the following order:
+ * first, hook_form_alter(); second, hook_form_BASE_FORM_ID_alter(); third,
+ * hook_form_FORM_ID_alter(). So, for each module, the more general hooks are
+ * called first followed by the more specific.
  *
  * @param $form
  *   Nested array of form elements that comprise the form.
diff --git a/core/lib/Drupal/Core/Installer/Exception/AlreadyInstalledException.php b/core/lib/Drupal/Core/Installer/Exception/AlreadyInstalledException.php
index ca00d0be81..02d2995fd5 100644
--- a/core/lib/Drupal/Core/Installer/Exception/AlreadyInstalledException.php
+++ b/core/lib/Drupal/Core/Installer/Exception/AlreadyInstalledException.php
@@ -19,14 +19,17 @@ public function __construct(TranslationInterface $string_translation) {
     $this->stringTranslation = $string_translation;
 
     $title = $this->t('Drupal already installed');
+    $replacements = [
+      ':base-url' => $GLOBALS['base_url'],
+      // We cannot use the route system.db_update here because we are too early
+      // in the execution stack.
+      ':update-url' => $GLOBALS['base_path'] . 'update.php',
+    ];
     $message = $this->t('<ul>
 <li>To start over, you must empty your existing database and copy <em>default.settings.php</em> over <em>settings.php</em>.</li>
 <li>To upgrade an existing installation, proceed to the <a href=":update-url">update script</a>.</li>
 <li>View your <a href=":base-url">existing site</a>.</li>
-</ul>', [
-      ':base-url' => $GLOBALS['base_url'],
-      ':update-url' => $GLOBALS['base_path'] . 'update.php',
-    ]);
+</ul>', $replacements);
     parent::__construct($message, $title);
   }
 
diff --git a/core/lib/Drupal/Core/Layout/LayoutDefault.php b/core/lib/Drupal/Core/Layout/LayoutDefault.php
index 607b34a48c..bd3780987a 100644
--- a/core/lib/Drupal/Core/Layout/LayoutDefault.php
+++ b/core/lib/Drupal/Core/Layout/LayoutDefault.php
@@ -51,6 +51,7 @@ public function build(array $regions) {
         $build[$region_name] = $regions[$region_name];
       }
     }
+    $build['#in_preview'] = $this->inPreview;
     $build['#settings'] = $this->getConfiguration();
     $build['#layout'] = $this->pluginDefinition;
     $build['#theme'] = $this->pluginDefinition->getThemeHook();
diff --git a/core/lib/Drupal/Core/Logger/LogMessageParser.php b/core/lib/Drupal/Core/Logger/LogMessageParser.php
index dc0ba4fdc5..73c0917d37 100644
--- a/core/lib/Drupal/Core/Logger/LogMessageParser.php
+++ b/core/lib/Drupal/Core/Logger/LogMessageParser.php
@@ -29,7 +29,7 @@ public function parseMessagePlaceholders(&$message, array &$context) {
           $key = '@' . $key;
         }
       }
-      if (!empty($key) && ($key[0] === '@' || $key[0] === '%' || $key[0] === '!')) {
+      if (!empty($key) && ($key[0] === '@' || $key[0] === '%' || $key[0] === ':')) {
         // The key is now in \Drupal\Component\Render\FormattableMarkup style.
         $variables[$key] = $variable;
       }
diff --git a/core/lib/Drupal/Core/Mail/MailManager.php b/core/lib/Drupal/Core/Mail/MailManager.php
index ea819c0c11..df6eb226d0 100644
--- a/core/lib/Drupal/Core/Mail/MailManager.php
+++ b/core/lib/Drupal/Core/Mail/MailManager.php
@@ -309,10 +309,10 @@ public function doMail($module, $key, $to, $langcode, $params = [], $reply = NUL
         if (!$message['result']) {
           $this->loggerFactory->get('mail')
             ->error('Error sending email (from %from to %to with reply-to %reply).', [
-            '%from' => $message['from'],
-            '%to' => $message['to'],
-            '%reply' => $message['reply-to'] ? $message['reply-to'] : $this->t('not set'),
-          ]);
+              '%from' => $message['from'],
+              '%to' => $message['to'],
+              '%reply' => $message['reply-to'] ? $message['reply-to'] : $this->t('not set'),
+            ]);
           $error_message = $params['_error_message'] ?? $this->t('Unable to send email. Contact the site administrator if the problem persists.');
           if ($error_message) {
             $this->messenger()->addError($error_message);
diff --git a/core/lib/Drupal/Core/Menu/menu.api.php b/core/lib/Drupal/Core/Menu/menu.api.php
index ce136e2236..0d4b5a53c8 100644
--- a/core/lib/Drupal/Core/Menu/menu.api.php
+++ b/core/lib/Drupal/Core/Menu/menu.api.php
@@ -317,16 +317,16 @@ function hook_menu_local_tasks_alter(&$data, $route_name, \Drupal\Core\Cache\Ref
 
   // Add a tab linking to node/add to all pages.
   $data['tabs'][0]['node.add_page'] = [
-      '#theme' => 'menu_local_task',
-      '#link' => [
-          'title' => t('Example tab'),
-          'url' => Url::fromRoute('node.add_page'),
-          'localized_options' => [
-              'attributes' => [
-                  'title' => t('Add content'),
-              ],
-          ],
+    '#theme' => 'menu_local_task',
+    '#link' => [
+      'title' => t('Example tab'),
+      'url' => Url::fromRoute('node.add_page'),
+      'localized_options' => [
+        'attributes' => [
+          'title' => t('Add content'),
+        ],
       ],
+    ],
   ];
   // The tab we're adding is dependent on a user's access to add content.
   $cacheability->addCacheContexts(['user.permissions']);
diff --git a/core/lib/Drupal/Core/Password/PhpassHashedPassword.php b/core/lib/Drupal/Core/Password/PhpassHashedPassword.php
index b044035525..cb10978511 100644
--- a/core/lib/Drupal/Core/Password/PhpassHashedPassword.php
+++ b/core/lib/Drupal/Core/Password/PhpassHashedPassword.php
@@ -32,6 +32,8 @@ class PhpassHashedPassword implements PasswordInterface {
   public static $ITOA64 = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
 
   /**
+   * Password stretching iteration count.
+   *
    * Specifies the number of times the hashing function will be applied when
    * generating new password hashes. The number of times is calculated by
    * raising 2 to the power of the given value.
diff --git a/core/lib/Drupal/Core/Plugin/CategorizingPluginManagerTrait.php b/core/lib/Drupal/Core/Plugin/CategorizingPluginManagerTrait.php
index 7f8ae617a4..2d6ed8bb75 100644
--- a/core/lib/Drupal/Core/Plugin/CategorizingPluginManagerTrait.php
+++ b/core/lib/Drupal/Core/Plugin/CategorizingPluginManagerTrait.php
@@ -91,7 +91,7 @@ public function getSortedDefinitions(array $definitions = NULL, $label_key = 'la
     /** @var \Drupal\Core\Plugin\CategorizingPluginManagerTrait|\Drupal\Component\Plugin\PluginManagerInterface $this */
     $definitions = $definitions ?? $this->getDefinitions();
     uasort($definitions, function ($a, $b) use ($label_key) {
-      if ($a['category'] != $b['category']) {
+      if ((string) $a['category'] != (string) $b['category']) {
         return strnatcasecmp($a['category'], $b['category']);
       }
       return strnatcasecmp($a[$label_key], $b[$label_key]);
diff --git a/core/lib/Drupal/Core/Plugin/Context/ContextDefinition.php b/core/lib/Drupal/Core/Plugin/Context/ContextDefinition.php
index 895650c89c..c2e5d53331 100644
--- a/core/lib/Drupal/Core/Plugin/Context/ContextDefinition.php
+++ b/core/lib/Drupal/Core/Plugin/Context/ContextDefinition.php
@@ -4,6 +4,7 @@
 
 use Drupal\Core\DependencyInjection\DependencySerializationTrait;
 use Drupal\Core\TypedData\TypedDataTrait;
+use Symfony\Component\Validator\ConstraintViolationList;
 
 /**
  * Defines a class for context definitions.
@@ -307,7 +308,15 @@ public function isSatisfiedBy(ContextInterface $context) {
     $validator = $this->getTypedDataManager()->getValidator();
     foreach ($values as $value) {
       $constraints = array_values($this->getConstraintObjects());
-      $violations = $validator->validate($value, $constraints);
+      if ($definition->isMultiple()) {
+        $violations = new ConstraintViolationList();
+        foreach ($value as $item) {
+          $violations->addAll($validator->validate($item, $constraints));
+        }
+      }
+      else {
+        $violations = $validator->validate($value, $constraints);
+      }
       foreach ($violations as $delta => $violation) {
         // Remove any violation that does not correspond to the constraints.
         if (!in_array($violation->getConstraint(), $constraints)) {
diff --git a/core/lib/Drupal/Core/Plugin/DefaultPluginManager.php b/core/lib/Drupal/Core/Plugin/DefaultPluginManager.php
index 6b7d86e066..62c78c3448 100644
--- a/core/lib/Drupal/Core/Plugin/DefaultPluginManager.php
+++ b/core/lib/Drupal/Core/Plugin/DefaultPluginManager.php
@@ -50,8 +50,9 @@ class DefaultPluginManager extends PluginManagerBase implements PluginManagerInt
   protected $alterHook;
 
   /**
-   * The subdirectory within a namespace to look for plugins, or FALSE if the
-   * plugins are in the top level of the namespace.
+   * The subdirectory within a namespace to look for plugins.
+   *
+   * Set to FALSE if the plugins are in the top level of the namespace.
    *
    * @var string|bool
    */
@@ -65,9 +66,10 @@ class DefaultPluginManager extends PluginManagerBase implements PluginManagerInt
   protected $moduleHandler;
 
   /**
-   * A set of defaults to be referenced by $this->processDefinition() if
-   * additional processing of plugins is necessary or helpful for development
-   * purposes.
+   * A set of defaults to be referenced by $this->processDefinition().
+   *
+   * Allows for additional processing of plugins when necessary or helpful for
+   * development purposes.
    *
    * @var array
    */
@@ -88,16 +90,20 @@ class DefaultPluginManager extends PluginManagerBase implements PluginManagerInt
   protected $pluginInterface;
 
   /**
-   * An object that implements \Traversable which contains the root paths
-   * keyed by the corresponding namespace to look for plugin implementations.
+   * An object of root paths that are traversable.
+   *
+   * The root paths are keyed by the corresponding namespace to look for plugin
+   * implementations.
    *
    * @var \Traversable
    */
   protected $namespaces;
 
   /**
-   * Additional namespaces the annotation discovery mechanism should scan for
-   * annotation definitions.
+   * Additional annotation namespaces.
+   *
+   * The annotation discovery mechanism should scan these for annotation
+   * definitions.
    *
    * @var string[]
    */
diff --git a/core/lib/Drupal/Core/Plugin/Discovery/AnnotatedClassDiscovery.php b/core/lib/Drupal/Core/Plugin/Discovery/AnnotatedClassDiscovery.php
index 986ab77c95..8e78c9521d 100644
--- a/core/lib/Drupal/Core/Plugin/Discovery/AnnotatedClassDiscovery.php
+++ b/core/lib/Drupal/Core/Plugin/Discovery/AnnotatedClassDiscovery.php
@@ -11,6 +11,8 @@
 class AnnotatedClassDiscovery extends ComponentAnnotatedClassDiscovery {
 
   /**
+   * The directory suffix.
+   *
    * A suffix to append to each PSR-4 directory associated with a base
    * namespace, to form the directories where plugins are found.
    *
@@ -19,6 +21,8 @@ class AnnotatedClassDiscovery extends ComponentAnnotatedClassDiscovery {
   protected $directorySuffix = '';
 
   /**
+   * The namespace suffix.
+   *
    * A suffix to append to each base namespace, to obtain the namespaces where
    * plugins are found.
    *
diff --git a/core/lib/Drupal/Core/Queue/DatabaseQueue.php b/core/lib/Drupal/Core/Queue/DatabaseQueue.php
index 5a77827c8f..3e2ed4272e 100644
--- a/core/lib/Drupal/Core/Queue/DatabaseQueue.php
+++ b/core/lib/Drupal/Core/Queue/DatabaseQueue.php
@@ -76,7 +76,7 @@ public function createItem($data) {
    * @param $data
    *   Arbitrary data to be associated with the new task in the queue.
    *
-   * @return
+   * @return int|string
    *   A unique ID if the item was successfully created and was (best effort)
    *   added to the queue, otherwise FALSE. We don't guarantee the item was
    *   committed to disk etc, but as far as we know, the item is now in the
diff --git a/core/lib/Drupal/Core/Queue/QueueInterface.php b/core/lib/Drupal/Core/Queue/QueueInterface.php
index 449ad6a0dd..8b9ff654c0 100644
--- a/core/lib/Drupal/Core/Queue/QueueInterface.php
+++ b/core/lib/Drupal/Core/Queue/QueueInterface.php
@@ -18,7 +18,7 @@ interface QueueInterface {
    * @param $data
    *   Arbitrary data to be associated with the new task in the queue.
    *
-   * @return
+   * @return bool|int|string
    *   A unique ID if the item was successfully created and was (best effort)
    *   added to the queue, otherwise FALSE. We don't guarantee the item was
    *   committed to disk etc, but as far as we know, the item is now in the
@@ -55,7 +55,7 @@ public function numberOfItems();
    *   more rare for a given task to run multiple times in cases of failure,
    *   at the cost of higher latency.
    *
-   * @return
+   * @return bool|object
    *   On success we return an item object. If the queue is unable to claim an
    *   item it returns false. This implies a best effort to retrieve an item
    *   and either the queue is empty or there is some other non-recoverable
diff --git a/core/lib/Drupal/Core/Render/Element/Details.php b/core/lib/Drupal/Core/Render/Element/Details.php
index cfd1b4ba8f..794b36bb8a 100644
--- a/core/lib/Drupal/Core/Render/Element/Details.php
+++ b/core/lib/Drupal/Core/Render/Element/Details.php
@@ -66,7 +66,7 @@ public function getInfo() {
    *   An associative array containing the properties and children of the
    *   details.
    *
-   * @return
+   * @return array
    *   The modified element.
    */
   public static function preRenderDetails($element) {
diff --git a/core/lib/Drupal/Core/Render/Element/File.php b/core/lib/Drupal/Core/Render/Element/File.php
index c909b926de..3158173198 100644
--- a/core/lib/Drupal/Core/Render/Element/File.php
+++ b/core/lib/Drupal/Core/Render/Element/File.php
@@ -15,6 +15,10 @@
  * - #multiple: A Boolean indicating whether multiple files may be uploaded.
  * - #size: The size of the file input element in characters.
  *
+ * The value of this form element will always be an array of
+ * \Symfony\Component\HttpFoundation\File\UploadedFile objects, regardless of
+ * whether #multiple is TRUE or FALSE
+ *
  * @FormElement("file")
  */
 class File extends FormElement {
@@ -36,6 +40,9 @@ public function getInfo() {
       ],
       '#theme' => 'input__file',
       '#theme_wrappers' => ['form_element'],
+      '#value_callback' => [
+        [$class, 'valueCallback'],
+      ],
     ];
   }
 
@@ -72,4 +79,23 @@ public static function preRenderFile($element) {
     return $element;
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  public static function valueCallback(&$element, $input, FormStateInterface $form_state) {
+    if ($input === FALSE) {
+      return NULL;
+    }
+    $parents = $element['#parents'];
+    $element_name = array_shift($parents);
+    $uploaded_files = \Drupal::request()->files->get('files', []);
+    $uploaded_file = $uploaded_files[$element_name] ?? NULL;
+    if ($uploaded_file) {
+      // Cast this to an array so that the structure is consistent regardless of
+      // whether #value is set or not.
+      return (array) $uploaded_file;
+    }
+    return NULL;
+  }
+
 }
diff --git a/core/lib/Drupal/Core/Render/Element/Tableselect.php b/core/lib/Drupal/Core/Render/Element/Tableselect.php
index 908e66044a..6258500c00 100644
--- a/core/lib/Drupal/Core/Render/Element/Tableselect.php
+++ b/core/lib/Drupal/Core/Render/Element/Tableselect.php
@@ -33,7 +33,9 @@
  * $options = [
  *   1 => ['color' => 'Red', 'shape' => 'Triangle'],
  *   2 => ['color' => 'Green', 'shape' => 'Square'],
- *   3 => ['color' => 'Blue', 'shape' => 'Hexagon'],
+ *   // Prevent users from selecting a row by adding a '#disabled' property set
+ *   // to TRUE.
+ *   3 => ['color' => 'Blue', 'shape' => 'Hexagon', '#disabled' => TRUE],
  * ];
  *
  * $form['table'] = array(
@@ -180,6 +182,9 @@ public static function preRenderTableselect($element) {
             }
           }
         }
+        if (!empty($element['#options'][$key]['#disabled'])) {
+          $row['class'][] = 'disabled';
+        }
         $rows[] = $row;
       }
       // Add an empty header or a "Select all" checkbox to provide room for the
@@ -238,6 +243,7 @@ public static function processTableselect(&$element, FormStateInterface $form_st
       foreach ($element['#options'] as $key => $choice) {
         // Do not overwrite manually created children.
         if (!isset($element[$key])) {
+          $disabled = !empty($element['#options'][$key]['#disabled']);
           if ($element['#multiple']) {
             $title = '';
             if (isset($element['#options'][$key]['title']) && is_array($element['#options'][$key]['title'])) {
@@ -254,6 +260,7 @@ public static function processTableselect(&$element, FormStateInterface $form_st
               '#return_value' => $key,
               '#default_value' => isset($value[$key]) ? $key : NULL,
               '#attributes' => $element['#attributes'],
+              '#disabled' => $disabled,
               '#ajax' => $element['#ajax'] ?? NULL,
             ];
           }
@@ -269,6 +276,7 @@ public static function processTableselect(&$element, FormStateInterface $form_st
               '#attributes' => $element['#attributes'],
               '#parents' => $element['#parents'],
               '#id' => HtmlUtility::getUniqueId('edit-' . implode('-', $parents_for_id)),
+              '#disabled' => $disabled,
               '#ajax' => $element['#ajax'] ?? NULL,
             ];
           }
diff --git a/core/lib/Drupal/Core/Render/MainContent/HtmlRenderer.php b/core/lib/Drupal/Core/Render/MainContent/HtmlRenderer.php
index d4905fb592..1786034ce8 100644
--- a/core/lib/Drupal/Core/Render/MainContent/HtmlRenderer.php
+++ b/core/lib/Drupal/Core/Render/MainContent/HtmlRenderer.php
@@ -219,6 +219,7 @@ protected function prepare(array $main_content, Request $request, RouteMatchInte
       $event = new PageDisplayVariantSelectionEvent('simple_page', $route_match);
       $this->eventDispatcher->dispatch($event, RenderEvents::SELECT_PAGE_DISPLAY_VARIANT);
       $variant_id = $event->getPluginId();
+      $variant_configuration = $event->getPluginConfiguration();
 
       // We must render the main content now already, because it might provide a
       // title. We set its $is_root_call parameter to FALSE, to ensure
@@ -244,15 +245,14 @@ protected function prepare(array $main_content, Request $request, RouteMatchInte
       $title = $get_title($main_content);
 
       // Instantiate the page display, and give it the main content.
-      $page_display = $this->displayVariantManager->createInstance($variant_id);
+      $page_display = $this->displayVariantManager->createInstance($variant_id, $variant_configuration);
       if (!$page_display instanceof PageVariantInterface) {
         throw new \LogicException('Cannot render the main content for this page because the provided display variant does not implement PageVariantInterface.');
       }
       $page_display
         ->setMainContent($main_content)
         ->setTitle($title)
-        ->addCacheableDependency($event)
-        ->setConfiguration($event->getPluginConfiguration());
+        ->addCacheableDependency($event);
       // Some display variants need to be passed an array of contexts with
       // values because they can't get all their contexts globally. For example,
       // in Page Manager, you can create a Page which has a specific static
diff --git a/core/lib/Drupal/Core/Render/Renderer.php b/core/lib/Drupal/Core/Render/Renderer.php
index f95116e5f7..da19e3281f 100644
--- a/core/lib/Drupal/Core/Render/Renderer.php
+++ b/core/lib/Drupal/Core/Render/Renderer.php
@@ -120,6 +120,9 @@ public function __construct(ControllerResolverInterface $controller_resolver, Th
     $this->elementInfo = $element_info;
     $this->placeholderGenerator = $placeholder_generator;
     $this->renderCache = $render_cache;
+    if (!isset($renderer_config['debug'])) {
+      $renderer_config['debug'] = FALSE;
+    }
     $this->rendererConfig = $renderer_config;
     $this->requestStack = $request_stack;
 
@@ -215,6 +218,10 @@ protected function doRender(&$elements, $is_root_call = FALSE) {
       return '';
     }
 
+    if ($this->rendererConfig['debug'] === TRUE) {
+      $render_start = microtime(TRUE);
+    }
+
     if (!isset($elements['#access']) && isset($elements['#access_callback'])) {
       $elements['#access'] = $this->doCallback('#access_callback', $elements['#access_callback'], [$elements]);
     }
@@ -276,6 +283,10 @@ protected function doRender(&$elements, $is_root_call = FALSE) {
         if (is_string($elements['#markup'])) {
           $elements['#markup'] = Markup::create($elements['#markup']);
         }
+        // Add debug output to the renderable array on cache hit.
+        if ($this->rendererConfig['debug'] === TRUE) {
+          $elements = $this->addDebugOutput($elements, TRUE);
+        }
         // The render cache item contains all the bubbleable rendering metadata
         // for the subtree.
         $context->update($elements);
@@ -513,6 +524,11 @@ protected function doRender(&$elements, $is_root_call = FALSE) {
         throw new \LogicException('Cache keys may not be changed after initial setup. Use the contexts property instead to bubble additional metadata.');
       }
       $this->renderCache->set($elements, $pre_bubbling_elements);
+      // Add debug output to the renderable array on cache miss.
+      if ($this->rendererConfig['debug'] === TRUE) {
+        $render_stop = microtime(TRUE);
+        $elements = $this->addDebugOutput($elements, FALSE, $pre_bubbling_elements, $render_stop - $render_start);
+      }
       // Update the render context; the render cache implementation may update
       // the element, and it may have different bubbleable metadata now.
       // @see \Drupal\Core\Render\PlaceholderingRenderCache::set()
@@ -772,4 +788,67 @@ protected function doCallback($callback_type, $callback, array $args) {
     return $this->doTrustedCallback($callback, $args, $message, TrustedCallbackInterface::THROW_EXCEPTION, RenderCallbackInterface::class);
   }
 
+  /**
+   * Add cache debug information to the render array.
+   *
+   * @param array $elements
+   *   The renderable array that must be wrapped with the cache debug output.
+   * @param bool $is_cache_hit
+   *   A flag indicating that the cache is hit or miss.
+   * @param array $pre_bubbling_elements
+   *   The renderable array for pre-bubbling elements.
+   * @param float $render_time
+   *   The rendering time.
+   *
+   * @return array
+   *   The renderable array.
+   */
+  protected function addDebugOutput(array $elements, bool $is_cache_hit, array $pre_bubbling_elements = [], float $render_time = 0) {
+    if (empty($elements['#markup'])) {
+      return $elements;
+    }
+
+    $debug_items = [
+      'CACHE' => &$elements,
+      'PRE-BUBBLING CACHE' => &$pre_bubbling_elements,
+    ];
+    $prefix = "<!-- START RENDERER -->";
+    $prefix .= "\n<!-- CACHE-HIT: " . ($is_cache_hit ? 'Yes' : 'No') . " -->";
+    foreach ($debug_items as $name_prefix => $debug_item) {
+      if (!empty($debug_item['#cache']['tags'])) {
+        $prefix .= "\n<!-- " . $name_prefix . " TAGS:";
+        foreach ($debug_item['#cache']['tags'] as $tag) {
+          $prefix .= "\n   * " . $tag;
+        }
+        $prefix .= "\n-->";
+      }
+      if (!empty($debug_item['#cache']['contexts'])) {
+        $prefix .= "\n<!-- " . $name_prefix . " CONTEXTS:";
+        foreach ($debug_item['#cache']['contexts'] as $context) {
+          $prefix .= "\n   * " . $context;
+        }
+        $prefix .= "\n-->";
+      }
+      if (!empty($debug_item['#cache']['keys'])) {
+        $prefix .= "\n<!-- " . $name_prefix . " KEYS:";
+        foreach ($debug_item['#cache']['keys'] as $key) {
+          $prefix .= "\n   * " . $key;
+        }
+        $prefix .= "\n-->";
+      }
+      if (!empty($debug_item['#cache']['max-age'])) {
+        $prefix .= "\n<!-- " . $name_prefix . " MAX-AGE: " . $debug_item['#cache']['max-age'] . " -->";
+      }
+    }
+
+    if (!empty($render_time)) {
+      $prefix .= "\n<!-- RENDERING TIME: " . number_format($render_time, 9) . " -->";
+    }
+    $suffix = "<!-- END RENDERER -->";
+
+    $elements['#markup'] = Markup::create("$prefix\n" . $elements['#markup'] . "\n$suffix");
+
+    return $elements;
+  }
+
 }
diff --git a/core/lib/Drupal/Core/RouteProcessor/OutboundRouteProcessorInterface.php b/core/lib/Drupal/Core/RouteProcessor/OutboundRouteProcessorInterface.php
index 4a5bcf7692..e6454d4aa8 100644
--- a/core/lib/Drupal/Core/RouteProcessor/OutboundRouteProcessorInterface.php
+++ b/core/lib/Drupal/Core/RouteProcessor/OutboundRouteProcessorInterface.php
@@ -22,9 +22,6 @@ interface OutboundRouteProcessorInterface {
    *   reference.
    * @param \Drupal\Core\Render\BubbleableMetadata $bubbleable_metadata
    *   (optional) Object to collect route processors' bubbleable metadata.
-   *
-   * @return
-   *   The processed path.
    */
   public function processOutbound($route_name, Route $route, array &$parameters, BubbleableMetadata $bubbleable_metadata = NULL);
 
diff --git a/core/lib/Drupal/Core/Session/UserSession.php b/core/lib/Drupal/Core/Session/UserSession.php
index 5ed8e4c724..372c8a9580 100644
--- a/core/lib/Drupal/Core/Session/UserSession.php
+++ b/core/lib/Drupal/Core/Session/UserSession.php
@@ -7,6 +7,7 @@
  *
  * @todo: Change all properties to protected.
  */
+#[\AllowDynamicProperties]
 class UserSession implements AccountInterface {
 
   /**
diff --git a/core/lib/Drupal/Core/Site/Settings.php b/core/lib/Drupal/Core/Site/Settings.php
index 245bc3537e..aedae4c951 100644
--- a/core/lib/Drupal/Core/Site/Settings.php
+++ b/core/lib/Drupal/Core/Site/Settings.php
@@ -143,57 +143,7 @@ public static function initialize($app_root, $site_path, &$class_loader) {
     self::handleDeprecations($settings);
 
     // Initialize databases.
-    foreach ($databases as $key => $targets) {
-      foreach ($targets as $target => $info) {
-        // Backwards compatibility layer for Drupal 8 style database connection
-        // arrays. Those have the wrong 'namespace' key set, or not set at all
-        // for core supported database drivers.
-        if (empty($info['namespace']) || (strpos($info['namespace'], 'Drupal\\Core\\Database\\Driver\\') === 0)) {
-          switch (strtolower($info['driver'])) {
-            case 'mysql':
-              $info['namespace'] = 'Drupal\\mysql\\Driver\\Database\\mysql';
-              break;
-
-            case 'pgsql':
-              $info['namespace'] = 'Drupal\\pgsql\\Driver\\Database\\pgsql';
-              break;
-
-            case 'sqlite':
-              $info['namespace'] = 'Drupal\\sqlite\\Driver\\Database\\sqlite';
-              break;
-          }
-        }
-        // Backwards compatibility layer for Drupal 8 style database connection
-        // arrays. Those do not have the 'autoload' key set for core database
-        // drivers.
-        if (empty($info['autoload'])) {
-          switch (trim($info['namespace'], '\\')) {
-            case "Drupal\\mysql\\Driver\\Database\\mysql":
-              $info['autoload'] = "core/modules/mysql/src/Driver/Database/mysql/";
-              break;
-
-            case "Drupal\\pgsql\\Driver\\Database\\pgsql":
-              $info['autoload'] = "core/modules/pgsql/src/Driver/Database/pgsql/";
-              break;
-
-            case "Drupal\\sqlite\\Driver\\Database\\sqlite":
-              $info['autoload'] = "core/modules/sqlite/src/Driver/Database/sqlite/";
-              break;
-          }
-        }
-
-        Database::addConnectionInfo($key, $target, $info);
-        // If the database driver is provided by a module, then its code may
-        // need to be instantiated prior to when the module's root namespace
-        // is added to the autoloader, because that happens during service
-        // container initialization but the container definition is likely in
-        // the database. Therefore, allow the connection info to specify an
-        // autoload directory for the driver.
-        if (isset($info['autoload'])) {
-          $class_loader->addPsr4($info['namespace'] . '\\', $app_root . '/' . $info['autoload']);
-        }
-      }
-    }
+    Database::setMultipleConnectionInfo($databases, $class_loader, $app_root);
 
     // Initialize Settings.
     new Settings($settings);
diff --git a/core/lib/Drupal/Core/StreamWrapper/ReadOnlyStream.php b/core/lib/Drupal/Core/StreamWrapper/ReadOnlyStream.php
index a2fa804363..65e0d98a7f 100644
--- a/core/lib/Drupal/Core/StreamWrapper/ReadOnlyStream.php
+++ b/core/lib/Drupal/Core/StreamWrapper/ReadOnlyStream.php
@@ -68,6 +68,9 @@ public function getUri() {
    *   TRUE if $mode denotes a readonly mode and the file was opened
    *   successfully, FALSE otherwise.
    *
+   * @throws \BadMethodCallException
+   *   When ::getLocalPath() is not implemented in the concrete driver class.
+   *
    * @see http://php.net/manual/streamwrapper.stream-open.php
    */
   public function stream_open($uri, $mode, $options, &$opened_path) {
@@ -89,6 +92,33 @@ public function stream_open($uri, $mode, $options, &$opened_path) {
     return (bool) $this->handle;
   }
 
+  /**
+   * Returns the canonical absolute path of the URI, if possible.
+   *
+   * @param string $uri
+   *   (optional) The stream wrapper URI to be converted to a canonical
+   *   absolute path. This may point to a directory or another type of file.
+   *
+   * @return string|bool
+   *   If $uri is not set, returns the canonical absolute path of the URI
+   *   previously set by the
+   *   Drupal\Core\StreamWrapper\StreamWrapperInterface::setUri() function.
+   *   If $uri is set and valid for this class, returns its canonical absolute
+   *   path, as determined by the realpath() function. If $uri is set but not
+   *   valid, returns FALSE.
+   *
+   * @throws \BadMethodCallException
+   *   If the method is not implemented in the concrete driver class.
+   *
+   * @todo This method is called by ReadOnlyStream::stream_open on the abstract
+   *   class, and therefore should be defined as well on the abstract class to
+   *   prevent static analysis errors. In D11, consider changing it to an
+   *   abstract method.
+   */
+  protected function getLocalPath($uri = NULL) {
+    throw new \BadMethodCallException(get_class($this) . '::getLocalPath() not implemented.');
+  }
+
   /**
    * Support for flock().
    *
diff --git a/core/lib/Drupal/Core/StreamWrapper/StreamWrapperInterface.php b/core/lib/Drupal/Core/StreamWrapper/StreamWrapperInterface.php
index 38a7758d0a..a7e0c15720 100644
--- a/core/lib/Drupal/Core/StreamWrapper/StreamWrapperInterface.php
+++ b/core/lib/Drupal/Core/StreamWrapper/StreamWrapperInterface.php
@@ -82,11 +82,12 @@ interface StreamWrapperInterface extends PhpStreamWrapperInterface {
   const READ_VISIBLE = 0x0014;
 
   /**
-   * This is the default 'type' flag. This does not include
-   * StreamWrapperInterface::LOCAL, because PHP grants a greater trust level to
-   * local files (for example, they can be used in an "include" statement,
-   * regardless of the "allow_url_include" setting), so stream wrappers need to
-   * explicitly opt-in to this.
+   * The default 'type' flag.
+   *
+   * This does not include StreamWrapperInterface::LOCAL, because PHP grants a
+   * greater trust level to local files (for example, they can be used in an
+   * "include" statement, regardless of the "allow_url_include" setting), so
+   * stream wrappers need to explicitly opt-in to this.
    */
   const NORMAL = 0x001C;
 
diff --git a/core/lib/Drupal/Core/Template/Loader/FilesystemLoader.php b/core/lib/Drupal/Core/Template/Loader/FilesystemLoader.php
index 6f4ddc11a7..e9620f6a57 100644
--- a/core/lib/Drupal/Core/Template/Loader/FilesystemLoader.php
+++ b/core/lib/Drupal/Core/Template/Loader/FilesystemLoader.php
@@ -4,6 +4,7 @@
 
 use Drupal\Core\Extension\ModuleHandlerInterface;
 use Drupal\Core\Extension\ThemeHandlerInterface;
+use Twig\Error\LoaderError;
 use Twig\Loader\FilesystemLoader as TwigFilesystemLoader;
 
 /**
@@ -15,6 +16,13 @@
  */
 class FilesystemLoader extends TwigFilesystemLoader {
 
+  /**
+   * Allowed file extensions.
+   *
+   * @var string[]
+   */
+  protected $allowedFileExtensions = ['css', 'html', 'js', 'svg', 'twig'];
+
   /**
    * Constructs a new FilesystemLoader object.
    *
@@ -24,8 +32,10 @@ class FilesystemLoader extends TwigFilesystemLoader {
    *   The module handler service.
    * @param \Drupal\Core\Extension\ThemeHandlerInterface $theme_handler
    *   The theme handler service.
+   * @param mixed[] $twig_config
+   *   Twig configuration from the service container.
    */
-  public function __construct($paths, ModuleHandlerInterface $module_handler, ThemeHandlerInterface $theme_handler) {
+  public function __construct($paths, ModuleHandlerInterface $module_handler, ThemeHandlerInterface $theme_handler, array $twig_config = []) {
     parent::__construct($paths);
 
     // Add namespaced paths for modules and themes.
@@ -39,6 +49,15 @@ public function __construct($paths, ModuleHandlerInterface $module_handler, Them
 
     foreach ($namespaces as $name => $path) {
       $this->addPath($path . '/templates', $name);
+      // Allow accessing the root of an extension by using the namespace without
+      // using directory traversal from the `/templates` directory.
+      $this->addPath($path, $name);
+    }
+    if (!empty($twig_config['allowed_file_extensions'])) {
+      // Provide a safe fallback for sites that have not updated their
+      // services.yml file or rebuilt the container, as well as for child
+      // classes.
+      $this->allowedFileExtensions = $twig_config['allowed_file_extensions'];
     }
   }
 
@@ -56,4 +75,38 @@ public function addPath(string $path, string $namespace = self::MAIN_NAMESPACE):
     $this->paths[$namespace][] = rtrim($path, '/\\');
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  protected function findTemplate($name, $throw = TRUE) {
+    $extension = pathinfo($name, PATHINFO_EXTENSION);
+    if (!in_array($extension, $this->allowedFileExtensions, TRUE)) {
+      if (!$throw) {
+        return NULL;
+      }
+      // Customize the list of extensions if no file extension is allowed.
+      $extensions = $this->allowedFileExtensions;
+      $no_extension = array_search('', $extensions, TRUE);
+      if (is_int($no_extension)) {
+        unset($extensions[$no_extension]);
+        $extensions[] = 'or no file extension';
+      }
+      if (empty($extension)) {
+        $extension = 'no file extension';
+      }
+      throw new LoaderError(sprintf("Template %s has an invalid file extension (%s). Only templates ending in one of %s are allowed. Set the twig.config.allowed_file_extensions container parameter to customize the allowed file extensions", $name, $extension, implode(', ', $extensions)));
+    }
+
+    // Previously it was possible to access files in the parent directory of a
+    // namespace. This was removed in Twig 2.15.3. In order to support backwards
+    // compatibility, we are adding path directory as a namespace, and therefore
+    // we can remove the directory traversal from the name.
+    // @todo deprecate this functionality for removal in Drupal 11.
+    if (preg_match('/(^\@[^\/]+\/)\.\.\/(.*)/', $name, $matches)) {
+      $name = $matches[1] . $matches[2];
+    }
+
+    return parent::findTemplate($name, $throw);
+  }
+
 }
diff --git a/core/lib/Drupal/Core/Template/TwigExtension.php b/core/lib/Drupal/Core/Template/TwigExtension.php
index 71f587630c..0e99830fc5 100644
--- a/core/lib/Drupal/Core/Template/TwigExtension.php
+++ b/core/lib/Drupal/Core/Template/TwigExtension.php
@@ -143,6 +143,8 @@ public function getFilters() {
       // This filter will render a renderable array to use the string results.
       new TwigFilter('render', [$this, 'renderVar']),
       new TwigFilter('format_date', [$this->dateFormatter, 'format']),
+      // Add new theme hook suggestions directly from a Twig template.
+      new TwigFilter('add_suggestion', [$this, 'suggestThemeHook']),
     ];
   }
 
@@ -653,4 +655,61 @@ public function withoutFilter($element) {
     return $filtered_element;
   }
 
+  /**
+   * Adds a theme suggestion to the element.
+   *
+   * @param array|null $element
+   *   A theme element render array.
+   * @param string|\Stringable $suggestion
+   *   The theme suggestion part to append to the existing theme hook(s).
+   *
+   * @return array|null
+   *   The element with the full theme suggestion added as the highest priority.
+   */
+  public function suggestThemeHook(?array $element, string|\Stringable $suggestion): ?array {
+    // Make sure we have a valid theme element render array.
+    if (empty($element['#theme'])) {
+      // Throw assertion for render arrays that contain more than just metadata
+      // (e.g., don't assert on empty field content).
+      assert(array_diff_key($element ?? [], [
+        '#cache' => TRUE,
+        '#weight' => TRUE,
+        '#attached' => TRUE,
+      ]) === [], 'Invalid target for the "|add_suggestion" Twig filter; element does not have a "#theme" key.');
+      return $element;
+    }
+
+    // Replace dashes with underscores to support suggestions that match the
+    // target template name rather than the underlying theme hook.
+    $suggestion = str_replace('-', '_', $suggestion);
+
+    // Transform the theme hook to a format that supports multiple suggestions.
+    if (!is_iterable($element['#theme'])) {
+      $element['#theme'] = [$element['#theme']];
+    }
+
+    // Add _new_ suggestions for each existing theme hook. Simply modifying the
+    // existing items (appending to each theme hook instead of adding new ones)
+    // would cause the original hooks to be unavailable as fallbacks.
+    //
+    // Start with the lowest priority theme hook.
+    foreach (array_reverse($element['#theme']) as $theme_hook) {
+      // Add new suggestions to the front (highest priority).
+      array_unshift($element['#theme'], $theme_hook . '__' . $suggestion);
+    }
+
+    // Reset the "#printed" flag to make sure the content gets rendered with the
+    // new suggestion in place.
+    unset($element['#printed']);
+
+    // Add a cache key to prevent using render cache from before the suggestion
+    // was added. If there are no cache keys already set, don't add one, as that
+    // would enable caching on this element where there wasn't any before.
+    if (isset($element['#cache']['keys'])) {
+      $element['#cache']['keys'][] = $suggestion;
+    }
+
+    return $element;
+  }
+
 }
diff --git a/core/lib/Drupal/Core/Template/TwigSandboxPolicy.php b/core/lib/Drupal/Core/Template/TwigSandboxPolicy.php
index ff92b25c37..c10ad69323 100644
--- a/core/lib/Drupal/Core/Template/TwigSandboxPolicy.php
+++ b/core/lib/Drupal/Core/Template/TwigSandboxPolicy.php
@@ -25,8 +25,9 @@ class TwigSandboxPolicy implements SecurityPolicyInterface {
   protected $allowed_methods;
 
   /**
-   * An array of allowed method prefixes -- any method starting with one of
-   * these prefixes will be allowed.
+   * Allowed method prefixes.
+   *
+   * Any method starting with one of these prefixes will be allowed.
    *
    * @var array
    */
diff --git a/core/lib/Drupal/Core/Test/TestDatabase.php b/core/lib/Drupal/Core/Test/TestDatabase.php
index 4041f0cc80..e16876a906 100644
--- a/core/lib/Drupal/Core/Test/TestDatabase.php
+++ b/core/lib/Drupal/Core/Test/TestDatabase.php
@@ -12,6 +12,8 @@
 class TestDatabase {
 
   /**
+   * The test lock ID.
+   *
    * A random number used to ensure that test fixtures are unique to each test
    * method.
    *
diff --git a/core/lib/Drupal/Core/Test/TestRunnerKernel.php b/core/lib/Drupal/Core/Test/TestRunnerKernel.php
index c8736a303e..eb7f5d7f8e 100644
--- a/core/lib/Drupal/Core/Test/TestRunnerKernel.php
+++ b/core/lib/Drupal/Core/Test/TestRunnerKernel.php
@@ -83,6 +83,8 @@ public function boot() {
     if (!is_dir('public://simpletest') && !@mkdir('public://simpletest', 0777, TRUE) && !is_dir('public://simpletest')) {
       throw new \RuntimeException('Unable to create directory: public://simpletest');
     }
+
+    return $this;
   }
 
   /**
@@ -93,6 +95,7 @@ public function discoverServiceProviders() {
     // The test runner does not require an installed Drupal site to exist.
     // Therefore, its environment is identical to that of the early installer.
     $this->serviceProviderClasses['app']['Test'] = 'Drupal\Core\Installer\InstallerServiceProvider';
+    return $this->serviceProviderClasses;
   }
 
 }
diff --git a/core/lib/Drupal/Core/Test/TestSetupTrait.php b/core/lib/Drupal/Core/Test/TestSetupTrait.php
index 52d640094f..457966323d 100644
--- a/core/lib/Drupal/Core/Test/TestSetupTrait.php
+++ b/core/lib/Drupal/Core/Test/TestSetupTrait.php
@@ -164,7 +164,7 @@ protected function changeDatabasePrefix() {
       // Ensure no existing database gets in the way. If a default database
       // exists already it must be removed.
       Database::removeConnection('default');
-      $database = Database::convertDbUrlToConnectionInfo($db_url, $this->root ?? DRUPAL_ROOT);
+      $database = Database::convertDbUrlToConnectionInfo($db_url, $this->root ?? DRUPAL_ROOT, TRUE);
       Database::addConnectionInfo('default', 'default', $database);
     }
 
diff --git a/core/lib/Drupal/Core/Utility/ProjectInfo.php b/core/lib/Drupal/Core/Utility/ProjectInfo.php
index ef7d7faf2c..f0ea0afccf 100644
--- a/core/lib/Drupal/Core/Utility/ProjectInfo.php
+++ b/core/lib/Drupal/Core/Utility/ProjectInfo.php
@@ -169,7 +169,7 @@ public function getProjectName(Extension $file) {
    *   (optional) Array of additional elements to be collected from the .info.yml
    *   file. Defaults to array().
    *
-   * @return
+   * @return array
    *   Array of .info.yml file data we need for the update manager.
    *
    * @see \Drupal\Core\Utility\ProjectInfo::processInfoList()
diff --git a/core/lib/Drupal/Core/Utility/ThemeRegistry.php b/core/lib/Drupal/Core/Utility/ThemeRegistry.php
index 8abb17d780..34b97dfb5d 100644
--- a/core/lib/Drupal/Core/Utility/ThemeRegistry.php
+++ b/core/lib/Drupal/Core/Utility/ThemeRegistry.php
@@ -79,7 +79,7 @@ public function __construct($cid, CacheBackendInterface $cache, LockBackendInter
   /**
    * Initializes the full theme registry.
    *
-   * @return
+   * @return array
    *   An array with the keys of the full theme registry, but the values
    *   initialized to NULL.
    */
diff --git a/core/lib/Drupal/Core/Utility/token.api.php b/core/lib/Drupal/Core/Utility/token.api.php
index 4d1417d173..9fd09d9794 100644
--- a/core/lib/Drupal/Core/Utility/token.api.php
+++ b/core/lib/Drupal/Core/Utility/token.api.php
@@ -175,7 +175,7 @@ function hook_tokens_alter(array &$replacements, array $context, \Drupal\Core\Re
  * module will need to implement that hook in order to generate token
  * replacements from the tokens defined here.
  *
- * @return
+ * @return array
  *   An associative array of available tokens and token types. The outer array
  *   has two components:
  *   - types: An associative array of token types (groups). Each token type is
diff --git a/core/lib/Drupal/Core/Validation/Annotation/Constraint.php b/core/lib/Drupal/Core/Validation/Annotation/Constraint.php
index 64af92e8f8..61082902a2 100644
--- a/core/lib/Drupal/Core/Validation/Annotation/Constraint.php
+++ b/core/lib/Drupal/Core/Validation/Annotation/Constraint.php
@@ -38,10 +38,11 @@ class Constraint extends Plugin {
   public $label;
 
   /**
-   * An array of DataType plugin IDs for which this constraint applies. Valid
-   * values are any types registered by the typed data API, or an array of
-   * multiple type names. For supporting all types, FALSE may be specified. The
-   * key defaults to an empty array, which indicates no types are supported.
+   * DataType plugin IDs for which this constraint applies.
+   *
+   * Valid values are any types registered by the typed data API, or an array
+   * of multiple type names. For supporting all types, FALSE may be specified.
+   * The key defaults to an empty array, which indicates no types are supported.
    *
    * @var string|string[]|false
    *
diff --git a/core/misc/cspell/dictionary.txt b/core/misc/cspell/dictionary.txt
index 9921ab84d8..a5c4d82f34 100644
--- a/core/misc/cspell/dictionary.txt
+++ b/core/misc/cspell/dictionary.txt
@@ -1024,6 +1024,7 @@ renderered
 renormalize
 reparenting
 reparsed
+relpersistence
 replyto
 resave
 resaved
@@ -1042,6 +1043,7 @@ revisionid
 revisioning
 revlog
 revpub
+relname
 ribisi
 ritchie
 rolename
diff --git a/core/misc/dialog/off-canvas/css/base.css b/core/misc/dialog/off-canvas/css/base.css
index 17f50739ba..171c360c0b 100644
--- a/core/misc/dialog/off-canvas/css/base.css
+++ b/core/misc/dialog/off-canvas/css/base.css
@@ -33,68 +33,68 @@
 }
 
 #drupal-off-canvas-wrapper *:focus {
-    outline: solid var(--off-canvas-focus-outline-width) var(--off-canvas-focus-outline-color);
-    outline-offset: 2px;
-  }
+  outline: solid var(--off-canvas-focus-outline-width) var(--off-canvas-focus-outline-color);
+  outline-offset: 2px;
+}
 
 #drupal-off-canvas-wrapper a,
-  #drupal-off-canvas-wrapper .link {
-    text-decoration: none;
-    color: var(--off-canvas-link-color);
-  }
+#drupal-off-canvas-wrapper .link {
+  text-decoration: none;
+  color: var(--off-canvas-link-color);
+}
 
 #drupal-off-canvas-wrapper hr {
-    height: 1px;
-    background: var(--off-canvas-border-color);
-  }
+  height: 1px;
+  background: var(--off-canvas-border-color);
+}
 
 #drupal-off-canvas-wrapper h1,
-  #drupal-off-canvas-wrapper .heading-a {
-    font-size: 1.4375rem;
-    line-height: 1.2;
-  }
+#drupal-off-canvas-wrapper .heading-a {
+  font-size: 1.4375rem;
+  line-height: 1.2;
+}
 
 #drupal-off-canvas-wrapper h2,
-  #drupal-off-canvas-wrapper .heading-b {
-    margin: var(--off-canvas-vertical-spacing-unit) 0;
-    font-size: 1.1875rem;
-  }
+#drupal-off-canvas-wrapper .heading-b {
+  margin: var(--off-canvas-vertical-spacing-unit) 0;
+  font-size: 1.1875rem;
+}
 
 #drupal-off-canvas-wrapper h3,
-  #drupal-off-canvas-wrapper .heading-c {
-    margin: var(--off-canvas-vertical-spacing-unit) 0;
-    font-size: 1.0625rem;
-  }
+#drupal-off-canvas-wrapper .heading-c {
+  margin: var(--off-canvas-vertical-spacing-unit) 0;
+  font-size: 1.0625rem;
+}
 
 #drupal-off-canvas-wrapper h4,
-  #drupal-off-canvas-wrapper .heading-d {
-    margin: var(--off-canvas-vertical-spacing-unit) 0;
-    font-size: 1rem;
-  }
+#drupal-off-canvas-wrapper .heading-d {
+  margin: var(--off-canvas-vertical-spacing-unit) 0;
+  font-size: 1rem;
+}
 
 #drupal-off-canvas-wrapper h5,
-  #drupal-off-canvas-wrapper .heading-e,
-  #drupal-off-canvas-wrapper h6,
-  #drupal-off-canvas-wrapper .heading-f {
-    margin: var(--off-canvas-vertical-spacing-unit) 0;
-    font-size: 0.9375rem;
-  }
+#drupal-off-canvas-wrapper .heading-e,
+#drupal-off-canvas-wrapper h6,
+#drupal-off-canvas-wrapper .heading-f {
+  margin: var(--off-canvas-vertical-spacing-unit) 0;
+  font-size: 0.9375rem;
+}
 
 #drupal-off-canvas-wrapper p {
-    margin: var(--off-canvas-vertical-spacing-unit) 0;
-  }
+  margin: var(--off-canvas-vertical-spacing-unit) 0;
+}
 
 #drupal-off-canvas-wrapper img {
-    max-width: 100%;
-    height: auto;
-  }
+  max-width: 100%;
+  height: auto;
+}
 
 #drupal-off-canvas-wrapper .links {
-    margin: 0;
-    padding: 0;
-    list-style: none;
-  }
+  margin: 0;
+  padding: 0;
+  list-style: none;
+}
 
 #drupal-off-canvas-wrapper .links li {
-      margin: calc(var(--off-canvas-vertical-spacing-unit) /2) 0;
-    }
+  margin: calc(var(--off-canvas-vertical-spacing-unit) /2) 0;
+}
diff --git a/core/misc/dialog/off-canvas/css/button.css b/core/misc/dialog/off-canvas/css/button.css
index 4d694e5c44..45ef8ee56a 100644
--- a/core/misc/dialog/off-canvas/css/button.css
+++ b/core/misc/dialog/off-canvas/css/button.css
@@ -26,83 +26,83 @@
   --off-canvas-primary-button-text-color-hover: #fff;
 }
 #drupal-off-canvas-wrapper .button {
-    display: inline-block;
-    width: 100%;
-    height: auto;
-    margin: 0 0 0.625rem;
-    padding: var(--off-canvas-button-padding);
-    cursor: pointer;
-    transition: background 0.5s ease;
-    text-align: center;
-    color: var(--off-canvas-button-text-color);
-    border: solid 1px var(--off-canvas-button-border-color);
-    border-radius: var(--off-canvas-button-border-radius);
-    background: var(--off-canvas-button-background-color);
-    font-family: inherit;
-    font-size: var(--off-canvas-button-font-size);
-    font-weight: var(--off-canvas-button-font-weight);
-    line-height: normal;
-    -webkit-appearance: none;
-    appearance: none;
-  }
+  display: inline-block;
+  width: 100%;
+  height: auto;
+  margin: 0 0 0.625rem;
+  padding: var(--off-canvas-button-padding);
+  cursor: pointer;
+  transition: background 0.5s ease;
+  text-align: center;
+  color: var(--off-canvas-button-text-color);
+  border: solid 1px var(--off-canvas-button-border-color);
+  border-radius: var(--off-canvas-button-border-radius);
+  background: var(--off-canvas-button-background-color);
+  font-family: inherit;
+  font-size: var(--off-canvas-button-font-size);
+  font-weight: var(--off-canvas-button-font-weight);
+  line-height: normal;
+  -webkit-appearance: none;
+  appearance: none;
+}
 #drupal-off-canvas-wrapper .button:hover,
-    #drupal-off-canvas-wrapper .button:active {
-      z-index: 10;
-      text-decoration: none;
-      color: var(--off-canvas-button-text-color-hover);
-      background-color: var(--off-canvas-button-background-color-hover);
-    }
+#drupal-off-canvas-wrapper .button:active {
+  z-index: 10;
+  text-decoration: none;
+  color: var(--off-canvas-button-text-color-hover);
+  background-color: var(--off-canvas-button-background-color-hover);
+}
 #drupal-off-canvas-wrapper .button:disabled,
-    #drupal-off-canvas-wrapper .button:disabled:active,
-    #drupal-off-canvas-wrapper .button.is-disabled,
-    #drupal-off-canvas-wrapper .button.is-disabled:active {
-      cursor: default;
-      color: #5c5c5c;
-      background: #555;
-      font-weight: normal;
-    }
+#drupal-off-canvas-wrapper .button:disabled:active,
+#drupal-off-canvas-wrapper .button.is-disabled,
+#drupal-off-canvas-wrapper .button.is-disabled:active {
+  cursor: default;
+  color: #5c5c5c;
+  background: #555;
+  font-weight: normal;
+}
 #drupal-off-canvas-wrapper .button--primary {
-    margin-top: 0.9375rem;
-    color: var(--off-canvas-primary-button-text-color);
-    background: var(--off-canvas-primary-button-background-color);
-  }
+  margin-top: 0.9375rem;
+  color: var(--off-canvas-primary-button-text-color);
+  background: var(--off-canvas-primary-button-background-color);
+}
 #drupal-off-canvas-wrapper .button--primary:hover,
-    #drupal-off-canvas-wrapper .button--primary:active {
-      color: var(--off-canvas-primary-button-text-color-hover);
-      background: var(--off-canvas-primary-button-background-color-hover);
-    }
+#drupal-off-canvas-wrapper .button--primary:active {
+  color: var(--off-canvas-primary-button-text-color-hover);
+  background: var(--off-canvas-primary-button-background-color-hover);
+}
 #drupal-off-canvas-wrapper button.link {
-    display: inline;
-    transition: color 0.5s ease;
-    color: var(--off-canvas-link-color);
-    border: 0;
-    background: transparent;
-    font-size: var(--off-canvas-button-font-size);
-  }
+  display: inline;
+  transition: color 0.5s ease;
+  color: var(--off-canvas-link-color);
+  border: 0;
+  background: transparent;
+  font-size: var(--off-canvas-button-font-size);
+}
 #drupal-off-canvas-wrapper button.link:hover,
-    #drupal-off-canvas-wrapper button.link:focus {
-      text-decoration: none;
-      color: var(--off-canvas-link-color);
-    }
+#drupal-off-canvas-wrapper button.link:focus {
+  text-decoration: none;
+  color: var(--off-canvas-link-color);
+}
 #drupal-off-canvas-wrapper .button--danger {
-    text-decoration: none;
-    color: #c72100;
-    border-radius: 0;
-    font-weight: 400;
-  }
+  text-decoration: none;
+  color: #c72100;
+  border-radius: 0;
+  font-weight: 400;
+}
 #drupal-off-canvas-wrapper .button--danger:hover,
-    #drupal-off-canvas-wrapper .button--danger:focus,
-    #drupal-off-canvas-wrapper .button--danger:active {
-      text-decoration: none;
-      color: #ff2a00;
-      text-shadow: none;
-    }
+#drupal-off-canvas-wrapper .button--danger:focus,
+#drupal-off-canvas-wrapper .button--danger:active {
+  text-decoration: none;
+  color: #ff2a00;
+  text-shadow: none;
+}
 #drupal-off-canvas-wrapper .button--danger:disabled,
-    #drupal-off-canvas-wrapper .button--danger.is-disabled {
-      cursor: default;
-      color: #737373;
-    }
+#drupal-off-canvas-wrapper .button--danger.is-disabled {
+  cursor: default;
+  color: #737373;
+}
 .no-touchevents #drupal-off-canvas-wrapper .button--small {
-    padding: 2px 1em;
-    font-size: 0.8125rem;
+  padding: 2px 1em;
+  font-size: 0.8125rem;
 }
diff --git a/core/misc/dialog/off-canvas/css/details.css b/core/misc/dialog/off-canvas/css/details.css
index e5907b59bd..0d3758f36d 100644
--- a/core/misc/dialog/off-canvas/css/details.css
+++ b/core/misc/dialog/off-canvas/css/details.css
@@ -27,46 +27,46 @@
 }
 
 #drupal-off-canvas-wrapper details {
-    margin: var(--off-canvas-vertical-spacing-unit) calc(-1 * var(--off-canvas-padding)); /* Cancel out the padding of the parent. */
-    padding: 0 var(--off-canvas-padding);
-    color: var(--off-canvas-details-text-color);
-    border: solid var(--off-canvas-details-border-color) var(--off-canvas-details-border-width);
-    background: var(--off-canvas-details-background-color);
-  }
+  margin: var(--off-canvas-vertical-spacing-unit) calc(-1 * var(--off-canvas-padding)); /* Cancel out the padding of the parent. */
+  padding: 0 var(--off-canvas-padding);
+  color: var(--off-canvas-details-text-color);
+  border: solid var(--off-canvas-details-border-color) var(--off-canvas-details-border-width);
+  background: var(--off-canvas-details-background-color);
+}
 
 :is(#drupal-off-canvas-wrapper details) + details {
-      margin-top: calc(-1 * var(--off-canvas-details-border-width));
-    }
+  margin-top: calc(-1 * var(--off-canvas-details-border-width));
+}
 
 #drupal-off-canvas-wrapper summary {
-    margin: 0 calc(-1 * var(--off-canvas-padding));
-    padding: var(--off-canvas-details-summary-padding);
-    color: var(--off-canvas-details-summary-text-color);
-    border: var(--off-canvas-details-summary-border);
-    background-color: var(--off-canvas-details-summary-background-color);
-    font-size: var(--off-canvas-details-summary-font-size);
-  }
+  margin: 0 calc(-1 * var(--off-canvas-padding));
+  padding: var(--off-canvas-details-summary-padding);
+  color: var(--off-canvas-details-summary-text-color);
+  border: var(--off-canvas-details-summary-border);
+  background-color: var(--off-canvas-details-summary-background-color);
+  font-size: var(--off-canvas-details-summary-font-size);
+}
 
 #drupal-off-canvas-wrapper summary:hover {
-      color: var(--off-canvas-details-summary-text-color-hover);
-      background-color: var(--off-canvas-details-summary-background-color-hover);
-    }
+  color: var(--off-canvas-details-summary-text-color-hover);
+  background-color: var(--off-canvas-details-summary-background-color-hover);
+}
 
 #drupal-off-canvas-wrapper summary:focus {
-      outline-offset: -4px; /* Ensure focus doesn't get cut off. */
-    }
+  outline-offset: -4px; /* Ensure focus doesn't get cut off. */
+}
 
 #drupal-off-canvas-wrapper summary {
 
-    a {
-      color: var(--off-canvas-details-text-color);
-    }
+  a {
+    color: var(--off-canvas-details-text-color);
+  }
 
-      a:hover {
-        color: var(--off-canvas-details-summary-text-color-hover);
-      }
+  a:hover {
+    color: var(--off-canvas-details-summary-text-color-hover);
   }
+}
 
 #drupal-off-canvas-wrapper .details-wrapper {
-    padding: var(--off-canvas-vertical-spacing-unit) 0;
-  }
+  padding: var(--off-canvas-vertical-spacing-unit) 0;
+}
diff --git a/core/misc/dialog/off-canvas/css/dropbutton.css b/core/misc/dialog/off-canvas/css/dropbutton.css
index 8dc8985ded..53b6e9f79c 100644
--- a/core/misc/dialog/off-canvas/css/dropbutton.css
+++ b/core/misc/dialog/off-canvas/css/dropbutton.css
@@ -23,164 +23,134 @@
   --off-canvas-dropbutton-text-color-hover: var(--off-canvas-button-text-color-hover); /* Minimum 4.5:1 contrast ratio against --off-canvas-dropbutton-primary-background-color and --off-canvas-dropbutton-secondary-background-color. */
 }
 #drupal-off-canvas-wrapper .dropbutton-wrapper {
-    margin-top: var(--off-canvas-vertical-spacing-unit);
-    margin-bottom: var(--off-canvas-vertical-spacing-unit);
+  margin-block: var(--off-canvas-vertical-spacing-unit);
 
-    /*
+  /*
      * Styles for when the dropbutton is expanded.
      */
-  }
+}
 #drupal-off-canvas-wrapper .dropbutton-wrapper.open {
-      position: relative;
-      z-index: 100;
-    }
+  position: relative;
+  z-index: 100;
+}
 #drupal-off-canvas-wrapper .dropbutton-wrapper.open .secondary-action {
-        visibility: visible;
-      }
+  visibility: visible;
+}
 #drupal-off-canvas-wrapper .dropbutton-wrapper.open .dropbutton-widget {
-        border-radius: var(--off-canvas-dropbutton-border-radius) var(--off-canvas-dropbutton-border-radius) 0 0;
-      }
+  border-radius: var(--off-canvas-dropbutton-border-radius) var(--off-canvas-dropbutton-border-radius) 0 0;
+}
 #drupal-off-canvas-wrapper .dropbutton-wrapper.open .dropbutton-toggle button:before {
-        transform: translateY(25%) rotate(225deg);
-      }
+  transform: translateY(25%) rotate(225deg);
+}
 /*
     * Styles for single link variant of dropbutton.
     */
-[dir="ltr"] #drupal-off-canvas-wrapper .dropbutton-wrapper.dropbutton-single .dropbutton-widget {
-        padding-right: 0;
-}
-[dir="rtl"] #drupal-off-canvas-wrapper .dropbutton-wrapper.dropbutton-single .dropbutton-widget {
-        padding-left: 0;
+#drupal-off-canvas-wrapper .dropbutton-wrapper.dropbutton-single .dropbutton-widget {
+  padding-inline-end: 0;
 }
 #drupal-off-canvas-wrapper .dropbutton-wrapper.dropbutton-single .dropbutton-action:first-child {
-          border-right: solid 1px var(--off-canvas-dropbutton-border-color); /* LTR */
-          border-radius: var(--off-canvas-dropbutton-border-radius);
-        }
+  border-right: solid 1px var(--off-canvas-dropbutton-border-color); /* LTR */
+  border-radius: var(--off-canvas-dropbutton-border-radius);
+}
 [dir="rtl"] #drupal-off-canvas-wrapper .dropbutton-wrapper.dropbutton-single .dropbutton-action:first-child {
-            border: solid 1px var(--off-canvas-dropbutton-border-color);
-          }
-#drupal-off-canvas-wrapper .dropbutton-wrapper.dropbutton-single .dropbutton-action a {
-          justify-content: center;
-        }
-[dir="ltr"] #drupal-off-canvas-wrapper .dropbutton-widget {
-    padding-right: var(--off-canvas-dropbutton-height);
+  border: solid 1px var(--off-canvas-dropbutton-border-color);
 }
-[dir="rtl"] #drupal-off-canvas-wrapper .dropbutton-widget {
-    padding-left: var(--off-canvas-dropbutton-height);
+#drupal-off-canvas-wrapper .dropbutton-wrapper.dropbutton-single .dropbutton-action a {
+  justify-content: center;
 }
 #drupal-off-canvas-wrapper .dropbutton-widget {
-    position: relative;
-    width: max-content;
-    max-width: 100%;
-    height: var(--off-canvas-dropbutton-height);
-    border-radius: var(--off-canvas-dropbutton-border-radius);
-  }
-[dir="ltr"] #drupal-off-canvas-wrapper .dropbutton {
-    margin-left: 0;
-}
-[dir="rtl"] #drupal-off-canvas-wrapper .dropbutton {
-    margin-right: 0;
-}
-[dir="ltr"] #drupal-off-canvas-wrapper .dropbutton {
-    padding-left: 0;
-}
-[dir="rtl"] #drupal-off-canvas-wrapper .dropbutton {
-    padding-right: 0;
+  position: relative;
+  width: max-content;
+  max-width: 100%;
+  height: var(--off-canvas-dropbutton-height);
+  padding-inline-end: var(--off-canvas-dropbutton-height);
+  border-radius: var(--off-canvas-dropbutton-border-radius);
 }
 #drupal-off-canvas-wrapper .dropbutton {
-    height: var(--off-canvas-dropbutton-height);
-    margin-top: 0;
-    margin-bottom: 0;
-    list-style: none;
-    font-size: var(--off-canvas-dropbutton-font-size);
-  }
+  height: var(--off-canvas-dropbutton-height);
+  margin-block: 0;
+  margin-inline-start: 0;
+  padding-inline-start: 0;
+  list-style: none;
+  font-size: var(--off-canvas-dropbutton-font-size);
+}
 /* This is the button that expands/collapses the secondary options. */
 #drupal-off-canvas-wrapper .dropbutton-toggle {
-    padding: 0;
-    border: 0;
-  }
-[dir="ltr"] #drupal-off-canvas-wrapper .dropbutton-toggle button {
-      right: 0;
-}
-[dir="rtl"] #drupal-off-canvas-wrapper .dropbutton-toggle button {
-      left: 0;
+  padding: 0;
+  border: 0;
 }
 #drupal-off-canvas-wrapper .dropbutton-toggle button {
-      position: absolute;
-      top: 0;
-      display: flex;
-      align-items: center;
-      justify-content: center;
-      width: var(--off-canvas-dropbutton-height);
-      height: var(--off-canvas-dropbutton-height);
-      padding: 0;
-      cursor: pointer;
-      border-color: var(--off-canvas-dropbutton-border-color);
-      border-radius: 0 var(--border-radius) var(--border-radius) 0; /* LTR */
-      background: var(--off-canvas-dropbutton-primary-background-color);
-    }
+  position: absolute;
+  top: 0;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  width: var(--off-canvas-dropbutton-height);
+  height: var(--off-canvas-dropbutton-height);
+  padding: 0;
+  cursor: pointer;
+  border-color: var(--off-canvas-dropbutton-border-color);
+  border-radius: 0 var(--border-radius) var(--border-radius) 0; /* LTR */
+  background: var(--off-canvas-dropbutton-primary-background-color);
+  inset-inline-end: 0;
+}
 #drupal-off-canvas-wrapper .dropbutton-toggle button:focus {
-        outline: solid 2px var(--off-canvas-dropbutton-focus-outline-color);
-        outline-offset: -2px;
-      }
+  outline: solid 2px var(--off-canvas-dropbutton-focus-outline-color);
+  outline-offset: -2px;
+}
 #drupal-off-canvas-wrapper .dropbutton-toggle button:before {
-        display: block;
-        width: 0.375rem;
-        height: 0.375rem;
-        content: "";
-        transform: translateY(-25%) rotate(45deg);
-        border-right: solid 2px var(--off-canvas-dropbutton-text-color);
-        border-bottom: solid 2px var(--off-canvas-dropbutton-text-color);
-      }
+  display: block;
+  width: 0.375rem;
+  height: 0.375rem;
+  content: "";
+  transform: translateY(-25%) rotate(45deg);
+  border-right: solid 2px var(--off-canvas-dropbutton-text-color);
+  border-bottom: solid 2px var(--off-canvas-dropbutton-text-color);
+}
 [dir="rtl"] #drupal-off-canvas-wrapper .dropbutton-toggle button {
-        border-radius: var(--off-canvas-dropbutton-border-radius) 0 0 var(--off-canvas-dropbutton-border-radius);
-      }
+  border-radius: var(--off-canvas-dropbutton-border-radius) 0 0 var(--off-canvas-dropbutton-border-radius);
+}
 /* This is the first <li> element in the list of actions. */
-[dir="ltr"] #drupal-off-canvas-wrapper .dropbutton-action:first-child {
-      margin-right: 2px;
+#drupal-off-canvas-wrapper .dropbutton-action:first-child {
+  margin-inline-end: 2px;
+  border: solid var(--off-canvas-dropbutton-border-width) var(--off-canvas-dropbutton-border-color);
+  border-radius: var(--off-canvas-dropbutton-border-radius) 0 0 var(--off-canvas-dropbutton-border-radius); /* LTR */
+  background: var(--off-canvas-dropbutton-primary-background-color);
 }
 [dir="rtl"] #drupal-off-canvas-wrapper .dropbutton-action:first-child {
-      margin-left: 2px;
+  border: solid var(--off-canvas-dropbutton-border-width) var(--off-canvas-dropbutton-border-color);
+  border-radius: 0 var(--off-canvas-dropbutton-border-radius) var(--off-canvas-dropbutton-border-radius) 0;
 }
-#drupal-off-canvas-wrapper .dropbutton-action:first-child {
-      border: solid var(--off-canvas-dropbutton-border-width) var(--off-canvas-dropbutton-border-color);
-      border-radius: var(--off-canvas-dropbutton-border-radius) 0 0 var(--off-canvas-dropbutton-border-radius); /* LTR */
-      background: var(--off-canvas-dropbutton-primary-background-color);
-    }
-[dir="rtl"] #drupal-off-canvas-wrapper .dropbutton-action:first-child {
-        border: solid var(--off-canvas-dropbutton-border-width) var(--off-canvas-dropbutton-border-color);
-        border-radius: 0 var(--off-canvas-dropbutton-border-radius) var(--off-canvas-dropbutton-border-radius) 0;
-      }
 #drupal-off-canvas-wrapper .dropbutton-action a {
-      display: flex;
-      align-items: center;
-      min-height: var(--off-canvas-dropbutton-height);
-      margin-bottom: -2px;
-      padding: 0 0.5625rem;
-      text-decoration: none;
-      color: var(--off-canvas-dropbutton-text-color);
-      font-weight: 600;
-    }
+  display: flex;
+  align-items: center;
+  min-height: var(--off-canvas-dropbutton-height);
+  margin-bottom: -2px;
+  padding: 0 0.5625rem;
+  text-decoration: none;
+  color: var(--off-canvas-dropbutton-text-color);
+  font-weight: 600;
+}
 #drupal-off-canvas-wrapper .dropbutton-action a:hover {
-        color: var(--off-canvas-dropbutton-text-color);
-      }
+  color: var(--off-canvas-dropbutton-text-color);
+}
 #drupal-off-canvas-wrapper .dropbutton-action a:focus {
-        outline: solid 2px var(--off-canvas-dropbutton-focus-outline-color);
-        outline-offset: -1px; /* Overlap parent container by 1px. */
-      }
+  outline: solid 2px var(--off-canvas-dropbutton-focus-outline-color);
+  outline-offset: -1px; /* Overlap parent container by 1px. */
+}
 /* These are the <li> elements other than the first. */
 #drupal-off-canvas-wrapper .secondary-action {
-    visibility: hidden;
-    width: calc(100% + var(--off-canvas-dropbutton-height));
-    margin-top: var(--off-canvas-dropbutton-border-width);
-    border-right: var(--off-canvas-dropbutton-border-width) solid var(--off-canvas-dropbutton-border-color);
-    border-left: var(--off-canvas-dropbutton-border-width) solid var(--off-canvas-dropbutton-border-color);
-    background-color: var(--off-canvas-dropbutton-primary-background-color);
-  }
+  visibility: hidden;
+  width: calc(100% + var(--off-canvas-dropbutton-height));
+  margin-top: var(--off-canvas-dropbutton-border-width);
+  border-right: var(--off-canvas-dropbutton-border-width) solid var(--off-canvas-dropbutton-border-color);
+  border-left: var(--off-canvas-dropbutton-border-width) solid var(--off-canvas-dropbutton-border-color);
+  background-color: var(--off-canvas-dropbutton-primary-background-color);
+}
 #drupal-off-canvas-wrapper .secondary-action:last-child {
-      border-bottom: var(--off-canvas-dropbutton-border-width) solid var(--off-canvas-dropbutton-border-color);
-    }
+  border-bottom: var(--off-canvas-dropbutton-border-width) solid var(--off-canvas-dropbutton-border-color);
+}
 #drupal-off-canvas-wrapper .secondary-action a:hover {
-      color: var(--off-canvas-dropbutton-text-color-hover);
-      background-color: var(--off-canvas-dropbutton-secondary-background-color);
-    }
+  color: var(--off-canvas-dropbutton-text-color-hover);
+  background-color: var(--off-canvas-dropbutton-secondary-background-color);
+}
diff --git a/core/misc/dialog/off-canvas/css/drupal.css b/core/misc/dialog/off-canvas/css/drupal.css
index 03397fc1dd..e7b20dc429 100644
--- a/core/misc/dialog/off-canvas/css/drupal.css
+++ b/core/misc/dialog/off-canvas/css/drupal.css
@@ -14,22 +14,22 @@
  */
 
 #drupal-off-canvas-wrapper .panel {
-    padding: 0.3125rem 0.3125rem 0.9375rem;
-  }
+  padding: 0.3125rem 0.3125rem 0.9375rem;
+}
 
 #drupal-off-canvas-wrapper .panel__description {
-    margin: 0 0 0.1875rem;
-    padding: 2px 0 0.1875rem 0;
-  }
+  margin: 0 0 0.1875rem;
+  padding: 2px 0 0.1875rem 0;
+}
 
 #drupal-off-canvas-wrapper .compact-link {
-    margin: 0 0 0.625rem 0;
-  }
+  margin: 0 0 0.625rem 0;
+}
 
 #drupal-off-canvas-wrapper small .admin-link:before {
-    content: " [";
-  }
+  content: " [";
+}
 
 #drupal-off-canvas-wrapper small .admin-link:after {
-    content: "]";
-  }
+  content: "]";
+}
diff --git a/core/misc/dialog/off-canvas/css/form.css b/core/misc/dialog/off-canvas/css/form.css
index 978aed3edf..d9b34bd335 100644
--- a/core/misc/dialog/off-canvas/css/form.css
+++ b/core/misc/dialog/off-canvas/css/form.css
@@ -25,187 +25,168 @@
 }
 
 #drupal-off-canvas-wrapper form {
-    padding-top: var(--off-canvas-padding);
-    padding-bottom: var(--off-canvas-padding);
-  }
+  padding-block: var(--off-canvas-padding);
+}
 
 #drupal-off-canvas-wrapper form > *:first-child {
-      margin-top: 0;
-      padding-top: 0;
-    }
+  margin-top: 0;
+  padding-top: 0;
+}
 
 #drupal-off-canvas-wrapper .ck-content {
-    color: var(--drupal-off-canvas-input-text-color);
-  }
+  color: var(--drupal-off-canvas-input-text-color);
+}
 
 #drupal-off-canvas-wrapper .form-item:where(:not(fieldset)) {
-    padding: var(--off-canvas-vertical-spacing-unit) 0;
-  }
+  padding: var(--off-canvas-vertical-spacing-unit) 0;
+}
 
 #drupal-off-canvas-wrapper .form-items-inline > * {
-    display: inline-block;
-  }
+  display: inline-block;
+}
 
 #drupal-off-canvas-wrapper label {
-    display: block;
-  }
+  display: block;
+}
 
 #drupal-off-canvas-wrapper .form-type-boolean {
-    padding: calc(0.5 * var(--off-canvas-vertical-spacing-unit)) 0;
-  }
+  padding: calc(0.5 * var(--off-canvas-vertical-spacing-unit)) 0;
+}
 
 #drupal-off-canvas-wrapper .description,
-  #drupal-off-canvas-wrapper .form-item__description {
-    margin: calc(0.5 * var(--off-canvas-vertical-spacing-unit)) 0;
-    font-size: 0.75rem;
-  }
+#drupal-off-canvas-wrapper .form-item__description {
+  margin: calc(0.5 * var(--off-canvas-vertical-spacing-unit)) 0;
+  font-size: 0.75rem;
+}
 
 #drupal-off-canvas-wrapper .form-required:after {
-    content: "*";
-  }
+  content: "*";
+}
 
 #drupal-off-canvas-wrapper .fieldset,
-  #drupal-off-canvas-wrapper fieldset {
-    margin: calc(2 * var(--off-canvas-vertical-spacing-unit)) 0;
-    padding: var(--off-canvas-vertical-spacing-unit);
-    border: solid var(--drupal-off-canvas-fieldset-border-width) var(--drupal-off-canvas-fieldset-border-color);
-    background-color: var(--drupal-off-canvas-fieldset-background-color);
-  }
+#drupal-off-canvas-wrapper fieldset {
+  margin: calc(2 * var(--off-canvas-vertical-spacing-unit)) 0;
+  padding: var(--off-canvas-vertical-spacing-unit);
+  border: solid var(--drupal-off-canvas-fieldset-border-width) var(--drupal-off-canvas-fieldset-border-color);
+  background-color: var(--drupal-off-canvas-fieldset-background-color);
+}
 
-#drupal-off-canvas-wrapper legend, 
-  #drupal-off-canvas-wrapper .fieldset__legend {
-    display: contents;
-    font-weight: bold;
-  }
+#drupal-off-canvas-wrapper legend,
+#drupal-off-canvas-wrapper .fieldset__legend {
+  display: contents;
+  font-weight: bold;
+}
 
 /* Bartik uses the .field-multiple-table CSS class on its tabledrag tables. */
 
 #drupal-off-canvas-wrapper :is(.fieldset, fieldset, .draggable-table, .field-multiple-table) input:where(:not([type="submit"], [type="checkbox"], [type="radio"])) {
-    width: 100%; /* Prevent text fields from breaking out of tables and fieldsets at narrow widths. */
-  }
+  width: 100%; /* Prevent text fields from breaking out of tables and fieldsets at narrow widths. */
+}
 
 #drupal-off-canvas-wrapper input,
-  #drupal-off-canvas-wrapper textarea {
-    font-family: inherit;
-  }
+#drupal-off-canvas-wrapper textarea {
+  font-family: inherit;
+}
 
-#drupal-off-canvas-wrapper input:where(:not([type="submit"], [type="checkbox"], [type="radio"], [type="file"])), #drupal-off-canvas-wrapper select, #drupal-off-canvas-wrapper textarea {
-    max-width: 100%;
-    padding: var(--drupal-off-canvas-input-padding);
-    color: var(--drupal-off-canvas-input-text-color);
-    border: var(--drupal-off-canvas-input-border);
-    border-radius: var(--drupal-off-canvas-input-border-radius);
-    background-color: var(--drupal-off-canvas-input-background-color);
-    font-size: var(--drupal-off-canvas-input-font-size);
-  }
+#drupal-off-canvas-wrapper input:where(:not([type="submit"], [type="checkbox"], [type="radio"], [type="file"])),
+#drupal-off-canvas-wrapper select,
+#drupal-off-canvas-wrapper textarea {
+  max-width: 100%;
+  padding: var(--drupal-off-canvas-input-padding);
+  color: var(--drupal-off-canvas-input-text-color);
+  border: var(--drupal-off-canvas-input-border);
+  border-radius: var(--drupal-off-canvas-input-border-radius);
+  background-color: var(--drupal-off-canvas-input-background-color);
+  font-size: var(--drupal-off-canvas-input-font-size);
+}
 
-:is(#drupal-off-canvas-wrapper input[type="checkbox"]) + label, :is(#drupal-off-canvas-wrapper input[type="radio"]) + label {
-      display: inline;
-    }
+:is(#drupal-off-canvas-wrapper input[type="checkbox"]) + label,
+:is(#drupal-off-canvas-wrapper input[type="radio"]) + label {
+  display: inline;
+}
 
 #drupal-off-canvas-wrapper input[type="file"] {
-    margin-bottom: var(--off-canvas-vertical-spacing-unit);
-  }
-
-#drupal-off-canvas-wrapper input[type="search"] {
-    -webkit-appearance: none;
-    appearance: none; /* Necessary for Safari. */
-  }
-
-[dir="ltr"] #drupal-off-canvas-wrapper select {
-    padding-right: 1.25rem;
+  margin-bottom: var(--off-canvas-vertical-spacing-unit);
 }
 
-[dir="rtl"] #drupal-off-canvas-wrapper select {
-    padding-left: 1.25rem;
+#drupal-off-canvas-wrapper input[type="search"] {
+  -webkit-appearance: none;
+  appearance: none; /* Necessary for Safari. */
 }
 
 #drupal-off-canvas-wrapper select {
-    -webkit-appearance: none;
-    appearance: none;
-    border: var(--drupal-off-canvas-input-border);
-    border-radius: var(--drupal-off-canvas-input-border-radius);
-    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 9'%3e%3cpath fill='none' stroke-width='1.5' d='M1 1l6 6 6-6' stroke='%23545560'/%3e%3c/svg%3e");
-    background-repeat: no-repeat;
-    background-position: center right 5px; /* LTR */
-    background-size: 0.75rem;
-  }
+  -webkit-appearance: none;
+  appearance: none;
+  padding-inline-end: 1.25rem;
+  border: var(--drupal-off-canvas-input-border);
+  border-radius: var(--drupal-off-canvas-input-border-radius);
+  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 9'%3e%3cpath fill='none' stroke-width='1.5' d='M1 1l6 6 6-6' stroke='%23545560'/%3e%3c/svg%3e");
+  background-repeat: no-repeat;
+  background-position: center right 5px; /* LTR */
+  background-size: 0.75rem;
+}
 
 [dir="rtl"] #drupal-off-canvas-wrapper select {
-      background-position: center left 5px;
-    }
+  background-position: center left 5px;
+}
 
 @media (forced-colors: active) {
 
-[dir="ltr"] #drupal-off-canvas-wrapper select {
-      padding-right: 0;
+  #drupal-off-canvas-wrapper select {
+    -webkit-appearance: revert;
+    appearance: revert;
+    padding-inline-end: 0;
+    background: revert;
   }
-
-[dir="rtl"] #drupal-off-canvas-wrapper select {
-      padding-left: 0;
-  }
-
-#drupal-off-canvas-wrapper select {
-      -webkit-appearance: revert;
-      appearance: revert;
-      background: revert;
-  }
-    }
+}
 
 /*
    * Autocomplete.
    */
 
-[dir="ltr"] #drupal-off-canvas-wrapper .form-autocomplete {
-    padding-right: 2.5rem;
+#drupal-off-canvas-wrapper .form-autocomplete {
+  padding-inline-end: 2.5rem; /* Room for icon. */
+  background-image: url("data:image/svg+xml,%3csvg width='40' height='20' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M8 1C3.46.827-.188 5.787 1.313 10.068c1.176 4.384 6.993 6.417 10.637 3.7.326-.39.565.276.846.442l3.74 3.739 1.413-1.414-4.35-4.35c2.811-3.468 1.15-9.247-3.062-10.71A7.003 7.003 0 008 1zm0 2c3.242-.123 5.849 3.42 4.777 6.477-.842 3.132-4.994 4.58-7.6 2.65-2.745-1.73-2.9-6.125-.285-8.044A5.006 5.006 0 018 3z' fill='%23868686'/%3e%3c/svg%3e");
+  background-repeat: no-repeat;
+  background-position: center right 1px; /* LTR */
 }
 
-[dir="rtl"] #drupal-off-canvas-wrapper .form-autocomplete {
-    padding-left: 2.5rem;
-}
-
-#drupal-off-canvas-wrapper .form-autocomplete { /* Room for icon. */
-    background-image: url("data:image/svg+xml,%3csvg width='40' height='20' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M8 1C3.46.827-.188 5.787 1.313 10.068c1.176 4.384 6.993 6.417 10.637 3.7.326-.39.565.276.846.442l3.74 3.739 1.413-1.414-4.35-4.35c2.811-3.468 1.15-9.247-3.062-10.71A7.003 7.003 0 008 1zm0 2c3.242-.123 5.849 3.42 4.777 6.477-.842 3.132-4.994 4.58-7.6 2.65-2.745-1.73-2.9-6.125-.285-8.044A5.006 5.006 0 018 3z' fill='%23868686'/%3e%3c/svg%3e");
-    background-repeat: no-repeat;
-    background-position: center right 1px; /* LTR */
-  }
-
 #drupal-off-canvas-wrapper .form-autocomplete.ui-autocomplete-loading {
-      background-image: url(../../../icons/spinner.gif);
-    }
+  background-image: url(../../../icons/spinner.gif);
+}
 
 [dir="rtl"] #drupal-off-canvas-wrapper .form-autocomplete {
-      background-position: center left 1px;
-    }
+  background-position: center left 1px;
+}
 
 /* This is the background <ul> for the autocomplete dropdown. */
 
 #drupal-off-canvas-wrapper .ui-autocomplete {
-    margin: 0;
-    padding: 0;
-    list-style: none;
-    border: var(--drupal-off-canvas-input-border);
-    background-color: var(--drupal-off-canvas-input-background-color);
-    box-shadow: 0 1px 1px 0 var(--off-canvas-background-color); /* Ensure edge is visible if appearing over another form element. */
-  }
+  margin: 0;
+  padding: 0;
+  list-style: none;
+  border: var(--drupal-off-canvas-input-border);
+  background-color: var(--drupal-off-canvas-input-background-color);
+  box-shadow: 0 1px 1px 0 var(--off-canvas-background-color); /* Ensure edge is visible if appearing over another form element. */
+}
 
 #drupal-off-canvas-wrapper .ui-autocomplete a {
-      display: block;
-      padding: var(--drupal-off-canvas-input-padding);
-      cursor: pointer;
-      color: var(--drupal-off-canvas-input-text-color);
-      font-size: var(--drupal-off-canvas-input-font-size);
-    }
+  display: block;
+  padding: var(--drupal-off-canvas-input-padding);
+  cursor: pointer;
+  color: var(--drupal-off-canvas-input-text-color);
+  font-size: var(--drupal-off-canvas-input-font-size);
+}
 
 #drupal-off-canvas-wrapper .ui-autocomplete a:hover {
-        background-color: #eee;
-      }
+  background-color: #eee;
+}
 
 #drupal-off-canvas-wrapper .ui-autocomplete a:focus,
-      #drupal-off-canvas-wrapper .ui-autocomplete a.ui-state-active {
-        outline: solid 2px currentColor;
-        outline-offset: -2px;
-      }
+#drupal-off-canvas-wrapper .ui-autocomplete a.ui-state-active {
+  outline: solid 2px currentColor;
+  outline-offset: -2px;
+}
 
 /*
    * Claro injects a "Loading" autocomplete message that affects the positioning
@@ -213,5 +194,5 @@
    */
 
 #drupal-off-canvas-wrapper .claro-autocomplete__message {
-    display: none;
-  }
+  display: none;
+}
diff --git a/core/misc/dialog/off-canvas/css/messages.css b/core/misc/dialog/off-canvas/css/messages.css
index 4ca8248276..fc268b3d1a 100644
--- a/core/misc/dialog/off-canvas/css/messages.css
+++ b/core/misc/dialog/off-canvas/css/messages.css
@@ -23,58 +23,44 @@
   --off-canvas-messages-icon-error: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='%23e32700'%3e%3cpath d='M8.002 1c-3.868 0-7.002 3.134-7.002 7s3.134 7 7.002 7c3.865 0 7-3.134 7-7s-3.135-7-7-7zm4.025 9.284c.062.063.1.149.1.239 0 .091-.037.177-.1.24l-1.262 1.262c-.064.062-.15.1-.24.1s-.176-.036-.24-.1l-2.283-2.283-2.286 2.283c-.064.062-.15.1-.24.1s-.176-.036-.24-.1l-1.261-1.262c-.063-.062-.1-.148-.1-.24 0-.088.036-.176.1-.238l2.283-2.285-2.283-2.284c-.063-.064-.1-.15-.1-.24s.036-.176.1-.24l1.262-1.262c.063-.063.149-.1.24-.1.089 0 .176.036.24.1l2.285 2.284 2.283-2.284c.064-.063.15-.1.24-.1s.176.036.24.1l1.262 1.262c.062.063.1.149.1.24 0 .089-.037.176-.1.24l-2.283 2.284 2.283 2.284z'/%3e%3c/svg%3e");
 }
 
-[dir="ltr"] #drupal-off-canvas-wrapper .messages {
-    padding-left: calc(2 * var(--off-canvas-messages-icon-size));
-}
-
-[dir="rtl"] #drupal-off-canvas-wrapper .messages {
-    padding-right: calc(2 * var(--off-canvas-messages-icon-size));
-}
-
 #drupal-off-canvas-wrapper .messages {
-    position: relative; /* Anchor :before pseudo-element. */
-    margin-top: calc(2 * var(--off-canvas-vertical-spacing-unit));
-    padding: calc(2 * var(--off-canvas-vertical-spacing-unit)); /* Room for icon. */
-    border: solid 1px transparent;
-    background-color: var(--off-canvas-messages-background-color);
-
-    /* Icon. */
-  }
-
-[dir="ltr"] #drupal-off-canvas-wrapper .messages:before {
-      left: 0.625rem;
-}
-
-[dir="rtl"] #drupal-off-canvas-wrapper .messages:before {
-      right: 0.625rem;
+  position: relative; /* Anchor :before pseudo-element. */
+  margin-top: calc(2 * var(--off-canvas-vertical-spacing-unit));
+  padding: calc(2 * var(--off-canvas-vertical-spacing-unit));
+  padding-inline-start: calc(2 * var(--off-canvas-messages-icon-size)); /* Room for icon. */
+  border: solid 1px transparent;
+  background-color: var(--off-canvas-messages-background-color);
+
+  /* Icon. */
 }
 
 #drupal-off-canvas-wrapper .messages:before {
-      position: absolute;
-      top: 50%;
-      display: block;
-      width: var(--off-canvas-messages-icon-size);
-      height: var(--off-canvas-messages-icon-size);
-      content: "";
-      transform: translateY(-50%);
-      background-repeat: no-repeat;
-      background-size: contain;
-    }
+  position: absolute;
+  top: 50%;
+  display: block;
+  width: var(--off-canvas-messages-icon-size);
+  height: var(--off-canvas-messages-icon-size);
+  content: "";
+  transform: translateY(-50%);
+  background-repeat: no-repeat;
+  background-size: contain;
+  inset-inline-start: 0.625rem;
+}
 
 @media (forced-colors: active) {
 
-#drupal-off-canvas-wrapper .messages:before {
-        background: canvastext;
-        -webkit-mask-repeat: no-repeat;
-        mask-repeat: no-repeat;
-        -webkit-mask-size: contain;
-        mask-size: contain;
-    }
-      }
+  #drupal-off-canvas-wrapper .messages:before {
+    background: canvastext;
+    -webkit-mask-repeat: no-repeat;
+    mask-repeat: no-repeat;
+    -webkit-mask-size: contain;
+    mask-size: contain;
+  }
+}
 
 #drupal-off-canvas-wrapper h2 {
-    margin-top: 0;
-  }
+  margin-top: 0;
+}
 
 /*
    * Some themes (Olivero) insert SVG icon. We use a background icon, so we
@@ -82,73 +68,66 @@
    */
 
 #drupal-off-canvas-wrapper .messages__icon,
-  #drupal-off-canvas-wrapper .messages__close {
-    display: none;
-  }
-
-[dir="ltr"] #drupal-off-canvas-wrapper .messages__list {
-    padding-left: 1.25rem;
-}
-
-[dir="rtl"] #drupal-off-canvas-wrapper .messages__list {
-    padding-right: 1.25rem;
+#drupal-off-canvas-wrapper .messages__close {
+  display: none;
 }
 
 #drupal-off-canvas-wrapper .messages__list {
-    margin: 0;
-  }
+  margin: 0;
+  padding-inline-start: 1.25rem;
+}
 
 #drupal-off-canvas-wrapper .messages abbr {
-    text-decoration: none;
-  }
+  text-decoration: none;
+}
 
 #drupal-off-canvas-wrapper .messages--status {
-    color: var(--off-canvas-messages-text-color-status);
-  }
+  color: var(--off-canvas-messages-text-color-status);
+}
 
 #drupal-off-canvas-wrapper .messages--status:before {
-      background-image: var(--off-canvas-messages-icon-status);
-    }
+  background-image: var(--off-canvas-messages-icon-status);
+}
 
 @media (forced-colors: active) {
 
-#drupal-off-canvas-wrapper .messages--status:before {
-        background: canvastext;
-        -webkit-mask-image: var(--off-canvas-messages-icon-status);
-        mask-image: var(--off-canvas-messages-icon-status);
-    }
-      }
+  #drupal-off-canvas-wrapper .messages--status:before {
+    background: canvastext;
+    -webkit-mask-image: var(--off-canvas-messages-icon-status);
+    mask-image: var(--off-canvas-messages-icon-status);
+  }
+}
 
 #drupal-off-canvas-wrapper .messages--warning {
-    color: var(--off-canvas-messages-text-color-warning);
-  }
+  color: var(--off-canvas-messages-text-color-warning);
+}
 
 #drupal-off-canvas-wrapper .messages--warning:before {
-      background-image: var(--off-canvas-messages-icon-warning);
-    }
+  background-image: var(--off-canvas-messages-icon-warning);
+}
 
 @media (forced-colors: active) {
 
-#drupal-off-canvas-wrapper .messages--warning:before {
-        background: canvastext;
-        -webkit-mask-image: var(--off-canvas-messages-icon-warning);
-        mask-image: var(--off-canvas-messages-icon-warning);
-    }
-      }
+  #drupal-off-canvas-wrapper .messages--warning:before {
+    background: canvastext;
+    -webkit-mask-image: var(--off-canvas-messages-icon-warning);
+    mask-image: var(--off-canvas-messages-icon-warning);
+  }
+}
 
 #drupal-off-canvas-wrapper .messages--error {
-    color: var(--off-canvas-messages-text-color-error);
-  }
+  color: var(--off-canvas-messages-text-color-error);
+}
 
 #drupal-off-canvas-wrapper .messages--error:before {
-      background-image: var(--off-canvas-messages-icon-error);
-    }
+  background-image: var(--off-canvas-messages-icon-error);
+}
 
 @media (forced-colors: active) {
 
-#drupal-off-canvas-wrapper .messages--error:before {
-        background: canvastext;
-        -webkit-mask-image: var(--off-canvas-messages-icon-error);
-        mask-image: var(--off-canvas-messages-icon-error);
-    }
-      }
+  #drupal-off-canvas-wrapper .messages--error:before {
+    background: canvastext;
+    -webkit-mask-image: var(--off-canvas-messages-icon-error);
+    mask-image: var(--off-canvas-messages-icon-error);
+  }
+}
diff --git a/core/misc/dialog/off-canvas/css/reset.css b/core/misc/dialog/off-canvas/css/reset.css
index 46866c7307..56ae7e765e 100644
--- a/core/misc/dialog/off-canvas/css/reset.css
+++ b/core/misc/dialog/off-canvas/css/reset.css
@@ -20,8 +20,8 @@
 }
 
 #drupal-off-canvas-wrapper *:where(:not(svg, svg *, .ck-reset *, [data-drupal-ck-style-fence] *, .ui-resizable-handle)):after,
-  #drupal-off-canvas-wrapper *:where(:not(svg, svg *, .ck-reset *, [data-drupal-ck-style-fence] *, .ui-resizable-handle)):before {
-    all: revert;
-    box-sizing: border-box;
-    -webkit-font-smoothing: antialiased;
-  }
+#drupal-off-canvas-wrapper *:where(:not(svg, svg *, .ck-reset *, [data-drupal-ck-style-fence] *, .ui-resizable-handle)):before {
+  all: revert;
+  box-sizing: border-box;
+  -webkit-font-smoothing: antialiased;
+}
diff --git a/core/misc/dialog/off-canvas/css/table.css b/core/misc/dialog/off-canvas/css/table.css
index eb20a081bc..54ec58de78 100644
--- a/core/misc/dialog/off-canvas/css/table.css
+++ b/core/misc/dialog/off-canvas/css/table.css
@@ -18,38 +18,27 @@
 }
 
 #drupal-off-canvas-wrapper table {
-    width: calc(100% + 2 * var(--off-canvas-padding));
-    margin: var(--off-canvas-vertical-spacing-unit) calc(-1 * var(--off-canvas-padding));
-  }
-
-#drupal-off-canvas-wrapper tr {
-    border-bottom: 1px solid var(--off-canvas-border-color);
-  }
-
-[dir="ltr"] #drupal-off-canvas-wrapper td,[dir="ltr"] 
-  #drupal-off-canvas-wrapper th {
-    text-align: left;
+  width: calc(100% + 2 * var(--off-canvas-padding));
+  margin: var(--off-canvas-vertical-spacing-unit) calc(-1 * var(--off-canvas-padding));
 }
 
-[dir="rtl"] #drupal-off-canvas-wrapper td,[dir="rtl"] 
-  #drupal-off-canvas-wrapper th {
-    text-align: right;
+#drupal-off-canvas-wrapper tr {
+  border-bottom: 1px solid var(--off-canvas-border-color);
 }
 
 #drupal-off-canvas-wrapper td,
-  #drupal-off-canvas-wrapper th {
-    padding: var(--off-canvas-table-cell-padding);
-    vertical-align: middle;
-  }
-
-[dir="ltr"] #drupal-off-canvas-wrapper td:first-child,[dir="ltr"]  #drupal-off-canvas-wrapper th:first-child {
-      padding-left: var(--off-canvas-first-cell-padding-start);
+#drupal-off-canvas-wrapper th {
+  padding: var(--off-canvas-table-cell-padding);
+  text-align: start;
+  vertical-align: middle;
 }
 
-[dir="rtl"] #drupal-off-canvas-wrapper td:first-child,[dir="rtl"]  #drupal-off-canvas-wrapper th:first-child {
-      padding-right: var(--off-canvas-first-cell-padding-start);
+#drupal-off-canvas-wrapper td:first-child,
+#drupal-off-canvas-wrapper th:first-child {
+  padding-inline-start: var(--off-canvas-first-cell-padding-start);
 }
 
-#drupal-off-canvas-wrapper td:not(:last-child) td, #drupal-off-canvas-wrapper th:not(:last-child) td {
-      border-bottom: solid 1px var(--off-canvas-border-color);
-    }
+#drupal-off-canvas-wrapper td:not(:last-child) td,
+#drupal-off-canvas-wrapper th:not(:last-child) td {
+  border-bottom: solid 1px var(--off-canvas-border-color);
+}
diff --git a/core/misc/dialog/off-canvas/css/tabledrag.css b/core/misc/dialog/off-canvas/css/tabledrag.css
index f168920524..9eeae6c6b4 100644
--- a/core/misc/dialog/off-canvas/css/tabledrag.css
+++ b/core/misc/dialog/off-canvas/css/tabledrag.css
@@ -17,115 +17,99 @@
 /* The draggable <tr> element. */
 
 #drupal-off-canvas-wrapper .draggable:hover,
-    #drupal-off-canvas-wrapper .draggable:focus-within {
-      background-color: var(--off-canvas-background-color-light);
-    }
+#drupal-off-canvas-wrapper .draggable:focus-within {
+  background-color: var(--off-canvas-background-color-light);
+}
 
 /* Appears when the row is being dragged. */
 
 #drupal-off-canvas-wrapper .draggable.drag {
-      cursor: move;
-      background-color: var(--off-canvas-background-color-dark);
-    }
+  cursor: move;
+  background-color: var(--off-canvas-background-color-dark);
+}
 
 #drupal-off-canvas-wrapper td {
-    transition: background-color 0.3s ease;
+  transition: background-color 0.3s ease;
 
-    /* We have to horizontally align all descendent nodes including text nodes
+  /* We have to horizontally align all descendent nodes including text nodes
      * that do not have wrapper elements. Since we use flex to do this, we need
      * try to keep it vertically centered, so we have to give it a minimum height
      * to match the rest of the table cells. */
-  }
-
-#drupal-off-canvas-wrapper td:first-child {
-      display: flex;
-      align-items: center;
-      min-height: 3.125rem;
-      gap: var(--off-canvas-table-cell-padding);
-    }
-
-[dir="ltr"] #drupal-off-canvas-wrapper td abbr {
-      margin-left: 0;
-      margin-right: 0.3125rem;
 }
 
-[dir="rtl"] #drupal-off-canvas-wrapper td abbr {
-      margin-right: 0;
-      margin-left: 0.3125rem;
+#drupal-off-canvas-wrapper td:first-child {
+  display: flex;
+  align-items: center;
+  min-height: 3.125rem;
+  gap: var(--off-canvas-table-cell-padding);
 }
 
 #drupal-off-canvas-wrapper td abbr {
-      text-decoration: none;
-    }
+  margin-inline: 0 0.3125rem;
+  text-decoration: none;
+}
 
 #drupal-off-canvas-wrapper .tabledrag-handle {
-    flex-shrink: 0;
-  }
+  flex-shrink: 0;
+}
 
 #drupal-off-canvas-wrapper .tabledrag-handle:after {
-      display: block;
-      width: 1.25rem;
-      height: 1.25rem;
-      margin: 0;
-      padding: 0;
-      content: "";
-      cursor: move;
-      background-color: transparent;
-      background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16'%3e%3cpath fill='%23bebebe' d='M14.904 7.753l-2.373-2.372c-.291-.292-.529-.193-.529.22v1.399h-3v-3h1.398c.414 0 .512-.239.221-.53l-2.371-2.372c-.137-.136-.36-.136-.497 0l-2.372 2.372c-.292.292-.193.53.22.53h1.399v3h-3v-1.369c0-.413-.239-.511-.53-.22l-2.372 2.372c-.136.136-.136.359 0 .494l2.372 2.372c.291.292.53.192.53-.219v-1.43h3v3h-1.4c-.413 0-.511.238-.22.529l2.374 2.373c.137.137.36.137.495 0l2.373-2.373c.29-.291.19-.529-.222-.529h-1.398v-3h3v1.4c0 .412.238.511.529.219l2.373-2.371c.137-.137.137-.359 0-.495z'/%3e%3c/svg%3e");
-      background-repeat: no-repeat;
-      background-position: center;
-    }
+  display: block;
+  width: 1.25rem;
+  height: 1.25rem;
+  margin: 0;
+  padding: 0;
+  content: "";
+  cursor: move;
+  background-color: transparent;
+  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16'%3e%3cpath fill='%23bebebe' d='M14.904 7.753l-2.373-2.372c-.291-.292-.529-.193-.529.22v1.399h-3v-3h1.398c.414 0 .512-.239.221-.53l-2.371-2.372c-.137-.136-.36-.136-.497 0l-2.372 2.372c-.292.292-.193.53.22.53h1.399v3h-3v-1.369c0-.413-.239-.511-.53-.22l-2.372 2.372c-.136.136-.136.359 0 .494l2.372 2.372c.291.292.53.192.53-.219v-1.43h3v3h-1.4c-.413 0-.511.238-.22.529l2.374 2.373c.137.137.36.137.495 0l2.373-2.373c.29-.291.19-.529-.222-.529h-1.398v-3h3v1.4c0 .412.238.511.529.219l2.373-2.371c.137-.137.137-.359 0-.495z'/%3e%3c/svg%3e");
+  background-repeat: no-repeat;
+  background-position: center;
+}
 
 @media (forced-colors: active) {
 
-#drupal-off-canvas-wrapper .tabledrag-handle:after {
-        background: linktext;
-        -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16'%3e%3cpath fill='%23bebebe' d='M14.904 7.753l-2.373-2.372c-.291-.292-.529-.193-.529.22v1.399h-3v-3h1.398c.414 0 .512-.239.221-.53l-2.371-2.372c-.137-.136-.36-.136-.497 0l-2.372 2.372c-.292.292-.193.53.22.53h1.399v3h-3v-1.369c0-.413-.239-.511-.53-.22l-2.372 2.372c-.136.136-.136.359 0 .494l2.372 2.372c.291.292.53.192.53-.219v-1.43h3v3h-1.4c-.413 0-.511.238-.22.529l2.374 2.373c.137.137.36.137.495 0l2.373-2.373c.29-.291.19-.529-.222-.529h-1.398v-3h3v1.4c0 .412.238.511.529.219l2.373-2.371c.137-.137.137-.359 0-.495z'/%3e%3c/svg%3e");
-        mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16'%3e%3cpath fill='%23bebebe' d='M14.904 7.753l-2.373-2.372c-.291-.292-.529-.193-.529.22v1.399h-3v-3h1.398c.414 0 .512-.239.221-.53l-2.371-2.372c-.137-.136-.36-.136-.497 0l-2.372 2.372c-.292.292-.193.53.22.53h1.399v3h-3v-1.369c0-.413-.239-.511-.53-.22l-2.372 2.372c-.136.136-.136.359 0 .494l2.372 2.372c.291.292.53.192.53-.219v-1.43h3v3h-1.4c-.413 0-.511.238-.22.529l2.374 2.373c.137.137.36.137.495 0l2.373-2.373c.29-.291.19-.529-.222-.529h-1.398v-3h3v1.4c0 .412.238.511.529.219l2.373-2.371c.137-.137.137-.359 0-.495z'/%3e%3c/svg%3e");
-        -webkit-mask-repeat: no-repeat;
-        mask-repeat: no-repeat;
-        -webkit-mask-position: center;
-        mask-position: center;
-    }
-      }
+  #drupal-off-canvas-wrapper .tabledrag-handle:after {
+    background: linktext;
+    -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16'%3e%3cpath fill='%23bebebe' d='M14.904 7.753l-2.373-2.372c-.291-.292-.529-.193-.529.22v1.399h-3v-3h1.398c.414 0 .512-.239.221-.53l-2.371-2.372c-.137-.136-.36-.136-.497 0l-2.372 2.372c-.292.292-.193.53.22.53h1.399v3h-3v-1.369c0-.413-.239-.511-.53-.22l-2.372 2.372c-.136.136-.136.359 0 .494l2.372 2.372c.291.292.53.192.53-.219v-1.43h3v3h-1.4c-.413 0-.511.238-.22.529l2.374 2.373c.137.137.36.137.495 0l2.373-2.373c.29-.291.19-.529-.222-.529h-1.398v-3h3v1.4c0 .412.238.511.529.219l2.373-2.371c.137-.137.137-.359 0-.495z'/%3e%3c/svg%3e");
+    mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16'%3e%3cpath fill='%23bebebe' d='M14.904 7.753l-2.373-2.372c-.291-.292-.529-.193-.529.22v1.399h-3v-3h1.398c.414 0 .512-.239.221-.53l-2.371-2.372c-.137-.136-.36-.136-.497 0l-2.372 2.372c-.292.292-.193.53.22.53h1.399v3h-3v-1.369c0-.413-.239-.511-.53-.22l-2.372 2.372c-.136.136-.136.359 0 .494l2.372 2.372c.291.292.53.192.53-.219v-1.43h3v3h-1.4c-.413 0-.511.238-.22.529l2.374 2.373c.137.137.36.137.495 0l2.373-2.373c.29-.291.19-.529-.222-.529h-1.398v-3h3v1.4c0 .412.238.511.529.219l2.373-2.371c.137-.137.137-.359 0-.495z'/%3e%3c/svg%3e");
+    -webkit-mask-repeat: no-repeat;
+    mask-repeat: no-repeat;
+    -webkit-mask-position: center;
+    mask-position: center;
+  }
+}
 
 /* Make the "row weight" <select> as small as possible. */
 
 #drupal-off-canvas-wrapper .tabledrag-hide select {
-    all: revert;
-  }
-
-#drupal-off-canvas-wrapper .tabledrag-changed-warning {
-    margin-bottom: var(--off-canvas-vertical-spacing-unit);
-    font-size: 0.875rem;
-  }
-
-[dir="ltr"] #drupal-off-canvas-wrapper .tabledrag-toggle-weight-wrapper {
-    text-align: right;
+  all: revert;
 }
 
-[dir="rtl"] #drupal-off-canvas-wrapper .tabledrag-toggle-weight-wrapper {
-    text-align: left;
+#drupal-off-canvas-wrapper .tabledrag-changed-warning {
+  margin-bottom: var(--off-canvas-vertical-spacing-unit);
+  font-size: 0.875rem;
 }
 
 #drupal-off-canvas-wrapper .tabledrag-toggle-weight-wrapper {
-    padding-top: 0.625rem;
-  }
+  padding-top: 0.625rem;
+  text-align: end;
+}
 
 #drupal-off-canvas-wrapper .indentation {
-    width: 0.3125rem;
-  }
+  width: 0.3125rem;
+}
 
 .touchevents #drupal-off-canvas-wrapper .draggable td {
-    padding: 0 0.625rem;
+  padding: 0 0.625rem;
 }
 
 .touchevents #drupal-off-canvas-wrapper .draggable .menu-item__link {
-    display: inline-block;
-    padding: 0.625rem 0;
+  display: inline-block;
+  padding: 0.625rem 0;
 }
 
 .touchevents #drupal-off-canvas-wrapper a.tabledrag-handle {
-    width: 2.5rem;
-    height: 2.75rem;
+  width: 2.5rem;
+  height: 2.75rem;
 }
diff --git a/core/misc/dialog/off-canvas/css/throbber.css b/core/misc/dialog/off-canvas/css/throbber.css
index 1f0c9012c4..ba76a10c79 100644
--- a/core/misc/dialog/off-canvas/css/throbber.css
+++ b/core/misc/dialog/off-canvas/css/throbber.css
@@ -12,52 +12,38 @@
  * @internal
  */
 
-#drupal-off-canvas-wrapper .ajax-progress, 
-  #drupal-off-canvas-wrapper .ajax-progress-throbber {
-    display: inline-block;
-    overflow: hidden;
-    width: 0.9375rem;
-    height: 0.9375rem;
-    margin: 0 0.625rem;
-    animation: off-canvas-throbber-spin 1s linear infinite;
-    vertical-align: middle;
-    border: 2px solid var(--off-canvas-text-color);
-    border-top-color: transparent;
-    border-radius: 50%;
-  }
+#drupal-off-canvas-wrapper .ajax-progress,
+#drupal-off-canvas-wrapper .ajax-progress-throbber {
+  display: inline-block;
+  overflow: hidden;
+  width: 0.9375rem;
+  height: 0.9375rem;
+  margin: 0 0.625rem;
+  animation: off-canvas-throbber-spin 1s linear infinite;
+  vertical-align: middle;
+  border: 2px solid var(--off-canvas-text-color);
+  border-top-color: transparent;
+  border-radius: 50%;
+}
 
 @media (forced-colors: active) {
 
-#drupal-off-canvas-wrapper .ajax-progress, 
+  #drupal-off-canvas-wrapper .ajax-progress,
   #drupal-off-canvas-wrapper .ajax-progress-throbber {
-      border-top-color: transparent;
+    border-top-color: transparent;
   }
-    }
-
-[dir="ltr"] #drupal-off-canvas-wrapper .layout-selection .ajax-progress,[dir="ltr"] 
-    #drupal-off-canvas-wrapper .inline-block-list .ajax-progress,[dir="ltr"] 
-    #drupal-off-canvas-wrapper .layout-selection .ajax-progress-throbber,[dir="ltr"] 
-    #drupal-off-canvas-wrapper .inline-block-list .ajax-progress-throbber {
-      right: 0;
-}
-
-[dir="rtl"] #drupal-off-canvas-wrapper .layout-selection .ajax-progress,[dir="rtl"] 
-    #drupal-off-canvas-wrapper .inline-block-list .ajax-progress,[dir="rtl"] 
-    #drupal-off-canvas-wrapper .layout-selection .ajax-progress-throbber,[dir="rtl"] 
-    #drupal-off-canvas-wrapper .inline-block-list .ajax-progress-throbber {
-      left: 0;
 }
 
 #drupal-off-canvas-wrapper .layout-selection .ajax-progress,
-    #drupal-off-canvas-wrapper .inline-block-list .ajax-progress,
-    #drupal-off-canvas-wrapper .layout-selection .ajax-progress-throbber,
-    #drupal-off-canvas-wrapper .inline-block-list .ajax-progress-throbber {
-      position: absolute;
-      top: 0;
-      bottom: 0;
-      margin-top: auto;
-      margin-bottom: auto;
-    }
+#drupal-off-canvas-wrapper .inline-block-list .ajax-progress,
+#drupal-off-canvas-wrapper .layout-selection .ajax-progress-throbber,
+#drupal-off-canvas-wrapper .inline-block-list .ajax-progress-throbber {
+  position: absolute;
+  inset-block-start: 0;
+  inset-block-end: 0;
+  inset-inline-end: 0;
+  margin-block: auto;
+}
 
 @keyframes off-canvas-throbber-spin {
   to {
diff --git a/core/misc/dialog/off-canvas/css/titlebar.css b/core/misc/dialog/off-canvas/css/titlebar.css
index 9b0d1701a4..aa5e38021c 100644
--- a/core/misc/dialog/off-canvas/css/titlebar.css
+++ b/core/misc/dialog/off-canvas/css/titlebar.css
@@ -20,107 +20,91 @@
 }
 
 #drupal-off-canvas-wrapper .ui-dialog-titlebar {
-    position: relative;
-    margin: 0 calc(-1 * var(--off-canvas-padding));
-    padding: var(--off-canvas-title-padding) 3.125rem;
-    color: var(--off-canvas-title-text-color);
-    background-color: var(--off-canvas-title-background-color);
-    font-family: var(--off-canvas-title-font-family);
-    font-size: var(--off-canvas-title-font-size);
-    font-weight: bold;
-
-    /* The pencil icon. */
-  }
-
-[dir="ltr"] #drupal-off-canvas-wrapper .ui-dialog-titlebar:before {
-      left: 1em;
-}
-
-[dir="rtl"] #drupal-off-canvas-wrapper .ui-dialog-titlebar:before {
-      right: 1em;
+  position: relative;
+  margin: 0 calc(-1 * var(--off-canvas-padding));
+  padding: var(--off-canvas-title-padding) 3.125rem;
+  color: var(--off-canvas-title-text-color);
+  background-color: var(--off-canvas-title-background-color);
+  font-family: var(--off-canvas-title-font-family);
+  font-size: var(--off-canvas-title-font-size);
+  font-weight: bold;
+
+  /* The pencil icon. */
 }
 
 #drupal-off-canvas-wrapper .ui-dialog-titlebar:before {
-      position: absolute;
-      top: 0;
-      display: block;
-      width: 1.25rem;
-      height: 100%;
-      content: "";
-      background-color: currentColor;
-      -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16'%3e%3cg%3e%3cpath fill='%23ffffff' d='M14.545 3.042l-1.586-1.585c-.389-.389-1.025-.389-1.414 0l-1.293 1.293 3 3 1.293-1.293c.389-.389.389-1.026 0-1.415z'/%3e%3crect fill='%23ffffff' x='5.129' y='3.8' transform='matrix(-.707 -.707 .707 -.707 6.189 20.064)' width='4.243' height='9.899'/%3e%3cpath fill='%23ffffff' d='M.908 14.775c-.087.262.055.397.316.312l2.001-.667-1.65-1.646-.667 2.001z'/%3e%3c/g%3e%3c/svg%3e");
-      mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16'%3e%3cg%3e%3cpath fill='%23ffffff' d='M14.545 3.042l-1.586-1.585c-.389-.389-1.025-.389-1.414 0l-1.293 1.293 3 3 1.293-1.293c.389-.389.389-1.026 0-1.415z'/%3e%3crect fill='%23ffffff' x='5.129' y='3.8' transform='matrix(-.707 -.707 .707 -.707 6.189 20.064)' width='4.243' height='9.899'/%3e%3cpath fill='%23ffffff' d='M.908 14.775c-.087.262.055.397.316.312l2.001-.667-1.65-1.646-.667 2.001z'/%3e%3c/g%3e%3c/svg%3e");
-      -webkit-mask-repeat: no-repeat;
-      mask-repeat: no-repeat;
-      -webkit-mask-size: contain;
-      mask-size: contain;
-      -webkit-mask-position: center;
-      mask-position: center;
-    }
+  position: absolute;
+  top: 0;
+  inset-inline-start: 1em;
+  display: block;
+  width: 1.25rem;
+  height: 100%;
+  content: "";
+  background-color: currentColor;
+  -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16'%3e%3cg%3e%3cpath fill='%23ffffff' d='M14.545 3.042l-1.586-1.585c-.389-.389-1.025-.389-1.414 0l-1.293 1.293 3 3 1.293-1.293c.389-.389.389-1.026 0-1.415z'/%3e%3crect fill='%23ffffff' x='5.129' y='3.8' transform='matrix(-.707 -.707 .707 -.707 6.189 20.064)' width='4.243' height='9.899'/%3e%3cpath fill='%23ffffff' d='M.908 14.775c-.087.262.055.397.316.312l2.001-.667-1.65-1.646-.667 2.001z'/%3e%3c/g%3e%3c/svg%3e");
+  mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16'%3e%3cg%3e%3cpath fill='%23ffffff' d='M14.545 3.042l-1.586-1.585c-.389-.389-1.025-.389-1.414 0l-1.293 1.293 3 3 1.293-1.293c.389-.389.389-1.026 0-1.415z'/%3e%3crect fill='%23ffffff' x='5.129' y='3.8' transform='matrix(-.707 -.707 .707 -.707 6.189 20.064)' width='4.243' height='9.899'/%3e%3cpath fill='%23ffffff' d='M.908 14.775c-.087.262.055.397.316.312l2.001-.667-1.65-1.646-.667 2.001z'/%3e%3c/g%3e%3c/svg%3e");
+  -webkit-mask-repeat: no-repeat;
+  mask-repeat: no-repeat;
+  -webkit-mask-size: contain;
+  mask-size: contain;
+  -webkit-mask-position: center;
+  mask-position: center;
+}
 
 @media (forced-colors: active) {
 
-#drupal-off-canvas-wrapper .ui-dialog-titlebar:before {
-        background-color: canvastext;
-    }
-      }
-
-/* Close button. */
-
-[dir="ltr"] #drupal-off-canvas-wrapper .ui-dialog-titlebar-close {
-    left: auto;
-    right: 0.625rem;
+  #drupal-off-canvas-wrapper .ui-dialog-titlebar:before {
+    background-color: canvastext;
+  }
 }
 
-[dir="rtl"] #drupal-off-canvas-wrapper .ui-dialog-titlebar-close {
-    right: auto;
-    left: 0.625rem;
-}
+/* Close button. */
 
 #drupal-off-canvas-wrapper .ui-dialog-titlebar-close {
-    position: absolute;
-    top: 50%;
-    overflow: hidden;
-    width: 1.875rem;
-    height: 1.875rem;
-    cursor: pointer;
-    transform: translateY(-50%);
-    text-indent: -624.9375rem;
-    color: inherit;
-    border: 1px solid transparent;
-    background-color: transparent;
-    -webkit-appearance: none;
-    appearance: none;
-  }
+  position: absolute;
+  top: 50%;
+  inset-inline: auto 0.625rem;
+  overflow: hidden;
+  width: 1.875rem;
+  height: 1.875rem;
+  cursor: pointer;
+  transform: translateY(-50%);
+  text-indent: -624.9375rem;
+  color: inherit;
+  border: 1px solid transparent;
+  background-color: transparent;
+  -webkit-appearance: none;
+  appearance: none;
+}
 
 #drupal-off-canvas-wrapper .ui-dialog-titlebar-close:focus {
-      outline: solid 2px currentColor;
-      outline-offset: 2px;
-    }
+  outline: solid 2px currentColor;
+  outline-offset: 2px;
+}
 
 /* The plus icon. */
 
 #drupal-off-canvas-wrapper .ui-dialog-titlebar-close:before,
-    #drupal-off-canvas-wrapper .ui-dialog-titlebar-close:after {
-      position: absolute;
-      top: calc(50% - 1px);
-      left: 50%;
-      width: 50%;
-      height: 0;
-      content: "";
-      border-top: solid 2px currentColor;
-    }
+#drupal-off-canvas-wrapper .ui-dialog-titlebar-close:after {
+  position: absolute;
+  top: calc(50% - 1px);
+  left: 50%;
+  width: 50%;
+  height: 0;
+  content: "";
+  border-top: solid 2px currentColor;
+}
 
 #drupal-off-canvas-wrapper .ui-dialog-titlebar-close:before {
-      transform: translate(-50%, 50%) rotate(-45deg);
-    }
+  transform: translate(-50%, 50%) rotate(-45deg);
+}
 
 #drupal-off-canvas-wrapper .ui-dialog-titlebar-close:after {
-      transform: translate(-50%, 50%) rotate(45deg);
-    }
+  transform: translate(-50%, 50%) rotate(45deg);
+}
 
 /* Hide the default jQuery UI dialog close button. */
 
 #drupal-off-canvas-wrapper .ui-dialog-titlebar-close .ui-icon {
-      display: none;
-    }
+  display: none;
+}
diff --git a/core/misc/dialog/off-canvas/css/utility.css b/core/misc/dialog/off-canvas/css/utility.css
index be6fd30f8a..bbba90845d 100644
--- a/core/misc/dialog/off-canvas/css/utility.css
+++ b/core/misc/dialog/off-canvas/css/utility.css
@@ -13,32 +13,32 @@
  */
 
 #drupal-off-canvas-wrapper .hidden {
-    display: none;
-  }
+  display: none;
+}
 
 #drupal-off-canvas-wrapper .visually-hidden {
-    position: absolute !important;
-    width: 1px !important;
-    height: 1px !important;
-  }
+  position: absolute !important;
+  width: 1px !important;
+  height: 1px !important;
+}
 
 #drupal-off-canvas-wrapper .visually-hidden {
-    overflow: hidden;
-    clip: rect(1px, 1px, 1px, 1px);
-    word-wrap: normal;
-  }
+  overflow: hidden;
+  clip: rect(1px, 1px, 1px, 1px);
+  word-wrap: normal;
+}
 
 #drupal-off-canvas-wrapper .visually-hidden.focusable:is(:active, :focus) {
-      position: static !important;
-      width: auto !important;
-      height: auto !important;
-    }
+  position: static !important;
+  width: auto !important;
+  height: auto !important;
+}
 
 #drupal-off-canvas-wrapper .visually-hidden.focusable:is(:active, :focus) {
-      overflow: visible;
-      clip: auto;
-    }
+  overflow: visible;
+  clip: auto;
+}
 
 #drupal-off-canvas-wrapper .invisible {
-    visibility: hidden;
-  }
+  visibility: hidden;
+}
diff --git a/core/misc/dialog/off-canvas/css/wrapper.css b/core/misc/dialog/off-canvas/css/wrapper.css
index f4bc192cf0..b6449522de 100644
--- a/core/misc/dialog/off-canvas/css/wrapper.css
+++ b/core/misc/dialog/off-canvas/css/wrapper.css
@@ -10,12 +10,6 @@
  *
  * @internal
  */
-[dir="ltr"] #drupal-off-canvas-wrapper {
-  border-left: solid var(--off-canvas-wrapper-border-width) var(--off-canvas-wrapper-border-color);
-}
-[dir="rtl"] #drupal-off-canvas-wrapper {
-  border-right: solid var(--off-canvas-wrapper-border-width) var(--off-canvas-wrapper-border-color);
-}
 #drupal-off-canvas-wrapper {
   --off-canvas-wrapper-box-shadow: 0 0 0.25rem 2px rgba(0, 0, 0, 0.3);
   --off-canvas-wrapper-border-color: #2d2d2d;
@@ -25,6 +19,7 @@
   overflow: auto;
   box-sizing: border-box;
   height: 100%;
+  border-inline-start: solid var(--off-canvas-wrapper-border-width) var(--off-canvas-wrapper-border-color);
   box-shadow: var(--off-canvas-wrapper-box-shadow);
 
   /*
@@ -32,23 +27,25 @@
    * dialog system uses to expand dialog widths.
    */
 }
+
 @media (max-width: 48rem) {
-#drupal-off-canvas-wrapper {
+  #drupal-off-canvas-wrapper {
     width: 100% !important;
-}
   }
+}
 /* When off-canvas dialog is at 100% width stop the body from scrolling */
 @media (max-width: 48rem) {
-body.js-off-canvas-dialog-open {
+  body.js-off-canvas-dialog-open {
     position: fixed;
-}
   }
+}
 /* This is a page level content wrapper that shrinks when off-canvas is open. */
 .dialog-off-canvas-main-canvas {
   transition: padding-right 0.7s ease, padding-left 0.7s ease, padding-top 0.3s ease;
 }
+
 @media (prefers-reduced-motion: reduce) {
-.dialog-off-canvas-main-canvas {
+  .dialog-off-canvas-main-canvas {
     transition: none;
-}
   }
+}
diff --git a/core/modules/action/tests/src/Unit/Menu/ActionLocalTasksTest.php b/core/modules/action/tests/src/Unit/Menu/ActionLocalTasksTest.php
index 70cc72db3f..04f1cf99c2 100644
--- a/core/modules/action/tests/src/Unit/Menu/ActionLocalTasksTest.php
+++ b/core/modules/action/tests/src/Unit/Menu/ActionLocalTasksTest.php
@@ -11,6 +11,9 @@
  */
 class ActionLocalTasksTest extends LocalTaskIntegrationTestBase {
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     $this->directoryList = ['action' => 'core/modules/action'];
     parent::setUp();
diff --git a/core/modules/basic_auth/basic_auth.services.yml b/core/modules/basic_auth/basic_auth.services.yml
index e1340489db..ef001aae45 100644
--- a/core/modules/basic_auth/basic_auth.services.yml
+++ b/core/modules/basic_auth/basic_auth.services.yml
@@ -5,7 +5,7 @@ services:
     tags:
       - { name: authentication_provider, provider_id: 'basic_auth', priority: 100 }
   basic_auth.page_cache_request_policy.disallow_basic_auth_requests:
-      class: Drupal\basic_auth\PageCache\DisallowBasicAuthRequests
-      public: false
-      tags:
-        - { name: page_cache_request_policy }
+    class: Drupal\basic_auth\PageCache\DisallowBasicAuthRequests
+    public: false
+    tags:
+      - { name: page_cache_request_policy }
diff --git a/core/modules/big_pipe/big_pipe.libraries.yml b/core/modules/big_pipe/big_pipe.libraries.yml
index f5774ef975..36d5f8e4dc 100644
--- a/core/modules/big_pipe/big_pipe.libraries.yml
+++ b/core/modules/big_pipe/big_pipe.libraries.yml
@@ -5,6 +5,5 @@ big_pipe:
   drupalSettings:
     bigPipePlaceholderIds: []
   dependencies:
-    - core/once
     - core/drupal.ajax
     - core/drupalSettings
diff --git a/core/modules/big_pipe/js/big_pipe.js b/core/modules/big_pipe/js/big_pipe.js
index 097a036472..ea4f6f8cfb 100644
--- a/core/modules/big_pipe/js/big_pipe.js
+++ b/core/modules/big_pipe/js/big_pipe.js
@@ -3,15 +3,39 @@
  * Renders BigPipe placeholders using Drupal's Ajax system.
  */
 
-(function (Drupal, drupalSettings) {
+((Drupal, drupalSettings) => {
   /**
-   * Maps textContent of <script type="application/vnd.drupal-ajax"> to an AJAX response.
+   * CSS selector for script elements to process on page load.
+   *
+   * @type {string}
+   */
+  const replacementsSelector = `script[data-big-pipe-replacement-for-placeholder-with-id]`;
+
+  /**
+   * Ajax object that will process all the BigPipe responses.
+   *
+   * Create a Drupal.Ajax object without associating an element, a progress
+   * indicator or a URL.
+   *
+   * @type {Drupal.Ajax}
+   */
+  const ajaxObject = Drupal.ajax({
+    url: '',
+    base: false,
+    element: false,
+    progress: false,
+  });
+
+  /**
+   * Maps textContent of <script type="application/vnd.drupal-ajax"> to an AJAX
+   * response.
    *
    * @param {string} content
-   *   The text content of a <script type="application/vnd.drupal-ajax"> DOM node.
+   *   The text content of a <script type="application/vnd.drupal-ajax"> DOM
+   *   node.
    * @return {Array|boolean}
-   *   The parsed Ajax response containing an array of Ajax commands, or false in
-   *   case the DOM node hasn't fully arrived yet.
+   *   The parsed Ajax response containing an array of Ajax commands, or false
+   *   in case the DOM node hasn't fully arrived yet.
    */
   function mapTextContentToAjaxResponse(content) {
     if (content === '') {
@@ -30,108 +54,85 @@
    *
    * These Ajax commands replace placeholders with HTML and load missing CSS/JS.
    *
-   * @param {HTMLScriptElement} placeholderReplacement
+   * @param {HTMLScriptElement} replacement
    *   Script tag created by BigPipe.
    */
-  function bigPipeProcessPlaceholderReplacement(placeholderReplacement) {
-    const placeholderId = placeholderReplacement.getAttribute(
-      'data-big-pipe-replacement-for-placeholder-with-id',
-    );
-    const content = placeholderReplacement.textContent.trim();
+  function processReplacement(replacement) {
+    const id = replacement.dataset.bigPipeReplacementForPlaceholderWithId;
+    // Because we use a mutation observer the content is guaranteed to be
+    // complete at this point.
+    const content = replacement.textContent.trim();
+
     // Ignore any placeholders that are not in the known placeholder list. Used
     // to avoid someone trying to XSS the site via the placeholdering mechanism.
-    if (
-      typeof drupalSettings.bigPipePlaceholderIds[placeholderId] !== 'undefined'
-    ) {
-      const response = mapTextContentToAjaxResponse(content);
-      // If we try to parse the content too early (when the JSON containing Ajax
-      // commands is still arriving), textContent will be empty or incomplete.
-      if (response === false) {
-        /**
-         * Mark as unprocessed so this will be retried later.
-         * @see bigPipeProcessDocument()
-         */
-        once.remove('big-pipe', placeholderReplacement);
-      } else {
-        // Create a Drupal.Ajax object without associating an element, a
-        // progress indicator or a URL.
-        const ajaxObject = Drupal.ajax({
-          url: '',
-          base: false,
-          element: false,
-          progress: false,
-        });
-        // Then, simulate an AJAX response having arrived, and let the Ajax
-        // system handle it.
-        ajaxObject.success(response, 'success');
-      }
+    if (typeof drupalSettings.bigPipePlaceholderIds[id] === 'undefined') {
+      return;
     }
-  }
 
-  // The frequency with which to check for newly arrived BigPipe placeholders.
-  // Hence 50 ms means we check 20 times per second. Setting this to 100 ms or
-  // more would cause the user to see content appear noticeably slower.
-  const interval = drupalSettings.bigPipeInterval || 50;
+    // Immediately remove the replacement to prevent it being processed twice.
+    delete drupalSettings.bigPipePlaceholderIds[id];
+
+    const response = mapTextContentToAjaxResponse(content);
 
-  // The internal ID to contain the watcher service.
-  let timeoutID;
+    if (response === false) {
+      return;
+    }
+
+    // Then, simulate an AJAX response having arrived, and let the Ajax system
+    // handle it.
+    ajaxObject.success(response, 'success');
+  }
 
   /**
-   * Processes a streamed HTML document receiving placeholder replacements.
-   *
-   * @param {HTMLDocument} context
-   *   The HTML document containing <script type="application/vnd.drupal-ajax">
-   *   tags generated by BigPipe.
+   * Check that the element is valid to process and process it.
    *
-   * @return {bool}
-   *   Returns true when processing has been finished and a stop signal has been
-   *   found.
+   * @param {HTMLElement} node
+   *  The node added to the body element.
    */
-  function bigPipeProcessDocument(context) {
-    // Make sure we have BigPipe-related scripts before processing further.
-    if (!context.querySelector('script[data-big-pipe-event="start"]')) {
-      return false;
+  function checkMutationAndProcess(node) {
+    if (
+      node.nodeType === Node.ELEMENT_NODE &&
+      node.nodeName === 'SCRIPT' &&
+      node.dataset &&
+      node.dataset.bigPipeReplacementForPlaceholderWithId
+    ) {
+      processReplacement(node);
     }
+  }
 
-    // Attach Drupal behaviors early, if possible.
-    once('big-pipe-early-behaviors', 'body', context).forEach((el) => {
-      Drupal.attachBehaviors(el);
+  /**
+   * Handles the mutation callback.
+   *
+   * @param {MutationRecord[]} mutations
+   *  The list of mutations registered by the browser.
+   */
+  function processMutations(mutations) {
+    mutations.forEach(({ addedNodes }) => {
+      addedNodes.forEach(checkMutationAndProcess);
     });
+  }
 
-    once(
-      'big-pipe',
-      'script[data-big-pipe-replacement-for-placeholder-with-id]',
-      context,
-    ).forEach(bigPipeProcessPlaceholderReplacement);
-
-    // If we see the stop signal, clear the timeout: all placeholder
-    // replacements are guaranteed to be received and processed.
-    if (context.querySelector('script[data-big-pipe-event="stop"]')) {
-      if (timeoutID) {
-        clearTimeout(timeoutID);
-      }
-      return true;
-    }
+  const observer = new MutationObserver(processMutations);
 
-    return false;
-  }
+  // Attach behaviors early, if possible.
+  Drupal.attachBehaviors(document.body);
 
-  function bigPipeProcess() {
-    timeoutID = setTimeout(() => {
-      if (!bigPipeProcessDocument(document)) {
-        bigPipeProcess();
-      }
-    }, interval);
-  }
+  // If loaded asynchronously there might already be replacement elements
+  // in the DOM before the mutation observer is started.
+  document.querySelectorAll(replacementsSelector).forEach(processReplacement);
 
-  bigPipeProcess();
+  // Start observing the body element for new children.
+  observer.observe(document.body, { childList: true });
 
-  // If something goes wrong, make sure everything is cleaned up and has had a
-  // chance to be processed with everything loaded.
-  window.addEventListener('load', () => {
-    if (timeoutID) {
-      clearTimeout(timeoutID);
+  // As soon as the document is loaded, no more replacements will be added.
+  // Immediately fetch and process all pending mutations and stop the observer.
+  window.addEventListener('DOMContentLoaded', () => {
+    const mutations = observer.takeRecords();
+    observer.disconnect();
+    if (mutations.length) {
+      processMutations(mutations);
     }
-    bigPipeProcessDocument(document);
+    // No more mutations will be processed, remove the leftover Ajax object.
+    Drupal.ajax.instances[ajaxObject.instanceIndex] = null;
   });
 })(Drupal, drupalSettings);
diff --git a/core/modules/big_pipe/tests/src/Functional/BigPipeTest.php b/core/modules/big_pipe/tests/src/Functional/BigPipeTest.php
index e7e1dbc86c..33900bdea4 100644
--- a/core/modules/big_pipe/tests/src/Functional/BigPipeTest.php
+++ b/core/modules/big_pipe/tests/src/Functional/BigPipeTest.php
@@ -376,13 +376,13 @@ protected function assertBigPipePlaceholders(array $expected_big_pipe_placeholde
       $placeholder_positions[$pos] = $big_pipe_placeholder_id;
       // Verify expected placeholder replacement.
       $expected_placeholder_replacement = '<script type="application/vnd.drupal-ajax" data-big-pipe-replacement-for-placeholder-with-id="' . $big_pipe_placeholder_id . '">';
-      $result = $this->xpath('//script[@data-big-pipe-replacement-for-placeholder-with-id=:id]', [':id' => Html::decodeEntities($big_pipe_placeholder_id)]);
+      $xpath = '//script[@data-big-pipe-replacement-for-placeholder-with-id="' . Html::decodeEntities($big_pipe_placeholder_id) . '"]';
       if ($expected_ajax_response === NULL) {
-        $this->assertCount(0, $result);
+        $this->assertSession()->elementNotExists('xpath', $xpath);
         $this->assertSession()->responseNotContains($expected_placeholder_replacement);
         continue;
       }
-      $this->assertEquals($expected_ajax_response, trim($result[0]->getText()));
+      $this->assertSession()->elementTextContains('xpath', $xpath, $expected_ajax_response);
       $this->assertSession()->responseContains($expected_placeholder_replacement);
       $pos = strpos($this->getSession()->getPage()->getContent(), $expected_placeholder_replacement);
       $placeholder_replacement_positions[$pos] = $big_pipe_placeholder_id;
@@ -414,9 +414,9 @@ protected function assertBigPipePlaceholders(array $expected_big_pipe_placeholde
     array_unshift($expected_stream_order, BigPipe::START_SIGNAL);
     array_push($expected_stream_order, BigPipe::STOP_SIGNAL);
     $actual_stream_order = $placeholder_replacement_positions + [
-        $start_signal_position => BigPipe::START_SIGNAL,
-        $stop_signal_position => BigPipe::STOP_SIGNAL,
-      ];
+      $start_signal_position => BigPipe::START_SIGNAL,
+      $stop_signal_position => BigPipe::STOP_SIGNAL,
+    ];
     ksort($actual_stream_order, SORT_NUMERIC);
     $this->assertEquals($expected_stream_order, array_values($actual_stream_order));
   }
diff --git a/core/modules/block/block.module b/core/modules/block/block.module
index 062a6fa9c7..11bb4492b5 100644
--- a/core/modules/block/block.module
+++ b/core/modules/block/block.module
@@ -246,6 +246,7 @@ function template_preprocess_block(&$variables) {
   $variables['plugin_id'] = $variables['elements']['#plugin_id'];
   $variables['base_plugin_id'] = $variables['elements']['#base_plugin_id'];
   $variables['derivative_plugin_id'] = $variables['elements']['#derivative_plugin_id'];
+  $variables['in_preview'] = $variables['elements']['#in_preview'] ?? FALSE;
   $variables['label'] = !empty($variables['configuration']['label_display']) ? $variables['configuration']['label'] : '';
   $variables['content'] = $variables['elements']['content'];
   // A block's label is configuration: it is static. Allow dynamic labels to be
diff --git a/core/modules/block/src/Plugin/migrate/process/BlockVisibility.php b/core/modules/block/src/Plugin/migrate/process/BlockVisibility.php
index 4d7b19cd55..cb365b9550 100644
--- a/core/modules/block/src/Plugin/migrate/process/BlockVisibility.php
+++ b/core/modules/block/src/Plugin/migrate/process/BlockVisibility.php
@@ -34,8 +34,9 @@ class BlockVisibility extends ProcessPluginBase implements ContainerFactoryPlugi
   protected $migrateLookup;
 
   /**
-   * Whether or not to skip blocks that use PHP for visibility. Only applies
-   * if the PHP module is not enabled.
+   * Whether or not to skip blocks that use PHP for visibility.
+   *
+   * Only applies if the PHP module is not enabled.
    *
    * @var bool
    */
diff --git a/core/modules/block/templates/block.html.twig b/core/modules/block/templates/block.html.twig
index d880475255..8fc22725d5 100644
--- a/core/modules/block/templates/block.html.twig
+++ b/core/modules/block/templates/block.html.twig
@@ -11,6 +11,7 @@
  *   - label_display: The display settings for the label.
  *   - provider: The module or other provider that provided this block plugin.
  *   - Block plugin specific settings will also be stored here.
+ * - in_preview: Whether the plugin is being rendered in preview mode.
  * - content: The content of this block.
  * - attributes: array of HTML attributes populated by modules, intended to
  *   be added to the main container tag of this template.
diff --git a/core/modules/block/tests/src/Functional/AssertBlockAppearsTrait.php b/core/modules/block/tests/src/Functional/AssertBlockAppearsTrait.php
index b229c6f23c..f78b1404d7 100644
--- a/core/modules/block/tests/src/Functional/AssertBlockAppearsTrait.php
+++ b/core/modules/block/tests/src/Functional/AssertBlockAppearsTrait.php
@@ -18,8 +18,7 @@ trait AssertBlockAppearsTrait {
    *   The block entity to find on the page.
    */
   protected function assertBlockAppears(Block $block) {
-    $result = $this->findBlockInstance($block);
-    $this->assertNotEmpty($result, sprintf('The block %s should appear on the page.', $block->id()));
+    $this->assertSession()->elementExists('xpath', "//div[@id = 'block-{$block->id()}']");
   }
 
   /**
@@ -29,8 +28,7 @@ protected function assertBlockAppears(Block $block) {
    *   The block entity to find on the page.
    */
   protected function assertNoBlockAppears(Block $block) {
-    $result = $this->findBlockInstance($block);
-    $this->assertEmpty($result, sprintf('The block %s should not appear on the page.', $block->id()));
+    $this->assertSession()->elementNotExists('xpath', "//div[@id = 'block-{$block->id()}']");
   }
 
   /**
@@ -41,8 +39,14 @@ protected function assertNoBlockAppears(Block $block) {
    *
    * @return array
    *   The result from the xpath query.
+   *
+   * @deprecated in drupal:9.5.0 and is removed from drupal:11.0.0. There is no
+   *   replacement.
+   *
+   * @see https://www.drupal.org/node/3293310
    */
   protected function findBlockInstance(Block $block) {
+    @trigger_error(__METHOD__ . '() is deprecated in drupal:9.5.0 and is removed from drupal:11.0.0. There is no replacement. See https://www.drupal.org/node/3293310', E_USER_DEPRECATED);
     return $this->xpath('//div[@id = :id]', [':id' => 'block-' . $block->id()]);
   }
 
diff --git a/core/modules/block/tests/src/Functional/BlockCacheTest.php b/core/modules/block/tests/src/Functional/BlockCacheTest.php
index 397d89e5dd..68c0c0a108 100644
--- a/core/modules/block/tests/src/Functional/BlockCacheTest.php
+++ b/core/modules/block/tests/src/Functional/BlockCacheTest.php
@@ -52,6 +52,9 @@ class BlockCacheTest extends BrowserTestBase {
    */
   protected $block;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/block/tests/src/Functional/BlockHiddenRegionTest.php b/core/modules/block/tests/src/Functional/BlockHiddenRegionTest.php
index 8a506ce74b..06cbe8b237 100644
--- a/core/modules/block/tests/src/Functional/BlockHiddenRegionTest.php
+++ b/core/modules/block/tests/src/Functional/BlockHiddenRegionTest.php
@@ -29,6 +29,9 @@ class BlockHiddenRegionTest extends BrowserTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
@@ -37,8 +40,7 @@ protected function setUp(): void {
       'administer blocks',
       'administer themes',
       'search content',
-      ]
-    );
+    ]);
 
     $this->drupalLogin($this->adminUser);
     $this->drupalPlaceBlock('search_form_block');
diff --git a/core/modules/block/tests/src/Functional/BlockHookOperationTest.php b/core/modules/block/tests/src/Functional/BlockHookOperationTest.php
index e66c892430..cb40307922 100644
--- a/core/modules/block/tests/src/Functional/BlockHookOperationTest.php
+++ b/core/modules/block/tests/src/Functional/BlockHookOperationTest.php
@@ -23,6 +23,9 @@ class BlockHookOperationTest extends BrowserTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/block/tests/src/Functional/BlockHtmlTest.php b/core/modules/block/tests/src/Functional/BlockHtmlTest.php
index 132bf0242c..07af383690 100644
--- a/core/modules/block/tests/src/Functional/BlockHtmlTest.php
+++ b/core/modules/block/tests/src/Functional/BlockHtmlTest.php
@@ -23,6 +23,9 @@ class BlockHtmlTest extends BrowserTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
@@ -48,8 +51,7 @@ public function testHtml() {
     $this->assertSession()->elementExists('xpath', '//div[@id="block-test-html-block" and @data-custom-attribute="foo"]');
 
     // Ensure expected markup for a menu block.
-    $elements = $this->xpath('//nav[@id="block-test-menu-block"]/ul/li');
-    $this->assertNotEmpty($elements, 'The proper block markup was found.');
+    $this->assertSession()->elementExists('xpath', '//nav[@id="block-test-menu-block"]/ul/li');
   }
 
 }
diff --git a/core/modules/block/tests/src/Functional/BlockInvalidRegionTest.php b/core/modules/block/tests/src/Functional/BlockInvalidRegionTest.php
index 032707a7fd..f11dc77fd3 100644
--- a/core/modules/block/tests/src/Functional/BlockInvalidRegionTest.php
+++ b/core/modules/block/tests/src/Functional/BlockInvalidRegionTest.php
@@ -25,6 +25,9 @@ class BlockInvalidRegionTest extends BrowserTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     // Create an admin user.
diff --git a/core/modules/block/tests/src/Functional/BlockLanguageCacheTest.php b/core/modules/block/tests/src/Functional/BlockLanguageCacheTest.php
index c72e72f315..9bfd99dd7c 100644
--- a/core/modules/block/tests/src/Functional/BlockLanguageCacheTest.php
+++ b/core/modules/block/tests/src/Functional/BlockLanguageCacheTest.php
@@ -31,6 +31,9 @@ class BlockLanguageCacheTest extends BrowserTestBase {
    */
   protected $langcodes = [];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/block/tests/src/Functional/BlockLanguageTest.php b/core/modules/block/tests/src/Functional/BlockLanguageTest.php
index 717a047b2f..7020fd5df9 100644
--- a/core/modules/block/tests/src/Functional/BlockLanguageTest.php
+++ b/core/modules/block/tests/src/Functional/BlockLanguageTest.php
@@ -30,6 +30,9 @@ class BlockLanguageTest extends BrowserTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
@@ -135,8 +138,7 @@ public function testLanguageBlockVisibilityLanguageDelete() {
     // Ensure that the block visibility for language is gone from the UI.
     $this->drupalGet('admin/structure/block');
     $this->clickLink('Configure');
-    $elements = $this->xpath('//details[@id="edit-visibility-language"]');
-    $this->assertEmpty($elements);
+    $this->assertSession()->elementNotExists('xpath', '//details[@id="edit-visibility-language"]');
   }
 
   /**
diff --git a/core/modules/block/tests/src/Functional/BlockRenderOrderTest.php b/core/modules/block/tests/src/Functional/BlockRenderOrderTest.php
index 1bf5953ab4..455aa6ca57 100644
--- a/core/modules/block/tests/src/Functional/BlockRenderOrderTest.php
+++ b/core/modules/block/tests/src/Functional/BlockRenderOrderTest.php
@@ -24,6 +24,9 @@ class BlockRenderOrderTest extends BrowserTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     // Create a test user.
diff --git a/core/modules/block/tests/src/Functional/BlockSystemBrandingTest.php b/core/modules/block/tests/src/Functional/BlockSystemBrandingTest.php
index 56615669da..abf78ae3e8 100644
--- a/core/modules/block/tests/src/Functional/BlockSystemBrandingTest.php
+++ b/core/modules/block/tests/src/Functional/BlockSystemBrandingTest.php
@@ -44,12 +44,11 @@ public function testSystemBrandingSettings() {
 
     // Set default block settings.
     $this->drupalGet('');
-    $site_logo_element = $this->xpath($site_logo_xpath);
-    $site_name_element = $this->xpath($site_name_xpath);
 
     // Test that all branding elements are displayed.
-    $this->assertNotEmpty($site_logo_element, 'The branding block logo was found.');
-    $this->assertNotEmpty($site_name_element, 'The branding block site name was found.');
+    $this->assertSession()->elementExists('xpath', $site_logo_xpath);
+    $this->assertSession()->elementExists('xpath', $site_name_xpath);
+    $this->assertSession()->elementExists('xpath', $site_slogan_xpath);
     $this->assertSession()->elementTextContains('xpath', $site_slogan_xpath, 'Community plumbing');
     $this->assertSession()->responseHeaderContains('X-Drupal-Cache-Tags', 'config:system.site');
     // Just this once, assert that the img src of the logo is as expected.
@@ -61,18 +60,18 @@ public function testSystemBrandingSettings() {
       ->set('slogan', '<script>alert("Community carpentry");</script>')
       ->save();
     $this->drupalGet('');
-    $this->assertSession()->elementTextContains('xpath', $site_slogan_xpath, 'alert("Community carpentry");');
+    $this->assertSession()->elementTextEquals('xpath', $site_slogan_xpath, 'alert("Community carpentry");');
     $this->assertSession()->responseNotContains('<script>alert("Community carpentry");</script>');
+
     // Turn just the logo off.
     $this->config('block.block.site-branding')
       ->set('settings.use_site_logo', 0)
       ->save();
     $this->drupalGet('');
-    $site_logo_element = $this->xpath($site_logo_xpath);
-    $site_name_element = $this->xpath($site_name_xpath);
+
     // Re-test all branding elements.
-    $this->assertEmpty($site_logo_element, 'The branding block logo was disabled.');
-    $this->assertNotEmpty($site_name_element, 'The branding block site name was found.');
+    $this->assertSession()->elementNotExists('xpath', $site_logo_xpath);
+    $this->assertSession()->elementExists('xpath', $site_name_xpath);
     $this->assertSession()->elementTextContains('xpath', $site_slogan_xpath, 'alert("Community carpentry");');
     $this->assertSession()->responseNotContains('<script>alert("Community carpentry");</script>');
     $this->assertSession()->responseHeaderContains('X-Drupal-Cache-Tags', 'config:system.site');
@@ -83,11 +82,10 @@ public function testSystemBrandingSettings() {
       ->set('settings.use_site_name', 0)
       ->save();
     $this->drupalGet('');
-    $site_logo_element = $this->xpath($site_logo_xpath);
-    $site_name_element = $this->xpath($site_name_xpath);
+
     // Re-test all branding elements.
-    $this->assertNotEmpty($site_logo_element, 'The branding block logo was found.');
-    $this->assertEmpty($site_name_element, 'The branding block site name was disabled.');
+    $this->assertSession()->elementExists('xpath', $site_logo_xpath);
+    $this->assertSession()->elementNotExists('xpath', $site_name_xpath);
     $this->assertSession()->elementTextContains('xpath', $site_slogan_xpath, 'alert("Community carpentry");');
     $this->assertSession()->responseNotContains('<script>alert("Community carpentry");</script>');
     $this->assertSession()->responseHeaderContains('X-Drupal-Cache-Tags', 'config:system.site');
@@ -98,11 +96,10 @@ public function testSystemBrandingSettings() {
       ->set('settings.use_site_slogan', 0)
       ->save();
     $this->drupalGet('');
-    $site_logo_element = $this->xpath($site_logo_xpath);
-    $site_name_element = $this->xpath($site_name_xpath);
+
     // Re-test all branding elements.
-    $this->assertNotEmpty($site_logo_element, 'The branding block logo was found.');
-    $this->assertNotEmpty($site_name_element, 'The branding block site name was found.');
+    $this->assertSession()->elementExists('xpath', $site_logo_xpath);
+    $this->assertSession()->elementExists('xpath', $site_name_xpath);
     $this->assertSession()->elementTextNotContains('xpath', $site_slogan_xpath, 'Community carpentry');
     $this->assertSession()->responseHeaderContains('X-Drupal-Cache-Tags', 'config:system.site');
 
@@ -112,11 +109,10 @@ public function testSystemBrandingSettings() {
       ->set('settings.use_site_slogan', 0)
       ->save();
     $this->drupalGet('');
-    $site_logo_element = $this->xpath($site_logo_xpath);
-    $site_name_element = $this->xpath($site_name_xpath);
+
     // Re-test all branding elements.
-    $this->assertNotEmpty($site_logo_element, 'The branding block logo was found.');
-    $this->assertEmpty($site_name_element, 'The branding block site name was disabled.');
+    $this->assertSession()->elementExists('xpath', $site_logo_xpath);
+    $this->assertSession()->elementNotExists('xpath', $site_name_xpath);
     $this->assertSession()->elementTextNotContains('xpath', $site_slogan_xpath, 'Community carpentry');
     $this->assertSession()->responseHeaderContains('X-Drupal-Cache-Tags', 'config:system.site');
   }
diff --git a/core/modules/block/tests/src/Functional/BlockUiTest.php b/core/modules/block/tests/src/Functional/BlockUiTest.php
index b5435719e1..b60818f2d7 100644
--- a/core/modules/block/tests/src/Functional/BlockUiTest.php
+++ b/core/modules/block/tests/src/Functional/BlockUiTest.php
@@ -54,6 +54,9 @@ class BlockUiTest extends BrowserTestBase {
    */
   protected $adminUser;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     // Create and log in an administrative user.
@@ -113,14 +116,12 @@ public function testBlockAdminUiPage() {
     // Visit the blocks admin ui.
     $this->drupalGet('admin/structure/block');
     // Look for the blocks table.
-    $blocks_table = $this->xpath("//table[@id='blocks']");
-    $this->assertNotEmpty($blocks_table, 'The blocks table is being rendered.');
+    $this->assertSession()->elementExists('xpath', "//table[@id='blocks']");
     // Look for test blocks in the table.
     foreach ($this->blockValues as $delta => $values) {
       $block = $this->blocks[$delta];
       $label = $block->label();
-      $element = $this->xpath('//*[@id="blocks"]/tbody/tr[' . $values['tr'] . ']/td[1]/text()');
-      $this->assertEquals($element[0]->getText(), $label, 'The "' . $label . '" block title is set inside the ' . $values['settings']['region'] . ' region.');
+      $this->assertSession()->elementTextEquals('xpath', '//*[@id="blocks"]/tbody/tr[' . $values['tr'] . ']/td[1]/text()', $label);
       // Look for a test block region select form element.
       $this->assertSession()->fieldExists('blocks[' . $values['settings']['id'] . '][region]');
       // Move the test block to the header region.
@@ -141,8 +142,7 @@ public function testBlockAdminUiPage() {
     // Add a block with a machine name the same as a region name.
     $this->drupalPlaceBlock('system_powered_by_block', ['region' => 'header', 'id' => 'header']);
     $this->drupalGet('admin/structure/block');
-    $element = $this->xpath('//tr[contains(@class, :class)]', [':class' => 'region-title-header']);
-    $this->assertNotEmpty($element);
+    $this->assertSession()->elementExists('xpath', '//tr[contains(@class, "region-title-header")]');
 
     // Ensure hidden themes do not appear in the UI. Enable another non base
     // theme and place the local tasks block.
@@ -176,17 +176,9 @@ public function testBlockAdminUiPage() {
    * Tests the block categories on the listing page.
    */
   public function testCandidateBlockList() {
-    $arguments = [
-      ':title' => 'Display message',
-      ':category' => 'Block test',
-      ':href' => 'admin/structure/block/add/test_block_instantiation/stark',
-    ];
-    $pattern = '//tr[.//td/div[text()=:title] and .//td[text()=:category] and .//td//a[contains(@href, :href)]]';
-
     $this->drupalGet('admin/structure/block');
     $this->clickLink('Place block');
-    $elements = $this->xpath($pattern, $arguments);
-    $this->assertNotEmpty($elements, 'The test block appears in the category for its module.');
+    $this->assertSession()->elementExists('xpath', '//tr[.//td/div[text()="Display message"] and .//td[text()="Block test"] and .//td//a[contains(@href, "admin/structure/block/add/test_block_instantiation/stark")]]');
 
     // Trigger the custom category addition in block_test_block_alter().
     $this->container->get('state')->set('block_test_info_alter', TRUE);
@@ -194,9 +186,7 @@ public function testCandidateBlockList() {
 
     $this->drupalGet('admin/structure/block');
     $this->clickLink('Place block');
-    $arguments[':category'] = 'Custom category';
-    $elements = $this->xpath($pattern, $arguments);
-    $this->assertNotEmpty($elements, 'The test block appears in a custom category controlled by block_test_block_alter().');
+    $this->assertSession()->elementExists('xpath', '//tr[.//td/div[text()="Display message"] and .//td[text()="Custom category"] and .//td//a[contains(@href, "admin/structure/block/add/test_block_instantiation/stark")]]');
   }
 
   /**
@@ -222,17 +212,10 @@ public function testContextAwareBlocks() {
     $this->assertSession()->responseNotContains($expected_text);
 
     $block_url = 'admin/structure/block/add/test_context_aware/stark';
-    $arguments = [
-      ':title' => 'Test context-aware block',
-      ':category' => 'Block test',
-      ':href' => $block_url,
-    ];
-    $pattern = '//tr[.//td/div[text()=:title] and .//td[text()=:category] and .//td//a[contains(@href, :href)]]';
 
     $this->drupalGet('admin/structure/block');
     $this->clickLink('Place block');
-    $elements = $this->xpath($pattern, $arguments);
-    $this->assertNotEmpty($elements, 'The context-aware test block appears.');
+    $this->assertSession()->elementExists('xpath', '//tr[.//td/div[text()="Test context-aware block"] and .//td[text()="Block test"] and .//td//a[contains(@href, "' . $block_url . '")]]');
     $definition = \Drupal::service('plugin.manager.block')->getDefinition('test_context_aware');
     $this->assertNotEmpty($definition, 'The context-aware test block exists.');
     $edit = [
@@ -363,10 +346,7 @@ public function testBlockValidateErrors() {
     ], 'Save block');
 
     $this->assertSession()->statusMessageContains('Only digits are allowed', 'error');
-
-    $error_class_pattern = '//div[contains(@class,"form-item-settings-digits")]/input[contains(@class,"error")]';
-    $error_class = $this->xpath($error_class_pattern);
-    $this->assertNotEmpty($error_class, 'Plugin error class found in parent form.');
+    $this->assertSession()->elementExists('xpath', '//div[contains(@class,"form-item-settings-digits")]/input[contains(@class,"error")]');
   }
 
   /**
diff --git a/core/modules/block/tests/src/Kernel/BlockStorageUnitTest.php b/core/modules/block/tests/src/Kernel/BlockStorageUnitTest.php
index 043eaf9e81..9f03b1469c 100644
--- a/core/modules/block/tests/src/Kernel/BlockStorageUnitTest.php
+++ b/core/modules/block/tests/src/Kernel/BlockStorageUnitTest.php
@@ -30,6 +30,9 @@ class BlockStorageUnitTest extends KernelTestBase {
    */
   protected $controller;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/block/tests/src/Unit/BlockConfigEntityUnitTest.php b/core/modules/block/tests/src/Unit/BlockConfigEntityUnitTest.php
index 77a8d59798..f26901fc7b 100644
--- a/core/modules/block/tests/src/Unit/BlockConfigEntityUnitTest.php
+++ b/core/modules/block/tests/src/Unit/BlockConfigEntityUnitTest.php
@@ -66,13 +66,13 @@ protected function setUp(): void {
     $this->entityType = $this->createMock('\Drupal\Core\Entity\EntityTypeInterface');
     $this->entityType->expects($this->any())
       ->method('getProvider')
-      ->will($this->returnValue('block'));
+      ->willReturn('block');
 
     $this->entityTypeManager = $this->createMock(EntityTypeManagerInterface::class);
     $this->entityTypeManager->expects($this->any())
       ->method('getDefinition')
       ->with($this->entityTypeId)
-      ->will($this->returnValue($this->entityType));
+      ->willReturn($this->entityType);
 
     $this->uuid = $this->createMock('\Drupal\Component\Uuid\UuidInterface');
 
@@ -111,13 +111,13 @@ public function testCalculateDependencies() {
     $plugin_collection->expects($this->atLeastOnce())
       ->method('get')
       ->with($instance_id)
-      ->will($this->returnValue($instance));
+      ->willReturn($instance);
     $plugin_collection->addInstanceId($instance_id);
 
     // Return the mocked plugin collection.
     $entity->expects($this->once())
       ->method('getPluginCollections')
-      ->will($this->returnValue([$plugin_collection]));
+      ->willReturn([$plugin_collection]);
 
     $dependencies = $entity->calculateDependencies()->getDependencies();
     $this->assertContains('test', $dependencies['module']);
diff --git a/core/modules/block/tests/src/Unit/BlockFormTest.php b/core/modules/block/tests/src/Unit/BlockFormTest.php
index 249e18da27..fdaee38e1e 100644
--- a/core/modules/block/tests/src/Unit/BlockFormTest.php
+++ b/core/modules/block/tests/src/Unit/BlockFormTest.php
@@ -79,7 +79,7 @@ protected function setUp(): void {
     $this->themeHandler = $this->createMock('Drupal\Core\Extension\ThemeHandlerInterface');
     $this->entityTypeManager->expects($this->any())
       ->method('getStorage')
-      ->will($this->returnValue($this->storage));
+      ->willReturn($this->storage);
 
     $this->pluginFormFactory = $this->prophesize(PluginFormFactoryInterface::class);
   }
@@ -99,14 +99,14 @@ protected function getBlockMockWithMachineName($machine_name) {
       ->getMock();
     $plugin->expects($this->any())
       ->method('getMachineNameSuggestion')
-      ->will($this->returnValue($machine_name));
+      ->willReturn($machine_name);
 
     $block = $this->getMockBuilder(Block::class)
       ->disableOriginalConstructor()
       ->getMock();
     $block->expects($this->any())
       ->method('getPlugin')
-      ->will($this->returnValue($plugin));
+      ->willReturn($plugin);
     return $block;
   }
 
@@ -126,15 +126,15 @@ public function testGetUniqueMachineName() {
     $query = $this->createMock('Drupal\Core\Entity\Query\QueryInterface');
     $query->expects($this->exactly(5))
       ->method('condition')
-      ->will($this->returnValue($query));
+      ->willReturn($query);
 
     $query->expects($this->exactly(5))
       ->method('execute')
-      ->will($this->returnValue(['test', 'other_test', 'other_test_1', 'other_test_2']));
+      ->willReturn(['test', 'other_test', 'other_test_1', 'other_test_2']);
 
     $this->storage->expects($this->exactly(5))
       ->method('getQuery')
-      ->will($this->returnValue($query));
+      ->willReturn($query);
 
     $block_form_controller = new BlockForm($this->entityTypeManager, $this->conditionManager, $this->contextRepository, $this->language, $this->themeHandler, $this->pluginFormFactory->reveal());
 
diff --git a/core/modules/block/tests/src/Unit/BlockRepositoryTest.php b/core/modules/block/tests/src/Unit/BlockRepositoryTest.php
index c325a5d0db..9a13978fe1 100644
--- a/core/modules/block/tests/src/Unit/BlockRepositoryTest.php
+++ b/core/modules/block/tests/src/Unit/BlockRepositoryTest.php
@@ -56,7 +56,7 @@ protected function setUp(): void {
     $theme_manager = $this->createMock('Drupal\Core\Theme\ThemeManagerInterface');
     $theme_manager->expects($this->atLeastOnce())
       ->method('getActiveTheme')
-      ->will($this->returnValue($active_theme));
+      ->willReturn($active_theme);
 
     $this->contextHandler = $this->createMock('Drupal\Core\Plugin\Context\ContextHandlerInterface');
     $this->blockStorage = $this->createMock('Drupal\Core\Entity\EntityStorageInterface');
@@ -82,7 +82,7 @@ public function testGetVisibleBlocksPerRegion(array $blocks_config, array $expec
       $block = $this->createMock('Drupal\block\BlockInterface');
       $block->expects($this->once())
         ->method('access')
-        ->will($this->returnValue($block_config[0]));
+        ->willReturn($block_config[0]);
       $block->expects($block_config[0] ? $this->atLeastOnce() : $this->never())
         ->method('getRegion')
         ->willReturn($block_config[1]);
diff --git a/core/modules/block/tests/src/Unit/CategoryAutocompleteTest.php b/core/modules/block/tests/src/Unit/CategoryAutocompleteTest.php
index 1814b636d1..817c88bd5a 100644
--- a/core/modules/block/tests/src/Unit/CategoryAutocompleteTest.php
+++ b/core/modules/block/tests/src/Unit/CategoryAutocompleteTest.php
@@ -20,11 +20,14 @@ class CategoryAutocompleteTest extends UnitTestCase {
    */
   protected $autocompleteController;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     $block_manager = $this->createMock('Drupal\Core\Block\BlockManagerInterface');
     $block_manager->expects($this->any())
       ->method('getCategories')
-      ->will($this->returnValue(['Comment', 'Node', 'None & Such', 'User']));
+      ->willReturn(['Comment', 'Node', 'None & Such', 'User']);
 
     $this->autocompleteController = new CategoryAutocompleteController($block_manager);
   }
diff --git a/core/modules/block/tests/src/Unit/Menu/BlockLocalTasksTest.php b/core/modules/block/tests/src/Unit/Menu/BlockLocalTasksTest.php
index 6be2812ba3..0141e107e8 100644
--- a/core/modules/block/tests/src/Unit/Menu/BlockLocalTasksTest.php
+++ b/core/modules/block/tests/src/Unit/Menu/BlockLocalTasksTest.php
@@ -12,6 +12,9 @@
  */
 class BlockLocalTasksTest extends LocalTaskIntegrationTestBase {
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     $this->directoryList = ['block' => 'core/modules/block'];
     parent::setUp();
@@ -43,7 +46,7 @@ protected function setUp(): void {
     $theme_handler = $this->createMock('Drupal\Core\Extension\ThemeHandlerInterface');
     $theme_handler->expects($this->any())
       ->method('listInfo')
-      ->will($this->returnValue($themes));
+      ->willReturn($themes);
     $theme_handler->expects($this->any())
       ->method('hasUi')
       ->willReturnMap([
diff --git a/core/modules/block/tests/src/Unit/Plugin/DisplayVariant/BlockPageVariantTest.php b/core/modules/block/tests/src/Unit/Plugin/DisplayVariant/BlockPageVariantTest.php
index 4528737fe2..946387c7c2 100644
--- a/core/modules/block/tests/src/Unit/Plugin/DisplayVariant/BlockPageVariantTest.php
+++ b/core/modules/block/tests/src/Unit/Plugin/DisplayVariant/BlockPageVariantTest.php
@@ -219,7 +219,7 @@ public function testBuild(array $blocks_config, $visible_block_count, array $exp
     }
     $this->blockViewBuilder->expects($this->exactly($visible_block_count))
       ->method('view')
-      ->will($this->returnValue([]));
+      ->willReturn([]);
     $this->blockRepository->expects($this->once())
       ->method('getVisibleBlocksPerRegion')
       ->willReturnCallback(function (&$cacheable_metadata) use ($blocks) {
diff --git a/core/modules/block_content/block_content.permissions.yml b/core/modules/block_content/block_content.permissions.yml
new file mode 100644
index 0000000000..18bcddd199
--- /dev/null
+++ b/core/modules/block_content/block_content.permissions.yml
@@ -0,0 +1,2 @@
+permission_callbacks:
+  - \Drupal\block_content\BlockContentPermissions::blockTypePermissions
diff --git a/core/modules/block_content/src/BlockContentAccessControlHandler.php b/core/modules/block_content/src/BlockContentAccessControlHandler.php
index 5ea6cfce1f..1a6a31abd0 100644
--- a/core/modules/block_content/src/BlockContentAccessControlHandler.php
+++ b/core/modules/block_content/src/BlockContentAccessControlHandler.php
@@ -54,13 +54,22 @@ public static function createInstance(ContainerInterface $container, EntityTypeI
    * {@inheritdoc}
    */
   protected function checkAccess(EntityInterface $entity, $operation, AccountInterface $account) {
+    // Allow view and update access to user with the 'edit any (type) block
+    // content' permission or the 'administer blocks' permission.
+    $edit_any_permission = 'edit any ' . $entity->bundle() . ' block content';
     if ($operation === 'view') {
       $access = AccessResult::allowedIf($entity->isPublished())
-        ->orIf(AccessResult::allowedIfHasPermission($account, 'administer blocks'));
+        ->orIf(AccessResult::allowedIfHasPermission($account, 'administer blocks'))
+        ->orIf(AccessResult::allowedIfHasPermission($account, $edit_any_permission));
+    }
+    elseif ($operation === 'update') {
+      $access = AccessResult::allowedIfHasPermission($account, 'administer blocks')
+        ->orIf(AccessResult::allowedIfHasPermission($account, $edit_any_permission));
     }
     else {
       $access = parent::checkAccess($entity, $operation, $account);
     }
+
     // Add the entity as a cacheable dependency because access will at least be
     // determined by whether the block is reusable.
     $access->addCacheableDependency($entity);
diff --git a/core/modules/block_content/src/BlockContentPermissions.php b/core/modules/block_content/src/BlockContentPermissions.php
new file mode 100644
index 0000000000..e6be17d0aa
--- /dev/null
+++ b/core/modules/block_content/src/BlockContentPermissions.php
@@ -0,0 +1,46 @@
+<?php
+
+namespace Drupal\block_content;
+
+use Drupal\block_content\Entity\BlockContentType;
+use Drupal\Core\Entity\BundlePermissionHandlerTrait;
+use Drupal\Core\StringTranslation\StringTranslationTrait;
+
+/**
+ * Provide dynamic permissions for blocks of different types.
+ */
+class BlockContentPermissions {
+
+  use StringTranslationTrait;
+  use BundlePermissionHandlerTrait;
+
+  /**
+   * Build permissions for each block type.
+   *
+   * @return array
+   *   The block type permissions.
+   */
+  public function blockTypePermissions() {
+    return $this->generatePermissions(BlockContentType::loadMultiple(), [$this, 'buildPermissions']);
+  }
+
+  /**
+   * Return all the permissions available for a custom block type.
+   *
+   * @param \Drupal\block_content\Entity\BlockContentType $type
+   *   The block type.
+   *
+   * @return array
+   *   Permissions available for the given block type.
+   */
+  protected function buildPermissions(BlockContentType $type) {
+    $type_id = $type->id();
+    $type_params = ['%type_name' => $type->label()];
+    return [
+      "edit any $type_id block content" => [
+        'title' => $this->t('%type_name: Edit any block content', $type_params),
+      ],
+    ];
+  }
+
+}
diff --git a/core/modules/block_content/src/Entity/BlockContent.php b/core/modules/block_content/src/Entity/BlockContent.php
index 95ba40da6d..b12536d95d 100644
--- a/core/modules/block_content/src/Entity/BlockContent.php
+++ b/core/modules/block_content/src/Entity/BlockContent.php
@@ -126,6 +126,20 @@ public function postSave(EntityStorageInterface $storage, $update = TRUE) {
     }
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  public static function preDelete(EntityStorageInterface $storage, array $entities) {
+    parent::preDelete($storage, $entities);
+
+    /** @var \Drupal\block_content\BlockContentInterface $block */
+    foreach ($entities as $block) {
+      foreach ($block->getInstances() as $instance) {
+        $instance->delete();
+      }
+    }
+  }
+
   /**
    * {@inheritdoc}
    */
@@ -162,16 +176,6 @@ public function preSaveRevision(EntityStorageInterface $storage, \stdClass $reco
     }
   }
 
-  /**
-   * {@inheritdoc}
-   */
-  public function delete() {
-    foreach ($this->getInstances() as $instance) {
-      $instance->delete();
-    }
-    parent::delete();
-  }
-
   /**
    * {@inheritdoc}
    */
diff --git a/core/modules/block_content/src/Entity/BlockContentType.php b/core/modules/block_content/src/Entity/BlockContentType.php
index 206f403175..469dbfa5ae 100644
--- a/core/modules/block_content/src/Entity/BlockContentType.php
+++ b/core/modules/block_content/src/Entity/BlockContentType.php
@@ -27,7 +27,7 @@
  *     },
  *     "route_provider" = {
  *       "html" = "Drupal\Core\Entity\Routing\AdminHtmlRouteProvider",
- *       "permissions" = "Drupal\user\Entity\EntityPermissionsRouteProviderWithCheck",
+ *       "permissions" = "Drupal\user\Entity\EntityPermissionsRouteProvider",
  *     },
  *     "list_builder" = "Drupal\block_content\BlockContentTypeListBuilder"
  *   },
diff --git a/core/modules/block_content/tests/src/Functional/BlockContentTypeTest.php b/core/modules/block_content/tests/src/Functional/BlockContentTypeTest.php
index 540f91957b..36d096d809 100644
--- a/core/modules/block_content/tests/src/Functional/BlockContentTypeTest.php
+++ b/core/modules/block_content/tests/src/Functional/BlockContentTypeTest.php
@@ -44,6 +44,9 @@ class BlockContentTypeTest extends BlockContentTestBase {
    */
   protected $autoCreateBasicBlockType = FALSE;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/block_content/tests/src/Functional/PageEditTest.php b/core/modules/block_content/tests/src/Functional/PageEditTest.php
index d35addb3e1..e310cb1a7d 100644
--- a/core/modules/block_content/tests/src/Functional/PageEditTest.php
+++ b/core/modules/block_content/tests/src/Functional/PageEditTest.php
@@ -16,6 +16,9 @@ class PageEditTest extends BlockContentTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/block_content/tests/src/Functional/Views/BlockContentTestBase.php b/core/modules/block_content/tests/src/Functional/Views/BlockContentTestBase.php
index 493c91648e..ace5f83221 100644
--- a/core/modules/block_content/tests/src/Functional/Views/BlockContentTestBase.php
+++ b/core/modules/block_content/tests/src/Functional/Views/BlockContentTestBase.php
@@ -39,6 +39,9 @@ abstract class BlockContentTestBase extends ViewTestBase {
     'block_content_test_views',
   ];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp($import_test_views = TRUE, $modules = ['block_content_test_views']): void {
     parent::setUp($import_test_views, $modules);
     // Ensure the basic bundle exists. This is provided by the standard profile.
diff --git a/core/modules/block_content/tests/src/Kernel/BlockContentAccessHandlerTest.php b/core/modules/block_content/tests/src/Kernel/BlockContentAccessHandlerTest.php
index d8a1f9a53f..62f63b5f7a 100644
--- a/core/modules/block_content/tests/src/Kernel/BlockContentAccessHandlerTest.php
+++ b/core/modules/block_content/tests/src/Kernel/BlockContentAccessHandlerTest.php
@@ -61,7 +61,15 @@ protected function setUp(): void {
     $this->installEntitySchema('user');
     $this->installEntitySchema('block_content');
 
-    // Create a block content type.
+    // Create a basic block content type.
+    $block_content_type = BlockContentType::create([
+      'id' => 'basic',
+      'label' => 'A basic block type',
+      'description' => "Provides a block type that is basic.",
+    ]);
+    $block_content_type->save();
+
+    // Create a square block content type.
     $block_content_type = BlockContentType::create([
       'id' => 'square',
       'label' => 'A square block type',
@@ -184,6 +192,22 @@ public function providerTestAccess() {
         NULL,
         'allowed',
       ],
+      'view:unpublished:reusable:per-block-editor:basic' => [
+        'view',
+        FALSE,
+        TRUE,
+        ['edit any basic block content'],
+        NULL,
+        'neutral',
+      ],
+      'view:unpublished:reusable:per-block-editor:square' => [
+        'view',
+        FALSE,
+        TRUE,
+        ['edit any square block content'],
+        NULL,
+        'allowed',
+      ],
       'view:published:reusable:admin' => [
         'view',
         TRUE,
@@ -192,6 +216,22 @@ public function providerTestAccess() {
         NULL,
         'allowed',
       ],
+      'view:published:reusable:per-block-editor:basic' => [
+        'view',
+        TRUE,
+        TRUE,
+        ['edit any basic block content'],
+        NULL,
+        'allowed',
+      ],
+      'view:published:reusable:per-block-editor:square' => [
+        'view',
+        TRUE,
+        TRUE,
+        ['edit any square block content'],
+        NULL,
+        'allowed',
+      ],
       'view:published:non_reusable' => [
         'view',
         TRUE,
@@ -291,8 +331,62 @@ public function providerTestAccess() {
           'forbidden',
           'forbidden',
         ],
+        $operation . ':unpublished:reusable:per-block-editor:basic' => [
+          $operation,
+          FALSE,
+          TRUE,
+          ['edit any basic block content'],
+          NULL,
+          'neutral',
+        ],
+        $operation . ':published:reusable:per-block-editor:basic' => [
+          $operation,
+          TRUE,
+          TRUE,
+          ['edit any basic block content'],
+          NULL,
+          'neutral',
+        ],
       ];
     }
+
+    $cases += [
+      'update:unpublished:reusable:per-block-editor:square' => [
+        'update',
+        FALSE,
+        TRUE,
+        ['edit any square block content'],
+        NULL,
+        'allowed',
+      ],
+      'update:published:reusable:per-block-editor:square' => [
+        'update',
+        TRUE,
+        TRUE,
+        ['edit any square block content'],
+        NULL,
+        'allowed',
+      ],
+    ];
+
+    $cases += [
+      'delete:unpublished:reusable:per-block-editor:square' => [
+        'delete',
+        FALSE,
+        TRUE,
+        ['edit any square block content'],
+        NULL,
+        'neutral',
+      ],
+      'delete:published:reusable:per-block-editor:square' => [
+        'delete',
+        TRUE,
+        TRUE,
+        ['edit any square block content'],
+        NULL,
+        'neutral',
+      ],
+    ];
     return $cases;
   }
 
diff --git a/core/modules/block_content/tests/src/Kernel/BlockContentDeletionTest.php b/core/modules/block_content/tests/src/Kernel/BlockContentDeletionTest.php
index c8e5a5706b..fe41695044 100644
--- a/core/modules/block_content/tests/src/Kernel/BlockContentDeletionTest.php
+++ b/core/modules/block_content/tests/src/Kernel/BlockContentDeletionTest.php
@@ -6,6 +6,7 @@
 use Drupal\block_content\Entity\BlockContentType;
 use Drupal\Component\Plugin\PluginBase;
 use Drupal\KernelTests\KernelTestBase;
+use Drupal\Tests\block\Traits\BlockCreationTrait;
 
 /**
  * Tests that deleting a block clears the cached definitions.
@@ -14,6 +15,8 @@
  */
 class BlockContentDeletionTest extends KernelTestBase {
 
+  use BlockCreationTrait;
+
   /**
    * {@inheritdoc}
    */
@@ -57,6 +60,24 @@ public function testDeletingBlockContentShouldClearPluginCache() {
     $block_content->delete();
     // The plugin should no longer exist.
     $this->assertFalse($block_manager->hasDefinition($plugin_id));
+
+    // Create another block content entity.
+    $block_content = BlockContent::create([
+      'info' => 'Spiffy prototype',
+      'type' => 'spiffy',
+    ]);
+    $block_content->save();
+
+    $plugin_id = 'block_content' . PluginBase::DERIVATIVE_SEPARATOR . $block_content->uuid();
+    $block = $this->placeBlock($plugin_id, ['region' => 'content']);
+
+    // Delete it via storage.
+    $storage = $this->container->get('entity_type.manager')->getStorage('block_content');
+    $storage->delete([$block_content]);
+    // The plugin should no longer exist.
+    $this->assertFalse($block_manager->hasDefinition($plugin_id));
+
+    $this->assertNull($this->container->get('entity_type.manager')->getStorage('block')->loadUnchanged($block->id()));
   }
 
 }
diff --git a/core/modules/block_content/tests/src/Kernel/BlockContentPermissionsTest.php b/core/modules/block_content/tests/src/Kernel/BlockContentPermissionsTest.php
new file mode 100644
index 0000000000..eba2cf4d1c
--- /dev/null
+++ b/core/modules/block_content/tests/src/Kernel/BlockContentPermissionsTest.php
@@ -0,0 +1,86 @@
+<?php
+
+namespace Drupal\Tests\block_content\Kernel;
+
+use Drupal\KernelTests\KernelTestBase;
+use Drupal\block_content\Entity\BlockContentType;
+
+/**
+ * Tests the permissions of content blocks.
+ *
+ * @coversDefaultClass \Drupal\block_content\BlockContentPermissions
+ *
+ * @group block_content
+ */
+class BlockContentPermissionsTest extends KernelTestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  protected static $modules = [
+    'block',
+    'block_content',
+    'block_content_test',
+    'system',
+    'user',
+  ];
+
+  /**
+   * The permission handler.
+   *
+   * @var \Drupal\user\PermissionHandlerInterface
+   */
+  protected $permissionHandler;
+
+  /**
+   * {@inheritdoc}
+   */
+  public function setUp(): void {
+    parent::setUp();
+    $this->installSchema('system', ['sequences']);
+    $this->installEntitySchema('user');
+    $this->installEntitySchema('block_content');
+
+    $this->permissionHandler = $this->container->get('user.permissions');
+  }
+
+  /**
+   * @covers ::blockTypePermissions
+   */
+  public function testDynamicPermissions() {
+    $permissions = $this->permissionHandler->getPermissions();
+    $this->assertArrayNotHasKey('edit any basic block content', $permissions, 'The per-block-type permission does not exist.');
+    $this->assertArrayNotHasKey('edit any square block content', $permissions, 'The per-block-type permission does not exist.');
+
+    // Create a basic block content type.
+    BlockContentType::create([
+      'id'          => 'basic',
+      'label'       => 'A basic block type',
+      'description' => 'Provides a basic block type',
+    ])->save();
+
+    // Create a square block content type.
+    BlockContentType::create([
+      'id'          => 'square',
+      'label'       => 'A square block type',
+      'description' => 'Provides a block type that is square',
+    ])->save();
+
+    $permissions = $this->permissionHandler->getPermissions();
+
+    // Assert the basic permission has been created.
+    $this->assertArrayHasKey('edit any basic block content', $permissions, 'The per-block-type permission exists.');
+    $this->assertEquals(
+      '<em class="placeholder">A basic block type</em>: Edit any block content',
+      $permissions['edit any basic block content']['title']->render()
+    );
+
+    // Assert the square permission has been created.
+    $this->assertArrayHasKey('edit any square block content', $permissions, 'The per-block-type permission exists.');
+    $this->assertEquals(
+      '<em class="placeholder">A square block type</em>: Edit any block content',
+      $permissions['edit any square block content']['title']->render()
+    );
+  }
+
+}
diff --git a/core/modules/block_content/tests/src/Unit/Menu/BlockContentLocalTasksTest.php b/core/modules/block_content/tests/src/Unit/Menu/BlockContentLocalTasksTest.php
index 5bfb2fbc83..4c407afcc2 100644
--- a/core/modules/block_content/tests/src/Unit/Menu/BlockContentLocalTasksTest.php
+++ b/core/modules/block_content/tests/src/Unit/Menu/BlockContentLocalTasksTest.php
@@ -12,6 +12,9 @@
  */
 class BlockContentLocalTasksTest extends LocalTaskIntegrationTestBase {
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     $this->directoryList = [
       'block' => 'core/modules/block',
@@ -42,7 +45,7 @@ protected function setUp(): void {
     $theme_handler = $this->createMock('Drupal\Core\Extension\ThemeHandlerInterface');
     $theme_handler->expects($this->any())
       ->method('listInfo')
-      ->will($this->returnValue($themes));
+      ->willReturn($themes);
 
     $container = new ContainerBuilder();
     $container->set('config.factory', $config_factory);
diff --git a/core/modules/book/book.install b/core/modules/book/book.install
index 7704483365..90c6f87ffc 100644
--- a/core/modules/book/book.install
+++ b/core/modules/book/book.install
@@ -18,7 +18,7 @@ function book_uninstall() {
  */
 function book_schema() {
   $schema['book'] = [
-  'description' => 'Stores book outline information. Uniquely defines the location of each node in the book outline',
+    'description' => 'Stores book outline information. Uniquely defines the location of each node in the book outline',
     'fields' => [
       'nid' => [
         'type' => 'int',
diff --git a/core/modules/book/book.module b/core/modules/book/book.module
index 42fec612ee..1760113fe4 100644
--- a/core/modules/book/book.module
+++ b/core/modules/book/book.module
@@ -202,7 +202,7 @@ function book_pick_book_nojs_submit($form, FormStateInterface $form_state) {
  * This function is called via Ajax when the selected book is changed on a node
  * or book outline form.
  *
- * @return
+ * @return array
  *   The rendered parent page select element.
  */
 function book_form_update($form, FormStateInterface $form_state) {
diff --git a/core/modules/book/src/BookManagerInterface.php b/core/modules/book/src/BookManagerInterface.php
index e6f9c6f55d..21008fd244 100644
--- a/core/modules/book/src/BookManagerInterface.php
+++ b/core/modules/book/src/BookManagerInterface.php
@@ -271,7 +271,7 @@ public function bookTreeCheckAccess(&$tree, $node_links = []);
    * @param array $link
    *   A fully loaded book link.
    *
-   * @return
+   * @return array
    *   A subtree of book links in an array, in the order they should be rendered.
    */
   public function bookSubtreeData($link);
diff --git a/core/modules/book/src/BookOutlineStorage.php b/core/modules/book/src/BookOutlineStorage.php
index 9953a14108..e986c1f77e 100644
--- a/core/modules/book/src/BookOutlineStorage.php
+++ b/core/modules/book/src/BookOutlineStorage.php
@@ -133,8 +133,7 @@ public function insert($link, $parents) {
         'bid' => $link['bid'],
         'pid' => $link['pid'],
         'weight' => $link['weight'],
-        ] + $parents
-      )
+      ] + $parents)
       ->execute();
   }
 
diff --git a/core/modules/book/src/Plugin/Block/BookNavigationBlock.php b/core/modules/book/src/Plugin/Block/BookNavigationBlock.php
index c1e2ca849c..86d957739f 100644
--- a/core/modules/book/src/Plugin/Block/BookNavigationBlock.php
+++ b/core/modules/book/src/Plugin/Block/BookNavigationBlock.php
@@ -105,7 +105,7 @@ public function blockForm($form, FormStateInterface $form_state) {
       '#options' => $options,
       '#default_value' => $this->configuration['block_mode'],
       '#description' => $this->t("If <em>Show block on all pages</em> is selected, the block will contain the automatically generated menus for all of the site's books. If <em>Show block only on book pages</em> is selected, the block will contain only the one menu corresponding to the current page's book. In this case, if the current page is not in a book, no block will be displayed. The <em>Page specific visibility settings</em> or other visibility settings can be used in addition to selectively display this block."),
-      ];
+    ];
 
     return $form;
   }
diff --git a/core/modules/book/tests/modules/book_test_views/book_test_views.info.yml b/core/modules/book/tests/modules/book_test_views/book_test_views.info.yml
index b7fbcd4d1d..6ee79b1e84 100644
--- a/core/modules/book/tests/modules/book_test_views/book_test_views.info.yml
+++ b/core/modules/book/tests/modules/book_test_views/book_test_views.info.yml
@@ -4,5 +4,5 @@ description: 'Provides default views for views book tests.'
 package: Testing
 version: VERSION
 dependencies:
- - drupal:book
- - drupal:views
+  - drupal:book
+  - drupal:views
diff --git a/core/modules/book/tests/src/Unit/Menu/BookLocalTasksTest.php b/core/modules/book/tests/src/Unit/Menu/BookLocalTasksTest.php
index 30f61d63f1..82aa9fb937 100644
--- a/core/modules/book/tests/src/Unit/Menu/BookLocalTasksTest.php
+++ b/core/modules/book/tests/src/Unit/Menu/BookLocalTasksTest.php
@@ -11,6 +11,9 @@
  */
 class BookLocalTasksTest extends LocalTaskIntegrationTestBase {
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     $this->directoryList = [
       'book' => 'core/modules/book',
diff --git a/core/modules/breakpoint/tests/src/Kernel/BreakpointDiscoveryTest.php b/core/modules/breakpoint/tests/src/Kernel/BreakpointDiscoveryTest.php
index 42ca60698f..4dd405fbc4 100644
--- a/core/modules/breakpoint/tests/src/Kernel/BreakpointDiscoveryTest.php
+++ b/core/modules/breakpoint/tests/src/Kernel/BreakpointDiscoveryTest.php
@@ -22,6 +22,9 @@ class BreakpointDiscoveryTest extends KernelTestBase {
     'breakpoint_module_test',
   ];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     \Drupal::service('theme_installer')->install(['breakpoint_theme_test']);
diff --git a/core/modules/breakpoint/tests/src/Unit/BreakpointTest.php b/core/modules/breakpoint/tests/src/Unit/BreakpointTest.php
index 7e5330602f..dbd9de9b13 100644
--- a/core/modules/breakpoint/tests/src/Unit/BreakpointTest.php
+++ b/core/modules/breakpoint/tests/src/Unit/BreakpointTest.php
@@ -42,6 +42,9 @@ class BreakpointTest extends UnitTestCase {
    */
   protected $stringTranslation;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/ckeditor5/ckeditor5.ckeditor5.yml b/core/modules/ckeditor5/ckeditor5.ckeditor5.yml
index 62ef19493d..4396b64ed4 100644
--- a/core/modules/ckeditor5/ckeditor5.ckeditor5.yml
+++ b/core/modules/ckeditor5/ckeditor5.ckeditor5.yml
@@ -376,8 +376,8 @@ ckeditor5_linkMedia:
 ckeditor5_list:
   ckeditor5:
     plugins:
-     - list.DocumentList
-     - list.DocumentListProperties
+      - list.DocumentList
+      - list.DocumentListProperties
     config:
       list:
         properties:
@@ -750,8 +750,8 @@ media_library_mediaLibrary:
     class: Drupal\ckeditor5\Plugin\CKEditor5Plugin\MediaLibrary
     library: editor/drupal.editor.dialog
     toolbar_items:
-        drupalMedia:
-          label: Drupal media
+      drupalMedia:
+        label: Drupal media
     conditions:
       filter: media_embed
       toolbarItem: drupalMedia
diff --git a/core/modules/ckeditor5/ckeditor5.post_update.php b/core/modules/ckeditor5/ckeditor5.post_update.php
index 518a597545..6f724b7473 100644
--- a/core/modules/ckeditor5/ckeditor5.post_update.php
+++ b/core/modules/ckeditor5/ckeditor5.post_update.php
@@ -65,3 +65,27 @@ function ckeditor5_post_update_image_toolbar_item(&$sandbox = []) {
 
   $config_entity_updater->update($sandbox, 'editor', $callback);
 }
+
+/**
+ * Updates Text Editors using CKEditor 5 to sort plugin settings by plugin key.
+ */
+function ckeditor5_post_update_plugins_settings_export_order(&$sandbox = []) {
+  $config_entity_updater = \Drupal::classResolver(ConfigEntityUpdater::class);
+  $config_entity_updater->update($sandbox, 'editor', function (Editor $editor): bool {
+    // Only try to update editors using CKEditor 5.
+    if ($editor->getEditor() !== 'ckeditor5') {
+      return FALSE;
+    }
+
+    $settings = $editor->getSettings();
+
+    // Nothing to do if there are fewer than two plugins with settings.
+    if (count($settings['plugins']) < 2) {
+      return FALSE;
+    }
+    ksort($settings['plugins']);
+    $editor->setSettings($settings);
+
+    return TRUE;
+  });
+}
diff --git a/core/modules/ckeditor5/config/schema/ckeditor5.schema.yml b/core/modules/ckeditor5/config/schema/ckeditor5.schema.yml
index 7b358f1e2a..205da91418 100644
--- a/core/modules/ckeditor5/config/schema/ckeditor5.schema.yml
+++ b/core/modules/ckeditor5/config/schema/ckeditor5.schema.yml
@@ -10,6 +10,7 @@ editor.settings.ckeditor5:
       mapping:
         items:
           type: sequence
+          orderby: ~
           label: 'Items'
           sequence:
             type: ckeditor5.toolbar_item
@@ -20,6 +21,7 @@ editor.settings.ckeditor5:
     plugins:
       type: sequence
       label: 'Plugins'
+      orderby: key
       sequence:
         type: ckeditor5.plugin.[%key]
   constraints:
@@ -51,6 +53,7 @@ ckeditor5.plugin.ckeditor5_heading:
   mapping:
     enabled_headings:
       type: sequence
+      orderby: value
       label: 'Enabled Headings'
       constraints:
         NotBlank:
@@ -80,6 +83,7 @@ ckeditor5.plugin.ckeditor5_sourceEditing:
   mapping:
     allowed_tags:
       type: sequence
+      orderby: ~
       label: 'Allowed Tags'
       sequence:
         type: ckeditor5.element
@@ -95,6 +99,7 @@ ckeditor5.plugin.ckeditor5_alignment:
   mapping:
     enabled_alignments:
       type: sequence
+      orderby: value
       label: 'Enabled Alignments'
       constraints:
         NotBlank:
@@ -143,6 +148,7 @@ ckeditor5.plugin.ckeditor5_style:
   mapping:
     styles:
       type: sequence
+      orderby: ~
       label: 'Styles'
       constraints:
         NotBlank:
diff --git a/core/modules/ckeditor5/css/drupalmedia.css b/core/modules/ckeditor5/css/drupalmedia.css
index 54c9ffc830..8d33736607 100644
--- a/core/modules/ckeditor5/css/drupalmedia.css
+++ b/core/modules/ckeditor5/css/drupalmedia.css
@@ -98,10 +98,6 @@
   border-radius: 0;
 }
 
-.ck.ck-media-alternative-text-form .ck-button:last-of-type {
-  border-right: 1px solid var(--ck-color-base-border);
-}
-
 .ck.ck .ck-media-alternative-text-form__default-alt-text-label {
   font-weight: bold;
 }
diff --git a/core/modules/ckeditor5/js/build/ckeditor5.types.jsdoc b/core/modules/ckeditor5/js/build/ckeditor5.types.jsdoc
index 02a98b8120..f826f9446e 100644
--- a/core/modules/ckeditor5/js/build/ckeditor5.types.jsdoc
+++ b/core/modules/ckeditor5/js/build/ckeditor5.types.jsdoc
@@ -1756,6 +1756,12 @@
  * @typedef {module:paragraph/paragraphcommand} module:paragraph/paragraphcommand~ParagraphCommand
  */
 
+/**
+ * Declared in file @ckeditor/ckeditor5-paste-from-office/src/filters/br.js
+ *
+ * @typedef {module:paste-from-office/filters/br} module:paste-from-office/filters/br~transformBlockBrsToParagraphs
+ */
+
 /**
  * Declared in file @ckeditor/ckeditor5-paste-from-office/src/filters/removeboldwrapper.js
  *
@@ -2158,12 +2164,6 @@
  * @typedef {module:table/tablecellproperties/commands/tablecellverticalalignmentcommand} module:table/tablecellproperties/commands/tablecellverticalalignmentcommand~TableCellVerticalAlignmentCommand
  */
 
-/**
- * Declared in file @ckeditor/ckeditor5-table/src/tablecellproperties/commands/tablecellwidthcommand.js
- *
- * @typedef {module:table/tablecellproperties/commands/tablecellwidthcommand} module:table/tablecellproperties/commands/tablecellwidthcommand~TableCellWidthCommand
- */
-
 /**
  * Declared in file @ckeditor/ckeditor5-table/src/tablecellproperties/tablecellpropertiesediting.js
  *
@@ -2182,6 +2182,18 @@
  * @typedef {module:table/tablecellproperties/ui/tablecellpropertiesview} module:table/tablecellproperties/ui/tablecellpropertiesview~TableCellPropertiesView
  */
 
+/**
+ * Declared in file @ckeditor/ckeditor5-table/src/tablecellwidth/commands/tablecellwidthcommand.js
+ *
+ * @typedef {module:table/tablecellproperties/commands/tablecellwidthcommand} module:table/tablecellproperties/commands/tablecellwidthcommand~TableCellWidthCommand
+ */
+
+/**
+ * Declared in file @ckeditor/ckeditor5-table/src/tablecellwidth/tablecellwidthediting.js
+ *
+ * @typedef {module:table/tablecellwidth/tablecellwidthediting} module:table/tablecellwidth/tablecellwidthediting~TableCellWidthEditing
+ */
+
 /**
  * Declared in file @ckeditor/ckeditor5-table/src/tableclipboard.js
  *
@@ -3082,6 +3094,12 @@
  * @typedef {module:utils/observablemixin} module:utils/observablemixin~ObservableMixin
  */
 
+/**
+ * Declared in file @ckeditor/ckeditor5-utils/src/splicearray.js
+ *
+ * @typedef {module:utils/splicearray} module:utils/splicearray~spliceArray
+ */
+
 /**
  * Declared in file @ckeditor/ckeditor5-utils/src/spy.js
  *
diff --git a/core/modules/ckeditor5/js/build/drupalMedia.js b/core/modules/ckeditor5/js/build/drupalMedia.js
index c1049e9799..c13582a3c0 100644
--- a/core/modules/ckeditor5/js/build/drupalMedia.js
+++ b/core/modules/ckeditor5/js/build/drupalMedia.js
@@ -1 +1 @@
-!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.CKEditor5=t():(e.CKEditor5=e.CKEditor5||{},e.CKEditor5.drupalMedia=t())}(globalThis,(()=>(()=>{var e={"ckeditor5/src/core.js":(e,t,i)=>{e.exports=i("dll-reference CKEditor5.dll")("./src/core.js")},"ckeditor5/src/engine.js":(e,t,i)=>{e.exports=i("dll-reference CKEditor5.dll")("./src/engine.js")},"ckeditor5/src/ui.js":(e,t,i)=>{e.exports=i("dll-reference CKEditor5.dll")("./src/ui.js")},"ckeditor5/src/utils.js":(e,t,i)=>{e.exports=i("dll-reference CKEditor5.dll")("./src/utils.js")},"ckeditor5/src/widget.js":(e,t,i)=>{e.exports=i("dll-reference CKEditor5.dll")("./src/widget.js")},"dll-reference CKEditor5.dll":e=>{"use strict";e.exports=CKEditor5.dll}},t={};function i(n){var a=t[n];if(void 0!==a)return a.exports;var r=t[n]={exports:{}};return e[n](r,r.exports,i),r.exports}i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var n={};return(()=>{"use strict";i.d(n,{default:()=>ue});var e=i("ckeditor5/src/core.js"),t=i("ckeditor5/src/widget.js");function a(e){return!!e&&e.is("element","drupalMedia")}function r(e){return(0,t.isWidget)(e)&&!!e.getCustomProperty("drupalMedia")}function o(e){const t=e.getSelectedElement();return a(t)?t:e.getFirstPosition().findAncestor("drupalMedia")}function s(e){const t=e.getSelectedElement();if(t&&r(t))return t;let i=e.getFirstPosition().parent;for(;i;){if(i.is("element")&&r(i))return i;i=i.parent}return null}function l(e){const t=typeof e;return null!=e&&("object"===t||"function"===t)}function d(e){for(const t of e){if(t.hasAttribute("data-drupal-media-preview"))return t;if(t.childCount){const e=d(t.getChildren());if(e)return e}}return null}function u(e){return`drupalElementStyle${e[0].toUpperCase()+e.substring(1)}`}class c extends e.Command{execute(e){const t=this.editor.plugins.get("DrupalMediaEditing"),i=Object.entries(t.attrs).reduce(((e,[t,i])=>(e[i]=t,e)),{}),n=Object.keys(e).reduce(((t,n)=>(i[n]&&(t[i[n]]=e[n]),t)),{});if(this.editor.plugins.has("DrupalElementStyleEditing")){const t=this.editor.plugins.get("DrupalElementStyleEditing"),{normalizedStyles:i}=t;for(const a of Object.keys(i))for(const i of t.normalizedStyles[a])if(e[i.attributeName]&&i.attributeValue===e[i.attributeName]){const e=u(a);n[e]=i.name}}this.editor.model.change((e=>{this.editor.model.insertContent(function(e,t){return e.createElement("drupalMedia",t)}(e,n))}))}refresh(){const e=this.editor.model,t=e.document.selection,i=e.schema.findAllowedParent(t.getFirstPosition(),"drupalMedia");this.isEnabled=null!==i}}const m="METADATA_ERROR";class p extends e.Plugin{static get requires(){return[t.Widget]}init(){this.attrs={drupalMediaAlt:"alt",drupalMediaEntityType:"data-entity-type",drupalMediaEntityUuid:"data-entity-uuid"};const e=this.editor.config.get("drupalMedia");if(!e)return;const{previewURL:t,themeError:i}=e;this.previewUrl=t,this.labelError=Drupal.t("Preview failed"),this.themeError=i||`\n      <p>${Drupal.t("An error occurred while trying to preview the media. Please save your work and reload this page.")}<p>\n    `,this._defineSchema(),this._defineConverters(),this._defineListeners(),this.editor.commands.add("insertDrupalMedia",new c(this.editor))}upcastDrupalMediaIsImage(e){const{model:t,plugins:i}=this.editor;i.get("DrupalMediaMetadataRepository").getMetadata(e).then((i=>{e&&t.enqueueChange({isUndoable:!1},(t=>{t.setAttribute("drupalMediaIsImage",!!i.imageSourceMetadata,e)}))})).catch((i=>{e&&(console.warn(i.toString()),t.enqueueChange({isUndoable:!1},(t=>{t.setAttribute("drupalMediaIsImage",m,e)})))}))}upcastDrupalMediaType(e){this.editor.plugins.get("DrupalMediaMetadataRepository").getMetadata(e).then((t=>{e&&this.editor.model.enqueueChange({isUndoable:!1},(i=>{i.setAttribute("drupalMediaType",t.type,e)}))})).catch((t=>{e&&(console.warn(t.toString()),this.editor.model.enqueueChange({isUndoable:!1},(t=>{t.setAttribute("drupalMediaType",m,e)})))}))}async _fetchPreview(e){const t={text:this._renderElement(e),uuid:e.getAttribute("drupalMediaEntityUuid")},i=await fetch(`${this.previewUrl}?${new URLSearchParams(t)}`,{headers:{"X-Drupal-MediaPreview-CSRF-Token":this.editor.config.get("drupalMedia").previewCsrfToken}});if(i.ok){return{label:i.headers.get("drupal-media-label"),preview:await i.text()}}return{label:this.labelError,preview:this.themeError}}_defineSchema(){this.editor.model.schema.register("drupalMedia",{allowWhere:"$block",isObject:!0,isContent:!0,isBlock:!0,allowAttributes:Object.keys(this.attrs)}),this.editor.editing.view.domConverter.blockElements.push("drupal-media")}_defineConverters(){const e=this.editor.conversion,i=this.editor.plugins.get("DrupalMediaMetadataRepository");e.for("upcast").elementToElement({view:{name:"drupal-media"},model:"drupalMedia"}).add((e=>{e.on("element:drupal-media",((e,t)=>{const[n]=t.modelRange.getItems();i.getMetadata(n).then((e=>{n&&(this.upcastDrupalMediaIsImage(n),this.editor.model.enqueueChange({isUndoable:!1},(t=>{t.setAttribute("drupalMediaType",e.type,n)})))})).catch((e=>{console.warn(e.toString())}))}),{priority:"lowest"})})),e.for("dataDowncast").elementToElement({model:"drupalMedia",view:{name:"drupal-media"}}),e.for("editingDowncast").elementToElement({model:"drupalMedia",view:(e,{writer:i})=>{const n=i.createContainerElement("figure",{class:"drupal-media"});if(!this.previewUrl){const e=i.createRawElement("div",{"data-drupal-media-preview":"unavailable"});i.insert(i.createPositionAt(n,0),e)}return i.setCustomProperty("drupalMedia",!0,n),(0,t.toWidget)(n,i,{label:Drupal.t("Media widget")})}}).add((e=>{const t=(e,t,i)=>{const n=i.writer,a=t.item,r=i.mapper.toViewElement(t.item);let o=d(r.getChildren());if(o){if("ready"!==o.getAttribute("data-drupal-media-preview"))return;n.setAttribute("data-drupal-media-preview","loading",o)}else o=n.createRawElement("div",{"data-drupal-media-preview":"loading"}),n.insert(n.createPositionAt(r,0),o);this._fetchPreview(a).then((({label:e,preview:t})=>{o&&this.editor.editing.view.change((i=>{const n=i.createRawElement("div",{"data-drupal-media-preview":"ready","aria-label":e},(e=>{e.innerHTML=t}));i.insert(i.createPositionBefore(o),n),i.remove(o)}))}))};return e.on("attribute:drupalMediaEntityUuid:drupalMedia",t),e.on("attribute:drupalElementStyleViewMode:drupalMedia",t),e.on("attribute:drupalMediaEntityType:drupalMedia",t),e.on("attribute:drupalMediaAlt:drupalMedia",t),e})),e.for("editingDowncast").add((e=>{e.on("attribute:drupalElementStyleAlign:drupalMedia",((e,t,i)=>{const n={left:"drupal-media-style-align-left",right:"drupal-media-style-align-right",center:"drupal-media-style-align-center"},a=i.mapper.toViewElement(t.item),r=i.writer;n[t.attributeOldValue]&&r.removeClass(n[t.attributeOldValue],a),n[t.attributeNewValue]&&i.consumable.consume(t.item,e.name)&&r.addClass(n[t.attributeNewValue],a)}))})),Object.keys(this.attrs).forEach((t=>{const i={model:{key:t,name:"drupalMedia"},view:{name:"drupal-media",key:this.attrs[t]}};e.for("dataDowncast").attributeToAttribute(i),e.for("upcast").attributeToAttribute(i)}))}_defineListeners(){this.editor.model.on("insertContent",((e,[t])=>{a(t)&&(this.upcastDrupalMediaIsImage(t),this.upcastDrupalMediaType(t))}))}_renderElement(e){const t=this.editor.model.change((t=>{const i=t.createDocumentFragment(),n=t.cloneElement(e,!1);return["linkHref"].forEach((e=>{t.removeAttribute(e,n)})),t.append(n,i),i}));return this.editor.data.stringify(t)}static get pluginName(){return"DrupalMediaEditing"}}var g=i("ckeditor5/src/ui.js");class h extends e.Plugin{init(){const e=this.editor,t=this.editor.config.get("drupalMedia");if(!t)return;const{libraryURL:i,openDialog:n,dialogSettings:a={}}=t;i&&"function"==typeof n&&e.ui.componentFactory.add("drupalMedia",(t=>{const r=e.commands.get("insertDrupalMedia"),o=new g.ButtonView(t);return o.set({label:Drupal.t("Insert Drupal Media"),icon:'<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M19.1873 4.86414L10.2509 6.86414V7.02335H10.2499V15.5091C9.70972 15.1961 9.01793 15.1048 8.34069 15.3136C7.12086 15.6896 6.41013 16.8967 6.75322 18.0096C7.09631 19.1226 8.3633 19.72 9.58313 19.344C10.6666 19.01 11.3484 18.0203 11.2469 17.0234H11.2499V9.80173L18.1803 8.25067V14.3868C17.6401 14.0739 16.9483 13.9825 16.2711 14.1913C15.0513 14.5674 14.3406 15.7744 14.6836 16.8875C15.0267 18.0004 16.2937 18.5978 17.5136 18.2218C18.597 17.8877 19.2788 16.8982 19.1773 15.9011H19.1803V8.02687L19.1873 8.0253V4.86414Z" fill="black"/><path fill-rule="evenodd" clip-rule="evenodd" d="M13.5039 0.743652H0.386932V12.1603H13.5039V0.743652ZM12.3379 1.75842H1.55289V11.1454H1.65715L4.00622 8.86353L6.06254 10.861L9.24985 5.91309L11.3812 9.22179L11.7761 8.6676L12.3379 9.45621V1.75842ZM6.22048 4.50869C6.22048 5.58193 5.35045 6.45196 4.27722 6.45196C3.20398 6.45196 2.33395 5.58193 2.33395 4.50869C2.33395 3.43546 3.20398 2.56543 4.27722 2.56543C5.35045 2.56543 6.22048 3.43546 6.22048 4.50869Z" fill="black"/></svg>\n',tooltip:!0}),o.bind("isOn","isEnabled").to(r,"value","isEnabled"),this.listenTo(o,"execute",(()=>{n(i,(({attributes:t})=>{e.execute("insertDrupalMedia",t)}),a)})),o}))}}class f extends e.Plugin{static get requires(){return[t.WidgetToolbarRepository]}static get pluginName(){return"DrupalMediaToolbar"}afterInit(){const{editor:e}=this;var i;e.plugins.get(t.WidgetToolbarRepository).register("drupalMedia",{ariaLabel:Drupal.t("Drupal Media toolbar"),items:(i=e.config.get("drupalMedia.toolbar"),i.map((e=>l(e)?e.name:e))||[]),getRelatedElement:e=>s(e)})}}class b extends e.Command{refresh(){const e=o(this.editor.model.document.selection);this.isEnabled=!!e&&e.getAttribute("drupalMediaIsImage")&&e.getAttribute("drupalMediaIsImage")!==m,this.isEnabled?this.value=e.getAttribute("drupalMediaAlt"):this.value=!1}execute(e){const{model:t}=this.editor,i=o(t.document.selection);e.newValue=e.newValue.trim(),t.change((t=>{e.newValue.length>0?t.setAttribute("drupalMediaAlt",e.newValue,i):t.removeAttribute("drupalMediaAlt",i)}))}}class w extends e.Plugin{init(){this._data=new WeakMap}getMetadata(e){if(this._data.get(e))return new Promise((t=>{t(this._data.get(e))}));const t=this.editor.config.get("drupalMedia");if(!t)return new Promise(((e,t)=>{t(new Error("drupalMedia configuration is required for parsing metadata."))}));if(!e.hasAttribute("drupalMediaEntityUuid"))return new Promise(((e,t)=>{t(new Error("drupalMedia element must have drupalMediaEntityUuid attribute to retrieve metadata."))}));const{metadataUrl:i}=t;return(async e=>{const t=await fetch(e);if(t.ok)return JSON.parse(await t.text());throw new Error("Fetching media embed metadata from the server failed.")})(`${i}&${new URLSearchParams({uuid:e.getAttribute("drupalMediaEntityUuid")})}`).then((t=>(this._data.set(e,t),t)))}static get pluginName(){return"DrupalMediaMetadataRepository"}}class y extends e.Plugin{static get requires(){return[w]}static get pluginName(){return"MediaImageTextAlternativeEditing"}init(){const{editor:e,editor:{model:t,conversion:i}}=this;t.schema.extend("drupalMedia",{allowAttributes:["drupalMediaIsImage"]}),i.for("editingDowncast").add((e=>{e.on("attribute:drupalMediaIsImage",((e,t,i)=>{const{writer:n,mapper:a}=i,r=a.toViewElement(t.item);if(t.attributeNewValue!==m){const e=Array.from(r.getChildren()).find((e=>e.getCustomProperty("drupalMediaMetadataError")));return void(e&&(n.setCustomProperty("widgetLabel",e.getCustomProperty("drupalMediaOriginalWidgetLabel"),e),n.removeElement(e)))}const o=Drupal.t("Not all functionality may be available because some information could not be retrieved."),s=new g.Template({tag:"span",children:[{tag:"span",attributes:{class:"drupal-media__metadata-error-icon","data-cke-tooltip-text":o}}]}).render(),l=n.createRawElement("div",{class:"drupal-media__metadata-error"},((e,t)=>{t.setContentOf(e,s.outerHTML)}));n.setCustomProperty("drupalMediaMetadataError",!0,l);const d=r.getCustomProperty("widgetLabel");n.setCustomProperty("drupalMediaOriginalWidgetLabel",d,l),n.setCustomProperty("widgetLabel",`${d} (${o})`,r),n.insert(n.createPositionAt(r,0),l)}),{priority:"low"})})),e.commands.add("mediaImageTextAlternative",new b(this.editor))}}function v(e){const t=e.editing.view,i=g.BalloonPanelView.defaultPositions;return{target:t.domConverter.viewToDom(t.document.selection.getSelectedElement()),positions:[i.northArrowSouth,i.northArrowSouthWest,i.northArrowSouthEast,i.southArrowNorth,i.southArrowNorthWest,i.southArrowNorthEast]}}var E=i("ckeditor5/src/utils.js");class M extends g.View{constructor(t){super(t),this.focusTracker=new E.FocusTracker,this.keystrokes=new E.KeystrokeHandler,this.labeledInput=this._createLabeledInputView(),this.set("defaultAltText",void 0),this.defaultAltTextView=this._createDefaultAltTextView(),this.saveButtonView=this._createButton(Drupal.t("Save"),e.icons.check,"ck-button-save"),this.saveButtonView.type="submit",this.cancelButtonView=this._createButton(Drupal.t("Cancel"),e.icons.cancel,"ck-button-cancel","cancel"),this._focusables=new g.ViewCollection,this._focusCycler=new g.FocusCycler({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"form",attributes:{class:["ck","ck-media-alternative-text-form","ck-vertical-form"],tabindex:"-1"},children:[this.defaultAltTextView,this.labeledInput,this.saveButtonView,this.cancelButtonView]}),(0,g.injectCssTransitionDisabler)(this)}render(){super.render(),this.keystrokes.listenTo(this.element),(0,g.submitHandler)({view:this}),[this.labeledInput,this.saveButtonView,this.cancelButtonView].forEach((e=>{this._focusables.add(e),this.focusTracker.add(e.element)}))}_createButton(e,t,i,n){const a=new g.ButtonView(this.locale);return a.set({label:e,icon:t,tooltip:!0}),a.extendTemplate({attributes:{class:i}}),n&&a.delegate("execute").to(this,n),a}_createLabeledInputView(){const e=new g.LabeledFieldView(this.locale,g.createLabeledInputText);return e.label=Drupal.t("Alternative text override"),e}_createDefaultAltTextView(){const e=g.Template.bind(this,this);return new g.Template({tag:"div",attributes:{class:["ck-media-alternative-text-form__default-alt-text",e.if("defaultAltText","ck-hidden",(e=>!e))]},children:[{tag:"strong",attributes:{class:"ck-media-alternative-text-form__default-alt-text-label"},children:[Drupal.t("Default alternative text:")]}," ",{tag:"span",attributes:{class:"ck-media-alternative-text-form__default-alt-text-value"},children:[{text:[e.to("defaultAltText")]}]}]})}}class k extends e.Plugin{static get requires(){return[g.ContextualBalloon]}static get pluginName(){return"MediaImageTextAlternativeUi"}init(){this._createButton(),this._createForm()}destroy(){super.destroy(),this._form.destroy()}_createButton(){const t=this.editor;t.ui.componentFactory.add("mediaImageTextAlternative",(i=>{const n=t.commands.get("mediaImageTextAlternative"),a=new g.ButtonView(i);return a.set({label:Drupal.t("Override media image alternative text"),icon:e.icons.lowVision,tooltip:!0}),a.bind("isVisible").to(n,"isEnabled"),this.listenTo(a,"execute",(()=>{this._showForm()})),a}))}_createForm(){const e=this.editor,t=e.editing.view.document;this._balloon=this.editor.plugins.get("ContextualBalloon"),this._form=new M(e.locale),this._form.render(),this.listenTo(this._form,"submit",(()=>{e.execute("mediaImageTextAlternative",{newValue:this._form.labeledInput.fieldView.element.value}),this._hideForm(!0)})),this.listenTo(this._form,"cancel",(()=>{this._hideForm(!0)})),this._form.keystrokes.set("Esc",((e,t)=>{this._hideForm(!0),t()})),this.listenTo(e.ui,"update",(()=>{s(t.selection)?this._isVisible&&function(e){const t=e.plugins.get("ContextualBalloon");if(s(e.editing.view.document.selection)){const i=v(e);t.updatePosition(i)}}(e):this._hideForm(!0)})),(0,g.clickOutsideHandler)({emitter:this._form,activator:()=>this._isVisible,contextElements:[this._balloon.view.element],callback:()=>this._hideForm()})}_showForm(){if(this._isVisible)return;const e=this.editor,t=e.commands.get("mediaImageTextAlternative"),i=e.plugins.get("DrupalMediaMetadataRepository"),n=this._form.labeledInput;this._form.disableCssTransitions(),this._isInBalloon||this._balloon.add({view:this._form,position:v(e)}),n.fieldView.element.value=t.value||"",n.fieldView.value=n.fieldView.element.value,this._form.defaultAltText="";const r=e.model.document.selection.getSelectedElement();a(r)&&i.getMetadata(r).then((e=>{this._form.defaultAltText=e.imageSourceMetadata?e.imageSourceMetadata.alt:""})).catch((e=>{console.warn(e.toString())})),this._form.labeledInput.fieldView.select(),this._form.enableCssTransitions()}_hideForm(e){this._isInBalloon&&(this._form.focusTracker.isFocused&&this._form.saveButtonView.focus(),this._balloon.remove(this._form),e&&this.editor.editing.view.focus())}get _isVisible(){return this._balloon.visibleView===this._form}get _isInBalloon(){return this._balloon.hasView(this._form)}}class D extends e.Plugin{static get requires(){return[y,k]}static get pluginName(){return"MediaImageTextAlternative"}}function A(e,t,i){if(t.attributes)for(const[n,a]of Object.entries(t.attributes))e.setAttribute(n,a,i);t.styles&&e.setStyle(t.styles,i),t.classes&&e.addClass(t.classes,i)}function C(e,t,i){if(!i.consumable.consume(t.item,e.name))return;const n=i.mapper.toViewElement(t.item);A(i.writer,t.attributeNewValue,n)}class _ extends e.Plugin{constructor(e){if(super(e),!e.plugins.has("GeneralHtmlSupport"))return;e.plugins.has("DataFilter")&&e.plugins.has("DataSchema")||console.error("DataFilter and DataSchema plugins are required for Drupal Media to integrate with General HTML Support plugin.");const{schema:t}=e.model,{conversion:i}=e,n=this.editor.plugins.get("DataFilter");this.editor.plugins.get("DataSchema").registerBlockElement({model:"drupalMedia",view:"drupal-media"}),n.on("register:drupal-media",((e,a)=>{"drupalMedia"===a.model&&(t.extend("drupalMedia",{allowAttributes:["htmlLinkAttributes","htmlAttributes"]}),i.for("upcast").add(function(e){return t=>{t.on("element:drupal-media",((t,i,n)=>{function a(t,a){const r=e.processViewAttributes(t,n);r&&n.writer.setAttribute(a,r,i.modelRange)}const r=i.viewItem,o=r.parent;a(r,"htmlAttributes"),o.is("element","a")&&a(o,"htmlLinkAttributes")}),{priority:"low"})}}(n)),i.for("editingDowncast").add((e=>{e.on("attribute:linkHref:drupalMedia",((e,t,i)=>{if(!i.consumable.consume(t.item,"attribute:htmlLinkAttributes:drupalMedia"))return;const n=i.mapper.toViewElement(t.item),a=function(e,t,i){const n=e.createRangeOn(t);for(const{item:e}of n.getWalker())if(e.is("element",i))return e}(i.writer,n,"a");A(i.writer,t.item.getAttribute("htmlLinkAttributes"),a)}),{priority:"low"})})),i.for("dataDowncast").add((e=>{e.on("attribute:linkHref:drupalMedia",((e,t,i)=>{if(!i.consumable.consume(t.item,"attribute:htmlLinkAttributes:drupalMedia"))return;const n=i.mapper.toViewElement(t.item).parent;A(i.writer,t.item.getAttribute("htmlLinkAttributes"),n)}),{priority:"low"}),e.on("attribute:htmlAttributes:drupalMedia",C,{priority:"low"})})),e.stop())}))}static get pluginName(){return"DrupalMediaGeneralHtmlSupport"}}class x extends e.Plugin{static get requires(){return[p,_,h,f,D]}static get pluginName(){return"DrupalMedia"}}var V=i("ckeditor5/src/engine.js");function S(e){return Array.from(e.getChildren()).find((e=>"drupal-media"===e.name))}function T(e){return t=>{t.on(`attribute:${e.id}:drupalMedia`,((t,i,n)=>{const a=n.mapper.toViewElement(i.item);let r=Array.from(a.getChildren()).find((e=>"a"===e.name));if(r=!r&&a.is("element","a")?a:Array.from(a.getAncestors()).find((e=>"a"===e.name)),r){for(const[t,i]of(0,E.toMap)(e.attributes))n.writer.setAttribute(t,i,r);e.classes&&n.writer.addClass(e.classes,r);for(const t in e.styles)Object.prototype.hasOwnProperty.call(e.styles,t)&&n.writer.setStyle(t,e.styles[t],r)}}))}}function I(e,t){return e=>{e.on("element:a",((e,i,n)=>{const a=i.viewItem;if(!S(a))return;const r=new V.Matcher(t._createPattern()).match(a);if(!r)return;if(!n.consumable.consume(a,r.match))return;const o=i.modelCursor.nodeBefore;n.writer.setAttribute(t.id,!0,o)}),{priority:"high"})}}class L extends e.Plugin{static get requires(){return["LinkEditing","DrupalMediaEditing"]}static get pluginName(){return"DrupalLinkMediaEditing"}init(){const{editor:e}=this;e.model.schema.extend("drupalMedia",{allowAttributes:["linkHref"]}),e.conversion.for("upcast").add((e=>{e.on("element:a",((e,t,i)=>{const n=t.viewItem,a=S(n);if(!a)return;if(!i.consumable.consume(n,{attributes:["href"],name:!0}))return;const r=n.getAttribute("href");if(!r)return;const o=i.convertItem(a,t.modelCursor);t.modelRange=o.modelRange,t.modelCursor=o.modelCursor;const s=t.modelCursor.nodeBefore;s&&s.is("element","drupalMedia")&&i.writer.setAttribute("linkHref",r,s)}),{priority:"high"})})),e.conversion.for("editingDowncast").add((e=>{e.on("attribute:linkHref:drupalMedia",((e,t,i)=>{const{writer:n}=i;if(!i.consumable.consume(t.item,e.name))return;const a=i.mapper.toViewElement(t.item),r=Array.from(a.getChildren()).find((e=>"a"===e.name));if(r)t.attributeNewValue?n.setAttribute("href",t.attributeNewValue,r):(n.move(n.createRangeIn(r),n.createPositionAt(a,0)),n.remove(r));else{const e=Array.from(a.getChildren()).find((e=>e.getAttribute("data-drupal-media-preview"))),i=n.createContainerElement("a",{href:t.attributeNewValue});n.insert(n.createPositionAt(a,0),i),n.move(n.createRangeOn(e),n.createPositionAt(i,0))}}),{priority:"high"})})),e.conversion.for("dataDowncast").add((e=>{e.on("attribute:linkHref:drupalMedia",((e,t,i)=>{const{writer:n}=i;if(!i.consumable.consume(t.item,e.name))return;const a=i.mapper.toViewElement(t.item),r=n.createContainerElement("a",{href:t.attributeNewValue});n.insert(n.createPositionBefore(a),r),n.move(n.createRangeOn(a),n.createPositionAt(r,0))}),{priority:"high"})})),this._enableManualDecorators();if(e.commands.get("link").automaticDecorators.length>0)throw new Error("The Drupal Media plugin is not compatible with automatic link decorators. To use Drupal Media, disable any plugins providing automatic link decorators.")}_enableManualDecorators(){const e=this.editor,t=e.commands.get("link");for(const i of t.manualDecorators)e.model.schema.extend("drupalMedia",{allowAttributes:i.id}),e.conversion.for("downcast").add(T(i)),e.conversion.for("upcast").add(I(0,i))}}class P extends e.Plugin{static get requires(){return["LinkEditing","LinkUI","DrupalMediaEditing"]}static get pluginName(){return"DrupalLinkMediaUi"}init(){const{editor:e}=this,t=e.editing.view.document;this.listenTo(t,"click",((t,i)=>{this._isSelectedLinkedMedia(e.model.document.selection)&&(i.preventDefault(),t.stop())}),{priority:"high"}),this._createToolbarLinkMediaButton()}_createToolbarLinkMediaButton(){const{editor:e}=this;e.ui.componentFactory.add("drupalLinkMedia",(t=>{const i=new g.ButtonView(t),n=e.plugins.get("LinkUI"),a=e.commands.get("link");return i.set({isEnabled:!0,label:Drupal.t("Link media"),icon:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m11.077 15 .991-1.416a.75.75 0 1 1 1.229.86l-1.148 1.64a.748.748 0 0 1-.217.206 5.251 5.251 0 0 1-8.503-5.955.741.741 0 0 1 .12-.274l1.147-1.639a.75.75 0 1 1 1.228.86L4.933 10.7l.006.003a3.75 3.75 0 0 0 6.132 4.294l.006.004zm5.494-5.335a.748.748 0 0 1-.12.274l-1.147 1.639a.75.75 0 1 1-1.228-.86l.86-1.23a3.75 3.75 0 0 0-6.144-4.301l-.86 1.229a.75.75 0 0 1-1.229-.86l1.148-1.64a.748.748 0 0 1 .217-.206 5.251 5.251 0 0 1 8.503 5.955zm-4.563-2.532a.75.75 0 0 1 .184 1.045l-3.155 4.505a.75.75 0 1 1-1.229-.86l3.155-4.506a.75.75 0 0 1 1.045-.184z"/></svg>\n',keystroke:"Ctrl+K",tooltip:!0,isToggleable:!0}),i.bind("isEnabled").to(a,"isEnabled"),i.bind("isOn").to(a,"value",(e=>!!e)),this.listenTo(i,"execute",(()=>{this._isSelectedLinkedMedia(e.model.document.selection)?n._addActionsView():n._showUI(!0)})),i}))}_isSelectedLinkedMedia(e){const t=e.getSelectedElement();return!!t&&t.is("element","drupalMedia")&&t.hasAttribute("linkHref")}}class B extends e.Plugin{static get requires(){return[L,P]}static get pluginName(){return"DrupalLinkMedia"}}const{objectFullWidth:O,objectInline:N,objectLeft:R,objectRight:j,objectCenter:F,objectBlockLeft:U,objectBlockRight:H}=e.icons,q={get inline(){return{name:"inline",title:"In line",icon:N,modelElements:["imageInline"],isDefault:!0}},get alignLeft(){return{name:"alignLeft",title:"Left aligned image",icon:R,modelElements:["imageBlock","imageInline"],className:"image-style-align-left"}},get alignBlockLeft(){return{name:"alignBlockLeft",title:"Left aligned image",icon:U,modelElements:["imageBlock"],className:"image-style-block-align-left"}},get alignCenter(){return{name:"alignCenter",title:"Centered image",icon:F,modelElements:["imageBlock"],className:"image-style-align-center"}},get alignRight(){return{name:"alignRight",title:"Right aligned image",icon:j,modelElements:["imageBlock","imageInline"],className:"image-style-align-right"}},get alignBlockRight(){return{name:"alignBlockRight",title:"Right aligned image",icon:H,modelElements:["imageBlock"],className:"image-style-block-align-right"}},get block(){return{name:"block",title:"Centered image",icon:F,modelElements:["imageBlock"],isDefault:!0}},get side(){return{name:"side",title:"Side image",icon:j,modelElements:["imageBlock"],className:"image-style-side"}}},$={full:O,left:U,right:H,center:F,inlineLeft:R,inlineRight:j,inline:N},W=[{name:"imageStyle:wrapText",title:"Wrap text",defaultItem:"imageStyle:alignLeft",items:["imageStyle:alignLeft","imageStyle:alignRight"]},{name:"imageStyle:breakText",title:"Break text",defaultItem:"imageStyle:block",items:["imageStyle:alignBlockLeft","imageStyle:block","imageStyle:alignBlockRight"]}];function K(e){(0,E.logWarning)("image-style-configuration-definition-invalid",e)}const z={normalizeStyles:function(e){return(e.configuredStyles.options||[]).map((e=>function(e){e="string"==typeof e?q[e]?{...q[e]}:{name:e}:function(e,t){const i={...t};for(const n in e)Object.prototype.hasOwnProperty.call(t,n)||(i[n]=e[n]);return i}(q[e.name],e);"string"==typeof e.icon&&(e.icon=$[e.icon]||e.icon);return e}(e))).filter((t=>function(e,{isBlockPluginLoaded:t,isInlinePluginLoaded:i}){const{modelElements:n,name:a}=e;if(!(n&&n.length&&a))return K({style:e}),!1;{const a=[t?"imageBlock":null,i?"imageInline":null];if(!n.some((e=>a.includes(e))))return(0,E.logWarning)("image-style-missing-dependency",{style:e,missingPlugins:n.map((e=>"imageBlock"===e?"ImageBlockEditing":"ImageInlineEditing"))}),!1}return!0}(t,e)))},getDefaultStylesConfiguration:function(e,t){return e&&t?{options:["inline","alignLeft","alignRight","alignCenter","alignBlockLeft","alignBlockRight","block","side"]}:e?{options:["block","side"]}:t?{options:["inline","alignLeft","alignRight"]}:{}},getDefaultDropdownDefinitions:function(e){return e.has("ImageBlockEditing")&&e.has("ImageInlineEditing")?[...W]:[]},warnInvalidStyle:K,DEFAULT_OPTIONS:q,DEFAULT_ICONS:$,DEFAULT_DROPDOWN_DEFINITIONS:W};function Z(e,t,i){for(const n of t)if(i.checkAttribute(e,n))return!0;return!1}function G(e,t,i){const n=e.getSelectedElement();if(n&&Z(n,i,t))return n;let{parent:a}=e.getFirstPosition();for(;a;){if(a.is("element")&&Z(a,i,t))return a;a=a.parent}return null}class J extends e.Command{constructor(e,t){super(e),this.styles={},Object.keys(t).forEach((e=>{this.styles[e]=new Map(t[e].map((e=>[e.name,e])))})),this.modelAttributes=[];for(const e of Object.keys(t)){const t=u(e);this.modelAttributes.push(t)}}refresh(){const{editor:e}=this,t=G(e.model.document.selection,e.model.schema,this.modelAttributes);this.isEnabled=!!t,this.isEnabled?this.value=this.getValue(t):this.value=!1}getValue(e){const t={};return Object.keys(this.styles).forEach((i=>{const n=u(i);if(e.hasAttribute(n))t[i]=e.getAttribute(n);else for(const[,e]of this.styles[i])e.isDefault&&(t[i]=e.name)})),t}execute(e={}){const{editor:{model:t}}=this,{value:i,group:n}=e,a=u(n);t.change((e=>{const r=G(t.document.selection,t.schema,this.modelAttributes);!i||this.styles[n].get(i).isDefault?e.removeAttribute(a,r):e.setAttribute(a,i,r)}))}}function X(e,t){for(const i of t)if(i.name===e)return i}class Q extends e.Plugin{init(){const{editor:t}=this,i=t.config.get("drupalElementStyles");this.normalizedStyles={},Object.keys(i).forEach((t=>{this.normalizedStyles[t]=i[t].map((t=>("string"==typeof t.icon&&e.icons[t.icon]&&(t.icon=e.icons[t.icon]),t.name&&(t.name=`${t.name}`),t))).filter((e=>e.isDefault||e.attributeName&&e.attributeValue?e.modelElements&&Array.isArray(e.modelElements)?!!e.name||(console.warn("drupalElementStyles options must include a name."),!1):(console.warn("drupalElementStyles options must include an array of supported modelElements."),!1):(console.warn(`${e.attributeValue} drupalElementStyles options must include attributeName and attributeValue.`),!1)))})),this._setupConversion(),t.commands.add("drupalElementStyle",new J(t,this.normalizedStyles))}_setupConversion(){const{editor:e}=this,{schema:t}=e.model;Object.keys(this.normalizedStyles).forEach((i=>{const n=u(i),a=(r=this.normalizedStyles[i],(e,t,i)=>{if(!i.consumable.consume(t.item,e.name))return;const n=X(t.attributeNewValue,r),a=X(t.attributeOldValue,r),o=i.mapper.toViewElement(t.item),s=i.writer;a&&("class"===a.attributeName?s.removeClass(a.attributeValue,o):s.removeAttribute(a.attributeName,o)),n&&("class"===n.attributeName?s.addClass(n.attributeValue,o):n.isDefault||s.setAttribute(n.attributeName,n.attributeValue,o))});var r;const o=function(e,t){const i=e.filter((e=>!e.isDefault));return(e,n,a)=>{if(!n.modelRange)return;const r=n.viewItem,o=(0,E.first)(n.modelRange.getItems());if(o&&a.schema.checkAttribute(o,t))for(const e of i)if("class"===e.attributeName)a.consumable.consume(r,{classes:e.attributeValue})&&a.writer.setAttribute(t,e.name,o);else if(a.consumable.consume(r,{attributes:[e.attributeName]}))for(const e of i)e.attributeValue===r.getAttribute(e.attributeName)&&a.writer.setAttribute(t,e.name,o)}}(this.normalizedStyles[i],n);e.editing.downcastDispatcher.on(`attribute:${n}`,a),e.data.downcastDispatcher.on(`attribute:${n}`,a);[...new Set(this.normalizedStyles[i].map((e=>e.modelElements)).flat())].forEach((e=>{t.extend(e,{allowAttributes:n})})),e.data.upcastDispatcher.on("element",o,{priority:"low"})}))}static get pluginName(){return"DrupalElementStyleEditing"}}const Y=e=>e,ee=(e,t)=>(e?`${e}: `:"")+t;function te(e,t){return`drupalElementStyle:${t}:${e}`}class ie extends e.Plugin{static get requires(){return[Q]}init(){const{plugins:e}=this.editor,t=this.editor.config.get("drupalMedia.toolbar")||[],i=e.get("DrupalElementStyleEditing").normalizedStyles;Object.keys(i).forEach((e=>{i[e].forEach((t=>{this._createButton(t,e,i[e])}))}));t.filter(l).filter((e=>{const t=[];if(!e.display)return console.warn("dropdown configuration must include a display key specifying either listDropdown or splitButton."),!1;e.items.includes(e.defaultItem)||console.warn("defaultItem must be part of items in the dropdown configuration.");for(const i of e.items){const e=i.split(":")[1];t.push(e)}return!!t.every((e=>e===t[0]))||(console.warn("dropdown configuration should only contain buttons from one group."),!1)})).forEach((e=>{if(e.items.length>=2){const t=e.name.split(":")[1];switch(e.display){case"splitButton":this._createDropdown(e,i[t]);break;case"listDropdown":this._createListDropdown(e,i[t])}}}))}updateOptionVisibility(e,t,i,n){const{selection:a}=this.editor.model.document,r={};r[n]=e;const o=a?a.getSelectedElement():G(a,this.editor.model.schema,r),s=e.filter((function(e){for(const[t,i]of(0,E.toMap)(e.modelAttributes))if(o&&o.hasAttribute(t))return i.includes(o.getAttribute(t));return!0}));i.hasOwnProperty("model")?s.includes(t)?i.model.set({class:""}):i.model.set({class:"ck-hidden"}):s.includes(t)?i.set({class:""}):i.set({class:"ck-hidden"})}_createDropdown(e,t){const i=this.editor.ui.componentFactory;i.add(e.name,(n=>{let a;const{defaultItem:r,items:o,title:s}=e,l=o.filter((e=>{const i=e.split(":")[1];return t.find((({name:t})=>te(t,i)===e))})).map((e=>{const t=i.create(e);return e===r&&(a=t),t}));o.length!==l.length&&z.warnInvalidStyle({dropdown:e});const d=(0,g.createDropdown)(n,g.SplitButtonView),u=d.buttonView;return(0,g.addToolbarToDropdown)(d,l),u.set({label:ee(s,a.label),class:null,tooltip:!0}),u.bind("icon").toMany(l,"isOn",((...e)=>{const t=e.findIndex(Y);return t<0?a.icon:l[t].icon})),u.bind("label").toMany(l,"isOn",((...e)=>{const t=e.findIndex(Y);return ee(s,t<0?a.label:l[t].label)})),u.bind("isOn").toMany(l,"isOn",((...e)=>e.some(Y))),u.bind("class").toMany(l,"isOn",((...e)=>e.some(Y)?"ck-splitbutton_flatten":null)),u.on("execute",(()=>{l.some((({isOn:e})=>e))?d.isOpen=!d.isOpen:a.fire("execute")})),d.bind("isEnabled").toMany(l,"isEnabled",((...e)=>e.some(Y))),d}))}_createButton(e,t,i){const n=e.name;this.editor.ui.componentFactory.add(te(n,t),(a=>{const r=this.editor.commands.get("drupalElementStyle"),o=new g.ButtonView(a);return o.set({label:e.title,icon:e.icon,tooltip:!0,isToggleable:!0}),o.bind("isEnabled").to(r,"isEnabled"),o.bind("isOn").to(r,"value",(e=>e&&e[t]===n)),o.on("execute",this._executeCommand.bind(this,n,t)),this.listenTo(this.editor.ui,"update",(()=>{this.updateOptionVisibility(i,e,o,t)})),o}))}getDropdownListItemDefinitions(e,t,i){const n=new E.Collection;return e.forEach((t=>{const a={type:"button",model:new g.Model({group:i,commandValue:t.name,label:t.title,withText:!0,class:""})};n.add(a),this.listenTo(this.editor.ui,"update",(()=>{this.updateOptionVisibility(e,t,a,i)}))})),n}_createListDropdown(e,t){const i=this.editor.ui.componentFactory;i.add(e.name,(n=>{let a;const{defaultItem:r,items:o,title:s,defaultText:l}=e,d=e.name.split(":")[1],u=o.filter((e=>t.find((({name:t})=>te(t,d)===e)))).map((e=>{const t=i.create(e);return e===r&&(a=t),t}));o.length!==u.length&&z.warnInvalidStyle({dropdown:e});const c=(0,g.createDropdown)(n,g.DropdownButtonView),m=c.buttonView;m.set({label:ee(s,a.label),class:null,tooltip:l,withText:!0});const p=this.editor.commands.get("drupalElementStyle");return m.bind("label").to(p,"value",(e=>{if(e&&e[d])for(const i of t)if(i.name===e[d])return i.title;return l})),c.bind("isOn").to(p),c.bind("isEnabled").to(this),(0,g.addListToDropdown)(c,this.getDropdownListItemDefinitions(t,p,d)),this.listenTo(c,"execute",(e=>{this._executeCommand(e.source.commandValue,e.source.group)})),c}))}_executeCommand(e,t){this.editor.execute("drupalElementStyle",{value:e,group:t}),this.editor.editing.view.focus()}static get pluginName(){return"DrupalElementStyleUi"}}class ne extends e.Plugin{static get requires(){return[Q,ie]}static get pluginName(){return"DrupalElementStyle"}}function ae(e){const t=e.getFirstPosition().findAncestor("caption");return t&&a(t.parent)?t:null}function re(e){for(const t of e.getChildren())if(t&&t.is("element","caption"))return t;return null}class oe extends e.Command{refresh(){const e=this.editor.model.document.selection,t=e.getSelectedElement();if(!t)return this.isEnabled=!!o(e),void(this.value=!!ae(e));this.isEnabled=a(t),this.isEnabled?this.value=!!re(t):this.value=!1}execute(e={}){const{focusCaptionOnShow:t}=e;this.editor.model.change((e=>{this.value?this._hideDrupalMediaCaption(e):this._showDrupalMediaCaption(e,t)}))}_showDrupalMediaCaption(e,t){const i=this.editor.model.document.selection,n=this.editor.plugins.get("DrupalMediaCaptionEditing"),a=o(i),r=n._getSavedCaption(a)||e.createElement("caption");e.append(r,a),t&&e.setSelection(r,"in")}_hideDrupalMediaCaption(e){const t=this.editor,i=t.model.document.selection,n=t.plugins.get("DrupalMediaCaptionEditing");let a,r=i.getSelectedElement();r?a=re(r):(a=ae(i),r=o(i)),n._saveCaption(r,a),e.setSelection(r,"on"),e.remove(a)}}class se extends e.Plugin{static get requires(){return[]}static get pluginName(){return"DrupalMediaCaptionEditing"}constructor(e){super(e),this._savedCaptionsMap=new WeakMap}init(){const e=this.editor,t=e.model.schema;t.isRegistered("caption")?t.extend("caption",{allowIn:"drupalMedia"}):t.register("caption",{allowIn:"drupalMedia",allowContentOf:"$block",isLimit:!0}),e.commands.add("toggleMediaCaption",new oe(e)),this._setupConversion()}_setupConversion(){const e=this.editor,i=e.editing.view;var n;e.conversion.for("upcast").add(function(e){const t=(t,i,n)=>{const{viewItem:a}=i,{writer:r,consumable:o}=n;if(!i.modelRange||!o.consume(a,{attributes:["data-caption"]}))return;const s=r.createElement("caption"),l=i.modelRange.start.nodeAfter,d=e.data.processor.toView(a.getAttribute("data-caption")),u=r.createDocumentFragment();n.consumable.constructor.createFrom(d,n.consumable),n.convertChildren(d,u);for(const e of Array.from(u.getChildren()))r.append(e,s);r.append(s,l)};return e=>{e.on("element:drupal-media",t,{priority:"low"})}}(e)),e.conversion.for("editingDowncast").elementToElement({model:"caption",view:(e,{writer:n})=>{if(!a(e.parent))return null;const r=n.createEditableElement("figcaption");return(0,V.enablePlaceholder)({view:i,element:r,text:Drupal.t("Enter media caption"),keepOnFocus:!0}),(0,t.toWidgetEditable)(r,n)}}),e.editing.mapper.on("modelToViewPosition",(n=i,(e,t)=>{const i=t.modelPosition,r=i.parent;if(!a(r))return;const o=t.mapper.toViewElement(r);t.viewPosition=n.createPositionAt(o,i.offset+1)})),e.conversion.for("dataDowncast").add(function(e){return t=>{t.on("insert:caption",((t,i,n)=>{const{consumable:r,writer:o,mapper:s}=n;if(!a(i.item.parent)||!r.consume(i.item,"insert"))return;const l=e.model.createRangeIn(i.item),d=o.createDocumentFragment();s.bindElements(i.item,d);for(const{item:t}of Array.from(l)){const i={item:t,range:e.model.createRangeOn(t)},a=`insert:${t.name||"$text"}`;e.data.downcastDispatcher.fire(a,i,n);for(const a of t.getAttributeKeys())Object.assign(i,{attributeKey:a,attributeOldValue:null,attributeNewValue:i.item.getAttribute(a)}),e.data.downcastDispatcher.fire(`attribute:${a}`,i,n)}for(const e of o.createRangeIn(d).getItems())s.unbindViewElement(e);s.unbindViewElement(d);const u=e.data.processor.toData(d);if(u){const e=s.toViewElement(i.item.parent);o.setAttribute("data-caption",u,e)}}))}}(e))}_getSavedCaption(e){const t=this._savedCaptionsMap.get(e);return t?V.Element.fromJSON(t):null}_saveCaption(e,t){this._savedCaptionsMap.set(e,t.toJSON())}}class le extends e.Plugin{static get requires(){return[]}static get pluginName(){return"DrupalMediaCaptionUI"}init(){const{editor:t}=this,i=t.editing.view;t.ui.componentFactory.add("toggleDrupalMediaCaption",(n=>{const a=new g.ButtonView(n),r=t.commands.get("toggleMediaCaption");return a.set({label:Drupal.t("Caption media"),icon:e.icons.caption,tooltip:!0,isToggleable:!0}),a.bind("isOn","isEnabled").to(r,"value","isEnabled"),a.bind("label").to(r,"value",(e=>e?Drupal.t("Toggle caption off"):Drupal.t("Toggle caption on"))),this.listenTo(a,"execute",(()=>{t.execute("toggleMediaCaption",{focusCaptionOnShow:!0});const e=ae(t.model.document.selection);if(e){const n=t.editing.mapper.toViewElement(e);i.scrollToTheSelection(),i.change((e=>{e.addClass("drupal-media__caption_highlighted",n)}))}t.editing.view.focus()})),a}))}}class de extends e.Plugin{static get requires(){return[se,le]}static get pluginName(){return"DrupalMediaCaption"}}const ue={DrupalMedia:x,MediaImageTextAlternative:D,MediaImageTextAlternativeEditing:y,MediaImageTextAlternativeUi:k,DrupalLinkMedia:B,DrupalMediaCaption:de,DrupalElementStyle:ne}})(),n=n.default})()));
\ No newline at end of file
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.CKEditor5=t():(e.CKEditor5=e.CKEditor5||{},e.CKEditor5.drupalMedia=t())}(globalThis,(()=>(()=>{var e={"ckeditor5/src/core.js":(e,t,i)=>{e.exports=i("dll-reference CKEditor5.dll")("./src/core.js")},"ckeditor5/src/engine.js":(e,t,i)=>{e.exports=i("dll-reference CKEditor5.dll")("./src/engine.js")},"ckeditor5/src/ui.js":(e,t,i)=>{e.exports=i("dll-reference CKEditor5.dll")("./src/ui.js")},"ckeditor5/src/utils.js":(e,t,i)=>{e.exports=i("dll-reference CKEditor5.dll")("./src/utils.js")},"ckeditor5/src/widget.js":(e,t,i)=>{e.exports=i("dll-reference CKEditor5.dll")("./src/widget.js")},"dll-reference CKEditor5.dll":e=>{"use strict";e.exports=CKEditor5.dll}},t={};function i(n){var a=t[n];if(void 0!==a)return a.exports;var r=t[n]={exports:{}};return e[n](r,r.exports,i),r.exports}i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var n={};return(()=>{"use strict";i.d(n,{default:()=>ue});var e=i("ckeditor5/src/core.js"),t=i("ckeditor5/src/widget.js");function a(e){return!!e&&e.is("element","drupalMedia")}function r(e){return(0,t.isWidget)(e)&&!!e.getCustomProperty("drupalMedia")}function o(e){const t=e.getSelectedElement();return a(t)?t:e.getFirstPosition().findAncestor("drupalMedia")}function s(e){const t=e.getSelectedElement();if(t&&r(t))return t;let i=e.getFirstPosition().parent;for(;i;){if(i.is("element")&&r(i))return i;i=i.parent}return null}function l(e){const t=typeof e;return null!=e&&("object"===t||"function"===t)}function d(e){for(const t of e){if(t.hasAttribute("data-drupal-media-preview"))return t;if(t.childCount){const e=d(t.getChildren());if(e)return e}}return null}function u(e){return`drupalElementStyle${e[0].toUpperCase()+e.substring(1)}`}class c extends e.Command{execute(e){const t=this.editor.plugins.get("DrupalMediaEditing"),i=Object.entries(t.attrs).reduce(((e,[t,i])=>(e[i]=t,e)),{}),n=Object.keys(e).reduce(((t,n)=>(i[n]&&(t[i[n]]=e[n]),t)),{});if(this.editor.plugins.has("DrupalElementStyleEditing")){const t=this.editor.plugins.get("DrupalElementStyleEditing"),{normalizedStyles:i}=t;for(const a of Object.keys(i))for(const i of t.normalizedStyles[a])if(e[i.attributeName]&&i.attributeValue===e[i.attributeName]){const e=u(a);n[e]=i.name}}this.editor.model.change((e=>{this.editor.model.insertContent(function(e,t){return e.createElement("drupalMedia",t)}(e,n))}))}refresh(){const e=this.editor.model,t=e.document.selection,i=e.schema.findAllowedParent(t.getFirstPosition(),"drupalMedia");this.isEnabled=null!==i}}const m="METADATA_ERROR";class p extends e.Plugin{static get requires(){return[t.Widget]}constructor(e){super(e),this.attrs={drupalMediaAlt:"alt",drupalMediaEntityType:"data-entity-type",drupalMediaEntityUuid:"data-entity-uuid"},this.converterAttributes=["drupalMediaEntityUuid","drupalElementStyleViewMode","drupalMediaEntityType","drupalMediaAlt"]}init(){const e=this.editor.config.get("drupalMedia");if(!e)return;const{previewURL:t,themeError:i}=e;this.previewUrl=t,this.labelError=Drupal.t("Preview failed"),this.themeError=i||`\n      <p>${Drupal.t("An error occurred while trying to preview the media. Please save your work and reload this page.")}<p>\n    `,this._defineSchema(),this._defineConverters(),this._defineListeners(),this.editor.commands.add("insertDrupalMedia",new c(this.editor))}upcastDrupalMediaIsImage(e){const{model:t,plugins:i}=this.editor;i.get("DrupalMediaMetadataRepository").getMetadata(e).then((i=>{e&&t.enqueueChange({isUndoable:!1},(t=>{t.setAttribute("drupalMediaIsImage",!!i.imageSourceMetadata,e)}))})).catch((i=>{e&&(console.warn(i.toString()),t.enqueueChange({isUndoable:!1},(t=>{t.setAttribute("drupalMediaIsImage",m,e)})))}))}upcastDrupalMediaType(e){this.editor.plugins.get("DrupalMediaMetadataRepository").getMetadata(e).then((t=>{e&&this.editor.model.enqueueChange({isUndoable:!1},(i=>{i.setAttribute("drupalMediaType",t.type,e)}))})).catch((t=>{e&&(console.warn(t.toString()),this.editor.model.enqueueChange({isUndoable:!1},(t=>{t.setAttribute("drupalMediaType",m,e)})))}))}async _fetchPreview(e){const t={text:this._renderElement(e),uuid:e.getAttribute("drupalMediaEntityUuid")},i=await fetch(`${this.previewUrl}?${new URLSearchParams(t)}`,{headers:{"X-Drupal-MediaPreview-CSRF-Token":this.editor.config.get("drupalMedia").previewCsrfToken}});if(i.ok){return{label:i.headers.get("drupal-media-label"),preview:await i.text()}}return{label:this.labelError,preview:this.themeError}}_defineSchema(){this.editor.model.schema.register("drupalMedia",{allowWhere:"$block",isObject:!0,isContent:!0,isBlock:!0,allowAttributes:Object.keys(this.attrs)}),this.editor.editing.view.domConverter.blockElements.push("drupal-media")}_defineConverters(){const e=this.editor.conversion,i=this.editor.plugins.get("DrupalMediaMetadataRepository");e.for("upcast").elementToElement({view:{name:"drupal-media"},model:"drupalMedia"}).add((e=>{e.on("element:drupal-media",((e,t)=>{const[n]=t.modelRange.getItems();i.getMetadata(n).then((e=>{n&&(this.upcastDrupalMediaIsImage(n),this.editor.model.enqueueChange({isUndoable:!1},(t=>{t.setAttribute("drupalMediaType",e.type,n)})))})).catch((e=>{console.warn(e.toString())}))}),{priority:"lowest"})})),e.for("dataDowncast").elementToElement({model:"drupalMedia",view:{name:"drupal-media"}}),e.for("editingDowncast").elementToElement({model:"drupalMedia",view:(e,{writer:i})=>{const n=i.createContainerElement("figure",{class:"drupal-media"});if(!this.previewUrl){const e=i.createRawElement("div",{"data-drupal-media-preview":"unavailable"});i.insert(i.createPositionAt(n,0),e)}return i.setCustomProperty("drupalMedia",!0,n),(0,t.toWidget)(n,i,{label:Drupal.t("Media widget")})}}).add((e=>{const t=(e,t,i)=>{const n=i.writer,a=t.item,r=i.mapper.toViewElement(t.item);let o=d(r.getChildren());if(o){if("ready"!==o.getAttribute("data-drupal-media-preview"))return;n.setAttribute("data-drupal-media-preview","loading",o)}else o=n.createRawElement("div",{"data-drupal-media-preview":"loading"}),n.insert(n.createPositionAt(r,0),o);this._fetchPreview(a).then((({label:e,preview:t})=>{o&&this.editor.editing.view.change((i=>{const n=i.createRawElement("div",{"data-drupal-media-preview":"ready","aria-label":e},(e=>{e.innerHTML=t}));i.insert(i.createPositionBefore(o),n),i.remove(o)}))}))};return this.converterAttributes.forEach((i=>{e.on(`attribute:${i}:drupalMedia`,t)})),e})),e.for("editingDowncast").add((e=>{e.on("attribute:drupalElementStyleAlign:drupalMedia",((e,t,i)=>{const n={left:"drupal-media-style-align-left",right:"drupal-media-style-align-right",center:"drupal-media-style-align-center"},a=i.mapper.toViewElement(t.item),r=i.writer;n[t.attributeOldValue]&&r.removeClass(n[t.attributeOldValue],a),n[t.attributeNewValue]&&i.consumable.consume(t.item,e.name)&&r.addClass(n[t.attributeNewValue],a)}))})),Object.keys(this.attrs).forEach((t=>{const i={model:{key:t,name:"drupalMedia"},view:{name:"drupal-media",key:this.attrs[t]}};e.for("dataDowncast").attributeToAttribute(i),e.for("upcast").attributeToAttribute(i)}))}_defineListeners(){this.editor.model.on("insertContent",((e,[t])=>{a(t)&&(this.upcastDrupalMediaIsImage(t),this.upcastDrupalMediaType(t))}))}_renderElement(e){const t=this.editor.model.change((t=>{const i=t.createDocumentFragment(),n=t.cloneElement(e,!1);return["linkHref"].forEach((e=>{t.removeAttribute(e,n)})),t.append(n,i),i}));return this.editor.data.stringify(t)}static get pluginName(){return"DrupalMediaEditing"}}var g=i("ckeditor5/src/ui.js");class h extends e.Plugin{init(){const e=this.editor,t=this.editor.config.get("drupalMedia");if(!t)return;const{libraryURL:i,openDialog:n,dialogSettings:a={}}=t;i&&"function"==typeof n&&e.ui.componentFactory.add("drupalMedia",(t=>{const r=e.commands.get("insertDrupalMedia"),o=new g.ButtonView(t);return o.set({label:Drupal.t("Insert Drupal Media"),icon:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M19.1873 4.86414L10.2509 6.86414V7.02335H10.2499V15.5091C9.70972 15.1961 9.01793 15.1048 8.34069 15.3136C7.12086 15.6896 6.41013 16.8967 6.75322 18.0096C7.09631 19.1226 8.3633 19.72 9.58313 19.344C10.6666 19.01 11.3484 18.0203 11.2469 17.0234H11.2499V9.80173L18.1803 8.25067V14.3868C17.6401 14.0739 16.9483 13.9825 16.2711 14.1913C15.0513 14.5674 14.3406 15.7744 14.6836 16.8875C15.0267 18.0004 16.2937 18.5978 17.5136 18.2218C18.597 17.8877 19.2788 16.8982 19.1773 15.9011H19.1803V8.02687L19.1873 8.0253V4.86414Z"/><path fill-rule="evenodd" clip-rule="evenodd" d="M13.5039 0.743652H0.386932V12.1603H13.5039V0.743652ZM12.3379 1.75842H1.55289V11.1454H1.65715L4.00622 8.86353L6.06254 10.861L9.24985 5.91309L11.3812 9.22179L11.7761 8.6676L12.3379 9.45621V1.75842ZM6.22048 4.50869C6.22048 5.58193 5.35045 6.45196 4.27722 6.45196C3.20398 6.45196 2.33395 5.58193 2.33395 4.50869C2.33395 3.43546 3.20398 2.56543 4.27722 2.56543C5.35045 2.56543 6.22048 3.43546 6.22048 4.50869Z"/></svg>\n',tooltip:!0}),o.bind("isOn","isEnabled").to(r,"value","isEnabled"),this.listenTo(o,"execute",(()=>{n(i,(({attributes:t})=>{e.execute("insertDrupalMedia",t)}),a)})),o}))}}class f extends e.Plugin{static get requires(){return[t.WidgetToolbarRepository]}static get pluginName(){return"DrupalMediaToolbar"}afterInit(){const{editor:e}=this;var i;e.plugins.get(t.WidgetToolbarRepository).register("drupalMedia",{ariaLabel:Drupal.t("Drupal Media toolbar"),items:(i=e.config.get("drupalMedia.toolbar"),i.map((e=>l(e)?e.name:e))||[]),getRelatedElement:e=>s(e)})}}class b extends e.Command{refresh(){const e=o(this.editor.model.document.selection);this.isEnabled=!!e&&e.getAttribute("drupalMediaIsImage")&&e.getAttribute("drupalMediaIsImage")!==m,this.isEnabled?this.value=e.getAttribute("drupalMediaAlt"):this.value=!1}execute(e){const{model:t}=this.editor,i=o(t.document.selection);e.newValue=e.newValue.trim(),t.change((t=>{e.newValue.length>0?t.setAttribute("drupalMediaAlt",e.newValue,i):t.removeAttribute("drupalMediaAlt",i)}))}}class w extends e.Plugin{init(){this._data=new WeakMap}getMetadata(e){if(this._data.get(e))return new Promise((t=>{t(this._data.get(e))}));const t=this.editor.config.get("drupalMedia");if(!t)return new Promise(((e,t)=>{t(new Error("drupalMedia configuration is required for parsing metadata."))}));if(!e.hasAttribute("drupalMediaEntityUuid"))return new Promise(((e,t)=>{t(new Error("drupalMedia element must have drupalMediaEntityUuid attribute to retrieve metadata."))}));const{metadataUrl:i}=t;return(async e=>{const t=await fetch(e);if(t.ok)return JSON.parse(await t.text());throw new Error("Fetching media embed metadata from the server failed.")})(`${i}&${new URLSearchParams({uuid:e.getAttribute("drupalMediaEntityUuid")})}`).then((t=>(this._data.set(e,t),t)))}static get pluginName(){return"DrupalMediaMetadataRepository"}}class y extends e.Plugin{static get requires(){return[w]}static get pluginName(){return"MediaImageTextAlternativeEditing"}init(){const{editor:e,editor:{model:t,conversion:i}}=this;t.schema.extend("drupalMedia",{allowAttributes:["drupalMediaIsImage"]}),i.for("editingDowncast").add((e=>{e.on("attribute:drupalMediaIsImage",((e,t,i)=>{const{writer:n,mapper:a}=i,r=a.toViewElement(t.item);if(t.attributeNewValue!==m){const e=Array.from(r.getChildren()).find((e=>e.getCustomProperty("drupalMediaMetadataError")));return void(e&&(n.setCustomProperty("widgetLabel",e.getCustomProperty("drupalMediaOriginalWidgetLabel"),e),n.removeElement(e)))}const o=Drupal.t("Not all functionality may be available because some information could not be retrieved."),s=new g.Template({tag:"span",children:[{tag:"span",attributes:{class:"drupal-media__metadata-error-icon","data-cke-tooltip-text":o}}]}).render(),l=n.createRawElement("div",{class:"drupal-media__metadata-error"},((e,t)=>{t.setContentOf(e,s.outerHTML)}));n.setCustomProperty("drupalMediaMetadataError",!0,l);const d=r.getCustomProperty("widgetLabel");n.setCustomProperty("drupalMediaOriginalWidgetLabel",d,l),n.setCustomProperty("widgetLabel",`${d} (${o})`,r),n.insert(n.createPositionAt(r,0),l)}),{priority:"low"})})),e.commands.add("mediaImageTextAlternative",new b(this.editor))}}function v(e){const t=e.editing.view,i=g.BalloonPanelView.defaultPositions;return{target:t.domConverter.viewToDom(t.document.selection.getSelectedElement()),positions:[i.northArrowSouth,i.northArrowSouthWest,i.northArrowSouthEast,i.southArrowNorth,i.southArrowNorthWest,i.southArrowNorthEast]}}var E=i("ckeditor5/src/utils.js");class M extends g.View{constructor(t){super(t),this.focusTracker=new E.FocusTracker,this.keystrokes=new E.KeystrokeHandler,this.labeledInput=this._createLabeledInputView(),this.set("defaultAltText",void 0),this.defaultAltTextView=this._createDefaultAltTextView(),this.saveButtonView=this._createButton(Drupal.t("Save"),e.icons.check,"ck-button-save"),this.saveButtonView.type="submit",this.cancelButtonView=this._createButton(Drupal.t("Cancel"),e.icons.cancel,"ck-button-cancel","cancel"),this._focusables=new g.ViewCollection,this._focusCycler=new g.FocusCycler({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"form",attributes:{class:["ck","ck-media-alternative-text-form","ck-vertical-form"],tabindex:"-1"},children:[this.defaultAltTextView,this.labeledInput,this.saveButtonView,this.cancelButtonView]}),(0,g.injectCssTransitionDisabler)(this)}render(){super.render(),this.keystrokes.listenTo(this.element),(0,g.submitHandler)({view:this}),[this.labeledInput,this.saveButtonView,this.cancelButtonView].forEach((e=>{this._focusables.add(e),this.focusTracker.add(e.element)}))}_createButton(e,t,i,n){const a=new g.ButtonView(this.locale);return a.set({label:e,icon:t,tooltip:!0}),a.extendTemplate({attributes:{class:i}}),n&&a.delegate("execute").to(this,n),a}_createLabeledInputView(){const e=new g.LabeledFieldView(this.locale,g.createLabeledInputText);return e.label=Drupal.t("Alternative text override"),e}_createDefaultAltTextView(){const e=g.Template.bind(this,this);return new g.Template({tag:"div",attributes:{class:["ck-media-alternative-text-form__default-alt-text",e.if("defaultAltText","ck-hidden",(e=>!e))]},children:[{tag:"strong",attributes:{class:"ck-media-alternative-text-form__default-alt-text-label"},children:[Drupal.t("Default alternative text:")]}," ",{tag:"span",attributes:{class:"ck-media-alternative-text-form__default-alt-text-value"},children:[{text:[e.to("defaultAltText")]}]}]})}}class k extends e.Plugin{static get requires(){return[g.ContextualBalloon]}static get pluginName(){return"MediaImageTextAlternativeUi"}init(){this._createButton(),this._createForm()}destroy(){super.destroy(),this._form.destroy()}_createButton(){const t=this.editor;t.ui.componentFactory.add("mediaImageTextAlternative",(i=>{const n=t.commands.get("mediaImageTextAlternative"),a=new g.ButtonView(i);return a.set({label:Drupal.t("Override media image alternative text"),icon:e.icons.lowVision,tooltip:!0}),a.bind("isVisible").to(n,"isEnabled"),this.listenTo(a,"execute",(()=>{this._showForm()})),a}))}_createForm(){const e=this.editor,t=e.editing.view.document;this._balloon=this.editor.plugins.get("ContextualBalloon"),this._form=new M(e.locale),this._form.render(),this.listenTo(this._form,"submit",(()=>{e.execute("mediaImageTextAlternative",{newValue:this._form.labeledInput.fieldView.element.value}),this._hideForm(!0)})),this.listenTo(this._form,"cancel",(()=>{this._hideForm(!0)})),this._form.keystrokes.set("Esc",((e,t)=>{this._hideForm(!0),t()})),this.listenTo(e.ui,"update",(()=>{s(t.selection)?this._isVisible&&function(e){const t=e.plugins.get("ContextualBalloon");if(s(e.editing.view.document.selection)){const i=v(e);t.updatePosition(i)}}(e):this._hideForm(!0)})),(0,g.clickOutsideHandler)({emitter:this._form,activator:()=>this._isVisible,contextElements:[this._balloon.view.element],callback:()=>this._hideForm()})}_showForm(){if(this._isVisible)return;const e=this.editor,t=e.commands.get("mediaImageTextAlternative"),i=e.plugins.get("DrupalMediaMetadataRepository"),n=this._form.labeledInput;this._form.disableCssTransitions(),this._isInBalloon||this._balloon.add({view:this._form,position:v(e)}),n.fieldView.element.value=t.value||"",n.fieldView.value=n.fieldView.element.value,this._form.defaultAltText="";const r=e.model.document.selection.getSelectedElement();a(r)&&i.getMetadata(r).then((e=>{this._form.defaultAltText=e.imageSourceMetadata?e.imageSourceMetadata.alt:""})).catch((e=>{console.warn(e.toString())})),this._form.labeledInput.fieldView.select(),this._form.enableCssTransitions()}_hideForm(e){this._isInBalloon&&(this._form.focusTracker.isFocused&&this._form.saveButtonView.focus(),this._balloon.remove(this._form),e&&this.editor.editing.view.focus())}get _isVisible(){return this._balloon.visibleView===this._form}get _isInBalloon(){return this._balloon.hasView(this._form)}}class D extends e.Plugin{static get requires(){return[y,k]}static get pluginName(){return"MediaImageTextAlternative"}}function A(e,t,i){if(t.attributes)for(const[n,a]of Object.entries(t.attributes))e.setAttribute(n,a,i);t.styles&&e.setStyle(t.styles,i),t.classes&&e.addClass(t.classes,i)}function C(e,t,i){if(!i.consumable.consume(t.item,e.name))return;const n=i.mapper.toViewElement(t.item);A(i.writer,t.attributeNewValue,n)}class _ extends e.Plugin{constructor(e){if(super(e),!e.plugins.has("GeneralHtmlSupport"))return;e.plugins.has("DataFilter")&&e.plugins.has("DataSchema")||console.error("DataFilter and DataSchema plugins are required for Drupal Media to integrate with General HTML Support plugin.");const{schema:t}=e.model,{conversion:i}=e,n=this.editor.plugins.get("DataFilter");this.editor.plugins.get("DataSchema").registerBlockElement({model:"drupalMedia",view:"drupal-media"}),n.on("register:drupal-media",((e,a)=>{"drupalMedia"===a.model&&(t.extend("drupalMedia",{allowAttributes:["htmlLinkAttributes","htmlAttributes"]}),i.for("upcast").add(function(e){return t=>{t.on("element:drupal-media",((t,i,n)=>{function a(t,a){const r=e.processViewAttributes(t,n);r&&n.writer.setAttribute(a,r,i.modelRange)}const r=i.viewItem,o=r.parent;a(r,"htmlAttributes"),o.is("element","a")&&a(o,"htmlLinkAttributes")}),{priority:"low"})}}(n)),i.for("editingDowncast").add((e=>{e.on("attribute:linkHref:drupalMedia",((e,t,i)=>{if(!i.consumable.consume(t.item,"attribute:htmlLinkAttributes:drupalMedia"))return;const n=i.mapper.toViewElement(t.item),a=function(e,t,i){const n=e.createRangeOn(t);for(const{item:e}of n.getWalker())if(e.is("element",i))return e}(i.writer,n,"a");A(i.writer,t.item.getAttribute("htmlLinkAttributes"),a)}),{priority:"low"})})),i.for("dataDowncast").add((e=>{e.on("attribute:linkHref:drupalMedia",((e,t,i)=>{if(!i.consumable.consume(t.item,"attribute:htmlLinkAttributes:drupalMedia"))return;const n=i.mapper.toViewElement(t.item).parent;A(i.writer,t.item.getAttribute("htmlLinkAttributes"),n)}),{priority:"low"}),e.on("attribute:htmlAttributes:drupalMedia",C,{priority:"low"})})),e.stop())}))}static get pluginName(){return"DrupalMediaGeneralHtmlSupport"}}class x extends e.Plugin{static get requires(){return[p,_,h,f,D]}static get pluginName(){return"DrupalMedia"}}var V=i("ckeditor5/src/engine.js");function S(e){return Array.from(e.getChildren()).find((e=>"drupal-media"===e.name))}function T(e){return t=>{t.on(`attribute:${e.id}:drupalMedia`,((t,i,n)=>{const a=n.mapper.toViewElement(i.item);let r=Array.from(a.getChildren()).find((e=>"a"===e.name));if(r=!r&&a.is("element","a")?a:Array.from(a.getAncestors()).find((e=>"a"===e.name)),r){for(const[t,i]of(0,E.toMap)(e.attributes))n.writer.setAttribute(t,i,r);e.classes&&n.writer.addClass(e.classes,r);for(const t in e.styles)Object.prototype.hasOwnProperty.call(e.styles,t)&&n.writer.setStyle(t,e.styles[t],r)}}))}}function I(e,t){return e=>{e.on("element:a",((e,i,n)=>{const a=i.viewItem;if(!S(a))return;const r=new V.Matcher(t._createPattern()).match(a);if(!r)return;if(!n.consumable.consume(a,r.match))return;const o=i.modelCursor.nodeBefore;n.writer.setAttribute(t.id,!0,o)}),{priority:"high"})}}class L extends e.Plugin{static get requires(){return["LinkEditing","DrupalMediaEditing"]}static get pluginName(){return"DrupalLinkMediaEditing"}init(){const{editor:e}=this;e.model.schema.extend("drupalMedia",{allowAttributes:["linkHref"]}),e.conversion.for("upcast").add((e=>{e.on("element:a",((e,t,i)=>{const n=t.viewItem,a=S(n);if(!a)return;if(!i.consumable.consume(n,{attributes:["href"],name:!0}))return;const r=n.getAttribute("href");if(!r)return;const o=i.convertItem(a,t.modelCursor);t.modelRange=o.modelRange,t.modelCursor=o.modelCursor;const s=t.modelCursor.nodeBefore;s&&s.is("element","drupalMedia")&&i.writer.setAttribute("linkHref",r,s)}),{priority:"high"})})),e.conversion.for("editingDowncast").add((e=>{e.on("attribute:linkHref:drupalMedia",((e,t,i)=>{const{writer:n}=i;if(!i.consumable.consume(t.item,e.name))return;const a=i.mapper.toViewElement(t.item),r=Array.from(a.getChildren()).find((e=>"a"===e.name));if(r)t.attributeNewValue?n.setAttribute("href",t.attributeNewValue,r):(n.move(n.createRangeIn(r),n.createPositionAt(a,0)),n.remove(r));else{const e=Array.from(a.getChildren()).find((e=>e.getAttribute("data-drupal-media-preview"))),i=n.createContainerElement("a",{href:t.attributeNewValue});n.insert(n.createPositionAt(a,0),i),n.move(n.createRangeOn(e),n.createPositionAt(i,0))}}),{priority:"high"})})),e.conversion.for("dataDowncast").add((e=>{e.on("attribute:linkHref:drupalMedia",((e,t,i)=>{const{writer:n}=i;if(!i.consumable.consume(t.item,e.name))return;const a=i.mapper.toViewElement(t.item),r=n.createContainerElement("a",{href:t.attributeNewValue});n.insert(n.createPositionBefore(a),r),n.move(n.createRangeOn(a),n.createPositionAt(r,0))}),{priority:"high"})})),this._enableManualDecorators();if(e.commands.get("link").automaticDecorators.length>0)throw new Error("The Drupal Media plugin is not compatible with automatic link decorators. To use Drupal Media, disable any plugins providing automatic link decorators.")}_enableManualDecorators(){const e=this.editor,t=e.commands.get("link");for(const i of t.manualDecorators)e.model.schema.extend("drupalMedia",{allowAttributes:i.id}),e.conversion.for("downcast").add(T(i)),e.conversion.for("upcast").add(I(0,i))}}class P extends e.Plugin{static get requires(){return["LinkEditing","LinkUI","DrupalMediaEditing"]}static get pluginName(){return"DrupalLinkMediaUi"}init(){const{editor:e}=this,t=e.editing.view.document;this.listenTo(t,"click",((t,i)=>{this._isSelectedLinkedMedia(e.model.document.selection)&&(i.preventDefault(),t.stop())}),{priority:"high"}),this._createToolbarLinkMediaButton()}_createToolbarLinkMediaButton(){const{editor:e}=this;e.ui.componentFactory.add("drupalLinkMedia",(t=>{const i=new g.ButtonView(t),n=e.plugins.get("LinkUI"),a=e.commands.get("link");return i.set({isEnabled:!0,label:Drupal.t("Link media"),icon:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m11.077 15 .991-1.416a.75.75 0 1 1 1.229.86l-1.148 1.64a.748.748 0 0 1-.217.206 5.251 5.251 0 0 1-8.503-5.955.741.741 0 0 1 .12-.274l1.147-1.639a.75.75 0 1 1 1.228.86L4.933 10.7l.006.003a3.75 3.75 0 0 0 6.132 4.294l.006.004zm5.494-5.335a.748.748 0 0 1-.12.274l-1.147 1.639a.75.75 0 1 1-1.228-.86l.86-1.23a3.75 3.75 0 0 0-6.144-4.301l-.86 1.229a.75.75 0 0 1-1.229-.86l1.148-1.64a.748.748 0 0 1 .217-.206 5.251 5.251 0 0 1 8.503 5.955zm-4.563-2.532a.75.75 0 0 1 .184 1.045l-3.155 4.505a.75.75 0 1 1-1.229-.86l3.155-4.506a.75.75 0 0 1 1.045-.184z"/></svg>\n',keystroke:"Ctrl+K",tooltip:!0,isToggleable:!0}),i.bind("isEnabled").to(a,"isEnabled"),i.bind("isOn").to(a,"value",(e=>!!e)),this.listenTo(i,"execute",(()=>{this._isSelectedLinkedMedia(e.model.document.selection)?n._addActionsView():n._showUI(!0)})),i}))}_isSelectedLinkedMedia(e){const t=e.getSelectedElement();return!!t&&t.is("element","drupalMedia")&&t.hasAttribute("linkHref")}}class B extends e.Plugin{static get requires(){return[L,P]}static get pluginName(){return"DrupalLinkMedia"}}const{objectFullWidth:O,objectInline:N,objectLeft:R,objectRight:j,objectCenter:F,objectBlockLeft:U,objectBlockRight:H}=e.icons,$={get inline(){return{name:"inline",title:"In line",icon:N,modelElements:["imageInline"],isDefault:!0}},get alignLeft(){return{name:"alignLeft",title:"Left aligned image",icon:R,modelElements:["imageBlock","imageInline"],className:"image-style-align-left"}},get alignBlockLeft(){return{name:"alignBlockLeft",title:"Left aligned image",icon:U,modelElements:["imageBlock"],className:"image-style-block-align-left"}},get alignCenter(){return{name:"alignCenter",title:"Centered image",icon:F,modelElements:["imageBlock"],className:"image-style-align-center"}},get alignRight(){return{name:"alignRight",title:"Right aligned image",icon:j,modelElements:["imageBlock","imageInline"],className:"image-style-align-right"}},get alignBlockRight(){return{name:"alignBlockRight",title:"Right aligned image",icon:H,modelElements:["imageBlock"],className:"image-style-block-align-right"}},get block(){return{name:"block",title:"Centered image",icon:F,modelElements:["imageBlock"],isDefault:!0}},get side(){return{name:"side",title:"Side image",icon:j,modelElements:["imageBlock"],className:"image-style-side"}}},q={full:O,left:U,right:H,center:F,inlineLeft:R,inlineRight:j,inline:N},W=[{name:"imageStyle:wrapText",title:"Wrap text",defaultItem:"imageStyle:alignLeft",items:["imageStyle:alignLeft","imageStyle:alignRight"]},{name:"imageStyle:breakText",title:"Break text",defaultItem:"imageStyle:block",items:["imageStyle:alignBlockLeft","imageStyle:block","imageStyle:alignBlockRight"]}];function K(e){(0,E.logWarning)("image-style-configuration-definition-invalid",e)}const z={normalizeStyles:function(e){return(e.configuredStyles.options||[]).map((e=>function(e){e="string"==typeof e?$[e]?{...$[e]}:{name:e}:function(e,t){const i={...t};for(const n in e)Object.prototype.hasOwnProperty.call(t,n)||(i[n]=e[n]);return i}($[e.name],e);"string"==typeof e.icon&&(e.icon=q[e.icon]||e.icon);return e}(e))).filter((t=>function(e,{isBlockPluginLoaded:t,isInlinePluginLoaded:i}){const{modelElements:n,name:a}=e;if(!(n&&n.length&&a))return K({style:e}),!1;{const a=[t?"imageBlock":null,i?"imageInline":null];if(!n.some((e=>a.includes(e))))return(0,E.logWarning)("image-style-missing-dependency",{style:e,missingPlugins:n.map((e=>"imageBlock"===e?"ImageBlockEditing":"ImageInlineEditing"))}),!1}return!0}(t,e)))},getDefaultStylesConfiguration:function(e,t){return e&&t?{options:["inline","alignLeft","alignRight","alignCenter","alignBlockLeft","alignBlockRight","block","side"]}:e?{options:["block","side"]}:t?{options:["inline","alignLeft","alignRight"]}:{}},getDefaultDropdownDefinitions:function(e){return e.has("ImageBlockEditing")&&e.has("ImageInlineEditing")?[...W]:[]},warnInvalidStyle:K,DEFAULT_OPTIONS:$,DEFAULT_ICONS:q,DEFAULT_DROPDOWN_DEFINITIONS:W};function Z(e,t,i){for(const n of t)if(i.checkAttribute(e,n))return!0;return!1}function G(e,t,i){const n=e.getSelectedElement();if(n&&Z(n,i,t))return n;let{parent:a}=e.getFirstPosition();for(;a;){if(a.is("element")&&Z(a,i,t))return a;a=a.parent}return null}class J extends e.Command{constructor(e,t){super(e),this.styles={},Object.keys(t).forEach((e=>{this.styles[e]=new Map(t[e].map((e=>[e.name,e])))})),this.modelAttributes=[];for(const e of Object.keys(t)){const t=u(e);this.modelAttributes.push(t)}}refresh(){const{editor:e}=this,t=G(e.model.document.selection,e.model.schema,this.modelAttributes);this.isEnabled=!!t,this.isEnabled?this.value=this.getValue(t):this.value=!1}getValue(e){const t={};return Object.keys(this.styles).forEach((i=>{const n=u(i);if(e.hasAttribute(n))t[i]=e.getAttribute(n);else for(const[,e]of this.styles[i])e.isDefault&&(t[i]=e.name)})),t}execute(e={}){const{editor:{model:t}}=this,{value:i,group:n}=e,a=u(n);t.change((e=>{const r=G(t.document.selection,t.schema,this.modelAttributes);!i||this.styles[n].get(i).isDefault?e.removeAttribute(a,r):e.setAttribute(a,i,r)}))}}function X(e,t){for(const i of t)if(i.name===e)return i}class Q extends e.Plugin{init(){const{editor:t}=this,i=t.config.get("drupalElementStyles");this.normalizedStyles={},Object.keys(i).forEach((t=>{this.normalizedStyles[t]=i[t].map((t=>("string"==typeof t.icon&&e.icons[t.icon]&&(t.icon=e.icons[t.icon]),t.name&&(t.name=`${t.name}`),t))).filter((e=>e.isDefault||e.attributeName&&e.attributeValue?e.modelElements&&Array.isArray(e.modelElements)?!!e.name||(console.warn("drupalElementStyles options must include a name."),!1):(console.warn("drupalElementStyles options must include an array of supported modelElements."),!1):(console.warn(`${e.attributeValue} drupalElementStyles options must include attributeName and attributeValue.`),!1)))})),this._setupConversion(),t.commands.add("drupalElementStyle",new J(t,this.normalizedStyles))}_setupConversion(){const{editor:e}=this,{schema:t}=e.model;Object.keys(this.normalizedStyles).forEach((i=>{const n=u(i),a=(r=this.normalizedStyles[i],(e,t,i)=>{if(!i.consumable.consume(t.item,e.name))return;const n=X(t.attributeNewValue,r),a=X(t.attributeOldValue,r),o=i.mapper.toViewElement(t.item),s=i.writer;a&&("class"===a.attributeName?s.removeClass(a.attributeValue,o):s.removeAttribute(a.attributeName,o)),n&&("class"===n.attributeName?s.addClass(n.attributeValue,o):n.isDefault||s.setAttribute(n.attributeName,n.attributeValue,o))});var r;const o=function(e,t){const i=e.filter((e=>!e.isDefault));return(e,n,a)=>{if(!n.modelRange)return;const r=n.viewItem,o=(0,E.first)(n.modelRange.getItems());if(o&&a.schema.checkAttribute(o,t))for(const e of i)if("class"===e.attributeName)a.consumable.consume(r,{classes:e.attributeValue})&&a.writer.setAttribute(t,e.name,o);else if(a.consumable.consume(r,{attributes:[e.attributeName]}))for(const e of i)e.attributeValue===r.getAttribute(e.attributeName)&&a.writer.setAttribute(t,e.name,o)}}(this.normalizedStyles[i],n);e.editing.downcastDispatcher.on(`attribute:${n}`,a),e.data.downcastDispatcher.on(`attribute:${n}`,a);[...new Set(this.normalizedStyles[i].map((e=>e.modelElements)).flat())].forEach((e=>{t.extend(e,{allowAttributes:n})})),e.data.upcastDispatcher.on("element",o,{priority:"low"})}))}static get pluginName(){return"DrupalElementStyleEditing"}}const Y=e=>e,ee=(e,t)=>(e?`${e}: `:"")+t;function te(e,t){return`drupalElementStyle:${t}:${e}`}class ie extends e.Plugin{static get requires(){return[Q]}init(){const{plugins:e}=this.editor,t=this.editor.config.get("drupalMedia.toolbar")||[],i=e.get("DrupalElementStyleEditing").normalizedStyles;Object.keys(i).forEach((e=>{i[e].forEach((t=>{this._createButton(t,e,i[e])}))}));t.filter(l).filter((e=>{const t=[];if(!e.display)return console.warn("dropdown configuration must include a display key specifying either listDropdown or splitButton."),!1;e.items.includes(e.defaultItem)||console.warn("defaultItem must be part of items in the dropdown configuration.");for(const i of e.items){const e=i.split(":")[1];t.push(e)}return!!t.every((e=>e===t[0]))||(console.warn("dropdown configuration should only contain buttons from one group."),!1)})).forEach((e=>{if(e.items.length>=2){const t=e.name.split(":")[1];switch(e.display){case"splitButton":this._createDropdown(e,i[t]);break;case"listDropdown":this._createListDropdown(e,i[t])}}}))}updateOptionVisibility(e,t,i,n){const{selection:a}=this.editor.model.document,r={};r[n]=e;const o=a?a.getSelectedElement():G(a,this.editor.model.schema,r),s=e.filter((function(e){for(const[t,i]of(0,E.toMap)(e.modelAttributes))if(o&&o.hasAttribute(t))return i.includes(o.getAttribute(t));return!0}));i.hasOwnProperty("model")?s.includes(t)?i.model.set({class:""}):i.model.set({class:"ck-hidden"}):s.includes(t)?i.set({class:""}):i.set({class:"ck-hidden"})}_createDropdown(e,t){const i=this.editor.ui.componentFactory;i.add(e.name,(n=>{let a;const{defaultItem:r,items:o,title:s}=e,l=o.filter((e=>{const i=e.split(":")[1];return t.find((({name:t})=>te(t,i)===e))})).map((e=>{const t=i.create(e);return e===r&&(a=t),t}));o.length!==l.length&&z.warnInvalidStyle({dropdown:e});const d=(0,g.createDropdown)(n,g.SplitButtonView),u=d.buttonView;return(0,g.addToolbarToDropdown)(d,l),u.set({label:ee(s,a.label),class:null,tooltip:!0}),u.bind("icon").toMany(l,"isOn",((...e)=>{const t=e.findIndex(Y);return t<0?a.icon:l[t].icon})),u.bind("label").toMany(l,"isOn",((...e)=>{const t=e.findIndex(Y);return ee(s,t<0?a.label:l[t].label)})),u.bind("isOn").toMany(l,"isOn",((...e)=>e.some(Y))),u.bind("class").toMany(l,"isOn",((...e)=>e.some(Y)?"ck-splitbutton_flatten":null)),u.on("execute",(()=>{l.some((({isOn:e})=>e))?d.isOpen=!d.isOpen:a.fire("execute")})),d.bind("isEnabled").toMany(l,"isEnabled",((...e)=>e.some(Y))),d}))}_createButton(e,t,i){const n=e.name;this.editor.ui.componentFactory.add(te(n,t),(a=>{const r=this.editor.commands.get("drupalElementStyle"),o=new g.ButtonView(a);return o.set({label:e.title,icon:e.icon,tooltip:!0,isToggleable:!0}),o.bind("isEnabled").to(r,"isEnabled"),o.bind("isOn").to(r,"value",(e=>e&&e[t]===n)),o.on("execute",this._executeCommand.bind(this,n,t)),this.listenTo(this.editor.ui,"update",(()=>{this.updateOptionVisibility(i,e,o,t)})),o}))}getDropdownListItemDefinitions(e,t,i){const n=new E.Collection;return e.forEach((t=>{const a={type:"button",model:new g.Model({group:i,commandValue:t.name,label:t.title,withText:!0,class:""})};n.add(a),this.listenTo(this.editor.ui,"update",(()=>{this.updateOptionVisibility(e,t,a,i)}))})),n}_createListDropdown(e,t){const i=this.editor.ui.componentFactory;i.add(e.name,(n=>{let a;const{defaultItem:r,items:o,title:s,defaultText:l}=e,d=e.name.split(":")[1],u=o.filter((e=>t.find((({name:t})=>te(t,d)===e)))).map((e=>{const t=i.create(e);return e===r&&(a=t),t}));o.length!==u.length&&z.warnInvalidStyle({dropdown:e});const c=(0,g.createDropdown)(n,g.DropdownButtonView),m=c.buttonView;m.set({label:ee(s,a.label),class:null,tooltip:l,withText:!0});const p=this.editor.commands.get("drupalElementStyle");return m.bind("label").to(p,"value",(e=>{if(e&&e[d])for(const i of t)if(i.name===e[d])return i.title;return l})),c.bind("isOn").to(p),c.bind("isEnabled").to(this),(0,g.addListToDropdown)(c,this.getDropdownListItemDefinitions(t,p,d)),this.listenTo(c,"execute",(e=>{this._executeCommand(e.source.commandValue,e.source.group)})),c}))}_executeCommand(e,t){this.editor.execute("drupalElementStyle",{value:e,group:t}),this.editor.editing.view.focus()}static get pluginName(){return"DrupalElementStyleUi"}}class ne extends e.Plugin{static get requires(){return[Q,ie]}static get pluginName(){return"DrupalElementStyle"}}function ae(e){const t=e.getFirstPosition().findAncestor("caption");return t&&a(t.parent)?t:null}function re(e){for(const t of e.getChildren())if(t&&t.is("element","caption"))return t;return null}class oe extends e.Command{refresh(){const e=this.editor.model.document.selection,t=e.getSelectedElement();if(!t)return this.isEnabled=!!o(e),void(this.value=!!ae(e));this.isEnabled=a(t),this.isEnabled?this.value=!!re(t):this.value=!1}execute(e={}){const{focusCaptionOnShow:t}=e;this.editor.model.change((e=>{this.value?this._hideDrupalMediaCaption(e):this._showDrupalMediaCaption(e,t)}))}_showDrupalMediaCaption(e,t){const i=this.editor.model.document.selection,n=this.editor.plugins.get("DrupalMediaCaptionEditing"),a=o(i),r=n._getSavedCaption(a)||e.createElement("caption");e.append(r,a),t&&e.setSelection(r,"in")}_hideDrupalMediaCaption(e){const t=this.editor,i=t.model.document.selection,n=t.plugins.get("DrupalMediaCaptionEditing");let a,r=i.getSelectedElement();r?a=re(r):(a=ae(i),r=o(i)),n._saveCaption(r,a),e.setSelection(r,"on"),e.remove(a)}}class se extends e.Plugin{static get requires(){return[]}static get pluginName(){return"DrupalMediaCaptionEditing"}constructor(e){super(e),this._savedCaptionsMap=new WeakMap}init(){const e=this.editor,t=e.model.schema;t.isRegistered("caption")?t.extend("caption",{allowIn:"drupalMedia"}):t.register("caption",{allowIn:"drupalMedia",allowContentOf:"$block",isLimit:!0}),e.commands.add("toggleMediaCaption",new oe(e)),this._setupConversion()}_setupConversion(){const e=this.editor,i=e.editing.view;var n;e.conversion.for("upcast").add(function(e){const t=(t,i,n)=>{const{viewItem:a}=i,{writer:r,consumable:o}=n;if(!i.modelRange||!o.consume(a,{attributes:["data-caption"]}))return;const s=r.createElement("caption"),l=i.modelRange.start.nodeAfter,d=e.data.processor.toView(a.getAttribute("data-caption")),u=r.createDocumentFragment();n.consumable.constructor.createFrom(d,n.consumable),n.convertChildren(d,u);for(const e of Array.from(u.getChildren()))r.append(e,s);r.append(s,l)};return e=>{e.on("element:drupal-media",t,{priority:"low"})}}(e)),e.conversion.for("editingDowncast").elementToElement({model:"caption",view:(e,{writer:n})=>{if(!a(e.parent))return null;const r=n.createEditableElement("figcaption");return(0,V.enablePlaceholder)({view:i,element:r,text:Drupal.t("Enter media caption"),keepOnFocus:!0}),(0,t.toWidgetEditable)(r,n)}}),e.editing.mapper.on("modelToViewPosition",(n=i,(e,t)=>{const i=t.modelPosition,r=i.parent;if(!a(r))return;const o=t.mapper.toViewElement(r);t.viewPosition=n.createPositionAt(o,i.offset+1)})),e.conversion.for("dataDowncast").add(function(e){return t=>{t.on("insert:caption",((t,i,n)=>{const{consumable:r,writer:o,mapper:s}=n;if(!a(i.item.parent)||!r.consume(i.item,"insert"))return;const l=e.model.createRangeIn(i.item),d=o.createDocumentFragment();s.bindElements(i.item,d);for(const{item:t}of Array.from(l)){const i={item:t,range:e.model.createRangeOn(t)},a=`insert:${t.name||"$text"}`;e.data.downcastDispatcher.fire(a,i,n);for(const a of t.getAttributeKeys())Object.assign(i,{attributeKey:a,attributeOldValue:null,attributeNewValue:i.item.getAttribute(a)}),e.data.downcastDispatcher.fire(`attribute:${a}`,i,n)}for(const e of o.createRangeIn(d).getItems())s.unbindViewElement(e);s.unbindViewElement(d);const u=e.data.processor.toData(d);if(u){const e=s.toViewElement(i.item.parent);o.setAttribute("data-caption",u,e)}}))}}(e))}_getSavedCaption(e){const t=this._savedCaptionsMap.get(e);return t?V.Element.fromJSON(t):null}_saveCaption(e,t){this._savedCaptionsMap.set(e,t.toJSON())}}class le extends e.Plugin{static get requires(){return[]}static get pluginName(){return"DrupalMediaCaptionUI"}init(){const{editor:t}=this,i=t.editing.view;t.ui.componentFactory.add("toggleDrupalMediaCaption",(n=>{const a=new g.ButtonView(n),r=t.commands.get("toggleMediaCaption");return a.set({label:Drupal.t("Caption media"),icon:e.icons.caption,tooltip:!0,isToggleable:!0}),a.bind("isOn","isEnabled").to(r,"value","isEnabled"),a.bind("label").to(r,"value",(e=>e?Drupal.t("Toggle caption off"):Drupal.t("Toggle caption on"))),this.listenTo(a,"execute",(()=>{t.execute("toggleMediaCaption",{focusCaptionOnShow:!0});const e=ae(t.model.document.selection);if(e){const n=t.editing.mapper.toViewElement(e);i.scrollToTheSelection(),i.change((e=>{e.addClass("drupal-media__caption_highlighted",n)}))}t.editing.view.focus()})),a}))}}class de extends e.Plugin{static get requires(){return[se,le]}static get pluginName(){return"DrupalMediaCaption"}}const ue={DrupalMedia:x,MediaImageTextAlternative:D,MediaImageTextAlternativeEditing:y,MediaImageTextAlternativeUi:k,DrupalLinkMedia:B,DrupalMediaCaption:de,DrupalElementStyle:ne}})(),n=n.default})()));
\ No newline at end of file
diff --git a/core/modules/ckeditor5/js/ckeditor5.admin.js b/core/modules/ckeditor5/js/ckeditor5.admin.js
index c996d2f506..5368736f4d 100644
--- a/core/modules/ckeditor5/js/ckeditor5.admin.js
+++ b/core/modules/ckeditor5/js/ckeditor5.admin.js
@@ -530,69 +530,71 @@
    */
   Drupal.behaviors.ckeditor5Admin = {
     attach(context) {
-      once('ckeditor5-admin-toolbar', '#ckeditor5-toolbar-app').forEach(
-        (container) => {
-          const selectedTextarea = context.querySelector(
-            '#ckeditor5-toolbar-buttons-selected',
-          );
-          const available = Object.entries(
-            JSON.parse(
-              context.querySelector('#ckeditor5-toolbar-buttons-available')
-                .innerHTML,
-            ),
-          ).map(([name, attrs]) => ({ name, id: name, ...attrs }));
-          const dividers = [
-            {
-              id: 'divider',
-              name: '|',
-              label: Drupal.t('Divider'),
-            },
-            {
-              id: 'wrapping',
-              name: '-',
-              label: Drupal.t('Wrapping'),
-            },
-          ];
+      once(
+        'ckeditor5-admin-toolbar',
+        '#ckeditor5-toolbar-app',
+        context,
+      ).forEach((container) => {
+        const selectedTextarea = context.querySelector(
+          '#ckeditor5-toolbar-buttons-selected',
+        );
+        const available = Object.entries(
+          JSON.parse(
+            context.querySelector('#ckeditor5-toolbar-buttons-available')
+              .innerHTML,
+          ),
+        ).map(([name, attrs]) => ({ name, id: name, ...attrs }));
+        const dividers = [
+          {
+            id: 'divider',
+            name: '|',
+            label: Drupal.t('Divider'),
+          },
+          {
+            id: 'wrapping',
+            name: '-',
+            label: Drupal.t('Wrapping'),
+          },
+        ];
 
-          // Selected is used for managing the state. Sortable is handling updates
-          // to the state when the system is operated by mouse. There are
-          // functions making direct modifications to the state when system is
-          // operated by keyboard.
-          const selected = new Observable(
-            JSON.parse(selectedTextarea.innerHTML).map((name) => {
-              return [...dividers, ...available].find((button) => {
-                return button.name === name;
-              }).id;
-            }),
-          );
+        // Selected is used for managing the state. Sortable is handling updates
+        // to the state when the system is operated by mouse. There are
+        // functions making direct modifications to the state when system is
+        // operated by keyboard.
+        const selected = new Observable(
+          JSON.parse(selectedTextarea.innerHTML).map((name) => {
+            return [...dividers, ...available].find((button) => {
+              return button.name === name;
+            }).id;
+          }),
+        );
 
-          const mapSelection = (selection) => {
-            return selection.map((id) => {
-              return [...dividers, ...available].find((button) => {
-                return button.id === id;
-              }).name;
-            });
-          };
-          // Whenever the state is changed, update the textarea with the changes.
-          // This will also trigger re-render of the admin UI to reinitialize the
-          // Sortable state.
-          selected.subscribe((selection) => {
-            updateSelectedButtons(mapSelection(selection), selectedTextarea);
-            render(container, selected, available, dividers);
+        const mapSelection = (selection) => {
+          return selection.map((id) => {
+            return [...dividers, ...available].find((button) => {
+              return button.id === id;
+            }).name;
           });
+        };
+        // Whenever the state is changed, update the textarea with the changes.
+        // This will also trigger re-render of the admin UI to reinitialize the
+        // Sortable state.
+        selected.subscribe((selection) => {
+          updateSelectedButtons(mapSelection(selection), selectedTextarea);
+          render(container, selected, available, dividers);
+        });
 
-          [
-            context.querySelector('#ckeditor5-toolbar-buttons-available'),
-            context.querySelector('[class*="editor-settings-toolbar-items"]'),
-          ]
-            .filter((el) => el)
-            .forEach((el) => {
-              el.classList.add('visually-hidden');
-            });
+        [
+          context.querySelector('#ckeditor5-toolbar-buttons-available'),
+          context.querySelector('[class*="editor-settings-toolbar-items"]'),
+        ]
+          .filter((el) => el)
+          .forEach((el) => {
+            el.classList.add('visually-hidden');
+          });
 
-          render(container, selected, available, dividers);
-        },
-      );
+        render(container, selected, available, dividers);
+      });
       // Safari's focus outlines take into account absolute positioned elements.
       // When a toolbar option is blurred, the portion of the focus outline
       // surrounding the absolutely positioned tooltip does not go away. To
diff --git a/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/drupalmediaediting.js b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/drupalmediaediting.js
index 5f94ca7463..4cc4ca70c8 100644
--- a/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/drupalmediaediting.js
+++ b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/drupalmediaediting.js
@@ -27,15 +27,26 @@ export default class DrupalMediaEditing extends Plugin {
     return [Widget];
   }
 
-  /**
-   * @inheritdoc
-   */
-  init() {
+  constructor(editor) {
+    super(editor);
+
     this.attrs = {
       drupalMediaAlt: 'alt',
       drupalMediaEntityType: 'data-entity-type',
       drupalMediaEntityUuid: 'data-entity-uuid',
     };
+    this.converterAttributes = [
+      'drupalMediaEntityUuid',
+      'drupalElementStyleViewMode',
+      'drupalMediaEntityType',
+      'drupalMediaAlt',
+    ];
+  }
+
+  /**
+   * @inheritdoc
+   */
+  init() {
     const options = this.editor.config.get('drupalMedia');
     if (!options) {
       return;
@@ -360,13 +371,9 @@ export default class DrupalMediaEditing extends Plugin {
 
         // List all attributes that should trigger re-rendering of the
         // preview.
-        dispatcher.on('attribute:drupalMediaEntityUuid:drupalMedia', converter);
-        dispatcher.on(
-          'attribute:drupalElementStyleViewMode:drupalMedia',
-          converter,
-        );
-        dispatcher.on('attribute:drupalMediaEntityType:drupalMedia', converter);
-        dispatcher.on('attribute:drupalMediaAlt:drupalMedia', converter);
+        this.converterAttributes.forEach((attribute) => {
+          dispatcher.on(`attribute:${attribute}:drupalMedia`, converter);
+        });
 
         return dispatcher;
       });
diff --git a/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/theme/icons/medialibrary.svg b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/theme/icons/medialibrary.svg
index f96cff494c..fc71817d6c 100644
--- a/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/theme/icons/medialibrary.svg
+++ b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/theme/icons/medialibrary.svg
@@ -1 +1 @@
-<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M19.1873 4.86414L10.2509 6.86414V7.02335H10.2499V15.5091C9.70972 15.1961 9.01793 15.1048 8.34069 15.3136C7.12086 15.6896 6.41013 16.8967 6.75322 18.0096C7.09631 19.1226 8.3633 19.72 9.58313 19.344C10.6666 19.01 11.3484 18.0203 11.2469 17.0234H11.2499V9.80173L18.1803 8.25067V14.3868C17.6401 14.0739 16.9483 13.9825 16.2711 14.1913C15.0513 14.5674 14.3406 15.7744 14.6836 16.8875C15.0267 18.0004 16.2937 18.5978 17.5136 18.2218C18.597 17.8877 19.2788 16.8982 19.1773 15.9011H19.1803V8.02687L19.1873 8.0253V4.86414Z" fill="black"/><path fill-rule="evenodd" clip-rule="evenodd" d="M13.5039 0.743652H0.386932V12.1603H13.5039V0.743652ZM12.3379 1.75842H1.55289V11.1454H1.65715L4.00622 8.86353L6.06254 10.861L9.24985 5.91309L11.3812 9.22179L11.7761 8.6676L12.3379 9.45621V1.75842ZM6.22048 4.50869C6.22048 5.58193 5.35045 6.45196 4.27722 6.45196C3.20398 6.45196 2.33395 5.58193 2.33395 4.50869C2.33395 3.43546 3.20398 2.56543 4.27722 2.56543C5.35045 2.56543 6.22048 3.43546 6.22048 4.50869Z" fill="black"/></svg>
+<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M19.1873 4.86414L10.2509 6.86414V7.02335H10.2499V15.5091C9.70972 15.1961 9.01793 15.1048 8.34069 15.3136C7.12086 15.6896 6.41013 16.8967 6.75322 18.0096C7.09631 19.1226 8.3633 19.72 9.58313 19.344C10.6666 19.01 11.3484 18.0203 11.2469 17.0234H11.2499V9.80173L18.1803 8.25067V14.3868C17.6401 14.0739 16.9483 13.9825 16.2711 14.1913C15.0513 14.5674 14.3406 15.7744 14.6836 16.8875C15.0267 18.0004 16.2937 18.5978 17.5136 18.2218C18.597 17.8877 19.2788 16.8982 19.1773 15.9011H19.1803V8.02687L19.1873 8.0253V4.86414Z"/><path fill-rule="evenodd" clip-rule="evenodd" d="M13.5039 0.743652H0.386932V12.1603H13.5039V0.743652ZM12.3379 1.75842H1.55289V11.1454H1.65715L4.00622 8.86353L6.06254 10.861L9.24985 5.91309L11.3812 9.22179L11.7761 8.6676L12.3379 9.45621V1.75842ZM6.22048 4.50869C6.22048 5.58193 5.35045 6.45196 4.27722 6.45196C3.20398 6.45196 2.33395 5.58193 2.33395 4.50869C2.33395 3.43546 3.20398 2.56543 4.27722 2.56543C5.35045 2.56543 6.22048 3.43546 6.22048 4.50869Z"/></svg>
diff --git a/core/modules/ckeditor5/src/HTMLRestrictions.php b/core/modules/ckeditor5/src/HTMLRestrictions.php
index 2da610ef5a..68cd0589e5 100644
--- a/core/modules/ckeditor5/src/HTMLRestrictions.php
+++ b/core/modules/ckeditor5/src/HTMLRestrictions.php
@@ -84,7 +84,54 @@ public function __construct(array $elements) {
     self::validateAllowedRestrictionsPhase2($elements);
     self::validateAllowedRestrictionsPhase3($elements);
     self::validateAllowedRestrictionsPhase4($elements);
+    self::validateAllowedRestrictionsPhase5($elements);
     $this->elements = $elements;
+
+    // Simplify based on the global attributes:
+    // - `<p dir> <* dir>` must become `<p> <* dir>`
+    // - `<p foo="b a"> <* foo="a b">` must become `<p> <* foo="a b">`
+    // - `<p foo="a b c"> <* foo="a b">` must become `<p foo="c"> <* foo="a b">`
+    // In other words: the restrictions on `<*>` remain untouched, but the
+    // attributes and attribute values allowed by `<*>` should be omitted from
+    // all other tags.
+    // Note: `<*>` also allows specifying disallowed attributes, but no other
+    // tags are allowed to do this. Consequently, simplification is only needed
+    // if >=1 allowed attribute is present on `<*>`.
+    if (count($elements) >= 2 && array_key_exists('*', $elements) && array_filter($elements['*'])) {
+      // @see \Drupal\ckeditor5\HTMLRestrictions::validateAllowedRestrictionsPhase4()
+      $globally_allowed_attribute_restrictions = array_filter($elements['*']);
+
+      // Prepare to compare the restrictions of all tags with those on the
+      // global attribute tag `<*>`.
+      $original = [];
+      $global = [];
+      foreach ($elements as $tag => $restrictions) {
+        // `<*>`'s attribute restrictions do not need to be compared.
+        if ($tag === '*') {
+          continue;
+        }
+        $original[$tag] = $restrictions;
+        $global[$tag] = $globally_allowed_attribute_restrictions;
+      }
+
+      // The subset of attribute restrictions after diffing with those on `<*>`.
+      $net_global_attribute_restrictions = (new self($original))
+        ->doDiff(new self($global))
+        ->getAllowedElements(FALSE);
+
+      // Update each tag's attribute restrictions to the subset.
+      foreach ($elements as $tag => $restrictions) {
+        // `<*>` remains untouched.
+        if ($tag === '*') {
+          continue;
+        }
+        $this->elements[$tag] = $net_global_attribute_restrictions[$tag]
+          // If the tag is absent from the subset, then its attribute
+          // restrictions were a strict subset of `<*>`: just allowing the tag
+          // without allowing attributes is then sufficient.
+          ?? FALSE;
+      }
+    }
   }
 
   /**
@@ -119,6 +166,7 @@ private static function validateAllowedRestrictionsPhase1(array $elements): void
       // @see https://html.spec.whatwg.org/multipage/dom.html#global-attributes
       // @see validateAllowedRestrictionsPhase2()
       // @see validateAllowedRestrictionsPhase4()
+      // @see validateAllowedRestrictionsPhase5()
       if ($html_tag_name === '*') {
         continue;
       }
@@ -148,6 +196,7 @@ private static function validateAllowedRestrictionsPhase2(array $elements): void
       // of a text format.
       // @see https://html.spec.whatwg.org/multipage/dom.html#global-attributes
       // @see validateAllowedRestrictionsPhase4()
+      // @see validateAllowedRestrictionsPhase5()
       if ($html_tag_name === '*' && !is_array($html_tag_restrictions)) {
         throw new \InvalidArgumentException(sprintf('The value for the special "*" global attribute HTML tag must be an array of attribute restrictions.'));
       }
@@ -226,6 +275,7 @@ private static function validateAllowedRestrictionsPhase4(array $elements): void
         // of a text format.
         // @see https://html.spec.whatwg.org/multipage/dom.html#global-attributes
         // @see validateAllowedRestrictionsPhase2()
+        // @see validateAllowedRestrictionsPhase5()
         if ($html_tag_name === '*' && $html_tag_attribute_restrictions === FALSE) {
           continue;
         }
@@ -235,6 +285,9 @@ private static function validateAllowedRestrictionsPhase4(array $elements): void
         if ($html_tag_attribute_restrictions === []) {
           throw new \InvalidArgumentException(sprintf('The "%s" HTML tag has an attribute restriction "%s" which is set to the empty array. This is not permitted, specify either TRUE to allow all attribute values, or list the attribute value restrictions.', $html_tag_name, $html_tag_attribute_name));
         }
+        if (array_key_exists('*', $html_tag_attribute_restrictions)) {
+          throw new \InvalidArgumentException(sprintf('The "%s" HTML tag has an attribute restriction "%s" with a "*" allowed attribute value. This implies all attributes values are allowed. Remove the attribute value restriction instead, or use a prefix (`*-foo`), infix (`*-foo-*`) or suffix (`foo-*`) wildcard restriction instead.', $html_tag_name, $html_tag_attribute_name));
+        }
         // @codingStandardsIgnoreLine
         if (!Inspector::assertAll(function ($v) { return $v === TRUE; }, $html_tag_attribute_restrictions)) {
           throw new \InvalidArgumentException(sprintf('The "%s" HTML tag has attribute restriction "%s", but it is not an array of key-value pairs, with HTML tag attribute values as keys and TRUE as values.', $html_tag_name, $html_tag_attribute_name));
@@ -243,6 +296,99 @@ private static function validateAllowedRestrictionsPhase4(array $elements): void
     }
   }
 
+  /**
+   * Validates allowed elements — phase 5: disallowed attribute overrides.
+   *
+   * Explicit overrides of globally disallowed attributes are considered errors.
+   * For example: `<p style>`, `<a onclick>` are considered errors when the
+   * `style` and `on*` attributes are globally disallowed.
+   *
+   * Implicit overrides are not treated as errors: if all attributes are allowed
+   * on a tag, globally disallowed attributes still apply.
+   * For example: `<p *>` allows all attributes on `<p>`, but still won't allow
+   * globally disallowed attributes.
+   *
+   * @param array $elements
+   *   The allowed elements.
+   *
+   * @throws \InvalidArgumentException
+   */
+  private static function validateAllowedRestrictionsPhase5(array $elements): void {
+    $conflict = self::findElementsOverridingGloballyDisallowedAttributes($elements);
+    if ($conflict) {
+      [$globally_disallowed_attribute_restrictions, $elements_overriding_globally_disallowed_attributes] = $conflict;
+      throw new \InvalidArgumentException(sprintf(
+        'The attribute restrictions in "%s" are allowing attributes "%s" that are disallowed by the special "*" global attribute restrictions.',
+        implode(' ', (new self($elements_overriding_globally_disallowed_attributes))->toCKEditor5ElementsArray()),
+        implode('", "', array_keys($globally_disallowed_attribute_restrictions))
+      ));
+    }
+  }
+
+  /**
+   * Finds elements overriding globally disallowed attributes.
+   *
+   * @param array $elements
+   *   The allowed elements.
+   *
+   * @return null|array
+   *   NULL if no conflict is found, an array containing otherwise, containing:
+   *   - the globally disallowed attribute restrictions
+   *   - the elements overriding globally disallowed attributes
+   */
+  private static function findElementsOverridingGloballyDisallowedAttributes(array $elements): ?array {
+    // Find the globally disallowed attributes.
+    // For example: `['*' => ['style' => FALSE, 'foo' => TRUE, 'bar' => FALSE]`
+    // has two globally disallowed attributes, the code below will extract
+    // `['*' => ['style' => FALSE, 'bar' => FALSE']]`.
+    $globally_disallowed_attribute_restrictions = !array_key_exists('*', $elements)
+      ? []
+      : array_filter($elements['*'], function ($global_attribute_restrictions): bool {
+        return $global_attribute_restrictions === FALSE;
+      });
+    if (empty($globally_disallowed_attribute_restrictions)) {
+      // No conflict possible.
+      return NULL;
+    }
+
+    // The elements which could potentially have a conflicting override.
+    $elements_with_attribute_level_restrictions = array_filter($elements, function ($attribute_restrictions, string $attribute_name): bool {
+      return is_array($attribute_restrictions) && $attribute_name !== '*';
+    }, ARRAY_FILTER_USE_BOTH);
+    if (empty($elements_with_attribute_level_restrictions)) {
+      // No conflict possible.
+      return NULL;
+    }
+
+    // Construct a HTMLRestrictions object containing just the elements that are
+    // potentially overriding globally disallowed attributes.
+    // For example: `['p' => ['style' => TRUE]]`.
+    $potentially_overriding = new self($elements_with_attribute_level_restrictions);
+
+    // Construct a HTMLRestrictions object that contains the globally disallowed
+    // attribute restrictions, but pretends they are allowed. This allows using
+    // ::intersect() to detect a conflict.
+    $conflicting_restrictions = new self(array_fill_keys(
+      array_keys($elements_with_attribute_level_restrictions),
+      // The disallowed attributes converted to allowed, to allow using the
+      // ::intersect() method to detect a conflict.
+      // In the example: `['style' => TRUE', 'bar' => TRUE]`.
+      array_fill_keys(array_keys($globally_disallowed_attribute_restrictions), TRUE)
+    ));
+
+    // When there is a non-empty intersection at the attribute level, an
+    // override of a globally disallowed attribute was found.
+    $conflict = $potentially_overriding->intersect($conflicting_restrictions);
+    $elements_overriding_globally_disallowed_attributes = array_filter($conflict->getAllowedElements());
+
+    // No conflict found.
+    if (empty($elements_overriding_globally_disallowed_attributes)) {
+      return NULL;
+    }
+
+    return [$globally_disallowed_attribute_restrictions, $elements_overriding_globally_disallowed_attributes];
+  }
+
   /**
    * Creates the empty set of HTML restrictions: nothing is allowed.
    *
@@ -347,6 +493,33 @@ private static function fromObjectWithHtmlRestrictions(object $object): HTMLRest
       }
     }
 
+    // FilterHtml accepts configuration for `allowed_html` that it will not
+    // actually apply. In other words: it allows for meaningless configuration.
+    // HTMLRestrictions strictly forbids tags overriding globally disallowed
+    // attributes; it considers these conflicting statements. Since FilterHtml
+    // will not apply these anyway, remove them from $allowed prior to
+    // constructing a HTMLRestrictions object:
+    // - `<tag style foo>` will become `<tag foo>` since the `style` attribute
+    //   is globally disallowed by FilterHtml
+    // - `<tag bar on*>` will become `<tag bar>` since the `on*` attribute is
+    //   globally disallowed by FilterHtml
+    // - `<tag ontouch baz>` will become `<tag baz>` since the `on*` attribute
+    //   is globally disallowed by FilterHtml
+    // @see ::validateAllowedRestrictionsPhase5()
+    // @see \Drupal\filter\Plugin\Filter\FilterHtml::process()
+    // @see \Drupal\filter\Plugin\Filter\FilterHtml::getHTMLRestrictions()
+    $conflict = self::findElementsOverridingGloballyDisallowedAttributes($allowed);
+    if ($conflict) {
+      [, $elements_overriding_globally_disallowed_attributes] = $conflict;
+      foreach ($elements_overriding_globally_disallowed_attributes as $element => $attributes) {
+        foreach (array_keys($attributes) as $attribute_name) {
+          unset($allowed[$element][$attribute_name]);
+        }
+        if ($allowed[$element] === []) {
+          $allowed[$element] = FALSE;
+        }
+      }
+    }
     return new self($allowed);
   }
 
diff --git a/core/modules/ckeditor5/src/Plugin/Editor/CKEditor5.php b/core/modules/ckeditor5/src/Plugin/Editor/CKEditor5.php
index a31831a2c5..070fb96792 100644
--- a/core/modules/ckeditor5/src/Plugin/Editor/CKEditor5.php
+++ b/core/modules/ckeditor5/src/Plugin/Editor/CKEditor5.php
@@ -312,7 +312,7 @@ public function buildConfigurationForm(array $form, FormStateInterface $form_sta
           'warning' => [$css_warning],
         ],
         '#status_headings' => [
-          'warning' => t('Warning message'),
+          'warning' => $this->t('Warning message'),
         ],
       ];
     }
diff --git a/core/modules/ckeditor5/src/SmartDefaultSettings.php b/core/modules/ckeditor5/src/SmartDefaultSettings.php
index e8bf8fa830..a10a64b213 100644
--- a/core/modules/ckeditor5/src/SmartDefaultSettings.php
+++ b/core/modules/ckeditor5/src/SmartDefaultSettings.php
@@ -122,7 +122,7 @@ public function computeSmartDefaultSettings(?EditorInterface $text_editor, Filte
       // Overwrite the Editor config entity object's $filterFormat property, to
       // prevent calls to Editor::hasAssociatedFilterFormat() and
       // Editor::getFilterFormat() from loading the FilterFormat from storage.
-      // @todo Remove in https://www.drupal.org/project/ckeditor5/issues/3231347.
+      // @todo Remove in https://www.drupal.org/project/drupal/issues/3231347.
       $reflector = new \ReflectionObject($text_editor);
       $property = $reflector->getProperty('filterFormat');
       $property->setAccessible(TRUE);
@@ -280,6 +280,7 @@ public function computeSmartDefaultSettings(?EditorInterface $text_editor, Filte
       }
 
       $help_enabled = $this->moduleHandler->moduleExists('help');
+      $can_access_dblog = ($this->currentUser->hasPermission('access site reports') && $this->moduleHandler->moduleExists('dblog'));
 
       if (!empty($plugins_enabled) || !$source_editing_additions->allowsNothing()) {
         $beginning = $help_enabled ?
@@ -304,7 +305,6 @@ public function computeSmartDefaultSettings(?EditorInterface $text_editor, Filte
             $this->t("Added these tags/attributes to the Source Editing Plugin's Manually editable HTML tags setting: @tag_list", ['@tag_list' => $source_editing_additions->toFilterHtmlAllowedTagsString()]);
         }
 
-        $can_access_dblog = ($this->currentUser->hasPermission('access site reports') && $this->moduleHandler->moduleExists('dblog'));
         $end = $can_access_dblog ?
           $this->t('Additional details are available <a target="_blank" href=":dblog_url">in your logs</a>.',
             [
diff --git a/core/modules/ckeditor5/tests/src/Functional/Update/CKEditor5UpdatePluginSettingsSortTest.php b/core/modules/ckeditor5/tests/src/Functional/Update/CKEditor5UpdatePluginSettingsSortTest.php
new file mode 100644
index 0000000000..2f0dc45531
--- /dev/null
+++ b/core/modules/ckeditor5/tests/src/Functional/Update/CKEditor5UpdatePluginSettingsSortTest.php
@@ -0,0 +1,69 @@
+<?php
+
+namespace Drupal\Tests\ckeditor5\Functional\Update;
+
+use Drupal\editor\Entity\Editor;
+use Drupal\FunctionalTests\Update\UpdatePathTestBase;
+
+/**
+ * @covers ckeditor5_post_update_plugins_settings_export_order()
+ * @group Update
+ * @group ckeditor5
+ */
+class CKEditor5UpdatePluginSettingsSortTest extends UpdatePathTestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  protected $defaultTheme = 'stark';
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setDatabaseDumpFiles() {
+    $this->databaseDumpFiles = [
+      __DIR__ . '/../../../../../system/tests/fixtures/update/drupal-9.4.0.filled.standard.php.gz',
+    ];
+  }
+
+  /**
+   * Ensure settings for CKEditor 5 plugins are sorted by plugin key.
+   */
+  public function testUpdatePluginSettingsSortPostUpdate(): void {
+    $editor = Editor::load('basic_html');
+    $settings = $editor->getSettings();
+    $plugin_settings_before = array_keys($settings['plugins']);
+
+    $this->runUpdates();
+
+    $editor = Editor::load('basic_html');
+    $settings = $editor->getSettings();
+    $plugin_settings_after = array_keys($settings['plugins']);
+
+    // Different sort before and after, but the same values.
+    $this->assertNotSame($plugin_settings_before, $plugin_settings_after);
+    sort($plugin_settings_before);
+    $this->assertSame($plugin_settings_before, $plugin_settings_after);
+  }
+
+  /**
+   * Ensure settings for CKEditor 5 plugins are sorted by plugin key.
+   */
+  public function testUpdatePluginSettingsSortEntitySave(): void {
+    $editor = Editor::load('basic_html');
+    $settings = $editor->getSettings();
+    $plugin_settings_before = array_keys($settings['plugins']);
+
+    $editor->save();
+
+    $editor = Editor::load('basic_html');
+    $settings = $editor->getSettings();
+    $plugin_settings_after = array_keys($settings['plugins']);
+
+    // Different sort before and after, but the same values.
+    $this->assertNotSame($plugin_settings_before, $plugin_settings_after);
+    sort($plugin_settings_before);
+    $this->assertSame($plugin_settings_before, $plugin_settings_after);
+  }
+
+}
diff --git a/core/modules/ckeditor5/tests/src/FunctionalJavascript/AdminUiTest.php b/core/modules/ckeditor5/tests/src/FunctionalJavascript/AdminUiTest.php
index 2de19d1813..44c293a47e 100644
--- a/core/modules/ckeditor5/tests/src/FunctionalJavascript/AdminUiTest.php
+++ b/core/modules/ckeditor5/tests/src/FunctionalJavascript/AdminUiTest.php
@@ -31,36 +31,23 @@ public function testSettingsOnlyFireAjaxWithCkeditor5() {
     $this->addNewTextFormat($page, $assert_session, 'unicorn');
 
     $this->drupalGet('admin/config/content/formats/manage/ckeditor5');
-    $number_ajax_instances_before = $this->getSession()->evaluateScript('Drupal.ajax.instances.length');
 
     // Enable media embed to trigger an AJAX rebuild.
     $this->assertTrue($page->hasUncheckedField('filters[media_embed][status]'));
+    $this->assertSame(0, $this->getAjaxResponseCount());
     $page->checkField('filters[media_embed][status]');
-    $this->assertNotEmpty($assert_session->waitForElement('css', '.ajax-progress-throbber'));
     $assert_session->assertWaitOnAjaxRequest();
-    $assert_session->responseContains('Media types selectable in the Media Library');
-    $assert_session->assertWaitOnAjaxRequest();
-    $number_ajax_instances_after = $this->getSession()->evaluateScript('Drupal.ajax.instances.length');
-
-    // After the rebuild, there should be more AJAX instances.
-    $this->assertGreaterThan($number_ajax_instances_before, $number_ajax_instances_after);
+    $this->assertSame(1, $this->getAjaxResponseCount());
 
     // Perform the same steps as above with CKEditor, and confirm AJAX callbacks
     // are not triggered on settings changes.
     $this->drupalGet('admin/config/content/formats/manage/unicorn');
-    $number_ajax_instances_before = $this->getSession()->evaluateScript('Drupal.ajax.instances.length');
 
     // Enable media embed to confirm a format not using CKEditor 5 will not
     // trigger an AJAX rebuild.
     $this->assertTrue($page->hasUncheckedField('filters[media_embed][status]'));
     $page->checkField('filters[media_embed][status]');
-    $this->assertEmpty($assert_session->waitForElement('css', '.ajax-progress-throbber'));
-    $assert_session->assertWaitOnAjaxRequest();
-    $assert_session->responseContains('Media types selectable in the Media Library');
-    $assert_session->assertWaitOnAjaxRequest();
-
-    $number_ajax_instances_after = $this->getSession()->evaluateScript('Drupal.ajax.instances.length');
-    $this->assertSame($number_ajax_instances_before, $number_ajax_instances_after);
+    $this->assertSame(0, $this->getAjaxResponseCount());
 
     // Confirm that AJAX updates happen when attempting to switch to CKEditor 5,
     // even if prevented from doing so by validation.
@@ -72,16 +59,13 @@ public function testSettingsOnlyFireAjaxWithCkeditor5() {
     // Enable a filter that is incompatible with CKEditor 5, so validation is
     // triggered when attempting to switch.
     $incompatible_filter_name = 'filters[filter_incompatible][status]';
-    $number_ajax_instances_before = $this->getSession()->evaluateScript('Drupal.ajax.instances.length');
     $this->assertTrue($page->hasUncheckedField($incompatible_filter_name));
     $page->checkField($incompatible_filter_name);
-    $this->assertEmpty($assert_session->waitForElement('css', '.ajax-progress-throbber'));
-    $assert_session->assertWaitOnAjaxRequest();
-    $number_ajax_instances_after = $this->getSession()->evaluateScript('Drupal.ajax.instances.length');
-    $this->assertSame($number_ajax_instances_before, $number_ajax_instances_after);
+    $this->assertSame(0, $this->getAjaxResponseCount());
 
     $page->selectFieldOption('editor[editor]', 'ckeditor5');
     $assert_session->assertWaitOnAjaxRequest();
+    $this->assertSame(1, $this->getAjaxResponseCount());
 
     $filter_warning = 'CKEditor 5 only works with HTML-based text formats. The "A TYPE_MARKUP_LANGUAGE filter incompatible with CKEditor 5" (filter_incompatible) filter implies this text format is not HTML anymore.';
 
@@ -94,11 +78,40 @@ public function testSettingsOnlyFireAjaxWithCkeditor5() {
     // been corrected.
     $this->assertTrue($page->hasCheckedField($incompatible_filter_name));
     $page->uncheckField($incompatible_filter_name);
-    $this->assertNotEmpty($assert_session->waitForElement('css', '.ajax-progress-throbber'));
     $assert_session->assertWaitOnAjaxRequest();
+    $this->assertSame(2, $this->getAjaxResponseCount());
     $assert_session->pageTextNotContains($filter_warning);
   }
 
+  /**
+   * Gets the Drupal AJAX response count observed on this page.
+   *
+   * @return int
+   *   The number of completed XHR requests observed since the page was loaded.
+   */
+  protected function getAjaxResponseCount(): int {
+    // Half a second should suffice for any of the test's DOM interactions to
+    // have triggered an AJAX request, if any.
+    try {
+      $this->assertSession()->assertWaitOnAjaxRequest(500);
+    }
+    catch (\RuntimeException $e) {
+      throw new \LogicException('An AJAX request was still being processed, this suggests a assertWaitOnAjaxRequest() call is missing.');
+    }
+
+    // Now that there definitely is no more AJAX request in progress, count the
+    // number of AJAX responses.
+    $javascript = <<<JS
+(function(){
+  return window.performance
+    .getEntries()
+    .filter(entry => entry.initiatorType === 'xmlhttprequest' && entry.name.indexOf('_wrapper_format=drupal_ajax') !== -1)
+    .length
+})()
+JS;
+    return $this->getSession()->evaluateScript($javascript);
+  }
+
   /**
    * CKEditor5's filter UI modifications should not break it for other editors.
    */
diff --git a/core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5AllowedTagsTest.php b/core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5AllowedTagsTest.php
index 0caa963c92..db8ec0c474 100644
--- a/core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5AllowedTagsTest.php
+++ b/core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5AllowedTagsTest.php
@@ -376,9 +376,10 @@ public function testMediaElementAllowedTags() {
 
     // Enable media embed.
     $this->assertTrue($page->hasUncheckedField('filters[media_embed][status]'));
+    $this->assertNull($assert_session->waitForElementVisible('css', '[data-drupal-selector=edit-filters-media-embed-settings]', 0));
     $page->checkField('filters[media_embed][status]');
     $assert_session->assertWaitOnAjaxRequest();
-    $assert_session->responseContains('Media types selectable in the Media Library');
+    $this->assertNotNull($assert_session->waitForElementVisible('css', '[data-drupal-selector=edit-filters-media-embed-settings]', 0));
 
     $page->clickLink('Embed media');
     $page->checkField('filters[media_embed][settings][allowed_view_modes][view_mode_1]');
@@ -387,7 +388,6 @@ public function testMediaElementAllowedTags() {
 
     $allowed_with_media = $this->allowedElements . ' <drupal-media data-entity-type data-entity-uuid alt data-view-mode>';
     $allowed_with_media_without_view_mode = $this->allowedElements . ' <drupal-media data-entity-type data-entity-uuid alt>';
-    $assert_session->responseContains('Media types selectable in the Media Library');
     $page->clickLink('Media');
     $assert_session->waitForText('Allow the user to override the default view mode');
     $this->assertTrue($page->hasUncheckedField('editor[settings][plugins][media_media][allow_view_mode_override]'));
diff --git a/core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5Test.php b/core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5Test.php
index 8560984e56..1580aa59ab 100644
--- a/core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5Test.php
+++ b/core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5Test.php
@@ -299,6 +299,67 @@ public function languageOfPartsPluginTestHelper($page, $assert_session, $predefi
     $this->assertSame(array_values($predefined_languages), $languages);
   }
 
+  /**
+   * Gets the titles of the vertical tabs in the given container.
+   *
+   * @param string $container_selector
+   *   The container in which to look for vertical tabs.
+   * @param bool $visible_only
+   *   (optional) Whether to restrict to only the visible vertical tabs. TRUE by
+   *   default.
+   *
+   * @return string[]
+   *   The titles of all vertical tabs menu items, restricted to only
+   *   visible ones by default.
+   *
+   * @throws \LogicException
+   */
+  private function getVerticalTabs(string $container_selector, bool $visible_only = TRUE): array {
+    $page = $this->getSession()->getPage();
+
+    // Ensure the container exists.
+    $container = $page->find('css', $container_selector);
+    if ($container === NULL) {
+      throw new \LogicException('The given container should exist.');
+    }
+
+    // Make sure that the container selector contains exactly one Vertical Tabs
+    // UI component.
+    $vertical_tabs = $container->findAll('css', '.vertical-tabs');
+    if (count($vertical_tabs) != 1) {
+      throw new \LogicException('The given container should contain exactly one Vertical Tabs component.');
+    }
+
+    $vertical_tabs = $container->findAll('css', '.vertical-tabs__menu-item');
+    $vertical_tabs_titles = [];
+    foreach ($vertical_tabs as $vertical_tab) {
+      if ($visible_only && !$vertical_tab->isVisible()) {
+        continue;
+      }
+      $title = $vertical_tab->find('css', '.vertical-tabs__menu-item-title')->getHtml();
+      // When retrieving visible vertical tabs, mark the selected one.
+      if ($visible_only && $vertical_tab->hasClass('is-selected')) {
+        $title = "➡️$title";
+      }
+      $vertical_tabs_titles[] = $title;
+    }
+    return $vertical_tabs_titles;
+  }
+
+  /**
+   * Enables a disabled CKEditor 5 toolbar item.
+   *
+   * @param string $toolbar_item_id
+   *   The toolbar item to enable.
+   */
+  protected function enableDisabledToolbarItem(string $toolbar_item_id): void {
+    $assert_session = $this->assertSession();
+    $assert_session->elementExists('css', ".ckeditor5-toolbar-disabled .ckeditor5-toolbar-item-$toolbar_item_id");
+    $this->triggerKeyUp(".ckeditor5-toolbar-item-$toolbar_item_id", 'ArrowDown');
+    $assert_session->elementNotExists('css', ".ckeditor5-toolbar-disabled .ckeditor5-toolbar-item-$toolbar_item_id");
+    $assert_session->elementExists('css', ".ckeditor5-toolbar-active .ckeditor5-toolbar-item-$toolbar_item_id");
+  }
+
   /**
    * Confirms active tab status is intact after AJAX refresh.
    */
@@ -309,77 +370,134 @@ public function testActiveTabsMaintained() {
     $this->createNewTextFormat($page, $assert_session);
     $assert_session->assertWaitOnAjaxRequest();
 
-    // Ensure the HTML filter tab is visible.
-    $this->assertNotEmpty($assert_session->waitForElementVisible('css', 'a[href^="#edit-filters-filter-html-settings"]'));
+    // Initial vertical tabs: 3 for filters, 1 for CKE5 plugins.
+    $this->assertSame([
+      'Limit allowed HTML tags and correct faulty HTML',
+      'Convert URLs into links',
+      'Embed media',
+    ], $this->getVerticalTabs('#filter-settings-wrapper', FALSE));
+    $this->assertSame([
+      'Headings',
+    ], $this->getVerticalTabs('#plugin-settings-wrapper', FALSE));
+
+    // Initial visible vertical tabs: 1 for filters, 1 for CKE5 plugins.
+    $this->assertSame([
+      '➡️Limit allowed HTML tags and correct faulty HTML',
+    ], $this->getVerticalTabs('#filter-settings-wrapper'));
+    $this->assertSame([
+      '➡️Headings',
+    ], $this->getVerticalTabs('#plugin-settings-wrapper'));
 
-    // Enable media embed to make a second filter config tab visible.
+    // Enable media embed to make a second filter config vertical tab visible.
     $this->assertTrue($page->hasUncheckedField('filters[media_embed][status]'));
+    $this->assertNull($assert_session->waitForElementVisible('css', '[data-drupal-selector=edit-filters-media-embed-settings]', 0));
     $page->checkField('filters[media_embed][status]');
+    $this->assertNotNull($assert_session->waitForElementVisible('css', '[data-drupal-selector=edit-filters-media-embed-settings]', 0));
     $assert_session->assertWaitOnAjaxRequest();
-    $assert_session->responseContains('Media types selectable in the Media Library');
-    $assert_session->assertWaitOnAjaxRequest();
+    // Filter plugins vertical tabs behavior: the filter plugin settings
+    // vertical tab with the heaviest filter weight is active by default.
+    // Hence enabling the media_embed filter (weight 100) results in its
+    // vertical tab being activated (filter_html's weight is -10).
+    // @see core/modules/filter/filter.admin.js
+    $this->assertSame([
+      'Limit allowed HTML tags and correct faulty HTML',
+      '➡️Embed media',
+    ], $this->getVerticalTabs('#filter-settings-wrapper'));
+    $this->assertSame([
+      '➡️Headings',
+      'Media',
+    ], $this->getVerticalTabs('#plugin-settings-wrapper'));
 
-    // Enable upload image to add one plugin config form.
-    $this->assertNotEmpty($assert_session->waitForElement('css', '.ckeditor5-toolbar-item-drupalInsertImage'));
-    $this->triggerKeyUp('.ckeditor5-toolbar-item-drupalInsertImage  ', 'ArrowDown');
-    // cSpell:disable-next-line
-    $this->assertNotEmpty($assert_session->waitForElement('css', 'a[href^="#edit-editor-settings-plugins-ckeditor5-image"]'));
-    $this->assertNotEmpty($assert_session->waitForElement('css', '.ckeditor5-toolbar-active .ckeditor5-toolbar-item-drupalInsertImage'));
+    // Enable upload image to add a third (and fourth) CKE5 plugin vertical tab.
+    $this->enableDisabledToolbarItem('drupalInsertImage');
     $assert_session->assertWaitOnAjaxRequest();
+    // The active CKE5 plugin settings vertical tab is unchanged.
+    $this->assertSame([
+      '➡️Headings',
+      'Image',
+      'Image resize',
+      'Media',
+    ], $this->getVerticalTabs('#plugin-settings-wrapper'));
+    // The active filter plugin settings vertical tab is unchanged.
+    $this->assertSame([
+      'Limit allowed HTML tags and correct faulty HTML',
+      '➡️Embed media',
+    ], $this->getVerticalTabs('#filter-settings-wrapper'));
 
+    // Open the CKE5 "Image" plugin settings vertical tab, interact with the
+    // subform and observe that the AJAX requests those interactions trigger do
+    // not change the active vertical tabs.
     $page->clickLink('Image');
     $assert_session->waitForText('Enable image uploads');
+    $this->assertSame([
+      'Headings',
+      '➡️Image',
+      'Image resize',
+      'Media',
+    ], $this->getVerticalTabs('#plugin-settings-wrapper'));
     $this->assertTrue($page->hasUncheckedField('editor[settings][plugins][ckeditor5_image][status]'));
     $page->checkField('editor[settings][plugins][ckeditor5_image][status]');
     $assert_session->assertWaitOnAjaxRequest();
-
-    // Enable Heading to add a second plugin config form.
-    $this->assertNotEmpty($assert_session->waitForElement('css', '.ckeditor5-toolbar-button-heading'));
-    $this->triggerKeyUp('.ckeditor5-toolbar-button-heading', 'ArrowDown');
-    $this->assertNotEmpty($assert_session->waitForElement('css', 'a[href^="#edit-editor-settings-plugins-ckeditor5-heading"]'));
-    $this->assertNotEmpty($assert_session->waitForElement('css', '.ckeditor5-toolbar-active .ckeditor5-toolbar-button-heading'));
-    $assert_session->assertWaitOnAjaxRequest();
+    $this->assertSame([
+      'Headings',
+      '➡️Image',
+      'Image resize',
+      'Media',
+    ], $this->getVerticalTabs('#plugin-settings-wrapper'));
+    $this->assertSame([
+      'Limit allowed HTML tags and correct faulty HTML',
+      '➡️Embed media',
+    ], $this->getVerticalTabs('#filter-settings-wrapper'));
 
     $page->pressButton('Save configuration');
     $assert_session->pageTextContains('Added text format ckeditor5');
 
-    // Leave and return to the config form, both sets of tabs should then have
-    // the first tab active by default.
+    // Leave and return to the config form, wait for initialized Vertical Tabs.
     $this->drupalGet('admin/config/content/formats/');
     $this->drupalGet('admin/config/content/formats/manage/ckeditor5');
-
     $assert_session->waitForElement('css', '.vertical-tabs__menu-item.is-selected');
 
-    $plugin_settings_vertical_tabs = $page->findAll('css', '#plugin-settings-wrapper .vertical-tabs__menu-item');
-    $filter_settings = $page->find('xpath', '//*[contains(@class, "js-form-type-vertical-tabs")]/label[contains(text(), "Filter settings")]/..');
-    $filter_settings_vertical_tabs = $filter_settings->findAll('css', '.vertical-tabs__menu-item');
-
-    $this->assertTrue($plugin_settings_vertical_tabs[0]->hasClass('is-selected'), "Expected plugin tab 1 selected on initial build");
-    $this->assertFalse($plugin_settings_vertical_tabs[1]->hasClass('is-selected'), "Expected plugin tab 2 not selected on initial build");
-
-    $this->assertFalse($filter_settings_vertical_tabs[0]->hasClass('is-selected'), "Expected filter tab 1 not selected on initial build");
-    $this->assertTrue($filter_settings_vertical_tabs[2]->hasClass('is-selected'), "Expected (visible) filter tab 2 selected on initial build");
-
-    $plugin_settings_vertical_tabs[1]->click();
-    $filter_settings_vertical_tabs[0]->click();
-    $assert_session->assertWaitOnAjaxRequest();
-
-    $this->assertFalse($plugin_settings_vertical_tabs[0]->hasClass('is-selected'), "Expected plugin tab 1 deselected after click");
-    $this->assertTrue($plugin_settings_vertical_tabs[1]->hasClass('is-selected'), "Expected plugin tab 2 selected after click");
-
-    $this->assertTrue($filter_settings_vertical_tabs[0]->hasClass('is-selected'), "Expected filter tab 1 selected after click");
-    $this->assertFalse($filter_settings_vertical_tabs[2]->hasClass('is-selected'), "Expected (visible) filter tab 2 deselected after click");
+    // The first CKE5 plugin settings vertical tab is active by default.
+    $this->assertSame([
+      '➡️Headings',
+      'Image',
+      'Image resize',
+      'Media',
+    ], $this->getVerticalTabs('#plugin-settings-wrapper'));
+    // Filter plugins vertical tabs behavior: the filter plugin settings
+    // vertical tab with the heaviest filter weight is active by default.
+    // Hence enabling the media_embed filter (weight 100) results in its
+    // vertical tab being activated (filter_html's weight is -10).
+    // @see core/modules/filter/filter.admin.js
+    $this->assertSame([
+      'Limit allowed HTML tags and correct faulty HTML',
+      '➡️Embed media',
+    ], $this->getVerticalTabs('#filter-settings-wrapper'));
 
-    // Add a plugin just to trigger AJAX refresh.
-    $this->assertNotEmpty($assert_session->waitForElement('css', '.ckeditor5-toolbar-item-blockQuote'));
-    $this->triggerKeyUp('.ckeditor5-toolbar-item-blockQuote', 'ArrowDown');
+    // Click the 3rd CKE5 plugin vertical tab.
+    $page->clickLink($this->getVerticalTabs('#plugin-settings-wrapper')[2]);
+    $this->assertSame([
+      'Headings',
+      'Image',
+      '➡️Image resize',
+      'Media',
+    ], $this->getVerticalTabs('#plugin-settings-wrapper'));
+
+    // Add another CKEditor 5 toolbar item just to trigger an AJAX refresh.
+    $this->enableDisabledToolbarItem('blockQuote');
     $assert_session->assertWaitOnAjaxRequest();
-
-    $this->assertFalse($plugin_settings_vertical_tabs[0]->hasClass('is-selected'), "Expected plugin tab 1 deselected after AJAX refresh");
-    $this->assertTrue($plugin_settings_vertical_tabs[1]->hasClass('is-selected'), "Expected plugin tab 2 selected after AJAX refresh");
-
-    $this->assertTrue($filter_settings_vertical_tabs[0]->hasClass('is-selected'), "Expected filter tab 1 selected after AJAX refresh");
-    $this->assertFalse($filter_settings_vertical_tabs[1]->hasClass('is-selected'), "Expected filter tab 2 deselected after AJAX refresh");
+    // The active CKE5 plugin settings vertical tab is unchanged.
+    $this->assertSame([
+      'Headings',
+      'Image',
+      '➡️Image resize',
+      'Media',
+    ], $this->getVerticalTabs('#plugin-settings-wrapper'));
+    // The active filter plugin settings vertical tab is unchanged.
+    $this->assertSame([
+      'Limit allowed HTML tags and correct faulty HTML',
+      '➡️Embed media',
+    ], $this->getVerticalTabs('#filter-settings-wrapper'));
   }
 
   /**
diff --git a/core/modules/ckeditor5/tests/src/FunctionalJavascript/TableTest.php b/core/modules/ckeditor5/tests/src/FunctionalJavascript/TableTest.php
index 2667474bbf..80d51959c9 100644
--- a/core/modules/ckeditor5/tests/src/FunctionalJavascript/TableTest.php
+++ b/core/modules/ckeditor5/tests/src/FunctionalJavascript/TableTest.php
@@ -53,6 +53,9 @@ class TableTest extends CKEditor5TestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/ckeditor5/tests/src/Kernel/SmartDefaultSettingsTest.php b/core/modules/ckeditor5/tests/src/Kernel/SmartDefaultSettingsTest.php
index 5a3ec0bd61..203131afb7 100644
--- a/core/modules/ckeditor5/tests/src/Kernel/SmartDefaultSettingsTest.php
+++ b/core/modules/ckeditor5/tests/src/Kernel/SmartDefaultSettingsTest.php
@@ -90,6 +90,44 @@ protected function setUp(): void {
 
     $this->installSchema('dblog', ['watchdog']);
 
+    FilterFormat::create([
+      'format' => 'minimal_ckeditor_wrong_allowed_html',
+      'name' => 'Most basic HTML, but with allowed_html misconfigured',
+      'filters' => [
+        'filter_html' => [
+          'status' => 1,
+          'settings' => [
+            // Misconfiguration aspects:
+            // 1. `<a>`, not `<a href>`, while `DrupalLink` is enabled
+            // 2. `<p style>` even though `style` is globally disallowed by
+            //    filter_html
+            // 3. `<a onclick>` even though `on*` is globally disallowed by
+            //    filter_html
+            'allowed_html' => '<p style> <br> <a onclick>',
+          ],
+        ],
+      ],
+    ])->setSyncing(TRUE)->save();
+    Editor::create([
+      'format' => 'minimal_ckeditor_wrong_allowed_html',
+      'editor' => 'ckeditor',
+      'settings' => [
+        'toolbar' => [
+          'rows' => [
+            0 => [
+              [
+                'name' => 'Basic Formatting',
+                'items' => [
+                  'DrupalLink',
+                ],
+              ],
+            ],
+          ],
+        ],
+        'plugins' => [],
+      ],
+    ])->setSyncing(TRUE)->save();
+
     FilterFormat::create(
       Yaml::parseFile('core/modules/ckeditor5/tests/fixtures/ckeditor4_config/filter.format.full_html.yml')
     )
@@ -465,6 +503,10 @@ public function test(string $format_id, array $filters_to_drop, array $expected_
       $updated_text_editor->toArray()
     );
 
+    // Save this to ensure the config export order is applied.
+    // @see \Drupal\Core\Config\StorableConfigBase::castValue()
+    $updated_text_editor->save();
+
     // We should now have the expected data in the Editor config entity.
     $this->assertSame('ckeditor5', $updated_text_editor->getEditor());
     $this->assertSame($expected_ckeditor5_settings, $updated_text_editor->getSettings());
@@ -890,12 +932,12 @@ public function provider() {
           ),
         ],
         'plugins' => array_merge(
-          $basic_html_test_case['expected_ckeditor5_settings']['plugins'],
           [
             'ckeditor5_alignment' => [
               'enabled_alignments' => ['center', 'justify'],
             ],
           ],
+          $basic_html_test_case['expected_ckeditor5_settings']['plugins'],
         ),
       ],
       'expected_superset' => implode(' ', [
@@ -1092,6 +1134,10 @@ public function provider() {
               'heading6',
             ],
           ],
+          'ckeditor5_list' => [
+            'reversed' => FALSE,
+            'startIndex' => TRUE,
+          ],
           'ckeditor5_sourceEditing' => [
             'allowed_tags' => [
               '<cite>',
@@ -1109,10 +1155,6 @@ public function provider() {
               '<h6 id>',
             ],
           ],
-          'ckeditor5_list' => [
-            'reversed' => FALSE,
-            'startIndex' => TRUE,
-          ],
         ],
       ],
       'expected_superset' => '<br> <p>',
@@ -1227,6 +1269,10 @@ public function provider() {
               'heading6',
             ],
           ],
+          'ckeditor5_list' => [
+            'reversed' => FALSE,
+            'startIndex' => TRUE,
+          ],
           'ckeditor5_sourceEditing' => [
             'allowed_tags' => [
               '<cite>',
@@ -1244,10 +1290,6 @@ public function provider() {
               '<h6 id>',
             ],
           ],
-          'ckeditor5_list' => [
-            'reversed' => FALSE,
-            'startIndex' => TRUE,
-          ],
         ],
       ],
       'expected_superset' => '<br> <p>',
@@ -1334,6 +1376,11 @@ public function provider() {
           ],
         ],
         'plugins' => [
+          'ckeditor5_sourceEditing' => [
+            'allowed_tags' => [
+              '<span>',
+            ],
+          ],
           'ckeditor5_style' => [
             'styles' => [
               [
@@ -1342,11 +1389,6 @@ public function provider() {
               ],
             ],
           ],
-          'ckeditor5_sourceEditing' => [
-            'allowed_tags' => [
-              '<span>',
-            ],
-          ],
         ],
       ],
       'expected_superset' => '',
@@ -1379,6 +1421,27 @@ public function provider() {
       'expected_db_logs' => [],
       'expected_messages' => [],
     ];
+
+    yield "minimal_ckeditor_wrong_allowed_html does not have sufficient allowed HTML => necessary allowed HTML added (1 upgrade message)" => [
+      'format_id' => 'minimal_ckeditor_wrong_allowed_html',
+      'filters_to_drop' => [],
+      'expected_ckeditor5_settings' => [
+        'toolbar' => [
+          'items' => [
+            'link',
+          ],
+        ],
+        'plugins' => [],
+      ],
+      'expected_superset' => '<a href>',
+      'expected_fundamental_compatibility_violations' => [],
+      'expected_db_logs' => [],
+      'expected_messages' => [
+        'warning' => [
+          0 => 'Updating to CKEditor 5 added support for some previously unsupported tags/attributes. A plugin introduced support for the following:   This attribute: <em class="placeholder"> href (for &lt;a&gt;)</em>; Additional details are available in your logs.',
+        ],
+      ],
+    ];
   }
 
 }
diff --git a/core/modules/ckeditor5/tests/src/Kernel/ValidatorsTest.php b/core/modules/ckeditor5/tests/src/Kernel/ValidatorsTest.php
index 9627418400..a60c90116e 100644
--- a/core/modules/ckeditor5/tests/src/Kernel/ValidatorsTest.php
+++ b/core/modules/ckeditor5/tests/src/Kernel/ValidatorsTest.php
@@ -1194,6 +1194,7 @@ public function providerPair(): array {
         ],
       ],
       'violations' => [
+        'filters.filter_html' => 'The current CKEditor 5 build requires the following elements and attributes: <br><code>&lt;br&gt; &lt;p onhover style&gt; &lt;* dir=&quot;ltr rtl&quot; lang&gt; &lt;img on*&gt; &lt;blockquote style&gt; &lt;marquee&gt; &lt;a onclick=&quot;javascript:*&quot;&gt; &lt;code style=&quot;foo: bar;&quot;&gt;</code><br>The following elements are missing: <br><code>&lt;p onhover style&gt; &lt;img on*&gt; &lt;blockquote style&gt; &lt;code style=&quot;foo: bar;&quot;&gt;</code>',
         'settings.plugins.ckeditor5_sourceEditing.allowed_tags.0' => 'The following tag in the Source Editing "Manually editable HTML tags" field is a security risk: <em class="placeholder">&lt;p onhover&gt;</em>.',
         'settings.plugins.ckeditor5_sourceEditing.allowed_tags.1' => 'The following tag in the Source Editing "Manually editable HTML tags" field is a security risk: <em class="placeholder">&lt;img on*&gt;</em>.',
         'settings.plugins.ckeditor5_sourceEditing.allowed_tags.2' => 'The following tag in the Source Editing "Manually editable HTML tags" field is a security risk: <em class="placeholder">&lt;blockquote style&gt;</em>.',
diff --git a/core/modules/ckeditor5/tests/src/Unit/HTMLRestrictionsTest.php b/core/modules/ckeditor5/tests/src/Unit/HTMLRestrictionsTest.php
index 2dea410170..ed15093e8d 100644
--- a/core/modules/ckeditor5/tests/src/Unit/HTMLRestrictionsTest.php
+++ b/core/modules/ckeditor5/tests/src/Unit/HTMLRestrictionsTest.php
@@ -91,6 +91,10 @@ public function providerConstruct(): \Generator {
       ['foo' => ['baz' => TRUE], 'bar' => ['qux' => ['a', 'b']]],
       'The "bar" HTML tag has attribute restriction "qux", but it is not an array of key-value pairs, with HTML tag attribute values as keys and TRUE as values.',
     ];
+    yield 'INVALID: keys valid, values invalid attribute restrictions due to broad wildcard instead of prefix/infix/suffix wildcard allowed attribute value' => [
+      ['foo' => ['bar' => ['*' => TRUE]]],
+      'The "foo" HTML tag has an attribute restriction "bar" with a "*" allowed attribute value. This implies all attributes values are allowed. Remove the attribute value restriction instead, or use a prefix (`*-foo`), infix (`*-foo-*`) or suffix (`foo-*`) wildcard restriction instead.',
+    ];
 
     // Valid values.
     yield 'VALID: keys valid, boolean attribute restriction values: also valid' => [
@@ -129,6 +133,24 @@ public function providerConstruct(): \Generator {
       ['*' => ['foo' => ['a' => FALSE, 'b' => FALSE]]],
       'The "*" HTML tag has attribute restriction "foo", but it is not an array of key-value pairs, with HTML tag attribute values as keys and TRUE as values.',
     ];
+
+    // Invalid overrides of globally disallowed attributes.
+    yield 'INVALID: <foo bar> when "bar" is globally disallowed' => [
+      ['foo' => ['bar' => TRUE], '*' => ['bar' => FALSE, 'baz' => TRUE]],
+      'The attribute restrictions in "<foo bar>" are allowing attributes "bar" that are disallowed by the special "*" global attribute restrictions',
+    ];
+    yield 'INVALID: <foo style> when "style" is globally disallowed' => [
+      ['foo' => ['style' => TRUE], '*' => ['bar' => FALSE, 'baz' => TRUE, 'style' => FALSE]],
+      'The attribute restrictions in "<foo style>" are allowing attributes "bar", "style" that are disallowed by the special "*" global attribute restrictions',
+    ];
+    yield 'INVALID: <foo on*> when "on*" is globally disallowed' => [
+      ['foo' => ['on*' => TRUE], '*' => ['bar' => FALSE, 'baz' => TRUE, 'style' => FALSE, 'on*' => FALSE]],
+      'The attribute restrictions in "<foo on*>" are allowing attributes "bar", "style", "on*" that are disallowed by the special "*" global attribute restrictions',
+    ];
+    yield 'INVALID: <foo ontouch> when "on" is globally disallowed' => [
+      ['foo' => ['ontouch' => TRUE], '*' => ['bar' => FALSE, 'baz' => TRUE, 'style' => FALSE, 'on*' => FALSE]],
+      'The attribute restrictions in "<foo ontouch>" are allowing attributes "bar", "style", "on*" that are disallowed by the special "*" global attribute restrictions',
+    ];
   }
 
   /**
@@ -276,6 +298,10 @@ public function providerConvenienceConstructors(): \Generator {
       '<a target>',
       ['a' => ['target' => TRUE]],
     ];
+    yield 'tag with single attribute allowing any value unnecessarily explicitly' => [
+      '<a target="*">',
+      ['a' => ['target' => TRUE]],
+    ];
     yield 'tag with single attribute allowing single specific value' => [
       '<a target="_blank">',
       ['a' => ['target' => ['_blank' => TRUE]]],
@@ -499,6 +525,105 @@ public function providerConvenienceConstructors(): \Generator {
       '<h2 id="jump-*">',
       ['h2' => ['id' => ['jump-*' => TRUE]]],
     ];
+
+    // Attribute restrictions that match the global attribute restrictions
+    // should be omitted from concrete tags.
+    yield '<p> <* foo>' => [
+      '<p> <* foo>',
+      ['p' => FALSE, '*' => ['foo' => TRUE]],
+    ];
+    yield '<p foo> <* foo> results in <p> getting simplified' => [
+      '<p foo> <* foo>',
+      ['p' => FALSE, '*' => ['foo' => TRUE]],
+    ];
+    yield '<* foo> <p foo> results in <p> getting simplified' => [
+      '<* foo> <p foo>',
+      ['p' => FALSE, '*' => ['foo' => TRUE]],
+    ];
+    yield '<p foo bar> <* foo> results in <p> getting simplified' => [
+      '<p foo bar> <* foo>',
+      ['p' => ['bar' => TRUE], '*' => ['foo' => TRUE]],
+    ];
+    yield '<* foo> <p foo bar> results in <p> getting simplified' => [
+      '<* foo> <p foo bar>',
+      ['p' => ['bar' => TRUE], '*' => ['foo' => TRUE]],
+    ];
+    yield '<p foo="a b"> + <* foo="b a"> results in <p> getting simplified' => [
+      '<p foo="a b"> <* foo="b a">',
+      ['p' => FALSE, '*' => ['foo' => ['b' => TRUE, 'a' => TRUE]]],
+    ];
+    yield '<* foo="b a"> <p foo="a b"> results in <p> getting simplified' => [
+      '<* foo="b a"> <p foo="a b">',
+      ['p' => FALSE, '*' => ['foo' => ['b' => TRUE, 'a' => TRUE]]],
+    ];
+    yield '<p foo="a b" bar> + <* foo="b a"> results in <p> getting simplified' => [
+      '<p foo="a b" bar> <* foo="b a">',
+      ['p' => ['bar' => TRUE], '*' => ['foo' => ['b' => TRUE, 'a' => TRUE]]],
+    ];
+    yield '<* foo="b a"> <p foo="a b" bar> results in <p> getting simplified' => [
+      '<* foo="b a"> <p foo="a b" bar>',
+      ['p' => ['bar' => TRUE], '*' => ['foo' => ['b' => TRUE, 'a' => TRUE]]],
+    ];
+    yield '<p foo="a b c"> + <* foo="b a"> results in <p> getting simplified' => [
+      '<p foo="a b c"> <* foo="b a">',
+      ['p' => ['foo' => ['c' => TRUE]], '*' => ['foo' => ['b' => TRUE, 'a' => TRUE]]],
+    ];
+    yield '<* foo="b a"> <p foo="a b c"> results in <p> getting simplified' => [
+      '<* foo="b a"> <p foo="a b c">',
+      ['p' => ['foo' => ['c' => TRUE]], '*' => ['foo' => ['b' => TRUE, 'a' => TRUE]]],
+    ];
+    // Attribute restrictions that match the global attribute restrictions
+    // should be omitted from wildcard tags.
+    yield '<p> <$text-container foo> <* foo> results in <$text-container> getting simplified' => [
+      '<p> <$text-container foo> <* foo>',
+      ['p' => FALSE, '*' => ['foo' => TRUE]],
+      ['p' => FALSE, '$text-container' => FALSE, '*' => ['foo' => TRUE]],
+    ];
+    yield '<* foo> <text-container foo> <p> results in <$text-container> getting stripped' => [
+      '<* foo> <p> <$text-container foo>',
+      ['p' => FALSE, '*' => ['foo' => TRUE]],
+      ['p' => FALSE, '*' => ['foo' => TRUE], '$text-container' => FALSE],
+    ];
+    yield '<p> <$text-container foo bar> <* foo> results in <$text-container> getting simplified' => [
+      '<p> <$text-container foo bar> <* foo>',
+      ['p' => ['bar' => TRUE], '*' => ['foo' => TRUE]],
+      ['p' => FALSE, '$text-container' => ['bar' => TRUE], '*' => ['foo' => TRUE]],
+    ];
+    yield '<* foo> <$text-container foo bar> <p> results in <$text-container> getting simplified' => [
+      '<* foo> <$text-container foo bar> <p>',
+      ['p' => ['bar' => TRUE], '*' => ['foo' => TRUE]],
+      ['p' => FALSE, '*' => ['foo' => TRUE], '$text-container' => ['bar' => TRUE]],
+    ];
+    yield '<p> <$text-container foo="a b"> + <* foo="b a"> results in <$text-container> getting simplified' => [
+      '<p> <$text-container foo="a b"> <* foo="b a">',
+      ['p' => FALSE, '*' => ['foo' => ['b' => TRUE, 'a' => TRUE]]],
+      ['p' => FALSE, '$text-container' => FALSE, '*' => ['foo' => ['b' => TRUE, 'a' => TRUE]]],
+    ];
+    yield '<* foo="b a"> <p> <$text-container foo="a b"> results in <$text-container> getting simplified' => [
+      '<* foo="b a"> <p> <$text-container foo="a b">',
+      ['p' => FALSE, '*' => ['foo' => ['b' => TRUE, 'a' => TRUE]]],
+      ['p' => FALSE, '*' => ['foo' => ['b' => TRUE, 'a' => TRUE]], '$text-container' => FALSE],
+    ];
+    yield '<p> <$text-container foo="a b" bar> + <* foo="b a"> results in <$text-container> getting simplified' => [
+      '<p> <$text-container foo="a b" bar> <* foo="b a">',
+      ['p' => ['bar' => TRUE], '*' => ['foo' => ['b' => TRUE, 'a' => TRUE]]],
+      ['p' => FALSE, '$text-container' => ['bar' => TRUE], '*' => ['foo' => ['b' => TRUE, 'a' => TRUE]]],
+    ];
+    yield '<* foo="b a"> <p> <$text-container foo="a b" bar> results in <$text-container> getting simplified' => [
+      '<* foo="b a"> <p> <$text-container foo="a b" bar>',
+      ['p' => ['bar' => TRUE], '*' => ['foo' => ['b' => TRUE, 'a' => TRUE]]],
+      ['p' => FALSE, '*' => ['foo' => ['b' => TRUE, 'a' => TRUE]], '$text-container' => ['bar' => TRUE]],
+    ];
+    yield '<p> <$text-container foo="a b c"> + <* foo="b a"> results in <$text-container> getting simplified' => [
+      '<p> <$text-container foo="a b c"> <* foo="b a">',
+      ['p' => ['foo' => ['c' => TRUE]], '*' => ['foo' => ['b' => TRUE, 'a' => TRUE]]],
+      ['p' => FALSE, '$text-container' => ['foo' => ['c' => TRUE]], '*' => ['foo' => ['b' => TRUE, 'a' => TRUE]]],
+    ];
+    yield '<* foo="b a"> <p> <$text-container foo="a b c"> results in <$text-container> getting simplified' => [
+      '<* foo="b a"> <p> <$text-container foo="a b c">',
+      ['p' => ['foo' => ['c' => TRUE]], '*' => ['foo' => ['b' => TRUE, 'a' => TRUE]]],
+      ['p' => FALSE, '*' => ['foo' => ['b' => TRUE, 'a' => TRUE]], '$text-container' => ['foo' => ['c' => TRUE]]],
+    ];
   }
 
   /**
diff --git a/core/modules/comment/comment.install b/core/modules/comment/comment.install
index d60f06442e..2a0808b5c0 100644
--- a/core/modules/comment/comment.install
+++ b/core/modules/comment/comment.install
@@ -125,12 +125,12 @@ function comment_update_10100(&$sandbox = NULL) {
   $connection = \Drupal::database();
   if ($connection->schema()->tableExists('comment_entity_statistics') && $connection->databaseType() != 'sqlite') {
     $new = [
-        'type' => 'int',
-        'not null' => TRUE,
-        'default' => 0,
-        'description' => 'The Unix timestamp of the last comment that was posted within this node, from {comment}.changed.',
-        'size' => 'big',
-      ];
+      'type' => 'int',
+      'not null' => TRUE,
+      'default' => 0,
+      'description' => 'The Unix timestamp of the last comment that was posted within this node, from {comment}.changed.',
+      'size' => 'big',
+    ];
     $connection->schema()->changeField('comment_entity_statistics', 'last_comment_timestamp', 'last_comment_timestamp', $new);
   }
 }
diff --git a/core/modules/comment/src/CommentForm.php b/core/modules/comment/src/CommentForm.php
index e2b88f71e5..45fd79229d 100644
--- a/core/modules/comment/src/CommentForm.php
+++ b/core/modules/comment/src/CommentForm.php
@@ -382,9 +382,9 @@ public function save(array $form, FormStateInterface $form_state) {
 
       // Add a log entry.
       $logger->notice('Comment posted: %subject.', [
-          '%subject' => $comment->getSubject(),
-          'link' => Link::fromTextAndUrl(t('View'), $comment->toUrl()->setOption('fragment', 'comment-' . $comment->id()))->toString(),
-        ]);
+        '%subject' => $comment->getSubject(),
+        'link' => Link::fromTextAndUrl(t('View'), $comment->toUrl()->setOption('fragment', 'comment-' . $comment->id()))->toString(),
+      ]);
 
       // Explain the approval queue if necessary.
       if (!$comment->isPublished()) {
diff --git a/core/modules/comment/src/CommentStorage.php b/core/modules/comment/src/CommentStorage.php
index 6bf7025218..4f668eac11 100644
--- a/core/modules/comment/src/CommentStorage.php
+++ b/core/modules/comment/src/CommentStorage.php
@@ -187,17 +187,18 @@ public function getNewCommentPageNumber($total_comments, $new_comments, Fieldabl
 
       // Find the number of the first comment of the first unread thread.
       $count = $this->database->query('SELECT COUNT(*) FROM {' . $data_table . '} WHERE [entity_id] = :entity_id
-                        AND [entity_type] = :entity_type
-                        AND [field_name] = :field_name
-                        AND [status] = :status
-                        AND SUBSTRING([thread], 1, (LENGTH([thread]) - 1)) < :thread
-                        AND [default_langcode] = 1', [
-        ':status' => CommentInterface::PUBLISHED,
-        ':entity_id' => $entity->id(),
-        ':field_name' => $field_name,
-        ':entity_type' => $entity->getEntityTypeId(),
-        ':thread' => $first_thread,
-      ])->fetchField();
+        AND [entity_type] = :entity_type
+        AND [field_name] = :field_name
+        AND [status] = :status
+        AND SUBSTRING([thread], 1, (LENGTH([thread]) - 1)) < :thread
+        AND [default_langcode] = 1', [
+          ':status' => CommentInterface::PUBLISHED,
+          ':entity_id' => $entity->id(),
+          ':field_name' => $field_name,
+          ':entity_type' => $entity->getEntityTypeId(),
+          ':thread' => $first_thread,
+        ]
+      )->fetchField();
     }
 
     return $comments_per_page > 0 ? (int) ($count / $comments_per_page) : 0;
diff --git a/core/modules/comment/src/Plugin/Field/FieldType/CommentItem.php b/core/modules/comment/src/Plugin/Field/FieldType/CommentItem.php
index 255b5ab7c1..b3934b9d9c 100644
--- a/core/modules/comment/src/Plugin/Field/FieldType/CommentItem.php
+++ b/core/modules/comment/src/Plugin/Field/FieldType/CommentItem.php
@@ -12,6 +12,7 @@
 use Drupal\Core\Field\FieldItemBase;
 use Drupal\Core\Session\AnonymousUserSession;
 use Drupal\Core\Url;
+use Drupal\Core\StringTranslation\TranslatableMarkup;
 
 /**
  * Plugin implementation of the 'comment' field type.
@@ -55,26 +56,26 @@ public static function defaultFieldSettings() {
    */
   public static function propertyDefinitions(FieldStorageDefinitionInterface $field_definition) {
     $properties['status'] = DataDefinition::create('integer')
-      ->setLabel(t('Comment status'))
+      ->setLabel(new TranslatableMarkup('Comment status'))
       ->setRequired(TRUE);
 
     $properties['cid'] = DataDefinition::create('integer')
-      ->setLabel(t('Last comment ID'));
+      ->setLabel(new TranslatableMarkup('Last comment ID'));
 
     $properties['last_comment_timestamp'] = DataDefinition::create('integer')
-      ->setLabel(t('Last comment timestamp'))
-      ->setDescription(t('The time that the last comment was created.'));
+      ->setLabel(new TranslatableMarkup('Last comment timestamp'))
+      ->setDescription(new TranslatableMarkup('The time that the last comment was created.'));
 
     $properties['last_comment_name'] = DataDefinition::create('string')
-      ->setLabel(t('Last comment name'))
-      ->setDescription(t('The name of the user posting the last comment.'));
+      ->setLabel(new TranslatableMarkup('Last comment name'))
+      ->setDescription(new TranslatableMarkup('The name of the user posting the last comment.'));
 
     $properties['last_comment_uid'] = DataDefinition::create('integer')
-      ->setLabel(t('Last comment user ID'));
+      ->setLabel(new TranslatableMarkup('Last comment user ID'));
 
     $properties['comment_count'] = DataDefinition::create('integer')
-      ->setLabel(t('Number of comments'))
-      ->setDescription(t('The number of comments.'));
+      ->setLabel(new TranslatableMarkup('Number of comments'))
+      ->setDescription(new TranslatableMarkup('The number of comments.'));
 
     return $properties;
   }
@@ -108,13 +109,13 @@ public function fieldSettingsForm(array $form, FormStateInterface $form_state) {
 
     $element['default_mode'] = [
       '#type' => 'checkbox',
-      '#title' => t('Threading'),
+      '#title' => $this->t('Threading'),
       '#default_value' => $settings['default_mode'],
-      '#description' => t('Show comment replies in a threaded list.'),
+      '#description' => $this->t('Show comment replies in a threaded list.'),
     ];
     $element['per_page'] = [
       '#type' => 'number',
-      '#title' => t('Comments per page'),
+      '#title' => $this->t('Comments per page'),
       '#default_value' => $settings['per_page'],
       '#required' => TRUE,
       '#min' => 1,
@@ -122,28 +123,28 @@ public function fieldSettingsForm(array $form, FormStateInterface $form_state) {
     ];
     $element['anonymous'] = [
       '#type' => 'select',
-      '#title' => t('Anonymous commenting'),
+      '#title' => $this->t('Anonymous commenting'),
       '#default_value' => $settings['anonymous'],
       '#options' => [
-        CommentInterface::ANONYMOUS_MAYNOT_CONTACT => t('Anonymous posters may not enter their contact information'),
-        CommentInterface::ANONYMOUS_MAY_CONTACT => t('Anonymous posters may leave their contact information'),
-        CommentInterface::ANONYMOUS_MUST_CONTACT => t('Anonymous posters must leave their contact information'),
+        CommentInterface::ANONYMOUS_MAYNOT_CONTACT => $this->t('Anonymous posters may not enter their contact information'),
+        CommentInterface::ANONYMOUS_MAY_CONTACT => $this->t('Anonymous posters may leave their contact information'),
+        CommentInterface::ANONYMOUS_MUST_CONTACT => $this->t('Anonymous posters must leave their contact information'),
       ],
       '#access' => $anonymous_user->hasPermission('post comments'),
     ];
     $element['form_location'] = [
       '#type' => 'checkbox',
-      '#title' => t('Show reply form on the same page as comments'),
+      '#title' => $this->t('Show reply form on the same page as comments'),
       '#default_value' => $settings['form_location'],
     ];
     $element['preview'] = [
       '#type' => 'radios',
-      '#title' => t('Preview comment'),
+      '#title' => $this->t('Preview comment'),
       '#default_value' => $settings['preview'],
       '#options' => [
-        DRUPAL_DISABLED => t('Disabled'),
-        DRUPAL_OPTIONAL => t('Optional'),
-        DRUPAL_REQUIRED => t('Required'),
+        DRUPAL_DISABLED => $this->t('Disabled'),
+        DRUPAL_OPTIONAL => $this->t('Optional'),
+        DRUPAL_REQUIRED => $this->t('Required'),
       ],
     ];
 
@@ -185,7 +186,7 @@ public function storageSettingsForm(array &$form, FormStateInterface $form_state
     }
     $element['comment_type'] = [
       '#type' => 'select',
-      '#title' => t('Comment type'),
+      '#title' => $this->t('Comment type'),
       '#options' => $options,
       '#required' => TRUE,
       '#description' => $this->t('Select the Comment type to use for this comment field. Manage the comment types from the <a href=":url">administration overview page</a>.', [':url' => Url::fromRoute('entity.comment_type.collection')->toString()]),
diff --git a/core/modules/comment/src/Plugin/Field/FieldWidget/CommentWidget.php b/core/modules/comment/src/Plugin/Field/FieldWidget/CommentWidget.php
index c9478f622c..a7159513be 100644
--- a/core/modules/comment/src/Plugin/Field/FieldWidget/CommentWidget.php
+++ b/core/modules/comment/src/Plugin/Field/FieldWidget/CommentWidget.php
@@ -29,22 +29,22 @@ public function formElement(FieldItemListInterface $items, $delta, array $elemen
 
     $element['status'] = [
       '#type' => 'radios',
-      '#title' => t('Comments'),
+      '#title' => $this->t('Comments'),
       '#title_display' => 'invisible',
       '#default_value' => $items->status,
       '#options' => [
-        CommentItemInterface::OPEN => t('Open'),
-        CommentItemInterface::CLOSED => t('Closed'),
-        CommentItemInterface::HIDDEN => t('Hidden'),
+        CommentItemInterface::OPEN => $this->t('Open'),
+        CommentItemInterface::CLOSED => $this->t('Closed'),
+        CommentItemInterface::HIDDEN => $this->t('Hidden'),
       ],
       CommentItemInterface::OPEN => [
-        '#description' => t('Users with the "Post comments" permission can post comments.'),
+        '#description' => $this->t('Users with the "Post comments" permission can post comments.'),
       ],
       CommentItemInterface::CLOSED => [
-        '#description' => t('Users cannot post comments, but existing comments will be displayed.'),
+        '#description' => $this->t('Users cannot post comments, but existing comments will be displayed.'),
       ],
       CommentItemInterface::HIDDEN => [
-        '#description' => t('Comments are hidden from view.'),
+        '#description' => $this->t('Comments are hidden from view.'),
       ],
     ];
     // If the entity doesn't have any comments, the "hidden" option makes no
@@ -53,7 +53,7 @@ public function formElement(FieldItemListInterface $items, $delta, array $elemen
     if (!$this->isDefaultValueWidget($form_state) && !$items->comment_count) {
       $element['status'][CommentItemInterface::HIDDEN]['#access'] = FALSE;
       // Also adjust the description of the "closed" option.
-      $element['status'][CommentItemInterface::CLOSED]['#description'] = t('Users cannot post comments.');
+      $element['status'][CommentItemInterface::CLOSED]['#description'] = $this->t('Users cannot post comments.');
     }
     // If the advanced settings tabs-set is available (normally rendered in the
     // second column on wide-resolutions), place the field as a details element
diff --git a/core/modules/comment/src/Plugin/migrate/source/d6/Comment.php b/core/modules/comment/src/Plugin/migrate/source/d6/Comment.php
index 4f68018c8d..6b1f4651cc 100644
--- a/core/modules/comment/src/Plugin/migrate/source/d6/Comment.php
+++ b/core/modules/comment/src/Plugin/migrate/source/d6/Comment.php
@@ -27,10 +27,10 @@ class Comment extends DrupalSqlBase {
    */
   public function query() {
     $query = $this->select('comments', 'c')
-      ->fields('c', ['cid', 'pid', 'nid', 'uid', 'subject',
-      'comment', 'hostname', 'timestamp', 'status', 'thread', 'name',
-      'mail', 'homepage', 'format',
-    ]);
+      ->fields('c', ['cid', 'pid', 'nid', 'uid', 'subject', 'comment',
+        'hostname', 'timestamp', 'status', 'thread', 'name', 'mail', 'homepage',
+        'format',
+      ]);
     $query->innerJoin('node', 'n', '[c].[nid] = [n].[nid]');
     $query->fields('n', ['type', 'language']);
     $query->orderBy('c.timestamp');
diff --git a/core/modules/comment/src/Plugin/views/field/NodeNewComments.php b/core/modules/comment/src/Plugin/views/field/NodeNewComments.php
index 433d3c68fb..bb4dca48d9 100644
--- a/core/modules/comment/src/Plugin/views/field/NodeNewComments.php
+++ b/core/modules/comment/src/Plugin/views/field/NodeNewComments.php
@@ -158,12 +158,12 @@ public function preRender(&$values) {
       $result = $this->database->query("SELECT [n].[nid], COUNT([c].[cid]) AS [num_comments] FROM {node} [n] INNER JOIN {comment_field_data} [c] ON [n].[nid] = [c].[entity_id] AND [c].[entity_type] = 'node' AND [c].[default_langcode] = 1
         LEFT JOIN {history} [h] ON [h].[nid] = [n].[nid] AND [h].[uid] = :h_uid WHERE [n].[nid] IN ( :nids[] )
         AND [c].[changed] > GREATEST(COALESCE([h].[timestamp], :timestamp1), :timestamp2) AND [c].[status] = :status GROUP BY [n].[nid]", [
-        ':status' => CommentInterface::PUBLISHED,
-        ':h_uid' => $user->id(),
-        ':nids[]' => $nids,
-        ':timestamp1' => HISTORY_READ_LIMIT,
-        ':timestamp2' => HISTORY_READ_LIMIT,
-      ]);
+          ':status' => CommentInterface::PUBLISHED,
+          ':h_uid' => $user->id(),
+          ':nids[]' => $nids,
+          ':timestamp1' => HISTORY_READ_LIMIT,
+          ':timestamp2' => HISTORY_READ_LIMIT,
+        ]);
       foreach ($result as $node) {
         foreach ($ids[$node->nid] as $id) {
           $values[$id]->{$this->field_alias} = $node->num_comments;
diff --git a/core/modules/comment/tests/src/Functional/CommentAdminTest.php b/core/modules/comment/tests/src/Functional/CommentAdminTest.php
index 9a3f40bc10..e7026026e2 100644
--- a/core/modules/comment/tests/src/Functional/CommentAdminTest.php
+++ b/core/modules/comment/tests/src/Functional/CommentAdminTest.php
@@ -20,6 +20,9 @@ class CommentAdminTest extends CommentTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/comment/tests/src/Functional/CommentAnonymousTest.php b/core/modules/comment/tests/src/Functional/CommentAnonymousTest.php
index 547fbfbf67..f65821f0c3 100644
--- a/core/modules/comment/tests/src/Functional/CommentAnonymousTest.php
+++ b/core/modules/comment/tests/src/Functional/CommentAnonymousTest.php
@@ -17,6 +17,9 @@ class CommentAnonymousTest extends CommentTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/comment/tests/src/Functional/CommentBlockTest.php b/core/modules/comment/tests/src/Functional/CommentBlockTest.php
index ac72aeae0f..7ff9033273 100644
--- a/core/modules/comment/tests/src/Functional/CommentBlockTest.php
+++ b/core/modules/comment/tests/src/Functional/CommentBlockTest.php
@@ -23,6 +23,9 @@ class CommentBlockTest extends CommentTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     // Update admin user to have the 'administer blocks' permission.
@@ -34,7 +37,7 @@ protected function setUp(): void {
       'access comments',
       'access content',
       'administer blocks',
-     ]);
+    ]);
   }
 
   /**
diff --git a/core/modules/comment/tests/src/Functional/CommentBookTest.php b/core/modules/comment/tests/src/Functional/CommentBookTest.php
index cb66313edd..605d9d5fe0 100644
--- a/core/modules/comment/tests/src/Functional/CommentBookTest.php
+++ b/core/modules/comment/tests/src/Functional/CommentBookTest.php
@@ -29,6 +29,9 @@ class CommentBookTest extends BrowserTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/comment/tests/src/Functional/CommentCSSTest.php b/core/modules/comment/tests/src/Functional/CommentCSSTest.php
index 6995bbc4fc..5ad9c93248 100644
--- a/core/modules/comment/tests/src/Functional/CommentCSSTest.php
+++ b/core/modules/comment/tests/src/Functional/CommentCSSTest.php
@@ -24,6 +24,9 @@ class CommentCSSTest extends CommentTestBase {
    */
   protected $defaultTheme = 'starterkit_theme';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
@@ -90,43 +93,43 @@ public function testCommentClasses() {
 
       // Verify the data-history-node-id attribute, which is necessary for the
       // by-viewer class and the "new" indicator, see below.
-      $this->assertCount(1, $this->xpath('//*[@data-history-node-id="' . $node->id() . '"]'), 'data-history-node-id attribute is set on node.');
+      $this->assertSession()->elementsCount('xpath', '//*[@data-history-node-id="' . $node->id() . '"]', 1);
 
       // Verify classes if the comment is visible for the current user.
       if ($case['comment_status'] == CommentInterface::PUBLISHED || $case['user'] == 'admin') {
         // Verify the by-anonymous class.
-        $comments = $this->xpath('//*[contains(@class, "comment") and contains(@class, "by-anonymous")]');
+        $comments = '//*[contains(@class, "comment") and contains(@class, "by-anonymous")]';
         if ($case['comment_uid'] == 0) {
-          $this->assertCount(1, $comments, 'by-anonymous class found.');
+          $this->assertSession()->elementsCount('xpath', $comments, 1);
         }
         else {
-          $this->assertCount(0, $comments, 'by-anonymous class not found.');
+          $this->assertSession()->elementNotExists('xpath', $comments);
         }
 
         // Verify the by-node-author class.
-        $comments = $this->xpath('//*[contains(@class, "comment") and contains(@class, "by-node-author")]');
+        $comments = '//*[contains(@class, "comment") and contains(@class, "by-node-author")]';
         if ($case['comment_uid'] > 0 && $case['comment_uid'] == $case['node_uid']) {
-          $this->assertCount(1, $comments, 'by-node-author class found.');
+          $this->assertSession()->elementsCount('xpath', $comments, 1);
         }
         else {
-          $this->assertCount(0, $comments, 'by-node-author class not found.');
+          $this->assertSession()->elementNotExists('xpath', $comments);
         }
 
         // Verify the data-comment-user-id attribute, which is used by the
         // drupal.comment-by-viewer library to add a by-viewer when the current
         // user (the viewer) was the author of the comment. We do this in Java-
         // Script to prevent breaking the render cache.
-        $this->assertCount(1, $this->xpath('//*[contains(@class, "comment") and @data-comment-user-id="' . $case['comment_uid'] . '"]'), 'data-comment-user-id attribute is set on comment.');
+        $this->assertSession()->elementsCount('xpath', '//*[contains(@class, "comment") and @data-comment-user-id="' . $case['comment_uid'] . '"]', 1);
         $this->assertSession()->responseContains($this->getModulePath('comment') . '/js/comment-by-viewer.js');
       }
 
       // Verify the unpublished class.
-      $comments = $this->xpath('//*[contains(@class, "comment") and contains(@class, "unpublished")]');
+      $comments = '//*[contains(@class, "comment") and contains(@class, "unpublished")]';
       if ($case['comment_status'] == CommentInterface::NOT_PUBLISHED && $case['user'] == 'admin') {
-        $this->assertCount(1, $comments, 'unpublished class found.');
+        $this->assertSession()->elementsCount('xpath', $comments, 1);
       }
       else {
-        $this->assertCount(0, $comments, 'unpublished class not found.');
+        $this->assertSession()->elementNotExists('xpath', $comments);
       }
 
       // Verify the data-comment-timestamp attribute, which is used by the
@@ -134,7 +137,7 @@ public function testCommentClasses() {
       // comment that was created or changed after the last time the current
       // user read the corresponding node.
       if ($case['comment_status'] == CommentInterface::PUBLISHED || $case['user'] == 'admin') {
-        $this->assertCount(1, $this->xpath('//*[contains(@class, "comment")]/*[@data-comment-timestamp="' . $comment->getChangedTime() . '"]'), 'data-comment-timestamp attribute is set on comment');
+        $this->assertSession()->elementsCount('xpath', '//*[contains(@class, "comment")]/*[@data-comment-timestamp="' . $comment->getChangedTime() . '"]', 1);
         $expectedJS = ($case['user'] !== 'anonymous');
         $this->assertSame($expectedJS, isset($settings['ajaxPageState']['libraries']) && in_array('comment/drupal.comment-new-indicator', explode(',', $settings['ajaxPageState']['libraries'])), 'drupal.comment-new-indicator library is present.');
       }
diff --git a/core/modules/comment/tests/src/Functional/CommentDisplayConfigurableTest.php b/core/modules/comment/tests/src/Functional/CommentDisplayConfigurableTest.php
index 34e250e2a7..958a2d381d 100644
--- a/core/modules/comment/tests/src/Functional/CommentDisplayConfigurableTest.php
+++ b/core/modules/comment/tests/src/Functional/CommentDisplayConfigurableTest.php
@@ -20,6 +20,9 @@ class CommentDisplayConfigurableTest extends CommentTestBase {
    */
   protected $defaultTheme = 'olivero';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/comment/tests/src/Functional/CommentEntityTest.php b/core/modules/comment/tests/src/Functional/CommentEntityTest.php
index d31b6077c2..984f1fe454 100644
--- a/core/modules/comment/tests/src/Functional/CommentEntityTest.php
+++ b/core/modules/comment/tests/src/Functional/CommentEntityTest.php
@@ -41,6 +41,9 @@ class CommentEntityTest extends CommentTestBase {
   protected $vocab;
   protected $commentType;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/comment/tests/src/Functional/CommentInterfaceTest.php b/core/modules/comment/tests/src/Functional/CommentInterfaceTest.php
index 098c50e404..eca7d143b4 100644
--- a/core/modules/comment/tests/src/Functional/CommentInterfaceTest.php
+++ b/core/modules/comment/tests/src/Functional/CommentInterfaceTest.php
@@ -87,12 +87,7 @@ public function testCommentInterface() {
     $this->drupalGet('node/' . $this->node->id());
     $this->assertSession()->pageTextContains($subject_text);
     $this->assertSession()->pageTextContains($comment_text);
-    $arguments = [
-      ':link' => base_path() . 'comment/' . $comment->id() . '#comment-' . $comment->id(),
-    ];
-    $pattern_permalink = '//footer/a[contains(@href,:link) and text()="Permalink"]';
-    $permalink = $this->xpath($pattern_permalink, $arguments);
-    $this->assertNotEmpty($permalink, 'Permalink link found.');
+    $this->assertSession()->elementExists('xpath', '//footer/a[contains(@href,"' . base_path() . 'comment/' . $comment->id() . '#comment-' . $comment->id() . '") and text()="Permalink"]');
 
     // Set comments to have subject and preview to optional.
     $this->drupalLogout();
diff --git a/core/modules/comment/tests/src/Functional/CommentLanguageTest.php b/core/modules/comment/tests/src/Functional/CommentLanguageTest.php
index 4759e0f322..664d3de566 100644
--- a/core/modules/comment/tests/src/Functional/CommentLanguageTest.php
+++ b/core/modules/comment/tests/src/Functional/CommentLanguageTest.php
@@ -39,6 +39,9 @@ class CommentLanguageTest extends BrowserTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/comment/tests/src/Functional/CommentLinksAlterTest.php b/core/modules/comment/tests/src/Functional/CommentLinksAlterTest.php
index d7b16809b7..ba65e98dcc 100644
--- a/core/modules/comment/tests/src/Functional/CommentLinksAlterTest.php
+++ b/core/modules/comment/tests/src/Functional/CommentLinksAlterTest.php
@@ -16,6 +16,9 @@ class CommentLinksAlterTest extends CommentTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/comment/tests/src/Functional/CommentNewIndicatorTest.php b/core/modules/comment/tests/src/Functional/CommentNewIndicatorTest.php
index f0548a9433..a0e6e543ec 100644
--- a/core/modules/comment/tests/src/Functional/CommentNewIndicatorTest.php
+++ b/core/modules/comment/tests/src/Functional/CommentNewIndicatorTest.php
@@ -66,7 +66,7 @@ public function testCommentNewCommentsIndicator() {
     // used by the drupal.node-new-comments-link library to determine whether
     // a "x new comments" link might be necessary or not. We do this in
     // JavaScript to prevent breaking the render cache.
-    $this->assertCount(0, $this->xpath('//*[@data-history-node-last-comment-timestamp]'), 'data-history-node-last-comment-timestamp attribute is not set.');
+    $this->assertSession()->elementNotExists('xpath', '//*[@data-history-node-last-comment-timestamp]');
 
     // Create a new comment. This helper function may be run with different
     // comment settings so use $comment->save() to avoid complex setup.
@@ -94,8 +94,8 @@ public function testCommentNewCommentsIndicator() {
     // value, the drupal.node-new-comments-link library would determine that the
     // node received a comment after the user last viewed it, and hence it would
     // perform an HTTP request to render the "new comments" node link.
-    $this->assertCount(1, $this->xpath('//*[@data-history-node-last-comment-timestamp="' . $comment->getChangedTime() . '"]'), 'data-history-node-last-comment-timestamp attribute is set to the correct value.');
-    $this->assertCount(1, $this->xpath('//*[@data-history-node-field-name="comment"]'), 'data-history-node-field-name attribute is set to the correct value.');
+    $this->assertSession()->elementsCount('xpath', '//*[@data-history-node-last-comment-timestamp="' . $comment->getChangedTime() . '"]', 1);
+    $this->assertSession()->elementsCount('xpath', '//*[@data-history-node-field-name="comment"]', 1);
     // The data will be pre-seeded on this particular page in drupalSettings, to
     // avoid the need for the client to make a separate request to the server.
     $settings = $this->getDrupalSettings();
diff --git a/core/modules/comment/tests/src/Functional/CommentNodeAccessTest.php b/core/modules/comment/tests/src/Functional/CommentNodeAccessTest.php
index 9be22cc307..12fcc1230f 100644
--- a/core/modules/comment/tests/src/Functional/CommentNodeAccessTest.php
+++ b/core/modules/comment/tests/src/Functional/CommentNodeAccessTest.php
@@ -26,6 +26,9 @@ class CommentNodeAccessTest extends CommentTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/comment/tests/src/Functional/CommentNonNodeTest.php b/core/modules/comment/tests/src/Functional/CommentNonNodeTest.php
index faf4849879..f695911e8e 100644
--- a/core/modules/comment/tests/src/Functional/CommentNonNodeTest.php
+++ b/core/modules/comment/tests/src/Functional/CommentNonNodeTest.php
@@ -286,8 +286,7 @@ public function testCommentFunctionality() {
 
     // Test breadcrumb on comment add page.
     $this->drupalGet('comment/reply/entity_test/' . $this->entity->id() . '/comment');
-    $xpath = '//nav[@aria-labelledby="system-breadcrumb"]/ol/li[last()]/a';
-    $this->assertEquals($this->entity->label(), current($this->xpath($xpath))->getText(), 'Last breadcrumb item is equal to node title on comment reply page.');
+    $this->assertSession()->elementTextEquals('xpath', '//nav[@aria-labelledby="system-breadcrumb"]/ol/li[last()]/a', $this->entity->label());
 
     // Post a comment.
     /** @var \Drupal\comment\CommentInterface $comment1 */
@@ -296,18 +295,15 @@ public function testCommentFunctionality() {
 
     // Test breadcrumb on comment reply page.
     $this->drupalGet('comment/reply/entity_test/' . $this->entity->id() . '/comment/' . $comment1->id());
-    $xpath = '//nav[@aria-labelledby="system-breadcrumb"]/ol/li[last()]/a';
-    $this->assertEquals($comment1->getSubject(), current($this->xpath($xpath))->getText(), 'Last breadcrumb item is equal to comment title on comment reply page.');
+    $this->assertSession()->elementTextEquals('xpath', '//nav[@aria-labelledby="system-breadcrumb"]/ol/li[last()]/a', $comment1->getSubject());
 
     // Test breadcrumb on comment edit page.
     $this->drupalGet('comment/' . $comment1->id() . '/edit');
-    $xpath = '//nav[@aria-labelledby="system-breadcrumb"]/ol/li[last()]/a';
-    $this->assertEquals($comment1->getSubject(), current($this->xpath($xpath))->getText(), 'Last breadcrumb item is equal to comment subject on edit page.');
+    $this->assertSession()->elementTextEquals('xpath', '//nav[@aria-labelledby="system-breadcrumb"]/ol/li[last()]/a', $comment1->getSubject());
 
     // Test breadcrumb on comment delete page.
     $this->drupalGet('comment/' . $comment1->id() . '/delete');
-    $xpath = '//nav[@aria-labelledby="system-breadcrumb"]/ol/li[last()]/a';
-    $this->assertEquals($comment1->getSubject(), current($this->xpath($xpath))->getText(), 'Last breadcrumb item is equal to comment subject on delete confirm page.');
+    $this->assertSession()->elementTextEquals('xpath', '//nav[@aria-labelledby="system-breadcrumb"]/ol/li[last()]/a', $comment1->getSubject());
 
     // Test threading replying to comment #1 creating comment #1_2.
     $this->drupalGet('comment/reply/entity_test/' . $this->entity->id() . '/comment/' . $comment1->id());
diff --git a/core/modules/comment/tests/src/Functional/CommentPreviewTest.php b/core/modules/comment/tests/src/Functional/CommentPreviewTest.php
index f54f7d0542..6e24d5ebb0 100644
--- a/core/modules/comment/tests/src/Functional/CommentPreviewTest.php
+++ b/core/modules/comment/tests/src/Functional/CommentPreviewTest.php
@@ -121,8 +121,7 @@ public function testCommentPreviewDuplicateSubmission() {
     // Store the content of this page.
     $this->submitForm([], 'Save');
     $this->assertSession()->pageTextContains('Your comment has been posted.');
-    $elements = $this->xpath('//section[contains(@class, "comments")]/article');
-    $this->assertCount(1, $elements);
+    $this->assertSession()->elementsCount('xpath', '//section[contains(@class, "comments")]/article', 1);
 
     // Go back and re-submit the form.
     $this->getSession()->getDriver()->back();
diff --git a/core/modules/comment/tests/src/Functional/CommentStatisticsTest.php b/core/modules/comment/tests/src/Functional/CommentStatisticsTest.php
index 1b8fbe630f..1bccf23e6d 100644
--- a/core/modules/comment/tests/src/Functional/CommentStatisticsTest.php
+++ b/core/modules/comment/tests/src/Functional/CommentStatisticsTest.php
@@ -25,6 +25,9 @@ class CommentStatisticsTest extends CommentTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/comment/tests/src/Functional/CommentTestBase.php b/core/modules/comment/tests/src/Functional/CommentTestBase.php
index 8097bae40c..b98cdc1363 100644
--- a/core/modules/comment/tests/src/Functional/CommentTestBase.php
+++ b/core/modules/comment/tests/src/Functional/CommentTestBase.php
@@ -54,6 +54,9 @@ abstract class CommentTestBase extends BrowserTestBase {
    */
   protected $node;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
@@ -78,7 +81,7 @@ protected function setUp(): void {
       // permission is granted.
       'access user profiles',
       'access content',
-     ]);
+    ]);
     $this->webUser = $this->drupalCreateUser([
       'access comments',
       'post comments',
diff --git a/core/modules/comment/tests/src/Functional/CommentTranslationUITest.php b/core/modules/comment/tests/src/Functional/CommentTranslationUITest.php
index 09b92f2da6..e20146500a 100644
--- a/core/modules/comment/tests/src/Functional/CommentTranslationUITest.php
+++ b/core/modules/comment/tests/src/Functional/CommentTranslationUITest.php
@@ -62,6 +62,9 @@ class CommentTranslationUITest extends ContentTranslationUITestBase {
     'comment',
   ];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     $this->entityTypeId = 'comment';
     $this->bundle = 'comment_article';
diff --git a/core/modules/comment/tests/src/Functional/Views/CommentFieldFilterTest.php b/core/modules/comment/tests/src/Functional/Views/CommentFieldFilterTest.php
index 678fab6c8e..eb053087c6 100644
--- a/core/modules/comment/tests/src/Functional/Views/CommentFieldFilterTest.php
+++ b/core/modules/comment/tests/src/Functional/Views/CommentFieldFilterTest.php
@@ -36,6 +36,9 @@ class CommentFieldFilterTest extends CommentTestBase {
    */
   public $commentTitles = [];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp($import_test_views = TRUE, $modules = ['comment_test_views']): void {
     parent::setUp($import_test_views, $modules);
     $this->drupalLogin($this->drupalCreateUser(['access comments']));
diff --git a/core/modules/comment/tests/src/Functional/Views/CommentRowTest.php b/core/modules/comment/tests/src/Functional/Views/CommentRowTest.php
index 09e157ce94..c3a9503dbe 100644
--- a/core/modules/comment/tests/src/Functional/Views/CommentRowTest.php
+++ b/core/modules/comment/tests/src/Functional/Views/CommentRowTest.php
@@ -26,9 +26,7 @@ class CommentRowTest extends CommentTestBase {
    */
   public function testCommentRow() {
     $this->drupalGet('test-comment-row');
-
-    $result = $this->xpath('//article[contains(@class, "comment")]');
-    $this->assertCount(1, $result, 'One rendered comment found.');
+    $this->assertSession()->elementsCount('xpath', '//article[contains(@class, "comment")]', 1);
   }
 
 }
diff --git a/core/modules/comment/tests/src/Functional/Views/CommentTestBase.php b/core/modules/comment/tests/src/Functional/Views/CommentTestBase.php
index 29ca8b4919..0a7ab1dfb6 100644
--- a/core/modules/comment/tests/src/Functional/Views/CommentTestBase.php
+++ b/core/modules/comment/tests/src/Functional/Views/CommentTestBase.php
@@ -55,6 +55,9 @@ abstract class CommentTestBase extends ViewTestBase {
    */
   protected $comment;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp($import_test_views = TRUE, $modules = ['comment_test_views']): void {
     parent::setUp($import_test_views, $modules);
 
diff --git a/core/modules/comment/tests/src/Functional/Views/DefaultViewRecentCommentsTest.php b/core/modules/comment/tests/src/Functional/Views/DefaultViewRecentCommentsTest.php
index e62373a4f2..8065871932 100644
--- a/core/modules/comment/tests/src/Functional/Views/DefaultViewRecentCommentsTest.php
+++ b/core/modules/comment/tests/src/Functional/Views/DefaultViewRecentCommentsTest.php
@@ -65,6 +65,9 @@ class DefaultViewRecentCommentsTest extends ViewTestBase {
    */
   public $node;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp($import_test_views = TRUE, $modules = []): void {
     parent::setUp($import_test_views, $modules);
 
diff --git a/core/modules/comment/tests/src/Kernel/CommentBaseFieldTest.php b/core/modules/comment/tests/src/Kernel/CommentBaseFieldTest.php
index 6879613a46..4aeac696e6 100644
--- a/core/modules/comment/tests/src/Kernel/CommentBaseFieldTest.php
+++ b/core/modules/comment/tests/src/Kernel/CommentBaseFieldTest.php
@@ -26,6 +26,9 @@ class CommentBaseFieldTest extends KernelTestBase {
     'comment_base_field_test',
   ];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->installEntitySchema('comment_test_base_field');
diff --git a/core/modules/comment/tests/src/Kernel/CommentFieldAccessTest.php b/core/modules/comment/tests/src/Kernel/CommentFieldAccessTest.php
index 0d96303232..414eb9a79c 100644
--- a/core/modules/comment/tests/src/Kernel/CommentFieldAccessTest.php
+++ b/core/modules/comment/tests/src/Kernel/CommentFieldAccessTest.php
@@ -300,11 +300,11 @@ public function testAccessToAdministrativeFields() {
             $set['user']->hasPermission('post comments') &&
             $set['comment']->getFieldName() == 'comment_other'
           ), new FormattableMarkup('User @user @state update field @field on comment @comment', [
-          '@user' => $set['user']->getAccountName(),
-          '@state' => $may_update ? 'can' : 'cannot',
-          '@comment' => $set['comment']->getSubject(),
-          '@field' => $field,
-        ]));
+            '@user' => $set['user']->getAccountName(),
+            '@state' => $may_update ? 'can' : 'cannot',
+            '@comment' => $set['comment']->getSubject(),
+            '@field' => $field,
+          ]));
       }
     }
     foreach ($permutations as $set) {
diff --git a/core/modules/comment/tests/src/Kernel/CommentItemTest.php b/core/modules/comment/tests/src/Kernel/CommentItemTest.php
index 78b6192221..cbdbd1fbe0 100644
--- a/core/modules/comment/tests/src/Kernel/CommentItemTest.php
+++ b/core/modules/comment/tests/src/Kernel/CommentItemTest.php
@@ -25,6 +25,9 @@ class CommentItemTest extends FieldKernelTestBase {
    */
   protected static $modules = ['comment', 'entity_test', 'user'];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->installEntitySchema('comment');
diff --git a/core/modules/comment/tests/src/Kernel/CommentStringIdEntitiesTest.php b/core/modules/comment/tests/src/Kernel/CommentStringIdEntitiesTest.php
index 817abbcd37..bb9c29a6f2 100644
--- a/core/modules/comment/tests/src/Kernel/CommentStringIdEntitiesTest.php
+++ b/core/modules/comment/tests/src/Kernel/CommentStringIdEntitiesTest.php
@@ -27,6 +27,9 @@ class CommentStringIdEntitiesTest extends KernelTestBase {
     'text',
   ];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->installEntitySchema('comment');
diff --git a/core/modules/comment/tests/src/Kernel/Views/CommentViewsKernelTestBase.php b/core/modules/comment/tests/src/Kernel/Views/CommentViewsKernelTestBase.php
index b10828a90a..37987d9d7b 100644
--- a/core/modules/comment/tests/src/Kernel/Views/CommentViewsKernelTestBase.php
+++ b/core/modules/comment/tests/src/Kernel/Views/CommentViewsKernelTestBase.php
@@ -39,6 +39,9 @@ abstract class CommentViewsKernelTestBase extends ViewsKernelTestBase {
    */
   protected $userStorage;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp($import_test_views = TRUE): void {
     parent::setUp($import_test_views);
 
diff --git a/core/modules/comment/tests/src/Unit/CommentManagerTest.php b/core/modules/comment/tests/src/Unit/CommentManagerTest.php
index cfc65d3af4..e93f9c86d0 100644
--- a/core/modules/comment/tests/src/Unit/CommentManagerTest.php
+++ b/core/modules/comment/tests/src/Unit/CommentManagerTest.php
@@ -26,28 +26,28 @@ public function testGetFields() {
     $entity_type = $this->createMock('Drupal\Core\Entity\ContentEntityTypeInterface');
     $entity_type->expects($this->any())
       ->method('getClass')
-      ->will($this->returnValue('Node'));
+      ->willReturn('Node');
     $entity_type->expects($this->any())
       ->method('entityClassImplements')
       ->with(FieldableEntityInterface::class)
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $entity_field_manager = $this->createMock(EntityFieldManagerInterface::class);
     $entity_type_manager = $this->createMock(EntityTypeManagerInterface::class);
 
     $entity_field_manager->expects($this->once())
       ->method('getFieldMapByFieldType')
-      ->will($this->returnValue([
+      ->willReturn([
         'node' => [
           'field_foobar' => [
             'type' => 'comment',
           ],
         ],
-      ]));
+      ]);
 
     $entity_type_manager->expects($this->any())
       ->method('getDefinition')
-      ->will($this->returnValue($entity_type));
+      ->willReturn($entity_type);
 
     $comment_manager = new CommentManager(
       $entity_type_manager,
diff --git a/core/modules/comment/tests/src/Unit/CommentStatisticsUnitTest.php b/core/modules/comment/tests/src/Unit/CommentStatisticsUnitTest.php
index b0412210e7..76e44401dc 100644
--- a/core/modules/comment/tests/src/Unit/CommentStatisticsUnitTest.php
+++ b/core/modules/comment/tests/src/Unit/CommentStatisticsUnitTest.php
@@ -73,7 +73,7 @@ protected function setUp(): void {
 
     $this->select->expects($this->any())
       ->method('execute')
-      ->will($this->returnValue($this->statement));
+      ->willReturn($this->statement);
 
     $this->database = $this->getMockBuilder('Drupal\Core\Database\Connection')
       ->disableOriginalConstructor()
@@ -81,7 +81,7 @@ protected function setUp(): void {
 
     $this->database->expects($this->once())
       ->method('select')
-      ->will($this->returnValue($this->select));
+      ->willReturn($this->select);
 
     $this->commentStatistics = new CommentStatistics($this->database, $this->createMock('Drupal\Core\Session\AccountInterface'), $this->createMock(EntityTypeManagerInterface::class), $this->createMock('Drupal\Core\State\StateInterface'), $this->database);
   }
diff --git a/core/modules/comment/tests/src/Unit/Entity/CommentLockTest.php b/core/modules/comment/tests/src/Unit/Entity/CommentLockTest.php
index 304d2dd855..3e70f0bb8a 100644
--- a/core/modules/comment/tests/src/Unit/Entity/CommentLockTest.php
+++ b/core/modules/comment/tests/src/Unit/Entity/CommentLockTest.php
@@ -33,7 +33,7 @@ public function testLocks() {
     $lock->expects($this->once())
       ->method('acquire')
       ->with($lock_name, 30)
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
     $lock->expects($this->once())
       ->method('release')
       ->with($lock_name);
@@ -55,27 +55,27 @@ public function testLocks() {
       ->getMock();
     $comment->expects($this->once())
       ->method('isNew')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
     $comment->expects($this->once())
       ->method('hasParentComment')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
     $comment->expects($this->once())
       ->method('getParentComment')
-      ->will($this->returnValue($comment));
+      ->willReturn($comment);
     $comment->expects($this->once())
       ->method('getCommentedEntityId')
-      ->will($this->returnValue($cid));
+      ->willReturn($cid);
     $comment->expects($this->any())
       ->method('getThread')
-      ->will($this->returnValue(''));
+      ->willReturn('');
 
     $anon_user = $this->createMock('Drupal\Core\Session\AccountInterface');
     $anon_user->expects($this->any())
       ->method('isAnonymous')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
     $comment->expects($this->any())
       ->method('getOwner')
-      ->will($this->returnValue($anon_user));
+      ->willReturn($anon_user);
 
     $parent_entity = $this->createMock('\Drupal\Core\Entity\ContentEntityInterface');
     $parent_entity->expects($this->atLeastOnce())
@@ -88,7 +88,7 @@ public function testLocks() {
     $entity_type = $this->createMock('\Drupal\Core\Entity\EntityTypeInterface');
     $comment->expects($this->any())
       ->method('getEntityType')
-      ->will($this->returnValue($entity_type));
+      ->willReturn($entity_type);
     $storage = $this->createMock('Drupal\comment\CommentStorageInterface');
 
     // preSave() should acquire the lock. (This is what's really being tested.)
diff --git a/core/modules/comment/tests/src/Unit/Plugin/views/field/CommentBulkFormTest.php b/core/modules/comment/tests/src/Unit/Plugin/views/field/CommentBulkFormTest.php
index d342bda45e..6a9aded8c9 100644
--- a/core/modules/comment/tests/src/Unit/Plugin/views/field/CommentBulkFormTest.php
+++ b/core/modules/comment/tests/src/Unit/Plugin/views/field/CommentBulkFormTest.php
@@ -33,26 +33,26 @@ public function testConstructor() {
       $action = $this->createMock('\Drupal\system\ActionConfigEntityInterface');
       $action->expects($this->any())
         ->method('getType')
-        ->will($this->returnValue('comment'));
+        ->willReturn('comment');
       $actions[$i] = $action;
     }
 
     $action = $this->createMock('\Drupal\system\ActionConfigEntityInterface');
     $action->expects($this->any())
       ->method('getType')
-      ->will($this->returnValue('user'));
+      ->willReturn('user');
     $actions[] = $action;
 
     $entity_storage = $this->createMock('Drupal\Core\Entity\EntityStorageInterface');
     $entity_storage->expects($this->any())
       ->method('loadMultiple')
-      ->will($this->returnValue($actions));
+      ->willReturn($actions);
 
     $entity_type_manager = $this->createMock(EntityTypeManagerInterface::class);
     $entity_type_manager->expects($this->once())
       ->method('getStorage')
       ->with('action')
-      ->will($this->returnValue($entity_storage));
+      ->willReturn($entity_storage);
 
     $entity_repository = $this->createMock(EntityRepositoryInterface::class);
 
@@ -66,7 +66,7 @@ public function testConstructor() {
     $views_data->expects($this->any())
       ->method('get')
       ->with('comment')
-      ->will($this->returnValue(['table' => ['entity type' => 'comment']]));
+      ->willReturn(['table' => ['entity type' => 'comment']]);
     $container = new ContainerBuilder();
     $container->set('views.views_data', $views_data);
     $container->set('string_translation', $this->getStringTranslationStub());
@@ -76,7 +76,7 @@ public function testConstructor() {
     $storage->expects($this->any())
       ->method('get')
       ->with('base_table')
-      ->will($this->returnValue('comment'));
+      ->willReturn('comment');
 
     $executable = $this->getMockBuilder('Drupal\views\ViewExecutable')
       ->disableOriginalConstructor()
diff --git a/core/modules/config/tests/config_schema_test/config/install/config_schema_test.ignore.yml b/core/modules/config/tests/config_schema_test/config/install/config_schema_test.ignore.yml
index 3b64ae982d..37e231ac06 100644
--- a/core/modules/config/tests/config_schema_test/config/install/config_schema_test.ignore.yml
+++ b/core/modules/config/tests/config_schema_test/config/install/config_schema_test.ignore.yml
@@ -3,7 +3,7 @@ irrelevant: 123
 indescribable:
   abc: 789
   def:
-   - 456
-   - 'abc'
+    - 456
+    - 'abc'
   xyz: 13.4
 weight: 27
diff --git a/core/modules/config/tests/config_schema_test/config/install/config_schema_test.noschema.yml b/core/modules/config/tests/config_schema_test/config/install/config_schema_test.noschema.yml
index 3c9efe813a..378530a26a 100644
--- a/core/modules/config/tests/config_schema_test/config/install/config_schema_test.noschema.yml
+++ b/core/modules/config/tests/config_schema_test/config/install/config_schema_test.noschema.yml
@@ -1,4 +1,4 @@
 testitem: "Whatever structure there is in this file"
 testlist:
- - "the main file has no schema, so individual items"
- - "will not have any schema information."
+  - "the main file has no schema, so individual items"
+  - "will not have any schema information."
diff --git a/core/modules/config/tests/config_schema_test/config/install/config_schema_test.someschema.yml b/core/modules/config/tests/config_schema_test/config/install/config_schema_test.someschema.yml
index f783c1370e..3a18da2cf7 100644
--- a/core/modules/config/tests/config_schema_test/config/install/config_schema_test.someschema.yml
+++ b/core/modules/config/tests/config_schema_test/config/install/config_schema_test.someschema.yml
@@ -1,5 +1,5 @@
 testitem: 'Since this file at least has top level schema in config_test.schema.yml'
 testlist:
- - 'Direct string items are identified and other items are'
- - 'recognized as undefined types.'
+  - 'Direct string items are identified and other items are'
+  - 'recognized as undefined types.'
 test_no_schema: 12
diff --git a/core/modules/config/tests/config_test/config/schema/config_test.schema.yml b/core/modules/config/tests/config_test/config/schema/config_test.schema.yml
index 1a0cf347a5..2a707facb0 100644
--- a/core/modules/config/tests/config_test/config/schema/config_test.schema.yml
+++ b/core/modules/config/tests/config_test/config/schema/config_test.schema.yml
@@ -131,13 +131,13 @@ config_test.new:
   type: config_object
   label: 'Configuration test'
   mapping:
-     key:
-       type: string
-       label: 'Test setting'
-     new_key:
-       type: string
-       label: 'Test setting'
-     uuid:
+    key:
+      type: string
+      label: 'Test setting'
+    new_key:
+      type: string
+      label: 'Test setting'
+    uuid:
       type: uuid
 
 config_test.old:
@@ -147,16 +147,16 @@ config_test.foo:
   type: config_object
   label: 'Configuration test'
   mapping:
-     value:
-       type: mapping
-       label: 'Value'
-       mapping:
-         key:
-           type: string
-           label: 'Key'
-     label:
-       type: label
-       label: 'Label'
+    value:
+      type: mapping
+      label: 'Value'
+      mapping:
+        key:
+          type: string
+          label: 'Key'
+    label:
+      type: label
+      label: 'Label'
 
 config_test.bar:
   type: config_test.foo
diff --git a/core/modules/config/tests/config_test/src/ConfigTestForm.php b/core/modules/config/tests/config_test/src/ConfigTestForm.php
index 19d2978813..6f1eac0b99 100644
--- a/core/modules/config/tests/config_test/src/ConfigTestForm.php
+++ b/core/modules/config/tests/config_test/src/ConfigTestForm.php
@@ -146,6 +146,7 @@ public function save(array $form, FormStateInterface $form_state) {
     }
 
     $form_state->setRedirectUrl($this->entity->toUrl('collection'));
+    return $status;
   }
 
   /**
diff --git a/core/modules/config/tests/src/Functional/ConfigImportAllTest.php b/core/modules/config/tests/src/Functional/ConfigImportAllTest.php
index 2bfaf484a3..72b4efd2b4 100644
--- a/core/modules/config/tests/src/Functional/ConfigImportAllTest.php
+++ b/core/modules/config/tests/src/Functional/ConfigImportAllTest.php
@@ -33,6 +33,9 @@ class ConfigImportAllTest extends ModuleTestBase {
    */
   protected $profile = 'standard';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/config/tests/src/Functional/ConfigImportInstallProfileTest.php b/core/modules/config/tests/src/Functional/ConfigImportInstallProfileTest.php
index cadd96ad32..6d3b222bc7 100644
--- a/core/modules/config/tests/src/Functional/ConfigImportInstallProfileTest.php
+++ b/core/modules/config/tests/src/Functional/ConfigImportInstallProfileTest.php
@@ -37,6 +37,9 @@ class ConfigImportInstallProfileTest extends BrowserTestBase {
    */
   protected $webUser;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/config/tests/src/Functional/ConfigImportUITest.php b/core/modules/config/tests/src/Functional/ConfigImportUITest.php
index f104aacf1c..bfb3296868 100644
--- a/core/modules/config/tests/src/Functional/ConfigImportUITest.php
+++ b/core/modules/config/tests/src/Functional/ConfigImportUITest.php
@@ -38,6 +38,9 @@ class ConfigImportUITest extends BrowserTestBase {
    */
   protected $webUser;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
@@ -322,8 +325,7 @@ public function testImportDiff() {
     $this->assertSession()->pageTextContains("404: '<em>herp</em>'");
 
     // Verify diff colors are displayed.
-    $result = $this->xpath('//table[contains(@class, :class)]', [':class' => 'diff']);
-    $this->assertCount(1, $result, "Diff UI is displaying colors.");
+    $this->assertSession()->elementsCount('xpath', '//table[contains(@class, "diff")]', 1);
 
     // Reset data back to original, and remove a key
     $sync_data = $original_data;
diff --git a/core/modules/config/tests/src/Functional/ConfigImportUploadTest.php b/core/modules/config/tests/src/Functional/ConfigImportUploadTest.php
index 8cf1c883c2..a7dca12e91 100644
--- a/core/modules/config/tests/src/Functional/ConfigImportUploadTest.php
+++ b/core/modules/config/tests/src/Functional/ConfigImportUploadTest.php
@@ -34,6 +34,9 @@ class ConfigImportUploadTest extends BrowserTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/config/tests/src/Functional/ConfigSingleImportExportTest.php b/core/modules/config/tests/src/Functional/ConfigSingleImportExportTest.php
index 550ef3e460..5d9871a3b7 100644
--- a/core/modules/config/tests/src/Functional/ConfigSingleImportExportTest.php
+++ b/core/modules/config/tests/src/Functional/ConfigSingleImportExportTest.php
@@ -31,6 +31,9 @@ class ConfigSingleImportExportTest extends BrowserTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/config/tests/src/Kernel/ConfigUninstallViaCliImportTest.php b/core/modules/config/tests/src/Kernel/ConfigUninstallViaCliImportTest.php
index 1a0486ed3e..e9de754b82 100644
--- a/core/modules/config/tests/src/Kernel/ConfigUninstallViaCliImportTest.php
+++ b/core/modules/config/tests/src/Kernel/ConfigUninstallViaCliImportTest.php
@@ -26,6 +26,9 @@ class ConfigUninstallViaCliImportTest extends KernelTestBase {
    */
   protected static $modules = ['system', 'config'];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     if (PHP_SAPI !== 'cli') {
diff --git a/core/modules/config/tests/src/Unit/Menu/ConfigLocalTasksTest.php b/core/modules/config/tests/src/Unit/Menu/ConfigLocalTasksTest.php
index e6c3bf4a7f..e6705d5403 100644
--- a/core/modules/config/tests/src/Unit/Menu/ConfigLocalTasksTest.php
+++ b/core/modules/config/tests/src/Unit/Menu/ConfigLocalTasksTest.php
@@ -11,6 +11,9 @@
  */
 class ConfigLocalTasksTest extends LocalTaskIntegrationTestBase {
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     $this->directoryList = ['config' => 'core/modules/config'];
     parent::setUp();
diff --git a/core/modules/config_translation/migrations/d6_field_instance_label_description_translation.yml b/core/modules/config_translation/migrations/d6_field_instance_label_description_translation.yml
index 20d54f542a..699d599bf0 100644
--- a/core/modules/config_translation/migrations/d6_field_instance_label_description_translation.yml
+++ b/core/modules/config_translation/migrations/d6_field_instance_label_description_translation.yml
@@ -36,8 +36,8 @@ process:
       plugin: migration_lookup
       migration: d6_field_instance
       source:
-         - '@field_name'
-         - '@bundle'
+        - '@field_name'
+        - '@bundle'
     -
       plugin: skip_on_empty
       method: row
diff --git a/core/modules/config_translation/migrations/d7_field_instance_label_description_translation.yml b/core/modules/config_translation/migrations/d7_field_instance_label_description_translation.yml
index b8b3735a04..78cf8b7ef9 100644
--- a/core/modules/config_translation/migrations/d7_field_instance_label_description_translation.yml
+++ b/core/modules/config_translation/migrations/d7_field_instance_label_description_translation.yml
@@ -34,9 +34,9 @@ process:
       plugin: migration_lookup
       migration: d7_field_instance
       source:
-         - entity_type
-         - objectid
-         - type
+        - entity_type
+        - objectid
+        - type
     -
       plugin: skip_on_empty
       method: row
diff --git a/core/modules/config_translation/migrations/d7_field_instance_option_translation.yml b/core/modules/config_translation/migrations/d7_field_instance_option_translation.yml
index 06482b24a1..984f2c6a57 100644
--- a/core/modules/config_translation/migrations/d7_field_instance_option_translation.yml
+++ b/core/modules/config_translation/migrations/d7_field_instance_option_translation.yml
@@ -19,9 +19,9 @@ process:
     method: getFieldType
   entity_type: entity_type
   field_name: field_name
-#  # The bundle needs to be statically mapped in order to support comment types
-#  # that might already exist before this migration is run. See
-#  # d7_comment_type.yml for more information.
+  # The bundle needs to be statically mapped in order to support comment types
+  # that might already exist before this migration is run. See
+  # d7_comment_type.yml for more information.
   bundle:
     plugin: static_map
     source: bundle
diff --git a/core/modules/config_translation/tests/src/Functional/ConfigTranslationCacheTest.php b/core/modules/config_translation/tests/src/Functional/ConfigTranslationCacheTest.php
index b32a9d627c..182b365955 100644
--- a/core/modules/config_translation/tests/src/Functional/ConfigTranslationCacheTest.php
+++ b/core/modules/config_translation/tests/src/Functional/ConfigTranslationCacheTest.php
@@ -70,6 +70,9 @@ class ConfigTranslationCacheTest extends BrowserTestBase {
    */
   protected $localeStorage;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $translator_permissions = [
diff --git a/core/modules/config_translation/tests/src/Functional/ConfigTranslationDateFormatUiTest.php b/core/modules/config_translation/tests/src/Functional/ConfigTranslationDateFormatUiTest.php
index be4d46da41..4247eb4318 100644
--- a/core/modules/config_translation/tests/src/Functional/ConfigTranslationDateFormatUiTest.php
+++ b/core/modules/config_translation/tests/src/Functional/ConfigTranslationDateFormatUiTest.php
@@ -23,6 +23,9 @@ class ConfigTranslationDateFormatUiTest extends BrowserTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/config_translation/tests/src/Functional/ConfigTranslationListUiTest.php b/core/modules/config_translation/tests/src/Functional/ConfigTranslationListUiTest.php
index c44ecb251a..0cf5548b9c 100644
--- a/core/modules/config_translation/tests/src/Functional/ConfigTranslationListUiTest.php
+++ b/core/modules/config_translation/tests/src/Functional/ConfigTranslationListUiTest.php
@@ -53,6 +53,9 @@ class ConfigTranslationListUiTest extends BrowserTestBase {
    */
   protected $adminUser;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/config_translation/tests/src/Functional/ConfigTranslationOverviewTest.php b/core/modules/config_translation/tests/src/Functional/ConfigTranslationOverviewTest.php
index c7815b65ba..223d34e8b6 100644
--- a/core/modules/config_translation/tests/src/Functional/ConfigTranslationOverviewTest.php
+++ b/core/modules/config_translation/tests/src/Functional/ConfigTranslationOverviewTest.php
@@ -54,6 +54,9 @@ class ConfigTranslationOverviewTest extends BrowserTestBase {
    */
   protected $localeStorage;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $permissions = [
diff --git a/core/modules/config_translation/tests/src/Functional/ConfigTranslationUiTest.php b/core/modules/config_translation/tests/src/Functional/ConfigTranslationUiTest.php
index 42d54b21ef..f60c0a56ee 100644
--- a/core/modules/config_translation/tests/src/Functional/ConfigTranslationUiTest.php
+++ b/core/modules/config_translation/tests/src/Functional/ConfigTranslationUiTest.php
@@ -78,6 +78,9 @@ class ConfigTranslationUiTest extends BrowserTestBase {
    */
   protected $localeStorage;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $translator_permissions = [
@@ -1160,25 +1163,6 @@ protected function setSiteInformation($site_name, $site_slogan) {
     $this->assertSession()->pageTextContains('The configuration options have been saved.');
   }
 
-  /**
-   * Get server-rendered contextual links for the given contextual link ids.
-   *
-   * @param array $ids
-   *   An array of contextual link ids.
-   * @param string $current_path
-   *   The Drupal path for the page for which the contextual links are rendered.
-   *
-   * @return string
-   *   The response body.
-   */
-  protected function renderContextualLinks($ids, $current_path) {
-    $post = [];
-    for ($i = 0; $i < count($ids); $i++) {
-      $post['ids[' . $i . ']'] = $ids[$i];
-    }
-    return $this->drupalPostWithFormat('contextual/render', 'json', $post, ['query' => ['destination' => $current_path]]);
-  }
-
   /**
    * Asserts that a textarea with a given ID has been disabled from editing.
    *
diff --git a/core/modules/config_translation/tests/src/Functional/ConfigTranslationUiThemeTest.php b/core/modules/config_translation/tests/src/Functional/ConfigTranslationUiThemeTest.php
index f04173eb4d..04227c6370 100644
--- a/core/modules/config_translation/tests/src/Functional/ConfigTranslationUiThemeTest.php
+++ b/core/modules/config_translation/tests/src/Functional/ConfigTranslationUiThemeTest.php
@@ -41,6 +41,9 @@ class ConfigTranslationUiThemeTest extends BrowserTestBase {
    */
   protected $adminUser;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/config_translation/tests/src/Functional/ConfigTranslationViewListUiTest.php b/core/modules/config_translation/tests/src/Functional/ConfigTranslationViewListUiTest.php
index 3cc36c8b51..8483d8e883 100644
--- a/core/modules/config_translation/tests/src/Functional/ConfigTranslationViewListUiTest.php
+++ b/core/modules/config_translation/tests/src/Functional/ConfigTranslationViewListUiTest.php
@@ -34,6 +34,9 @@ class ConfigTranslationViewListUiTest extends UITestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp($import_test_views = TRUE, $modules = ['views_test_config']): void {
     parent::setUp($import_test_views, $modules);
 
diff --git a/core/modules/config_translation/tests/src/Unit/ConfigEntityMapperTest.php b/core/modules/config_translation/tests/src/Unit/ConfigEntityMapperTest.php
index 2e8260bdde..ccae8e23b1 100644
--- a/core/modules/config_translation/tests/src/Unit/ConfigEntityMapperTest.php
+++ b/core/modules/config_translation/tests/src/Unit/ConfigEntityMapperTest.php
@@ -56,6 +56,9 @@ class ConfigEntityMapperTest extends UnitTestCase {
    */
   protected $eventDispatcher;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     $this->entityTypeManager = $this->createMock('Drupal\Core\Entity\EntityTypeManagerInterface');
 
@@ -67,7 +70,7 @@ protected function setUp(): void {
       ->expects($this->any())
       ->method('getRouteByName')
       ->with('entity.configurable_language.edit_form')
-      ->will($this->returnValue(new Route('/admin/config/regional/language/edit/{configurable_language}')));
+      ->willReturn(new Route('/admin/config/regional/language/edit/{configurable_language}'));
 
     $definition = [
       'class' => '\Drupal\config_translation\ConfigEntityMapper',
@@ -111,18 +114,18 @@ public function testEntityGetterAndSetter() {
       ->expects($this->once())
       ->method('id')
       ->with()
-      ->will($this->returnValue('entity_id'));
+      ->willReturn('entity_id');
 
     $entity_type = $this->createMock('Drupal\Core\Config\Entity\ConfigEntityTypeInterface');
     $entity_type
       ->expects($this->any())
       ->method('getConfigPrefix')
-      ->will($this->returnValue('config_prefix'));
+      ->willReturn('config_prefix');
     $this->entityTypeManager
       ->expects($this->once())
       ->method('getDefinition')
       ->with('configurable_language')
-      ->will($this->returnValue($entity_type));
+      ->willReturn($entity_type);
 
     // No entity is set.
     $this->assertNull($this->configEntityMapper->getEntity());
@@ -151,14 +154,14 @@ public function testGetOverviewRouteParameters() {
       ->expects($this->once())
       ->method('getDefinition')
       ->with('configurable_language')
-      ->will($this->returnValue($entity_type));
+      ->willReturn($entity_type);
     $this->configEntityMapper->setEntity($this->entity);
 
     $this->entity
       ->expects($this->once())
       ->method('id')
       ->with()
-      ->will($this->returnValue('entity_id'));
+      ->willReturn('entity_id');
 
     $result = $this->configEntityMapper->getOverviewRouteParameters();
 
@@ -180,12 +183,12 @@ public function testGetTypeName() {
     $entity_type = $this->createMock('Drupal\Core\Config\Entity\ConfigEntityTypeInterface');
     $entity_type->expects($this->once())
       ->method('getLabel')
-      ->will($this->returnValue('test'));
+      ->willReturn('test');
     $this->entityTypeManager
       ->expects($this->once())
       ->method('getDefinition')
       ->with('configurable_language')
-      ->will($this->returnValue($entity_type));
+      ->willReturn($entity_type);
 
     $result = $this->configEntityMapper->getTypeName();
     $this->assertSame('test', $result);
@@ -198,12 +201,12 @@ public function testGetTypeLabel() {
     $entity_type = $this->createMock('Drupal\Core\Config\Entity\ConfigEntityTypeInterface');
     $entity_type->expects($this->once())
       ->method('getLabel')
-      ->will($this->returnValue('test'));
+      ->willReturn('test');
     $this->entityTypeManager
       ->expects($this->once())
       ->method('getDefinition')
       ->with('configurable_language')
-      ->will($this->returnValue($entity_type));
+      ->willReturn($entity_type);
 
     $result = $this->configEntityMapper->getTypeLabel();
     $this->assertSame('test', $result);
diff --git a/core/modules/config_translation/tests/src/Unit/ConfigFieldMapperTest.php b/core/modules/config_translation/tests/src/Unit/ConfigFieldMapperTest.php
index e1f9b16ecd..4c3a05ea95 100644
--- a/core/modules/config_translation/tests/src/Unit/ConfigFieldMapperTest.php
+++ b/core/modules/config_translation/tests/src/Unit/ConfigFieldMapperTest.php
@@ -88,23 +88,23 @@ public function testSetEntity() {
     $entity_type
       ->expects($this->any())
       ->method('getConfigPrefix')
-      ->will($this->returnValue('config_prefix'));
+      ->willReturn('config_prefix');
 
     $this->entityTypeManager
       ->expects($this->any())
       ->method('getDefinition')
-      ->will($this->returnValue($entity_type));
+      ->willReturn($entity_type);
 
     $field_storage = $this->createMock('Drupal\field\FieldStorageConfigInterface');
     $field_storage
       ->expects($this->any())
       ->method('id')
-      ->will($this->returnValue('field_storage_id'));
+      ->willReturn('field_storage_id');
 
     $this->entity
       ->expects($this->any())
       ->method('getFieldStorageDefinition')
-      ->will($this->returnValue($field_storage));
+      ->willReturn($field_storage);
 
     $result = $this->configFieldMapper->setEntity($this->entity);
     $this->assertTrue($result);
diff --git a/core/modules/config_translation/tests/src/Unit/ConfigMapperManagerTest.php b/core/modules/config_translation/tests/src/Unit/ConfigMapperManagerTest.php
index 3bee25738f..b91b613603 100644
--- a/core/modules/config_translation/tests/src/Unit/ConfigMapperManagerTest.php
+++ b/core/modules/config_translation/tests/src/Unit/ConfigMapperManagerTest.php
@@ -30,13 +30,16 @@ class ConfigMapperManagerTest extends UnitTestCase {
    */
   protected $typedConfigManager;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     $language = new Language(['id' => 'en']);
     $language_manager = $this->createMock('Drupal\Core\Language\LanguageManagerInterface');
     $language_manager->expects($this->once())
       ->method('getCurrentLanguage')
       ->with(LanguageInterface::TYPE_INTERFACE)
-      ->will($this->returnValue($language));
+      ->willReturn($language);
 
     $this->typedConfigManager = $this->getMockBuilder('Drupal\Core\Config\TypedConfigManagerInterface')
       ->getMock();
@@ -68,7 +71,7 @@ public function testHasTranslatable(TypedDataInterface $element, $expected) {
       ->expects($this->once())
       ->method('get')
       ->with('test')
-      ->will($this->returnValue($element));
+      ->willReturn($element);
 
     $result = $this->configMapperManager->hasTranslatable('test');
     $this->assertSame($expected, $result);
@@ -151,7 +154,7 @@ protected function getElement(array $definition) {
     $element = $this->createMock('Drupal\Core\TypedData\TypedDataInterface');
     $element->expects($this->any())
       ->method('getDataDefinition')
-      ->will($this->returnValue($data_definition));
+      ->willReturn($data_definition);
     return $element;
   }
 
@@ -176,7 +179,7 @@ protected function getNestedElement(array $elements) {
       ->getMock();
     $nested_element->expects($this->once())
       ->method('getIterator')
-      ->will($this->returnValue(new \ArrayIterator($elements)));
+      ->willReturn(new \ArrayIterator($elements));
     return $nested_element;
   }
 
diff --git a/core/modules/config_translation/tests/src/Unit/ConfigNamesMapperTest.php b/core/modules/config_translation/tests/src/Unit/ConfigNamesMapperTest.php
index ea273e39fd..915ac9dc60 100644
--- a/core/modules/config_translation/tests/src/Unit/ConfigNamesMapperTest.php
+++ b/core/modules/config_translation/tests/src/Unit/ConfigNamesMapperTest.php
@@ -95,6 +95,9 @@ class ConfigNamesMapperTest extends UnitTestCase {
    */
   protected $eventDispatcher;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     $this->routeProvider = $this->createMock('Drupal\Core\Routing\RouteProviderInterface');
 
@@ -125,7 +128,7 @@ protected function setUp(): void {
       ->expects($this->any())
       ->method('getRouteByName')
       ->with('system.site_information_settings')
-      ->will($this->returnValue($this->baseRoute));
+      ->willReturn($this->baseRoute);
 
     $this->languageManager = $this->createMock('Drupal\Core\Language\LanguageManagerInterface');
 
diff --git a/core/modules/contact/tests/drupal-7.contact.database.php b/core/modules/contact/tests/drupal-7.contact.database.php
index 8ace9362c8..66119d3518 100644
--- a/core/modules/contact/tests/drupal-7.contact.database.php
+++ b/core/modules/contact/tests/drupal-7.contact.database.php
@@ -25,10 +25,10 @@
   'selected',
 ])
   ->values([
-  'category' => 'Upgrade test',
-  'recipients' => 'test1@example.com,test2@example.com',
-  'reply' => 'Test reply',
-  'weight' => 1,
-  'selected' => 1,
-])
+    'category' => 'Upgrade test',
+    'recipients' => 'test1@example.com,test2@example.com',
+    'reply' => 'Test reply',
+    'weight' => 1,
+    'selected' => 1,
+  ])
   ->execute();
diff --git a/core/modules/contact/tests/src/Functional/ContactPersonalTest.php b/core/modules/contact/tests/src/Functional/ContactPersonalTest.php
index e28c8aae9b..4e85773341 100644
--- a/core/modules/contact/tests/src/Functional/ContactPersonalTest.php
+++ b/core/modules/contact/tests/src/Functional/ContactPersonalTest.php
@@ -53,6 +53,9 @@ class ContactPersonalTest extends BrowserTestBase {
    */
   private $contactUser;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/contact/tests/src/Kernel/MessageEntityTest.php b/core/modules/contact/tests/src/Kernel/MessageEntityTest.php
index 4a123c37a5..0c094cc612 100644
--- a/core/modules/contact/tests/src/Kernel/MessageEntityTest.php
+++ b/core/modules/contact/tests/src/Kernel/MessageEntityTest.php
@@ -25,6 +25,9 @@ class MessageEntityTest extends EntityKernelTestBase {
     'contact_test',
   ];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->installConfig(['contact', 'contact_test']);
diff --git a/core/modules/contact/tests/src/Unit/MailHandlerTest.php b/core/modules/contact/tests/src/Unit/MailHandlerTest.php
index 439e5077bf..57108d3fce 100644
--- a/core/modules/contact/tests/src/Unit/MailHandlerTest.php
+++ b/core/modules/contact/tests/src/Unit/MailHandlerTest.php
@@ -86,11 +86,11 @@ protected function setUp(): void {
 
     $this->languageManager->expects($this->any())
       ->method('getDefaultLanguage')
-      ->will($this->returnValue($language));
+      ->willReturn($language);
 
     $this->languageManager->expects($this->any())
       ->method('getCurrentLanguage')
-      ->will($this->returnValue($language));
+      ->willReturn($language);
   }
 
   /**
diff --git a/core/modules/content_moderation/tests/src/Functional/ModerationFormTest.php b/core/modules/content_moderation/tests/src/Functional/ModerationFormTest.php
index 391d3a0e51..3d7ad6533e 100644
--- a/core/modules/content_moderation/tests/src/Functional/ModerationFormTest.php
+++ b/core/modules/content_moderation/tests/src/Functional/ModerationFormTest.php
@@ -308,7 +308,7 @@ public function testContentTranslationNodeForm() {
       'body[0][value]' => 'First version of the content.',
       'moderation_state[0][state]' => 'draft',
     ], 'Save');
-    $this->assertNotEmpty($this->xpath('//ul[@class="entity-moderation-form"]'));
+    $this->assertSession()->elementExists('xpath', '//ul[@class="entity-moderation-form"]');
 
     $node = $this->drupalGetNodeByTitle('Some moderated content');
     $this->assertNotEmpty($node->language(), 'en');
@@ -319,7 +319,7 @@ public function testContentTranslationNodeForm() {
 
     $this->drupalGet($latest_version_path);
     $this->assertSession()->statusCodeEquals('403');
-    $this->assertEmpty($this->xpath('//ul[@class="entity-moderation-form"]'));
+    $this->assertSession()->elementNotExists('xpath', '//ul[@class="entity-moderation-form"]');
 
     // Add french translation (revision 2).
     $this->drupalGet($translate_path);
@@ -333,7 +333,7 @@ public function testContentTranslationNodeForm() {
 
     $this->drupalGet($latest_version_path, ['language' => $french]);
     $this->assertSession()->statusCodeEquals('403');
-    $this->assertEmpty($this->xpath('//ul[@class="entity-moderation-form"]'));
+    $this->assertSession()->elementNotExists('xpath', '//ul[@class="entity-moderation-form"]');
 
     // Add french pending revision (revision 3).
     $this->drupalGet($edit_path, ['language' => $french]);
@@ -356,14 +356,14 @@ public function testContentTranslationNodeForm() {
     ], 'Save (this translation)');
 
     $this->drupalGet($latest_version_path, ['language' => $french]);
-    $this->assertNotEmpty($this->xpath('//ul[@class="entity-moderation-form"]'));
+    $this->assertSession()->elementExists('xpath', '//ul[@class="entity-moderation-form"]');
 
     $this->drupalGet($edit_path);
     $this->clickLink('Delete');
     $this->assertSession()->buttonExists('Delete');
 
     $this->drupalGet($latest_version_path);
-    $this->assertEmpty($this->xpath('//ul[@class="entity-moderation-form"]'));
+    $this->assertSession()->elementNotExists('xpath', '//ul[@class="entity-moderation-form"]');
 
     // Publish the french pending revision (revision 4).
     $this->drupalGet($edit_path, ['language' => $french]);
@@ -376,7 +376,7 @@ public function testContentTranslationNodeForm() {
     ], 'Save (this translation)');
 
     $this->drupalGet($latest_version_path, ['language' => $french]);
-    $this->assertEmpty($this->xpath('//ul[@class="entity-moderation-form"]'));
+    $this->assertSession()->elementNotExists('xpath', '//ul[@class="entity-moderation-form"]');
 
     // Publish the English pending revision (revision 5).
     $this->drupalGet($edit_path);
@@ -389,7 +389,7 @@ public function testContentTranslationNodeForm() {
     ], 'Save (this translation)');
 
     $this->drupalGet($latest_version_path);
-    $this->assertEmpty($this->xpath('//ul[@class="entity-moderation-form"]'));
+    $this->assertSession()->elementNotExists('xpath', '//ul[@class="entity-moderation-form"]');
 
     // Make sure we are allowed to create a pending French revision.
     $this->drupalGet($edit_path, ['language' => $french]);
@@ -408,9 +408,9 @@ public function testContentTranslationNodeForm() {
     ], 'Save (this translation)');
 
     $this->drupalGet($latest_version_path);
-    $this->assertNotEmpty($this->xpath('//ul[@class="entity-moderation-form"]'));
+    $this->assertSession()->elementExists('xpath', '//ul[@class="entity-moderation-form"]');
     $this->drupalGet($latest_version_path, ['language' => $french]);
-    $this->assertEmpty($this->xpath('//ul[@class="entity-moderation-form"]'));
+    $this->assertSession()->elementNotExists('xpath', '//ul[@class="entity-moderation-form"]');
 
     // Publish the English pending revision (revision 7)
     $this->drupalGet($edit_path);
@@ -423,7 +423,7 @@ public function testContentTranslationNodeForm() {
     ], 'Save (this translation)');
 
     $this->drupalGet($latest_version_path);
-    $this->assertEmpty($this->xpath('//ul[@class="entity-moderation-form"]'));
+    $this->assertSession()->elementNotExists('xpath', '//ul[@class="entity-moderation-form"]');
 
     // Make sure we are allowed to create a pending French revision.
     $this->drupalGet($edit_path, ['language' => $french]);
diff --git a/core/modules/content_moderation/tests/src/Unit/ContentModerationRouteSubscriberTest.php b/core/modules/content_moderation/tests/src/Unit/ContentModerationRouteSubscriberTest.php
index 8eeef3beba..6801ef7cf7 100644
--- a/core/modules/content_moderation/tests/src/Unit/ContentModerationRouteSubscriberTest.php
+++ b/core/modules/content_moderation/tests/src/Unit/ContentModerationRouteSubscriberTest.php
@@ -42,14 +42,14 @@ protected function setupEntityTypes() {
     $definition = $this->createMock(EntityTypeInterface::class);
     $definition->expects($this->any())
       ->method('getClass')
-      ->will($this->returnValue(TestEntity::class));
+      ->willReturn(TestEntity::class);
     $definition->expects($this->any())
       ->method('isRevisionable')
       ->willReturn(FALSE);
     $revisionable_definition = $this->createMock(EntityTypeInterface::class);
     $revisionable_definition->expects($this->any())
       ->method('getClass')
-      ->will($this->returnValue(TestEntity::class));
+      ->willReturn(TestEntity::class);
     $revisionable_definition->expects($this->any())
       ->method('isRevisionable')
       ->willReturn(TRUE);
diff --git a/core/modules/content_translation/content_translation.module b/core/modules/content_translation/content_translation.module
index 9910ba31bd..0e0a547dbe 100644
--- a/core/modules/content_translation/content_translation.module
+++ b/core/modules/content_translation/content_translation.module
@@ -574,7 +574,7 @@ function content_translation_enable_widget($entity_type, $bundle, array &$form,
  * @param array $element
  *   Form API element.
  *
- * @return
+ * @return array
  *   Processed language configuration element.
  */
 function content_translation_language_configuration_element_process(array $element, FormStateInterface $form_state, array &$form) {
diff --git a/core/modules/content_translation/migrations/state/content_translation.migrate_drupal.yml b/core/modules/content_translation/migrations/state/content_translation.migrate_drupal.yml
index 2666e5c0cd..eddee159fe 100644
--- a/core/modules/content_translation/migrations/state/content_translation.migrate_drupal.yml
+++ b/core/modules/content_translation/migrations/state/content_translation.migrate_drupal.yml
@@ -15,7 +15,7 @@ finished:
     i18ntaxonomy: content_translation
     locale: content_translation
     menu: content_translation
-  # Node revision translations.
+    # Node revision translations.
     node: content_translation
     statistics: statistics
     taxonomy: content_translation
diff --git a/core/modules/content_translation/src/ContentTranslationHandler.php b/core/modules/content_translation/src/ContentTranslationHandler.php
index 6a103e4757..7e782db495 100644
--- a/core/modules/content_translation/src/ContentTranslationHandler.php
+++ b/core/modules/content_translation/src/ContentTranslationHandler.php
@@ -78,8 +78,9 @@ class ContentTranslationHandler implements ContentTranslationHandlerInterface, E
   protected $currentUser;
 
   /**
-   * The array of installed field storage definitions for the entity type, keyed
-   * by field name.
+   * Installed field storage definitions for the entity type.
+   *
+   * Keyed by field name.
    *
    * @var \Drupal\Core\Field\FieldStorageDefinitionInterface[]
    */
diff --git a/core/modules/content_translation/src/Plugin/Derivative/ContentTranslationContextualLinks.php b/core/modules/content_translation/src/Plugin/Derivative/ContentTranslationContextualLinks.php
index 7a4cad5e3d..91fd520caa 100644
--- a/core/modules/content_translation/src/Plugin/Derivative/ContentTranslationContextualLinks.php
+++ b/core/modules/content_translation/src/Plugin/Derivative/ContentTranslationContextualLinks.php
@@ -5,6 +5,7 @@
 use Drupal\Component\Plugin\Derivative\DeriverBase;
 use Drupal\Core\Plugin\Discovery\ContainerDeriverInterface;
 use Drupal\content_translation\ContentTranslationManagerInterface;
+use Drupal\Core\StringTranslation\StringTranslationTrait;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 
 /**
@@ -14,6 +15,8 @@
  */
 class ContentTranslationContextualLinks extends DeriverBase implements ContainerDeriverInterface {
 
+  use StringTranslationTrait;
+
   /**
    * The content translation manager.
    *
@@ -46,7 +49,7 @@ public static function create(ContainerInterface $container, $base_plugin_id) {
   public function getDerivativeDefinitions($base_plugin_definition) {
     // Create contextual links for translatable entity types.
     foreach ($this->contentTranslationManager->getSupportedEntityTypes() as $entity_type_id => $entity_type) {
-      $this->derivatives[$entity_type_id]['title'] = t('Translate');
+      $this->derivatives[$entity_type_id]['title'] = $this->t('Translate');
       $this->derivatives[$entity_type_id]['route_name'] = "entity.$entity_type_id.content_translation_overview";
       $this->derivatives[$entity_type_id]['group'] = $entity_type_id;
     }
diff --git a/core/modules/content_translation/tests/src/Functional/ContentTranslationContextualLinksTest.php b/core/modules/content_translation/tests/src/Functional/ContentTranslationContextualLinksTest.php
index 0e06ddd254..775bff50ba 100644
--- a/core/modules/content_translation/tests/src/Functional/ContentTranslationContextualLinksTest.php
+++ b/core/modules/content_translation/tests/src/Functional/ContentTranslationContextualLinksTest.php
@@ -61,6 +61,9 @@ class ContentTranslationContextualLinksTest extends BrowserTestBase {
    */
   protected $profile = 'testing';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     // Set up an additional language.
diff --git a/core/modules/content_translation/tests/src/Functional/ContentTranslationEntityBundleUITest.php b/core/modules/content_translation/tests/src/Functional/ContentTranslationEntityBundleUITest.php
index 02913f5569..26e7c56964 100644
--- a/core/modules/content_translation/tests/src/Functional/ContentTranslationEntityBundleUITest.php
+++ b/core/modules/content_translation/tests/src/Functional/ContentTranslationEntityBundleUITest.php
@@ -24,6 +24,9 @@ class ContentTranslationEntityBundleUITest extends BrowserTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $user = $this->drupalCreateUser([
diff --git a/core/modules/content_translation/tests/src/Functional/ContentTranslationLinkTagTest.php b/core/modules/content_translation/tests/src/Functional/ContentTranslationLinkTagTest.php
index 5c0f9d8d35..1d25cc06cf 100644
--- a/core/modules/content_translation/tests/src/Functional/ContentTranslationLinkTagTest.php
+++ b/core/modules/content_translation/tests/src/Functional/ContentTranslationLinkTagTest.php
@@ -154,8 +154,7 @@ public function testCanonicalAlternateTagsMissing() {
     $this->drupalGet($entity->toUrl('edit-form'));
 
     $this->assertSession()->statusCodeEquals(200);
-    $result = $this->xpath('//link[@rel="alternate" and @hreflang]');
-    $this->assertEmpty($result, 'No alternate link tag found.');
+    $this->assertSession()->elementNotExists('xpath', '//link[@rel="alternate" and @hreflang]');
   }
 
 }
diff --git a/core/modules/content_translation/tests/src/Functional/ContentTranslationOutdatedRevisionTranslationTest.php b/core/modules/content_translation/tests/src/Functional/ContentTranslationOutdatedRevisionTranslationTest.php
index 07dacff667..b01f5b5c70 100644
--- a/core/modules/content_translation/tests/src/Functional/ContentTranslationOutdatedRevisionTranslationTest.php
+++ b/core/modules/content_translation/tests/src/Functional/ContentTranslationOutdatedRevisionTranslationTest.php
@@ -39,7 +39,8 @@ public function testFlagAsOutdatedHidden() {
     $entity = $this->storage->load($id);
 
     // Add a published Italian translation.
-    $add_translation_url = Url::fromRoute("entity.{$this->entityTypeId}.content_translation_add", [
+    $add_translation_url = Url::fromRoute("entity.{$this->entityTypeId}.content_translation_add",
+      [
         $entity->getEntityTypeId() => $id,
         'source' => 'en',
         'target' => 'it',
@@ -58,7 +59,8 @@ public function testFlagAsOutdatedHidden() {
     $this->submitForm($edit, 'Save (this translation)');
 
     // Add a published French translation.
-    $add_translation_url = Url::fromRoute("entity.{$this->entityTypeId}.content_translation_add", [
+    $add_translation_url = Url::fromRoute("entity.{$this->entityTypeId}.content_translation_add",
+      [
         $entity->getEntityTypeId() => $id,
         'source' => 'en',
         'target' => 'fr',
diff --git a/core/modules/content_translation/tests/src/Functional/ContentTranslationRevisionTranslationDeletionTest.php b/core/modules/content_translation/tests/src/Functional/ContentTranslationRevisionTranslationDeletionTest.php
index cd89e4d4c1..25b60c7573 100644
--- a/core/modules/content_translation/tests/src/Functional/ContentTranslationRevisionTranslationDeletionTest.php
+++ b/core/modules/content_translation/tests/src/Functional/ContentTranslationRevisionTranslationDeletionTest.php
@@ -61,7 +61,8 @@ public function doTestOverview($index) {
 
     // Add a draft translation and check that it is available only in the latest
     // revision.
-    $add_translation_url = Url::fromRoute("entity.{$this->entityTypeId}.content_translation_add", [
+    $add_translation_url = Url::fromRoute("entity.{$this->entityTypeId}.content_translation_add",
+      [
         $entity->getEntityTypeId() => $id,
         'source' => 'en',
         'target' => 'it',
@@ -186,7 +187,8 @@ public function doTestOverview($index) {
     // again, since the active revision is now a default revision.
     $this->drupalLogin($this->editor);
     $this->drupalGet($it_revision->toUrl('version-history'));
-    $revision_deletion_url = Url::fromRoute('node.revision_delete_confirm', [
+    $revision_deletion_url = Url::fromRoute('node.revision_delete_confirm',
+      [
         'node' => $id,
         'node_revision' => $it_revision->getRevisionId(),
       ],
diff --git a/core/modules/content_translation/tests/src/Functional/ContentTranslationSettingsTest.php b/core/modules/content_translation/tests/src/Functional/ContentTranslationSettingsTest.php
index 7d33311419..a18d69076d 100644
--- a/core/modules/content_translation/tests/src/Functional/ContentTranslationSettingsTest.php
+++ b/core/modules/content_translation/tests/src/Functional/ContentTranslationSettingsTest.php
@@ -39,6 +39,9 @@ class ContentTranslationSettingsTest extends BrowserTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/content_translation/tests/src/Functional/ContentTranslationSyncImageTest.php b/core/modules/content_translation/tests/src/Functional/ContentTranslationSyncImageTest.php
index 0aab857961..14a5a2dda9 100644
--- a/core/modules/content_translation/tests/src/Functional/ContentTranslationSyncImageTest.php
+++ b/core/modules/content_translation/tests/src/Functional/ContentTranslationSyncImageTest.php
@@ -52,6 +52,9 @@ class ContentTranslationSyncImageTest extends ContentTranslationTestBase {
     'field_ui',
   ];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->files = $this->drupalGetTestFiles('image');
diff --git a/core/modules/content_translation/tests/src/Functional/ContentTranslationTestBase.php b/core/modules/content_translation/tests/src/Functional/ContentTranslationTestBase.php
index a14cd5902b..405fa2beea 100644
--- a/core/modules/content_translation/tests/src/Functional/ContentTranslationTestBase.php
+++ b/core/modules/content_translation/tests/src/Functional/ContentTranslationTestBase.php
@@ -82,6 +82,9 @@ abstract class ContentTranslationTestBase extends BrowserTestBase {
    */
   protected $manager;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/content_translation/tests/src/Functional/ContentTranslationUITestBase.php b/core/modules/content_translation/tests/src/Functional/ContentTranslationUITestBase.php
index 953d8816e7..e012360be7 100644
--- a/core/modules/content_translation/tests/src/Functional/ContentTranslationUITestBase.php
+++ b/core/modules/content_translation/tests/src/Functional/ContentTranslationUITestBase.php
@@ -263,12 +263,12 @@ protected function doTestOutdatedStatus() {
       if ($added_langcode == $langcode) {
         // Verify that the retranslate flag is not checked by default.
         $this->assertSession()->fieldValueEquals('content_translation[retranslate]', FALSE);
-        $this->assertEmpty($this->xpath('//details[@id="edit-content-translation" and @open="open"]'), 'The translation tab should be collapsed by default.');
+        $this->assertSession()->elementNotExists('xpath', '//details[@id="edit-content-translation" and @open="open"]');
       }
       else {
         // Verify that the translate flag is checked by default.
         $this->assertSession()->fieldValueEquals('content_translation[outdated]', TRUE);
-        $this->assertNotEmpty($this->xpath('//details[@id="edit-content-translation" and @open="open"]'), 'The translation tab is correctly expanded when the translation is outdated.');
+        $this->assertSession()->elementExists('xpath', '//details[@id="edit-content-translation" and @open="open"]');
         $edit = ['content_translation[outdated]' => FALSE];
         $this->drupalGet($url);
         $this->submitForm($edit, $this->getFormSubmitAction($entity, $added_langcode));
@@ -487,7 +487,7 @@ protected function getTranslation(EntityInterface $entity, $langcode) {
    * @param string $langcode
    *   The property value.
    *
-   * @return
+   * @return mixed
    *   The property value.
    */
   protected function getValue(EntityInterface $translation, $property, $langcode) {
diff --git a/core/modules/content_translation/tests/src/Functional/ContentTranslationUntranslatableFieldsTest.php b/core/modules/content_translation/tests/src/Functional/ContentTranslationUntranslatableFieldsTest.php
index bf0cedb936..07470bc7e9 100644
--- a/core/modules/content_translation/tests/src/Functional/ContentTranslationUntranslatableFieldsTest.php
+++ b/core/modules/content_translation/tests/src/Functional/ContentTranslationUntranslatableFieldsTest.php
@@ -88,9 +88,9 @@ public function testHiddenWidgets() {
     $en_edit_url = $entity->toUrl('edit-form');
     $this->drupalGet($en_edit_url);
     $field_xpath = '//input[@name="' . $this->fieldName . '[0][value]"]';
-    $this->assertNotEmpty($this->xpath($field_xpath));
+    $this->assertSession()->elementExists('xpath', $field_xpath);
     $clue_xpath = '//label[@for="edit-' . strtr($this->fieldName, '_', '-') . '-0-value"]/span[text()="(all languages)"]';
-    $this->assertEmpty($this->xpath($clue_xpath));
+    $this->assertSession()->elementNotExists('xpath', $clue_xpath);
     $this->assertSession()->pageTextContains('Untranslatable-but-visible test field');
 
     // Add a translation and check that the untranslatable field widget is
@@ -102,20 +102,20 @@ public function testHiddenWidgets() {
       'target' => 'it',
     ]);
     $this->drupalGet($add_url);
-    $this->assertNotEmpty($this->xpath($field_xpath));
-    $this->assertNotEmpty($this->xpath($clue_xpath));
+    $this->assertSession()->elementExists('xpath', $field_xpath);
+    $this->assertSession()->elementExists('xpath', $clue_xpath);
     $this->assertSession()->pageTextContains('Untranslatable-but-visible test field');
     $this->submitForm([], 'Save');
 
     // Check that the widget is displayed along with its clue in the edit form
     // for both languages.
     $this->drupalGet($en_edit_url);
-    $this->assertNotEmpty($this->xpath($field_xpath));
-    $this->assertNotEmpty($this->xpath($clue_xpath));
+    $this->assertSession()->elementExists('xpath', $field_xpath);
+    $this->assertSession()->elementExists('xpath', $clue_xpath);
     $it_edit_url = $entity->toUrl('edit-form', ['language' => ConfigurableLanguage::load('it')]);
     $this->drupalGet($it_edit_url);
-    $this->assertNotEmpty($this->xpath($field_xpath));
-    $this->assertNotEmpty($this->xpath($clue_xpath));
+    $this->assertSession()->elementExists('xpath', $field_xpath);
+    $this->assertSession()->elementExists('xpath', $clue_xpath);
 
     // Configure untranslatable field widgets to be hidden on non-default
     // language edit forms.
@@ -128,22 +128,19 @@ public function testHiddenWidgets() {
     // but no clue is displayed.
     $this->drupalGet($en_edit_url);
     $field_xpath = '//input[@name="' . $this->fieldName . '[0][value]"]';
-    $this->assertNotEmpty($this->xpath($field_xpath));
-    $this->assertEmpty($this->xpath($clue_xpath));
+    $this->assertSession()->elementExists('xpath', $field_xpath);
+    $this->assertSession()->elementNotExists('xpath', $clue_xpath);
     $this->assertSession()->pageTextContains('Untranslatable-but-visible test field');
 
     // Verify no widget is displayed on the non-default language edit form.
     $this->drupalGet($it_edit_url);
-    $this->assertEmpty($this->xpath($field_xpath));
-    $this->assertEmpty($this->xpath($clue_xpath));
+    $this->assertSession()->elementNotExists('xpath', $field_xpath);
+    $this->assertSession()->elementNotExists('xpath', $clue_xpath);
     $this->assertSession()->pageTextContains('Untranslatable-but-visible test field');
 
     // Verify a warning is displayed.
     $this->assertSession()->statusMessageContains('Fields that apply to all languages are hidden to avoid conflicting changes.', 'warning');
-    $edit_path = $entity->toUrl('edit-form')->toString();
-    $link_xpath = '//a[@href=:edit_path and text()="Edit them on the original language form"]';
-    $elements = $this->xpath($link_xpath, [':edit_path' => $edit_path]);
-    $this->assertNotEmpty($elements);
+    $this->assertSession()->elementExists('xpath', '//a[@href="' . $entity->toUrl('edit-form')->toString() . '" and text()="Edit them on the original language form"]');
 
     // Configure untranslatable field widgets to be displayed on non-default
     // language edit forms.
@@ -153,23 +150,22 @@ public function testHiddenWidgets() {
     // Check that the widget is displayed along with its clue in the edit form
     // for both languages.
     $this->drupalGet($en_edit_url);
-    $this->assertNotEmpty($this->xpath($field_xpath));
-    $this->assertNotEmpty($this->xpath($clue_xpath));
+    $this->assertSession()->elementExists('xpath', $field_xpath);
+    $this->assertSession()->elementExists('xpath', $clue_xpath);
     $this->drupalGet($it_edit_url);
-    $this->assertNotEmpty($this->xpath($field_xpath));
-    $this->assertNotEmpty($this->xpath($clue_xpath));
+    $this->assertSession()->elementExists('xpath', $field_xpath);
+    $this->assertSession()->elementExists('xpath', $clue_xpath);
 
     // Enable content moderation and verify that widgets are hidden despite them
     // being configured to be displayed.
     $this->enableContentModeration();
     $this->drupalGet($it_edit_url);
-    $this->assertEmpty($this->xpath($field_xpath));
-    $this->assertEmpty($this->xpath($clue_xpath));
+    $this->assertSession()->elementNotExists('xpath', $field_xpath);
+    $this->assertSession()->elementNotExists('xpath', $clue_xpath);
 
     // Verify a warning is displayed.
     $this->assertSession()->statusMessageContains('Fields that apply to all languages are hidden to avoid conflicting changes.', 'warning');
-    $elements = $this->xpath($link_xpath, [':edit_path' => $edit_path]);
-    $this->assertNotEmpty($elements);
+    $this->assertSession()->elementExists('xpath', '//a[@href="' . $entity->toUrl('edit-form')->toString() . '" and text()="Edit them on the original language form"]');
 
     // Verify that checkboxes on the language content settings page are checked
     // and disabled for moderated bundles.
diff --git a/core/modules/content_translation/tests/src/Functional/ContentTranslationWorkflowsTest.php b/core/modules/content_translation/tests/src/Functional/ContentTranslationWorkflowsTest.php
index 6291989f41..de500b19fb 100644
--- a/core/modules/content_translation/tests/src/Functional/ContentTranslationWorkflowsTest.php
+++ b/core/modules/content_translation/tests/src/Functional/ContentTranslationWorkflowsTest.php
@@ -69,6 +69,9 @@ class ContentTranslationWorkflowsTest extends ContentTranslationTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/content_translation/tests/src/Functional/Views/TranslationLinkTest.php b/core/modules/content_translation/tests/src/Functional/Views/TranslationLinkTest.php
index 52b6ca8f01..336bc3b9cb 100644
--- a/core/modules/content_translation/tests/src/Functional/Views/TranslationLinkTest.php
+++ b/core/modules/content_translation/tests/src/Functional/Views/TranslationLinkTest.php
@@ -34,6 +34,9 @@ class TranslationLinkTest extends ContentTranslationTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     // @todo Use entity_type once it has multilingual Views integration.
     $this->entityTypeId = 'user';
diff --git a/core/modules/content_translation/tests/src/Kernel/ContentTranslationSyncUnitTest.php b/core/modules/content_translation/tests/src/Kernel/ContentTranslationSyncUnitTest.php
index 8043e78b49..5d41f34a7d 100644
--- a/core/modules/content_translation/tests/src/Kernel/ContentTranslationSyncUnitTest.php
+++ b/core/modules/content_translation/tests/src/Kernel/ContentTranslationSyncUnitTest.php
@@ -56,6 +56,9 @@ class ContentTranslationSyncUnitTest extends KernelTestBase {
 
   protected static $modules = ['language', 'content_translation'];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/content_translation/tests/src/Unit/Access/ContentTranslationManageAccessCheckTest.php b/core/modules/content_translation/tests/src/Unit/Access/ContentTranslationManageAccessCheckTest.php
index 4e585c9a51..9c440fb0e0 100644
--- a/core/modules/content_translation/tests/src/Unit/Access/ContentTranslationManageAccessCheckTest.php
+++ b/core/modules/content_translation/tests/src/Unit/Access/ContentTranslationManageAccessCheckTest.php
@@ -53,13 +53,13 @@ public function testCreateAccess() {
     $translation_handler = $this->createMock('\Drupal\content_translation\ContentTranslationHandlerInterface');
     $translation_handler->expects($this->once())
       ->method('getTranslationAccess')
-      ->will($this->returnValue(AccessResult::allowed()));
+      ->willReturn(AccessResult::allowed());
 
     $entity_type_manager = $this->createMock(EntityTypeManagerInterface::class);
     $entity_type_manager->expects($this->once())
       ->method('getHandler')
       ->withAnyParameters()
-      ->will($this->returnValue($translation_handler));
+      ->willReturn($translation_handler);
 
     // Set our source and target languages.
     $source = 'en';
@@ -87,7 +87,7 @@ public function testCreateAccess() {
     $entity->expects($this->once())
       ->method('getTranslationLanguages')
       ->with()
-      ->will($this->returnValue([]));
+      ->willReturn([]);
     $entity->expects($this->once())
       ->method('getCacheContexts')
       ->willReturn([]);
@@ -96,7 +96,7 @@ public function testCreateAccess() {
       ->willReturn(Cache::PERMANENT);
     $entity->expects($this->once())
       ->method('getCacheTags')
-      ->will($this->returnValue(['node:1337']));
+      ->willReturn(['node:1337']);
     $entity->expects($this->once())
       ->method('getCacheContexts')
       ->willReturn([]);
@@ -110,7 +110,7 @@ public function testCreateAccess() {
     $route_match->expects($this->once())
       ->method('getParameter')
       ->with('node')
-      ->will($this->returnValue($entity));
+      ->willReturn($entity);
 
     // Set the mock account.
     $account = $this->createMock('Drupal\Core\Session\AccountInterface');
diff --git a/core/modules/content_translation/tests/src/Unit/Menu/ContentTranslationLocalTasksTest.php b/core/modules/content_translation/tests/src/Unit/Menu/ContentTranslationLocalTasksTest.php
index 38ea3a308d..00e300ba06 100644
--- a/core/modules/content_translation/tests/src/Unit/Menu/ContentTranslationLocalTasksTest.php
+++ b/core/modules/content_translation/tests/src/Unit/Menu/ContentTranslationLocalTasksTest.php
@@ -11,6 +11,9 @@
  */
 class ContentTranslationLocalTasksTest extends LocalTaskIntegrationTestBase {
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     $this->directoryList = [
       'content_translation' => 'core/modules/content_translation',
@@ -31,9 +34,9 @@ protected function setUp(): void {
     $content_translation_manager = $this->createMock('Drupal\content_translation\ContentTranslationManagerInterface');
     $content_translation_manager->expects($this->any())
       ->method('getSupportedEntityTypes')
-      ->will($this->returnValue([
+      ->willReturn([
         'node' => $entity_type,
-      ]));
+      ]);
     \Drupal::getContainer()->set('content_translation.manager', $content_translation_manager);
     \Drupal::getContainer()->set('string_translation', $this->getStringTranslationStub());
   }
diff --git a/core/modules/contextual/tests/src/Functional/ContextualDynamicContextTest.php b/core/modules/contextual/tests/src/Functional/ContextualDynamicContextTest.php
index 39998d2ed2..f1fb389b0d 100644
--- a/core/modules/contextual/tests/src/Functional/ContextualDynamicContextTest.php
+++ b/core/modules/contextual/tests/src/Functional/ContextualDynamicContextTest.php
@@ -57,6 +57,9 @@ class ContextualDynamicContextTest extends BrowserTestBase {
     'menu_test',
   ];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/datetime/src/Plugin/Field/FieldFormatter/DateTimeDefaultFormatter.php b/core/modules/datetime/src/Plugin/Field/FieldFormatter/DateTimeDefaultFormatter.php
index fa6549665a..23d01ea3fa 100644
--- a/core/modules/datetime/src/Plugin/Field/FieldFormatter/DateTimeDefaultFormatter.php
+++ b/core/modules/datetime/src/Plugin/Field/FieldFormatter/DateTimeDefaultFormatter.php
@@ -52,8 +52,8 @@ public function settingsForm(array $form, FormStateInterface $form_state) {
 
     $form['format_type'] = [
       '#type' => 'select',
-      '#title' => t('Date format'),
-      '#description' => t("Choose a format for displaying the date. Be sure to set a format appropriate for the field, i.e. omitting time for a field that only has a date."),
+      '#title' => $this->t('Date format'),
+      '#description' => $this->t("Choose a format for displaying the date. Be sure to set a format appropriate for the field, i.e. omitting time for a field that only has a date."),
       '#options' => $options,
       '#default_value' => $this->getSetting('format_type'),
     ];
@@ -68,7 +68,7 @@ public function settingsSummary() {
     $summary = parent::settingsSummary();
 
     $date = new DrupalDateTime();
-    $summary[] = t('Format: @display', ['@display' => $this->formatDate($date)]);
+    $summary[] = $this->t('Format: @display', ['@display' => $this->formatDate($date)]);
 
     return $summary;
   }
diff --git a/core/modules/datetime/src/Plugin/Field/FieldType/DateTimeFieldItemList.php b/core/modules/datetime/src/Plugin/Field/FieldType/DateTimeFieldItemList.php
index 5f77efcd6c..8c2bc82a29 100644
--- a/core/modules/datetime/src/Plugin/Field/FieldType/DateTimeFieldItemList.php
+++ b/core/modules/datetime/src/Plugin/Field/FieldType/DateTimeFieldItemList.php
@@ -34,19 +34,19 @@ public function defaultValuesForm(array &$form, FormStateInterface $form_state)
         '#parents' => ['default_value_input'],
         'default_date_type' => [
           '#type' => 'select',
-          '#title' => t('Default date'),
-          '#description' => t('Set a default value for this date.'),
+          '#title' => $this->t('Default date'),
+          '#description' => $this->t('Set a default value for this date.'),
           '#default_value' => $default_value[0]['default_date_type'] ?? '',
           '#options' => [
-            static::DEFAULT_VALUE_NOW => t('Current date'),
-            static::DEFAULT_VALUE_CUSTOM => t('Relative date'),
+            static::DEFAULT_VALUE_NOW => $this->t('Current date'),
+            static::DEFAULT_VALUE_CUSTOM => $this->t('Relative date'),
           ],
           '#empty_value' => '',
         ],
         'default_date' => [
           '#type' => 'textfield',
-          '#title' => t('Relative default value'),
-          '#description' => t("Describe a time by reference to the current day, like '+90 days' (90 days from the day the field is created) or '+1 Saturday' (the next Saturday). See <a href=\"http://php.net/manual/function.strtotime.php\">strtotime</a> for more details."),
+          '#title' => $this->t('Relative default value'),
+          '#description' => $this->t("Describe a time by reference to the current day, like '+90 days' (90 days from the day the field is created) or '+1 Saturday' (the next Saturday). See <a href=\"http://php.net/manual/function.strtotime.php\">strtotime</a> for more details."),
           '#default_value' => (isset($default_value[0]['default_date_type']) && $default_value[0]['default_date_type'] == static::DEFAULT_VALUE_CUSTOM) ? $default_value[0]['default_date'] : '',
           '#states' => [
             'visible' => [
@@ -67,7 +67,7 @@ public function defaultValuesFormValidate(array $element, array &$form, FormStat
     if ($form_state->getValue(['default_value_input', 'default_date_type']) == static::DEFAULT_VALUE_CUSTOM) {
       $is_strtotime = @strtotime($form_state->getValue(['default_value_input', 'default_date']));
       if (!$is_strtotime) {
-        $form_state->setErrorByName('default_value_input][default_date', t('The relative date value entered is invalid.'));
+        $form_state->setErrorByName('default_value_input][default_date', $this->t('The relative date value entered is invalid.'));
       }
     }
   }
diff --git a/core/modules/datetime/src/Plugin/Field/FieldType/DateTimeItem.php b/core/modules/datetime/src/Plugin/Field/FieldType/DateTimeItem.php
index 3264069008..5e17728b99 100644
--- a/core/modules/datetime/src/Plugin/Field/FieldType/DateTimeItem.php
+++ b/core/modules/datetime/src/Plugin/Field/FieldType/DateTimeItem.php
@@ -7,6 +7,7 @@
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\TypedData\DataDefinition;
 use Drupal\Core\Field\FieldItemBase;
+use Drupal\Core\StringTranslation\TranslatableMarkup;
 
 /**
  * Plugin implementation of the 'datetime' field type.
@@ -47,12 +48,12 @@ public static function defaultStorageSettings() {
    */
   public static function propertyDefinitions(FieldStorageDefinitionInterface $field_definition) {
     $properties['value'] = DataDefinition::create('datetime_iso8601')
-      ->setLabel(t('Date value'))
+      ->setLabel(new TranslatableMarkup('Date value'))
       ->setRequired(TRUE);
 
     $properties['date'] = DataDefinition::create('any')
-      ->setLabel(t('Computed date'))
-      ->setDescription(t('The computed DateTime object.'))
+      ->setLabel(new TranslatableMarkup('Computed date'))
+      ->setDescription(new TranslatableMarkup('The computed DateTime object.'))
       ->setComputed(TRUE)
       ->setClass('\Drupal\datetime\DateTimeComputed')
       ->setSetting('date source', 'value');
@@ -86,12 +87,12 @@ public function storageSettingsForm(array &$form, FormStateInterface $form_state
 
     $element['datetime_type'] = [
       '#type' => 'select',
-      '#title' => t('Date type'),
-      '#description' => t('Choose the type of date to create.'),
+      '#title' => $this->t('Date type'),
+      '#description' => $this->t('Choose the type of date to create.'),
       '#default_value' => $this->getSetting('datetime_type'),
       '#options' => [
-        static::DATETIME_TYPE_DATETIME => t('Date and time'),
-        static::DATETIME_TYPE_DATE => t('Date only'),
+        static::DATETIME_TYPE_DATETIME => $this->t('Date and time'),
+        static::DATETIME_TYPE_DATE => $this->t('Date only'),
       ],
       '#disabled' => $has_data,
     ];
diff --git a/core/modules/datetime/src/Plugin/Field/FieldWidget/DateTimeDatelistWidget.php b/core/modules/datetime/src/Plugin/Field/FieldWidget/DateTimeDatelistWidget.php
index 276d92c431..0d85d34a05 100644
--- a/core/modules/datetime/src/Plugin/Field/FieldWidget/DateTimeDatelistWidget.php
+++ b/core/modules/datetime/src/Plugin/Field/FieldWidget/DateTimeDatelistWidget.php
@@ -93,29 +93,33 @@ public function settingsForm(array $form, FormStateInterface $form_state) {
 
     $element['date_order'] = [
       '#type' => 'select',
-      '#title' => t('Date part order'),
+      '#title' => $this->t('Date part order'),
       '#default_value' => $this->getSetting('date_order'),
-      '#options' => ['MDY' => t('Month/Day/Year'), 'DMY' => t('Day/Month/Year'), 'YMD' => t('Year/Month/Day')],
+      '#options' => [
+        'MDY' => $this->t('Month/Day/Year'),
+        'DMY' => $this->t('Day/Month/Year'),
+        'YMD' => $this->t('Year/Month/Day'),
+      ],
     ];
 
     if ($this->getFieldSetting('datetime_type') == 'datetime') {
       $element['time_type'] = [
         '#type' => 'select',
-        '#title' => t('Time type'),
+        '#title' => $this->t('Time type'),
         '#default_value' => $this->getSetting('time_type'),
-        '#options' => ['24' => t('24 hour time'), '12' => t('12 hour time')],
+        '#options' => ['24' => $this->t('24 hour time'), '12' => $this->t('12 hour time')],
       ];
 
       $element['increment'] = [
         '#type' => 'select',
-        '#title' => t('Time increments'),
+        '#title' => $this->t('Time increments'),
         '#default_value' => $this->getSetting('increment'),
         '#options' => [
-          1 => t('1 minute'),
-          5 => t('5 minute'),
-          10 => t('10 minute'),
-          15 => t('15 minute'),
-          30 => t('30 minute'),
+          1 => $this->t('1 minute'),
+          5 => $this->t('5 minute'),
+          10 => $this->t('10 minute'),
+          15 => $this->t('15 minute'),
+          30 => $this->t('30 minute'),
         ],
       ];
     }
@@ -140,10 +144,10 @@ public function settingsForm(array $form, FormStateInterface $form_state) {
   public function settingsSummary() {
     $summary = [];
 
-    $summary[] = t('Date part order: @order', ['@order' => $this->getSetting('date_order')]);
+    $summary[] = $this->t('Date part order: @order', ['@order' => $this->getSetting('date_order')]);
     if ($this->getFieldSetting('datetime_type') == 'datetime') {
-      $summary[] = t('Time type: @time_type', ['@time_type' => $this->getSetting('time_type')]);
-      $summary[] = t('Time increments: @increment', ['@increment' => $this->getSetting('increment')]);
+      $summary[] = $this->t('Time type: @time_type', ['@time_type' => $this->getSetting('time_type')]);
+      $summary[] = $this->t('Time increments: @increment', ['@increment' => $this->getSetting('increment')]);
     }
 
     return $summary;
diff --git a/core/modules/datetime/src/Plugin/Field/FieldWidget/DateTimeWidgetBase.php b/core/modules/datetime/src/Plugin/Field/FieldWidget/DateTimeWidgetBase.php
index aa7c959689..a5cbcece15 100644
--- a/core/modules/datetime/src/Plugin/Field/FieldWidget/DateTimeWidgetBase.php
+++ b/core/modules/datetime/src/Plugin/Field/FieldWidget/DateTimeWidgetBase.php
@@ -86,10 +86,16 @@ public function massageFormValues(array $values, array $form, FormStateInterface
   protected function createDefaultValue($date, $timezone) {
     // The date was created and verified during field_load(), so it is safe to
     // use without further inspection.
+    $year = $date->format('Y');
+    $month = $date->format('m');
+    $day = $date->format('d');
+    $date->setTimezone(new \DateTimeZone($timezone));
     if ($this->getFieldSetting('datetime_type') === DateTimeItem::DATETIME_TYPE_DATE) {
       $date->setDefaultDateTime();
+      // Reset the date to handle cases where the UTC offset is greater than
+      // 12 hours.
+      $date->setDate($year, $month, $day);
     }
-    $date->setTimezone(new \DateTimeZone($timezone));
     return $date;
   }
 
diff --git a/core/modules/datetime/tests/src/Functional/DateTestBase.php b/core/modules/datetime/tests/src/Functional/DateTestBase.php
index 60ca92bce6..57cc4cb641 100644
--- a/core/modules/datetime/tests/src/Functional/DateTestBase.php
+++ b/core/modules/datetime/tests/src/Functional/DateTestBase.php
@@ -99,6 +99,8 @@ protected function setUp(): void {
       'administer content types',
       'bypass node access',
       'administer node fields',
+      'administer node form display',
+      'administer node display',
     ]);
     $this->drupalLogin($web_user);
 
diff --git a/core/modules/datetime/tests/src/Functional/DateTimeFieldTest.php b/core/modules/datetime/tests/src/Functional/DateTimeFieldTest.php
index 34449781c4..880068483f 100644
--- a/core/modules/datetime/tests/src/Functional/DateTimeFieldTest.php
+++ b/core/modules/datetime/tests/src/Functional/DateTimeFieldTest.php
@@ -918,8 +918,7 @@ public function testDateStorageSettings() {
     $this->drupalGet('node/add/date_content');
     $this->submitForm($edit, 'Save');
     $this->drupalGet('admin/structure/types/manage/date_content/fields/node.date_content.' . $field_name . '/storage');
-    $result = $this->xpath("//*[@id='edit-settings-datetime-type' and contains(@disabled, 'disabled')]");
-    $this->assertCount(1, $result, "Changing datetime setting is disabled.");
+    $this->assertSession()->elementsCount('xpath', "//*[@id='edit-settings-datetime-type' and contains(@disabled, 'disabled')]", 1);
     $this->assertSession()->pageTextContains('There is data for this field in the database. The field settings can no longer be changed.');
   }
 
diff --git a/core/modules/datetime/tests/src/Functional/DateTimeWidgetTest.php b/core/modules/datetime/tests/src/Functional/DateTimeWidgetTest.php
new file mode 100644
index 0000000000..529d06c96b
--- /dev/null
+++ b/core/modules/datetime/tests/src/Functional/DateTimeWidgetTest.php
@@ -0,0 +1,102 @@
+<?php
+
+namespace Drupal\Tests\datetime\Functional;
+
+use Drupal\field\Entity\FieldConfig;
+use Drupal\field\Entity\FieldStorageConfig;
+
+/**
+ * Tests Datetime widgets functionality.
+ *
+ * @group datetime
+ */
+class DateTimeWidgetTest extends DateTestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  protected $defaultTheme = 'stark';
+
+  /**
+   * The default display settings to use for the formatters.
+   *
+   * @var array
+   */
+  protected $defaultSettings = ['timezone_override' => ''];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function getTestFieldType() {
+    return 'datetime';
+  }
+
+  /**
+   * Test default value functionality.
+   */
+  public function testDateonlyDefaultValue() {
+    // Create a test content type.
+    $this->drupalCreateContentType(['type' => 'dateonly_content']);
+
+    // Create a field storage with settings to validate.
+    $field_storage = FieldStorageConfig::create([
+      'field_name' => 'field_dateonly',
+      'entity_type' => 'node',
+      'type' => 'datetime',
+      'settings' => ['datetime_type' => 'date'],
+    ]);
+    $field_storage->save();
+
+    $field = FieldConfig::create([
+      'field_storage' => $field_storage,
+      'bundle' => 'dateonly_content',
+    ]);
+    $field->save();
+
+    $edit = [
+      'fields[field_dateonly][region]' => 'content',
+      'fields[field_dateonly][type]' => 'datetime_default',
+    ];
+    $this->drupalGet('admin/structure/types/manage/dateonly_content/form-display');
+    $this->submitForm($edit, 'Save');
+    $this->drupalGet('admin/structure/types/manage/dateonly_content/display');
+    $this->submitForm($edit, 'Save');
+
+    // Set now as default_value.
+    $edit = [
+      'default_value_input[default_date_type]' => 'now',
+    ];
+    $this->drupalGet('admin/structure/types/manage/dateonly_content/fields/node.dateonly_content.field_dateonly');
+    $this->submitForm($edit, 'Save settings');
+
+    // Check that default value is selected in default value form.
+    $this->drupalGet('admin/structure/types/manage/dateonly_content/fields/node.dateonly_content.field_dateonly');
+    $option_field = $this->assertSession()->optionExists('edit-default-value-input-default-date-type', 'now');
+    $this->assertTrue($option_field->hasAttribute('selected'));
+    $this->assertSession()->fieldValueEquals('default_value_input[default_date]', '');
+
+    // Loop through defined timezones to test that date-only defaults work at
+    // the extremes.
+    foreach (static::$timezones as $timezone) {
+      $this->setSiteTimezone($timezone);
+      $this->assertEquals($timezone, $this->config('system.date')->get('timezone.default'), 'Time zone set to ' . $timezone);
+
+      $this->drupalGet('node/add/dateonly_content');
+
+      $request_time = $this->container->get('datetime.time')->getRequestTime();
+      $today = $this->dateFormatter->format($request_time, 'html_date', NULL, $timezone);
+      $this->assertSession()->fieldValueEquals('field_dateonly[0][value][date]', $today);
+
+      $edit = [
+        'title[0][value]' => $timezone,
+      ];
+      $this->submitForm($edit, 'Save');
+      $this->assertSession()->pageTextContains('dateonly_content ' . $timezone . ' has been created');
+
+      $node = $this->drupalGetNodeByTitle($timezone);
+      $today_storage = $this->dateFormatter->format($request_time, 'html_date', NULL, $timezone);
+      $this->assertEquals($today_storage, $node->field_dateonly->value);
+    }
+  }
+
+}
diff --git a/core/modules/datetime/tests/src/Kernel/DateTimeItemTest.php b/core/modules/datetime/tests/src/Kernel/DateTimeItemTest.php
index fcb8bc99f2..7600138896 100644
--- a/core/modules/datetime/tests/src/Kernel/DateTimeItemTest.php
+++ b/core/modules/datetime/tests/src/Kernel/DateTimeItemTest.php
@@ -40,6 +40,9 @@ class DateTimeItemTest extends FieldKernelTestBase {
    */
   protected static $modules = ['datetime'];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/datetime/tests/src/Unit/Plugin/migrate/field/DateFieldTest.php b/core/modules/datetime/tests/src/Unit/Plugin/migrate/field/DateFieldTest.php
index 1fce8a1a2f..e3a7b8ed35 100644
--- a/core/modules/datetime/tests/src/Unit/Plugin/migrate/field/DateFieldTest.php
+++ b/core/modules/datetime/tests/src/Unit/Plugin/migrate/field/DateFieldTest.php
@@ -55,7 +55,7 @@ public function testDefineValueProcessPipeline($data, $from_format, $to_format)
     $migration->expects($this->once())
       ->method('mergeProcessOfProperty')
       ->with('field_date', $pipeline)
-      ->will($this->returnValue($migration));
+      ->willReturn($migration);
 
     $plugin = new DateField([], '', []);
     $plugin->defineValueProcessPipeline($migration, 'field_date', $data);
diff --git a/core/modules/datetime_range/tests/src/Functional/DateRangeFieldTest.php b/core/modules/datetime_range/tests/src/Functional/DateRangeFieldTest.php
index 629e0b197c..d78c73875d 100644
--- a/core/modules/datetime_range/tests/src/Functional/DateRangeFieldTest.php
+++ b/core/modules/datetime_range/tests/src/Functional/DateRangeFieldTest.php
@@ -226,9 +226,9 @@ public function testDateRangeField() {
         'type' => 'daterange_default',
         'label' => 'hidden',
         'settings' => [
-            'format_type' => 'long',
-            'separator' => 'THESEPARATOR',
-          ] + $this->defaultSettings,
+          'format_type' => 'long',
+          'separator' => 'THESEPARATOR',
+        ] + $this->defaultSettings,
       ];
 
       $display_repository->getViewDisplay($this->field->getTargetEntityTypeId(), $this->field->getTargetBundle(), 'full')
@@ -1416,8 +1416,7 @@ public function testDateStorageSettings() {
     $this->drupalGet('node/add/date_content');
     $this->submitForm($edit, 'Save');
     $this->drupalGet('admin/structure/types/manage/date_content/fields/node.date_content.' . $field_name . '/storage');
-    $result = $this->xpath("//*[@id='edit-settings-datetime-type' and contains(@disabled, 'disabled')]");
-    $this->assertCount(1, $result, "Changing datetime setting is disabled.");
+    $this->assertSession()->elementsCount('xpath', "//*[@id='edit-settings-datetime-type' and contains(@disabled, 'disabled')]", 1);
     $this->assertSession()->pageTextContains('There is data for this field in the database. The field settings can no longer be changed.');
   }
 
diff --git a/core/modules/dblog/tests/src/Functional/DbLogTest.php b/core/modules/dblog/tests/src/Functional/DbLogTest.php
index 6ec963a0df..9e6be6aed3 100644
--- a/core/modules/dblog/tests/src/Functional/DbLogTest.php
+++ b/core/modules/dblog/tests/src/Functional/DbLogTest.php
@@ -162,23 +162,22 @@ public function test403LogEventPage() {
     $wid = $query->execute()->fetchField();
     $this->drupalGet('admin/reports/dblog/event/' . $wid);
 
-    $table = $this->xpath("//table[@class='dblog-event']");
-    $this->assertCount(1, $table);
+    $table = $this->assertSession()->elementExists('xpath', "//table[@class='dblog-event']");
 
     // Verify type, severity and location.
-    $type = $table[0]->findAll('xpath', "//tr/th[contains(text(), 'Type')]/../td");
-    $this->assertCount(1, $type);
-    $this->assertEquals('access denied', $type[0]->getText());
-    $severity = $table[0]->findAll('xpath', "//tr/th[contains(text(), 'Severity')]/../td");
-    $this->assertCount(1, $severity);
-    $this->assertEquals('Warning', $severity[0]->getText());
-    $location = $table[0]->findAll('xpath', "//tr/th[contains(text(), 'Location')]/../td/a");
+    $type = "//tr/th[contains(text(), 'Type')]/../td";
+    $this->assertSession()->elementsCount('xpath', $type, 1, $table);
+    $this->assertEquals('access denied', $table->findAll('xpath', $type)[0]->getText());
+    $severity = "//tr/th[contains(text(), 'Severity')]/../td";
+    $this->assertSession()->elementsCount('xpath', $severity, 1, $table);
+    $this->assertEquals('Warning', $table->findAll('xpath', $severity)[0]->getText());
+    $location = $table->findAll('xpath', "//tr/th[contains(text(), 'Location')]/../td/a");
     $this->assertCount(1, $location);
     $href = $location[0]->getAttribute('href');
     $this->assertEquals($this->baseUrl . '/' . $uri, $href);
 
     // Verify message.
-    $message = $table[0]->findAll('xpath', "//tr/th[contains(text(), 'Message')]/../td");
+    $message = $table->findAll('xpath', "//tr/th[contains(text(), 'Message')]/../td");
     $this->assertCount(1, $message);
     $regex = "@Path: .+admin/reports\. Drupal\\\\Core\\\\Http\\\\Exception\\\\CacheableAccessDeniedHttpException: The 'access site reports' permission is required\. in Drupal\\\\Core\\\\Routing\\\\AccessAwareRouter->checkAccess\(\) \(line \d+ of .+/core/lib/Drupal/Core/Routing/AccessAwareRouter\.php\)\.@";
     $this->assertMatchesRegularExpression($regex, $message[0]->getText());
diff --git a/core/modules/dblog/tests/src/Kernel/DbLogControllerTest.php b/core/modules/dblog/tests/src/Kernel/DbLogControllerTest.php
index 60768f1fa6..8c74084544 100644
--- a/core/modules/dblog/tests/src/Kernel/DbLogControllerTest.php
+++ b/core/modules/dblog/tests/src/Kernel/DbLogControllerTest.php
@@ -17,6 +17,9 @@ class DbLogControllerTest extends KernelTestBase {
    */
   protected static $modules = ['dblog', 'user'];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->installEntitySchema('user');
diff --git a/core/modules/editor/src/Entity/Editor.php b/core/modules/editor/src/Entity/Editor.php
index fc5f632d03..8b2d4fcea7 100644
--- a/core/modules/editor/src/Entity/Editor.php
+++ b/core/modules/editor/src/Entity/Editor.php
@@ -11,8 +11,8 @@
  *
  * @ConfigEntityType(
  *   id = "editor",
- *   label = @Translation("Text Editor"),
- *   label_collection = @Translation("Text Editors"),
+ *   label = @Translation("Text editor"),
+ *   label_collection = @Translation("Text editors"),
  *   label_singular = @Translation("text editor"),
  *   label_plural = @Translation("text editors"),
  *   label_count = @PluralTranslation(
@@ -36,8 +36,7 @@
 class Editor extends ConfigEntityBase implements EditorInterface {
 
   /**
-   * The machine name of the text format with which this configured text editor
-   * is associated.
+   * Machine name of the text format for this configured text editor.
    *
    * @var string
    *
diff --git a/core/modules/editor/tests/modules/src/Plugin/Editor/TRexEditor.php b/core/modules/editor/tests/modules/src/Plugin/Editor/TRexEditor.php
index 5c8be2216e..70af7d822d 100644
--- a/core/modules/editor/tests/modules/src/Plugin/Editor/TRexEditor.php
+++ b/core/modules/editor/tests/modules/src/Plugin/Editor/TRexEditor.php
@@ -34,7 +34,7 @@ public function getDefaultSettings() {
    */
   public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
     $form['stumpy_arms'] = [
-      '#title' => t('Stumpy arms'),
+      '#title' => $this->t('Stumpy arms'),
       '#type' => 'checkbox',
       '#default_value' => TRUE,
     ];
diff --git a/core/modules/editor/tests/modules/src/Plugin/Editor/UnicornEditor.php b/core/modules/editor/tests/modules/src/Plugin/Editor/UnicornEditor.php
index f6a35434a4..fc7e4f4544 100644
--- a/core/modules/editor/tests/modules/src/Plugin/Editor/UnicornEditor.php
+++ b/core/modules/editor/tests/modules/src/Plugin/Editor/UnicornEditor.php
@@ -35,7 +35,7 @@ public function getDefaultSettings() {
    */
   public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
     $form['ponies_too'] = [
-      '#title' => t('Pony mode'),
+      '#title' => $this->t('Pony mode'),
       '#type' => 'checkbox',
       '#default_value' => TRUE,
     ];
diff --git a/core/modules/editor/tests/src/Functional/EditorAdminTest.php b/core/modules/editor/tests/src/Functional/EditorAdminTest.php
index ec8c0174eb..4323d50139 100644
--- a/core/modules/editor/tests/src/Functional/EditorAdminTest.php
+++ b/core/modules/editor/tests/src/Functional/EditorAdminTest.php
@@ -34,6 +34,9 @@ class EditorAdminTest extends BrowserTestBase {
    */
   protected $adminUser;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/editor/tests/src/Functional/EditorLoadingTest.php b/core/modules/editor/tests/src/Functional/EditorLoadingTest.php
index 51f7c5d81c..efdccccc84 100644
--- a/core/modules/editor/tests/src/Functional/EditorLoadingTest.php
+++ b/core/modules/editor/tests/src/Functional/EditorLoadingTest.php
@@ -48,6 +48,9 @@ class EditorLoadingTest extends BrowserTestBase {
    */
   protected $privilegedUser;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
@@ -150,7 +153,7 @@ public function testLoading() {
     [, $editor_settings_present, $editor_js_present, $body] = $this->getThingsToCheck('body');
     $this->assertFalse($editor_settings_present, 'No Text Editor module settings.');
     $this->assertFalse($editor_js_present, 'No Text Editor JavaScript.');
-    $this->assertCount(1, $body, 'A body field exists.');
+    $this->assertSession()->elementsCount('xpath', $body, 1);
     $this->assertSession()->elementNotExists('css', 'select.js-filter-list');
     $this->drupalLogout($this->normalUser);
 
@@ -174,7 +177,7 @@ public function testLoading() {
     $this->assertTrue($editor_settings_present, "Text Editor module's JavaScript settings are on the page.");
     $this->assertSame($expected, $settings['editor'], "Text Editor module's JavaScript settings on the page are correct.");
     $this->assertTrue($editor_js_present, 'Text Editor JavaScript is present.');
-    $this->assertCount(1, $body, 'A body field exists.');
+    $this->assertSession()->elementsCount('xpath', $body, 1);
     $this->assertSession()->elementsCount('css', 'select.js-filter-list', 1);
     $select = $this->assertSession()->elementExists('css', 'select.js-filter-list');
     $this->assertSame('edit-body-0-value', $select->getAttribute('data-editor-for'));
@@ -212,7 +215,7 @@ public function testLoading() {
     $this->assertTrue($editor_settings_present, "Text Editor module's JavaScript settings are on the page.");
     $this->assertSame($expected, $settings['editor'], "Text Editor module's JavaScript settings on the page are correct.");
     $this->assertTrue($editor_js_present, 'Text Editor JavaScript is present.');
-    $this->assertCount(1, $body, 'A body field exists.');
+    $this->assertSession()->elementsCount('xpath', $body, 1);
     $this->assertSession()->elementNotExists('css', 'select.js-filter-list');
     // Verify that a single text format hidden input exists on the page and has
     // a "data-editor-for" attribute with the correct value.
@@ -236,7 +239,7 @@ public function testLoading() {
     [, $editor_settings_present, $editor_js_present, $body] = $this->getThingsToCheck('body');
     $this->assertTrue($editor_settings_present, 'Text Editor module settings.');
     $this->assertTrue($editor_js_present, 'Text Editor JavaScript.');
-    $this->assertCount(1, $body, 'A body field exists.');
+    $this->assertSession()->elementsCount('xpath', $body, 1);
     $this->assertSession()->fieldDisabled("edit-body-0-value");
     $this->assertSession()->fieldValueEquals("edit-body-0-value", 'This field has been disabled because you do not have sufficient permissions to edit it.');
     $this->assertSession()->elementNotExists('css', 'select.js-filter-list');
@@ -276,7 +279,7 @@ public function testSupportedElementTypes() {
     [, $editor_settings_present, $editor_js_present, $field] = $this->getThingsToCheck('field-text', 'input');
     $this->assertTrue($editor_settings_present, "Text Editor module's JavaScript settings are on the page.");
     $this->assertTrue($editor_js_present, 'Text Editor JavaScript is present.');
-    $this->assertCount(1, $field, 'A text field exists.');
+    $this->assertSession()->elementsCount('xpath', $field, 1);
     // Verify that a single text format selector exists on the page and has the
     // "editor" class and a "data-editor-for" attribute with the correct value.
     $this->assertSession()->elementsCount('css', 'select.js-filter-list', 1);
@@ -295,7 +298,7 @@ public function testSupportedElementTypes() {
     [, $editor_settings_present, $editor_js_present, $field] = $this->getThingsToCheck('field-text', 'input');
     $this->assertFalse($editor_settings_present, "Text Editor module's JavaScript settings are not on the page.");
     $this->assertFalse($editor_js_present, 'Text Editor JavaScript is not present.');
-    $this->assertCount(1, $field, 'A text field exists.');
+    $this->assertSession()->elementsCount('xpath', $field, 1);
     // Verify that a single text format selector exists on the page but without
     // the "editor" class or a "data-editor-for" attribute with the expected
     // value.
@@ -315,7 +318,7 @@ protected function getThingsToCheck($field_name, $type = 'textarea') {
       // Editor.module's JS present.
       strpos($this->getSession()->getPage()->getContent(), $this->getModulePath('editor') . '/js/editor.js') !== FALSE,
       // Body field.
-      $this->xpath('//' . $type . '[@id="edit-' . $field_name . '-0-value"]'),
+      '//' . $type . '[@id="edit-' . $field_name . '-0-value"]',
     ];
   }
 
diff --git a/core/modules/editor/tests/src/Functional/EditorSecurityTest.php b/core/modules/editor/tests/src/Functional/EditorSecurityTest.php
index 4574ccb5ae..239a5584f9 100644
--- a/core/modules/editor/tests/src/Functional/EditorSecurityTest.php
+++ b/core/modules/editor/tests/src/Functional/EditorSecurityTest.php
@@ -62,8 +62,7 @@ class EditorSecurityTest extends BrowserTestBase {
   protected $normalUser;
 
   /**
-   * User with access to Restricted HTML text format, dangerous tags allowed
-   * with text editor.
+   * User with access to Restricted HTML and tags considered dangerous.
    *
    * @var \Drupal\user\UserInterface
    */
@@ -76,6 +75,9 @@ class EditorSecurityTest extends BrowserTestBase {
    */
   protected $privilegedUser;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/editor/tests/src/Kernel/EditorFileUsageTest.php b/core/modules/editor/tests/src/Kernel/EditorFileUsageTest.php
index 8137147561..143e312ab8 100644
--- a/core/modules/editor/tests/src/Kernel/EditorFileUsageTest.php
+++ b/core/modules/editor/tests/src/Kernel/EditorFileUsageTest.php
@@ -26,6 +26,9 @@ class EditorFileUsageTest extends EntityKernelTestBase {
    */
   protected static $modules = ['editor', 'editor_test', 'node', 'file'];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->installEntitySchema('file');
diff --git a/core/modules/editor/tests/src/Kernel/EditorManagerTest.php b/core/modules/editor/tests/src/Kernel/EditorManagerTest.php
index 646555f80e..90c6ac0302 100644
--- a/core/modules/editor/tests/src/Kernel/EditorManagerTest.php
+++ b/core/modules/editor/tests/src/Kernel/EditorManagerTest.php
@@ -27,6 +27,9 @@ class EditorManagerTest extends KernelTestBase {
    */
   protected $editorManager;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/editor/tests/src/Unit/EditorConfigEntityUnitTest.php b/core/modules/editor/tests/src/Unit/EditorConfigEntityUnitTest.php
index ab781b3923..89787633fa 100644
--- a/core/modules/editor/tests/src/Unit/EditorConfigEntityUnitTest.php
+++ b/core/modules/editor/tests/src/Unit/EditorConfigEntityUnitTest.php
@@ -65,13 +65,13 @@ protected function setUp(): void {
     $this->entityType = $this->createMock('\Drupal\Core\Entity\EntityTypeInterface');
     $this->entityType->expects($this->any())
       ->method('getProvider')
-      ->will($this->returnValue('editor'));
+      ->willReturn('editor');
 
     $this->entityTypeManager = $this->createMock(EntityTypeManagerInterface::class);
     $this->entityTypeManager->expects($this->any())
       ->method('getDefinition')
       ->with($this->entityTypeId)
-      ->will($this->returnValue($this->entityType));
+      ->willReturn($this->entityType);
 
     $this->uuid = $this->createMock('\Drupal\Component\Uuid\UuidInterface');
 
@@ -98,33 +98,33 @@ public function testCalculateDependencies() {
       ->getMock();
     $plugin->expects($this->once())
       ->method('getPluginDefinition')
-      ->will($this->returnValue(['provider' => 'test_module']));
+      ->willReturn(['provider' => 'test_module']);
     $plugin->expects($this->once())
       ->method('getDefaultSettings')
-      ->will($this->returnValue([]));
+      ->willReturn([]);
 
     $this->editorPluginManager->expects($this->any())
       ->method('createInstance')
       ->with($this->editorId)
-      ->will($this->returnValue($plugin));
+      ->willReturn($plugin);
 
     $entity = new Editor($values, $this->entityTypeId);
 
     $filter_format = $this->createMock('Drupal\Core\Config\Entity\ConfigEntityInterface');
     $filter_format->expects($this->once())
       ->method('getConfigDependencyName')
-      ->will($this->returnValue('filter.format.test'));
+      ->willReturn('filter.format.test');
 
     $storage = $this->createMock('Drupal\Core\Entity\EntityStorageInterface');
     $storage->expects($this->once())
       ->method('load')
       ->with($format_id)
-      ->will($this->returnValue($filter_format));
+      ->willReturn($filter_format);
 
     $this->entityTypeManager->expects($this->once())
       ->method('getStorage')
       ->with('filter_format')
-      ->will($this->returnValue($storage));
+      ->willReturn($storage);
 
     $dependencies = $entity->calculateDependencies()->getDependencies();
     $this->assertContains('test_module', $dependencies['module']);
diff --git a/core/modules/editor/tests/src/Unit/EditorXssFilter/StandardTest.php b/core/modules/editor/tests/src/Unit/EditorXssFilter/StandardTest.php
index b570982ab5..d3a5207127 100644
--- a/core/modules/editor/tests/src/Unit/EditorXssFilter/StandardTest.php
+++ b/core/modules/editor/tests/src/Unit/EditorXssFilter/StandardTest.php
@@ -23,6 +23,9 @@ class StandardTest extends UnitTestCase {
    */
   protected $format;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
 
     // Mock text format configuration entity object.
@@ -31,7 +34,7 @@ protected function setUp(): void {
       ->getMock();
     $this->format->expects($this->any())
       ->method('getFilterTypes')
-      ->will($this->returnValue([FilterInterface::TYPE_HTML_RESTRICTOR]));
+      ->willReturn([FilterInterface::TYPE_HTML_RESTRICTOR]);
     $restrictions = [
       'allowed' => [
         'p' => TRUE,
@@ -44,7 +47,7 @@ protected function setUp(): void {
     ];
     $this->format->expects($this->any())
       ->method('getHtmlRestrictions')
-      ->will($this->returnValue($restrictions));
+      ->willReturn($restrictions);
   }
 
   /**
diff --git a/core/modules/field/migrations/d6_field_formatter_settings.yml b/core/modules/field/migrations/d6_field_formatter_settings.yml
index 8646cfa5ff..8359756e3a 100644
--- a/core/modules/field/migrations/d6_field_formatter_settings.yml
+++ b/core/modules/field/migrations/d6_field_formatter_settings.yml
@@ -59,122 +59,122 @@ process:
   "options/label": label
   "options/weight": weight
   "options/type":
-      -
-        plugin: static_map
-        bypass: true
-        source:
-          - type
-          - 'display_settings/format'
-        map:
-          number_integer:
-            default: number_integer
-            us_0: number_integer
-            be_0: number_integer
-            fr_0: number_integer
-            unformatted: number_unformatted
-          number_float:
-            default: number_decimal
-            us_0: number_decimal
-            us_1: number_decimal
-            us_2: number_decimal
-            be_0: number_decimal
-            be_1: number_decimal
-            be_2: number_decimal
-            fr_0: number_decimal
-            fr_1: number_decimal
-            fr_2: number_decimal
-            unformatted: number_unformatted
-          number_decimal:
-            default: number_decimal
-            us_0: number_decimal
-            us_1: number_decimal
-            us_2: number_decimal
-            be_0: number_decimal
-            be_1: number_decimal
-            be_2: number_decimal
-            fr_0: number_decimal
-            fr_1: number_decimal
-            fr_2: number_decimal
-            unformatted: number_unformatted
-          email:
-            default: email_mailto
-            spamspan: email_mailto
-            contact: email_mailto
-            plain: basic_string
-          fr_phone:
-            default: basic_string
-          be_phone:
-            default: basic_string
-          it_phone:
-            default: basic_string
-          el_phone:
-            default: basic_string
-          ch_phone:
-            default: basic_string
-          ca_phone:
-            default: basic_string
-          cr_phone:
-            default: basic_string
-          pa_phone:
-            default: basic_string
-          gb_phone:
-            default: basic_string
-          ru_phone:
-            default: basic_string
-          ua_phone:
-            default: basic_string
-          es_phone:
-            default: basic_string
-          au_phone:
-            default: basic_string
-          cs_phone:
-            default: basic_string
-          hu_phone:
-            default: basic_string
-          pl_phone:
-            default: basic_string
-          nl_phone:
-            default: basic_string
-          se_phone:
-            default: basic_string
-          za_phone:
-            default: basic_string
-          il_phone:
-            default: basic_string
-          nz_phone:
-            default: basic_string
-          br_phone:
-            default: basic_string
-          cl_phone:
-            default: basic_string
-          cn_phone:
-            default: basic_string
-          hk_phone:
-            default: basic_string
-          mo_phone:
-            default: basic_string
-          ph_phone:
-            default: basic_string
-          sg_phone:
-            default: basic_string
-          jo_phone:
-            default: basic_string
-          eg_phone:
-            default: basic_string
-          pk_phone:
-            default: basic_string
-          int_phone:
-            default: basic_string
-          nodereference:
-            default: entity_reference_label
-            plain: entity_reference_label
-            full: entity_reference_entity_view
-            teaser: entity_reference_entity_view
-          userreference:
-            default: entity_reference_label
-            plain: entity_reference_label
-      -
-        plugin: d6_field_type_defaults
+    -
+      plugin: static_map
+      bypass: true
+      source:
+        - type
+        - 'display_settings/format'
+      map:
+        number_integer:
+          default: number_integer
+          us_0: number_integer
+          be_0: number_integer
+          fr_0: number_integer
+          unformatted: number_unformatted
+        number_float:
+          default: number_decimal
+          us_0: number_decimal
+          us_1: number_decimal
+          us_2: number_decimal
+          be_0: number_decimal
+          be_1: number_decimal
+          be_2: number_decimal
+          fr_0: number_decimal
+          fr_1: number_decimal
+          fr_2: number_decimal
+          unformatted: number_unformatted
+        number_decimal:
+          default: number_decimal
+          us_0: number_decimal
+          us_1: number_decimal
+          us_2: number_decimal
+          be_0: number_decimal
+          be_1: number_decimal
+          be_2: number_decimal
+          fr_0: number_decimal
+          fr_1: number_decimal
+          fr_2: number_decimal
+          unformatted: number_unformatted
+        email:
+          default: email_mailto
+          spamspan: email_mailto
+          contact: email_mailto
+          plain: basic_string
+        fr_phone:
+          default: basic_string
+        be_phone:
+          default: basic_string
+        it_phone:
+          default: basic_string
+        el_phone:
+          default: basic_string
+        ch_phone:
+          default: basic_string
+        ca_phone:
+          default: basic_string
+        cr_phone:
+          default: basic_string
+        pa_phone:
+          default: basic_string
+        gb_phone:
+          default: basic_string
+        ru_phone:
+          default: basic_string
+        ua_phone:
+          default: basic_string
+        es_phone:
+          default: basic_string
+        au_phone:
+          default: basic_string
+        cs_phone:
+          default: basic_string
+        hu_phone:
+          default: basic_string
+        pl_phone:
+          default: basic_string
+        nl_phone:
+          default: basic_string
+        se_phone:
+          default: basic_string
+        za_phone:
+          default: basic_string
+        il_phone:
+          default: basic_string
+        nz_phone:
+          default: basic_string
+        br_phone:
+          default: basic_string
+        cl_phone:
+          default: basic_string
+        cn_phone:
+          default: basic_string
+        hk_phone:
+          default: basic_string
+        mo_phone:
+          default: basic_string
+        ph_phone:
+          default: basic_string
+        sg_phone:
+          default: basic_string
+        jo_phone:
+          default: basic_string
+        eg_phone:
+          default: basic_string
+        pk_phone:
+          default: basic_string
+        int_phone:
+          default: basic_string
+        nodereference:
+          default: entity_reference_label
+          plain: entity_reference_label
+          full: entity_reference_entity_view
+          teaser: entity_reference_entity_view
+        userreference:
+          default: entity_reference_label
+          plain: entity_reference_label
+    -
+      plugin: d6_field_type_defaults
   "options/settings":
     -
       plugin: static_map
diff --git a/core/modules/field/tests/modules/field_test/field_test.module b/core/modules/field/tests/modules/field_test/field_test.module
index ec567dc139..91ca8c0f90 100644
--- a/core/modules/field/tests/modules/field_test/field_test.module
+++ b/core/modules/field/tests/modules/field_test/field_test.module
@@ -58,7 +58,7 @@
  * @param $value
  *   A value to store for $key.
  *
- * @return
+ * @return array|null
  *   An array mapping each $key to an array of each $value passed in
  *   for that key.
  */
diff --git a/core/modules/field/tests/modules/field_test/src/Plugin/Field/FieldFormatter/TestFieldDefaultFormatter.php b/core/modules/field/tests/modules/field_test/src/Plugin/Field/FieldFormatter/TestFieldDefaultFormatter.php
index 80f860bfaf..74065a5672 100644
--- a/core/modules/field/tests/modules/field_test/src/Plugin/Field/FieldFormatter/TestFieldDefaultFormatter.php
+++ b/core/modules/field/tests/modules/field_test/src/Plugin/Field/FieldFormatter/TestFieldDefaultFormatter.php
@@ -36,7 +36,7 @@ public static function defaultSettings() {
    */
   public function settingsForm(array $form, FormStateInterface $form_state) {
     $element['test_formatter_setting'] = [
-      '#title' => t('Setting'),
+      '#title' => $this->t('Setting'),
       '#type' => 'textfield',
       '#size' => 20,
       '#default_value' => $this->getSetting('test_formatter_setting'),
@@ -50,7 +50,7 @@ public function settingsForm(array $form, FormStateInterface $form_state) {
    */
   public function settingsSummary() {
     $summary = [];
-    $summary[] = t('@setting: @value', ['@setting' => 'test_formatter_setting', '@value' => $this->getSetting('test_formatter_setting')]);
+    $summary[] = $this->t('@setting: @value', ['@setting' => 'test_formatter_setting', '@value' => $this->getSetting('test_formatter_setting')]);
     return $summary;
   }
 
diff --git a/core/modules/field/tests/modules/field_test/src/Plugin/Field/FieldFormatter/TestFieldEmptySettingFormatter.php b/core/modules/field/tests/modules/field_test/src/Plugin/Field/FieldFormatter/TestFieldEmptySettingFormatter.php
index f36fea2c39..86b8465e10 100644
--- a/core/modules/field/tests/modules/field_test/src/Plugin/Field/FieldFormatter/TestFieldEmptySettingFormatter.php
+++ b/core/modules/field/tests/modules/field_test/src/Plugin/Field/FieldFormatter/TestFieldEmptySettingFormatter.php
@@ -34,7 +34,7 @@ public static function defaultSettings() {
    */
   public function settingsForm(array $form, FormStateInterface $form_state) {
     $element['field_empty_setting'] = [
-      '#title' => t('Setting'),
+      '#title' => $this->t('Setting'),
       '#type' => 'textfield',
       '#size' => 20,
       '#default_value' => $this->getSetting('field_empty_setting'),
@@ -50,7 +50,7 @@ public function settingsSummary() {
     $summary = [];
     $setting = $this->getSetting('field_empty_setting');
     if (!empty($setting)) {
-      $summary[] = t('Default empty setting now has a value.');
+      $summary[] = $this->t('Default empty setting now has a value.');
     }
     return $summary;
   }
diff --git a/core/modules/field/tests/modules/field_test/src/Plugin/Field/FieldFormatter/TestFieldMultipleFormatter.php b/core/modules/field/tests/modules/field_test/src/Plugin/Field/FieldFormatter/TestFieldMultipleFormatter.php
index 978e18fbac..7f6bab89ed 100644
--- a/core/modules/field/tests/modules/field_test/src/Plugin/Field/FieldFormatter/TestFieldMultipleFormatter.php
+++ b/core/modules/field/tests/modules/field_test/src/Plugin/Field/FieldFormatter/TestFieldMultipleFormatter.php
@@ -37,7 +37,7 @@ public static function defaultSettings() {
    */
   public function settingsForm(array $form, FormStateInterface $form_state) {
     $element['test_formatter_setting_multiple'] = [
-      '#title' => t('Setting'),
+      '#title' => $this->t('Setting'),
       '#type' => 'textfield',
       '#size' => 20,
       '#default_value' => $this->getSetting('test_formatter_setting_multiple'),
@@ -51,7 +51,7 @@ public function settingsForm(array $form, FormStateInterface $form_state) {
    */
   public function settingsSummary() {
     $summary = [];
-    $summary[] = t('@setting: @value', ['@setting' => 'test_formatter_setting_multiple', '@value' => $this->getSetting('test_formatter_setting_multiple')]);
+    $summary[] = $this->t('@setting: @value', ['@setting' => 'test_formatter_setting_multiple', '@value' => $this->getSetting('test_formatter_setting_multiple')]);
     return $summary;
   }
 
diff --git a/core/modules/field/tests/modules/field_test/src/Plugin/Field/FieldFormatter/TestFieldPrepareViewFormatter.php b/core/modules/field/tests/modules/field_test/src/Plugin/Field/FieldFormatter/TestFieldPrepareViewFormatter.php
index 39bff8d877..038fd151f8 100644
--- a/core/modules/field/tests/modules/field_test/src/Plugin/Field/FieldFormatter/TestFieldPrepareViewFormatter.php
+++ b/core/modules/field/tests/modules/field_test/src/Plugin/Field/FieldFormatter/TestFieldPrepareViewFormatter.php
@@ -35,7 +35,7 @@ public static function defaultSettings() {
    */
   public function settingsForm(array $form, FormStateInterface $form_state) {
     $element['test_formatter_setting_additional'] = [
-      '#title' => t('Setting'),
+      '#title' => $this->t('Setting'),
       '#type' => 'textfield',
       '#size' => 20,
       '#default_value' => $this->getSetting('test_formatter_setting_additional'),
@@ -49,7 +49,7 @@ public function settingsForm(array $form, FormStateInterface $form_state) {
    */
   public function settingsSummary() {
     $summary = [];
-    $summary[] = t('@setting: @value', ['@setting' => 'test_formatter_setting_additional', '@value' => $this->getSetting('test_formatter_setting_additional')]);
+    $summary[] = $this->t('@setting: @value', ['@setting' => 'test_formatter_setting_additional', '@value' => $this->getSetting('test_formatter_setting_additional')]);
     return $summary;
   }
 
diff --git a/core/modules/field/tests/modules/field_test/src/Plugin/Field/FieldType/TestItem.php b/core/modules/field/tests/modules/field_test/src/Plugin/Field/FieldType/TestItem.php
index d889f816f1..ad2a135a21 100644
--- a/core/modules/field/tests/modules/field_test/src/Plugin/Field/FieldType/TestItem.php
+++ b/core/modules/field/tests/modules/field_test/src/Plugin/Field/FieldType/TestItem.php
@@ -3,6 +3,7 @@
 namespace Drupal\field_test\Plugin\Field\FieldType;
 
 use Drupal\Core\Field\FieldStorageDefinitionInterface;
+use Drupal\Core\StringTranslation\TranslatableMarkup;
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\TypedData\DataDefinition;
 use Drupal\Core\Field\FieldItemBase;
@@ -47,7 +48,7 @@ public static function defaultFieldSettings() {
    */
   public static function propertyDefinitions(FieldStorageDefinitionInterface $field_definition) {
     $properties['value'] = DataDefinition::create('integer')
-      ->setLabel(t('Test integer value'))
+      ->setLabel(new TranslatableMarkup('Test integer value'))
       ->setRequired(TRUE);
 
     return $properties;
@@ -76,10 +77,10 @@ public static function schema(FieldStorageDefinitionInterface $field_definition)
   public function storageSettingsForm(array &$form, FormStateInterface $form_state, $has_data) {
     $form['test_field_storage_setting'] = [
       '#type' => 'textfield',
-      '#title' => t('Field test field storage setting'),
+      '#title' => $this->t('Field test field storage setting'),
       '#default_value' => $this->getSetting('test_field_storage_setting'),
       '#required' => FALSE,
-      '#description' => t('A dummy form element to simulate field storage setting.'),
+      '#description' => $this->t('A dummy form element to simulate field storage setting.'),
     ];
 
     return $form;
@@ -91,10 +92,10 @@ public function storageSettingsForm(array &$form, FormStateInterface $form_state
   public function fieldSettingsForm(array $form, FormStateInterface $form_state) {
     $form['test_field_setting'] = [
       '#type' => 'textfield',
-      '#title' => t('Field test field setting'),
+      '#title' => $this->t('Field test field setting'),
       '#default_value' => $this->getSetting('test_field_setting'),
       '#required' => FALSE,
-      '#description' => t('A dummy form element to simulate field setting.'),
+      '#description' => $this->t('A dummy form element to simulate field setting.'),
     ];
 
     return $form;
@@ -119,7 +120,7 @@ public function getConstraints() {
       'value' => [
         'TestField' => [
           'value' => -1,
-          'message' => t('%name does not accept the value @value.', ['%name' => $this->getFieldDefinition()->getLabel(), '@value' => -1]),
+          'message' => $this->t('%name does not accept the value @value.', ['%name' => $this->getFieldDefinition()->getLabel(), '@value' => -1]),
         ],
       ],
     ]);
diff --git a/core/modules/field/tests/modules/field_test/src/Plugin/Field/FieldType/TestItemWithPreconfiguredOptions.php b/core/modules/field/tests/modules/field_test/src/Plugin/Field/FieldType/TestItemWithPreconfiguredOptions.php
index 6c98205f4f..1c5754238a 100644
--- a/core/modules/field/tests/modules/field_test/src/Plugin/Field/FieldType/TestItemWithPreconfiguredOptions.php
+++ b/core/modules/field/tests/modules/field_test/src/Plugin/Field/FieldType/TestItemWithPreconfiguredOptions.php
@@ -4,6 +4,7 @@
 
 use Drupal\Core\Field\FieldStorageDefinitionInterface;
 use Drupal\Core\Field\PreconfiguredFieldUiOptionsInterface;
+use Drupal\Core\StringTranslation\TranslatableMarkup;
 
 /**
  * Defines the 'test_field_with_preconfigured_options' entity field item.
@@ -24,8 +25,8 @@ class TestItemWithPreconfiguredOptions extends TestItem implements Preconfigured
   public static function getPreconfiguredOptions() {
     return [
       'custom_options' => [
-        'label' => t('All custom options'),
-        'category' => t('Custom category'),
+        'label' => new TranslatableMarkup('All custom options'),
+        'category' => new TranslatableMarkup('Custom category'),
         'field_storage_config' => [
           'cardinality' => FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED,
           'settings' => [
diff --git a/core/modules/field/tests/modules/field_test/src/Plugin/Field/FieldWidget/TestFieldWidget.php b/core/modules/field/tests/modules/field_test/src/Plugin/Field/FieldWidget/TestFieldWidget.php
index b2f9738f24..ef4efd2078 100644
--- a/core/modules/field/tests/modules/field_test/src/Plugin/Field/FieldWidget/TestFieldWidget.php
+++ b/core/modules/field/tests/modules/field_test/src/Plugin/Field/FieldWidget/TestFieldWidget.php
@@ -40,8 +40,8 @@ public static function defaultSettings() {
   public function settingsForm(array $form, FormStateInterface $form_state) {
     $element['test_widget_setting'] = [
       '#type' => 'textfield',
-      '#title' => t('Field test field widget setting'),
-      '#description' => t('A dummy form element to simulate field widget setting.'),
+      '#title' => $this->t('Field test field widget setting'),
+      '#description' => $this->t('A dummy form element to simulate field widget setting.'),
       '#default_value' => $this->getSetting('test_widget_setting'),
       '#required' => FALSE,
     ];
@@ -53,7 +53,7 @@ public function settingsForm(array $form, FormStateInterface $form_state) {
    */
   public function settingsSummary() {
     $summary = [];
-    $summary[] = t('@setting: @value', ['@setting' => 'test_widget_setting', '@value' => $this->getSetting('test_widget_setting')]);
+    $summary[] = $this->t('@setting: @value', ['@setting' => 'test_widget_setting', '@value' => $this->getSetting('test_widget_setting')]);
     return $summary;
   }
 
diff --git a/core/modules/field/tests/modules/field_test/src/Plugin/Field/FieldWidget/TestFieldWidgetMultiple.php b/core/modules/field/tests/modules/field_test/src/Plugin/Field/FieldWidget/TestFieldWidgetMultiple.php
index 3f9c0ea09f..d4493bb55d 100644
--- a/core/modules/field/tests/modules/field_test/src/Plugin/Field/FieldWidget/TestFieldWidgetMultiple.php
+++ b/core/modules/field/tests/modules/field_test/src/Plugin/Field/FieldWidget/TestFieldWidgetMultiple.php
@@ -40,8 +40,8 @@ public static function defaultSettings() {
   public function settingsForm(array $form, FormStateInterface $form_state) {
     $element['test_widget_setting_multiple'] = [
       '#type' => 'textfield',
-      '#title' => t('Field test field widget setting'),
-      '#description' => t('A dummy form element to simulate field widget setting.'),
+      '#title' => $this->t('Field test field widget setting'),
+      '#description' => $this->t('A dummy form element to simulate field widget setting.'),
       '#default_value' => $this->getSetting('test_widget_setting_multiple'),
       '#required' => FALSE,
     ];
@@ -53,7 +53,7 @@ public function settingsForm(array $form, FormStateInterface $form_state) {
    */
   public function settingsSummary() {
     $summary = [];
-    $summary[] = t('@setting: @value', ['@setting' => 'test_widget_setting_multiple', '@value' => $this->getSetting('test_widget_setting_multiple')]);
+    $summary[] = $this->t('@setting: @value', ['@setting' => 'test_widget_setting_multiple', '@value' => $this->getSetting('test_widget_setting_multiple')]);
     return $summary;
   }
 
@@ -93,8 +93,16 @@ public static function multipleValidate($element, FormStateInterface $form_state
   }
 
   /**
-   * {@inheritdoc}
-   * Used in \Drupal\field\Tests\EntityReference\EntityReferenceAdminTest::testAvailableFormatters().
+   * Test is the widget is applicable to the field definition.
+   *
+   * @param \Drupal\Core\Field\FieldDefinitionInterface $field_definition
+   *   The field definition that should be checked.
+   *
+   * @return bool
+   *   TRUE if the machine name of the field is not equals to
+   *   field_onewidgetfield, FALSE otherwise.
+   *
+   * @see \Drupal\Tests\field\Functional\EntityReference\EntityReferenceAdminTest::testAvailableFormatters
    */
   public static function isApplicable(FieldDefinitionInterface $field_definition) {
     // Returns FALSE if machine name of the field equals field_onewidgetfield.
diff --git a/core/modules/field/tests/src/Functional/Email/EmailFieldTest.php b/core/modules/field/tests/src/Functional/Email/EmailFieldTest.php
index 31bf7daa97..a696e8c980 100644
--- a/core/modules/field/tests/src/Functional/Email/EmailFieldTest.php
+++ b/core/modules/field/tests/src/Functional/Email/EmailFieldTest.php
@@ -40,6 +40,9 @@ class EmailFieldTest extends BrowserTestBase {
    */
   protected $field;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/field/tests/src/Functional/EntityReference/EntityReferenceAutoCreateTest.php b/core/modules/field/tests/src/Functional/EntityReference/EntityReferenceAutoCreateTest.php
index ab00205b8f..2733bfadc4 100644
--- a/core/modules/field/tests/src/Functional/EntityReference/EntityReferenceAutoCreateTest.php
+++ b/core/modules/field/tests/src/Functional/EntityReference/EntityReferenceAutoCreateTest.php
@@ -40,6 +40,9 @@ class EntityReferenceAutoCreateTest extends BrowserTestBase {
    */
   protected $referencedType;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/field/tests/src/Functional/EntityReference/EntityReferenceFieldDefaultValueTest.php b/core/modules/field/tests/src/Functional/EntityReference/EntityReferenceFieldDefaultValueTest.php
index ec7c7b1321..98f3e5aeda 100644
--- a/core/modules/field/tests/src/Functional/EntityReference/EntityReferenceFieldDefaultValueTest.php
+++ b/core/modules/field/tests/src/Functional/EntityReference/EntityReferenceFieldDefaultValueTest.php
@@ -36,6 +36,9 @@ class EntityReferenceFieldDefaultValueTest extends BrowserTestBase {
    */
   protected $adminUser;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/field/tests/src/Functional/EntityReference/EntityReferenceFieldTranslatedReferenceViewTest.php b/core/modules/field/tests/src/Functional/EntityReference/EntityReferenceFieldTranslatedReferenceViewTest.php
index e69abc86d9..ac1dbad444 100644
--- a/core/modules/field/tests/src/Functional/EntityReference/EntityReferenceFieldTranslatedReferenceViewTest.php
+++ b/core/modules/field/tests/src/Functional/EntityReference/EntityReferenceFieldTranslatedReferenceViewTest.php
@@ -129,6 +129,9 @@ class EntityReferenceFieldTranslatedReferenceViewTest extends BrowserTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
@@ -282,13 +285,13 @@ protected function setUpEntityReferenceField() {
    */
   protected function setUpContentTypes() {
     $this->referrerType = $this->drupalCreateContentType([
-        'type' => 'referrer',
-        'name' => 'Referrer',
-      ]);
+      'type' => 'referrer',
+      'name' => 'Referrer',
+    ]);
     $this->referencedType = $this->drupalCreateContentType([
-        'type' => 'referenced_page',
-        'name' => 'Referenced Page',
-      ]);
+      'type' => 'referenced_page',
+      'name' => 'Referenced Page',
+    ]);
   }
 
   /**
diff --git a/core/modules/field/tests/src/Functional/EntityReference/EntityReferenceFileUploadTest.php b/core/modules/field/tests/src/Functional/EntityReference/EntityReferenceFileUploadTest.php
index 96905cbd79..55c4581905 100644
--- a/core/modules/field/tests/src/Functional/EntityReference/EntityReferenceFileUploadTest.php
+++ b/core/modules/field/tests/src/Functional/EntityReference/EntityReferenceFileUploadTest.php
@@ -45,6 +45,9 @@ class EntityReferenceFileUploadTest extends BrowserTestBase {
    */
   protected $nodeId;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
@@ -112,7 +115,7 @@ protected function setUp(): void {
         'type' => 'entity_reference_autocomplete',
       ])
       ->setComponent($file_field_name, [
-         'type' => 'file_generic',
+        'type' => 'file_generic',
       ])
       ->save();
   }
diff --git a/core/modules/field/tests/src/Functional/FieldAccessTest.php b/core/modules/field/tests/src/Functional/FieldAccessTest.php
index d96eb4f681..315d8e8c03 100644
--- a/core/modules/field/tests/src/Functional/FieldAccessTest.php
+++ b/core/modules/field/tests/src/Functional/FieldAccessTest.php
@@ -38,6 +38,9 @@ class FieldAccessTest extends FieldTestBase {
    */
   protected $testViewFieldValue;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/field/tests/src/Functional/FieldHelpTest.php b/core/modules/field/tests/src/Functional/FieldHelpTest.php
index dc92befadd..a80a1890c3 100644
--- a/core/modules/field/tests/src/Functional/FieldHelpTest.php
+++ b/core/modules/field/tests/src/Functional/FieldHelpTest.php
@@ -28,6 +28,9 @@ class FieldHelpTest extends BrowserTestBase {
    */
   protected $adminUser;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/field/tests/src/Functional/FieldImportDeleteUninstallUiTest.php b/core/modules/field/tests/src/Functional/FieldImportDeleteUninstallUiTest.php
index 38ed9b0d7f..b7dbac9c98 100644
--- a/core/modules/field/tests/src/Functional/FieldImportDeleteUninstallUiTest.php
+++ b/core/modules/field/tests/src/Functional/FieldImportDeleteUninstallUiTest.php
@@ -35,6 +35,9 @@ class FieldImportDeleteUninstallUiTest extends FieldTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/field/tests/src/Functional/FieldTestBase.php b/core/modules/field/tests/src/Functional/FieldTestBase.php
index 4656ed5dca..5fffae3a45 100644
--- a/core/modules/field/tests/src/Functional/FieldTestBase.php
+++ b/core/modules/field/tests/src/Functional/FieldTestBase.php
@@ -18,7 +18,7 @@ abstract class FieldTestBase extends BrowserTestBase {
    * @param $cardinality
    *   Number of values to generate.
    *
-   * @return
+   * @return array
    *   An array of random values, in the format expected for field values.
    */
   public function _generateTestFieldValues($cardinality) {
diff --git a/core/modules/field/tests/src/Functional/FormTest.php b/core/modules/field/tests/src/Functional/FormTest.php
index edbd3d0d75..3fbe668953 100644
--- a/core/modules/field/tests/src/Functional/FormTest.php
+++ b/core/modules/field/tests/src/Functional/FormTest.php
@@ -66,6 +66,9 @@ class FormTest extends FieldTestBase {
    */
   protected $field;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/field/tests/src/Functional/NestedFormTest.php b/core/modules/field/tests/src/Functional/NestedFormTest.php
index b8e6596900..4bd2f97c6b 100644
--- a/core/modules/field/tests/src/Functional/NestedFormTest.php
+++ b/core/modules/field/tests/src/Functional/NestedFormTest.php
@@ -40,6 +40,9 @@ class NestedFormTest extends FieldTestBase {
    */
   protected array $field;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/field/tests/src/Functional/Number/NumberFieldTest.php b/core/modules/field/tests/src/Functional/Number/NumberFieldTest.php
index f9ff9fb3e9..a7fb5a4271 100644
--- a/core/modules/field/tests/src/Functional/Number/NumberFieldTest.php
+++ b/core/modules/field/tests/src/Functional/Number/NumberFieldTest.php
@@ -26,6 +26,9 @@ class NumberFieldTest extends BrowserTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->drupalLogin($this->drupalCreateUser([
diff --git a/core/modules/field/tests/src/Functional/ReEnableModuleFieldTest.php b/core/modules/field/tests/src/Functional/ReEnableModuleFieldTest.php
index 7480f93896..d68039ce07 100644
--- a/core/modules/field/tests/src/Functional/ReEnableModuleFieldTest.php
+++ b/core/modules/field/tests/src/Functional/ReEnableModuleFieldTest.php
@@ -34,6 +34,9 @@ class ReEnableModuleFieldTest extends BrowserTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/field/tests/src/Functional/String/StringFieldTest.php b/core/modules/field/tests/src/Functional/String/StringFieldTest.php
index 295169d4d2..ae8741b720 100644
--- a/core/modules/field/tests/src/Functional/String/StringFieldTest.php
+++ b/core/modules/field/tests/src/Functional/String/StringFieldTest.php
@@ -34,6 +34,9 @@ class StringFieldTest extends BrowserTestBase {
    */
   protected $webUser;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/field/tests/src/Functional/TranslationWebTest.php b/core/modules/field/tests/src/Functional/TranslationWebTest.php
index 3b8d33a2bc..ab1b4f9292 100644
--- a/core/modules/field/tests/src/Functional/TranslationWebTest.php
+++ b/core/modules/field/tests/src/Functional/TranslationWebTest.php
@@ -54,6 +54,9 @@ class TranslationWebTest extends FieldTestBase {
    */
   protected $field;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/field/tests/src/Functional/Views/FieldTestBase.php b/core/modules/field/tests/src/Functional/Views/FieldTestBase.php
index 831e6cccc8..feac7d8e05 100644
--- a/core/modules/field/tests/src/Functional/Views/FieldTestBase.php
+++ b/core/modules/field/tests/src/Functional/Views/FieldTestBase.php
@@ -34,13 +34,15 @@ abstract class FieldTestBase extends ViewTestBase {
   public $fieldStorages;
 
   /**
-   * Stores the fields of the field storage. They have the same keys as the
-   * field storages.
+   * Stores the fields of the field storage.
    *
    * @var array
    */
   public $fields;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp($import_test_views = TRUE, $modules = ['field_test_views']): void {
     parent::setUp($import_test_views, $modules);
 
diff --git a/core/modules/field/tests/src/FunctionalJavascript/EntityReference/EntityReferenceAdminTest.php b/core/modules/field/tests/src/FunctionalJavascript/EntityReference/EntityReferenceAdminTest.php
index 6b057cbc89..36ca6b22f6 100644
--- a/core/modules/field/tests/src/FunctionalJavascript/EntityReference/EntityReferenceAdminTest.php
+++ b/core/modules/field/tests/src/FunctionalJavascript/EntityReference/EntityReferenceAdminTest.php
@@ -49,8 +49,7 @@ class EntityReferenceAdminTest extends WebDriverTestBase {
   protected $type;
 
   /**
-   * The name of a second content type to be used as a target of entity
-   * references.
+   * Name of a second content type to be used as a target of entity references.
    *
    * @var string
    */
diff --git a/core/modules/field/tests/src/Kernel/BulkDeleteTest.php b/core/modules/field/tests/src/Kernel/BulkDeleteTest.php
index 78daf5261d..b7a7f917c1 100644
--- a/core/modules/field/tests/src/Kernel/BulkDeleteTest.php
+++ b/core/modules/field/tests/src/Kernel/BulkDeleteTest.php
@@ -88,6 +88,9 @@ public function checkHooksInvocations($expected_hooks, $actual_hooks) {
     }
   }
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/field/tests/src/Kernel/DisplayApiTest.php b/core/modules/field/tests/src/Kernel/DisplayApiTest.php
index a460678bb6..b6fc3e04c7 100644
--- a/core/modules/field/tests/src/Kernel/DisplayApiTest.php
+++ b/core/modules/field/tests/src/Kernel/DisplayApiTest.php
@@ -62,6 +62,9 @@ class DisplayApiTest extends FieldKernelTestBase {
    */
   protected static $modules = ['system'];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/field/tests/src/Kernel/Email/EmailItemTest.php b/core/modules/field/tests/src/Kernel/Email/EmailItemTest.php
index ebb0ca94e1..dc4361c0f1 100644
--- a/core/modules/field/tests/src/Kernel/Email/EmailItemTest.php
+++ b/core/modules/field/tests/src/Kernel/Email/EmailItemTest.php
@@ -16,6 +16,9 @@
  */
 class EmailItemTest extends FieldKernelTestBase {
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/field/tests/src/Kernel/EntityReference/EntityReferenceFormatterTest.php b/core/modules/field/tests/src/Kernel/EntityReference/EntityReferenceFormatterTest.php
index c025b2caf8..cd62a41ece 100644
--- a/core/modules/field/tests/src/Kernel/EntityReference/EntityReferenceFormatterTest.php
+++ b/core/modules/field/tests/src/Kernel/EntityReference/EntityReferenceFormatterTest.php
@@ -61,6 +61,9 @@ class EntityReferenceFormatterTest extends EntityKernelTestBase {
    */
   protected $unsavedReferencedEntity;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
@@ -267,7 +270,7 @@ public function testEntityFormatterRecursiveRendering() {
     // the entity title because we're rendering the full entity, not just the
     // reference field.
     $expected_occurrences = EntityReferenceEntityFormatter::RECURSIVE_RENDER_LIMIT * 2 + 2;
-    $actual_occurrences = substr_count($output, $referencing_entity_1->name->value);
+    $actual_occurrences = substr_count($output, $referencing_entity_1->label());
     $this->assertEquals($expected_occurrences, $actual_occurrences);
 
     // Repeat the process with another entity in order to check that the
@@ -280,17 +283,17 @@ public function testEntityFormatterRecursiveRendering() {
     $build = $view_builder->view($referencing_entity_2, 'default');
     $output = $renderer->renderRoot($build);
 
-    $actual_occurrences = substr_count($output, $referencing_entity_2->name->value);
+    $actual_occurrences = substr_count($output, $referencing_entity_2->label());
     $this->assertEquals($expected_occurrences, $actual_occurrences);
 
     // Now render both entities at the same time and check again.
     $build = $view_builder->viewMultiple([$referencing_entity_1, $referencing_entity_2], 'default');
     $output = $renderer->renderRoot($build);
 
-    $actual_occurrences = substr_count($output, $referencing_entity_1->name->value);
+    $actual_occurrences = substr_count($output, $referencing_entity_1->label());
     $this->assertEquals($expected_occurrences, $actual_occurrences);
 
-    $actual_occurrences = substr_count($output, $referencing_entity_2->name->value);
+    $actual_occurrences = substr_count($output, $referencing_entity_2->label());
     $this->assertEquals($expected_occurrences, $actual_occurrences);
   }
 
diff --git a/core/modules/field/tests/src/Kernel/EntityReference/Views/EntityReferenceRelationshipTest.php b/core/modules/field/tests/src/Kernel/EntityReference/Views/EntityReferenceRelationshipTest.php
index 17766c0483..f1be011b88 100644
--- a/core/modules/field/tests/src/Kernel/EntityReference/Views/EntityReferenceRelationshipTest.php
+++ b/core/modules/field/tests/src/Kernel/EntityReference/Views/EntityReferenceRelationshipTest.php
@@ -34,7 +34,7 @@ class EntityReferenceRelationshipTest extends ViewsKernelTestBase {
     'test_entity_reference_entity_test_mul_view',
     'test_entity_reference_reverse_entity_test_mul_view',
     'test_entity_reference_group_by_empty_relationships',
-    ];
+  ];
 
   /**
    * Modules to install.
diff --git a/core/modules/field/tests/src/Kernel/FieldAttachOtherTest.php b/core/modules/field/tests/src/Kernel/FieldAttachOtherTest.php
index 9ed593a72c..ef9393bf53 100644
--- a/core/modules/field/tests/src/Kernel/FieldAttachOtherTest.php
+++ b/core/modules/field/tests/src/Kernel/FieldAttachOtherTest.php
@@ -13,6 +13,9 @@
  */
 class FieldAttachOtherTest extends FieldKernelTestBase {
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->installEntitySchema('entity_test_rev');
diff --git a/core/modules/field/tests/src/Kernel/FieldAttachStorageTest.php b/core/modules/field/tests/src/Kernel/FieldAttachStorageTest.php
index 1ae8620840..117b80cc7d 100644
--- a/core/modules/field/tests/src/Kernel/FieldAttachStorageTest.php
+++ b/core/modules/field/tests/src/Kernel/FieldAttachStorageTest.php
@@ -14,6 +14,9 @@
  */
 class FieldAttachStorageTest extends FieldKernelTestBase {
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->installEntitySchema('entity_test_rev');
diff --git a/core/modules/field/tests/src/Kernel/FieldCrudTest.php b/core/modules/field/tests/src/Kernel/FieldCrudTest.php
index 3654bb32ae..0742f856f8 100644
--- a/core/modules/field/tests/src/Kernel/FieldCrudTest.php
+++ b/core/modules/field/tests/src/Kernel/FieldCrudTest.php
@@ -38,6 +38,9 @@ class FieldCrudTest extends FieldKernelTestBase {
    */
   protected $fieldDefinition;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/field/tests/src/Kernel/FieldImportDeleteUninstallTest.php b/core/modules/field/tests/src/Kernel/FieldImportDeleteUninstallTest.php
index cb83f2d898..48e553cd32 100644
--- a/core/modules/field/tests/src/Kernel/FieldImportDeleteUninstallTest.php
+++ b/core/modules/field/tests/src/Kernel/FieldImportDeleteUninstallTest.php
@@ -23,6 +23,9 @@ class FieldImportDeleteUninstallTest extends FieldKernelTestBase {
    */
   protected static $modules = ['telephone'];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     // Module uninstall requires users_data tables.
diff --git a/core/modules/field/tests/src/Kernel/FieldKernelTestBase.php b/core/modules/field/tests/src/Kernel/FieldKernelTestBase.php
index 2636fea80e..5ed8ec985e 100644
--- a/core/modules/field/tests/src/Kernel/FieldKernelTestBase.php
+++ b/core/modules/field/tests/src/Kernel/FieldKernelTestBase.php
@@ -169,7 +169,7 @@ protected function entityValidateAndSave(EntityInterface $entity) {
    * @param $cardinality
    *   Number of values to generate.
    *
-   * @return
+   * @return array
    *   An array of random values, in the format expected for field values.
    */
   protected function _generateTestFieldValues($cardinality) {
diff --git a/core/modules/field/tests/src/Kernel/FieldValidationTest.php b/core/modules/field/tests/src/Kernel/FieldValidationTest.php
index 2aca2ab30e..d91d12bf42 100644
--- a/core/modules/field/tests/src/Kernel/FieldValidationTest.php
+++ b/core/modules/field/tests/src/Kernel/FieldValidationTest.php
@@ -24,6 +24,9 @@ class FieldValidationTest extends FieldKernelTestBase {
    */
   private $entity;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/field/tests/src/Kernel/Migrate/d6/MigrateFieldInstanceOptionTranslationTest.php b/core/modules/field/tests/src/Kernel/Migrate/d6/MigrateFieldInstanceOptionTranslationTest.php
index 6981a4a54f..1540609d64 100644
--- a/core/modules/field/tests/src/Kernel/Migrate/d6/MigrateFieldInstanceOptionTranslationTest.php
+++ b/core/modules/field/tests/src/Kernel/Migrate/d6/MigrateFieldInstanceOptionTranslationTest.php
@@ -15,11 +15,11 @@ class MigrateFieldInstanceOptionTranslationTest extends MigrateDrupal6TestBase {
    * {@inheritdoc}
    */
   protected static $modules = [
-      'config_translation',
-      'language',
-      'locale',
-      'menu_ui',
-    ];
+    'config_translation',
+    'language',
+    'locale',
+    'menu_ui',
+  ];
 
   /**
    * {@inheritdoc}
diff --git a/core/modules/field/tests/src/Kernel/Number/NumberItemTest.php b/core/modules/field/tests/src/Kernel/Number/NumberItemTest.php
index 8e0316425d..4b56f1973a 100644
--- a/core/modules/field/tests/src/Kernel/Number/NumberItemTest.php
+++ b/core/modules/field/tests/src/Kernel/Number/NumberItemTest.php
@@ -23,6 +23,9 @@ class NumberItemTest extends FieldKernelTestBase {
    */
   protected static $modules = [];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/field/tests/src/Kernel/Plugin/migrate/source/d7/FieldTest.php b/core/modules/field/tests/src/Kernel/Plugin/migrate/source/d7/FieldTest.php
index 6be4de53d2..ee3478f3ca 100644
--- a/core/modules/field/tests/src/Kernel/Plugin/migrate/source/d7/FieldTest.php
+++ b/core/modules/field/tests/src/Kernel/Plugin/migrate/source/d7/FieldTest.php
@@ -173,14 +173,14 @@ public function providerSource() {
         'entity_type' => 'user',
         'instances' => [
            [
-            'id' => '33',
-            'field_id' => '11',
-            'field_name' => 'field_file',
-            'entity_type' => 'user',
-            'bundle' => 'user',
-            'data' => 'a:6:{s:5:"label";s:4:"File";s:6:"widget";a:5:{s:6:"weight";s:1:"8";s:4:"type";s:12:"file_generic";s:6:"module";s:4:"file";s:6:"active";i:1;s:8:"settings";a:1:{s:18:"progress_indicator";s:8:"throbber";}}s:8:"settings";a:5:{s:14:"file_directory";s:0:"";s:15:"file_extensions";s:3:"txt";s:12:"max_filesize";s:0:"";s:17:"description_field";i:0;s:18:"user_register_form";i:0;}s:7:"display";a:1:{s:7:"default";a:5:{s:5:"label";s:5:"above";s:4:"type";s:12:"file_default";s:8:"settings";a:0:{}s:6:"module";s:4:"file";s:6:"weight";i:0;}}s:8:"required";i:0;s:11:"description";s:0:"";}',
-            'deleted' => '0',
-          ],
+             'id' => '33',
+             'field_id' => '11',
+             'field_name' => 'field_file',
+             'entity_type' => 'user',
+             'bundle' => 'user',
+             'data' => 'a:6:{s:5:"label";s:4:"File";s:6:"widget";a:5:{s:6:"weight";s:1:"8";s:4:"type";s:12:"file_generic";s:6:"module";s:4:"file";s:6:"active";i:1;s:8:"settings";a:1:{s:18:"progress_indicator";s:8:"throbber";}}s:8:"settings";a:5:{s:14:"file_directory";s:0:"";s:15:"file_extensions";s:3:"txt";s:12:"max_filesize";s:0:"";s:17:"description_field";i:0;s:18:"user_register_form";i:0;}s:7:"display";a:1:{s:7:"default";a:5:{s:5:"label";s:5:"above";s:4:"type";s:12:"file_default";s:8:"settings";a:0:{}s:6:"module";s:4:"file";s:6:"weight";i:0;}}s:8:"required";i:0;s:11:"description";s:0:"";}',
+             'deleted' => '0',
+           ],
         ],
       ],
     ];
diff --git a/core/modules/field/tests/src/Kernel/ShapeItemTest.php b/core/modules/field/tests/src/Kernel/ShapeItemTest.php
index 8b32598206..31af1f78cd 100644
--- a/core/modules/field/tests/src/Kernel/ShapeItemTest.php
+++ b/core/modules/field/tests/src/Kernel/ShapeItemTest.php
@@ -29,6 +29,9 @@ class ShapeItemTest extends FieldKernelTestBase {
    */
   protected $fieldName = 'field_shape';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/field/tests/src/Kernel/TestItemTest.php b/core/modules/field/tests/src/Kernel/TestItemTest.php
index 7cbe6ea82c..7e55885416 100644
--- a/core/modules/field/tests/src/Kernel/TestItemTest.php
+++ b/core/modules/field/tests/src/Kernel/TestItemTest.php
@@ -30,6 +30,9 @@ class TestItemTest extends FieldKernelTestBase {
    */
   protected $fieldName = 'field_test';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/field/tests/src/Unit/FieldConfigEntityUnitTest.php b/core/modules/field/tests/src/Unit/FieldConfigEntityUnitTest.php
index 87945c8069..cb5e94cda3 100644
--- a/core/modules/field/tests/src/Unit/FieldConfigEntityUnitTest.php
+++ b/core/modules/field/tests/src/Unit/FieldConfigEntityUnitTest.php
@@ -95,10 +95,10 @@ protected function setUp(): void {
     $this->fieldStorage = $this->createMock('\Drupal\field\FieldStorageConfigInterface');
     $this->fieldStorage->expects($this->any())
       ->method('getType')
-      ->will($this->returnValue('test_field'));
+      ->willReturn('test_field');
     $this->fieldStorage->expects($this->any())
       ->method('getName')
-      ->will($this->returnValue('field_test'));
+      ->willReturn('field_test');
     $this->fieldStorage->expects($this->any())
       ->method('getSettings')
       ->willReturn([]);
@@ -106,9 +106,9 @@ protected function setUp(): void {
     $this->entityFieldManager->expects($this->any())
       ->method('getFieldStorageDefinitions')
       ->with('test_entity_type')
-      ->will($this->returnValue([
+      ->willReturn([
         $this->fieldStorage->getName() => $this->fieldStorage,
-      ]));
+      ]);
   }
 
   /**
@@ -119,7 +119,7 @@ public function testCalculateDependencies() {
     $target_entity_type = $this->createMock('\Drupal\Core\Entity\EntityTypeInterface');
     $target_entity_type->expects($this->any())
       ->method('getBundleConfigDependency')
-      ->will($this->returnValue(['type' => 'config', 'name' => 'test.test_entity_type.id']));
+      ->willReturn(['type' => 'config', 'name' => 'test.test_entity_type.id']);
 
     $this->entityTypeManager->expects($this->any())
       ->method('getDefinition')
@@ -135,7 +135,7 @@ public function testCalculateDependencies() {
 
     $this->fieldStorage->expects($this->once())
       ->method('getConfigDependencyName')
-      ->will($this->returnValue('field.storage.test_entity_type.test_field'));
+      ->willReturn('field.storage.test_entity_type.test_field');
 
     $field = new FieldConfig([
       'field_name' => $this->fieldStorage->getName(),
@@ -157,12 +157,12 @@ public function testCalculateDependenciesIncorrectBundle() {
     $storage->expects($this->any())
       ->method('load')
       ->with('test_bundle_not_exists')
-      ->will($this->returnValue(NULL));
+      ->willReturn(NULL);
 
     $this->entityTypeManager->expects($this->any())
       ->method('getStorage')
       ->with('bundle_entity_type')
-      ->will($this->returnValue($storage));
+      ->willReturn($storage);
 
     $target_entity_type = new EntityType([
       'id' => 'test_entity_type',
@@ -252,15 +252,15 @@ public function testToArray() {
     $this->entityTypeManager->expects($this->any())
       ->method('getDefinition')
       ->with($this->entityTypeId)
-      ->will($this->returnValue($this->entityType));
+      ->willReturn($this->entityType);
     $this->entityType->expects($this->once())
       ->method('getKey')
       ->with('id')
-      ->will($this->returnValue('id'));
+      ->willReturn('id');
     $this->entityType->expects($this->once())
       ->method('getPropertiesToExport')
       ->with('test_entity_type.test_bundle.field_test')
-      ->will($this->returnValue(array_combine(array_keys($expected), array_keys($expected))));
+      ->willReturn(array_combine(array_keys($expected), array_keys($expected)));
 
     $export = $field->toArray();
     $this->assertEquals($expected, $export);
diff --git a/core/modules/field/tests/src/Unit/FieldStorageConfigAccessControlHandlerTest.php b/core/modules/field/tests/src/Unit/FieldStorageConfigAccessControlHandlerTest.php
index 772c2e7e8e..7ce3c92c7f 100644
--- a/core/modules/field/tests/src/Unit/FieldStorageConfigAccessControlHandlerTest.php
+++ b/core/modules/field/tests/src/Unit/FieldStorageConfigAccessControlHandlerTest.php
@@ -68,11 +68,11 @@ protected function setUp(): void {
     $this->anon
       ->expects($this->any())
       ->method('hasPermission')
-      ->will($this->returnValue(FALSE));
+      ->willReturn(FALSE);
     $this->anon
       ->expects($this->any())
       ->method('id')
-      ->will($this->returnValue(0));
+      ->willReturn(0);
 
     $this->member = $this->createMock(AccountInterface::class);
     $this->member
@@ -84,23 +84,23 @@ protected function setUp(): void {
     $this->member
       ->expects($this->any())
       ->method('id')
-      ->will($this->returnValue(2));
+      ->willReturn(2);
 
     $storageType = $this->createMock(ConfigEntityTypeInterface::class);
     $storageType
       ->expects($this->any())
       ->method('getProvider')
-      ->will($this->returnValue('field'));
+      ->willReturn('field');
     $storageType
       ->expects($this->any())
       ->method('getConfigPrefix')
-      ->will($this->returnValue('field.storage'));
+      ->willReturn('field.storage');
 
     $entityType = $this->createMock(ConfigEntityTypeInterface::class);
     $entityType
       ->expects($this->any())
       ->method('getProvider')
-      ->will($this->returnValue('node'));
+      ->willReturn('node');
     $entityType
       ->expects($this->any())
       ->method('getConfigPrefix')
@@ -110,7 +110,7 @@ protected function setUp(): void {
     $this->moduleHandler
       ->expects($this->any())
       ->method('invokeAll')
-      ->will($this->returnValue([]));
+      ->willReturn([]);
 
     $storage_access_control_handler = new FieldStorageConfigAccessControlHandler($storageType);
     $storage_access_control_handler->setModuleHandler($this->moduleHandler);
diff --git a/core/modules/field/tests/src/Unit/FieldStorageConfigEntityUnitTest.php b/core/modules/field/tests/src/Unit/FieldStorageConfigEntityUnitTest.php
index 184e1f4ac7..2b6cda81ec 100644
--- a/core/modules/field/tests/src/Unit/FieldStorageConfigEntityUnitTest.php
+++ b/core/modules/field/tests/src/Unit/FieldStorageConfigEntityUnitTest.php
@@ -73,14 +73,14 @@ public function testCalculateDependencies() {
     $fieldStorageConfigentityType = $this->createMock('\Drupal\Core\Config\Entity\ConfigEntityTypeInterface');
     $fieldStorageConfigentityType->expects($this->any())
       ->method('getProvider')
-      ->will($this->returnValue('field'));
+      ->willReturn('field');
 
     // Create a mock entity type to attach the field to.
     $attached_entity_type_id = $this->randomMachineName();
     $attached_entity_type = $this->createMock('\Drupal\Core\Entity\EntityTypeInterface');
     $attached_entity_type->expects($this->any())
       ->method('getProvider')
-      ->will($this->returnValue('entity_provider_module'));
+      ->willReturn('entity_provider_module');
 
     // Get definition is called three times. Twice in
     // ConfigEntityBase::addDependency() to get the provider of the field config
diff --git a/core/modules/field_layout/tests/src/Unit/FieldLayoutBuilderTest.php b/core/modules/field_layout/tests/src/Unit/FieldLayoutBuilderTest.php
index 8b074d5a07..431b8c1d35 100644
--- a/core/modules/field_layout/tests/src/Unit/FieldLayoutBuilderTest.php
+++ b/core/modules/field_layout/tests/src/Unit/FieldLayoutBuilderTest.php
@@ -143,6 +143,7 @@ public function testBuildView() {
             '#markup' => 'Test1',
           ],
         ],
+        '#in_preview' => FALSE,
         '#settings' => [
           'label' => '',
         ],
@@ -243,6 +244,7 @@ public function testBuildForm() {
           '#process' => ['\Drupal\Core\Render\Element\RenderElement::processGroup'],
           '#pre_render' => ['\Drupal\Core\Render\Element\RenderElement::preRenderGroup'],
         ],
+        '#in_preview' => FALSE,
         '#settings' => [
           'label' => '',
         ],
diff --git a/core/modules/field_ui/field_ui.services.yml b/core/modules/field_ui/field_ui.services.yml
index 2108f1b1ae..a2e01767e7 100644
--- a/core/modules/field_ui/field_ui.services.yml
+++ b/core/modules/field_ui/field_ui.services.yml
@@ -3,14 +3,14 @@ services:
     class: Drupal\field_ui\Routing\RouteSubscriber
     arguments: ['@entity_type.manager']
     tags:
-     - { name: event_subscriber }
+      - { name: event_subscriber }
   access_check.field_ui.view_mode:
     class: Drupal\field_ui\Access\ViewModeAccessCheck
     arguments: ['@entity_type.manager']
     tags:
-     - { name: access_check, applies_to: _field_ui_view_mode_access }
+      - { name: access_check, applies_to: _field_ui_view_mode_access }
   access_check.field_ui.form_mode:
     class: Drupal\field_ui\Access\FormModeAccessCheck
     arguments: ['@entity_type.manager']
     tags:
-     - { name: access_check, applies_to: _field_ui_form_mode_access }
+      - { name: access_check, applies_to: _field_ui_form_mode_access }
diff --git a/core/modules/field_ui/tests/src/Kernel/EntityDisplayTest.php b/core/modules/field_ui/tests/src/Kernel/EntityDisplayTest.php
index c10ef036ce..b246e0557d 100644
--- a/core/modules/field_ui/tests/src/Kernel/EntityDisplayTest.php
+++ b/core/modules/field_ui/tests/src/Kernel/EntityDisplayTest.php
@@ -39,6 +39,9 @@ class EntityDisplayTest extends KernelTestBase {
     'system',
   ];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->installEntitySchema('entity_test');
diff --git a/core/modules/field_ui/tests/src/Kernel/EntityFormDisplayTest.php b/core/modules/field_ui/tests/src/Kernel/EntityFormDisplayTest.php
index c50e9cf591..19f199b0bb 100644
--- a/core/modules/field_ui/tests/src/Kernel/EntityFormDisplayTest.php
+++ b/core/modules/field_ui/tests/src/Kernel/EntityFormDisplayTest.php
@@ -29,6 +29,9 @@ class EntityFormDisplayTest extends KernelTestBase {
     'text',
   ];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->installEntitySchema('entity_test');
diff --git a/core/modules/file/file.module b/core/modules/file/file.module
index edd6947bbe..d8c9ab3a02 100644
--- a/core/modules/file/file.module
+++ b/core/modules/file/file.module
@@ -665,15 +665,15 @@ function file_save_upload($form_field_name, $validators = [], $destination = FAL
     }
     catch (IniSizeFileException | FormSizeFileException $e) {
       \Drupal::messenger()->addError(t('The file %file could not be saved because it exceeds %maxsize, the maximum allowed size for uploads.', [
-          '%file' => $uploaded_file->getFilename(),
-          '%maxsize' => format_size(Environment::getUploadMaxSize()),
-        ]));
+        '%file' => $uploaded_file->getFilename(),
+        '%maxsize' => format_size(Environment::getUploadMaxSize()),
+      ]));
       $files[$i] = FALSE;
     }
     catch (PartialFileException | NoFileException $e) {
       \Drupal::messenger()->addError(t('The file %file could not be saved because the upload did not complete.', [
-          '%file' => $uploaded_file->getFilename(),
-        ]));
+        '%file' => $uploaded_file->getFilename(),
+      ]));
       $files[$i] = FALSE;
     }
     catch (SymfonyFileException $e) {
diff --git a/core/modules/file/migrations/d6_file.yml b/core/modules/file/migrations/d6_file.yml
index 2ae8f8eb44..51db2fdc6c 100644
--- a/core/modules/file/migrations/d6_file.yml
+++ b/core/modules/file/migrations/d6_file.yml
@@ -11,15 +11,35 @@ source:
   constants:
     # The tool configuring this migration must set source_base_path. It
     # represents the fully qualified path relative to which URIs in the files
-    # table are specified, and must end with a /. See source_full_path
-    # configuration in this migration's process pipeline as an example.
+    # table are specified. This can be a local file directory containing the
+    # source site, e.g. /var/www/docroot, or the site address,
+    # e.g. https://example.com. This value will be concatenated with the file
+    # path (typically sites/default/files) and used as the source location for
+    # the files.
+    #
+    # Suppose that the source files have been moved by other means to a location
+    # on the destination site.
+    # Source site:
+    #   Location of files: /var/www/html/legacy/sites/default/files
+    #   Public scheme: sites/default/files
+    # In this example, source_base_path should be '/var/www/html/legacy'.
+    #
+    # Suppose that the source site is a multisite installation at
+    # https://example.com, and you plan to copy the files from there.
+    # Source site:
+    #   Location of files: https://example.com/sites/example.com/files
+    #   Public scheme: sites/example.com/files
+    # In this example, source_base_path should be 'https://example.com'.
+    #
+    # See the configuration for the source_full_path property in the process
+    # section below.
     source_base_path: ''
 process:
-    # If you are using both this migration and d6_user_picture_file in a custom
-    # migration and executing migrations incrementally, it is strongly
-    # recommended that you remove the fid mapping to avoid potential ID
-    # conflicts. For that reason, this mapping is commented out by default.
-    # fid: fid
+  # If you are using both this migration and d6_user_picture_file in a custom
+  # migration and executing migrations incrementally, it is strongly
+  # recommended that you remove the fid mapping to avoid potential ID conflicts.
+  # For that reason, this mapping is commented out by default.
+  # fid: fid
   filename: filename
   source_full_path:
     -
diff --git a/core/modules/file/migrations/d7_file.yml b/core/modules/file/migrations/d7_file.yml
index 3ead3e5ed4..4c4b54ff52 100644
--- a/core/modules/file/migrations/d7_file.yml
+++ b/core/modules/file/migrations/d7_file.yml
@@ -12,8 +12,28 @@ source:
   constants:
     # The tool configuring this migration must set source_base_path. It
     # represents the fully qualified path relative to which URIs in the files
-    # table are specified, and must end with a /. See source_full_path
-    # configuration in this migration's process pipeline as an example.
+    # table are specified. This can be a local file directory containing the
+    # source site, e.g. /var/www/docroot, or the site address,
+    # e.g. https://example.com. This value will be concatenated with the file
+    # path (typically sites/default/files) and used as the source location for
+    # the files.
+    #
+    # Suppose that the source files have been moved by other means to a location
+    # on the destination site.
+    # Source site:
+    #   Location of files: /var/www/html/legacy/sites/default/files
+    #   Public scheme: sites/default/files
+    # In this example, source_base_path should be '/var/www/html/legacy'.
+    #
+    # Suppose that the source site is a multisite installation at
+    # https://example.com, and you plan to copy the files from there.
+    # Source site:
+    #   Location of files: https://example.com/sites/example.com/files
+    #   Public scheme: sites/example.com/files
+    # In this example, source_base_path should be 'https://example.com'.
+    #
+    # See the configuration for the source_full_path property in the process
+    # section below.
     source_base_path: ''
 process:
   # If you are using this file to build a custom migration consider removing
diff --git a/core/modules/file/src/FileViewsData.php b/core/modules/file/src/FileViewsData.php
index aad5ac23a4..cc69d7e053 100644
--- a/core/modules/file/src/FileViewsData.php
+++ b/core/modules/file/src/FileViewsData.php
@@ -50,7 +50,7 @@ public function getViewsData() {
         'default_formatter' => 'file_extension',
         'id' => 'field',
         'click sortable' => FALSE,
-       ],
+      ],
     ];
 
     $data['file_managed']['filesize']['field']['default_formatter'] = 'file_size';
@@ -252,7 +252,7 @@ public function getViewsData() {
       'help' => $this->t('The module managing this file relationship.'),
       'field' => [
         'id' => 'standard',
-       ],
+      ],
       'filter' => [
         'id' => 'string',
       ],
@@ -268,7 +268,7 @@ public function getViewsData() {
       'help' => $this->t('The type of entity that is related to the file.'),
       'field' => [
         'id' => 'standard',
-       ],
+      ],
       'filter' => [
         'id' => 'string',
       ],
@@ -300,7 +300,7 @@ public function getViewsData() {
       'help' => $this->t('The number of times the file is used by this entity.'),
       'field' => [
         'id' => 'numeric',
-       ],
+      ],
       'filter' => [
         'id' => 'numeric',
       ],
diff --git a/core/modules/file/src/Plugin/Field/FieldFormatter/TableFormatter.php b/core/modules/file/src/Plugin/Field/FieldFormatter/TableFormatter.php
index e6a8db6038..3c0aa914fa 100644
--- a/core/modules/file/src/Plugin/Field/FieldFormatter/TableFormatter.php
+++ b/core/modules/file/src/Plugin/Field/FieldFormatter/TableFormatter.php
@@ -24,7 +24,7 @@ public function viewElements(FieldItemListInterface $items, $langcode) {
     $elements = [];
 
     if ($files = $this->getEntitiesToView($items, $langcode)) {
-      $header = [t('Attachment'), t('Size')];
+      $header = [$this->t('Attachment'), $this->t('Size')];
       $rows = [];
       foreach ($files as $file) {
         $item = $file->_referringItem;
diff --git a/core/modules/file/src/Plugin/Field/FieldType/FileItem.php b/core/modules/file/src/Plugin/Field/FieldType/FileItem.php
index 758d483e01..dc37bf0350 100644
--- a/core/modules/file/src/Plugin/Field/FieldType/FileItem.php
+++ b/core/modules/file/src/Plugin/Field/FieldType/FileItem.php
@@ -12,6 +12,7 @@
 use Drupal\Core\File\FileSystemInterface;
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\StreamWrapper\StreamWrapperInterface;
+use Drupal\Core\StringTranslation\TranslatableMarkup;
 use Drupal\Core\TypedData\DataDefinition;
 
 /**
@@ -96,11 +97,11 @@ public static function propertyDefinitions(FieldStorageDefinitionInterface $fiel
     $properties = parent::propertyDefinitions($field_definition);
 
     $properties['display'] = DataDefinition::create('boolean')
-      ->setLabel(t('Display'))
-      ->setDescription(t('Flag to control whether this file should be displayed when viewing content'));
+      ->setLabel(new TranslatableMarkup('Display'))
+      ->setDescription(new TranslatableMarkup('Flag to control whether this file should be displayed when viewing content'));
 
     $properties['description'] = DataDefinition::create('string')
-      ->setLabel(t('Description'));
+      ->setLabel(new TranslatableMarkup('Description'));
 
     return $properties;
   }
@@ -115,15 +116,15 @@ public function storageSettingsForm(array &$form, FormStateInterface $form_state
 
     $element['display_field'] = [
       '#type' => 'checkbox',
-      '#title' => t('Enable <em>Display</em> field'),
+      '#title' => $this->t('Enable <em>Display</em> field'),
       '#default_value' => $this->getSetting('display_field'),
-      '#description' => t('The display option allows users to choose if a file should be shown when viewing the content.'),
+      '#description' => $this->t('The display option allows users to choose if a file should be shown when viewing the content.'),
     ];
     $element['display_default'] = [
       '#type' => 'checkbox',
-      '#title' => t('Files displayed by default'),
+      '#title' => $this->t('Files displayed by default'),
       '#default_value' => $this->getSetting('display_default'),
-      '#description' => t('This setting only has an effect if the display option is enabled.'),
+      '#description' => $this->t('This setting only has an effect if the display option is enabled.'),
       '#states' => [
         'visible' => [
           ':input[name="settings[display_field]"]' => ['checked' => TRUE],
@@ -134,10 +135,10 @@ public function storageSettingsForm(array &$form, FormStateInterface $form_state
     $scheme_options = \Drupal::service('stream_wrapper_manager')->getNames(StreamWrapperInterface::WRITE_VISIBLE);
     $element['uri_scheme'] = [
       '#type' => 'radios',
-      '#title' => t('Upload destination'),
+      '#title' => $this->t('Upload destination'),
       '#options' => $scheme_options,
       '#default_value' => $this->getSetting('uri_scheme'),
-      '#description' => t('Select where the final files should be stored. Private file storage has significantly more overhead than public files, but allows restricted access to files within this field.'),
+      '#description' => $this->t('Select where the final files should be stored. Private file storage has significantly more overhead than public files, but allows restricted access to files within this field.'),
       '#disabled' => $has_data,
     ];
 
@@ -153,9 +154,9 @@ public function fieldSettingsForm(array $form, FormStateInterface $form_state) {
 
     $element['file_directory'] = [
       '#type' => 'textfield',
-      '#title' => t('File directory'),
+      '#title' => $this->t('File directory'),
       '#default_value' => $settings['file_directory'],
-      '#description' => t('Optional subdirectory within the upload destination where files will be stored. Do not include preceding or trailing slashes.'),
+      '#description' => $this->t('Optional subdirectory within the upload destination where files will be stored. Do not include preceding or trailing slashes.'),
       '#element_validate' => [[static::class, 'validateDirectory']],
       '#weight' => 3,
     ];
@@ -164,7 +165,7 @@ public function fieldSettingsForm(array $form, FormStateInterface $form_state) {
     $extensions = str_replace(' ', ', ', $settings['file_extensions']);
     $element['file_extensions'] = [
       '#type' => 'textfield',
-      '#title' => t('Allowed file extensions'),
+      '#title' => $this->t('Allowed file extensions'),
       '#default_value' => $extensions,
       '#description' => $this->t("Separate extensions with a comma or space. Each extension can contain alphanumeric characters, '.', and '_', and should start and end with an alphanumeric character."),
       '#element_validate' => [[static::class, 'validateExtensions']],
@@ -177,9 +178,9 @@ public function fieldSettingsForm(array $form, FormStateInterface $form_state) {
 
     $element['max_filesize'] = [
       '#type' => 'textfield',
-      '#title' => t('Maximum upload size'),
+      '#title' => $this->t('Maximum upload size'),
       '#default_value' => $settings['max_filesize'],
-      '#description' => t('Enter a value like "512" (bytes), "80 KB" (kilobytes) or "50 MB" (megabytes) in order to restrict the allowed file size. If left empty the file sizes will be limited only by PHP\'s maximum post and file upload sizes (current limit <strong>%limit</strong>).', ['%limit' => format_size(Environment::getUploadMaxSize())]),
+      '#description' => $this->t('Enter a value like "512" (bytes), "80 KB" (kilobytes) or "50 MB" (megabytes) in order to restrict the allowed file size. If left empty the file sizes will be limited only by PHP\'s maximum post and file upload sizes (current limit <strong>%limit</strong>).', ['%limit' => format_size(Environment::getUploadMaxSize())]),
       '#size' => 10,
       '#element_validate' => [[static::class, 'validateMaxFilesize']],
       '#weight' => 5,
@@ -187,9 +188,9 @@ public function fieldSettingsForm(array $form, FormStateInterface $form_state) {
 
     $element['description_field'] = [
       '#type' => 'checkbox',
-      '#title' => t('Enable <em>Description</em> field'),
+      '#title' => $this->t('Enable <em>Description</em> field'),
       '#default_value' => $settings['description_field'] ?? '',
-      '#description' => t('The description field allows users to enter a description about the uploaded file.'),
+      '#description' => $this->t('The description field allows users to enter a description about the uploaded file.'),
       '#weight' => 11,
     ];
 
@@ -228,7 +229,7 @@ public static function validateExtensions($element, FormStateInterface $form_sta
       $extension_array = array_unique(array_filter(explode(' ', $extensions)));
       $extensions = implode(' ', $extension_array);
       if (!preg_match('/^([a-z0-9]+([._][a-z0-9])* ?)+$/', $extensions)) {
-        $form_state->setError($element, t("The list of allowed extensions is not valid. Allowed characters are a-z, 0-9, '.', and '_'. The first and last characters cannot be '.' or '_', and these two characters cannot appear next to each other. Separate extensions with a comma or space."));
+        $form_state->setError($element, new TranslatableMarkup("The list of allowed extensions is not valid. Allowed characters are a-z, 0-9, '.', and '_'. The first and last characters cannot be '.' or '_', and these two characters cannot appear next to each other. Separate extensions with a comma or space."));
       }
       else {
         $form_state->setValueForElement($element, $extensions);
@@ -239,7 +240,8 @@ public static function validateExtensions($element, FormStateInterface $form_sta
       if (!in_array('txt', $extension_array, TRUE) && !\Drupal::config('system.file')->get('allow_insecure_uploads')) {
         foreach ($extension_array as $extension) {
           if (preg_match(FileSystemInterface::INSECURE_EXTENSION_REGEX, 'test.' . $extension)) {
-            $form_state->setError($element, t('Add %txt_extension to the list of allowed extensions to securely upload files with a %extension extension. The %txt_extension extension will then be added automatically.', ['%extension' => $extension, '%txt_extension' => 'txt']));
+            $form_state->setError($element, new TranslatableMarkup('Add %txt_extension to the list of allowed extensions to securely upload files with a %extension extension. The %txt_extension extension will then be added automatically.', ['%extension' => $extension, '%txt_extension' => 'txt']));
+
             break;
           }
         }
@@ -260,7 +262,7 @@ public static function validateMaxFilesize($element, FormStateInterface $form_st
     $element['#value'] = trim($element['#value']);
     $form_state->setValue(['settings', 'max_filesize'], $element['#value']);
     if (!empty($element['#value']) && !Bytes::validate($element['#value'])) {
-      $form_state->setError($element, t('The "@name" option must contain a valid value. You may either leave the text field empty or enter a string like "512" (bytes), "80 KB" (kilobytes) or "50 MB" (megabytes).', ['@name' => $element['#title']]));
+      $form_state->setError($element, new TranslatableMarkup('The "@name" option must contain a valid value. You may either leave the text field empty or enter a string like "512" (bytes), "80 KB" (kilobytes) or "50 MB" (megabytes).', ['@name' => $element['#title']]));
     }
   }
 
diff --git a/core/modules/file/src/Plugin/Field/FieldWidget/FileWidget.php b/core/modules/file/src/Plugin/Field/FieldWidget/FileWidget.php
index 354fed1cf7..70bd4a7166 100644
--- a/core/modules/file/src/Plugin/Field/FieldWidget/FileWidget.php
+++ b/core/modules/file/src/Plugin/Field/FieldWidget/FileWidget.php
@@ -10,6 +10,7 @@
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\Render\Element;
 use Drupal\Core\Render\ElementInfoManagerInterface;
+use Drupal\Core\StringTranslation\TranslatableMarkup;
 use Drupal\file\Element\ManagedFile;
 use Drupal\file\Entity\File;
 use Symfony\Component\DependencyInjection\ContainerInterface;
@@ -63,13 +64,13 @@ public static function defaultSettings() {
   public function settingsForm(array $form, FormStateInterface $form_state) {
     $element['progress_indicator'] = [
       '#type' => 'radios',
-      '#title' => t('Progress indicator'),
+      '#title' => $this->t('Progress indicator'),
       '#options' => [
-        'throbber' => t('Throbber'),
-        'bar' => t('Bar with progress meter'),
+        'throbber' => $this->t('Throbber'),
+        'bar' => $this->t('Bar with progress meter'),
       ],
       '#default_value' => $this->getSetting('progress_indicator'),
-      '#description' => t('The throbber display does not show the status of uploads but takes up less space. The progress bar is helpful for monitoring progress on large uploads.'),
+      '#description' => $this->t('The throbber display does not show the status of uploads but takes up less space. The progress bar is helpful for monitoring progress on large uploads.'),
       '#weight' => 16,
       '#access' => file_progress_implementation(),
     ];
@@ -81,7 +82,7 @@ public function settingsForm(array $form, FormStateInterface $form_state) {
    */
   public function settingsSummary() {
     $summary = [];
-    $summary[] = t('Progress indicator: @progress_indicator', ['@progress_indicator' => $this->getSetting('progress_indicator')]);
+    $summary[] = $this->t('Progress indicator: @progress_indicator', ['@progress_indicator' => $this->getSetting('progress_indicator')]);
     return $summary;
   }
 
@@ -137,7 +138,7 @@ protected function formMultipleElements(FieldItemListInterface $items, array &$f
           // defined by widget.
           $element['_weight'] = [
             '#type' => 'weight',
-            '#title' => t('Weight for row @number', ['@number' => $delta + 1]),
+            '#title' => $this->t('Weight for row @number', ['@number' => $delta + 1]),
             '#title_display' => 'invisible',
             // Note: this 'delta' is the FAPI #type 'weight' element's property.
             '#delta' => $max,
@@ -193,7 +194,7 @@ protected function formMultipleElements(FieldItemListInterface $items, array &$f
       // Add some properties that will eventually be added to the file upload
       // field. These are added here so that they may be referenced easily
       // through a hook_form_alter().
-      $elements['#file_upload_title'] = t('Add a new file');
+      $elements['#file_upload_title'] = $this->t('Add a new file');
       $elements['#file_upload_description'] = [
         '#theme' => 'file_upload_help',
         '#description' => '',
@@ -368,7 +369,7 @@ public static function validateMultipleCount($element, FormStateInterface $form_
         '@count' => $total_uploaded_count,
         '%list' => implode(', ', $removed_names),
       ];
-      $message = t('Field %field can only hold @max values but there were @count uploaded. The following files have been omitted as a result: %list.', $args);
+      $message = new TranslatableMarkup('Field %field can only hold @max values but there were @count uploaded. The following files have been omitted as a result: %list.', $args);
       \Drupal::messenger()->addWarning($message);
       $values['fids'] = array_slice($values['fids'], 0, $keep);
       NestedArray::setValue($form_state->getValues(), $element['#parents'], $values);
@@ -391,7 +392,7 @@ public static function process($element, FormStateInterface $form_state, $form)
     if ($element['#display_field']) {
       $element['display'] = [
         '#type' => empty($item['fids']) ? 'hidden' : 'checkbox',
-        '#title' => t('Include file in display'),
+        '#title' => new TranslatableMarkup('Include file in display'),
         '#attributes' => ['class' => ['file-display']],
       ];
       if (isset($item['display'])) {
@@ -413,10 +414,10 @@ public static function process($element, FormStateInterface $form_state, $form)
       $config = \Drupal::config('file.settings');
       $element['description'] = [
         '#type' => $config->get('description.type'),
-        '#title' => t('Description'),
+        '#title' => new TranslatableMarkup('Description'),
         '#value' => $item['description'] ?? '',
         '#maxlength' => $config->get('description.length'),
-        '#description' => t('The description may be used as the label of the link to the file.'),
+        '#description' => new TranslatableMarkup('The description may be used as the label of the link to the file.'),
       ];
     }
 
@@ -483,7 +484,7 @@ public static function processMultiple($element, FormStateInterface $form_state,
         $description = static::getDescriptionFromElement($element[$key]);
         $element[$key]['_weight'] = [
           '#type' => 'weight',
-          '#title' => $description ? t('Weight for @title', ['@title' => $description]) : t('Weight for new file'),
+          '#title' => $description ? new TranslatableMarkup('Weight for @title', ['@title' => $description]) : new TranslatableMarkup('Weight for new file'),
           '#title_display' => 'invisible',
           '#delta' => $count,
           '#default_value' => $delta,
diff --git a/core/modules/file/src/Plugin/migrate/source/d6/File.php b/core/modules/file/src/Plugin/migrate/source/d6/File.php
index 1332a0c9cf..8842cb0317 100644
--- a/core/modules/file/src/Plugin/migrate/source/d6/File.php
+++ b/core/modules/file/src/Plugin/migrate/source/d6/File.php
@@ -8,6 +8,32 @@
 /**
  * Drupal 6 file source from database.
  *
+ * Available configuration keys:
+ * - site_path: (optional) The path to the site directory relative to Drupal
+ *   root. Defaults to 'sites/default'. This value is ignored if the
+ *   'file_directory_path' variable is set in the source Drupal database.
+ *
+ * Example:
+ *
+ * @code
+ * source:
+ *   plugin: d6_file
+ *   site_path: sites/example
+ * @endcode
+ *
+ * In this example, public file values are retrieved from the source database.
+ * The site path is specified because it's not the default one (sites/default).
+ * The final path to the public files will be "sites/example/files/", assuming
+ * the 'file_directory_path' variable is not set in the source database.
+ *
+ * For complete example, refer to the d6_file.yml migration.
+ *
+ * For additional configuration keys, refer to the parent classes.
+ *
+ * @see \Drupal\migrate\Plugin\migrate\source\SqlBase
+ * @see \Drupal\migrate\Plugin\migrate\source\SourcePluginBase
+ * @see d6_file.yml
+ *
  * @MigrateSource(
  *   id = "d6_file",
  *   source_module = "system"
diff --git a/core/modules/file/src/Plugin/migrate/source/d6/Upload.php b/core/modules/file/src/Plugin/migrate/source/d6/Upload.php
index 60b738b6bf..1f93e0fd64 100644
--- a/core/modules/file/src/Plugin/migrate/source/d6/Upload.php
+++ b/core/modules/file/src/Plugin/migrate/source/d6/Upload.php
@@ -8,6 +8,11 @@
 /**
  * Drupal 6 upload source from database.
  *
+ * For available configuration keys, refer to the parent classes.
+ *
+ * @see \Drupal\migrate\Plugin\migrate\source\SqlBase
+ * @see \Drupal\migrate\Plugin\migrate\source\SourcePluginBase
+ *
  * @MigrateSource(
  *   id = "d6_upload",
  *   source_module = "upload"
diff --git a/core/modules/file/src/Plugin/migrate/source/d6/UploadInstance.php b/core/modules/file/src/Plugin/migrate/source/d6/UploadInstance.php
index ef3c0d720f..235c68b7cf 100644
--- a/core/modules/file/src/Plugin/migrate/source/d6/UploadInstance.php
+++ b/core/modules/file/src/Plugin/migrate/source/d6/UploadInstance.php
@@ -10,6 +10,11 @@
 /**
  * Drupal 6 upload instance source from database.
  *
+ * For available configuration keys, refer to the parent classes.
+ *
+ * @see \Drupal\migrate\Plugin\migrate\source\SqlBase
+ * @see \Drupal\migrate\Plugin\migrate\source\SourcePluginBase
+ *
  * @MigrateSource(
  *   id = "d6_upload_instance",
  *   source_module = "upload"
diff --git a/core/modules/file/src/Plugin/migrate/source/d7/File.php b/core/modules/file/src/Plugin/migrate/source/d7/File.php
index cd285749e2..1a754ed5d3 100644
--- a/core/modules/file/src/Plugin/migrate/source/d7/File.php
+++ b/core/modules/file/src/Plugin/migrate/source/d7/File.php
@@ -8,6 +8,29 @@
 /**
  * Drupal 7 file source from database.
  *
+ * Available configuration keys:
+ * - scheme: (optional) The scheme of the files to get from the source, for
+ *   example, 'public' or 'private'. Can be a string or an array of schemes.
+ *   The 'temporary' scheme is not supported. If omitted, all files in
+ *   supported schemes are retrieved.
+ *
+ * Example:
+ *
+ * @code
+ * source:
+ *   plugin: d7_file
+ *   scheme: public
+ * @endcode
+ *
+ * In this example, public file values are retrieved from the source database.
+ * For complete example, refer to the d7_file.yml migration.
+ *
+ * For additional configuration keys, refer to the parent classes.
+ *
+ * @see \Drupal\migrate\Plugin\migrate\source\SqlBase
+ * @see \Drupal\migrate\Plugin\migrate\source\SourcePluginBase
+ * @see d7_file.yml
+ *
  * @MigrateSource(
  *   id = "d7_file",
  *   source_module = "file"
diff --git a/core/modules/file/tests/file_test/file_test.module b/core/modules/file/tests/file_test/file_test.module
index 6551ae3274..22fc35d899 100644
--- a/core/modules/file/tests/file_test/file_test.module
+++ b/core/modules/file/tests/file_test/file_test.module
@@ -63,7 +63,7 @@ function file_test_get_calls($op) {
 /**
  * Get an array with the calls for all hooks.
  *
- * @return
+ * @return array
  *   An array keyed by hook name ('load', 'validate', 'download', 'insert',
  *   'update', 'copy', 'move', 'delete') with values being arrays of parameters
  *   passed to each call.
diff --git a/core/modules/file/tests/file_test/file_test.routing.yml b/core/modules/file/tests/file_test/file_test.routing.yml
index 0505615a4e..20af642f92 100644
--- a/core/modules/file/tests/file_test/file_test.routing.yml
+++ b/core/modules/file/tests/file_test/file_test.routing.yml
@@ -10,3 +10,9 @@ file.save_upload_from_form_test:
     _form: '\Drupal\file_test\Form\FileTestSaveUploadFromForm'
   requirements:
     _access: 'TRUE'
+file.required_test:
+  path: '/file-test/upload_required'
+  defaults:
+    _form: '\Drupal\file_test\Form\FileRequiredTestForm'
+  requirements:
+    _access: 'TRUE'
diff --git a/core/modules/file/tests/file_test/src/Form/FileRequiredTestForm.php b/core/modules/file/tests/file_test/src/Form/FileRequiredTestForm.php
new file mode 100644
index 0000000000..c6dca9b0f6
--- /dev/null
+++ b/core/modules/file/tests/file_test/src/Form/FileRequiredTestForm.php
@@ -0,0 +1,28 @@
+<?php
+
+namespace Drupal\file_test\Form;
+
+use Drupal\Core\Form\FormStateInterface;
+
+/**
+ * File required test form class.
+ */
+class FileRequiredTestForm extends FileTestForm {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getFormId() {
+    return '_file_required_test_form';
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function buildForm(array $form, FormStateInterface $form_state) {
+    $form = parent::buildForm($form, $form_state);
+    $form['file_test_upload']['#required'] = TRUE;
+    return $form;
+  }
+
+}
diff --git a/core/modules/file/tests/src/Functional/DownloadTest.php b/core/modules/file/tests/src/Functional/DownloadTest.php
index 0a2fdb9ba4..72d75abe35 100644
--- a/core/modules/file/tests/src/Functional/DownloadTest.php
+++ b/core/modules/file/tests/src/Functional/DownloadTest.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\Tests\file\Functional;
 
+use Drupal\Core\Database\Database;
 use Drupal\Core\File\FileSystemInterface;
 
 /**
@@ -23,8 +24,20 @@ class DownloadTest extends FileManagedTestBase {
    */
   protected $fileUrlGenerator;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
+
+    // This test currently frequently causes the SQLite database to lock, so
+    // skip the test on SQLite until the issue can be resolved.
+    // @todo Fix root cause and re-enable in
+    //   https://www.drupal.org/project/drupal/issues/3311587
+    if (Database::getConnection()->driver() === 'sqlite') {
+      $this->markTestSkipped('Test frequently causes a locked database on SQLite');
+    }
+
     $this->fileUrlGenerator = $this->container->get('file_url_generator');
     // Clear out any hook calls.
     file_test_reset();
diff --git a/core/modules/file/tests/src/Functional/FileFieldWidgetTest.php b/core/modules/file/tests/src/Functional/FileFieldWidgetTest.php
index ea1843f855..e096d19f69 100644
--- a/core/modules/file/tests/src/Functional/FileFieldWidgetTest.php
+++ b/core/modules/file/tests/src/Functional/FileFieldWidgetTest.php
@@ -399,19 +399,15 @@ public function testWidgetElement() {
 
     $this->drupalGet('node/add/article');
 
-    $elements = $this->xpath($xpath);
-
     // If the field has no item, the table should not be visible.
-    $this->assertCount(0, $elements);
+    $this->assertSession()->elementNotExists('xpath', $xpath);
 
     // Upload a file.
     $edit['files[' . $field_name . '_0][]'] = $this->container->get('file_system')->realpath($file->getFileUri());
     $this->submitForm($edit, "{$field_name}_0_upload_button");
 
-    $elements = $this->xpath($xpath);
-
     // If the field has at least one item, the table should be visible.
-    $this->assertCount(1, $elements);
+    $this->assertSession()->elementsCount('xpath', $xpath, 1);
 
     // Test for AJAX error when using progress bar on file field widget.
     $http_client = $this->getHttpClient();
diff --git a/core/modules/file/tests/src/Functional/FileListingTest.php b/core/modules/file/tests/src/Functional/FileListingTest.php
index ef4d78c5b4..ca5534ca5f 100644
--- a/core/modules/file/tests/src/Functional/FileListingTest.php
+++ b/core/modules/file/tests/src/Functional/FileListingTest.php
@@ -32,6 +32,9 @@ class FileListingTest extends FileFieldTestBase {
    */
   protected $baseUser;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
@@ -137,8 +140,7 @@ public function testFileListingPages() {
     $usage = $this->sumUsages($file_usage->listUsage($file));
     $this->assertSession()->responseContains('admin/content/files/usage/' . $file->id() . '">' . $usage);
 
-    $result = $this->xpath("//td[contains(@class, 'views-field-status') and contains(text(), :value)]", [':value' => 'Temporary']);
-    $this->assertCount(1, $result, 'Unused file marked as temporary.');
+    $this->assertSession()->elementsCount('xpath', "//td[contains(@class, 'views-field-status') and contains(text(), 'Temporary')]", 1);
 
     // Test file usage page.
     foreach ($nodes as $node) {
diff --git a/core/modules/file/tests/src/Functional/FileManagedTestBase.php b/core/modules/file/tests/src/Functional/FileManagedTestBase.php
index 17f0e1a91a..689dd3b7b1 100644
--- a/core/modules/file/tests/src/Functional/FileManagedTestBase.php
+++ b/core/modules/file/tests/src/Functional/FileManagedTestBase.php
@@ -20,6 +20,9 @@ abstract class FileManagedTestBase extends BrowserTestBase {
    */
   protected static $modules = ['file_test', 'file'];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     // Clear out any hook calls.
diff --git a/core/modules/file/tests/src/Functional/FilePrivateTest.php b/core/modules/file/tests/src/Functional/FilePrivateTest.php
index c1f4b3d236..9eb41af8f6 100644
--- a/core/modules/file/tests/src/Functional/FilePrivateTest.php
+++ b/core/modules/file/tests/src/Functional/FilePrivateTest.php
@@ -25,6 +25,9 @@ class FilePrivateTest extends FileFieldTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     node_access_test_add_field(NodeType::load('article'));
diff --git a/core/modules/file/tests/src/Functional/RemoteFileSaveUploadTest.php b/core/modules/file/tests/src/Functional/RemoteFileSaveUploadTest.php
index 65686d22ae..bce058f199 100644
--- a/core/modules/file/tests/src/Functional/RemoteFileSaveUploadTest.php
+++ b/core/modules/file/tests/src/Functional/RemoteFileSaveUploadTest.php
@@ -21,6 +21,9 @@ class RemoteFileSaveUploadTest extends SaveUploadTest {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->config('system.file')->set('default_scheme', 'dummy-remote')->save();
diff --git a/core/modules/file/tests/src/Functional/SaveUploadTest.php b/core/modules/file/tests/src/Functional/SaveUploadTest.php
index 5fb1f1a811..4a70d2d1c5 100644
--- a/core/modules/file/tests/src/Functional/SaveUploadTest.php
+++ b/core/modules/file/tests/src/Functional/SaveUploadTest.php
@@ -59,6 +59,9 @@ class SaveUploadTest extends FileManagedTestBase {
    */
   protected $imageExtension;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $account = $this->drupalCreateUser(['access site reports']);
@@ -463,9 +466,9 @@ public function testHandleFileMunge() {
     // extensions.
     $extensions = 'foo ' . $this->imageExtension;
     $edit = [
-        'files[file_test_upload]' => \Drupal::service('file_system')->realpath($this->image->getFileUri()),
-        'extensions' => $extensions,
-      ];
+      'files[file_test_upload]' => \Drupal::service('file_system')->realpath($this->image->getFileUri()),
+      'extensions' => $extensions,
+    ];
 
     $this->drupalGet('file-test/upload');
     $this->submitForm($edit, 'Submit');
@@ -505,9 +508,9 @@ public function testHandleFileMunge() {
 
     $extensions = 'php ' . $this->imageExtension;
     $edit = [
-        'files[file_test_upload]' => \Drupal::service('file_system')->realpath($this->image->getFileUri()),
-        'extensions' => $extensions,
-      ];
+      'files[file_test_upload]' => \Drupal::service('file_system')->realpath($this->image->getFileUri()),
+      'extensions' => $extensions,
+    ];
 
     $this->drupalGet('file-test/upload');
     $this->submitForm($edit, 'Submit');
@@ -729,4 +732,26 @@ public function testInvalidUtf8FilenameUpload() {
     $this->assertFileDoesNotExist('temporary://' . $filename);
   }
 
+  /**
+   * Tests the file_save_upload() function when the field is required.
+   */
+  public function testRequired() {
+    // Reset the hook counters to get rid of the 'load' we just called.
+    file_test_reset();
+
+    // Confirm the field is required.
+    $this->drupalGet('file-test/upload_required');
+    $this->submitForm([], 'Submit');
+    $this->assertSession()->statusCodeEquals(200);
+    $this->assertSession()->responseContains('field is required');
+
+    // Confirm that uploading another file works.
+    $image = current($this->drupalGetTestFiles('image'));
+    $edit = ['files[file_test_upload]' => \Drupal::service('file_system')->realpath($image->uri)];
+    $this->drupalGet('file-test/upload_required');
+    $this->submitForm($edit, 'Submit');
+    $this->assertSession()->statusCodeEquals(200);
+    $this->assertSession()->responseContains('You WIN!');
+  }
+
 }
diff --git a/core/modules/file/tests/src/Kernel/FileItemTest.php b/core/modules/file/tests/src/Kernel/FileItemTest.php
index a09cb5580a..ff04101681 100644
--- a/core/modules/file/tests/src/Kernel/FileItemTest.php
+++ b/core/modules/file/tests/src/Kernel/FileItemTest.php
@@ -40,6 +40,9 @@ class FileItemTest extends FieldKernelTestBase {
    */
   protected $directory;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/file/tests/src/Kernel/FileManagedUnitTestBase.php b/core/modules/file/tests/src/Kernel/FileManagedUnitTestBase.php
index 5b148a06dd..4441fd333f 100644
--- a/core/modules/file/tests/src/Kernel/FileManagedUnitTestBase.php
+++ b/core/modules/file/tests/src/Kernel/FileManagedUnitTestBase.php
@@ -21,6 +21,9 @@ abstract class FileManagedUnitTestBase extends KernelTestBase {
    */
   protected static $modules = ['file_test', 'file', 'system', 'field', 'user'];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     // Clear out any hook calls.
diff --git a/core/modules/file/tests/src/Kernel/SpaceUsedTest.php b/core/modules/file/tests/src/Kernel/SpaceUsedTest.php
index f7e1ee7b8f..f8c03c0696 100644
--- a/core/modules/file/tests/src/Kernel/SpaceUsedTest.php
+++ b/core/modules/file/tests/src/Kernel/SpaceUsedTest.php
@@ -12,6 +12,9 @@
  */
 class SpaceUsedTest extends FileManagedUnitTestBase {
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/file/tests/src/Kernel/ValidatorTest.php b/core/modules/file/tests/src/Kernel/ValidatorTest.php
index 27ad4b9df1..a611ee48af 100644
--- a/core/modules/file/tests/src/Kernel/ValidatorTest.php
+++ b/core/modules/file/tests/src/Kernel/ValidatorTest.php
@@ -25,6 +25,9 @@ class ValidatorTest extends FileManagedUnitTestBase {
    */
   protected $nonImage;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/filter/filter.filter_html.admin.js b/core/modules/filter/filter.filter_html.admin.js
index 260f98ce70..5cc781beb3 100644
--- a/core/modules/filter/filter.filter_html.admin.js
+++ b/core/modules/filter/filter.filter_html.admin.js
@@ -6,8 +6,9 @@
 (function ($, Drupal, document) {
   if (Drupal.filterConfiguration) {
     /**
-     * Implement a live setting parser to prevent text editors from automatically
-     * enabling buttons that are not allowed by this filter's configuration.
+     * Implement a live setting parser to prevent text editors from
+     * automatically enabling buttons that are not allowed by this filter's
+     * configuration.
      *
      * @namespace
      */
@@ -202,8 +203,13 @@
               //   https://www.drupal.org/node/2567801 lands.
               filterRule.restrictedTags.allowed.attributes =
                 featureRule.required.attributes.slice(0);
-              filterRule.restrictedTags.allowed.classes =
-                featureRule.required.classes.slice(0);
+              if (
+                userAllowedTags[tag] !== undefined &&
+                userAllowedTags[tag].restrictedTags.allowed.classes[0] !== ''
+              ) {
+                filterRule.restrictedTags.allowed.classes =
+                  featureRule.required.classes.slice(0);
+              }
               editorRequiredTags[tag] = filterRule;
             }
             // The tag is already allowed, add any additionally allowed
@@ -214,10 +220,15 @@
                 ...filterRule.restrictedTags.allowed.attributes,
                 ...featureRule.required.attributes,
               ];
-              filterRule.restrictedTags.allowed.classes = [
-                ...filterRule.restrictedTags.allowed.classes,
-                ...featureRule.required.classes,
-              ];
+              if (
+                userAllowedTags[tag] !== undefined &&
+                userAllowedTags[tag].restrictedTags.allowed.classes[0] !== ''
+              ) {
+                filterRule.restrictedTags.allowed.classes = [
+                  ...filterRule.restrictedTags.allowed.classes,
+                  ...featureRule.required.classes,
+                ];
+              }
             }
           }
         }
@@ -343,6 +354,7 @@
     _generateSetting(tags) {
       return Object.keys(tags).reduce((setting, tag) => {
         const rule = tags[tag];
+        const allowedClasses = rule.restrictedTags.allowed.classes;
 
         if (setting.length) {
           setting += ' ';
@@ -357,10 +369,10 @@
         //   values. The filter_html filter always disallows the "style"
         //   attribute, so we only need to support "class" attribute value
         //   restrictions. Fix once https://www.drupal.org/node/2567801 lands.
-        if (rule.restrictedTags.allowed.classes.length) {
-          setting += ` class="${rule.restrictedTags.allowed.classes.join(
-            ' ',
-          )}"`;
+        if (allowedClasses.length === 1 && allowedClasses[0] === '') {
+          setting += ' class';
+        } else if (allowedClasses.length) {
+          setting += ' class="'.concat(allowedClasses.join(' '), '"');
         }
 
         setting += '>';
diff --git a/core/modules/filter/src/FilterFormatFormBase.php b/core/modules/filter/src/FilterFormatFormBase.php
index 19f9eb93d8..5a89904c68 100644
--- a/core/modules/filter/src/FilterFormatFormBase.php
+++ b/core/modules/filter/src/FilterFormatFormBase.php
@@ -88,9 +88,9 @@ public function form(array $form, FormStateInterface $form_state) {
       '#title' => $this->t('Filter processing order'),
       '#tabledrag' => [
         [
-         'action' => 'order',
-         'relationship' => 'sibling',
-         'group' => 'filter-order-weight',
+          'action' => 'order',
+          'relationship' => 'sibling',
+          'group' => 'filter-order-weight',
         ],
       ],
       '#tree' => FALSE,
diff --git a/core/modules/filter/tests/src/Functional/FilterAdminTest.php b/core/modules/filter/tests/src/Functional/FilterAdminTest.php
index 932db0ab34..a947bb841a 100644
--- a/core/modules/filter/tests/src/Functional/FilterAdminTest.php
+++ b/core/modules/filter/tests/src/Functional/FilterAdminTest.php
@@ -224,12 +224,7 @@ public function testFilterAdmin() {
     $this->drupalGet('admin/config/content/formats/manage/' . $restricted);
     // Check that the allowed HTML tag was added and the string reformatted.
     $this->assertSession()->fieldValueEquals('filters[filter_html][settings][allowed_html]', "<a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <quote>");
-
-    $elements = $this->xpath('//select[@name=:first]/following::select[@name=:second]', [
-      ':first' => 'filters[' . $first_filter . '][weight]',
-      ':second' => 'filters[' . $second_filter . '][weight]',
-    ]);
-    $this->assertNotEmpty($elements, 'Order confirmed in admin interface.');
+    $this->assertSession()->elementExists('xpath', "//select[@name='filters[" . $first_filter . "][weight]']/following::select[@name='filters[" . $second_filter . "][weight]']");
 
     // Reorder filters.
     $edit = [];
@@ -240,12 +235,7 @@ public function testFilterAdmin() {
     $this->drupalGet('admin/config/content/formats/manage/' . $restricted);
     $this->assertSession()->fieldValueEquals('filters[' . $second_filter . '][weight]', 1);
     $this->assertSession()->fieldValueEquals('filters[' . $first_filter . '][weight]', 2);
-
-    $elements = $this->xpath('//select[@name=:first]/following::select[@name=:second]', [
-      ':first' => 'filters[' . $second_filter . '][weight]',
-      ':second' => 'filters[' . $first_filter . '][weight]',
-    ]);
-    $this->assertNotEmpty($elements, 'Reorder confirmed in admin interface.');
+    $this->assertSession()->elementExists('xpath', "//select[@name='filters[" . $second_filter . "][weight]']/following::select[@name='filters[" . $first_filter . "][weight]']");
 
     $filter_format = FilterFormat::load($restricted);
     foreach ($filter_format->filters() as $filter_name => $filter) {
diff --git a/core/modules/filter/tests/src/Functional/FilterFormatAccessTest.php b/core/modules/filter/tests/src/Functional/FilterFormatAccessTest.php
index dd006ed293..f7b0ecada2 100644
--- a/core/modules/filter/tests/src/Functional/FilterFormatAccessTest.php
+++ b/core/modules/filter/tests/src/Functional/FilterFormatAccessTest.php
@@ -68,6 +68,9 @@ class FilterFormatAccessTest extends BrowserTestBase {
    */
   protected $disallowedFormat;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/filter/tests/src/Functional/FilterHtmlImageSecureTest.php b/core/modules/filter/tests/src/Functional/FilterHtmlImageSecureTest.php
index 71ba364eec..66006bc0e4 100644
--- a/core/modules/filter/tests/src/Functional/FilterHtmlImageSecureTest.php
+++ b/core/modules/filter/tests/src/Functional/FilterHtmlImageSecureTest.php
@@ -31,6 +31,9 @@ class FilterHtmlImageSecureTest extends BrowserTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/filter/tests/src/Functional/FilterSecurityTest.php b/core/modules/filter/tests/src/Functional/FilterSecurityTest.php
index 76433f854f..4294154b03 100644
--- a/core/modules/filter/tests/src/Functional/FilterSecurityTest.php
+++ b/core/modules/filter/tests/src/Functional/FilterSecurityTest.php
@@ -35,6 +35,9 @@ class FilterSecurityTest extends BrowserTestBase {
    */
   protected $adminUser;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/filter/tests/src/Kernel/FilterAPITest.php b/core/modules/filter/tests/src/Kernel/FilterAPITest.php
index 204ba859e3..cc0e8613a1 100644
--- a/core/modules/filter/tests/src/Kernel/FilterAPITest.php
+++ b/core/modules/filter/tests/src/Kernel/FilterAPITest.php
@@ -22,6 +22,9 @@ class FilterAPITest extends EntityKernelTestBase {
 
   protected static $modules = ['system', 'filter', 'filter_test', 'user'];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/filter/tests/src/Kernel/FilterDefaultConfigTest.php b/core/modules/filter/tests/src/Kernel/FilterDefaultConfigTest.php
index cde9024232..4f533fbca7 100644
--- a/core/modules/filter/tests/src/Kernel/FilterDefaultConfigTest.php
+++ b/core/modules/filter/tests/src/Kernel/FilterDefaultConfigTest.php
@@ -15,6 +15,9 @@ class FilterDefaultConfigTest extends KernelTestBase {
 
   protected static $modules = ['system', 'user', 'filter', 'filter_test'];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/filter/tests/src/Kernel/FilterKernelTest.php b/core/modules/filter/tests/src/Kernel/FilterKernelTest.php
index 9b452eee47..f2e369f058 100644
--- a/core/modules/filter/tests/src/Kernel/FilterKernelTest.php
+++ b/core/modules/filter/tests/src/Kernel/FilterKernelTest.php
@@ -31,6 +31,9 @@ class FilterKernelTest extends KernelTestBase {
    */
   protected $filters;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->installConfig(['system']);
@@ -333,12 +336,11 @@ public function testLineBreakFilter() {
       ],
       // Skip contents of certain block tags entirely.
       "<script>aaa\nbbb\n\nccc</script>
-<style>aaa\nbbb\n\nccc</style>
-<pre>aaa\nbbb\n\nccc</pre>
-<object>aaa\nbbb\n\nccc</object>
-<iframe>aaa\nbbb\n\nccc</iframe>
-<svg>aaa\nbbb\n\nccc</svg>
-" => [
+      <style>aaa\nbbb\n\nccc</style>
+      <pre>aaa\nbbb\n\nccc</pre>
+      <object>aaa\nbbb\n\nccc</object>
+      <iframe>aaa\nbbb\n\nccc</iframe>
+      <svg>aaa\nbbb\n\nccc</svg>" => [
         "<script>aaa\nbbb\n\nccc</script>" => TRUE,
         "<style>aaa\nbbb\n\nccc</style>" => TRUE,
         "<pre>aaa\nbbb\n\nccc</pre>" => TRUE,
@@ -570,16 +572,12 @@ public function testUrlFilter() {
     // Filter selection/pattern matching.
     $tests = [
       // HTTP URLs.
-      '
-http://example.com or www.example.com
-' => [
+      'http://example.com or www.example.com' => [
         '<a href="http://example.com">http://example.com</a>' => TRUE,
         '<a href="http://www.example.com">www.example.com</a>' => TRUE,
       ],
       // MAILTO URLs.
-      '
-person@example.com or mailto:person2@example.com or ' . $email_with_plus_sign . ' or ' . $long_email . ' but not ' . $too_long_email . '
-' => [
+      'person@example.com or mailto:person2@example.com or ' . $email_with_plus_sign . ' or ' . $long_email . ' but not ' . $too_long_email => [
         '<a href="mailto:person@example.com">person@example.com</a>' => TRUE,
         '<a href="mailto:person2@example.com">mailto:person2@example.com</a>' => TRUE,
         '<a href="mailto:' . $long_email . '">' . $long_email . '</a>' => TRUE,
@@ -587,15 +585,13 @@ public function testUrlFilter() {
         '<a href="mailto:' . $email_with_plus_sign . '">' . $email_with_plus_sign . '</a>' => TRUE,
       ],
       // URI parts and special characters.
-      '
-http://trailingslash.com/ or www.trailingslash.com/
-http://host.com/some/path?query=foo&bar[baz]=beer#fragment or www.host.com/some/path?query=foo&bar[baz]=beer#fragment
-http://twitter.com/#!/example/status/22376963142324226
-http://example.com/@user/
-ftp://user:pass@ftp.example.com/~home/dir1
-sftp://user@nonstandardport:222/dir
-ssh://192.168.0.100/srv/git/drupal.git
-' => [
+      'http://trailingslash.com/ or www.trailingslash.com/
+      http://host.com/some/path?query=foo&bar[baz]=beer#fragment or www.host.com/some/path?query=foo&bar[baz]=beer#fragment
+      http://twitter.com/#!/example/status/22376963142324226
+      http://example.com/@user/
+      ftp://user:pass@ftp.example.com/~home/dir1
+      sftp://user@nonstandardport:222/dir
+      ssh://192.168.0.100/srv/git/drupal.git' => [
         '<a href="http://trailingslash.com/">http://trailingslash.com/</a>' => TRUE,
         '<a href="http://www.trailingslash.com/">www.trailingslash.com/</a>' => TRUE,
         '<a href="http://host.com/some/path?query=foo&amp;bar[baz]=beer#fragment">http://host.com/some/path?query=foo&amp;bar[baz]=beer#fragment</a>' => TRUE,
@@ -607,15 +603,13 @@ public function testUrlFilter() {
         '<a href="ssh://192.168.0.100/srv/git/drupal.git">ssh://192.168.0.100/srv/git/drupal.git</a>' => TRUE,
       ],
       // International Unicode characters.
-      '
-http://пример.испытание/
-http://مثال.إختبار/
-http://例子.測試/
-http://12345.中国/
-http://例え.テスト/
-http://dréißig-bücher.de/
-http://méxico-mañana.es/
-' => [
+      'http://пример.испытание/
+      http://مثال.إختبار/
+      http://例子.測試/
+      http://12345.中国/
+      http://例え.テスト/
+      http://dréißig-bücher.de/
+      http://méxico-mañana.es/' => [
         '<a href="http://пример.испытание/">http://пример.испытание/</a>' => TRUE,
         '<a href="http://مثال.إختبار/">http://مثال.إختبار/</a>' => TRUE,
         '<a href="http://例子.測試/">http://例子.測試/</a>' => TRUE,
@@ -625,18 +619,14 @@ public function testUrlFilter() {
         '<a href="http://méxico-mañana.es/">http://méxico-mañana.es/</a>' => TRUE,
       ],
       // Encoding.
-      '
-http://ampersand.com/?a=1&b=2
-http://encoded.com/?a=1&amp;b=2
-' => [
+      'http://ampersand.com/?a=1&b=2
+      http://encoded.com/?a=1&amp;b=2' => [
         '<a href="http://ampersand.com/?a=1&amp;b=2">http://ampersand.com/?a=1&amp;b=2</a>' => TRUE,
         '<a href="http://encoded.com/?a=1&amp;b=2">http://encoded.com/?a=1&amp;b=2</a>' => TRUE,
       ],
       // Domain name length.
-      '
-www.ex.ex or www.example.example or www.toolongdomainexampledomainexampledomainexampledomainexampledomain or
-me@me.tv
-' => [
+      'www.ex.ex or www.example.example or www.toolongdomainexampledomainexampledomainexampledomainexampledomain or
+      me@me.tv' => [
         '<a href="http://www.ex.ex">www.ex.ex</a>' => TRUE,
         '<a href="http://www.example.example">www.example.example</a>' => TRUE,
         'http://www.toolong' => FALSE,
@@ -645,18 +635,17 @@ public function testUrlFilter() {
       // Absolute URL protocols.
       // The list to test is found in the beginning of _filter_url() at
       // $protocols = \Drupal::getContainer()->getParameter('filter_protocols').
-      '
-https://example.com,
-ftp://ftp.example.com,
-news://example.net,
-telnet://example,
-irc://example.host,
-ssh://odd.geek,
-sftp://secure.host?,
-webcal://calendar,
-rtsp://127.0.0.1,
-not foo://disallowed.com.
-' => [
+      'https://example.com,
+      ftp://ftp.example.com,
+      news://example.net,
+      telnet://example,
+      irc://example.host,
+      ssh://odd.geek,
+      sftp://secure.host?,
+      webcal://calendar,
+      rtsp://127.0.0.1,
+      not foo://disallowed.com.
+      ' => [
         'href="https://example.com"' => TRUE,
         'href="ftp://ftp.example.com"' => TRUE,
         'href="news://example.net"' => TRUE,
@@ -674,19 +663,16 @@ public function testUrlFilter() {
 
     // Surrounding text/punctuation.
     $tests = [
-      '
-Partial URL with trailing period www.partial.com.
-Email with trailing comma person@example.com,
-Absolute URL with trailing question http://www.absolute.com?
-Query string with trailing exclamation www.query.com/index.php?a=!
-Partial URL with 3 trailing www.partial.periods...
-Email with 3 trailing exclamations@example.com!!!
-Absolute URL and query string with 2 different punctuation characters (http://www.example.com/q=abc).
-Partial URL with brackets in the URL as well as surrounded brackets (www.foo.com/more_(than)_one_(parens)).
-Absolute URL with square brackets in the URL as well as surrounded brackets [https://www.drupal.org/?class[]=1]
-Absolute URL with quotes "https://www.drupal.org/sample"
-
-' => [
+      'Partial URL with trailing period www.partial.com.
+      Email with trailing comma person@example.com,
+      Absolute URL with trailing question http://www.absolute.com?
+      Query string with trailing exclamation www.query.com/index.php?a=!
+      Partial URL with 3 trailing www.partial.periods...
+      Email with 3 trailing exclamations@example.com!!!
+      Absolute URL and query string with 2 different punctuation characters (http://www.example.com/q=abc).
+      Partial URL with brackets in the URL as well as surrounded brackets (www.foo.com/more_(than)_one_(parens)).
+      Absolute URL with square brackets in the URL as well as surrounded brackets [https://www.drupal.org/?class[]=1]
+      Absolute URL with quotes "https://www.drupal.org/sample"' => [
         'period <a href="http://www.partial.com">www.partial.com</a>.' => TRUE,
         'comma <a href="mailto:person@example.com">person@example.com</a>,' => TRUE,
         'question <a href="http://www.absolute.com">http://www.absolute.com</a>?' => TRUE,
@@ -698,9 +684,7 @@ public function testUrlFilter() {
         'brackets [<a href="https://www.drupal.org/?class[]=1">https://www.drupal.org/?class[]=1</a>]' => TRUE,
         'quotes "<a href="https://www.drupal.org/sample">https://www.drupal.org/sample</a>"' => TRUE,
       ],
-      '
-(www.parenthesis.com/dir?a=1&b=2#a)
-' => [
+      '(www.parenthesis.com/dir?a=1&b=2#a)' => [
         '(<a href="http://www.parenthesis.com/dir?a=1&amp;b=2#a">www.parenthesis.com/dir?a=1&amp;b=2#a</a>)' => TRUE,
       ],
     ];
@@ -708,42 +692,36 @@ public function testUrlFilter() {
 
     // Surrounding markup.
     $tests = [
-      '
-<p xmlns="www.namespace.com" />
-<p xmlns="http://namespace.com">
-An <a href="http://example.com" title="Read more at www.example.info...">anchor</a>.
-</p>
-' => [
+      '<p xmlns="www.namespace.com" />
+      <p xmlns="http://namespace.com">
+      An <a href="http://example.com" title="Read more at www.example.info...">anchor</a>.
+      </p>' => [
         '<p xmlns="www.namespace.com" />' => TRUE,
         '<p xmlns="http://namespace.com">' => TRUE,
         'href="http://www.namespace.com"' => FALSE,
         'href="http://namespace.com"' => FALSE,
         'An <a href="http://example.com" title="Read more at www.example.info...">anchor</a>.' => TRUE,
       ],
-      '
-Not <a href="foo">www.relative.com</a> or <a href="http://absolute.com">www.absolute.com</a>
-but <strong>http://www.strong.net</strong> or <em>www.emphasis.info</em>
-' => [
+      'Not <a href="foo">www.relative.com</a> or <a href="http://absolute.com">www.absolute.com</a>
+      but <strong>http://www.strong.net</strong> or <em>www.emphasis.info</em>' => [
         '<a href="foo">www.relative.com</a>' => TRUE,
         'href="http://www.relative.com"' => FALSE,
         '<a href="http://absolute.com">www.absolute.com</a>' => TRUE,
         '<strong><a href="http://www.strong.net">http://www.strong.net</a></strong>' => TRUE,
         '<em><a href="http://www.emphasis.info">www.emphasis.info</a></em>' => TRUE,
       ],
-      '
-Test <code>using www.example.com the code tag</code>.
-' => [
+      'Test <code>using www.example.com the code tag</code>.
+      ' => [
         'href' => FALSE,
         'http' => FALSE,
       ],
-      '
-Intro.
-<blockquote>
-Quoted text linking to www.example.com, written by person@example.com, originating from http://origin.example.com. <code>@see www.usage.example.com or <em>www.example.info</em> bla bla</code>.
-</blockquote>
-
-Outro.
-' => [
+      'Intro.
+      <blockquote>
+      Quoted text linking to www.example.com, written by person@example.com, originating from http://origin.example.com. <code>@see www.usage.example.com or <em>www.example.info</em> bla bla</code>.
+      </blockquote>
+
+      Outro.
+      ' => [
         'href="http://www.example.com"' => TRUE,
         'href="mailto:person@example.com"' => TRUE,
         'href="http://origin.example.com"' => TRUE,
@@ -752,17 +730,15 @@ public function testUrlFilter() {
         'Intro.' => TRUE,
         'Outro.' => TRUE,
       ],
-      '
-Unknown tag <x>containing x and www.example.com</x>? And a tag <pooh>beginning with p and containing www.example.pooh with p?</pooh>
-' => [
+      'Unknown tag <x>containing x and www.example.com</x>? And a tag <pooh>beginning with p and containing www.example.pooh with p?</pooh>
+      ' => [
         'href="http://www.example.com"' => TRUE,
         'href="http://www.example.pooh"' => TRUE,
       ],
-      '
-<p>Test &lt;br/&gt;: This is a www.example17.com example <strong>with</strong> various http://www.example18.com tags. *<br/>
- It is important www.example19.com to *<br/>test different URLs and http://www.example20.com in the same paragraph. *<br>
-HTML www.example21.com soup by person@example22.com can litererally http://www.example23.com contain *img*<img> anything. Just a www.example24.com with http://www.example25.com thrown in. www.example26.com from person@example27.com with extra http://www.example28.com.
-' => [
+      '<p>Test &lt;br/&gt;: This is a www.example17.com example <strong>with</strong> various http://www.example18.com tags. *<br/>
+       It is important www.example19.com to *<br/>test different URLs and http://www.example20.com in the same paragraph. *<br>
+      HTML www.example21.com soup by person@example22.com can litererally http://www.example23.com contain *img*<img> anything. Just a www.example24.com with http://www.example25.com thrown in. www.example26.com from person@example27.com with extra http://www.example28.com.
+      ' => [
         'href="http://www.example17.com"' => TRUE,
         'href="http://www.example18.com"' => TRUE,
         'href="http://www.example19.com"' => TRUE,
@@ -776,53 +752,41 @@ public function testUrlFilter() {
         'href="mailto:person@example27.com"' => TRUE,
         'href="http://www.example28.com"' => TRUE,
       ],
-      '
-<script>
-<!--
-  // @see www.example.com
-  var exampleurl = "http://example.net";
--->
-<!--//--><![CDATA[//><!--
-  // @see www.example.com
-  var exampleurl = "http://example.net";
-//--><!]]>
-</script>
-' => [
+      '<script>
+      <!--
+        // @see www.example.com
+        var exampleurl = "http://example.net";
+      -->
+      <!--//--><![CDATA[//><!--
+        // @see www.example.com
+        var exampleurl = "http://example.net";
+      //--><!]]>
+      </script>' => [
         'href="http://www.example.com"' => FALSE,
         'href="http://example.net"' => FALSE,
       ],
-      '
-<style>body {
-  background: url(http://example.com/pixel.gif);
-}</style>
-' => [
+      '<style>body {
+        background: url(http://example.com/pixel.gif);
+      }</style>' => [
         'href' => FALSE,
       ],
-      '
-<!-- Skip any URLs like www.example.com in comments -->
-' => [
+      '<!-- Skip any URLs like www.example.com in comments -->' => [
         'href' => FALSE,
       ],
-      '
-<!-- Skip any URLs like
-www.example.com with a newline in comments -->
-' => [
+      '<!-- Skip any URLs like
+      www.example.com with a newline in comments -->' => [
         'href' => FALSE,
       ],
-      '
-<!-- Skip any URLs like www.comment.com in comments. <p>Also ignore http://commented.out/markup.</p> -->
-' => [
+      '<!-- Skip any URLs like www.comment.com in comments. <p>Also ignore http://commented.out/markup.</p> -->' => [
         'href' => FALSE,
       ],
-      '
-<dl>
-<dt>www.example.com</dt>
-<dd>http://example.com</dd>
-<dd>person@example.com</dd>
-<dt>Check www.example.net</dt>
-<dd>Some text around http://www.example.info by person@example.info?</dd>
-</dl>
-' => [
+      '<dl>
+      <dt>www.example.com</dt>
+      <dd>http://example.com</dd>
+      <dd>person@example.com</dd>
+      <dt>Check www.example.net</dt>
+      <dd>Some text around http://www.example.info by person@example.info?</dd>
+      </dl>' => [
         'href="http://www.example.com"' => TRUE,
         'href="http://example.com"' => TRUE,
         'href="mailto:person@example.com"' => TRUE,
@@ -830,13 +794,11 @@ public function testUrlFilter() {
         'href="http://www.example.info"' => TRUE,
         'href="mailto:person@example.info"' => TRUE,
       ],
-      '
-<div>www.div.com</div>
-<ul>
-<li>http://listitem.com</li>
-<li class="odd">www.class.listitem.com</li>
-</ul>
-' => [
+      '<div>www.div.com</div>
+      <ul>
+      <li>http://listitem.com</li>
+      <li class="odd">www.class.listitem.com</li>
+      </ul>' => [
         '<div><a href="http://www.div.com">www.div.com</a></div>' => TRUE,
         '<li><a href="http://listitem.com">http://listitem.com</a></li>' => TRUE,
         '<li class="odd"><a href="http://www.class.listitem.com">www.class.listitem.com</a></li>' => TRUE,
diff --git a/core/modules/forum/forum.install b/core/modules/forum/forum.install
index 8f1ff13fd0..7b6f40f9ba 100644
--- a/core/modules/forum/forum.install
+++ b/core/modules/forum/forum.install
@@ -120,11 +120,11 @@ function forum_schema() {
         'default' => '',
       ],
       'tid' => [
-         'description' => 'The term ID.',
-         'type' => 'int',
-         'unsigned' => TRUE,
-         'not null' => TRUE,
-         'default' => 0,
+        'description' => 'The term ID.',
+        'type' => 'int',
+        'unsigned' => TRUE,
+        'not null' => TRUE,
+        'default' => 0,
       ],
       'sticky' => [
         'description' => 'Boolean indicating whether the node is sticky.',
diff --git a/core/modules/forum/forum.module b/core/modules/forum/forum.module
index c11ec858f8..10f0b37ba5 100644
--- a/core/modules/forum/forum.module
+++ b/core/modules/forum/forum.module
@@ -576,7 +576,7 @@ function template_preprocess_forum_list(&$variables) {
   }
 
   $variables['pager'] = [
-   '#type' => 'pager',
+    '#type' => 'pager',
   ];
 
   // Give meaning to $tid for themers. $tid actually stands for term ID.
diff --git a/core/modules/forum/src/ForumManagerInterface.php b/core/modules/forum/src/ForumManagerInterface.php
index 7ab14ba30d..8730d15ab9 100644
--- a/core/modules/forum/src/ForumManagerInterface.php
+++ b/core/modules/forum/src/ForumManagerInterface.php
@@ -72,7 +72,7 @@ public function checkNodeType(NodeInterface $node);
    * @param int $uid
    *   The user ID.
    *
-   * @return
+   * @return int
    *   The number of new posts in the forum that have not been read by the user.
    */
   public function unreadTopics($term, $uid);
diff --git a/core/modules/forum/tests/src/Functional/ForumBlockTest.php b/core/modules/forum/tests/src/Functional/ForumBlockTest.php
index 426ddc4fcd..121102a634 100644
--- a/core/modules/forum/tests/src/Functional/ForumBlockTest.php
+++ b/core/modules/forum/tests/src/Functional/ForumBlockTest.php
@@ -31,6 +31,9 @@ class ForumBlockTest extends BrowserTestBase {
    */
   protected $adminUser;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/forum/tests/src/Functional/ForumIndexTest.php b/core/modules/forum/tests/src/Functional/ForumIndexTest.php
index 8be1ca651f..7631d224a6 100644
--- a/core/modules/forum/tests/src/Functional/ForumIndexTest.php
+++ b/core/modules/forum/tests/src/Functional/ForumIndexTest.php
@@ -23,6 +23,9 @@ class ForumIndexTest extends BrowserTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/forum/tests/src/Functional/ForumNodeAccessTest.php b/core/modules/forum/tests/src/Functional/ForumNodeAccessTest.php
index 3dc342af2d..cefacf48bd 100644
--- a/core/modules/forum/tests/src/Functional/ForumNodeAccessTest.php
+++ b/core/modules/forum/tests/src/Functional/ForumNodeAccessTest.php
@@ -31,6 +31,9 @@ class ForumNodeAccessTest extends BrowserTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     node_access_rebuild();
diff --git a/core/modules/forum/tests/src/Functional/Views/ForumIntegrationTest.php b/core/modules/forum/tests/src/Functional/Views/ForumIntegrationTest.php
index 4b26069ad9..a1f98ac258 100644
--- a/core/modules/forum/tests/src/Functional/Views/ForumIntegrationTest.php
+++ b/core/modules/forum/tests/src/Functional/Views/ForumIntegrationTest.php
@@ -32,6 +32,9 @@ class ForumIntegrationTest extends ViewTestBase {
    */
   public static $testViews = ['test_forum_index'];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp($import_test_views = TRUE, $modules = ['forum_test_views']): void {
     parent::setUp($import_test_views, $modules);
   }
diff --git a/core/modules/forum/tests/src/Unit/Breadcrumb/ForumBreadcrumbBuilderBaseTest.php b/core/modules/forum/tests/src/Unit/Breadcrumb/ForumBreadcrumbBuilderBaseTest.php
index f6834c4c82..062b8a958f 100644
--- a/core/modules/forum/tests/src/Unit/Breadcrumb/ForumBreadcrumbBuilderBaseTest.php
+++ b/core/modules/forum/tests/src/Unit/Breadcrumb/ForumBreadcrumbBuilderBaseTest.php
@@ -92,16 +92,16 @@ public function testBuild() {
     $vocab_storage = $this->createMock('Drupal\Core\Entity\EntityStorageInterface');
     $vocab_storage->expects($this->any())
       ->method('load')
-      ->will($this->returnValueMap([
+      ->willReturnMap([
         ['forums', $prophecy->reveal()],
-      ]));
+      ]);
 
     $entity_type_manager = $this->createMock(EntityTypeManagerInterface::class);
     $entity_type_manager->expects($this->any())
       ->method('getStorage')
-      ->will($this->returnValueMap([
+      ->willReturnMap([
         ['taxonomy_vocabulary', $vocab_storage],
-      ]));
+      ]);
 
     $config_factory = $this->getConfigFactoryStub(
       [
diff --git a/core/modules/forum/tests/src/Unit/Breadcrumb/ForumListingBreadcrumbBuilderTest.php b/core/modules/forum/tests/src/Unit/Breadcrumb/ForumListingBreadcrumbBuilderTest.php
index 960cb53d34..42d15d46b5 100644
--- a/core/modules/forum/tests/src/Unit/Breadcrumb/ForumListingBreadcrumbBuilderTest.php
+++ b/core/modules/forum/tests/src/Unit/Breadcrumb/ForumListingBreadcrumbBuilderTest.php
@@ -57,7 +57,7 @@ public function testApplies($expected, $route_name = NULL, $parameter_map = [])
     $route_match = $this->createMock('Drupal\Core\Routing\RouteMatchInterface');
     $route_match->expects($this->once())
       ->method('getRouteName')
-      ->will($this->returnValue($route_name));
+      ->willReturn($route_name);
     $route_match->expects($this->any())
       ->method('getParameter')
       ->willReturnMap($parameter_map);
@@ -196,7 +196,7 @@ public function testBuild() {
     $route_match->expects($this->exactly(2))
       ->method('getParameter')
       ->with('taxonomy_term')
-      ->will($this->returnValue($forum_listing));
+      ->willReturn($forum_listing);
 
     // First test.
     $expected1 = [
diff --git a/core/modules/forum/tests/src/Unit/Breadcrumb/ForumNodeBreadcrumbBuilderTest.php b/core/modules/forum/tests/src/Unit/Breadcrumb/ForumNodeBreadcrumbBuilderTest.php
index 3c903fe415..893b483050 100644
--- a/core/modules/forum/tests/src/Unit/Breadcrumb/ForumNodeBreadcrumbBuilderTest.php
+++ b/core/modules/forum/tests/src/Unit/Breadcrumb/ForumNodeBreadcrumbBuilderTest.php
@@ -52,7 +52,7 @@ public function testApplies($expected, $route_name = NULL, $parameter_map = [])
     $forum_manager = $this->createMock('Drupal\forum\ForumManagerInterface');
     $forum_manager->expects($this->any())
       ->method('checkNodeType')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $translation_manager = $this->createMock('Drupal\Core\StringTranslation\TranslationInterface');
 
@@ -62,7 +62,7 @@ public function testApplies($expected, $route_name = NULL, $parameter_map = [])
     $route_match = $this->createMock('Drupal\Core\Routing\RouteMatchInterface');
     $route_match->expects($this->once())
       ->method('getRouteName')
-      ->will($this->returnValue($route_name));
+      ->willReturn($route_name);
     $route_match->expects($this->any())
       ->method('getParameter')
       ->willReturnMap($parameter_map);
@@ -201,7 +201,7 @@ public function testBuild() {
     $route_match->expects($this->exactly(2))
       ->method('getParameter')
       ->with('node')
-      ->will($this->returnValue($forum_node));
+      ->willReturn($forum_node);
 
     // First test.
     $expected1 = [
diff --git a/core/modules/forum/tests/src/Unit/ForumManagerTest.php b/core/modules/forum/tests/src/Unit/ForumManagerTest.php
index c9208a7047..e0c9055846 100644
--- a/core/modules/forum/tests/src/Unit/ForumManagerTest.php
+++ b/core/modules/forum/tests/src/Unit/ForumManagerTest.php
@@ -31,22 +31,22 @@ public function testGetIndex() {
 
     $config_factory->expects($this->once())
       ->method('get')
-      ->will($this->returnValue($config));
+      ->willReturn($config);
 
     $config->expects($this->once())
       ->method('get')
-      ->will($this->returnValue('forums'));
+      ->willReturn('forums');
 
     $entity_type_manager->expects($this->once())
       ->method('getStorage')
-      ->will($this->returnValue($storage));
+      ->willReturn($storage);
 
     // This is sufficient for testing purposes.
     $term = new \stdClass();
 
     $storage->expects($this->once())
       ->method('create')
-      ->will($this->returnValue($term));
+      ->willReturn($term);
 
     $connection = $this->getMockBuilder('\Drupal\Core\Database\Connection')
       ->disableOriginalConstructor()
@@ -74,7 +74,7 @@ public function testGetIndex() {
 
     $manager->expects($this->once())
       ->method('getChildren')
-      ->will($this->returnValue([]));
+      ->willReturn([]);
 
     // Get the index once.
     $index1 = $manager->getIndex();
diff --git a/core/modules/help/tests/src/Functional/HelpBlockTest.php b/core/modules/help/tests/src/Functional/HelpBlockTest.php
index 590d45cccb..61f5f3f335 100644
--- a/core/modules/help/tests/src/Functional/HelpBlockTest.php
+++ b/core/modules/help/tests/src/Functional/HelpBlockTest.php
@@ -33,6 +33,9 @@ class HelpBlockTest extends BrowserTestBase {
    */
   protected $helpBlock;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->helpBlock = $this->placeBlock('help_block');
diff --git a/core/modules/help/tests/src/Functional/HelpTest.php b/core/modules/help/tests/src/Functional/HelpTest.php
index 6601ce2d06..ea22533444 100644
--- a/core/modules/help/tests/src/Functional/HelpTest.php
+++ b/core/modules/help/tests/src/Functional/HelpTest.php
@@ -45,6 +45,9 @@ class HelpTest extends BrowserTestBase {
    */
   protected $anyUser;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/help/tests/src/Functional/NoHelpTest.php b/core/modules/help/tests/src/Functional/NoHelpTest.php
index 0ec7615f9f..c6aa5bc195 100644
--- a/core/modules/help/tests/src/Functional/NoHelpTest.php
+++ b/core/modules/help/tests/src/Functional/NoHelpTest.php
@@ -30,6 +30,9 @@ class NoHelpTest extends BrowserTestBase {
    */
   protected $adminUser;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->adminUser = $this->drupalCreateUser(['access administration pages']);
diff --git a/core/modules/help_topics/help_topics.services.yml b/core/modules/help_topics/help_topics.services.yml
index 5fafe3a3fe..6a2754d77f 100644
--- a/core/modules/help_topics/help_topics.services.yml
+++ b/core/modules/help_topics/help_topics.services.yml
@@ -13,7 +13,7 @@ services:
     arguments: ['%app.root%', '@module_handler', '@theme_handler']
     # Lowest core priority because loading help topics is not the usual case.
     tags:
-    - { name: twig.loader, priority: -200 }
+      - { name: twig.loader, priority: -200 }
     public: false
   plugin.manager.help_section_topics:
     class: Drupal\help_topics\HelpSectionManager
diff --git a/core/modules/help_topics/help_topics/ban.banning_ips.html.twig b/core/modules/help_topics/help_topics/ban.banning_ips.html.twig
index ef10c82e64..160b02773f 100644
--- a/core/modules/help_topics/help_topics/ban.banning_ips.html.twig
+++ b/core/modules/help_topics/help_topics/ban.banning_ips.html.twig
@@ -3,12 +3,13 @@ label: 'Banning IP addresses'
 related:
   - user.overview
 ---
-{% set ban = render_var(url('ban.admin_page')) %}
+{% set ban_link_text %}{% trans %}IP address bans{% endtrans %}{% endset %}
+{% set ban_link = render_var(help_route_link(ban_link_text, 'ban.admin_page')) %}
 <h2>{% trans %}Goal{% endtrans %}</h2>
 <p>{% trans %}Ban visitors from one or more IP addresses from accessing and viewing your site.{% endtrans %}</p>
 <h2>{% trans %}Steps{% endtrans %}</h2>
 <ol>
-  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Configuration</em> &gt; <em>People</em> &gt; <a href="{{ ban }}"><em>IP address bans</em></a>{% endtrans %}</li>
+  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Configuration</em> &gt; <em>People</em> &gt; <em>{{ ban_link }}</em>{% endtrans %}</li>
   <li>{% trans %}Enter an <em>IP address</em> and click <em>Add</em>.{% endtrans %}</li>
   <li>{% trans %}You should see the IP address you entered listed under <em>Banned IP addresses</em>. Repeat the above steps to ban additional IP addresses.{% endtrans %}</li>
 </ol>
diff --git a/core/modules/help_topics/help_topics/block.configure.html.twig b/core/modules/help_topics/help_topics/block.configure.html.twig
index 8b5e8f851c..cd95c8b77b 100644
--- a/core/modules/help_topics/help_topics/block.configure.html.twig
+++ b/core/modules/help_topics/help_topics/block.configure.html.twig
@@ -4,12 +4,13 @@ related:
   - block.overview
   - core.ui_accessibility
 ---
-{% set layout_url = render_var(url('block.admin_display')) %}
+{% set layout_link_text %}{% trans %}Block layout{% endtrans %}{% endset %}
+{% set layout_link = render_var(help_route_link(layout_link_text, 'block.admin_display')) %}
 <h2>{% trans %}Goal{% endtrans %}</h2>
 <p>{% trans %}Configure the settings of a block that was previously placed in a region of a theme.{% endtrans %}</p>
 <h2>{% trans %}Steps{% endtrans %}</h2>
 <ol>
-  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Structure</em> &gt; <a href="{{ layout_url }}"><em>Block layout</em></a>.{% endtrans %}</li>
+  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Structure</em> &gt; <em>{{ layout_link }}</em>.{% endtrans %}</li>
   <li>{% trans %}Click the name of the theme that contains the block.{% endtrans %}</li>
   <li>{% trans %}Optionally, click <em>Demonstrate block regions</em> to see the regions of the theme.{% endtrans %}</li>
   <li>{% trans %}If you only want to change the region where a block is located, or the ordering of blocks within a region, drag blocks to their desired positions and click <em>Save blocks</em>.{% endtrans %}</li>
diff --git a/core/modules/help_topics/help_topics/block_content.add.html.twig b/core/modules/help_topics/help_topics/block_content.add.html.twig
index 19f3133c59..002a47ba1b 100644
--- a/core/modules/help_topics/help_topics/block_content.add.html.twig
+++ b/core/modules/help_topics/help_topics/block_content.add.html.twig
@@ -6,12 +6,13 @@ related:
   - block.place
   - block_content.type
 ---
-{% set content_url = render_var(url('entity.block_content.collection')) %}
+{% set library_link_text %}{% trans %}Custom block library{% endtrans %}{% endset %}
+{% set library_link = render_var(help_route_link(library_link_text, 'entity.block_content.collection')) %}
 <h2>{% trans %}Goal{% endtrans %}</h2>
 <p>{% trans %}Create a custom block, which can later be placed on the site.{% endtrans %}</p>
 <h2>{% trans %}Steps{% endtrans %}</h2>
 <ol>
-  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Structure</em> &gt; <em>Block layout</em> &gt; <a href="{{ content_url }}"><em>Custom block library</em></a>.{% endtrans %}</li>
+  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Structure</em> &gt; <em>Block layout</em> &gt; {{ library_link }}.{% endtrans %}</li>
   <li>{% trans %}Click  <em>Add custom block</em>. If you have more than one custom block type defined on your site, click the name of the type you want to create.{% endtrans %}</li>
   <li>{% trans %}Enter a description of your block (to be shown to administrators) and the body text for your block.{% endtrans %}</li>
   <li>{% trans %}Click <em>Save</em>.{% endtrans %}</li>
diff --git a/core/modules/help_topics/help_topics/block_content.type.html.twig b/core/modules/help_topics/help_topics/block_content.type.html.twig
index 5b7400db08..1b91c6366f 100644
--- a/core/modules/help_topics/help_topics/block_content.type.html.twig
+++ b/core/modules/help_topics/help_topics/block_content.type.html.twig
@@ -9,12 +9,13 @@ related:
   - field_ui.manage_form
   - field_ui.manage_display
 ---
-{% set types_url = render_var(url('entity.block_content_type.collection')) %}
+{% set types_link_text %}{% trans %}Block types{% endtrans %}{% endset %}
+{% set types_link = render_var(help_route_link(types_link_text, 'entity.block_content_type.collection')) %}
 <h2>{% trans %}Goal{% endtrans %}</h2>
 <p>{% trans %}Define a custom block type and its fields.{% endtrans %}</p>
 <h2>{% trans %}Steps{% endtrans %}</h2>
 <ol>
-  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Structure</em> &gt; <em>Block layout</em> &gt; <em>Custom block library</em> &gt; <a href="{{ types_url }}"><em>Block types</em></a>.{% endtrans %}</li>
+  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Structure</em> &gt; <em>Block layout</em> &gt; <em>Custom block library</em> &gt; <em>{{ types_link }}</em>.{% endtrans %}</li>
   <li>{% trans %}Click  <em>Add custom block type</em>.{% endtrans %}</li>
   <li>{% trans %}Enter a label for this block type (shown in the administrative interface). Optionally, edit the automatically-generated machine name or the description.{% endtrans %}</li>
   <li>{% trans %}Click <em>Save</em>. You will be returned to the <em>Block types</em> page.{% endtrans %}</li>
diff --git a/core/modules/help_topics/help_topics/book.adding.html.twig b/core/modules/help_topics/help_topics/book.adding.html.twig
index 84e17b6ddb..3ef60009e2 100644
--- a/core/modules/help_topics/help_topics/book.adding.html.twig
+++ b/core/modules/help_topics/help_topics/book.adding.html.twig
@@ -6,13 +6,14 @@ related:
   - book.creating
   - book.organizing
 ---
-{% set node_add = render_var(url('node.add_page')) %}
+{% set node_add_link_text %}{% trans %}Add content{% endtrans %}{% endset %}
+{% set node_add_link = render_var(help_route_link(node_add_link_text, 'node.add_page')) %}
 {% set configuring_topic = render_var(help_topic_link('book.configuring')) %}
 <h2>{% trans %}Goal{% endtrans %}</h2>
 <p>{% trans %}Add a page to an existing book.{% endtrans %}</p>
 <h2>{% trans %}Steps{% endtrans %}</h2>
 <ol>
-  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Content</em> &gt; <a href="{{ node_add }}"><em>Add content</em></a> &gt; <em>Book page</em>. If you have configured additional content types that can be added to books, you can substitute a different content type for <em>Book page</em>; see {{ configuring_topic }} for more information.{% endtrans %}</li>
+  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Content</em> &gt; <em>{{ node_add_link }}</em> &gt; <em>Book page</em>. If you have configured additional content types that can be added to books, you can substitute a different content type for <em>Book page</em>; see {{ configuring_topic }} for more information.{% endtrans %}</li>
   <li>{% trans %}Enter a title for the page and some text for the body of the page.{% endtrans %}</li>
   <li>{% trans %}In the vertical tabs area, click <em>Book Outline</em>. Select the book you want to add the page to in the <em>Book</em> select list. If you want to insert this page into the book hierarchy, also select the desired parent page in the <em>Parent item</em> select list.{% endtrans %}</li>
   <li>{% trans %}Select the desired weight for the page in the <em>Weight</em> select list (pages with the same parent item are ordered from lowest to highest weight).{% endtrans %}</li>
diff --git a/core/modules/help_topics/help_topics/book.configuring.html.twig b/core/modules/help_topics/help_topics/book.configuring.html.twig
index e92143fc69..74bd6e105b 100644
--- a/core/modules/help_topics/help_topics/book.configuring.html.twig
+++ b/core/modules/help_topics/help_topics/book.configuring.html.twig
@@ -6,12 +6,13 @@ related:
   - book.creating
   - book.organizing
 ---
-{% set settings = render_var(url('book.settings')) %}
+{% set settings_link_text %}{% trans %}Settings{% endtrans %}{% endset %}
+{% set settings_link = render_var(help_route_link(settings_link_text, 'book.settings')) %}
 <h2>{% trans %}Goal{% endtrans %}</h2>
 <p>{% trans %}Configure settings related to books.{% endtrans %}</p>
 <h2>{% trans %}Steps{% endtrans %}</h2>
 <ol>
-  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Structure</em> &gt; <em>Books</em> &gt; <a href="{{ settings }}"><em>Settings</em></a>.{% endtrans %}</li>
+  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Structure</em> &gt; <em>Books</em> &gt; <em>{{ settings_link }}</em>.{% endtrans %}</li>
   <li>{% trans %}Check all of the content types that you would like to use as book pages in the <em>Content types allowed in book outlines</em> field.{% endtrans %}</li>
   <li>{% trans %}In the <em>Content type for the Add child page link</em> field, select the content type that will be created from the <em>Add child page</em> link on a book page.{% endtrans %}</li>
   <li>{% trans %}Click <em>Save configuration</em>.{% endtrans %}</li>
diff --git a/core/modules/help_topics/help_topics/book.organizing.html.twig b/core/modules/help_topics/help_topics/book.organizing.html.twig
index a07774b4c2..abda65fa74 100644
--- a/core/modules/help_topics/help_topics/book.organizing.html.twig
+++ b/core/modules/help_topics/help_topics/book.organizing.html.twig
@@ -6,12 +6,13 @@ related:
   - book.creating
   - book.configuring
 ---
-{% set overview = render_var(url('book.admin')) %}
+{% set overview_link_text %}{% trans %}Books{% endtrans %}{% endset %}
+{% set overview_link = render_var(help_route_link(overview_link_text, 'book.admin')) %}
 <h2>{% trans %}Goal{% endtrans %}</h2>
 <p>{% trans %}Change the order and titles of pages within a book.{% endtrans %}</p>
 <h2>{% trans %}Steps{% endtrans %}</h2>
 <ol>
-  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Structure</em> &gt; <a href="{{ overview }}"><em>Books</em></a>.{% endtrans %}</li>
+  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Structure</em> &gt; <em>{{ overview_link }}</em>.{% endtrans %}</li>
   <li>{% trans %}Click <em>Edit order and titles</em> for the book you would like to change.{% endtrans %}</li>
   <li>{% trans %}Drag the book pages to the desired order.{% endtrans %}</li>
   <li>{% trans %}If desired, enter new text for one or more of the page titles within the book.{% endtrans %}</li>
diff --git a/core/modules/help_topics/help_topics/config.export_full.html.twig b/core/modules/help_topics/help_topics/config.export_full.html.twig
index cc8f0b772d..ed07aa9d63 100644
--- a/core/modules/help_topics/help_topics/config.export_full.html.twig
+++ b/core/modules/help_topics/help_topics/config.export_full.html.twig
@@ -6,12 +6,13 @@ related:
 - config.export_single
 - config.import_single
 ---
-{% set export = render_var(url('config.export_full')) %}
+{% set export_link_text %}{% trans %}Export{% endtrans %}{% endset %}
+{% set export_link = render_var(help_route_link(export_link_text, 'config.export_full')) %}
 {% set config_overview_topic = render_var(help_topic_link('core.config_overview')) %}
 <h2>{% trans %}Goal{% endtrans %}</h2>
 <p>{% trans %}Create and download an archive containing all your site's configuration, exported as YAML files. See {{ config_overview_topic }} for more information about configuration.{% endtrans %}</p>
 <h2>{% trans %}Steps{% endtrans %}</h2>
 <ol>
-  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Configuration</em> &gt; <em>Development</em> &gt; <em>Configuration synchronization</em> &gt; <a href="{{ export }}"><em>Export</em></a>.{% endtrans %}</li>
+  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Configuration</em> &gt; <em>Development</em> &gt; <em>Configuration synchronization</em> &gt; <em>{{ export_link }}</em>.{% endtrans %}</li>
   <li>{% trans %}Click <em>Export</em> and save the archive file.{% endtrans %}</li>
 </ol>
diff --git a/core/modules/help_topics/help_topics/config.export_single.html.twig b/core/modules/help_topics/help_topics/config.export_single.html.twig
index 290197a3c8..c05aca091d 100644
--- a/core/modules/help_topics/help_topics/config.export_single.html.twig
+++ b/core/modules/help_topics/help_topics/config.export_single.html.twig
@@ -6,13 +6,14 @@ related:
 - config.import_full
 - config.import_single
 ---
-{% set single_export = render_var(url('config.export_single')) %}
+{% set single_export_link_text %}{% trans %}Single item{% endtrans %}{% endset %}
+{% set single_export_link = render_var(help_route_link(single_export_link_text, 'config.export_single')) %}
 {% set config_overview_topic = render_var(help_topic_link('core.config_overview')) %}
 <h2>{% trans %}Goal{% endtrans %}</h2>
 <p>{% trans %}Export a single configuration item to a file. See {{ config_overview_topic }} for more information about configuration.{% endtrans %}</p>
 <h2>{% trans %}Steps{% endtrans %}</h2>
 <ol>
-  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Configuration</em> &gt; <em>Development</em> &gt; <em>Configuration synchronization</em> &gt; <em>Export</em> &gt; <em><a href="{{ single_export }}">Single item</a></em>.{% endtrans %}</li>
+  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Configuration</em> &gt; <em>Development</em> &gt; <em>Configuration synchronization</em> &gt; <em>Export</em> &gt; <em>{{ single_export_link }}</em>.{% endtrans %}</li>
   <li>{% trans %}Select the <em>Configuration type</em> that you want to export, and then select the specific <em>Configuration name</em> to export.{% endtrans %}</li>
   <li>{% trans %}Use your browser to copy the text in the box marked <em>Here is your configuration</em> to the clipboard.{% endtrans %}</li>
   <li>{% trans %}Paste the copied text into a plain-text editor on your computer or other device, and save it using the suggested file name below the text box.{% endtrans %}
diff --git a/core/modules/help_topics/help_topics/config.import_full.html.twig b/core/modules/help_topics/help_topics/config.import_full.html.twig
index 302de56db2..c9ce262280 100644
--- a/core/modules/help_topics/help_topics/config.import_full.html.twig
+++ b/core/modules/help_topics/help_topics/config.import_full.html.twig
@@ -6,14 +6,15 @@ related:
 - config.import_single
 - config.export_single
 ---
-{% set import_page = render_var(url('config.import_full')) %}
+{% set import_link_text %}{% trans %}Import{% endtrans %}{% endset %}
+{% set import_link = render_var(help_route_link(import_link_text, 'config.import_full')) %}
 {% set export_full_topic = render_var(help_topic_link('config.export_full')) %}
 {% set config_overview_topic = render_var(help_topic_link('core.config_overview')) %}
 <h2>{% trans %}Goal{% endtrans %}</h2>
 <p>{% trans %}Import the complete configuration of your site from an archive file, such as one that was previously exported (see {{ export_full_topic }}). See {{ config_overview_topic }} for more information about configuration.{% endtrans %}</p>
 <h2>{% trans %}Steps{% endtrans %}</h2>
 <ol>
-  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Configuration</em> &gt; <em>Development</em> &gt; <em>Configuration synchronization</em> &gt; <em><a href="{{ import_page }}">Import</a></em>.{% endtrans %}</li>
+  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Configuration</em> &gt; <em>Development</em> &gt; <em>Configuration synchronization</em> &gt; <em>{{ import_link }}</em>.{% endtrans %}</li>
   <li>{% trans %}Browse to find the <em>Configuration archive</em> that you want to import.{% endtrans %}</li>
   <li>{% trans %}Click <em>Upload</em>. Your configuration archive will be unpacked and placed in the configuration synchronization directory, and you will be redirected to the <em>Synchronize</em> page.{% endtrans %}</li>
   <li>{% trans %}Review the differences between your uploaded configuration and the active configuration, if any, and click <em>Import all</em> to import the changes.{% endtrans %}</li>
diff --git a/core/modules/help_topics/help_topics/config.import_single.html.twig b/core/modules/help_topics/help_topics/config.import_single.html.twig
index 0593963c86..759eca3adf 100644
--- a/core/modules/help_topics/help_topics/config.import_single.html.twig
+++ b/core/modules/help_topics/help_topics/config.import_single.html.twig
@@ -6,14 +6,15 @@ related:
 - config.import_full
 - config.export_single
 ---
-{% set single_import = render_var(url('config.import_single')) %}
+{% set single_import_link_text %}{% trans %}Single item{% endtrans %}{% endset %}
+{% set single_import_link = render_var(help_route_link(single_import_link_text, 'config.import_single')) %}
 {% set export_single_topic = render_var(help_topic_link('config.export_single')) %}
 {% set config_overview_topic = render_var(help_topic_link('core.config_overview')) %}
 <h2>{% trans %}Goal{% endtrans %}</h2>
 <p>{% trans %}Import a single configuration item in YAML format, such as one that was previously exported (see {{ export_single_topic }}). See {{ config_overview_topic }} for more information about configuration.{% endtrans %}</p>
 <h2>{% trans %}Steps{% endtrans %}</h2>
 <ol>
-  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Configuration</em> &gt; <em>Development</em> &gt; <em>Configuration synchronization</em> &gt; <em>Import</em> &gt; <a href="{{ single_import }}"><em>Single item</em></a>.{% endtrans %}</li>
+  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Configuration</em> &gt; <em>Development</em> &gt; <em>Configuration synchronization</em> &gt; <em>Import</em> &gt; <em>{{ single_import_link }}</em>.{% endtrans %}</li>
   <li>{% trans %}Select the <em>Configuration type</em> that you want to import.{% endtrans %}</li>
   <li>{% trans %}On your computer or other device, copy the YAML-format configuration that you want to import to the clipboard.{% endtrans %}</li>
   <li>{% trans %}Paste the clipboard text into the box labeled <em>Paste your configuration here</em>.{% endtrans %}</li>
diff --git a/core/modules/help_topics/help_topics/config_translation.overview.html.twig b/core/modules/help_topics/help_topics/config_translation.overview.html.twig
index 1d899e1e47..d543aedf9a 100644
--- a/core/modules/help_topics/help_topics/config_translation.overview.html.twig
+++ b/core/modules/help_topics/help_topics/config_translation.overview.html.twig
@@ -5,14 +5,15 @@ related:
   - core.translations
   - language.add
 ---
-{% set config_translation = render_var(url('config_translation.mapper_list'))%}
+{% set config_translation_link_text %}{% trans %}Configuration translation{% endtrans %}{% endset %}
+{% set config_translation_link = render_var(help_route_link(config_translation_link_text, 'config_translation.mapper_list'))%}
 {% set config_overview_topic = render_var(help_topic_link('core.config_overview')) %}
 {% set language_add_topic = render_var(help_topic_link('language.add')) %}
 <h2>{% trans %}Goal{% endtrans %}</h2>
 <p>{% trans %}Translate your site configuration to another language. See {{ language_add_topic }} if you need to add a new language.{% endtrans %}</p>
 <h2>{% trans %}Steps{% endtrans %}</h2>
 <ol>
-  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Configuration</em> &gt; <em>Regional and language</em> &gt; <a href="{{ config_translation }}"><em>Configuration translation</em></a>.{% endtrans %}</li>
+  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Configuration</em> &gt; <em>Regional and language</em> &gt; <em>{{ config_translation_link }}</em>.{% endtrans %}</li>
   <li>{% trans %}Find either the configuration entity type or the simple configuration item that you want to translate in the <em>Label</em> column of the list. Click <em>List</em> under <em>Operations</em> for a configuration entity, or <em>Translate</em> for simple configuration. (See {{ config_overview_topic }} to learn more about types of configuration and configuration entities.){% endtrans %}</li>
   <li>{% trans %}For configuration entities, find the specific entity that you want to translate on the next page, and click <em>Translate</em> under <em>Operations</em>.{% endtrans %}</li>
   <li>{% trans %}Enter translations for the translatable text fields for the configuration item, and save.{% endtrans %}</li>
diff --git a/core/modules/help_topics/help_topics/contact.adding_fields.html.twig b/core/modules/help_topics/help_topics/contact.adding_fields.html.twig
index 3c76ddb1a1..70c881d79e 100644
--- a/core/modules/help_topics/help_topics/contact.adding_fields.html.twig
+++ b/core/modules/help_topics/help_topics/contact.adding_fields.html.twig
@@ -3,14 +3,15 @@ label: 'Managing the fields of contact forms'
 related:
   - contact.overview
 ---
-{% set contact_url = render_var(url('entity.contact_form.collection')) %}
+{% set contact_link_text %}{% trans %}Contact forms{% endtrans %}{% endset %}
+{% set contact_link = render_var(help_route_link(contact_link_text, 'entity.contact_form.collection')) %}
 <h2>{% trans %}Goal{% endtrans %}</h2>
 <p>{% trans %}Add, remove, or rearrange the fields on personal and site-wide contact forms.{% endtrans %}</p>
 <h2>{% trans %}What are the fields on contact forms?{% endtrans %}</h2>
 <p>{% trans %}Both personal and site-wide contact forms will always have <em>Subject</em> and <em>Message</em> fields. You can add additional fields for users to fill out if desired. Note that if you want to display other content on a form page, such as text or images, you can use a custom block.{% endtrans %}</p>
 <h2>{% trans %}Steps{% endtrans %}</h2>
 <ol>
-  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Structure</em> &gt; <a href="{{ contact_url }}"><em>Contact forms</em></a>.{% endtrans %}</li>
+  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Structure</em> &gt; <em>{{ contact_link }}</em>.{% endtrans %}</li>
   <li>{% trans %}Click <em>Manage fields</em> for the form you want to change the fields of, and add or remove one or more fields on the form.{% endtrans %}</li>
   <li>{% trans %}Click <em>Manage form display</em> to change the order or configuration of the fields on the form.{% endtrans %}</li>
 </ol>
diff --git a/core/modules/help_topics/help_topics/contact.configuring_personal.html.twig b/core/modules/help_topics/help_topics/contact.configuring_personal.html.twig
index 34d5f3ab47..9c270610a1 100644
--- a/core/modules/help_topics/help_topics/contact.configuring_personal.html.twig
+++ b/core/modules/help_topics/help_topics/contact.configuring_personal.html.twig
@@ -4,17 +4,19 @@ related:
   - contact.overview
   - contact.adding_fields
 ---
-{% set config_url = render_var(url('entity.user.admin_form')) %}
-{% set permission_url = render_var(url('user.admin_permissions')) %}
+{% set config_link_text %}{% trans %}Account settings{% endtrans %}{% endset %}
+{% set config_link = render_var(help_route_link(config_link_text, 'entity.user.admin_form')) %}
+{% set permission_link_text %}{% trans %}Permissions{% endtrans %}{% endset %}
+{% set permission_link = render_var(help_route_link(permission_link_text, 'user.admin_permissions')) %}
 {% set adding_fields_topic = render_var(help_topic_link('contact.adding_fields')) %}
 <h2>{% trans %}Goal{% endtrans %}</h2>
 <p>{% trans %}Configure personal contact forms for registered users on the website.{% endtrans %}</p>
 <h2>{% trans %}Steps{% endtrans %}</h2>
 <ol>
-  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Configuration</em> &gt; <em>People</em> &gt; <a href="{{ config_url }}"><em>Account settings</em></a>.{% endtrans %}</li>
+  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Configuration</em> &gt; <em>People</em> &gt; <em>{{ config_link }}</em>.{% endtrans %}</li>
   <li>{% trans %}In the <em>Contact settings</em> section, check/uncheck the box to enable/disable the contact form for new user accounts.{% endtrans %}</li>
   <li>{% trans %}Click <em>Save configuration</em>.{% endtrans %}</li>
-  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>People</em> &gt; <a href="{{ permission_url }}"><em>Permissions</em></a>.{% endtrans %}</li>
+  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>People</em> &gt; <em>{{ permission_link }}</em>.{% endtrans %}</li>
   <li>{% trans %}Verify that permissions are correct for your site's roles, including the generic <em>Anonymous user</em> and <em>Authenticated user</em>. In order to use personal contact forms, users need both <em>View user information</em> (in the <em>User</em> section, which enables them to view user profiles) and <em>Use users' personal contact forms</em> (in the <em>Contact</em> section, which enables them to use contact forms if they can view user profiles).{% endtrans %}</li>
   <li>{% trans %}Click <em>Save permissions</em>.{% endtrans %}</li>
   <li>{% trans %}The contact form will always have <em>Subject</em> and <em>Message</em> fields. If you want to add more fields, follow the steps in {{ adding_fields_topic }}.{% endtrans %}</li>
diff --git a/core/modules/help_topics/help_topics/contact.creating.html.twig b/core/modules/help_topics/help_topics/contact.creating.html.twig
index e4e990d256..d8bf35b54a 100644
--- a/core/modules/help_topics/help_topics/contact.creating.html.twig
+++ b/core/modules/help_topics/help_topics/contact.creating.html.twig
@@ -5,13 +5,14 @@ related:
   - contact.adding_fields
   - contact.setting_default
 ---
-{% set contact_url = render_var(url('entity.contact_form.collection')) %}
+{% set contact_link_text %}{% trans %}Contact forms{% endtrans %}{% endset %}
+{% set contact_link = render_var(help_route_link(contact_link_text, 'entity.contact_form.collection')) %}
 {% set adding_fields_topic = render_var(help_topic_link('contact.adding_fields')) %}
 <h2>{% trans %}Goal{% endtrans %}</h2>
 <p>{% trans %}Create a new site-wide contact form.{% endtrans %}</p>
 <h2>{% trans %}Steps{% endtrans %}</h2>
 <ol>
-  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Structure</em> &gt; <a href="{{ contact_url }}"><em>Contact forms</em></a>.{% endtrans %}</li>
+  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Structure</em> &gt; <em>{{ contact_link }}</em>.{% endtrans %}</li>
   <li>{% trans %}Click <em>Add contact form</em>.{% endtrans %}</li>
   <li>{% trans %}Fill in the <em>Label</em> (title) for the form, <em>Recipients</em>, and optionally the other settings.{% endtrans %}</li>
   <li>{% trans %}Click <em>Save</em>. You should see your new contact form in the table, along with a link to view it.{% endtrans %}</li>
diff --git a/core/modules/help_topics/help_topics/contact.setting_default.html.twig b/core/modules/help_topics/help_topics/contact.setting_default.html.twig
index a1ccf8e674..00e4febb2b 100644
--- a/core/modules/help_topics/help_topics/contact.setting_default.html.twig
+++ b/core/modules/help_topics/help_topics/contact.setting_default.html.twig
@@ -3,12 +3,13 @@ label: 'Setting a default contact form'
 related:
   - contact.overview
 ---
-{% set contact_url = render_var(url('entity.contact_form.collection')) %}
+{% set contact_link_text %}{% trans %}Contact forms{% endtrans %}{% endset %}
+{% set contact_link = render_var(help_route_link(contact_link_text, 'entity.contact_form.collection')) %}
 <h2>{% trans %}Goal{% endtrans %}</h2>
 <p>{% trans %}Set a site-wide contact form to be the default contact form (the form that is shown on the <em>/contact</em> URL).{% endtrans %}</p>
 <h2>{% trans %}Steps{% endtrans %}</h2>
 <ol>
-  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Structure</em> &gt; <a href="{{ contact_url }}"><em>Contact forms</em></a>.{% endtrans %}</li>
+  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Structure</em> &gt; <em>{{ contact_link }}</em>.{% endtrans %}</li>
   <li>{% trans %}Click <em>Edit</em> for the site-wide form you want to be the default.{% endtrans %}</li>
   <li>{% trans %}Check <em>Make this the default form</em> and click <em>Save</em>.{% endtrans %}</li>
 </ol>
diff --git a/core/modules/help_topics/help_topics/content_translation.overview.html.twig b/core/modules/help_topics/help_topics/content_translation.overview.html.twig
index 317846d734..00c9198447 100644
--- a/core/modules/help_topics/help_topics/content_translation.overview.html.twig
+++ b/core/modules/help_topics/help_topics/content_translation.overview.html.twig
@@ -4,13 +4,14 @@ related:
   - core.translations
   - language.add
 ---
-{% set translation_settings = render_var(url('language.content_settings_page')) %}
+{% set translation_settings_link_text %}{% trans %}Content language and translation{% endtrans %}{% endset %}
+{% set translation_settings_link = render_var(help_route_link(translation_settings_link_text, 'language.content_settings_page')) %}
 {% set content_structure_topic = render_var(help_topic_link('core.content_structure')) %}
 <h2>{% trans %}Goal{% endtrans %}</h2>
 <p>{% trans %}Configure language and translation settings for one or more content entity types (see {{ content_structure_topic }} for an overview of content entities). To do this, you must have at least two languages configured. Afterwards, you will have a <em>Translate</em> operation available for your content entities, either as a tab or link when you are viewing or editing content, or on content administration pages.{% endtrans %}</p>
 <h2>{% trans %}Steps{% endtrans %}</h2>
 <ol>
-  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Configuration</em> &gt; <em>Regional and language</em> &gt; <a href="{{ translation_settings }}"><em>Content language and translation</em></a>.{% endtrans %}</li>
+  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Configuration</em> &gt; <em>Regional and language</em> &gt; <em>{{ translation_settings_link }}</em>.{% endtrans %}</li>
   <li>{% trans %}Under <em>Custom language settings</em>, find the content entity types that should have customized language settings on your site. Check the box next to each one. A section will appear below the list with settings for that entity type.{% endtrans %}</li>
   <li>{% trans %}For each entity type you checked, in the settings section below check the boxes for each entity sub-type that should be <em>Translatable</em> on your site. If the entity type does not have sub-types, there is just one check box for the entity type as a whole.{% endtrans %}</li>
   <li>{% trans %}For each entity type or subtype, select the <em>Default language</em>. Also, if you want to have languages other than the default available when you create content, check <em>Show language selector on create and edit pages</em>.{% endtrans %}</li>
diff --git a/core/modules/help_topics/help_topics/core.cron.html.twig b/core/modules/help_topics/help_topics/core.cron.html.twig
index 0e94a38e02..1c310e51a1 100644
--- a/core/modules/help_topics/help_topics/core.cron.html.twig
+++ b/core/modules/help_topics/help_topics/core.cron.html.twig
@@ -3,7 +3,8 @@ label: 'Running and configuring cron'
 related:
   - core.maintenance
 ---
-{% set cron = render_var(url('system.cron_settings')) %}
+{% set cron_link_text %}{% trans %}Cron{% endtrans %}{% endset %}
+{% set cron_link = render_var(help_route_link(cron_link_text, 'system.cron_settings')) %}
 <h2>{% trans %}Goal{% endtrans %}</h2>
 <p>{% trans %}Configure your system so that cron will run automatically.{% endtrans %}</p>
 <h2>{% trans %}What are cron tasks?{% endtrans %}</h2>
@@ -16,7 +17,7 @@ related:
 </ul>
 <h2>{% trans %}Steps{% endtrans %}</h2>
 <ol>
-  <li>{% trans %}In the <em>Manage</em> administration menu, navigate to <em>Configuration</em> &gt; <em>System</em> &gt; <a href="{{ cron }}"><em>Cron</em></a>. Note the <em>Last run</em> time on the page.{% endtrans %}</li>
+  <li>{% trans %}In the <em>Manage</em> administration menu, navigate to <em>Configuration</em> &gt; <em>System</em> &gt; <em>{{ cron_link }}</em>. Note the <em>Last run</em> time on the page.{% endtrans %}</li>
   <li>{% trans %}If you want to run cron right now, click <em>Run cron</em> and wait for cron to finish.{% endtrans %}</li>
   <li>{% trans %}If you have a way to configure tasks on your web server, copy the link where it says <em>To run cron from outside the site, go to</em>. Set up a task to visit that URL on your desired cron schedule, such as once an hour or once a week. (On Linux-like servers, you can use the <em>wget</em> command to visit a URL.) If you configure an outside task, you should uninstall the Automated Cron module.{% endtrans %}</li>
   <li>{% trans %}If you are not configuring an outside task, and you have the core Automated Cron module installed, select a schedule for automated cron runs in <em>Cron settings</em> &gt; <em>Run cron every</em>. Click <em>Save configuration</em>.{% endtrans %}</li>
diff --git a/core/modules/help_topics/help_topics/core.security.html.twig b/core/modules/help_topics/help_topics/core.security.html.twig
index 81b684cd21..bf78ba36ff 100644
--- a/core/modules/help_topics/help_topics/core.security.html.twig
+++ b/core/modules/help_topics/help_topics/core.security.html.twig
@@ -4,9 +4,12 @@ top_level: true
 ---
 <h2>{% trans %}What are security updates?{% endtrans %}</h2>
 <p>{% trans %}Any software occasionally has bugs, and sometimes these bugs have security implications. When security bugs are fixed in the core software, modules, or themes that your site uses, they are released in a <em>security update</em>. You will need to apply security updates in order to keep your site secure.{% endtrans %}</p>
+<h2>{% trans %}What are security advisories?{% endtrans %}</h2>
+<p>{% trans %}A security advisory is a public announcement about a reported security problem in the core software. Contributed projects with a shield icon and "Stable releases for this project are covered by the security advisory policy" on their project page are also covered by Drupal's security advisory policy. Security advisories are managed by the <a href="https://www.drupal.org/drupal-security-team">Drupal Security Team</a>.{% endtrans %}</p>
 <h2>{% trans %}Security tasks{% endtrans %}</h2>
 <p>{% trans %}Keeping track of updates, updating the core software, and updating contributed modules and/or themes are all part of keeping your site secure. See the related topics listed below for specific tasks.{% endtrans %}</p>
 <h2>{% trans %}Additional resources{% endtrans %}</h2>
 <ul>
     <li>{% trans %}<a href="https://www.drupal.org/docs/user_guide/en/security-chapter.html">Security and Maintenance chapter in the User Guide</a>{% endtrans %}</li>
+  <li>{% trans %}<a href="https://www.drupal.org/drupal-security-team/security-advisory-process-and-permissions-policy">Security advisory process and permissions policy</a>{% endtrans %}</li>
 </ul>
diff --git a/core/modules/help_topics/help_topics/editor.overview.html.twig b/core/modules/help_topics/help_topics/editor.overview.html.twig
index 245fc24f4c..5712620e9a 100644
--- a/core/modules/help_topics/help_topics/editor.overview.html.twig
+++ b/core/modules/help_topics/help_topics/editor.overview.html.twig
@@ -6,14 +6,15 @@ related:
   - filter.overview
 ---
 {% set filter_overview_topic = render_var(help_topic_link('filter.overview')) %}
-{% set content_url = render_var(url('filter.admin_overview')) %}
+{% set overview_link_text %}{% trans %}Text formats and editors{% endtrans %}{% endset %}
+{% set overview_link = render_var(help_route_link(overview_link_text, 'filter.admin_overview')) %}
 <h2>{% trans %}Goal{% endtrans %}</h2>
 <p>{% trans %}Configure a text format so that when a user is editing text and selects this text format, a text editor installed on your site is shown. Configure the text editor, such as choosing which buttons and functions are available. See {{ filter_overview_topic }} for more about text formats.{% endtrans %}</p>
 <h2>{% trans %}What is a text editor?{% endtrans %}</h2>
 <p>{% trans %}A text editor is software (typically, a JavaScript library) that provides buttons and other command mechanisms to make editing HTML text easier. Some editors are called <em>visual</em> or <em>WYSIWYG (What You See Is What You Get)</em> editors; these editors hide the details of HTML from the user, and instead show formatted output on the screen. The core Text Editor module provides a framework for deploying text editors on your site. The core CKEditor 5 module provides CKEditor 5, which is a widely-used JavaScript text editor that creates clean and valid HTML; the module also enforces the HTML tag restrictions in the associated text format. Various contributed modules provide other editors; to install a new editor, besides installing the module, you may need to download the editor library from a third-party site.{% endtrans %}</p>
 <h2>{% trans %}Steps{% endtrans %}</h2>
 <ol>
-  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Configuration</em> &gt; <em>Content Authoring</em> &gt; <a href="{{ content_url }}"><em>Text formats and editors</em></a>. The <em>Text editor</em> column in the table shows the text editor that is currently connected to each text format, if any.{% endtrans %}</li>
+  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Configuration</em> &gt; <em>Content Authoring</em> &gt; <em>{{ overview_link }}</em>. The <em>Text editor</em> column in the table shows the text editor that is currently connected to each text format, if any.{% endtrans %}</li>
   <li>{% trans %}Follow the steps on {{ filter_overview_topic }} to add a new text format or configure an existing text format; when you reach the step about text editors, return to this topic.{% endtrans %}</li>
   <li>{% trans %}Select <em>CKEditor 5</em> as the <em>Text editor</em>, or another text editor that you have installed. The rest of these steps assume you selected <em>CKEditor 5</em>.{% endtrans %}</li>
   <li>{% trans %}Under <em>Toolbar configuration</em>, drag buttons between <em>Available buttons</em> and <em>Active toolbar</em>; only buttons in <em>Active toolbar</em> will be shown to the user. Focusing or hovering over a button will display a tooltip explaining what the button does.{% endtrans %}</li>
diff --git a/core/modules/help_topics/help_topics/field_ui.add_field.html.twig b/core/modules/help_topics/help_topics/field_ui.add_field.html.twig
index 2672450e17..25776b1764 100644
--- a/core/modules/help_topics/help_topics/field_ui.add_field.html.twig
+++ b/core/modules/help_topics/help_topics/field_ui.add_field.html.twig
@@ -5,13 +5,14 @@ related:
   - field_ui.manage_display
   - field_ui.manage_form
 ---
-{% set content_types = render_var(url('entity.node_type.collection')) %}
+{% set content_types_link_text %}{% trans %}Content types{% endtrans %}{% endset %}
+{% set content_types_link = render_var(help_route_link(content_types_link_text, 'entity.node_type.collection')) %}
 {% set content_structure_topic = render_var(help_topic_link('core.content_structure')) %}
 <h2>{% trans %}Goal{% endtrans %}</h2>
 <p>{% trans %}Add a field to an entity sub-type; see {{ content_structure_topic }} for an overview of entity types and sub-types, as well as an overview of field types.{% endtrans %}</p>
 <h2>{% trans %}Steps{% endtrans %}</h2>
 <ol>
-  <li>{% trans %}Navigate to the page for managing the entity sub-type you want to add the field to. For example, to add a field to a content type, in the <em>Manage</em> administrative menu, navigate to <em>Structure</em> &gt; <a href="{{ content_types }}"><em>Content types</em></a>.{% endtrans %}</li>
+  <li>{% trans %}Navigate to the page for managing the entity sub-type you want to add the field to. For example, to add a field to a content type, in the <em>Manage</em> administrative menu, navigate to <em>Structure</em> &gt; <em>{{ content_types_link }}</em>.{% endtrans %}</li>
   <li>{% trans %}Find the particular sub-type that you want to add the field to, and click <em>Manage fields</em>.{% endtrans %}</li>
   <li>{% trans %}Click <em>Add field</em>.{% endtrans %}</li>
   <li>{% trans %}In <em>Add a new field</em>, select the type of field you want to add; see {{ content_structure_topic }} for an overview of field types.{% endtrans %}</li>
diff --git a/core/modules/help_topics/help_topics/field_ui.manage_display.html.twig b/core/modules/help_topics/help_topics/field_ui.manage_display.html.twig
index 10bd1b55ae..8990743b2c 100644
--- a/core/modules/help_topics/help_topics/field_ui.manage_display.html.twig
+++ b/core/modules/help_topics/help_topics/field_ui.manage_display.html.twig
@@ -6,13 +6,14 @@ related:
   - field_ui.manage_form
   - core.ui_accessibility
 ---
-{% set content_types = render_var(url('entity.node_type.collection')) %}
+{% set content_types_link_text %}{% trans %}Content types{% endtrans %}{% endset %}
+{% set content_types_link = render_var(help_route_link(content_types_link_text, 'entity.node_type.collection')) %}
 {% set content_structure_topic = render_var(help_topic_link('core.content_structure')) %}
 <h2>{% trans %}Goal{% endtrans %}</h2>
 <p>{% trans %}Configure the <em>formatters</em> used to display the fields of an entity sub-type, their order in the display, and the formatter settings. See {{ content_structure_topic }} for background information.{% endtrans %}</p>
 <h2>{% trans %}Steps{% endtrans %}</h2>
 <ol>
-  <li>{% trans %}Navigate to the page for managing the entity type you want to add the field to. For example, to add a field to a content type, in the <em>Manage</em> administrative menu, navigate to <em>Structure</em> &gt; <a href="{{ content_types }}"><em>Content types</em></a>.{% endtrans %}</li>
+  <li>{% trans %}Navigate to the page for managing the entity type you want to add the field to. For example, to add a field to a content type, in the <em>Manage</em> administrative menu, navigate to <em>Structure</em> &gt; <em>{{ content_types_link }}</em>.{% endtrans %}</li>
   <li>{% trans %}Find the particular sub-type that you want to configure the display of, and click <em>Manage display</em> in the <em>Operations</em> list.{% endtrans %}</li>
   <li>{% trans %}Use the drag arrows to order the fields in your preferred order.{% endtrans %}</li>
   <li>{% trans %}Drag any fields that you do not wish to see in the display to the <em>Disabled</em> section.{% endtrans %}</li>
diff --git a/core/modules/help_topics/help_topics/field_ui.manage_form.html.twig b/core/modules/help_topics/help_topics/field_ui.manage_form.html.twig
index e3bacec71f..6b7f592207 100644
--- a/core/modules/help_topics/help_topics/field_ui.manage_form.html.twig
+++ b/core/modules/help_topics/help_topics/field_ui.manage_form.html.twig
@@ -6,13 +6,14 @@ related:
   - field_ui.manage_display
   - core.ui_accessibility
 ---
-{% set content_types = render_var(url('entity.node_type.collection')) %}
+{% set content_types_link_text %}{% trans %}Content types{% endtrans %}{% endset %}
+{% set content_types_link = render_var(help_route_link(content_types_link_text, 'entity.node_type.collection')) %}
 {% set content_structure_topic = render_var(help_topic_link('core.content_structure')) %}
 <h2>{% trans %}Goal{% endtrans %}</h2>
 <p>{% trans %}Configure the <em>widgets</em> used to edit the fields of an entity sub-type, their order on the form, and the widget settings. See {{ content_structure_topic }} for background information.{% endtrans %}</p>
 <h2>{% trans %}Steps{% endtrans %}</h2>
 <ol>
-  <li>{% trans %}Navigate to the page for managing the entity type you want to add the field to. For example, to add a field to a content type, in the <em>Manage</em> administrative menu, navigate to <em>Structure</em> &gt; <a href="{{ content_types }}"><em>Content types</em></a>.{% endtrans %}</li>
+  <li>{% trans %}Navigate to the page for managing the entity type you want to add the field to. For example, to add a field to a content type, in the <em>Manage</em> administrative menu, navigate to <em>Structure</em> &gt; <em>{{ content_types_link }}</em>.{% endtrans %}</li>
   <li>{% trans %}Find the particular sub-type that you want to configure the editing form for, and click <em>Manage form display</em> in the <em>Operations</em> list.{% endtrans %}</li>
   <li>{% trans %}Use the drag arrows to order the fields in your preferred order.{% endtrans %}</li>
   <li>{% trans %}Drag any fields that you do not wish to see on the editing form to the <em>Disabled</em> section.{% endtrans %}</li>
diff --git a/core/modules/help_topics/help_topics/field_ui.reference_field.html.twig b/core/modules/help_topics/help_topics/field_ui.reference_field.html.twig
index 4d5ddcee07..22a0048c65 100644
--- a/core/modules/help_topics/help_topics/field_ui.reference_field.html.twig
+++ b/core/modules/help_topics/help_topics/field_ui.reference_field.html.twig
@@ -7,12 +7,13 @@ related:
   - field_ui.manage_form
 ---
 {% set content_structure_topic = render_var(help_topic_link('core.content_structure')) %}
-{% set content_types = render_var(url('entity.node_type.collection')) %}
+{% set content_types_link_text %}{% trans %}Content types{% endtrans %}{% endset %}
+{% set content_types_link = render_var(help_route_link(content_types_link_text, 'entity.node_type.collection')) %}
 <h2>{% trans %}Goal{% endtrans %}</h2>
 <p>{% trans %}Add an entity reference field to an entity sub-type; see {{ content_structure_topic }} for more information on entities and reference fields.{% endtrans %}</p>
 <h2>{% trans %}Steps{% endtrans %}</h2>
 <ol>
-  <li>{% trans %}Navigate to the page for managing the entity sub-type you want to add the field to. For example, to add a field to a content type, in the <em>Manage</em> administrative menu, navigate to <em>Structure</em> &gt; <a href="{{ content_types }}"><em>Content types</em></a>.{% endtrans %}</li>
+  <li>{% trans %}Navigate to the page for managing the entity sub-type you want to add the field to. For example, to add a field to a content type, in the <em>Manage</em> administrative menu, navigate to <em>Structure</em> &gt; <em>{{ content_types_link }}</em>.{% endtrans %}</li>
   <li>{% trans %}Find the particular sub-type that you want to add the field to, and click <em>Manage fields</em>.{% endtrans %}</li>
   <li>{% trans %}Click <em>Add field</em>.{% endtrans %}</li>
   <li>{% trans %}In <em>Add a new field</em>, select the type of reference field you want to add. The <em>Reference</em> section of the select list shows the most common types of reference field; choose <em>Other...</em> if the entity type you want to reference is not listed.{% endtrans %}</li>
diff --git a/core/modules/help_topics/help_topics/filter.overview.html.twig b/core/modules/help_topics/help_topics/filter.overview.html.twig
index 8beb2a7d96..b796156df7 100644
--- a/core/modules/help_topics/help_topics/filter.overview.html.twig
+++ b/core/modules/help_topics/help_topics/filter.overview.html.twig
@@ -7,7 +7,8 @@ related:
   - field_ui.manage_display
   - field_ui.add_field
 ---
-{% set content_url = render_var(url('filter.admin_overview')) %}
+{% set overview_link_text %}{% trans %}Text formats and editors{% endtrans %}{% endset %}
+{% set overview_link = render_var(help_route_link(overview_link_text, 'filter.admin_overview')) %}
 <h2>{% trans %}Goal{% endtrans %}</h2>
 <p>{% trans %}Configure text formats on the site.{% endtrans %}</p>
 <h2>{% trans %}What are text filters and text formats?{% endtrans %}</h2>
@@ -27,7 +28,7 @@ related:
 </dl>
 <h2>{% trans %}Steps{% endtrans %}</h2>
 <ol>
-  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Configuration</em> &gt; <em>Content Authoring</em> &gt; <a href="{{ content_url }}"><em>Text formats and editors</em></a>. If you do not have the core Text Editor module installed, the menu link and page title will instead be <em>Text formats</em>.{% endtrans %}</li>
+  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Configuration</em> &gt; <em>Content Authoring</em> &gt; <em>{{ overview_link }}</em>. If you do not have the core Text Editor module installed, the menu link and page title will instead be <em>Text formats</em>.{% endtrans %}</li>
   <li>{% trans %}Click <em>Configure</em> to configure an existing text format, or <em>+ Add text format</em> to create a new text format.{% endtrans %}</li>
   <li>{% trans %}Enter the desired <em>Name</em> for the text format.{% endtrans %}</li>
   <li>{% trans %}Check the <em>Roles</em> that can use this text format. Some HTML tags allow users to embed malicious links or scripts in text. To ensure security, anonymous and untrusted users should only have access to text formats that restrict them to either plain text or a safe set of HTML tags. <strong>Improper text format configuration is a security risk.</strong>{% endtrans %}</li>
diff --git a/core/modules/help_topics/help_topics/forum.configuring.html.twig b/core/modules/help_topics/help_topics/forum.configuring.html.twig
index 0b2b123b13..b6b91ea775 100644
--- a/core/modules/help_topics/help_topics/forum.configuring.html.twig
+++ b/core/modules/help_topics/help_topics/forum.configuring.html.twig
@@ -3,21 +3,24 @@ label: 'Configuring forums'
 related:
   - forum.concept
 ---
-{% set settings = render_var(url('forum.settings')) %}
-{% set overview = render_var(url('forum.overview')) %}
 {% set forum_concept_topic = render_var(help_topic_link('forum.concept')) %}
-{% set index = render_var(url('forum.index')) %}
+{% set settings_link_text %}{% trans %}Settings{% endtrans %}{% endset %}
+{% set settings_link = render_var(help_route_link(settings_link_text, 'forum.settings')) %}
+{% set overview_link_text %}{% trans %}Forums{% endtrans %}{% endset %}
+{% set overview_link = render_var(help_route_link(overview_link_text, 'forum.overview')) %}
+{% set index_link_text %}{% trans %}Forums{% endtrans %}{% endset %}
+{% set index_link = render_var(help_route_link(index_link_text, 'forum.index')) %}
 <h2>{% trans %}Goal{% endtrans %}</h2>
 <p>{% trans %}Configure settings for forums, and set up forum structure.{% endtrans %}</p>
 <h2>{% trans %}Steps{% endtrans %}</h2>
 <ol>
-  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Structure</em> &gt; <em>Forums</em> &gt; <a href="{{ settings }}"><em>Settings</em></a>.{% endtrans %}</li>
+  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Structure</em> &gt; <em>Forums</em> &gt; <em>{{ settings_link }}</em>.{% endtrans %}</li>
   <li>{% trans %}Choose the desired settings for <em>Hot topic threshold</em>, <em>Topics per page</em>, and <em>Default order</em>. Click <em>Save configuration</em> if you have made any changes.{% endtrans %}</li>
-  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Structure</em> &gt; <a href="{{ overview }}"><em>Forums</em></a>.{% endtrans %}</li>
+  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Structure</em> &gt; <em>{{ overview_link }}</em>.{% endtrans %}</li>
   <li>{% trans %}Decide on the hierarchy of containers and forums you want for your site; see {{ forum_concept_topic }} for an overview of forum hierarchy.{% endtrans %}</li>
   <li>{% trans %}Create the containers that you want in your forum hierarchy, starting at the top level, if any. To create a container, click <em>Add container</em>, enter the container name and optionally other settings, and click <em>Save</em>.{% endtrans %}</li>
   <li>{% trans %}Create the forums that you want in your forum hierarchy, starting at the top level. To create a forum, click <em>Add forum</em> and enter the forum name. If your hierarchy has this forum inside a container or another forum, select the parent forum/container in the <em>Parent</em> field. Review and/or edit the other settings, and click <em>Save</em>.{% endtrans %}</li>
   <li>{% trans %}Optionally, delete the provided <em>General discussion</em> forum, if you do not want this forum to be available on your site.{% endtrans %}</li>
   <li>{% trans %}Review and/or edit the permissions related to forums. The administrative permission for editing the forum settings is in the <em>Forum</em> module section of the permissions page, and administrative permissions for editing the forum hierarchy are in the <em>Taxonomy</em> module section. The user permissions for creating forum topics are in the <em>Node</em> module section, and for commenting on topics are in the <em>Comment</em> module section.{% endtrans %}</li>
-  <li>{% trans %}Add links to the main <a href="{{ index }}"><em>Forums</em></a> page (path: <em>/forum</em>), and optionally to individual forum pages, to navigation menus on your site, so that users can find the forums.{% endtrans %}</li>
+  <li>{% trans %}Add links to the main <em>{{ index_link }}</em> page (path: <em>/forum</em>), and optionally to individual forum pages, to navigation menus on your site, so that users can find the forums.{% endtrans %}</li>
 </ol>
diff --git a/core/modules/help_topics/help_topics/forum.locking.html.twig b/core/modules/help_topics/help_topics/forum.locking.html.twig
index e87639eac6..38a7e9c4e6 100644
--- a/core/modules/help_topics/help_topics/forum.locking.html.twig
+++ b/core/modules/help_topics/help_topics/forum.locking.html.twig
@@ -3,12 +3,13 @@ label: 'Locking a forum topic'
 related:
   - forum.concept
 ---
-{% set index = render_var(url('forum.index')) %}
+{% set index_link_text %}{% trans %}Forums{% endtrans %}{% endset %}
+{% set index_link = render_var(help_route_link(index_link_text, 'forum.index')) %}
 <h2>{% trans %}Goal{% endtrans %}</h2>
 <p>{% trans %}Lock a topic to prevent users from making any more comments.{% endtrans %}</p>
 <h2>{% trans %}Steps{% endtrans %}</h2>
 <ol>
-  <li>{% trans %}Starting from the <a href="{{ index }}">forums page</a>, navigate to the forum that currently contains the topic.{% endtrans %}</li>
+  <li>{% trans %}Starting from {{ index_link }} (path: <em>/forums</em>), navigate to the forum that currently contains the topic.{% endtrans %}</li>
   <li>{% trans %}Locate the topic within the forum, and click on the title to view the topic.{% endtrans %}</li>
   <li>{% trans %}Click <em>Edit</em>.{% endtrans %}</li>
   <li>{% trans %}Under <em>Comment settings</em>, check <em>Closed</em>.{% endtrans %}</li>
diff --git a/core/modules/help_topics/help_topics/forum.moving.html.twig b/core/modules/help_topics/help_topics/forum.moving.html.twig
index 8fb1df5ff7..918daabeb3 100644
--- a/core/modules/help_topics/help_topics/forum.moving.html.twig
+++ b/core/modules/help_topics/help_topics/forum.moving.html.twig
@@ -3,12 +3,13 @@ label: 'Moving a topic to a new forum'
 related:
   - forum.concept
 ---
-{% set index = render_var(url('forum.index')) %}
+{% set index_link_text %}{% trans %}Forums{% endtrans %}{% endset %}
+{% set index_link = render_var(help_route_link(index_link_text, 'forum.index')) %}
 <h2>{% trans %}Goal{% endtrans %}</h2>
 <p>{% trans %}Move a forum topic and all of its comments to a new forum. {% endtrans %}</p>
 <h2>{% trans %}Steps{% endtrans %}</h2>
 <ol>
-  <li>{% trans %}Starting from the <a href="{{ index }}">forums page</a>, navigate to the forum that currently contains the topic.{% endtrans %}</li>
+  <li>{% trans %}Starting from {{ index_link }} (path: <em>/forums</em>), navigate to the forum that currently contains the topic.{% endtrans %}</li>
   <li>{% trans %}Locate the topic within the forum, and click on the title to view the topic.{% endtrans %}</li>
   <li>{% trans %}Click <em>Edit</em>.{% endtrans %}</li>
   <li>{% trans %}In the <em>Forums</em> field, select the new forum that you want the topic to move to.{% endtrans %}</li>
diff --git a/core/modules/help_topics/help_topics/forum.starting.html.twig b/core/modules/help_topics/help_topics/forum.starting.html.twig
index 8942425e9f..a939748051 100644
--- a/core/modules/help_topics/help_topics/forum.starting.html.twig
+++ b/core/modules/help_topics/help_topics/forum.starting.html.twig
@@ -3,12 +3,13 @@ label: 'Starting a forum discussion'
 related:
   - forum.concept
 ---
-{% set index = render_var(url('forum.index')) %}
+{% set index_link_text %}{% trans %}Forums{% endtrans %}{% endset %}
+{% set index_link = render_var(help_route_link(index_link_text, 'forum.index')) %}
 <h2>{% trans %}Goal{% endtrans %}</h2>
 <p>{% trans %}Post a new topic in a forum to start a discussion.{% endtrans %}</p>
 <h2>{% trans %}Steps{% endtrans %}</h2>
 <ol>
-  <li>{% trans %}Starting from the <a href="{{ index }}">forums page</a>, navigate to the forum where you want to post the topic.{% endtrans %}</li>
+  <li>{% trans %}Starting from {{ index_link }} (path: <em>/forums</em>), navigate to the forum that currently contains the topic.{% endtrans %}</li>
   <li>{% trans %}Click <em>Add new Forum topic</em>.{% endtrans %}</li>
   <li>{% trans %}Enter the topic's <em>Subject</em> and <em>Body</em>.{% endtrans %}</li>
   <li>{% trans %}Click <em>Save</em>.{% endtrans %}</li>
diff --git a/core/modules/help_topics/help_topics/help.help_topic_search.html.twig b/core/modules/help_topics/help_topics/help.help_topic_search.html.twig
index 22e048df20..46b1e14890 100644
--- a/core/modules/help_topics/help_topics/help.help_topic_search.html.twig
+++ b/core/modules/help_topics/help_topics/help.help_topic_search.html.twig
@@ -6,20 +6,22 @@ related:
   - core.cron
   - search.overview
 ---
-{% set extend_url = render_var(url('system.modules_list')) %}
-{% set help_url = render_var(url('help.main')) %}
+{% set extend_link_text %}{% trans %}Extend{% endtrans %}{% endset %}
+{% set help_link_text %}{% trans %}Help{% endtrans %}{% endset %}
+{% set extend_link = render_var(help_route_link(extend_link_text, 'system.modules_list')) %}
+{% set help_link = render_var(help_route_link(help_link_text, 'help.main')) %}
 {% set cache_topic = render_var(help_topic_link('system.cache')) %}
 {% set cron_topic = render_var(help_topic_link('core.cron')) %}
 <h2>{% trans %}Goal{% endtrans %}</h2>
 <p>{% trans %}Set up your site so that users can search for help.{% endtrans %}</p>
 <h2>{% trans %}Steps{% endtrans %}</h2>
 <ol>
-  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em><a href="{{ extend_url }}">Extend</a></em>. Verify that the Search, Help, Help Topics, and Block modules are installed (or install them if they are not already installed).{% endtrans %}</li>
+  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>{{ extend_link }}</em>. Verify that the Search, Help, Help Topics, and Block modules are installed (or install them if they are not already installed).{% endtrans %}</li>
   <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Configuration</em> &gt; <em>Search and metadata</em> &gt; <em>Search pages</em>.{% endtrans %}</li>
   <li>{% trans %}Verify that a Help search page is listed in the <em>Search pages</em> section. If not, add a new page of type <em>Help</em>.{% endtrans %}</li>
   <li>{% trans %}Check the indexing status of the Help search page. If it is not fully indexed, see {{ cron_topic }} about how to run Cron until indexing is complete.{% endtrans %}</li>
   <li>{% trans %}In the future, you can click <em>Rebuild search index</em> on this page, or {{ cache_topic }}, in order to force help topic text to be reindexed for searching. This should be done whenever a module, theme, language, or string translation is updated.{% endtrans %}</li>
   <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Structure</em> &gt; <em>Block layout</em>.{% endtrans %}</li>
   <li>{% trans %}Click the link for your administrative theme (such as the core Claro theme), near the top of the page, and verify that there is already a search block for help located in the Help region. If not, follow the steps in the related topic to place the <em>Search form</em> block in the Help region. When configuring the block, choose <em>Help</em> as the search page, and in the <em>Pages</em> tab under <em>Visibility</em>, enter <em>/admin/help</em> to make the search form only visible on the main <em>Help</em> page.{% endtrans %}</li>
-  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em><a href="{{ help_url }}">Help</a></em>. Verify that the search block is visible, and try a search.{% endtrans %}</li>
+  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>{{ help_link }}</em>. Verify that the search block is visible, and try a search.{% endtrans %}</li>
 </ol>
diff --git a/core/modules/help_topics/help_topics/image.style.html.twig b/core/modules/help_topics/help_topics/image.style.html.twig
index d520b50bd2..1ff06f8bf6 100644
--- a/core/modules/help_topics/help_topics/image.style.html.twig
+++ b/core/modules/help_topics/help_topics/image.style.html.twig
@@ -6,12 +6,13 @@ related:
   - layout_builder.overview
 ---
 {% set media_topic = render_var(help_topic_link('core.media')) %}
-{% set styles = render_var(url('entity.image_style.collection')) %}
+{% set styles_text %}{% trans %}Image styles{% endtrans %}{% endset %}
+{% set styles_link = render_var(help_route_link(styles_text, 'entity.image_style.collection')) %}
 <h2>{% trans %}Goal{% endtrans %}</h2>
 <p>{% trans %}Add a new image style, which can be used to process and display images. See {{ media_topic }} for an overview of image styles.{% endtrans %}</p>
 <h2>{% trans %}Steps{% endtrans %}</h2>
 <ol>
-  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Configuration</em> &gt; <em>Media</em> &gt; <a href="{{ styles }}"><em>Image styles</em></a>.{% endtrans %}</li>
+  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Configuration</em> &gt; <em>Media</em> &gt; {{ styles_link }}.{% endtrans %}</li>
   <li>{% trans %}Click <em>Add image style</em>.{% endtrans %}</li>
   <li>{% trans %}Enter a descriptive <em>Image style name</em>, and click <em>Create new style</em>.{% endtrans %}</li>
   <li>{% trans %}Under <em>Effect</em>, choose an effect to apply and click <em>Add</em>.{% endtrans %}</li>
diff --git a/core/modules/help_topics/help_topics/language.add.html.twig b/core/modules/help_topics/help_topics/language.add.html.twig
index 31940a7370..7a3ef90104 100644
--- a/core/modules/help_topics/help_topics/language.add.html.twig
+++ b/core/modules/help_topics/help_topics/language.add.html.twig
@@ -4,12 +4,13 @@ related:
   - core.translations
   - language.detect
 ---
-{% set languages_url = render_var(url('entity.configurable_language.collection')) %}
+{% set languages_text %}{% trans %}Languages{% endtrans %}{% endset %}
+{% set languages_link = render_var(help_route_link(languages_text, 'entity.configurable_language.collection')) %}
 <h2>{% trans %}Goal{% endtrans %}</h2>
 <p>{% trans %}Add a language to your site.{% endtrans %}</p>
 <h2>{% trans %}Steps{% endtrans %}</h2>
 <ol>
-  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Configuration</em> &gt; <em>Regional and language</em> &gt; <a href="{{ languages_url }}"><em>Languages</em></a>.{% endtrans %}</li>
+  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Configuration</em> &gt; <em>Regional and language</em> &gt; {{ languages_link }}.{% endtrans %}</li>
   <li>{% trans %}Click <em>Add language</em>.{% endtrans %}</li>
   <li>{% trans %}If your language is in the <em>Language name</em> list, select it and click <em>Add language</em>.{% endtrans %}</li>
   <li>{% trans %}If your language is not in the list, select <em>Custom language...</em> and enter the <em>Language code</em>, <em>Language name</em>, and <em>Direction</em> for the language. Click <em>Add custom language</em>.{% endtrans %}</li>
diff --git a/core/modules/help_topics/help_topics/language.detect.html.twig b/core/modules/help_topics/help_topics/language.detect.html.twig
index 02d435607c..b5ea08b757 100644
--- a/core/modules/help_topics/help_topics/language.detect.html.twig
+++ b/core/modules/help_topics/help_topics/language.detect.html.twig
@@ -4,7 +4,8 @@ related:
 - core.translations
 - language.add
 ---
-{% set detection = render_var(url('language.negotiation')) %}
+{% set detection_text %}{% trans %}Detection and selection{% endtrans %}{% endset %}
+{% set detection_link = render_var(help_route_link(detection_text, 'language.negotiation')) %}
 <h2>{% trans %}Goal{% endtrans %}</h2>
 <p>{% trans %}Configure the methods used to decide which language will be used to display text on your site.{% endtrans %}</p>
 <h2>{% trans %}What is a language detection method?{% endtrans %}</h2>
@@ -25,7 +26,7 @@ related:
 </dl>
 <h2>{% trans %}Steps{% endtrans %}</h2>
 <ol>
-    <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Configuration</em> &gt; <em>Regional and language</em> &gt; <em>Languages</em> &gt; <a href="{{ detection }}"><em>Detection and selection</em></a>.{% endtrans %}</li>
+    <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Configuration</em> &gt; <em>Regional and language</em> &gt; <em>Languages</em> &gt; {{ detection_link }}.{% endtrans %}</li>
     <li>{% trans %}Check the boxes to enable the desired language detection methods, and uncheck boxes for the methods you do not want to use.{% endtrans %}</li>
     <li>{% trans %}Drag the methods to change their order, if desired.{% endtrans %}</li>
     <li>{% trans %}Click <em>Save settings</em>.{% endtrans %}</li>
diff --git a/core/modules/help_topics/help_topics/layout_builder.overview.html.twig b/core/modules/help_topics/help_topics/layout_builder.overview.html.twig
index 6b6d5b9c34..dc107acd6d 100644
--- a/core/modules/help_topics/help_topics/layout_builder.overview.html.twig
+++ b/core/modules/help_topics/help_topics/layout_builder.overview.html.twig
@@ -6,7 +6,8 @@ related:
   - field_ui.manage_display
   - block.overview
 ---
-{% set content_types = render_var(url('entity.node_type.collection')) %}
+{% set content_types_text %}{% trans %}Content types{% endtrans %}{% endset %}
+{% set content_types_link = render_var(help_route_link(content_types_text, 'entity.node_type.collection')) %}
 {% set content_structure_topic = render_var(help_topic_link('core.content_structure')) %}
 {% set block_overview_topic = render_var(help_topic_link('block.overview')) %}
 <h2>{% trans %}Goal{% endtrans %}</h2>
@@ -15,7 +16,7 @@ related:
 <p>{% trans %}A layout consists of one or more <em>sections</em>. Each section can have from one to four <em>columns</em>. You can place blocks, including special blocks for the fields on the entity sub-type, in each column of each section (see {{ block_overview_topic }} for more on blocks).{% endtrans %}</p>
 <h2>{% trans %}Steps{% endtrans %}</h2>
 <ol>
-  <li>{% trans %}Navigate to the page for managing the entity type you want to add the field to. For example, to add a field to a content type, in the <em>Manage</em> administrative menu, navigate to <em>Structure</em> &gt; <a href="{{ content_types }}"><em>Content types</em></a>.{% endtrans %}</li>
+  <li>{% trans %}Navigate to the page for managing the entity type you want to add the field to. For example, to add a field to a content type, in the <em>Manage</em> administrative menu, navigate to <em>Structure</em> &gt; {{ content_types_link }}.{% endtrans %}</li>
   <li>{% trans %}Find the particular sub-type that you want to create a layout for, and click <em>Manage display</em> in the <em>Operations</em> list.{% endtrans %}</li>
   <li>{% trans %}Under <em>Layout options</em>, check <em>Use Layout Builder</em>. You can also check the box below to allow each entity item to have its layout individually customized (if it is left unchecked, the site will use the same layout for all items of this entity sub-type).{% endtrans %}</li>
   <li>{% trans %}Click <em>Save</em>. You will be returned to the <em>Manage display</em> page, but you will no longer see the table of fields of the classic display manager.{% endtrans %}</li>
diff --git a/core/modules/help_topics/help_topics/locale.import.html.twig b/core/modules/help_topics/help_topics/locale.import.html.twig
index 481f86f2f1..90c8fa109a 100644
--- a/core/modules/help_topics/help_topics/locale.import.html.twig
+++ b/core/modules/help_topics/help_topics/locale.import.html.twig
@@ -5,12 +5,13 @@ related:
 - locale.translation_status
 - locale.translate_strings
 ---
-{% set import = render_var(url('locale.translate_import')) %}
+{% set import_text %}{% trans %}Import{% endtrans %}{% endset %}
+{% set import_link = render_var(help_route_link(import_text, 'locale.translate_import')) %}
 <h2>{% trans %}Goal{% endtrans %}</h2>
 <p>{% trans %}Import a file (.po extension) containing translations for user interface text.{% endtrans %}</p>
 <h2>{% trans %}Steps{% endtrans %}</h2>
 <ol>
-  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Configuration</em> &gt; <em>Regional and language</em> &gt; <em>User interface translation</em> &gt; <a href="{{ import }}"><em>Import</em></a>.{% endtrans %}</li>
+  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Configuration</em> &gt; <em>Regional and language</em> &gt; <em>User interface translation</em> &gt; {{ import_link }}.{% endtrans %}</li>
   <li>{% trans %}Browse to find the <em>Translation file</em> you want to import. Select the language and check the desired import options.{% endtrans %}</li>
   <li>{% trans %}Click <em>Import</em> and wait for your file to be imported.{% endtrans %}</li>
 </ol>
diff --git a/core/modules/help_topics/help_topics/locale.translate_strings.html.twig b/core/modules/help_topics/help_topics/locale.translate_strings.html.twig
index 8f4bde4a95..08ce2399a4 100644
--- a/core/modules/help_topics/help_topics/locale.translate_strings.html.twig
+++ b/core/modules/help_topics/help_topics/locale.translate_strings.html.twig
@@ -6,12 +6,13 @@ related:
   - locale.translation_status
   - language.add
 ---
-{% set translate = render_var(url('locale.translate_page')) %}
+{% set translate_text %}{% trans %}User interface translation{% endtrans %}{% endset %}
+{% set translate_link = render_var(help_route_link(translate_text, 'locale.translate_page')) %}
 <h2>{% trans %}Goal{% endtrans %}</h2>
 <p>{% trans %}Translate user interface text strings from English into a non-English language that is configured on your site.{% endtrans %}</p>
 <h2>{% trans %}Steps{% endtrans %}</h2>
 <ol>
-  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Configuration</em> &gt; <em>Regional and language</em> &gt; <a href="{{ translate }}"><em>User interface translation</em></a>.{% endtrans %}</li>
+  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Configuration</em> &gt; <em>Regional and language</em> &gt; {{ translate_link }}.{% endtrans %}</li>
   <li>{% trans %}Using the filters, search for a string or set of strings that you want to translate; make sure to select the correct <em>Translation language</em> if you have more than one non-English language on your site.{% endtrans %}</li>
   <li>{% trans %}Enter new translations and click <em>Save translations</em>.{% endtrans %}</li>
   <li>{% trans %}Repeat these steps until all of the desired user interface text is translated for all languages on your site.{% endtrans %}</li>
diff --git a/core/modules/help_topics/help_topics/locale.translation_status.html.twig b/core/modules/help_topics/help_topics/locale.translation_status.html.twig
index c46fbc06b5..e8e10a4290 100644
--- a/core/modules/help_topics/help_topics/locale.translation_status.html.twig
+++ b/core/modules/help_topics/help_topics/locale.translation_status.html.twig
@@ -5,15 +5,17 @@ related:
 - locale.import
 - locale.translate_strings
 ---
-{% set language = render_var(url('entity.configurable_language.collection')) %}
-{% set translation_updates = render_var(url('locale.translate_status')) %}
+{% set language_text %}{% trans %}Languages{% endtrans %}{% endset %}
+{% set translation_updates_text %}{% trans %}Available translation updates{% endtrans %}{% endset %}
+{% set language_link = render_var(help_route_link(language_text, 'entity.configurable_language.collection')) %}
+{% set translation_updates_link = render_var(help_route_link(translation_updates_text, 'locale.translate_status')) %}
 <h2>{% trans %}Goal{% endtrans %}</h2>
 <p>{% trans %}Check the current status of interface translations, and see if there are any updates available.{% endtrans %}</p>
 <h2>{% trans %}Steps{% endtrans %}</h2>
 <ol>
-  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Configuration</em> &gt; <em>Regional and language</em> &gt; <a href="{{ language }}"><em>Languages</em></a>.{% endtrans %}</li>
+  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Configuration</em> &gt; <em>Regional and language</em> &gt; {{ language_link }}.{% endtrans %}</li>
   <li>{% trans %}Look at the <em>Interface translation</em> column in the language table, to find the percentage of user interface text that has been translated for each language.{% endtrans %}</li>
-  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Reports</em> &gt; <em><a href="{{ translation_updates }}">Available translation updates</a></em>. This report is only available if the core Update Status module is installed.{% endtrans %}</li>
+  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Reports</em> &gt; <em>{{ translation_updates_link }}</em>. This report is only available if the core Update Status module is installed.{% endtrans %}</li>
   <li>{% trans %}Optionally, click <em>Check manually</em> to update the report.{% endtrans %}</li>
   <li>{% trans %}View the report to find out if any languages have translation updates that you can download.{% endtrans %}</li>
 </ol>
diff --git a/core/modules/help_topics/help_topics/media.media_type.html.twig b/core/modules/help_topics/help_topics/media.media_type.html.twig
index e36629b41e..43c6e9c5b5 100644
--- a/core/modules/help_topics/help_topics/media.media_type.html.twig
+++ b/core/modules/help_topics/help_topics/media.media_type.html.twig
@@ -7,12 +7,13 @@ related:
 ---
 {% set content_structure_topic = render_var(help_topic_link('core.content_structure')) %}
 {% set media_topic = render_var(help_topic_link('core.media')) %}
-{% set media = render_var(url('entity.media_type.collection')) %}
+{% set media_text %}{% trans %}Media types{% endtrans %}{% endset %}
+{% set media_link = render_var(help_route_link(media_text, 'entity.media_type.collection')) %}
 <h2>{% trans %}Goal{% endtrans %}</h2>
 <p>{% trans %}Add a new media type that can be referenced in Media reference fields; media types are a content entity type. See {{ media_topic }} for an overview of media items and media types, and {{ content_structure_topic }} for more information on content entities and fields.{% endtrans %}</p>
 <h2>{% trans %}Steps{% endtrans %}</h2>
 <ol>
-  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Structure</em> &gt; <a href="{{ media }}"><em>Media types</em></a>.{% endtrans %}</li>
+  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Structure</em> &gt; {{ media_link }}.{% endtrans %}</li>
   <li>{% trans %}If there is not already a media type for the type of media you want to use on your site, click <em>Add media type</em>.{% endtrans %}</li>
   <li>{% trans %}Enter a <em>Name</em> and <em>Description</em> for your media type, and select the <em>Media source</em>.{% endtrans %}</li>
   <li>{% trans %}For most media sources, there is additional information that will need to be stored with your media item, in a field on your media type. Under <em>Media source configuration</em>, select an existing field to re-use to store this information, or select <em> - Create -</em> to create a new field.{% endtrans %}</li>
diff --git a/core/modules/help_topics/help_topics/menu_ui.content_type_configuration.html.twig b/core/modules/help_topics/help_topics/menu_ui.content_type_configuration.html.twig
index 5fcb85843f..2698c9362e 100644
--- a/core/modules/help_topics/help_topics/menu_ui.content_type_configuration.html.twig
+++ b/core/modules/help_topics/help_topics/menu_ui.content_type_configuration.html.twig
@@ -5,12 +5,13 @@ related:
   - menu_ui.menu_operations
   - core.menus
 ---
-{% set content_types = render_var(url('entity.node_type.collection')) %}
+{% set content_types_text %}{% trans %}Content types{% endtrans %}{% endset %}
+{% set content_types_link = render_var(help_route_link(content_types_text, 'entity.node_type.collection')) %}
 <h2>{% trans %}Goal{% endtrans %}</h2>
 <p>{% trans %}For an existing content type, configure the available menus that will be shown as options on content editing screens; links to content items of this type can be added to these menus during editing.{% endtrans %}</p>
 <h2>{% trans %}Steps{% endtrans %}</h2>
 <ol>
-  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Structure</em> &gt; <a href="{{ content_types }}"><em>Content types</em></a>.{% endtrans %}</li>
+  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Structure</em> &gt; {{ content_types_link }}.{% endtrans %}</li>
   <li>{% trans %}Locate the content type you want to configure, and click <em>Edit</em> in the <em>Operations</em> list.{% endtrans %}</li>
   <li>{% trans %}Under <em>Menu settings</em>, check the menus that you want to be available when editing a content item of this type.{% endtrans %}</li>
   <li>{% trans %}Optionally, select the <em>Default parent item</em>, to put links to content items under a default location in the menu structure.{% endtrans %}</li>
diff --git a/core/modules/help_topics/help_topics/menu_ui.menu_item_add.html.twig b/core/modules/help_topics/help_topics/menu_ui.menu_item_add.html.twig
index 9ce81dc5e8..160ff3a349 100644
--- a/core/modules/help_topics/help_topics/menu_ui.menu_item_add.html.twig
+++ b/core/modules/help_topics/help_topics/menu_ui.menu_item_add.html.twig
@@ -5,12 +5,13 @@ related:
   - menu_ui.menu_operations
   - core.menus
 ---
-{% set structure_menu = render_var(url('entity.menu.collection')) %}
+{% set structure_menu_text %}{% trans %}Menus{% endtrans %}{% endset %}
+{% set structure_menu_link = render_var(help_route_link(structure_menu_text, 'entity.menu.collection')) %}
 <h2>{% trans %}Goal{% endtrans %}</h2>
 <p>{% trans %}Add a link to a menu. Note that you can also add a link to a menu from the content edit page if menu settings have been configured for the content type.{% endtrans %}</p>
 <h2>{% trans %}Steps{% endtrans %}</h2>
 <ol>
-  <li>{% trans %}In the <em>Manage</em> administration menu, navigate to <em>Structure</em> &gt; <a href="{{ structure_menu }}"><em>Menus</em></a>.{% endtrans %}</li>
+  <li>{% trans %}In the <em>Manage</em> administration menu, navigate to <em>Structure</em> &gt; {{ structure_menu_link }}.{% endtrans %}</li>
   <li>{% trans %}Locate the desired menu and click <em>Add link</em> in the <em>Operations</em> list.{% endtrans %}</li>
   <li>{% trans %}Enter the <em>Menu link title</em> to be displayed.{% endtrans %}</li>
   <li>{% trans %}Enter the <em>Link</em>, one of the following:{% endtrans %}
@@ -27,7 +28,7 @@ related:
   <li>{% trans %}Optionally, check <em>Show as expanded</em> to automatically show the children of this link (if any) when this link is shown.{% endtrans %}</li>
   <li>{% trans %}Optionally, select the <em>Parent link</em>, if this menu link should be a child of another menu link.{% endtrans %}</li>
   <li>{% trans %}Click <em>Save</em>. You will be returned to the <em>Add link</em> page to add another link.{% endtrans %}</li>
-  <li>{% trans %}In the <em>Manage</em> administration menu, navigate to <em>Structure</em> &gt; <a href="{{ structure_menu }}"><em>Menus</em></a>.{% endtrans %}</li>
+  <li>{% trans %}In the <em>Manage</em> administration menu, navigate to <em>Structure</em> &gt; {{ structure_menu_link }}.{% endtrans %}</li>
   <li>{% trans %}Locate the menu you just added a link to and click <em>Edit</em> in the <em>Operations</em> list.{% endtrans %}</li>
   <li>{% trans %}Verify that the order of links is correct. If it is not, drag menu links until the order is correct, and click <em>Save</em>.{% endtrans %}</li>
 </ol>
diff --git a/core/modules/help_topics/help_topics/menu_ui.menu_operations.html.twig b/core/modules/help_topics/help_topics/menu_ui.menu_operations.html.twig
index b63bb85437..05c8d9eded 100644
--- a/core/modules/help_topics/help_topics/menu_ui.menu_operations.html.twig
+++ b/core/modules/help_topics/help_topics/menu_ui.menu_operations.html.twig
@@ -4,12 +4,13 @@ related:
   - menu_ui.content_type_configuration
   - core.menus
 ---
-{% set structure_menu = render_var(url('entity.menu.collection')) %}
+{% set structure_menu_text %}{% trans %}Menus{% endtrans %}{% endset %}
+{% set structure_menu_link = render_var(help_route_link(structure_menu_text, 'entity.menu.collection')) %}
 <h2>{% trans %}Goal{% endtrans %}</h2>
 <p>{% trans %}Create a new menu.{% endtrans %}</p>
 <h2>{% trans %}Steps{% endtrans %}</h2>
 <ol>
-  <li>{% trans %}In the <em>Manage</em> administration menu, navigate <em>Structure</em> &gt; <a href="{{ structure_menu }}"> <em>Menus</em></a>.{% endtrans %}</li>
+  <li>{% trans %}In the <em>Manage</em> administration menu, navigate <em>Structure</em> &gt; {{ structure_menu_link }}.{% endtrans %}</li>
   <li>{% trans %}Click <em>Add menu</em>.{% endtrans %}</li>
   <li>{% trans %}Enter the title for the menu, which is used as the default block title if the menu is displayed as a block. If desired, also edit the machine name of the menu, which is by default derived from the title.{% endtrans %}</li>
   <li>{% trans %}Enter an administrative summary, which is displayed on the <em>Menus</em> page.{% endtrans %}</li>
diff --git a/core/modules/help_topics/help_topics/menu_ui.overriding.html.twig b/core/modules/help_topics/help_topics/menu_ui.overriding.html.twig
index 692cf765e3..f150161ae8 100644
--- a/core/modules/help_topics/help_topics/menu_ui.overriding.html.twig
+++ b/core/modules/help_topics/help_topics/menu_ui.overriding.html.twig
@@ -5,12 +5,13 @@ related:
   - menu_ui.menu_operations
   - core.menus
 ---
-{% set structure_menu = render_var(url('entity.menu.collection')) %}
+{% set structure_menu_text %}{% trans %}Menus{% endtrans %}{% endset %}
+{% set structure_menu_link = render_var(help_route_link(structure_menu_text, 'entity.menu.collection')) %}
 <h2>{% trans %}Goal{% endtrans %}</h2>
 <p>{% trans %}Disable menu links or change the order and hierarchy of menu links.{% endtrans %}</p>
 <h2>{% trans %}Steps{% endtrans %}</h2>
 <ol>
-  <li>{% trans %}In the <em>Manage</em> administration menu, navigate to <em>Structure</em> &gt; <a href="{{ structure_menu }}"><em>Menus</em></a>.{% endtrans %}</li>
+  <li>{% trans %}In the <em>Manage</em> administration menu, navigate to <em>Structure</em> &gt; {{ structure_menu_link }}.{% endtrans %}</li>
   <li>{% trans %}Click <em>Edit menu</em> for the menu that you want to edit.{% endtrans %}</li>
   <li>{% trans %}Drag menu links into a new order, or check/uncheck <em>Enabled</em> to enable or disable menu links.{% endtrans %}</li>
   <li>{% trans %}Click <em>Save</em> to save your changes.{% endtrans %}</li>
diff --git a/core/modules/help_topics/help_topics/migrate_drupal_ui.upgrading.html.twig b/core/modules/help_topics/help_topics/migrate_drupal_ui.upgrading.html.twig
index 9aa5015b14..c5dcfa2dce 100644
--- a/core/modules/help_topics/help_topics/migrate_drupal_ui.upgrading.html.twig
+++ b/core/modules/help_topics/help_topics/migrate_drupal_ui.upgrading.html.twig
@@ -3,14 +3,14 @@ label: 'Migrating data for an upgrade using the user interface'
 related:
   - migrate.overview
 ---
-{% set migrate_drupal_upgrade = render_var(url('migrate_drupal_ui.upgrade')) %}
-{% set migrate_drupal_log = render_var(url('dblog.overview')) %}
+{% set migrate_drupal_upgrade_link_text %}{% trans %}Upgrade{% endtrans %}{% endset %}
+{% set migrate_drupal_upgrade_link = render_var(help_route_link(migrate_drupal_upgrade_link_text, 'migrate_drupal_ui.upgrade')) %}
 {% set migrate_overview_topic = render_var(help_topic_link('migrate.overview')) %}
 <h2>{% trans %}Goal{% endtrans %}</h2>
 <p>{% trans %}Migrate data into a new, empty site, as part of an upgrade from an older version of Drupal. See {{ migrate_overview_topic }} for an overview of migrating and upgrading.{% endtrans %}</p>
 <h2>{% trans %}Steps{% endtrans %}</h2>
 <ol>
-<li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Configuration</em> &gt; <em>Development</em> &gt; <em><a href="{{ migrate_drupal_upgrade }}">Upgrade</a></em>.{% endtrans %}</li>
+<li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Configuration</em> &gt; <em>Development</em> &gt; <em>{{ migrate_drupal_upgrade_link }}</em>.{% endtrans %}</li>
 <li>{% trans %}Read the introduction and follow the <em>Preparation steps</em> on the page. Then click <em>Continue</em>.{% endtrans %}</li>
 <li>{% trans %}Select the Drupal version of the source site. Also enter the database credentials and public and private files directories (private file directory is not available when migrating from Drupal 6). Click <em>Review upgrade</em>.{% endtrans %}</li>
 <li>{% trans %}If the next page you see contains a message about conflicting content, that means that the site where you are running the upgrade is not empty. If you continue, you will lose the data in the site. If that is acceptable, click the button to continue; if not, start these steps over in a new, clean Drupal site.{% endtrans %}</li>
diff --git a/core/modules/help_topics/help_topics/responsive_image.style.html.twig b/core/modules/help_topics/help_topics/responsive_image.style.html.twig
index 980bbb4503..9aa7aeb56e 100644
--- a/core/modules/help_topics/help_topics/responsive_image.style.html.twig
+++ b/core/modules/help_topics/help_topics/responsive_image.style.html.twig
@@ -10,12 +10,13 @@ related:
 {% set media_topic = render_var(help_topic_link('core.media')) %}
 {% set image_style_topic = render_var(help_topic_link('image.style')) %}
 {% set breakpoint_overview_topic = render_var(help_topic_link('breakpoint.overview')) %}
-{% set styles = render_var(url('entity.responsive_image_style.collection')) %}
+{% set styles_link_text %}{% trans %}Responsive image styles{% endtrans %}{% endset %}
+{% set styles_link = render_var(help_route_link(styles_link_text, 'entity.responsive_image_style.collection')) %}
 <h2>{% trans %}Goal{% endtrans %}</h2>
 <p>{% trans %}Configure a responsive image style, which can be used to display images at different sizes on different devices. See {{ media_topic }} for an overview of responsive image styles, and {{ breakpoint_overview_topic }} for an overview of breakpoints.{% endtrans %}</p>
 <h2>{% trans %}Steps{% endtrans %}</h2>
 <ol>
-  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Configuration</em> &gt; <em>Media</em> &gt; <a href="{{ styles }}"><em>Responsive image styles</em></a>.{% endtrans %}</li>
+  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Configuration</em> &gt; <em>Media</em> &gt; <em>{{ styles_link }}</em>.{% endtrans %}</li>
   <li>{% trans %}Click <em>Add responsive image style</em>.{% endtrans %}</li>
   <li>{% trans %}Enter a descriptive <em>Label</em> for your style.{% endtrans %}</li>
   <li>{% trans %}Select a <em>Breakpoint group</em> from the groups defined by your installed themes and modules.{% endtrans %}</li>
diff --git a/core/modules/help_topics/help_topics/search.configuring.html.twig b/core/modules/help_topics/help_topics/search.configuring.html.twig
index 0c6f7e2186..349aa14314 100644
--- a/core/modules/help_topics/help_topics/search.configuring.html.twig
+++ b/core/modules/help_topics/help_topics/search.configuring.html.twig
@@ -4,13 +4,14 @@ related:
   - search.overview
   - search.index
 ---
-{% set search_settings = render_var(url('entity.search_page.collection')) %}
+{% set search_settings_link_text %}{% trans %}Search pages{% endtrans %}{% endset %}
+{% set search_settings_link = render_var(help_route_link(search_settings_link_text, 'entity.search_page.collection')) %}
 {% set search_index_topic = render_var(help_topic_link('search.index')) %}
 <h2>{% trans %}Goal{% endtrans %}</h2>
 <p>{% trans %}Configure one or more search pages.{% endtrans %}</p>
 <h2>{% trans %}Steps{% endtrans %}</h2>
 <ol>
-  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Configuration</em> &gt; <em>Search and Metadata</em> &gt; <a href="{{ search_settings }}"><em>Search pages</em></a>.{% endtrans %}</li>
+  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Configuration</em> &gt; <em>Search and Metadata</em> &gt; <em>{{ search_settings_link }}</em>.{% endtrans %}</li>
   <li>{% trans %}Scroll down to the <em>Search pages</em> section. You will see a list of the already-configured search pages on your site.{% endtrans %}</li>
   <li>{% trans %}To configure an existing search page, click <em>Edit</em>. Or, to add a new search page, select the <em>Search page type</em> and click <em>Add search page</em>.{% endtrans %}</li>
   <li>{% trans %}Enter the desired <em>Label</em> name and URL <em>Path</em> for the search page.{% endtrans %}</li>
diff --git a/core/modules/help_topics/help_topics/search.index.html.twig b/core/modules/help_topics/help_topics/search.index.html.twig
index 1451cebdd1..e232d6e69f 100644
--- a/core/modules/help_topics/help_topics/search.index.html.twig
+++ b/core/modules/help_topics/help_topics/search.index.html.twig
@@ -5,14 +5,15 @@ related:
   - search.configuring
 ---
 {% set cron_topic = render_var(help_topic_link('core.cron')) %}
-{% set search_settings = render_var(url('entity.search_page.collection')) %}
+{% set search_settings_link_text %}{% trans %}Search pages{% endtrans %}{% endset %}
+{% set search_settings_link = render_var(help_route_link(search_settings_link_text, 'entity.search_page.collection')) %}
 <h2>{% trans %}Goal{% endtrans %}</h2>
 <p>{% trans %}Manage the search index, and make sure that the site is fully indexed for searching.{% endtrans %}</p>
 <h2>{% trans %}What is the search index?{% endtrans %}</h2>
 <p>{% trans %}The <em>Content</em> and <em>Help</em> search types provided by the core software pre-index their content and store the results in several database tables that are collectively called the <em>search index</em>. The process of indexing renders the content and breaks it up into words, which can then be matched more efficiently with keyword queries when users perform searches. Search indexing happens during cron runs; see {{ cron_topic }} for more information about cron.{% endtrans %}</p>
 <h2>{% trans %}Steps{% endtrans %}</h2>
 <ol>
-<li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Configuration</em> &gt; <em>Search and Metadata</em> &gt; <a href="{{ search_settings }}"><em>Search pages</em></a>.{% endtrans %}</li>
+<li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Configuration</em> &gt; <em>Search and Metadata</em> &gt; <em>{{ search_settings_link }}</em>.{% endtrans %}</li>
 <li>{% trans %}Under <em>Indexing throttle</em>, select the <em>Number of items to index per cron run</em>. A smaller number will make cron faster and reduce the possibility of timeout; a larger number will make sure more of your site is indexed in fewer cron runs.{% endtrans %}</li>
 <li>{% trans %}Under <em>Default indexing settings</em>, enter the desired <em>Minimum word length to index</em>. Words smaller than this length will be dropped from both keywords when searching and content when indexing.{% endtrans %}</li>
 <li>{% trans %}If your site uses Chinese, Japanese, or Korean languages, optionally check <em>Simple CJK handling</em> under <em>Default indexing settings</em> to provide some support for these languages.{% endtrans %}</li>
diff --git a/core/modules/help_topics/help_topics/system.reports.html.twig b/core/modules/help_topics/help_topics/system.reports.html.twig
index 411acff825..e5539087dc 100644
--- a/core/modules/help_topics/help_topics/system.reports.html.twig
+++ b/core/modules/help_topics/help_topics/system.reports.html.twig
@@ -10,7 +10,7 @@ related:
 <p>{% trans %}Run reports to learn about the status and health of your site.{% endtrans %}</p>
 <h2>{% trans %}Steps{% endtrans %}</h2>
 <ol>
-  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Reports</em> &gt; <a href="{{ status_url }}"><em>Status report</em></a> to see a report that summarizes the health and status of your site. If there are any warnings or errors, you will need to fix them.{% endtrans %}</li>
+  <li>{% trans %}In the <em>Manage</em> administrative menu, navigate to <em>Reports</em> &gt; <a href="{{ status_url }}"><em>Status report</em></a> to see a report that summarizes the health and status of your site. If there are any warnings or errors, you will need to fix them. Take note of any upcoming highly critical security releases that may impact your site.{% endtrans %}</li>
   <li>{% trans %}If you have the core Database Logging module installed, in the <em>Manage</em> administrative menu, navigate to <em>Reports</em> &gt; <em>Recent log messages</em> to see a report of the error and informational messages your site has generated. You can filter the report by <em>Severity</em> to see only the most critical messages, if desired.{% endtrans %}</li>
   <li>{% trans %}If you have the core Update Manager module installed, in the <em>Manage</em> administrative menu, navigate to <em>Reports</em> &gt; <em>Available updates</em> to see a report of the updates that are available for your site software. If <em>Last checked</em> is far in the past, click <em>Check manually</em> to update the report. Scan the report; if Drupal core or any modules or themes have security updates available, you should update them as soon as possible.{% endtrans %}</li>
 </ol>
diff --git a/core/modules/help_topics/src/HelpTopicTwigLoader.php b/core/modules/help_topics/src/HelpTopicTwigLoader.php
index ccf3340196..7f04f8f29f 100644
--- a/core/modules/help_topics/src/HelpTopicTwigLoader.php
+++ b/core/modules/help_topics/src/HelpTopicTwigLoader.php
@@ -95,4 +95,18 @@ public function getSourceContext(string $name): Source {
     return new Source($contents, $name, $path);
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  protected function findTemplate($name, $throw = TRUE) {
+    if (!str_ends_with($name, '.html.twig')) {
+      if (!$throw) {
+        return NULL;
+      }
+      $extension = pathinfo($name, PATHINFO_EXTENSION);
+      throw new LoaderError(sprintf("Help topic %s has an invalid file extension (%s). Only help topics ending .html.twig are allowed.", $name, $extension));
+    }
+    return parent::findTemplate($name, $throw);
+  }
+
 }
diff --git a/core/modules/history/tests/src/Functional/HistoryTest.php b/core/modules/history/tests/src/Functional/HistoryTest.php
index 6117a2dd80..0a961908af 100644
--- a/core/modules/history/tests/src/Functional/HistoryTest.php
+++ b/core/modules/history/tests/src/Functional/HistoryTest.php
@@ -42,6 +42,9 @@ class HistoryTest extends BrowserTestBase {
    */
   protected $testNode;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/image/image.module b/core/modules/image/image.module
index 0f80596be6..aa9faef2d4 100644
--- a/core/modules/image/image.module
+++ b/core/modules/image/image.module
@@ -30,7 +30,7 @@ function image_help($route_name, RouteMatchInterface $route_match) {
 
       $output = '';
       $output .= '<h3>' . t('About') . '</h3>';
-      $output .= '<p>' . t('The Image module allows you to create fields that contain image files and to configure <a href=":image_styles">Image styles</a> that can be used to manipulate the display of images. See the <a href=":field">Field module help</a> and the <a href=":field_ui">Field UI help</a> pages for terminology and general information on entities, fields, and how to create and manage fields. For more information, see the <a href=":image_documentation">online documentation for the Image module</a>.', [':image_styles' => Url::fromRoute('entity.image_style.collection')->toString(), ':field' => Url::fromRoute('help.page', ['name' => 'field'])->toString(), ':field_ui' => $field_ui_url, ':image_documentation' => 'https://www.drupal.org/documentation/modules/image']) . '</p>';
+      $output .= '<p>' . t('The Image module allows you to create fields that contain image files and to configure <a href=":image_styles">Image styles</a> that can be used to manipulate the display of images. See the <a href=":field">Field module help</a> and the <a href=":field_ui">Field UI help</a> pages for terminology and general information on entities, fields, and how to create and manage fields. For more information, see the <a href=":image_documentation">online documentation for the Image module</a>.', [':image_styles' => Url::fromRoute('entity.image_style.collection')->toString(), ':field' => Url::fromRoute('help.page', ['name' => 'field'])->toString(), ':field_ui' => $field_ui_url, ':image_documentation' => 'https://www.drupal.org/docs/core-modules-and-themes/core-modules/image-module/working-with-images']) . '</p>';
       $output .= '<h3>' . t('Uses') . '</h3>';
       $output .= '<dt>' . t('Defining image styles') . '</dt>';
       $output .= '<dd>' . t('The concept of image styles is that you can upload a single image but display it in several ways; each display variation, or <em>image style</em>, is the result of applying one or more <em>effects</em> to the original image. As an example, you might upload a high-resolution image with a 4:3 aspect ratio, and display it scaled down, square cropped, or black-and-white (or any combination of these effects). The Image module provides a way to do this efficiently: you configure an image style with the desired effects on the <a href=":image">Image styles page</a>, and the first time a particular image is requested in that style, the effects are applied. The resulting image is saved, and the next time that same style is requested, the saved image is retrieved without the need to recalculate the effects. Drupal core provides several effects that you can use to define styles; others may be provided by contributed modules.', [':image' => Url::fromRoute('entity.image_style.collection')->toString()]);
@@ -204,7 +204,7 @@ function image_path_flush($path) {
  * @param $include_empty
  *   If TRUE a '- None -' option will be inserted in the options array.
  *
- * @return
+ * @return string[]
  *   Array of image styles both key and value are set to style name.
  */
 function image_style_options($include_empty = TRUE) {
diff --git a/core/modules/image/src/Plugin/Field/FieldFormatter/ImageFormatter.php b/core/modules/image/src/Plugin/Field/FieldFormatter/ImageFormatter.php
index 0c5be967e0..ab2c11c2e5 100644
--- a/core/modules/image/src/Plugin/Field/FieldFormatter/ImageFormatter.php
+++ b/core/modules/image/src/Plugin/Field/FieldFormatter/ImageFormatter.php
@@ -122,24 +122,24 @@ public function settingsForm(array $form, FormStateInterface $form_state) {
       Url::fromRoute('entity.image_style.collection')
     );
     $element['image_style'] = [
-      '#title' => t('Image style'),
+      '#title' => $this->t('Image style'),
       '#type' => 'select',
       '#default_value' => $this->getSetting('image_style'),
-      '#empty_option' => t('None (original image)'),
+      '#empty_option' => $this->t('None (original image)'),
       '#options' => $image_styles,
       '#description' => $description_link->toRenderable() + [
         '#access' => $this->currentUser->hasPermission('administer image styles'),
       ],
     ];
     $link_types = [
-      'content' => t('Content'),
-      'file' => t('File'),
+      'content' => $this->t('Content'),
+      'file' => $this->t('File'),
     ];
     $element['image_link'] = [
-      '#title' => t('Link image to'),
+      '#title' => $this->t('Link image to'),
       '#type' => 'select',
       '#default_value' => $this->getSetting('image_link'),
-      '#empty_option' => t('Nothing'),
+      '#empty_option' => $this->t('Nothing'),
       '#options' => $link_types,
     ];
 
@@ -182,15 +182,15 @@ public function settingsSummary() {
     // their styles in code.
     $image_style_setting = $this->getSetting('image_style');
     if (isset($image_styles[$image_style_setting])) {
-      $summary[] = t('Image style: @style', ['@style' => $image_styles[$image_style_setting]]);
+      $summary[] = $this->t('Image style: @style', ['@style' => $image_styles[$image_style_setting]]);
     }
     else {
-      $summary[] = t('Original image');
+      $summary[] = $this->t('Original image');
     }
 
     $link_types = [
-      'content' => t('Linked to content'),
-      'file' => t('Linked to file'),
+      'content' => $this->t('Linked to content'),
+      'file' => $this->t('Linked to file'),
     ];
     // Display this setting only if image is linked.
     $image_link_setting = $this->getSetting('image_link');
diff --git a/core/modules/image/src/Plugin/Field/FieldFormatter/ImageUrlFormatter.php b/core/modules/image/src/Plugin/Field/FieldFormatter/ImageUrlFormatter.php
index de59bacf6a..dc4557949c 100644
--- a/core/modules/image/src/Plugin/Field/FieldFormatter/ImageUrlFormatter.php
+++ b/core/modules/image/src/Plugin/Field/FieldFormatter/ImageUrlFormatter.php
@@ -3,8 +3,14 @@
 namespace Drupal\image\Plugin\Field\FieldFormatter;
 
 use Drupal\Core\Cache\CacheableMetadata;
+use Drupal\Core\Entity\EntityStorageInterface;
+use Drupal\Core\Field\FieldDefinitionInterface;
 use Drupal\Core\Field\FieldItemListInterface;
 use Drupal\Core\Form\FormStateInterface;
+use Drupal\Core\Link;
+use Drupal\Core\Session\AccountInterface;
+use Drupal\Core\Url;
+use Symfony\Component\DependencyInjection\ContainerInterface;
 
 /**
  * Plugin implementation of the 'image_url' formatter.
@@ -17,7 +23,66 @@
  *   }
  * )
  */
-class ImageUrlFormatter extends ImageFormatter {
+class ImageUrlFormatter extends ImageFormatterBase {
+
+  /**
+   * The image style entity storage.
+   *
+   * @var \Drupal\image\ImageStyleStorageInterface
+   */
+  protected $imageStyleStorage;
+
+  /**
+   * The current user.
+   *
+   * @var \Drupal\Core\Session\AccountInterface
+   */
+  protected $currentUser;
+
+  /**
+   * Constructs an ImageFormatter object.
+   *
+   * @param string $plugin_id
+   *   The plugin_id for the formatter.
+   * @param mixed $plugin_definition
+   *   The plugin implementation definition.
+   * @param \Drupal\Core\Field\FieldDefinitionInterface $field_definition
+   *   The definition of the field to which the formatter is associated.
+   * @param array $settings
+   *   The formatter settings.
+   * @param string $label
+   *   The formatter label display setting.
+   * @param string $view_mode
+   *   The view mode.
+   * @param array $third_party_settings
+   *   Any third party settings.
+   * @param \Drupal\Core\Entity\EntityStorageInterface $image_style_storage
+   *   The image style storage.
+   * @param \Drupal\Core\Session\AccountInterface $current_user
+   *   The current user.
+   */
+  public function __construct($plugin_id, $plugin_definition, FieldDefinitionInterface $field_definition, array $settings, $label, $view_mode, array $third_party_settings, EntityStorageInterface $image_style_storage, AccountInterface $current_user) {
+    parent::__construct($plugin_id, $plugin_definition, $field_definition, $settings, $label, $view_mode, $third_party_settings);
+    $this->imageStyleStorage = $image_style_storage;
+    $this->currentUser = $current_user;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
+    return new static(
+      $plugin_id,
+      $plugin_definition,
+      $configuration['field_definition'],
+      $configuration['settings'],
+      $configuration['label'],
+      $configuration['view_mode'],
+      $configuration['third_party_settings'],
+      $container->get('entity_type.manager')->getStorage('image_style'),
+      $container->get('current_user'),
+    );
+  }
 
   /**
    * {@inheritdoc}
@@ -36,6 +101,22 @@ public function settingsForm(array $form, FormStateInterface $form_state) {
 
     unset($element['image_link'], $element['image_loading']);
 
+    $image_styles = image_style_options(FALSE);
+    $description_link = Link::fromTextAndUrl(
+      $this->t('Configure Image Styles'),
+      Url::fromRoute('entity.image_style.collection')
+    );
+    $element['image_style'] = [
+      '#title' => $this->t('Image style'),
+      '#type' => 'select',
+      '#default_value' => $this->getSetting('image_style'),
+      '#empty_option' => $this->t('None (original image)'),
+      '#options' => $image_styles,
+      '#description' => $description_link->toRenderable() + [
+        '#access' => $this->currentUser->hasPermission('administer image styles'),
+      ],
+    ];
+
     return $element;
   }
 
@@ -43,8 +124,22 @@ public function settingsForm(array $form, FormStateInterface $form_state) {
    * {@inheritdoc}
    */
   public function settingsSummary() {
-    $summary = parent::settingsSummary();
-    return [$summary[0]];
+    $summary = [];
+
+    $image_styles = image_style_options(FALSE);
+    // Unset possible 'No defined styles' option.
+    unset($image_styles['']);
+    // Styles could be lost because of enabled/disabled modules that defines
+    // their styles in code.
+    $image_style_setting = $this->getSetting('image_style');
+    if (isset($image_styles[$image_style_setting])) {
+      $summary[] = $this->t('Image style: @style', ['@style' => $image_styles[$image_style_setting]]);
+    }
+    else {
+      $summary[] = $this->t('Original image');
+    }
+
+    return array_merge($summary, parent::settingsSummary());
   }
 
   /**
diff --git a/core/modules/image/src/Plugin/Field/FieldType/ImageItem.php b/core/modules/image/src/Plugin/Field/FieldType/ImageItem.php
index 8992a77ab7..ca449ad890 100644
--- a/core/modules/image/src/Plugin/Field/FieldType/ImageItem.php
+++ b/core/modules/image/src/Plugin/Field/FieldType/ImageItem.php
@@ -10,6 +10,7 @@
 use Drupal\Core\File\FileSystemInterface;
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\StreamWrapper\StreamWrapperInterface;
+use Drupal\Core\StringTranslation\TranslatableMarkup;
 use Drupal\Core\TypedData\DataDefinition;
 use Drupal\file\Entity\File;
 use Drupal\file\Plugin\Field\FieldType\FileItem;
@@ -141,20 +142,20 @@ public static function propertyDefinitions(FieldStorageDefinitionInterface $fiel
     unset($properties['description']);
 
     $properties['alt'] = DataDefinition::create('string')
-      ->setLabel(t('Alternative text'))
-      ->setDescription(t("Alternative image text, for the image's 'alt' attribute."));
+      ->setLabel(new TranslatableMarkup('Alternative text'))
+      ->setDescription(new TranslatableMarkup("Alternative image text, for the image's 'alt' attribute."));
 
     $properties['title'] = DataDefinition::create('string')
-      ->setLabel(t('Title'))
-      ->setDescription(t("Image title text, for the image's 'title' attribute."));
+      ->setLabel(new TranslatableMarkup('Title'))
+      ->setDescription(new TranslatableMarkup("Image title text, for the image's 'title' attribute."));
 
     $properties['width'] = DataDefinition::create('integer')
-      ->setLabel(t('Width'))
-      ->setDescription(t('The width of the image in pixels.'));
+      ->setLabel(new TranslatableMarkup('Width'))
+      ->setDescription(new TranslatableMarkup('The width of the image in pixels.'));
 
     $properties['height'] = DataDefinition::create('integer')
-      ->setLabel(t('Height'))
-      ->setDescription(t('The height of the image in pixels.'));
+      ->setLabel(new TranslatableMarkup('Height'))
+      ->setDescription(new TranslatableMarkup('The height of the image in pixels.'));
 
     return $properties;
   }
@@ -173,15 +174,15 @@ public function storageSettingsForm(array &$form, FormStateInterface $form_state
     $scheme_options = \Drupal::service('stream_wrapper_manager')->getNames(StreamWrapperInterface::WRITE_VISIBLE);
     $element['uri_scheme'] = [
       '#type' => 'radios',
-      '#title' => t('Upload destination'),
+      '#title' => $this->t('Upload destination'),
       '#options' => $scheme_options,
       '#default_value' => $settings['uri_scheme'],
-      '#description' => t('Select where the final files should be stored. Private file storage has significantly more overhead than public files, but allows restricted access to files within this field.'),
+      '#description' => $this->t('Select where the final files should be stored. Private file storage has significantly more overhead than public files, but allows restricted access to files within this field.'),
     ];
 
     // Add default_image element.
     static::defaultImageForm($element, $settings);
-    $element['default_image']['#description'] = t('If no image is uploaded, this image will be shown on display.');
+    $element['default_image']['#description'] = $this->t('If no image is uploaded, this image will be shown on display.');
 
     return $element;
   }
@@ -199,14 +200,14 @@ public function fieldSettingsForm(array $form, FormStateInterface $form_state) {
     $max_resolution = explode('x', $settings['max_resolution']) + ['', ''];
     $element['max_resolution'] = [
       '#type' => 'item',
-      '#title' => t('Maximum image resolution'),
+      '#title' => $this->t('Maximum image resolution'),
       '#element_validate' => [[static::class, 'validateResolution']],
       '#weight' => 4.1,
-      '#description' => t('The maximum allowed image size expressed as WIDTH×HEIGHT (e.g. 640×480). Leave blank for no restriction. If a larger image is uploaded, it will be resized to reflect the given width and height. Resizing images on upload will cause the loss of <a href="http://wikipedia.org/wiki/Exchangeable_image_file_format">EXIF data</a> in the image.'),
+      '#description' => $this->t('The maximum allowed image size expressed as WIDTH×HEIGHT (e.g. 640×480). Leave blank for no restriction. If a larger image is uploaded, it will be resized to reflect the given width and height. Resizing images on upload will cause the loss of <a href="http://wikipedia.org/wiki/Exchangeable_image_file_format">EXIF data</a> in the image.'),
     ];
     $element['max_resolution']['x'] = [
       '#type' => 'number',
-      '#title' => t('Maximum width'),
+      '#title' => $this->t('Maximum width'),
       '#title_display' => 'invisible',
       '#default_value' => $max_resolution[0],
       '#min' => 1,
@@ -215,25 +216,25 @@ public function fieldSettingsForm(array $form, FormStateInterface $form_state) {
     ];
     $element['max_resolution']['y'] = [
       '#type' => 'number',
-      '#title' => t('Maximum height'),
+      '#title' => $this->t('Maximum height'),
       '#title_display' => 'invisible',
       '#default_value' => $max_resolution[1],
       '#min' => 1,
-      '#field_suffix' => ' ' . t('pixels'),
+      '#field_suffix' => ' ' . $this->t('pixels'),
       '#suffix' => '</div>',
     ];
 
     $min_resolution = explode('x', $settings['min_resolution']) + ['', ''];
     $element['min_resolution'] = [
       '#type' => 'item',
-      '#title' => t('Minimum image resolution'),
+      '#title' => $this->t('Minimum image resolution'),
       '#element_validate' => [[static::class, 'validateResolution']],
       '#weight' => 4.2,
-      '#description' => t('The minimum allowed image size expressed as WIDTH×HEIGHT (e.g. 640×480). Leave blank for no restriction. If a smaller image is uploaded, it will be rejected.'),
+      '#description' => $this->t('The minimum allowed image size expressed as WIDTH×HEIGHT (e.g. 640×480). Leave blank for no restriction. If a smaller image is uploaded, it will be rejected.'),
     ];
     $element['min_resolution']['x'] = [
       '#type' => 'number',
-      '#title' => t('Minimum width'),
+      '#title' => $this->t('Minimum width'),
       '#title_display' => 'invisible',
       '#default_value' => $min_resolution[0],
       '#min' => 1,
@@ -242,11 +243,11 @@ public function fieldSettingsForm(array $form, FormStateInterface $form_state) {
     ];
     $element['min_resolution']['y'] = [
       '#type' => 'number',
-      '#title' => t('Minimum height'),
+      '#title' => $this->t('Minimum height'),
       '#title_display' => 'invisible',
       '#default_value' => $min_resolution[1],
       '#min' => 1,
-      '#field_suffix' => ' ' . t('pixels'),
+      '#field_suffix' => ' ' . $this->t('pixels'),
       '#suffix' => '</div>',
     ];
 
@@ -256,16 +257,16 @@ public function fieldSettingsForm(array $form, FormStateInterface $form_state) {
     // Add title and alt configuration options.
     $element['alt_field'] = [
       '#type' => 'checkbox',
-      '#title' => t('Enable <em>Alt</em> field'),
+      '#title' => $this->t('Enable <em>Alt</em> field'),
       '#default_value' => $settings['alt_field'],
-      '#description' => t('Short description of the image used by screen readers and displayed when the image is not loaded. Enabling this field is recommended.'),
+      '#description' => $this->t('Short description of the image used by screen readers and displayed when the image is not loaded. Enabling this field is recommended.'),
       '#weight' => 9,
     ];
     $element['alt_field_required'] = [
       '#type' => 'checkbox',
-      '#title' => t('<em>Alt</em> field required'),
+      '#title' => $this->t('<em>Alt</em> field required'),
       '#default_value' => $settings['alt_field_required'],
-      '#description' => t('Making this field required is recommended.'),
+      '#description' => $this->t('Making this field required is recommended.'),
       '#weight' => 10,
       '#states' => [
         'visible' => [
@@ -275,14 +276,14 @@ public function fieldSettingsForm(array $form, FormStateInterface $form_state) {
     ];
     $element['title_field'] = [
       '#type' => 'checkbox',
-      '#title' => t('Enable <em>Title</em> field'),
+      '#title' => $this->t('Enable <em>Title</em> field'),
       '#default_value' => $settings['title_field'],
-      '#description' => t('The title attribute is used as a tooltip when the mouse hovers over the image. Enabling this field is not recommended as it can cause problems with screen readers.'),
+      '#description' => $this->t('The title attribute is used as a tooltip when the mouse hovers over the image. Enabling this field is not recommended as it can cause problems with screen readers.'),
       '#weight' => 11,
     ];
     $element['title_field_required'] = [
       '#type' => 'checkbox',
-      '#title' => t('<em>Title</em> field required'),
+      '#title' => $this->t('<em>Title</em> field required'),
       '#default_value' => $settings['title_field_required'],
       '#weight' => 12,
       '#states' => [
@@ -294,7 +295,7 @@ public function fieldSettingsForm(array $form, FormStateInterface $form_state) {
 
     // Add default_image element.
     static::defaultImageForm($element, $settings);
-    $element['default_image']['#description'] = t("If no image is uploaded, this image will be shown on display and will override the field's default image.");
+    $element['default_image']['#description'] = $this->t("If no image is uploaded, this image will be shown on display and will override the field's default image.");
 
     return $element;
   }
@@ -388,9 +389,9 @@ public static function validateResolution($element, FormStateInterface $form_sta
     if (!empty($element['x']['#value']) || !empty($element['y']['#value'])) {
       foreach (['x', 'y'] as $dimension) {
         if (!$element[$dimension]['#value']) {
-          // We expect the field name placeholder value to be wrapped in t()
+          // We expect the field name placeholder value to be wrapped in $this->t()
           // here, so it won't be escaped again as it's already marked safe.
-          $form_state->setError($element[$dimension], t('Both a height and width value must be specified in the @name field.', ['@name' => $element['#title']]));
+          $form_state->setError($element[$dimension], new TranslatableMarkup('Both a height and width value must be specified in the @name field.', ['@name' => $element['#title']]));
           return;
         }
       }
@@ -412,7 +413,7 @@ public static function validateResolution($element, FormStateInterface $form_sta
   protected function defaultImageForm(array &$element, array $settings) {
     $element['default_image'] = [
       '#type' => 'details',
-      '#title' => t('Default image'),
+      '#title' => $this->t('Default image'),
       '#open' => TRUE,
     ];
     // Convert the stored UUID to a FID.
@@ -423,8 +424,8 @@ protected function defaultImageForm(array &$element, array $settings) {
     }
     $element['default_image']['uuid'] = [
       '#type' => 'managed_file',
-      '#title' => t('Image'),
-      '#description' => t('Image to be shown if no image is uploaded.'),
+      '#title' => $this->t('Image'),
+      '#description' => $this->t('Image to be shown if no image is uploaded.'),
       '#default_value' => $fids,
       '#upload_location' => $settings['uri_scheme'] . '://default_images/',
       '#element_validate' => [
@@ -435,15 +436,15 @@ protected function defaultImageForm(array &$element, array $settings) {
     ];
     $element['default_image']['alt'] = [
       '#type' => 'textfield',
-      '#title' => t('Alternative text'),
-      '#description' => t('Short description of the image used by screen readers and displayed when the image is not loaded. This is important for accessibility.'),
+      '#title' => $this->t('Alternative text'),
+      '#description' => $this->t('Short description of the image used by screen readers and displayed when the image is not loaded. This is important for accessibility.'),
       '#default_value' => $settings['default_image']['alt'],
       '#maxlength' => 512,
     ];
     $element['default_image']['title'] = [
       '#type' => 'textfield',
-      '#title' => t('Title'),
-      '#description' => t('The title attribute is used as a tooltip when the mouse hovers over the image.'),
+      '#title' => $this->t('Title'),
+      '#description' => $this->t('The title attribute is used as a tooltip when the mouse hovers over the image.'),
       '#default_value' => $settings['default_image']['title'],
       '#maxlength' => 1024,
     ];
diff --git a/core/modules/image/src/Plugin/Field/FieldWidget/ImageWidget.php b/core/modules/image/src/Plugin/Field/FieldWidget/ImageWidget.php
index 5a602339a2..3037615d8a 100644
--- a/core/modules/image/src/Plugin/Field/FieldWidget/ImageWidget.php
+++ b/core/modules/image/src/Plugin/Field/FieldWidget/ImageWidget.php
@@ -7,6 +7,7 @@
 use Drupal\Core\Image\ImageFactory;
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\Render\ElementInfoManagerInterface;
+use Drupal\Core\StringTranslation\TranslatableMarkup;
 use Drupal\file\Entity\File;
 use Drupal\file\Plugin\Field\FieldWidget\FileWidget;
 use Drupal\image\Entity\ImageStyle;
@@ -71,12 +72,12 @@ public function settingsForm(array $form, FormStateInterface $form_state) {
     $element = parent::settingsForm($form, $form_state);
 
     $element['preview_image_style'] = [
-      '#title' => t('Preview image style'),
+      '#title' => $this->t('Preview image style'),
       '#type' => 'select',
       '#options' => image_style_options(FALSE),
-      '#empty_option' => '<' . t('no preview') . '>',
+      '#empty_option' => '<' . $this->t('no preview') . '>',
       '#default_value' => $this->getSetting('preview_image_style'),
-      '#description' => t('The preview image will be shown while editing the content.'),
+      '#description' => $this->t('The preview image will be shown while editing the content.'),
       '#weight' => 15,
     ];
 
@@ -96,10 +97,10 @@ public function settingsSummary() {
     // their styles in code.
     $image_style_setting = $this->getSetting('preview_image_style');
     if (isset($image_styles[$image_style_setting])) {
-      $preview_image_style = t('Preview image style: @style', ['@style' => $image_styles[$image_style_setting]]);
+      $preview_image_style = $this->t('Preview image style: @style', ['@style' => $image_styles[$image_style_setting]]);
     }
     else {
-      $preview_image_style = t('No preview');
+      $preview_image_style = $this->t('No preview');
     }
 
     array_unshift($summary, $preview_image_style);
@@ -256,10 +257,10 @@ public static function process($element, FormStateInterface $form_state, $form)
 
     // Add the additional alt and title fields.
     $element['alt'] = [
-      '#title' => t('Alternative text'),
+      '#title' => new TranslatableMarkup('Alternative text'),
       '#type' => 'textfield',
       '#default_value' => $item['alt'] ?? '',
-      '#description' => t('Short description of the image used by screen readers and displayed when the image is not loaded. This is important for accessibility.'),
+      '#description' => new TranslatableMarkup('Short description of the image used by screen readers and displayed when the image is not loaded. This is important for accessibility.'),
       // @see https://www.drupal.org/node/465106#alt-text
       '#maxlength' => 512,
       '#weight' => -12,
@@ -269,9 +270,9 @@ public static function process($element, FormStateInterface $form_state, $form)
     ];
     $element['title'] = [
       '#type' => 'textfield',
-      '#title' => t('Title'),
+      '#title' => new TranslatableMarkup('Title'),
       '#default_value' => $item['title'] ?? '',
-      '#description' => t('The title is used as a tool tip when the user hovers the mouse over the image.'),
+      '#description' => new TranslatableMarkup('The title is used as a tool tip when the user hovers the mouse over the image.'),
       '#maxlength' => 1024,
       '#weight' => -11,
       '#access' => (bool) $item['fids'] && $element['#title_field'],
diff --git a/core/modules/image/src/Plugin/ImageEffect/ConvertImageEffect.php b/core/modules/image/src/Plugin/ImageEffect/ConvertImageEffect.php
index 61fb4d478c..4e848326cf 100644
--- a/core/modules/image/src/Plugin/ImageEffect/ConvertImageEffect.php
+++ b/core/modules/image/src/Plugin/ImageEffect/ConvertImageEffect.php
@@ -67,7 +67,7 @@ public function buildConfigurationForm(array $form, FormStateInterface $form_sta
     );
     $form['extension'] = [
       '#type' => 'select',
-      '#title' => t('Convert to'),
+      '#title' => $this->t('Convert to'),
       '#default_value' => $this->configuration['extension'],
       '#required' => TRUE,
       '#options' => $options,
diff --git a/core/modules/image/src/Plugin/ImageEffect/CropImageEffect.php b/core/modules/image/src/Plugin/ImageEffect/CropImageEffect.php
index cdacda96b7..8f99de8813 100644
--- a/core/modules/image/src/Plugin/ImageEffect/CropImageEffect.php
+++ b/core/modules/image/src/Plugin/ImageEffect/CropImageEffect.php
@@ -59,21 +59,21 @@ public function buildConfigurationForm(array $form, FormStateInterface $form_sta
     $form = parent::buildConfigurationForm($form, $form_state);
     $form['anchor'] = [
       '#type' => 'radios',
-      '#title' => t('Anchor'),
+      '#title' => $this->t('Anchor'),
       '#options' => [
-        'left-top' => t('Top left'),
-        'center-top' => t('Top center'),
-        'right-top' => t('Top right'),
-        'left-center' => t('Center left'),
-        'center-center' => t('Center'),
-        'right-center' => t('Center right'),
-        'left-bottom' => t('Bottom left'),
-        'center-bottom' => t('Bottom center'),
-        'right-bottom' => t('Bottom right'),
+        'left-top' => $this->t('Top left'),
+        'center-top' => $this->t('Top center'),
+        'right-top' => $this->t('Top right'),
+        'left-center' => $this->t('Center left'),
+        'center-center' => $this->t('Center'),
+        'right-center' => $this->t('Center right'),
+        'left-bottom' => $this->t('Bottom left'),
+        'center-bottom' => $this->t('Bottom center'),
+        'right-bottom' => $this->t('Bottom right'),
       ],
       '#theme' => 'image_anchor',
       '#default_value' => $this->configuration['anchor'],
-      '#description' => t('The part of the image that will be retained during the crop.'),
+      '#description' => $this->t('The part of the image that will be retained during the crop.'),
     ];
     return $form;
   }
diff --git a/core/modules/image/src/Plugin/ImageEffect/ResizeImageEffect.php b/core/modules/image/src/Plugin/ImageEffect/ResizeImageEffect.php
index dba34298de..26f70705db 100644
--- a/core/modules/image/src/Plugin/ImageEffect/ResizeImageEffect.php
+++ b/core/modules/image/src/Plugin/ImageEffect/ResizeImageEffect.php
@@ -66,17 +66,17 @@ public function defaultConfiguration() {
   public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
     $form['width'] = [
       '#type' => 'number',
-      '#title' => t('Width'),
+      '#title' => $this->t('Width'),
       '#default_value' => $this->configuration['width'],
-      '#field_suffix' => ' ' . t('pixels'),
+      '#field_suffix' => ' ' . $this->t('pixels'),
       '#required' => TRUE,
       '#min' => 1,
     ];
     $form['height'] = [
       '#type' => 'number',
-      '#title' => t('Height'),
+      '#title' => $this->t('Height'),
       '#default_value' => $this->configuration['height'],
-      '#field_suffix' => ' ' . t('pixels'),
+      '#field_suffix' => ' ' . $this->t('pixels'),
       '#required' => TRUE,
       '#min' => 1,
     ];
diff --git a/core/modules/image/src/Plugin/ImageEffect/RotateImageEffect.php b/core/modules/image/src/Plugin/ImageEffect/RotateImageEffect.php
index 7e394a3cce..d6453dbf94 100644
--- a/core/modules/image/src/Plugin/ImageEffect/RotateImageEffect.php
+++ b/core/modules/image/src/Plugin/ImageEffect/RotateImageEffect.php
@@ -83,24 +83,24 @@ public function buildConfigurationForm(array $form, FormStateInterface $form_sta
     $form['degrees'] = [
       '#type' => 'number',
       '#default_value' => $this->configuration['degrees'],
-      '#title' => t('Rotation angle'),
-      '#description' => t('The number of degrees the image should be rotated. Positive numbers are clockwise, negative are counter-clockwise.'),
+      '#title' => $this->t('Rotation angle'),
+      '#description' => $this->t('The number of degrees the image should be rotated. Positive numbers are clockwise, negative are counter-clockwise.'),
       '#field_suffix' => '°',
       '#required' => TRUE,
     ];
     $form['bgcolor'] = [
       '#type' => 'textfield',
       '#default_value' => $this->configuration['bgcolor'],
-      '#title' => t('Background color'),
-      '#description' => t('The background color to use for exposed areas of the image. Use web-style hex colors (#FFFFFF for white, #000000 for black). Leave blank for transparency on image types that support it.'),
+      '#title' => $this->t('Background color'),
+      '#description' => $this->t('The background color to use for exposed areas of the image. Use web-style hex colors (#FFFFFF for white, #000000 for black). Leave blank for transparency on image types that support it.'),
       '#size' => 7,
       '#maxlength' => 7,
     ];
     $form['random'] = [
       '#type' => 'checkbox',
       '#default_value' => $this->configuration['random'],
-      '#title' => t('Randomize'),
-      '#description' => t('Randomize the rotation angle for each image. The angle specified above is used as a maximum.'),
+      '#title' => $this->t('Randomize'),
+      '#description' => $this->t('Randomize the rotation angle for each image. The angle specified above is used as a maximum.'),
     ];
     return $form;
   }
diff --git a/core/modules/image/src/Plugin/ImageEffect/ScaleImageEffect.php b/core/modules/image/src/Plugin/ImageEffect/ScaleImageEffect.php
index bfb6d942fb..13e5aaa2d2 100644
--- a/core/modules/image/src/Plugin/ImageEffect/ScaleImageEffect.php
+++ b/core/modules/image/src/Plugin/ImageEffect/ScaleImageEffect.php
@@ -69,8 +69,8 @@ public function buildConfigurationForm(array $form, FormStateInterface $form_sta
     $form['upscale'] = [
       '#type' => 'checkbox',
       '#default_value' => $this->configuration['upscale'],
-      '#title' => t('Allow Upscaling'),
-      '#description' => t('Let scale make images larger than their original size.'),
+      '#title' => $this->t('Allow Upscaling'),
+      '#description' => $this->t('Let scale make images larger than their original size.'),
     ];
     return $form;
   }
diff --git a/core/modules/image/tests/modules/image_module_test/src/Plugin/Field/FieldFormatter/DummyAjaxFormatter.php b/core/modules/image/tests/modules/image_module_test/src/Plugin/Field/FieldFormatter/DummyAjaxFormatter.php
index cebc54beca..0952a48dc6 100644
--- a/core/modules/image/tests/modules/image_module_test/src/Plugin/Field/FieldFormatter/DummyAjaxFormatter.php
+++ b/core/modules/image/tests/modules/image_module_test/src/Plugin/Field/FieldFormatter/DummyAjaxFormatter.php
@@ -24,7 +24,7 @@ class DummyAjaxFormatter extends FormatterBase {
    */
   public function settingsSummary() {
     $summary = [];
-    $summary[] = t('Renders nothing');
+    $summary[] = $this->t('Renders nothing');
     return $summary;
   }
 
diff --git a/core/modules/image/tests/modules/image_module_test/src/Plugin/ImageEffect/AjaxTestImageEffect.php b/core/modules/image/tests/modules/image_module_test/src/Plugin/ImageEffect/AjaxTestImageEffect.php
index a18c2637c0..1a8cfd7eea 100644
--- a/core/modules/image/tests/modules/image_module_test/src/Plugin/ImageEffect/AjaxTestImageEffect.php
+++ b/core/modules/image/tests/modules/image_module_test/src/Plugin/ImageEffect/AjaxTestImageEffect.php
@@ -33,7 +33,7 @@ public function defaultConfiguration() {
   public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
     $form['test_parameter'] = [
       '#type' => 'number',
-      '#title' => t('Test parameter'),
+      '#title' => $this->t('Test parameter'),
       '#default_value' => $this->configuration['test_parameter'],
       '#min' => 0,
     ];
diff --git a/core/modules/image/tests/src/Functional/ImageFieldDisplayTest.php b/core/modules/image/tests/src/Functional/ImageFieldDisplayTest.php
index 03fac1542a..7502129a79 100644
--- a/core/modules/image/tests/src/Functional/ImageFieldDisplayTest.php
+++ b/core/modules/image/tests/src/Functional/ImageFieldDisplayTest.php
@@ -175,17 +175,7 @@ public function _testImageFieldFormatters($scheme) {
     $this->assertSession()->responseHeaderContains('X-Drupal-Cache-Tags', $file->getCacheTags()[0]);
     // Verify that no image style cache tags are found.
     $this->assertSession()->responseHeaderNotContains('X-Drupal-Cache-Tags', 'image_style:');
-    $elements = $this->xpath(
-      '//a[@href=:path]/img[@src=:url and @alt=:alt and @width=:width and @height=:height]',
-      [
-        ':path' => $node->toUrl()->toString(),
-        ':url' => $file->createFileUrl(),
-        ':width' => $image['#width'],
-        ':height' => $image['#height'],
-        ':alt' => $alt,
-      ]
-    );
-    $this->assertCount(1, $elements, 'Image linked to content formatter displaying correctly on full node view.');
+    $this->assertSession()->elementsCount('xpath', '//a[@href="' . $node->toUrl()->toString() . '"]/img[@src="' . $file->createFileUrl() . '" and @alt="' . $alt . '" and @width="' . $image['#width'] . '" and @height="' . $image['#height'] . '"]', 1);
 
     // Test the image style 'thumbnail' formatter.
     $display_options['settings']['image_link'] = '';
@@ -216,6 +206,9 @@ public function _testImageFieldFormatters($scheme) {
       $this->drupalLogout();
       $this->drupalGet(ImageStyle::load('thumbnail')->buildUrl($image_uri));
       $this->assertSession()->statusCodeEquals(403);
+
+      // Log in again.
+      $this->drupalLogin($this->adminUser);
     }
 
     // Test the image URL formatter without an image style.
@@ -230,6 +223,18 @@ public function _testImageFieldFormatters($scheme) {
     $display_options['settings']['image_style'] = 'thumbnail';
     $expected_url = \Drupal::service('file_url_generator')->transformRelative(ImageStyle::load('thumbnail')->buildUrl($image_uri));
     $this->assertEquals($expected_url, $node->{$field_name}->view($display_options)[0]['#markup']);
+
+    // Test the settings summary.
+    $display_options = [
+      'type' => 'image_url',
+      'settings' => [
+        'image_style' => 'thumbnail',
+      ],
+    ];
+    $display = \Drupal::service('entity_display.repository')->getViewDisplay('node', $node->getType(), 'default');
+    $display->setComponent($field_name, $display_options)->save();
+    $this->drupalGet("admin/structure/types/manage/" . $node->getType() . "/display");
+    $this->assertSession()->responseContains('Image style: Thumbnail (100×100)');
   }
 
   /**
diff --git a/core/modules/image/tests/src/Functional/ImageFieldTestBase.php b/core/modules/image/tests/src/Functional/ImageFieldTestBase.php
index f561065191..01ea732280 100644
--- a/core/modules/image/tests/src/Functional/ImageFieldTestBase.php
+++ b/core/modules/image/tests/src/Functional/ImageFieldTestBase.php
@@ -45,6 +45,9 @@ abstract class ImageFieldTestBase extends BrowserTestBase {
    */
   protected $adminUser;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/image/tests/src/Kernel/ImageItemTest.php b/core/modules/image/tests/src/Kernel/ImageItemTest.php
index 2884747213..8c2de5d0cb 100644
--- a/core/modules/image/tests/src/Kernel/ImageItemTest.php
+++ b/core/modules/image/tests/src/Kernel/ImageItemTest.php
@@ -40,6 +40,9 @@ class ImageItemTest extends FieldKernelTestBase {
    */
   protected $imageFactory;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/image/tests/src/Kernel/ImageThemeFunctionTest.php b/core/modules/image/tests/src/Kernel/ImageThemeFunctionTest.php
index 0a4e4f37fe..6fc83f07a7 100644
--- a/core/modules/image/tests/src/Kernel/ImageThemeFunctionTest.php
+++ b/core/modules/image/tests/src/Kernel/ImageThemeFunctionTest.php
@@ -51,6 +51,9 @@ class ImageThemeFunctionTest extends KernelTestBase {
    */
   protected $imageFactory;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/image/tests/src/Kernel/Migrate/d6/MigrateImageCacheTest.php b/core/modules/image/tests/src/Kernel/Migrate/d6/MigrateImageCacheTest.php
index 89009fd058..7cb8ad8d9c 100644
--- a/core/modules/image/tests/src/Kernel/Migrate/d6/MigrateImageCacheTest.php
+++ b/core/modules/image/tests/src/Kernel/Migrate/d6/MigrateImageCacheTest.php
@@ -85,19 +85,19 @@ public function testPassingMigration() {
   public function testMissingEffectPlugin() {
     Database::getConnection('default', 'migrate')->insert("imagecache_action")
       ->fields([
-       'presetid',
-       'weight',
-       'module',
-       'action',
-       'data',
-     ])
+        'presetid',
+        'weight',
+        'module',
+        'action',
+        'data',
+      ])
       ->values([
-       'presetid' => '1',
-       'weight' => '0',
-       'module' => 'imagecache',
-       'action' => 'imagecache_deprecated_scale',
-       'data' => 'a:3:{s:3:"fit";s:7:"outside";s:5:"width";s:3:"200";s:6:"height";s:3:"200";}',
-     ])->execute();
+        'presetid' => '1',
+        'weight' => '0',
+        'module' => 'imagecache',
+        'action' => 'imagecache_deprecated_scale',
+        'data' => 'a:3:{s:3:"fit";s:7:"outside";s:5:"width";s:3:"200";s:6:"height";s:3:"200";}',
+      ])->execute();
 
     $this->startCollectingMessages();
     $this->executeMigration('d6_imagecache_presets');
@@ -113,22 +113,22 @@ public function testMissingEffectPlugin() {
   public function testInvalidCropValues() {
     Database::getConnection('default', 'migrate')->insert("imagecache_action")
       ->fields([
-       'presetid',
-       'weight',
-       'module',
-       'action',
-       'data',
-     ])
+        'presetid',
+        'weight',
+        'module',
+        'action',
+        'data',
+      ])
       ->values([
-       'presetid' => '1',
-       'weight' => '0',
-       'module' => 'imagecache',
-       'action' => 'imagecache_crop',
-       'data' => serialize([
-         'xoffset' => '10',
-         'yoffset' => '10',
-       ]),
-     ])->execute();
+        'presetid' => '1',
+        'weight' => '0',
+        'module' => 'imagecache',
+        'action' => 'imagecache_crop',
+        'data' => serialize([
+          'xoffset' => '10',
+          'yoffset' => '10',
+        ]),
+      ])->execute();
 
     $this->startCollectingMessages();
     $this->executeMigration('d6_imagecache_presets');
diff --git a/core/modules/image/tests/src/Kernel/Views/RelationshipUserImageDataTest.php b/core/modules/image/tests/src/Kernel/Views/RelationshipUserImageDataTest.php
index 04a605c7f8..7c0bc9ff52 100644
--- a/core/modules/image/tests/src/Kernel/Views/RelationshipUserImageDataTest.php
+++ b/core/modules/image/tests/src/Kernel/Views/RelationshipUserImageDataTest.php
@@ -38,6 +38,9 @@ class RelationshipUserImageDataTest extends ViewsKernelTestBase {
    */
   public static $testViews = ['test_image_user_image_data'];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp($import_test_views = TRUE): void {
     parent::setUp($import_test_views);
 
diff --git a/core/modules/image/tests/src/Unit/ImageStyleTest.php b/core/modules/image/tests/src/Unit/ImageStyleTest.php
index eef2acb8a3..6ea87730a2 100644
--- a/core/modules/image/tests/src/Unit/ImageStyleTest.php
+++ b/core/modules/image/tests/src/Unit/ImageStyleTest.php
@@ -53,7 +53,7 @@ protected function getImageStyleMock($image_effect_id, $image_effect, $stubs = [
     $effectManager->expects($this->any())
       ->method('createInstance')
       ->with($image_effect_id)
-      ->will($this->returnValue($image_effect));
+      ->willReturn($image_effect);
     $default_stubs = ['getImageEffectPluginManager', 'fileDefaultScheme'];
     $image_style = $this->getMockBuilder('\Drupal\image\Entity\ImageStyle')
       ->setConstructorArgs([
@@ -65,7 +65,7 @@ protected function getImageStyleMock($image_effect_id, $image_effect, $stubs = [
 
     $image_style->expects($this->any())
       ->method('getImageEffectPluginManager')
-      ->will($this->returnValue($effectManager));
+      ->willReturn($effectManager);
     $image_style->expects($this->any())
       ->method('fileDefaultScheme')
       ->willReturnCallback([$this, 'fileDefaultScheme']);
@@ -82,12 +82,12 @@ protected function setUp(): void {
     $this->entityType = $this->createMock('\Drupal\Core\Entity\EntityTypeInterface');
     $this->entityType->expects($this->any())
       ->method('getProvider')
-      ->will($this->returnValue($provider));
+      ->willReturn($provider);
     $this->entityTypeManager = $this->createMock('\Drupal\Core\Entity\EntityTypeManagerInterface');
     $this->entityTypeManager->expects($this->any())
       ->method('getDefinition')
       ->with($this->entityTypeId)
-      ->will($this->returnValue($this->entityType));
+      ->willReturn($this->entityType);
   }
 
   /**
@@ -101,7 +101,7 @@ public function testGetDerivativeExtension() {
       ->getMock();
     $image_effect->expects($this->any())
       ->method('getDerivativeExtension')
-      ->will($this->returnValue('png'));
+      ->willReturn('png');
 
     $image_style = $this->getImageStyleMock($image_effect_id, $image_effect);
 
@@ -124,7 +124,7 @@ public function testBuildUri() {
       ->getMock();
     $image_effect->expects($this->any())
       ->method('getDerivativeExtension')
-      ->will($this->returnValue('png'));
+      ->willReturn('png');
 
     $image_style = $this->getImageStyleMock($image_effect_id, $image_effect);
     $this->assertEquals($image_style->buildUri('public://test.jpeg'), 'public://styles/' . $image_style->id() . '/public/test.jpeg.png');
@@ -157,15 +157,15 @@ public function testGetPathToken() {
       ->getMock();
     $image_effect->expects($this->any())
       ->method('getDerivativeExtension')
-      ->will($this->returnValue('png'));
+      ->willReturn('png');
 
     $image_style = $this->getImageStyleMock($image_effect_id, $image_effect, ['getPrivateKey', 'getHashSalt']);
     $image_style->expects($this->any())
       ->method('getPrivateKey')
-      ->will($this->returnValue($private_key));
+      ->willReturn($private_key);
     $image_style->expects($this->any())
       ->method('getHashSalt')
-      ->will($this->returnValue($hash_salt));
+      ->willReturn($hash_salt);
 
     // Assert the extension has been added to the URI before creating the token.
     $this->assertEquals($image_style->getPathToken('public://test.jpeg.png'), $image_style->getPathToken('public://test.jpeg'));
@@ -184,10 +184,10 @@ public function testGetPathToken() {
     $image_style = $this->getImageStyleMock($image_effect_id, $image_effect, ['getPrivateKey', 'getHashSalt']);
     $image_style->expects($this->any())
       ->method('getPrivateKey')
-      ->will($this->returnValue($private_key));
+      ->willReturn($private_key);
     $image_style->expects($this->any())
       ->method('getHashSalt')
-      ->will($this->returnValue($hash_salt));
+      ->willReturn($hash_salt);
     // Assert no extension has been added to the uri before creating the token.
     $this->assertNotEquals($image_style->getPathToken('public://test.jpeg.png'), $image_style->getPathToken('public://test.jpeg'));
     $this->assertNotEquals(substr(Crypt::hmacBase64($image_style->id() . ':' . 'public://test.jpeg.png', $private_key . $hash_salt), 0, 8), $image_style->getPathToken('public://test.jpeg'));
diff --git a/core/modules/image/tests/src/Unit/PageCache/DenyPrivateImageStyleDownloadTest.php b/core/modules/image/tests/src/Unit/PageCache/DenyPrivateImageStyleDownloadTest.php
index 138b94db74..1fd9679f04 100644
--- a/core/modules/image/tests/src/Unit/PageCache/DenyPrivateImageStyleDownloadTest.php
+++ b/core/modules/image/tests/src/Unit/PageCache/DenyPrivateImageStyleDownloadTest.php
@@ -42,6 +42,9 @@ class DenyPrivateImageStyleDownloadTest extends UnitTestCase {
    */
   protected $routeMatch;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     $this->routeMatch = $this->createMock('Drupal\Core\Routing\RouteMatchInterface');
     $this->policy = new DenyPrivateImageStyleDownload($this->routeMatch);
@@ -58,7 +61,7 @@ protected function setUp(): void {
   public function testPrivateImageStyleDownloadPolicy($expected_result, $route_name) {
     $this->routeMatch->expects($this->once())
       ->method('getRouteName')
-      ->will($this->returnValue($route_name));
+      ->willReturn($route_name);
 
     $actual_result = $this->policy->check($this->response, $this->request);
     $this->assertSame($expected_result, $actual_result);
diff --git a/core/modules/inline_form_errors/src/FormErrorHandler.php b/core/modules/inline_form_errors/src/FormErrorHandler.php
index 23cef62c48..da286108b9 100644
--- a/core/modules/inline_form_errors/src/FormErrorHandler.php
+++ b/core/modules/inline_form_errors/src/FormErrorHandler.php
@@ -108,7 +108,7 @@ protected function displayErrorMessages(array $form, FormStateInterface $form_st
     if (!empty($error_links)) {
       $render_array = [
         [
-         '#markup' => $this->formatPlural(count($error_links), '1 error has been found: ', '@count errors have been found: '),
+          '#markup' => $this->formatPlural(count($error_links), '1 error has been found: ', '@count errors have been found: '),
         ],
         [
           '#theme' => 'item_list',
diff --git a/core/modules/jsonapi/tests/src/Kernel/Normalizer/JsonApiDocumentTopLevelNormalizerTest.php b/core/modules/jsonapi/tests/src/Kernel/Normalizer/JsonApiDocumentTopLevelNormalizerTest.php
index 3d40fe2ea1..fd26faa86a 100644
--- a/core/modules/jsonapi/tests/src/Kernel/Normalizer/JsonApiDocumentTopLevelNormalizerTest.php
+++ b/core/modules/jsonapi/tests/src/Kernel/Normalizer/JsonApiDocumentTopLevelNormalizerTest.php
@@ -360,7 +360,7 @@ public function testNormalize() {
    * @covers ::normalize
    */
   public function testNormalizeRelated() {
-    $this->markTestIncomplete('This fails and should be fixed by https://www.drupal.org/project/drupal/issues/2922121');
+    $this->markTestIncomplete('This fails and should be fixed by https://www.drupal.org/project/drupal/issues/3213752');
 
     [$request, $resource_type] = $this->generateProphecies('node', 'article');
     $request->query = new ParameterBag([
diff --git a/core/modules/language/migrations/d6_language_content_settings.yml b/core/modules/language/migrations/d6_language_content_settings.yml
index 9d307d13e4..ce8732b6a5 100644
--- a/core/modules/language/migrations/d6_language_content_settings.yml
+++ b/core/modules/language/migrations/d6_language_content_settings.yml
@@ -8,8 +8,8 @@ source:
   constants:
     target_type: 'node'
 process:
-# Ignore i18n_node_options_[node_type] options not available in Drupal 8,
-# i18n_required_node and i18n_newnode_current
+  # Ignore i18n_node_options_[node_type] options not available in Drupal 8,
+  # i18n_required_node and i18n_newnode_current
   target_bundle: type
   target_entity_type_id: 'constants/target_type'
   default_langcode:
diff --git a/core/modules/language/migrations/d7_language_content_settings.yml b/core/modules/language/migrations/d7_language_content_settings.yml
index dcc91b59e3..3a8b2ba8e9 100644
--- a/core/modules/language/migrations/d7_language_content_settings.yml
+++ b/core/modules/language/migrations/d7_language_content_settings.yml
@@ -8,8 +8,8 @@ source:
   constants:
     target_type: 'node'
 process:
-# Ignore i18n_node_options_[node_type] options not available in Drupal 8,
-# i18n_required_node and i18n_newnode_current
+  # Ignore i18n_node_options_[node_type] options not available in Drupal 8,
+  # i18n_required_node and i18n_newnode_current
   target_bundle: type
   target_entity_type_id: 'constants/target_type'
   default_langcode:
diff --git a/core/modules/language/src/Entity/ContentLanguageSettings.php b/core/modules/language/src/Entity/ContentLanguageSettings.php
index d3751a0eaa..d7c549924e 100644
--- a/core/modules/language/src/Entity/ContentLanguageSettings.php
+++ b/core/modules/language/src/Entity/ContentLanguageSettings.php
@@ -13,8 +13,8 @@
  *
  * @ConfigEntityType(
  *   id = "language_content_settings",
- *   label = @Translation("Content Language Settings"),
- *   label_collection = @Translation("Content Language Settings"),
+ *   label = @Translation("Content language settings"),
+ *   label_collection = @Translation("Content language settings"),
  *   label_singular = @Translation("content language setting"),
  *   label_plural = @Translation("content languages settings"),
  *   label_count = @PluralTranslation(
diff --git a/core/modules/language/src/Form/NegotiationConfigureForm.php b/core/modules/language/src/Form/NegotiationConfigureForm.php
index 6af8c14585..2b808d54d4 100644
--- a/core/modules/language/src/Form/NegotiationConfigureForm.php
+++ b/core/modules/language/src/Form/NegotiationConfigureForm.php
@@ -308,8 +308,8 @@ protected function configureFormTable(array &$form, $type) {
           $table_form['#show_operations'] = TRUE;
         }
         $table_form['operation'][$method_id] = [
-         '#type' => 'operations',
-         '#links' => $config_op,
+          '#type' => 'operations',
+          '#links' => $config_op,
         ];
       }
     }
diff --git a/core/modules/language/src/LanguageListBuilder.php b/core/modules/language/src/LanguageListBuilder.php
index f736738669..290e699c23 100644
--- a/core/modules/language/src/LanguageListBuilder.php
+++ b/core/modules/language/src/LanguageListBuilder.php
@@ -103,9 +103,9 @@ public function getFormId() {
    */
   public function buildHeader() {
     $header = [
-        'label' => t('Name'),
-        'default' => t('Default'),
-      ] + parent::buildHeader();
+      'label' => t('Name'),
+      'default' => t('Default'),
+    ] + parent::buildHeader();
     return $header;
   }
 
diff --git a/core/modules/language/src/LanguageNegotiatorInterface.php b/core/modules/language/src/LanguageNegotiatorInterface.php
index 5c999c7f8b..2702c8767a 100644
--- a/core/modules/language/src/LanguageNegotiatorInterface.php
+++ b/core/modules/language/src/LanguageNegotiatorInterface.php
@@ -76,11 +76,11 @@
  * }
  *
  * class MyLanguageNegotiationUrl extends LanguageNegotiationUrl {
- *   public function getCurrentLanguage(Request $request = NULL) {
+ *   public function getLangcode(Request $request = NULL) {
  *     if ($request) {
  *       // Use the original URL language negotiation method to get a valid
  *       // language code.
- *       $langcode = parent::getCurrentLanguage($request);
+ *       $langcode = parent::getLangcode($request);
  *
  *       // If we are on an administrative path, override with the default
  *       language.
diff --git a/core/modules/language/src/Plugin/Condition/Language.php b/core/modules/language/src/Plugin/Condition/Language.php
index f727dc7705..62008496ec 100644
--- a/core/modules/language/src/Plugin/Condition/Language.php
+++ b/core/modules/language/src/Plugin/Condition/Language.php
@@ -122,9 +122,9 @@ public function summary() {
       $languages = array_pop($language_names);
     }
     if (!empty($this->configuration['negate'])) {
-      return t('The language is not @languages.', ['@languages' => $languages]);
+      return $this->t('The language is not @languages.', ['@languages' => $languages]);
     }
-    return t('The language is @languages.', ['@languages' => $languages]);
+    return $this->t('The language is @languages.', ['@languages' => $languages]);
   }
 
   /**
diff --git a/core/modules/language/src/Plugin/Derivative/LanguageBlock.php b/core/modules/language/src/Plugin/Derivative/LanguageBlock.php
index 93cc5b1c98..54f0c1745f 100644
--- a/core/modules/language/src/Plugin/Derivative/LanguageBlock.php
+++ b/core/modules/language/src/Plugin/Derivative/LanguageBlock.php
@@ -3,6 +3,7 @@
 namespace Drupal\language\Plugin\Derivative;
 
 use Drupal\Component\Plugin\Derivative\DeriverBase;
+use Drupal\Core\StringTranslation\StringTranslationTrait;
 use Drupal\language\ConfigurableLanguageManagerInterface;
 
 /**
@@ -10,6 +11,8 @@
  */
 class LanguageBlock extends DeriverBase {
 
+  use StringTranslationTrait;
+
   /**
    * {@inheritdoc}
    */
@@ -21,12 +24,12 @@ public function getDerivativeDefinitions($base_plugin_definition) {
       $configurable_types = $language_manager->getLanguageTypes();
       foreach ($configurable_types as $type) {
         $this->derivatives[$type] = $base_plugin_definition;
-        $this->derivatives[$type]['admin_label'] = t('Language switcher (@type)', ['@type' => $info[$type]['name']]);
+        $this->derivatives[$type]['admin_label'] = $this->t('Language switcher (@type)', ['@type' => $info[$type]['name']]);
       }
       // If there is just one configurable type then change the title of the
       // block.
       if (count($configurable_types) == 1) {
-        $this->derivatives[reset($configurable_types)]['admin_label'] = t('Language switcher');
+        $this->derivatives[reset($configurable_types)]['admin_label'] = $this->t('Language switcher');
       }
     }
 
diff --git a/core/modules/language/tests/src/Functional/AdminPathEntityConverterLanguageTest.php b/core/modules/language/tests/src/Functional/AdminPathEntityConverterLanguageTest.php
index 1f12ffa424..a4917e5ca0 100644
--- a/core/modules/language/tests/src/Functional/AdminPathEntityConverterLanguageTest.php
+++ b/core/modules/language/tests/src/Functional/AdminPathEntityConverterLanguageTest.php
@@ -19,6 +19,9 @@ class AdminPathEntityConverterLanguageTest extends BrowserTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $permissions = [
diff --git a/core/modules/language/tests/src/Functional/LanguageConfigurationElementTest.php b/core/modules/language/tests/src/Functional/LanguageConfigurationElementTest.php
index 3d8c073833..dc54efbc49 100644
--- a/core/modules/language/tests/src/Functional/LanguageConfigurationElementTest.php
+++ b/core/modules/language/tests/src/Functional/LanguageConfigurationElementTest.php
@@ -33,6 +33,9 @@ class LanguageConfigurationElementTest extends BrowserTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $user = $this->drupalCreateUser([
diff --git a/core/modules/language/tests/src/Functional/LanguageConfigurationTest.php b/core/modules/language/tests/src/Functional/LanguageConfigurationTest.php
index 39ff21219a..8ea06a2eb9 100644
--- a/core/modules/language/tests/src/Functional/LanguageConfigurationTest.php
+++ b/core/modules/language/tests/src/Functional/LanguageConfigurationTest.php
@@ -165,7 +165,7 @@ public function testLanguageConfigurationWeight() {
     $admin_user = $this->drupalCreateUser([
       'administer languages',
       'access administration pages',
-      ]);
+    ]);
     $this->drupalLogin($admin_user);
     $this->checkConfigurableLanguageWeight();
 
diff --git a/core/modules/language/tests/src/Functional/LanguagePathMonolingualTest.php b/core/modules/language/tests/src/Functional/LanguagePathMonolingualTest.php
index fc81498811..a6e7bc6ee0 100644
--- a/core/modules/language/tests/src/Functional/LanguagePathMonolingualTest.php
+++ b/core/modules/language/tests/src/Functional/LanguagePathMonolingualTest.php
@@ -23,6 +23,9 @@ class LanguagePathMonolingualTest extends BrowserTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/language/tests/src/Functional/LanguageSwitchingTest.php b/core/modules/language/tests/src/Functional/LanguageSwitchingTest.php
index 014667ffa4..3df1d40691 100644
--- a/core/modules/language/tests/src/Functional/LanguageSwitchingTest.php
+++ b/core/modules/language/tests/src/Functional/LanguageSwitchingTest.php
@@ -36,6 +36,9 @@ class LanguageSwitchingTest extends BrowserTestBase {
    */
   protected $defaultTheme = 'starterkit_theme';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
@@ -105,8 +108,8 @@ protected function doTestLanguageBlockAuthenticated($block_label) {
 
       $link = $list_item->find('xpath', 'a');
       $anchors[] = [
-         'hreflang' => $link->getAttribute('hreflang'),
-         'data-drupal-link-system-path' => $link->getAttribute('data-drupal-link-system-path'),
+        'hreflang' => $link->getAttribute('hreflang'),
+        'data-drupal-link-system-path' => $link->getAttribute('data-drupal-link-system-path'),
       ];
       $labels[] = $link->getText();
     }
diff --git a/core/modules/language/tests/src/Functional/LanguageUILanguageNegotiationTest.php b/core/modules/language/tests/src/Functional/LanguageUILanguageNegotiationTest.php
index 21c2997d02..900b0c9dc4 100644
--- a/core/modules/language/tests/src/Functional/LanguageUILanguageNegotiationTest.php
+++ b/core/modules/language/tests/src/Functional/LanguageUILanguageNegotiationTest.php
@@ -71,6 +71,9 @@ class LanguageUILanguageNegotiationTest extends BrowserTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/language/tests/src/Functional/LanguageUrlRewritingTest.php b/core/modules/language/tests/src/Functional/LanguageUrlRewritingTest.php
index 93827d3e13..463b0d9b37 100644
--- a/core/modules/language/tests/src/Functional/LanguageUrlRewritingTest.php
+++ b/core/modules/language/tests/src/Functional/LanguageUrlRewritingTest.php
@@ -35,6 +35,9 @@ class LanguageUrlRewritingTest extends BrowserTestBase {
    */
   protected $webUser;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/language/tests/src/Kernel/Condition/LanguageConditionTest.php b/core/modules/language/tests/src/Kernel/Condition/LanguageConditionTest.php
index 5ec0af2898..d664fd5b43 100644
--- a/core/modules/language/tests/src/Kernel/Condition/LanguageConditionTest.php
+++ b/core/modules/language/tests/src/Kernel/Condition/LanguageConditionTest.php
@@ -34,6 +34,9 @@ class LanguageConditionTest extends KernelTestBase {
    */
   protected static $modules = ['system', 'language'];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/language/tests/src/Kernel/EntityUrlLanguageTest.php b/core/modules/language/tests/src/Kernel/EntityUrlLanguageTest.php
index c7bfa77a13..85f88f0d46 100644
--- a/core/modules/language/tests/src/Kernel/EntityUrlLanguageTest.php
+++ b/core/modules/language/tests/src/Kernel/EntityUrlLanguageTest.php
@@ -31,6 +31,9 @@ class EntityUrlLanguageTest extends LanguageTestBase {
    */
   protected $entity;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/language/tests/src/Kernel/Views/LanguageTestBase.php b/core/modules/language/tests/src/Kernel/Views/LanguageTestBase.php
index 4156fb2aa0..4e94243b90 100644
--- a/core/modules/language/tests/src/Kernel/Views/LanguageTestBase.php
+++ b/core/modules/language/tests/src/Kernel/Views/LanguageTestBase.php
@@ -17,6 +17,9 @@ abstract class LanguageTestBase extends ViewsKernelTestBase {
    */
   protected static $modules = ['system', 'language'];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp($import_test_views = TRUE): void {
     parent::setUp();
     $this->installConfig(['language']);
diff --git a/core/modules/language/tests/src/Unit/ContentLanguageSettingsUnitTest.php b/core/modules/language/tests/src/Unit/ContentLanguageSettingsUnitTest.php
index 31a2c1c48a..636265bcf6 100644
--- a/core/modules/language/tests/src/Unit/ContentLanguageSettingsUnitTest.php
+++ b/core/modules/language/tests/src/Unit/ContentLanguageSettingsUnitTest.php
@@ -88,12 +88,12 @@ public function testCalculateDependencies() {
     $target_entity_type = $this->createMock('\Drupal\Core\Entity\EntityTypeInterface');
     $target_entity_type->expects($this->any())
       ->method('getBundleConfigDependency')
-      ->will($this->returnValue(['type' => 'config', 'name' => 'test.test_entity_type.id']));
+      ->willReturn(['type' => 'config', 'name' => 'test.test_entity_type.id']);
 
     $this->entityTypeManager->expects($this->any())
       ->method('getDefinition')
       ->with('test_entity_type')
-      ->will($this->returnValue($target_entity_type));
+      ->willReturn($target_entity_type);
 
     $config = new ContentLanguageSettings([
       'target_entity_type_id' => 'test_entity_type',
@@ -250,17 +250,17 @@ public function testLoadByEntityTypeBundle($config_id, ContentLanguageSettings $
       ->expects($this->any())
       ->method('load')
       ->with($config_id)
-      ->will($this->returnValue($existing_config));
+      ->willReturn($existing_config);
     $this->configEntityStorageInterface
       ->expects($this->any())
       ->method('create')
-      ->will($this->returnValue($nullConfig));
+      ->willReturn($nullConfig);
 
     $this->entityTypeManager
       ->expects($this->any())
       ->method('getStorage')
       ->with('language_content_settings')
-      ->will($this->returnValue($this->configEntityStorageInterface));
+      ->willReturn($this->configEntityStorageInterface);
 
     $entity_type_repository = $this->getMockForAbstractClass(EntityTypeRepositoryInterface::class);
     $entity_type_repository->expects($this->any())
diff --git a/core/modules/language/tests/src/Unit/LanguageNegotiationUrlTest.php b/core/modules/language/tests/src/Unit/LanguageNegotiationUrlTest.php
index 13873b940c..b135192323 100644
--- a/core/modules/language/tests/src/Unit/LanguageNegotiationUrlTest.php
+++ b/core/modules/language/tests/src/Unit/LanguageNegotiationUrlTest.php
@@ -29,11 +29,11 @@ protected function setUp(): void {
     $language_de = $this->createMock('\Drupal\Core\Language\LanguageInterface');
     $language_de->expects($this->any())
       ->method('getId')
-      ->will($this->returnValue('de'));
+      ->willReturn('de');
     $language_en = $this->createMock('\Drupal\Core\Language\LanguageInterface');
     $language_en->expects($this->any())
       ->method('getId')
-      ->will($this->returnValue('en'));
+      ->willReturn('en');
     $languages = [
       'de' => $language_de,
       'en' => $language_en,
@@ -45,7 +45,7 @@ protected function setUp(): void {
       ->getMock();
     $language_manager->expects($this->any())
       ->method('getLanguages')
-      ->will($this->returnValue($languages));
+      ->willReturn($languages);
     $this->languageManager = $language_manager;
 
     // Create a user stub.
@@ -69,7 +69,10 @@ protected function setUp(): void {
   public function testPathPrefix($prefix, $prefixes, $expected_langcode) {
     $this->languageManager->expects($this->any())
       ->method('getCurrentLanguage')
-      ->will($this->returnValue($this->languages[(in_array($expected_langcode, ['en', 'de'])) ? $expected_langcode : 'en']));
+      ->willReturn($this->languages[(in_array($expected_langcode, [
+        'en',
+        'de',
+      ])) ? $expected_langcode : 'en']);
 
     $config = $this->getConfigFactoryStub([
       'language.negotiation' => [
@@ -158,7 +161,7 @@ public function providerTestPathPrefix() {
   public function testDomain($http_host, $domains, $expected_langcode) {
     $this->languageManager->expects($this->any())
       ->method('getCurrentLanguage')
-      ->will($this->returnValue($this->languages['en']));
+      ->willReturn($this->languages['en']);
 
     $config = $this->getConfigFactoryStub([
       'language.negotiation' => [
diff --git a/core/modules/language/tests/src/Unit/Menu/LanguageLocalTasksTest.php b/core/modules/language/tests/src/Unit/Menu/LanguageLocalTasksTest.php
index aa4693ca02..7d49f1faec 100644
--- a/core/modules/language/tests/src/Unit/Menu/LanguageLocalTasksTest.php
+++ b/core/modules/language/tests/src/Unit/Menu/LanguageLocalTasksTest.php
@@ -11,6 +11,9 @@
  */
 class LanguageLocalTasksTest extends LocalTaskIntegrationTestBase {
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     $this->directoryList = [
       'language' => 'core/modules/language',
diff --git a/core/modules/language/tests/src/Unit/process/LanguageDomainsTest.php b/core/modules/language/tests/src/Unit/process/LanguageDomainsTest.php
index 0fe3e3c88f..64e9b3b879 100644
--- a/core/modules/language/tests/src/Unit/process/LanguageDomainsTest.php
+++ b/core/modules/language/tests/src/Unit/process/LanguageDomainsTest.php
@@ -32,7 +32,7 @@ protected function setUp(): void {
     // to return TRUE to be able to test the process.
     $this->row->expects($this->once())
       ->method('getSourceProperty')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     // The language_domains plugin use $base_url to fill empty domains.
     global $base_url;
diff --git a/core/modules/layout_builder/css/layout-builder.css b/core/modules/layout_builder/css/layout-builder.css
index 0bed71764e..50bd2005b1 100644
--- a/core/modules/layout_builder/css/layout-builder.css
+++ b/core/modules/layout_builder/css/layout-builder.css
@@ -25,45 +25,38 @@
   background-color: #f7f7f7;
 }
 
-[dir="ltr"] .layout-builder__link--add {
-  padding-left: 1.3em;
-}
-
-[dir="rtl"] .layout-builder__link--add {
-  padding-right: 1.3em;
-}
-
 .layout-builder__link--add {
+  padding-inline-start: 1.3em;
   color: #686868;
   border-bottom: none;
   background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16px' height='16px'%3e%3cpath fill='%23787878' d='M0.656,9.023c0,0.274,0.224,0.5,0.499,0.5l4.853,0.001c0.274-0.001,0.501,0.226,0.5,0.5l0.001,4.853 c-0.001,0.273,0.227,0.5,0.501,0.5l1.995-0.009c0.273-0.003,0.497-0.229,0.5-0.503l0.002-4.806c0-0.272,0.228-0.5,0.499-0.502 l4.831-0.021c0.271-0.005,0.497-0.23,0.501-0.502l0.008-1.998c0-0.276-0.225-0.5-0.499-0.5l-4.852,0c-0.275,0-0.502-0.228-0.501-0.5 L9.493,1.184c0-0.275-0.225-0.499-0.5-0.499L6.997,0.693C6.722,0.694,6.496,0.92,6.495,1.195L6.476,6.026 c-0.001,0.274-0.227,0.5-0.501,0.5L1.167,6.525C0.892,6.526,0.665,6.752,0.665,7.026L0.656,9.023z'/%3e%3c/svg%3e") transparent center left / 1em no-repeat; /* LTR */
 }
 
 [dir="rtl"] .layout-builder__link--add {
-    background-position-x: right;
-  }
+  background-position-x: right;
+}
 
 .layout-builder__link--add:hover,
-  .layout-builder__link--add:active {
-    color: #000;
-    border-bottom-style: none;
-  }
+.layout-builder__link--add:active {
+  color: #000;
+  border-bottom-style: none;
+}
 
 .layout-builder__section {
   margin-bottom: 1.5em;
 }
 
 .layout-builder__section .ui-sortable-helper {
-    outline: 2px solid #f7f7f7;
-    background-color: #fff;
-  }
+  outline: 2px solid #f7f7f7;
+  background-color: #fff;
+}
 
 .layout-builder__section .ui-state-drop {
-    margin: 1.25rem;
-    padding: 1.875rem;
-    outline: 2px dashed #fedb60;
-    background-color: #ffd;
-  }
+  margin: 1.25rem;
+  padding: 1.875rem;
+  outline: 2px dashed #fedb60;
+  background-color: #ffd;
+}
 
 .layout-builder__region {
   outline: 2px dashed #2f91da;
@@ -75,16 +68,6 @@
   background-color: #eff6fc;
 }
 
-[dir="ltr"] .layout-builder__link--remove {
-  margin-left: -0.625rem;
-  margin-right: 0.375rem;
-}
-
-[dir="rtl"] .layout-builder__link--remove {
-  margin-right: -0.625rem;
-  margin-left: 0.375rem;
-}
-
 .layout-builder__link--remove {
   position: relative;
   z-index: 2;
@@ -92,6 +75,7 @@
   box-sizing: border-box;
   width: 1.625rem;
   height: 1.625rem;
+  margin-inline: -0.625rem 0.375rem;
   padding: 0;
   white-space: nowrap;
   text-indent: -624.9375rem;
@@ -102,8 +86,8 @@
 }
 
 .layout-builder__link--remove:hover {
-    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16'%3e%3cpath fill='%23787878' d='M3.51 13.925c.194.194.512.195.706.001l3.432-3.431c.194-.194.514-.194.708 0l3.432 3.431c.192.194.514.193.707-.001l1.405-1.417c.191-.195.189-.514-.002-.709l-3.397-3.4c-.192-.193-.192-.514-.002-.708l3.401-3.43c.189-.195.189-.515 0-.709l-1.407-1.418c-.195-.195-.513-.195-.707-.001l-3.43 3.431c-.195.194-.516.194-.708 0l-3.432-3.431c-.195-.195-.512-.194-.706.001l-1.407 1.417c-.194.195-.194.515 0 .71l3.403 3.429c.193.195.193.514-.001.708l-3.4 3.399c-.194.195-.195.516-.001.709l1.406 1.419z'/%3e%3c/svg%3e");
-  }
+  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16'%3e%3cpath fill='%23787878' d='M3.51 13.925c.194.194.512.195.706.001l3.432-3.431c.194-.194.514-.194.708 0l3.432 3.431c.192.194.514.193.707-.001l1.405-1.417c.191-.195.189-.514-.002-.709l-3.397-3.4c-.192-.193-.192-.514-.002-.708l3.401-3.43c.189-.195.189-.515 0-.709l-1.407-1.418c-.195-.195-.513-.195-.707-.001l-3.43 3.431c-.195.194-.516.194-.708 0l-3.432-3.431c-.195-.195-.512-.194-.706.001l-1.407 1.417c-.194.195-.194.515 0 .71l3.403 3.429c.193.195.193.514-.001.708l-3.4 3.399c-.194.195-.195.516-.001.709l1.406 1.419z'/%3e%3c/svg%3e");
+}
 
 .layout-builder-block {
   padding: 1.5em;
@@ -112,12 +96,12 @@
 }
 
 .layout-builder-block [tabindex="-1"] {
-    pointer-events: none;
-  }
+  pointer-events: none;
+}
 
 .layout-builder--content-preview-disabled .layout-builder-block {
-    margin: 0;
-    border-bottom: 2px dashed #979797;
+  margin: 0;
+  border-bottom: 2px dashed #979797;
 }
 
 /*
diff --git a/core/modules/layout_builder/css/off-canvas.css b/core/modules/layout_builder/css/off-canvas.css
index 950a8623e4..30addce723 100644
--- a/core/modules/layout_builder/css/off-canvas.css
+++ b/core/modules/layout_builder/css/off-canvas.css
@@ -11,137 +11,132 @@
  */
 
 #drupal-off-canvas-wrapper .layout-selection {
-    margin: 0;
-    padding: 0;
-    list-style: none;
-  }
+  margin: 0;
+  padding: 0;
+  list-style: none;
+}
 
 #drupal-off-canvas-wrapper .layout-selection li {
-      position: relative; /* Anchor throbber. */
-      padding: calc(0.25 * var(--off-canvas-vertical-spacing-unit));
-      border-bottom: 1px solid var(--off-canvas-border-color);
-    }
+  position: relative; /* Anchor throbber. */
+  padding: calc(0.25 * var(--off-canvas-vertical-spacing-unit));
+  border-bottom: 1px solid var(--off-canvas-border-color);
+}
 
 #drupal-off-canvas-wrapper .layout-selection li:last-child {
-        padding-bottom: 0;
-        border-bottom: none;
-      }
+  padding-bottom: 0;
+  border-bottom: none;
+}
 
 /* Horizontally align icon and text. */
 
 #drupal-off-canvas-wrapper .layout-selection a {
-      display: flex;
-      flex-wrap: wrap;
-      align-items: center;
-      gap: 0.625rem;
-      padding: 0.625rem;
-    }
+  display: flex;
+  flex-wrap: wrap;
+  align-items: center;
+  gap: 0.625rem;
+  padding: 0.625rem;
+}
 
 /*
    * This is the styling of the SVG within the layout selection list.
    */
 
 #drupal-off-canvas-wrapper .layout-icon__region {
-    fill: var(--off-canvas-text-color);
-    stroke: transparent;
-  }
+  fill: var(--off-canvas-text-color);
+  stroke: transparent;
+}
 
 @media (forced-colors: active) {
 
-#drupal-off-canvas-wrapper .layout-icon__region {
-      fill: canvastext;
+  #drupal-off-canvas-wrapper .layout-icon__region {
+    fill: canvastext;
   }
-    }
-
-[dir="ltr"] #drupal-off-canvas-wrapper .inline-block-create-button {
-    padding-left: calc(2 * var(--off-canvas-padding) + var(--icon-size) / 2);
-}
-
-[dir="rtl"] #drupal-off-canvas-wrapper .inline-block-create-button {
-    padding-right: calc(2 * var(--off-canvas-padding) + var(--icon-size) / 2);
 }
 
 #drupal-off-canvas-wrapper .inline-block-create-button {
-    --icon-size: 1rem;
+  --icon-size: 1rem;
 
-    position: relative; /* Anchor pseudo-element. */
-    display: block;
-    padding: 1.5rem; /* Room for icon */
-    border-bottom: 1px solid #333;
-    font-size: 1rem;
+  position: relative; /* Anchor pseudo-element. */
+  display: block;
+  padding: 1.5rem;
+  padding-inline-start: calc(2 * var(--off-canvas-padding) + var(--icon-size) / 2); /* Room for icon */
+  border-bottom: 1px solid #333;
+  font-size: 1rem;
 
-    /* Plus icon. */
-  }
+  /* Plus icon. */
+}
 
 #drupal-off-canvas-wrapper .inline-block-create-button:before {
-      position: absolute;
-      top: 50%;
-      left: var(--off-canvas-padding);
-      width: var(--icon-size);
-      height: var(--icon-size);
-      content: "";
-      transform: translateY(-50%);
-      background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16px' height='16px'%3e%3cpath fill='%23bebebe' d='M0.656,9.023c0,0.274,0.224,0.5,0.499,0.5l4.853,0.001c0.274-0.001,0.501,0.226,0.5,0.5l0.001,4.853 c-0.001,0.273,0.227,0.5,0.501,0.5l1.995-0.009c0.273-0.003,0.497-0.229,0.5-0.503l0.002-4.806c0-0.272,0.228-0.5,0.499-0.502 l4.831-0.021c0.271-0.005,0.497-0.23,0.501-0.502l0.008-1.998c0-0.276-0.225-0.5-0.499-0.5l-4.852,0c-0.275,0-0.502-0.228-0.501-0.5 L9.493,1.184c0-0.275-0.225-0.499-0.5-0.499L6.997,0.693C6.722,0.694,6.496,0.92,6.495,1.195L6.476,6.026 c-0.001,0.274-0.227,0.5-0.501,0.5L1.167,6.525C0.892,6.526,0.665,6.752,0.665,7.026L0.656,9.023z'/%3e%3c/svg%3e");
-      background-repeat: no-repeat;
-      background-size: contain;
-    }
+  position: absolute;
+  top: 50%;
+  left: var(--off-canvas-padding);
+  width: var(--icon-size);
+  height: var(--icon-size);
+  content: "";
+  transform: translateY(-50%);
+  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16px' height='16px'%3e%3cpath fill='%23bebebe' d='M0.656,9.023c0,0.274,0.224,0.5,0.499,0.5l4.853,0.001c0.274-0.001,0.501,0.226,0.5,0.5l0.001,4.853 c-0.001,0.273,0.227,0.5,0.501,0.5l1.995-0.009c0.273-0.003,0.497-0.229,0.5-0.503l0.002-4.806c0-0.272,0.228-0.5,0.499-0.502 l4.831-0.021c0.271-0.005,0.497-0.23,0.501-0.502l0.008-1.998c0-0.276-0.225-0.5-0.499-0.5l-4.852,0c-0.275,0-0.502-0.228-0.501-0.5 L9.493,1.184c0-0.275-0.225-0.499-0.5-0.499L6.997,0.693C6.722,0.694,6.496,0.92,6.495,1.195L6.476,6.026 c-0.001,0.274-0.227,0.5-0.501,0.5L1.167,6.525C0.892,6.526,0.665,6.752,0.665,7.026L0.656,9.023z'/%3e%3c/svg%3e");
+  background-repeat: no-repeat;
+  background-size: contain;
+}
 
 @media (forced-colors: active) {
 
-#drupal-off-canvas-wrapper .inline-block-create-button:before {
-        background: linktext;
-        -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16px' height='16px'%3e%3cpath fill='%23bebebe' d='M0.656,9.023c0,0.274,0.224,0.5,0.499,0.5l4.853,0.001c0.274-0.001,0.501,0.226,0.5,0.5l0.001,4.853 c-0.001,0.273,0.227,0.5,0.501,0.5l1.995-0.009c0.273-0.003,0.497-0.229,0.5-0.503l0.002-4.806c0-0.272,0.228-0.5,0.499-0.502 l4.831-0.021c0.271-0.005,0.497-0.23,0.501-0.502l0.008-1.998c0-0.276-0.225-0.5-0.499-0.5l-4.852,0c-0.275,0-0.502-0.228-0.501-0.5 L9.493,1.184c0-0.275-0.225-0.499-0.5-0.499L6.997,0.693C6.722,0.694,6.496,0.92,6.495,1.195L6.476,6.026 c-0.001,0.274-0.227,0.5-0.501,0.5L1.167,6.525C0.892,6.526,0.665,6.752,0.665,7.026L0.656,9.023z'/%3e%3c/svg%3e");
-        mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16px' height='16px'%3e%3cpath fill='%23bebebe' d='M0.656,9.023c0,0.274,0.224,0.5,0.499,0.5l4.853,0.001c0.274-0.001,0.501,0.226,0.5,0.5l0.001,4.853 c-0.001,0.273,0.227,0.5,0.501,0.5l1.995-0.009c0.273-0.003,0.497-0.229,0.5-0.503l0.002-4.806c0-0.272,0.228-0.5,0.499-0.502 l4.831-0.021c0.271-0.005,0.497-0.23,0.501-0.502l0.008-1.998c0-0.276-0.225-0.5-0.499-0.5l-4.852,0c-0.275,0-0.502-0.228-0.501-0.5 L9.493,1.184c0-0.275-0.225-0.499-0.5-0.499L6.997,0.693C6.722,0.694,6.496,0.92,6.495,1.195L6.476,6.026 c-0.001,0.274-0.227,0.5-0.501,0.5L1.167,6.525C0.892,6.526,0.665,6.752,0.665,7.026L0.656,9.023z'/%3e%3c/svg%3e");
-        -webkit-mask-repeat: no-repeat;
-        mask-repeat: no-repeat;
-        -webkit-mask-size: contain;
-        mask-size: contain;
-    }
-      }
+  #drupal-off-canvas-wrapper .inline-block-create-button:before {
+    background: linktext;
+    -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16px' height='16px'%3e%3cpath fill='%23bebebe' d='M0.656,9.023c0,0.274,0.224,0.5,0.499,0.5l4.853,0.001c0.274-0.001,0.501,0.226,0.5,0.5l0.001,4.853 c-0.001,0.273,0.227,0.5,0.501,0.5l1.995-0.009c0.273-0.003,0.497-0.229,0.5-0.503l0.002-4.806c0-0.272,0.228-0.5,0.499-0.502 l4.831-0.021c0.271-0.005,0.497-0.23,0.501-0.502l0.008-1.998c0-0.276-0.225-0.5-0.499-0.5l-4.852,0c-0.275,0-0.502-0.228-0.501-0.5 L9.493,1.184c0-0.275-0.225-0.499-0.5-0.499L6.997,0.693C6.722,0.694,6.496,0.92,6.495,1.195L6.476,6.026 c-0.001,0.274-0.227,0.5-0.501,0.5L1.167,6.525C0.892,6.526,0.665,6.752,0.665,7.026L0.656,9.023z'/%3e%3c/svg%3e");
+    mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16px' height='16px'%3e%3cpath fill='%23bebebe' d='M0.656,9.023c0,0.274,0.224,0.5,0.499,0.5l4.853,0.001c0.274-0.001,0.501,0.226,0.5,0.5l0.001,4.853 c-0.001,0.273,0.227,0.5,0.501,0.5l1.995-0.009c0.273-0.003,0.497-0.229,0.5-0.503l0.002-4.806c0-0.272,0.228-0.5,0.499-0.502 l4.831-0.021c0.271-0.005,0.497-0.23,0.501-0.502l0.008-1.998c0-0.276-0.225-0.5-0.499-0.5l-4.852,0c-0.275,0-0.502-0.228-0.501-0.5 L9.493,1.184c0-0.275-0.225-0.499-0.5-0.499L6.997,0.693C6.722,0.694,6.496,0.92,6.495,1.195L6.476,6.026 c-0.001,0.274-0.227,0.5-0.501,0.5L1.167,6.525C0.892,6.526,0.665,6.752,0.665,7.026L0.656,9.023z'/%3e%3c/svg%3e");
+    -webkit-mask-repeat: no-repeat;
+    mask-repeat: no-repeat;
+    -webkit-mask-size: contain;
+    mask-size: contain;
+  }
+}
 
 #drupal-off-canvas-wrapper .inline-block-create-button,
-  #drupal-off-canvas-wrapper .inline-block-list__item {
-    margin: 0 calc(-1 * var(--off-canvas-padding));
-    color: var(--off-canvas-text-color);
-  }
+#drupal-off-canvas-wrapper .inline-block-list__item {
+  margin: 0 calc(-1 * var(--off-canvas-padding));
+  color: var(--off-canvas-text-color);
+}
 
-#drupal-off-canvas-wrapper .inline-block-create-button:hover, #drupal-off-canvas-wrapper .inline-block-list__item:hover {
-      background-color: rgba(255, 255, 255, 0.05);
-    }
+#drupal-off-canvas-wrapper .inline-block-create-button:hover,
+#drupal-off-canvas-wrapper .inline-block-list__item:hover {
+  background-color: rgba(255, 255, 255, 0.05);
+}
 
-#drupal-off-canvas-wrapper .inline-block-create-button:focus, #drupal-off-canvas-wrapper .inline-block-list__item:focus {
-      outline-offset: -4px; /* Prevent outline from being cut off. */
-    }
+#drupal-off-canvas-wrapper .inline-block-create-button:focus,
+#drupal-off-canvas-wrapper .inline-block-list__item:focus {
+  outline-offset: -4px; /* Prevent outline from being cut off. */
+}
 
 #drupal-off-canvas-wrapper .inline-block-list {
-    margin: 0 0 calc(2 * var(--off-canvas-vertical-spacing-unit));
-    padding: 0;
-    list-style: none;
-  }
+  margin: 0 0 calc(2 * var(--off-canvas-vertical-spacing-unit));
+  padding: 0;
+  list-style: none;
+}
 
 #drupal-off-canvas-wrapper .inline-block-list li {
-      position: relative; /* Anchor throbber. */
-      margin: 0;
-      padding: calc(0.25 * var(--off-canvas-vertical-spacing-unit)) 0;
-    }
+  position: relative; /* Anchor throbber. */
+  margin: 0;
+  padding: calc(0.25 * var(--off-canvas-vertical-spacing-unit)) 0;
+}
 
 #drupal-off-canvas-wrapper .inline-block-list li:last-child {
-        padding-bottom: 0;
-        border-bottom: none;
-      }
+  padding-bottom: 0;
+  border-bottom: none;
+}
 
 /* This is the <a> tag. */
 
 #drupal-off-canvas-wrapper .inline-block-list__item {
-    display: block;
-    flex-grow: 1;
-    padding: calc(2 * var(--off-canvas-vertical-spacing-unit)) var(--off-canvas-padding);
-    border-bottom: 1px solid var(--off-canvas-border-color);
-  }
+  display: block;
+  flex-grow: 1;
+  padding: calc(2 * var(--off-canvas-vertical-spacing-unit)) var(--off-canvas-padding);
+  border-bottom: 1px solid var(--off-canvas-border-color);
+}
 
 /* Highlight the active block in the Move Block dialog. */
 
 #drupal-off-canvas-wrapper .layout-builder-components-table__block-label--current {
-    padding-left: 1.0625rem;
-    border-left: solid 5px;
-  }
+  padding-left: 1.0625rem;
+  border-left: solid 5px;
+}
diff --git a/core/modules/layout_builder/layout_builder.routing.yml b/core/modules/layout_builder/layout_builder.routing.yml
index 6dcf0c9f05..1e5fd50ff1 100644
--- a/core/modules/layout_builder/layout_builder.routing.yml
+++ b/core/modules/layout_builder/layout_builder.routing.yml
@@ -1,8 +1,8 @@
 layout_builder.choose_section:
   path: '/layout_builder/choose/section/{section_storage_type}/{section_storage}/{delta}'
   defaults:
-   _controller: '\Drupal\layout_builder\Controller\ChooseSectionController::build'
-   _title: 'Choose a layout for this section'
+    _controller: '\Drupal\layout_builder\Controller\ChooseSectionController::build'
+    _title: 'Choose a layout for this section'
   requirements:
     _layout_builder_access: 'view'
   options:
diff --git a/core/modules/layout_builder/layout_builder.services.yml b/core/modules/layout_builder/layout_builder.services.yml
index e67a3b4d1a..4e9fc3acda 100644
--- a/core/modules/layout_builder/layout_builder.services.yml
+++ b/core/modules/layout_builder/layout_builder.services.yml
@@ -14,7 +14,7 @@ services:
     class: Drupal\layout_builder\Routing\LayoutBuilderRoutes
     arguments: ['@plugin.manager.layout_builder.section_storage']
     tags:
-     - { name: event_subscriber }
+      - { name: event_subscriber }
   layout_builder.tempstore.route_enhancer:
     class: Drupal\layout_builder\Routing\LayoutTempstoreRouteEnhancer
     arguments: ['@layout_builder.tempstore_repository']
diff --git a/core/modules/layout_builder/layouts/fourcol_section/layout--fourcol-section.html.twig b/core/modules/layout_builder/layouts/fourcol_section/layout--fourcol-section.html.twig
index 9a380f76e0..1f08a2ab55 100644
--- a/core/modules/layout_builder/layouts/fourcol_section/layout--fourcol-section.html.twig
+++ b/core/modules/layout_builder/layouts/fourcol_section/layout--fourcol-section.html.twig
@@ -4,6 +4,7 @@
  * Default theme implementation for a four-column 25%-25%-25%-25% layout.
  *
  * Available variables:
+ * - in_preview: Whether the plugin is being rendered in preview mode.
  * - content: The content for this layout.
  * - attributes: HTML attributes for the layout <div>.
  *
diff --git a/core/modules/layout_builder/layouts/threecol_section/layout--threecol-section.html.twig b/core/modules/layout_builder/layouts/threecol_section/layout--threecol-section.html.twig
index 1311f28ab2..204a43621d 100644
--- a/core/modules/layout_builder/layouts/threecol_section/layout--threecol-section.html.twig
+++ b/core/modules/layout_builder/layouts/threecol_section/layout--threecol-section.html.twig
@@ -4,6 +4,7 @@
  * Default theme implementation for a three-column layout.
  *
  * Available variables:
+ * - in_preview: Whether the plugin is being rendered in preview mode.
  * - content: The content for this layout.
  * - attributes: HTML attributes for the layout <div>.
  *
diff --git a/core/modules/layout_builder/layouts/twocol_section/layout--twocol-section.html.twig b/core/modules/layout_builder/layouts/twocol_section/layout--twocol-section.html.twig
index a5d1d36376..9969f8e57a 100644
--- a/core/modules/layout_builder/layouts/twocol_section/layout--twocol-section.html.twig
+++ b/core/modules/layout_builder/layouts/twocol_section/layout--twocol-section.html.twig
@@ -4,6 +4,7 @@
  * Default theme implementation to display a two-column layout.
  *
  * Available variables:
+ * - in_preview: Whether the plugin is being rendered in preview mode.
  * - content: The content for this layout.
  * - attributes: HTML attributes for the layout <div>.
  *
diff --git a/core/modules/layout_builder/src/EventSubscriber/BlockComponentRenderArray.php b/core/modules/layout_builder/src/EventSubscriber/BlockComponentRenderArray.php
index 083de3983d..7bedf79a5c 100644
--- a/core/modules/layout_builder/src/EventSubscriber/BlockComponentRenderArray.php
+++ b/core/modules/layout_builder/src/EventSubscriber/BlockComponentRenderArray.php
@@ -124,6 +124,7 @@ public function onBuildRender(SectionComponentBuildRenderArrayEvent $event) {
         '#plugin_id' => $block->getPluginId(),
         '#base_plugin_id' => $block->getBaseId(),
         '#derivative_plugin_id' => $block->getDerivativeId(),
+        '#in_preview' => $event->inPreview(),
         '#weight' => $event->getComponent()->getWeight(),
       ];
 
diff --git a/core/modules/layout_builder/src/Form/ConfigureSectionForm.php b/core/modules/layout_builder/src/Form/ConfigureSectionForm.php
index a1c53b4bd9..7f31ec5717 100644
--- a/core/modules/layout_builder/src/Form/ConfigureSectionForm.php
+++ b/core/modules/layout_builder/src/Form/ConfigureSectionForm.php
@@ -47,6 +47,13 @@ class ConfigureSectionForm extends FormBase {
    */
   protected $layout;
 
+  /**
+   * The section being configured.
+   *
+   * @var \Drupal\layout_builder\Section
+   */
+  protected $section;
+
   /**
    * The plugin form manager.
    *
@@ -68,6 +75,13 @@ class ConfigureSectionForm extends FormBase {
    */
   protected $delta;
 
+  /**
+   * The plugin ID.
+   *
+   * @var string
+   */
+  protected $pluginId;
+
   /**
    * Indicates whether the section is being added or updated.
    *
@@ -112,16 +126,15 @@ public function buildForm(array $form, FormStateInterface $form_state, SectionSt
     $this->sectionStorage = $section_storage;
     $this->delta = $delta;
     $this->isUpdate = is_null($plugin_id);
+    $this->pluginId = $plugin_id;
+
+    $section = $this->getCurrentSection();
 
     if ($this->isUpdate) {
-      $section = $this->sectionStorage->getSection($this->delta);
       if ($label = $section->getLayoutSettings()['label']) {
         $form['#title'] = $this->t('Configure @section', ['@section' => $label]);
       }
     }
-    else {
-      $section = new Section($plugin_id);
-    }
     // Passing available contexts to the layout plugin here could result in an
     // exception since the layout may not have a context mapping for a required
     // context slot on creation.
@@ -179,14 +192,12 @@ public function submitForm(array &$form, FormStateInterface $form_state) {
       $this->layout->setContextMapping($subform_state->getValue('context_mapping', []));
     }
 
-    $plugin_id = $this->layout->getPluginId();
     $configuration = $this->layout->getConfiguration();
 
-    if ($this->isUpdate) {
-      $this->sectionStorage->getSection($this->delta)->setLayoutSettings($configuration);
-    }
-    else {
-      $this->sectionStorage->insertSection($this->delta, new Section($plugin_id, $configuration));
+    $section = $this->getCurrentSection();
+    $section->setLayoutSettings($configuration);
+    if (!$this->isUpdate) {
+      $this->sectionStorage->insertSection($this->delta, $section);
     }
 
     $this->layoutTempstoreRepository->set($this->sectionStorage);
@@ -208,6 +219,8 @@ protected function successfulAjaxSubmit(array $form, FormStateInterface $form_st
    *
    * @return \Drupal\Core\Plugin\PluginFormInterface
    *   The plugin form for the layout.
+   *
+   * @throws \Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException
    */
   protected function getPluginForm(LayoutInterface $layout) {
     if ($layout instanceof PluginWithFormsInterface) {
@@ -222,7 +235,7 @@ protected function getPluginForm(LayoutInterface $layout) {
   }
 
   /**
-   * Retrieve the section storage property.
+   * Retrieves the section storage property.
    *
    * @return \Drupal\layout_builder\SectionStorageInterface
    *   The section storage for the current form.
@@ -231,4 +244,33 @@ public function getSectionStorage() {
     return $this->sectionStorage;
   }
 
+  /**
+   * Retrieves the layout being modified by the form.
+   *
+   * @return \Drupal\Core\Layout\LayoutInterface|\Drupal\Core\Plugin\PluginFormInterface
+   *   The layout for the current form.
+   */
+  public function getCurrentLayout(): LayoutInterface {
+    return $this->layout;
+  }
+
+  /**
+   * Retrieves the section being modified by the form.
+   *
+   * @return \Drupal\layout_builder\Section
+   *   The section for the current form.
+   */
+  public function getCurrentSection(): Section {
+    if (!isset($this->section)) {
+      if ($this->isUpdate) {
+        $this->section = $this->sectionStorage->getSection($this->delta);
+      }
+      else {
+        $this->section = new Section($this->pluginId);
+      }
+    }
+
+    return $this->section;
+  }
+
 }
diff --git a/core/modules/layout_builder/src/Form/OverridesEntityForm.php b/core/modules/layout_builder/src/Form/OverridesEntityForm.php
index 29f940bdcc..789778fc8f 100644
--- a/core/modules/layout_builder/src/Form/OverridesEntityForm.php
+++ b/core/modules/layout_builder/src/Form/OverridesEntityForm.php
@@ -198,6 +198,8 @@ protected function actions(array $form, FormStateInterface $form_state) {
       '#value' => $this->t('Discard changes'),
       '#submit' => ['::redirectOnSubmit'],
       '#redirect' => 'discard_changes',
+      // Discard is not dependent on form input.
+      '#limit_validation_errors' => [],
     ];
     // @todo This button should be conditionally displayed, see
     //   https://www.drupal.org/node/2917777.
diff --git a/core/modules/layout_builder/src/Plugin/Block/FieldBlock.php b/core/modules/layout_builder/src/Plugin/Block/FieldBlock.php
index 59adfd861b..1cdb92f917 100644
--- a/core/modules/layout_builder/src/Plugin/Block/FieldBlock.php
+++ b/core/modules/layout_builder/src/Plugin/Block/FieldBlock.php
@@ -204,8 +204,14 @@ protected function blockAccess(AccountInterface $account) {
       return $access;
     }
 
-    // Check to see if the field has any values.
-    if ($field->isEmpty()) {
+    // Check to see if the field has any values or a default value.
+    if ($field->isEmpty() && !$field->getFieldDefinition()->getDefaultValue($entity)) {
+      // @todo Remove special handling of image fields after
+      //   https://www.drupal.org/project/drupal/issues/3005528.
+      if ($field->getFieldDefinition()->getType() === 'image' && $field->getFieldDefinition()->getSetting('default_image')) {
+        return $access;
+      }
+
       return $access->andIf(AccessResult::forbidden());
     }
     return $access;
diff --git a/core/modules/layout_builder/src/Section.php b/core/modules/layout_builder/src/Section.php
index cd5d3aeda5..b8ce26a7b9 100644
--- a/core/modules/layout_builder/src/Section.php
+++ b/core/modules/layout_builder/src/Section.php
@@ -4,6 +4,7 @@
 
 use Drupal\Core\Config\Entity\ThirdPartySettingsInterface;
 use Drupal\Core\Plugin\PreviewAwarePluginInterface;
+use Drupal\Core\Render\Element;
 
 /**
  * Provides a domain object for layout sections.
@@ -94,7 +95,12 @@ public function toRenderArray(array $contexts = [], $in_preview = FALSE) {
       $layout->setInPreview($in_preview);
     }
 
-    return $layout->build($regions);
+    $build = $layout->build($regions);
+    // If an entity was used to build the layout, store it on the build.
+    if (!Element::isEmpty($build) && isset($contexts['layout_builder.entity'])) {
+      $build['#entity'] = $contexts['layout_builder.entity']->getContextValue();
+    }
+    return $build;
   }
 
   /**
diff --git a/core/modules/layout_builder/tests/modules/layout_builder_test/layout_builder_test.module b/core/modules/layout_builder/tests/modules/layout_builder_test/layout_builder_test.module
index cd6070f53f..fa027a6b01 100644
--- a/core/modules/layout_builder/tests/modules/layout_builder_test/layout_builder_test.module
+++ b/core/modules/layout_builder/tests/modules/layout_builder_test/layout_builder_test.module
@@ -97,6 +97,27 @@ function layout_builder_test_form_layout_builder_configure_block_alter(&$form, F
   ];
 }
 
+/**
+ * Implements hook_form_BASE_FORM_ID_alter() for layout_builder_configure_section.
+ */
+function layout_builder_test_form_layout_builder_configure_section_alter(&$form, FormStateInterface $form_state, $form_id) {
+  /** @var \Drupal\layout_builder\Form\ConfigureSectionForm $form_object */
+  $form_object = $form_state->getFormObject();
+
+  $form['layout_builder_test']['storage'] = [
+    '#type' => 'item',
+    '#title' => 'Layout Builder Storage: ' . $form_object->getSectionStorage()->getStorageId(),
+  ];
+  $form['layout_builder_test']['section'] = [
+    '#type' => 'item',
+    '#title' => 'Layout Builder Section: ' . $form_object->getCurrentSection()->getLayoutId(),
+  ];
+  $form['layout_builder_test']['layout'] = [
+    '#type' => 'item',
+    '#title' => 'Layout Builder Layout: ' . $form_object->getCurrentLayout()->getPluginId(),
+  ];
+}
+
 /**
  * Implements hook_entity_form_display_alter().
  */
@@ -111,6 +132,30 @@ function layout_builder_entity_form_display_alter(EntityFormDisplayInterface $fo
   }
 }
 
+/**
+ * Implements hook_preprocess_HOOK() for one-column layout template.
+ */
+function layout_builder_test_preprocess_layout__onecol(&$vars) {
+  if (!empty($vars['content']['#entity'])) {
+    $vars['content']['content'][\Drupal::service('uuid')->generate()] = [
+      '#type' => 'markup',
+      '#markup' => sprintf('Yes, I can access the %s', $vars['content']['#entity']->label()),
+    ];
+  }
+}
+
+/**
+ * Implements hook_preprocess_HOOK() for two-column layout template.
+ */
+function layout_builder_test_preprocess_layout__twocol_section(&$vars) {
+  if (!empty($vars['content']['#entity'])) {
+    $vars['content']['first'][\Drupal::service('uuid')->generate()] = [
+      '#type' => 'markup',
+      '#markup' => sprintf('Yes, I can access the entity %s in two column', $vars['content']['#entity']->label()),
+    ];
+  }
+}
+
 /**
  * Implements hook_system_breadcrumb_alter().
  */
@@ -131,3 +176,14 @@ function layout_builder_test_module_implements_alter(&$implementations, $hook) {
     ] + $implementations;
   }
 }
+
+/**
+ * Implements hook_theme().
+ */
+function layout_builder_test_theme() {
+  return [
+    'block__preview_aware_block' => [
+      'base hook' => 'block',
+    ],
+  ];
+}
diff --git a/core/modules/layout_builder/tests/modules/layout_builder_test/templates/block--preview-aware-block.html.twig b/core/modules/layout_builder/tests/modules/layout_builder_test/templates/block--preview-aware-block.html.twig
new file mode 100644
index 0000000000..fe9ca8e1e4
--- /dev/null
+++ b/core/modules/layout_builder/tests/modules/layout_builder_test/templates/block--preview-aware-block.html.twig
@@ -0,0 +1,5 @@
+{% if in_preview %}
+  The block template is being previewed.
+{% endif %}
+
+{% include '@block/block.html.twig' %}
diff --git a/core/modules/layout_builder/tests/src/Functional/LayoutBuilderDefaultValuesTest.php b/core/modules/layout_builder/tests/src/Functional/LayoutBuilderDefaultValuesTest.php
new file mode 100644
index 0000000000..d65fb82217
--- /dev/null
+++ b/core/modules/layout_builder/tests/src/Functional/LayoutBuilderDefaultValuesTest.php
@@ -0,0 +1,295 @@
+<?php
+
+namespace Drupal\Tests\layout_builder\Functional;
+
+use Drupal\Core\Entity\FieldableEntityInterface;
+use Drupal\Core\Field\FieldDefinitionInterface;
+use Drupal\Core\File\FileSystemInterface;
+use Drupal\field\Entity\FieldConfig;
+use Drupal\field\Entity\FieldStorageConfig;
+use Drupal\file\Entity\File;
+use Drupal\layout_builder\Entity\LayoutBuilderEntityViewDisplay;
+use Drupal\Tests\BrowserTestBase;
+use Drupal\Tests\image\Kernel\ImageFieldCreationTrait;
+use Drupal\Tests\TestFileCreationTrait;
+
+/**
+ * Tests rendering default field values in Layout Builder.
+ *
+ * @group layout_builder
+ */
+class LayoutBuilderDefaultValuesTest extends BrowserTestBase {
+
+  use ImageFieldCreationTrait;
+  use TestFileCreationTrait {
+    getTestFiles as drupalGetTestFiles;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  protected static $modules = [
+    'layout_builder',
+    'block',
+    'node',
+    'image',
+  ];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected $defaultTheme = 'stark';
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp(): void {
+    parent::setUp();
+
+    $this->createContentType([
+      'type' => 'test_node_type',
+      'name' => 'Test Node Type',
+    ]);
+
+    $this->addTextFields();
+    $this->addImageFields();
+
+    // Create node 1 with specific values.
+    $this->createNode([
+      'type' => 'test_node_type',
+      'title' => 'Test Node 1 Has Values',
+      'field_string_no_default' => 'No default, no problem.',
+      'field_string_with_default' => 'It is ok to be different',
+      'field_string_with_callback' => 'Not from a callback',
+      'field_string_late_default' => 'I am way ahead of you.',
+      'field_image_with_default' => [
+        'target_id' => 2,
+        'alt' => 'My different alt text',
+      ],
+      'field_image_no_default' => [
+        'target_id' => 3,
+        'alt' => 'My third alt text',
+      ],
+    ]);
+
+    // Create node 2 relying on defaults.
+    $this->createNode([
+      'type' => 'test_node_type',
+      'title' => 'Test Node 2 Uses Defaults',
+    ]);
+
+    // Add default value to field_string_late_default.
+    $field = FieldConfig::loadByName('node', 'test_node_type', 'field_string_late_default');
+    $field->setDefaultValue('Too late!');
+    $field->save();
+  }
+
+  /**
+   * Tests display of default field values.
+   */
+  public function testDefaultValues() {
+    // Begin by viewing nodes with Layout Builder disabled.
+    $this->assertNodeWithValues();
+    $this->assertNodeWithDefaultValues();
+
+    // Enable layout builder.
+    LayoutBuilderEntityViewDisplay::load('node.test_node_type.default')
+      ->enableLayoutBuilder()
+      ->save();
+
+    // Confirm that default values are handled consistently by Layout Builder.
+    $this->assertNodeWithValues();
+    $this->assertNodeWithDefaultValues();
+  }
+
+  /**
+   * Test for expected text on node 1.
+   */
+  protected function assertNodeWithValues() {
+    $this->drupalGet('node/1');
+    $assert_session = $this->assertSession();
+    // String field with no default should render a value.
+    $assert_session->pageTextContains('field_string_no_default');
+    $assert_session->pageTextContains('No default, no problem.');
+    // String field with default should render non-default value.
+    $assert_session->pageTextContains('field_string_with_default');
+    $assert_session->pageTextNotContains('This is my default value');
+    $assert_session->pageTextContains('It is ok to be different');
+    // String field with callback should render non-default value.
+    $assert_session->pageTextContains('field_string_with_callback');
+    $assert_session->pageTextNotContains('This is from my default value callback');
+    $assert_session->pageTextContains('Not from a callback');
+    // String field with "late" default should render non-default value.
+    $assert_session->pageTextContains('field_string_late_default');
+    $assert_session->pageTextNotContains('Too late!');
+    $assert_session->pageTextContains('I am way ahead of you');
+    // Image field with default should render non-default value.
+    $assert_session->pageTextContains('field_image_with_default');
+    $assert_session->responseNotContains('My default alt text');
+    $assert_session->responseNotContains('test-file-1');
+    $assert_session->responseContains('My different alt text');
+    $assert_session->responseContains('test-file-2');
+    // Image field with no default should render a value.
+    $assert_session->pageTextContains('field_image_no_default');
+    $assert_session->responseContains('My third alt text');
+    $assert_session->responseContains('test-file-3');
+  }
+
+  /**
+   * Test for expected text on node 2.
+   */
+  protected function assertNodeWithDefaultValues() {
+    $this->drupalGet('node/2');
+    $assert_session = $this->assertSession();
+    // String field with no default should not render.
+    $assert_session->pageTextNotContains('field_string_no_default');
+    // String with default value should render with default value.
+    $assert_session->pageTextContains('field_string');
+    $assert_session->pageTextContains('This is my default value');
+    // String field with callback should render value from callback.
+    $assert_session->pageTextContains('field_string_with_callback');
+    $assert_session->pageTextContains('This is from my default value callback');
+    // String field with "late" default should not render.
+    $assert_session->pageTextNotContains('field_string_late_default');
+    $assert_session->pageTextNotContains('Too late!');
+    // Image field with default should render default value.
+    $assert_session->pageTextContains('field_image_with_default');
+    $assert_session->responseContains('My default alt text');
+    $assert_session->responseContains('test-file-1');
+    // Image field with no default should not render.
+    $assert_session->pageTextNotContains('field_image_no_default');
+  }
+
+  /**
+   * Helper function to add string fields.
+   */
+  protected function addTextFields() {
+    // String field with no default.
+    $field_storage = FieldStorageConfig::create([
+      'field_name' => 'field_string_no_default',
+      'entity_type' => 'node',
+      'type' => 'string',
+    ]);
+    $field_storage->save();
+    $field = FieldConfig::create([
+      'field_storage' => $field_storage,
+      'bundle' => 'test_node_type',
+    ]);
+    $field->save();
+
+    // String field with default value.
+    $field_storage = FieldStorageConfig::create([
+      'field_name' => 'field_string_with_default',
+      'entity_type' => 'node',
+      'type' => 'string',
+    ]);
+    $field_storage->save();
+    $field = FieldConfig::create([
+      'field_storage' => $field_storage,
+      'bundle' => 'test_node_type',
+    ]);
+    $field->setDefaultValue('This is my default value');
+    $field->save();
+
+    // String field with default callback.
+    $field_storage = FieldStorageConfig::create([
+      'field_name' => 'field_string_with_callback',
+      'entity_type' => 'node',
+      'type' => 'string',
+    ]);
+    $field_storage->save();
+    $field = FieldConfig::create([
+      'field_storage' => $field_storage,
+      'bundle' => 'test_node_type',
+    ]);
+    $field->setDefaultValueCallback('Drupal\Tests\layout_builder\Functional\LayoutBuilderDefaultValuesTest::defaultValueCallback');
+    $field->save();
+
+    // String field with late default. We will set default later.
+    $field_storage = FieldStorageConfig::create([
+      'field_name' => 'field_string_late_default',
+      'entity_type' => 'node',
+      'type' => 'string',
+    ]);
+    $field_storage->save();
+    $field = FieldConfig::create([
+      'field_storage' => $field_storage,
+      'bundle' => 'test_node_type',
+    ]);
+    $field->save();
+
+    /** @var \Drupal\Core\Entity\EntityDisplayRepositoryInterface $display_repository */
+    $display_repository = \Drupal::service('entity_display.repository');
+    $display_repository->getViewDisplay('node', 'test_node_type')
+      ->setComponent('field_string_no_default', [
+        'type' => 'string',
+      ])
+      ->setComponent('field_string_with_default', [
+        'type' => 'string',
+      ])
+      ->setComponent('field_string_with_callback', [
+        'type' => 'string',
+      ])
+      ->setComponent('field_string_late_default', [
+        'type' => 'string',
+      ])
+      ->save();
+  }
+
+  /**
+   * Helper function to add image fields.
+   */
+  protected function addImageFields() {
+    // Create files to use as the default images.
+    $files = $this->drupalGetTestFiles('image');
+    $images = [];
+    for ($i = 1; $i <= 3; $i++) {
+      $filename = "test-file-$i";
+      $desired_filepath = 'public://' . $filename;
+      \Drupal::service('file_system')->copy($files[0]->uri, $desired_filepath, FileSystemInterface::EXISTS_ERROR);
+      $file = File::create([
+        'uri' => $desired_filepath,
+        'filename' => $filename,
+        'name' => $filename,
+      ]);
+      $file->save();
+      $images[] = $file;
+    }
+
+    $field_name = 'field_image_with_default';
+    $storage_settings['default_image'] = [
+      'uuid' => $images[0]->uuid(),
+      'alt' => 'My default alt text',
+      'title' => '',
+      'width' => 0,
+      'height' => 0,
+    ];
+    $field_settings['default_image'] = [
+      'uuid' => $images[0]->uuid(),
+      'alt' => 'My default alt text',
+      'title' => '',
+      'width' => 0,
+      'height' => 0,
+    ];
+    $widget_settings = [
+      'preview_image_style' => 'medium',
+    ];
+    $this->createImageField($field_name, 'test_node_type', $storage_settings, $field_settings, $widget_settings);
+
+    $field_name = 'field_image_no_default';
+    $storage_settings = [];
+    $field_settings = [];
+    $widget_settings = [
+      'preview_image_style' => 'medium',
+    ];
+    $this->createImageField($field_name, 'test_node_type', $storage_settings, $field_settings, $widget_settings);
+  }
+
+  /**
+   * Sample 'default value' callback.
+   */
+  public static function defaultValueCallback(FieldableEntityInterface $entity, FieldDefinitionInterface $definition) {
+    return [['value' => 'This is from my default value callback']];
+  }
+
+}
diff --git a/core/modules/layout_builder/tests/src/Functional/LayoutBuilderFormModeTest.php b/core/modules/layout_builder/tests/src/Functional/LayoutBuilderFormModeTest.php
new file mode 100644
index 0000000000..8ced12daea
--- /dev/null
+++ b/core/modules/layout_builder/tests/src/Functional/LayoutBuilderFormModeTest.php
@@ -0,0 +1,118 @@
+<?php
+
+namespace Drupal\Tests\layout_builder\Functional;
+
+use Drupal\Core\Entity\Entity\EntityFormDisplay;
+use Drupal\Core\Entity\Entity\EntityFormMode;
+use Drupal\entity_test\Entity\EntityTest;
+use Drupal\field\Entity\FieldConfig;
+use Drupal\field\Entity\FieldStorageConfig;
+use Drupal\layout_builder\Entity\LayoutBuilderEntityViewDisplay;
+use Drupal\Tests\BrowserTestBase;
+
+/**
+ * Tests Layout Builder forms.
+ *
+ * @group layout_builder
+ */
+class LayoutBuilderFormModeTest extends BrowserTestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  protected static $modules = [
+    'field',
+    'entity_test',
+    'layout_builder',
+  ];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected $defaultTheme = 'stark';
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp(): void {
+    parent::setUp();
+
+    // Set up a field with a validation constraint.
+    $field_storage = FieldStorageConfig::create([
+      'field_name' => 'foo',
+      'entity_type' => 'entity_test',
+      'type' => 'string',
+    ]);
+    $field_storage->save();
+
+    FieldConfig::create([
+      'field_storage' => $field_storage,
+      'bundle' => 'entity_test',
+      // Expecting required value.
+      'required' => TRUE,
+    ])->save();
+
+    // Enable layout builder custom layouts.
+    LayoutBuilderEntityViewDisplay::create([
+      'targetEntityType' => 'entity_test',
+      'bundle' => 'entity_test',
+      'mode' => 'default',
+      'status' => TRUE,
+    ])
+      ->enable()
+      ->enableLayoutBuilder()
+      ->setOverridable()
+      ->save();
+
+    // Add the form mode and show the field with a constraint.
+    EntityFormMode::create([
+      'id' => 'entity_test.layout_builder',
+      'targetEntityType' => 'entity_test',
+    ])->save();
+    EntityFormDisplay::create([
+      'targetEntityType' => 'entity_test',
+      'bundle' => 'entity_test',
+      'mode' => 'layout_builder',
+      'status' => TRUE,
+    ])
+      ->setComponent('foo', [
+        'type' => 'string_textfield',
+      ])
+      ->save();
+
+    $this->drupalLogin($this->drupalCreateUser([
+      'view test entity',
+      'configure any layout',
+      'configure all entity_test entity_test layout overrides',
+    ]));
+
+    EntityTest::create()->setName($this->randomMachineName())->save();
+  }
+
+  /**
+   * Tests that the 'Discard changes' button skips validation and ignores input.
+   */
+  public function testDiscardValidation() {
+    $page = $this->getSession()->getPage();
+    $assert_session = $this->assertSession();
+
+    // When submitting the form normally, a validation error should be shown.
+    $this->drupalGet('entity_test/1/layout');
+    $assert_session->fieldExists('foo[0][value]');
+    $assert_session->elementAttributeContains('named', ['field', 'foo[0][value]'], 'required', 'required');
+    $page->pressButton('Save layout');
+    $assert_session->pageTextContains('foo field is required.');
+
+    // When Discarding changes, a validation error will not be shown.
+    // Reload the form for fresh state.
+    $this->drupalGet('entity_test/1/layout');
+    $page->pressButton('Discard changes');
+    $assert_session->pageTextNotContains('foo field is required.');
+    $assert_session->addressEquals('entity_test/1/layout/discard-changes');
+
+    // Submit the form to ensure no invalid form state retained.
+    $page->pressButton('Confirm');
+    $assert_session->pageTextContains('The changes to the layout have been discarded.');
+  }
+
+}
diff --git a/core/modules/layout_builder/tests/src/Functional/LayoutBuilderTest.php b/core/modules/layout_builder/tests/src/Functional/LayoutBuilderTest.php
index 24c88e1818..1b38a4bb9e 100644
--- a/core/modules/layout_builder/tests/src/Functional/LayoutBuilderTest.php
+++ b/core/modules/layout_builder/tests/src/Functional/LayoutBuilderTest.php
@@ -351,6 +351,7 @@ public function testLayoutBuilderUi() {
     $assert_session->pageTextContains('Extra, Extra read all about it.');
     $assert_session->pageTextNotContains('Placeholder for the "Extra label" field');
     $assert_session->linkNotExists('Layout');
+    $assert_session->pageTextContains(sprintf('Yes, I can access the %s', Node::load(1)->label()));
 
     // Enable overrides.
     $this->drupalGet("{$field_ui_prefix}/display/default");
@@ -377,6 +378,7 @@ public function testLayoutBuilderUi() {
     $assert_session->pageTextNotContains('Powered by Drupal');
     $assert_session->pageTextNotContains('Extra, Extra read all about it.');
     $assert_session->pageTextNotContains('Placeholder for the "Extra label" field');
+    $assert_session->pageTextContains(sprintf('Yes, I can access the entity %s in two column', Node::load(1)->label()));
 
     // Assert that overrides cannot be turned off while overrides exist.
     $this->drupalGet("$field_ui_prefix/display/default");
@@ -401,6 +403,7 @@ public function testLayoutBuilderUi() {
     $assert_session->pageTextContains('Powered by Drupal');
     $assert_session->pageTextContains('Extra, Extra read all about it.');
     $assert_session->pageTextNotContains('Placeholder for the "Extra label" field');
+    $assert_session->pageTextContains(sprintf('Yes, I can access the %s', Node::load(2)->label()));
 
     // The overridden node does not pick up the changes to defaults.
     $this->drupalGet('node/1');
@@ -431,6 +434,8 @@ public function testLayoutBuilderUi() {
     $assert_session->pageTextContains('The first node body');
     $assert_session->pageTextContains('Powered by Drupal');
     $assert_session->pageTextContains('Extra, Extra read all about it.');
+    $assert_session->pageTextNotContains(sprintf('Yes, I can access the entity %s in two column', Node::load(1)->label()));
+    $assert_session->pageTextContains(sprintf('Yes, I can access the %s', Node::load(1)->label()));
 
     // Assert that overrides can be turned off now that all overrides are gone.
     $this->drupalGet("{$field_ui_prefix}/display/default");
@@ -719,15 +724,47 @@ public function testPreviewAwarePlugins() {
     $page->pressButton('Add block');
 
     $assert_session->elementExists('css', '.go-birds-preview');
+    $assert_session->pageTextContains('The block template is being previewed.');
     $assert_session->pageTextContains('This block is being rendered in preview mode.');
 
     $page->pressButton('Save layout');
     $this->drupalGet('node/1');
 
     $assert_session->elementNotExists('css', '.go-birds-preview');
+    $assert_session->pageTextNotContains('The block template is being previewed.');
     $assert_session->pageTextContains('This block is being rendered normally.');
   }
 
+  /**
+   * Tests preview-aware templates.
+   */
+  public function testPreviewAwareTemplates() {
+    $assert_session = $this->assertSession();
+    $page = $this->getSession()->getPage();
+
+    $this->drupalLogin($this->drupalCreateUser([
+      'configure any layout',
+      'administer node display',
+    ]));
+
+    $this->drupalGet('admin/structure/types/manage/bundle_with_section_field/display/default');
+    $this->submitForm(['layout[enabled]' => TRUE], 'Save');
+    $page->clickLink('Manage layout');
+    $page->clickLink('Add section');
+    $page->clickLink('1 column layout');
+    $page->pressButton('Add section');
+    $page->clickLink('Add block');
+    $page->clickLink('Preview-aware block');
+    $page->pressButton('Add block');
+
+    $assert_session->pageTextContains('This is a preview, indeed');
+
+    $page->pressButton('Save layout');
+    $this->drupalGet('node/1');
+
+    $assert_session->pageTextNotContains('This is a preview, indeed');
+  }
+
   /**
    * Tests the interaction between full and default view modes.
    *
@@ -1130,6 +1167,14 @@ public function testFormAlter() {
     $assert_session->pageTextContains('Layout Builder Storage: node.bundle_with_section_field.default');
     $assert_session->pageTextContains('Layout Builder Section: layout_onecol');
     $assert_session->pageTextContains('Layout Builder Component: system_powered_by_block');
+
+    $this->drupalGet("$field_ui_prefix/display/default");
+    $page->clickLink('Manage layout');
+    $page->clickLink('Add section');
+    $page->clickLink('One column');
+    $assert_session->pageTextContains('Layout Builder Storage: node.bundle_with_section_field.default');
+    $assert_session->pageTextContains('Layout Builder Section: layout_onecol');
+    $assert_session->pageTextContains('Layout Builder Layout: layout_onecol');
   }
 
   /**
diff --git a/core/modules/layout_builder/tests/src/FunctionalJavascript/InlineBlockPrivateFilesTest.php b/core/modules/layout_builder/tests/src/FunctionalJavascript/InlineBlockPrivateFilesTest.php
index 5d2625bdcd..95f213ac93 100644
--- a/core/modules/layout_builder/tests/src/FunctionalJavascript/InlineBlockPrivateFilesTest.php
+++ b/core/modules/layout_builder/tests/src/FunctionalJavascript/InlineBlockPrivateFilesTest.php
@@ -171,9 +171,9 @@ protected function replaceFileInBlock(FileInterface $file) {
     $assert_session = $this->assertSession();
     $page = $this->getSession()->getPage();
     $this->clickContextualLink(static::INLINE_BLOCK_LOCATOR, 'Configure');
+    $assert_session->waitForElement('css', "#drupal-off-canvas input[value='Remove']");
     $assert_session->assertWaitOnAjaxRequest();
-    $page->pressButton('Remove');
-    $assert_session->assertWaitOnAjaxRequest();
+    $page->find('css', '#drupal-off-canvas')->pressButton('Remove');
     $this->attachFileToBlockForm($file);
     $page->pressButton('Update');
     $this->assertDialogClosedAndTextVisible($file->label(), static::INLINE_BLOCK_LOCATOR);
@@ -269,6 +269,7 @@ protected function getFileSecret(FileInterface $file) {
   protected function attachFileToBlockForm(FileInterface $file) {
     $assert_session = $this->assertSession();
     $page = $this->getSession()->getPage();
+    $this->assertSession()->waitForElementVisible('named', ['field', 'files[settings_block_form_field_file_0]']);
     $page->attachFileToField("files[settings_block_form_field_file_0]", $this->fileSystem->realpath($file->getFileUri()));
     $assert_session->assertWaitOnAjaxRequest();
     $this->assertNotEmpty($assert_session->waitForLink($file->label()));
diff --git a/core/modules/layout_builder/tests/src/Kernel/FieldBlockTest.php b/core/modules/layout_builder/tests/src/Kernel/FieldBlockTest.php
index 3af03cb81a..b8493ae37d 100644
--- a/core/modules/layout_builder/tests/src/Kernel/FieldBlockTest.php
+++ b/core/modules/layout_builder/tests/src/Kernel/FieldBlockTest.php
@@ -152,7 +152,7 @@ public function testBlockAccessEntityAllowedFieldNotAllowed($expected, $field_ac
    * @covers ::build
    * @dataProvider providerTestBlockAccessEntityAllowedFieldHasValue
    */
-  public function testBlockAccessEntityAllowedFieldHasValue($expected, $is_empty) {
+  public function testBlockAccessEntityAllowedFieldHasValue($expected, $is_empty, $default_value) {
     $entity = $this->prophesize(FieldableEntityInterface::class);
     $block = $this->getTestBlock($entity);
 
@@ -160,6 +160,10 @@ public function testBlockAccessEntityAllowedFieldHasValue($expected, $is_empty)
     $entity->access('view', $account->reveal(), TRUE)->willReturn(AccessResult::allowed());
     $entity->hasField('the_field_name')->willReturn(TRUE);
     $field = $this->prophesize(FieldItemListInterface::class);
+    $field_definition = $this->prophesize(FieldDefinitionInterface::class);
+    $field->getFieldDefinition()->willReturn($field_definition->reveal());
+    $field_definition->getDefaultValue($entity->reveal())->willReturn($default_value);
+    $field_definition->getType()->willReturn('not_an_image');
     $entity->get('the_field_name')->willReturn($field->reveal());
 
     $field->access('view', $account->reveal(), TRUE)->willReturn(AccessResult::allowed());
@@ -177,10 +181,17 @@ public function providerTestBlockAccessEntityAllowedFieldHasValue() {
     $data['empty'] = [
       FALSE,
       TRUE,
+      FALSE,
     ];
     $data['populated'] = [
       TRUE,
       FALSE,
+      FALSE,
+    ];
+    $data['empty, with default'] = [
+      TRUE,
+      TRUE,
+      TRUE,
     ];
     return $data;
   }
diff --git a/core/modules/layout_builder/tests/src/Unit/BlockComponentRenderArrayTest.php b/core/modules/layout_builder/tests/src/Unit/BlockComponentRenderArrayTest.php
index 76281f8731..9d797038db 100644
--- a/core/modules/layout_builder/tests/src/Unit/BlockComponentRenderArrayTest.php
+++ b/core/modules/layout_builder/tests/src/Unit/BlockComponentRenderArrayTest.php
@@ -120,6 +120,7 @@ public function testOnBuildRender($refinable_dependent_access) {
       '#base_plugin_id' => 'block_plugin_id',
       '#derivative_plugin_id' => NULL,
       'content' => $block_content,
+      '#in_preview' => FALSE,
     ];
 
     $expected_build_with_expected_cache = $expected_build + [
@@ -195,6 +196,7 @@ public function testOnBuildRenderWithoutPreviewFallbackString($refinable_depende
       '#base_plugin_id' => 'block_plugin_id',
       '#derivative_plugin_id' => NULL,
       'content' => $block_content,
+      '#in_preview' => FALSE,
     ];
 
     $expected_cache = $expected_build + [
@@ -324,6 +326,7 @@ public function testOnBuildRenderInPreview($refinable_dependent_access) {
       '#attributes' => [
         'data-layout-content-preview-placeholder-label' => $placeholder_label,
       ],
+      '#in_preview' => TRUE,
     ];
 
     $expected_cache = $expected_build + [
@@ -332,6 +335,7 @@ public function testOnBuildRenderInPreview($refinable_dependent_access) {
         'tags' => ['test'],
         'max-age' => 0,
       ],
+      '#in_preview' => TRUE,
     ];
 
     $subscriber->onBuildRender($event);
@@ -383,6 +387,7 @@ public function testOnBuildRenderInPreviewEmptyBuild() {
       '#attributes' => [
         'data-layout-content-preview-placeholder-label' => $placeholder_string,
       ],
+      '#in_preview' => TRUE,
     ];
     $expected_build['content']['#markup'] = $placeholder_string;
 
@@ -392,6 +397,7 @@ public function testOnBuildRenderInPreviewEmptyBuild() {
         'tags' => ['test'],
         'max-age' => 0,
       ],
+      '#in_preview' => TRUE,
     ];
 
     $subscriber->onBuildRender($event);
@@ -477,12 +483,12 @@ public function testOnBuildRenderEmptyBuildWithCacheTags() {
     $expected_build = [];
 
     $expected_cache = $expected_build + [
-        '#cache' => [
-          'contexts' => [],
-          'tags' => ['empty_build_cache_test', 'test'],
-          'max-age' => -1,
-        ],
-      ];
+      '#cache' => [
+        'contexts' => [],
+        'tags' => ['empty_build_cache_test', 'test'],
+        'max-age' => -1,
+      ],
+    ];
 
     $subscriber->onBuildRender($event);
     $result = $event->getBuild();
diff --git a/core/modules/layout_builder/tests/src/Unit/SectionRenderTest.php b/core/modules/layout_builder/tests/src/Unit/SectionRenderTest.php
index fe9fbdc35c..a149ff8467 100644
--- a/core/modules/layout_builder/tests/src/Unit/SectionRenderTest.php
+++ b/core/modules/layout_builder/tests/src/Unit/SectionRenderTest.php
@@ -115,6 +115,7 @@ public function testToRenderArray() {
         'tags' => [],
         'max-age' => -1,
       ],
+      '#in_preview' => FALSE,
     ];
 
     $block = $this->prophesize(BlockPluginInterface::class)->willImplement(PreviewFallbackInterface::class);
@@ -198,6 +199,7 @@ public function testToRenderArrayPreview() {
         'tags' => [],
         'max-age' => 0,
       ],
+      '#in_preview' => TRUE,
     ];
     $block = $this->prophesize(BlockPluginInterface::class)->willImplement(PreviewFallbackInterface::class);
     $this->blockManager->createInstance('block_plugin_id', ['id' => 'block_plugin_id'])->willReturn($block->reveal());
@@ -254,6 +256,7 @@ public function testContextAwareBlock() {
         'tags' => [],
         'max-age' => -1,
       ],
+      '#in_preview' => FALSE,
     ];
 
     $block = $this->prophesize(BlockPluginInterface::class)
diff --git a/core/modules/layout_discovery/layout_discovery.module b/core/modules/layout_discovery/layout_discovery.module
index ce08617e02..efc9d3b30b 100644
--- a/core/modules/layout_discovery/layout_discovery.module
+++ b/core/modules/layout_discovery/layout_discovery.module
@@ -34,11 +34,12 @@ function layout_discovery_theme() {
  * @param array &$variables
  *   An associative array containing:
  *   - content: An associative array containing the properties of the element.
- *     Properties used: #settings, #layout.
+ *     Properties used: #settings, #layout, #in_preview.
  */
 function template_preprocess_layout(&$variables) {
   $variables['settings'] = $variables['content']['#settings'] ?? [];
   $variables['layout'] = $variables['content']['#layout'] ?? [];
+  $variables['in_preview'] = $variables['content']['#in_preview'] ?? FALSE;
 
   // Create an attributes variable for each region.
   foreach (Element::children($variables['content']) as $name) {
diff --git a/core/modules/layout_discovery/layouts/onecol/layout--onecol.html.twig b/core/modules/layout_discovery/layouts/onecol/layout--onecol.html.twig
index 3a7f9934d0..01d61e009f 100644
--- a/core/modules/layout_discovery/layouts/onecol/layout--onecol.html.twig
+++ b/core/modules/layout_discovery/layouts/onecol/layout--onecol.html.twig
@@ -4,6 +4,7 @@
  * Default theme implementation to display a one-column layout.
  *
  * Available variables:
+ * - in_preview: Whether the plugin is being rendered in preview mode.
  * - content: The content for this layout.
  * - attributes: HTML attributes for the layout <div>.
  *
diff --git a/core/modules/layout_discovery/layouts/threecol_25_50_25/layout--threecol-25-50-25.html.twig b/core/modules/layout_discovery/layouts/threecol_25_50_25/layout--threecol-25-50-25.html.twig
index e5441d8b6b..cd226f0201 100644
--- a/core/modules/layout_discovery/layouts/threecol_25_50_25/layout--threecol-25-50-25.html.twig
+++ b/core/modules/layout_discovery/layouts/threecol_25_50_25/layout--threecol-25-50-25.html.twig
@@ -7,6 +7,7 @@
  * additional areas for the top and the bottom.
  *
  * Available variables:
+ * - in_preview: Whether the plugin is being rendered in preview mode.
  * - content: The content for this layout.
  * - attributes: HTML attributes for the layout <div>.
  *
diff --git a/core/modules/layout_discovery/layouts/threecol_33_34_33/layout--threecol-33-34-33.html.twig b/core/modules/layout_discovery/layouts/threecol_33_34_33/layout--threecol-33-34-33.html.twig
index 6445061c04..762cece8cf 100644
--- a/core/modules/layout_discovery/layouts/threecol_33_34_33/layout--threecol-33-34-33.html.twig
+++ b/core/modules/layout_discovery/layouts/threecol_33_34_33/layout--threecol-33-34-33.html.twig
@@ -7,6 +7,7 @@
  * additional areas for the top and the bottom.
  *
  * Available variables:
+ * - in_preview: Whether the plugin is being rendered in preview mode.
  * - content: The content for this layout.
  * - attributes: HTML attributes for the layout <div>.
  *
diff --git a/core/modules/layout_discovery/layouts/twocol/layout--twocol.html.twig b/core/modules/layout_discovery/layouts/twocol/layout--twocol.html.twig
index 262c657f91..11939907ba 100644
--- a/core/modules/layout_discovery/layouts/twocol/layout--twocol.html.twig
+++ b/core/modules/layout_discovery/layouts/twocol/layout--twocol.html.twig
@@ -4,6 +4,7 @@
  * Default theme implementation to display a two-column layout.
  *
  * Available variables:
+ * - in_preview: Whether the plugin is being rendered in preview mode.
  * - content: The content for this layout.
  * - attributes: HTML attributes for the layout <div>.
  *
diff --git a/core/modules/layout_discovery/layouts/twocol_bricks/layout--twocol-bricks.html.twig b/core/modules/layout_discovery/layouts/twocol_bricks/layout--twocol-bricks.html.twig
index dc29e03e43..f772834f50 100644
--- a/core/modules/layout_discovery/layouts/twocol_bricks/layout--twocol-bricks.html.twig
+++ b/core/modules/layout_discovery/layouts/twocol_bricks/layout--twocol-bricks.html.twig
@@ -7,6 +7,7 @@
  * the top, bottom and in the middle.
  *
  * Available variables:
+ * - in_preview: Whether the plugin is being rendered in preview mode.
  * - content: The content for this layout.
  * - attributes: HTML attributes for the layout <div>.
  *
diff --git a/core/modules/link/src/Plugin/Field/FieldFormatter/LinkFormatter.php b/core/modules/link/src/Plugin/Field/FieldFormatter/LinkFormatter.php
index e69b19c0c2..75a46fa4aa 100644
--- a/core/modules/link/src/Plugin/Field/FieldFormatter/LinkFormatter.php
+++ b/core/modules/link/src/Plugin/Field/FieldFormatter/LinkFormatter.php
@@ -94,21 +94,21 @@ public function settingsForm(array $form, FormStateInterface $form_state) {
 
     $elements['trim_length'] = [
       '#type' => 'number',
-      '#title' => t('Trim link text length'),
-      '#field_suffix' => t('characters'),
+      '#title' => $this->t('Trim link text length'),
+      '#field_suffix' => $this->t('characters'),
       '#default_value' => $this->getSetting('trim_length'),
       '#min' => 1,
-      '#description' => t('Leave blank to allow unlimited link text lengths.'),
+      '#description' => $this->t('Leave blank to allow unlimited link text lengths.'),
     ];
     $elements['url_only'] = [
       '#type' => 'checkbox',
-      '#title' => t('URL only'),
+      '#title' => $this->t('URL only'),
       '#default_value' => $this->getSetting('url_only'),
       '#access' => $this->getPluginId() == 'link',
     ];
     $elements['url_plain'] = [
       '#type' => 'checkbox',
-      '#title' => t('Show URL as plain text'),
+      '#title' => $this->t('Show URL as plain text'),
       '#default_value' => $this->getSetting('url_plain'),
       '#access' => $this->getPluginId() == 'link',
       '#states' => [
@@ -119,13 +119,13 @@ public function settingsForm(array $form, FormStateInterface $form_state) {
     ];
     $elements['rel'] = [
       '#type' => 'checkbox',
-      '#title' => t('Add rel="nofollow" to links'),
+      '#title' => $this->t('Add rel="nofollow" to links'),
       '#return_value' => 'nofollow',
       '#default_value' => $this->getSetting('rel'),
     ];
     $elements['target'] = [
       '#type' => 'checkbox',
-      '#title' => t('Open link in new window'),
+      '#title' => $this->t('Open link in new window'),
       '#return_value' => '_blank',
       '#default_value' => $this->getSetting('target'),
     ];
@@ -142,24 +142,24 @@ public function settingsSummary() {
     $settings = $this->getSettings();
 
     if (!empty($settings['trim_length'])) {
-      $summary[] = t('Link text trimmed to @limit characters', ['@limit' => $settings['trim_length']]);
+      $summary[] = $this->t('Link text trimmed to @limit characters', ['@limit' => $settings['trim_length']]);
     }
     else {
-      $summary[] = t('Link text not trimmed');
+      $summary[] = $this->t('Link text not trimmed');
     }
     if ($this->getPluginId() == 'link' && !empty($settings['url_only'])) {
       if (!empty($settings['url_plain'])) {
-        $summary[] = t('Show URL only as plain-text');
+        $summary[] = $this->t('Show URL only as plain-text');
       }
       else {
-        $summary[] = t('Show URL only');
+        $summary[] = $this->t('Show URL only');
       }
     }
     if (!empty($settings['rel'])) {
-      $summary[] = t('Add rel="@rel"', ['@rel' => $settings['rel']]);
+      $summary[] = $this->t('Add rel="@rel"', ['@rel' => $settings['rel']]);
     }
     if (!empty($settings['target'])) {
-      $summary[] = t('Open link in new window');
+      $summary[] = $this->t('Open link in new window');
     }
 
     return $summary;
diff --git a/core/modules/link/src/Plugin/Field/FieldType/LinkItem.php b/core/modules/link/src/Plugin/Field/FieldType/LinkItem.php
index 84556f8be0..9154eee1cd 100644
--- a/core/modules/link/src/Plugin/Field/FieldType/LinkItem.php
+++ b/core/modules/link/src/Plugin/Field/FieldType/LinkItem.php
@@ -10,6 +10,7 @@
 use Drupal\Core\TypedData\DataDefinition;
 use Drupal\Core\TypedData\MapDataDefinition;
 use Drupal\Core\Url;
+use Drupal\Core\StringTranslation\TranslatableMarkup;
 use Drupal\link\LinkItemInterface;
 
 /**
@@ -41,13 +42,13 @@ public static function defaultFieldSettings() {
    */
   public static function propertyDefinitions(FieldStorageDefinitionInterface $field_definition) {
     $properties['uri'] = DataDefinition::create('uri')
-      ->setLabel(t('URI'));
+      ->setLabel(new TranslatableMarkup('URI'));
 
     $properties['title'] = DataDefinition::create('string')
-      ->setLabel(t('Link text'));
+      ->setLabel(new TranslatableMarkup('Link text'));
 
     $properties['options'] = MapDataDefinition::create()
-      ->setLabel(t('Options'));
+      ->setLabel(new TranslatableMarkup('Options'));
 
     return $properties;
   }
@@ -89,23 +90,23 @@ public function fieldSettingsForm(array $form, FormStateInterface $form_state) {
 
     $element['link_type'] = [
       '#type' => 'radios',
-      '#title' => t('Allowed link type'),
+      '#title' => $this->t('Allowed link type'),
       '#default_value' => $this->getSetting('link_type'),
       '#options' => [
-        static::LINK_INTERNAL => t('Internal links only'),
-        static::LINK_EXTERNAL => t('External links only'),
-        static::LINK_GENERIC => t('Both internal and external links'),
+        static::LINK_INTERNAL => $this->t('Internal links only'),
+        static::LINK_EXTERNAL => $this->t('External links only'),
+        static::LINK_GENERIC => $this->t('Both internal and external links'),
       ],
     ];
 
     $element['title'] = [
       '#type' => 'radios',
-      '#title' => t('Allow link text'),
+      '#title' => $this->t('Allow link text'),
       '#default_value' => $this->getSetting('title'),
       '#options' => [
-        DRUPAL_DISABLED => t('Disabled'),
-        DRUPAL_OPTIONAL => t('Optional'),
-        DRUPAL_REQUIRED => t('Required'),
+        DRUPAL_DISABLED => $this->t('Disabled'),
+        DRUPAL_OPTIONAL => $this->t('Optional'),
+        DRUPAL_REQUIRED => $this->t('Required'),
       ],
     ];
 
diff --git a/core/modules/link/src/Plugin/Field/FieldWidget/LinkWidget.php b/core/modules/link/src/Plugin/Field/FieldWidget/LinkWidget.php
index 3d6d80f622..031f89beba 100644
--- a/core/modules/link/src/Plugin/Field/FieldWidget/LinkWidget.php
+++ b/core/modules/link/src/Plugin/Field/FieldWidget/LinkWidget.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\link\Plugin\Field\FieldWidget;
 
+use Drupal\Core\StringTranslation\TranslatableMarkup;
 use Drupal\Core\Url;
 use Drupal\Core\Entity\Element\EntityAutocomplete;
 use Drupal\Core\Field\FieldItemListInterface;
@@ -71,7 +72,7 @@ protected static function getUriAsDisplayableString($uri) {
       $displayable_string = $uri_reference;
     }
     elseif ($scheme === 'entity') {
-      [$entity_type, $entity_id] = explode('/', substr($uri, 7), 2);
+      list($entity_type, $entity_id) = explode('/', substr($uri, 7), 2);
       // Show the 'entity:' URI as the entity autocomplete would.
       // @todo Support entity types other than 'node'. Will be fixed in
       //   https://www.drupal.org/node/2423093.
@@ -147,7 +148,7 @@ public static function validateUriElement($element, FormStateInterface $form_sta
     // @todo '<front>' is valid input for BC reasons, may be removed by
     //   https://www.drupal.org/node/2421941
     if (parse_url($uri, PHP_URL_SCHEME) === 'internal' && !in_array($element['#value'][0], ['/', '?', '#'], TRUE) && substr($element['#value'], 0, 7) !== '<front>') {
-      $form_state->setError($element, t('Manually entered paths should start with one of the following characters: / ? #'));
+      $form_state->setError($element, new TranslatableMarkup('Manually entered paths should start with one of the following characters: / ? #'));
       return;
     }
   }
@@ -159,9 +160,9 @@ public static function validateUriElement($element, FormStateInterface $form_sta
    */
   public static function validateTitleElement(&$element, FormStateInterface $form_state, $form) {
     if ($element['uri']['#value'] !== '' && $element['title']['#value'] === '') {
-      // We expect the field name placeholder value to be wrapped in t() here,
+      // We expect the field name placeholder value to be wrapped in $this->t() here,
       // so it won't be escaped again as it's already marked safe.
-      $form_state->setError($element['title'], t('@title field is required if there is @uri input.', ['@title' => $element['title']['#title'], '@uri' => $element['uri']['#title']]));
+      $form_state->setError($element['title'], new TranslatableMarkup('@title field is required if there is @uri input.', ['@title' => $element['title']['#title'], '@uri' => $element['uri']['#title']]));
     }
   }
 
@@ -172,7 +173,7 @@ public static function validateTitleElement(&$element, FormStateInterface $form_
    */
   public static function validateTitleNoLink(&$element, FormStateInterface $form_state, $form) {
     if ($element['uri']['#value'] === '' && $element['title']['#value'] !== '') {
-      $form_state->setError($element['uri'], t('The @uri field is required when the @title field is specified.', ['@title' => $element['title']['#title'], '@uri' => $element['uri']['#title']]));
+      $form_state->setError($element['uri'], new TranslatableMarkup('The @uri field is required when the @title field is specified.', ['@title' => $element['title']['#title'], '@uri' => $element['uri']['#title']]));
     }
   }
 
diff --git a/core/modules/link/tests/src/Functional/LinkFieldTest.php b/core/modules/link/tests/src/Functional/LinkFieldTest.php
index be98be91f3..47ddf484d3 100644
--- a/core/modules/link/tests/src/Functional/LinkFieldTest.php
+++ b/core/modules/link/tests/src/Functional/LinkFieldTest.php
@@ -55,6 +55,9 @@ class LinkFieldTest extends BrowserTestBase {
    */
   protected $field;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/link/tests/src/Kernel/LinkItemTest.php b/core/modules/link/tests/src/Kernel/LinkItemTest.php
index ce608f00b8..5f4d0819b4 100644
--- a/core/modules/link/tests/src/Kernel/LinkItemTest.php
+++ b/core/modules/link/tests/src/Kernel/LinkItemTest.php
@@ -26,6 +26,9 @@ class LinkItemTest extends FieldKernelTestBase {
    */
   protected static $modules = ['link'];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/locale/locale.module b/core/modules/locale/locale.module
index 7fbf1698d6..46ca8fbcfd 100644
--- a/core/modules/locale/locale.module
+++ b/core/modules/locale/locale.module
@@ -117,14 +117,16 @@
 const LOCALE_TRANSLATION_OVERWRITE_ALL = 'all';
 
 /**
- * UI option for override of existing translations. Only override non-customized
- * translations.
+ * UI option for override of existing translations.
+ *
+ * Only override non-customized translations.
  */
 const LOCALE_TRANSLATION_OVERWRITE_NON_CUSTOMIZED = 'non_customized';
 
 /**
- * UI option for override of existing translations. Don't override existing
- * translations.
+ * UI option for override of existing translations.
+ *
+ * Don't override existing translations.
  */
 const LOCALE_TRANSLATION_OVERWRITE_NONE = 'none';
 
@@ -906,7 +908,7 @@ function locale_translation_get_status($projects = NULL, $langcodes = NULL) {
 function locale_translation_status_save($project, $langcode, $type, $data) {
   // Load the translation status or build it if not already available.
   \Drupal::moduleHandler()->loadInclude('locale', 'inc', 'locale.translation');
-  $status = locale_translation_get_status();
+  $status = locale_translation_get_status([$project]);
   if (empty($status)) {
     $projects = locale_translation_get_projects([$project]);
     if (isset($projects[$project])) {
diff --git a/core/modules/locale/tests/src/Functional/LocaleImportFunctionalTest.php b/core/modules/locale/tests/src/Functional/LocaleImportFunctionalTest.php
index fcb107e4b3..a841080655 100644
--- a/core/modules/locale/tests/src/Functional/LocaleImportFunctionalTest.php
+++ b/core/modules/locale/tests/src/Functional/LocaleImportFunctionalTest.php
@@ -35,8 +35,7 @@ class LocaleImportFunctionalTest extends BrowserTestBase {
   protected $adminUser;
 
   /**
-   * A user able to create languages, import translations and access site
-   * reports.
+   * A user able to create languages, import translations, access site reports.
    *
    * @var \Drupal\user\Entity\User
    */
diff --git a/core/modules/locale/tests/src/Functional/LocaleTranslatedSchemaDefinitionTest.php b/core/modules/locale/tests/src/Functional/LocaleTranslatedSchemaDefinitionTest.php
index 85148eebb7..445ea672d2 100644
--- a/core/modules/locale/tests/src/Functional/LocaleTranslatedSchemaDefinitionTest.php
+++ b/core/modules/locale/tests/src/Functional/LocaleTranslatedSchemaDefinitionTest.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\Tests\locale\Functional;
 
+use Drupal\Core\Url;
 use Drupal\language\Entity\ConfigurableLanguage;
 use Drupal\Tests\BrowserTestBase;
 use Drupal\Tests\RequirementsPageTrait;
@@ -71,7 +72,7 @@ public function testTranslatedUpdate() {
     // Visit the update page to collect any strings that may be translatable.
     $user = $this->drupalCreateUser(['administer software updates']);
     $this->drupalLogin($user);
-    $update_url = $GLOBALS['base_url'] . '/update.php';
+    $update_url = Url::fromRoute('system.db_update')->setAbsolute()->toString();
 
     // Collect strings from the PHP warning page, if applicable, as well as the
     // main update page.
diff --git a/core/modules/locale/tests/src/Functional/LocaleUpdateDevelopmentReleaseTest.php b/core/modules/locale/tests/src/Functional/LocaleUpdateDevelopmentReleaseTest.php
index 0d443d40df..d2838f5cf7 100644
--- a/core/modules/locale/tests/src/Functional/LocaleUpdateDevelopmentReleaseTest.php
+++ b/core/modules/locale/tests/src/Functional/LocaleUpdateDevelopmentReleaseTest.php
@@ -18,6 +18,9 @@ class LocaleUpdateDevelopmentReleaseTest extends BrowserTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     \Drupal::moduleHandler()->loadInclude('locale', 'inc', 'locale.compare');
diff --git a/core/modules/locale/tests/src/Kernel/LocaleStringTest.php b/core/modules/locale/tests/src/Kernel/LocaleStringTest.php
index 85cfd2bfde..391ad49cf8 100644
--- a/core/modules/locale/tests/src/Kernel/LocaleStringTest.php
+++ b/core/modules/locale/tests/src/Kernel/LocaleStringTest.php
@@ -19,7 +19,7 @@ class LocaleStringTest extends KernelTestBase {
   protected static $modules = [
     'language',
     'locale',
-   ];
+  ];
 
   /**
    * The locale storage.
diff --git a/core/modules/locale/tests/src/Unit/LocaleLookupTest.php b/core/modules/locale/tests/src/Unit/LocaleLookupTest.php
index de1409d523..3421de8363 100644
--- a/core/modules/locale/tests/src/Unit/LocaleLookupTest.php
+++ b/core/modules/locale/tests/src/Unit/LocaleLookupTest.php
@@ -77,7 +77,7 @@ protected function setUp(): void {
     $this->user = $this->createMock('Drupal\Core\Session\AccountInterface');
     $this->user->expects($this->any())
       ->method('getRoles')
-      ->will($this->returnValue(['anonymous']));
+      ->willReturn(['anonymous']);
 
     $this->configFactory = $this->getConfigFactoryStub(['locale.settings' => ['cache_strings' => FALSE]]);
 
@@ -112,7 +112,7 @@ public function testResolveCacheMissWithoutFallback() {
     $this->storage->expects($this->once())
       ->method('findTranslation')
       ->with($this->equalTo($args))
-      ->will($this->returnValue($result));
+      ->willReturn($result);
 
     $locale_lookup = $this->getMockBuilder('Drupal\locale\LocaleLookup')
       ->setConstructorArgs(['en', 'irrelevant', $this->storage, $this->cache, $this->lock, $this->configFactory, $this->languageManager, $this->requestStack])
@@ -229,7 +229,7 @@ public function testResolveCacheMissWithPersist() {
     $this->storage->expects($this->once())
       ->method('findTranslation')
       ->with($this->equalTo($args))
-      ->will($this->returnValue($result));
+      ->willReturn($result);
 
     $this->configFactory = $this->getConfigFactoryStub(['locale.settings' => ['cache_strings' => TRUE]]);
     $locale_lookup = $this->getMockBuilder('Drupal\locale\LocaleLookup')
@@ -254,10 +254,10 @@ public function testResolveCacheMissNoTranslation() {
       ->will($this->returnSelf());
     $this->storage->expects($this->once())
       ->method('findTranslation')
-      ->will($this->returnValue(NULL));
+      ->willReturn(NULL);
     $this->storage->expects($this->once())
       ->method('createString')
-      ->will($this->returnValue($string));
+      ->willReturn($string);
 
     $request = Request::create('/test');
     $this->requestStack->push($request);
@@ -349,7 +349,7 @@ public function testGetCid(array $roles, $expected) {
     $this->user = $this->createMock('Drupal\Core\Session\AccountInterface');
     $this->user->expects($this->any())
       ->method('getRoles')
-      ->will($this->returnValue($roles));
+      ->willReturn($roles);
 
     $container = new ContainerBuilder();
     $container->set('current_user', $this->user);
diff --git a/core/modules/media/config/schema/media.schema.yml b/core/modules/media/config/schema/media.schema.yml
index 08bf800f59..b5322c9ccf 100644
--- a/core/modules/media/config/schema/media.schema.yml
+++ b/core/modules/media/config/schema/media.schema.yml
@@ -59,6 +59,13 @@ field.formatter.settings.oembed:
     max_height:
       type: integer
       label: 'Maximum height'
+    loading:
+      type: mapping
+      label: 'oEmbed loading settings'
+      mapping:
+        attribute:
+          type: string
+          label: 'Loading attribute'
 
 field.widget.settings.oembed_textfield:
   type: field.widget.settings.string_textfield
diff --git a/core/modules/media/media.module b/core/modules/media/media.module
index 30b219e579..83884fe45f 100644
--- a/core/modules/media/media.module
+++ b/core/modules/media/media.module
@@ -7,6 +7,7 @@
 
 use Drupal\Component\Plugin\DerivativeInspectionInterface;
 use Drupal\Core\Access\AccessResult;
+use Drupal\Core\Entity\Display\EntityViewDisplayInterface;
 use Drupal\Core\Entity\EntityInterface;
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\Render\Element;
@@ -16,6 +17,7 @@
 use Drupal\Core\Template\Attribute;
 use Drupal\Core\Url;
 use Drupal\field\FieldConfigInterface;
+use Drupal\media\MediaConfigUpdater;
 use Drupal\media\Plugin\media\Source\OEmbedInterface;
 use Drupal\views\ViewExecutable;
 
@@ -369,6 +371,15 @@ function media_entity_type_alter(array &$entity_types) {
   }
 }
 
+/**
+ * Implements hook_ENTITY_TYPE_presave() for entity_view_display.
+ */
+function media_entity_view_display_presave(EntityViewDisplayInterface $view_display): void {
+  $config_updater = \Drupal::classResolver(MediaConfigUpdater::class);
+  assert($config_updater instanceof MediaConfigUpdater);
+  $config_updater->processOembedEagerLoadField($view_display);
+}
+
 /**
  * Implements hook_form_FORM_ID_alter().
  */
diff --git a/core/modules/media/media.post_update.php b/core/modules/media/media.post_update.php
index 04fbc9c839..12b5709b87 100644
--- a/core/modules/media/media.post_update.php
+++ b/core/modules/media/media.post_update.php
@@ -5,6 +5,10 @@
  * Post update functions for Media.
  */
 
+use Drupal\Core\Config\Entity\ConfigEntityUpdater;
+use Drupal\Core\Entity\Display\EntityViewDisplayInterface;
+use Drupal\media\MediaConfigUpdater;
+
 /**
  * Implements hook_removed_post_updates().
  */
@@ -17,3 +21,15 @@ function media_removed_post_updates() {
     'media_post_update_modify_base_field_author_override' => '10.0.0',
   ];
 }
+
+/**
+ * Add the oEmbed loading attribute setting to field formatter instances.
+ */
+function media_post_update_oembed_loading_attribute(array &$sandbox = NULL): void {
+  $media_config_updater = \Drupal::classResolver(MediaConfigUpdater::class);
+  assert($media_config_updater instanceof MediaConfigUpdater);
+  $media_config_updater->setDeprecationsEnabled(TRUE);
+  \Drupal::classResolver(ConfigEntityUpdater::class)->update($sandbox, 'entity_view_display', function (EntityViewDisplayInterface $view_display) use ($media_config_updater): bool {
+    return $media_config_updater->processOembedEagerLoadField($view_display);
+  });
+}
diff --git a/core/modules/media/src/MediaConfigUpdater.php b/core/modules/media/src/MediaConfigUpdater.php
new file mode 100644
index 0000000000..c78bc94fb1
--- /dev/null
+++ b/core/modules/media/src/MediaConfigUpdater.php
@@ -0,0 +1,72 @@
+<?php
+
+namespace Drupal\media;
+
+use Drupal\Core\Entity\Display\EntityViewDisplayInterface;
+
+/**
+ * Provides a BC layer for modules providing old configurations.
+ *
+ * @internal
+ *   This class is only meant to fix outdated media configuration and its
+ *   methods should not be invoked directly. It will be removed once all the
+ *   associated updates have been removed.
+ */
+class MediaConfigUpdater {
+
+  /**
+   * Flag determining whether deprecations should be triggered.
+   *
+   * @var bool
+   */
+  private $deprecationsEnabled = FALSE;
+
+  /**
+   * Stores which deprecations were triggered.
+   *
+   * @var bool
+   */
+  private $triggeredDeprecations = [];
+
+  /**
+   * Sets the deprecations enabling status.
+   *
+   * @param bool $enabled
+   *   Whether deprecations should be enabled.
+   */
+  public function setDeprecationsEnabled(bool $enabled): void {
+    $this->deprecationsEnabled = $enabled;
+  }
+
+  /**
+   * Processes oembed type fields.
+   *
+   * @param \Drupal\Core\Entity\Display\EntityViewDisplayInterface $view_display
+   *   The view display.
+   *
+   * @return bool
+   *   Whether the display was updated.
+   */
+  public function processOembedEagerLoadField(EntityViewDisplayInterface $view_display): bool {
+    $changed = FALSE;
+
+    foreach ($view_display->getComponents() as $field => $component) {
+      if (array_key_exists('type', $component)
+        && ($component['type'] === 'oembed')
+        && !array_key_exists('loading', $component['settings'])) {
+        $component['settings']['loading']['attribute'] = 'eager';
+        $view_display->setComponent($field, $component);
+        $changed = TRUE;
+      }
+    }
+
+    $deprecations_triggered = &$this->triggeredDeprecations['3212351'][$view_display->id()];
+    if ($this->deprecationsEnabled && $changed && !$deprecations_triggered) {
+      $deprecations_triggered = TRUE;
+      @trigger_error(sprintf('The oEmbed loading attribute update for view display "%s" is deprecated in drupal:10.1.0 and is removed from drupal:11.0.0. Profile, module and theme provided configuration should be updated to accommodate the changes described at https://www.drupal.org/node/3275103.', $view_display->id()), E_USER_DEPRECATED);
+    }
+
+    return $changed;
+  }
+
+}
diff --git a/core/modules/media/src/MediaTypeForm.php b/core/modules/media/src/MediaTypeForm.php
index ded58b036c..64adc89cfb 100644
--- a/core/modules/media/src/MediaTypeForm.php
+++ b/core/modules/media/src/MediaTypeForm.php
@@ -182,6 +182,8 @@ public function form(array $form, FormStateInterface $form_state) {
         }
       }
 
+      natcasesort($options);
+
       $field_map = $this->entity->getFieldMap();
       foreach ($source->getMetadataAttributes() as $metadata_attribute_name => $metadata_attribute_label) {
         $form['source_dependent']['field_map'][$metadata_attribute_name] = [
diff --git a/core/modules/media/src/Plugin/Field/FieldFormatter/OEmbedFormatter.php b/core/modules/media/src/Plugin/Field/FieldFormatter/OEmbedFormatter.php
index c006231447..695754b5bf 100644
--- a/core/modules/media/src/Plugin/Field/FieldFormatter/OEmbedFormatter.php
+++ b/core/modules/media/src/Plugin/Field/FieldFormatter/OEmbedFormatter.php
@@ -150,6 +150,9 @@ public static function defaultSettings() {
     return [
       'max_width' => 0,
       'max_height' => 0,
+      'loading' => [
+        'attribute' => 'lazy',
+      ],
     ] + parent::defaultSettings();
   }
 
@@ -191,6 +194,9 @@ public function viewElements(FieldItemListInterface $items, $langcode) {
           '#uri' => $resource->getUrl()->toString(),
           '#width' => $max_width ?: $resource->getWidth(),
           '#height' => $max_height ?: $resource->getHeight(),
+          '#attributes' => [
+            'loading' => $this->getSetting('loading')['attribute'],
+          ],
         ];
       }
       else {
@@ -221,6 +227,7 @@ public function viewElements(FieldItemListInterface $items, $langcode) {
             'width' => $max_width ?: $resource->getWidth(),
             'height' => $max_height ?: $resource->getHeight(),
             'class' => ['media-oembed-content'],
+            'loading' => $this->getSetting('loading')['attribute'],
           ],
           '#attached' => [
             'library' => [
@@ -248,7 +255,7 @@ public function viewElements(FieldItemListInterface $items, $langcode) {
    * {@inheritdoc}
    */
   public function settingsForm(array $form, FormStateInterface $form_state) {
-    return parent::settingsForm($form, $form_state) + [
+    $form = parent::settingsForm($form, $form_state) + [
       'max_width' => [
         '#type' => 'number',
         '#title' => $this->t('Maximum width'),
@@ -267,7 +274,28 @@ public function settingsForm(array $form, FormStateInterface $form_state) {
         '#field_suffix' => $this->t('pixels'),
         '#min' => 0,
       ],
+      'loading' => [
+        '#type' => 'details',
+        '#title' => $this->t('oEmbed loading'),
+        '#description' => $this->t('Lazy render oEmbed with native loading attribute (<em>loading="lazy"</em>). This improves performance by allowing browsers to lazily load assets.'),
+        'attribute' => [
+          '#title' => $this->t('oEmbed loading attribute'),
+          '#type' => 'radios',
+          '#default_value' => $this->getSetting('loading')['attribute'],
+          '#options' => [
+            'lazy' => $this->t('Lazy (<em>loading="lazy"</em>)'),
+            'eager' => $this->t('Eager (<em>loading="eager"</em>)'),
+          ],
+          '#description' => $this->t('Select the loading attribute for oEmbed. <a href=":link">Learn more about the loading attribute for oEmbed.</a>', [
+            ':link' => 'https://html.spec.whatwg.org/multipage/urls-and-fetching.html#lazy-loading-attributes',
+          ]),
+        ],
+      ],
     ];
+    $form['loading']['attribute']['lazy']['#description'] = $this->t('Delays loading the resource until that section of the page is visible in the browser. When in doubt, lazy loading is recommended.');
+    $form['loading']['attribute']['eager']['#description'] = $this->t('Force browsers to download a resource as soon as possible. This is the browser default for legacy reasons. Only use this option when the resource is always expected to render.');
+
+    return $form;
   }
 
   /**
@@ -291,6 +319,10 @@ public function settingsSummary() {
         '%max_height' => $this->getSetting('max_height'),
       ]);
     }
+    $summary[] = $this->t('Loading attribute: @attribute', [
+      '@attribute' => $this->getSetting('loading')['attribute'],
+    ]);
+
     return $summary;
   }
 
diff --git a/core/modules/media/src/Plugin/media/Source/OEmbed.php b/core/modules/media/src/Plugin/media/Source/OEmbed.php
index 825141814a..14f677acf0 100644
--- a/core/modules/media/src/Plugin/media/Source/OEmbed.php
+++ b/core/modules/media/src/Plugin/media/Source/OEmbed.php
@@ -49,8 +49,8 @@
  * function example_media_source_info_alter(array &$sources) {
  *   $sources['artwork'] = [
  *     'id' => 'artwork',
- *     'label' => t('Artwork'),
- *     'description' => t('Use artwork from Flickr and DeviantArt.'),
+ *     'label' => $this->t('Artwork'),
+ *     'description' => $this->t('Use artwork from Flickr and DeviantArt.'),
  *     'allowed_field_types' => ['string'],
  *     'default_thumbnail_filename' => 'no-thumbnail.png',
  *     'providers' => ['Deviantart.com', 'Flickr'],
@@ -442,7 +442,9 @@ protected function getLocalThumbnailUri(Resource $resource) {
       }
     }
     catch (TransferException $e) {
-      $this->logger->warning($e->getMessage());
+      $this->logger->warning('Failed to download remote thumbnail file due to "%error".', [
+        '%error' => $e->getMessage(),
+      ]);
     }
     catch (FileException $e) {
       $this->logger->warning('Could not download remote thumbnail from {url}.', [
diff --git a/core/modules/media/src/Plugin/media/Source/OEmbedDeriver.php b/core/modules/media/src/Plugin/media/Source/OEmbedDeriver.php
index 8da3265f5b..bdbc535561 100644
--- a/core/modules/media/src/Plugin/media/Source/OEmbedDeriver.php
+++ b/core/modules/media/src/Plugin/media/Source/OEmbedDeriver.php
@@ -3,6 +3,7 @@
 namespace Drupal\media\Plugin\media\Source;
 
 use Drupal\Component\Plugin\Derivative\DeriverBase;
+use Drupal\Core\StringTranslation\StringTranslationTrait;
 
 /**
  * Derives media source plugin definitions for supported oEmbed providers.
@@ -13,6 +14,8 @@
  */
 class OEmbedDeriver extends DeriverBase {
 
+  use StringTranslationTrait;
+
   /**
    * {@inheritdoc}
    */
@@ -20,8 +23,8 @@ public function getDerivativeDefinitions($base_plugin_definition) {
     $this->derivatives = [
       'video' => [
         'id' => 'video',
-        'label' => t('Remote video'),
-        'description' => t('Use remote video URL for reusable media.'),
+        'label' => $this->t('Remote video'),
+        'description' => $this->t('Use remote video URL for reusable media.'),
         'providers' => ['YouTube', 'Vimeo'],
         'default_thumbnail_filename' => 'video.png',
       ] + $base_plugin_definition,
diff --git a/core/modules/media/tests/fixtures/update/media-oembed-iframe.php b/core/modules/media/tests/fixtures/update/media-oembed-iframe.php
new file mode 100644
index 0000000000..e8a0956e67
--- /dev/null
+++ b/core/modules/media/tests/fixtures/update/media-oembed-iframe.php
@@ -0,0 +1,83 @@
+<?php
+
+/**
+ * @file
+ * Test oembed update by adding an oembed field display without config.
+ */
+
+use Drupal\Core\Database\Database;
+
+$connection = Database::getConnection();
+
+// Add a remote video media type.
+$media_type = [];
+$media_type['langcode'] = 'en';
+$media_type['status'] = TRUE;
+$media_type['dependencies'] = [];
+$media_type['id'] = 'remote_video';
+$media_type['uuid'] = 'c86d3b5c-b788-49ab-a06c-257895e47731';
+$media_type['label'] = 'Remote video';
+$media_type['description'] = 'A remotely hosted video from YouTube or Vimeo.';
+$media_type['source'] = 'oembed:video';
+$media_type['queue_thumbnail_downloads'] = FALSE;
+$media_type['new_revision'] = TRUE;
+$media_type['source_configuration'] = [
+  'source_field' => 'field_media_oembed_video',
+  'thumbnails_directory' => 'public://oembed_thumbnails/[date:custom:Y-m]',
+  'providers' => [
+    'YouTube',
+    'Vimeo',
+  ],
+];
+$media_type['field_map'] = [
+  'title' => 'name',
+];
+$connection->insert('config')
+  ->fields([
+    'collection',
+    'name',
+    'data',
+  ])
+  ->values([
+    'collection' => '',
+    'name' => 'media.type.remote_video',
+    'data' => serialize($media_type),
+  ])
+  ->execute();
+
+
+// Add a remote video view display.
+$display = [];
+$display['langcode'] = 'en';
+$display['status'] = TRUE;
+$display['dependencies']['config'][] = 'media.type.remote_video';
+$display['dependencies']['module'][] = 'media';
+$display['id'] = 'media.remote_video.default';
+$display['uuid'] = 'ff13f7fb-d493-4d45-a56d-31a1a0762df7';
+$display['targetEntityType'] = 'media';
+$display['bundle'] = 'remote_video';
+$display['mode'] = 'default';
+$display['content']['field_media_oembed_video'] = [
+  'type' => 'oembed',
+  'label' => 'hidden',
+  'settings' => [
+    'max_width' => 0,
+    'max_height' => 0,
+  ],
+  'third_party_settings' => [],
+  'weight' => 0,
+  'region' => 'content',
+];
+
+$connection->insert('config')
+  ->fields([
+    'collection',
+    'name',
+    'data',
+  ])
+  ->values([
+    'collection' => '',
+    'name' => 'core.entity_view_display.media.remote_video.default',
+    'data' => serialize($display),
+  ])
+  ->execute();
diff --git a/core/modules/media/tests/fixtures/update/media.php b/core/modules/media/tests/fixtures/update/media.php
new file mode 100644
index 0000000000..df61cc34e5
--- /dev/null
+++ b/core/modules/media/tests/fixtures/update/media.php
@@ -0,0 +1,52 @@
+<?php
+// phpcs:ignoreFile
+
+use Drupal\Core\Database\Database;
+
+$connection = Database::getConnection();
+
+// Set the schema version.
+$connection->merge('key_value')
+  ->fields([
+    'value' => 'i:8700;',
+    'name' => 'media',
+    'collection' => 'system.schema',
+  ])
+  ->condition('collection', 'system.schema')
+  ->condition('name', 'media')
+  ->execute();
+
+// Update core.extension.
+$extensions = $connection->select('config')
+  ->fields('config', ['data'])
+  ->condition('collection', '')
+  ->condition('name', 'core.extension')
+  ->execute()
+  ->fetchField();
+$extensions = unserialize($extensions);
+$extensions['module']['media'] = 0;
+$connection->update('config')
+  ->fields(['data' => serialize($extensions)])
+  ->condition('collection', '')
+  ->condition('name', 'core.extension')
+  ->execute();
+
+// Add all media_removed_post_updates() as existing updates.
+require_once __DIR__ . '/../../../../media/media.post_update.php';
+$existing_updates = $connection->select('key_value')
+  ->fields('key_value', ['value'])
+  ->condition('collection', 'post_update')
+  ->condition('name', 'existing_updates')
+  ->execute()
+  ->fetchField();
+$existing_updates = unserialize($existing_updates);
+$existing_updates = array_merge(
+  $existing_updates,
+  array_keys(media_removed_post_updates())
+);
+$connection->update('key_value')
+  ->fields(['value' => serialize($existing_updates)])
+  ->condition('collection', 'post_update')
+  ->condition('name', 'existing_updates')
+  ->execute();
+
diff --git a/core/modules/media/tests/src/Functional/FieldFormatter/OEmbedFormatterTest.php b/core/modules/media/tests/src/Functional/FieldFormatter/OEmbedFormatterTest.php
index 53f4b40e67..8a382397d6 100644
--- a/core/modules/media/tests/src/Functional/FieldFormatter/OEmbedFormatterTest.php
+++ b/core/modules/media/tests/src/Functional/FieldFormatter/OEmbedFormatterTest.php
@@ -66,8 +66,10 @@ public function providerRender() {
             'width' => '480',
             'height' => '360',
             'title' => 'Drupal Rap Video - Schipulcon09',
+            'loading' => 'lazy',
           ],
         ],
+        'self_closing' => TRUE,
       ],
       'Vimeo video, resized' => [
         'https://vimeo.com/7073899',
@@ -79,8 +81,10 @@ public function providerRender() {
             'width' => '100',
             'height' => '100',
             'title' => 'Drupal Rap Video - Schipulcon09',
+            'loading' => 'lazy',
           ],
         ],
+        'self_closing' => TRUE,
       ],
       'Vimeo video, no title' => [
         'https://vimeo.com/7073899',
@@ -92,8 +96,10 @@ public function providerRender() {
             'width' => '480',
             'height' => '360',
             'title' => NULL,
+            'loading' => 'lazy',
           ],
         ],
+        'self_closing' => TRUE,
       ],
       'tweet' => [
         'https://twitter.com/drupaldevdays/status/935643039741202432',
@@ -102,14 +108,17 @@ public function providerRender() {
           // The tweet resource does not specify a height, so the formatter
           // should default to the configured maximum height.
           'max_height' => 360,
+          'loading' => ['attribute' => 'eager'],
         ],
         [
           'iframe' => [
             'src' => '/media/oembed?url=https%3A//twitter.com/drupaldevdays/status/935643039741202432',
             'width' => '550',
             'height' => '360',
+            'loading' => 'eager',
           ],
         ],
+        'self_closing' => TRUE,
       ],
       'Flickr photo' => [
         'https://www.flickr.com/photos/amazeelabs/26497866357',
@@ -120,8 +129,10 @@ public function providerRender() {
             'src' => '/core/misc/druplicon.png',
             'width' => '88',
             'height' => '100',
+            'loading' => 'lazy',
           ],
         ],
+        'self_closing' => FALSE,
       ],
       'Flickr photo (no dimensions)' => [
         'https://www.flickr.com/photos/amazeelabs/26497866357',
@@ -130,8 +141,10 @@ public function providerRender() {
         [
           'img' => [
             'src' => '/core/misc/druplicon.png',
+            'loading' => 'lazy',
           ],
         ],
+        'self_closing' => FALSE,
       ],
     ];
   }
@@ -166,10 +179,12 @@ public function testDisplayConfiguration() {
    *   An array of arrays. Each key is a CSS selector targeting an element in
    *   the rendered output, and each value is an array of attributes, keyed by
    *   name, that the element is expected to have.
+   * @param bool $self_closing
+   *   Indicator if the HTML element is self closing i.e. <p/> vs <p></p>.
    *
    * @dataProvider providerRender
    */
-  public function testRender($url, $resource_url, array $formatter_settings, array $selectors) {
+  public function testRender($url, $resource_url, array $formatter_settings, array $selectors, bool $self_closing) {
     $account = $this->drupalCreateUser(['view media']);
     $this->drupalLogin($account);
 
@@ -206,6 +221,9 @@ public function testRender($url, $resource_url, array $formatter_settings, array
     $assert->statusCodeEquals(200);
     foreach ($selectors as $selector => $attributes) {
       $element = $assert->elementExists('css', $selector);
+      if ($self_closing) {
+        self::assertStringContainsString("</$selector", $element->getParent()->getHtml());
+      }
       foreach ($attributes as $attribute => $value) {
         if (isset($value)) {
           $this->assertStringContainsString($value, $element->getAttribute($attribute));
diff --git a/core/modules/media/tests/src/Functional/FieldFormatter/OembedUpdateTest.php b/core/modules/media/tests/src/Functional/FieldFormatter/OembedUpdateTest.php
new file mode 100644
index 0000000000..300a8da24c
--- /dev/null
+++ b/core/modules/media/tests/src/Functional/FieldFormatter/OembedUpdateTest.php
@@ -0,0 +1,60 @@
+<?php
+
+namespace Drupal\Tests\media\Functional\FieldFormatter;
+
+use Drupal\Core\Entity\Entity\EntityViewDisplay;
+use Drupal\FunctionalTests\Update\UpdatePathTestBase;
+
+/**
+ * Tests eager-load upgrade path.
+ *
+ * @group media
+ * @group legacy
+ */
+class OembedUpdateTest extends UpdatePathTestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp(): void {
+    parent::setUp();
+    // Because the test manually installs media module, the entity type config
+    // must be manually installed similar to kernel tests.
+    $entity_type_manager = \Drupal::entityTypeManager();
+    $media = $entity_type_manager->getDefinition('media');
+    \Drupal::service('entity_type.listener')->onEntityTypeCreate($media);
+    $media_type = $entity_type_manager->getDefinition('media_type');
+    \Drupal::service('entity_type.listener')->onEntityTypeCreate($media_type);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setDatabaseDumpFiles(): void {
+    $this->databaseDumpFiles = [
+      __DIR__ . '/../../../../../system/tests/fixtures/update/drupal-9.4.0.filled.standard.php.gz',
+      __DIR__ . '/../../../fixtures/update/media.php',
+      __DIR__ . '/../../../fixtures/update/media-oembed-iframe.php',
+    ];
+  }
+
+  /**
+   * Test eager-load setting upgrade path.
+   *
+   * @see media_post_update_oembed_loading_attribute
+   *
+   * @legacy
+   */
+  public function testUpdate(): void {
+    $this->expectDeprecation('The oEmbed loading attribute update for view display "media.remote_video.default" is deprecated in drupal:10.1.0 and is removed from drupal:11.0.0. Profile, module and theme provided configuration should be updated to accommodate the changes described at https://www.drupal.org/node/3275103.');
+    $data = EntityViewDisplay::load('media.remote_video.default')->toArray();
+    $this->assertArrayNotHasKey('loading', $data['content']['field_media_oembed_video']['settings']);
+
+    $this->runUpdates();
+
+    $data = EntityViewDisplay::load('media.remote_video.default')->toArray();
+    $this->assertArrayHasKey('loading', $data['content']['field_media_oembed_video']['settings']);
+    $this->assertEquals('eager', $data['content']['field_media_oembed_video']['settings']['loading']['attribute']);
+  }
+
+}
diff --git a/core/modules/media/tests/src/Functional/ProviderRepositoryTest.php b/core/modules/media/tests/src/Functional/ProviderRepositoryTest.php
index 2e81efc6b7..d791a2f90e 100644
--- a/core/modules/media/tests/src/Functional/ProviderRepositoryTest.php
+++ b/core/modules/media/tests/src/Functional/ProviderRepositoryTest.php
@@ -4,6 +4,7 @@
 
 use Drupal\media\OEmbed\ProviderException;
 use GuzzleHttp\Psr7\Utils;
+use Prophecy\PhpUnit\ProphecyTrait;
 
 /**
  * Tests the oEmbed provider repository.
@@ -14,6 +15,8 @@
  */
 class ProviderRepositoryTest extends MediaFunctionalTestBase {
 
+  use ProphecyTrait;
+
   /**
    * {@inheritdoc}
    */
diff --git a/core/modules/media/tests/src/FunctionalJavascript/MediaTypeCreationTest.php b/core/modules/media/tests/src/FunctionalJavascript/MediaTypeCreationTest.php
index 3f1e26764e..f7fbdbd320 100644
--- a/core/modules/media/tests/src/FunctionalJavascript/MediaTypeCreationTest.php
+++ b/core/modules/media/tests/src/FunctionalJavascript/MediaTypeCreationTest.php
@@ -102,6 +102,13 @@ public function testMediaTypeCreationFormWithDefaultField() {
     $assert_session->fieldDisabled('Media source');
     $assert_session->pageTextContains('The media source cannot be changed after the media type is created.');
 
+    // Check that the field map options are sorted alphabetically.
+    $options = $this->xpath('//select[@name="field_map[attribute_1]"]/option');
+    $this->assertGreaterThanOrEqual(3, count($options));
+    $this->assertSame('- Skip field -', $options[0]->getText());
+    $this->assertSame('Name', $options[1]->getText());
+    $this->assertSame('Test source', $options[2]->getText());
+
     // Open up the media add form and verify that the source field is right
     // after the name, and before the vertical tabs.
     $this->drupalGet("/media/add/$mediaTypeMachineName");
diff --git a/core/modules/media/tests/src/Kernel/MediaEmbedFilterTranslationTest.php b/core/modules/media/tests/src/Kernel/MediaEmbedFilterTranslationTest.php
index 2031eefa94..ead63b80b8 100644
--- a/core/modules/media/tests/src/Kernel/MediaEmbedFilterTranslationTest.php
+++ b/core/modules/media/tests/src/Kernel/MediaEmbedFilterTranslationTest.php
@@ -33,10 +33,10 @@ protected function setUp(): void {
 
     $this->embeddedEntity->addTranslation('pt-br')
       ->set('field_media_image', [
-      'target_id' => $this->image->id(),
-      'alt' => 'pt-br alt',
-      'title' => 'pt-br title',
-    ])->save();
+        'target_id' => $this->image->id(),
+        'alt' => 'pt-br alt',
+        'title' => 'pt-br title',
+      ])->save();
   }
 
   /**
diff --git a/core/modules/media_library/src/Plugin/Field/FieldWidget/MediaLibraryWidget.php b/core/modules/media_library/src/Plugin/Field/FieldWidget/MediaLibraryWidget.php
index 39a10229e0..1766346a7d 100644
--- a/core/modules/media_library/src/Plugin/Field/FieldWidget/MediaLibraryWidget.php
+++ b/core/modules/media_library/src/Plugin/Field/FieldWidget/MediaLibraryWidget.php
@@ -18,6 +18,7 @@
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\Security\TrustedCallbackInterface;
 use Drupal\Core\Session\AccountInterface;
+use Drupal\Core\StringTranslation\TranslatableMarkup;
 use Drupal\Core\Url;
 use Drupal\field_ui\FieldUI;
 use Drupal\media\Entity\Media;
@@ -205,7 +206,7 @@ public function settingsForm(array $form, FormStateInterface $form_state) {
         'label' => ['#markup' => $label],
         'weight' => [
           '#type' => 'weight',
-          '#title' => t('Weight for @title', ['@title' => $label]),
+          '#title' => $this->t('Weight for @title', ['@title' => $label]),
           '#title_display' => 'invisible',
           '#default_value' => $weight,
           '#attributes' => ['class' => ['weight']],
@@ -267,7 +268,7 @@ public function settingsSummary() {
       foreach ($media_types as $media_type) {
         $media_type_labels[] = $media_type->label();
       }
-      $summary[] = t('Tab order: @order', ['@order' => implode(', ', $media_type_labels)]);
+      $summary[] = $this->t('Tab order: @order', ['@order' => implode(', ', $media_type_labels)]);
     }
     return $summary;
   }
@@ -697,7 +698,7 @@ public static function updateWidget(array $form, FormStateInterface $form_state)
 
     // Announce the updated content to screen readers.
     if ($is_remove_button) {
-      $announcement = t('@label has been removed.', [
+      $announcement = new TranslatableMarkup('@label has been removed.', [
         '@label' => Media::load($field_state['removed_item_id'])->label(),
       ]);
     }
@@ -849,7 +850,7 @@ public static function validateItems(array $form, FormStateInterface $form_state
     }, $element['#target_bundles']);
     foreach ($media as $media_item) {
       if ($element['#target_bundles'] && !in_array($media_item->bundle(), $element['#target_bundles'], TRUE)) {
-        $form_state->setError($element, t('The media item "@label" is not of an accepted type. Allowed types: @types', [
+        $form_state->setError($element, new TranslatableMarkup('The media item "@label" is not of an accepted type. Allowed types: @types', [
           '@label' => $media_item->label(),
           '@types' => implode(', ', $bundle_labels),
         ]));
@@ -998,7 +999,7 @@ public static function validateRequired(array $element, FormStateInterface $form
     // the Form API's default validation would also catch this, the validation
     // error message is too vague, so a more precise one is provided here.
     if (count($field_state['items']) === 0) {
-      $form_state->setError($element, t('@name field is required.', ['@name' => $element['#title']]));
+      $form_state->setError($element, new TranslatableMarkup('@name field is required.', ['@name' => $element['#title']]));
     }
   }
 
diff --git a/core/modules/media_library/tests/modules/media_library_test/config/install/core.entity_view_display.media.type_five.default.yml b/core/modules/media_library/tests/modules/media_library_test/config/install/core.entity_view_display.media.type_five.default.yml
index 4f61361ba1..aa1f6f3c8f 100644
--- a/core/modules/media_library/tests/modules/media_library_test/config/install/core.entity_view_display.media.type_five.default.yml
+++ b/core/modules/media_library/tests/modules/media_library_test/config/install/core.entity_view_display.media.type_five.default.yml
@@ -27,6 +27,8 @@ content:
     settings:
       max_width: 0
       max_height: 0
+      loading:
+        attribute: lazy
     third_party_settings: {  }
     weight: 6
     region: content
diff --git a/core/modules/media_library/tests/modules/media_library_test/config/install/core.entity_view_display.media.type_five.media_library.yml b/core/modules/media_library/tests/modules/media_library_test/config/install/core.entity_view_display.media.type_five.media_library.yml
new file mode 100644
index 0000000000..d0d799df6e
--- /dev/null
+++ b/core/modules/media_library/tests/modules/media_library_test/config/install/core.entity_view_display.media.type_five.media_library.yml
@@ -0,0 +1,28 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - field.field.media.type_five.field_media_test_oembed_video
+    - image.style.thumbnail
+    - media.type.type_five
+  module:
+    - media
+id: media.type_five.media_library
+targetEntityType: media
+bundle: type_five
+mode: media_library
+content:
+  thumbnail:
+    type: image
+    weight: 5
+    label: hidden
+    settings:
+      image_style: thumbnail
+      image_link: ''
+    region: content
+    third_party_settings: {  }
+hidden:
+  created: true
+  field_media_test_oembed_video: true
+  name: true
+  uid: true
diff --git a/core/modules/media_library/tests/src/FunctionalJavascript/WidgetUploadTest.php b/core/modules/media_library/tests/src/FunctionalJavascript/WidgetUploadTest.php
index bcb20e93c2..6bd9829ec2 100644
--- a/core/modules/media_library/tests/src/FunctionalJavascript/WidgetUploadTest.php
+++ b/core/modules/media_library/tests/src/FunctionalJavascript/WidgetUploadTest.php
@@ -141,8 +141,10 @@ public function testWidgetUpload() {
     $this->waitForText($png_image->filename);
 
     // Remove the item.
+    $assert_session->elementTextContains('css', '.field--name-field-twin-media', $png_image->filename);
     $assert_session->elementExists('css', '.field--name-field-twin-media')->pressButton('Remove');
-    $this->waitForNoText($png_image->filename);
+    $this->waitForElementTextContains('#drupal-live-announce', $png_image->filename . ' has been removed');
+    $assert_session->elementTextNotContains('css', '.field--name-field-twin-media', $png_image->filename);
 
     $this->openMediaLibraryForField('field_twin_media');
     $this->switchToMediaType('Three');
@@ -478,8 +480,10 @@ public function testWidgetUploadAdvancedUi() {
     $this->waitForText($png_image->filename);
 
     // Remove the item.
+    $assert_session->elementTextContains('css', '.field--name-field-twin-media', $png_image->filename);
     $assert_session->elementExists('css', '.field--name-field-twin-media')->pressButton('Remove');
-    $this->waitForNoText($png_image->filename);
+    $this->waitForElementTextContains('#drupal-live-announce', $png_image->filename . ' has been removed');
+    $assert_session->elementTextNotContains('css', '.field--name-field-twin-media', $png_image->filename);
 
     $this->openMediaLibraryForField('field_twin_media');
     $this->switchToMediaType('Three');
diff --git a/core/modules/media_library/tests/src/FunctionalJavascript/WidgetWithoutTypesTest.php b/core/modules/media_library/tests/src/FunctionalJavascript/WidgetWithoutTypesTest.php
index 616455db03..dc301d5f49 100644
--- a/core/modules/media_library/tests/src/FunctionalJavascript/WidgetWithoutTypesTest.php
+++ b/core/modules/media_library/tests/src/FunctionalJavascript/WidgetWithoutTypesTest.php
@@ -100,8 +100,8 @@ public function testWidgetWithoutMediaTypes() {
     $field_empty_types_message = 'There are no allowed media types configured for this field. <a href="' . $field_empty_types_url->toString() . '">Edit the field settings</a> to select the allowed media types.';
 
     $field_null_types_url = new Url('entity.field_config.node_field_edit_form', [
-        'field_config' => 'node.basic_page.field_null_types_media',
-      ] + $route_bundle_params);
+      'field_config' => 'node.basic_page.field_null_types_media',
+    ] + $route_bundle_params);
     $field_null_types_message = 'There are no allowed media types configured for this field. <a href="' . $field_null_types_url->toString() . '">Edit the field settings</a> to select the allowed media types.';
 
     // Visit a node create page.
diff --git a/core/modules/menu_link_content/src/Plugin/migrate/source/MenuLink.php b/core/modules/menu_link_content/src/Plugin/migrate/source/MenuLink.php
index f4309c131c..b998b6eb1e 100644
--- a/core/modules/menu_link_content/src/Plugin/migrate/source/MenuLink.php
+++ b/core/modules/menu_link_content/src/Plugin/migrate/source/MenuLink.php
@@ -73,31 +73,31 @@ public function query() {
    */
   public function fields() {
     $fields = [
-      'menu_name' => t("The menu name. All links with the same menu name (such as 'navigation') are part of the same menu."),
-      'mlid' => t('The menu link ID (mlid) is the integer primary key.'),
-      'plid' => t('The parent link ID (plid) is the mlid of the link above in the hierarchy, or zero if the link is at the top level in its menu.'),
-      'link_path' => t('The Drupal path or external path this link points to.'),
-      'router_path' => t('For links corresponding to a Drupal path (external = 0), this connects the link to a {menu_router}.path for joins.'),
-      'link_title' => t('The text displayed for the link, which may be modified by a title callback stored in {menu_router}.'),
-      'options' => t('A serialized array of options to set on the URL, such as a query string or HTML attributes.'),
-      'module' => t('The name of the module that generated this link.'),
-      'hidden' => t('A flag for whether the link should be rendered in menus. (1 = a disabled menu link that may be shown on admin screens, -1 = a menu callback, 0 = a normal, visible link)'),
-      'external' => t('A flag to indicate if the link points to a full URL starting with a protocol, like http:// (1 = external, 0 = internal).'),
-      'has_children' => t('Flag indicating whether any links have this link as a parent (1 = children exist, 0 = no children).'),
-      'expanded' => t('Flag for whether this link should be rendered as expanded in menus - expanded links always have their child links displayed, instead of only when the link is in the active trail (1 = expanded, 0 = not expanded)'),
-      'weight' => t('Link weight among links in the same menu at the same depth.'),
-      'depth' => t('The depth relative to the top level. A link with plid == 0 will have depth == 1.'),
-      'customized' => t('A flag to indicate that the user has manually created or edited the link (1 = customized, 0 = not customized).'),
-      'p1' => t('The first mlid in the materialized path. If N = depth, then pN must equal the mlid. If depth > 1 then p(N-1) must equal the plid. All pX where X > depth must equal zero. The columns p1 .. p9 are also called the parents.'),
-      'p2' => t('The second mlid in the materialized path. See p1.'),
-      'p3' => t('The third mlid in the materialized path. See p1.'),
-      'p4' => t('The fourth mlid in the materialized path. See p1.'),
-      'p5' => t('The fifth mlid in the materialized path. See p1.'),
-      'p6' => t('The sixth mlid in the materialized path. See p1.'),
-      'p7' => t('The seventh mlid in the materialized path. See p1.'),
-      'p8' => t('The eighth mlid in the materialized path. See p1.'),
-      'p9' => t('The ninth mlid in the materialized path. See p1.'),
-      'updated' => t('Flag that indicates that this link was generated during the update from Drupal 5.'),
+      'menu_name' => $this->t("The menu name. All links with the same menu name (such as 'navigation') are part of the same menu."),
+      'mlid' => $this->t('The menu link ID (mlid) is the integer primary key.'),
+      'plid' => $this->t('The parent link ID (plid) is the mlid of the link above in the hierarchy, or zero if the link is at the top level in its menu.'),
+      'link_path' => $this->t('The Drupal path or external path this link points to.'),
+      'router_path' => $this->t('For links corresponding to a Drupal path (external = 0), this connects the link to a {menu_router}.path for joins.'),
+      'link_title' => $this->t('The text displayed for the link, which may be modified by a title callback stored in {menu_router}.'),
+      'options' => $this->t('A serialized array of options to set on the URL, such as a query string or HTML attributes.'),
+      'module' => $this->t('The name of the module that generated this link.'),
+      'hidden' => $this->t('A flag for whether the link should be rendered in menus. (1 = a disabled menu link that may be shown on admin screens, -1 = a menu callback, 0 = a normal, visible link)'),
+      'external' => $this->t('A flag to indicate if the link points to a full URL starting with a protocol, like http:// (1 = external, 0 = internal).'),
+      'has_children' => $this->t('Flag indicating whether any links have this link as a parent (1 = children exist, 0 = no children).'),
+      'expanded' => $this->t('Flag for whether this link should be rendered as expanded in menus - expanded links always have their child links displayed, instead of only when the link is in the active trail (1 = expanded, 0 = not expanded)'),
+      'weight' => $this->t('Link weight among links in the same menu at the same depth.'),
+      'depth' => $this->t('The depth relative to the top level. A link with plid == 0 will have depth == 1.'),
+      'customized' => $this->t('A flag to indicate that the user has manually created or edited the link (1 = customized, 0 = not customized).'),
+      'p1' => $this->t('The first mlid in the materialized path. If N = depth, then pN must equal the mlid. If depth > 1 then p(N-1) must equal the plid. All pX where X > depth must equal zero. The columns p1 .. p9 are also called the parents.'),
+      'p2' => $this->t('The second mlid in the materialized path. See p1.'),
+      'p3' => $this->t('The third mlid in the materialized path. See p1.'),
+      'p4' => $this->t('The fourth mlid in the materialized path. See p1.'),
+      'p5' => $this->t('The fifth mlid in the materialized path. See p1.'),
+      'p6' => $this->t('The sixth mlid in the materialized path. See p1.'),
+      'p7' => $this->t('The seventh mlid in the materialized path. See p1.'),
+      'p8' => $this->t('The eighth mlid in the materialized path. See p1.'),
+      'p9' => $this->t('The ninth mlid in the materialized path. See p1.'),
+      'updated' => $this->t('Flag that indicates that this link was generated during the update from Drupal 5.'),
     ];
     $schema = $this->getDatabase()->schema();
     if ($schema->fieldExists('menu_links', 'language')) {
diff --git a/core/modules/menu_link_content/tests/src/Unit/MenuLinkContentEntityAccessTest.php b/core/modules/menu_link_content/tests/src/Unit/MenuLinkContentEntityAccessTest.php
index ea39e96b87..6751fcf296 100644
--- a/core/modules/menu_link_content/tests/src/Unit/MenuLinkContentEntityAccessTest.php
+++ b/core/modules/menu_link_content/tests/src/Unit/MenuLinkContentEntityAccessTest.php
@@ -36,7 +36,7 @@ public function testUnrecognizedOperation() {
     $language = $this->createMock(LanguageInterface::class);
     $language->expects($this->any())
       ->method('getId')
-      ->will($this->returnValue('de'));
+      ->willReturn('de');
 
     $entity = $this->createMock(ContentEntityInterface::class);
     $entity->expects($this->any())
diff --git a/core/modules/menu_ui/config/schema/menu_ui.schema.yml b/core/modules/menu_ui/config/schema/menu_ui.schema.yml
index 69af435fa1..4688023901 100644
--- a/core/modules/menu_ui/config/schema/menu_ui.schema.yml
+++ b/core/modules/menu_ui/config/schema/menu_ui.schema.yml
@@ -16,8 +16,8 @@ node.type.*.third_party.menu_ui:
       type: sequence
       label: 'Available menus'
       sequence:
-       type: string
-       label: 'Menu machine name'
+        type: string
+        label: 'Menu machine name'
     parent:
       type: string
       label: 'Parent'
diff --git a/core/modules/menu_ui/tests/src/Functional/MenuUiLanguageTest.php b/core/modules/menu_ui/tests/src/Functional/MenuUiLanguageTest.php
index 0694b1d7fa..85aa57bf10 100644
--- a/core/modules/menu_ui/tests/src/Functional/MenuUiLanguageTest.php
+++ b/core/modules/menu_ui/tests/src/Functional/MenuUiLanguageTest.php
@@ -35,6 +35,9 @@ class MenuUiLanguageTest extends BrowserTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/menu_ui/tests/src/Functional/MenuUiNodeTest.php b/core/modules/menu_ui/tests/src/Functional/MenuUiNodeTest.php
index 01efbcf016..35aada1ec5 100644
--- a/core/modules/menu_ui/tests/src/Functional/MenuUiNodeTest.php
+++ b/core/modules/menu_ui/tests/src/Functional/MenuUiNodeTest.php
@@ -41,6 +41,9 @@ class MenuUiNodeTest extends BrowserTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/menu_ui/tests/src/Functional/MenuUiTest.php b/core/modules/menu_ui/tests/src/Functional/MenuUiTest.php
index 497f7f9a8d..bd848ee390 100644
--- a/core/modules/menu_ui/tests/src/Functional/MenuUiTest.php
+++ b/core/modules/menu_ui/tests/src/Functional/MenuUiTest.php
@@ -80,6 +80,9 @@ class MenuUiTest extends BrowserTestBase {
    */
   protected $items;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/migrate/src/MigrateException.php b/core/modules/migrate/src/MigrateException.php
index c122a89eba..526fe043b6 100644
--- a/core/modules/migrate/src/MigrateException.php
+++ b/core/modules/migrate/src/MigrateException.php
@@ -13,18 +13,22 @@ class MigrateException extends \Exception {
   /**
    * The level of the error being reported.
    *
-   * The value is a Migration::MESSAGE_* constant.
+   * The value is a MigrationInterface::MESSAGE_* constant.
    *
    * @var int
+   *
+   * @see \Drupal\migrate\Plugin\MigrationInterface
    */
   protected $level;
 
   /**
    * The status to record in the map table for the current item.
    *
-   * The value is a MigrateMap::STATUS_* constant.
+   * The value is a MigrateIdMapInterface::STATUS_* constant.
    *
    * @var int
+   *
+   * @see \Drupal\migrate\Plugin\MigrateIdMapInterface
    */
   protected $status;
 
diff --git a/core/modules/migrate/src/Plugin/Migration.php b/core/modules/migrate/src/Plugin/Migration.php
index 01ae6aea58..78c194d62c 100644
--- a/core/modules/migrate/src/Plugin/Migration.php
+++ b/core/modules/migrate/src/Plugin/Migration.php
@@ -95,6 +95,7 @@
  *
  * @link https://www.drupal.org/docs/8/api/migrate-api Migrate API handbook. @endlink
  */
+#[\AllowDynamicProperties]
 class Migration extends PluginBase implements MigrationInterface, RequirementsInterface, ContainerFactoryPluginInterface {
 
   /**
@@ -215,6 +216,11 @@ class Migration extends PluginBase implements MigrationInterface, RequirementsIn
    * Track time of last import if TRUE.
    *
    * @var bool
+   *
+   * @deprecated in drupal:10.1.0 and is removed from drupal:11.0.0. There is no
+   * replacement.
+   *
+   * @see https://www.drupal.org/node/3282894
    */
   protected $trackLastImported = FALSE;
 
@@ -358,6 +364,11 @@ public function __construct(array $configuration, $plugin_id, $plugin_definition
     foreach (NestedArray::mergeDeepArray([$plugin_definition, $configuration], TRUE) as $key => $value) {
       $this->$key = $value;
     }
+
+    if (isset($plugin_definition['trackLastImported'])) {
+      @trigger_error("The key 'trackLastImported' is deprecated in drupal:10.1.0 and is removed from drupal:11.0.0. There is no replacement. See https://www.drupal.org/node/3282894", E_USER_DEPRECATED);
+    }
+
   }
 
   /**
@@ -669,6 +680,7 @@ public function mergeProcessOfProperty($property, array $process_of_property) {
    * {@inheritdoc}
    */
   public function isTrackLastImported() {
+    @trigger_error(__METHOD__ . '() is deprecated in drupal:10.1.0 and is removed from drupal:11.0.0. There is no replacement. See https://www.drupal.org/node/3282894', E_USER_DEPRECATED);
     return $this->trackLastImported;
   }
 
@@ -676,6 +688,7 @@ public function isTrackLastImported() {
    * {@inheritdoc}
    */
   public function setTrackLastImported($track_last_imported) {
+    @trigger_error(__METHOD__ . '() is deprecated in drupal:10.1.0 and is removed from drupal:11.0.0. There is no replacement. See https://www.drupal.org/node/3282894', E_USER_DEPRECATED);
     $this->trackLastImported = (bool) $track_last_imported;
     return $this;
   }
@@ -756,6 +769,7 @@ public function getSourceConfiguration() {
    * {@inheritdoc}
    */
   public function getTrackLastImported() {
+    @trigger_error(__METHOD__ . '() is deprecated in drupal:10.1.0 and is removed from drupal:11.0.0. There is no replacement. See https://www.drupal.org/node/3282894', E_USER_DEPRECATED);
     return $this->trackLastImported;
   }
 
diff --git a/core/modules/migrate/src/Plugin/MigrationInterface.php b/core/modules/migrate/src/Plugin/MigrationInterface.php
index 61942a21f6..da8cdd819e 100644
--- a/core/modules/migrate/src/Plugin/MigrationInterface.php
+++ b/core/modules/migrate/src/Plugin/MigrationInterface.php
@@ -263,6 +263,11 @@ public function mergeProcessOfProperty($property, array $process_of_property);
    *
    * @return bool
    *   TRUE if the migration is tracking last import time.
+   *
+   * @deprecated in drupal:10.1.0 and is removed from drupal:11.0.0. There is no
+   * replacement.
+   *
+   * @see https://www.drupal.org/node/3282894
    */
   public function isTrackLastImported();
 
@@ -273,6 +278,11 @@ public function isTrackLastImported();
    *   Boolean value to indicate if the migration should track last import time.
    *
    * @return $this
+   *
+   * @deprecated in drupal:10.1.0 and is removed from drupal:11.0.0. There is no
+   * replacement.
+   *
+   * @see https://www.drupal.org/node/3282894
    */
   public function setTrackLastImported($track_last_imported);
 
@@ -305,6 +315,11 @@ public function getSourceConfiguration();
    *
    * @return bool
    *   Flag to determine desire of tracking time of last import.
+   *
+   * @deprecated in drupal:10.1.0 and is removed from drupal:11.0.0. There is no
+   * replacement.
+   *
+   * @see https://www.drupal.org/node/3282894
    */
   public function getTrackLastImported();
 
diff --git a/core/modules/migrate/src/Plugin/migrate/id_map/Sql.php b/core/modules/migrate/src/Plugin/migrate/id_map/Sql.php
index c83b18d3ed..34bf477264 100644
--- a/core/modules/migrate/src/Plugin/migrate/id_map/Sql.php
+++ b/core/modules/migrate/src/Plugin/migrate/id_map/Sql.php
@@ -14,6 +14,7 @@
 use Drupal\migrate\MigrateException;
 use Drupal\migrate\MigrateMessageInterface;
 use Drupal\migrate\Plugin\MigrateIdMapInterface;
+use Drupal\migrate\Plugin\MigrationPluginManagerInterface;
 use Drupal\migrate\Row;
 use Drupal\migrate\Event\MigrateEvents;
 use Drupal\migrate\Event\MigrateMapSaveEvent;
@@ -143,6 +144,13 @@ class Sql extends PluginBase implements MigrateIdMapInterface, ContainerFactoryP
    */
   protected $currentKey = [];
 
+  /**
+   * The migration plugin manager.
+   *
+   * @var \Drupal\migrate\Plugin\MigrationPluginManagerInterface
+   */
+  protected $migrationPluginManager;
+
   /**
    * Constructs an SQL object.
    *
@@ -158,8 +166,10 @@ class Sql extends PluginBase implements MigrateIdMapInterface, ContainerFactoryP
    *   The migration to do.
    * @param \Symfony\Contracts\EventDispatcher\EventDispatcherInterface $event_dispatcher
    *   The event dispatcher.
+   * @param \Drupal\migrate\Plugin\MigrationPluginManagerInterface $migration_plugin_manager
+   *   The migration plugin manager.
    */
-  public function __construct(array $configuration, $plugin_id, $plugin_definition, MigrationInterface $migration, EventDispatcherInterface $event_dispatcher) {
+  public function __construct(array $configuration, $plugin_id, $plugin_definition, MigrationInterface $migration, EventDispatcherInterface $event_dispatcher, MigrationPluginManagerInterface $migration_plugin_manager = NULL) {
     parent::__construct($configuration, $plugin_id, $plugin_definition);
     $this->migration = $migration;
     $this->eventDispatcher = $event_dispatcher;
@@ -176,6 +186,12 @@ public function __construct(array $configuration, $plugin_id, $plugin_definition
     $this->mapTableName = mb_substr($this->mapTableName, 0, 63 - $prefix_length);
     $this->messageTableName = 'migrate_message_' . mb_strtolower($machine_name);
     $this->messageTableName = mb_substr($this->messageTableName, 0, 63 - $prefix_length);
+
+    if (!$migration_plugin_manager) {
+      @trigger_error('Calling Sql::__construct() without the $migration_manager argument is deprecated in drupal:9.5.0 and the $migration_manager argument will be required in drupal:11.0.0. See https://www.drupal.org/node/3277306', E_USER_DEPRECATED);
+      $migration_plugin_manager = \Drupal::service('plugin.manager.migration');
+    }
+    $this->migrationPluginManager = $migration_plugin_manager;
   }
 
   /**
@@ -187,7 +203,8 @@ public static function create(ContainerInterface $container, array $configuratio
       $plugin_id,
       $plugin_definition,
       $migration,
-      $container->get('event_dispatcher')
+      $container->get('event_dispatcher'),
+      $container->get('plugin.manager.migration')
     );
   }
 
@@ -679,12 +696,10 @@ public function saveIdMapping(Row $row, array $destination_id_values, $source_ro
       $fields['destid' . ++$count] = $dest_id;
     }
     if ($count && $count != count($this->destinationIdFields())) {
-      $this->message->display(t('Could not save to map table due to missing destination id values'), 'error');
+      $this->message->display($this->t('Could not save to map table due to missing destination id values'), 'error');
       return;
     }
-    if ($this->migration->getTrackLastImported()) {
-      $fields['last_imported'] = time();
-    }
+    $fields['last_imported'] = time();
     $keys = [$this::SOURCE_IDS_HASH => $this->getSourceIdsHash($source_id_values)];
     // Notify anyone listening of the map row we're about to save.
     $this->eventDispatcher->dispatch(new MigrateMapSaveEvent($this, $fields), MigrateEvents::MAP_SAVE);
@@ -997,13 +1012,17 @@ public function valid() {
   /**
    * Returns the migration plugin manager.
    *
-   * @todo Inject as a dependency in https://www.drupal.org/node/2919158.
-   *
    * @return \Drupal\migrate\Plugin\MigrationPluginManagerInterface
    *   The migration plugin manager.
+   *
+   * @deprecated in drupal:9.5.0 and is removed from drupal:11.0.0. Use
+   *   $this->migrationPluginManager instead.
+   *
+   * @see https://www.drupal.org/node/3277306
    */
   protected function getMigrationPluginManager() {
-    return \Drupal::service('plugin.manager.migration');
+    @trigger_error('deprecated in drupal:9.5.0 and is removed from drupal:11.0.0. Use $this->migrationPluginManager instead. See https://www.drupal.org/node/3277306', E_USER_DEPRECATED);
+    return $this->migrationPluginManager;
   }
 
   /**
@@ -1024,13 +1043,12 @@ public function getHighestId() {
     // If there's a bundle, it means we have a derived migration and we need to
     // find all the mapping tables from the related derived migrations.
     if ($base_id = substr($this->migration->id(), 0, strpos($this->migration->id(), $this::DERIVATIVE_SEPARATOR))) {
-      $migration_manager = $this->getMigrationPluginManager();
-      $migrations = $migration_manager->getDefinitions();
+      $migrations = $this->migrationPluginManager->getDefinitions();
       foreach ($migrations as $migration_id => $migration) {
         if ($migration['id'] === $base_id) {
           // Get this derived migration's mapping table and add it to the list
           // of mapping tables to look in for the highest ID.
-          $stub = $migration_manager->createInstance($migration_id);
+          $stub = $this->migrationPluginManager->createInstance($migration_id);
           $map_tables[$migration_id] = $stub->getIdMap()->mapTableName();
         }
       }
diff --git a/core/modules/migrate/src/Plugin/migrate/process/MigrationLookup.php b/core/modules/migrate/src/Plugin/migrate/process/MigrationLookup.php
index 06b7c9a014..8e7ca733a9 100644
--- a/core/modules/migrate/src/Plugin/migrate/process/MigrationLookup.php
+++ b/core/modules/migrate/src/Plugin/migrate/process/MigrationLookup.php
@@ -263,7 +263,7 @@ public function transform($value, MigrateExecutableInterface $migrate_executable
         throw $e;
       }
       catch (\Exception $e) {
-        throw new MigrateException(sprintf('A(n) %s was thrown while attempting to stub.', gettype($e)), $e->getCode(), $e);
+        throw new MigrateException(sprintf('%s was thrown while attempting to stub: %s', get_class($e), $e->getMessage()), $e->getCode(), $e);
       }
     }
     if ($destination_ids) {
diff --git a/core/modules/migrate/src/Plugin/migrate/source/EmptySource.php b/core/modules/migrate/src/Plugin/migrate/source/EmptySource.php
index 123eb9c4cb..2991aeec7a 100644
--- a/core/modules/migrate/src/Plugin/migrate/source/EmptySource.php
+++ b/core/modules/migrate/src/Plugin/migrate/source/EmptySource.php
@@ -34,7 +34,7 @@ class EmptySource extends SourcePluginBase {
    */
   public function fields() {
     return [
-      'id' => t('ID'),
+      'id' => $this->t('ID'),
     ];
   }
 
diff --git a/core/modules/migrate/tests/modules/migrate_sql_count_cache_test/src/Plugin/migrate/source/SqlCountCache.php b/core/modules/migrate/tests/modules/migrate_sql_count_cache_test/src/Plugin/migrate/source/SqlCountCache.php
index 48026d10a6..5d01930706 100644
--- a/core/modules/migrate/tests/modules/migrate_sql_count_cache_test/src/Plugin/migrate/source/SqlCountCache.php
+++ b/core/modules/migrate/tests/modules/migrate_sql_count_cache_test/src/Plugin/migrate/source/SqlCountCache.php
@@ -18,7 +18,7 @@ class SqlCountCache extends SqlBase {
    */
   public function fields() {
     return [
-      'id' => t('Id'),
+      'id' => $this->t('Id'),
     ];
   }
 
diff --git a/core/modules/migrate/tests/src/Kernel/MigrateExecutableTest.php b/core/modules/migrate/tests/src/Kernel/MigrateExecutableTest.php
index 8b79c66eb4..3edd8d3146 100644
--- a/core/modules/migrate/tests/src/Kernel/MigrateExecutableTest.php
+++ b/core/modules/migrate/tests/src/Kernel/MigrateExecutableTest.php
@@ -16,6 +16,9 @@ class MigrateExecutableTest extends MigrateTestBase {
     'user',
   ];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->installEntitySchema('user');
diff --git a/core/modules/migrate/tests/src/Kernel/Plugin/MigrationTest.php b/core/modules/migrate/tests/src/Kernel/Plugin/MigrationTest.php
index 706318e835..8523f6b63a 100644
--- a/core/modules/migrate/tests/src/Kernel/Plugin/MigrationTest.php
+++ b/core/modules/migrate/tests/src/Kernel/Plugin/MigrationTest.php
@@ -174,8 +174,13 @@ public function testGetDestinationIds() {
    *
    * @covers ::getTrackLastImported
    * @covers ::isTrackLastImported
+   *
+   * @group legacy
    */
   public function testGetTrackLastImported() {
+    $this->expectDeprecation('Drupal\migrate\Plugin\Migration::setTrackLastImported() is deprecated in drupal:10.1.0 and is removed from drupal:11.0.0. There is no replacement. See https://www.drupal.org/node/3282894');
+    $this->expectDeprecation('Drupal\migrate\Plugin\Migration::getTrackLastImported() is deprecated in drupal:10.1.0 and is removed from drupal:11.0.0. There is no replacement. See https://www.drupal.org/node/3282894');
+    $this->expectDeprecation('Drupal\migrate\Plugin\Migration::isTrackLastImported() is deprecated in drupal:10.1.0 and is removed from drupal:11.0.0. There is no replacement. See https://www.drupal.org/node/3282894');
     $migration = \Drupal::service('plugin.manager.migration')->createStubMigration([]);
     $migration->setTrackLastImported(TRUE);
     $this->assertEquals(TRUE, $migration->getTrackLastImported());
diff --git a/core/modules/migrate/tests/src/Kernel/Plugin/id_map/SqlDeprecationTest.php b/core/modules/migrate/tests/src/Kernel/Plugin/id_map/SqlDeprecationTest.php
new file mode 100644
index 0000000000..4bdab83ec4
--- /dev/null
+++ b/core/modules/migrate/tests/src/Kernel/Plugin/id_map/SqlDeprecationTest.php
@@ -0,0 +1,36 @@
+<?php
+
+namespace Drupal\Tests\migrate\Kernel\Plugin\id_map;
+
+use Drupal\KernelTests\KernelTestBase;
+use Drupal\migrate\Plugin\migrate\id_map\Sql;
+
+/**
+ * Tests deprecation notice in Sql constructor.
+ *
+ * @group migrate
+ * @group legacy
+ */
+class SqlDeprecationTest extends KernelTestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  protected static $modules = ['migrate'];
+
+  /**
+   * @covers ::__construct
+   */
+  public function testOptionalParametersDeprecation(): void {
+    $migration = $this->prophesize('\Drupal\migrate\Plugin\MigrationInterface')->reveal();
+    $this->expectDeprecation('Calling Sql::__construct() without the $migration_manager argument is deprecated in drupal:9.5.0 and the $migration_manager argument will be required in drupal:11.0.0. See https://www.drupal.org/node/3277306');
+    new Sql(
+      [],
+      'sql',
+      [],
+      $migration,
+      $this->container->get('event_dispatcher')
+    );
+  }
+
+}
diff --git a/core/modules/migrate/tests/src/Kernel/Plugin/id_map/SqlTest.php b/core/modules/migrate/tests/src/Kernel/Plugin/id_map/SqlTest.php
index 4073829f28..dad421fbdc 100644
--- a/core/modules/migrate/tests/src/Kernel/Plugin/id_map/SqlTest.php
+++ b/core/modules/migrate/tests/src/Kernel/Plugin/id_map/SqlTest.php
@@ -87,7 +87,7 @@ public function testEnsureTables($ids) {
     $this->migrationDefinition['source']['ids'] = $ids;
     $migration = $this->migrationPluginManager->createStubMigration($this->migrationDefinition);
 
-    $map = new TestSqlIdMap($this->database, [], 'test', [], $migration, $this->eventDispatcher);
+    $map = new TestSqlIdMap($this->database, [], 'test', [], $migration, $this->eventDispatcher, $this->migrationPluginManager);
     $map->ensureTables();
 
     // Checks that the map table was created.
@@ -149,7 +149,7 @@ public function testFailEnsureTables($ids) {
       ->createStubMigration($this->migrationDefinition);
 
     // Use local id map plugin to force an error.
-    $map = new SqlIdMapTest($this->database, [], 'test', [], $migration, $this->eventDispatcher);
+    $map = new SqlIdMapTest($this->database, [], 'test', [], $migration, $this->eventDispatcher, $this->migrationPluginManager);
 
     $this->expectException(DatabaseExceptionWrapper::class);
     $this->expectExceptionMessage("Syntax error or access violation: 1074 Column length too big for column 'sourceid1' (max = 16383); use BLOB or TEXT instead:");
diff --git a/core/modules/migrate/tests/src/Unit/MigrateExecutableTest.php b/core/modules/migrate/tests/src/Unit/MigrateExecutableTest.php
index 5999e7af8c..073a21a4a3 100644
--- a/core/modules/migrate/tests/src/Unit/MigrateExecutableTest.php
+++ b/core/modules/migrate/tests/src/Unit/MigrateExecutableTest.php
@@ -89,7 +89,7 @@ public function testImportWithFailingRewind() {
 
     $this->migration->expects($this->any())
       ->method('getSourcePlugin')
-      ->will($this->returnValue($source));
+      ->willReturn($source);
 
     // Ensure that a message with the proper message was added.
     $exception_message .= " in " . __FILE__ . " line $line";
@@ -115,7 +115,7 @@ public function testImportWithValidRow() {
 
     $this->migration->expects($this->once())
       ->method('getProcessPlugins')
-      ->will($this->returnValue([]));
+      ->willReturn([]);
 
     $destination = $this->createMock('Drupal\migrate\Plugin\MigrateDestinationInterface');
 
@@ -140,7 +140,7 @@ public function testImportWithValidRowWithoutDestinationId() {
 
     $this->migration->expects($this->once())
       ->method('getProcessPlugins')
-      ->will($this->returnValue([]));
+      ->willReturn([]);
 
     $destination = $this->createMock('Drupal\migrate\Plugin\MigrateDestinationInterface');
 
@@ -168,7 +168,7 @@ public function testImportWithValidRowNoDestinationValues() {
 
     $this->migration->expects($this->once())
       ->method('getProcessPlugins')
-      ->will($this->returnValue([]));
+      ->willReturn([]);
 
     $destination = $this->createMock('Drupal\migrate\Plugin\MigrateDestinationInterface');
 
@@ -196,7 +196,7 @@ public function testImportWithValidRowWithDestinationMigrateException() {
 
     $this->migration->expects($this->once())
       ->method('getProcessPlugins')
-      ->will($this->returnValue([]));
+      ->willReturn([]);
 
     $destination = $this->createMock('Drupal\migrate\Plugin\MigrateDestinationInterface');
 
@@ -270,7 +270,7 @@ public function testImportWithValidRowWithException() {
 
     $this->migration->expects($this->once())
       ->method('getProcessPlugins')
-      ->will($this->returnValue([]));
+      ->willReturn([]);
 
     $destination = $this->createMock('Drupal\migrate\Plugin\MigrateDestinationInterface');
 
@@ -293,15 +293,15 @@ public function testProcessRow() {
       $plugins[$key][0] = $this->createMock('Drupal\migrate\Plugin\MigrateProcessInterface');
       $plugins[$key][0]->expects($this->once())
         ->method('getPluginDefinition')
-        ->will($this->returnValue([]));
+        ->willReturn([]);
       $plugins[$key][0]->expects($this->once())
         ->method('transform')
-        ->will($this->returnValue($value));
+        ->willReturn($value);
     }
     $this->migration->expects($this->once())
       ->method('getProcessPlugins')
       ->with(NULL)
-      ->will($this->returnValue($plugins));
+      ->willReturn($plugins);
     $row = new Row();
     $this->executable->processRow($row);
     foreach ($expected as $key => $value) {
@@ -317,7 +317,7 @@ public function testProcessRowEmptyPipeline() {
     $this->migration->expects($this->once())
       ->method('getProcessPlugins')
       ->with(NULL)
-      ->will($this->returnValue(['test' => []]));
+      ->willReturn(['test' => []]);
     $row = new Row();
     $this->executable->processRow($row);
     $this->assertSame($row->getDestination(), []);
@@ -386,10 +386,10 @@ protected function getMockSource() {
       ->getMockForAbstractClass();
     $source->expects($this->once())
       ->method('rewind')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
     $source->expects($this->any())
       ->method('initializeIterator')
-      ->will($this->returnValue([]));
+      ->willReturn([]);
     $source->expects($this->any())
       ->method('valid')
       ->will($this->onConsecutiveCalls(TRUE, FALSE));
diff --git a/core/modules/migrate/tests/src/Unit/MigrateSqlIdMapEnsureTablesTest.php b/core/modules/migrate/tests/src/Unit/MigrateSqlIdMapEnsureTablesTest.php
index cee2cd5570..f4a4dc2596 100644
--- a/core/modules/migrate/tests/src/Unit/MigrateSqlIdMapEnsureTablesTest.php
+++ b/core/modules/migrate/tests/src/Unit/MigrateSqlIdMapEnsureTablesTest.php
@@ -209,13 +209,13 @@ protected function runEnsureTablesTest($schema) {
     $plugin->expects($this->any())
       ->method('getIds')
       ->willReturn([
-      'source_id_property' => [
-        'type' => 'integer',
-      ],
-      'source_id_property_2' => [
-        'type' => 'integer',
-      ],
-    ]);
+        'source_id_property' => [
+          'type' => 'integer',
+        ],
+        'source_id_property_2' => [
+          'type' => 'integer',
+        ],
+      ]);
     $migration->expects($this->any())
       ->method('getSourcePlugin')
       ->willReturn($plugin);
@@ -223,16 +223,17 @@ protected function runEnsureTablesTest($schema) {
     $plugin->expects($this->any())
       ->method('getIds')
       ->willReturn([
-      'destination_id_property' => [
-        'type' => 'string',
-      ],
-    ]);
+        'destination_id_property' => [
+          'type' => 'string',
+        ],
+      ]);
     $migration->expects($this->any())
       ->method('getDestinationPlugin')
       ->willReturn($plugin);
     /** @var \Symfony\Contracts\EventDispatcher\EventDispatcherInterface $event_dispatcher */
     $event_dispatcher = $this->createMock('Symfony\Contracts\EventDispatcher\EventDispatcherInterface');
-    $map = new TestSqlIdMap($database, [], 'sql', [], $migration, $event_dispatcher);
+    $migration_manager = $this->createMock('Drupal\migrate\Plugin\MigrationPluginManagerInterface');
+    $map = new TestSqlIdMap($database, [], 'sql', [], $migration, $event_dispatcher, $migration_manager);
     $map->getDatabase();
   }
 
diff --git a/core/modules/migrate/tests/src/Unit/MigrateSqlIdMapTest.php b/core/modules/migrate/tests/src/Unit/MigrateSqlIdMapTest.php
index 7908fd912d..f05ed19c78 100644
--- a/core/modules/migrate/tests/src/Unit/MigrateSqlIdMapTest.php
+++ b/core/modules/migrate/tests/src/Unit/MigrateSqlIdMapTest.php
@@ -2,7 +2,9 @@
 
 namespace Drupal\Tests\migrate\Unit;
 
+use Drupal\Core\DependencyInjection\ContainerBuilder;
 use Drupal\sqlite\Driver\Database\sqlite\Connection;
+use Drupal\migrate\Plugin\MigrationPluginManager;
 use Drupal\migrate\Plugin\MigrationInterface;
 use Drupal\migrate\MigrateException;
 use Drupal\migrate\Plugin\MigrateIdMapInterface;
@@ -111,8 +113,9 @@ protected function getIdMap() {
       ->method('getDestinationPlugin')
       ->willReturn($plugin);
     $event_dispatcher = $this->createMock('Symfony\Contracts\EventDispatcher\EventDispatcherInterface');
+    $migration_manager = $this->createMock('Drupal\migrate\Plugin\MigrationPluginManagerInterface');
 
-    $id_map = new TestSqlIdMap($this->database, [], 'sql', [], $migration, $event_dispatcher);
+    $id_map = new TestSqlIdMap($this->database, [], 'sql', [], $migration, $event_dispatcher, $migration_manager);
     $migration
       ->method('getIdMap')
       ->willReturn($id_map);
@@ -1176,4 +1179,20 @@ public function getHighestIdInvalidDataProvider() {
     ];
   }
 
+  /**
+   * Tests deprecation message from Sql::getMigrationPluginManager().
+   *
+   * @group legacy
+   */
+  public function testGetMigrationPluginManagerDeprecation() {
+    $container = new ContainerBuilder();
+    $migration_plugin_manager = $this->createMock(MigrationPluginManager::class);
+    $container->set('plugin.manager.migration', $migration_plugin_manager);
+    \Drupal::setContainer($container);
+
+    $this->expectDeprecation('deprecated in drupal:9.5.0 and is removed from drupal:11.0.0. Use $this->migrationPluginManager instead. See https://www.drupal.org/node/3277306');
+    $id_map = $this->getIdMap();
+    $id_map->getMigrationPluginManager();
+  }
+
 }
diff --git a/core/modules/migrate/tests/src/Unit/MigrationTest.php b/core/modules/migrate/tests/src/Unit/MigrationTest.php
index b4fb8a96de..3656584d0d 100644
--- a/core/modules/migrate/tests/src/Unit/MigrationTest.php
+++ b/core/modules/migrate/tests/src/Unit/MigrationTest.php
@@ -8,6 +8,9 @@
 namespace Drupal\Tests\migrate\Unit;
 
 use Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException;
+use Drupal\migrate\Plugin\MigrateDestinationPluginManager;
+use Drupal\migrate\Plugin\MigratePluginManagerInterface;
+use Drupal\migrate\Plugin\MigrateSourcePluginManager;
 use Drupal\migrate\Plugin\MigrationInterface;
 use Drupal\migrate\Plugin\Migration;
 use Drupal\migrate\Exception\RequirementsException;
@@ -195,6 +198,21 @@ public function getValidMigrationDependenciesProvider() {
     ];
   }
 
+  /**
+   * Test trackLastImported deprecation message in Migration constructor.
+   *
+   * @group legacy
+   */
+  public function testTrackLastImportedDeprecation() {
+    $this->expectDeprecation("The key 'trackLastImported' is deprecated in drupal:10.1.0 and is removed from drupal:11.0.0. There is no replacement. See https://www.drupal.org/node/3282894");
+    $migration_plugin_manager = $this->createMock(MigrationPluginManagerInterface::class);
+    $source_plugin_manager = $this->createMock(MigrateSourcePluginManager::class);
+    $process_Plugin_manager = $this->createMock(MigratePluginManagerInterface::class);
+    $destination_plugin_manager = $this->createMock(MigrateDestinationPluginManager::class);
+    $id_map_plugin_manager = $this->createMock(MigratePluginManagerInterface::class);
+    new Migration([], 'test', ['trackLastImported' => TRUE], $migration_plugin_manager, $source_plugin_manager, $process_Plugin_manager, $destination_plugin_manager, $id_map_plugin_manager);
+  }
+
 }
 
 /**
diff --git a/core/modules/migrate/tests/src/Unit/RowTest.php b/core/modules/migrate/tests/src/Unit/RowTest.php
index 1770ccd9bd..6bf26e94e9 100644
--- a/core/modules/migrate/tests/src/Unit/RowTest.php
+++ b/core/modules/migrate/tests/src/Unit/RowTest.php
@@ -236,29 +236,29 @@ public function testSourceIdValues() {
   public function testMultipleSourceIdValues() {
     // Set values in same order as ids.
     $multi_source_ids = $this->testSourceIds + [
-        'vid' => 'Node revision',
-        'type' => 'Node type',
-        'langcode' => 'Node language',
-      ];
+      'vid' => 'Node revision',
+      'type' => 'Node type',
+      'langcode' => 'Node language',
+    ];
     $multi_source_ids_values = $this->testValues + [
-        'vid' => 1,
-        'type' => 'page',
-        'langcode' => 'en',
-      ];
+      'vid' => 1,
+      'type' => 'page',
+      'langcode' => 'en',
+    ];
     $row = new Row($multi_source_ids_values, $multi_source_ids);
     $this->assertSame(array_keys($multi_source_ids), array_keys($row->getSourceIdValues()));
 
     // Set values in different order.
     $multi_source_ids = $this->testSourceIds + [
-        'vid' => 'Node revision',
-        'type' => 'Node type',
-        'langcode' => 'Node language',
-      ];
+      'vid' => 'Node revision',
+      'type' => 'Node type',
+      'langcode' => 'Node language',
+    ];
     $multi_source_ids_values = $this->testValues + [
-        'langcode' => 'en',
-        'type' => 'page',
-        'vid' => 1,
-      ];
+      'langcode' => 'en',
+      'type' => 'page',
+      'vid' => 1,
+    ];
     $row = new Row($multi_source_ids_values, $multi_source_ids);
     $this->assertSame(array_keys($multi_source_ids), array_keys($row->getSourceIdValues()));
   }
diff --git a/core/modules/migrate/tests/src/Unit/TestSqlIdMap.php b/core/modules/migrate/tests/src/Unit/TestSqlIdMap.php
index 1716a87858..433b3907ee 100644
--- a/core/modules/migrate/tests/src/Unit/TestSqlIdMap.php
+++ b/core/modules/migrate/tests/src/Unit/TestSqlIdMap.php
@@ -6,6 +6,7 @@
 use Drupal\migrate\Plugin\MigrationInterface;
 use Drupal\migrate\MigrateException;
 use Drupal\migrate\Plugin\migrate\id_map\Sql;
+use Drupal\migrate\Plugin\MigrationPluginManagerInterface;
 use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
 
 /**
@@ -28,10 +29,12 @@ class TestSqlIdMap extends Sql implements \Iterator {
    *   The migration to do.
    * @param \Symfony\Contracts\EventDispatcher\EventDispatcherInterface $event_dispatcher
    *   The event dispatcher service.
+   * @param \Drupal\migrate\Plugin\MigrationPluginManagerInterface $migration_manager
+   *   The migration manager.
    */
-  public function __construct(Connection $database, array $configuration, $plugin_id, $plugin_definition, MigrationInterface $migration, EventDispatcherInterface $event_dispatcher) {
+  public function __construct(Connection $database, array $configuration, $plugin_id, $plugin_definition, MigrationInterface $migration, EventDispatcherInterface $event_dispatcher, MigrationPluginManagerInterface $migration_manager) {
     $this->database = $database;
-    parent::__construct($configuration, $plugin_id, $plugin_definition, $migration, $event_dispatcher);
+    parent::__construct($configuration, $plugin_id, $plugin_definition, $migration, $event_dispatcher, $migration_manager);
   }
 
   /**
@@ -88,4 +91,11 @@ public function ensureTables() {
     parent::ensureTables();
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  public function getMigrationPluginManager() {
+    return parent::getMigrationPluginManager();
+  }
+
 }
diff --git a/core/modules/migrate/tests/src/Unit/destination/ConfigTest.php b/core/modules/migrate/tests/src/Unit/destination/ConfigTest.php
index d55c21197b..cf3f77b5bf 100644
--- a/core/modules/migrate/tests/src/Unit/destination/ConfigTest.php
+++ b/core/modules/migrate/tests/src/Unit/destination/ConfigTest.php
@@ -29,7 +29,7 @@ public function testImport() {
       $config->expects($this->once())
         ->method('set')
         ->with($this->equalTo($key), $this->equalTo($val))
-        ->will($this->returnValue($config));
+        ->willReturn($config);
     }
     $config->expects($this->once())
       ->method('save');
@@ -40,20 +40,20 @@ public function testImport() {
     $config_factory->expects($this->once())
       ->method('getEditable')
       ->with('d8_config')
-      ->will($this->returnValue($config));
+      ->willReturn($config);
     $row = $this->getMockBuilder('Drupal\migrate\Row')
       ->disableOriginalConstructor()
       ->getMock();
     $row->expects($this->any())
       ->method('getRawDestination')
-      ->will($this->returnValue($source));
+      ->willReturn($source);
     $language_manager = $this->getMockBuilder('Drupal\language\ConfigurableLanguageManagerInterface')
       ->disableOriginalConstructor()
       ->getMock();
     $language_manager->expects($this->never())
       ->method('getLanguageConfigOverride')
       ->with('fr', 'd8_config')
-      ->will($this->returnValue($config));
+      ->willReturn($config);
     $destination = new Config(['config_name' => 'd8_config'], 'd8_config', ['pluginId' => 'd8_config'], $migration, $config_factory, $language_manager);
     $destination_id = $destination->import($row);
     $this->assertEquals(['d8_config'], $destination_id);
@@ -76,7 +76,7 @@ public function testLanguageImport() {
       $config->expects($this->once())
         ->method('set')
         ->with($this->equalTo($key), $this->equalTo($val))
-        ->will($this->returnValue($config));
+        ->willReturn($config);
     }
     $config->expects($this->once())
       ->method('save');
@@ -87,23 +87,23 @@ public function testLanguageImport() {
     $config_factory->expects($this->once())
       ->method('getEditable')
       ->with('d8_config')
-      ->will($this->returnValue($config));
+      ->willReturn($config);
     $row = $this->getMockBuilder('Drupal\migrate\Row')
       ->disableOriginalConstructor()
       ->getMock();
     $row->expects($this->any())
       ->method('getRawDestination')
-      ->will($this->returnValue($source));
+      ->willReturn($source);
     $row->expects($this->any())
       ->method('getDestinationProperty')
-      ->will($this->returnValue($source['langcode']));
+      ->willReturn($source['langcode']);
     $language_manager = $this->getMockBuilder('Drupal\language\ConfigurableLanguageManagerInterface')
       ->disableOriginalConstructor()
       ->getMock();
     $language_manager->expects($this->any())
       ->method('getLanguageConfigOverride')
       ->with('mi', 'd8_config')
-      ->will($this->returnValue($config));
+      ->willReturn($config);
     $destination = new Config(['config_name' => 'd8_config', 'translations' => 'true'], 'd8_config', ['pluginId' => 'd8_config'], $migration, $config_factory, $language_manager);
     $destination_id = $destination->import($row);
     $this->assertEquals(['d8_config', 'mi'], $destination_id);
diff --git a/core/modules/migrate/tests/src/Unit/destination/EntityRevisionTest.php b/core/modules/migrate/tests/src/Unit/destination/EntityRevisionTest.php
index 94a96a9c08..374db8a946 100644
--- a/core/modules/migrate/tests/src/Unit/destination/EntityRevisionTest.php
+++ b/core/modules/migrate/tests/src/Unit/destination/EntityRevisionTest.php
@@ -51,6 +51,9 @@ class EntityRevisionTest extends UnitTestCase {
    */
   protected $accountSwitcher;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/migrate/tests/src/Unit/process/GetTest.php b/core/modules/migrate/tests/src/Unit/process/GetTest.php
index f9793bb8e2..c921b8db89 100644
--- a/core/modules/migrate/tests/src/Unit/process/GetTest.php
+++ b/core/modules/migrate/tests/src/Unit/process/GetTest.php
@@ -18,7 +18,7 @@ public function testTransformSourceString() {
     $this->row->expects($this->once())
       ->method('get')
       ->with('test')
-      ->will($this->returnValue('source_value'));
+      ->willReturn('source_value');
     $this->plugin = new Get(['source' => 'test'], '', []);
     $value = $this->plugin->transform(NULL, $this->migrateExecutable, $this->row, 'destination_property');
     $this->assertSame('source_value', $value);
@@ -49,7 +49,7 @@ public function testTransformSourceStringAt() {
     $this->row->expects($this->once())
       ->method('get')
       ->with('@@test')
-      ->will($this->returnValue('source_value'));
+      ->willReturn('source_value');
     $this->plugin = new Get(['source' => '@@test'], '', []);
     $value = $this->plugin->transform(NULL, $this->migrateExecutable, $this->row, 'destination_property');
     $this->assertSame('source_value', $value);
diff --git a/core/modules/migrate/tests/src/Unit/process/MakeUniqueEntityFieldTest.php b/core/modules/migrate/tests/src/Unit/process/MakeUniqueEntityFieldTest.php
index 05a5a8d53d..465de7e3da 100644
--- a/core/modules/migrate/tests/src/Unit/process/MakeUniqueEntityFieldTest.php
+++ b/core/modules/migrate/tests/src/Unit/process/MakeUniqueEntityFieldTest.php
@@ -162,10 +162,10 @@ public function providerTestMakeUniqueEntityField() {
   protected function entityQueryExpects($count) {
     $this->entityQuery->expects($this->exactly($count + 1))
       ->method('condition')
-      ->will($this->returnValue($this->entityQuery));
+      ->willReturn($this->entityQuery);
     $this->entityQuery->expects($this->exactly($count + 1))
       ->method('count')
-      ->will($this->returnValue($this->entityQuery));
+      ->willReturn($this->entityQuery);
     $this->entityQuery->expects($this->exactly($count + 1))
       ->method('execute')
       ->willReturnCallback(function () use (&$count) {
diff --git a/core/modules/migrate/tests/src/Unit/process/MigrationLookupTest.php b/core/modules/migrate/tests/src/Unit/process/MigrationLookupTest.php
index ca483476c1..c022175f53 100644
--- a/core/modules/migrate/tests/src/Unit/process/MigrationLookupTest.php
+++ b/core/modules/migrate/tests/src/Unit/process/MigrationLookupTest.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\Tests\migrate\Unit\process;
 
+use Drupal\migrate\MigrateException;
 use Drupal\migrate\MigrateSkipProcessException;
 use Drupal\migrate\Plugin\MigrationInterface;
 use Drupal\migrate\Plugin\migrate\process\MigrationLookup;
@@ -60,6 +61,12 @@ public function testTransformWithStubbing() {
     $migration = MigrationLookup::create($this->prepareContainer(), $configuration, '', [], $migration_plugin->reveal());
     $result = $migration->transform(1, $this->migrateExecutable, $this->row, '');
     $this->assertEquals(2, $result);
+
+    $this->migrateStub->createStub('destination_migration', [1], [], FALSE)->willThrow(new \Exception('Oh noes!'));
+    $migration = MigrationLookup::create($this->prepareContainer(), $configuration, '', [], $migration_plugin->reveal());
+    $this->expectException(MigrateException::class);
+    $this->expectExceptionMessage('Exception was thrown while attempting to stub: Oh noes!');
+    $migration->transform(1, $this->migrateExecutable, $this->row, '');
   }
 
   /**
diff --git a/core/modules/migrate_drupal/tests/fixtures/drupal7.php b/core/modules/migrate_drupal/tests/fixtures/drupal7.php
index 26a5b50fdd..6e85c36619 100644
--- a/core/modules/migrate_drupal/tests/fixtures/drupal7.php
+++ b/core/modules/migrate_drupal/tests/fixtures/drupal7.php
@@ -4,12 +4,18 @@
  * @file
  * A database agnostic dump for testing purposes.
  *
- * This file was generated by the Drupal 9.3.0-dev db-tools.php script.
+ * This file was generated by the Drupal 9.5.0-dev db-tools.php script.
  */
 
 use Drupal\Core\Database\Database;
 
 $connection = Database::getConnection();
+// Ensure any tables with a serial column with a value of 0 are created as
+// expected.
+if ($connection->databaseType() === 'mysql') {
+  $sql_mode = $connection->query("SELECT @@sql_mode;")->fetchField();
+  $connection->query("SET sql_mode = '$sql_mode,NO_AUTO_VALUE_ON_ZERO'");
+}
 
 $connection->schema()->createTable('accesslog', array(
   'fields' => array(
@@ -72,305 +78,6 @@
   'mysql_character_set' => 'utf8',
 ));
 
-$connection->insert('accesslog')
-->fields(array(
-  'aid',
-  'sid',
-  'title',
-  'path',
-  'url',
-  'hostname',
-  'uid',
-  'timer',
-  'timestamp',
-))
-->values(array(
-  'aid' => '92',
-  'sid' => 'a8ksMY2GH4yXK0-PsLNAlCv4zNnapnyCpx4lryZDEfk',
-  'title' => '',
-  'path' => 'node',
-  'url' => 'http://drupal7.local/?q=user/register',
-  'hostname' => '127.0.0.1',
-  'uid' => '0',
-  'timer' => '655',
-  'timestamp' => '1444944970',
-))
-->values(array(
-  'aid' => '93',
-  'sid' => 'e89G2redQpxRTIndbV3qH8snVR621DqSQ2s4vciJedA',
-  'title' => '',
-  'path' => 'node',
-  'url' => 'http://drupal7.local/',
-  'hostname' => '127.0.0.1',
-  'uid' => '0',
-  'timer' => '214',
-  'timestamp' => '1444944974',
-))
-->values(array(
-  'aid' => '94',
-  'sid' => 'KkVxQTCiKqKEGNcRs7GYrmXXbEk4szXCHVTknFkbiG0',
-  'title' => 'User account',
-  'path' => 'user/login',
-  'url' => '',
-  'hostname' => '127.0.0.1',
-  'uid' => '0',
-  'timer' => '259',
-  'timestamp' => '1444945094',
-))
-->values(array(
-  'aid' => '95',
-  'sid' => 'FA1BMWZvsAAE1G-OBMzfiJyA12sh588cOKSmEmxFQiA',
-  'title' => 'My account',
-  'path' => 'user/login',
-  'url' => 'http://drupal7.local/?q=user/login',
-  'hostname' => '127.0.0.1',
-  'uid' => '1',
-  'timer' => '217',
-  'timestamp' => '1444945097',
-))
-->values(array(
-  'aid' => '96',
-  'sid' => 'FA1BMWZvsAAE1G-OBMzfiJyA12sh588cOKSmEmxFQiA',
-  'title' => 'root',
-  'path' => 'user/1',
-  'url' => 'http://drupal7.local/?q=user/login',
-  'hostname' => '127.0.0.1',
-  'uid' => '1',
-  'timer' => '211',
-  'timestamp' => '1444945097',
-))
-->values(array(
-  'aid' => '97',
-  'sid' => 'FA1BMWZvsAAE1G-OBMzfiJyA12sh588cOKSmEmxFQiA',
-  'title' => 'Modules',
-  'path' => 'admin/modules',
-  'url' => 'http://drupal7.local/user/1',
-  'hostname' => '127.0.0.1',
-  'uid' => '1',
-  'timer' => '619',
-  'timestamp' => '1444945104',
-))
-->values(array(
-  'aid' => '98',
-  'sid' => 'FA1BMWZvsAAE1G-OBMzfiJyA12sh588cOKSmEmxFQiA',
-  'title' => 'Configuration',
-  'path' => 'admin/config',
-  'url' => 'http://drupal7.local/admin/modules',
-  'hostname' => '127.0.0.1',
-  'uid' => '1',
-  'timer' => '273',
-  'timestamp' => '1444945114',
-))
-->values(array(
-  'aid' => '99',
-  'sid' => 'FA1BMWZvsAAE1G-OBMzfiJyA12sh588cOKSmEmxFQiA',
-  'title' => 'Languages',
-  'path' => 'admin/config/regional/language',
-  'url' => 'http://drupal7.local/admin/config',
-  'hostname' => '127.0.0.1',
-  'uid' => '1',
-  'timer' => '213',
-  'timestamp' => '1444945121',
-))
-->values(array(
-  'aid' => '100',
-  'sid' => 'FA1BMWZvsAAE1G-OBMzfiJyA12sh588cOKSmEmxFQiA',
-  'title' => 'Languages',
-  'path' => 'admin/config/regional/language/add',
-  'url' => 'http://drupal7.local/admin/config/regional/language',
-  'hostname' => '127.0.0.1',
-  'uid' => '1',
-  'timer' => '148',
-  'timestamp' => '1444945122',
-))
-->values(array(
-  'aid' => '101',
-  'sid' => 'FA1BMWZvsAAE1G-OBMzfiJyA12sh588cOKSmEmxFQiA',
-  'title' => 'Languages',
-  'path' => 'admin/config/regional/language/add',
-  'url' => 'http://drupal7.local/admin/config/regional/language/add',
-  'hostname' => '127.0.0.1',
-  'uid' => '1',
-  'timer' => '260',
-  'timestamp' => '1444945153',
-))
-->values(array(
-  'aid' => '102',
-  'sid' => 'FA1BMWZvsAAE1G-OBMzfiJyA12sh588cOKSmEmxFQiA',
-  'title' => 'Languages',
-  'path' => 'admin/config/regional/language/add',
-  'url' => '',
-  'hostname' => '127.0.0.1',
-  'uid' => '1',
-  'timer' => '195',
-  'timestamp' => '1444945160',
-))
-->values(array(
-  'aid' => '103',
-  'sid' => 'FA1BMWZvsAAE1G-OBMzfiJyA12sh588cOKSmEmxFQiA',
-  'title' => 'Languages',
-  'path' => 'admin/config/regional/language/add',
-  'url' => 'http://drupal7.local/?q=admin/config/regional/language/add',
-  'hostname' => '127.0.0.1',
-  'uid' => '1',
-  'timer' => '177',
-  'timestamp' => '1444945168',
-))
-->values(array(
-  'aid' => '104',
-  'sid' => 'FA1BMWZvsAAE1G-OBMzfiJyA12sh588cOKSmEmxFQiA',
-  'title' => 'Languages',
-  'path' => 'admin/config/regional/language',
-  'url' => 'http://drupal7.local/?q=admin/config/regional/language/add',
-  'hostname' => '127.0.0.1',
-  'uid' => '1',
-  'timer' => '145',
-  'timestamp' => '1444945168',
-))
-->values(array(
-  'aid' => '105',
-  'sid' => 'FA1BMWZvsAAE1G-OBMzfiJyA12sh588cOKSmEmxFQiA',
-  'title' => 'Languages',
-  'path' => 'admin/config/regional/language',
-  'url' => '',
-  'hostname' => '127.0.0.1',
-  'uid' => '1',
-  'timer' => '159',
-  'timestamp' => '1444945175',
-))
-->values(array(
-  'aid' => '106',
-  'sid' => 'FA1BMWZvsAAE1G-OBMzfiJyA12sh588cOKSmEmxFQiA',
-  'title' => 'Languages',
-  'path' => 'admin/config/regional/language',
-  'url' => 'http://drupal7.local/?q=admin/config/regional/language',
-  'hostname' => '127.0.0.1',
-  'uid' => '1',
-  'timer' => '152',
-  'timestamp' => '1444945176',
-))
-->values(array(
-  'aid' => '107',
-  'sid' => 'FA1BMWZvsAAE1G-OBMzfiJyA12sh588cOKSmEmxFQiA',
-  'title' => 'Languages',
-  'path' => 'admin/config/regional/language',
-  'url' => 'http://drupal7.local/?q=admin/config/regional/language',
-  'hostname' => '127.0.0.1',
-  'uid' => '1',
-  'timer' => '148',
-  'timestamp' => '1444945176',
-))
-->values(array(
-  'aid' => '108',
-  'sid' => 'FA1BMWZvsAAE1G-OBMzfiJyA12sh588cOKSmEmxFQiA',
-  'title' => 'Structure',
-  'path' => 'admin/structure',
-  'url' => 'http://drupal7.local/admin/config/regional/language',
-  'hostname' => '127.0.0.1',
-  'uid' => '1',
-  'timer' => '156',
-  'timestamp' => '1444945206',
-))
-->values(array(
-  'aid' => '109',
-  'sid' => 'FA1BMWZvsAAE1G-OBMzfiJyA12sh588cOKSmEmxFQiA',
-  'title' => 'Content types',
-  'path' => 'admin/structure/types',
-  'url' => 'http://drupal7.local/admin/structure',
-  'hostname' => '127.0.0.1',
-  'uid' => '1',
-  'timer' => '154',
-  'timestamp' => '1444945208',
-))
-->values(array(
-  'aid' => '110',
-  'sid' => 'FA1BMWZvsAAE1G-OBMzfiJyA12sh588cOKSmEmxFQiA',
-  'title' => 'Blog entry',
-  'path' => 'admin/structure/types/manage/blog',
-  'url' => 'http://drupal7.local/admin/structure/types',
-  'hostname' => '127.0.0.1',
-  'uid' => '1',
-  'timer' => '203',
-  'timestamp' => '1444945211',
-))
-->values(array(
-  'aid' => '111',
-  'sid' => 'FA1BMWZvsAAE1G-OBMzfiJyA12sh588cOKSmEmxFQiA',
-  'title' => 'Parent menu items',
-  'path' => 'admin/structure/menu/parents',
-  'url' => 'http://drupal7.local/admin/structure/types/manage/blog',
-  'hostname' => '127.0.0.1',
-  'uid' => '1',
-  'timer' => '211',
-  'timestamp' => '1444945211',
-))
-->values(array(
-  'aid' => '112',
-  'sid' => 'FA1BMWZvsAAE1G-OBMzfiJyA12sh588cOKSmEmxFQiA',
-  'title' => 'Blog entry',
-  'path' => 'admin/structure/types/manage/blog',
-  'url' => 'http://drupal7.local/admin/structure/types/manage/blog',
-  'hostname' => '127.0.0.1',
-  'uid' => '1',
-  'timer' => '224',
-  'timestamp' => '1444945236',
-))
-->values(array(
-  'aid' => '113',
-  'sid' => 'FA1BMWZvsAAE1G-OBMzfiJyA12sh588cOKSmEmxFQiA',
-  'title' => 'Parent menu items',
-  'path' => 'admin/structure/menu/parents',
-  'url' => 'http://drupal7.local/admin/structure/types/manage/blog',
-  'hostname' => '127.0.0.1',
-  'uid' => '1',
-  'timer' => '165',
-  'timestamp' => '1444945237',
-))
-->values(array(
-  'aid' => '114',
-  'sid' => 'FA1BMWZvsAAE1G-OBMzfiJyA12sh588cOKSmEmxFQiA',
-  'title' => 'Blog entry',
-  'path' => 'admin/structure/types/manage/blog',
-  'url' => '',
-  'hostname' => '127.0.0.1',
-  'uid' => '1',
-  'timer' => '155',
-  'timestamp' => '1444945242',
-))
-->values(array(
-  'aid' => '115',
-  'sid' => 'FA1BMWZvsAAE1G-OBMzfiJyA12sh588cOKSmEmxFQiA',
-  'title' => 'Parent menu items',
-  'path' => 'admin/structure/menu/parents',
-  'url' => 'http://drupal7.local/?q=admin/structure/types/manage/blog',
-  'hostname' => '127.0.0.1',
-  'uid' => '1',
-  'timer' => '217',
-  'timestamp' => '1444945242',
-))
-->values(array(
-  'aid' => '116',
-  'sid' => 'FA1BMWZvsAAE1G-OBMzfiJyA12sh588cOKSmEmxFQiA',
-  'title' => 'Blog entry',
-  'path' => 'admin/structure/types/manage/blog',
-  'url' => 'http://drupal7.local/?q=admin/structure/types/manage/blog',
-  'hostname' => '127.0.0.1',
-  'uid' => '1',
-  'timer' => '667',
-  'timestamp' => '1444945246',
-))
-->values(array(
-  'aid' => '117',
-  'sid' => 'FA1BMWZvsAAE1G-OBMzfiJyA12sh588cOKSmEmxFQiA',
-  'title' => 'Content types',
-  'path' => 'admin/structure/types',
-  'url' => 'http://drupal7.local/?q=admin/structure/types/manage/blog',
-  'hostname' => '127.0.0.1',
-  'uid' => '1',
-  'timer' => '149',
-  'timestamp' => '1444945246',
-))
-->execute();
 $connection->schema()->createTable('actions', array(
   'fields' => array(
     'aid' => array(
@@ -722,13 +429,13 @@
   'title' => 'Know Your Meme',
   'url' => 'http://knowyourmeme.com/newsfeed.rss',
   'refresh' => '900',
-  'checked' => '1444944970',
+  'checked' => '1664931769',
   'queued' => '0',
-  'link' => 'http://knowyourmeme.com',
+  'link' => 'https://knowyourmeme.com',
   'description' => 'New items added to the News Feed',
   'image' => '',
-  'hash' => 'e6295b3ba81b24db62b41515494a7e9fb87979ff45045a1c946de5fa5abc9c52',
-  'etag' => '"bad5e20e4993f31c869cffd22f1645b9"',
+  'hash' => 'c753aa16060da2c47b3258a912b84e609667ae7c332f2bbbb42bc59052ad4cf6',
+  'etag' => '"2ed1a6a90557f4ece3b94535ce371b03"',
   'modified' => '0',
   'block' => '5',
 ))
@@ -896,6 +603,106 @@
   'timestamp' => '1444944831',
   'guid' => 'post:18829',
 ))
+->values(array(
+  'iid' => '22',
+  'fid' => '1',
+  'title' => 'Jinkies',
+  'link' => 'https://knowyourmeme.com/photos/2452904-homophobic-dog-not-too-fond-of-gay-people',
+  'author' => '',
+  'description' => '<img alt="40f" src="https://i.kym-cdn.com/photos/images/newsfeed/002/452/904/40f.jpg" />',
+  'timestamp' => '1664916608',
+  'guid' => 'post:65743',
+))
+->values(array(
+  'iid' => '23',
+  'fid' => '1',
+  'title' => "What Is The 'Completely Unorganized Playlist' Meme And Is Spotify Scared?",
+  'link' => 'https://knowyourmeme.com/editorials/guides/what-is-the-completely-unorganized-playlist-meme-and-is-spotify-scared',
+  'author' => '',
+  'description' => "<img alt=\"Completelyunorganizedplaylistexplained\" src=\"https://i.kym-cdn.com/editorials/icons/mobile/000/004/864/completelyunorganizedplaylistexplained.jpg\" /><p>It's totally normal to have a 400-hour-long Spotify playlist. The rapid succession of musical genres will have you tossing and turning in your seat.</p>",
+  'timestamp' => '1664914805',
+  'guid' => 'post:65739',
+))
+->values(array(
+  'iid' => '24',
+  'fid' => '1',
+  'title' => "Elon Musk In Twitter's Crosshairs Yet Again After Suggesting Ceasefire In Russia-Ukraine Conflict",
+  'link' => 'https://knowyourmeme.com/news/elon-musk-in-twitters-crosshairs-yet-again-after-suggesting-ceasefire-in-russia-ukraine-conflict',
+  'author' => '',
+  'description' => '<img alt="1" src="https://i.kym-cdn.com/news/posts/mobile/000/002/678/1.JPG" /><p>Elon Musk, half a year after supplying Ukraine with his patented Starlink technology to aid in their defense against Russia, now finds himself branded a Russian loyalist after proposing a ceasefire in the ongoing conflict.</p>',
+  'timestamp' => '1664917721',
+  'guid' => 'post:65745',
+))
+->values(array(
+  'iid' => '25',
+  'fid' => '1',
+  'title' => 'Tumblr Cartoon Wants You To Think About Your Mutuals Before You Type Something Hurtful',
+  'link' => 'https://knowyourmeme.com/memes/insult-reflection',
+  'author' => '',
+  'description' => '<img alt="92c" src="https://i.kym-cdn.com/news_feeds/icons/mobile/000/065/747/92c.jpg" /><p>Does making fun of some rando feel so good it makes it worth it to hurt your mutuals in the process?</p>',
+  'timestamp' => '1664921469',
+  'guid' => 'post:65747',
+))
+->values(array(
+  'iid' => '26',
+  'fid' => '1',
+  'title' => 'A Reaction GIF Of Lily Mo Sheen Allegedly Doing A Little Underage Drinking At The 2014 Golden Globe Awards Goes Viral On Reddit',
+  'link' => 'https://knowyourmeme.com/memes/lily-mo-sheen-drinks-then-claps-nervously-at-awards-show',
+  'author' => '',
+  'description' => '<img alt="Lilycover" src="https://i.kym-cdn.com/entries/icons/mobile/000/042/139/lilycover.jpg" /><p>Sheen is the daughter of Kate Beckinsale and Martin Sheen and has lately been blowing up on Reddit for an old video that everyone can relate to.</p>',
+  'timestamp' => '1664912866',
+  'guid' => 'post:65738',
+))
+->values(array(
+  'iid' => '27',
+  'fid' => '1',
+  'title' => "Playing 'Cyberpunk 2077' Before And After 'Edgerunners'",
+  'link' => 'https://knowyourmeme.com/videos/382171-cyberpunk-edgerunners',
+  'author' => '',
+  'description' => '<img alt="Thumbnail_missing" src="https://s.kym-cdn.com/assets/thumbnail_missing-3a6027eed043f39f22e15715958e7b50.png" /><p>No going back now.</p>',
+  'timestamp' => '1664922077',
+  'guid' => 'post:65748',
+))
+->values(array(
+  'iid' => '28',
+  'fid' => '1',
+  'title' => 'Elon Musk Offers To Buy Twitter For $54.20 A Share, Again',
+  'link' => 'https://knowyourmeme.com/news/elon-musk-offers-to-buy-twitter-for-5420-a-share-again',
+  'author' => '',
+  'description' => '<img alt="Elon_musk_banner" src="https://i.kym-cdn.com/news/posts/mobile/000/002/679/Elon_Musk_banner.jpg" /><p>After months of trying to back out of his infamous deal, Musk suddenly reversed course and re-offered to buy Twitter at the original price he offered, weeks before the case was set to go to trial.</p>',
+  'timestamp' => '1664910995',
+  'guid' => 'post:65736',
+))
+->values(array(
+  'iid' => '29',
+  'fid' => '1',
+  'title' => "'Adult Happy Meals' From McDonald's Are Finally Here, And The Toys Are Odd",
+  'link' => 'https://knowyourmeme.com/memes/mcdonalds-adult-happy-meals',
+  'author' => '',
+  'description' => "<img alt=\"Grimace\" src=\"https://i.kym-cdn.com/entries/icons/mobile/000/042/138/grimace.jpg\" /><p>The promotion inspired memes on Twitter and elsewhere in which creators speculated as to what the meal's toy was.</p>",
+  'timestamp' => '1664917585',
+  'guid' => 'post:65744',
+))
+->values(array(
+  'iid' => '30',
+  'fid' => '1',
+  'title' => 'Why Does Jackie Kennedy Eat Sheet Metal?',
+  'link' => 'https://knowyourmeme.com/editorials/guides/why-does-jackie-kennedy-eat-sheet-metal',
+  'author' => '',
+  'description' => '<img alt="Sheet_metal" src="https://i.kym-cdn.com/editorials/icons/mobile/000/004/863/Sheet_Metal.jpg" /><p>The absurdist TikTok and Twitter meme challenges decades of Camelot mythology.</p>',
+  'timestamp' => '1664912639',
+  'guid' => 'post:65737',
+))
+->values(array(
+  'iid' => '31',
+  'fid' => '1',
+  'title' => "Someone Messed With Google And Now It Translates 'Tuna Fish in Marathi' To 'Ask The Fish, D*ckhead'",
+  'link' => 'https://knowyourmeme.com/memes/marathi-name-of-tuna-fish',
+  'author' => '',
+  'description' => '<img alt="Machhi_ko_puch" src="https://i.kym-cdn.com/entries/icons/mobile/000/042/137/machhi_ko_puch.jpg" /><p>January 2022 had people all over India urging their friends to Google the Marathi word for tuna fish, only to be roasted alive by the top result selected by the algorithm</p>',
+  'timestamp' => '1664915662',
+  'guid' => 'post:65741',
+))
 ->execute();
 $connection->schema()->createTable('authmap', array(
   'fields' => array(
@@ -927,6 +734,12 @@
   'primary key' => array(
     'aid',
   ),
+  'indexes' => array(
+    'uid_module' => array(
+      'uid',
+      'module',
+    ),
+  ),
   'mysql_character_set' => 'utf8',
 ));
 
@@ -1811,6 +1624,36 @@
   'cache' => '-1',
   'i18n_mode' => '0',
 ))
+->values(array(
+  'bid' => '51',
+  'module' => 'menu',
+  'delta' => 'menu-fixedlang',
+  'theme' => 'bartik',
+  'status' => '0',
+  'weight' => '0',
+  'region' => '-1',
+  'custom' => '0',
+  'visibility' => '0',
+  'pages' => '',
+  'title' => '',
+  'cache' => '-1',
+  'i18n_mode' => '0',
+))
+->values(array(
+  'bid' => '52',
+  'module' => 'menu',
+  'delta' => 'menu-fixedlang',
+  'theme' => 'seven',
+  'status' => '0',
+  'weight' => '0',
+  'region' => '-1',
+  'custom' => '0',
+  'visibility' => '0',
+  'pages' => '',
+  'title' => '',
+  'cache' => '-1',
+  'i18n_mode' => '0',
+))
 ->execute();
 $connection->schema()->createTable('block_custom', array(
   'fields' => array(
@@ -2471,82 +2314,6 @@
   'mysql_character_set' => 'utf8',
 ));
 
-$connection->schema()->createTable('cache_views', array(
-  'fields' => array(
-    'cid' => array(
-      'type' => 'varchar',
-      'not null' => TRUE,
-      'length' => '255',
-      'default' => '',
-    ),
-    'data' => array(
-      'type' => 'blob',
-      'not null' => FALSE,
-      'size' => 'normal',
-    ),
-    'expire' => array(
-      'type' => 'int',
-      'not null' => TRUE,
-      'size' => 'normal',
-      'default' => '0',
-    ),
-    'created' => array(
-      'type' => 'int',
-      'not null' => TRUE,
-      'size' => 'normal',
-      'default' => '0',
-    ),
-    'serialized' => array(
-      'type' => 'int',
-      'not null' => TRUE,
-      'size' => 'normal',
-      'default' => '0',
-    ),
-  ),
-  'primary key' => array(
-    'cid',
-  ),
-  'mysql_character_set' => 'utf8',
-));
-
-$connection->schema()->createTable('cache_views_data', array(
-  'fields' => array(
-    'cid' => array(
-      'type' => 'varchar',
-      'not null' => TRUE,
-      'length' => '255',
-      'default' => '',
-    ),
-    'data' => array(
-      'type' => 'blob',
-      'not null' => FALSE,
-      'size' => 'normal',
-    ),
-    'expire' => array(
-      'type' => 'int',
-      'not null' => TRUE,
-      'size' => 'normal',
-      'default' => '0',
-    ),
-    'created' => array(
-      'type' => 'int',
-      'not null' => TRUE,
-      'size' => 'normal',
-      'default' => '0',
-    ),
-    'serialized' => array(
-      'type' => 'int',
-      'not null' => TRUE,
-      'size' => 'normal',
-      'default' => '1',
-    ),
-  ),
-  'primary key' => array(
-    'cid',
-  ),
-  'mysql_character_set' => 'utf8',
-));
-
 $connection->schema()->createTable('comment', array(
   'fields' => array(
     'cid' => array(
@@ -2823,7 +2590,7 @@
     'obj' => array(
       'type' => 'varchar',
       'not null' => TRUE,
-      'length' => '32',
+      'length' => '128',
     ),
     'updated' => array(
       'type' => 'int',
@@ -3294,6 +3061,18 @@
   'created' => '1531838064',
   'changed' => '1531838064',
 ))
+->values(array(
+  'entity_type' => 'comment',
+  'entity_id' => '4',
+  'revision_id' => '4',
+  'language' => 'en',
+  'source' => '',
+  'uid' => '1',
+  'status' => '1',
+  'translate' => '0',
+  'created' => '1426781880',
+  'changed' => '1426781880',
+))
 ->values(array(
   'entity_type' => 'node',
   'entity_id' => '1',
@@ -3331,52 +3110,40 @@
   'changed' => '1529615813',
 ))
 ->values(array(
-  'entity_type' => 'user',
-  'entity_id' => '2',
-  'revision_id' => '2',
+  'entity_type' => 'node',
+  'entity_id' => '11',
+  'revision_id' => '18',
   'language' => 'en',
   'source' => '',
   'uid' => '1',
   'status' => '1',
   'translate' => '0',
-  'created' => '1527594929',
-  'changed' => '1527594929',
+  'created' => '1568261523',
+  'changed' => '1568261687',
 ))
 ->values(array(
-  'entity_type' => 'user',
-  'entity_id' => '2',
-  'revision_id' => '2',
+  'entity_type' => 'node',
+  'entity_id' => '11',
+  'revision_id' => '18',
   'language' => 'fr',
   'source' => 'en',
   'uid' => '1',
-  'status' => '0',
+  'status' => '1',
   'translate' => '0',
-  'created' => '1531663916',
-  'changed' => '1531663916',
+  'created' => '1568261721',
+  'changed' => '1568261721',
 ))
 ->values(array(
-  'entity_type' => 'user',
-  'entity_id' => '2',
-  'revision_id' => '2',
+  'entity_type' => 'node',
+  'entity_id' => '11',
+  'revision_id' => '18',
   'language' => 'is',
   'source' => 'en',
-  'uid' => '2',
-  'status' => '1',
-  'translate' => '1',
-  'created' => '1531663925',
-  'changed' => '1531663925',
-))
-->values(array(
-  'entity_type' => 'comment',
-  'entity_id' => '4',
-  'revision_id' => '4',
-  'language' => 'en',
-  'source' => '',
   'uid' => '1',
   'status' => '1',
   'translate' => '0',
-  'created' => '1426781880',
-  'changed' => '1426781880',
+  'created' => '1568261548',
+  'changed' => '1568261548',
 ))
 ->values(array(
   'entity_type' => 'taxonomy_term',
@@ -3415,40 +3182,40 @@
   'changed' => '1531922279',
 ))
 ->values(array(
-  'entity_type' => 'node',
-  'entity_id' => '11',
-  'revision_id' => '18',
+  'entity_type' => 'user',
+  'entity_id' => '2',
+  'revision_id' => '2',
   'language' => 'en',
   'source' => '',
   'uid' => '1',
   'status' => '1',
   'translate' => '0',
-  'created' => '1568261523',
-  'changed' => '1568261687',
+  'created' => '1527594929',
+  'changed' => '1527594929',
 ))
 ->values(array(
-  'entity_type' => 'node',
-  'entity_id' => '11',
-  'revision_id' => '18',
+  'entity_type' => 'user',
+  'entity_id' => '2',
+  'revision_id' => '2',
   'language' => 'fr',
   'source' => 'en',
   'uid' => '1',
-  'status' => '1',
+  'status' => '0',
   'translate' => '0',
-  'created' => '1568261721',
-  'changed' => '1568261721',
+  'created' => '1531663916',
+  'changed' => '1531663916',
 ))
 ->values(array(
-  'entity_type' => 'node',
-  'entity_id' => '11',
-  'revision_id' => '18',
+  'entity_type' => 'user',
+  'entity_id' => '2',
+  'revision_id' => '2',
   'language' => 'is',
   'source' => 'en',
-  'uid' => '1',
+  'uid' => '2',
   'status' => '1',
-  'translate' => '0',
-  'created' => '1568261548',
-  'changed' => '1568261548',
+  'translate' => '1',
+  'created' => '1531663925',
+  'changed' => '1531663925',
 ))
 ->execute();
 $connection->schema()->createTable('entity_translation_revision', array(
@@ -3579,19 +3346,19 @@
 ->values(array(
   'entity_type' => 'node',
   'entity_id' => '11',
-  'revision_id' => '17',
-  'language' => 'en',
-  'source' => '',
+  'revision_id' => '16',
+  'language' => 'is',
+  'source' => 'en',
   'uid' => '1',
   'status' => '1',
   'translate' => '0',
-  'created' => '1568261523',
-  'changed' => '1568261687',
+  'created' => '1568261548',
+  'changed' => '1568261548',
 ))
 ->values(array(
   'entity_type' => 'node',
   'entity_id' => '11',
-  'revision_id' => '18',
+  'revision_id' => '17',
   'language' => 'en',
   'source' => '',
   'uid' => '1',
@@ -3603,38 +3370,38 @@
 ->values(array(
   'entity_type' => 'node',
   'entity_id' => '11',
-  'revision_id' => '18',
-  'language' => 'fr',
+  'revision_id' => '17',
+  'language' => 'is',
   'source' => 'en',
   'uid' => '1',
   'status' => '1',
   'translate' => '0',
-  'created' => '1568261721',
-  'changed' => '1568261721',
+  'created' => '1568261548',
+  'changed' => '1568261548',
 ))
 ->values(array(
   'entity_type' => 'node',
   'entity_id' => '11',
-  'revision_id' => '16',
-  'language' => 'is',
-  'source' => 'en',
+  'revision_id' => '18',
+  'language' => 'en',
+  'source' => '',
   'uid' => '1',
   'status' => '1',
   'translate' => '0',
-  'created' => '1568261548',
-  'changed' => '1568261548',
+  'created' => '1568261523',
+  'changed' => '1568261687',
 ))
 ->values(array(
   'entity_type' => 'node',
   'entity_id' => '11',
-  'revision_id' => '17',
-  'language' => 'is',
+  'revision_id' => '18',
+  'language' => 'fr',
   'source' => 'en',
   'uid' => '1',
   'status' => '1',
   'translate' => '0',
-  'created' => '1568261548',
-  'changed' => '1568261548',
+  'created' => '1568261721',
+  'changed' => '1568261721',
 ))
 ->values(array(
   'entity_type' => 'node',
@@ -3877,7 +3644,7 @@
   'storage_module' => 'field_sql_storage',
   'storage_active' => '1',
   'locked' => '0',
-  'data' => 'a:7:{s:12:"translatable";s:1:"0";s:12:"entity_types";a:0:{}s:8:"settings";a:6:{s:11:"granularity";a:6:{s:5:"month";s:5:"month";s:3:"day";s:3:"day";s:4:"hour";s:4:"hour";s:6:"minute";s:6:"minute";s:4:"year";s:4:"year";s:6:"second";i:0;}s:11:"tz_handling";s:4:"site";s:11:"timezone_db";s:3:"UTC";s:13:"cache_enabled";i:0;s:11:"cache_count";s:1:"4";s:6:"todate";s:0:"";}s:7:"storage";a:5:{s:4:"type";s:17:"field_sql_storage";s:8:"settings";a:0:{}s:6:"module";s:17:"field_sql_storage";s:6:"active";s:1:"1";s:7:"details";a:1:{s:3:"sql";a:2:{s:18:"FIELD_LOAD_CURRENT";a:1:{s:21:"field_data_field_date";a:1:{s:5:"value";s:16:"field_date_value";}}s:19:"FIELD_LOAD_REVISION";a:1:{s:25:"field_revision_field_date";a:1:{s:5:"value";s:16:"field_date_value";}}}}}s:12:"foreign keys";a:0:{}s:7:"indexes";a:0:{}s:2:"id";s:1:"9";}',
+  'data' => 'a:7:{s:12:"translatable";s:1:"0";s:12:"entity_types";a:0:{}s:8:"settings";a:6:{s:11:"granularity";a:6:{s:5:"month";s:5:"month";s:3:"day";s:3:"day";s:4:"hour";s:4:"hour";s:6:"minute";s:6:"minute";s:4:"year";s:4:"year";s:6:"second";i:0;}s:11:"tz_handling";s:4:"site";s:11:"timezone_db";s:3:"UTC";s:13:"cache_enabled";i:0;s:11:"cache_count";s:1:"4";s:6:"todate";s:0:"";}s:7:"storage";a:5:{s:4:"type";s:17:"field_sql_storage";s:8:"settings";a:0:{}s:6:"module";s:17:"field_sql_storage";s:6:"active";s:1:"1";s:7:"details";a:1:{s:3:"sql";a:2:{s:18:"FIELD_LOAD_CURRENT";a:1:{s:21:"field_data_field_date";a:1:{s:5:"value";s:16:"field_date_value";}}s:19:"FIELD_LOAD_REVISION";a:1:{s:25:"field_revision_field_date";a:1:{s:5:"value";s:16:"field_date_value";}}}}}s:12:"foreign keys";a:0:{}s:7:"indexes";a:1:{s:5:"value";a:1:{i:0;s:5:"value";}}s:2:"id";s:1:"9";}',
   'cardinality' => '1',
   'translatable' => '0',
   'deleted' => '0',
@@ -3892,7 +3659,7 @@
   'storage_module' => 'field_sql_storage',
   'storage_active' => '1',
   'locked' => '0',
-  'data' => 'a:7:{s:12:"translatable";s:1:"0";s:12:"entity_types";a:0:{}s:8:"settings";a:6:{s:11:"granularity";a:6:{s:5:"month";s:5:"month";s:3:"day";s:3:"day";s:4:"hour";s:4:"hour";s:6:"minute";s:6:"minute";s:4:"year";s:4:"year";s:6:"second";i:0;}s:11:"tz_handling";s:4:"site";s:11:"timezone_db";s:3:"UTC";s:13:"cache_enabled";i:0;s:11:"cache_count";s:1:"4";s:6:"todate";s:8:"optional";}s:7:"storage";a:5:{s:4:"type";s:17:"field_sql_storage";s:8:"settings";a:0:{}s:6:"module";s:17:"field_sql_storage";s:6:"active";s:1:"1";s:7:"details";a:1:{s:3:"sql";a:2:{s:18:"FIELD_LOAD_CURRENT";a:1:{s:35:"field_data_field_date_with_end_time";a:2:{s:5:"value";s:30:"field_date_with_end_time_value";s:6:"value2";s:31:"field_date_with_end_time_value2";}}s:19:"FIELD_LOAD_REVISION";a:1:{s:39:"field_revision_field_date_with_end_time";a:2:{s:5:"value";s:30:"field_date_with_end_time_value";s:6:"value2";s:31:"field_date_with_end_time_value2";}}}}}s:12:"foreign keys";a:0:{}s:7:"indexes";a:0:{}s:2:"id";s:2:"10";}',
+  'data' => 'a:7:{s:12:"translatable";s:1:"0";s:12:"entity_types";a:0:{}s:8:"settings";a:6:{s:11:"granularity";a:6:{s:5:"month";s:5:"month";s:3:"day";s:3:"day";s:4:"hour";s:4:"hour";s:6:"minute";s:6:"minute";s:4:"year";s:4:"year";s:6:"second";i:0;}s:11:"tz_handling";s:4:"site";s:11:"timezone_db";s:3:"UTC";s:13:"cache_enabled";i:0;s:11:"cache_count";s:1:"4";s:6:"todate";s:8:"optional";}s:7:"storage";a:5:{s:4:"type";s:17:"field_sql_storage";s:8:"settings";a:0:{}s:6:"module";s:17:"field_sql_storage";s:6:"active";s:1:"1";s:7:"details";a:1:{s:3:"sql";a:2:{s:18:"FIELD_LOAD_CURRENT";a:1:{s:35:"field_data_field_date_with_end_time";a:2:{s:5:"value";s:30:"field_date_with_end_time_value";s:6:"value2";s:31:"field_date_with_end_time_value2";}}s:19:"FIELD_LOAD_REVISION";a:1:{s:39:"field_revision_field_date_with_end_time";a:2:{s:5:"value";s:30:"field_date_with_end_time_value";s:6:"value2";s:31:"field_date_with_end_time_value2";}}}}}s:12:"foreign keys";a:0:{}s:7:"indexes";a:2:{s:5:"value";a:2:{i:0;s:5:"value";i:1;s:6:"value2";}s:6:"value2";a:1:{i:0;s:6:"value2";}}s:2:"id";s:2:"10";}',
   'cardinality' => '1',
   'translatable' => '0',
   'deleted' => '0',
@@ -4252,7 +4019,7 @@
   'storage_module' => 'field_sql_storage',
   'storage_active' => '1',
   'locked' => '0',
-  'data' => 'a:7:{s:12:"translatable";s:1:"0";s:12:"entity_types";a:0:{}s:8:"settings";a:6:{s:11:"granularity";a:6:{s:5:"month";s:5:"month";s:3:"day";s:3:"day";s:4:"hour";i:0;s:6:"minute";i:0;s:4:"year";s:4:"year";s:6:"second";i:0;}s:11:"tz_handling";s:4:"site";s:11:"timezone_db";s:3:"UTC";s:13:"cache_enabled";i:0;s:11:"cache_count";s:1:"4";s:6:"todate";s:0:"";}s:7:"storage";a:5:{s:4:"type";s:17:"field_sql_storage";s:8:"settings";a:0:{}s:6:"module";s:17:"field_sql_storage";s:6:"active";s:1:"1";s:7:"details";a:1:{s:3:"sql";a:2:{s:18:"FIELD_LOAD_CURRENT";a:1:{s:38:"field_data_field_datetime_without_time";a:1:{s:5:"value";s:33:"field_datetime_without_time_value";}}s:19:"FIELD_LOAD_REVISION";a:1:{s:42:"field_revision_field_datetime_without_time";a:1:{s:5:"value";s:33:"field_datetime_without_time_value";}}}}}s:12:"foreign keys";a:0:{}s:7:"indexes";a:0:{}s:2:"id";s:1:"9";}',
+  'data' => 'a:7:{s:12:"translatable";s:1:"0";s:12:"entity_types";a:0:{}s:8:"settings";a:6:{s:11:"granularity";a:6:{s:5:"month";s:5:"month";s:3:"day";s:3:"day";s:4:"hour";i:0;s:6:"minute";i:0;s:4:"year";s:4:"year";s:6:"second";i:0;}s:11:"tz_handling";s:4:"site";s:11:"timezone_db";s:3:"UTC";s:13:"cache_enabled";i:0;s:11:"cache_count";s:1:"4";s:6:"todate";s:0:"";}s:7:"storage";a:5:{s:4:"type";s:17:"field_sql_storage";s:8:"settings";a:0:{}s:6:"module";s:17:"field_sql_storage";s:6:"active";s:1:"1";s:7:"details";a:1:{s:3:"sql";a:2:{s:18:"FIELD_LOAD_CURRENT";a:1:{s:38:"field_data_field_datetime_without_time";a:1:{s:5:"value";s:33:"field_datetime_without_time_value";}}s:19:"FIELD_LOAD_REVISION";a:1:{s:42:"field_revision_field_datetime_without_time";a:1:{s:5:"value";s:33:"field_datetime_without_time_value";}}}}}s:12:"foreign keys";a:0:{}s:7:"indexes";a:1:{s:5:"value";a:1:{i:0;s:5:"value";}}s:2:"id";s:1:"9";}',
   'cardinality' => '1',
   'translatable' => '0',
   'deleted' => '0',
@@ -4267,7 +4034,7 @@
   'storage_module' => 'field_sql_storage',
   'storage_active' => '1',
   'locked' => '0',
-  'data' => 'a:7:{s:12:"translatable";s:1:"0";s:12:"entity_types";a:0:{}s:8:"settings";a:6:{s:11:"granularity";a:6:{s:5:"month";s:5:"month";s:3:"day";s:3:"day";s:4:"hour";i:0;s:6:"minute";i:0;s:4:"year";s:4:"year";s:6:"second";i:0;}s:11:"tz_handling";s:4:"site";s:11:"timezone_db";s:3:"UTC";s:13:"cache_enabled";i:0;s:11:"cache_count";s:1:"4";s:6:"todate";s:0:"";}s:7:"storage";a:5:{s:4:"type";s:17:"field_sql_storage";s:8:"settings";a:0:{}s:6:"module";s:17:"field_sql_storage";s:6:"active";s:1:"1";s:7:"details";a:1:{s:3:"sql";a:2:{s:18:"FIELD_LOAD_CURRENT";a:1:{s:34:"field_data_field_date_without_time";a:1:{s:5:"value";s:29:"field_date_without_time_value";}}s:19:"FIELD_LOAD_REVISION";a:1:{s:38:"field_revision_field_date_without_time";a:1:{s:5:"value";s:29:"field_date_without_time_value";}}}}}s:12:"foreign keys";a:0:{}s:7:"indexes";a:0:{}s:2:"id";s:1:"9";}',
+  'data' => 'a:7:{s:12:"translatable";s:1:"0";s:12:"entity_types";a:0:{}s:8:"settings";a:6:{s:11:"granularity";a:6:{s:5:"month";s:5:"month";s:3:"day";s:3:"day";s:4:"hour";i:0;s:6:"minute";i:0;s:4:"year";s:4:"year";s:6:"second";i:0;}s:11:"tz_handling";s:4:"site";s:11:"timezone_db";s:3:"UTC";s:13:"cache_enabled";i:0;s:11:"cache_count";s:1:"4";s:6:"todate";s:0:"";}s:7:"storage";a:5:{s:4:"type";s:17:"field_sql_storage";s:8:"settings";a:0:{}s:6:"module";s:17:"field_sql_storage";s:6:"active";s:1:"1";s:7:"details";a:1:{s:3:"sql";a:2:{s:18:"FIELD_LOAD_CURRENT";a:1:{s:34:"field_data_field_date_without_time";a:1:{s:5:"value";s:29:"field_date_without_time_value";}}s:19:"FIELD_LOAD_REVISION";a:1:{s:38:"field_revision_field_date_without_time";a:1:{s:5:"value";s:29:"field_date_without_time_value";}}}}}s:12:"foreign keys";a:0:{}s:7:"indexes";a:1:{s:5:"value";a:1:{i:0;s:5:"value";}}s:2:"id";s:1:"9";}',
   'cardinality' => '1',
   'translatable' => '0',
   'deleted' => '0',
@@ -4642,12 +4409,12 @@
   'storage_module' => 'field_sql_storage',
   'storage_active' => '1',
   'locked' => '0',
-  'data' => 'a:7:{s:12:"translatable";i:0;s:12:"entity_types";a:0:{}s:8:"settings";a:7:{s:11:"granularity";a:6:{s:5:"month";s:5:"month";s:3:"day";s:3:"day";s:4:"hour";s:4:"hour";s:6:"minute";s:6:"minute";s:4:"year";s:4:"year";s:6:"second";i:0;}s:11:"tz_handling";s:4:"site";s:11:"timezone_db";s:3:"UTC";s:13:"cache_enabled";i:0;s:11:"cache_count";s:1:"4";s:6:"todate";s:8:"optional";s:23:"entity_translation_sync";b:0;}s:7:"storage";a:5:{s:4:"type";s:17:"field_sql_storage";s:8:"settings";a:0:{}s:6:"module";s:17:"field_sql_storage";s:6:"active";s:1:"1";s:7:"details";a:1:{s:3:"sql";a:2:{s:18:"FIELD_LOAD_CURRENT";a:1:{s:22:"field_data_field_event";a:2:{s:5:"value";s:17:"field_event_value";s:6:"value2";s:18:"field_event_value2";}}s:19:"FIELD_LOAD_REVISION";a:1:{s:26:"field_revision_field_event";a:2:{s:5:"value";s:17:"field_event_value";s:6:"value2";s:18:"field_event_value2";}}}}}s:12:"foreign keys";a:0:{}s:7:"indexes";a:0:{}s:2:"id";s:2:"54";}',
+  'data' => 'a:7:{s:12:"translatable";i:0;s:12:"entity_types";a:0:{}s:8:"settings";a:7:{s:11:"granularity";a:6:{s:5:"month";s:5:"month";s:3:"day";s:3:"day";s:4:"hour";s:4:"hour";s:6:"minute";s:6:"minute";s:4:"year";s:4:"year";s:6:"second";i:0;}s:11:"tz_handling";s:4:"site";s:11:"timezone_db";s:3:"UTC";s:13:"cache_enabled";i:0;s:11:"cache_count";s:1:"4";s:6:"todate";s:8:"optional";s:23:"entity_translation_sync";b:0;}s:7:"storage";a:5:{s:4:"type";s:17:"field_sql_storage";s:8:"settings";a:0:{}s:6:"module";s:17:"field_sql_storage";s:6:"active";s:1:"1";s:7:"details";a:1:{s:3:"sql";a:2:{s:18:"FIELD_LOAD_CURRENT";a:1:{s:22:"field_data_field_event";a:2:{s:5:"value";s:17:"field_event_value";s:6:"value2";s:18:"field_event_value2";}}s:19:"FIELD_LOAD_REVISION";a:1:{s:26:"field_revision_field_event";a:2:{s:5:"value";s:17:"field_event_value";s:6:"value2";s:18:"field_event_value2";}}}}}s:12:"foreign keys";a:0:{}s:7:"indexes";a:2:{s:5:"value";a:2:{i:0;s:5:"value";i:1;s:6:"value2";}s:6:"value2";a:1:{i:0;s:6:"value2";}}s:2:"id";s:2:"54";}',
   'cardinality' => '1',
   'translatable' => '0',
   'deleted' => '0',
 ))
-  ->execute();
+->execute();
 $connection->schema()->createTable('field_config_instance', array(
   'fields' => array(
     'id' => array(
@@ -4874,7 +4641,7 @@
   'field_name' => 'field_date_with_end_time',
   'entity_type' => 'node',
   'bundle' => 'test_content_type',
-  'data' => 'a:6:{s:5:"label";s:18:"Date With End Time";s:6:"widget";a:5:{s:6:"weight";s:1:"3";s:4:"type";s:9:"date_text";s:6:"module";s:4:"date";s:6:"active";i:1;s:8:"settings";a:6:{s:12:"input_format";s:13:"m/d/Y - H:i:s";s:19:"input_format_custom";s:0:"";s:10:"year_range";s:5:"-3:+3";s:9:"increment";i:15;s:14:"label_position";s:5:"above";s:10:"text_parts";a:0:{}}}s:8:"settings";a:5:{s:13:"default_value";s:3:"now";s:18:"default_value_code";s:0:"";s:14:"default_value2";s:4:"same";s:19:"default_value_code2";s:0:"";s:18:"user_register_form";b:0;}s:7:"display";a:1:{s:7:"default";a:5:{s:5:"label";s:5:"above";s:4:"type";s:12:"date_default";s:6:"weight";s:1:"4";s:8:"settings";a:5:{s:11:"format_type";s:4:"long";s:15:"multiple_number";s:0:"";s:13:"multiple_from";s:0:"";s:11:"multiple_to";s:0:"";s:6:"fromto";s:4:"both";}s:6:"module";s:4:"date";}}s:8:"required";i:0;s:11:"description";s:0:"";}',
+  'data' => 'a:6:{s:5:"label";s:18:"Date With End Time";s:6:"widget";a:5:{s:6:"weight";s:1:"3";s:4:"type";s:9:"date_text";s:6:"module";s:4:"date";s:6:"active";i:1;s:8:"settings";a:6:{s:12:"input_format";s:13:"m/d/Y - H:i:s";s:19:"input_format_custom";s:0:"";s:10:"year_range";s:5:"-3:+3";s:9:"increment";i:1;s:14:"label_position";s:5:"above";s:10:"text_parts";a:0:{}}}s:8:"settings";a:5:{s:13:"default_value";s:3:"now";s:18:"default_value_code";s:0:"";s:14:"default_value2";s:4:"same";s:19:"default_value_code2";s:0:"";s:18:"user_register_form";b:0;}s:7:"display";a:1:{s:7:"default";a:5:{s:5:"label";s:5:"above";s:4:"type";s:12:"date_default";s:6:"weight";s:1:"4";s:8:"settings";a:5:{s:11:"format_type";s:4:"long";s:15:"multiple_number";s:0:"";s:13:"multiple_from";s:0:"";s:11:"multiple_to";s:0:"";s:6:"fromto";s:4:"both";}s:6:"module";s:4:"date";}}s:8:"required";i:0;s:11:"description";s:0:"";}',
   'deleted' => '0',
 ))
 ->values(array(
@@ -5516,7 +5283,7 @@
   'data' => 'a:7:{s:5:"label";s:8:"checkbox";s:6:"widget";a:5:{s:6:"weight";s:2:"25";s:4:"type";s:15:"options_buttons";s:6:"module";s:7:"options";s:6:"active";i:1;s:8:"settings";a:0:{}}s:8:"settings";a:2:{s:18:"user_register_form";b:0;s:23:"entity_translation_sync";b:0;}s:7:"display";a:1:{s:7:"default";a:5:{s:5:"label";s:5:"above";s:4:"type";s:12:"list_default";s:8:"settings";a:0:{}s:6:"module";s:4:"list";s:6:"weight";i:25;}}s:8:"required";i:0;s:11:"description";s:0:"";s:13:"default_value";N;}',
   'deleted' => '0',
 ))
- ->values(array(
+->values(array(
   'id' => '94',
   'field_id' => '62',
   'field_name' => 'field_event',
@@ -5682,211 +5449,129 @@
   'body_format' => 'filtered_html',
 ))
 ->execute();
-$connection->schema()->createTable('field_data_field_checkbox', array(
-  'fields' => array(
-    'entity_type' => array(
-      'type' => 'varchar',
-      'not null' => TRUE,
-      'length' => '128',
-      'default' => '',
-    ),
-    'bundle' => array(
-      'type' => 'varchar',
-      'not null' => TRUE,
-      'length' => '128',
-      'default' => '',
-    ),
-    'deleted' => array(
-      'type' => 'int',
-      'not null' => TRUE,
-      'size' => 'tiny',
-      'default' => '0',
-    ),
-    'entity_id' => array(
-      'type' => 'int',
-      'not null' => TRUE,
-      'size' => 'normal',
-      'unsigned' => TRUE,
-    ),
-    'revision_id' => array(
-      'type' => 'int',
-      'not null' => FALSE,
-      'size' => 'normal',
-      'unsigned' => TRUE,
-    ),
-    'language' => array(
-      'type' => 'varchar',
-      'not null' => TRUE,
-      'length' => '32',
-      'default' => '',
-    ),
-    'delta' => array(
-      'type' => 'int',
-      'not null' => TRUE,
-      'size' => 'normal',
-      'unsigned' => TRUE,
-    ),
-    'field_checkbox_value' => array(
-      'type' => 'int',
-      'not null' => FALSE,
-      'size' => 'normal',
-    ),
-  ),
-  'primary key' => array(
-    'entity_type',
-    'entity_id',
-    'deleted',
-    'delta',
-    'language',
-  ),
-  'indexes' => array(
-    'entity_type' => array(
-      'entity_type',
-    ),
-    'bundle' => array(
-      'bundle',
-    ),
-    'deleted' => array(
-      'deleted',
-    ),
-    'entity_id' => array(
-      'entity_id',
-    ),
-    'revision_id' => array(
-      'revision_id',
-    ),
-    'language' => array(
-      'language',
-    ),
-    'field_checkbox_value' => array(
-      'field_checkbox_value',
-    ),
-  ),
-    'mysql_character_set' => 'utf8',
-  ));
-$connection->schema()->createTable('field_data_comment_body', array(
-  'fields' => array(
-    'entity_type' => array(
-      'type' => 'varchar',
-      'not null' => TRUE,
-      'length' => '128',
-      'default' => '',
-    ),
-    'bundle' => array(
-      'type' => 'varchar',
-      'not null' => TRUE,
-      'length' => '128',
-      'default' => '',
-    ),
-    'deleted' => array(
-      'type' => 'int',
-      'not null' => TRUE,
-      'size' => 'normal',
-      'default' => '0',
-    ),
-    'entity_id' => array(
-      'type' => 'int',
-      'not null' => TRUE,
-      'size' => 'normal',
-      'unsigned' => TRUE,
-    ),
-    'revision_id' => array(
-      'type' => 'int',
-      'not null' => FALSE,
-      'size' => 'normal',
-      'unsigned' => TRUE,
-    ),
-    'language' => array(
-      'type' => 'varchar',
-      'not null' => TRUE,
-      'length' => '32',
-      'default' => '',
-    ),
-    'delta' => array(
-      'type' => 'int',
-      'not null' => TRUE,
-      'size' => 'normal',
-      'unsigned' => TRUE,
-    ),
-    'comment_body_value' => array(
-      'type' => 'text',
-      'not null' => FALSE,
-      'size' => 'normal',
-    ),
-    'comment_body_format' => array(
-      'type' => 'varchar',
-      'not null' => FALSE,
-      'length' => '255',
-    ),
-  ),
-  'primary key' => array(
-    'entity_type',
-    'deleted',
-    'entity_id',
-    'language',
-    'delta',
-  ),
-  'mysql_character_set' => 'utf8',
-));
-
-$connection->insert('field_data_comment_body')
-->fields(array(
-  'entity_type',
-  'bundle',
-  'deleted',
-  'entity_id',
-  'revision_id',
-  'language',
-  'delta',
-  'comment_body_value',
-  'comment_body_format',
-))
-->values(array(
-  'entity_type' => 'comment',
-  'bundle' => 'comment_node_test_content_type',
-  'deleted' => '0',
-  'entity_id' => '1',
-  'revision_id' => '1',
-  'language' => 'und',
-  'delta' => '0',
-  'comment_body_value' => 'This is a comment',
-  'comment_body_format' => 'filtered_html',
-))
-->values(array(
-  'entity_type' => 'comment',
-  'bundle' => 'comment_node_article',
-  'deleted' => '0',
-  'entity_id' => '2',
-  'revision_id' => '2',
-  'language' => 'und',
-  'delta' => '0',
-  'comment_body_value' => 'TNG is better than DS9.',
-  'comment_body_format' => 'filtered_html',
-))
-->values(array(
-  'entity_type' => 'comment',
-  'bundle' => 'comment_node_article',
-  'deleted' => '0',
-  'entity_id' => '3',
-  'revision_id' => '3',
-  'language' => 'und',
-  'delta' => '0',
-  'comment_body_value' => 'This is a comment to an Icelandic translation.',
-  'comment_body_format' => 'filtered_html',
-))
-->values(array(
-  'entity_type' => 'comment',
-  'bundle' => 'comment_node_test_content_type',
-  'deleted' => '0',
-  'entity_id' => '4',
-  'revision_id' => '4',
-  'language' => 'und',
-  'delta' => '0',
-  'comment_body_value' => 'A comment without language (migrated from Drupal 6)',
-  'comment_body_format' => 'filtered_html',
-))
-->execute();
-$connection->schema()->createTable('field_data_description_field', array(
+$connection->schema()->createTable('field_data_comment_body', array(
+  'fields' => array(
+    'entity_type' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '128',
+      'default' => '',
+    ),
+    'bundle' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '128',
+      'default' => '',
+    ),
+    'deleted' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'default' => '0',
+    ),
+    'entity_id' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'unsigned' => TRUE,
+    ),
+    'revision_id' => array(
+      'type' => 'int',
+      'not null' => FALSE,
+      'size' => 'normal',
+      'unsigned' => TRUE,
+    ),
+    'language' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '32',
+      'default' => '',
+    ),
+    'delta' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'unsigned' => TRUE,
+    ),
+    'comment_body_value' => array(
+      'type' => 'text',
+      'not null' => FALSE,
+      'size' => 'normal',
+    ),
+    'comment_body_format' => array(
+      'type' => 'varchar',
+      'not null' => FALSE,
+      'length' => '255',
+    ),
+  ),
+  'primary key' => array(
+    'entity_type',
+    'deleted',
+    'entity_id',
+    'language',
+    'delta',
+  ),
+  'mysql_character_set' => 'utf8',
+));
+
+$connection->insert('field_data_comment_body')
+->fields(array(
+  'entity_type',
+  'bundle',
+  'deleted',
+  'entity_id',
+  'revision_id',
+  'language',
+  'delta',
+  'comment_body_value',
+  'comment_body_format',
+))
+->values(array(
+  'entity_type' => 'comment',
+  'bundle' => 'comment_node_test_content_type',
+  'deleted' => '0',
+  'entity_id' => '1',
+  'revision_id' => '1',
+  'language' => 'und',
+  'delta' => '0',
+  'comment_body_value' => 'This is a comment',
+  'comment_body_format' => 'filtered_html',
+))
+->values(array(
+  'entity_type' => 'comment',
+  'bundle' => 'comment_node_article',
+  'deleted' => '0',
+  'entity_id' => '2',
+  'revision_id' => '2',
+  'language' => 'und',
+  'delta' => '0',
+  'comment_body_value' => 'TNG is better than DS9.',
+  'comment_body_format' => 'filtered_html',
+))
+->values(array(
+  'entity_type' => 'comment',
+  'bundle' => 'comment_node_article',
+  'deleted' => '0',
+  'entity_id' => '3',
+  'revision_id' => '3',
+  'language' => 'und',
+  'delta' => '0',
+  'comment_body_value' => 'This is a comment to an Icelandic translation.',
+  'comment_body_format' => 'filtered_html',
+))
+->values(array(
+  'entity_type' => 'comment',
+  'bundle' => 'comment_node_test_content_type',
+  'deleted' => '0',
+  'entity_id' => '4',
+  'revision_id' => '4',
+  'language' => 'und',
+  'delta' => '0',
+  'comment_body_value' => 'A comment without language (migrated from Drupal 6)',
+  'comment_body_format' => 'filtered_html',
+))
+->execute();
+$connection->schema()->createTable('field_data_description_field', array(
   'fields' => array(
     'entity_type' => array(
       'type' => 'varchar',
@@ -6230,7 +5915,10 @@
       'language',
     ),
     'field_chancellor_format' => array(
-      'field_chancellor_format',
+      array(
+        'field_chancellor_format',
+        '191',
+      ),
     ),
   ),
   'mysql_character_set' => 'utf8',
@@ -6271,6 +5959,89 @@
   'field_chancellor_format' => NULL,
 ))
 ->execute();
+$connection->schema()->createTable('field_data_field_checkbox', array(
+  'fields' => array(
+    'entity_type' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '128',
+      'default' => '',
+    ),
+    'bundle' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '128',
+      'default' => '',
+    ),
+    'deleted' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'tiny',
+      'default' => '0',
+    ),
+    'entity_id' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'unsigned' => TRUE,
+    ),
+    'revision_id' => array(
+      'type' => 'int',
+      'not null' => FALSE,
+      'size' => 'normal',
+      'unsigned' => TRUE,
+    ),
+    'language' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '32',
+      'default' => '',
+    ),
+    'delta' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'unsigned' => TRUE,
+    ),
+    'field_checkbox_value' => array(
+      'type' => 'int',
+      'not null' => FALSE,
+      'size' => 'normal',
+    ),
+  ),
+  'primary key' => array(
+    'entity_type',
+    'entity_id',
+    'deleted',
+    'delta',
+    'language',
+  ),
+  'indexes' => array(
+    'entity_type' => array(
+      'entity_type',
+    ),
+    'bundle' => array(
+      'bundle',
+    ),
+    'deleted' => array(
+      'deleted',
+    ),
+    'entity_id' => array(
+      'entity_id',
+    ),
+    'revision_id' => array(
+      'revision_id',
+    ),
+    'language' => array(
+      'language',
+    ),
+    'field_checkbox_value' => array(
+      'field_checkbox_value',
+    ),
+  ),
+  'mysql_character_set' => 'utf8',
+));
+
 $connection->schema()->createTable('field_data_field_color', array(
   'fields' => array(
     'entity_type' => array(
@@ -6456,6 +6227,11 @@
     'language',
     'delta',
   ),
+  'indexes' => array(
+    'field_date_value' => array(
+      'field_date_value',
+    ),
+  ),
   'mysql_character_set' => 'utf8',
 ));
 
@@ -6528,12 +6304,12 @@
     'field_date_with_end_time_value' => array(
       'type' => 'int',
       'not null' => FALSE,
-      'size' => 'normal',
+      'size' => 'big',
     ),
     'field_date_with_end_time_value2' => array(
       'type' => 'int',
       'not null' => FALSE,
-      'size' => 'normal',
+      'size' => 'big',
     ),
   ),
   'primary key' => array(
@@ -6543,6 +6319,15 @@
     'language',
     'delta',
   ),
+  'indexes' => array(
+    'field_date_with_end_time_value' => array(
+      'field_date_with_end_time_value',
+      'field_date_with_end_time_value2',
+    ),
+    'field_date_with_end_time_value2' => array(
+      'field_date_with_end_time_value2',
+    ),
+  ),
   'mysql_character_set' => 'utf8',
 ));
 
@@ -6627,6 +6412,11 @@
     'language',
     'delta',
   ),
+  'indexes' => array(
+    'field_date_without_time_value' => array(
+      'field_date_without_time_value',
+    ),
+  ),
   'mysql_character_set' => 'utf8',
 ));
 
@@ -6712,6 +6502,11 @@
     'language',
     'delta',
   ),
+  'indexes' => array(
+    'field_datetime_without_time_value' => array(
+      'field_datetime_without_time_value',
+    ),
+  ),
   'mysql_character_set' => 'utf8',
 ));
 
@@ -6916,6 +6711,13 @@
     'language' => array(
       'language',
     ),
+    'field_event_value' => array(
+      'field_event_value',
+      'field_event_value2',
+    ),
+    'field_event_value2' => array(
+      'field_event_value2',
+    ),
   ),
   'mysql_character_set' => 'utf8',
 ));
@@ -7421,6 +7223,7 @@
   ),
   'mysql_character_set' => 'utf8',
 ));
+
 $connection->schema()->createTable('field_data_field_image_miw', array(
   'fields' => array(
     'entity_type' => array(
@@ -7741,6 +7544,16 @@
   'delta' => '0',
   'field_integer_value' => '3000000',
 ))
+->values(array(
+  'entity_type' => 'comment',
+  'bundle' => 'comment_node_test_content_type',
+  'deleted' => '0',
+  'entity_id' => '4',
+  'revision_id' => '4',
+  'language' => 'en',
+  'delta' => '0',
+  'field_integer_value' => '10',
+))
 ->values(array(
   'entity_type' => 'node',
   'bundle' => 'test_content_type',
@@ -7772,74 +7585,64 @@
   'field_integer_value' => '7',
 ))
 ->values(array(
-  'entity_type' => 'user',
-  'bundle' => 'user',
+  'entity_type' => 'taxonomy_term',
+  'bundle' => 'test_vocabulary',
   'deleted' => '0',
-  'entity_id' => '2',
-  'revision_id' => '2',
+  'entity_id' => '4',
+  'revision_id' => '4',
   'language' => 'en',
   'delta' => '0',
-  'field_integer_value' => '99',
+  'field_integer_value' => '6',
 ))
 ->values(array(
-  'entity_type' => 'user',
-  'bundle' => 'user',
+  'entity_type' => 'taxonomy_term',
+  'bundle' => 'test_vocabulary',
   'deleted' => '0',
-  'entity_id' => '2',
-  'revision_id' => '2',
+  'entity_id' => '4',
+  'revision_id' => '4',
   'language' => 'fr',
   'delta' => '0',
-  'field_integer_value' => '9',
-))
-->values(array(
-  'entity_type' => 'user',
-  'bundle' => 'user',
-  'deleted' => '0',
-  'entity_id' => '2',
-  'revision_id' => '2',
-  'language' => 'is',
-  'delta' => '0',
-  'field_integer_value' => '1',
+  'field_integer_value' => '5',
 ))
 ->values(array(
-  'entity_type' => 'comment',
-  'bundle' => 'comment_node_test_content_type',
+  'entity_type' => 'taxonomy_term',
+  'bundle' => 'test_vocabulary',
   'deleted' => '0',
   'entity_id' => '4',
   'revision_id' => '4',
-  'language' => 'en',
+  'language' => 'is',
   'delta' => '0',
-  'field_integer_value' => '10',
+  'field_integer_value' => '4',
 ))
 ->values(array(
-  'entity_type' => 'taxonomy_term',
-  'bundle' => 'test_vocabulary',
+  'entity_type' => 'user',
+  'bundle' => 'user',
   'deleted' => '0',
-  'entity_id' => '4',
-  'revision_id' => '4',
+  'entity_id' => '2',
+  'revision_id' => '2',
   'language' => 'en',
   'delta' => '0',
-  'field_integer_value' => '6',
+  'field_integer_value' => '99',
 ))
 ->values(array(
-  'entity_type' => 'taxonomy_term',
-  'bundle' => 'test_vocabulary',
+  'entity_type' => 'user',
+  'bundle' => 'user',
   'deleted' => '0',
-  'entity_id' => '4',
-  'revision_id' => '4',
+  'entity_id' => '2',
+  'revision_id' => '2',
   'language' => 'fr',
   'delta' => '0',
-  'field_integer_value' => '5',
+  'field_integer_value' => '9',
 ))
 ->values(array(
-  'entity_type' => 'taxonomy_term',
-  'bundle' => 'test_vocabulary',
+  'entity_type' => 'user',
+  'bundle' => 'user',
   'deleted' => '0',
-  'entity_id' => '4',
-  'revision_id' => '4',
+  'entity_id' => '2',
+  'revision_id' => '2',
   'language' => 'is',
   'delta' => '0',
-  'field_integer_value' => '4',
+  'field_integer_value' => '1',
 ))
 ->execute();
 $connection->schema()->createTable('field_data_field_integer_list', array(
@@ -9022,7 +8825,10 @@
       'language',
     ),
     'field_sector_format' => array(
-      'field_sector_format',
+      array(
+        'field_sector_format',
+        '191',
+      ),
     ),
   ),
   'mysql_character_set' => 'utf8',
@@ -9138,11 +8944,11 @@
   'entity_type' => 'node',
   'bundle' => 'article',
   'deleted' => '0',
-  'entity_id' => '3',
-  'revision_id' => '12',
+  'entity_id' => '2',
+  'revision_id' => '11',
   'language' => 'und',
-  'delta' => '0',
-  'field_tags_tid' => '9',
+  'delta' => '1',
+  'field_tags_tid' => '14',
 ))
 ->values(array(
   'entity_type' => 'node',
@@ -9151,8 +8957,8 @@
   'entity_id' => '2',
   'revision_id' => '11',
   'language' => 'und',
-  'delta' => '1',
-  'field_tags_tid' => '14',
+  'delta' => '2',
+  'field_tags_tid' => '17',
 ))
 ->values(array(
   'entity_type' => 'node',
@@ -9161,18 +8967,18 @@
   'entity_id' => '3',
   'revision_id' => '12',
   'language' => 'und',
-  'delta' => '1',
-  'field_tags_tid' => '14',
+  'delta' => '0',
+  'field_tags_tid' => '9',
 ))
 ->values(array(
   'entity_type' => 'node',
   'bundle' => 'article',
   'deleted' => '0',
-  'entity_id' => '2',
-  'revision_id' => '11',
+  'entity_id' => '3',
+  'revision_id' => '12',
   'language' => 'und',
-  'delta' => '2',
-  'field_tags_tid' => '17',
+  'delta' => '1',
+  'field_tags_tid' => '14',
 ))
 ->values(array(
   'entity_type' => 'node',
@@ -9266,28 +9072,28 @@
 ));
 
 $connection->insert('field_data_field_telephone')
-  ->fields(array(
-    'entity_type',
-    'bundle',
-    'deleted',
-    'entity_id',
-    'revision_id',
-    'language',
-    'delta',
-    'field_telephone_value',
-  ))
-  ->values(array(
-    'entity_type' => 'node',
-    'bundle' => 'test_content_type',
-    'deleted' => '0',
-    'entity_id' => '1',
-    'revision_id' => '1',
-    'language' => 'und',
-    'delta' => '0',
-    'field_telephone_value' => '99-99-99-99',
-  ))
-  ->execute();
-$connection->schema()->createTable('field_data_field_termplain', array(
+->fields(array(
+  'entity_type',
+  'bundle',
+  'deleted',
+  'entity_id',
+  'revision_id',
+  'language',
+  'delta',
+  'field_telephone_value',
+))
+->values(array(
+  'entity_type' => 'node',
+  'bundle' => 'test_content_type',
+  'deleted' => '0',
+  'entity_id' => '1',
+  'revision_id' => '1',
+  'language' => 'und',
+  'delta' => '0',
+  'field_telephone_value' => '99-99-99-99',
+))
+->execute();
+$connection->schema()->createTable('field_data_field_term_entityreference', array(
   'fields' => array(
     'entity_type' => array(
       'type' => 'varchar',
@@ -9304,7 +9110,7 @@
     'deleted' => array(
       'type' => 'int',
       'not null' => TRUE,
-      'size' => 'normal',
+      'size' => 'tiny',
       'default' => '0',
     ),
     'entity_id' => array(
@@ -9331,85 +9137,79 @@
       'size' => 'normal',
       'unsigned' => TRUE,
     ),
-    'field_termplain_tid' => array(
+    'field_term_entityreference_target_id' => array(
       'type' => 'int',
-      'not null' => FALSE,
+      'not null' => TRUE,
       'size' => 'normal',
       'unsigned' => TRUE,
     ),
   ),
   'primary key' => array(
     'entity_type',
-    'deleted',
     'entity_id',
-    'language',
+    'deleted',
     'delta',
+    'language',
   ),
-  'mysql_character_set' => 'utf8',
-));
-
-$connection->schema()->createTable('field_data_field_termrss', array(
-  'fields' => array(
+  'indexes' => array(
     'entity_type' => array(
-      'type' => 'varchar',
-      'not null' => TRUE,
-      'length' => '128',
-      'default' => '',
+      'entity_type',
     ),
     'bundle' => array(
-      'type' => 'varchar',
-      'not null' => TRUE,
-      'length' => '128',
-      'default' => '',
+      'bundle',
     ),
     'deleted' => array(
-      'type' => 'int',
-      'not null' => TRUE,
-      'size' => 'normal',
-      'default' => '0',
+      'deleted',
     ),
     'entity_id' => array(
-      'type' => 'int',
-      'not null' => TRUE,
-      'size' => 'normal',
-      'unsigned' => TRUE,
+      'entity_id',
     ),
     'revision_id' => array(
-      'type' => 'int',
-      'not null' => FALSE,
-      'size' => 'normal',
-      'unsigned' => TRUE,
+      'revision_id',
     ),
     'language' => array(
-      'type' => 'varchar',
-      'not null' => TRUE,
-      'length' => '32',
-      'default' => '',
-    ),
-    'delta' => array(
-      'type' => 'int',
-      'not null' => TRUE,
-      'size' => 'normal',
-      'unsigned' => TRUE,
+      'language',
     ),
-    'field_termrss_tid' => array(
-      'type' => 'int',
-      'not null' => FALSE,
-      'size' => 'normal',
-      'unsigned' => TRUE,
+    'field_term_entityreference_target_id' => array(
+      'field_term_entityreference_target_id',
     ),
   ),
-  'primary key' => array(
-    'entity_type',
-    'deleted',
-    'entity_id',
-    'language',
-    'delta',
-  ),
   'mysql_character_set' => 'utf8',
 ));
 
-$connection->schema()->createTable('field_data_field_term_entityreference', array(
+$connection->insert('field_data_field_term_entityreference')
+->fields(array(
+  'entity_type',
+  'bundle',
+  'deleted',
+  'entity_id',
+  'revision_id',
+  'language',
+  'delta',
+  'field_term_entityreference_target_id',
+))
+->values(array(
+  'entity_type' => 'node',
+  'bundle' => 'test_content_type',
+  'deleted' => '0',
+  'entity_id' => '1',
+  'revision_id' => '1',
+  'language' => 'und',
+  'delta' => '0',
+  'field_term_entityreference_target_id' => '17',
+))
+->values(array(
+  'entity_type' => 'node',
+  'bundle' => 'test_content_type',
+  'deleted' => '0',
+  'entity_id' => '1',
+  'revision_id' => '1',
+  'language' => 'und',
+  'delta' => '1',
+  'field_term_entityreference_target_id' => '15',
+))
+->execute();
+$connection->schema()->createTable('field_data_field_term_reference', array(
   'fields' => array(
     'entity_type' => array(
       'type' => 'varchar',
@@ -9426,7 +9226,7 @@
     'deleted' => array(
       'type' => 'int',
       'not null' => TRUE,
-      'size' => 'tiny',
+      'size' => 'normal',
       'default' => '0',
     ),
     'entity_id' => array(
@@ -9453,47 +9253,24 @@
       'size' => 'normal',
       'unsigned' => TRUE,
     ),
-    'field_term_entityreference_target_id' => array(
+    'field_term_reference_tid' => array(
       'type' => 'int',
-      'not null' => TRUE,
+      'not null' => FALSE,
       'size' => 'normal',
       'unsigned' => TRUE,
     ),
   ),
   'primary key' => array(
     'entity_type',
-    'entity_id',
     'deleted',
-    'delta',
+    'entity_id',
     'language',
-  ),
-  'indexes' => array(
-    'entity_type' => array(
-      'entity_type',
-    ),
-    'bundle' => array(
-      'bundle',
-    ),
-    'deleted' => array(
-      'deleted',
-    ),
-    'entity_id' => array(
-      'entity_id',
-    ),
-    'revision_id' => array(
-      'revision_id',
-    ),
-    'language' => array(
-      'language',
-    ),
-    'field_term_entityreference_target_id' => array(
-      'field_term_entityreference_target_id',
-    ),
+    'delta',
   ),
   'mysql_character_set' => 'utf8',
 ));
 
-$connection->insert('field_data_field_term_entityreference')
+$connection->insert('field_data_field_term_reference')
 ->fields(array(
   'entity_type',
   'bundle',
@@ -9502,7 +9279,7 @@
   'revision_id',
   'language',
   'delta',
-  'field_term_entityreference_target_id',
+  'field_term_reference_tid',
 ))
 ->values(array(
   'entity_type' => 'node',
@@ -9512,20 +9289,20 @@
   'revision_id' => '1',
   'language' => 'und',
   'delta' => '0',
-  'field_term_entityreference_target_id' => '17',
+  'field_term_reference_tid' => '4',
 ))
 ->values(array(
-  'entity_type' => 'node',
-  'bundle' => 'test_content_type',
+  'entity_type' => 'taxonomy_term',
+  'bundle' => 'test_vocabulary',
   'deleted' => '0',
-  'entity_id' => '1',
-  'revision_id' => '1',
+  'entity_id' => '2',
+  'revision_id' => '2',
   'language' => 'und',
-  'delta' => '1',
-  'field_term_entityreference_target_id' => '15',
+  'delta' => '0',
+  'field_term_reference_tid' => '3',
 ))
 ->execute();
-$connection->schema()->createTable('field_data_field_term_reference', array(
+$connection->schema()->createTable('field_data_field_termplain', array(
   'fields' => array(
     'entity_type' => array(
       'type' => 'varchar',
@@ -9569,7 +9346,68 @@
       'size' => 'normal',
       'unsigned' => TRUE,
     ),
-    'field_term_reference_tid' => array(
+    'field_termplain_tid' => array(
+      'type' => 'int',
+      'not null' => FALSE,
+      'size' => 'normal',
+      'unsigned' => TRUE,
+    ),
+  ),
+  'primary key' => array(
+    'entity_type',
+    'deleted',
+    'entity_id',
+    'language',
+    'delta',
+  ),
+  'mysql_character_set' => 'utf8',
+));
+
+$connection->schema()->createTable('field_data_field_termrss', array(
+  'fields' => array(
+    'entity_type' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '128',
+      'default' => '',
+    ),
+    'bundle' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '128',
+      'default' => '',
+    ),
+    'deleted' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'default' => '0',
+    ),
+    'entity_id' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'unsigned' => TRUE,
+    ),
+    'revision_id' => array(
+      'type' => 'int',
+      'not null' => FALSE,
+      'size' => 'normal',
+      'unsigned' => TRUE,
+    ),
+    'language' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '32',
+      'default' => '',
+    ),
+    'delta' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'unsigned' => TRUE,
+    ),
+    'field_termrss_tid' => array(
       'type' => 'int',
       'not null' => FALSE,
       'size' => 'normal',
@@ -9586,38 +9424,6 @@
   'mysql_character_set' => 'utf8',
 ));
 
-$connection->insert('field_data_field_term_reference')
-->fields(array(
-  'entity_type',
-  'bundle',
-  'deleted',
-  'entity_id',
-  'revision_id',
-  'language',
-  'delta',
-  'field_term_reference_tid',
-))
-->values(array(
-  'entity_type' => 'node',
-  'bundle' => 'test_content_type',
-  'deleted' => '0',
-  'entity_id' => '1',
-  'revision_id' => '1',
-  'language' => 'und',
-  'delta' => '0',
-  'field_term_reference_tid' => '4',
-))
-->values(array(
-  'entity_type' => 'taxonomy_term',
-  'bundle' => 'test_vocabulary',
-  'deleted' => '0',
-  'entity_id' => '2',
-  'revision_id' => '2',
-  'language' => 'und',
-  'delta' => '0',
-  'field_term_reference_tid' => '3',
-))
-->execute();
 $connection->schema()->createTable('field_data_field_text', array(
   'fields' => array(
     'entity_type' => array(
@@ -10061,6 +9867,7 @@
   ),
   'mysql_character_set' => 'utf8',
 ));
+
 $connection->insert('field_data_field_text_long_plain')
 ->fields(array(
   'entity_type',
@@ -10118,7 +9925,6 @@
   'field_text_long_plain_format' => NULL,
 ))
 ->execute();
-
 $connection->schema()->createTable('field_data_field_text_long_plain_filtered', array(
   'fields' => array(
     'entity_type' => array(
@@ -10797,7 +10603,10 @@
       'language',
     ),
     'field_training_format' => array(
-      'field_training_format',
+      array(
+        'field_training_format',
+        '191',
+      ),
     ),
   ),
   'mysql_character_set' => 'utf8',
@@ -12302,214 +12111,130 @@
   'body_format' => 'filtered_html',
 ))
 ->execute();
-$connection->schema()->createTable('field_revision_field_checkbox', array(
-  'fields' => array(
-    'entity_type' => array(
-      'type' => 'varchar',
-      'not null' => TRUE,
-      'length' => '128',
-      'default' => '',
-    ),
-    'bundle' => array(
-      'type' => 'varchar',
-      'not null' => TRUE,
-      'length' => '128',
-      'default' => '',
-    ),
-    'deleted' => array(
-      'type' => 'int',
-      'not null' => TRUE,
-      'size' => 'tiny',
-      'default' => '0',
-    ),
-    'entity_id' => array(
-      'type' => 'int',
-      'not null' => TRUE,
-      'size' => 'normal',
-      'unsigned' => TRUE,
-    ),
-    'revision_id' => array(
-      'type' => 'int',
-      'not null' => TRUE,
-      'size' => 'normal',
-      'unsigned' => TRUE,
-    ),
-    'language' => array(
-      'type' => 'varchar',
-      'not null' => TRUE,
-      'length' => '32',
-      'default' => '',
-    ),
-    'delta' => array(
-      'type' => 'int',
-      'not null' => TRUE,
-      'size' => 'normal',
-      'unsigned' => TRUE,
-    ),
-    'field_checkbox_value' => array(
-      'type' => 'int',
-      'not null' => FALSE,
-      'size' => 'normal',
-    ),
-  ),
-  'primary key' => array(
-    'entity_type',
-    'entity_id',
-    'revision_id',
-    'deleted',
-    'delta',
-    'language',
-  ),
-  'indexes' => array(
-    'entity_type' => array(
-      'entity_type',
-    ),
-    'bundle' => array(
-      'bundle',
-    ),
-    'deleted' => array(
-      'deleted',
-    ),
-    'entity_id' => array(
-      'entity_id',
-    ),
-    'revision_id' => array(
-      'revision_id',
-    ),
-    'language' => array(
-      'language',
-    ),
-    'field_checkbox_value' => array(
-      'field_checkbox_value',
-    ),
-  ),
-  'mysql_character_set' => 'utf8',
-));
-
-$connection->schema()->createTable('field_revision_comment_body', array(
-  'fields' => array(
-    'entity_type' => array(
-      'type' => 'varchar',
-      'not null' => TRUE,
-      'length' => '128',
-      'default' => '',
-    ),
-    'bundle' => array(
-      'type' => 'varchar',
-      'not null' => TRUE,
-      'length' => '128',
-      'default' => '',
-    ),
-    'deleted' => array(
-      'type' => 'int',
-      'not null' => TRUE,
-      'size' => 'normal',
-      'default' => '0',
-    ),
-    'entity_id' => array(
-      'type' => 'int',
-      'not null' => TRUE,
-      'size' => 'normal',
-      'unsigned' => TRUE,
-    ),
-    'revision_id' => array(
-      'type' => 'int',
-      'not null' => TRUE,
-      'size' => 'normal',
-      'unsigned' => TRUE,
-    ),
-    'language' => array(
-      'type' => 'varchar',
-      'not null' => TRUE,
-      'length' => '32',
-      'default' => '',
-    ),
-    'delta' => array(
-      'type' => 'int',
-      'not null' => TRUE,
-      'size' => 'normal',
-      'unsigned' => TRUE,
-    ),
-    'comment_body_value' => array(
-      'type' => 'text',
-      'not null' => FALSE,
-      'size' => 'normal',
-    ),
-    'comment_body_format' => array(
-      'type' => 'varchar',
-      'not null' => FALSE,
-      'length' => '255',
-    ),
-  ),
-  'primary key' => array(
-    'entity_type',
-    'deleted',
-    'entity_id',
-    'revision_id',
-    'language',
-    'delta',
-  ),
-  'mysql_character_set' => 'utf8',
-));
-
-$connection->insert('field_revision_comment_body')
-->fields(array(
-  'entity_type',
-  'bundle',
-  'deleted',
-  'entity_id',
-  'revision_id',
-  'language',
-  'delta',
-  'comment_body_value',
-  'comment_body_format',
-))
-->values(array(
-  'entity_type' => 'comment',
-  'bundle' => 'comment_node_test_content_type',
-  'deleted' => '0',
-  'entity_id' => '1',
-  'revision_id' => '1',
-  'language' => 'und',
-  'delta' => '0',
-  'comment_body_value' => 'This is a comment',
-  'comment_body_format' => 'filtered_html',
-))
-->values(array(
-  'entity_type' => 'comment',
-  'bundle' => 'comment_node_article',
-  'deleted' => '0',
-  'entity_id' => '2',
-  'revision_id' => '2',
-  'language' => 'und',
-  'delta' => '0',
-  'comment_body_value' => 'TNG is better than DS9.',
-  'comment_body_format' => 'filtered_html',
-))
-->values(array(
-  'entity_type' => 'comment',
-  'bundle' => 'comment_node_article',
-  'deleted' => '0',
-  'entity_id' => '3',
-  'revision_id' => '3',
-  'language' => 'und',
-  'delta' => '0',
-  'comment_body_value' => 'This is a comment to an Icelandic translation.',
-  'comment_body_format' => 'filtered_html',
-))
-->values(array(
-  'entity_type' => 'comment',
-  'bundle' => 'comment_node_test_content_type',
-  'deleted' => '0',
-  'entity_id' => '4',
-  'revision_id' => '4',
-  'language' => 'und',
-  'delta' => '0',
-  'comment_body_value' => 'A comment without language (migrated from Drupal 6)',
-  'comment_body_format' => 'filtered_html',
-))
-->execute();
-$connection->schema()->createTable('field_revision_description_field', array(
+$connection->schema()->createTable('field_revision_comment_body', array(
+  'fields' => array(
+    'entity_type' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '128',
+      'default' => '',
+    ),
+    'bundle' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '128',
+      'default' => '',
+    ),
+    'deleted' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'default' => '0',
+    ),
+    'entity_id' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'unsigned' => TRUE,
+    ),
+    'revision_id' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'unsigned' => TRUE,
+    ),
+    'language' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '32',
+      'default' => '',
+    ),
+    'delta' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'unsigned' => TRUE,
+    ),
+    'comment_body_value' => array(
+      'type' => 'text',
+      'not null' => FALSE,
+      'size' => 'normal',
+    ),
+    'comment_body_format' => array(
+      'type' => 'varchar',
+      'not null' => FALSE,
+      'length' => '255',
+    ),
+  ),
+  'primary key' => array(
+    'entity_type',
+    'deleted',
+    'entity_id',
+    'revision_id',
+    'language',
+    'delta',
+  ),
+  'mysql_character_set' => 'utf8',
+));
+
+$connection->insert('field_revision_comment_body')
+->fields(array(
+  'entity_type',
+  'bundle',
+  'deleted',
+  'entity_id',
+  'revision_id',
+  'language',
+  'delta',
+  'comment_body_value',
+  'comment_body_format',
+))
+->values(array(
+  'entity_type' => 'comment',
+  'bundle' => 'comment_node_test_content_type',
+  'deleted' => '0',
+  'entity_id' => '1',
+  'revision_id' => '1',
+  'language' => 'und',
+  'delta' => '0',
+  'comment_body_value' => 'This is a comment',
+  'comment_body_format' => 'filtered_html',
+))
+->values(array(
+  'entity_type' => 'comment',
+  'bundle' => 'comment_node_article',
+  'deleted' => '0',
+  'entity_id' => '2',
+  'revision_id' => '2',
+  'language' => 'und',
+  'delta' => '0',
+  'comment_body_value' => 'TNG is better than DS9.',
+  'comment_body_format' => 'filtered_html',
+))
+->values(array(
+  'entity_type' => 'comment',
+  'bundle' => 'comment_node_article',
+  'deleted' => '0',
+  'entity_id' => '3',
+  'revision_id' => '3',
+  'language' => 'und',
+  'delta' => '0',
+  'comment_body_value' => 'This is a comment to an Icelandic translation.',
+  'comment_body_format' => 'filtered_html',
+))
+->values(array(
+  'entity_type' => 'comment',
+  'bundle' => 'comment_node_test_content_type',
+  'deleted' => '0',
+  'entity_id' => '4',
+  'revision_id' => '4',
+  'language' => 'und',
+  'delta' => '0',
+  'comment_body_value' => 'A comment without language (migrated from Drupal 6)',
+  'comment_body_format' => 'filtered_html',
+))
+->execute();
+$connection->schema()->createTable('field_revision_description_field', array(
   'fields' => array(
     'entity_type' => array(
       'type' => 'varchar',
@@ -12866,7 +12591,10 @@
       'language',
     ),
     'field_chancellor_format' => array(
-      'field_chancellor_format',
+      array(
+        'field_chancellor_format',
+        '191',
+      ),
     ),
   ),
   'mysql_character_set' => 'utf8',
@@ -12907,6 +12635,90 @@
   'field_chancellor_format' => NULL,
 ))
 ->execute();
+$connection->schema()->createTable('field_revision_field_checkbox', array(
+  'fields' => array(
+    'entity_type' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '128',
+      'default' => '',
+    ),
+    'bundle' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '128',
+      'default' => '',
+    ),
+    'deleted' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'tiny',
+      'default' => '0',
+    ),
+    'entity_id' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'unsigned' => TRUE,
+    ),
+    'revision_id' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'unsigned' => TRUE,
+    ),
+    'language' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '32',
+      'default' => '',
+    ),
+    'delta' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'unsigned' => TRUE,
+    ),
+    'field_checkbox_value' => array(
+      'type' => 'int',
+      'not null' => FALSE,
+      'size' => 'normal',
+    ),
+  ),
+  'primary key' => array(
+    'entity_type',
+    'entity_id',
+    'revision_id',
+    'deleted',
+    'delta',
+    'language',
+  ),
+  'indexes' => array(
+    'entity_type' => array(
+      'entity_type',
+    ),
+    'bundle' => array(
+      'bundle',
+    ),
+    'deleted' => array(
+      'deleted',
+    ),
+    'entity_id' => array(
+      'entity_id',
+    ),
+    'revision_id' => array(
+      'revision_id',
+    ),
+    'language' => array(
+      'language',
+    ),
+    'field_checkbox_value' => array(
+      'field_checkbox_value',
+    ),
+  ),
+  'mysql_character_set' => 'utf8',
+));
+
 $connection->schema()->createTable('field_revision_field_color', array(
   'fields' => array(
     'entity_type' => array(
@@ -13094,6 +12906,11 @@
     'language',
     'delta',
   ),
+  'indexes' => array(
+    'field_date_value' => array(
+      'field_date_value',
+    ),
+  ),
   'mysql_character_set' => 'utf8',
 ));
 
@@ -13166,12 +12983,12 @@
     'field_date_with_end_time_value' => array(
       'type' => 'int',
       'not null' => FALSE,
-      'size' => 'normal',
+      'size' => 'big',
     ),
     'field_date_with_end_time_value2' => array(
       'type' => 'int',
       'not null' => FALSE,
-      'size' => 'normal',
+      'size' => 'big',
     ),
   ),
   'primary key' => array(
@@ -13182,6 +12999,15 @@
     'language',
     'delta',
   ),
+  'indexes' => array(
+    'field_date_with_end_time_value' => array(
+      'field_date_with_end_time_value',
+      'field_date_with_end_time_value2',
+    ),
+    'field_date_with_end_time_value2' => array(
+      'field_date_with_end_time_value2',
+    ),
+  ),
   'mysql_character_set' => 'utf8',
 ));
 
@@ -13267,6 +13093,11 @@
     'language',
     'delta',
   ),
+  'indexes' => array(
+    'field_date_without_time_value' => array(
+      'field_date_without_time_value',
+    ),
+  ),
   'mysql_character_set' => 'utf8',
 ));
 
@@ -13353,6 +13184,11 @@
     'language',
     'delta',
   ),
+  'indexes' => array(
+    'field_datetime_without_time_value' => array(
+      'field_datetime_without_time_value',
+    ),
+  ),
   'mysql_character_set' => 'utf8',
 ));
 
@@ -13559,6 +13395,13 @@
     'language' => array(
       'language',
     ),
+    'field_event_value' => array(
+      'field_event_value',
+      'field_event_value2',
+    ),
+    'field_event_value2' => array(
+      'field_event_value2',
+    ),
   ),
   'mysql_character_set' => 'utf8',
 ));
@@ -14393,6 +14236,16 @@
   'delta' => '0',
   'field_integer_value' => '3000000',
 ))
+->values(array(
+  'entity_type' => 'comment',
+  'bundle' => 'comment_node_test_content_type',
+  'deleted' => '0',
+  'entity_id' => '4',
+  'revision_id' => '4',
+  'language' => 'en',
+  'delta' => '0',
+  'field_integer_value' => '10',
+))
 ->values(array(
   'entity_type' => 'node',
   'bundle' => 'test_content_type',
@@ -14423,26 +14276,6 @@
   'delta' => '0',
   'field_integer_value' => '7',
 ))
-->values(array(
-  'entity_type' => 'user',
-  'bundle' => 'user',
-  'deleted' => '0',
-  'entity_id' => '2',
-  'revision_id' => '2',
-  'language' => 'en',
-  'delta' => '0',
-  'field_integer_value' => '99',
-))
-->values(array(
-  'entity_type' => 'comment',
-  'bundle' => 'comment_node_test_content_type',
-  'deleted' => '0',
-  'entity_id' => '4',
-  'revision_id' => '4',
-  'language' => 'en',
-  'delta' => '0',
-  'field_integer_value' => '10',
-))
 ->values(array(
   'entity_type' => 'taxonomy_term',
   'bundle' => 'test_vocabulary',
@@ -14473,6 +14306,16 @@
   'delta' => '0',
   'field_integer_value' => '4',
 ))
+->values(array(
+  'entity_type' => 'user',
+  'bundle' => 'user',
+  'deleted' => '0',
+  'entity_id' => '2',
+  'revision_id' => '2',
+  'language' => 'en',
+  'delta' => '0',
+  'field_integer_value' => '99',
+))
 ->execute();
 $connection->schema()->createTable('field_revision_field_integer_list', array(
   'fields' => array(
@@ -15789,7 +15632,10 @@
       'language',
     ),
     'field_sector_format' => array(
-      'field_sector_format',
+      array(
+        'field_sector_format',
+        '191',
+      ),
     ),
   ),
   'mysql_character_set' => 'utf8',
@@ -15896,8 +15742,8 @@
   'entity_type' => 'node',
   'bundle' => 'article',
   'deleted' => '0',
-  'entity_id' => '3',
-  'revision_id' => '12',
+  'entity_id' => '2',
+  'revision_id' => '2',
   'language' => 'und',
   'delta' => '0',
   'field_tags_tid' => '9',
@@ -15909,25 +15755,25 @@
   'entity_id' => '2',
   'revision_id' => '2',
   'language' => 'und',
-  'delta' => '0',
-  'field_tags_tid' => '9',
+  'delta' => '1',
+  'field_tags_tid' => '14',
 ))
 ->values(array(
   'entity_type' => 'node',
   'bundle' => 'article',
   'deleted' => '0',
   'entity_id' => '2',
-  'revision_id' => '11',
+  'revision_id' => '2',
   'language' => 'und',
-  'delta' => '0',
-  'field_tags_tid' => '9',
+  'delta' => '2',
+  'field_tags_tid' => '17',
 ))
 ->values(array(
   'entity_type' => 'node',
   'bundle' => 'article',
   'deleted' => '0',
-  'entity_id' => '3',
-  'revision_id' => '3',
+  'entity_id' => '2',
+  'revision_id' => '11',
   'language' => 'und',
   'delta' => '0',
   'field_tags_tid' => '9',
@@ -15936,8 +15782,8 @@
   'entity_type' => 'node',
   'bundle' => 'article',
   'deleted' => '0',
-  'entity_id' => '3',
-  'revision_id' => '12',
+  'entity_id' => '2',
+  'revision_id' => '11',
   'language' => 'und',
   'delta' => '1',
   'field_tags_tid' => '14',
@@ -15947,20 +15793,20 @@
   'bundle' => 'article',
   'deleted' => '0',
   'entity_id' => '2',
-  'revision_id' => '2',
+  'revision_id' => '11',
   'language' => 'und',
-  'delta' => '1',
-  'field_tags_tid' => '14',
+  'delta' => '2',
+  'field_tags_tid' => '17',
 ))
 ->values(array(
   'entity_type' => 'node',
   'bundle' => 'article',
   'deleted' => '0',
-  'entity_id' => '2',
-  'revision_id' => '11',
+  'entity_id' => '3',
+  'revision_id' => '3',
   'language' => 'und',
-  'delta' => '1',
-  'field_tags_tid' => '14',
+  'delta' => '0',
+  'field_tags_tid' => '9',
 ))
 ->values(array(
   'entity_type' => 'node',
@@ -15976,8 +15822,8 @@
   'entity_type' => 'node',
   'bundle' => 'article',
   'deleted' => '0',
-  'entity_id' => '2',
-  'revision_id' => '2',
+  'entity_id' => '3',
+  'revision_id' => '3',
   'language' => 'und',
   'delta' => '2',
   'field_tags_tid' => '17',
@@ -15986,21 +15832,21 @@
   'entity_type' => 'node',
   'bundle' => 'article',
   'deleted' => '0',
-  'entity_id' => '2',
-  'revision_id' => '11',
+  'entity_id' => '3',
+  'revision_id' => '12',
   'language' => 'und',
-  'delta' => '2',
-  'field_tags_tid' => '17',
+  'delta' => '0',
+  'field_tags_tid' => '9',
 ))
 ->values(array(
   'entity_type' => 'node',
   'bundle' => 'article',
   'deleted' => '0',
   'entity_id' => '3',
-  'revision_id' => '3',
+  'revision_id' => '12',
   'language' => 'und',
-  'delta' => '2',
-  'field_tags_tid' => '17',
+  'delta' => '1',
+  'field_tags_tid' => '14',
 ))
 ->values(array(
   'entity_type' => 'node',
@@ -16095,28 +15941,145 @@
 ));
 
 $connection->insert('field_revision_field_telephone')
-  ->fields(array(
+->fields(array(
+  'entity_type',
+  'bundle',
+  'deleted',
+  'entity_id',
+  'revision_id',
+  'language',
+  'delta',
+  'field_telephone_value',
+))
+->values(array(
+  'entity_type' => 'node',
+  'bundle' => 'test_content_type',
+  'deleted' => '0',
+  'entity_id' => '1',
+  'revision_id' => '1',
+  'language' => 'und',
+  'delta' => '0',
+  'field_telephone_value' => '99-99-99-99',
+))
+->execute();
+$connection->schema()->createTable('field_revision_field_term_entityreference', array(
+  'fields' => array(
+    'entity_type' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '128',
+      'default' => '',
+    ),
+    'bundle' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '128',
+      'default' => '',
+    ),
+    'deleted' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'tiny',
+      'default' => '0',
+    ),
+    'entity_id' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'unsigned' => TRUE,
+    ),
+    'revision_id' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'unsigned' => TRUE,
+    ),
+    'language' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '32',
+      'default' => '',
+    ),
+    'delta' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'unsigned' => TRUE,
+    ),
+    'field_term_entityreference_target_id' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'unsigned' => TRUE,
+    ),
+  ),
+  'primary key' => array(
     'entity_type',
-    'bundle',
-    'deleted',
     'entity_id',
     'revision_id',
-    'language',
+    'deleted',
     'delta',
-    'field_telephone_value',
-  ))
-  ->values(array(
-    'entity_type' => 'node',
-    'bundle' => 'test_content_type',
-    'deleted' => '0',
-    'entity_id' => '1',
-    'revision_id' => '1',
-    'language' => 'und',
-    'delta' => '0',
-    'field_telephone_value' => '99-99-99-99',
-  ))
-  ->execute();
-$connection->schema()->createTable('field_revision_field_term_entityreference', array(
+    'language',
+  ),
+  'indexes' => array(
+    'entity_type' => array(
+      'entity_type',
+    ),
+    'bundle' => array(
+      'bundle',
+    ),
+    'deleted' => array(
+      'deleted',
+    ),
+    'entity_id' => array(
+      'entity_id',
+    ),
+    'revision_id' => array(
+      'revision_id',
+    ),
+    'language' => array(
+      'language',
+    ),
+    'field_term_entityreference_target_id' => array(
+      'field_term_entityreference_target_id',
+    ),
+  ),
+  'mysql_character_set' => 'utf8',
+));
+
+$connection->insert('field_revision_field_term_entityreference')
+->fields(array(
+  'entity_type',
+  'bundle',
+  'deleted',
+  'entity_id',
+  'revision_id',
+  'language',
+  'delta',
+  'field_term_entityreference_target_id',
+))
+->values(array(
+  'entity_type' => 'node',
+  'bundle' => 'test_content_type',
+  'deleted' => '0',
+  'entity_id' => '1',
+  'revision_id' => '1',
+  'language' => 'und',
+  'delta' => '0',
+  'field_term_entityreference_target_id' => '17',
+))
+->values(array(
+  'entity_type' => 'node',
+  'bundle' => 'test_content_type',
+  'deleted' => '0',
+  'entity_id' => '1',
+  'revision_id' => '1',
+  'language' => 'und',
+  'delta' => '1',
+  'field_term_entityreference_target_id' => '15',
+))
+->execute();
+$connection->schema()->createTable('field_revision_field_term_reference', array(
   'fields' => array(
     'entity_type' => array(
       'type' => 'varchar',
@@ -16133,7 +16096,7 @@
     'deleted' => array(
       'type' => 'int',
       'not null' => TRUE,
-      'size' => 'tiny',
+      'size' => 'normal',
       'default' => '0',
     ),
     'entity_id' => array(
@@ -16160,48 +16123,25 @@
       'size' => 'normal',
       'unsigned' => TRUE,
     ),
-    'field_term_entityreference_target_id' => array(
+    'field_term_reference_tid' => array(
       'type' => 'int',
-      'not null' => TRUE,
+      'not null' => FALSE,
       'size' => 'normal',
       'unsigned' => TRUE,
     ),
   ),
   'primary key' => array(
     'entity_type',
+    'deleted',
     'entity_id',
     'revision_id',
-    'deleted',
-    'delta',
     'language',
-  ),
-  'indexes' => array(
-    'entity_type' => array(
-      'entity_type',
-    ),
-    'bundle' => array(
-      'bundle',
-    ),
-    'deleted' => array(
-      'deleted',
-    ),
-    'entity_id' => array(
-      'entity_id',
-    ),
-    'revision_id' => array(
-      'revision_id',
-    ),
-    'language' => array(
-      'language',
-    ),
-    'field_term_entityreference_target_id' => array(
-      'field_term_entityreference_target_id',
-    ),
+    'delta',
   ),
   'mysql_character_set' => 'utf8',
 ));
 
-$connection->insert('field_revision_field_term_entityreference')
+$connection->insert('field_revision_field_term_reference')
 ->fields(array(
   'entity_type',
   'bundle',
@@ -16210,7 +16150,7 @@
   'revision_id',
   'language',
   'delta',
-  'field_term_entityreference_target_id',
+  'field_term_reference_tid',
 ))
 ->values(array(
   'entity_type' => 'node',
@@ -16220,20 +16160,19 @@
   'revision_id' => '1',
   'language' => 'und',
   'delta' => '0',
-  'field_term_entityreference_target_id' => '17',
+  'field_term_reference_tid' => '4',
 ))
 ->values(array(
-  'entity_type' => 'node',
-  'bundle' => 'test_content_type',
+  'entity_type' => 'taxonomy_term',
+  'bundle' => 'test_vocabulary',
   'deleted' => '0',
-  'entity_id' => '1',
-  'revision_id' => '1',
+  'entity_id' => '2',
+  'revision_id' => '2',
   'language' => 'und',
-  'delta' => '1',
-  'field_term_entityreference_target_id' => '15',
+  'delta' => '0',
+  'field_term_reference_tid' => '3',
 ))
 ->execute();
-
 $connection->schema()->createTable('field_revision_field_termplain', array(
   'fields' => array(
     'entity_type' => array(
@@ -16358,100 +16297,6 @@
   'mysql_character_set' => 'utf8',
 ));
 
-$connection->schema()->createTable('field_revision_field_term_reference', array(
-  'fields' => array(
-    'entity_type' => array(
-      'type' => 'varchar',
-      'not null' => TRUE,
-      'length' => '128',
-      'default' => '',
-    ),
-    'bundle' => array(
-      'type' => 'varchar',
-      'not null' => TRUE,
-      'length' => '128',
-      'default' => '',
-    ),
-    'deleted' => array(
-      'type' => 'int',
-      'not null' => TRUE,
-      'size' => 'normal',
-      'default' => '0',
-    ),
-    'entity_id' => array(
-      'type' => 'int',
-      'not null' => TRUE,
-      'size' => 'normal',
-      'unsigned' => TRUE,
-    ),
-    'revision_id' => array(
-      'type' => 'int',
-      'not null' => TRUE,
-      'size' => 'normal',
-      'unsigned' => TRUE,
-    ),
-    'language' => array(
-      'type' => 'varchar',
-      'not null' => TRUE,
-      'length' => '32',
-      'default' => '',
-    ),
-    'delta' => array(
-      'type' => 'int',
-      'not null' => TRUE,
-      'size' => 'normal',
-      'unsigned' => TRUE,
-    ),
-    'field_term_reference_tid' => array(
-      'type' => 'int',
-      'not null' => FALSE,
-      'size' => 'normal',
-      'unsigned' => TRUE,
-    ),
-  ),
-  'primary key' => array(
-    'entity_type',
-    'deleted',
-    'entity_id',
-    'revision_id',
-    'language',
-    'delta',
-  ),
-  'mysql_character_set' => 'utf8',
-));
-
-$connection->insert('field_revision_field_term_reference')
-->fields(array(
-  'entity_type',
-  'bundle',
-  'deleted',
-  'entity_id',
-  'revision_id',
-  'language',
-  'delta',
-  'field_term_reference_tid',
-))
-->values(array(
-  'entity_type' => 'node',
-  'bundle' => 'test_content_type',
-  'deleted' => '0',
-  'entity_id' => '1',
-  'revision_id' => '1',
-  'language' => 'und',
-  'delta' => '0',
-  'field_term_reference_tid' => '4',
-))
-->values(array(
-  'entity_type' => 'taxonomy_term',
-  'bundle' => 'test_vocabulary',
-  'deleted' => '0',
-  'entity_id' => '2',
-  'revision_id' => '2',
-  'language' => 'und',
-  'delta' => '0',
-  'field_term_reference_tid' => '3',
-))
-->execute();
 $connection->schema()->createTable('field_revision_field_text', array(
   'fields' => array(
     'entity_type' => array(
@@ -16900,6 +16745,7 @@
   ),
   'mysql_character_set' => 'utf8',
 ));
+
 $connection->insert('field_revision_field_text_long_plain')
 ->fields(array(
   'entity_type',
@@ -16990,7 +16836,6 @@
   'field_text_long_plain_format' => NULL,
 ))
 ->execute();
-
 $connection->schema()->createTable('field_revision_field_text_long_plain_filtered', array(
   'fields' => array(
     'entity_type' => array(
@@ -17676,7 +17521,10 @@
       'language',
     ),
     'field_training_format' => array(
-      'field_training_format',
+      array(
+        'field_training_format',
+        '191',
+      ),
     ),
   ),
   'mysql_character_set' => 'utf8',
@@ -17717,7 +17565,7 @@
   'field_training_format' => NULL,
 ))
 ->execute();
-$connection->schema()->createTable('field_revision_field_user_entityreference', array(
+$connection->schema()->createTable('field_revision_field_tree', array(
   'fields' => array(
     'entity_type' => array(
       'type' => 'varchar',
@@ -17761,11 +17609,15 @@
       'size' => 'normal',
       'unsigned' => TRUE,
     ),
-    'field_user_entityreference_target_id' => array(
-      'type' => 'int',
-      'not null' => TRUE,
-      'size' => 'normal',
-      'unsigned' => TRUE,
+    'field_tree_value' => array(
+      'type' => 'varchar',
+      'not null' => FALSE,
+      'length' => '255',
+    ),
+    'field_tree_format' => array(
+      'type' => 'varchar',
+      'not null' => FALSE,
+      'length' => '255',
     ),
   ),
   'primary key' => array(
@@ -17795,13 +17647,203 @@
     'language' => array(
       'language',
     ),
-    'field_user_entityreference_target_id' => array(
-      'field_user_entityreference_target_id',
+    'field_tree_format' => array(
+      array(
+        'field_tree_format',
+        '191',
+      ),
     ),
   ),
   'mysql_character_set' => 'utf8',
 ));
-$connection->schema()->createTable('field_revision_field_user_reference', array(
+
+$connection->insert('field_revision_field_tree')
+->fields(array(
+  'entity_type',
+  'bundle',
+  'deleted',
+  'entity_id',
+  'revision_id',
+  'language',
+  'delta',
+  'field_tree_value',
+  'field_tree_format',
+))
+->values(array(
+  'entity_type' => 'node',
+  'bundle' => 'et',
+  'deleted' => '0',
+  'entity_id' => '11',
+  'revision_id' => '15',
+  'language' => 'en',
+  'delta' => '0',
+  'field_tree_value' => 'lancewood',
+  'field_tree_format' => NULL,
+))
+->values(array(
+  'entity_type' => 'node',
+  'bundle' => 'et',
+  'deleted' => '0',
+  'entity_id' => '11',
+  'revision_id' => '16',
+  'language' => 'en',
+  'delta' => '0',
+  'field_tree_value' => 'lancewood',
+  'field_tree_format' => NULL,
+))
+->values(array(
+  'entity_type' => 'node',
+  'bundle' => 'et',
+  'deleted' => '0',
+  'entity_id' => '11',
+  'revision_id' => '16',
+  'language' => 'is',
+  'delta' => '0',
+  'field_tree_value' => 'is - lancewood',
+  'field_tree_format' => NULL,
+))
+->values(array(
+  'entity_type' => 'node',
+  'bundle' => 'et',
+  'deleted' => '0',
+  'entity_id' => '11',
+  'revision_id' => '17',
+  'language' => 'en',
+  'delta' => '0',
+  'field_tree_value' => 'lancewood',
+  'field_tree_format' => NULL,
+))
+->values(array(
+  'entity_type' => 'node',
+  'bundle' => 'et',
+  'deleted' => '0',
+  'entity_id' => '11',
+  'revision_id' => '17',
+  'language' => 'is',
+  'delta' => '0',
+  'field_tree_value' => 'is - lancewood',
+  'field_tree_format' => NULL,
+))
+->values(array(
+  'entity_type' => 'node',
+  'bundle' => 'et',
+  'deleted' => '0',
+  'entity_id' => '11',
+  'revision_id' => '18',
+  'language' => 'en',
+  'delta' => '0',
+  'field_tree_value' => 'lancewood',
+  'field_tree_format' => NULL,
+))
+->values(array(
+  'entity_type' => 'node',
+  'bundle' => 'et',
+  'deleted' => '0',
+  'entity_id' => '11',
+  'revision_id' => '18',
+  'language' => 'fr',
+  'delta' => '0',
+  'field_tree_value' => 'fr - lancewood',
+  'field_tree_format' => NULL,
+))
+->values(array(
+  'entity_type' => 'node',
+  'bundle' => 'et',
+  'deleted' => '0',
+  'entity_id' => '11',
+  'revision_id' => '18',
+  'language' => 'is',
+  'delta' => '0',
+  'field_tree_value' => 'is - lancewood',
+  'field_tree_format' => NULL,
+))
+->execute();
+$connection->schema()->createTable('field_revision_field_user_entityreference', array(
+  'fields' => array(
+    'entity_type' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '128',
+      'default' => '',
+    ),
+    'bundle' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '128',
+      'default' => '',
+    ),
+    'deleted' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'tiny',
+      'default' => '0',
+    ),
+    'entity_id' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'unsigned' => TRUE,
+    ),
+    'revision_id' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'unsigned' => TRUE,
+    ),
+    'language' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '32',
+      'default' => '',
+    ),
+    'delta' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'unsigned' => TRUE,
+    ),
+    'field_user_entityreference_target_id' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'unsigned' => TRUE,
+    ),
+  ),
+  'primary key' => array(
+    'entity_type',
+    'entity_id',
+    'revision_id',
+    'deleted',
+    'delta',
+    'language',
+  ),
+  'indexes' => array(
+    'entity_type' => array(
+      'entity_type',
+    ),
+    'bundle' => array(
+      'bundle',
+    ),
+    'deleted' => array(
+      'deleted',
+    ),
+    'entity_id' => array(
+      'entity_id',
+    ),
+    'revision_id' => array(
+      'revision_id',
+    ),
+    'language' => array(
+      'language',
+    ),
+    'field_user_entityreference_target_id' => array(
+      'field_user_entityreference_target_id',
+    ),
+  ),
+  'mysql_character_set' => 'utf8',
+));
+
+$connection->schema()->createTable('field_revision_field_user_reference', array(
   'fields' => array(
     'entity_type' => array(
       'type' => 'varchar',
@@ -18862,199 +18904,6 @@
   'title_field_format' => NULL,
 ))
 ->execute();
-$connection->schema()->createTable('field_revision_field_tree', array(
-  'fields' => array(
-    'entity_type' => array(
-      'type' => 'varchar',
-      'not null' => TRUE,
-      'length' => '128',
-      'default' => '',
-    ),
-    'bundle' => array(
-      'type' => 'varchar',
-      'not null' => TRUE,
-      'length' => '128',
-      'default' => '',
-    ),
-    'deleted' => array(
-      'type' => 'int',
-      'not null' => TRUE,
-      'size' => 'tiny',
-      'default' => '0',
-    ),
-    'entity_id' => array(
-      'type' => 'int',
-      'not null' => TRUE,
-      'size' => 'normal',
-      'unsigned' => TRUE,
-    ),
-    'revision_id' => array(
-      'type' => 'int',
-      'not null' => TRUE,
-      'size' => 'normal',
-      'unsigned' => TRUE,
-    ),
-    'language' => array(
-      'type' => 'varchar',
-      'not null' => TRUE,
-      'length' => '32',
-      'default' => '',
-    ),
-    'delta' => array(
-      'type' => 'int',
-      'not null' => TRUE,
-      'size' => 'normal',
-      'unsigned' => TRUE,
-    ),
-    'field_tree_value' => array(
-      'type' => 'varchar',
-      'not null' => FALSE,
-      'length' => '255',
-    ),
-    'field_tree_format' => array(
-      'type' => 'varchar',
-      'not null' => FALSE,
-      'length' => '255',
-    ),
-  ),
-  'primary key' => array(
-    'entity_type',
-    'entity_id',
-    'revision_id',
-    'deleted',
-    'delta',
-    'language',
-  ),
-  'indexes' => array(
-    'entity_type' => array(
-      'entity_type',
-    ),
-    'bundle' => array(
-      'bundle',
-    ),
-    'deleted' => array(
-      'deleted',
-    ),
-    'entity_id' => array(
-      'entity_id',
-    ),
-    'revision_id' => array(
-      'revision_id',
-    ),
-    'language' => array(
-      'language',
-    ),
-    'field_tree_format' => array(
-      array(
-        'field_tree_format',
-        '191',
-      ),
-    ),
-  ),
-  'mysql_character_set' => 'utf8',
-));
-
-$connection->insert('field_revision_field_tree')
-->fields(array(
-  'entity_type',
-  'bundle',
-  'deleted',
-  'entity_id',
-  'revision_id',
-  'language',
-  'delta',
-  'field_tree_value',
-  'field_tree_format',
-))
-->values(array(
-  'entity_type' => 'node',
-  'bundle' => 'et',
-  'deleted' => '0',
-  'entity_id' => '11',
-  'revision_id' => '15',
-  'language' => 'en',
-  'delta' => '0',
-  'field_tree_value' => 'lancewood',
-  'field_tree_format' => NULL,
-))
-->values(array(
-  'entity_type' => 'node',
-  'bundle' => 'et',
-  'deleted' => '0',
-  'entity_id' => '11',
-  'revision_id' => '16',
-  'language' => 'en',
-  'delta' => '0',
-  'field_tree_value' => 'lancewood',
-  'field_tree_format' => NULL,
-))
-->values(array(
-  'entity_type' => 'node',
-  'bundle' => 'et',
-  'deleted' => '0',
-  'entity_id' => '11',
-  'revision_id' => '17',
-  'language' => 'en',
-  'delta' => '0',
-  'field_tree_value' => 'lancewood',
-  'field_tree_format' => NULL,
-))
-->values(array(
-  'entity_type' => 'node',
-  'bundle' => 'et',
-  'deleted' => '0',
-  'entity_id' => '11',
-  'revision_id' => '18',
-  'language' => 'en',
-  'delta' => '0',
-  'field_tree_value' => 'lancewood',
-  'field_tree_format' => NULL,
-))
-->values(array(
-  'entity_type' => 'node',
-  'bundle' => 'et',
-  'deleted' => '0',
-  'entity_id' => '11',
-  'revision_id' => '18',
-  'language' => 'fr',
-  'delta' => '0',
-  'field_tree_value' => 'fr - lancewood',
-  'field_tree_format' => NULL,
-))
-->values(array(
-  'entity_type' => 'node',
-  'bundle' => 'et',
-  'deleted' => '0',
-  'entity_id' => '11',
-  'revision_id' => '16',
-  'language' => 'is',
-  'delta' => '0',
-  'field_tree_value' => 'is - lancewood',
-  'field_tree_format' => NULL,
-))
-->values(array(
-  'entity_type' => 'node',
-  'bundle' => 'et',
-  'deleted' => '0',
-  'entity_id' => '11',
-  'revision_id' => '17',
-  'language' => 'is',
-  'delta' => '0',
-  'field_tree_value' => 'is - lancewood',
-  'field_tree_format' => NULL,
-))
-->values(array(
-  'entity_type' => 'node',
-  'bundle' => 'et',
-  'deleted' => '0',
-  'entity_id' => '11',
-  'revision_id' => '18',
-  'language' => 'is',
-  'delta' => '0',
-  'field_tree_value' => 'is - lancewood',
-  'field_tree_format' => NULL,
-))
-->execute();
 $connection->schema()->createTable('file_managed', array(
   'fields' => array(
     'fid' => array(
@@ -19772,6 +19621,7 @@
       'not null' => TRUE,
       'size' => 'normal',
       'default' => '0',
+      'unsigned' => TRUE,
     ),
     'timestamp' => array(
       'type' => 'int',
@@ -19784,9 +19634,36 @@
     'uid',
     'nid',
   ),
+  'indexes' => array(
+    'nid' => array(
+      'nid',
+    ),
+  ),
   'mysql_character_set' => 'utf8',
 ));
 
+$connection->insert('history')
+->fields(array(
+  'uid',
+  'nid',
+  'timestamp',
+))
+->values(array(
+  'uid' => '1',
+  'nid' => '1',
+  'timestamp' => '1664880277',
+))
+->values(array(
+  'uid' => '1',
+  'nid' => '2',
+  'timestamp' => '1664880274',
+))
+->values(array(
+  'uid' => '1',
+  'nid' => '5',
+  'timestamp' => '1664880304',
+))
+->execute();
 $connection->schema()->createTable('i18n_block_language', array(
   'fields' => array(
     'module' => array(
@@ -20945,356 +20822,6 @@
   'objectindex' => '0',
   'format' => '',
 ))
-->values(array(
-  'lid' => '674',
-  'textgroup' => 'field',
-  'context' => 'comment_body:comment_node_book:label',
-  'objectid' => 'comment_node_book',
-  'type' => 'comment_body',
-  'property' => 'label',
-  'objectindex' => '0',
-  'format' => '',
-))
-->values(array(
-  'lid' => '675',
-  'textgroup' => 'field',
-  'context' => 'comment_body:comment_node_forum:label',
-  'objectid' => 'comment_node_forum',
-  'type' => 'comment_body',
-  'property' => 'label',
-  'objectindex' => '0',
-  'format' => '',
-))
-->values(array(
-  'lid' => '676',
-  'textgroup' => 'field',
-  'context' => 'comment_body:comment_node_test_content_type:label',
-  'objectid' => 'comment_node_test_content_type',
-  'type' => 'comment_body',
-  'property' => 'label',
-  'objectindex' => '0',
-  'format' => '',
-))
-->values(array(
-  'lid' => '677',
-  'textgroup' => 'field',
-  'context' => 'body:page:label',
-  'objectid' => 'page',
-  'type' => 'body',
-  'property' => 'label',
-  'objectindex' => '0',
-  'format' => '',
-))
-->values(array(
-  'lid' => '678',
-  'textgroup' => 'field',
-  'context' => 'body:article:label',
-  'objectid' => 'article',
-  'type' => 'body',
-  'property' => 'label',
-  'objectindex' => '0',
-  'format' => '',
-))
-->values(array(
-  'lid' => '679',
-  'textgroup' => 'field',
-  'context' => 'body:blog:label',
-  'objectid' => 'blog',
-  'type' => 'body',
-  'property' => 'label',
-  'objectindex' => '0',
-  'format' => '',
-))
-->values(array(
-  'lid' => '680',
-  'textgroup' => 'field',
-  'context' => 'body:book:label',
-  'objectid' => 'book',
-  'type' => 'body',
-  'property' => 'label',
-  'objectindex' => '0',
-  'format' => '',
-))
-->values(array(
-  'lid' => '681',
-  'textgroup' => 'field',
-  'context' => 'body:forum:label',
-  'objectid' => 'forum',
-  'type' => 'body',
-  'property' => 'label',
-  'objectindex' => '0',
-  'format' => '',
-))
-->values(array(
-  'lid' => '682',
-  'textgroup' => 'field',
-  'context' => 'field_tags:article:label',
-  'objectid' => 'article',
-  'type' => 'field_tags',
-  'property' => 'label',
-  'objectindex' => '0',
-  'format' => '',
-))
-->values(array(
-  'lid' => '683',
-  'textgroup' => 'field',
-  'context' => 'field_tags:article:description',
-  'objectid' => 'article',
-  'type' => 'field_tags',
-  'property' => 'description',
-  'objectindex' => '0',
-  'format' => '',
-))
-->values(array(
-  'lid' => '684',
-  'textgroup' => 'field',
-  'context' => 'field_image:article:label',
-  'objectid' => 'article',
-  'type' => 'field_image',
-  'property' => 'label',
-  'objectindex' => '0',
-  'format' => '',
-))
-->values(array(
-  'lid' => '685',
-  'textgroup' => 'field',
-  'context' => 'field_image:article:description',
-  'objectid' => 'article',
-  'type' => 'field_image',
-  'property' => 'description',
-  'objectindex' => '0',
-  'format' => '',
-))
-->values(array(
-  'lid' => '686',
-  'textgroup' => 'field',
-  'context' => 'taxonomy_forums:forum:label',
-  'objectid' => 'forum',
-  'type' => 'taxonomy_forums',
-  'property' => 'label',
-  'objectindex' => '0',
-  'format' => '',
-))
-->values(array(
-  'lid' => '687',
-  'textgroup' => 'field',
-  'context' => 'field_boolean:#allowed_values:0',
-  'objectid' => '#allowed_values',
-  'type' => 'field_boolean',
-  'property' => '0',
-  'objectindex' => '0',
-  'format' => '',
-))
-->values(array(
-  'lid' => '688',
-  'textgroup' => 'field',
-  'context' => 'field_boolean:#allowed_values:1',
-  'objectid' => '#allowed_values',
-  'type' => 'field_boolean',
-  'property' => '1',
-  'objectindex' => '0',
-  'format' => '',
-))
-->values(array(
-  'lid' => '689',
-  'textgroup' => 'field',
-  'context' => 'field_boolean:test_content_type:label',
-  'objectid' => 'test_content_type',
-  'type' => 'field_boolean',
-  'property' => 'label',
-  'objectindex' => '0',
-  'format' => '',
-))
-->values(array(
-  'lid' => '754',
-  'textgroup' => 'field',
-  'context' => 'subject_field:comment_node_article:label',
-  'objectid' => 'comment_node_article',
-  'type' => 'subject_field',
-  'property' => 'label',
-  'objectindex' => '0',
-  'format' => '',
-))
-->values(array(
-  'lid' => '755',
-  'textgroup' => 'field',
-  'context' => 'subject_field:comment_node_test_content_type:label',
-  'objectid' => 'comment_node_test_content_type',
-  'type' => 'subject_field',
-  'property' => 'label',
-  'objectindex' => '0',
-  'format' => '',
-))
-->values(array(
-  'lid' => '756',
-  'textgroup' => 'field',
-  'context' => 'name_field:test_vocabulary:label',
-  'objectid' => 'test_vocabulary',
-  'type' => 'name_field',
-  'property' => 'label',
-  'objectindex' => '0',
-  'format' => '',
-))
-->values(array(
-  'lid' => '758',
-  'textgroup' => 'field',
-  'context' => 'field_vocab_localize:article:label',
-  'objectid' => 'article',
-  'type' => 'field_vocab_localize',
-  'property' => 'label',
-  'objectindex' => '0',
-  'format' => '',
-))
-->values(array(
-  'lid' => '759',
-  'textgroup' => 'field',
-  'context' => 'field_vocab_translate:article:label',
-  'objectid' => 'article',
-  'type' => 'field_vocab_translate',
-  'property' => 'label',
-  'objectindex' => '0',
-  'format' => '',
-))
-->values(array(
-  'lid' => '760',
-  'textgroup' => 'field',
-  'context' => 'field_vocab_fixed:article:label',
-  'objectid' => 'article',
-  'type' => 'field_vocab_fixed',
-  'property' => 'label',
-  'objectindex' => '0',
-  'format' => '',
-))
-->values(array(
-  'lid' => '761',
-  'textgroup' => 'field',
-  'context' => 'field_color:#allowed_values:0',
-  'objectid' => '#allowed_values',
-  'type' => 'field_color',
-  'property' => '0',
-  'objectindex' => '0',
-  'format' => '',
-))
-->values(array(
-  'lid' => '762',
-  'textgroup' => 'field',
-  'context' => 'field_color:#allowed_values:1',
-  'objectid' => '#allowed_values',
-  'type' => 'field_color',
-  'property' => '1',
-  'objectindex' => '0',
-  'format' => '',
-))
-->values(array(
-  'lid' => '763',
-  'textgroup' => 'field',
-  'context' => 'field_color:#allowed_values:2',
-  'objectid' => '#allowed_values',
-  'type' => 'field_color',
-  'property' => '2',
-  'objectindex' => '0',
-  'format' => '',
-))
-->values(array(
-  'lid' => '764',
-  'textgroup' => 'field',
-  'context' => 'field_color:blog:label',
-  'objectid' => 'blog',
-  'type' => 'field_color',
-  'property' => 'label',
-  'objectindex' => '0',
-  'format' => '',
-))
-->values(array(
-  'lid' => '765',
-  'textgroup' => 'field',
-  'context' => 'field_rating:#allowed_values:1',
-  'objectid' => '#allowed_values',
-  'type' => 'field_rating',
-  'property' => '1',
-  'objectindex' => '0',
-  'format' => '',
-))
-->values(array(
-  'lid' => '766',
-  'textgroup' => 'field',
-  'context' => 'field_rating:#allowed_values:2',
-  'objectid' => '#allowed_values',
-  'type' => 'field_rating',
-  'property' => '2',
-  'objectindex' => '0',
-  'format' => '',
-))
-->values(array(
-  'lid' => '767',
-  'textgroup' => 'field',
-  'context' => 'field_rating:#allowed_values:3',
-  'objectid' => '#allowed_values',
-  'type' => 'field_rating',
-  'property' => '3',
-  'objectindex' => '0',
-  'format' => '',
-))
-->values(array(
-  'lid' => '768',
-  'textgroup' => 'field',
-  'context' => 'field_rating:blog:label',
-  'objectid' => 'blog',
-  'type' => 'field_rating',
-  'property' => 'label',
-  'objectindex' => '0',
-  'format' => '',
-))
-->values(array(
-  'lid' => '780',
-  'textgroup' => 'taxonomy',
-  'context' => 'vocabulary:2:name',
-  'objectid' => '2',
-  'type' => 'vocabulary',
-  'property' => 'name',
-  'objectindex' => '2',
-  'format' => '',
-))
-->values(array(
-  'lid' => '781',
-  'textgroup' => 'taxonomy',
-  'context' => 'vocabulary:2:description',
-  'objectid' => '2',
-  'type' => 'vocabulary',
-  'property' => 'description',
-  'objectindex' => '2',
-  'format' => '',
-))
-->values(array(
-  'lid' => '794',
-  'textgroup' => 'field',
-  'context' => 'taxonomy_forums:forum:label',
-  'objectid' => 'forum',
-  'type' => 'taxonomy_forums',
-  'property' => 'label',
-  'objectindex' => '0',
-  'format' => '',
-))
-->values(array(
-  'lid' => '795',
-  'textgroup' => 'field',
-  'context' => 'comment_body:comment_node_article:label',
-  'objectid' => 'comment_node_article',
-  'type' => 'comment_body',
-  'property' => 'label',
-  'objectindex' => '0',
-  'format' => '',
-))
-->values(array(
-  'lid' => '796',
-  'textgroup' => 'field',
-  'context' => 'comment_body:comment_node_blog:label',
-  'objectid' => 'comment_node_blog',
-  'type' => 'comment_body',
-  'property' => 'label',
-  'objectindex' => '0',
-  'format' => '',
-))
 ->values(array(
   'lid' => '194',
   'textgroup' => 'field',
@@ -21326,32 +20853,352 @@
   'format' => '',
 ))
 ->values(array(
-  'lid' => '800',
-  'textgroup' => 'menu',
-  'context' => 'menu:main-menu:title',
-  'objectid' => 'main-menu',
-  'type' => 'menu',
-  'property' => 'title',
+  'lid' => '674',
+  'textgroup' => 'field',
+  'context' => 'comment_body:comment_node_book:label',
+  'objectid' => 'comment_node_book',
+  'type' => 'comment_body',
+  'property' => 'label',
   'objectindex' => '0',
   'format' => '',
 ))
 ->values(array(
-  'lid' => '801',
-  'textgroup' => 'menu',
-  'context' => 'menu:main-menu:description',
-  'objectid' => 'main-menu',
-  'type' => 'menu',
+  'lid' => '675',
+  'textgroup' => 'field',
+  'context' => 'comment_body:comment_node_forum:label',
+  'objectid' => 'comment_node_forum',
+  'type' => 'comment_body',
+  'property' => 'label',
+  'objectindex' => '0',
+  'format' => '',
+))
+->values(array(
+  'lid' => '676',
+  'textgroup' => 'field',
+  'context' => 'comment_body:comment_node_test_content_type:label',
+  'objectid' => 'comment_node_test_content_type',
+  'type' => 'comment_body',
+  'property' => 'label',
+  'objectindex' => '0',
+  'format' => '',
+))
+->values(array(
+  'lid' => '677',
+  'textgroup' => 'field',
+  'context' => 'body:page:label',
+  'objectid' => 'page',
+  'type' => 'body',
+  'property' => 'label',
+  'objectindex' => '0',
+  'format' => '',
+))
+->values(array(
+  'lid' => '678',
+  'textgroup' => 'field',
+  'context' => 'body:article:label',
+  'objectid' => 'article',
+  'type' => 'body',
+  'property' => 'label',
+  'objectindex' => '0',
+  'format' => '',
+))
+->values(array(
+  'lid' => '679',
+  'textgroup' => 'field',
+  'context' => 'body:blog:label',
+  'objectid' => 'blog',
+  'type' => 'body',
+  'property' => 'label',
+  'objectindex' => '0',
+  'format' => '',
+))
+->values(array(
+  'lid' => '680',
+  'textgroup' => 'field',
+  'context' => 'body:book:label',
+  'objectid' => 'book',
+  'type' => 'body',
+  'property' => 'label',
+  'objectindex' => '0',
+  'format' => '',
+))
+->values(array(
+  'lid' => '681',
+  'textgroup' => 'field',
+  'context' => 'body:forum:label',
+  'objectid' => 'forum',
+  'type' => 'body',
+  'property' => 'label',
+  'objectindex' => '0',
+  'format' => '',
+))
+->values(array(
+  'lid' => '682',
+  'textgroup' => 'field',
+  'context' => 'field_tags:article:label',
+  'objectid' => 'article',
+  'type' => 'field_tags',
+  'property' => 'label',
+  'objectindex' => '0',
+  'format' => '',
+))
+->values(array(
+  'lid' => '683',
+  'textgroup' => 'field',
+  'context' => 'field_tags:article:description',
+  'objectid' => 'article',
+  'type' => 'field_tags',
   'property' => 'description',
   'objectindex' => '0',
   'format' => '',
 ))
 ->values(array(
-  'lid' => '802',
-  'textgroup' => 'menu',
-  'context' => 'menu:menu-test-menu:description',
-  'objectid' => 'menu-test-menu',
-  'type' => 'menu',
+  'lid' => '684',
+  'textgroup' => 'field',
+  'context' => 'field_image:article:label',
+  'objectid' => 'article',
+  'type' => 'field_image',
+  'property' => 'label',
+  'objectindex' => '0',
+  'format' => '',
+))
+->values(array(
+  'lid' => '685',
+  'textgroup' => 'field',
+  'context' => 'field_image:article:description',
+  'objectid' => 'article',
+  'type' => 'field_image',
+  'property' => 'description',
+  'objectindex' => '0',
+  'format' => '',
+))
+->values(array(
+  'lid' => '686',
+  'textgroup' => 'field',
+  'context' => 'taxonomy_forums:forum:label',
+  'objectid' => 'forum',
+  'type' => 'taxonomy_forums',
+  'property' => 'label',
+  'objectindex' => '0',
+  'format' => '',
+))
+->values(array(
+  'lid' => '687',
+  'textgroup' => 'field',
+  'context' => 'field_boolean:#allowed_values:0',
+  'objectid' => '#allowed_values',
+  'type' => 'field_boolean',
+  'property' => '0',
+  'objectindex' => '0',
+  'format' => '',
+))
+->values(array(
+  'lid' => '688',
+  'textgroup' => 'field',
+  'context' => 'field_boolean:#allowed_values:1',
+  'objectid' => '#allowed_values',
+  'type' => 'field_boolean',
+  'property' => '1',
+  'objectindex' => '0',
+  'format' => '',
+))
+->values(array(
+  'lid' => '689',
+  'textgroup' => 'field',
+  'context' => 'field_boolean:test_content_type:label',
+  'objectid' => 'test_content_type',
+  'type' => 'field_boolean',
+  'property' => 'label',
+  'objectindex' => '0',
+  'format' => '',
+))
+->values(array(
+  'lid' => '754',
+  'textgroup' => 'field',
+  'context' => 'subject_field:comment_node_article:label',
+  'objectid' => 'comment_node_article',
+  'type' => 'subject_field',
+  'property' => 'label',
+  'objectindex' => '0',
+  'format' => '',
+))
+->values(array(
+  'lid' => '755',
+  'textgroup' => 'field',
+  'context' => 'subject_field:comment_node_test_content_type:label',
+  'objectid' => 'comment_node_test_content_type',
+  'type' => 'subject_field',
+  'property' => 'label',
+  'objectindex' => '0',
+  'format' => '',
+))
+->values(array(
+  'lid' => '756',
+  'textgroup' => 'field',
+  'context' => 'name_field:test_vocabulary:label',
+  'objectid' => 'test_vocabulary',
+  'type' => 'name_field',
+  'property' => 'label',
+  'objectindex' => '0',
+  'format' => '',
+))
+->values(array(
+  'lid' => '758',
+  'textgroup' => 'field',
+  'context' => 'field_vocab_localize:article:label',
+  'objectid' => 'article',
+  'type' => 'field_vocab_localize',
+  'property' => 'label',
+  'objectindex' => '0',
+  'format' => '',
+))
+->values(array(
+  'lid' => '759',
+  'textgroup' => 'field',
+  'context' => 'field_vocab_translate:article:label',
+  'objectid' => 'article',
+  'type' => 'field_vocab_translate',
+  'property' => 'label',
+  'objectindex' => '0',
+  'format' => '',
+))
+->values(array(
+  'lid' => '760',
+  'textgroup' => 'field',
+  'context' => 'field_vocab_fixed:article:label',
+  'objectid' => 'article',
+  'type' => 'field_vocab_fixed',
+  'property' => 'label',
+  'objectindex' => '0',
+  'format' => '',
+))
+->values(array(
+  'lid' => '761',
+  'textgroup' => 'field',
+  'context' => 'field_color:#allowed_values:0',
+  'objectid' => '#allowed_values',
+  'type' => 'field_color',
+  'property' => '0',
+  'objectindex' => '0',
+  'format' => '',
+))
+->values(array(
+  'lid' => '762',
+  'textgroup' => 'field',
+  'context' => 'field_color:#allowed_values:1',
+  'objectid' => '#allowed_values',
+  'type' => 'field_color',
+  'property' => '1',
+  'objectindex' => '0',
+  'format' => '',
+))
+->values(array(
+  'lid' => '763',
+  'textgroup' => 'field',
+  'context' => 'field_color:#allowed_values:2',
+  'objectid' => '#allowed_values',
+  'type' => 'field_color',
+  'property' => '2',
+  'objectindex' => '0',
+  'format' => '',
+))
+->values(array(
+  'lid' => '764',
+  'textgroup' => 'field',
+  'context' => 'field_color:blog:label',
+  'objectid' => 'blog',
+  'type' => 'field_color',
+  'property' => 'label',
+  'objectindex' => '0',
+  'format' => '',
+))
+->values(array(
+  'lid' => '765',
+  'textgroup' => 'field',
+  'context' => 'field_rating:#allowed_values:1',
+  'objectid' => '#allowed_values',
+  'type' => 'field_rating',
+  'property' => '1',
+  'objectindex' => '0',
+  'format' => '',
+))
+->values(array(
+  'lid' => '766',
+  'textgroup' => 'field',
+  'context' => 'field_rating:#allowed_values:2',
+  'objectid' => '#allowed_values',
+  'type' => 'field_rating',
+  'property' => '2',
+  'objectindex' => '0',
+  'format' => '',
+))
+->values(array(
+  'lid' => '767',
+  'textgroup' => 'field',
+  'context' => 'field_rating:#allowed_values:3',
+  'objectid' => '#allowed_values',
+  'type' => 'field_rating',
+  'property' => '3',
+  'objectindex' => '0',
+  'format' => '',
+))
+->values(array(
+  'lid' => '768',
+  'textgroup' => 'field',
+  'context' => 'field_rating:blog:label',
+  'objectid' => 'blog',
+  'type' => 'field_rating',
+  'property' => 'label',
+  'objectindex' => '0',
+  'format' => '',
+))
+->values(array(
+  'lid' => '780',
+  'textgroup' => 'taxonomy',
+  'context' => 'vocabulary:2:name',
+  'objectid' => '2',
+  'type' => 'vocabulary',
+  'property' => 'name',
+  'objectindex' => '2',
+  'format' => '',
+))
+->values(array(
+  'lid' => '781',
+  'textgroup' => 'taxonomy',
+  'context' => 'vocabulary:2:description',
+  'objectid' => '2',
+  'type' => 'vocabulary',
   'property' => 'description',
+  'objectindex' => '2',
+  'format' => '',
+))
+->values(array(
+  'lid' => '794',
+  'textgroup' => 'field',
+  'context' => 'taxonomy_forums:forum:label',
+  'objectid' => 'forum',
+  'type' => 'taxonomy_forums',
+  'property' => 'label',
+  'objectindex' => '0',
+  'format' => '',
+))
+->values(array(
+  'lid' => '795',
+  'textgroup' => 'field',
+  'context' => 'comment_body:comment_node_article:label',
+  'objectid' => 'comment_node_article',
+  'type' => 'comment_body',
+  'property' => 'label',
+  'objectindex' => '0',
+  'format' => '',
+))
+->values(array(
+  'lid' => '796',
+  'textgroup' => 'field',
+  'context' => 'comment_body:comment_node_blog:label',
+  'objectid' => 'comment_node_blog',
+  'type' => 'comment_body',
+  'property' => 'label',
   'objectindex' => '0',
   'format' => '',
 ))
@@ -21375,7 +21222,37 @@
   'objectindex' => '25',
   'format' => '',
 ))
-  ->values(array(
+->values(array(
+  'lid' => '800',
+  'textgroup' => 'menu',
+  'context' => 'menu:main-menu:title',
+  'objectid' => 'main-menu',
+  'type' => 'menu',
+  'property' => 'title',
+  'objectindex' => '0',
+  'format' => '',
+))
+->values(array(
+  'lid' => '801',
+  'textgroup' => 'menu',
+  'context' => 'menu:main-menu:description',
+  'objectid' => 'main-menu',
+  'type' => 'menu',
+  'property' => 'description',
+  'objectindex' => '0',
+  'format' => '',
+))
+->values(array(
+  'lid' => '802',
+  'textgroup' => 'menu',
+  'context' => 'menu:menu-test-menu:description',
+  'objectid' => 'menu-test-menu',
+  'type' => 'menu',
+  'property' => 'description',
+  'objectindex' => '0',
+  'format' => '',
+))
+->values(array(
   'lid' => '803',
   'textgroup' => 'menu',
   'context' => 'item:467:title',
@@ -21933,7 +21810,7 @@
   'textgroup' => 'default',
   'source' => 'Edit',
   'context' => '',
-  'version' => 'none',
+  'version' => '7.92',
 ))
 ->values(array(
   'lid' => '14',
@@ -22583,831 +22460,3349 @@
   'context' => 'vocabulary:4:description',
   'version' => '1',
 ))
-->execute();
-$connection->schema()->createTable('locales_target', array(
-  'fields' => array(
-    'lid' => array(
-      'type' => 'int',
-      'not null' => TRUE,
-      'size' => 'normal',
-      'default' => '0',
-    ),
-    'translation' => array(
-      'type' => 'blob',
-      'not null' => TRUE,
-      'size' => 'normal',
-    ),
-    'language' => array(
-      'type' => 'varchar',
-      'not null' => TRUE,
-      'length' => '12',
-      'default' => '',
-    ),
-    'plid' => array(
-      'type' => 'int',
-      'not null' => TRUE,
-      'size' => 'normal',
-      'default' => '0',
-    ),
-    'plural' => array(
-      'type' => 'int',
-      'not null' => TRUE,
-      'size' => 'normal',
-      'default' => '0',
-    ),
-    'i18n_status' => array(
-      'type' => 'int',
-      'not null' => TRUE,
-      'size' => 'normal',
-      'default' => '0',
-    ),
-  ),
-  'primary key' => array(
-    'lid',
-    'language',
-    'plural',
-  ),
-  'mysql_character_set' => 'utf8',
-));
-
-$connection->insert('locales_target')
-->fields(array(
-  'lid',
-  'translation',
-  'language',
-  'plid',
-  'plural',
-  'i18n_status',
+->values(array(
+  'lid' => '95',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Public files',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'lid' => '57',
-  'translation' => 'fr - Mildly amusing limerick of the day',
-  'language' => 'fr',
-  'plid' => '0',
-  'plural' => '0',
-  'i18n_status' => '0',
+  'lid' => '96',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Public local files served by the webserver.',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'lid' => '60',
-  'translation' => "fr - A fellow jumped off a high wall\r\nAnd had a most terrible fall\r\nHe went back to bed\r\nWith a bump on his head\r\nThat's why you don't jump off a wall",
-  'language' => 'fr',
-  'plid' => '0',
-  'plural' => '0',
-  'i18n_status' => '0',
+  'lid' => '97',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Temporary files',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'lid' => '76',
-  'translation' => 'fr - User login title',
-  'language' => 'fr',
-  'plid' => '0',
-  'plural' => '0',
-  'i18n_status' => '0',
+  'lid' => '98',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Temporary local files for upload and previews.',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'lid' => '77',
-  'translation' => 'fr - DS9 (localized)',
-  'language' => 'fr',
-  'plid' => '0',
-  'plural' => '0',
-  'i18n_status' => '0',
+  'lid' => '99',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Private files',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'lid' => '78',
-  'translation' => 'fr - Terok Nor (localized)',
-  'language' => 'fr',
-  'plid' => '0',
-  'plural' => '0',
-  'i18n_status' => '0',
+  'lid' => '100',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Private local files served by Drupal.',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'lid' => '87',
-  'translation' => 'fr - VocabFixed',
-  'language' => 'fr',
-  'plid' => '0',
-  'plural' => '0',
-  'i18n_status' => '0',
+  'lid' => '101',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Title',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'lid' => '89',
-  'translation' => 'fr - VocabLocalized',
-  'language' => 'fr',
-  'plid' => '0',
-  'plural' => '0',
-  'i18n_status' => '0',
+  'lid' => '102',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Name',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'lid' => '90',
-  'translation' => 'fr - Vocabulary localize option',
-  'language' => 'fr',
-  'plid' => '0',
-  'plural' => '0',
-  'i18n_status' => '0',
+  'lid' => '103',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Description',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'lid' => '97',
-  'translation' => 'fr - The email help text.',
-  'language' => 'fr',
-  'plid' => '0',
-  'plural' => '0',
-  'i18n_status' => '0',
+  'lid' => '104',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Subject',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'lid' => '113',
-  'translation' => 'fr - Link',
-  'language' => 'fr',
-  'plid' => '0',
-  'plural' => '0',
-  'i18n_status' => '1',
+  'lid' => '105',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Comment',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'lid' => '163',
-  'translation' => 'fr - User login title',
-  'language' => 'fr',
-  'plid' => '0',
-  'plural' => '0',
-  'i18n_status' => '0',
+  'lid' => '106',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Full comment',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'lid' => '678',
-  'translation' => 'fr - Body',
-  'language' => 'fr',
-  'plid' => '0',
-  'plural' => '0',
-  'i18n_status' => '1',
+  'lid' => '107',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Blog entry',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'lid' => '684',
-  'translation' => 'fr - Image',
-  'language' => 'fr',
-  'plid' => '0',
-  'plural' => '0',
-  'i18n_status' => '1',
+  'lid' => '108',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Use for multi-user blogs. Every user gets a personal blog.',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'lid' => '761',
-  'translation' => 'Verte',
-  'language' => 'fr',
-  'plid' => '0',
-  'plural' => '0',
-  'i18n_status' => '0',
+  'lid' => '109',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Forum topic',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'lid' => '762',
-  'translation' => 'Noire',
-  'language' => 'fr',
-  'plid' => '0',
-  'plural' => '0',
-  'i18n_status' => '0',
+  'lid' => '110',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'A <em>forum topic</em> starts a new discussion thread within a forum.',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'lid' => '763',
-  'translation' => 'Blanche',
-  'language' => 'fr',
-  'plid' => '0',
-  'plural' => '0',
-  'i18n_status' => '0',
+  'lid' => '111',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => '@node_type comment',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'lid' => '764',
-  'translation' => 'Color',
-  'language' => 'fr',
-  'plid' => '0',
-  'plural' => '0',
-  'i18n_status' => '0',
+  'lid' => '112',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Menu link',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'lid' => '765',
-  'translation' => 'Haute',
-  'language' => 'fr',
-  'plid' => '0',
-  'plural' => '0',
-  'i18n_status' => '0',
+  'lid' => '113',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Taxonomy term',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'lid' => '766',
-  'translation' => 'Moyenne',
-  'language' => 'fr',
-  'plid' => '0',
-  'plural' => '0',
-  'i18n_status' => '0',
+  'lid' => '114',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Translation set',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'lid' => '767',
-  'translation' => 'Faible',
-  'language' => 'fr',
-  'plid' => '0',
-  'plural' => '0',
-  'i18n_status' => '0',
+  'lid' => '115',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Node',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'lid' => '768',
-  'translation' => 'Rating',
-  'language' => 'fr',
-  'plid' => '0',
-  'plural' => '0',
-  'i18n_status' => '0',
+  'lid' => '116',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Full content',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'lid' => '57',
-  'translation' => 'is - Mildly amusing limerick of the day',
-  'language' => 'is',
-  'plid' => '0',
-  'plural' => '0',
-  'i18n_status' => '0',
+  'lid' => '117',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Teaser',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'lid' => '79',
-  'translation' => 'Jupiter Station',
-  'language' => 'is',
-  'plid' => '0',
-  'plural' => '0',
-  'i18n_status' => '0',
+  'lid' => '118',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'RSS',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'lid' => '80',
-  'translation' => 'is - Holographic research. (localized)',
-  'language' => 'is',
-  'plid' => '0',
-  'plural' => '0',
-  'i18n_status' => '0',
+  'lid' => '119',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Search index',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'lid' => '89',
-  'translation' => 'is - VocabLocalized',
-  'language' => 'is',
-  'plid' => '0',
-  'plural' => '0',
-  'i18n_status' => '0',
+  'lid' => '120',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Search result highlighting input',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'lid' => '90',
-  'translation' => 'is - Vocabulary localize option',
-  'language' => 'is',
-  'plid' => '0',
-  'plural' => '0',
-  'i18n_status' => '0',
+  'lid' => '121',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'File',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'lid' => '91',
-  'translation' => 'is - VocabTranslate',
-  'language' => 'is',
-  'plid' => '0',
-  'plural' => '0',
-  'i18n_status' => '0',
+  'lid' => '122',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Taxonomy term page',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'lid' => '92',
-  'translation' => 'is - Vocabulary translate option',
-  'language' => 'is',
-  'plid' => '0',
-  'plural' => '0',
-  'i18n_status' => '0',
+  'lid' => '123',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Taxonomy vocabulary',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'lid' => '95',
-  'translation' => 'is - Some helpful text.',
-  'language' => 'is',
-  'plid' => '0',
-  'plural' => '0',
-  'i18n_status' => '0',
+  'lid' => '124',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'User',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'lid' => '96',
-  'translation' => 'is - Email',
-  'language' => 'is',
-  'plid' => '0',
-  'plural' => '0',
-  'i18n_status' => '0',
+  'lid' => '125',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'User account',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'lid' => '97',
-  'translation' => 'is - The email help text.',
-  'language' => 'is',
-  'plid' => '0',
-  'plural' => '0',
-  'i18n_status' => '0',
+  'lid' => '126',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Print',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'lid' => '128',
-  'translation' => 'is - Term Reference',
-  'language' => 'is',
-  'plid' => '0',
-  'plural' => '0',
-  'i18n_status' => '0',
+  'lid' => '127',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Nodes',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'lid' => '687',
-  'translation' => 'is - Off',
-  'language' => 'is',
-  'plid' => '0',
-  'plural' => '0',
-  'i18n_status' => '0',
+  'lid' => '128',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Users',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'lid' => '688',
-  'translation' => 'is - 1',
-  'language' => 'is',
-  'plid' => '0',
-  'plural' => '0',
-  'i18n_status' => '0',
+  'lid' => '129',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Files',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'lid' => '758',
-  'translation' => 'is field - vocab_localize',
-  'language' => 'is',
-  'plid' => '0',
-  'plural' => '0',
-  'i18n_status' => '0',
+  'lid' => '130',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Nodes represent the main site content items.',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'lid' => '761',
-  'translation' => 'Grænn',
-  'language' => 'is',
-  'plid' => '0',
-  'plural' => '0',
-  'i18n_status' => '0',
+  'lid' => '131',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Users who have created accounts on your site.',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'lid' => '762',
-  'translation' => 'Svartur',
-  'language' => 'is',
-  'plid' => '0',
-  'plural' => '0',
-  'i18n_status' => '0',
+  'lid' => '132',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Uploaded file.',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'lid' => '763',
-  'translation' => 'Hvítur',
-  'language' => 'is',
-  'plid' => '0',
-  'plural' => '0',
-  'i18n_status' => '0',
+  'lid' => '133',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Comments',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'lid' => '764',
-  'translation' => 'Color',
-  'language' => 'is',
-  'plid' => '0',
-  'plural' => '0',
-  'i18n_status' => '0',
+  'lid' => '134',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Remark or note that refers to a node.',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'lid' => '765',
-  'translation' => 'Hár',
-  'language' => 'is',
-  'plid' => '0',
-  'plural' => '0',
-  'i18n_status' => '0',
+  'lid' => '135',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Taxonomy terms',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'lid' => '766',
-  'translation' => 'Miðlungs',
-  'language' => 'is',
-  'plid' => '0',
-  'plural' => '0',
-  'i18n_status' => '0',
+  'lid' => '136',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Taxonomy terms are used for classifying content.',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'lid' => '767',
-  'translation' => 'Lágt',
-  'language' => 'is',
-  'plid' => '0',
-  'plural' => '0',
-  'i18n_status' => '0',
+  'lid' => '137',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Taxonomy vocabularies',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'lid' => '768',
-  'translation' => 'Rating',
-  'language' => 'is',
-  'plid' => '0',
-  'plural' => '0',
-  'i18n_status' => '0',
+  'lid' => '138',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Vocabularies contain related taxonomy terms, which are used for classifying content.',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'lid' => '800',
-  'translation' => 'is - Main menu',
-  'language' => 'is',
-  'plid' => '0',
-  'plural' => '0',
-  'i18n_status' => '0',
+  'lid' => '139',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Long',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'lid' => '801',
-  'translation' => 'is - Main menu description',
-  'language' => 'is',
-  'plid' => '0',
-  'plural' => '0',
-  'i18n_status' => '0',
+  'lid' => '140',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Medium',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'lid' => '800',
-  'translation' => 'fr - Main menu',
-  'language' => 'fr',
-  'plid' => '0',
-  'plural' => '0',
-  'i18n_status' => '0',
+  'lid' => '141',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Short',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'lid' => '801',
-  'translation' => 'fr - Main menu description',
-  'language' => 'fr',
-  'plid' => '0',
-  'plural' => '0',
-  'i18n_status' => '0',
+  'lid' => '142',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Simple (with optional filter by bundle)',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'lid' => '802',
-  'translation' => 'fr - Test menu description',
-  'language' => 'fr',
-  'plid' => '0',
-  'plural' => '0',
-  'i18n_status' => '0',
+  'lid' => '143',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Recursive rendering detected when rendering entity @entity_type(@entity_id). Aborting rendering.',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'lid' => '797',
-  'translation' => 'fr - Emissary',
-  'language' => 'fr',
-  'plid' => '0',
-  'plural' => '0',
-  'i18n_status' => '0',
+  'lid' => '144',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => '%type: !message in %function (line %line of %file).',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'lid' => '798',
-  'translation' => 'fr - Pilot episode',
-  'language' => 'fr',
-  'plid' => '0',
-  'plural' => '0',
-  'i18n_status' => '0',
+  'lid' => '145',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Error',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'lid' => '803',
-  'translation' => 'fr - Google',
-  'language' => 'fr',
-  'plid' => '0',
-  'plural' => '0',
-  'i18n_status' => '0',
+  'lid' => '146',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'The website encountered an unexpected error. Please try again later.',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'lid' => '804',
-  'translation' => 'fr - Google description',
-  'language' => 'fr',
-  'plid' => '0',
-  'plural' => '0',
-  'i18n_status' => '0',
+  'lid' => '147',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Search results',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'lid' => '805',
-  'translation' => 'is - Stop',
-  'language' => 'is',
-  'plid' => '0',
-  'plural' => '0',
-  'i18n_status' => '0',
+  'lid' => '148',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'The results of a search using keywords.',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'lid' => '806',
-  'translation' => 'is - Go',
-  'language' => 'is',
-  'plid' => '0',
-  'plural' => '0',
-  'i18n_status' => '0',
+  'lid' => '149',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Keywords',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'lid' => '805',
-  'translation' => 'fr - Stop',
-  'language' => 'fr',
-  'plid' => '0',
-  'plural' => '0',
-  'i18n_status' => '0',
+  'lid' => '150',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Widgets',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'lid' => '806',
-  'translation' => 'Go',
-  'language' => 'fr',
-  'plid' => '0',
-  'plural' => '0',
-  'i18n_status' => '0',
+  'lid' => '151',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Advanced search form',
+  'context' => '',
+  'version' => '7.92',
 ))
-->execute();
-$connection->schema()->createTable('menu_custom', array(
-  'fields' => array(
-    'menu_name' => array(
-      'type' => 'varchar',
-      'not null' => TRUE,
-      'length' => '32',
-      'default' => '',
-    ),
-    'title' => array(
-      'type' => 'varchar',
-      'not null' => TRUE,
-      'length' => '255',
-      'default' => '',
-    ),
-    'description' => array(
-      'type' => 'text',
-      'not null' => FALSE,
-      'size' => 'normal',
-    ),
-    'language' => array(
-      'type' => 'varchar',
-      'not null' => TRUE,
-      'length' => '12',
-      'default' => 'und',
-    ),
-    'i18n_mode' => array(
-      'type' => 'int',
-      'not null' => TRUE,
-      'size' => 'normal',
-      'default' => '0',
-      'unsigned' => TRUE,
-    ),
-  ),
-  'primary key' => array(
-    'menu_name',
-  ),
-  'mysql_character_set' => 'utf8',
-));
-
-$connection->insert('menu_custom')
-->fields(array(
-  'menu_name',
-  'title',
-  'description',
-  'language',
-  'i18n_mode',
+->values(array(
+  'lid' => '152',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'A search form with advanced options.',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'menu_name' => 'main-menu',
-  'title' => 'Main menu',
-  'description' => 'The <em>Main</em> menu is used on many sites to show the major sections of the site, often in a top navigation bar.',
-  'language' => 'und',
-  'i18n_mode' => '0',
+  'lid' => '153',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Tokens',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'menu_name' => 'management',
-  'title' => 'Management',
-  'description' => 'The <em>Management</em> menu contains links for administrative tasks.',
-  'language' => 'und',
-  'i18n_mode' => '0',
+  'lid' => '154',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Help',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'menu_name' => 'menu-fixedlang',
-  'title' => 'FixedLang',
-  'description' => '',
-  'language' => 'is',
-  'i18n_mode' => '2',
+  'lid' => '155',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Add the help text of the current page as content.',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'menu_name' => 'menu-test-menu',
-  'title' => 'Test Menu',
-  'description' => 'Test menu description.',
-  'language' => 'und',
-  'i18n_mode' => '5',
+  'lid' => '156',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Page elements',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'menu_name' => 'navigation',
-  'title' => 'Navigation',
-  'description' => 'The <em>Navigation</em> menu contains links intended for site visitors. Links are added to the <em>Navigation</em> menu automatically by some modules.',
-  'language' => 'und',
-  'i18n_mode' => '0',
+  'lid' => '157',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Secondary navigation links',
+  'context' => '',
+  'version' => '7.92',
 ))
 ->values(array(
-  'menu_name' => 'user-menu',
-  'title' => 'User menu',
-  'description' => "The <em>User</em> menu contains links related to the user's account, as well as the 'Log out' link.",
-  'language' => 'und',
-  'i18n_mode' => '0',
+  'lid' => '158',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Add the secondary_links (local tasks) as content.',
+  'context' => '',
+  'version' => '7.92',
 ))
-->execute();
-$connection->schema()->createTable('menu_links', array(
-  'fields' => array(
-    'menu_name' => array(
-      'type' => 'varchar',
-      'not null' => TRUE,
-      'length' => '32',
-      'default' => '',
-    ),
-    'mlid' => array(
-      'type' => 'serial',
-      'not null' => TRUE,
-      'size' => 'normal',
-      'unsigned' => TRUE,
-    ),
-    'plid' => array(
-      'type' => 'int',
-      'not null' => TRUE,
-      'size' => 'normal',
-      'default' => '0',
-      'unsigned' => TRUE,
-    ),
-    'link_path' => array(
-      'type' => 'varchar',
-      'not null' => TRUE,
-      'length' => '255',
-      'default' => '',
-    ),
-    'router_path' => array(
-      'type' => 'varchar',
-      'not null' => TRUE,
-      'length' => '255',
-      'default' => '',
-    ),
-    'link_title' => array(
-      'type' => 'varchar',
-      'not null' => TRUE,
-      'length' => '255',
-      'default' => '',
-    ),
-    'options' => array(
-      'type' => 'blob',
-      'not null' => FALSE,
-      'size' => 'normal',
-    ),
-    'module' => array(
-      'type' => 'varchar',
-      'not null' => TRUE,
-      'length' => '255',
-      'default' => 'system',
-    ),
-    'hidden' => array(
-      'type' => 'int',
-      'not null' => TRUE,
-      'size' => 'normal',
-      'default' => '0',
-    ),
-    'external' => array(
-      'type' => 'int',
-      'not null' => TRUE,
-      'size' => 'normal',
-      'default' => '0',
-    ),
-    'has_children' => array(
-      'type' => 'int',
-      'not null' => TRUE,
-      'size' => 'normal',
-      'default' => '0',
-    ),
-    'expanded' => array(
-      'type' => 'int',
-      'not null' => TRUE,
-      'size' => 'normal',
-      'default' => '0',
-    ),
-    'weight' => array(
-      'type' => 'int',
-      'not null' => TRUE,
-      'size' => 'normal',
-      'default' => '0',
-    ),
-    'depth' => array(
-      'type' => 'int',
-      'not null' => TRUE,
-      'size' => 'normal',
-      'default' => '0',
-    ),
-    'customized' => array(
-      'type' => 'int',
-      'not null' => TRUE,
-      'size' => 'normal',
-      'default' => '0',
-    ),
-    'p1' => array(
-      'type' => 'int',
-      'not null' => TRUE,
-      'size' => 'normal',
-      'default' => '0',
-      'unsigned' => TRUE,
-    ),
-    'p2' => array(
-      'type' => 'int',
-      'not null' => TRUE,
-      'size' => 'normal',
-      'default' => '0',
-      'unsigned' => TRUE,
-    ),
-    'p3' => array(
-      'type' => 'int',
-      'not null' => TRUE,
-      'size' => 'normal',
-      'default' => '0',
-      'unsigned' => TRUE,
-    ),
-    'p4' => array(
-      'type' => 'int',
-      'not null' => TRUE,
-      'size' => 'normal',
-      'default' => '0',
-      'unsigned' => TRUE,
-    ),
-    'p5' => array(
-      'type' => 'int',
-      'not null' => TRUE,
-      'size' => 'normal',
-      'default' => '0',
-      'unsigned' => TRUE,
-    ),
-    'p6' => array(
-      'type' => 'int',
-      'not null' => TRUE,
-      'size' => 'normal',
-      'default' => '0',
-      'unsigned' => TRUE,
-    ),
-    'p7' => array(
-      'type' => 'int',
-      'not null' => TRUE,
-      'size' => 'normal',
-      'default' => '0',
-      'unsigned' => TRUE,
-    ),
-    'p8' => array(
-      'type' => 'int',
-      'not null' => TRUE,
-      'size' => 'normal',
-      'default' => '0',
-      'unsigned' => TRUE,
-    ),
-    'p9' => array(
-      'type' => 'int',
-      'not null' => TRUE,
-      'size' => 'normal',
-      'default' => '0',
-      'unsigned' => TRUE,
-    ),
-    'updated' => array(
-      'type' => 'int',
-      'not null' => TRUE,
-      'size' => 'normal',
-      'default' => '0',
-    ),
-    'language' => array(
-      'type' => 'varchar',
-      'not null' => TRUE,
-      'length' => '12',
-      'default' => 'und',
-    ),
-    'i18n_tsid' => array(
-      'type' => 'int',
-      'not null' => TRUE,
-      'size' => 'normal',
-      'default' => '0',
-      'unsigned' => TRUE,
-    ),
-  ),
-  'primary key' => array(
-    'mlid',
-  ),
-  'mysql_character_set' => 'utf8',
-));
-
-$connection->insert('menu_links')
-->fields(array(
-  'menu_name',
-  'mlid',
-  'plid',
-  'link_path',
-  'router_path',
-  'link_title',
-  'options',
-  'module',
-  'hidden',
-  'external',
-  'has_children',
-  'expanded',
-  'weight',
-  'depth',
-  'customized',
-  'p1',
-  'p2',
-  'p3',
-  'p4',
-  'p5',
-  'p6',
-  'p7',
-  'p8',
-  'p9',
-  'updated',
-  'language',
-  'i18n_tsid',
+->values(array(
+  'lid' => '159',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Site name',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '160',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'The name of the site, optionally links to the front page.',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '161',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Actions',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '162',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Add the action links (local tasks) as content.',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '163',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Page title',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '164',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Add the page title as content.',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '165',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Site logo',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '166',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Add the logo trail as content.',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '167',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Feed icons',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '168',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Add the site feed_icons statement as content.',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '169',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Site slogan',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '170',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => "Add the site's slogan as content.",
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '171',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Status messages',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '172',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Add the status messages of the current page as content.',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '173',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Breadcrumb',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '174',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Add the breadcrumb trail as content.',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '175',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Primary navigation links',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '176',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Add the primary_links (local tasks) as content.',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '177',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Tabs',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '178',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Add the tabs (local tasks) as content.',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '179',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'User contact form',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '180',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'The site contact form that allows users to contact other users.',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '181',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Contact form',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '182',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'The site contact form that allows users to send a message to site administrators.',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '183',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Vocabulary terms',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '184',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'All the terms in a vocabulary.',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '185',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Vocabulary',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '186',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Block',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '187',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Node form url path settings',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '188',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Publishing options on the Node form.',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '189',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Form',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '190',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Node form submit buttons',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '191',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Submit buttons for the node form.',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '192',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Node form comment settings',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '193',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Comment settings on the Node form.',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '194',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Node form languages',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '195',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'The language selection form.',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '196',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Node form book options',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '197',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Book options for the node.',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '198',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Node form title field',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '199',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'The node title form.',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '200',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Node form menu settings',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '201',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Menu settings on the Node form.',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '202',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Node form revision log message',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '203',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Revision log message for the node.',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '204',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Node form publishing options',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '205',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Node form author information',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '206',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Author information on the Node form.',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '207',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Entity extra field',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '208',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Entity field',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '209',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Custom content',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '210',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'General form',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '211',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Everything in the form that is not displayed by other content.',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '212',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Book navigation',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '213',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'The navigation menu the book the node belongs to.',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '214',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Node links',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '215',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Node links of the referenced node.',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '216',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Comment form',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '217',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'A form to add a new comment.',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '218',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Node last updated date',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '219',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'The date the referenced node was last updated.',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '220',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Node terms',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '221',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Taxonomy terms of the referenced node.',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '222',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Book children',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '223',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'The children menu the book the node belongs to.',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '224',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Node comments',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '225',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'The comments of the referenced node.',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '226',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Attached files',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '227',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'A list of files attached to the node.',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '228',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Comments and comment form.',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '229',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'The comments and comment form for the referenced node.',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '230',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Node content',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '231',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'The content of the referenced node.',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '232',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Node type description',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '233',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Node type description.',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '234',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Node title',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '235',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'The title of the referenced node.',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '236',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Node body',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '237',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'The body of the referenced node.',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '238',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Node author',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '239',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'The author of the referenced node.',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '240',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Node created date',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '241',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'The date the referenced node was created.',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '242',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Existing node',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '243',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Add a node from your site as content.',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '244',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Custom',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '245',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'User signature',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '246',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'The signature of a user.',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '247',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'User links',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '248',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'User links of the referenced user.',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '249',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'User profile',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '250',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'The profile of a user.',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '251',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'User picture',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '252',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'The picture of a user.',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '253',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Comment Reply Form',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '254',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'A form to add a new comment reply.',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '255',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Comment links',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '256',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Comment links of the referenced comment.',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '257',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Comment created date',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '258',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'The date the referenced comment was created.',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '259',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Term name',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '260',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'The name of this taxonomy term.',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '261',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Term',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '262',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'List of related terms',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '263',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Terms related to an existing term; may be child, siblings or top level.',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '264',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Term description',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '265',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Term description.',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '266',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Rendered entity',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '267',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Status message',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '268',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Error message',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '269',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Warning message',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '270',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Skip to main content',
+  'context' => '',
+  'version' => '7.92',
+))
+->values(array(
+  'lid' => '271',
+  'location' => '/is/firefly-is',
+  'textgroup' => 'default',
+  'source' => 'Home',
+  'context' => '',
+  'version' => '7.92',
+))
+->execute();
+$connection->schema()->createTable('locales_target', array(
+  'fields' => array(
+    'lid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'default' => '0',
+    ),
+    'translation' => array(
+      'type' => 'blob',
+      'not null' => TRUE,
+      'size' => 'normal',
+    ),
+    'language' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '12',
+      'default' => '',
+    ),
+    'plid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'default' => '0',
+    ),
+    'plural' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'default' => '0',
+    ),
+    'i18n_status' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'default' => '0',
+    ),
+  ),
+  'primary key' => array(
+    'lid',
+    'language',
+    'plural',
+  ),
+  'mysql_character_set' => 'utf8',
+));
+
+$connection->insert('locales_target')
+->fields(array(
+  'lid',
+  'translation',
+  'language',
+  'plid',
+  'plural',
+  'i18n_status',
+))
+->values(array(
+  'lid' => '57',
+  'translation' => 'fr - Mildly amusing limerick of the day',
+  'language' => 'fr',
+  'plid' => '0',
+  'plural' => '0',
+  'i18n_status' => '0',
+))
+->values(array(
+  'lid' => '57',
+  'translation' => 'is - Mildly amusing limerick of the day',
+  'language' => 'is',
+  'plid' => '0',
+  'plural' => '0',
+  'i18n_status' => '0',
+))
+->values(array(
+  'lid' => '60',
+  'translation' => "fr - A fellow jumped off a high wall\r\nAnd had a most terrible fall\r\nHe went back to bed\r\nWith a bump on his head\r\nThat's why you don't jump off a wall",
+  'language' => 'fr',
+  'plid' => '0',
+  'plural' => '0',
+  'i18n_status' => '0',
+))
+->values(array(
+  'lid' => '76',
+  'translation' => 'fr - User login title',
+  'language' => 'fr',
+  'plid' => '0',
+  'plural' => '0',
+  'i18n_status' => '0',
+))
+->values(array(
+  'lid' => '77',
+  'translation' => 'fr - DS9 (localized)',
+  'language' => 'fr',
+  'plid' => '0',
+  'plural' => '0',
+  'i18n_status' => '0',
+))
+->values(array(
+  'lid' => '78',
+  'translation' => 'fr - Terok Nor (localized)',
+  'language' => 'fr',
+  'plid' => '0',
+  'plural' => '0',
+  'i18n_status' => '0',
+))
+->values(array(
+  'lid' => '79',
+  'translation' => 'Jupiter Station',
+  'language' => 'is',
+  'plid' => '0',
+  'plural' => '0',
+  'i18n_status' => '0',
+))
+->values(array(
+  'lid' => '80',
+  'translation' => 'is - Holographic research. (localized)',
+  'language' => 'is',
+  'plid' => '0',
+  'plural' => '0',
+  'i18n_status' => '0',
+))
+->values(array(
+  'lid' => '87',
+  'translation' => 'fr - VocabFixed',
+  'language' => 'fr',
+  'plid' => '0',
+  'plural' => '0',
+  'i18n_status' => '0',
+))
+->values(array(
+  'lid' => '89',
+  'translation' => 'fr - VocabLocalized',
+  'language' => 'fr',
+  'plid' => '0',
+  'plural' => '0',
+  'i18n_status' => '0',
+))
+->values(array(
+  'lid' => '89',
+  'translation' => 'is - VocabLocalized',
+  'language' => 'is',
+  'plid' => '0',
+  'plural' => '0',
+  'i18n_status' => '0',
+))
+->values(array(
+  'lid' => '90',
+  'translation' => 'fr - Vocabulary localize option',
+  'language' => 'fr',
+  'plid' => '0',
+  'plural' => '0',
+  'i18n_status' => '0',
+))
+->values(array(
+  'lid' => '90',
+  'translation' => 'is - Vocabulary localize option',
+  'language' => 'is',
+  'plid' => '0',
+  'plural' => '0',
+  'i18n_status' => '0',
+))
+->values(array(
+  'lid' => '91',
+  'translation' => 'is - VocabTranslate',
+  'language' => 'is',
+  'plid' => '0',
+  'plural' => '0',
+  'i18n_status' => '0',
+))
+->values(array(
+  'lid' => '92',
+  'translation' => 'is - Vocabulary translate option',
+  'language' => 'is',
+  'plid' => '0',
+  'plural' => '0',
+  'i18n_status' => '0',
+))
+->values(array(
+  'lid' => '95',
+  'translation' => 'is - Some helpful text.',
+  'language' => 'is',
+  'plid' => '0',
+  'plural' => '0',
+  'i18n_status' => '0',
+))
+->values(array(
+  'lid' => '96',
+  'translation' => 'is - Email',
+  'language' => 'is',
+  'plid' => '0',
+  'plural' => '0',
+  'i18n_status' => '0',
+))
+->values(array(
+  'lid' => '97',
+  'translation' => 'fr - The email help text.',
+  'language' => 'fr',
+  'plid' => '0',
+  'plural' => '0',
+  'i18n_status' => '0',
+))
+->values(array(
+  'lid' => '97',
+  'translation' => 'is - The email help text.',
+  'language' => 'is',
+  'plid' => '0',
+  'plural' => '0',
+  'i18n_status' => '0',
+))
+->values(array(
+  'lid' => '113',
+  'translation' => 'fr - Link',
+  'language' => 'fr',
+  'plid' => '0',
+  'plural' => '0',
+  'i18n_status' => '1',
+))
+->values(array(
+  'lid' => '128',
+  'translation' => 'is - Term Reference',
+  'language' => 'is',
+  'plid' => '0',
+  'plural' => '0',
+  'i18n_status' => '0',
+))
+->values(array(
+  'lid' => '163',
+  'translation' => 'fr - User login title',
+  'language' => 'fr',
+  'plid' => '0',
+  'plural' => '0',
+  'i18n_status' => '0',
+))
+->values(array(
+  'lid' => '678',
+  'translation' => 'fr - Body',
+  'language' => 'fr',
+  'plid' => '0',
+  'plural' => '0',
+  'i18n_status' => '1',
+))
+->values(array(
+  'lid' => '684',
+  'translation' => 'fr - Image',
+  'language' => 'fr',
+  'plid' => '0',
+  'plural' => '0',
+  'i18n_status' => '1',
+))
+->values(array(
+  'lid' => '687',
+  'translation' => 'is - Off',
+  'language' => 'is',
+  'plid' => '0',
+  'plural' => '0',
+  'i18n_status' => '0',
+))
+->values(array(
+  'lid' => '688',
+  'translation' => 'is - 1',
+  'language' => 'is',
+  'plid' => '0',
+  'plural' => '0',
+  'i18n_status' => '0',
+))
+->values(array(
+  'lid' => '758',
+  'translation' => 'is field - vocab_localize',
+  'language' => 'is',
+  'plid' => '0',
+  'plural' => '0',
+  'i18n_status' => '0',
+))
+->values(array(
+  'lid' => '761',
+  'translation' => 'Verte',
+  'language' => 'fr',
+  'plid' => '0',
+  'plural' => '0',
+  'i18n_status' => '0',
+))
+->values(array(
+  'lid' => '761',
+  'translation' => 'Grænn',
+  'language' => 'is',
+  'plid' => '0',
+  'plural' => '0',
+  'i18n_status' => '0',
+))
+->values(array(
+  'lid' => '762',
+  'translation' => 'Noire',
+  'language' => 'fr',
+  'plid' => '0',
+  'plural' => '0',
+  'i18n_status' => '0',
+))
+->values(array(
+  'lid' => '762',
+  'translation' => 'Svartur',
+  'language' => 'is',
+  'plid' => '0',
+  'plural' => '0',
+  'i18n_status' => '0',
+))
+->values(array(
+  'lid' => '763',
+  'translation' => 'Blanche',
+  'language' => 'fr',
+  'plid' => '0',
+  'plural' => '0',
+  'i18n_status' => '0',
+))
+->values(array(
+  'lid' => '763',
+  'translation' => 'Hvítur',
+  'language' => 'is',
+  'plid' => '0',
+  'plural' => '0',
+  'i18n_status' => '0',
+))
+->values(array(
+  'lid' => '764',
+  'translation' => 'Color',
+  'language' => 'fr',
+  'plid' => '0',
+  'plural' => '0',
+  'i18n_status' => '0',
+))
+->values(array(
+  'lid' => '764',
+  'translation' => 'Color',
+  'language' => 'is',
+  'plid' => '0',
+  'plural' => '0',
+  'i18n_status' => '0',
+))
+->values(array(
+  'lid' => '765',
+  'translation' => 'Haute',
+  'language' => 'fr',
+  'plid' => '0',
+  'plural' => '0',
+  'i18n_status' => '0',
+))
+->values(array(
+  'lid' => '765',
+  'translation' => 'Hár',
+  'language' => 'is',
+  'plid' => '0',
+  'plural' => '0',
+  'i18n_status' => '0',
+))
+->values(array(
+  'lid' => '766',
+  'translation' => 'Moyenne',
+  'language' => 'fr',
+  'plid' => '0',
+  'plural' => '0',
+  'i18n_status' => '0',
+))
+->values(array(
+  'lid' => '766',
+  'translation' => 'Miðlungs',
+  'language' => 'is',
+  'plid' => '0',
+  'plural' => '0',
+  'i18n_status' => '0',
+))
+->values(array(
+  'lid' => '767',
+  'translation' => 'Faible',
+  'language' => 'fr',
+  'plid' => '0',
+  'plural' => '0',
+  'i18n_status' => '0',
+))
+->values(array(
+  'lid' => '767',
+  'translation' => 'Lágt',
+  'language' => 'is',
+  'plid' => '0',
+  'plural' => '0',
+  'i18n_status' => '0',
+))
+->values(array(
+  'lid' => '768',
+  'translation' => 'Rating',
+  'language' => 'fr',
+  'plid' => '0',
+  'plural' => '0',
+  'i18n_status' => '0',
+))
+->values(array(
+  'lid' => '768',
+  'translation' => 'Rating',
+  'language' => 'is',
+  'plid' => '0',
+  'plural' => '0',
+  'i18n_status' => '0',
+))
+->values(array(
+  'lid' => '797',
+  'translation' => 'fr - Emissary',
+  'language' => 'fr',
+  'plid' => '0',
+  'plural' => '0',
+  'i18n_status' => '0',
+))
+->values(array(
+  'lid' => '798',
+  'translation' => 'fr - Pilot episode',
+  'language' => 'fr',
+  'plid' => '0',
+  'plural' => '0',
+  'i18n_status' => '0',
+))
+->values(array(
+  'lid' => '800',
+  'translation' => 'fr - Main menu',
+  'language' => 'fr',
+  'plid' => '0',
+  'plural' => '0',
+  'i18n_status' => '0',
+))
+->values(array(
+  'lid' => '800',
+  'translation' => 'is - Main menu',
+  'language' => 'is',
+  'plid' => '0',
+  'plural' => '0',
+  'i18n_status' => '0',
+))
+->values(array(
+  'lid' => '801',
+  'translation' => 'fr - Main menu description',
+  'language' => 'fr',
+  'plid' => '0',
+  'plural' => '0',
+  'i18n_status' => '0',
+))
+->values(array(
+  'lid' => '801',
+  'translation' => 'is - Main menu description',
+  'language' => 'is',
+  'plid' => '0',
+  'plural' => '0',
+  'i18n_status' => '0',
+))
+->values(array(
+  'lid' => '802',
+  'translation' => 'fr - Test menu description',
+  'language' => 'fr',
+  'plid' => '0',
+  'plural' => '0',
+  'i18n_status' => '0',
+))
+->values(array(
+  'lid' => '803',
+  'translation' => 'fr - Google',
+  'language' => 'fr',
+  'plid' => '0',
+  'plural' => '0',
+  'i18n_status' => '0',
+))
+->values(array(
+  'lid' => '804',
+  'translation' => 'fr - Google description',
+  'language' => 'fr',
+  'plid' => '0',
+  'plural' => '0',
+  'i18n_status' => '0',
+))
+->values(array(
+  'lid' => '805',
+  'translation' => 'fr - Stop',
+  'language' => 'fr',
+  'plid' => '0',
+  'plural' => '0',
+  'i18n_status' => '0',
+))
+->values(array(
+  'lid' => '805',
+  'translation' => 'is - Stop',
+  'language' => 'is',
+  'plid' => '0',
+  'plural' => '0',
+  'i18n_status' => '0',
+))
+->values(array(
+  'lid' => '806',
+  'translation' => 'Go',
+  'language' => 'fr',
+  'plid' => '0',
+  'plural' => '0',
+  'i18n_status' => '0',
+))
+->values(array(
+  'lid' => '806',
+  'translation' => 'is - Go',
+  'language' => 'is',
+  'plid' => '0',
+  'plural' => '0',
+  'i18n_status' => '0',
+))
+->execute();
+$connection->schema()->createTable('menu_custom', array(
+  'fields' => array(
+    'menu_name' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '32',
+      'default' => '',
+    ),
+    'title' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+      'default' => '',
+    ),
+    'description' => array(
+      'type' => 'text',
+      'not null' => FALSE,
+      'size' => 'normal',
+    ),
+    'language' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '12',
+      'default' => 'und',
+    ),
+    'i18n_mode' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+  ),
+  'primary key' => array(
+    'menu_name',
+  ),
+  'mysql_character_set' => 'utf8',
+));
+
+$connection->insert('menu_custom')
+->fields(array(
+  'menu_name',
+  'title',
+  'description',
+  'language',
+  'i18n_mode',
+))
+->values(array(
+  'menu_name' => 'main-menu',
+  'title' => 'Main menu',
+  'description' => 'The <em>Main</em> menu is used on many sites to show the major sections of the site, often in a top navigation bar.',
+  'language' => 'und',
+  'i18n_mode' => '0',
+))
+->values(array(
+  'menu_name' => 'management',
+  'title' => 'Management',
+  'description' => 'The <em>Management</em> menu contains links for administrative tasks.',
+  'language' => 'und',
+  'i18n_mode' => '0',
+))
+->values(array(
+  'menu_name' => 'menu-fixedlang',
+  'title' => 'FixedLang',
+  'description' => '',
+  'language' => 'is',
+  'i18n_mode' => '2',
+))
+->values(array(
+  'menu_name' => 'menu-test-menu',
+  'title' => 'Test Menu',
+  'description' => 'Test menu description.',
+  'language' => 'und',
+  'i18n_mode' => '5',
+))
+->values(array(
+  'menu_name' => 'navigation',
+  'title' => 'Navigation',
+  'description' => 'The <em>Navigation</em> menu contains links intended for site visitors. Links are added to the <em>Navigation</em> menu automatically by some modules.',
+  'language' => 'und',
+  'i18n_mode' => '0',
+))
+->values(array(
+  'menu_name' => 'user-menu',
+  'title' => 'User menu',
+  'description' => "The <em>User</em> menu contains links related to the user's account, as well as the 'Log out' link.",
+  'language' => 'und',
+  'i18n_mode' => '0',
+))
+->execute();
+$connection->schema()->createTable('menu_links', array(
+  'fields' => array(
+    'menu_name' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '32',
+      'default' => '',
+    ),
+    'mlid' => array(
+      'type' => 'serial',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'unsigned' => TRUE,
+    ),
+    'plid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+    'link_path' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+      'default' => '',
+    ),
+    'router_path' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+      'default' => '',
+    ),
+    'link_title' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+      'default' => '',
+    ),
+    'options' => array(
+      'type' => 'blob',
+      'not null' => FALSE,
+      'size' => 'normal',
+    ),
+    'module' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+      'default' => 'system',
+    ),
+    'hidden' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'default' => '0',
+    ),
+    'external' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'default' => '0',
+    ),
+    'has_children' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'default' => '0',
+    ),
+    'expanded' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'default' => '0',
+    ),
+    'weight' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'default' => '0',
+    ),
+    'depth' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'default' => '0',
+    ),
+    'customized' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'default' => '0',
+    ),
+    'p1' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+    'p2' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+    'p3' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+    'p4' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+    'p5' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+    'p6' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+    'p7' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+    'p8' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+    'p9' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+    'updated' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'default' => '0',
+    ),
+    'language' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '12',
+      'default' => 'und',
+    ),
+    'i18n_tsid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+  ),
+  'primary key' => array(
+    'mlid',
+  ),
+  'mysql_character_set' => 'utf8',
+));
+
+$connection->insert('menu_links')
+->fields(array(
+  'menu_name',
+  'mlid',
+  'plid',
+  'link_path',
+  'router_path',
+  'link_title',
+  'options',
+  'module',
+  'hidden',
+  'external',
+  'has_children',
+  'expanded',
+  'weight',
+  'depth',
+  'customized',
+  'p1',
+  'p2',
+  'p3',
+  'p4',
+  'p5',
+  'p6',
+  'p7',
+  'p8',
+  'p9',
+  'updated',
+  'language',
+  'i18n_tsid',
+))
+->values(array(
+  'menu_name' => 'management',
+  'mlid' => '1',
+  'plid' => '0',
+  'link_path' => 'admin',
+  'router_path' => 'admin',
+  'link_title' => 'Administration',
+  'options' => 'a:0:{}',
+  'module' => 'system',
+  'hidden' => '0',
+  'external' => '0',
+  'has_children' => '1',
+  'expanded' => '0',
+  'weight' => '9',
+  'depth' => '1',
+  'customized' => '0',
+  'p1' => '1',
+  'p2' => '0',
+  'p3' => '0',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+  'language' => 'und',
+  'i18n_tsid' => '0',
+))
+->values(array(
+  'menu_name' => 'user-menu',
+  'mlid' => '2',
+  'plid' => '0',
+  'link_path' => 'user',
+  'router_path' => 'user',
+  'link_title' => 'User account',
+  'options' => 'a:1:{s:5:"alter";b:1;}',
+  'module' => 'system',
+  'hidden' => '0',
+  'external' => '0',
+  'has_children' => '0',
+  'expanded' => '0',
+  'weight' => '-10',
+  'depth' => '1',
+  'customized' => '0',
+  'p1' => '2',
+  'p2' => '0',
+  'p3' => '0',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+  'language' => 'und',
+  'i18n_tsid' => '0',
+))
+->values(array(
+  'menu_name' => 'navigation',
+  'mlid' => '3',
+  'plid' => '0',
+  'link_path' => 'comment/%',
+  'router_path' => 'comment/%',
+  'link_title' => 'Comment permalink',
+  'options' => 'a:0:{}',
+  'module' => 'system',
+  'hidden' => '0',
+  'external' => '0',
+  'has_children' => '1',
+  'expanded' => '0',
+  'weight' => '0',
+  'depth' => '1',
+  'customized' => '0',
+  'p1' => '3',
+  'p2' => '0',
+  'p3' => '0',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+  'language' => 'und',
+  'i18n_tsid' => '0',
+))
+->values(array(
+  'menu_name' => 'navigation',
+  'mlid' => '4',
+  'plid' => '0',
+  'link_path' => 'filter/tips',
+  'router_path' => 'filter/tips',
+  'link_title' => 'Compose tips',
+  'options' => 'a:0:{}',
+  'module' => 'system',
+  'hidden' => '1',
+  'external' => '0',
+  'has_children' => '1',
+  'expanded' => '0',
+  'weight' => '0',
+  'depth' => '1',
+  'customized' => '0',
+  'p1' => '4',
+  'p2' => '0',
+  'p3' => '0',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+  'language' => 'und',
+  'i18n_tsid' => '0',
+))
+->values(array(
+  'menu_name' => 'navigation',
+  'mlid' => '5',
+  'plid' => '0',
+  'link_path' => 'node/%',
+  'router_path' => 'node/%',
+  'link_title' => '',
+  'options' => 'a:0:{}',
+  'module' => 'system',
+  'hidden' => '0',
+  'external' => '0',
+  'has_children' => '0',
+  'expanded' => '0',
+  'weight' => '0',
+  'depth' => '1',
+  'customized' => '0',
+  'p1' => '5',
+  'p2' => '0',
+  'p3' => '0',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+  'language' => 'und',
+  'i18n_tsid' => '0',
+))
+->values(array(
+  'menu_name' => 'navigation',
+  'mlid' => '6',
+  'plid' => '0',
+  'link_path' => 'node/add',
+  'router_path' => 'node/add',
+  'link_title' => 'Add content',
+  'options' => 'a:0:{}',
+  'module' => 'system',
+  'hidden' => '0',
+  'external' => '0',
+  'has_children' => '1',
+  'expanded' => '0',
+  'weight' => '0',
+  'depth' => '1',
+  'customized' => '0',
+  'p1' => '6',
+  'p2' => '0',
+  'p3' => '0',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+  'language' => 'und',
+  'i18n_tsid' => '0',
+))
+->values(array(
+  'menu_name' => 'management',
+  'mlid' => '7',
+  'plid' => '1',
+  'link_path' => 'admin/appearance',
+  'router_path' => 'admin/appearance',
+  'link_title' => 'Appearance',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:33:"Select and configure your themes.";}}',
+  'module' => 'system',
+  'hidden' => '0',
+  'external' => '0',
+  'has_children' => '0',
+  'expanded' => '0',
+  'weight' => '-6',
+  'depth' => '2',
+  'customized' => '0',
+  'p1' => '1',
+  'p2' => '7',
+  'p3' => '0',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+  'language' => 'und',
+  'i18n_tsid' => '0',
+))
+->values(array(
+  'menu_name' => 'management',
+  'mlid' => '8',
+  'plid' => '1',
+  'link_path' => 'admin/config',
+  'router_path' => 'admin/config',
+  'link_title' => 'Configuration',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:20:"Administer settings.";}}',
+  'module' => 'system',
+  'hidden' => '0',
+  'external' => '0',
+  'has_children' => '1',
+  'expanded' => '0',
+  'weight' => '0',
+  'depth' => '2',
+  'customized' => '0',
+  'p1' => '1',
+  'p2' => '8',
+  'p3' => '0',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+  'language' => 'und',
+  'i18n_tsid' => '0',
+))
+->values(array(
+  'menu_name' => 'management',
+  'mlid' => '9',
+  'plid' => '1',
+  'link_path' => 'admin/content',
+  'router_path' => 'admin/content',
+  'link_title' => 'Content',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:32:"Administer content and comments.";}}',
+  'module' => 'system',
+  'hidden' => '0',
+  'external' => '0',
+  'has_children' => '1',
+  'expanded' => '0',
+  'weight' => '-10',
+  'depth' => '2',
+  'customized' => '0',
+  'p1' => '1',
+  'p2' => '9',
+  'p3' => '0',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+  'language' => 'und',
+  'i18n_tsid' => '0',
+))
+->values(array(
+  'menu_name' => 'user-menu',
+  'mlid' => '10',
+  'plid' => '2',
+  'link_path' => 'user/register',
+  'router_path' => 'user/register',
+  'link_title' => 'Create new account',
+  'options' => 'a:0:{}',
+  'module' => 'system',
+  'hidden' => '-1',
+  'external' => '0',
+  'has_children' => '0',
+  'expanded' => '0',
+  'weight' => '0',
+  'depth' => '2',
+  'customized' => '0',
+  'p1' => '2',
+  'p2' => '10',
+  'p3' => '0',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+  'language' => 'und',
+  'i18n_tsid' => '0',
+))
+->values(array(
+  'menu_name' => 'management',
+  'mlid' => '12',
+  'plid' => '1',
+  'link_path' => 'admin/index',
+  'router_path' => 'admin/index',
+  'link_title' => 'Index',
+  'options' => 'a:0:{}',
+  'module' => 'system',
+  'hidden' => '-1',
+  'external' => '0',
+  'has_children' => '0',
+  'expanded' => '0',
+  'weight' => '-18',
+  'depth' => '2',
+  'customized' => '0',
+  'p1' => '1',
+  'p2' => '12',
+  'p3' => '0',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+  'language' => 'und',
+  'i18n_tsid' => '0',
+))
+->values(array(
+  'menu_name' => 'user-menu',
+  'mlid' => '13',
+  'plid' => '2',
+  'link_path' => 'user/login',
+  'router_path' => 'user/login',
+  'link_title' => 'Log in',
+  'options' => 'a:0:{}',
+  'module' => 'system',
+  'hidden' => '-1',
+  'external' => '0',
+  'has_children' => '0',
+  'expanded' => '0',
+  'weight' => '0',
+  'depth' => '2',
+  'customized' => '0',
+  'p1' => '2',
+  'p2' => '13',
+  'p3' => '0',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+  'language' => 'und',
+  'i18n_tsid' => '0',
+))
+->values(array(
+  'menu_name' => 'user-menu',
+  'mlid' => '14',
+  'plid' => '0',
+  'link_path' => 'user/logout',
+  'router_path' => 'user/logout',
+  'link_title' => 'Log out',
+  'options' => 'a:0:{}',
+  'module' => 'system',
+  'hidden' => '0',
+  'external' => '0',
+  'has_children' => '0',
+  'expanded' => '0',
+  'weight' => '10',
+  'depth' => '1',
+  'customized' => '0',
+  'p1' => '14',
+  'p2' => '0',
+  'p3' => '0',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+  'language' => 'und',
+  'i18n_tsid' => '0',
+))
+->values(array(
+  'menu_name' => 'management',
+  'mlid' => '15',
+  'plid' => '1',
+  'link_path' => 'admin/modules',
+  'router_path' => 'admin/modules',
+  'link_title' => 'Modules',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:26:"Extend site functionality.";}}',
+  'module' => 'system',
+  'hidden' => '0',
+  'external' => '0',
+  'has_children' => '0',
+  'expanded' => '0',
+  'weight' => '-2',
+  'depth' => '2',
+  'customized' => '0',
+  'p1' => '1',
+  'p2' => '15',
+  'p3' => '0',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+  'language' => 'und',
+  'i18n_tsid' => '0',
+))
+->values(array(
+  'menu_name' => 'navigation',
+  'mlid' => '16',
+  'plid' => '0',
+  'link_path' => 'user/%',
+  'router_path' => 'user/%',
+  'link_title' => 'My account',
+  'options' => 'a:0:{}',
+  'module' => 'system',
+  'hidden' => '0',
+  'external' => '0',
+  'has_children' => '1',
+  'expanded' => '0',
+  'weight' => '0',
+  'depth' => '1',
+  'customized' => '0',
+  'p1' => '16',
+  'p2' => '0',
+  'p3' => '0',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+  'language' => 'und',
+  'i18n_tsid' => '0',
+))
+->values(array(
+  'menu_name' => 'management',
+  'mlid' => '17',
+  'plid' => '1',
+  'link_path' => 'admin/people',
+  'router_path' => 'admin/people',
+  'link_title' => 'People',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:45:"Manage user accounts, roles, and permissions.";}}',
+  'module' => 'system',
+  'hidden' => '0',
+  'external' => '0',
+  'has_children' => '0',
+  'expanded' => '0',
+  'weight' => '-4',
+  'depth' => '2',
+  'customized' => '0',
+  'p1' => '1',
+  'p2' => '17',
+  'p3' => '0',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+  'language' => 'und',
+  'i18n_tsid' => '0',
+))
+->values(array(
+  'menu_name' => 'management',
+  'mlid' => '18',
+  'plid' => '1',
+  'link_path' => 'admin/reports',
+  'router_path' => 'admin/reports',
+  'link_title' => 'Reports',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:34:"View reports, updates, and errors.";}}',
+  'module' => 'system',
+  'hidden' => '0',
+  'external' => '0',
+  'has_children' => '1',
+  'expanded' => '0',
+  'weight' => '5',
+  'depth' => '2',
+  'customized' => '0',
+  'p1' => '1',
+  'p2' => '18',
+  'p3' => '0',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+  'language' => 'und',
+  'i18n_tsid' => '0',
+))
+->values(array(
+  'menu_name' => 'user-menu',
+  'mlid' => '19',
+  'plid' => '2',
+  'link_path' => 'user/password',
+  'router_path' => 'user/password',
+  'link_title' => 'Request new password',
+  'options' => 'a:0:{}',
+  'module' => 'system',
+  'hidden' => '-1',
+  'external' => '0',
+  'has_children' => '0',
+  'expanded' => '0',
+  'weight' => '0',
+  'depth' => '2',
+  'customized' => '0',
+  'p1' => '2',
+  'p2' => '19',
+  'p3' => '0',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+  'language' => 'und',
+  'i18n_tsid' => '0',
+))
+->values(array(
+  'menu_name' => 'management',
+  'mlid' => '20',
+  'plid' => '1',
+  'link_path' => 'admin/structure',
+  'router_path' => 'admin/structure',
+  'link_title' => 'Structure',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:45:"Administer blocks, content types, menus, etc.";}}',
+  'module' => 'system',
+  'hidden' => '0',
+  'external' => '0',
+  'has_children' => '1',
+  'expanded' => '0',
+  'weight' => '-8',
+  'depth' => '2',
+  'customized' => '0',
+  'p1' => '1',
+  'p2' => '20',
+  'p3' => '0',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+  'language' => 'und',
+  'i18n_tsid' => '0',
+))
+->values(array(
+  'menu_name' => 'management',
+  'mlid' => '21',
+  'plid' => '1',
+  'link_path' => 'admin/tasks',
+  'router_path' => 'admin/tasks',
+  'link_title' => 'Tasks',
+  'options' => 'a:0:{}',
+  'module' => 'system',
+  'hidden' => '-1',
+  'external' => '0',
+  'has_children' => '0',
+  'expanded' => '0',
+  'weight' => '-20',
+  'depth' => '2',
+  'customized' => '0',
+  'p1' => '1',
+  'p2' => '21',
+  'p3' => '0',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+  'language' => 'und',
+  'i18n_tsid' => '0',
+))
+->values(array(
+  'menu_name' => 'navigation',
+  'mlid' => '22',
+  'plid' => '0',
+  'link_path' => 'comment/reply/%',
+  'router_path' => 'comment/reply/%',
+  'link_title' => 'Add new comment',
+  'options' => 'a:0:{}',
+  'module' => 'system',
+  'hidden' => '0',
+  'external' => '0',
+  'has_children' => '0',
+  'expanded' => '0',
+  'weight' => '0',
+  'depth' => '1',
+  'customized' => '0',
+  'p1' => '22',
+  'p2' => '0',
+  'p3' => '0',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+  'language' => 'und',
+  'i18n_tsid' => '0',
+))
+->values(array(
+  'menu_name' => 'navigation',
+  'mlid' => '23',
+  'plid' => '3',
+  'link_path' => 'comment/%/approve',
+  'router_path' => 'comment/%/approve',
+  'link_title' => 'Approve',
+  'options' => 'a:0:{}',
+  'module' => 'system',
+  'hidden' => '0',
+  'external' => '0',
+  'has_children' => '0',
+  'expanded' => '0',
+  'weight' => '1',
+  'depth' => '2',
+  'customized' => '0',
+  'p1' => '3',
+  'p2' => '23',
+  'p3' => '0',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+  'language' => 'und',
+  'i18n_tsid' => '0',
+))
+->values(array(
+  'menu_name' => 'navigation',
+  'mlid' => '24',
+  'plid' => '3',
+  'link_path' => 'comment/%/delete',
+  'router_path' => 'comment/%/delete',
+  'link_title' => 'Delete',
+  'options' => 'a:0:{}',
+  'module' => 'system',
+  'hidden' => '-1',
+  'external' => '0',
+  'has_children' => '0',
+  'expanded' => '0',
+  'weight' => '2',
+  'depth' => '2',
+  'customized' => '0',
+  'p1' => '3',
+  'p2' => '24',
+  'p3' => '0',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+  'language' => 'und',
+  'i18n_tsid' => '0',
+))
+->values(array(
+  'menu_name' => 'navigation',
+  'mlid' => '25',
+  'plid' => '3',
+  'link_path' => 'comment/%/edit',
+  'router_path' => 'comment/%/edit',
+  'link_title' => 'Edit',
+  'options' => 'a:0:{}',
+  'module' => 'system',
+  'hidden' => '-1',
+  'external' => '0',
+  'has_children' => '0',
+  'expanded' => '0',
+  'weight' => '0',
+  'depth' => '2',
+  'customized' => '0',
+  'p1' => '3',
+  'p2' => '25',
+  'p3' => '0',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+  'language' => 'und',
+  'i18n_tsid' => '0',
+))
+->values(array(
+  'menu_name' => 'navigation',
+  'mlid' => '26',
+  'plid' => '3',
+  'link_path' => 'comment/%/view',
+  'router_path' => 'comment/%/view',
+  'link_title' => 'View comment',
+  'options' => 'a:0:{}',
+  'module' => 'system',
+  'hidden' => '-1',
+  'external' => '0',
+  'has_children' => '0',
+  'expanded' => '0',
+  'weight' => '-10',
+  'depth' => '2',
+  'customized' => '0',
+  'p1' => '3',
+  'p2' => '26',
+  'p3' => '0',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+  'language' => 'und',
+  'i18n_tsid' => '0',
+))
+->values(array(
+  'menu_name' => 'management',
+  'mlid' => '27',
+  'plid' => '17',
+  'link_path' => 'admin/people/create',
+  'router_path' => 'admin/people/create',
+  'link_title' => 'Add user',
+  'options' => 'a:0:{}',
+  'module' => 'system',
+  'hidden' => '-1',
+  'external' => '0',
+  'has_children' => '0',
+  'expanded' => '0',
+  'weight' => '0',
+  'depth' => '3',
+  'customized' => '0',
+  'p1' => '1',
+  'p2' => '17',
+  'p3' => '27',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+  'language' => 'und',
+  'i18n_tsid' => '0',
+))
+->values(array(
+  'menu_name' => 'management',
+  'mlid' => '28',
+  'plid' => '20',
+  'link_path' => 'admin/structure/block',
+  'router_path' => 'admin/structure/block',
+  'link_title' => 'Blocks',
+  'options' => "a:1:{s:10:\"attributes\";a:1:{s:5:\"title\";s:79:\"Configure what block content appears in your site's sidebars and other regions.\";}}",
+  'module' => 'system',
+  'hidden' => '0',
+  'external' => '0',
+  'has_children' => '1',
+  'expanded' => '0',
+  'weight' => '0',
+  'depth' => '3',
+  'customized' => '0',
+  'p1' => '1',
+  'p2' => '20',
+  'p3' => '28',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+  'language' => 'und',
+  'i18n_tsid' => '0',
+))
+->values(array(
+  'menu_name' => 'navigation',
+  'mlid' => '29',
+  'plid' => '16',
+  'link_path' => 'user/%/cancel',
+  'router_path' => 'user/%/cancel',
+  'link_title' => 'Cancel account',
+  'options' => 'a:0:{}',
+  'module' => 'system',
+  'hidden' => '0',
+  'external' => '0',
+  'has_children' => '1',
+  'expanded' => '0',
+  'weight' => '0',
+  'depth' => '2',
+  'customized' => '0',
+  'p1' => '16',
+  'p2' => '29',
+  'p3' => '0',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+  'language' => 'und',
+  'i18n_tsid' => '0',
+))
+->values(array(
+  'menu_name' => 'management',
+  'mlid' => '30',
+  'plid' => '9',
+  'link_path' => 'admin/content/comment',
+  'router_path' => 'admin/content/comment',
+  'link_title' => 'Comments',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:59:"List and edit site comments and the comment approval queue.";}}',
+  'module' => 'system',
+  'hidden' => '0',
+  'external' => '0',
+  'has_children' => '0',
+  'expanded' => '0',
+  'weight' => '0',
+  'depth' => '3',
+  'customized' => '0',
+  'p1' => '1',
+  'p2' => '9',
+  'p3' => '30',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+  'language' => 'und',
+  'i18n_tsid' => '0',
+))
+->values(array(
+  'menu_name' => 'management',
+  'mlid' => '32',
+  'plid' => '9',
+  'link_path' => 'admin/content/node',
+  'router_path' => 'admin/content/node',
+  'link_title' => 'Content',
+  'options' => 'a:0:{}',
+  'module' => 'system',
+  'hidden' => '-1',
+  'external' => '0',
+  'has_children' => '0',
+  'expanded' => '0',
+  'weight' => '-10',
+  'depth' => '3',
+  'customized' => '0',
+  'p1' => '1',
+  'p2' => '9',
+  'p3' => '32',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+  'language' => 'und',
+  'i18n_tsid' => '0',
+))
+->values(array(
+  'menu_name' => 'management',
+  'mlid' => '33',
+  'plid' => '8',
+  'link_path' => 'admin/config/content',
+  'router_path' => 'admin/config/content',
+  'link_title' => 'Content authoring',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:53:"Settings related to formatting and authoring content.";}}',
+  'module' => 'system',
+  'hidden' => '0',
+  'external' => '0',
+  'has_children' => '1',
+  'expanded' => '0',
+  'weight' => '-15',
+  'depth' => '3',
+  'customized' => '0',
+  'p1' => '1',
+  'p2' => '8',
+  'p3' => '33',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+  'language' => 'und',
+  'i18n_tsid' => '0',
+))
+->values(array(
+  'menu_name' => 'management',
+  'mlid' => '34',
+  'plid' => '20',
+  'link_path' => 'admin/structure/types',
+  'router_path' => 'admin/structure/types',
+  'link_title' => 'Content types',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:92:"Manage content types, including default status, front page promotion, comment settings, etc.";}}',
+  'module' => 'system',
+  'hidden' => '0',
+  'external' => '0',
+  'has_children' => '1',
+  'expanded' => '0',
+  'weight' => '0',
+  'depth' => '3',
+  'customized' => '0',
+  'p1' => '1',
+  'p2' => '20',
+  'p3' => '34',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+  'language' => 'und',
+  'i18n_tsid' => '0',
+))
+->values(array(
+  'menu_name' => 'navigation',
+  'mlid' => '36',
+  'plid' => '5',
+  'link_path' => 'node/%/delete',
+  'router_path' => 'node/%/delete',
+  'link_title' => 'Delete',
+  'options' => 'a:0:{}',
+  'module' => 'system',
+  'hidden' => '-1',
+  'external' => '0',
+  'has_children' => '0',
+  'expanded' => '0',
+  'weight' => '1',
+  'depth' => '2',
+  'customized' => '0',
+  'p1' => '5',
+  'p2' => '36',
+  'p3' => '0',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+  'language' => 'und',
+  'i18n_tsid' => '0',
+))
+->values(array(
+  'menu_name' => 'management',
+  'mlid' => '37',
+  'plid' => '8',
+  'link_path' => 'admin/config/development',
+  'router_path' => 'admin/config/development',
+  'link_title' => 'Development',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:18:"Development tools.";}}',
+  'module' => 'system',
+  'hidden' => '0',
+  'external' => '0',
+  'has_children' => '1',
+  'expanded' => '0',
+  'weight' => '-10',
+  'depth' => '3',
+  'customized' => '0',
+  'p1' => '1',
+  'p2' => '8',
+  'p3' => '37',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+  'language' => 'und',
+  'i18n_tsid' => '0',
+))
+->values(array(
+  'menu_name' => 'navigation',
+  'mlid' => '38',
+  'plid' => '16',
+  'link_path' => 'user/%/edit',
+  'router_path' => 'user/%/edit',
+  'link_title' => 'Edit',
+  'options' => 'a:0:{}',
+  'module' => 'system',
+  'hidden' => '-1',
+  'external' => '0',
+  'has_children' => '0',
+  'expanded' => '0',
+  'weight' => '0',
+  'depth' => '2',
+  'customized' => '0',
+  'p1' => '16',
+  'p2' => '38',
+  'p3' => '0',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+  'language' => 'und',
+  'i18n_tsid' => '0',
+))
+->values(array(
+  'menu_name' => 'navigation',
+  'mlid' => '39',
+  'plid' => '5',
+  'link_path' => 'node/%/edit',
+  'router_path' => 'node/%/edit',
+  'link_title' => 'Edit',
+  'options' => 'a:0:{}',
+  'module' => 'system',
+  'hidden' => '-1',
+  'external' => '0',
+  'has_children' => '0',
+  'expanded' => '0',
+  'weight' => '0',
+  'depth' => '2',
+  'customized' => '0',
+  'p1' => '5',
+  'p2' => '39',
+  'p3' => '0',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+  'language' => 'und',
+  'i18n_tsid' => '0',
+))
+->values(array(
+  'menu_name' => 'management',
+  'mlid' => '40',
+  'plid' => '15',
+  'link_path' => 'admin/modules/list',
+  'router_path' => 'admin/modules/list',
+  'link_title' => 'List',
+  'options' => 'a:0:{}',
+  'module' => 'system',
+  'hidden' => '-1',
+  'external' => '0',
+  'has_children' => '0',
+  'expanded' => '0',
+  'weight' => '0',
+  'depth' => '3',
+  'customized' => '0',
+  'p1' => '1',
+  'p2' => '15',
+  'p3' => '40',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+  'language' => 'und',
+  'i18n_tsid' => '0',
+))
+->values(array(
+  'menu_name' => 'management',
+  'mlid' => '41',
+  'plid' => '17',
+  'link_path' => 'admin/people/people',
+  'router_path' => 'admin/people/people',
+  'link_title' => 'List',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:50:"Find and manage people interacting with your site.";}}',
+  'module' => 'system',
+  'hidden' => '-1',
+  'external' => '0',
+  'has_children' => '0',
+  'expanded' => '0',
+  'weight' => '-10',
+  'depth' => '3',
+  'customized' => '0',
+  'p1' => '1',
+  'p2' => '17',
+  'p3' => '41',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+  'language' => 'und',
+  'i18n_tsid' => '0',
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '1',
-  'plid' => '0',
-  'link_path' => 'admin',
-  'router_path' => 'admin',
-  'link_title' => 'Administration',
-  'options' => 'a:0:{}',
+  'mlid' => '42',
+  'plid' => '7',
+  'link_path' => 'admin/appearance/list',
+  'router_path' => 'admin/appearance/list',
+  'link_title' => 'List',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:31:"Select and configure your theme";}}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
-  'has_children' => '1',
+  'has_children' => '0',
   'expanded' => '0',
-  'weight' => '9',
-  'depth' => '1',
+  'weight' => '-1',
+  'depth' => '3',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '0',
-  'p3' => '0',
+  'p2' => '7',
+  'p3' => '42',
   'p4' => '0',
   'p5' => '0',
   'p6' => '0',
@@ -23419,24 +25814,24 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'user-menu',
-  'mlid' => '2',
-  'plid' => '0',
-  'link_path' => 'user',
-  'router_path' => 'user',
-  'link_title' => 'User account',
-  'options' => 'a:1:{s:5:"alter";b:1;}',
+  'menu_name' => 'management',
+  'mlid' => '43',
+  'plid' => '8',
+  'link_path' => 'admin/config/media',
+  'router_path' => 'admin/config/media',
+  'link_title' => 'Media',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:12:"Media tools.";}}',
   'module' => 'system',
   'hidden' => '0',
   'external' => '0',
-  'has_children' => '0',
+  'has_children' => '1',
   'expanded' => '0',
   'weight' => '-10',
-  'depth' => '1',
+  'depth' => '3',
   'customized' => '0',
-  'p1' => '2',
-  'p2' => '0',
-  'p3' => '0',
+  'p1' => '1',
+  'p2' => '8',
+  'p3' => '43',
   'p4' => '0',
   'p5' => '0',
   'p6' => '0',
@@ -23448,24 +25843,24 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'navigation',
-  'mlid' => '3',
-  'plid' => '0',
-  'link_path' => 'comment/%',
-  'router_path' => 'comment/%',
-  'link_title' => 'Comment permalink',
-  'options' => 'a:0:{}',
+  'menu_name' => 'management',
+  'mlid' => '44',
+  'plid' => '20',
+  'link_path' => 'admin/structure/menu',
+  'router_path' => 'admin/structure/menu',
+  'link_title' => 'Menus',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:86:"Add new menus to your site, edit existing menus, and rename and reorganize menu links.";}}',
   'module' => 'system',
   'hidden' => '0',
   'external' => '0',
   'has_children' => '1',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '1',
+  'depth' => '3',
   'customized' => '0',
-  'p1' => '3',
-  'p2' => '0',
-  'p3' => '0',
+  'p1' => '1',
+  'p2' => '20',
+  'p3' => '44',
   'p4' => '0',
   'p5' => '0',
   'p6' => '0',
@@ -23477,24 +25872,53 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'navigation',
-  'mlid' => '4',
-  'plid' => '0',
-  'link_path' => 'filter/tips',
-  'router_path' => 'filter/tips',
-  'link_title' => 'Compose tips',
-  'options' => 'a:0:{}',
+  'menu_name' => 'management',
+  'mlid' => '45',
+  'plid' => '8',
+  'link_path' => 'admin/config/people',
+  'router_path' => 'admin/config/people',
+  'link_title' => 'People',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:24:"Configure user accounts.";}}',
   'module' => 'system',
-  'hidden' => '1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '1',
   'expanded' => '0',
+  'weight' => '-20',
+  'depth' => '3',
+  'customized' => '0',
+  'p1' => '1',
+  'p2' => '8',
+  'p3' => '45',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+  'language' => 'und',
+  'i18n_tsid' => '0',
+))
+->values(array(
+  'menu_name' => 'management',
+  'mlid' => '46',
+  'plid' => '17',
+  'link_path' => 'admin/people/permissions',
+  'router_path' => 'admin/people/permissions',
+  'link_title' => 'Permissions',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:64:"Determine access to features by selecting permissions for roles.";}}',
+  'module' => 'system',
+  'hidden' => '-1',
+  'external' => '0',
+  'has_children' => '0',
+  'expanded' => '0',
   'weight' => '0',
-  'depth' => '1',
+  'depth' => '3',
   'customized' => '0',
-  'p1' => '4',
-  'p2' => '0',
-  'p3' => '0',
+  'p1' => '1',
+  'p2' => '17',
+  'p3' => '46',
   'p4' => '0',
   'p5' => '0',
   'p6' => '0',
@@ -23506,24 +25930,53 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'navigation',
-  'mlid' => '5',
-  'plid' => '0',
-  'link_path' => 'node/%',
-  'router_path' => 'node/%',
-  'link_title' => '',
-  'options' => 'a:0:{}',
+  'menu_name' => 'management',
+  'mlid' => '47',
+  'plid' => '18',
+  'link_path' => 'admin/reports/dblog',
+  'router_path' => 'admin/reports/dblog',
+  'link_title' => 'Recent log messages',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:43:"View events that have recently been logged.";}}',
   'module' => 'system',
   'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '1',
+  'weight' => '-1',
+  'depth' => '3',
   'customized' => '0',
-  'p1' => '5',
-  'p2' => '0',
-  'p3' => '0',
+  'p1' => '1',
+  'p2' => '18',
+  'p3' => '47',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+  'language' => 'und',
+  'i18n_tsid' => '0',
+))
+->values(array(
+  'menu_name' => 'management',
+  'mlid' => '48',
+  'plid' => '8',
+  'link_path' => 'admin/config/regional',
+  'router_path' => 'admin/config/regional',
+  'link_title' => 'Regional and language',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:48:"Regional settings, localization and translation.";}}',
+  'module' => 'system',
+  'hidden' => '0',
+  'external' => '0',
+  'has_children' => '1',
+  'expanded' => '0',
+  'weight' => '-5',
+  'depth' => '3',
+  'customized' => '0',
+  'p1' => '1',
+  'p2' => '8',
+  'p3' => '48',
   'p4' => '0',
   'p5' => '0',
   'p6' => '0',
@@ -23536,22 +25989,22 @@
 ))
 ->values(array(
   'menu_name' => 'navigation',
-  'mlid' => '6',
-  'plid' => '0',
-  'link_path' => 'node/add',
-  'router_path' => 'node/add',
-  'link_title' => 'Add content',
+  'mlid' => '49',
+  'plid' => '5',
+  'link_path' => 'node/%/revisions',
+  'router_path' => 'node/%/revisions',
+  'link_title' => 'Revisions',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '1',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '1',
+  'weight' => '2',
+  'depth' => '2',
   'customized' => '0',
-  'p1' => '6',
-  'p2' => '0',
+  'p1' => '5',
+  'p2' => '49',
   'p3' => '0',
   'p4' => '0',
   'p5' => '0',
@@ -23565,23 +26018,52 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '7',
-  'plid' => '1',
-  'link_path' => 'admin/appearance',
-  'router_path' => 'admin/appearance',
-  'link_title' => 'Appearance',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:33:"Select and configure your themes.";}}',
+  'mlid' => '50',
+  'plid' => '8',
+  'link_path' => 'admin/config/search',
+  'router_path' => 'admin/config/search',
+  'link_title' => 'Search and metadata',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:36:"Local site search, metadata and SEO.";}}',
   'module' => 'system',
   'hidden' => '0',
   'external' => '0',
+  'has_children' => '1',
+  'expanded' => '0',
+  'weight' => '-10',
+  'depth' => '3',
+  'customized' => '0',
+  'p1' => '1',
+  'p2' => '8',
+  'p3' => '50',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+  'language' => 'und',
+  'i18n_tsid' => '0',
+))
+->values(array(
+  'menu_name' => 'management',
+  'mlid' => '51',
+  'plid' => '7',
+  'link_path' => 'admin/appearance/settings',
+  'router_path' => 'admin/appearance/settings',
+  'link_title' => 'Settings',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:46:"Configure default and theme specific settings.";}}',
+  'module' => 'system',
+  'hidden' => '-1',
+  'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '-6',
-  'depth' => '2',
+  'weight' => '20',
+  'depth' => '3',
   'customized' => '0',
   'p1' => '1',
   'p2' => '7',
-  'p3' => '0',
+  'p3' => '51',
   'p4' => '0',
   'p5' => '0',
   'p6' => '0',
@@ -23594,23 +26076,52 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '8',
-  'plid' => '1',
-  'link_path' => 'admin/config',
-  'router_path' => 'admin/config',
-  'link_title' => 'Configuration',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:20:"Administer settings.";}}',
+  'mlid' => '52',
+  'plid' => '18',
+  'link_path' => 'admin/reports/status',
+  'router_path' => 'admin/reports/status',
+  'link_title' => 'Status report',
+  'options' => "a:1:{s:10:\"attributes\";a:1:{s:5:\"title\";s:74:\"Get a status report about your site's operation and any detected problems.\";}}",
+  'module' => 'system',
+  'hidden' => '0',
+  'external' => '0',
+  'has_children' => '0',
+  'expanded' => '0',
+  'weight' => '-60',
+  'depth' => '3',
+  'customized' => '0',
+  'p1' => '1',
+  'p2' => '18',
+  'p3' => '52',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+  'language' => 'und',
+  'i18n_tsid' => '0',
+))
+->values(array(
+  'menu_name' => 'management',
+  'mlid' => '53',
+  'plid' => '8',
+  'link_path' => 'admin/config/system',
+  'router_path' => 'admin/config/system',
+  'link_title' => 'System',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:37:"General system related configuration.";}}',
   'module' => 'system',
   'hidden' => '0',
   'external' => '0',
   'has_children' => '1',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '2',
+  'weight' => '-20',
+  'depth' => '3',
   'customized' => '0',
   'p1' => '1',
   'p2' => '8',
-  'p3' => '0',
+  'p3' => '53',
   'p4' => '0',
   'p5' => '0',
   'p6' => '0',
@@ -23623,22 +26134,138 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '9',
-  'plid' => '1',
-  'link_path' => 'admin/content',
-  'router_path' => 'admin/content',
-  'link_title' => 'Content',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:32:"Administer content and comments.";}}',
+  'mlid' => '54',
+  'plid' => '18',
+  'link_path' => 'admin/reports/access-denied',
+  'router_path' => 'admin/reports/access-denied',
+  'link_title' => "Top 'access denied' errors",
+  'options' => "a:1:{s:10:\"attributes\";a:1:{s:5:\"title\";s:35:\"View 'access denied' errors (403s).\";}}",
+  'module' => 'system',
+  'hidden' => '0',
+  'external' => '0',
+  'has_children' => '0',
+  'expanded' => '0',
+  'weight' => '0',
+  'depth' => '3',
+  'customized' => '0',
+  'p1' => '1',
+  'p2' => '18',
+  'p3' => '54',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+  'language' => 'und',
+  'i18n_tsid' => '0',
+))
+->values(array(
+  'menu_name' => 'management',
+  'mlid' => '55',
+  'plid' => '18',
+  'link_path' => 'admin/reports/page-not-found',
+  'router_path' => 'admin/reports/page-not-found',
+  'link_title' => "Top 'page not found' errors",
+  'options' => "a:1:{s:10:\"attributes\";a:1:{s:5:\"title\";s:36:\"View 'page not found' errors (404s).\";}}",
+  'module' => 'system',
+  'hidden' => '0',
+  'external' => '0',
+  'has_children' => '0',
+  'expanded' => '0',
+  'weight' => '0',
+  'depth' => '3',
+  'customized' => '0',
+  'p1' => '1',
+  'p2' => '18',
+  'p3' => '55',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+  'language' => 'und',
+  'i18n_tsid' => '0',
+))
+->values(array(
+  'menu_name' => 'management',
+  'mlid' => '56',
+  'plid' => '15',
+  'link_path' => 'admin/modules/uninstall',
+  'router_path' => 'admin/modules/uninstall',
+  'link_title' => 'Uninstall',
+  'options' => 'a:0:{}',
+  'module' => 'system',
+  'hidden' => '-1',
+  'external' => '0',
+  'has_children' => '0',
+  'expanded' => '0',
+  'weight' => '20',
+  'depth' => '3',
+  'customized' => '0',
+  'p1' => '1',
+  'p2' => '15',
+  'p3' => '56',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+  'language' => 'und',
+  'i18n_tsid' => '0',
+))
+->values(array(
+  'menu_name' => 'management',
+  'mlid' => '57',
+  'plid' => '8',
+  'link_path' => 'admin/config/user-interface',
+  'router_path' => 'admin/config/user-interface',
+  'link_title' => 'User interface',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:38:"Tools that enhance the user interface.";}}',
   'module' => 'system',
   'hidden' => '0',
   'external' => '0',
   'has_children' => '1',
   'expanded' => '0',
+  'weight' => '-15',
+  'depth' => '3',
+  'customized' => '0',
+  'p1' => '1',
+  'p2' => '8',
+  'p3' => '57',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+  'language' => 'und',
+  'i18n_tsid' => '0',
+))
+->values(array(
+  'menu_name' => 'navigation',
+  'mlid' => '58',
+  'plid' => '5',
+  'link_path' => 'node/%/view',
+  'router_path' => 'node/%/view',
+  'link_title' => 'View',
+  'options' => 'a:0:{}',
+  'module' => 'system',
+  'hidden' => '-1',
+  'external' => '0',
+  'has_children' => '0',
+  'expanded' => '0',
   'weight' => '-10',
   'depth' => '2',
   'customized' => '0',
-  'p1' => '1',
-  'p2' => '9',
+  'p1' => '5',
+  'p2' => '58',
   'p3' => '0',
   'p4' => '0',
   'p5' => '0',
@@ -23651,23 +26278,23 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'user-menu',
-  'mlid' => '10',
-  'plid' => '2',
-  'link_path' => 'user/register',
-  'router_path' => 'user/register',
-  'link_title' => 'Create new account',
+  'menu_name' => 'navigation',
+  'mlid' => '59',
+  'plid' => '16',
+  'link_path' => 'user/%/view',
+  'router_path' => 'user/%/view',
+  'link_title' => 'View',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '0',
+  'weight' => '-10',
   'depth' => '2',
   'customized' => '0',
-  'p1' => '2',
-  'p2' => '10',
+  'p1' => '16',
+  'p2' => '59',
   'p3' => '0',
   'p4' => '0',
   'p5' => '0',
@@ -23681,24 +26308,82 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '12',
-  'plid' => '1',
-  'link_path' => 'admin/index',
-  'router_path' => 'admin/index',
-  'link_title' => 'Index',
-  'options' => 'a:0:{}',
+  'mlid' => '60',
+  'plid' => '8',
+  'link_path' => 'admin/config/services',
+  'router_path' => 'admin/config/services',
+  'link_title' => 'Web services',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:30:"Tools related to web services.";}}',
+  'module' => 'system',
+  'hidden' => '0',
+  'external' => '0',
+  'has_children' => '1',
+  'expanded' => '0',
+  'weight' => '0',
+  'depth' => '3',
+  'customized' => '0',
+  'p1' => '1',
+  'p2' => '8',
+  'p3' => '60',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+  'language' => 'und',
+  'i18n_tsid' => '0',
+))
+->values(array(
+  'menu_name' => 'management',
+  'mlid' => '61',
+  'plid' => '8',
+  'link_path' => 'admin/config/workflow',
+  'router_path' => 'admin/config/workflow',
+  'link_title' => 'Workflow',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:43:"Content workflow, editorial workflow tools.";}}',
+  'module' => 'system',
+  'hidden' => '0',
+  'external' => '0',
+  'has_children' => '0',
+  'expanded' => '0',
+  'weight' => '5',
+  'depth' => '3',
+  'customized' => '0',
+  'p1' => '1',
+  'p2' => '8',
+  'p3' => '61',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+  'language' => 'und',
+  'i18n_tsid' => '0',
+))
+->values(array(
+  'menu_name' => 'management',
+  'mlid' => '66',
+  'plid' => '45',
+  'link_path' => 'admin/config/people/accounts',
+  'router_path' => 'admin/config/people/accounts',
+  'link_title' => 'Account settings',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:109:"Configure default behavior of users, including registration requirements, e-mails, fields, and user pictures.";}}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '-18',
-  'depth' => '2',
+  'weight' => '-10',
+  'depth' => '4',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '12',
-  'p3' => '0',
-  'p4' => '0',
+  'p2' => '8',
+  'p3' => '45',
+  'p4' => '66',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -23709,25 +26394,25 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'user-menu',
-  'mlid' => '13',
-  'plid' => '2',
-  'link_path' => 'user/login',
-  'router_path' => 'user/login',
-  'link_title' => 'Log in',
-  'options' => 'a:0:{}',
+  'menu_name' => 'management',
+  'mlid' => '67',
+  'plid' => '53',
+  'link_path' => 'admin/config/system/actions',
+  'router_path' => 'admin/config/system/actions',
+  'link_title' => 'Actions',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:41:"Manage the actions defined for your site.";}}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
-  'has_children' => '0',
+  'has_children' => '1',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '2',
+  'depth' => '4',
   'customized' => '0',
-  'p1' => '2',
-  'p2' => '13',
-  'p3' => '0',
-  'p4' => '0',
+  'p1' => '1',
+  'p2' => '8',
+  'p3' => '53',
+  'p4' => '67',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -23738,25 +26423,25 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'user-menu',
-  'mlid' => '14',
-  'plid' => '0',
-  'link_path' => 'user/logout',
-  'router_path' => 'user/logout',
-  'link_title' => 'Log out',
+  'menu_name' => 'management',
+  'mlid' => '68',
+  'plid' => '28',
+  'link_path' => 'admin/structure/block/add',
+  'router_path' => 'admin/structure/block/add',
+  'link_title' => 'Add block',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '10',
-  'depth' => '1',
+  'weight' => '0',
+  'depth' => '4',
   'customized' => '0',
-  'p1' => '14',
-  'p2' => '0',
-  'p3' => '0',
-  'p4' => '0',
+  'p1' => '1',
+  'p2' => '20',
+  'p3' => '28',
+  'p4' => '68',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -23768,24 +26453,24 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '15',
-  'plid' => '1',
-  'link_path' => 'admin/modules',
-  'router_path' => 'admin/modules',
-  'link_title' => 'Modules',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:26:"Extend site functionality.";}}',
+  'mlid' => '69',
+  'plid' => '34',
+  'link_path' => 'admin/structure/types/add',
+  'router_path' => 'admin/structure/types/add',
+  'link_title' => 'Add content type',
+  'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '-2',
-  'depth' => '2',
+  'weight' => '0',
+  'depth' => '4',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '15',
-  'p3' => '0',
-  'p4' => '0',
+  'p2' => '20',
+  'p3' => '34',
+  'p4' => '69',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -23796,25 +26481,25 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'navigation',
-  'mlid' => '16',
-  'plid' => '0',
-  'link_path' => 'user/%',
-  'router_path' => 'user/%',
-  'link_title' => 'My account',
+  'menu_name' => 'management',
+  'mlid' => '70',
+  'plid' => '44',
+  'link_path' => 'admin/structure/menu/add',
+  'router_path' => 'admin/structure/menu/add',
+  'link_title' => 'Add menu',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
-  'has_children' => '1',
+  'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '1',
+  'depth' => '4',
   'customized' => '0',
-  'p1' => '16',
-  'p2' => '0',
-  'p3' => '0',
-  'p4' => '0',
+  'p1' => '1',
+  'p2' => '20',
+  'p3' => '44',
+  'p4' => '70',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -23826,24 +26511,24 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '17',
-  'plid' => '1',
-  'link_path' => 'admin/people',
-  'router_path' => 'admin/people',
-  'link_title' => 'People',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:45:"Manage user accounts, roles, and permissions.";}}',
+  'mlid' => '71',
+  'plid' => '51',
+  'link_path' => 'admin/appearance/settings/bartik',
+  'router_path' => 'admin/appearance/settings/bartik',
+  'link_title' => 'Bartik',
+  'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '-4',
-  'depth' => '2',
+  'weight' => '0',
+  'depth' => '4',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '17',
-  'p3' => '0',
-  'p4' => '0',
+  'p2' => '7',
+  'p3' => '51',
+  'p4' => '71',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -23855,24 +26540,24 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '18',
-  'plid' => '1',
-  'link_path' => 'admin/reports',
-  'router_path' => 'admin/reports',
-  'link_title' => 'Reports',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:34:"View reports, updates, and errors.";}}',
+  'mlid' => '72',
+  'plid' => '50',
+  'link_path' => 'admin/config/search/clean-urls',
+  'router_path' => 'admin/config/search/clean-urls',
+  'link_title' => 'Clean URLs',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:43:"Enable or disable clean URLs for your site.";}}',
   'module' => 'system',
   'hidden' => '0',
   'external' => '0',
-  'has_children' => '1',
+  'has_children' => '0',
   'expanded' => '0',
   'weight' => '5',
-  'depth' => '2',
+  'depth' => '4',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '18',
-  'p3' => '0',
-  'p4' => '0',
+  'p2' => '8',
+  'p3' => '50',
+  'p4' => '72',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -23883,25 +26568,25 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'user-menu',
-  'mlid' => '19',
-  'plid' => '2',
-  'link_path' => 'user/password',
-  'router_path' => 'user/password',
-  'link_title' => 'Request new password',
-  'options' => 'a:0:{}',
+  'menu_name' => 'management',
+  'mlid' => '73',
+  'plid' => '53',
+  'link_path' => 'admin/config/system/cron',
+  'router_path' => 'admin/config/system/cron',
+  'link_title' => 'Cron',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:40:"Manage automatic site maintenance tasks.";}}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '2',
+  'weight' => '20',
+  'depth' => '4',
   'customized' => '0',
-  'p1' => '2',
-  'p2' => '19',
-  'p3' => '0',
-  'p4' => '0',
+  'p1' => '1',
+  'p2' => '8',
+  'p3' => '53',
+  'p4' => '73',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -23913,24 +26598,24 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '20',
-  'plid' => '1',
-  'link_path' => 'admin/structure',
-  'router_path' => 'admin/structure',
-  'link_title' => 'Structure',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:45:"Administer blocks, content types, menus, etc.";}}',
+  'mlid' => '74',
+  'plid' => '48',
+  'link_path' => 'admin/config/regional/date-time',
+  'router_path' => 'admin/config/regional/date-time',
+  'link_title' => 'Date and time',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:44:"Configure display formats for date and time.";}}',
   'module' => 'system',
   'hidden' => '0',
   'external' => '0',
-  'has_children' => '1',
+  'has_children' => '0',
   'expanded' => '0',
-  'weight' => '-8',
-  'depth' => '2',
+  'weight' => '-15',
+  'depth' => '4',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '20',
-  'p3' => '0',
-  'p4' => '0',
+  'p2' => '8',
+  'p3' => '48',
+  'p4' => '74',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -23942,23 +26627,23 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '21',
-  'plid' => '1',
-  'link_path' => 'admin/tasks',
-  'router_path' => 'admin/tasks',
-  'link_title' => 'Tasks',
+  'mlid' => '75',
+  'plid' => '18',
+  'link_path' => 'admin/reports/event/%',
+  'router_path' => 'admin/reports/event/%',
+  'link_title' => 'Details',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '-20',
-  'depth' => '2',
+  'weight' => '0',
+  'depth' => '3',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '21',
-  'p3' => '0',
+  'p2' => '18',
+  'p3' => '75',
   'p4' => '0',
   'p5' => '0',
   'p6' => '0',
@@ -23970,25 +26655,25 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'navigation',
-  'mlid' => '22',
-  'plid' => '0',
-  'link_path' => 'comment/reply/%',
-  'router_path' => 'comment/reply/%',
-  'link_title' => 'Add new comment',
-  'options' => 'a:0:{}',
+  'menu_name' => 'management',
+  'mlid' => '76',
+  'plid' => '43',
+  'link_path' => 'admin/config/media/file-system',
+  'router_path' => 'admin/config/media/file-system',
+  'link_title' => 'File system',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:68:"Tell Drupal where to store uploaded files and how they are accessed.";}}',
   'module' => 'system',
   'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '1',
+  'weight' => '-10',
+  'depth' => '4',
   'customized' => '0',
-  'p1' => '22',
-  'p2' => '0',
-  'p3' => '0',
-  'p4' => '0',
+  'p1' => '1',
+  'p2' => '8',
+  'p3' => '43',
+  'p4' => '76',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -23999,25 +26684,25 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'navigation',
-  'mlid' => '23',
-  'plid' => '3',
-  'link_path' => 'comment/%/approve',
-  'router_path' => 'comment/%/approve',
-  'link_title' => 'Approve',
+  'menu_name' => 'management',
+  'mlid' => '78',
+  'plid' => '51',
+  'link_path' => 'admin/appearance/settings/garland',
+  'router_path' => 'admin/appearance/settings/garland',
+  'link_title' => 'Garland',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '1',
-  'depth' => '2',
+  'weight' => '0',
+  'depth' => '4',
   'customized' => '0',
-  'p1' => '3',
-  'p2' => '23',
-  'p3' => '0',
-  'p4' => '0',
+  'p1' => '1',
+  'p2' => '7',
+  'p3' => '51',
+  'p4' => '78',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -24028,25 +26713,25 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'navigation',
-  'mlid' => '24',
-  'plid' => '3',
-  'link_path' => 'comment/%/delete',
-  'router_path' => 'comment/%/delete',
-  'link_title' => 'Delete',
+  'menu_name' => 'management',
+  'mlid' => '79',
+  'plid' => '51',
+  'link_path' => 'admin/appearance/settings/global',
+  'router_path' => 'admin/appearance/settings/global',
+  'link_title' => 'Global settings',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '2',
-  'depth' => '2',
+  'weight' => '-1',
+  'depth' => '4',
   'customized' => '0',
-  'p1' => '3',
-  'p2' => '24',
-  'p3' => '0',
-  'p4' => '0',
+  'p1' => '1',
+  'p2' => '7',
+  'p3' => '51',
+  'p4' => '79',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -24057,25 +26742,25 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'navigation',
-  'mlid' => '25',
-  'plid' => '3',
-  'link_path' => 'comment/%/edit',
-  'router_path' => 'comment/%/edit',
-  'link_title' => 'Edit',
-  'options' => 'a:0:{}',
+  'menu_name' => 'management',
+  'mlid' => '80',
+  'plid' => '45',
+  'link_path' => 'admin/config/people/ip-blocking',
+  'router_path' => 'admin/config/people/ip-blocking',
+  'link_title' => 'IP address blocking',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:28:"Manage blocked IP addresses.";}}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
-  'has_children' => '0',
+  'has_children' => '1',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '2',
+  'weight' => '10',
+  'depth' => '4',
   'customized' => '0',
-  'p1' => '3',
-  'p2' => '25',
-  'p3' => '0',
-  'p4' => '0',
+  'p1' => '1',
+  'p2' => '8',
+  'p3' => '45',
+  'p4' => '80',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -24086,25 +26771,25 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'navigation',
-  'mlid' => '26',
-  'plid' => '3',
-  'link_path' => 'comment/%/view',
-  'router_path' => 'comment/%/view',
-  'link_title' => 'View comment',
-  'options' => 'a:0:{}',
+  'menu_name' => 'management',
+  'mlid' => '81',
+  'plid' => '43',
+  'link_path' => 'admin/config/media/image-toolkit',
+  'router_path' => 'admin/config/media/image-toolkit',
+  'link_title' => 'Image toolkit',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:74:"Choose which image toolkit to use if you have installed optional toolkits.";}}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '-10',
-  'depth' => '2',
+  'weight' => '20',
+  'depth' => '4',
   'customized' => '0',
-  'p1' => '3',
-  'p2' => '26',
-  'p3' => '0',
-  'p4' => '0',
+  'p1' => '1',
+  'p2' => '8',
+  'p3' => '43',
+  'p4' => '81',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -24116,11 +26801,11 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '27',
-  'plid' => '17',
-  'link_path' => 'admin/people/create',
-  'router_path' => 'admin/people/create',
-  'link_title' => 'Add user',
+  'mlid' => '82',
+  'plid' => '40',
+  'link_path' => 'admin/modules/list/confirm',
+  'router_path' => 'admin/modules/list/confirm',
+  'link_title' => 'List',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
@@ -24128,12 +26813,12 @@
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '3',
+  'depth' => '4',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '17',
-  'p3' => '27',
-  'p4' => '0',
+  'p2' => '15',
+  'p3' => '40',
+  'p4' => '82',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -24145,24 +26830,24 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '28',
-  'plid' => '20',
-  'link_path' => 'admin/structure/block',
-  'router_path' => 'admin/structure/block',
-  'link_title' => 'Blocks',
-  'options' => "a:1:{s:10:\"attributes\";a:1:{s:5:\"title\";s:79:\"Configure what block content appears in your site's sidebars and other regions.\";}}",
+  'mlid' => '83',
+  'plid' => '34',
+  'link_path' => 'admin/structure/types/list',
+  'router_path' => 'admin/structure/types/list',
+  'link_title' => 'List',
+  'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
-  'has_children' => '1',
+  'has_children' => '0',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '3',
+  'weight' => '-10',
+  'depth' => '4',
   'customized' => '0',
   'p1' => '1',
   'p2' => '20',
-  'p3' => '28',
-  'p4' => '0',
+  'p3' => '34',
+  'p4' => '83',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -24173,25 +26858,25 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'navigation',
-  'mlid' => '29',
-  'plid' => '16',
-  'link_path' => 'user/%/cancel',
-  'router_path' => 'user/%/cancel',
-  'link_title' => 'Cancel account',
+  'menu_name' => 'management',
+  'mlid' => '84',
+  'plid' => '44',
+  'link_path' => 'admin/structure/menu/list',
+  'router_path' => 'admin/structure/menu/list',
+  'link_title' => 'List menus',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
-  'has_children' => '1',
+  'has_children' => '0',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '2',
+  'weight' => '-10',
+  'depth' => '4',
   'customized' => '0',
-  'p1' => '16',
-  'p2' => '29',
-  'p3' => '0',
-  'p4' => '0',
+  'p1' => '1',
+  'p2' => '20',
+  'p3' => '44',
+  'p4' => '84',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -24203,24 +26888,24 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '30',
-  'plid' => '9',
-  'link_path' => 'admin/content/comment',
-  'router_path' => 'admin/content/comment',
-  'link_title' => 'Comments',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:59:"List and edit site comments and the comment approval queue.";}}',
+  'mlid' => '85',
+  'plid' => '37',
+  'link_path' => 'admin/config/development/logging',
+  'router_path' => 'admin/config/development/logging',
+  'link_title' => 'Logging and errors',
+  'options' => "a:1:{s:10:\"attributes\";a:1:{s:5:\"title\";s:154:\"Settings for logging and alerts modules. Various modules can route Drupal's system events to different destinations, such as syslog, database, email, etc.\";}}",
   'module' => 'system',
   'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '3',
+  'weight' => '-15',
+  'depth' => '4',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '9',
-  'p3' => '30',
-  'p4' => '0',
+  'p2' => '8',
+  'p3' => '37',
+  'p4' => '85',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -24232,24 +26917,24 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '32',
-  'plid' => '9',
-  'link_path' => 'admin/content/node',
-  'router_path' => 'admin/content/node',
-  'link_title' => 'Content',
-  'options' => 'a:0:{}',
+  'mlid' => '86',
+  'plid' => '37',
+  'link_path' => 'admin/config/development/maintenance',
+  'router_path' => 'admin/config/development/maintenance',
+  'link_title' => 'Maintenance mode',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:62:"Take the site offline for maintenance or bring it back online.";}}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '-10',
-  'depth' => '3',
+  'depth' => '4',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '9',
-  'p3' => '32',
-  'p4' => '0',
+  'p2' => '8',
+  'p3' => '37',
+  'p4' => '86',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -24261,24 +26946,24 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '33',
-  'plid' => '8',
-  'link_path' => 'admin/config/content',
-  'router_path' => 'admin/config/content',
-  'link_title' => 'Content authoring',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:53:"Settings related to formatting and authoring content.";}}',
+  'mlid' => '89',
+  'plid' => '37',
+  'link_path' => 'admin/config/development/performance',
+  'router_path' => 'admin/config/development/performance',
+  'link_title' => 'Performance',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:101:"Enable or disable page caching for anonymous users and set CSS and JS bandwidth optimization options.";}}',
   'module' => 'system',
   'hidden' => '0',
   'external' => '0',
-  'has_children' => '1',
+  'has_children' => '0',
   'expanded' => '0',
-  'weight' => '-15',
-  'depth' => '3',
+  'weight' => '-20',
+  'depth' => '4',
   'customized' => '0',
   'p1' => '1',
   'p2' => '8',
-  'p3' => '33',
-  'p4' => '0',
+  'p3' => '37',
+  'p4' => '89',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -24290,24 +26975,24 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '34',
-  'plid' => '20',
-  'link_path' => 'admin/structure/types',
-  'router_path' => 'admin/structure/types',
-  'link_title' => 'Content types',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:92:"Manage content types, including default status, front page promotion, comment settings, etc.";}}',
+  'mlid' => '90',
+  'plid' => '46',
+  'link_path' => 'admin/people/permissions/list',
+  'router_path' => 'admin/people/permissions/list',
+  'link_title' => 'Permissions',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:64:"Determine access to features by selecting permissions for roles.";}}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
-  'has_children' => '1',
+  'has_children' => '0',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '3',
+  'weight' => '-8',
+  'depth' => '4',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '20',
-  'p3' => '34',
-  'p4' => '0',
+  'p2' => '17',
+  'p3' => '46',
+  'p4' => '90',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -24318,25 +27003,25 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'navigation',
-  'mlid' => '36',
-  'plid' => '5',
-  'link_path' => 'node/%/delete',
-  'router_path' => 'node/%/delete',
-  'link_title' => 'Delete',
+  'menu_name' => 'management',
+  'mlid' => '93',
+  'plid' => '30',
+  'link_path' => 'admin/content/comment/new',
+  'router_path' => 'admin/content/comment/new',
+  'link_title' => 'Published comments',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '1',
-  'depth' => '2',
+  'weight' => '-10',
+  'depth' => '4',
   'customized' => '0',
-  'p1' => '5',
-  'p2' => '36',
-  'p3' => '0',
-  'p4' => '0',
+  'p1' => '1',
+  'p2' => '9',
+  'p3' => '30',
+  'p4' => '93',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -24348,24 +27033,24 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '37',
-  'plid' => '8',
-  'link_path' => 'admin/config/development',
-  'router_path' => 'admin/config/development',
-  'link_title' => 'Development',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:18:"Development tools.";}}',
+  'mlid' => '94',
+  'plid' => '60',
+  'link_path' => 'admin/config/services/rss-publishing',
+  'router_path' => 'admin/config/services/rss-publishing',
+  'link_title' => 'RSS publishing',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:114:"Configure the site description, the number of items per feed and whether feeds should be titles/teasers/full-text.";}}',
   'module' => 'system',
   'hidden' => '0',
   'external' => '0',
-  'has_children' => '1',
+  'has_children' => '0',
   'expanded' => '0',
-  'weight' => '-10',
-  'depth' => '3',
+  'weight' => '0',
+  'depth' => '4',
   'customized' => '0',
   'p1' => '1',
   'p2' => '8',
-  'p3' => '37',
-  'p4' => '0',
+  'p3' => '60',
+  'p4' => '94',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -24376,25 +27061,25 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'navigation',
-  'mlid' => '38',
-  'plid' => '16',
-  'link_path' => 'user/%/edit',
-  'router_path' => 'user/%/edit',
-  'link_title' => 'Edit',
-  'options' => 'a:0:{}',
+  'menu_name' => 'management',
+  'mlid' => '95',
+  'plid' => '48',
+  'link_path' => 'admin/config/regional/settings',
+  'router_path' => 'admin/config/regional/settings',
+  'link_title' => 'Regional settings',
+  'options' => "a:1:{s:10:\"attributes\";a:1:{s:5:\"title\";s:54:\"Settings for the site's default time zone and country.\";}}",
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '2',
+  'weight' => '-20',
+  'depth' => '4',
   'customized' => '0',
-  'p1' => '16',
-  'p2' => '38',
-  'p3' => '0',
-  'p4' => '0',
+  'p1' => '1',
+  'p2' => '8',
+  'p3' => '48',
+  'p4' => '95',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -24405,25 +27090,25 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'navigation',
-  'mlid' => '39',
-  'plid' => '5',
-  'link_path' => 'node/%/edit',
-  'router_path' => 'node/%/edit',
-  'link_title' => 'Edit',
-  'options' => 'a:0:{}',
+  'menu_name' => 'management',
+  'mlid' => '96',
+  'plid' => '46',
+  'link_path' => 'admin/people/permissions/roles',
+  'router_path' => 'admin/people/permissions/roles',
+  'link_title' => 'Roles',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:30:"List, edit, or add user roles.";}}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
-  'has_children' => '0',
+  'has_children' => '1',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '2',
+  'weight' => '-5',
+  'depth' => '4',
   'customized' => '0',
-  'p1' => '5',
-  'p2' => '39',
-  'p3' => '0',
-  'p4' => '0',
+  'p1' => '1',
+  'p2' => '17',
+  'p3' => '46',
+  'p4' => '96',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -24435,24 +27120,24 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '40',
-  'plid' => '15',
-  'link_path' => 'admin/modules/list',
-  'router_path' => 'admin/modules/list',
-  'link_title' => 'List',
+  'mlid' => '97',
+  'plid' => '44',
+  'link_path' => 'admin/structure/menu/settings',
+  'router_path' => 'admin/structure/menu/settings',
+  'link_title' => 'Settings',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '3',
+  'weight' => '5',
+  'depth' => '4',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '15',
-  'p3' => '40',
-  'p4' => '0',
+  'p2' => '20',
+  'p3' => '44',
+  'p4' => '97',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -24464,24 +27149,24 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '41',
-  'plid' => '17',
-  'link_path' => 'admin/people/people',
-  'router_path' => 'admin/people/people',
-  'link_title' => 'List',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:50:"Find and manage people interacting with your site.";}}',
+  'mlid' => '98',
+  'plid' => '51',
+  'link_path' => 'admin/appearance/settings/seven',
+  'router_path' => 'admin/appearance/settings/seven',
+  'link_title' => 'Seven',
+  'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '-10',
-  'depth' => '3',
+  'weight' => '0',
+  'depth' => '4',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '17',
-  'p3' => '41',
-  'p4' => '0',
+  'p2' => '7',
+  'p3' => '51',
+  'p4' => '98',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -24493,24 +27178,24 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '42',
-  'plid' => '7',
-  'link_path' => 'admin/appearance/list',
-  'router_path' => 'admin/appearance/list',
-  'link_title' => 'List',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:31:"Select and configure your theme";}}',
+  'mlid' => '99',
+  'plid' => '53',
+  'link_path' => 'admin/config/system/site-information',
+  'router_path' => 'admin/config/system/site-information',
+  'link_title' => 'Site information',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:104:"Change site name, e-mail address, slogan, default front page, and number of posts per page, error pages.";}}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '-1',
-  'depth' => '3',
+  'weight' => '-20',
+  'depth' => '4',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '7',
-  'p3' => '42',
-  'p4' => '0',
+  'p2' => '8',
+  'p3' => '53',
+  'p4' => '99',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -24522,24 +27207,24 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '43',
-  'plid' => '8',
-  'link_path' => 'admin/config/media',
-  'router_path' => 'admin/config/media',
-  'link_title' => 'Media',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:12:"Media tools.";}}',
+  'mlid' => '100',
+  'plid' => '51',
+  'link_path' => 'admin/appearance/settings/stark',
+  'router_path' => 'admin/appearance/settings/stark',
+  'link_title' => 'Stark',
+  'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
-  'has_children' => '1',
+  'has_children' => '0',
   'expanded' => '0',
-  'weight' => '-10',
-  'depth' => '3',
+  'weight' => '0',
+  'depth' => '4',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '8',
-  'p3' => '43',
-  'p4' => '0',
+  'p2' => '7',
+  'p3' => '51',
+  'p4' => '100',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -24551,24 +27236,24 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '44',
-  'plid' => '20',
-  'link_path' => 'admin/structure/menu',
-  'router_path' => 'admin/structure/menu',
-  'link_title' => 'Menus',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:86:"Add new menus to your site, edit existing menus, and rename and reorganize menu links.";}}',
+  'mlid' => '101',
+  'plid' => '33',
+  'link_path' => 'admin/config/content/formats',
+  'router_path' => 'admin/config/content/formats',
+  'link_title' => 'Text formats',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:127:"Configure how content input by users is filtered, including allowed HTML tags. Also allows enabling of module-provided filters.";}}',
   'module' => 'system',
   'hidden' => '0',
   'external' => '0',
   'has_children' => '1',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '3',
+  'depth' => '4',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '20',
-  'p3' => '44',
-  'p4' => '0',
+  'p2' => '8',
+  'p3' => '33',
+  'p4' => '101',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -24580,24 +27265,24 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '45',
-  'plid' => '8',
-  'link_path' => 'admin/config/people',
-  'router_path' => 'admin/config/people',
-  'link_title' => 'People',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:24:"Configure user accounts.";}}',
+  'mlid' => '102',
+  'plid' => '30',
+  'link_path' => 'admin/content/comment/approval',
+  'router_path' => 'admin/content/comment/approval',
+  'link_title' => 'Unapproved comments',
+  'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
-  'has_children' => '1',
+  'has_children' => '0',
   'expanded' => '0',
-  'weight' => '-20',
-  'depth' => '3',
+  'weight' => '0',
+  'depth' => '4',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '8',
-  'p3' => '45',
-  'p4' => '0',
+  'p2' => '9',
+  'p3' => '30',
+  'p4' => '102',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -24609,24 +27294,24 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '46',
-  'plid' => '17',
-  'link_path' => 'admin/people/permissions',
-  'router_path' => 'admin/people/permissions',
-  'link_title' => 'Permissions',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:64:"Determine access to features by selecting permissions for roles.";}}',
+  'mlid' => '103',
+  'plid' => '56',
+  'link_path' => 'admin/modules/uninstall/confirm',
+  'router_path' => 'admin/modules/uninstall/confirm',
+  'link_title' => 'Uninstall',
+  'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '3',
+  'depth' => '4',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '17',
-  'p3' => '46',
-  'p4' => '0',
+  'p2' => '15',
+  'p3' => '56',
+  'p4' => '103',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -24637,24 +27322,24 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'management',
-  'mlid' => '47',
-  'plid' => '18',
-  'link_path' => 'admin/reports/dblog',
-  'router_path' => 'admin/reports/dblog',
-  'link_title' => 'Recent log messages',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:43:"View events that have recently been logged.";}}',
+  'menu_name' => 'navigation',
+  'mlid' => '104',
+  'plid' => '38',
+  'link_path' => 'user/%/edit/account',
+  'router_path' => 'user/%/edit/account',
+  'link_title' => 'Account',
+  'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '-1',
+  'weight' => '0',
   'depth' => '3',
   'customized' => '0',
-  'p1' => '1',
-  'p2' => '18',
-  'p3' => '47',
+  'p1' => '16',
+  'p2' => '38',
+  'p3' => '104',
   'p4' => '0',
   'p5' => '0',
   'p6' => '0',
@@ -24667,25 +27352,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '48',
-  'plid' => '8',
-  'link_path' => 'admin/config/regional',
-  'router_path' => 'admin/config/regional',
-  'link_title' => 'Regional and language',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:48:"Regional settings, localization and translation.";}}',
+  'mlid' => '105',
+  'plid' => '101',
+  'link_path' => 'admin/config/content/formats/%',
+  'router_path' => 'admin/config/content/formats/%',
+  'link_title' => '',
+  'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '0',
   'external' => '0',
   'has_children' => '1',
   'expanded' => '0',
-  'weight' => '-5',
-  'depth' => '3',
+  'weight' => '0',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
   'p2' => '8',
-  'p3' => '48',
-  'p4' => '0',
-  'p5' => '0',
+  'p3' => '33',
+  'p4' => '101',
+  'p5' => '105',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -24695,26 +27380,26 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'navigation',
-  'mlid' => '49',
-  'plid' => '5',
-  'link_path' => 'node/%/revisions',
-  'router_path' => 'node/%/revisions',
-  'link_title' => 'Revisions',
+  'menu_name' => 'management',
+  'mlid' => '110',
+  'plid' => '101',
+  'link_path' => 'admin/config/content/formats/add',
+  'router_path' => 'admin/config/content/formats/add',
+  'link_title' => 'Add text format',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
-  'has_children' => '1',
+  'has_children' => '0',
   'expanded' => '0',
-  'weight' => '2',
-  'depth' => '2',
+  'weight' => '1',
+  'depth' => '5',
   'customized' => '0',
-  'p1' => '5',
-  'p2' => '49',
-  'p3' => '0',
-  'p4' => '0',
-  'p5' => '0',
+  'p1' => '1',
+  'p2' => '8',
+  'p3' => '33',
+  'p4' => '101',
+  'p5' => '110',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -24725,24 +27410,24 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '50',
-  'plid' => '8',
-  'link_path' => 'admin/config/search',
-  'router_path' => 'admin/config/search',
-  'link_title' => 'Search and metadata',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:36:"Local site search, metadata and SEO.";}}',
+  'mlid' => '111',
+  'plid' => '28',
+  'link_path' => 'admin/structure/block/list/bartik',
+  'router_path' => 'admin/structure/block/list/bartik',
+  'link_title' => 'Bartik',
+  'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
-  'has_children' => '1',
+  'has_children' => '0',
   'expanded' => '0',
   'weight' => '-10',
-  'depth' => '3',
+  'depth' => '4',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '8',
-  'p3' => '50',
-  'p4' => '0',
+  'p2' => '20',
+  'p3' => '28',
+  'p4' => '111',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -24754,25 +27439,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '51',
-  'plid' => '7',
-  'link_path' => 'admin/appearance/settings',
-  'router_path' => 'admin/appearance/settings',
-  'link_title' => 'Settings',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:46:"Configure default and theme specific settings.";}}',
+  'mlid' => '112',
+  'plid' => '67',
+  'link_path' => 'admin/config/system/actions/configure',
+  'router_path' => 'admin/config/system/actions/configure',
+  'link_title' => 'Configure an advanced action',
+  'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '20',
-  'depth' => '3',
+  'weight' => '0',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '7',
-  'p3' => '51',
-  'p4' => '0',
-  'p5' => '0',
+  'p2' => '8',
+  'p3' => '53',
+  'p4' => '67',
+  'p5' => '112',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -24783,24 +27468,24 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '52',
-  'plid' => '18',
-  'link_path' => 'admin/reports/status',
-  'router_path' => 'admin/reports/status',
-  'link_title' => 'Status report',
-  'options' => "a:1:{s:10:\"attributes\";a:1:{s:5:\"title\";s:74:\"Get a status report about your site's operation and any detected problems.\";}}",
+  'mlid' => '113',
+  'plid' => '44',
+  'link_path' => 'admin/structure/menu/manage/%',
+  'router_path' => 'admin/structure/menu/manage/%',
+  'link_title' => 'Customize menu',
+  'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '0',
   'external' => '0',
-  'has_children' => '0',
+  'has_children' => '1',
   'expanded' => '0',
-  'weight' => '-60',
-  'depth' => '3',
+  'weight' => '0',
+  'depth' => '4',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '18',
-  'p3' => '52',
-  'p4' => '0',
+  'p2' => '20',
+  'p3' => '44',
+  'p4' => '113',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -24812,24 +27497,24 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '53',
-  'plid' => '8',
-  'link_path' => 'admin/config/system',
-  'router_path' => 'admin/config/system',
-  'link_title' => 'System',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:37:"General system related configuration.";}}',
+  'mlid' => '114',
+  'plid' => '34',
+  'link_path' => 'admin/structure/types/manage/%',
+  'router_path' => 'admin/structure/types/manage/%',
+  'link_title' => 'Edit content type',
+  'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '0',
   'external' => '0',
   'has_children' => '1',
   'expanded' => '0',
-  'weight' => '-20',
-  'depth' => '3',
+  'weight' => '0',
+  'depth' => '4',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '8',
-  'p3' => '53',
-  'p4' => '0',
+  'p2' => '20',
+  'p3' => '34',
+  'p4' => '114',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -24841,25 +27526,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '54',
-  'plid' => '18',
-  'link_path' => 'admin/reports/access-denied',
-  'router_path' => 'admin/reports/access-denied',
-  'link_title' => "Top 'access denied' errors",
-  'options' => "a:1:{s:10:\"attributes\";a:1:{s:5:\"title\";s:35:\"View 'access denied' errors (403s).\";}}",
+  'mlid' => '116',
+  'plid' => '74',
+  'link_path' => 'admin/config/regional/date-time/formats',
+  'router_path' => 'admin/config/regional/date-time/formats',
+  'link_title' => 'Formats',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:51:"Configure display format strings for date and time.";}}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
-  'has_children' => '0',
+  'has_children' => '1',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '3',
+  'weight' => '-9',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '18',
-  'p3' => '54',
-  'p4' => '0',
-  'p5' => '0',
+  'p2' => '8',
+  'p3' => '48',
+  'p4' => '74',
+  'p5' => '116',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -24870,24 +27555,24 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '55',
-  'plid' => '18',
-  'link_path' => 'admin/reports/page-not-found',
-  'router_path' => 'admin/reports/page-not-found',
-  'link_title' => "Top 'page not found' errors",
-  'options' => "a:1:{s:10:\"attributes\";a:1:{s:5:\"title\";s:36:\"View 'page not found' errors (404s).\";}}",
+  'mlid' => '117',
+  'plid' => '28',
+  'link_path' => 'admin/structure/block/list/garland',
+  'router_path' => 'admin/structure/block/list/garland',
+  'link_title' => 'Garland',
+  'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '3',
+  'depth' => '4',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '18',
-  'p3' => '55',
-  'p4' => '0',
+  'p2' => '20',
+  'p3' => '28',
+  'p4' => '117',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -24899,25 +27584,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '56',
-  'plid' => '15',
-  'link_path' => 'admin/modules/uninstall',
-  'router_path' => 'admin/modules/uninstall',
-  'link_title' => 'Uninstall',
+  'mlid' => '118',
+  'plid' => '101',
+  'link_path' => 'admin/config/content/formats/list',
+  'router_path' => 'admin/config/content/formats/list',
+  'link_title' => 'List',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '20',
-  'depth' => '3',
+  'weight' => '0',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '15',
-  'p3' => '56',
-  'p4' => '0',
-  'p5' => '0',
+  'p2' => '8',
+  'p3' => '33',
+  'p4' => '101',
+  'p5' => '118',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -24928,25 +27613,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '57',
-  'plid' => '8',
-  'link_path' => 'admin/config/user-interface',
-  'router_path' => 'admin/config/user-interface',
-  'link_title' => 'User interface',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:38:"Tools that enhance the user interface.";}}',
+  'mlid' => '119',
+  'plid' => '67',
+  'link_path' => 'admin/config/system/actions/manage',
+  'router_path' => 'admin/config/system/actions/manage',
+  'link_title' => 'Manage actions',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:41:"Manage the actions defined for your site.";}}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
-  'has_children' => '1',
+  'has_children' => '0',
   'expanded' => '0',
-  'weight' => '-15',
-  'depth' => '3',
+  'weight' => '-2',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
   'p2' => '8',
-  'p3' => '57',
-  'p4' => '0',
-  'p5' => '0',
+  'p3' => '53',
+  'p4' => '67',
+  'p5' => '119',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -24956,12 +27641,12 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'navigation',
-  'mlid' => '58',
-  'plid' => '5',
-  'link_path' => 'node/%/view',
-  'router_path' => 'node/%/view',
-  'link_title' => 'View',
+  'menu_name' => 'management',
+  'mlid' => '124',
+  'plid' => '66',
+  'link_path' => 'admin/config/people/accounts/settings',
+  'router_path' => 'admin/config/people/accounts/settings',
+  'link_title' => 'Settings',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
@@ -24969,13 +27654,13 @@
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '-10',
-  'depth' => '2',
+  'depth' => '5',
   'customized' => '0',
-  'p1' => '5',
-  'p2' => '58',
-  'p3' => '0',
-  'p4' => '0',
-  'p5' => '0',
+  'p1' => '1',
+  'p2' => '8',
+  'p3' => '45',
+  'p4' => '66',
+  'p5' => '124',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -24985,25 +27670,25 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'navigation',
-  'mlid' => '59',
-  'plid' => '16',
-  'link_path' => 'user/%/view',
-  'router_path' => 'user/%/view',
-  'link_title' => 'View',
+  'menu_name' => 'management',
+  'mlid' => '125',
+  'plid' => '28',
+  'link_path' => 'admin/structure/block/list/seven',
+  'router_path' => 'admin/structure/block/list/seven',
+  'link_title' => 'Seven',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '-10',
-  'depth' => '2',
+  'weight' => '0',
+  'depth' => '4',
   'customized' => '0',
-  'p1' => '16',
-  'p2' => '59',
-  'p3' => '0',
-  'p4' => '0',
+  'p1' => '1',
+  'p2' => '20',
+  'p3' => '28',
+  'p4' => '125',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -25015,24 +27700,24 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '60',
-  'plid' => '8',
-  'link_path' => 'admin/config/services',
-  'router_path' => 'admin/config/services',
-  'link_title' => 'Web services',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:30:"Tools related to web services.";}}',
+  'mlid' => '126',
+  'plid' => '28',
+  'link_path' => 'admin/structure/block/list/stark',
+  'router_path' => 'admin/structure/block/list/stark',
+  'link_title' => 'Stark',
+  'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
-  'has_children' => '1',
+  'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '3',
+  'depth' => '4',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '8',
-  'p3' => '60',
-  'p4' => '0',
+  'p2' => '20',
+  'p3' => '28',
+  'p4' => '126',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -25044,25 +27729,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '61',
-  'plid' => '8',
-  'link_path' => 'admin/config/workflow',
-  'router_path' => 'admin/config/workflow',
-  'link_title' => 'Workflow',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:43:"Content workflow, editorial workflow tools.";}}',
+  'mlid' => '127',
+  'plid' => '74',
+  'link_path' => 'admin/config/regional/date-time/types',
+  'router_path' => 'admin/config/regional/date-time/types',
+  'link_title' => 'Types',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:44:"Configure display formats for date and time.";}}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
-  'has_children' => '0',
+  'has_children' => '1',
   'expanded' => '0',
-  'weight' => '5',
-  'depth' => '3',
+  'weight' => '-10',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
   'p2' => '8',
-  'p3' => '61',
-  'p4' => '0',
-  'p5' => '0',
+  'p3' => '48',
+  'p4' => '74',
+  'p5' => '127',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -25072,25 +27757,25 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'management',
-  'mlid' => '66',
-  'plid' => '45',
-  'link_path' => 'admin/config/people/accounts',
-  'router_path' => 'admin/config/people/accounts',
-  'link_title' => 'Account settings',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:109:"Configure default behavior of users, including registration requirements, e-mails, fields, and user pictures.";}}',
+  'menu_name' => 'navigation',
+  'mlid' => '128',
+  'plid' => '49',
+  'link_path' => 'node/%/revisions/%/delete',
+  'router_path' => 'node/%/revisions/%/delete',
+  'link_title' => 'Delete earlier revision',
+  'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '-10',
-  'depth' => '4',
+  'weight' => '0',
+  'depth' => '3',
   'customized' => '0',
-  'p1' => '1',
-  'p2' => '8',
-  'p3' => '45',
-  'p4' => '66',
+  'p1' => '5',
+  'p2' => '49',
+  'p3' => '128',
+  'p4' => '0',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -25101,25 +27786,25 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'management',
-  'mlid' => '67',
-  'plid' => '53',
-  'link_path' => 'admin/config/system/actions',
-  'router_path' => 'admin/config/system/actions',
-  'link_title' => 'Actions',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:41:"Manage the actions defined for your site.";}}',
+  'menu_name' => 'navigation',
+  'mlid' => '129',
+  'plid' => '49',
+  'link_path' => 'node/%/revisions/%/revert',
+  'router_path' => 'node/%/revisions/%/revert',
+  'link_title' => 'Revert to earlier revision',
+  'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '0',
   'external' => '0',
-  'has_children' => '1',
+  'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '4',
+  'depth' => '3',
   'customized' => '0',
-  'p1' => '1',
-  'p2' => '8',
-  'p3' => '53',
-  'p4' => '67',
+  'p1' => '5',
+  'p2' => '49',
+  'p3' => '129',
+  'p4' => '0',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -25130,25 +27815,25 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'management',
-  'mlid' => '68',
-  'plid' => '28',
-  'link_path' => 'admin/structure/block/add',
-  'router_path' => 'admin/structure/block/add',
-  'link_title' => 'Add block',
+  'menu_name' => 'navigation',
+  'mlid' => '130',
+  'plid' => '49',
+  'link_path' => 'node/%/revisions/%/view',
+  'router_path' => 'node/%/revisions/%/view',
+  'link_title' => 'Revisions',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '4',
+  'depth' => '3',
   'customized' => '0',
-  'p1' => '1',
-  'p2' => '20',
-  'p3' => '28',
-  'p4' => '68',
+  'p1' => '5',
+  'p2' => '49',
+  'p3' => '130',
+  'p4' => '0',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -25160,11 +27845,11 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '69',
-  'plid' => '34',
-  'link_path' => 'admin/structure/types/add',
-  'router_path' => 'admin/structure/types/add',
-  'link_title' => 'Add content type',
+  'mlid' => '136',
+  'plid' => '117',
+  'link_path' => 'admin/structure/block/list/garland/add',
+  'router_path' => 'admin/structure/block/list/garland/add',
+  'link_title' => 'Add block',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
@@ -25172,13 +27857,13 @@
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '4',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
   'p2' => '20',
-  'p3' => '34',
-  'p4' => '69',
-  'p5' => '0',
+  'p3' => '28',
+  'p4' => '117',
+  'p5' => '136',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -25189,11 +27874,11 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '70',
-  'plid' => '44',
-  'link_path' => 'admin/structure/menu/add',
-  'router_path' => 'admin/structure/menu/add',
-  'link_title' => 'Add menu',
+  'mlid' => '141',
+  'plid' => '125',
+  'link_path' => 'admin/structure/block/list/seven/add',
+  'router_path' => 'admin/structure/block/list/seven/add',
+  'link_title' => 'Add block',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
@@ -25201,13 +27886,13 @@
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '4',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
   'p2' => '20',
-  'p3' => '44',
-  'p4' => '70',
-  'p5' => '0',
+  'p3' => '28',
+  'p4' => '125',
+  'p5' => '141',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -25218,11 +27903,11 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '71',
-  'plid' => '51',
-  'link_path' => 'admin/appearance/settings/bartik',
-  'router_path' => 'admin/appearance/settings/bartik',
-  'link_title' => 'Bartik',
+  'mlid' => '142',
+  'plid' => '126',
+  'link_path' => 'admin/structure/block/list/stark/add',
+  'router_path' => 'admin/structure/block/list/stark/add',
+  'link_title' => 'Add block',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
@@ -25230,13 +27915,13 @@
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '4',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '7',
-  'p3' => '51',
-  'p4' => '71',
-  'p5' => '0',
+  'p2' => '20',
+  'p3' => '28',
+  'p4' => '126',
+  'p5' => '142',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -25247,26 +27932,26 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '72',
-  'plid' => '50',
-  'link_path' => 'admin/config/search/clean-urls',
-  'router_path' => 'admin/config/search/clean-urls',
-  'link_title' => 'Clean URLs',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:43:"Enable or disable clean URLs for your site.";}}',
+  'mlid' => '143',
+  'plid' => '127',
+  'link_path' => 'admin/config/regional/date-time/types/add',
+  'router_path' => 'admin/config/regional/date-time/types/add',
+  'link_title' => 'Add date type',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:18:"Add new date type.";}}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '5',
-  'depth' => '4',
+  'weight' => '-10',
+  'depth' => '6',
   'customized' => '0',
   'p1' => '1',
   'p2' => '8',
-  'p3' => '50',
-  'p4' => '72',
-  'p5' => '0',
-  'p6' => '0',
+  'p3' => '48',
+  'p4' => '74',
+  'p5' => '127',
+  'p6' => '143',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -25276,26 +27961,26 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '73',
-  'plid' => '53',
-  'link_path' => 'admin/config/system/cron',
-  'router_path' => 'admin/config/system/cron',
-  'link_title' => 'Cron',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:40:"Manage automatic site maintenance tasks.";}}',
+  'mlid' => '144',
+  'plid' => '116',
+  'link_path' => 'admin/config/regional/date-time/formats/add',
+  'router_path' => 'admin/config/regional/date-time/formats/add',
+  'link_title' => 'Add format',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:43:"Allow users to add additional date formats.";}}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '20',
-  'depth' => '4',
+  'weight' => '-10',
+  'depth' => '6',
   'customized' => '0',
   'p1' => '1',
   'p2' => '8',
-  'p3' => '53',
-  'p4' => '73',
-  'p5' => '0',
-  'p6' => '0',
+  'p3' => '48',
+  'p4' => '74',
+  'p5' => '116',
+  'p6' => '144',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -25305,25 +27990,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '74',
-  'plid' => '48',
-  'link_path' => 'admin/config/regional/date-time',
-  'router_path' => 'admin/config/regional/date-time',
-  'link_title' => 'Date and time',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:44:"Configure display formats for date and time.";}}',
+  'mlid' => '145',
+  'plid' => '113',
+  'link_path' => 'admin/structure/menu/manage/%/add',
+  'router_path' => 'admin/structure/menu/manage/%/add',
+  'link_title' => 'Add link',
+  'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '-15',
-  'depth' => '4',
+  'weight' => '0',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '8',
-  'p3' => '48',
-  'p4' => '74',
-  'p5' => '0',
+  'p2' => '20',
+  'p3' => '44',
+  'p4' => '113',
+  'p5' => '145',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -25334,11 +28019,11 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '75',
-  'plid' => '18',
-  'link_path' => 'admin/reports/event/%',
-  'router_path' => 'admin/reports/event/%',
-  'link_title' => 'Details',
+  'mlid' => '146',
+  'plid' => '28',
+  'link_path' => 'admin/structure/block/manage/%/%',
+  'router_path' => 'admin/structure/block/manage/%/%',
+  'link_title' => 'Configure block',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '0',
@@ -25346,12 +28031,12 @@
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '3',
+  'depth' => '4',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '18',
-  'p3' => '75',
-  'p4' => '0',
+  'p2' => '20',
+  'p3' => '28',
+  'p4' => '146',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -25362,25 +28047,25 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'management',
-  'mlid' => '76',
-  'plid' => '43',
-  'link_path' => 'admin/config/media/file-system',
-  'router_path' => 'admin/config/media/file-system',
-  'link_title' => 'File system',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:68:"Tell Drupal where to store uploaded files and how they are accessed.";}}',
+  'menu_name' => 'navigation',
+  'mlid' => '147',
+  'plid' => '29',
+  'link_path' => 'user/%/cancel/confirm/%/%',
+  'router_path' => 'user/%/cancel/confirm/%/%',
+  'link_title' => 'Confirm account cancellation',
+  'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '-10',
-  'depth' => '4',
+  'weight' => '0',
+  'depth' => '3',
   'customized' => '0',
-  'p1' => '1',
-  'p2' => '8',
-  'p3' => '43',
-  'p4' => '76',
+  'p1' => '16',
+  'p2' => '29',
+  'p3' => '147',
+  'p4' => '0',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -25392,25 +28077,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '78',
-  'plid' => '51',
-  'link_path' => 'admin/appearance/settings/garland',
-  'router_path' => 'admin/appearance/settings/garland',
-  'link_title' => 'Garland',
+  'mlid' => '148',
+  'plid' => '114',
+  'link_path' => 'admin/structure/types/manage/%/delete',
+  'router_path' => 'admin/structure/types/manage/%/delete',
+  'link_title' => 'Delete',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '4',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '7',
-  'p3' => '51',
-  'p4' => '78',
-  'p5' => '0',
+  'p2' => '20',
+  'p3' => '34',
+  'p4' => '114',
+  'p5' => '148',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -25421,25 +28106,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '79',
-  'plid' => '51',
-  'link_path' => 'admin/appearance/settings/global',
-  'router_path' => 'admin/appearance/settings/global',
-  'link_title' => 'Global settings',
+  'mlid' => '149',
+  'plid' => '80',
+  'link_path' => 'admin/config/people/ip-blocking/delete/%',
+  'router_path' => 'admin/config/people/ip-blocking/delete/%',
+  'link_title' => 'Delete IP address',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '-1',
-  'depth' => '4',
+  'weight' => '0',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '7',
-  'p3' => '51',
-  'p4' => '79',
-  'p5' => '0',
+  'p2' => '8',
+  'p3' => '45',
+  'p4' => '80',
+  'p5' => '149',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -25450,25 +28135,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '80',
-  'plid' => '45',
-  'link_path' => 'admin/config/people/ip-blocking',
-  'router_path' => 'admin/config/people/ip-blocking',
-  'link_title' => 'IP address blocking',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:28:"Manage blocked IP addresses.";}}',
+  'mlid' => '150',
+  'plid' => '67',
+  'link_path' => 'admin/config/system/actions/delete/%',
+  'router_path' => 'admin/config/system/actions/delete/%',
+  'link_title' => 'Delete action',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:17:"Delete an action.";}}',
   'module' => 'system',
   'hidden' => '0',
   'external' => '0',
-  'has_children' => '1',
+  'has_children' => '0',
   'expanded' => '0',
-  'weight' => '10',
-  'depth' => '4',
+  'weight' => '0',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
   'p2' => '8',
-  'p3' => '45',
-  'p4' => '80',
-  'p5' => '0',
+  'p3' => '53',
+  'p4' => '67',
+  'p5' => '150',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -25479,25 +28164,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '81',
-  'plid' => '43',
-  'link_path' => 'admin/config/media/image-toolkit',
-  'router_path' => 'admin/config/media/image-toolkit',
-  'link_title' => 'Image toolkit',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:74:"Choose which image toolkit to use if you have installed optional toolkits.";}}',
+  'mlid' => '151',
+  'plid' => '113',
+  'link_path' => 'admin/structure/menu/manage/%/delete',
+  'router_path' => 'admin/structure/menu/manage/%/delete',
+  'link_title' => 'Delete menu',
+  'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '20',
-  'depth' => '4',
+  'weight' => '0',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '8',
-  'p3' => '43',
-  'p4' => '81',
-  'p5' => '0',
+  'p2' => '20',
+  'p3' => '44',
+  'p4' => '113',
+  'p5' => '151',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -25508,14 +28193,14 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '82',
-  'plid' => '40',
-  'link_path' => 'admin/modules/list/confirm',
-  'router_path' => 'admin/modules/list/confirm',
-  'link_title' => 'List',
+  'mlid' => '152',
+  'plid' => '44',
+  'link_path' => 'admin/structure/menu/item/%/delete',
+  'router_path' => 'admin/structure/menu/item/%/delete',
+  'link_title' => 'Delete menu link',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
@@ -25523,9 +28208,9 @@
   'depth' => '4',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '15',
-  'p3' => '40',
-  'p4' => '82',
+  'p2' => '20',
+  'p3' => '44',
+  'p4' => '152',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -25537,25 +28222,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '83',
-  'plid' => '34',
-  'link_path' => 'admin/structure/types/list',
-  'router_path' => 'admin/structure/types/list',
-  'link_title' => 'List',
+  'mlid' => '153',
+  'plid' => '96',
+  'link_path' => 'admin/people/permissions/roles/delete/%',
+  'router_path' => 'admin/people/permissions/roles/delete/%',
+  'link_title' => 'Delete role',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '-10',
-  'depth' => '4',
+  'weight' => '0',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '20',
-  'p3' => '34',
-  'p4' => '83',
-  'p5' => '0',
+  'p2' => '17',
+  'p3' => '46',
+  'p4' => '96',
+  'p5' => '153',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -25566,26 +28251,26 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '84',
-  'plid' => '44',
-  'link_path' => 'admin/structure/menu/list',
-  'router_path' => 'admin/structure/menu/list',
-  'link_title' => 'List menus',
+  'mlid' => '154',
+  'plid' => '105',
+  'link_path' => 'admin/config/content/formats/%/disable',
+  'router_path' => 'admin/config/content/formats/%/disable',
+  'link_title' => 'Disable text format',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '-10',
-  'depth' => '4',
+  'weight' => '0',
+  'depth' => '6',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '20',
-  'p3' => '44',
-  'p4' => '84',
-  'p5' => '0',
-  'p6' => '0',
+  'p2' => '8',
+  'p3' => '33',
+  'p4' => '101',
+  'p5' => '105',
+  'p6' => '154',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -25595,25 +28280,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '85',
-  'plid' => '37',
-  'link_path' => 'admin/config/development/logging',
-  'router_path' => 'admin/config/development/logging',
-  'link_title' => 'Logging and errors',
-  'options' => "a:1:{s:10:\"attributes\";a:1:{s:5:\"title\";s:154:\"Settings for logging and alerts modules. Various modules can route Drupal's system events to different destinations, such as syslog, database, email, etc.\";}}",
+  'mlid' => '155',
+  'plid' => '114',
+  'link_path' => 'admin/structure/types/manage/%/edit',
+  'router_path' => 'admin/structure/types/manage/%/edit',
+  'link_title' => 'Edit',
+  'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '-15',
-  'depth' => '4',
+  'weight' => '0',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '8',
-  'p3' => '37',
-  'p4' => '85',
-  'p5' => '0',
+  'p2' => '20',
+  'p3' => '34',
+  'p4' => '114',
+  'p5' => '155',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -25624,25 +28309,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '86',
-  'plid' => '37',
-  'link_path' => 'admin/config/development/maintenance',
-  'router_path' => 'admin/config/development/maintenance',
-  'link_title' => 'Maintenance mode',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:62:"Take the site offline for maintenance or bring it back online.";}}',
+  'mlid' => '156',
+  'plid' => '113',
+  'link_path' => 'admin/structure/menu/manage/%/edit',
+  'router_path' => 'admin/structure/menu/manage/%/edit',
+  'link_title' => 'Edit menu',
+  'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '-10',
-  'depth' => '4',
+  'weight' => '0',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '8',
-  'p3' => '37',
-  'p4' => '86',
-  'p5' => '0',
+  'p2' => '20',
+  'p3' => '44',
+  'p4' => '113',
+  'p5' => '156',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -25653,24 +28338,24 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '89',
-  'plid' => '37',
-  'link_path' => 'admin/config/development/performance',
-  'router_path' => 'admin/config/development/performance',
-  'link_title' => 'Performance',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:101:"Enable or disable page caching for anonymous users and set CSS and JS bandwidth optimization options.";}}',
+  'mlid' => '157',
+  'plid' => '44',
+  'link_path' => 'admin/structure/menu/item/%/edit',
+  'router_path' => 'admin/structure/menu/item/%/edit',
+  'link_title' => 'Edit menu link',
+  'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '-20',
+  'weight' => '0',
   'depth' => '4',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '8',
-  'p3' => '37',
-  'p4' => '89',
+  'p2' => '20',
+  'p3' => '44',
+  'p4' => '157',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -25682,25 +28367,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '90',
-  'plid' => '46',
-  'link_path' => 'admin/people/permissions/list',
-  'router_path' => 'admin/people/permissions/list',
-  'link_title' => 'Permissions',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:64:"Determine access to features by selecting permissions for roles.";}}',
+  'mlid' => '158',
+  'plid' => '96',
+  'link_path' => 'admin/people/permissions/roles/edit/%',
+  'router_path' => 'admin/people/permissions/roles/edit/%',
+  'link_title' => 'Edit role',
+  'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '-8',
-  'depth' => '4',
+  'weight' => '0',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
   'p2' => '17',
   'p3' => '46',
-  'p4' => '90',
-  'p5' => '0',
+  'p4' => '96',
+  'p5' => '158',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -25711,11 +28396,11 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '93',
-  'plid' => '30',
-  'link_path' => 'admin/content/comment/new',
-  'router_path' => 'admin/content/comment/new',
-  'link_title' => 'Published comments',
+  'mlid' => '159',
+  'plid' => '113',
+  'link_path' => 'admin/structure/menu/manage/%/list',
+  'router_path' => 'admin/structure/menu/manage/%/list',
+  'link_title' => 'List links',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
@@ -25723,13 +28408,13 @@
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '-10',
-  'depth' => '4',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '9',
-  'p3' => '30',
-  'p4' => '93',
-  'p5' => '0',
+  'p2' => '20',
+  'p3' => '44',
+  'p4' => '113',
+  'p5' => '159',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -25740,12 +28425,12 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '94',
-  'plid' => '60',
-  'link_path' => 'admin/config/services/rss-publishing',
-  'router_path' => 'admin/config/services/rss-publishing',
-  'link_title' => 'RSS publishing',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:114:"Configure the site description, the number of items per feed and whether feeds should be titles/teasers/full-text.";}}',
+  'mlid' => '160',
+  'plid' => '44',
+  'link_path' => 'admin/structure/menu/item/%/reset',
+  'router_path' => 'admin/structure/menu/item/%/reset',
+  'link_title' => 'Reset menu link',
+  'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '0',
   'external' => '0',
@@ -25755,9 +28440,9 @@
   'depth' => '4',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '8',
-  'p3' => '60',
-  'p4' => '94',
+  'p2' => '20',
+  'p3' => '44',
+  'p4' => '160',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -25769,25 +28454,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '95',
-  'plid' => '48',
-  'link_path' => 'admin/config/regional/settings',
-  'router_path' => 'admin/config/regional/settings',
-  'link_title' => 'Regional settings',
-  'options' => "a:1:{s:10:\"attributes\";a:1:{s:5:\"title\";s:54:\"Settings for the site's default time zone and country.\";}}",
+  'mlid' => '161',
+  'plid' => '114',
+  'link_path' => 'admin/structure/types/manage/%/comment/display',
+  'router_path' => 'admin/structure/types/manage/%/comment/display',
+  'link_title' => 'Comment display',
+  'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '-20',
-  'depth' => '4',
+  'weight' => '4',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '8',
-  'p3' => '48',
-  'p4' => '95',
-  'p5' => '0',
+  'p2' => '20',
+  'p3' => '34',
+  'p4' => '114',
+  'p5' => '161',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -25798,25 +28483,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '96',
-  'plid' => '46',
-  'link_path' => 'admin/people/permissions/roles',
-  'router_path' => 'admin/people/permissions/roles',
-  'link_title' => 'Roles',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:30:"List, edit, or add user roles.";}}',
+  'mlid' => '162',
+  'plid' => '114',
+  'link_path' => 'admin/structure/types/manage/%/comment/fields',
+  'router_path' => 'admin/structure/types/manage/%/comment/fields',
+  'link_title' => 'Comment fields',
+  'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '1',
   'expanded' => '0',
-  'weight' => '-5',
-  'depth' => '4',
+  'weight' => '3',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '17',
-  'p3' => '46',
-  'p4' => '96',
-  'p5' => '0',
+  'p2' => '20',
+  'p3' => '34',
+  'p4' => '114',
+  'p5' => '162',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -25827,25 +28512,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '97',
-  'plid' => '44',
-  'link_path' => 'admin/structure/menu/settings',
-  'router_path' => 'admin/structure/menu/settings',
-  'link_title' => 'Settings',
+  'mlid' => '163',
+  'plid' => '146',
+  'link_path' => 'admin/structure/block/manage/%/%/configure',
+  'router_path' => 'admin/structure/block/manage/%/%/configure',
+  'link_title' => 'Configure',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '5',
-  'depth' => '4',
+  'weight' => '-100',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
   'p2' => '20',
-  'p3' => '44',
-  'p4' => '97',
-  'p5' => '0',
+  'p3' => '28',
+  'p4' => '146',
+  'p5' => '163',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -25856,11 +28541,11 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '98',
-  'plid' => '51',
-  'link_path' => 'admin/appearance/settings/seven',
-  'router_path' => 'admin/appearance/settings/seven',
-  'link_title' => 'Seven',
+  'mlid' => '164',
+  'plid' => '146',
+  'link_path' => 'admin/structure/block/manage/%/%/delete',
+  'router_path' => 'admin/structure/block/manage/%/%/delete',
+  'link_title' => 'Delete block',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
@@ -25868,13 +28553,13 @@
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '4',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '7',
-  'p3' => '51',
-  'p4' => '98',
-  'p5' => '0',
+  'p2' => '20',
+  'p3' => '28',
+  'p4' => '146',
+  'p5' => '164',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -25885,26 +28570,26 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '99',
-  'plid' => '53',
-  'link_path' => 'admin/config/system/site-information',
-  'router_path' => 'admin/config/system/site-information',
-  'link_title' => 'Site information',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:104:"Change site name, e-mail address, slogan, default front page, and number of posts per page, error pages.";}}',
+  'mlid' => '165',
+  'plid' => '116',
+  'link_path' => 'admin/config/regional/date-time/formats/%/delete',
+  'router_path' => 'admin/config/regional/date-time/formats/%/delete',
+  'link_title' => 'Delete date format',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:47:"Allow users to delete a configured date format.";}}',
   'module' => 'system',
   'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '-20',
-  'depth' => '4',
+  'weight' => '0',
+  'depth' => '6',
   'customized' => '0',
   'p1' => '1',
   'p2' => '8',
-  'p3' => '53',
-  'p4' => '99',
-  'p5' => '0',
-  'p6' => '0',
+  'p3' => '48',
+  'p4' => '74',
+  'p5' => '116',
+  'p6' => '165',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -25914,26 +28599,26 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '100',
-  'plid' => '51',
-  'link_path' => 'admin/appearance/settings/stark',
-  'router_path' => 'admin/appearance/settings/stark',
-  'link_title' => 'Stark',
-  'options' => 'a:0:{}',
+  'mlid' => '166',
+  'plid' => '127',
+  'link_path' => 'admin/config/regional/date-time/types/%/delete',
+  'router_path' => 'admin/config/regional/date-time/types/%/delete',
+  'link_title' => 'Delete date type',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:45:"Allow users to delete a configured date type.";}}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '4',
+  'depth' => '6',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '7',
-  'p3' => '51',
-  'p4' => '100',
-  'p5' => '0',
-  'p6' => '0',
+  'p2' => '8',
+  'p3' => '48',
+  'p4' => '74',
+  'p5' => '127',
+  'p6' => '166',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -25943,26 +28628,26 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '101',
-  'plid' => '33',
-  'link_path' => 'admin/config/content/formats',
-  'router_path' => 'admin/config/content/formats',
-  'link_title' => 'Text formats',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:127:"Configure how content input by users is filtered, including allowed HTML tags. Also allows enabling of module-provided filters.";}}',
+  'mlid' => '167',
+  'plid' => '116',
+  'link_path' => 'admin/config/regional/date-time/formats/%/edit',
+  'router_path' => 'admin/config/regional/date-time/formats/%/edit',
+  'link_title' => 'Edit date format',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:45:"Allow users to edit a configured date format.";}}',
   'module' => 'system',
   'hidden' => '0',
   'external' => '0',
-  'has_children' => '1',
+  'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '4',
+  'depth' => '6',
   'customized' => '0',
   'p1' => '1',
   'p2' => '8',
-  'p3' => '33',
-  'p4' => '101',
-  'p5' => '0',
-  'p6' => '0',
+  'p3' => '48',
+  'p4' => '74',
+  'p5' => '116',
+  'p6' => '167',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -25972,14 +28657,14 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '102',
-  'plid' => '30',
-  'link_path' => 'admin/content/comment/approval',
-  'router_path' => 'admin/content/comment/approval',
-  'link_title' => 'Unapproved comments',
+  'mlid' => '168',
+  'plid' => '44',
+  'link_path' => 'admin/structure/menu/manage/main-menu',
+  'router_path' => 'admin/structure/menu/manage/%',
+  'link_title' => 'Main menu',
   'options' => 'a:0:{}',
-  'module' => 'system',
-  'hidden' => '-1',
+  'module' => 'menu',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
@@ -25987,9 +28672,9 @@
   'depth' => '4',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '9',
-  'p3' => '30',
-  'p4' => '102',
+  'p2' => '20',
+  'p3' => '44',
+  'p4' => '168',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -26001,14 +28686,14 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '103',
-  'plid' => '56',
-  'link_path' => 'admin/modules/uninstall/confirm',
-  'router_path' => 'admin/modules/uninstall/confirm',
-  'link_title' => 'Uninstall',
+  'mlid' => '169',
+  'plid' => '44',
+  'link_path' => 'admin/structure/menu/manage/management',
+  'router_path' => 'admin/structure/menu/manage/%',
+  'link_title' => 'Management',
   'options' => 'a:0:{}',
-  'module' => 'system',
-  'hidden' => '-1',
+  'module' => 'menu',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
@@ -26016,9 +28701,9 @@
   'depth' => '4',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '15',
-  'p3' => '56',
-  'p4' => '103',
+  'p2' => '20',
+  'p3' => '44',
+  'p4' => '169',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -26029,25 +28714,25 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'navigation',
-  'mlid' => '104',
-  'plid' => '38',
-  'link_path' => 'user/%/edit/account',
-  'router_path' => 'user/%/edit/account',
-  'link_title' => 'Account',
+  'menu_name' => 'management',
+  'mlid' => '170',
+  'plid' => '44',
+  'link_path' => 'admin/structure/menu/manage/navigation',
+  'router_path' => 'admin/structure/menu/manage/%',
+  'link_title' => 'Navigation',
   'options' => 'a:0:{}',
-  'module' => 'system',
-  'hidden' => '-1',
+  'module' => 'menu',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '3',
+  'depth' => '4',
   'customized' => '0',
-  'p1' => '16',
-  'p2' => '38',
-  'p3' => '104',
-  'p4' => '0',
+  'p1' => '1',
+  'p2' => '20',
+  'p3' => '44',
+  'p4' => '170',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -26059,25 +28744,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '105',
-  'plid' => '101',
-  'link_path' => 'admin/config/content/formats/%',
-  'router_path' => 'admin/config/content/formats/%',
-  'link_title' => '',
+  'mlid' => '171',
+  'plid' => '44',
+  'link_path' => 'admin/structure/menu/manage/user-menu',
+  'router_path' => 'admin/structure/menu/manage/%',
+  'link_title' => 'User menu',
   'options' => 'a:0:{}',
-  'module' => 'system',
+  'module' => 'menu',
   'hidden' => '0',
   'external' => '0',
-  'has_children' => '1',
+  'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '5',
+  'depth' => '4',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '8',
-  'p3' => '33',
-  'p4' => '101',
-  'p5' => '105',
+  'p2' => '20',
+  'p3' => '44',
+  'p4' => '171',
+  'p5' => '0',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -26087,26 +28772,26 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'management',
-  'mlid' => '110',
-  'plid' => '101',
-  'link_path' => 'admin/config/content/formats/add',
-  'router_path' => 'admin/config/content/formats/add',
-  'link_title' => 'Add text format',
+  'menu_name' => 'navigation',
+  'mlid' => '172',
+  'plid' => '0',
+  'link_path' => 'search',
+  'router_path' => 'search',
+  'link_title' => 'Search',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '1',
-  'depth' => '5',
+  'weight' => '0',
+  'depth' => '1',
   'customized' => '0',
-  'p1' => '1',
-  'p2' => '8',
-  'p3' => '33',
-  'p4' => '101',
-  'p5' => '110',
+  'p1' => '172',
+  'p2' => '0',
+  'p3' => '0',
+  'p4' => '0',
+  'p5' => '0',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -26116,12 +28801,12 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'management',
-  'mlid' => '111',
-  'plid' => '28',
-  'link_path' => 'admin/structure/block/list/bartik',
-  'router_path' => 'admin/structure/block/list/bartik',
-  'link_title' => 'Bartik',
+  'menu_name' => 'navigation',
+  'mlid' => '173',
+  'plid' => '172',
+  'link_path' => 'search/node',
+  'router_path' => 'search/node',
+  'link_title' => 'Content',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
@@ -26129,12 +28814,12 @@
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '-10',
-  'depth' => '4',
+  'depth' => '2',
   'customized' => '0',
-  'p1' => '1',
-  'p2' => '20',
-  'p3' => '28',
-  'p4' => '111',
+  'p1' => '172',
+  'p2' => '173',
+  'p3' => '0',
+  'p4' => '0',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -26146,53 +28831,24 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '112',
-  'plid' => '67',
-  'link_path' => 'admin/config/system/actions/configure',
-  'router_path' => 'admin/config/system/actions/configure',
-  'link_title' => 'Configure an advanced action',
-  'options' => 'a:0:{}',
-  'module' => 'system',
-  'hidden' => '-1',
-  'external' => '0',
-  'has_children' => '0',
-  'expanded' => '0',
-  'weight' => '0',
-  'depth' => '5',
-  'customized' => '0',
-  'p1' => '1',
-  'p2' => '8',
-  'p3' => '53',
-  'p4' => '67',
-  'p5' => '112',
-  'p6' => '0',
-  'p7' => '0',
-  'p8' => '0',
-  'p9' => '0',
-  'updated' => '0',
-  'language' => 'und',
-  'i18n_tsid' => '0',
-))
-->values(array(
-  'menu_name' => 'management',
-  'mlid' => '113',
-  'plid' => '44',
-  'link_path' => 'admin/structure/menu/manage/%',
-  'router_path' => 'admin/structure/menu/manage/%',
-  'link_title' => 'Customize menu',
-  'options' => 'a:0:{}',
+  'mlid' => '175',
+  'plid' => '1',
+  'link_path' => 'admin/help',
+  'router_path' => 'admin/help',
+  'link_title' => 'Help',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:48:"Reference for usage, configuration, and modules.";}}',
   'module' => 'system',
   'hidden' => '0',
   'external' => '0',
-  'has_children' => '1',
+  'has_children' => '0',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '4',
+  'weight' => '9',
+  'depth' => '2',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '20',
-  'p3' => '44',
-  'p4' => '113',
+  'p2' => '175',
+  'p3' => '0',
+  'p4' => '0',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -26203,25 +28859,25 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'management',
-  'mlid' => '114',
-  'plid' => '34',
-  'link_path' => 'admin/structure/types/manage/%',
-  'router_path' => 'admin/structure/types/manage/%',
-  'link_title' => 'Edit content type',
+  'menu_name' => 'navigation',
+  'mlid' => '176',
+  'plid' => '0',
+  'link_path' => 'taxonomy/term/%',
+  'router_path' => 'taxonomy/term/%',
+  'link_title' => 'Taxonomy term',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '0',
   'external' => '0',
-  'has_children' => '1',
+  'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '4',
+  'depth' => '1',
   'customized' => '0',
-  'p1' => '1',
-  'p2' => '20',
-  'p3' => '34',
-  'p4' => '114',
+  'p1' => '176',
+  'p2' => '0',
+  'p3' => '0',
+  'p4' => '0',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -26232,26 +28888,26 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'management',
-  'mlid' => '116',
-  'plid' => '74',
-  'link_path' => 'admin/config/regional/date-time/formats',
-  'router_path' => 'admin/config/regional/date-time/formats',
-  'link_title' => 'Formats',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:51:"Configure display format strings for date and time.";}}',
+  'menu_name' => 'navigation',
+  'mlid' => '177',
+  'plid' => '173',
+  'link_path' => 'search/node/%',
+  'router_path' => 'search/node/%',
+  'link_title' => 'Content',
+  'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
-  'has_children' => '1',
+  'has_children' => '0',
   'expanded' => '0',
-  'weight' => '-9',
-  'depth' => '5',
+  'weight' => '0',
+  'depth' => '3',
   'customized' => '0',
-  'p1' => '1',
-  'p2' => '8',
-  'p3' => '48',
-  'p4' => '74',
-  'p5' => '116',
+  'p1' => '172',
+  'p2' => '173',
+  'p3' => '177',
+  'p4' => '0',
+  'p5' => '0',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -26262,24 +28918,24 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '117',
-  'plid' => '28',
-  'link_path' => 'admin/structure/block/list/garland',
-  'router_path' => 'admin/structure/block/list/garland',
-  'link_title' => 'Garland',
-  'options' => 'a:0:{}',
+  'mlid' => '178',
+  'plid' => '18',
+  'link_path' => 'admin/reports/fields',
+  'router_path' => 'admin/reports/fields',
+  'link_title' => 'Field list',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:39:"Overview of fields on all entity types.";}}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '4',
+  'depth' => '3',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '20',
-  'p3' => '28',
-  'p4' => '117',
+  'p2' => '18',
+  'p3' => '178',
+  'p4' => '0',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -26290,12 +28946,12 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'management',
-  'mlid' => '118',
-  'plid' => '101',
-  'link_path' => 'admin/config/content/formats/list',
-  'router_path' => 'admin/config/content/formats/list',
-  'link_title' => 'List',
+  'menu_name' => 'navigation',
+  'mlid' => '179',
+  'plid' => '16',
+  'link_path' => 'user/%/shortcuts',
+  'router_path' => 'user/%/shortcuts',
+  'link_title' => 'Shortcuts',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
@@ -26303,13 +28959,13 @@
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '5',
+  'depth' => '2',
   'customized' => '0',
-  'p1' => '1',
-  'p2' => '8',
-  'p3' => '33',
-  'p4' => '101',
-  'p5' => '118',
+  'p1' => '16',
+  'p2' => '179',
+  'p3' => '0',
+  'p4' => '0',
+  'p5' => '0',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -26320,25 +28976,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '119',
-  'plid' => '67',
-  'link_path' => 'admin/config/system/actions/manage',
-  'router_path' => 'admin/config/system/actions/manage',
-  'link_title' => 'Manage actions',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:41:"Manage the actions defined for your site.";}}',
+  'mlid' => '180',
+  'plid' => '20',
+  'link_path' => 'admin/structure/taxonomy',
+  'router_path' => 'admin/structure/taxonomy',
+  'link_title' => 'Taxonomy',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:67:"Manage tagging, categorization, and classification of your content.";}}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
-  'has_children' => '0',
+  'has_children' => '1',
   'expanded' => '0',
-  'weight' => '-2',
-  'depth' => '5',
+  'weight' => '0',
+  'depth' => '3',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '8',
-  'p3' => '53',
-  'p4' => '67',
-  'p5' => '119',
+  'p2' => '20',
+  'p3' => '180',
+  'p4' => '0',
+  'p5' => '0',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -26349,25 +29005,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '124',
-  'plid' => '66',
-  'link_path' => 'admin/config/people/accounts/settings',
-  'router_path' => 'admin/config/people/accounts/settings',
-  'link_title' => 'Settings',
-  'options' => 'a:0:{}',
+  'mlid' => '181',
+  'plid' => '18',
+  'link_path' => 'admin/reports/search',
+  'router_path' => 'admin/reports/search',
+  'link_title' => 'Top search phrases',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:33:"View most popular search phrases.";}}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '-10',
-  'depth' => '5',
+  'weight' => '0',
+  'depth' => '3',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '8',
-  'p3' => '45',
-  'p4' => '66',
-  'p5' => '124',
+  'p2' => '18',
+  'p3' => '181',
+  'p4' => '0',
+  'p5' => '0',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -26378,11 +29034,11 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '125',
-  'plid' => '28',
-  'link_path' => 'admin/structure/block/list/seven',
-  'router_path' => 'admin/structure/block/list/seven',
-  'link_title' => 'Seven',
+  'mlid' => '183',
+  'plid' => '175',
+  'link_path' => 'admin/help/block',
+  'router_path' => 'admin/help/block',
+  'link_title' => 'block',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
@@ -26390,12 +29046,12 @@
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '4',
+  'depth' => '3',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '20',
-  'p3' => '28',
-  'p4' => '125',
+  'p2' => '175',
+  'p3' => '183',
+  'p4' => '0',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -26407,11 +29063,11 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '126',
-  'plid' => '28',
-  'link_path' => 'admin/structure/block/list/stark',
-  'router_path' => 'admin/structure/block/list/stark',
-  'link_title' => 'Stark',
+  'mlid' => '184',
+  'plid' => '175',
+  'link_path' => 'admin/help/color',
+  'router_path' => 'admin/help/color',
+  'link_title' => 'color',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
@@ -26419,12 +29075,12 @@
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '4',
+  'depth' => '3',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '20',
-  'p3' => '28',
-  'p4' => '126',
+  'p2' => '175',
+  'p3' => '184',
+  'p4' => '0',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -26436,25 +29092,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '127',
-  'plid' => '74',
-  'link_path' => 'admin/config/regional/date-time/types',
-  'router_path' => 'admin/config/regional/date-time/types',
-  'link_title' => 'Types',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:44:"Configure display formats for date and time.";}}',
+  'mlid' => '185',
+  'plid' => '175',
+  'link_path' => 'admin/help/comment',
+  'router_path' => 'admin/help/comment',
+  'link_title' => 'comment',
+  'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
-  'has_children' => '1',
+  'has_children' => '0',
   'expanded' => '0',
-  'weight' => '-10',
-  'depth' => '5',
+  'weight' => '0',
+  'depth' => '3',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '8',
-  'p3' => '48',
-  'p4' => '74',
-  'p5' => '127',
+  'p2' => '175',
+  'p3' => '185',
+  'p4' => '0',
+  'p5' => '0',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -26464,24 +29120,24 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'navigation',
-  'mlid' => '128',
-  'plid' => '49',
-  'link_path' => 'node/%/revisions/%/delete',
-  'router_path' => 'node/%/revisions/%/delete',
-  'link_title' => 'Delete earlier revision',
+  'menu_name' => 'management',
+  'mlid' => '186',
+  'plid' => '175',
+  'link_path' => 'admin/help/contextual',
+  'router_path' => 'admin/help/contextual',
+  'link_title' => 'contextual',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
   'depth' => '3',
   'customized' => '0',
-  'p1' => '5',
-  'p2' => '49',
-  'p3' => '128',
+  'p1' => '1',
+  'p2' => '175',
+  'p3' => '186',
   'p4' => '0',
   'p5' => '0',
   'p6' => '0',
@@ -26493,24 +29149,24 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'navigation',
-  'mlid' => '129',
-  'plid' => '49',
-  'link_path' => 'node/%/revisions/%/revert',
-  'router_path' => 'node/%/revisions/%/revert',
-  'link_title' => 'Revert to earlier revision',
+  'menu_name' => 'management',
+  'mlid' => '188',
+  'plid' => '175',
+  'link_path' => 'admin/help/dblog',
+  'router_path' => 'admin/help/dblog',
+  'link_title' => 'dblog',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
   'depth' => '3',
   'customized' => '0',
-  'p1' => '5',
-  'p2' => '49',
-  'p3' => '129',
+  'p1' => '1',
+  'p2' => '175',
+  'p3' => '188',
   'p4' => '0',
   'p5' => '0',
   'p6' => '0',
@@ -26522,24 +29178,24 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'navigation',
-  'mlid' => '130',
-  'plid' => '49',
-  'link_path' => 'node/%/revisions/%/view',
-  'router_path' => 'node/%/revisions/%/view',
-  'link_title' => 'Revisions',
+  'menu_name' => 'management',
+  'mlid' => '189',
+  'plid' => '175',
+  'link_path' => 'admin/help/field',
+  'router_path' => 'admin/help/field',
+  'link_title' => 'field',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
   'depth' => '3',
   'customized' => '0',
-  'p1' => '5',
-  'p2' => '49',
-  'p3' => '130',
+  'p1' => '1',
+  'p2' => '175',
+  'p3' => '189',
   'p4' => '0',
   'p5' => '0',
   'p6' => '0',
@@ -26552,11 +29208,11 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '136',
-  'plid' => '117',
-  'link_path' => 'admin/structure/block/list/garland/add',
-  'router_path' => 'admin/structure/block/list/garland/add',
-  'link_title' => 'Add block',
+  'mlid' => '190',
+  'plid' => '175',
+  'link_path' => 'admin/help/field_sql_storage',
+  'router_path' => 'admin/help/field_sql_storage',
+  'link_title' => 'field_sql_storage',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
@@ -26564,13 +29220,13 @@
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '5',
+  'depth' => '3',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '20',
-  'p3' => '28',
-  'p4' => '117',
-  'p5' => '136',
+  'p2' => '175',
+  'p3' => '190',
+  'p4' => '0',
+  'p5' => '0',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -26581,11 +29237,11 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '141',
-  'plid' => '125',
-  'link_path' => 'admin/structure/block/list/seven/add',
-  'router_path' => 'admin/structure/block/list/seven/add',
-  'link_title' => 'Add block',
+  'mlid' => '191',
+  'plid' => '175',
+  'link_path' => 'admin/help/field_ui',
+  'router_path' => 'admin/help/field_ui',
+  'link_title' => 'field_ui',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
@@ -26593,13 +29249,13 @@
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '5',
+  'depth' => '3',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '20',
-  'p3' => '28',
-  'p4' => '125',
-  'p5' => '141',
+  'p2' => '175',
+  'p3' => '191',
+  'p4' => '0',
+  'p5' => '0',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -26610,11 +29266,11 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '142',
-  'plid' => '126',
-  'link_path' => 'admin/structure/block/list/stark/add',
-  'router_path' => 'admin/structure/block/list/stark/add',
-  'link_title' => 'Add block',
+  'mlid' => '192',
+  'plid' => '175',
+  'link_path' => 'admin/help/file',
+  'router_path' => 'admin/help/file',
+  'link_title' => 'file',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
@@ -26622,13 +29278,13 @@
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '5',
+  'depth' => '3',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '20',
-  'p3' => '28',
-  'p4' => '126',
-  'p5' => '142',
+  'p2' => '175',
+  'p3' => '192',
+  'p4' => '0',
+  'p5' => '0',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -26639,26 +29295,26 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '143',
-  'plid' => '127',
-  'link_path' => 'admin/config/regional/date-time/types/add',
-  'router_path' => 'admin/config/regional/date-time/types/add',
-  'link_title' => 'Add date type',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:18:"Add new date type.";}}',
+  'mlid' => '193',
+  'plid' => '175',
+  'link_path' => 'admin/help/filter',
+  'router_path' => 'admin/help/filter',
+  'link_title' => 'filter',
+  'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '-10',
-  'depth' => '6',
+  'weight' => '0',
+  'depth' => '3',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '8',
-  'p3' => '48',
-  'p4' => '74',
-  'p5' => '127',
-  'p6' => '143',
+  'p2' => '175',
+  'p3' => '193',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -26668,26 +29324,26 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '144',
-  'plid' => '116',
-  'link_path' => 'admin/config/regional/date-time/formats/add',
-  'router_path' => 'admin/config/regional/date-time/formats/add',
-  'link_title' => 'Add format',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:43:"Allow users to add additional date formats.";}}',
+  'mlid' => '194',
+  'plid' => '175',
+  'link_path' => 'admin/help/help',
+  'router_path' => 'admin/help/help',
+  'link_title' => 'help',
+  'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '-10',
-  'depth' => '6',
+  'weight' => '0',
+  'depth' => '3',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '8',
-  'p3' => '48',
-  'p4' => '74',
-  'p5' => '116',
-  'p6' => '144',
+  'p2' => '175',
+  'p3' => '194',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -26697,11 +29353,11 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '145',
-  'plid' => '113',
-  'link_path' => 'admin/structure/menu/manage/%/add',
-  'router_path' => 'admin/structure/menu/manage/%/add',
-  'link_title' => 'Add link',
+  'mlid' => '195',
+  'plid' => '175',
+  'link_path' => 'admin/help/image',
+  'router_path' => 'admin/help/image',
+  'link_title' => 'image',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
@@ -26709,13 +29365,13 @@
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '5',
+  'depth' => '3',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '20',
-  'p3' => '44',
-  'p4' => '113',
-  'p5' => '145',
+  'p2' => '175',
+  'p3' => '195',
+  'p4' => '0',
+  'p5' => '0',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -26726,24 +29382,24 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '146',
-  'plid' => '28',
-  'link_path' => 'admin/structure/block/manage/%/%',
-  'router_path' => 'admin/structure/block/manage/%/%',
-  'link_title' => 'Configure block',
+  'mlid' => '196',
+  'plid' => '175',
+  'link_path' => 'admin/help/list',
+  'router_path' => 'admin/help/list',
+  'link_title' => 'list',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '4',
+  'depth' => '3',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '20',
-  'p3' => '28',
-  'p4' => '146',
+  'p2' => '175',
+  'p3' => '196',
+  'p4' => '0',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -26754,24 +29410,24 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'navigation',
-  'mlid' => '147',
-  'plid' => '29',
-  'link_path' => 'user/%/cancel/confirm/%/%',
-  'router_path' => 'user/%/cancel/confirm/%/%',
-  'link_title' => 'Confirm account cancellation',
+  'menu_name' => 'management',
+  'mlid' => '197',
+  'plid' => '175',
+  'link_path' => 'admin/help/menu',
+  'router_path' => 'admin/help/menu',
+  'link_title' => 'menu',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
   'depth' => '3',
   'customized' => '0',
-  'p1' => '16',
-  'p2' => '29',
-  'p3' => '147',
+  'p1' => '1',
+  'p2' => '175',
+  'p3' => '197',
   'p4' => '0',
   'p5' => '0',
   'p6' => '0',
@@ -26784,25 +29440,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '148',
-  'plid' => '114',
-  'link_path' => 'admin/structure/types/manage/%/delete',
-  'router_path' => 'admin/structure/types/manage/%/delete',
-  'link_title' => 'Delete',
+  'mlid' => '198',
+  'plid' => '175',
+  'link_path' => 'admin/help/node',
+  'router_path' => 'admin/help/node',
+  'link_title' => 'node',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '5',
+  'depth' => '3',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '20',
-  'p3' => '34',
-  'p4' => '114',
-  'p5' => '148',
+  'p2' => '175',
+  'p3' => '198',
+  'p4' => '0',
+  'p5' => '0',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -26813,25 +29469,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '149',
-  'plid' => '80',
-  'link_path' => 'admin/config/people/ip-blocking/delete/%',
-  'router_path' => 'admin/config/people/ip-blocking/delete/%',
-  'link_title' => 'Delete IP address',
+  'mlid' => '199',
+  'plid' => '175',
+  'link_path' => 'admin/help/number',
+  'router_path' => 'admin/help/number',
+  'link_title' => 'number',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '5',
+  'depth' => '3',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '8',
-  'p3' => '45',
-  'p4' => '80',
-  'p5' => '149',
+  'p2' => '175',
+  'p3' => '199',
+  'p4' => '0',
+  'p5' => '0',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -26842,25 +29498,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '150',
-  'plid' => '67',
-  'link_path' => 'admin/config/system/actions/delete/%',
-  'router_path' => 'admin/config/system/actions/delete/%',
-  'link_title' => 'Delete action',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:17:"Delete an action.";}}',
+  'mlid' => '200',
+  'plid' => '175',
+  'link_path' => 'admin/help/options',
+  'router_path' => 'admin/help/options',
+  'link_title' => 'options',
+  'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '5',
+  'depth' => '3',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '8',
-  'p3' => '53',
-  'p4' => '67',
-  'p5' => '150',
+  'p2' => '175',
+  'p3' => '200',
+  'p4' => '0',
+  'p5' => '0',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -26871,25 +29527,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '151',
-  'plid' => '113',
-  'link_path' => 'admin/structure/menu/manage/%/delete',
-  'router_path' => 'admin/structure/menu/manage/%/delete',
-  'link_title' => 'Delete menu',
+  'mlid' => '202',
+  'plid' => '175',
+  'link_path' => 'admin/help/path',
+  'router_path' => 'admin/help/path',
+  'link_title' => 'path',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '5',
+  'depth' => '3',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '20',
-  'p3' => '44',
-  'p4' => '113',
-  'p5' => '151',
+  'p2' => '175',
+  'p3' => '202',
+  'p4' => '0',
+  'p5' => '0',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -26900,24 +29556,24 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '152',
-  'plid' => '44',
-  'link_path' => 'admin/structure/menu/item/%/delete',
-  'router_path' => 'admin/structure/menu/item/%/delete',
-  'link_title' => 'Delete menu link',
+  'mlid' => '203',
+  'plid' => '175',
+  'link_path' => 'admin/help/rdf',
+  'router_path' => 'admin/help/rdf',
+  'link_title' => 'rdf',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '4',
+  'depth' => '3',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '20',
-  'p3' => '44',
-  'p4' => '152',
+  'p2' => '175',
+  'p3' => '203',
+  'p4' => '0',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -26929,25 +29585,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '153',
-  'plid' => '96',
-  'link_path' => 'admin/people/permissions/roles/delete/%',
-  'router_path' => 'admin/people/permissions/roles/delete/%',
-  'link_title' => 'Delete role',
+  'mlid' => '204',
+  'plid' => '175',
+  'link_path' => 'admin/help/search',
+  'router_path' => 'admin/help/search',
+  'link_title' => 'search',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '5',
+  'depth' => '3',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '17',
-  'p3' => '46',
-  'p4' => '96',
-  'p5' => '153',
+  'p2' => '175',
+  'p3' => '204',
+  'p4' => '0',
+  'p5' => '0',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -26958,26 +29614,26 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '154',
-  'plid' => '105',
-  'link_path' => 'admin/config/content/formats/%/disable',
-  'router_path' => 'admin/config/content/formats/%/disable',
-  'link_title' => 'Disable text format',
+  'mlid' => '205',
+  'plid' => '175',
+  'link_path' => 'admin/help/shortcut',
+  'router_path' => 'admin/help/shortcut',
+  'link_title' => 'shortcut',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '6',
+  'depth' => '3',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '8',
-  'p3' => '33',
-  'p4' => '101',
-  'p5' => '105',
-  'p6' => '154',
+  'p2' => '175',
+  'p3' => '205',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -26987,11 +29643,11 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '155',
-  'plid' => '114',
-  'link_path' => 'admin/structure/types/manage/%/edit',
-  'router_path' => 'admin/structure/types/manage/%/edit',
-  'link_title' => 'Edit',
+  'mlid' => '206',
+  'plid' => '175',
+  'link_path' => 'admin/help/system',
+  'router_path' => 'admin/help/system',
+  'link_title' => 'system',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
@@ -26999,13 +29655,13 @@
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '5',
+  'depth' => '3',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '20',
-  'p3' => '34',
-  'p4' => '114',
-  'p5' => '155',
+  'p2' => '175',
+  'p3' => '206',
+  'p4' => '0',
+  'p5' => '0',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -27016,11 +29672,11 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '156',
-  'plid' => '113',
-  'link_path' => 'admin/structure/menu/manage/%/edit',
-  'router_path' => 'admin/structure/menu/manage/%/edit',
-  'link_title' => 'Edit menu',
+  'mlid' => '207',
+  'plid' => '175',
+  'link_path' => 'admin/help/taxonomy',
+  'router_path' => 'admin/help/taxonomy',
+  'link_title' => 'taxonomy',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
@@ -27028,13 +29684,13 @@
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '5',
+  'depth' => '3',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '20',
-  'p3' => '44',
-  'p4' => '113',
-  'p5' => '156',
+  'p2' => '175',
+  'p3' => '207',
+  'p4' => '0',
+  'p5' => '0',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -27045,24 +29701,24 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '157',
-  'plid' => '44',
-  'link_path' => 'admin/structure/menu/item/%/edit',
-  'router_path' => 'admin/structure/menu/item/%/edit',
-  'link_title' => 'Edit menu link',
+  'mlid' => '208',
+  'plid' => '175',
+  'link_path' => 'admin/help/text',
+  'router_path' => 'admin/help/text',
+  'link_title' => 'text',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '4',
+  'depth' => '3',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '20',
-  'p3' => '44',
-  'p4' => '157',
+  'p2' => '175',
+  'p3' => '208',
+  'p4' => '0',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -27074,25 +29730,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '158',
-  'plid' => '96',
-  'link_path' => 'admin/people/permissions/roles/edit/%',
-  'router_path' => 'admin/people/permissions/roles/edit/%',
-  'link_title' => 'Edit role',
+  'mlid' => '209',
+  'plid' => '175',
+  'link_path' => 'admin/help/user',
+  'router_path' => 'admin/help/user',
+  'link_title' => 'user',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '5',
+  'depth' => '3',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '17',
-  'p3' => '46',
-  'p4' => '96',
-  'p5' => '158',
+  'p2' => '175',
+  'p3' => '209',
+  'p4' => '0',
+  'p5' => '0',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -27102,26 +29758,26 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'management',
-  'mlid' => '159',
-  'plid' => '113',
-  'link_path' => 'admin/structure/menu/manage/%/list',
-  'router_path' => 'admin/structure/menu/manage/%/list',
-  'link_title' => 'List links',
+  'menu_name' => 'navigation',
+  'mlid' => '210',
+  'plid' => '176',
+  'link_path' => 'taxonomy/term/%/edit',
+  'router_path' => 'taxonomy/term/%/edit',
+  'link_title' => 'Edit',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '-10',
-  'depth' => '5',
+  'weight' => '10',
+  'depth' => '2',
   'customized' => '0',
-  'p1' => '1',
-  'p2' => '20',
-  'p3' => '44',
-  'p4' => '113',
-  'p5' => '159',
+  'p1' => '176',
+  'p2' => '210',
+  'p3' => '0',
+  'p4' => '0',
+  'p5' => '0',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -27131,25 +29787,25 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'management',
-  'mlid' => '160',
-  'plid' => '44',
-  'link_path' => 'admin/structure/menu/item/%/reset',
-  'router_path' => 'admin/structure/menu/item/%/reset',
-  'link_title' => 'Reset menu link',
+  'menu_name' => 'navigation',
+  'mlid' => '211',
+  'plid' => '176',
+  'link_path' => 'taxonomy/term/%/view',
+  'router_path' => 'taxonomy/term/%/view',
+  'link_title' => 'View',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '4',
+  'depth' => '2',
   'customized' => '0',
-  'p1' => '1',
-  'p2' => '20',
-  'p3' => '44',
-  'p4' => '160',
+  'p1' => '176',
+  'p2' => '211',
+  'p3' => '0',
+  'p4' => '0',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -27161,25 +29817,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '161',
-  'plid' => '114',
-  'link_path' => 'admin/structure/types/manage/%/comment/display',
-  'router_path' => 'admin/structure/types/manage/%/comment/display',
-  'link_title' => 'Comment display',
+  'mlid' => '212',
+  'plid' => '180',
+  'link_path' => 'admin/structure/taxonomy/%',
+  'router_path' => 'admin/structure/taxonomy/%',
+  'link_title' => '',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
-  'has_children' => '0',
+  'has_children' => '1',
   'expanded' => '0',
-  'weight' => '4',
-  'depth' => '5',
+  'weight' => '0',
+  'depth' => '4',
   'customized' => '0',
   'p1' => '1',
   'p2' => '20',
-  'p3' => '34',
-  'p4' => '114',
-  'p5' => '161',
+  'p3' => '180',
+  'p4' => '212',
+  'p5' => '0',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -27190,25 +29846,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '162',
-  'plid' => '114',
-  'link_path' => 'admin/structure/types/manage/%/comment/fields',
-  'router_path' => 'admin/structure/types/manage/%/comment/fields',
-  'link_title' => 'Comment fields',
+  'mlid' => '213',
+  'plid' => '180',
+  'link_path' => 'admin/structure/taxonomy/add',
+  'router_path' => 'admin/structure/taxonomy/add',
+  'link_title' => 'Add vocabulary',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
-  'has_children' => '1',
+  'has_children' => '0',
   'expanded' => '0',
-  'weight' => '3',
-  'depth' => '5',
+  'weight' => '0',
+  'depth' => '4',
   'customized' => '0',
   'p1' => '1',
   'p2' => '20',
-  'p3' => '34',
-  'p4' => '114',
-  'p5' => '162',
+  'p3' => '180',
+  'p4' => '213',
+  'p5' => '0',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -27219,25 +29875,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '163',
-  'plid' => '146',
-  'link_path' => 'admin/structure/block/manage/%/%/configure',
-  'router_path' => 'admin/structure/block/manage/%/%/configure',
-  'link_title' => 'Configure block',
-  'options' => 'a:0:{}',
+  'mlid' => '214',
+  'plid' => '43',
+  'link_path' => 'admin/config/media/image-styles',
+  'router_path' => 'admin/config/media/image-styles',
+  'link_title' => 'Image styles',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:78:"Configure styles that can be used for resizing or adjusting images on display.";}}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
-  'has_children' => '0',
+  'has_children' => '1',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '5',
+  'depth' => '4',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '20',
-  'p3' => '28',
-  'p4' => '146',
-  'p5' => '163',
+  'p2' => '8',
+  'p3' => '43',
+  'p4' => '214',
+  'p5' => '0',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -27248,25 +29904,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '164',
-  'plid' => '146',
-  'link_path' => 'admin/structure/block/manage/%/%/delete',
-  'router_path' => 'admin/structure/block/manage/%/%/delete',
-  'link_title' => 'Delete block',
+  'mlid' => '215',
+  'plid' => '180',
+  'link_path' => 'admin/structure/taxonomy/list',
+  'router_path' => 'admin/structure/taxonomy/list',
+  'link_title' => 'List',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '5',
+  'weight' => '-10',
+  'depth' => '4',
   'customized' => '0',
   'p1' => '1',
   'p2' => '20',
-  'p3' => '28',
-  'p4' => '146',
-  'p5' => '164',
+  'p3' => '180',
+  'p4' => '215',
+  'p5' => '0',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -27277,26 +29933,26 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '165',
-  'plid' => '116',
-  'link_path' => 'admin/config/regional/date-time/formats/%/delete',
-  'router_path' => 'admin/config/regional/date-time/formats/%/delete',
-  'link_title' => 'Delete date format',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:47:"Allow users to delete a configured date format.";}}',
+  'mlid' => '216',
+  'plid' => '50',
+  'link_path' => 'admin/config/search/settings',
+  'router_path' => 'admin/config/search/settings',
+  'link_title' => 'Search settings',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:67:"Configure relevance settings for search and other indexing options.";}}',
   'module' => 'system',
   'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '6',
+  'weight' => '-10',
+  'depth' => '4',
   'customized' => '0',
   'p1' => '1',
   'p2' => '8',
-  'p3' => '48',
-  'p4' => '74',
-  'p5' => '116',
-  'p6' => '165',
+  'p3' => '50',
+  'p4' => '216',
+  'p5' => '0',
+  'p6' => '0',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -27306,26 +29962,26 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '166',
-  'plid' => '127',
-  'link_path' => 'admin/config/regional/date-time/types/%/delete',
-  'router_path' => 'admin/config/regional/date-time/types/%/delete',
-  'link_title' => 'Delete date type',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:45:"Allow users to delete a configured date type.";}}',
+  'mlid' => '217',
+  'plid' => '57',
+  'link_path' => 'admin/config/user-interface/shortcut',
+  'router_path' => 'admin/config/user-interface/shortcut',
+  'link_title' => 'Shortcuts',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:29:"Add and modify shortcut sets.";}}',
   'module' => 'system',
   'hidden' => '0',
   'external' => '0',
-  'has_children' => '0',
+  'has_children' => '1',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '6',
+  'depth' => '4',
   'customized' => '0',
   'p1' => '1',
   'p2' => '8',
-  'p3' => '48',
-  'p4' => '74',
-  'p5' => '127',
-  'p6' => '166',
+  'p3' => '57',
+  'p4' => '217',
+  'p5' => '0',
+  'p6' => '0',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -27335,26 +29991,26 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '167',
-  'plid' => '116',
-  'link_path' => 'admin/config/regional/date-time/formats/%/edit',
-  'router_path' => 'admin/config/regional/date-time/formats/%/edit',
-  'link_title' => 'Edit date format',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:45:"Allow users to edit a configured date format.";}}',
+  'mlid' => '218',
+  'plid' => '50',
+  'link_path' => 'admin/config/search/path',
+  'router_path' => 'admin/config/search/path',
+  'link_title' => 'URL aliases',
+  'options' => "a:1:{s:10:\"attributes\";a:1:{s:5:\"title\";s:46:\"Change your site's URL paths by aliasing them.\";}}",
   'module' => 'system',
   'hidden' => '0',
   'external' => '0',
-  'has_children' => '0',
+  'has_children' => '1',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '6',
+  'weight' => '-5',
+  'depth' => '4',
   'customized' => '0',
   'p1' => '1',
   'p2' => '8',
-  'p3' => '48',
-  'p4' => '74',
-  'p5' => '116',
-  'p6' => '167',
+  'p3' => '50',
+  'p4' => '218',
+  'p5' => '0',
+  'p6' => '0',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -27364,25 +30020,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '168',
-  'plid' => '44',
-  'link_path' => 'admin/structure/menu/manage/main-menu',
-  'router_path' => 'admin/structure/menu/manage/%',
-  'link_title' => 'Main menu',
+  'mlid' => '219',
+  'plid' => '218',
+  'link_path' => 'admin/config/search/path/add',
+  'router_path' => 'admin/config/search/path/add',
+  'link_title' => 'Add alias',
   'options' => 'a:0:{}',
-  'module' => 'menu',
-  'hidden' => '0',
+  'module' => 'system',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '4',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '20',
-  'p3' => '44',
-  'p4' => '168',
-  'p5' => '0',
+  'p2' => '8',
+  'p3' => '50',
+  'p4' => '218',
+  'p5' => '219',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -27393,25 +30049,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '169',
-  'plid' => '44',
-  'link_path' => 'admin/structure/menu/manage/management',
-  'router_path' => 'admin/structure/menu/manage/%',
-  'link_title' => 'Management',
+  'mlid' => '220',
+  'plid' => '217',
+  'link_path' => 'admin/config/user-interface/shortcut/add-set',
+  'router_path' => 'admin/config/user-interface/shortcut/add-set',
+  'link_title' => 'Add shortcut set',
   'options' => 'a:0:{}',
-  'module' => 'menu',
-  'hidden' => '0',
+  'module' => 'system',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '4',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '20',
-  'p3' => '44',
-  'p4' => '169',
-  'p5' => '0',
+  'p2' => '8',
+  'p3' => '57',
+  'p4' => '217',
+  'p5' => '220',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -27422,25 +30078,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '170',
-  'plid' => '44',
-  'link_path' => 'admin/structure/menu/manage/navigation',
-  'router_path' => 'admin/structure/menu/manage/%',
-  'link_title' => 'Navigation',
-  'options' => 'a:0:{}',
-  'module' => 'menu',
-  'hidden' => '0',
+  'mlid' => '221',
+  'plid' => '214',
+  'link_path' => 'admin/config/media/image-styles/add',
+  'router_path' => 'admin/config/media/image-styles/add',
+  'link_title' => 'Add style',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:22:"Add a new image style.";}}',
+  'module' => 'system',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '4',
+  'weight' => '2',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '20',
-  'p3' => '44',
-  'p4' => '170',
-  'p5' => '0',
+  'p2' => '8',
+  'p3' => '43',
+  'p4' => '214',
+  'p5' => '221',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -27451,25 +30107,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '171',
-  'plid' => '44',
-  'link_path' => 'admin/structure/menu/manage/user-menu',
-  'router_path' => 'admin/structure/menu/manage/%',
-  'link_title' => 'User menu',
+  'mlid' => '222',
+  'plid' => '212',
+  'link_path' => 'admin/structure/taxonomy/%/add',
+  'router_path' => 'admin/structure/taxonomy/%/add',
+  'link_title' => 'Add term',
   'options' => 'a:0:{}',
-  'module' => 'menu',
-  'hidden' => '0',
+  'module' => 'system',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '4',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
   'p2' => '20',
-  'p3' => '44',
-  'p4' => '171',
-  'p5' => '0',
+  'p3' => '180',
+  'p4' => '212',
+  'p5' => '222',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -27479,26 +30135,26 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'navigation',
-  'mlid' => '172',
-  'plid' => '0',
-  'link_path' => 'search',
-  'router_path' => 'search',
-  'link_title' => 'Search',
+  'menu_name' => 'management',
+  'mlid' => '223',
+  'plid' => '216',
+  'link_path' => 'admin/config/search/settings/reindex',
+  'router_path' => 'admin/config/search/settings/reindex',
+  'link_title' => 'Clear index',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '1',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '1',
+  'depth' => '5',
   'customized' => '0',
-  'p1' => '172',
-  'p2' => '0',
-  'p3' => '0',
-  'p4' => '0',
-  'p5' => '0',
+  'p1' => '1',
+  'p2' => '8',
+  'p3' => '50',
+  'p4' => '216',
+  'p5' => '223',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -27508,12 +30164,12 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'navigation',
-  'mlid' => '173',
-  'plid' => '172',
-  'link_path' => 'search/node',
-  'router_path' => 'search/node',
-  'link_title' => 'Content',
+  'menu_name' => 'management',
+  'mlid' => '224',
+  'plid' => '212',
+  'link_path' => 'admin/structure/taxonomy/%/edit',
+  'router_path' => 'admin/structure/taxonomy/%/edit',
+  'link_title' => 'Edit',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
@@ -27521,13 +30177,13 @@
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '-10',
-  'depth' => '2',
+  'depth' => '5',
   'customized' => '0',
-  'p1' => '172',
-  'p2' => '173',
-  'p3' => '0',
-  'p4' => '0',
-  'p5' => '0',
+  'p1' => '1',
+  'p2' => '20',
+  'p3' => '180',
+  'p4' => '212',
+  'p5' => '224',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -27537,26 +30193,26 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'navigation',
-  'mlid' => '174',
-  'plid' => '172',
-  'link_path' => 'search/user',
-  'router_path' => 'search/user',
-  'link_title' => 'Users',
+  'menu_name' => 'management',
+  'mlid' => '225',
+  'plid' => '217',
+  'link_path' => 'admin/config/user-interface/shortcut/%',
+  'router_path' => 'admin/config/user-interface/shortcut/%',
+  'link_title' => 'Edit shortcuts',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
-  'has_children' => '0',
+  'has_children' => '1',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '2',
+  'depth' => '5',
   'customized' => '0',
-  'p1' => '172',
-  'p2' => '174',
-  'p3' => '0',
-  'p4' => '0',
-  'p5' => '0',
+  'p1' => '1',
+  'p2' => '8',
+  'p3' => '57',
+  'p4' => '217',
+  'p5' => '225',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -27567,25 +30223,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '175',
-  'plid' => '1',
-  'link_path' => 'admin/help',
-  'router_path' => 'admin/help',
-  'link_title' => 'Help',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:48:"Reference for usage, configuration, and modules.";}}',
+  'mlid' => '226',
+  'plid' => '212',
+  'link_path' => 'admin/structure/taxonomy/%/list',
+  'router_path' => 'admin/structure/taxonomy/%/list',
+  'link_title' => 'List',
+  'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '9',
-  'depth' => '2',
+  'weight' => '-20',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '175',
-  'p3' => '0',
-  'p4' => '0',
-  'p5' => '0',
+  'p2' => '20',
+  'p3' => '180',
+  'p4' => '212',
+  'p5' => '226',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -27595,26 +30251,26 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'navigation',
-  'mlid' => '176',
-  'plid' => '0',
-  'link_path' => 'taxonomy/term/%',
-  'router_path' => 'taxonomy/term/%',
-  'link_title' => 'Taxonomy term',
+  'menu_name' => 'management',
+  'mlid' => '227',
+  'plid' => '218',
+  'link_path' => 'admin/config/search/path/list',
+  'router_path' => 'admin/config/search/path/list',
+  'link_title' => 'List',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '1',
+  'weight' => '-10',
+  'depth' => '5',
   'customized' => '0',
-  'p1' => '176',
-  'p2' => '0',
-  'p3' => '0',
-  'p4' => '0',
-  'p5' => '0',
+  'p1' => '1',
+  'p2' => '8',
+  'p3' => '50',
+  'p4' => '218',
+  'p5' => '227',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -27624,26 +30280,26 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'navigation',
-  'mlid' => '177',
-  'plid' => '173',
-  'link_path' => 'search/node/%',
-  'router_path' => 'search/node/%',
-  'link_title' => 'Content',
-  'options' => 'a:0:{}',
+  'menu_name' => 'management',
+  'mlid' => '228',
+  'plid' => '214',
+  'link_path' => 'admin/config/media/image-styles/list',
+  'router_path' => 'admin/config/media/image-styles/list',
+  'link_title' => 'List',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:42:"List the current image styles on the site.";}}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '3',
+  'weight' => '1',
+  'depth' => '5',
   'customized' => '0',
-  'p1' => '172',
-  'p2' => '173',
-  'p3' => '177',
-  'p4' => '0',
-  'p5' => '0',
+  'p1' => '1',
+  'p2' => '8',
+  'p3' => '43',
+  'p4' => '214',
+  'p5' => '228',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -27654,26 +30310,26 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '178',
-  'plid' => '18',
-  'link_path' => 'admin/reports/fields',
-  'router_path' => 'admin/reports/fields',
-  'link_title' => 'Field list',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:39:"Overview of fields on all entity types.";}}',
+  'mlid' => '229',
+  'plid' => '225',
+  'link_path' => 'admin/config/user-interface/shortcut/%/add-link',
+  'router_path' => 'admin/config/user-interface/shortcut/%/add-link',
+  'link_title' => 'Add shortcut',
+  'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '3',
+  'depth' => '6',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '18',
-  'p3' => '178',
-  'p4' => '0',
-  'p5' => '0',
-  'p6' => '0',
+  'p2' => '8',
+  'p3' => '57',
+  'p4' => '217',
+  'p5' => '225',
+  'p6' => '229',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -27682,26 +30338,26 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'navigation',
-  'mlid' => '179',
-  'plid' => '16',
-  'link_path' => 'user/%/shortcuts',
-  'router_path' => 'user/%/shortcuts',
-  'link_title' => 'Shortcuts',
+  'menu_name' => 'management',
+  'mlid' => '230',
+  'plid' => '218',
+  'link_path' => 'admin/config/search/path/delete/%',
+  'router_path' => 'admin/config/search/path/delete/%',
+  'link_title' => 'Delete alias',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '2',
+  'depth' => '5',
   'customized' => '0',
-  'p1' => '16',
-  'p2' => '179',
-  'p3' => '0',
-  'p4' => '0',
-  'p5' => '0',
+  'p1' => '1',
+  'p2' => '8',
+  'p3' => '50',
+  'p4' => '218',
+  'p5' => '230',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -27712,26 +30368,26 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '180',
-  'plid' => '20',
-  'link_path' => 'admin/structure/taxonomy',
-  'router_path' => 'admin/structure/taxonomy',
-  'link_title' => 'Taxonomy',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:67:"Manage tagging, categorization, and classification of your content.";}}',
+  'mlid' => '231',
+  'plid' => '225',
+  'link_path' => 'admin/config/user-interface/shortcut/%/delete',
+  'router_path' => 'admin/config/user-interface/shortcut/%/delete',
+  'link_title' => 'Delete shortcut set',
+  'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '0',
   'external' => '0',
-  'has_children' => '1',
+  'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '3',
+  'depth' => '6',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '20',
-  'p3' => '180',
-  'p4' => '0',
-  'p5' => '0',
-  'p6' => '0',
+  'p2' => '8',
+  'p3' => '57',
+  'p4' => '217',
+  'p5' => '225',
+  'p6' => '231',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -27741,25 +30397,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '181',
-  'plid' => '18',
-  'link_path' => 'admin/reports/search',
-  'router_path' => 'admin/reports/search',
-  'link_title' => 'Top search phrases',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:33:"View most popular search phrases.";}}',
+  'mlid' => '232',
+  'plid' => '218',
+  'link_path' => 'admin/config/search/path/edit/%',
+  'router_path' => 'admin/config/search/path/edit/%',
+  'link_title' => 'Edit alias',
+  'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '3',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '18',
-  'p3' => '181',
-  'p4' => '0',
-  'p5' => '0',
+  'p2' => '8',
+  'p3' => '50',
+  'p4' => '218',
+  'p5' => '232',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -27769,27 +30425,27 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'navigation',
-  'mlid' => '182',
-  'plid' => '174',
-  'link_path' => 'search/user/%',
-  'router_path' => 'search/user/%',
-  'link_title' => 'Users',
+  'menu_name' => 'management',
+  'mlid' => '233',
+  'plid' => '225',
+  'link_path' => 'admin/config/user-interface/shortcut/%/edit',
+  'router_path' => 'admin/config/user-interface/shortcut/%/edit',
+  'link_title' => 'Edit set name',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '3',
+  'weight' => '10',
+  'depth' => '6',
   'customized' => '0',
-  'p1' => '172',
-  'p2' => '174',
-  'p3' => '182',
-  'p4' => '0',
-  'p5' => '0',
-  'p6' => '0',
+  'p1' => '1',
+  'p2' => '8',
+  'p3' => '57',
+  'p4' => '217',
+  'p5' => '225',
+  'p6' => '233',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -27799,25 +30455,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '183',
-  'plid' => '175',
-  'link_path' => 'admin/help/block',
-  'router_path' => 'admin/help/block',
-  'link_title' => 'block',
+  'mlid' => '234',
+  'plid' => '217',
+  'link_path' => 'admin/config/user-interface/shortcut/link/%',
+  'router_path' => 'admin/config/user-interface/shortcut/link/%',
+  'link_title' => 'Edit shortcut',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
-  'has_children' => '0',
+  'has_children' => '1',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '3',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '175',
-  'p3' => '183',
-  'p4' => '0',
-  'p5' => '0',
+  'p2' => '8',
+  'p3' => '57',
+  'p4' => '217',
+  'p5' => '234',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -27828,25 +30484,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '184',
-  'plid' => '175',
-  'link_path' => 'admin/help/color',
-  'router_path' => 'admin/help/color',
-  'link_title' => 'color',
-  'options' => 'a:0:{}',
+  'mlid' => '235',
+  'plid' => '214',
+  'link_path' => 'admin/config/media/image-styles/edit/%',
+  'router_path' => 'admin/config/media/image-styles/edit/%',
+  'link_title' => 'Edit style',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:25:"Configure an image style.";}}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
-  'has_children' => '0',
+  'has_children' => '1',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '3',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '175',
-  'p3' => '184',
-  'p4' => '0',
-  'p5' => '0',
+  'p2' => '8',
+  'p3' => '43',
+  'p4' => '214',
+  'p5' => '235',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -27857,11 +30513,11 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '185',
-  'plid' => '175',
-  'link_path' => 'admin/help/comment',
-  'router_path' => 'admin/help/comment',
-  'link_title' => 'comment',
+  'mlid' => '236',
+  'plid' => '225',
+  'link_path' => 'admin/config/user-interface/shortcut/%/links',
+  'router_path' => 'admin/config/user-interface/shortcut/%/links',
+  'link_title' => 'List links',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
@@ -27869,14 +30525,14 @@
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '3',
+  'depth' => '6',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '175',
-  'p3' => '185',
-  'p4' => '0',
-  'p5' => '0',
-  'p6' => '0',
+  'p2' => '8',
+  'p3' => '57',
+  'p4' => '217',
+  'p5' => '225',
+  'p6' => '236',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -27886,25 +30542,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '186',
-  'plid' => '175',
-  'link_path' => 'admin/help/contextual',
-  'router_path' => 'admin/help/contextual',
-  'link_title' => 'contextual',
-  'options' => 'a:0:{}',
+  'mlid' => '237',
+  'plid' => '214',
+  'link_path' => 'admin/config/media/image-styles/delete/%',
+  'router_path' => 'admin/config/media/image-styles/delete/%',
+  'link_title' => 'Delete style',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:22:"Delete an image style.";}}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '3',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '175',
-  'p3' => '186',
-  'p4' => '0',
-  'p5' => '0',
+  'p2' => '8',
+  'p3' => '43',
+  'p4' => '214',
+  'p5' => '237',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -27915,25 +30571,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '188',
-  'plid' => '175',
-  'link_path' => 'admin/help/dblog',
-  'router_path' => 'admin/help/dblog',
-  'link_title' => 'dblog',
-  'options' => 'a:0:{}',
+  'mlid' => '238',
+  'plid' => '214',
+  'link_path' => 'admin/config/media/image-styles/revert/%',
+  'router_path' => 'admin/config/media/image-styles/revert/%',
+  'link_title' => 'Revert style',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:22:"Revert an image style.";}}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '3',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '175',
-  'p3' => '188',
-  'p4' => '0',
-  'p5' => '0',
+  'p2' => '8',
+  'p3' => '43',
+  'p4' => '214',
+  'p5' => '238',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -27944,26 +30600,26 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '189',
-  'plid' => '175',
-  'link_path' => 'admin/help/field',
-  'router_path' => 'admin/help/field',
-  'link_title' => 'field',
+  'mlid' => '239',
+  'plid' => '234',
+  'link_path' => 'admin/config/user-interface/shortcut/link/%/delete',
+  'router_path' => 'admin/config/user-interface/shortcut/link/%/delete',
+  'link_title' => 'Delete shortcut',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '3',
+  'depth' => '6',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '175',
-  'p3' => '189',
-  'p4' => '0',
-  'p5' => '0',
-  'p6' => '0',
+  'p2' => '8',
+  'p3' => '57',
+  'p4' => '217',
+  'p5' => '234',
+  'p6' => '239',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -27973,26 +30629,26 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '190',
-  'plid' => '175',
-  'link_path' => 'admin/help/field_sql_storage',
-  'router_path' => 'admin/help/field_sql_storage',
-  'link_title' => 'field_sql_storage',
-  'options' => 'a:0:{}',
+  'mlid' => '240',
+  'plid' => '235',
+  'link_path' => 'admin/config/media/image-styles/edit/%/add/%',
+  'router_path' => 'admin/config/media/image-styles/edit/%/add/%',
+  'link_title' => 'Add image effect',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:28:"Add a new effect to a style.";}}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '3',
+  'depth' => '6',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '175',
-  'p3' => '190',
-  'p4' => '0',
-  'p5' => '0',
-  'p6' => '0',
+  'p2' => '8',
+  'p3' => '43',
+  'p4' => '214',
+  'p5' => '235',
+  'p6' => '240',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -28002,26 +30658,26 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '191',
-  'plid' => '175',
-  'link_path' => 'admin/help/field_ui',
-  'router_path' => 'admin/help/field_ui',
-  'link_title' => 'field_ui',
-  'options' => 'a:0:{}',
+  'mlid' => '241',
+  'plid' => '235',
+  'link_path' => 'admin/config/media/image-styles/edit/%/effects/%',
+  'router_path' => 'admin/config/media/image-styles/edit/%/effects/%',
+  'link_title' => 'Edit image effect',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:39:"Edit an existing effect within a style.";}}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
-  'has_children' => '0',
+  'has_children' => '1',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '3',
+  'depth' => '6',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '175',
-  'p3' => '191',
-  'p4' => '0',
-  'p5' => '0',
-  'p6' => '0',
+  'p2' => '8',
+  'p3' => '43',
+  'p4' => '214',
+  'p5' => '235',
+  'p6' => '241',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -28031,27 +30687,27 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '192',
-  'plid' => '175',
-  'link_path' => 'admin/help/file',
-  'router_path' => 'admin/help/file',
-  'link_title' => 'file',
-  'options' => 'a:0:{}',
+  'mlid' => '242',
+  'plid' => '241',
+  'link_path' => 'admin/config/media/image-styles/edit/%/effects/%/delete',
+  'router_path' => 'admin/config/media/image-styles/edit/%/effects/%/delete',
+  'link_title' => 'Delete image effect',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:39:"Delete an existing effect from a style.";}}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '3',
+  'depth' => '7',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '175',
-  'p3' => '192',
-  'p4' => '0',
-  'p5' => '0',
-  'p6' => '0',
-  'p7' => '0',
+  'p2' => '8',
+  'p3' => '43',
+  'p4' => '214',
+  'p5' => '235',
+  'p6' => '241',
+  'p7' => '242',
   'p8' => '0',
   'p9' => '0',
   'updated' => '0',
@@ -28059,24 +30715,24 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'management',
-  'mlid' => '193',
-  'plid' => '175',
-  'link_path' => 'admin/help/filter',
-  'router_path' => 'admin/help/filter',
-  'link_title' => 'filter',
+  'menu_name' => 'shortcut-set-1',
+  'mlid' => '243',
+  'plid' => '0',
+  'link_path' => 'node/add',
+  'router_path' => 'node/add',
+  'link_title' => 'Add content',
   'options' => 'a:0:{}',
-  'module' => 'system',
-  'hidden' => '-1',
+  'module' => 'menu',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '3',
+  'weight' => '-20',
+  'depth' => '1',
   'customized' => '0',
-  'p1' => '1',
-  'p2' => '175',
-  'p3' => '193',
+  'p1' => '243',
+  'p2' => '0',
+  'p3' => '0',
   'p4' => '0',
   'p5' => '0',
   'p6' => '0',
@@ -28088,24 +30744,24 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'management',
-  'mlid' => '194',
-  'plid' => '175',
-  'link_path' => 'admin/help/help',
-  'router_path' => 'admin/help/help',
-  'link_title' => 'help',
+  'menu_name' => 'shortcut-set-1',
+  'mlid' => '244',
+  'plid' => '0',
+  'link_path' => 'admin/content',
+  'router_path' => 'admin/content',
+  'link_title' => 'Find content',
   'options' => 'a:0:{}',
-  'module' => 'system',
-  'hidden' => '-1',
+  'module' => 'menu',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '3',
+  'weight' => '-19',
+  'depth' => '1',
   'customized' => '0',
-  'p1' => '1',
-  'p2' => '175',
-  'p3' => '194',
+  'p1' => '244',
+  'p2' => '0',
+  'p3' => '0',
   'p4' => '0',
   'p5' => '0',
   'p6' => '0',
@@ -28117,24 +30773,24 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'management',
-  'mlid' => '195',
-  'plid' => '175',
-  'link_path' => 'admin/help/image',
-  'router_path' => 'admin/help/image',
-  'link_title' => 'image',
+  'menu_name' => 'main-menu',
+  'mlid' => '245',
+  'plid' => '0',
+  'link_path' => '<front>',
+  'router_path' => '',
+  'link_title' => 'Home',
   'options' => 'a:0:{}',
-  'module' => 'system',
-  'hidden' => '-1',
-  'external' => '0',
+  'module' => 'menu',
+  'hidden' => '0',
+  'external' => '1',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '3',
+  'depth' => '1',
   'customized' => '0',
-  'p1' => '1',
-  'p2' => '175',
-  'p3' => '195',
+  'p1' => '245',
+  'p2' => '0',
+  'p3' => '0',
   'p4' => '0',
   'p5' => '0',
   'p6' => '0',
@@ -28146,24 +30802,24 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'management',
-  'mlid' => '196',
-  'plid' => '175',
-  'link_path' => 'admin/help/list',
-  'router_path' => 'admin/help/list',
-  'link_title' => 'list',
-  'options' => 'a:0:{}',
+  'menu_name' => 'navigation',
+  'mlid' => '246',
+  'plid' => '6',
+  'link_path' => 'node/add/article',
+  'router_path' => 'node/add/article',
+  'link_title' => 'Article',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:89:"Use <em>articles</em> for time-sensitive content like news, press releases or blog posts.";}}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '3',
+  'depth' => '2',
   'customized' => '0',
-  'p1' => '1',
-  'p2' => '175',
-  'p3' => '196',
+  'p1' => '6',
+  'p2' => '246',
+  'p3' => '0',
   'p4' => '0',
   'p5' => '0',
   'p6' => '0',
@@ -28175,24 +30831,24 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'management',
-  'mlid' => '197',
-  'plid' => '175',
-  'link_path' => 'admin/help/menu',
-  'router_path' => 'admin/help/menu',
-  'link_title' => 'menu',
-  'options' => 'a:0:{}',
+  'menu_name' => 'navigation',
+  'mlid' => '247',
+  'plid' => '6',
+  'link_path' => 'node/add/page',
+  'router_path' => 'node/add/page',
+  'link_title' => 'Basic page',
+  'options' => "a:1:{s:10:\"attributes\";a:1:{s:5:\"title\";s:77:\"Use <em>basic pages</em> for your static content, such as an 'About us' page.\";}}",
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '3',
+  'depth' => '2',
   'customized' => '0',
-  'p1' => '1',
-  'p2' => '175',
-  'p3' => '197',
+  'p1' => '6',
+  'p2' => '247',
+  'p3' => '0',
   'p4' => '0',
   'p5' => '0',
   'p6' => '0',
@@ -28205,11 +30861,11 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '198',
+  'mlid' => '248',
   'plid' => '175',
-  'link_path' => 'admin/help/node',
-  'router_path' => 'admin/help/node',
-  'link_title' => 'node',
+  'link_path' => 'admin/help/toolbar',
+  'router_path' => 'admin/help/toolbar',
+  'link_title' => 'toolbar',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
@@ -28221,7 +30877,7 @@
   'customized' => '0',
   'p1' => '1',
   'p2' => '175',
-  'p3' => '198',
+  'p3' => '248',
   'p4' => '0',
   'p5' => '0',
   'p6' => '0',
@@ -28234,23 +30890,23 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '199',
-  'plid' => '175',
-  'link_path' => 'admin/help/number',
-  'router_path' => 'admin/help/number',
-  'link_title' => 'number',
-  'options' => 'a:0:{}',
+  'mlid' => '287',
+  'plid' => '18',
+  'link_path' => 'admin/reports/updates',
+  'router_path' => 'admin/reports/updates',
+  'link_title' => 'Available updates',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:82:"Get a status report about available updates for your installed modules and themes.";}}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '0',
+  'weight' => '-50',
   'depth' => '3',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '175',
-  'p3' => '199',
+  'p2' => '18',
+  'p3' => '287',
   'p4' => '0',
   'p5' => '0',
   'p6' => '0',
@@ -28263,23 +30919,23 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '200',
-  'plid' => '175',
-  'link_path' => 'admin/help/options',
-  'router_path' => 'admin/help/options',
-  'link_title' => 'options',
+  'mlid' => '288',
+  'plid' => '15',
+  'link_path' => 'admin/modules/install',
+  'router_path' => 'admin/modules/install',
+  'link_title' => 'Install new module',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '0',
+  'weight' => '25',
   'depth' => '3',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '175',
-  'p3' => '200',
+  'p2' => '15',
+  'p3' => '288',
   'p4' => '0',
   'p5' => '0',
   'p6' => '0',
@@ -28292,23 +30948,23 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '202',
-  'plid' => '175',
-  'link_path' => 'admin/help/path',
-  'router_path' => 'admin/help/path',
-  'link_title' => 'path',
+  'mlid' => '289',
+  'plid' => '7',
+  'link_path' => 'admin/appearance/install',
+  'router_path' => 'admin/appearance/install',
+  'link_title' => 'Install new theme',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '0',
+  'weight' => '25',
   'depth' => '3',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '175',
-  'p3' => '202',
+  'p2' => '7',
+  'p3' => '289',
   'p4' => '0',
   'p5' => '0',
   'p6' => '0',
@@ -28321,23 +30977,23 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '203',
-  'plid' => '175',
-  'link_path' => 'admin/help/rdf',
-  'router_path' => 'admin/help/rdf',
-  'link_title' => 'rdf',
+  'mlid' => '290',
+  'plid' => '15',
+  'link_path' => 'admin/modules/update',
+  'router_path' => 'admin/modules/update',
+  'link_title' => 'Update',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '0',
+  'weight' => '10',
   'depth' => '3',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '175',
-  'p3' => '203',
+  'p2' => '15',
+  'p3' => '290',
   'p4' => '0',
   'p5' => '0',
   'p6' => '0',
@@ -28350,23 +31006,23 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '204',
-  'plid' => '175',
-  'link_path' => 'admin/help/search',
-  'router_path' => 'admin/help/search',
-  'link_title' => 'search',
+  'mlid' => '291',
+  'plid' => '7',
+  'link_path' => 'admin/appearance/update',
+  'router_path' => 'admin/appearance/update',
+  'link_title' => 'Update',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '0',
+  'weight' => '10',
   'depth' => '3',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '175',
-  'p3' => '204',
+  'p2' => '7',
+  'p3' => '291',
   'p4' => '0',
   'p5' => '0',
   'p6' => '0',
@@ -28379,11 +31035,11 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '205',
+  'mlid' => '292',
   'plid' => '175',
-  'link_path' => 'admin/help/shortcut',
-  'router_path' => 'admin/help/shortcut',
-  'link_title' => 'shortcut',
+  'link_path' => 'admin/help/update',
+  'router_path' => 'admin/help/update',
+  'link_title' => 'update',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
@@ -28395,7 +31051,7 @@
   'customized' => '0',
   'p1' => '1',
   'p2' => '175',
-  'p3' => '205',
+  'p3' => '292',
   'p4' => '0',
   'p5' => '0',
   'p6' => '0',
@@ -28408,11 +31064,11 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '206',
-  'plid' => '175',
-  'link_path' => 'admin/help/system',
-  'router_path' => 'admin/help/system',
-  'link_title' => 'system',
+  'mlid' => '293',
+  'plid' => '287',
+  'link_path' => 'admin/reports/updates/list',
+  'router_path' => 'admin/reports/updates/list',
+  'link_title' => 'List',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
@@ -28420,12 +31076,12 @@
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '3',
+  'depth' => '4',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '175',
-  'p3' => '206',
-  'p4' => '0',
+  'p2' => '18',
+  'p3' => '287',
+  'p4' => '293',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -28437,24 +31093,24 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '207',
-  'plid' => '175',
-  'link_path' => 'admin/help/taxonomy',
-  'router_path' => 'admin/help/taxonomy',
-  'link_title' => 'taxonomy',
+  'mlid' => '294',
+  'plid' => '287',
+  'link_path' => 'admin/reports/updates/settings',
+  'router_path' => 'admin/reports/updates/settings',
+  'link_title' => 'Settings',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '3',
+  'weight' => '50',
+  'depth' => '4',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '175',
-  'p3' => '207',
-  'p4' => '0',
+  'p2' => '18',
+  'p3' => '287',
+  'p4' => '294',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -28466,24 +31122,24 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '208',
-  'plid' => '175',
-  'link_path' => 'admin/help/text',
-  'router_path' => 'admin/help/text',
-  'link_title' => 'text',
+  'mlid' => '295',
+  'plid' => '287',
+  'link_path' => 'admin/reports/updates/install',
+  'router_path' => 'admin/reports/updates/install',
+  'link_title' => 'Install new module or theme',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '3',
+  'weight' => '25',
+  'depth' => '4',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '175',
-  'p3' => '208',
-  'p4' => '0',
+  'p2' => '18',
+  'p3' => '287',
+  'p4' => '295',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -28495,24 +31151,24 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '209',
-  'plid' => '175',
-  'link_path' => 'admin/help/user',
-  'router_path' => 'admin/help/user',
-  'link_title' => 'user',
+  'mlid' => '296',
+  'plid' => '287',
+  'link_path' => 'admin/reports/updates/update',
+  'router_path' => 'admin/reports/updates/update',
+  'link_title' => 'Update',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '3',
+  'weight' => '10',
+  'depth' => '4',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '175',
-  'p3' => '209',
-  'p4' => '0',
+  'p2' => '18',
+  'p3' => '287',
+  'p4' => '296',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -28524,22 +31180,22 @@
 ))
 ->values(array(
   'menu_name' => 'navigation',
-  'mlid' => '210',
-  'plid' => '176',
-  'link_path' => 'taxonomy/term/%/edit',
-  'router_path' => 'taxonomy/term/%/edit',
-  'link_title' => 'Edit',
+  'mlid' => '335',
+  'plid' => '0',
+  'link_path' => 'blog',
+  'router_path' => 'blog',
+  'link_title' => 'Blogs',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '1',
   'external' => '0',
-  'has_children' => '0',
+  'has_children' => '1',
   'expanded' => '0',
-  'weight' => '10',
-  'depth' => '2',
+  'weight' => '0',
+  'depth' => '1',
   'customized' => '0',
-  'p1' => '176',
-  'p2' => '210',
+  'p1' => '335',
+  'p2' => '0',
   'p3' => '0',
   'p4' => '0',
   'p5' => '0',
@@ -28553,22 +31209,22 @@
 ))
 ->values(array(
   'menu_name' => 'navigation',
-  'mlid' => '211',
-  'plid' => '176',
-  'link_path' => 'taxonomy/term/%/view',
-  'router_path' => 'taxonomy/term/%/view',
-  'link_title' => 'View',
+  'mlid' => '336',
+  'plid' => '0',
+  'link_path' => 'book',
+  'router_path' => 'book',
+  'link_title' => 'Books',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '2',
+  'depth' => '1',
   'customized' => '0',
-  'p1' => '176',
-  'p2' => '211',
+  'p1' => '336',
+  'p2' => '0',
   'p3' => '0',
   'p4' => '0',
   'p5' => '0',
@@ -28581,25 +31237,25 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'management',
-  'mlid' => '212',
-  'plid' => '180',
-  'link_path' => 'admin/structure/taxonomy/%',
-  'router_path' => 'admin/structure/taxonomy/%',
-  'link_title' => '',
+  'menu_name' => 'navigation',
+  'mlid' => '337',
+  'plid' => '0',
+  'link_path' => 'contact',
+  'router_path' => 'contact',
+  'link_title' => 'Contact',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '4',
+  'depth' => '1',
   'customized' => '0',
-  'p1' => '1',
-  'p2' => '20',
-  'p3' => '180',
-  'p4' => '212',
+  'p1' => '337',
+  'p2' => '0',
+  'p3' => '0',
+  'p4' => '0',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -28610,25 +31266,25 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'management',
-  'mlid' => '213',
-  'plid' => '180',
-  'link_path' => 'admin/structure/taxonomy/add',
-  'router_path' => 'admin/structure/taxonomy/add',
-  'link_title' => 'Add vocabulary',
+  'menu_name' => 'navigation',
+  'mlid' => '338',
+  'plid' => '0',
+  'link_path' => 'aggregator',
+  'router_path' => 'aggregator',
+  'link_title' => 'Feed aggregator',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
-  'has_children' => '0',
+  'has_children' => '1',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '4',
+  'weight' => '5',
+  'depth' => '1',
   'customized' => '0',
-  'p1' => '1',
-  'p2' => '20',
-  'p3' => '180',
-  'p4' => '213',
+  'p1' => '338',
+  'p2' => '0',
+  'p3' => '0',
+  'p4' => '0',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -28639,25 +31295,25 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'management',
-  'mlid' => '214',
-  'plid' => '43',
-  'link_path' => 'admin/config/media/image-styles',
-  'router_path' => 'admin/config/media/image-styles',
-  'link_title' => 'Image styles',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:78:"Configure styles that can be used for resizing or adjusting images on display.";}}',
+  'menu_name' => 'navigation',
+  'mlid' => '339',
+  'plid' => '0',
+  'link_path' => 'forum',
+  'router_path' => 'forum',
+  'link_title' => 'Forums',
+  'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '0',
   'external' => '0',
   'has_children' => '1',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '4',
+  'depth' => '1',
   'customized' => '0',
-  'p1' => '1',
-  'p2' => '8',
-  'p3' => '43',
-  'p4' => '214',
+  'p1' => '339',
+  'p2' => '0',
+  'p3' => '0',
+  'p4' => '0',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -28668,25 +31324,25 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'management',
-  'mlid' => '215',
-  'plid' => '180',
-  'link_path' => 'admin/structure/taxonomy/list',
-  'router_path' => 'admin/structure/taxonomy/list',
-  'link_title' => 'List',
+  'menu_name' => 'navigation',
+  'mlid' => '340',
+  'plid' => '0',
+  'link_path' => 'tracker',
+  'router_path' => 'tracker',
+  'link_title' => 'Recent content',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '-10',
-  'depth' => '4',
+  'weight' => '1',
+  'depth' => '1',
   'customized' => '0',
-  'p1' => '1',
-  'p2' => '20',
-  'p3' => '180',
-  'p4' => '215',
+  'p1' => '340',
+  'p2' => '0',
+  'p3' => '0',
+  'p4' => '0',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -28697,25 +31353,25 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'management',
-  'mlid' => '216',
-  'plid' => '50',
-  'link_path' => 'admin/config/search/settings',
-  'router_path' => 'admin/config/search/settings',
-  'link_title' => 'Search settings',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:67:"Configure relevance settings for search and other indexing options.";}}',
+  'menu_name' => 'navigation',
+  'mlid' => '341',
+  'plid' => '340',
+  'link_path' => 'tracker/all',
+  'router_path' => 'tracker/all',
+  'link_title' => 'All recent content',
+  'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '-10',
-  'depth' => '4',
+  'weight' => '0',
+  'depth' => '2',
   'customized' => '0',
-  'p1' => '1',
-  'p2' => '8',
-  'p3' => '50',
-  'p4' => '216',
+  'p1' => '340',
+  'p2' => '341',
+  'p3' => '0',
+  'p4' => '0',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -28726,25 +31382,25 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'management',
-  'mlid' => '217',
-  'plid' => '57',
-  'link_path' => 'admin/config/user-interface/shortcut',
-  'router_path' => 'admin/config/user-interface/shortcut',
-  'link_title' => 'Shortcuts',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:29:"Add and modify shortcut sets.";}}',
+  'menu_name' => 'navigation',
+  'mlid' => '342',
+  'plid' => '338',
+  'link_path' => 'aggregator/categories',
+  'router_path' => 'aggregator/categories',
+  'link_title' => 'Categories',
+  'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '0',
   'external' => '0',
   'has_children' => '1',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '4',
+  'depth' => '2',
   'customized' => '0',
-  'p1' => '1',
-  'p2' => '8',
-  'p3' => '57',
-  'p4' => '217',
+  'p1' => '338',
+  'p2' => '342',
+  'p3' => '0',
+  'p4' => '0',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -28755,25 +31411,54 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'management',
-  'mlid' => '218',
-  'plid' => '50',
-  'link_path' => 'admin/config/search/path',
-  'router_path' => 'admin/config/search/path',
-  'link_title' => 'URL aliases',
-  'options' => "a:1:{s:10:\"attributes\";a:1:{s:5:\"title\";s:46:\"Change your site's URL paths by aliasing them.\";}}",
+  'menu_name' => 'navigation',
+  'mlid' => '343',
+  'plid' => '339',
+  'link_path' => 'forum/%',
+  'router_path' => 'forum/%',
+  'link_title' => 'Forums',
+  'options' => 'a:0:{}',
+  'module' => 'system',
+  'hidden' => '0',
+  'external' => '0',
+  'has_children' => '0',
+  'expanded' => '0',
+  'weight' => '0',
+  'depth' => '2',
+  'customized' => '0',
+  'p1' => '339',
+  'p2' => '343',
+  'p3' => '0',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+  'language' => 'und',
+  'i18n_tsid' => '0',
+))
+->values(array(
+  'menu_name' => 'navigation',
+  'mlid' => '344',
+  'plid' => '335',
+  'link_path' => 'blog/%',
+  'router_path' => 'blog/%',
+  'link_title' => 'My blog',
+  'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '0',
   'external' => '0',
-  'has_children' => '1',
+  'has_children' => '0',
   'expanded' => '0',
-  'weight' => '-5',
-  'depth' => '4',
+  'weight' => '0',
+  'depth' => '2',
   'customized' => '0',
-  'p1' => '1',
-  'p2' => '8',
-  'p3' => '50',
-  'p4' => '218',
+  'p1' => '335',
+  'p2' => '344',
+  'p3' => '0',
+  'p4' => '0',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -28784,12 +31469,12 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'management',
-  'mlid' => '219',
-  'plid' => '218',
-  'link_path' => 'admin/config/search/path/add',
-  'router_path' => 'admin/config/search/path/add',
-  'link_title' => 'Add alias',
+  'menu_name' => 'navigation',
+  'mlid' => '345',
+  'plid' => '340',
+  'link_path' => 'tracker/%',
+  'router_path' => 'tracker/%',
+  'link_title' => 'My recent content',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
@@ -28797,13 +31482,13 @@
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '5',
+  'depth' => '2',
   'customized' => '0',
-  'p1' => '1',
-  'p2' => '8',
-  'p3' => '50',
-  'p4' => '218',
-  'p5' => '219',
+  'p1' => '340',
+  'p2' => '345',
+  'p3' => '0',
+  'p4' => '0',
+  'p5' => '0',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -28813,26 +31498,26 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'management',
-  'mlid' => '220',
-  'plid' => '217',
-  'link_path' => 'admin/config/user-interface/shortcut/add-set',
-  'router_path' => 'admin/config/user-interface/shortcut/add-set',
-  'link_title' => 'Add shortcut set',
+  'menu_name' => 'navigation',
+  'mlid' => '346',
+  'plid' => '338',
+  'link_path' => 'aggregator/sources',
+  'router_path' => 'aggregator/sources',
+  'link_title' => 'Sources',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
-  'has_children' => '0',
+  'has_children' => '1',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '5',
+  'depth' => '2',
   'customized' => '0',
-  'p1' => '1',
-  'p2' => '8',
-  'p3' => '57',
-  'p4' => '217',
-  'p5' => '220',
+  'p1' => '338',
+  'p2' => '346',
+  'p3' => '0',
+  'p4' => '0',
+  'p5' => '0',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -28842,26 +31527,26 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'management',
-  'mlid' => '221',
-  'plid' => '214',
-  'link_path' => 'admin/config/media/image-styles/add',
-  'router_path' => 'admin/config/media/image-styles/add',
-  'link_title' => 'Add style',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:22:"Add a new image style.";}}',
+  'menu_name' => 'navigation',
+  'mlid' => '347',
+  'plid' => '342',
+  'link_path' => 'aggregator/categories/%',
+  'router_path' => 'aggregator/categories/%',
+  'link_title' => '',
+  'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '2',
-  'depth' => '5',
+  'weight' => '0',
+  'depth' => '3',
   'customized' => '0',
-  'p1' => '1',
-  'p2' => '8',
-  'p3' => '43',
-  'p4' => '214',
-  'p5' => '221',
+  'p1' => '338',
+  'p2' => '342',
+  'p3' => '347',
+  'p4' => '0',
+  'p5' => '0',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -28871,26 +31556,26 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'management',
-  'mlid' => '222',
-  'plid' => '212',
-  'link_path' => 'admin/structure/taxonomy/%/add',
-  'router_path' => 'admin/structure/taxonomy/%/add',
-  'link_title' => 'Add term',
+  'menu_name' => 'navigation',
+  'mlid' => '348',
+  'plid' => '346',
+  'link_path' => 'aggregator/sources/%',
+  'router_path' => 'aggregator/sources/%',
+  'link_title' => '',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '5',
+  'depth' => '3',
   'customized' => '0',
-  'p1' => '1',
-  'p2' => '20',
-  'p3' => '180',
-  'p4' => '212',
-  'p5' => '222',
+  'p1' => '338',
+  'p2' => '346',
+  'p3' => '348',
+  'p4' => '0',
+  'p5' => '0',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -28900,26 +31585,26 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'management',
-  'mlid' => '223',
-  'plid' => '216',
-  'link_path' => 'admin/config/search/settings/reindex',
-  'router_path' => 'admin/config/search/settings/reindex',
-  'link_title' => 'Clear index',
-  'options' => 'a:0:{}',
+  'menu_name' => 'navigation',
+  'mlid' => '349',
+  'plid' => '6',
+  'link_path' => 'node/add/blog',
+  'router_path' => 'node/add/blog',
+  'link_title' => 'Blog entry',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:58:"Use for multi-user blogs. Every user gets a personal blog.";}}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '5',
+  'depth' => '2',
   'customized' => '0',
-  'p1' => '1',
-  'p2' => '8',
-  'p3' => '50',
-  'p4' => '216',
-  'p5' => '223',
+  'p1' => '6',
+  'p2' => '349',
+  'p3' => '0',
+  'p4' => '0',
+  'p5' => '0',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -28929,26 +31614,26 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'management',
-  'mlid' => '224',
-  'plid' => '212',
-  'link_path' => 'admin/structure/taxonomy/%/edit',
-  'router_path' => 'admin/structure/taxonomy/%/edit',
-  'link_title' => 'Edit',
-  'options' => 'a:0:{}',
+  'menu_name' => 'navigation',
+  'mlid' => '350',
+  'plid' => '6',
+  'link_path' => 'node/add/book',
+  'router_path' => 'node/add/book',
+  'link_title' => 'Book page',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:87:"<em>Books</em> have a built-in hierarchical navigation. Use for handbooks or tutorials.";}}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '-10',
-  'depth' => '5',
+  'weight' => '0',
+  'depth' => '2',
   'customized' => '0',
-  'p1' => '1',
-  'p2' => '20',
-  'p3' => '180',
-  'p4' => '212',
-  'p5' => '224',
+  'p1' => '6',
+  'p2' => '350',
+  'p3' => '0',
+  'p4' => '0',
+  'p5' => '0',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -28959,25 +31644,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '225',
-  'plid' => '217',
-  'link_path' => 'admin/config/user-interface/shortcut/%',
-  'router_path' => 'admin/config/user-interface/shortcut/%',
-  'link_title' => 'Edit shortcuts',
-  'options' => 'a:0:{}',
+  'mlid' => '351',
+  'plid' => '9',
+  'link_path' => 'admin/content/book',
+  'router_path' => 'admin/content/book',
+  'link_title' => 'Books',
+  'options' => "a:1:{s:10:\"attributes\";a:1:{s:5:\"title\";s:33:\"Manage your site's book outlines.\";}}",
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
-  'has_children' => '1',
+  'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '5',
+  'depth' => '3',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '8',
-  'p3' => '57',
-  'p4' => '217',
-  'p5' => '225',
+  'p2' => '9',
+  'p3' => '351',
+  'p4' => '0',
+  'p5' => '0',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -28987,26 +31672,26 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'management',
-  'mlid' => '226',
-  'plid' => '212',
-  'link_path' => 'admin/structure/taxonomy/%/list',
-  'router_path' => 'admin/structure/taxonomy/%/list',
-  'link_title' => 'List',
+  'menu_name' => 'navigation',
+  'mlid' => '352',
+  'plid' => '16',
+  'link_path' => 'user/%/contact',
+  'router_path' => 'user/%/contact',
+  'link_title' => 'Contact',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '-20',
-  'depth' => '5',
+  'weight' => '2',
+  'depth' => '2',
   'customized' => '0',
-  'p1' => '1',
-  'p2' => '20',
-  'p3' => '180',
-  'p4' => '212',
-  'p5' => '226',
+  'p1' => '16',
+  'p2' => '352',
+  'p3' => '0',
+  'p4' => '0',
+  'p5' => '0',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -29017,25 +31702,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '227',
-  'plid' => '218',
-  'link_path' => 'admin/config/search/path/list',
-  'router_path' => 'admin/config/search/path/list',
-  'link_title' => 'List',
-  'options' => 'a:0:{}',
+  'mlid' => '353',
+  'plid' => '20',
+  'link_path' => 'admin/structure/contact',
+  'router_path' => 'admin/structure/contact',
+  'link_title' => 'Contact form',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:71:"Create a system contact form and set up categories for the form to use.";}}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
-  'has_children' => '0',
+  'has_children' => '1',
   'expanded' => '0',
-  'weight' => '-10',
-  'depth' => '5',
+  'weight' => '0',
+  'depth' => '3',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '8',
-  'p3' => '50',
-  'p4' => '218',
-  'p5' => '227',
+  'p2' => '20',
+  'p3' => '353',
+  'p4' => '0',
+  'p5' => '0',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -29046,25 +31731,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '228',
-  'plid' => '214',
-  'link_path' => 'admin/config/media/image-styles/list',
-  'router_path' => 'admin/config/media/image-styles/list',
-  'link_title' => 'List',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:42:"List the current image styles on the site.";}}',
+  'mlid' => '354',
+  'plid' => '8',
+  'link_path' => 'admin/config/date',
+  'router_path' => 'admin/config/date',
+  'link_title' => 'Date API',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:42:"Settings for modules the use the Date API.";}}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '1',
-  'depth' => '5',
+  'weight' => '-10',
+  'depth' => '3',
   'customized' => '0',
   'p1' => '1',
   'p2' => '8',
-  'p3' => '43',
-  'p4' => '214',
-  'p5' => '228',
+  'p3' => '354',
+  'p4' => '0',
+  'p5' => '0',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -29074,27 +31759,27 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'management',
-  'mlid' => '229',
-  'plid' => '225',
-  'link_path' => 'admin/config/user-interface/shortcut/%/add-link',
-  'router_path' => 'admin/config/user-interface/shortcut/%/add-link',
-  'link_title' => 'Add shortcut',
-  'options' => 'a:0:{}',
+  'menu_name' => 'navigation',
+  'mlid' => '355',
+  'plid' => '6',
+  'link_path' => 'node/add/forum',
+  'router_path' => 'node/add/forum',
+  'link_title' => 'Forum topic',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:69:"A <em>forum topic</em> starts a new discussion thread within a forum.";}}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '6',
+  'depth' => '2',
   'customized' => '0',
-  'p1' => '1',
-  'p2' => '8',
-  'p3' => '57',
-  'p4' => '217',
-  'p5' => '225',
-  'p6' => '229',
+  'p1' => '6',
+  'p2' => '355',
+  'p3' => '0',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -29104,25 +31789,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '230',
-  'plid' => '218',
-  'link_path' => 'admin/config/search/path/delete/%',
-  'router_path' => 'admin/config/search/path/delete/%',
-  'link_title' => 'Delete alias',
-  'options' => 'a:0:{}',
+  'mlid' => '356',
+  'plid' => '20',
+  'link_path' => 'admin/structure/forum',
+  'router_path' => 'admin/structure/forum',
+  'link_title' => 'Forums',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:33:"Control forum hierarchy settings.";}}',
   'module' => 'system',
   'hidden' => '0',
   'external' => '0',
-  'has_children' => '0',
+  'has_children' => '1',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '5',
+  'depth' => '3',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '8',
-  'p3' => '50',
-  'p4' => '218',
-  'p5' => '230',
+  'p2' => '20',
+  'p3' => '356',
+  'p4' => '0',
+  'p5' => '0',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -29132,27 +31817,27 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'management',
-  'mlid' => '231',
-  'plid' => '225',
-  'link_path' => 'admin/config/user-interface/shortcut/%/delete',
-  'router_path' => 'admin/config/user-interface/shortcut/%/delete',
-  'link_title' => 'Delete shortcut set',
+  'menu_name' => 'navigation',
+  'mlid' => '358',
+  'plid' => '5',
+  'link_path' => 'node/%/outline',
+  'router_path' => 'node/%/outline',
+  'link_title' => 'Outline',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
-  'has_children' => '0',
+  'has_children' => '1',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '6',
+  'weight' => '2',
+  'depth' => '2',
   'customized' => '0',
-  'p1' => '1',
-  'p2' => '8',
-  'p3' => '57',
-  'p4' => '217',
-  'p5' => '225',
-  'p6' => '231',
+  'p1' => '5',
+  'p2' => '358',
+  'p3' => '0',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -29162,25 +31847,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '232',
-  'plid' => '218',
-  'link_path' => 'admin/config/search/path/edit/%',
-  'router_path' => 'admin/config/search/path/edit/%',
-  'link_title' => 'Edit alias',
-  'options' => 'a:0:{}',
+  'mlid' => '359',
+  'plid' => '18',
+  'link_path' => 'admin/reports/hits',
+  'router_path' => 'admin/reports/hits',
+  'link_title' => 'Recent hits',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:43:"View pages that have recently been visited.";}}',
   'module' => 'system',
   'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '5',
+  'depth' => '3',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '8',
-  'p3' => '50',
-  'p4' => '218',
-  'p5' => '232',
+  'p2' => '18',
+  'p3' => '359',
+  'p4' => '0',
+  'p5' => '0',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -29191,26 +31876,26 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '233',
-  'plid' => '225',
-  'link_path' => 'admin/config/user-interface/shortcut/%/edit',
-  'router_path' => 'admin/config/user-interface/shortcut/%/edit',
-  'link_title' => 'Edit set name',
-  'options' => 'a:0:{}',
+  'mlid' => '360',
+  'plid' => '18',
+  'link_path' => 'admin/reports/pages',
+  'router_path' => 'admin/reports/pages',
+  'link_title' => 'Top pages',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:41:"View pages that have been hit frequently.";}}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '10',
-  'depth' => '6',
+  'weight' => '1',
+  'depth' => '3',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '8',
-  'p3' => '57',
-  'p4' => '217',
-  'p5' => '225',
-  'p6' => '233',
+  'p2' => '18',
+  'p3' => '360',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -29220,25 +31905,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '234',
-  'plid' => '217',
-  'link_path' => 'admin/config/user-interface/shortcut/link/%',
-  'router_path' => 'admin/config/user-interface/shortcut/link/%',
-  'link_title' => 'Edit shortcut',
-  'options' => 'a:0:{}',
+  'mlid' => '361',
+  'plid' => '18',
+  'link_path' => 'admin/reports/referrers',
+  'router_path' => 'admin/reports/referrers',
+  'link_title' => 'Top referrers',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:19:"View top referrers.";}}',
   'module' => 'system',
   'hidden' => '0',
   'external' => '0',
-  'has_children' => '1',
+  'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '5',
+  'depth' => '3',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '8',
-  'p3' => '57',
-  'p4' => '217',
-  'p5' => '234',
+  'p2' => '18',
+  'p3' => '361',
+  'p4' => '0',
+  'p5' => '0',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -29249,25 +31934,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '235',
-  'plid' => '214',
-  'link_path' => 'admin/config/media/image-styles/edit/%',
-  'router_path' => 'admin/config/media/image-styles/edit/%',
-  'link_title' => 'Edit style',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:25:"Configure an image style.";}}',
+  'mlid' => '362',
+  'plid' => '18',
+  'link_path' => 'admin/reports/visitors',
+  'router_path' => 'admin/reports/visitors',
+  'link_title' => 'Top visitors',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:34:"View visitors that hit many pages.";}}',
   'module' => 'system',
   'hidden' => '0',
   'external' => '0',
-  'has_children' => '1',
+  'has_children' => '0',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '5',
+  'weight' => '2',
+  'depth' => '3',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '8',
-  'p3' => '43',
-  'p4' => '214',
-  'p5' => '235',
+  'p2' => '18',
+  'p3' => '362',
+  'p4' => '0',
+  'p5' => '0',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -29277,27 +31962,27 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'management',
-  'mlid' => '236',
-  'plid' => '225',
-  'link_path' => 'admin/config/user-interface/shortcut/%/links',
-  'router_path' => 'admin/config/user-interface/shortcut/%/links',
-  'link_title' => 'List links',
+  'menu_name' => 'navigation',
+  'mlid' => '363',
+  'plid' => '5',
+  'link_path' => 'node/%/track',
+  'router_path' => 'node/%/track',
+  'link_title' => 'Track',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
-  'has_children' => '0',
+  'has_children' => '1',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '6',
+  'weight' => '2',
+  'depth' => '2',
   'customized' => '0',
-  'p1' => '1',
-  'p2' => '8',
-  'p3' => '57',
-  'p4' => '217',
-  'p5' => '225',
-  'p6' => '236',
+  'p1' => '5',
+  'p2' => '363',
+  'p3' => '0',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -29306,26 +31991,26 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'management',
-  'mlid' => '237',
-  'plid' => '214',
-  'link_path' => 'admin/config/media/image-styles/delete/%',
-  'router_path' => 'admin/config/media/image-styles/delete/%',
-  'link_title' => 'Delete style',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:22:"Delete an image style.";}}',
+  'menu_name' => 'navigation',
+  'mlid' => '364',
+  'plid' => '16',
+  'link_path' => 'user/%/track',
+  'router_path' => 'user/%/track',
+  'link_title' => 'Track',
+  'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '5',
+  'depth' => '2',
   'customized' => '0',
-  'p1' => '1',
-  'p2' => '8',
-  'p3' => '43',
-  'p4' => '214',
-  'p5' => '237',
+  'p1' => '16',
+  'p2' => '364',
+  'p3' => '0',
+  'p4' => '0',
+  'p5' => '0',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -29335,26 +32020,26 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'management',
-  'mlid' => '238',
-  'plid' => '214',
-  'link_path' => 'admin/config/media/image-styles/revert/%',
-  'router_path' => 'admin/config/media/image-styles/revert/%',
-  'link_title' => 'Revert style',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:22:"Revert an image style.";}}',
+  'menu_name' => 'navigation',
+  'mlid' => '365',
+  'plid' => '5',
+  'link_path' => 'node/%/translate',
+  'router_path' => 'node/%/translate',
+  'link_title' => 'Translate',
+  'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
-  'has_children' => '0',
+  'has_children' => '1',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '5',
+  'weight' => '1',
+  'depth' => '2',
   'customized' => '0',
-  'p1' => '1',
-  'p2' => '8',
-  'p3' => '43',
-  'p4' => '214',
-  'p5' => '238',
+  'p1' => '5',
+  'p2' => '365',
+  'p3' => '0',
+  'p4' => '0',
+  'p5' => '0',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -29365,26 +32050,26 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '239',
-  'plid' => '234',
-  'link_path' => 'admin/config/user-interface/shortcut/link/%/delete',
-  'router_path' => 'admin/config/user-interface/shortcut/link/%/delete',
-  'link_title' => 'Delete shortcut',
+  'mlid' => '369',
+  'plid' => '175',
+  'link_path' => 'admin/help/aggregator',
+  'router_path' => 'admin/help/aggregator',
+  'link_title' => 'aggregator',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '6',
+  'depth' => '3',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '8',
-  'p3' => '57',
-  'p4' => '217',
-  'p5' => '234',
-  'p6' => '239',
+  'p2' => '175',
+  'p3' => '369',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -29394,26 +32079,26 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '240',
-  'plid' => '235',
-  'link_path' => 'admin/config/media/image-styles/edit/%/add/%',
-  'router_path' => 'admin/config/media/image-styles/edit/%/add/%',
-  'link_title' => 'Add image effect',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:28:"Add a new effect to a style.";}}',
+  'mlid' => '370',
+  'plid' => '175',
+  'link_path' => 'admin/help/blog',
+  'router_path' => 'admin/help/blog',
+  'link_title' => 'blog',
+  'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '6',
+  'depth' => '3',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '8',
-  'p3' => '43',
-  'p4' => '214',
-  'p5' => '235',
-  'p6' => '240',
+  'p2' => '175',
+  'p3' => '370',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -29423,26 +32108,26 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '241',
-  'plid' => '235',
-  'link_path' => 'admin/config/media/image-styles/edit/%/effects/%',
-  'router_path' => 'admin/config/media/image-styles/edit/%/effects/%',
-  'link_title' => 'Edit image effect',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:39:"Edit an existing effect within a style.";}}',
+  'mlid' => '371',
+  'plid' => '175',
+  'link_path' => 'admin/help/book',
+  'router_path' => 'admin/help/book',
+  'link_title' => 'book',
+  'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
-  'has_children' => '1',
+  'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '6',
+  'depth' => '3',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '8',
-  'p3' => '43',
-  'p4' => '214',
-  'p5' => '235',
-  'p6' => '241',
+  'p2' => '175',
+  'p3' => '371',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -29452,27 +32137,27 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '242',
-  'plid' => '241',
-  'link_path' => 'admin/config/media/image-styles/edit/%/effects/%/delete',
-  'router_path' => 'admin/config/media/image-styles/edit/%/effects/%/delete',
-  'link_title' => 'Delete image effect',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:39:"Delete an existing effect from a style.";}}',
+  'mlid' => '372',
+  'plid' => '175',
+  'link_path' => 'admin/help/contact',
+  'router_path' => 'admin/help/contact',
+  'link_title' => 'contact',
+  'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '7',
+  'depth' => '3',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '8',
-  'p3' => '43',
-  'p4' => '214',
-  'p5' => '235',
-  'p6' => '241',
-  'p7' => '242',
+  'p2' => '175',
+  'p3' => '372',
+  'p4' => '0',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
   'p8' => '0',
   'p9' => '0',
   'updated' => '0',
@@ -29480,24 +32165,24 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'shortcut-set-1',
-  'mlid' => '243',
-  'plid' => '0',
-  'link_path' => 'node/add',
-  'router_path' => 'node/add',
-  'link_title' => 'Add content',
+  'menu_name' => 'management',
+  'mlid' => '373',
+  'plid' => '175',
+  'link_path' => 'admin/help/date',
+  'router_path' => 'admin/help/date',
+  'link_title' => 'date',
   'options' => 'a:0:{}',
-  'module' => 'menu',
-  'hidden' => '0',
+  'module' => 'system',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '-20',
-  'depth' => '1',
+  'weight' => '0',
+  'depth' => '3',
   'customized' => '0',
-  'p1' => '243',
-  'p2' => '0',
-  'p3' => '0',
+  'p1' => '1',
+  'p2' => '175',
+  'p3' => '373',
   'p4' => '0',
   'p5' => '0',
   'p6' => '0',
@@ -29509,24 +32194,24 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'shortcut-set-1',
-  'mlid' => '244',
-  'plid' => '0',
-  'link_path' => 'admin/content',
-  'router_path' => 'admin/content',
-  'link_title' => 'Find content',
+  'menu_name' => 'management',
+  'mlid' => '374',
+  'plid' => '175',
+  'link_path' => 'admin/help/forum',
+  'router_path' => 'admin/help/forum',
+  'link_title' => 'forum',
   'options' => 'a:0:{}',
-  'module' => 'menu',
-  'hidden' => '0',
+  'module' => 'system',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '-19',
-  'depth' => '1',
+  'weight' => '0',
+  'depth' => '3',
   'customized' => '0',
-  'p1' => '244',
-  'p2' => '0',
-  'p3' => '0',
+  'p1' => '1',
+  'p2' => '175',
+  'p3' => '374',
   'p4' => '0',
   'p5' => '0',
   'p6' => '0',
@@ -29538,24 +32223,24 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'main-menu',
-  'mlid' => '245',
-  'plid' => '0',
-  'link_path' => '<front>',
-  'router_path' => '',
-  'link_title' => 'Home',
+  'menu_name' => 'management',
+  'mlid' => '375',
+  'plid' => '175',
+  'link_path' => 'admin/help/locale',
+  'router_path' => 'admin/help/locale',
+  'link_title' => 'locale',
   'options' => 'a:0:{}',
-  'module' => 'menu',
-  'hidden' => '0',
-  'external' => '1',
+  'module' => 'system',
+  'hidden' => '-1',
+  'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '1',
+  'depth' => '3',
   'customized' => '0',
-  'p1' => '245',
-  'p2' => '0',
-  'p3' => '0',
+  'p1' => '1',
+  'p2' => '175',
+  'p3' => '375',
   'p4' => '0',
   'p5' => '0',
   'p6' => '0',
@@ -29567,24 +32252,24 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'navigation',
-  'mlid' => '246',
-  'plid' => '6',
-  'link_path' => 'node/add/article',
-  'router_path' => 'node/add/article',
-  'link_title' => 'Article',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:89:"Use <em>articles</em> for time-sensitive content like news, press releases or blog posts.";}}',
+  'menu_name' => 'management',
+  'mlid' => '378',
+  'plid' => '175',
+  'link_path' => 'admin/help/statistics',
+  'router_path' => 'admin/help/statistics',
+  'link_title' => 'statistics',
+  'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '2',
+  'depth' => '3',
   'customized' => '0',
-  'p1' => '6',
-  'p2' => '246',
-  'p3' => '0',
+  'p1' => '1',
+  'p2' => '175',
+  'p3' => '378',
   'p4' => '0',
   'p5' => '0',
   'p6' => '0',
@@ -29596,24 +32281,24 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'navigation',
-  'mlid' => '247',
-  'plid' => '6',
-  'link_path' => 'node/add/page',
-  'router_path' => 'node/add/page',
-  'link_title' => 'Basic page',
-  'options' => "a:1:{s:10:\"attributes\";a:1:{s:5:\"title\";s:77:\"Use <em>basic pages</em> for your static content, such as an 'About us' page.\";}}",
+  'menu_name' => 'management',
+  'mlid' => '380',
+  'plid' => '175',
+  'link_path' => 'admin/help/tracker',
+  'router_path' => 'admin/help/tracker',
+  'link_title' => 'tracker',
+  'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '2',
+  'depth' => '3',
   'customized' => '0',
-  'p1' => '6',
-  'p2' => '247',
-  'p3' => '0',
+  'p1' => '1',
+  'p2' => '175',
+  'p3' => '380',
   'p4' => '0',
   'p5' => '0',
   'p6' => '0',
@@ -29626,11 +32311,11 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '248',
+  'mlid' => '381',
   'plid' => '175',
-  'link_path' => 'admin/help/toolbar',
-  'router_path' => 'admin/help/toolbar',
-  'link_title' => 'toolbar',
+  'link_path' => 'admin/help/translation',
+  'router_path' => 'admin/help/translation',
+  'link_title' => 'translation',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
@@ -29642,7 +32327,7 @@
   'customized' => '0',
   'p1' => '1',
   'p2' => '175',
-  'p3' => '248',
+  'p3' => '381',
   'p4' => '0',
   'p5' => '0',
   'p6' => '0',
@@ -29654,25 +32339,25 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'management',
-  'mlid' => '287',
-  'plid' => '18',
-  'link_path' => 'admin/reports/updates',
-  'router_path' => 'admin/reports/updates',
-  'link_title' => 'Available updates',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:82:"Get a status report about available updates for your installed modules and themes.";}}',
+  'menu_name' => 'navigation',
+  'mlid' => '383',
+  'plid' => '347',
+  'link_path' => 'aggregator/categories/%/categorize',
+  'router_path' => 'aggregator/categories/%/categorize',
+  'link_title' => 'Categorize',
+  'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '-50',
-  'depth' => '3',
+  'weight' => '0',
+  'depth' => '4',
   'customized' => '0',
-  'p1' => '1',
-  'p2' => '18',
-  'p3' => '287',
-  'p4' => '0',
+  'p1' => '338',
+  'p2' => '342',
+  'p3' => '347',
+  'p4' => '383',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -29683,25 +32368,25 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'management',
-  'mlid' => '288',
-  'plid' => '15',
-  'link_path' => 'admin/modules/install',
-  'router_path' => 'admin/modules/install',
-  'link_title' => 'Install new module',
+  'menu_name' => 'navigation',
+  'mlid' => '384',
+  'plid' => '348',
+  'link_path' => 'aggregator/sources/%/categorize',
+  'router_path' => 'aggregator/sources/%/categorize',
+  'link_title' => 'Categorize',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '25',
-  'depth' => '3',
+  'weight' => '0',
+  'depth' => '4',
   'customized' => '0',
-  'p1' => '1',
-  'p2' => '15',
-  'p3' => '288',
-  'p4' => '0',
+  'p1' => '338',
+  'p2' => '346',
+  'p3' => '348',
+  'p4' => '384',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -29712,25 +32397,25 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'management',
-  'mlid' => '289',
-  'plid' => '7',
-  'link_path' => 'admin/appearance/install',
-  'router_path' => 'admin/appearance/install',
-  'link_title' => 'Install new theme',
+  'menu_name' => 'navigation',
+  'mlid' => '385',
+  'plid' => '347',
+  'link_path' => 'aggregator/categories/%/configure',
+  'router_path' => 'aggregator/categories/%/configure',
+  'link_title' => 'Configure',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '25',
-  'depth' => '3',
+  'weight' => '1',
+  'depth' => '4',
   'customized' => '0',
-  'p1' => '1',
-  'p2' => '7',
-  'p3' => '289',
-  'p4' => '0',
+  'p1' => '338',
+  'p2' => '342',
+  'p3' => '347',
+  'p4' => '385',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -29741,25 +32426,25 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'management',
-  'mlid' => '290',
-  'plid' => '15',
-  'link_path' => 'admin/modules/update',
-  'router_path' => 'admin/modules/update',
-  'link_title' => 'Update',
+  'menu_name' => 'navigation',
+  'mlid' => '386',
+  'plid' => '348',
+  'link_path' => 'aggregator/sources/%/configure',
+  'router_path' => 'aggregator/sources/%/configure',
+  'link_title' => 'Configure',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '10',
-  'depth' => '3',
+  'weight' => '1',
+  'depth' => '4',
   'customized' => '0',
-  'p1' => '1',
-  'p2' => '15',
-  'p3' => '290',
-  'p4' => '0',
+  'p1' => '338',
+  'p2' => '346',
+  'p3' => '348',
+  'p4' => '386',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -29770,25 +32455,25 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'management',
-  'mlid' => '291',
-  'plid' => '7',
-  'link_path' => 'admin/appearance/update',
-  'router_path' => 'admin/appearance/update',
-  'link_title' => 'Update',
+  'menu_name' => 'navigation',
+  'mlid' => '387',
+  'plid' => '347',
+  'link_path' => 'aggregator/categories/%/view',
+  'router_path' => 'aggregator/categories/%/view',
+  'link_title' => 'View',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '10',
-  'depth' => '3',
+  'weight' => '-10',
+  'depth' => '4',
   'customized' => '0',
-  'p1' => '1',
-  'p2' => '7',
-  'p3' => '291',
-  'p4' => '0',
+  'p1' => '338',
+  'p2' => '342',
+  'p3' => '347',
+  'p4' => '387',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -29799,25 +32484,25 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'management',
-  'mlid' => '292',
-  'plid' => '175',
-  'link_path' => 'admin/help/update',
-  'router_path' => 'admin/help/update',
-  'link_title' => 'update',
+  'menu_name' => 'navigation',
+  'mlid' => '388',
+  'plid' => '348',
+  'link_path' => 'aggregator/sources/%/view',
+  'router_path' => 'aggregator/sources/%/view',
+  'link_title' => 'View',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '3',
+  'weight' => '-10',
+  'depth' => '4',
   'customized' => '0',
-  'p1' => '1',
-  'p2' => '175',
-  'p3' => '292',
-  'p4' => '0',
+  'p1' => '338',
+  'p2' => '346',
+  'p3' => '348',
+  'p4' => '388',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -29829,24 +32514,24 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '293',
-  'plid' => '287',
-  'link_path' => 'admin/reports/updates/list',
-  'router_path' => 'admin/reports/updates/list',
-  'link_title' => 'List',
+  'mlid' => '389',
+  'plid' => '353',
+  'link_path' => 'admin/structure/contact/add',
+  'router_path' => 'admin/structure/contact/add',
+  'link_title' => 'Add category',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '0',
+  'weight' => '1',
   'depth' => '4',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '18',
-  'p3' => '287',
-  'p4' => '293',
+  'p2' => '20',
+  'p3' => '353',
+  'p4' => '389',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -29858,24 +32543,24 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '294',
-  'plid' => '287',
-  'link_path' => 'admin/reports/updates/settings',
-  'router_path' => 'admin/reports/updates/settings',
-  'link_title' => 'Settings',
-  'options' => 'a:0:{}',
+  'mlid' => '391',
+  'plid' => '18',
+  'link_path' => 'admin/reports/access/%',
+  'router_path' => 'admin/reports/access/%',
+  'link_title' => 'Details',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:16:"View access log.";}}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '50',
-  'depth' => '4',
+  'weight' => '0',
+  'depth' => '3',
   'customized' => '0',
   'p1' => '1',
   'p2' => '18',
-  'p3' => '287',
-  'p4' => '294',
+  'p3' => '391',
+  'p4' => '0',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -29887,24 +32572,24 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '295',
-  'plid' => '287',
-  'link_path' => 'admin/reports/updates/install',
-  'router_path' => 'admin/reports/updates/install',
-  'link_title' => 'Install new module or theme',
-  'options' => 'a:0:{}',
+  'mlid' => '392',
+  'plid' => '33',
+  'link_path' => 'admin/config/content/email',
+  'router_path' => 'admin/config/content/email',
+  'link_title' => 'Email Contact Form Settings',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:57:"Administer flood control settings for email contact forms";}}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '25',
+  'weight' => '0',
   'depth' => '4',
-  'customized' => '0',
-  'p1' => '1',
-  'p2' => '18',
-  'p3' => '287',
-  'p4' => '295',
+  'customized' => '0',
+  'p1' => '1',
+  'p2' => '8',
+  'p3' => '33',
+  'p4' => '392',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -29916,24 +32601,24 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '296',
-  'plid' => '287',
-  'link_path' => 'admin/reports/updates/update',
-  'router_path' => 'admin/reports/updates/update',
-  'link_title' => 'Update',
-  'options' => 'a:0:{}',
+  'mlid' => '393',
+  'plid' => '60',
+  'link_path' => 'admin/config/services/aggregator',
+  'router_path' => 'admin/config/services/aggregator',
+  'link_title' => 'Feed aggregator',
+  'options' => "a:1:{s:10:\"attributes\";a:1:{s:5:\"title\";s:116:\"Configure which content your site aggregates from other sites, how often it polls them, and how they're categorized.\";}}",
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
-  'has_children' => '0',
+  'has_children' => '1',
   'expanded' => '0',
   'weight' => '10',
   'depth' => '4',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '18',
-  'p3' => '287',
-  'p4' => '296',
+  'p2' => '8',
+  'p3' => '60',
+  'p4' => '393',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -29945,25 +32630,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '297',
-  'plid' => '212',
-  'link_path' => 'admin/structure/taxonomy/%/display',
-  'router_path' => 'admin/structure/taxonomy/%/display',
-  'link_title' => 'Manage display',
-  'options' => 'a:0:{}',
+  'mlid' => '395',
+  'plid' => '48',
+  'link_path' => 'admin/config/regional/language',
+  'router_path' => 'admin/config/regional/language',
+  'link_title' => 'Languages',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:55:"Configure languages for content and the user interface.";}}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
-  'has_children' => '0',
+  'has_children' => '1',
   'expanded' => '0',
-  'weight' => '2',
-  'depth' => '5',
+  'weight' => '-10',
+  'depth' => '4',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '20',
-  'p3' => '180',
-  'p4' => '212',
-  'p5' => '297',
+  'p2' => '8',
+  'p3' => '48',
+  'p4' => '395',
+  'p5' => '0',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -29974,25 +32659,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '298',
-  'plid' => '66',
-  'link_path' => 'admin/config/people/accounts/display',
-  'router_path' => 'admin/config/people/accounts/display',
-  'link_title' => 'Manage display',
+  'mlid' => '396',
+  'plid' => '351',
+  'link_path' => 'admin/content/book/list',
+  'router_path' => 'admin/content/book/list',
+  'link_title' => 'List',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '2',
-  'depth' => '5',
+  'weight' => '0',
+  'depth' => '4',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '8',
-  'p3' => '45',
-  'p4' => '66',
-  'p5' => '298',
+  'p2' => '9',
+  'p3' => '351',
+  'p4' => '396',
+  'p5' => '0',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -30003,25 +32688,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '299',
-  'plid' => '212',
-  'link_path' => 'admin/structure/taxonomy/%/fields',
-  'router_path' => 'admin/structure/taxonomy/%/fields',
-  'link_title' => 'Manage fields',
+  'mlid' => '398',
+  'plid' => '356',
+  'link_path' => 'admin/structure/forum/list',
+  'router_path' => 'admin/structure/forum/list',
+  'link_title' => 'List',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
-  'has_children' => '1',
+  'has_children' => '0',
   'expanded' => '0',
-  'weight' => '1',
-  'depth' => '5',
+  'weight' => '-10',
+  'depth' => '4',
   'customized' => '0',
   'p1' => '1',
   'p2' => '20',
-  'p3' => '180',
-  'p4' => '212',
-  'p5' => '299',
+  'p3' => '356',
+  'p4' => '398',
+  'p5' => '0',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -30031,26 +32716,26 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'management',
-  'mlid' => '300',
-  'plid' => '66',
-  'link_path' => 'admin/config/people/accounts/fields',
-  'router_path' => 'admin/config/people/accounts/fields',
-  'link_title' => 'Manage fields',
+  'menu_name' => 'navigation',
+  'mlid' => '399',
+  'plid' => '358',
+  'link_path' => 'node/%/outline/remove',
+  'router_path' => 'node/%/outline/remove',
+  'link_title' => 'Remove from outline',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
-  'has_children' => '1',
+  'has_children' => '0',
   'expanded' => '0',
-  'weight' => '1',
-  'depth' => '5',
+  'weight' => '0',
+  'depth' => '3',
   'customized' => '0',
-  'p1' => '1',
-  'p2' => '8',
-  'p3' => '45',
-  'p4' => '66',
-  'p5' => '300',
+  'p1' => '5',
+  'p2' => '358',
+  'p3' => '399',
+  'p4' => '0',
+  'p5' => '0',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -30061,26 +32746,26 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '301',
-  'plid' => '297',
-  'link_path' => 'admin/structure/taxonomy/%/display/default',
-  'router_path' => 'admin/structure/taxonomy/%/display/default',
-  'link_title' => 'Default',
+  'mlid' => '400',
+  'plid' => '351',
+  'link_path' => 'admin/content/book/settings',
+  'router_path' => 'admin/content/book/settings',
+  'link_title' => 'Settings',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '-10',
-  'depth' => '6',
+  'weight' => '8',
+  'depth' => '4',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '20',
-  'p3' => '180',
-  'p4' => '212',
-  'p5' => '297',
-  'p6' => '301',
+  'p2' => '9',
+  'p3' => '351',
+  'p4' => '400',
+  'p5' => '0',
+  'p6' => '0',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -30090,26 +32775,26 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '302',
-  'plid' => '298',
-  'link_path' => 'admin/config/people/accounts/display/default',
-  'router_path' => 'admin/config/people/accounts/display/default',
-  'link_title' => 'Default',
-  'options' => 'a:0:{}',
+  'mlid' => '402',
+  'plid' => '53',
+  'link_path' => 'admin/config/system/statistics',
+  'router_path' => 'admin/config/system/statistics',
+  'link_title' => 'Statistics',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:68:"Control details about what and how your site logs access statistics.";}}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '-10',
-  'depth' => '6',
+  'weight' => '-15',
+  'depth' => '4',
   'customized' => '0',
   'p1' => '1',
   'p2' => '8',
-  'p3' => '45',
-  'p4' => '66',
-  'p5' => '298',
-  'p6' => '302',
+  'p3' => '53',
+  'p4' => '402',
+  'p5' => '0',
+  'p6' => '0',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -30118,26 +32803,26 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'management',
-  'mlid' => '303',
-  'plid' => '114',
-  'link_path' => 'admin/structure/types/manage/%/display',
-  'router_path' => 'admin/structure/types/manage/%/display',
-  'link_title' => 'Manage display',
+  'menu_name' => 'navigation',
+  'mlid' => '411',
+  'plid' => '364',
+  'link_path' => 'user/%/track/content',
+  'router_path' => 'user/%/track/content',
+  'link_title' => 'Track content',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '2',
-  'depth' => '5',
+  'weight' => '0',
+  'depth' => '3',
   'customized' => '0',
-  'p1' => '1',
-  'p2' => '20',
-  'p3' => '34',
-  'p4' => '114',
-  'p5' => '303',
+  'p1' => '16',
+  'p2' => '364',
+  'p3' => '411',
+  'p4' => '0',
+  'p5' => '0',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -30147,26 +32832,26 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'management',
-  'mlid' => '304',
-  'plid' => '114',
-  'link_path' => 'admin/structure/types/manage/%/fields',
-  'router_path' => 'admin/structure/types/manage/%/fields',
-  'link_title' => 'Manage fields',
+  'menu_name' => 'navigation',
+  'mlid' => '412',
+  'plid' => '364',
+  'link_path' => 'user/%/track/navigation',
+  'router_path' => 'user/%/track/navigation',
+  'link_title' => 'Track page visits',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
-  'has_children' => '1',
+  'has_children' => '0',
   'expanded' => '0',
-  'weight' => '1',
-  'depth' => '5',
+  'weight' => '2',
+  'depth' => '3',
   'customized' => '0',
-  'p1' => '1',
-  'p2' => '20',
-  'p3' => '34',
-  'p4' => '114',
-  'p5' => '304',
+  'p1' => '16',
+  'p2' => '364',
+  'p3' => '412',
+  'p4' => '0',
+  'p5' => '0',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -30177,26 +32862,26 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '305',
-  'plid' => '297',
-  'link_path' => 'admin/structure/taxonomy/%/display/full',
-  'router_path' => 'admin/structure/taxonomy/%/display/full',
-  'link_title' => 'Taxonomy term page',
-  'options' => 'a:0:{}',
+  'mlid' => '413',
+  'plid' => '48',
+  'link_path' => 'admin/config/regional/translate',
+  'router_path' => 'admin/config/regional/translate',
+  'link_title' => 'Translate interface',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:59:"Translate the built in interface and optionally other text.";}}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
-  'has_children' => '0',
+  'has_children' => '1',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '6',
+  'weight' => '-5',
+  'depth' => '4',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '20',
-  'p3' => '180',
-  'p4' => '212',
-  'p5' => '297',
-  'p6' => '305',
+  'p2' => '8',
+  'p3' => '48',
+  'p4' => '413',
+  'p5' => '0',
+  'p6' => '0',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -30206,26 +32891,26 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '306',
-  'plid' => '298',
-  'link_path' => 'admin/config/people/accounts/display/full',
-  'router_path' => 'admin/config/people/accounts/display/full',
-  'link_title' => 'User account',
+  'mlid' => '417',
+  'plid' => '356',
+  'link_path' => 'admin/structure/forum/settings',
+  'router_path' => 'admin/structure/forum/settings',
+  'link_title' => 'Settings',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '6',
+  'weight' => '5',
+  'depth' => '4',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '8',
-  'p3' => '45',
-  'p4' => '66',
-  'p5' => '298',
-  'p6' => '306',
+  'p2' => '20',
+  'p3' => '356',
+  'p4' => '417',
+  'p5' => '0',
+  'p6' => '0',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -30235,26 +32920,26 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '307',
-  'plid' => '299',
-  'link_path' => 'admin/structure/taxonomy/%/fields/%',
-  'router_path' => 'admin/structure/taxonomy/%/fields/%',
-  'link_title' => '',
+  'mlid' => '418',
+  'plid' => '395',
+  'link_path' => 'admin/config/regional/language/add',
+  'router_path' => 'admin/config/regional/language/add',
+  'link_title' => 'Add language',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '6',
+  'weight' => '5',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '20',
-  'p3' => '180',
-  'p4' => '212',
-  'p5' => '299',
-  'p6' => '307',
+  'p2' => '8',
+  'p3' => '48',
+  'p4' => '395',
+  'p5' => '418',
+  'p6' => '0',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -30264,11 +32949,11 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '308',
-  'plid' => '300',
-  'link_path' => 'admin/config/people/accounts/fields/%',
-  'router_path' => 'admin/config/people/accounts/fields/%',
-  'link_title' => '',
+  'mlid' => '421',
+  'plid' => '353',
+  'link_path' => 'admin/structure/contact/delete/%',
+  'router_path' => 'admin/structure/contact/delete/%',
+  'link_title' => 'Delete contact',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '0',
@@ -30276,14 +32961,14 @@
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '6',
+  'depth' => '4',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '8',
-  'p3' => '45',
-  'p4' => '66',
-  'p5' => '300',
-  'p6' => '308',
+  'p2' => '20',
+  'p3' => '353',
+  'p4' => '421',
+  'p5' => '0',
+  'p6' => '0',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -30293,26 +32978,26 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '309',
-  'plid' => '303',
-  'link_path' => 'admin/structure/types/manage/%/display/default',
-  'router_path' => 'admin/structure/types/manage/%/display/default',
-  'link_title' => 'Default',
+  'mlid' => '422',
+  'plid' => '395',
+  'link_path' => 'admin/config/regional/language/configure',
+  'router_path' => 'admin/config/regional/language/configure',
+  'link_title' => 'Detection and selection',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '-10',
-  'depth' => '6',
+  'weight' => '10',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '20',
-  'p3' => '34',
-  'p4' => '114',
-  'p5' => '303',
-  'p6' => '309',
+  'p2' => '8',
+  'p3' => '48',
+  'p4' => '395',
+  'p5' => '422',
+  'p6' => '0',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -30322,26 +33007,26 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '310',
-  'plid' => '303',
-  'link_path' => 'admin/structure/types/manage/%/display/full',
-  'router_path' => 'admin/structure/types/manage/%/display/full',
-  'link_title' => 'Full content',
+  'mlid' => '423',
+  'plid' => '353',
+  'link_path' => 'admin/structure/contact/edit/%',
+  'router_path' => 'admin/structure/contact/edit/%',
+  'link_title' => 'Edit contact category',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '6',
+  'depth' => '4',
   'customized' => '0',
   'p1' => '1',
   'p2' => '20',
-  'p3' => '34',
-  'p4' => '114',
-  'p5' => '303',
-  'p6' => '310',
+  'p3' => '353',
+  'p4' => '423',
+  'p5' => '0',
+  'p6' => '0',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -30351,26 +33036,26 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '311',
-  'plid' => '303',
-  'link_path' => 'admin/structure/types/manage/%/display/rss',
-  'router_path' => 'admin/structure/types/manage/%/display/rss',
-  'link_title' => 'RSS',
+  'mlid' => '424',
+  'plid' => '413',
+  'link_path' => 'admin/config/regional/translate/export',
+  'router_path' => 'admin/config/regional/translate/export',
+  'link_title' => 'Export',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '2',
-  'depth' => '6',
+  'weight' => '30',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '20',
-  'p3' => '34',
-  'p4' => '114',
-  'p5' => '303',
-  'p6' => '311',
+  'p2' => '8',
+  'p3' => '48',
+  'p4' => '413',
+  'p5' => '424',
+  'p6' => '0',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -30380,26 +33065,26 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '312',
-  'plid' => '303',
-  'link_path' => 'admin/structure/types/manage/%/display/search_index',
-  'router_path' => 'admin/structure/types/manage/%/display/search_index',
-  'link_title' => 'Search index',
+  'mlid' => '425',
+  'plid' => '413',
+  'link_path' => 'admin/config/regional/translate/import',
+  'router_path' => 'admin/config/regional/translate/import',
+  'link_title' => 'Import',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '3',
-  'depth' => '6',
+  'weight' => '20',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '20',
-  'p3' => '34',
-  'p4' => '114',
-  'p5' => '303',
-  'p6' => '312',
+  'p2' => '8',
+  'p3' => '48',
+  'p4' => '413',
+  'p5' => '425',
+  'p6' => '0',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -30409,26 +33094,26 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '313',
-  'plid' => '303',
-  'link_path' => 'admin/structure/types/manage/%/display/search_result',
-  'router_path' => 'admin/structure/types/manage/%/display/search_result',
-  'link_title' => 'Search result highlighting input',
+  'mlid' => '426',
+  'plid' => '393',
+  'link_path' => 'admin/config/services/aggregator/list',
+  'router_path' => 'admin/config/services/aggregator/list',
+  'link_title' => 'List',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '4',
-  'depth' => '6',
+  'weight' => '-10',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '20',
-  'p3' => '34',
-  'p4' => '114',
-  'p5' => '303',
-  'p6' => '313',
+  'p2' => '8',
+  'p3' => '60',
+  'p4' => '393',
+  'p5' => '426',
+  'p6' => '0',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -30438,26 +33123,26 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '314',
-  'plid' => '303',
-  'link_path' => 'admin/structure/types/manage/%/display/teaser',
-  'router_path' => 'admin/structure/types/manage/%/display/teaser',
-  'link_title' => 'Teaser',
+  'mlid' => '427',
+  'plid' => '395',
+  'link_path' => 'admin/config/regional/language/overview',
+  'router_path' => 'admin/config/regional/language/overview',
+  'link_title' => 'List',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '1',
-  'depth' => '6',
+  'weight' => '0',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '20',
-  'p3' => '34',
-  'p4' => '114',
-  'p5' => '303',
-  'p6' => '314',
+  'p2' => '8',
+  'p3' => '48',
+  'p4' => '395',
+  'p5' => '427',
+  'p6' => '0',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -30467,26 +33152,26 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '315',
-  'plid' => '304',
-  'link_path' => 'admin/structure/types/manage/%/fields/%',
-  'router_path' => 'admin/structure/types/manage/%/fields/%',
-  'link_title' => '',
-  'options' => 'a:0:{}',
+  'mlid' => '429',
+  'plid' => '74',
+  'link_path' => 'admin/config/regional/date-time/locale',
+  'router_path' => 'admin/config/regional/date-time/locale',
+  'link_title' => 'Localize',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:38:"Configure date formats for each locale";}}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
-  'has_children' => '0',
+  'has_children' => '1',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '6',
+  'weight' => '-8',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '20',
-  'p3' => '34',
-  'p4' => '114',
-  'p5' => '304',
-  'p6' => '315',
+  'p2' => '8',
+  'p3' => '48',
+  'p4' => '74',
+  'p5' => '429',
+  'p6' => '0',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -30496,27 +33181,27 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '316',
-  'plid' => '307',
-  'link_path' => 'admin/structure/taxonomy/%/fields/%/delete',
-  'router_path' => 'admin/structure/taxonomy/%/fields/%/delete',
-  'link_title' => 'Delete',
+  'mlid' => '430',
+  'plid' => '413',
+  'link_path' => 'admin/config/regional/translate/overview',
+  'router_path' => 'admin/config/regional/translate/overview',
+  'link_title' => 'Overview',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '10',
-  'depth' => '7',
+  'weight' => '0',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '20',
-  'p3' => '180',
-  'p4' => '212',
-  'p5' => '299',
-  'p6' => '307',
-  'p7' => '316',
+  'p2' => '8',
+  'p3' => '48',
+  'p4' => '413',
+  'p5' => '430',
+  'p6' => '0',
+  'p7' => '0',
   'p8' => '0',
   'p9' => '0',
   'updated' => '0',
@@ -30525,27 +33210,27 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '317',
-  'plid' => '307',
-  'link_path' => 'admin/structure/taxonomy/%/fields/%/edit',
-  'router_path' => 'admin/structure/taxonomy/%/fields/%/edit',
-  'link_title' => 'Edit',
-  'options' => 'a:0:{}',
+  'mlid' => '432',
+  'plid' => '393',
+  'link_path' => 'admin/config/services/aggregator/settings',
+  'router_path' => 'admin/config/services/aggregator/settings',
+  'link_title' => 'Settings',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:129:"Configure the behavior of the feed aggregator, including when to discard feed items and how to present feed items and categories.";}}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '7',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '20',
-  'p3' => '180',
-  'p4' => '212',
-  'p5' => '299',
-  'p6' => '307',
-  'p7' => '317',
+  'p2' => '8',
+  'p3' => '60',
+  'p4' => '393',
+  'p5' => '432',
+  'p6' => '0',
+  'p7' => '0',
   'p8' => '0',
   'p9' => '0',
   'updated' => '0',
@@ -30554,27 +33239,27 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '318',
-  'plid' => '307',
-  'link_path' => 'admin/structure/taxonomy/%/fields/%/field-settings',
-  'router_path' => 'admin/structure/taxonomy/%/fields/%/field-settings',
-  'link_title' => 'Field settings',
+  'mlid' => '433',
+  'plid' => '413',
+  'link_path' => 'admin/config/regional/translate/translate',
+  'router_path' => 'admin/config/regional/translate/translate',
+  'link_title' => 'Translate',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '7',
+  'weight' => '10',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '20',
-  'p3' => '180',
-  'p4' => '212',
-  'p5' => '299',
-  'p6' => '307',
-  'p7' => '318',
+  'p2' => '8',
+  'p3' => '48',
+  'p4' => '413',
+  'p5' => '433',
+  'p6' => '0',
+  'p7' => '0',
   'p8' => '0',
   'p9' => '0',
   'updated' => '0',
@@ -30583,11 +33268,11 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '319',
-  'plid' => '307',
-  'link_path' => 'admin/structure/taxonomy/%/fields/%/widget-type',
-  'router_path' => 'admin/structure/taxonomy/%/fields/%/widget-type',
-  'link_title' => 'Widget type',
+  'mlid' => '435',
+  'plid' => '356',
+  'link_path' => 'admin/structure/forum/add/container',
+  'router_path' => 'admin/structure/forum/add/container',
+  'link_title' => 'Add container',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
@@ -30595,15 +33280,15 @@
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '7',
+  'depth' => '4',
   'customized' => '0',
   'p1' => '1',
   'p2' => '20',
-  'p3' => '180',
-  'p4' => '212',
-  'p5' => '299',
-  'p6' => '307',
-  'p7' => '319',
+  'p3' => '356',
+  'p4' => '435',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
   'p8' => '0',
   'p9' => '0',
   'updated' => '0',
@@ -30612,27 +33297,27 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '320',
-  'plid' => '308',
-  'link_path' => 'admin/config/people/accounts/fields/%/delete',
-  'router_path' => 'admin/config/people/accounts/fields/%/delete',
-  'link_title' => 'Delete',
+  'mlid' => '436',
+  'plid' => '356',
+  'link_path' => 'admin/structure/forum/add/forum',
+  'router_path' => 'admin/structure/forum/add/forum',
+  'link_title' => 'Add forum',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '10',
-  'depth' => '7',
+  'weight' => '0',
+  'depth' => '4',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '8',
-  'p3' => '45',
-  'p4' => '66',
-  'p5' => '300',
-  'p6' => '308',
-  'p7' => '320',
+  'p2' => '20',
+  'p3' => '356',
+  'p4' => '436',
+  'p5' => '0',
+  'p6' => '0',
+  'p7' => '0',
   'p8' => '0',
   'p9' => '0',
   'updated' => '0',
@@ -30641,11 +33326,11 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '321',
-  'plid' => '308',
-  'link_path' => 'admin/config/people/accounts/fields/%/edit',
-  'router_path' => 'admin/config/people/accounts/fields/%/edit',
-  'link_title' => 'Edit',
+  'mlid' => '437',
+  'plid' => '393',
+  'link_path' => 'admin/config/services/aggregator/add/category',
+  'router_path' => 'admin/config/services/aggregator/add/category',
+  'link_title' => 'Add category',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
@@ -30653,15 +33338,15 @@
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '7',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
   'p2' => '8',
-  'p3' => '45',
-  'p4' => '66',
-  'p5' => '300',
-  'p6' => '308',
-  'p7' => '321',
+  'p3' => '60',
+  'p4' => '393',
+  'p5' => '437',
+  'p6' => '0',
+  'p7' => '0',
   'p8' => '0',
   'p9' => '0',
   'updated' => '0',
@@ -30670,11 +33355,11 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '322',
-  'plid' => '308',
-  'link_path' => 'admin/config/people/accounts/fields/%/field-settings',
-  'router_path' => 'admin/config/people/accounts/fields/%/field-settings',
-  'link_title' => 'Field settings',
+  'mlid' => '438',
+  'plid' => '393',
+  'link_path' => 'admin/config/services/aggregator/add/feed',
+  'router_path' => 'admin/config/services/aggregator/add/feed',
+  'link_title' => 'Add feed',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
@@ -30682,15 +33367,15 @@
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '7',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
   'p2' => '8',
-  'p3' => '45',
-  'p4' => '66',
-  'p5' => '300',
-  'p6' => '308',
-  'p7' => '322',
+  'p3' => '60',
+  'p4' => '393',
+  'p5' => '438',
+  'p6' => '0',
+  'p7' => '0',
   'p8' => '0',
   'p9' => '0',
   'updated' => '0',
@@ -30699,27 +33384,27 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '323',
-  'plid' => '308',
-  'link_path' => 'admin/config/people/accounts/fields/%/widget-type',
-  'router_path' => 'admin/config/people/accounts/fields/%/widget-type',
-  'link_title' => 'Widget type',
+  'mlid' => '440',
+  'plid' => '395',
+  'link_path' => 'admin/config/regional/language/delete/%',
+  'router_path' => 'admin/config/regional/language/delete/%',
+  'link_title' => 'Confirm',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '7',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
   'p2' => '8',
-  'p3' => '45',
-  'p4' => '66',
-  'p5' => '300',
-  'p6' => '308',
-  'p7' => '323',
+  'p3' => '48',
+  'p4' => '395',
+  'p5' => '440',
+  'p6' => '0',
+  'p7' => '0',
   'p8' => '0',
   'p9' => '0',
   'updated' => '0',
@@ -30728,26 +33413,26 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '324',
-  'plid' => '161',
-  'link_path' => 'admin/structure/types/manage/%/comment/display/default',
-  'router_path' => 'admin/structure/types/manage/%/comment/display/default',
-  'link_title' => 'Default',
+  'mlid' => '441',
+  'plid' => '413',
+  'link_path' => 'admin/config/regional/translate/delete/%',
+  'router_path' => 'admin/config/regional/translate/delete/%',
+  'link_title' => 'Delete string',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '-10',
-  'depth' => '6',
+  'weight' => '0',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '20',
-  'p3' => '34',
-  'p4' => '114',
-  'p5' => '161',
-  'p6' => '324',
+  'p2' => '8',
+  'p3' => '48',
+  'p4' => '413',
+  'p5' => '441',
+  'p6' => '0',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -30757,26 +33442,26 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '325',
-  'plid' => '161',
-  'link_path' => 'admin/structure/types/manage/%/comment/display/full',
-  'router_path' => 'admin/structure/types/manage/%/comment/display/full',
-  'link_title' => 'Full comment',
+  'mlid' => '442',
+  'plid' => '356',
+  'link_path' => 'admin/structure/forum/edit/container/%',
+  'router_path' => 'admin/structure/forum/edit/container/%',
+  'link_title' => 'Edit container',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '6',
+  'depth' => '4',
   'customized' => '0',
   'p1' => '1',
   'p2' => '20',
-  'p3' => '34',
-  'p4' => '114',
-  'p5' => '161',
-  'p6' => '325',
+  'p3' => '356',
+  'p4' => '442',
+  'p5' => '0',
+  'p6' => '0',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -30786,11 +33471,11 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '326',
-  'plid' => '162',
-  'link_path' => 'admin/structure/types/manage/%/comment/fields/%',
-  'router_path' => 'admin/structure/types/manage/%/comment/fields/%',
-  'link_title' => '',
+  'mlid' => '443',
+  'plid' => '356',
+  'link_path' => 'admin/structure/forum/edit/forum/%',
+  'router_path' => 'admin/structure/forum/edit/forum/%',
+  'link_title' => 'Edit forum',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '0',
@@ -30798,14 +33483,14 @@
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '6',
+  'depth' => '4',
   'customized' => '0',
   'p1' => '1',
   'p2' => '20',
-  'p3' => '34',
-  'p4' => '114',
-  'p5' => '162',
-  'p6' => '326',
+  'p3' => '356',
+  'p4' => '443',
+  'p5' => '0',
+  'p6' => '0',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -30815,27 +33500,27 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '327',
-  'plid' => '315',
-  'link_path' => 'admin/structure/types/manage/%/fields/%/delete',
-  'router_path' => 'admin/structure/types/manage/%/fields/%/delete',
-  'link_title' => 'Delete',
+  'mlid' => '444',
+  'plid' => '395',
+  'link_path' => 'admin/config/regional/language/edit/%',
+  'router_path' => 'admin/config/regional/language/edit/%',
+  'link_title' => 'Edit language',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '10',
-  'depth' => '7',
+  'weight' => '0',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '20',
-  'p3' => '34',
-  'p4' => '114',
-  'p5' => '304',
-  'p6' => '315',
-  'p7' => '327',
+  'p2' => '8',
+  'p3' => '48',
+  'p4' => '395',
+  'p5' => '444',
+  'p6' => '0',
+  'p7' => '0',
   'p8' => '0',
   'p9' => '0',
   'updated' => '0',
@@ -30844,27 +33529,27 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '328',
-  'plid' => '315',
-  'link_path' => 'admin/structure/types/manage/%/fields/%/edit',
-  'router_path' => 'admin/structure/types/manage/%/fields/%/edit',
-  'link_title' => 'Edit',
+  'mlid' => '445',
+  'plid' => '413',
+  'link_path' => 'admin/config/regional/translate/edit/%',
+  'router_path' => 'admin/config/regional/translate/edit/%',
+  'link_title' => 'Edit string',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '7',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '20',
-  'p3' => '34',
-  'p4' => '114',
-  'p5' => '304',
-  'p6' => '315',
-  'p7' => '328',
+  'p2' => '8',
+  'p3' => '48',
+  'p4' => '413',
+  'p5' => '445',
+  'p6' => '0',
+  'p7' => '0',
   'p8' => '0',
   'p9' => '0',
   'updated' => '0',
@@ -30873,11 +33558,11 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '329',
-  'plid' => '315',
-  'link_path' => 'admin/structure/types/manage/%/fields/%/field-settings',
-  'router_path' => 'admin/structure/types/manage/%/fields/%/field-settings',
-  'link_title' => 'Field settings',
+  'mlid' => '447',
+  'plid' => '393',
+  'link_path' => 'admin/config/services/aggregator/add/opml',
+  'router_path' => 'admin/config/services/aggregator/add/opml',
+  'link_title' => 'Import OPML',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
@@ -30885,15 +33570,15 @@
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '7',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '20',
-  'p3' => '34',
-  'p4' => '114',
-  'p5' => '304',
-  'p6' => '315',
-  'p7' => '329',
+  'p2' => '8',
+  'p3' => '60',
+  'p4' => '393',
+  'p5' => '447',
+  'p6' => '0',
+  'p7' => '0',
   'p8' => '0',
   'p9' => '0',
   'updated' => '0',
@@ -30902,27 +33587,27 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '330',
-  'plid' => '315',
-  'link_path' => 'admin/structure/types/manage/%/fields/%/widget-type',
-  'router_path' => 'admin/structure/types/manage/%/fields/%/widget-type',
-  'link_title' => 'Widget type',
+  'mlid' => '448',
+  'plid' => '393',
+  'link_path' => 'admin/config/services/aggregator/remove/%',
+  'router_path' => 'admin/config/services/aggregator/remove/%',
+  'link_title' => 'Remove items',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '7',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '20',
-  'p3' => '34',
-  'p4' => '114',
-  'p5' => '304',
-  'p6' => '315',
-  'p7' => '330',
+  'p2' => '8',
+  'p3' => '60',
+  'p4' => '393',
+  'p5' => '448',
+  'p6' => '0',
+  'p7' => '0',
   'p8' => '0',
   'p9' => '0',
   'updated' => '0',
@@ -30931,27 +33616,27 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '331',
-  'plid' => '326',
-  'link_path' => 'admin/structure/types/manage/%/comment/fields/%/delete',
-  'router_path' => 'admin/structure/types/manage/%/comment/fields/%/delete',
-  'link_title' => 'Delete',
+  'mlid' => '449',
+  'plid' => '422',
+  'link_path' => 'admin/config/regional/language/configure/session',
+  'router_path' => 'admin/config/regional/language/configure/session',
+  'link_title' => 'Session language detection configuration',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '10',
-  'depth' => '7',
+  'weight' => '0',
+  'depth' => '6',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '20',
-  'p3' => '34',
-  'p4' => '114',
-  'p5' => '162',
-  'p6' => '326',
-  'p7' => '331',
+  'p2' => '8',
+  'p3' => '48',
+  'p4' => '395',
+  'p5' => '422',
+  'p6' => '449',
+  'p7' => '0',
   'p8' => '0',
   'p9' => '0',
   'updated' => '0',
@@ -30960,11 +33645,11 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '332',
-  'plid' => '326',
-  'link_path' => 'admin/structure/types/manage/%/comment/fields/%/edit',
-  'router_path' => 'admin/structure/types/manage/%/comment/fields/%/edit',
-  'link_title' => 'Edit',
+  'mlid' => '451',
+  'plid' => '422',
+  'link_path' => 'admin/config/regional/language/configure/url',
+  'router_path' => 'admin/config/regional/language/configure/url',
+  'link_title' => 'URL language detection configuration',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
@@ -30972,15 +33657,15 @@
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '7',
+  'depth' => '6',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '20',
-  'p3' => '34',
-  'p4' => '114',
-  'p5' => '162',
-  'p6' => '326',
-  'p7' => '332',
+  'p2' => '8',
+  'p3' => '48',
+  'p4' => '395',
+  'p5' => '422',
+  'p6' => '451',
+  'p7' => '0',
   'p8' => '0',
   'p9' => '0',
   'updated' => '0',
@@ -30989,27 +33674,27 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '333',
-  'plid' => '326',
-  'link_path' => 'admin/structure/types/manage/%/comment/fields/%/field-settings',
-  'router_path' => 'admin/structure/types/manage/%/comment/fields/%/field-settings',
-  'link_title' => 'Field settings',
+  'mlid' => '452',
+  'plid' => '393',
+  'link_path' => 'admin/config/services/aggregator/update/%',
+  'router_path' => 'admin/config/services/aggregator/update/%',
+  'link_title' => 'Update items',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '7',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '20',
-  'p3' => '34',
-  'p4' => '114',
-  'p5' => '162',
-  'p6' => '326',
-  'p7' => '333',
+  'p2' => '8',
+  'p3' => '60',
+  'p4' => '393',
+  'p5' => '452',
+  'p6' => '0',
+  'p7' => '0',
   'p8' => '0',
   'p9' => '0',
   'updated' => '0',
@@ -31018,27 +33703,27 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '334',
-  'plid' => '326',
-  'link_path' => 'admin/structure/types/manage/%/comment/fields/%/widget-type',
-  'router_path' => 'admin/structure/types/manage/%/comment/fields/%/widget-type',
-  'link_title' => 'Widget type',
+  'mlid' => '458',
+  'plid' => '393',
+  'link_path' => 'admin/config/services/aggregator/edit/category/%',
+  'router_path' => 'admin/config/services/aggregator/edit/category/%',
+  'link_title' => 'Edit category',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '7',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '20',
-  'p3' => '34',
-  'p4' => '114',
-  'p5' => '162',
-  'p6' => '326',
-  'p7' => '334',
+  'p2' => '8',
+  'p3' => '60',
+  'p4' => '393',
+  'p5' => '458',
+  'p6' => '0',
+  'p7' => '0',
   'p8' => '0',
   'p9' => '0',
   'updated' => '0',
@@ -31046,26 +33731,26 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'navigation',
-  'mlid' => '335',
-  'plid' => '0',
-  'link_path' => 'blog',
-  'router_path' => 'blog',
-  'link_title' => 'Blogs',
+  'menu_name' => 'management',
+  'mlid' => '459',
+  'plid' => '393',
+  'link_path' => 'admin/config/services/aggregator/edit/feed/%',
+  'router_path' => 'admin/config/services/aggregator/edit/feed/%',
+  'link_title' => 'Edit feed',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '1',
+  'hidden' => '0',
   'external' => '0',
-  'has_children' => '1',
+  'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '1',
+  'depth' => '5',
   'customized' => '0',
-  'p1' => '335',
-  'p2' => '0',
-  'p3' => '0',
-  'p4' => '0',
-  'p5' => '0',
+  'p1' => '1',
+  'p2' => '8',
+  'p3' => '60',
+  'p4' => '393',
+  'p5' => '459',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -31075,27 +33760,27 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'navigation',
-  'mlid' => '336',
-  'plid' => '0',
-  'link_path' => 'book',
-  'router_path' => 'book',
-  'link_title' => 'Books',
-  'options' => 'a:0:{}',
+  'menu_name' => 'management',
+  'mlid' => '461',
+  'plid' => '429',
+  'link_path' => 'admin/config/regional/date-time/locale/%/edit',
+  'router_path' => 'admin/config/regional/date-time/locale/%/edit',
+  'link_title' => 'Localize date formats',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:38:"Configure date formats for each locale";}}',
   'module' => 'system',
-  'hidden' => '1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '1',
+  'depth' => '6',
   'customized' => '0',
-  'p1' => '336',
-  'p2' => '0',
-  'p3' => '0',
-  'p4' => '0',
-  'p5' => '0',
-  'p6' => '0',
+  'p1' => '1',
+  'p2' => '8',
+  'p3' => '48',
+  'p4' => '74',
+  'p5' => '429',
+  'p6' => '461',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -31104,27 +33789,27 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'navigation',
-  'mlid' => '337',
-  'plid' => '0',
-  'link_path' => 'contact',
-  'router_path' => 'contact',
-  'link_title' => 'Contact',
-  'options' => 'a:0:{}',
+  'menu_name' => 'management',
+  'mlid' => '463',
+  'plid' => '429',
+  'link_path' => 'admin/config/regional/date-time/locale/%/reset',
+  'router_path' => 'admin/config/regional/date-time/locale/%/reset',
+  'link_title' => 'Reset date formats',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:47:"Reset localized date formats to global defaults";}}',
   'module' => 'system',
-  'hidden' => '1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '1',
+  'depth' => '6',
   'customized' => '0',
-  'p1' => '337',
-  'p2' => '0',
-  'p3' => '0',
-  'p4' => '0',
-  'p5' => '0',
-  'p6' => '0',
+  'p1' => '1',
+  'p2' => '8',
+  'p3' => '48',
+  'p4' => '74',
+  'p5' => '429',
+  'p6' => '463',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -31134,22 +33819,22 @@
 ))
 ->values(array(
   'menu_name' => 'navigation',
-  'mlid' => '338',
-  'plid' => '0',
-  'link_path' => 'aggregator',
-  'router_path' => 'aggregator',
-  'link_title' => 'Feed aggregator',
-  'options' => 'a:0:{}',
+  'mlid' => '465',
+  'plid' => '6',
+  'link_path' => 'node/add/test-content-type',
+  'router_path' => 'node/add/test-content-type',
+  'link_title' => 'Test content type',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:49:"This is the description of the test content type.";}}',
   'module' => 'system',
   'hidden' => '0',
   'external' => '0',
-  'has_children' => '1',
+  'has_children' => '0',
   'expanded' => '0',
-  'weight' => '5',
-  'depth' => '1',
+  'weight' => '0',
+  'depth' => '2',
   'customized' => '0',
-  'p1' => '338',
-  'p2' => '0',
+  'p1' => '6',
+  'p2' => '465',
   'p3' => '0',
   'p4' => '0',
   'p5' => '0',
@@ -31162,25 +33847,25 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'navigation',
-  'mlid' => '339',
-  'plid' => '0',
-  'link_path' => 'forum',
-  'router_path' => 'forum',
-  'link_title' => 'Forums',
+  'menu_name' => 'management',
+  'mlid' => '466',
+  'plid' => '44',
+  'link_path' => 'admin/structure/menu/manage/menu-test-menu',
+  'router_path' => 'admin/structure/menu/manage/%',
+  'link_title' => 'Test Menu',
   'options' => 'a:0:{}',
-  'module' => 'system',
+  'module' => 'menu',
   'hidden' => '0',
   'external' => '0',
-  'has_children' => '1',
+  'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '1',
+  'depth' => '4',
   'customized' => '0',
-  'p1' => '339',
-  'p2' => '0',
-  'p3' => '0',
-  'p4' => '0',
+  'p1' => '1',
+  'p2' => '20',
+  'p3' => '44',
+  'p4' => '466',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -31191,23 +33876,23 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'navigation',
-  'mlid' => '340',
-  'plid' => '0',
-  'link_path' => 'tracker',
-  'router_path' => 'tracker',
-  'link_title' => 'Recent content',
-  'options' => 'a:0:{}',
-  'module' => 'system',
+  'menu_name' => 'menu-test-menu',
+  'mlid' => '467',
+  'plid' => '469',
+  'link_path' => 'http://google.com',
+  'router_path' => '',
+  'link_title' => 'Google',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:6:"Google";}}',
+  'module' => 'menu',
   'hidden' => '0',
-  'external' => '0',
+  'external' => '1',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '1',
-  'depth' => '1',
-  'customized' => '0',
-  'p1' => '340',
-  'p2' => '0',
+  'weight' => '0',
+  'depth' => '2',
+  'customized' => '1',
+  'p1' => '469',
+  'p2' => '467',
   'p3' => '0',
   'p4' => '0',
   'p5' => '0',
@@ -31220,23 +33905,23 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'navigation',
-  'mlid' => '341',
-  'plid' => '340',
-  'link_path' => 'tracker/all',
-  'router_path' => 'tracker/all',
-  'link_title' => 'All recent content',
-  'options' => 'a:0:{}',
-  'module' => 'system',
-  'hidden' => '-1',
-  'external' => '0',
+  'menu_name' => 'menu-test-menu',
+  'mlid' => '468',
+  'plid' => '0',
+  'link_path' => 'http://yahoo.com',
+  'router_path' => '',
+  'link_title' => 'Yahoo',
+  'options' => 'a:2:{s:10:"attributes";a:1:{s:5:"title";s:19:"english description";}s:5:"alter";b:1;}',
+  'module' => 'menu',
+  'hidden' => '0',
+  'external' => '1',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '2',
-  'customized' => '0',
-  'p1' => '340',
-  'p2' => '341',
+  'depth' => '1',
+  'customized' => '1',
+  'p1' => '468',
+  'p2' => '0',
   'p3' => '0',
   'p4' => '0',
   'p5' => '0',
@@ -31245,27 +33930,27 @@
   'p8' => '0',
   'p9' => '0',
   'updated' => '0',
-  'language' => 'und',
-  'i18n_tsid' => '0',
+  'language' => 'en',
+  'i18n_tsid' => '1',
 ))
 ->values(array(
-  'menu_name' => 'navigation',
-  'mlid' => '342',
-  'plid' => '338',
-  'link_path' => 'aggregator/categories',
-  'router_path' => 'aggregator/categories',
-  'link_title' => 'Categories',
-  'options' => 'a:0:{}',
-  'module' => 'system',
+  'menu_name' => 'menu-test-menu',
+  'mlid' => '469',
+  'plid' => '0',
+  'link_path' => 'http://bing.com',
+  'router_path' => '',
+  'link_title' => 'Bing',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:4:"Bing";}}',
+  'module' => 'menu',
   'hidden' => '0',
-  'external' => '0',
-  'has_children' => '1',
+  'external' => '1',
+  'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '2',
-  'customized' => '0',
-  'p1' => '338',
-  'p2' => '342',
+  'depth' => '1',
+  'customized' => '1',
+  'p1' => '469',
+  'p2' => '0',
   'p3' => '0',
   'p4' => '0',
   'p5' => '0',
@@ -31278,23 +33963,23 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'navigation',
-  'mlid' => '343',
-  'plid' => '339',
-  'link_path' => 'forum/%',
-  'router_path' => 'forum/%',
-  'link_title' => 'Forums',
+  'menu_name' => 'menu-test-menu',
+  'mlid' => '470',
+  'plid' => '469',
+  'link_path' => 'http://ask.com',
+  'router_path' => '',
+  'link_title' => 'Ask',
   'options' => 'a:0:{}',
-  'module' => 'system',
+  'module' => 'menu',
   'hidden' => '0',
-  'external' => '0',
+  'external' => '1',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
   'depth' => '2',
-  'customized' => '0',
-  'p1' => '339',
-  'p2' => '343',
+  'customized' => '1',
+  'p1' => '469',
+  'p2' => '470',
   'p3' => '0',
   'p4' => '0',
   'p5' => '0',
@@ -31307,23 +33992,23 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'navigation',
-  'mlid' => '344',
-  'plid' => '335',
-  'link_path' => 'blog/%',
-  'router_path' => 'blog/%',
-  'link_title' => 'My blog',
+  'menu_name' => 'shortcut-set-2',
+  'mlid' => '472',
+  'plid' => '0',
+  'link_path' => 'admin/help',
+  'router_path' => 'admin/help',
+  'link_title' => 'Help',
   'options' => 'a:0:{}',
-  'module' => 'system',
+  'module' => 'menu',
   'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '2',
+  'weight' => '-49',
+  'depth' => '1',
   'customized' => '0',
-  'p1' => '335',
-  'p2' => '344',
+  'p1' => '472',
+  'p2' => '0',
   'p3' => '0',
   'p4' => '0',
   'p5' => '0',
@@ -31336,23 +34021,23 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'navigation',
-  'mlid' => '345',
-  'plid' => '340',
-  'link_path' => 'tracker/%',
-  'router_path' => 'tracker/%',
-  'link_title' => 'My recent content',
+  'menu_name' => 'shortcut-set-2',
+  'mlid' => '473',
+  'plid' => '0',
+  'link_path' => 'admin/people',
+  'router_path' => 'admin/people',
+  'link_title' => 'People',
   'options' => 'a:0:{}',
-  'module' => 'system',
-  'hidden' => '-1',
+  'module' => 'menu',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '2',
+  'weight' => '-50',
+  'depth' => '1',
   'customized' => '0',
-  'p1' => '340',
-  'p2' => '345',
+  'p1' => '473',
+  'p2' => '0',
   'p3' => '0',
   'p4' => '0',
   'p5' => '0',
@@ -31366,22 +34051,22 @@
 ))
 ->values(array(
   'menu_name' => 'navigation',
-  'mlid' => '346',
-  'plid' => '338',
-  'link_path' => 'aggregator/sources',
-  'router_path' => 'aggregator/sources',
-  'link_title' => 'Sources',
+  'mlid' => '474',
+  'plid' => '4',
+  'link_path' => 'filter/tips/%',
+  'router_path' => 'filter/tips/%',
+  'link_title' => 'Compose tips',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '0',
   'external' => '0',
-  'has_children' => '1',
+  'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
   'depth' => '2',
   'customized' => '0',
-  'p1' => '338',
-  'p2' => '346',
+  'p1' => '4',
+  'p2' => '474',
   'p3' => '0',
   'p4' => '0',
   'p5' => '0',
@@ -31394,24 +34079,24 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'navigation',
-  'mlid' => '347',
-  'plid' => '342',
-  'link_path' => 'aggregator/categories/%',
-  'router_path' => 'aggregator/categories/%',
-  'link_title' => '',
+  'menu_name' => 'management',
+  'mlid' => '475',
+  'plid' => '175',
+  'link_path' => 'admin/help/php',
+  'router_path' => 'admin/help/php',
+  'link_title' => 'php',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
   'depth' => '3',
   'customized' => '0',
-  'p1' => '338',
-  'p2' => '342',
-  'p3' => '347',
+  'p1' => '1',
+  'p2' => '175',
+  'p3' => '475',
   'p4' => '0',
   'p5' => '0',
   'p6' => '0',
@@ -31423,24 +34108,24 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'navigation',
-  'mlid' => '348',
-  'plid' => '346',
-  'link_path' => 'aggregator/sources/%',
-  'router_path' => 'aggregator/sources/%',
-  'link_title' => '',
-  'options' => 'a:0:{}',
-  'module' => 'system',
+  'menu_name' => 'management',
+  'mlid' => '478',
+  'plid' => '20',
+  'link_path' => 'admin/content',
+  'router_path' => 'admin/content',
+  'link_title' => 'custom link test',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:0:"";}}',
+  'module' => 'menu',
   'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
   'depth' => '3',
-  'customized' => '0',
-  'p1' => '338',
-  'p2' => '346',
-  'p3' => '348',
+  'customized' => '1',
+  'p1' => '1',
+  'p2' => '20',
+  'p3' => '478',
   'p4' => '0',
   'p5' => '0',
   'p6' => '0',
@@ -31453,22 +34138,22 @@
 ))
 ->values(array(
   'menu_name' => 'navigation',
-  'mlid' => '349',
-  'plid' => '6',
-  'link_path' => 'node/add/blog',
-  'router_path' => 'node/add/blog',
-  'link_title' => 'Blog entry',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:58:"Use for multi-user blogs. Every user gets a personal blog.";}}',
-  'module' => 'system',
+  'mlid' => '479',
+  'plid' => '0',
+  'link_path' => 'node/2',
+  'router_path' => 'node/%',
+  'link_title' => 'node link test',
+  'options' => 'a:2:{s:10:"attributes";a:1:{s:5:"title";s:6:"node 2";}s:5:"query";a:2:{s:4:"name";s:6:"ferret";s:5:"color";s:6:"purple";}}',
+  'module' => 'menu',
   'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '2',
-  'customized' => '0',
-  'p1' => '6',
-  'p2' => '349',
+  'weight' => '3',
+  'depth' => '1',
+  'customized' => '1',
+  'p1' => '479',
+  'p2' => '0',
   'p3' => '0',
   'p4' => '0',
   'p5' => '0',
@@ -31481,23 +34166,23 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'navigation',
-  'mlid' => '350',
-  'plid' => '6',
-  'link_path' => 'node/add/book',
-  'router_path' => 'node/add/book',
-  'link_title' => 'Book page',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:87:"<em>Books</em> have a built-in hierarchical navigation. Use for handbooks or tutorials.";}}',
-  'module' => 'system',
+  'menu_name' => 'book-toc-1',
+  'mlid' => '480',
+  'plid' => '0',
+  'link_path' => 'node/4',
+  'router_path' => 'node/%',
+  'link_title' => 'Test top book title',
+  'options' => 'a:0:{}',
+  'module' => 'book',
   'hidden' => '0',
   'external' => '0',
-  'has_children' => '0',
+  'has_children' => '1',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '2',
+  'weight' => '-10',
+  'depth' => '1',
   'customized' => '0',
-  'p1' => '6',
-  'p2' => '350',
+  'p1' => '480',
+  'p2' => '0',
   'p3' => '0',
   'p4' => '0',
   'p5' => '0',
@@ -31510,24 +34195,24 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'management',
-  'mlid' => '351',
-  'plid' => '9',
-  'link_path' => 'admin/content/book',
-  'router_path' => 'admin/content/book',
-  'link_title' => 'Books',
-  'options' => "a:1:{s:10:\"attributes\";a:1:{s:5:\"title\";s:33:\"Manage your site's book outlines.\";}}",
-  'module' => 'system',
-  'hidden' => '-1',
+  'menu_name' => 'book-toc-1',
+  'mlid' => '481',
+  'plid' => '480',
+  'link_path' => 'node/6',
+  'router_path' => 'node/%',
+  'link_title' => 'Test book title child 1',
+  'options' => 'a:0:{}',
+  'module' => 'book',
+  'hidden' => '0',
   'external' => '0',
-  'has_children' => '0',
+  'has_children' => '1',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '3',
+  'depth' => '2',
   'customized' => '0',
-  'p1' => '1',
-  'p2' => '9',
-  'p3' => '351',
+  'p1' => '480',
+  'p2' => '481',
+  'p3' => '0',
   'p4' => '0',
   'p5' => '0',
   'p6' => '0',
@@ -31539,24 +34224,24 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'navigation',
-  'mlid' => '352',
-  'plid' => '16',
-  'link_path' => 'user/%/contact',
-  'router_path' => 'user/%/contact',
-  'link_title' => 'Contact',
+  'menu_name' => 'book-toc-1',
+  'mlid' => '482',
+  'plid' => '481',
+  'link_path' => 'node/2',
+  'router_path' => 'node/%',
+  'link_title' => 'Test book title child 1.1',
   'options' => 'a:0:{}',
-  'module' => 'system',
-  'hidden' => '-1',
+  'module' => 'book',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '2',
-  'depth' => '2',
+  'weight' => '0',
+  'depth' => '3',
   'customized' => '0',
-  'p1' => '16',
-  'p2' => '352',
-  'p3' => '0',
+  'p1' => '480',
+  'p2' => '481',
+  'p3' => '482',
   'p4' => '0',
   'p5' => '0',
   'p6' => '0',
@@ -31568,24 +34253,24 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'management',
-  'mlid' => '353',
-  'plid' => '20',
-  'link_path' => 'admin/structure/contact',
-  'router_path' => 'admin/structure/contact',
-  'link_title' => 'Contact form',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:71:"Create a system contact form and set up categories for the form to use.";}}',
-  'module' => 'system',
+  'menu_name' => 'book-toc-2',
+  'mlid' => '483',
+  'plid' => '481',
+  'link_path' => 'node/1',
+  'router_path' => 'node/%',
+  'link_title' => 'Test book title 2',
+  'options' => 'a:0:{}',
+  'module' => 'book',
   'hidden' => '0',
   'external' => '0',
-  'has_children' => '1',
+  'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
   'depth' => '3',
   'customized' => '0',
-  'p1' => '1',
-  'p2' => '20',
-  'p3' => '353',
+  'p1' => '480',
+  'p2' => '481',
+  'p3' => '483',
   'p4' => '0',
   'p5' => '0',
   'p6' => '0',
@@ -31597,24 +34282,24 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'management',
-  'mlid' => '354',
-  'plid' => '8',
-  'link_path' => 'admin/config/date',
-  'router_path' => 'admin/config/date',
-  'link_title' => 'Date API',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:42:"Settings for modules the use the Date API.";}}',
-  'module' => 'system',
+  'menu_name' => 'navigation',
+  'mlid' => '484',
+  'plid' => '0',
+  'link_path' => 'node/2',
+  'router_path' => 'node/%',
+  'link_title' => 'The thing about Deep Space 9',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:0:"";}}',
+  'module' => 'menu',
   'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '-10',
-  'depth' => '3',
-  'customized' => '0',
-  'p1' => '1',
-  'p2' => '8',
-  'p3' => '354',
+  'weight' => '9',
+  'depth' => '1',
+  'customized' => '1',
+  'p1' => '484',
+  'p2' => '0',
+  'p3' => '0',
   'p4' => '0',
   'p5' => '0',
   'p6' => '0',
@@ -31627,22 +34312,22 @@
 ))
 ->values(array(
   'menu_name' => 'navigation',
-  'mlid' => '355',
-  'plid' => '6',
-  'link_path' => 'node/add/forum',
-  'router_path' => 'node/add/forum',
-  'link_title' => 'Forum topic',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:69:"A <em>forum topic</em> starts a new discussion thread within a forum.";}}',
-  'module' => 'system',
+  'mlid' => '485',
+  'plid' => '0',
+  'link_path' => 'node/3',
+  'router_path' => 'node/%',
+  'link_title' => 'is - The thing about Deep Space 9',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:0:"";}}',
+  'module' => 'menu',
   'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '2',
-  'customized' => '0',
-  'p1' => '6',
-  'p2' => '355',
+  'weight' => '10',
+  'depth' => '1',
+  'customized' => '1',
+  'p1' => '485',
+  'p2' => '0',
   'p3' => '0',
   'p4' => '0',
   'p5' => '0',
@@ -31655,24 +34340,24 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'management',
-  'mlid' => '356',
-  'plid' => '20',
-  'link_path' => 'admin/structure/forum',
-  'router_path' => 'admin/structure/forum',
-  'link_title' => 'Forums',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:33:"Control forum hierarchy settings.";}}',
-  'module' => 'system',
+  'menu_name' => 'navigation',
+  'mlid' => '486',
+  'plid' => '0',
+  'link_path' => 'node/4',
+  'router_path' => 'node/%',
+  'link_title' => 'is - The thing about Firefly',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:0:"";}}',
+  'module' => 'menu',
   'hidden' => '0',
   'external' => '0',
-  'has_children' => '1',
+  'has_children' => '0',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '3',
-  'customized' => '0',
-  'p1' => '1',
-  'p2' => '20',
-  'p3' => '356',
+  'weight' => '11',
+  'depth' => '1',
+  'customized' => '1',
+  'p1' => '486',
+  'p2' => '0',
+  'p3' => '0',
   'p4' => '0',
   'p5' => '0',
   'p6' => '0',
@@ -31685,22 +34370,22 @@
 ))
 ->values(array(
   'menu_name' => 'navigation',
-  'mlid' => '358',
-  'plid' => '5',
-  'link_path' => 'node/%/outline',
-  'router_path' => 'node/%/outline',
-  'link_title' => 'Outline',
-  'options' => 'a:0:{}',
-  'module' => 'system',
-  'hidden' => '-1',
+  'mlid' => '487',
+  'plid' => '0',
+  'link_path' => 'node/5',
+  'router_path' => 'node/%',
+  'link_title' => 'en - The thing about Firefly',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:0:"";}}',
+  'module' => 'menu',
+  'hidden' => '0',
   'external' => '0',
-  'has_children' => '1',
+  'has_children' => '0',
   'expanded' => '0',
-  'weight' => '2',
-  'depth' => '2',
-  'customized' => '0',
-  'p1' => '5',
-  'p2' => '358',
+  'weight' => '12',
+  'depth' => '1',
+  'customized' => '1',
+  'p1' => '487',
+  'p2' => '0',
   'p3' => '0',
   'p4' => '0',
   'p5' => '0',
@@ -31714,24 +34399,24 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '359',
-  'plid' => '18',
-  'link_path' => 'admin/reports/hits',
-  'router_path' => 'admin/reports/hits',
-  'link_title' => 'Recent hits',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:43:"View pages that have recently been visited.";}}',
+  'mlid' => '491',
+  'plid' => '48',
+  'link_path' => 'admin/config/regional/entity_translation',
+  'router_path' => 'admin/config/regional/entity_translation',
+  'link_title' => 'Entity translation',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:83:"Configure which entities can be translated and enable or disable language fallback.";}}',
   'module' => 'system',
   'hidden' => '0',
   'external' => '0',
-  'has_children' => '0',
+  'has_children' => '1',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '3',
+  'depth' => '4',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '18',
-  'p3' => '359',
-  'p4' => '0',
+  'p2' => '8',
+  'p3' => '48',
+  'p4' => '491',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -31742,24 +34427,24 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'management',
-  'mlid' => '360',
-  'plid' => '18',
-  'link_path' => 'admin/reports/pages',
-  'router_path' => 'admin/reports/pages',
-  'link_title' => 'Top pages',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:41:"View pages that have been hit frequently.";}}',
-  'module' => 'system',
+  'menu_name' => 'menu-test-menu',
+  'mlid' => '700',
+  'plid' => '0',
+  'link_path' => 'http://yahoo.com',
+  'router_path' => '',
+  'link_title' => 'fr - Yahoo',
+  'options' => 'a:2:{s:10:"attributes";a:1:{s:5:"title";s:16:"fr - description";}s:5:"alter";b:1;}',
+  'module' => 'menu',
   'hidden' => '0',
-  'external' => '0',
+  'external' => '1',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '1',
-  'depth' => '3',
-  'customized' => '0',
-  'p1' => '1',
-  'p2' => '18',
-  'p3' => '360',
+  'weight' => '0',
+  'depth' => '1',
+  'customized' => '1',
+  'p1' => '468',
+  'p2' => '0',
+  'p3' => '0',
   'p4' => '0',
   'p5' => '0',
   'p6' => '0',
@@ -31767,28 +34452,28 @@
   'p8' => '0',
   'p9' => '0',
   'updated' => '0',
-  'language' => 'und',
-  'i18n_tsid' => '0',
+  'language' => 'fr',
+  'i18n_tsid' => '1',
 ))
 ->values(array(
-  'menu_name' => 'management',
-  'mlid' => '361',
-  'plid' => '18',
-  'link_path' => 'admin/reports/referrers',
-  'router_path' => 'admin/reports/referrers',
-  'link_title' => 'Top referrers',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:19:"View top referrers.";}}',
-  'module' => 'system',
+  'menu_name' => 'menu-test-menu',
+  'mlid' => '701',
+  'plid' => '0',
+  'link_path' => 'http://yahoo.com',
+  'router_path' => '',
+  'link_title' => 'is - Yahoo',
+  'options' => 'a:2:{s:10:"attributes";a:1:{s:5:"title";s:16:"is - description";}s:5:"alter";b:1;}',
+  'module' => 'menu',
   'hidden' => '0',
-  'external' => '0',
+  'external' => '1',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '3',
-  'customized' => '0',
-  'p1' => '1',
-  'p2' => '18',
-  'p3' => '361',
+  'depth' => '1',
+  'customized' => '1',
+  'p1' => '468',
+  'p2' => '0',
+  'p3' => '0',
   'p4' => '0',
   'p5' => '0',
   'p6' => '0',
@@ -31796,28 +34481,28 @@
   'p8' => '0',
   'p9' => '0',
   'updated' => '0',
-  'language' => 'und',
-  'i18n_tsid' => '0',
+  'language' => 'is',
+  'i18n_tsid' => '1',
 ))
 ->values(array(
-  'menu_name' => 'management',
-  'mlid' => '362',
-  'plid' => '18',
-  'link_path' => 'admin/reports/visitors',
-  'router_path' => 'admin/reports/visitors',
-  'link_title' => 'Top visitors',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:34:"View visitors that hit many pages.";}}',
+  'menu_name' => 'navigation',
+  'mlid' => '702',
+  'plid' => '6',
+  'link_path' => 'node/add/et',
+  'router_path' => 'node/add/et',
+  'link_title' => 'Entity translation test',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:23:"Entity translation test";}}',
   'module' => 'system',
   'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '2',
-  'depth' => '3',
+  'weight' => '0',
+  'depth' => '2',
   'customized' => '0',
-  'p1' => '1',
-  'p2' => '18',
-  'p3' => '362',
+  'p1' => '6',
+  'p2' => '702',
+  'p3' => '0',
   'p4' => '0',
   'p5' => '0',
   'p6' => '0',
@@ -31830,22 +34515,22 @@
 ))
 ->values(array(
   'menu_name' => 'navigation',
-  'mlid' => '363',
-  'plid' => '5',
-  'link_path' => 'node/%/track',
-  'router_path' => 'node/%/track',
-  'link_title' => 'Track',
+  'mlid' => '703',
+  'plid' => '6',
+  'link_path' => 'node/add/a-thirty-two-character-type-name',
+  'router_path' => 'node/add/a-thirty-two-character-type-name',
+  'link_title' => 'Test long name',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
-  'has_children' => '1',
+  'has_children' => '0',
   'expanded' => '0',
-  'weight' => '1',
+  'weight' => '0',
   'depth' => '2',
   'customized' => '0',
-  'p1' => '5',
-  'p2' => '363',
+  'p1' => '6',
+  'p2' => '703',
   'p3' => '0',
   'p4' => '0',
   'p5' => '0',
@@ -31859,22 +34544,22 @@
 ))
 ->values(array(
   'menu_name' => 'navigation',
-  'mlid' => '364',
-  'plid' => '16',
-  'link_path' => 'user/%/track',
-  'router_path' => 'user/%/track',
-  'link_title' => 'Track',
+  'mlid' => '704',
+  'plid' => '3',
+  'link_path' => 'comment/%/translate',
+  'router_path' => 'comment/%/translate',
+  'link_title' => 'Translate',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
-  'has_children' => '0',
+  'has_children' => '1',
   'expanded' => '0',
-  'weight' => '0',
+  'weight' => '1',
   'depth' => '2',
   'customized' => '0',
-  'p1' => '16',
-  'p2' => '364',
+  'p1' => '3',
+  'p2' => '704',
   'p3' => '0',
   'p4' => '0',
   'p5' => '0',
@@ -31888,10 +34573,10 @@
 ))
 ->values(array(
   'menu_name' => 'navigation',
-  'mlid' => '365',
-  'plid' => '5',
-  'link_path' => 'node/%/translate',
-  'router_path' => 'node/%/translate',
+  'mlid' => '705',
+  'plid' => '16',
+  'link_path' => 'user/%/translate',
+  'router_path' => 'user/%/translate',
   'link_title' => 'Translate',
   'options' => 'a:0:{}',
   'module' => 'system',
@@ -31899,11 +34584,11 @@
   'external' => '0',
   'has_children' => '1',
   'expanded' => '0',
-  'weight' => '1',
+  'weight' => '2',
   'depth' => '2',
   'customized' => '0',
-  'p1' => '5',
-  'p2' => '365',
+  'p1' => '16',
+  'p2' => '705',
   'p3' => '0',
   'p4' => '0',
   'p5' => '0',
@@ -31917,14 +34602,14 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '366',
-  'plid' => '20',
-  'link_path' => 'admin/structure/trigger',
-  'router_path' => 'admin/structure/trigger',
-  'link_title' => 'Triggers',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:34:"Configure when to execute actions.";}}',
+  'mlid' => '706',
+  'plid' => '175',
+  'link_path' => 'admin/help/i18n',
+  'router_path' => 'admin/help/i18n',
+  'link_title' => 'i18n',
+  'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
@@ -31932,8 +34617,8 @@
   'depth' => '3',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '20',
-  'p3' => '366',
+  'p2' => '175',
+  'p3' => '706',
   'p4' => '0',
   'p5' => '0',
   'p6' => '0',
@@ -31946,11 +34631,11 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '369',
+  'mlid' => '707',
   'plid' => '175',
-  'link_path' => 'admin/help/aggregator',
-  'router_path' => 'admin/help/aggregator',
-  'link_title' => 'aggregator',
+  'link_path' => 'admin/help/i18n_block',
+  'router_path' => 'admin/help/i18n_block',
+  'link_title' => 'i18n_block',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
@@ -31962,7 +34647,7 @@
   'customized' => '0',
   'p1' => '1',
   'p2' => '175',
-  'p3' => '369',
+  'p3' => '707',
   'p4' => '0',
   'p5' => '0',
   'p6' => '0',
@@ -31975,11 +34660,11 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '370',
+  'mlid' => '708',
   'plid' => '175',
-  'link_path' => 'admin/help/blog',
-  'router_path' => 'admin/help/blog',
-  'link_title' => 'blog',
+  'link_path' => 'admin/help/i18n_menu',
+  'router_path' => 'admin/help/i18n_menu',
+  'link_title' => 'i18n_menu',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
@@ -31991,7 +34676,7 @@
   'customized' => '0',
   'p1' => '1',
   'p2' => '175',
-  'p3' => '370',
+  'p3' => '708',
   'p4' => '0',
   'p5' => '0',
   'p6' => '0',
@@ -32004,11 +34689,11 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '371',
+  'mlid' => '709',
   'plid' => '175',
-  'link_path' => 'admin/help/book',
-  'router_path' => 'admin/help/book',
-  'link_title' => 'book',
+  'link_path' => 'admin/help/i18n_string',
+  'router_path' => 'admin/help/i18n_string',
+  'link_title' => 'i18n_string',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
@@ -32020,7 +34705,7 @@
   'customized' => '0',
   'p1' => '1',
   'p2' => '175',
-  'p3' => '371',
+  'p3' => '709',
   'p4' => '0',
   'p5' => '0',
   'p6' => '0',
@@ -32033,11 +34718,11 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '372',
+  'mlid' => '710',
   'plid' => '175',
-  'link_path' => 'admin/help/contact',
-  'router_path' => 'admin/help/contact',
-  'link_title' => 'contact',
+  'link_path' => 'admin/help/i18n_sync',
+  'router_path' => 'admin/help/i18n_sync',
+  'link_title' => 'i18n_sync',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
@@ -32049,7 +34734,7 @@
   'customized' => '0',
   'p1' => '1',
   'p2' => '175',
-  'p3' => '372',
+  'p3' => '710',
   'p4' => '0',
   'p5' => '0',
   'p6' => '0',
@@ -32062,11 +34747,11 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '373',
+  'mlid' => '711',
   'plid' => '175',
-  'link_path' => 'admin/help/date',
-  'router_path' => 'admin/help/date',
-  'link_title' => 'date',
+  'link_path' => 'admin/help/i18n_taxonomy',
+  'router_path' => 'admin/help/i18n_taxonomy',
+  'link_title' => 'i18n_taxonomy',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
@@ -32078,7 +34763,7 @@
   'customized' => '0',
   'p1' => '1',
   'p2' => '175',
-  'p3' => '373',
+  'p3' => '711',
   'p4' => '0',
   'p5' => '0',
   'p6' => '0',
@@ -32091,11 +34776,11 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '374',
+  'mlid' => '712',
   'plid' => '175',
-  'link_path' => 'admin/help/forum',
-  'router_path' => 'admin/help/forum',
-  'link_title' => 'forum',
+  'link_path' => 'admin/help/link',
+  'router_path' => 'admin/help/link',
+  'link_title' => 'link',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
@@ -32107,7 +34792,7 @@
   'customized' => '0',
   'p1' => '1',
   'p2' => '175',
-  'p3' => '374',
+  'p3' => '712',
   'p4' => '0',
   'p5' => '0',
   'p6' => '0',
@@ -32120,11 +34805,11 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '375',
+  'mlid' => '713',
   'plid' => '175',
-  'link_path' => 'admin/help/locale',
-  'router_path' => 'admin/help/locale',
-  'link_title' => 'locale',
+  'link_path' => 'admin/help/title',
+  'router_path' => 'admin/help/title',
+  'link_title' => 'title',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
@@ -32136,7 +34821,7 @@
   'customized' => '0',
   'p1' => '1',
   'p2' => '175',
-  'p3' => '375',
+  'p3' => '713',
   'p4' => '0',
   'p5' => '0',
   'p6' => '0',
@@ -32148,12 +34833,12 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'management',
-  'mlid' => '377',
-  'plid' => '175',
-  'link_path' => 'admin/help/simpletest',
-  'router_path' => 'admin/help/simpletest',
-  'link_title' => 'simpletest',
+  'menu_name' => 'navigation',
+  'mlid' => '714',
+  'plid' => '25',
+  'link_path' => 'comment/%/edit/%',
+  'router_path' => 'comment/%/edit/%',
+  'link_title' => 'Edit',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
@@ -32163,9 +34848,9 @@
   'weight' => '0',
   'depth' => '3',
   'customized' => '0',
-  'p1' => '1',
-  'p2' => '175',
-  'p3' => '377',
+  'p1' => '3',
+  'p2' => '25',
+  'p3' => '714',
   'p4' => '0',
   'p5' => '0',
   'p6' => '0',
@@ -32177,12 +34862,12 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'management',
-  'mlid' => '378',
-  'plid' => '175',
-  'link_path' => 'admin/help/statistics',
-  'router_path' => 'admin/help/statistics',
-  'link_title' => 'statistics',
+  'menu_name' => 'navigation',
+  'mlid' => '715',
+  'plid' => '38',
+  'link_path' => 'user/%/edit/%',
+  'router_path' => 'user/%/edit/%',
+  'link_title' => 'Edit',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
@@ -32192,9 +34877,9 @@
   'weight' => '0',
   'depth' => '3',
   'customized' => '0',
-  'p1' => '1',
-  'p2' => '175',
-  'p3' => '378',
+  'p1' => '16',
+  'p2' => '38',
+  'p3' => '715',
   'p4' => '0',
   'p5' => '0',
   'p6' => '0',
@@ -32207,24 +34892,24 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '379',
-  'plid' => '175',
-  'link_path' => 'admin/help/syslog',
-  'router_path' => 'admin/help/syslog',
-  'link_title' => 'syslog',
-  'options' => 'a:0:{}',
+  'mlid' => '716',
+  'plid' => '48',
+  'link_path' => 'admin/config/regional/i18n',
+  'router_path' => 'admin/config/regional/i18n',
+  'link_title' => 'Multilingual settings',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:69:"Configure extended options for multilingual content and translations.";}}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '3',
+  'weight' => '10',
+  'depth' => '4',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '175',
-  'p3' => '379',
-  'p4' => '0',
+  'p2' => '8',
+  'p3' => '48',
+  'p4' => '716',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -32236,24 +34921,24 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '380',
-  'plid' => '175',
-  'link_path' => 'admin/help/tracker',
-  'router_path' => 'admin/help/tracker',
-  'link_title' => 'tracker',
-  'options' => 'a:0:{}',
+  'mlid' => '717',
+  'plid' => '33',
+  'link_path' => 'admin/config/content/title',
+  'router_path' => 'admin/config/content/title',
+  'link_title' => 'Title settings',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:30:"Settings for the Title module.";}}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '3',
+  'depth' => '4',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '175',
-  'p3' => '380',
-  'p4' => '0',
+  'p2' => '8',
+  'p3' => '33',
+  'p4' => '717',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -32264,24 +34949,24 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'management',
-  'mlid' => '381',
-  'plid' => '175',
-  'link_path' => 'admin/help/translation',
-  'router_path' => 'admin/help/translation',
-  'link_title' => 'translation',
+  'menu_name' => 'navigation',
+  'mlid' => '718',
+  'plid' => '176',
+  'link_path' => 'taxonomy/term/%/translate',
+  'router_path' => 'taxonomy/term/%/translate',
+  'link_title' => 'Translate',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
-  'has_children' => '0',
+  'has_children' => '1',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '3',
+  'weight' => '11',
+  'depth' => '2',
   'customized' => '0',
-  'p1' => '1',
-  'p2' => '175',
-  'p3' => '381',
+  'p1' => '176',
+  'p2' => '718',
+  'p3' => '0',
   'p4' => '0',
   'p5' => '0',
   'p6' => '0',
@@ -32294,24 +34979,24 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '382',
-  'plid' => '175',
-  'link_path' => 'admin/help/trigger',
-  'router_path' => 'admin/help/trigger',
-  'link_title' => 'trigger',
-  'options' => 'a:0:{}',
+  'mlid' => '719',
+  'plid' => '48',
+  'link_path' => 'admin/config/regional/i18n_translation',
+  'router_path' => 'admin/config/regional/i18n_translation',
+  'link_title' => 'Translation sets',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:26:"Translation sets overview.";}}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '3',
+  'weight' => '10',
+  'depth' => '4',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '175',
-  'p3' => '382',
-  'p4' => '0',
+  'p2' => '8',
+  'p3' => '48',
+  'p4' => '719',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -32323,11 +35008,11 @@
 ))
 ->values(array(
   'menu_name' => 'navigation',
-  'mlid' => '383',
-  'plid' => '347',
-  'link_path' => 'aggregator/categories/%/categorize',
-  'router_path' => 'aggregator/categories/%/categorize',
-  'link_title' => 'Categorize',
+  'mlid' => '720',
+  'plid' => '39',
+  'link_path' => 'node/%/edit/%',
+  'router_path' => 'node/%/edit/%',
+  'link_title' => 'Edit',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
@@ -32335,12 +35020,12 @@
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '4',
+  'depth' => '3',
   'customized' => '0',
-  'p1' => '338',
-  'p2' => '342',
-  'p3' => '347',
-  'p4' => '383',
+  'p1' => '5',
+  'p2' => '39',
+  'p3' => '720',
+  'p4' => '0',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -32352,24 +35037,24 @@
 ))
 ->values(array(
   'menu_name' => 'navigation',
-  'mlid' => '384',
-  'plid' => '348',
-  'link_path' => 'aggregator/sources/%/categorize',
-  'router_path' => 'aggregator/sources/%/categorize',
-  'link_title' => 'Categorize',
+  'mlid' => '721',
+  'plid' => '704',
+  'link_path' => 'comment/%/translate/delete/%',
+  'router_path' => 'comment/%/translate/delete/%',
+  'link_title' => 'Delete',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '4',
+  'depth' => '3',
   'customized' => '0',
-  'p1' => '338',
-  'p2' => '346',
-  'p3' => '348',
-  'p4' => '384',
+  'p1' => '3',
+  'p2' => '704',
+  'p3' => '721',
+  'p4' => '0',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -32381,24 +35066,24 @@
 ))
 ->values(array(
   'menu_name' => 'navigation',
-  'mlid' => '385',
-  'plid' => '347',
-  'link_path' => 'aggregator/categories/%/configure',
-  'router_path' => 'aggregator/categories/%/configure',
-  'link_title' => 'Configure',
+  'mlid' => '722',
+  'plid' => '365',
+  'link_path' => 'node/%/translate/delete/%',
+  'router_path' => 'node/%/translate/delete/%',
+  'link_title' => 'Delete',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '1',
-  'depth' => '4',
+  'weight' => '0',
+  'depth' => '3',
   'customized' => '0',
-  'p1' => '338',
-  'p2' => '342',
-  'p3' => '347',
-  'p4' => '385',
+  'p1' => '5',
+  'p2' => '365',
+  'p3' => '722',
+  'p4' => '0',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -32410,24 +35095,24 @@
 ))
 ->values(array(
   'menu_name' => 'navigation',
-  'mlid' => '386',
-  'plid' => '348',
-  'link_path' => 'aggregator/sources/%/configure',
-  'router_path' => 'aggregator/sources/%/configure',
-  'link_title' => 'Configure',
+  'mlid' => '723',
+  'plid' => '705',
+  'link_path' => 'user/%/translate/delete/%',
+  'router_path' => 'user/%/translate/delete/%',
+  'link_title' => 'Delete',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '1',
-  'depth' => '4',
+  'weight' => '0',
+  'depth' => '3',
   'customized' => '0',
-  'p1' => '338',
-  'p2' => '346',
-  'p3' => '348',
-  'p4' => '386',
+  'p1' => '16',
+  'p2' => '705',
+  'p3' => '723',
+  'p4' => '0',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -32439,24 +35124,24 @@
 ))
 ->values(array(
   'menu_name' => 'navigation',
-  'mlid' => '387',
-  'plid' => '347',
-  'link_path' => 'aggregator/categories/%/view',
-  'router_path' => 'aggregator/categories/%/view',
-  'link_title' => 'View',
+  'mlid' => '724',
+  'plid' => '210',
+  'link_path' => 'taxonomy/term/%/edit/%',
+  'router_path' => 'taxonomy/term/%/edit/%',
+  'link_title' => 'Edit',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '-10',
-  'depth' => '4',
+  'weight' => '10',
+  'depth' => '3',
   'customized' => '0',
-  'p1' => '338',
-  'p2' => '342',
-  'p3' => '347',
-  'p4' => '387',
+  'p1' => '176',
+  'p2' => '210',
+  'p3' => '724',
+  'p4' => '0',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -32467,26 +35152,26 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'navigation',
-  'mlid' => '388',
-  'plid' => '348',
-  'link_path' => 'aggregator/sources/%/view',
-  'router_path' => 'aggregator/sources/%/view',
-  'link_title' => 'View',
-  'options' => 'a:0:{}',
+  'menu_name' => 'management',
+  'mlid' => '725',
+  'plid' => '716',
+  'link_path' => 'admin/config/regional/i18n/configure',
+  'router_path' => 'admin/config/regional/i18n/configure',
+  'link_title' => 'Multilingual system',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:69:"Configure extended options for multilingual content and translations.";}}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '-10',
-  'depth' => '4',
+  'weight' => '0',
+  'depth' => '5',
   'customized' => '0',
-  'p1' => '338',
-  'p2' => '346',
-  'p3' => '348',
-  'p4' => '388',
-  'p5' => '0',
+  'p1' => '1',
+  'p2' => '8',
+  'p3' => '48',
+  'p4' => '716',
+  'p5' => '725',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -32497,25 +35182,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '389',
-  'plid' => '353',
-  'link_path' => 'admin/structure/contact/add',
-  'router_path' => 'admin/structure/contact/add',
-  'link_title' => 'Add category',
-  'options' => 'a:0:{}',
+  'mlid' => '726',
+  'plid' => '716',
+  'link_path' => 'admin/config/regional/i18n/strings',
+  'router_path' => 'admin/config/regional/i18n/strings',
+  'link_title' => 'Strings',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:33:"Options for user defined strings.";}}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '1',
-  'depth' => '4',
+  'weight' => '20',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '20',
-  'p3' => '353',
-  'p4' => '389',
-  'p5' => '0',
+  'p2' => '8',
+  'p3' => '48',
+  'p4' => '716',
+  'p5' => '726',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -32526,25 +35211,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '391',
-  'plid' => '18',
-  'link_path' => 'admin/reports/access/%',
-  'router_path' => 'admin/reports/access/%',
-  'link_title' => 'Details',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:16:"View access log.";}}',
+  'mlid' => '727',
+  'plid' => '413',
+  'link_path' => 'admin/config/regional/translate/i18n_string',
+  'router_path' => 'admin/config/regional/translate/i18n_string',
+  'link_title' => 'Strings',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:29:"Refresh user defined strings.";}}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '3',
+  'weight' => '20',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '18',
-  'p3' => '391',
-  'p4' => '0',
-  'p5' => '0',
+  'p2' => '8',
+  'p3' => '48',
+  'p4' => '413',
+  'p5' => '727',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -32555,25 +35240,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '392',
-  'plid' => '33',
-  'link_path' => 'admin/config/content/email',
-  'router_path' => 'admin/config/content/email',
-  'link_title' => 'Email Contact Form Settings',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:57:"Administer flood control settings for email contact forms";}}',
+  'mlid' => '728',
+  'plid' => '212',
+  'link_path' => 'admin/structure/taxonomy/%/translate',
+  'router_path' => 'admin/structure/taxonomy/%/translate',
+  'link_title' => 'Translate',
+  'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '4',
+  'weight' => '10',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '8',
-  'p3' => '33',
-  'p4' => '392',
-  'p5' => '0',
+  'p2' => '20',
+  'p3' => '180',
+  'p4' => '212',
+  'p5' => '728',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -32584,25 +35269,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '393',
-  'plid' => '60',
-  'link_path' => 'admin/config/services/aggregator',
-  'router_path' => 'admin/config/services/aggregator',
-  'link_title' => 'Feed aggregator',
-  'options' => "a:1:{s:10:\"attributes\";a:1:{s:5:\"title\";s:116:\"Configure which content your site aggregates from other sites, how often it polls them, and how they're categorized.\";}}",
+  'mlid' => '729',
+  'plid' => '719',
+  'link_path' => 'admin/config/regional/i18n_translation/configure',
+  'router_path' => 'admin/config/regional/i18n_translation/configure',
+  'link_title' => 'Translation sets',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:38:"Overview of existing translation sets.";}}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
-  'has_children' => '1',
+  'has_children' => '0',
   'expanded' => '0',
-  'weight' => '10',
-  'depth' => '4',
+  'weight' => '0',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
   'p2' => '8',
-  'p3' => '60',
-  'p4' => '393',
-  'p5' => '0',
+  'p3' => '48',
+  'p4' => '719',
+  'p5' => '729',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -32613,24 +35298,24 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '395',
-  'plid' => '48',
-  'link_path' => 'admin/config/regional/language',
-  'router_path' => 'admin/config/regional/language',
-  'link_title' => 'Languages',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:55:"Configure languages for content and the user interface.";}}',
+  'mlid' => '730',
+  'plid' => '44',
+  'link_path' => 'admin/structure/menu/manage/translation',
+  'router_path' => 'admin/structure/menu/manage/translation',
+  'link_title' => 'Translation sets',
+  'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
-  'has_children' => '1',
+  'has_children' => '0',
   'expanded' => '0',
-  'weight' => '-10',
+  'weight' => '10',
   'depth' => '4',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '8',
-  'p3' => '48',
-  'p4' => '395',
+  'p2' => '20',
+  'p3' => '44',
+  'p4' => '730',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -32642,25 +35327,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '396',
-  'plid' => '351',
-  'link_path' => 'admin/content/book/list',
-  'router_path' => 'admin/content/book/list',
-  'link_title' => 'List',
-  'options' => 'a:0:{}',
+  'mlid' => '731',
+  'plid' => '716',
+  'link_path' => 'admin/config/regional/i18n/variable',
+  'router_path' => 'admin/config/regional/i18n/variable',
+  'link_title' => 'Variables',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:33:"Configure multilingual variables.";}}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '4',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '9',
-  'p3' => '351',
-  'p4' => '396',
-  'p5' => '0',
+  'p2' => '8',
+  'p3' => '48',
+  'p4' => '716',
+  'p5' => '731',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -32670,25 +35355,25 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'management',
-  'mlid' => '398',
-  'plid' => '356',
-  'link_path' => 'admin/structure/forum/list',
-  'router_path' => 'admin/structure/forum/list',
-  'link_title' => 'List',
+  'menu_name' => 'navigation',
+  'mlid' => '732',
+  'plid' => '25',
+  'link_path' => 'comment/%/edit/add/%/%',
+  'router_path' => 'comment/%/edit/add/%/%',
+  'link_title' => 'Edit',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '-10',
-  'depth' => '4',
+  'weight' => '0',
+  'depth' => '3',
   'customized' => '0',
-  'p1' => '1',
-  'p2' => '20',
-  'p3' => '356',
-  'p4' => '398',
+  'p1' => '3',
+  'p2' => '25',
+  'p3' => '732',
+  'p4' => '0',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -32700,23 +35385,23 @@
 ))
 ->values(array(
   'menu_name' => 'navigation',
-  'mlid' => '399',
-  'plid' => '358',
-  'link_path' => 'node/%/outline/remove',
-  'router_path' => 'node/%/outline/remove',
-  'link_title' => 'Remove from outline',
+  'mlid' => '733',
+  'plid' => '38',
+  'link_path' => 'user/%/edit/add/%/%',
+  'router_path' => 'user/%/edit/add/%/%',
+  'link_title' => 'Edit',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
   'depth' => '3',
   'customized' => '0',
-  'p1' => '5',
-  'p2' => '358',
-  'p3' => '399',
+  'p1' => '16',
+  'p2' => '38',
+  'p3' => '733',
   'p4' => '0',
   'p5' => '0',
   'p6' => '0',
@@ -32729,25 +35414,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '400',
-  'plid' => '351',
-  'link_path' => 'admin/content/book/settings',
-  'router_path' => 'admin/content/book/settings',
-  'link_title' => 'Settings',
+  'mlid' => '734',
+  'plid' => '730',
+  'link_path' => 'admin/structure/menu/manage/translation/add',
+  'router_path' => 'admin/structure/menu/manage/translation/add',
+  'link_title' => 'Add translation',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '8',
-  'depth' => '4',
+  'weight' => '0',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '9',
-  'p3' => '351',
-  'p4' => '400',
-  'p5' => '0',
+  'p2' => '20',
+  'p3' => '44',
+  'p4' => '730',
+  'p5' => '734',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -32758,24 +35443,53 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '402',
-  'plid' => '53',
-  'link_path' => 'admin/config/system/statistics',
-  'router_path' => 'admin/config/system/statistics',
-  'link_title' => 'Statistics',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:68:"Control details about what and how your site logs access statistics.";}}',
+  'mlid' => '735',
+  'plid' => '491',
+  'link_path' => 'admin/config/regional/entity_translation/translatable/%',
+  'router_path' => 'admin/config/regional/entity_translation/translatable/%',
+  'link_title' => 'Confirm change in translatability.',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:53:"Confirmation page for changing field translatability.";}}',
   'module' => 'system',
   'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '-15',
-  'depth' => '4',
+  'weight' => '0',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
   'p2' => '8',
-  'p3' => '53',
-  'p4' => '402',
+  'p3' => '48',
+  'p4' => '491',
+  'p5' => '735',
+  'p6' => '0',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+  'language' => 'und',
+  'i18n_tsid' => '0',
+))
+->values(array(
+  'menu_name' => 'navigation',
+  'mlid' => '736',
+  'plid' => '718',
+  'link_path' => 'taxonomy/term/%/translate/delete/%',
+  'router_path' => 'taxonomy/term/%/translate/delete/%',
+  'link_title' => 'Delete',
+  'options' => 'a:0:{}',
+  'module' => 'system',
+  'hidden' => '0',
+  'external' => '0',
+  'has_children' => '0',
+  'expanded' => '0',
+  'weight' => '0',
+  'depth' => '3',
+  'customized' => '0',
+  'p1' => '176',
+  'p2' => '718',
+  'p3' => '736',
+  'p4' => '0',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -32786,12 +35500,12 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'management',
-  'mlid' => '405',
-  'plid' => '366',
-  'link_path' => 'admin/structure/trigger/comment',
-  'router_path' => 'admin/structure/trigger/comment',
-  'link_title' => 'Comment',
+  'menu_name' => 'navigation',
+  'mlid' => '737',
+  'plid' => '39',
+  'link_path' => 'node/%/edit/add/%/%',
+  'router_path' => 'node/%/edit/add/%/%',
+  'link_title' => 'Edit',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
@@ -32799,12 +35513,12 @@
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '4',
+  'depth' => '3',
   'customized' => '0',
-  'p1' => '1',
-  'p2' => '20',
-  'p3' => '366',
-  'p4' => '405',
+  'p1' => '5',
+  'p2' => '39',
+  'p3' => '737',
+  'p4' => '0',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -32816,25 +35530,54 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '407',
-  'plid' => '366',
-  'link_path' => 'admin/structure/trigger/node',
-  'router_path' => 'admin/structure/trigger/node',
-  'link_title' => 'Node',
+  'mlid' => '738',
+  'plid' => '226',
+  'link_path' => 'admin/structure/taxonomy/%/list/list',
+  'router_path' => 'admin/structure/taxonomy/%/list/list',
+  'link_title' => 'Terms',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '4',
+  'weight' => '-20',
+  'depth' => '6',
   'customized' => '0',
   'p1' => '1',
   'p2' => '20',
-  'p3' => '366',
-  'p4' => '407',
-  'p5' => '0',
+  'p3' => '180',
+  'p4' => '212',
+  'p5' => '226',
+  'p6' => '738',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+  'language' => 'und',
+  'i18n_tsid' => '0',
+))
+->values(array(
+  'menu_name' => 'management',
+  'mlid' => '739',
+  'plid' => '113',
+  'link_path' => 'admin/structure/menu/manage/%/translate',
+  'router_path' => 'admin/structure/menu/manage/%/translate',
+  'link_title' => 'Translate',
+  'options' => 'a:0:{}',
+  'module' => 'system',
+  'hidden' => '-1',
+  'external' => '0',
+  'has_children' => '0',
+  'expanded' => '0',
+  'weight' => '10',
+  'depth' => '5',
+  'customized' => '0',
+  'p1' => '1',
+  'p2' => '20',
+  'p3' => '44',
+  'p4' => '113',
+  'p5' => '739',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -32845,24 +35588,24 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '408',
-  'plid' => '366',
-  'link_path' => 'admin/structure/trigger/system',
-  'router_path' => 'admin/structure/trigger/system',
-  'link_title' => 'System',
+  'mlid' => '740',
+  'plid' => '44',
+  'link_path' => 'admin/structure/menu/item/%/translate',
+  'router_path' => 'admin/structure/menu/item/%/translate',
+  'link_title' => 'Translate',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '0',
+  'weight' => '10',
   'depth' => '4',
   'customized' => '0',
   'p1' => '1',
   'p2' => '20',
-  'p3' => '366',
-  'p4' => '408',
+  'p3' => '44',
+  'p4' => '740',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -32874,11 +35617,11 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '409',
-  'plid' => '366',
-  'link_path' => 'admin/structure/trigger/taxonomy',
-  'router_path' => 'admin/structure/trigger/taxonomy',
-  'link_title' => 'Taxonomy',
+  'mlid' => '741',
+  'plid' => '226',
+  'link_path' => 'admin/structure/taxonomy/%/list/sets',
+  'router_path' => 'admin/structure/taxonomy/%/list/sets',
+  'link_title' => 'Translation sets',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
@@ -32886,14 +35629,14 @@
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '4',
+  'depth' => '6',
   'customized' => '0',
   'p1' => '1',
   'p2' => '20',
-  'p3' => '366',
-  'p4' => '409',
-  'p5' => '0',
-  'p6' => '0',
+  'p3' => '180',
+  'p4' => '212',
+  'p5' => '226',
+  'p6' => '741',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -32902,25 +35645,25 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'management',
-  'mlid' => '410',
-  'plid' => '37',
-  'link_path' => 'admin/config/development/testing',
-  'router_path' => 'admin/config/development/testing',
-  'link_title' => 'Testing',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:122:"Run tests against Drupal core and your active modules. These tests help assure that your site code is working as designed.";}}',
+  'menu_name' => 'navigation',
+  'mlid' => '742',
+  'plid' => '210',
+  'link_path' => 'taxonomy/term/%/edit/add/%/%',
+  'router_path' => 'taxonomy/term/%/edit/add/%/%',
+  'link_title' => 'Edit',
+  'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
-  'has_children' => '1',
+  'has_children' => '0',
   'expanded' => '0',
-  'weight' => '-5',
-  'depth' => '4',
+  'weight' => '10',
+  'depth' => '3',
   'customized' => '0',
-  'p1' => '1',
-  'p2' => '8',
-  'p3' => '37',
-  'p4' => '410',
+  'p1' => '176',
+  'p2' => '210',
+  'p3' => '742',
+  'p4' => '0',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -32931,12 +35674,12 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'navigation',
-  'mlid' => '411',
-  'plid' => '364',
-  'link_path' => 'user/%/track/content',
-  'router_path' => 'user/%/track/content',
-  'link_title' => 'Track content',
+  'menu_name' => 'management',
+  'mlid' => '743',
+  'plid' => '741',
+  'link_path' => 'admin/structure/taxonomy/%/list/sets/add',
+  'router_path' => 'admin/structure/taxonomy/%/list/sets/add',
+  'link_title' => 'Create new translation',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
@@ -32944,15 +35687,15 @@
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '3',
+  'depth' => '7',
   'customized' => '0',
-  'p1' => '16',
-  'p2' => '364',
-  'p3' => '411',
-  'p4' => '0',
-  'p5' => '0',
-  'p6' => '0',
-  'p7' => '0',
+  'p1' => '1',
+  'p2' => '20',
+  'p3' => '180',
+  'p4' => '212',
+  'p5' => '226',
+  'p6' => '741',
+  'p7' => '743',
   'p8' => '0',
   'p9' => '0',
   'updated' => '0',
@@ -32960,26 +35703,26 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'navigation',
-  'mlid' => '412',
-  'plid' => '364',
-  'link_path' => 'user/%/track/navigation',
-  'router_path' => 'user/%/track/navigation',
-  'link_title' => 'Track page visits',
+  'menu_name' => 'management',
+  'mlid' => '744',
+  'plid' => '146',
+  'link_path' => 'admin/structure/block/manage/%/%/translate',
+  'router_path' => 'admin/structure/block/manage/%/%/translate',
+  'link_title' => 'Translate',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '2',
-  'depth' => '3',
+  'weight' => '10',
+  'depth' => '5',
   'customized' => '0',
-  'p1' => '16',
-  'p2' => '364',
-  'p3' => '412',
-  'p4' => '0',
-  'p5' => '0',
+  'p1' => '1',
+  'p2' => '20',
+  'p3' => '28',
+  'p4' => '146',
+  'p5' => '744',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -32990,25 +35733,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '413',
-  'plid' => '48',
-  'link_path' => 'admin/config/regional/translate',
-  'router_path' => 'admin/config/regional/translate',
-  'link_title' => 'Translate interface',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:59:"Translate the built in interface and optionally other text.";}}',
+  'mlid' => '745',
+  'plid' => '212',
+  'link_path' => 'admin/structure/taxonomy/%/fields/replace/%',
+  'router_path' => 'admin/structure/taxonomy/%/fields/replace/%',
+  'link_title' => 'Replace fields',
+  'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '0',
   'external' => '0',
-  'has_children' => '1',
+  'has_children' => '0',
   'expanded' => '0',
-  'weight' => '-5',
-  'depth' => '4',
+  'weight' => '0',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '8',
-  'p3' => '48',
-  'p4' => '413',
-  'p5' => '0',
+  'p2' => '20',
+  'p3' => '180',
+  'p4' => '212',
+  'p5' => '745',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -33019,25 +35762,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '414',
-  'plid' => '366',
-  'link_path' => 'admin/structure/trigger/unassign',
-  'router_path' => 'admin/structure/trigger/unassign',
-  'link_title' => 'Unassign',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:34:"Unassign an action from a trigger.";}}',
+  'mlid' => '746',
+  'plid' => '114',
+  'link_path' => 'admin/structure/types/manage/%/fields/replace/%',
+  'router_path' => 'admin/structure/types/manage/%/fields/replace/%',
+  'link_title' => 'Replace fields',
+  'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '4',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
   'p2' => '20',
-  'p3' => '366',
-  'p4' => '414',
-  'p5' => '0',
+  'p3' => '34',
+  'p4' => '114',
+  'p5' => '746',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -33048,26 +35791,26 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '416',
-  'plid' => '366',
-  'link_path' => 'admin/structure/trigger/user',
-  'router_path' => 'admin/structure/trigger/user',
-  'link_title' => 'User',
+  'mlid' => '747',
+  'plid' => '162',
+  'link_path' => 'admin/structure/types/manage/%/comment/fields/replace/%',
+  'router_path' => 'admin/structure/types/manage/%/comment/fields/replace/%',
+  'link_title' => 'Replace fields',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '4',
+  'depth' => '6',
   'customized' => '0',
   'p1' => '1',
   'p2' => '20',
-  'p3' => '366',
-  'p4' => '416',
-  'p5' => '0',
-  'p6' => '0',
+  'p3' => '34',
+  'p4' => '114',
+  'p5' => '162',
+  'p6' => '747',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -33077,24 +35820,24 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '417',
-  'plid' => '356',
-  'link_path' => 'admin/structure/forum/settings',
-  'router_path' => 'admin/structure/forum/settings',
-  'link_title' => 'Settings',
+  'mlid' => '921',
+  'plid' => '175',
+  'link_path' => 'admin/help/references',
+  'router_path' => 'admin/help/references',
+  'link_title' => 'references',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '5',
-  'depth' => '4',
+  'weight' => '0',
+  'depth' => '3',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '20',
-  'p3' => '356',
-  'p4' => '417',
+  'p2' => '175',
+  'p3' => '921',
+  'p4' => '0',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -33106,25 +35849,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '418',
-  'plid' => '395',
-  'link_path' => 'admin/config/regional/language/add',
-  'router_path' => 'admin/config/regional/language/add',
-  'link_title' => 'Add language',
-  'options' => 'a:0:{}',
+  'mlid' => '922',
+  'plid' => '33',
+  'link_path' => 'admin/config/content/link',
+  'router_path' => 'admin/config/content/link',
+  'link_title' => 'Link settings',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:29:"Settings for the link module.";}}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '5',
-  'depth' => '5',
+  'weight' => '0',
+  'depth' => '4',
   'customized' => '0',
   'p1' => '1',
   'p2' => '8',
-  'p3' => '48',
-  'p4' => '395',
-  'p5' => '418',
+  'p3' => '33',
+  'p4' => '922',
+  'p5' => '0',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -33135,25 +35878,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '421',
-  'plid' => '353',
-  'link_path' => 'admin/structure/contact/delete/%',
-  'router_path' => 'admin/structure/contact/delete/%',
-  'link_title' => 'Delete contact',
+  'mlid' => '923',
+  'plid' => '212',
+  'link_path' => 'admin/structure/taxonomy/%/display',
+  'router_path' => 'admin/structure/taxonomy/%/display',
+  'link_title' => 'Manage display',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '4',
+  'weight' => '2',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
   'p2' => '20',
-  'p3' => '353',
-  'p4' => '421',
-  'p5' => '0',
+  'p3' => '180',
+  'p4' => '212',
+  'p5' => '923',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -33164,25 +35907,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '422',
-  'plid' => '395',
-  'link_path' => 'admin/config/regional/language/configure',
-  'router_path' => 'admin/config/regional/language/configure',
-  'link_title' => 'Detection and selection',
+  'mlid' => '924',
+  'plid' => '66',
+  'link_path' => 'admin/config/people/accounts/display',
+  'router_path' => 'admin/config/people/accounts/display',
+  'link_title' => 'Manage display',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '10',
+  'weight' => '2',
   'depth' => '5',
   'customized' => '0',
   'p1' => '1',
   'p2' => '8',
-  'p3' => '48',
-  'p4' => '395',
-  'p5' => '422',
+  'p3' => '45',
+  'p4' => '66',
+  'p5' => '924',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -33193,25 +35936,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '423',
-  'plid' => '353',
-  'link_path' => 'admin/structure/contact/edit/%',
-  'router_path' => 'admin/structure/contact/edit/%',
-  'link_title' => 'Edit contact category',
+  'mlid' => '925',
+  'plid' => '212',
+  'link_path' => 'admin/structure/taxonomy/%/fields',
+  'router_path' => 'admin/structure/taxonomy/%/fields',
+  'link_title' => 'Manage fields',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
-  'has_children' => '0',
+  'has_children' => '1',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '4',
+  'weight' => '1',
+  'depth' => '5',
   'customized' => '0',
   'p1' => '1',
   'p2' => '20',
-  'p3' => '353',
-  'p4' => '423',
-  'p5' => '0',
+  'p3' => '180',
+  'p4' => '212',
+  'p5' => '925',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -33222,25 +35965,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '424',
-  'plid' => '413',
-  'link_path' => 'admin/config/regional/translate/export',
-  'router_path' => 'admin/config/regional/translate/export',
-  'link_title' => 'Export',
+  'mlid' => '926',
+  'plid' => '66',
+  'link_path' => 'admin/config/people/accounts/fields',
+  'router_path' => 'admin/config/people/accounts/fields',
+  'link_title' => 'Manage fields',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
-  'has_children' => '0',
+  'has_children' => '1',
   'expanded' => '0',
-  'weight' => '30',
+  'weight' => '1',
   'depth' => '5',
   'customized' => '0',
   'p1' => '1',
   'p2' => '8',
-  'p3' => '48',
-  'p4' => '413',
-  'p5' => '424',
+  'p3' => '45',
+  'p4' => '66',
+  'p5' => '926',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -33251,26 +35994,26 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '425',
-  'plid' => '413',
-  'link_path' => 'admin/config/regional/translate/import',
-  'router_path' => 'admin/config/regional/translate/import',
-  'link_title' => 'Import',
+  'mlid' => '927',
+  'plid' => '923',
+  'link_path' => 'admin/structure/taxonomy/%/display/default',
+  'router_path' => 'admin/structure/taxonomy/%/display/default',
+  'link_title' => 'Default',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '20',
-  'depth' => '5',
+  'weight' => '-10',
+  'depth' => '6',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '8',
-  'p3' => '48',
-  'p4' => '413',
-  'p5' => '425',
-  'p6' => '0',
+  'p2' => '20',
+  'p3' => '180',
+  'p4' => '212',
+  'p5' => '923',
+  'p6' => '927',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -33280,11 +36023,11 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '426',
-  'plid' => '393',
-  'link_path' => 'admin/config/services/aggregator/list',
-  'router_path' => 'admin/config/services/aggregator/list',
-  'link_title' => 'List',
+  'mlid' => '928',
+  'plid' => '924',
+  'link_path' => 'admin/config/people/accounts/display/default',
+  'router_path' => 'admin/config/people/accounts/display/default',
+  'link_title' => 'Default',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
@@ -33292,14 +36035,14 @@
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '-10',
-  'depth' => '5',
+  'depth' => '6',
   'customized' => '0',
   'p1' => '1',
   'p2' => '8',
-  'p3' => '60',
-  'p4' => '393',
-  'p5' => '426',
-  'p6' => '0',
+  'p3' => '45',
+  'p4' => '66',
+  'p5' => '924',
+  'p6' => '928',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -33309,25 +36052,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '427',
-  'plid' => '395',
-  'link_path' => 'admin/config/regional/language/overview',
-  'router_path' => 'admin/config/regional/language/overview',
-  'link_title' => 'List',
+  'mlid' => '929',
+  'plid' => '114',
+  'link_path' => 'admin/structure/types/manage/%/display',
+  'router_path' => 'admin/structure/types/manage/%/display',
+  'link_title' => 'Manage display',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '0',
+  'weight' => '2',
   'depth' => '5',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '8',
-  'p3' => '48',
-  'p4' => '395',
-  'p5' => '427',
+  'p2' => '20',
+  'p3' => '34',
+  'p4' => '114',
+  'p5' => '929',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -33338,25 +36081,25 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '428',
-  'plid' => '410',
-  'link_path' => 'admin/config/development/testing/list',
-  'router_path' => 'admin/config/development/testing/list',
-  'link_title' => 'List',
+  'mlid' => '930',
+  'plid' => '114',
+  'link_path' => 'admin/structure/types/manage/%/fields',
+  'router_path' => 'admin/structure/types/manage/%/fields',
+  'link_title' => 'Manage fields',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
-  'has_children' => '0',
+  'has_children' => '1',
   'expanded' => '0',
-  'weight' => '0',
+  'weight' => '1',
   'depth' => '5',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '8',
-  'p3' => '37',
-  'p4' => '410',
-  'p5' => '428',
+  'p2' => '20',
+  'p3' => '34',
+  'p4' => '114',
+  'p5' => '930',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -33367,26 +36110,26 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '429',
-  'plid' => '74',
-  'link_path' => 'admin/config/regional/date-time/locale',
-  'router_path' => 'admin/config/regional/date-time/locale',
-  'link_title' => 'Localize',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:38:"Configure date formats for each locale";}}',
+  'mlid' => '931',
+  'plid' => '923',
+  'link_path' => 'admin/structure/taxonomy/%/display/full',
+  'router_path' => 'admin/structure/taxonomy/%/display/full',
+  'link_title' => 'Taxonomy term page',
+  'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
-  'has_children' => '1',
+  'has_children' => '0',
   'expanded' => '0',
-  'weight' => '-8',
-  'depth' => '5',
+  'weight' => '0',
+  'depth' => '6',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '8',
-  'p3' => '48',
-  'p4' => '74',
-  'p5' => '429',
-  'p6' => '0',
+  'p2' => '20',
+  'p3' => '180',
+  'p4' => '212',
+  'p5' => '923',
+  'p6' => '931',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -33396,11 +36139,11 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '430',
-  'plid' => '413',
-  'link_path' => 'admin/config/regional/translate/overview',
-  'router_path' => 'admin/config/regional/translate/overview',
-  'link_title' => 'Overview',
+  'mlid' => '932',
+  'plid' => '924',
+  'link_path' => 'admin/config/people/accounts/display/full',
+  'router_path' => 'admin/config/people/accounts/display/full',
+  'link_title' => 'User account',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
@@ -33408,14 +36151,14 @@
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '5',
+  'depth' => '6',
   'customized' => '0',
   'p1' => '1',
   'p2' => '8',
-  'p3' => '48',
-  'p4' => '413',
-  'p5' => '430',
-  'p6' => '0',
+  'p3' => '45',
+  'p4' => '66',
+  'p5' => '924',
+  'p6' => '932',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -33425,26 +36168,26 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '431',
-  'plid' => '410',
-  'link_path' => 'admin/config/development/testing/settings',
-  'router_path' => 'admin/config/development/testing/settings',
-  'link_title' => 'Settings',
+  'mlid' => '933',
+  'plid' => '925',
+  'link_path' => 'admin/structure/taxonomy/%/fields/%',
+  'router_path' => 'admin/structure/taxonomy/%/fields/%',
+  'link_title' => '',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '5',
+  'depth' => '6',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '8',
-  'p3' => '37',
-  'p4' => '410',
-  'p5' => '431',
-  'p6' => '0',
+  'p2' => '20',
+  'p3' => '180',
+  'p4' => '212',
+  'p5' => '925',
+  'p6' => '933',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -33454,26 +36197,26 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '432',
-  'plid' => '393',
-  'link_path' => 'admin/config/services/aggregator/settings',
-  'router_path' => 'admin/config/services/aggregator/settings',
-  'link_title' => 'Settings',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:129:"Configure the behavior of the feed aggregator, including when to discard feed items and how to present feed items and categories.";}}',
+  'mlid' => '934',
+  'plid' => '926',
+  'link_path' => 'admin/config/people/accounts/fields/%',
+  'router_path' => 'admin/config/people/accounts/fields/%',
+  'link_title' => '',
+  'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '-1',
+  'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '5',
+  'depth' => '6',
   'customized' => '0',
   'p1' => '1',
   'p2' => '8',
-  'p3' => '60',
-  'p4' => '393',
-  'p5' => '432',
-  'p6' => '0',
+  'p3' => '45',
+  'p4' => '66',
+  'p5' => '926',
+  'p6' => '934',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -33483,26 +36226,26 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '433',
-  'plid' => '413',
-  'link_path' => 'admin/config/regional/translate/translate',
-  'router_path' => 'admin/config/regional/translate/translate',
-  'link_title' => 'Translate',
+  'mlid' => '935',
+  'plid' => '929',
+  'link_path' => 'admin/structure/types/manage/%/display/default',
+  'router_path' => 'admin/structure/types/manage/%/display/default',
+  'link_title' => 'Default',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '10',
-  'depth' => '5',
+  'weight' => '-10',
+  'depth' => '6',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '8',
-  'p3' => '48',
-  'p4' => '413',
-  'p5' => '433',
-  'p6' => '0',
+  'p2' => '20',
+  'p3' => '34',
+  'p4' => '114',
+  'p5' => '929',
+  'p6' => '935',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -33512,11 +36255,11 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '435',
-  'plid' => '356',
-  'link_path' => 'admin/structure/forum/add/container',
-  'router_path' => 'admin/structure/forum/add/container',
-  'link_title' => 'Add container',
+  'mlid' => '936',
+  'plid' => '929',
+  'link_path' => 'admin/structure/types/manage/%/display/full',
+  'router_path' => 'admin/structure/types/manage/%/display/full',
+  'link_title' => 'Full content',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
@@ -33524,14 +36267,14 @@
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '4',
+  'depth' => '6',
   'customized' => '0',
   'p1' => '1',
   'p2' => '20',
-  'p3' => '356',
-  'p4' => '435',
-  'p5' => '0',
-  'p6' => '0',
+  'p3' => '34',
+  'p4' => '114',
+  'p5' => '929',
+  'p6' => '936',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -33541,26 +36284,26 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '436',
-  'plid' => '356',
-  'link_path' => 'admin/structure/forum/add/forum',
-  'router_path' => 'admin/structure/forum/add/forum',
-  'link_title' => 'Add forum',
+  'mlid' => '937',
+  'plid' => '929',
+  'link_path' => 'admin/structure/types/manage/%/display/print',
+  'router_path' => 'admin/structure/types/manage/%/display/print',
+  'link_title' => 'Print',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '4',
+  'weight' => '5',
+  'depth' => '6',
   'customized' => '0',
   'p1' => '1',
   'p2' => '20',
-  'p3' => '356',
-  'p4' => '436',
-  'p5' => '0',
-  'p6' => '0',
+  'p3' => '34',
+  'p4' => '114',
+  'p5' => '929',
+  'p6' => '937',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -33570,26 +36313,26 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '437',
-  'plid' => '393',
-  'link_path' => 'admin/config/services/aggregator/add/category',
-  'router_path' => 'admin/config/services/aggregator/add/category',
-  'link_title' => 'Add category',
+  'mlid' => '938',
+  'plid' => '929',
+  'link_path' => 'admin/structure/types/manage/%/display/rss',
+  'router_path' => 'admin/structure/types/manage/%/display/rss',
+  'link_title' => 'RSS',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '5',
+  'weight' => '2',
+  'depth' => '6',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '8',
-  'p3' => '60',
-  'p4' => '393',
-  'p5' => '437',
-  'p6' => '0',
+  'p2' => '20',
+  'p3' => '34',
+  'p4' => '114',
+  'p5' => '929',
+  'p6' => '938',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -33599,26 +36342,26 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '438',
-  'plid' => '393',
-  'link_path' => 'admin/config/services/aggregator/add/feed',
-  'router_path' => 'admin/config/services/aggregator/add/feed',
-  'link_title' => 'Add feed',
+  'mlid' => '939',
+  'plid' => '929',
+  'link_path' => 'admin/structure/types/manage/%/display/search_index',
+  'router_path' => 'admin/structure/types/manage/%/display/search_index',
+  'link_title' => 'Search index',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '5',
+  'weight' => '3',
+  'depth' => '6',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '8',
-  'p3' => '60',
-  'p4' => '393',
-  'p5' => '438',
-  'p6' => '0',
+  'p2' => '20',
+  'p3' => '34',
+  'p4' => '114',
+  'p5' => '929',
+  'p6' => '939',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -33628,26 +36371,55 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '440',
-  'plid' => '395',
-  'link_path' => 'admin/config/regional/language/delete/%',
-  'router_path' => 'admin/config/regional/language/delete/%',
-  'link_title' => 'Confirm',
+  'mlid' => '940',
+  'plid' => '929',
+  'link_path' => 'admin/structure/types/manage/%/display/search_result',
+  'router_path' => 'admin/structure/types/manage/%/display/search_result',
+  'link_title' => 'Search result highlighting input',
+  'options' => 'a:0:{}',
+  'module' => 'system',
+  'hidden' => '-1',
+  'external' => '0',
+  'has_children' => '0',
+  'expanded' => '0',
+  'weight' => '4',
+  'depth' => '6',
+  'customized' => '0',
+  'p1' => '1',
+  'p2' => '20',
+  'p3' => '34',
+  'p4' => '114',
+  'p5' => '929',
+  'p6' => '940',
+  'p7' => '0',
+  'p8' => '0',
+  'p9' => '0',
+  'updated' => '0',
+  'language' => 'und',
+  'i18n_tsid' => '0',
+))
+->values(array(
+  'menu_name' => 'management',
+  'mlid' => '941',
+  'plid' => '929',
+  'link_path' => 'admin/structure/types/manage/%/display/teaser',
+  'router_path' => 'admin/structure/types/manage/%/display/teaser',
+  'link_title' => 'Teaser',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '5',
+  'weight' => '1',
+  'depth' => '6',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '8',
-  'p3' => '48',
-  'p4' => '395',
-  'p5' => '440',
-  'p6' => '0',
+  'p2' => '20',
+  'p3' => '34',
+  'p4' => '114',
+  'p5' => '929',
+  'p6' => '941',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -33657,11 +36429,11 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '441',
-  'plid' => '413',
-  'link_path' => 'admin/config/regional/translate/delete/%',
-  'router_path' => 'admin/config/regional/translate/delete/%',
-  'link_title' => 'Delete string',
+  'mlid' => '942',
+  'plid' => '930',
+  'link_path' => 'admin/structure/types/manage/%/fields/%',
+  'router_path' => 'admin/structure/types/manage/%/fields/%',
+  'link_title' => '',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '0',
@@ -33669,14 +36441,14 @@
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '5',
+  'depth' => '6',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '8',
-  'p3' => '48',
-  'p4' => '413',
-  'p5' => '441',
-  'p6' => '0',
+  'p2' => '20',
+  'p3' => '34',
+  'p4' => '114',
+  'p5' => '930',
+  'p6' => '942',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -33686,27 +36458,27 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '442',
-  'plid' => '356',
-  'link_path' => 'admin/structure/forum/edit/container/%',
-  'router_path' => 'admin/structure/forum/edit/container/%',
-  'link_title' => 'Edit container',
+  'mlid' => '943',
+  'plid' => '933',
+  'link_path' => 'admin/structure/taxonomy/%/fields/%/delete',
+  'router_path' => 'admin/structure/taxonomy/%/fields/%/delete',
+  'link_title' => 'Delete',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '4',
+  'weight' => '10',
+  'depth' => '7',
   'customized' => '0',
   'p1' => '1',
   'p2' => '20',
-  'p3' => '356',
-  'p4' => '442',
-  'p5' => '0',
-  'p6' => '0',
-  'p7' => '0',
+  'p3' => '180',
+  'p4' => '212',
+  'p5' => '925',
+  'p6' => '933',
+  'p7' => '943',
   'p8' => '0',
   'p9' => '0',
   'updated' => '0',
@@ -33715,27 +36487,27 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '443',
-  'plid' => '356',
-  'link_path' => 'admin/structure/forum/edit/forum/%',
-  'router_path' => 'admin/structure/forum/edit/forum/%',
-  'link_title' => 'Edit forum',
+  'mlid' => '944',
+  'plid' => '933',
+  'link_path' => 'admin/structure/taxonomy/%/fields/%/edit',
+  'router_path' => 'admin/structure/taxonomy/%/fields/%/edit',
+  'link_title' => 'Edit',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '4',
+  'depth' => '7',
   'customized' => '0',
   'p1' => '1',
   'p2' => '20',
-  'p3' => '356',
-  'p4' => '443',
-  'p5' => '0',
-  'p6' => '0',
-  'p7' => '0',
+  'p3' => '180',
+  'p4' => '212',
+  'p5' => '925',
+  'p6' => '933',
+  'p7' => '944',
   'p8' => '0',
   'p9' => '0',
   'updated' => '0',
@@ -33744,27 +36516,27 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '444',
-  'plid' => '395',
-  'link_path' => 'admin/config/regional/language/edit/%',
-  'router_path' => 'admin/config/regional/language/edit/%',
-  'link_title' => 'Edit language',
+  'mlid' => '945',
+  'plid' => '933',
+  'link_path' => 'admin/structure/taxonomy/%/fields/%/field-settings',
+  'router_path' => 'admin/structure/taxonomy/%/fields/%/field-settings',
+  'link_title' => 'Field settings',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '5',
+  'depth' => '7',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '8',
-  'p3' => '48',
-  'p4' => '395',
-  'p5' => '444',
-  'p6' => '0',
-  'p7' => '0',
+  'p2' => '20',
+  'p3' => '180',
+  'p4' => '212',
+  'p5' => '925',
+  'p6' => '933',
+  'p7' => '945',
   'p8' => '0',
   'p9' => '0',
   'updated' => '0',
@@ -33773,27 +36545,27 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '445',
-  'plid' => '413',
-  'link_path' => 'admin/config/regional/translate/edit/%',
-  'router_path' => 'admin/config/regional/translate/edit/%',
-  'link_title' => 'Edit string',
+  'mlid' => '946',
+  'plid' => '933',
+  'link_path' => 'admin/structure/taxonomy/%/fields/%/translate',
+  'router_path' => 'admin/structure/taxonomy/%/fields/%/translate',
+  'link_title' => 'Translate',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '5',
+  'depth' => '7',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '8',
-  'p3' => '48',
-  'p4' => '413',
-  'p5' => '445',
-  'p6' => '0',
-  'p7' => '0',
+  'p2' => '20',
+  'p3' => '180',
+  'p4' => '212',
+  'p5' => '925',
+  'p6' => '933',
+  'p7' => '946',
   'p8' => '0',
   'p9' => '0',
   'updated' => '0',
@@ -33802,11 +36574,11 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '447',
-  'plid' => '393',
-  'link_path' => 'admin/config/services/aggregator/add/opml',
-  'router_path' => 'admin/config/services/aggregator/add/opml',
-  'link_title' => 'Import OPML',
+  'mlid' => '947',
+  'plid' => '933',
+  'link_path' => 'admin/structure/taxonomy/%/fields/%/widget-type',
+  'router_path' => 'admin/structure/taxonomy/%/fields/%/widget-type',
+  'link_title' => 'Widget type',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
@@ -33814,15 +36586,15 @@
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '5',
+  'depth' => '7',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '8',
-  'p3' => '60',
-  'p4' => '393',
-  'p5' => '447',
-  'p6' => '0',
-  'p7' => '0',
+  'p2' => '20',
+  'p3' => '180',
+  'p4' => '212',
+  'p5' => '925',
+  'p6' => '933',
+  'p7' => '947',
   'p8' => '0',
   'p9' => '0',
   'updated' => '0',
@@ -33831,27 +36603,27 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '448',
-  'plid' => '393',
-  'link_path' => 'admin/config/services/aggregator/remove/%',
-  'router_path' => 'admin/config/services/aggregator/remove/%',
-  'link_title' => 'Remove items',
+  'mlid' => '948',
+  'plid' => '934',
+  'link_path' => 'admin/config/people/accounts/fields/%/delete',
+  'router_path' => 'admin/config/people/accounts/fields/%/delete',
+  'link_title' => 'Delete',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '5',
+  'weight' => '10',
+  'depth' => '7',
   'customized' => '0',
   'p1' => '1',
   'p2' => '8',
-  'p3' => '60',
-  'p4' => '393',
-  'p5' => '448',
-  'p6' => '0',
-  'p7' => '0',
+  'p3' => '45',
+  'p4' => '66',
+  'p5' => '926',
+  'p6' => '934',
+  'p7' => '948',
   'p8' => '0',
   'p9' => '0',
   'updated' => '0',
@@ -33860,11 +36632,11 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '449',
-  'plid' => '422',
-  'link_path' => 'admin/config/regional/language/configure/session',
-  'router_path' => 'admin/config/regional/language/configure/session',
-  'link_title' => 'Session language detection configuration',
+  'mlid' => '949',
+  'plid' => '934',
+  'link_path' => 'admin/config/people/accounts/fields/%/edit',
+  'router_path' => 'admin/config/people/accounts/fields/%/edit',
+  'link_title' => 'Edit',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
@@ -33872,15 +36644,15 @@
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '6',
+  'depth' => '7',
   'customized' => '0',
   'p1' => '1',
   'p2' => '8',
-  'p3' => '48',
-  'p4' => '395',
-  'p5' => '422',
-  'p6' => '449',
-  'p7' => '0',
+  'p3' => '45',
+  'p4' => '66',
+  'p5' => '926',
+  'p6' => '934',
+  'p7' => '949',
   'p8' => '0',
   'p9' => '0',
   'updated' => '0',
@@ -33889,27 +36661,27 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '450',
-  'plid' => '410',
-  'link_path' => 'admin/config/development/testing/results/%',
-  'router_path' => 'admin/config/development/testing/results/%',
-  'link_title' => 'Test result',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:21:"View result of tests.";}}',
+  'mlid' => '950',
+  'plid' => '934',
+  'link_path' => 'admin/config/people/accounts/fields/%/field-settings',
+  'router_path' => 'admin/config/people/accounts/fields/%/field-settings',
+  'link_title' => 'Field settings',
+  'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '5',
+  'depth' => '7',
   'customized' => '0',
   'p1' => '1',
   'p2' => '8',
-  'p3' => '37',
-  'p4' => '410',
-  'p5' => '450',
-  'p6' => '0',
-  'p7' => '0',
+  'p3' => '45',
+  'p4' => '66',
+  'p5' => '926',
+  'p6' => '934',
+  'p7' => '950',
   'p8' => '0',
   'p9' => '0',
   'updated' => '0',
@@ -33918,11 +36690,11 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '451',
-  'plid' => '422',
-  'link_path' => 'admin/config/regional/language/configure/url',
-  'router_path' => 'admin/config/regional/language/configure/url',
-  'link_title' => 'URL language detection configuration',
+  'mlid' => '951',
+  'plid' => '934',
+  'link_path' => 'admin/config/people/accounts/fields/%/translate',
+  'router_path' => 'admin/config/people/accounts/fields/%/translate',
+  'link_title' => 'Translate',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
@@ -33930,15 +36702,15 @@
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '6',
+  'depth' => '7',
   'customized' => '0',
   'p1' => '1',
   'p2' => '8',
-  'p3' => '48',
-  'p4' => '395',
-  'p5' => '422',
-  'p6' => '451',
-  'p7' => '0',
+  'p3' => '45',
+  'p4' => '66',
+  'p5' => '926',
+  'p6' => '934',
+  'p7' => '951',
   'p8' => '0',
   'p9' => '0',
   'updated' => '0',
@@ -33947,27 +36719,27 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '452',
-  'plid' => '393',
-  'link_path' => 'admin/config/services/aggregator/update/%',
-  'router_path' => 'admin/config/services/aggregator/update/%',
-  'link_title' => 'Update items',
+  'mlid' => '952',
+  'plid' => '934',
+  'link_path' => 'admin/config/people/accounts/fields/%/widget-type',
+  'router_path' => 'admin/config/people/accounts/fields/%/widget-type',
+  'link_title' => 'Widget type',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '5',
+  'depth' => '7',
   'customized' => '0',
   'p1' => '1',
   'p2' => '8',
-  'p3' => '60',
-  'p4' => '393',
-  'p5' => '452',
-  'p6' => '0',
-  'p7' => '0',
+  'p3' => '45',
+  'p4' => '66',
+  'p5' => '926',
+  'p6' => '934',
+  'p7' => '952',
   'p8' => '0',
   'p9' => '0',
   'updated' => '0',
@@ -33976,26 +36748,26 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '458',
-  'plid' => '393',
-  'link_path' => 'admin/config/services/aggregator/edit/category/%',
-  'router_path' => 'admin/config/services/aggregator/edit/category/%',
-  'link_title' => 'Edit category',
+  'mlid' => '953',
+  'plid' => '161',
+  'link_path' => 'admin/structure/types/manage/%/comment/display/default',
+  'router_path' => 'admin/structure/types/manage/%/comment/display/default',
+  'link_title' => 'Default',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '5',
+  'weight' => '-10',
+  'depth' => '6',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '8',
-  'p3' => '60',
-  'p4' => '393',
-  'p5' => '458',
-  'p6' => '0',
+  'p2' => '20',
+  'p3' => '34',
+  'p4' => '114',
+  'p5' => '161',
+  'p6' => '953',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -34005,26 +36777,26 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '459',
-  'plid' => '393',
-  'link_path' => 'admin/config/services/aggregator/edit/feed/%',
-  'router_path' => 'admin/config/services/aggregator/edit/feed/%',
-  'link_title' => 'Edit feed',
+  'mlid' => '954',
+  'plid' => '161',
+  'link_path' => 'admin/structure/types/manage/%/comment/display/full',
+  'router_path' => 'admin/structure/types/manage/%/comment/display/full',
+  'link_title' => 'Full comment',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '5',
+  'depth' => '6',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '8',
-  'p3' => '60',
-  'p4' => '393',
-  'p5' => '459',
-  'p6' => '0',
+  'p2' => '20',
+  'p3' => '34',
+  'p4' => '114',
+  'p5' => '161',
+  'p6' => '954',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -34034,12 +36806,12 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '461',
-  'plid' => '429',
-  'link_path' => 'admin/config/regional/date-time/locale/%/edit',
-  'router_path' => 'admin/config/regional/date-time/locale/%/edit',
-  'link_title' => 'Localize date formats',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:38:"Configure date formats for each locale";}}',
+  'mlid' => '955',
+  'plid' => '162',
+  'link_path' => 'admin/structure/types/manage/%/comment/fields/%',
+  'router_path' => 'admin/structure/types/manage/%/comment/fields/%',
+  'link_title' => '',
+  'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '0',
   'external' => '0',
@@ -34049,11 +36821,11 @@
   'depth' => '6',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '8',
-  'p3' => '48',
-  'p4' => '74',
-  'p5' => '429',
-  'p6' => '461',
+  'p2' => '20',
+  'p3' => '34',
+  'p4' => '114',
+  'p5' => '162',
+  'p6' => '955',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
@@ -34063,27 +36835,27 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '462',
-  'plid' => '303',
-  'link_path' => 'admin/structure/types/manage/%/display/print',
-  'router_path' => 'admin/structure/types/manage/%/display/print',
-  'link_title' => 'Print',
+  'mlid' => '956',
+  'plid' => '942',
+  'link_path' => 'admin/structure/types/manage/%/fields/%/delete',
+  'router_path' => 'admin/structure/types/manage/%/fields/%/delete',
+  'link_title' => 'Delete',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '5',
-  'depth' => '6',
+  'weight' => '10',
+  'depth' => '7',
   'customized' => '0',
   'p1' => '1',
   'p2' => '20',
   'p3' => '34',
   'p4' => '114',
-  'p5' => '303',
-  'p6' => '462',
-  'p7' => '0',
+  'p5' => '930',
+  'p6' => '942',
+  'p7' => '956',
   'p8' => '0',
   'p9' => '0',
   'updated' => '0',
@@ -34092,27 +36864,27 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '463',
-  'plid' => '429',
-  'link_path' => 'admin/config/regional/date-time/locale/%/reset',
-  'router_path' => 'admin/config/regional/date-time/locale/%/reset',
-  'link_title' => 'Reset date formats',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:47:"Reset localized date formats to global defaults";}}',
+  'mlid' => '957',
+  'plid' => '942',
+  'link_path' => 'admin/structure/types/manage/%/fields/%/edit',
+  'router_path' => 'admin/structure/types/manage/%/fields/%/edit',
+  'link_title' => 'Edit',
+  'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '6',
+  'depth' => '7',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '8',
-  'p3' => '48',
-  'p4' => '74',
-  'p5' => '429',
-  'p6' => '463',
-  'p7' => '0',
+  'p2' => '20',
+  'p3' => '34',
+  'p4' => '114',
+  'p5' => '930',
+  'p6' => '942',
+  'p7' => '957',
   'p8' => '0',
   'p9' => '0',
   'updated' => '0',
@@ -34120,28 +36892,28 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'navigation',
-  'mlid' => '465',
-  'plid' => '6',
-  'link_path' => 'node/add/test-content-type',
-  'router_path' => 'node/add/test-content-type',
-  'link_title' => 'Test content type',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:49:"This is the description of the test content type.";}}',
+  'menu_name' => 'management',
+  'mlid' => '958',
+  'plid' => '942',
+  'link_path' => 'admin/structure/types/manage/%/fields/%/field-settings',
+  'router_path' => 'admin/structure/types/manage/%/fields/%/field-settings',
+  'link_title' => 'Field settings',
+  'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '2',
+  'depth' => '7',
   'customized' => '0',
-  'p1' => '6',
-  'p2' => '465',
-  'p3' => '0',
-  'p4' => '0',
-  'p5' => '0',
-  'p6' => '0',
-  'p7' => '0',
+  'p1' => '1',
+  'p2' => '20',
+  'p3' => '34',
+  'p4' => '114',
+  'p5' => '930',
+  'p6' => '942',
+  'p7' => '958',
   'p8' => '0',
   'p9' => '0',
   'updated' => '0',
@@ -34150,27 +36922,27 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '466',
-  'plid' => '44',
-  'link_path' => 'admin/structure/menu/manage/menu-test-menu',
-  'router_path' => 'admin/structure/menu/manage/%',
-  'link_title' => 'Test Menu',
+  'mlid' => '959',
+  'plid' => '942',
+  'link_path' => 'admin/structure/types/manage/%/fields/%/translate',
+  'router_path' => 'admin/structure/types/manage/%/fields/%/translate',
+  'link_title' => 'Translate',
   'options' => 'a:0:{}',
-  'module' => 'menu',
-  'hidden' => '0',
+  'module' => 'system',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '4',
+  'depth' => '7',
   'customized' => '0',
   'p1' => '1',
   'p2' => '20',
-  'p3' => '44',
-  'p4' => '466',
-  'p5' => '0',
-  'p6' => '0',
-  'p7' => '0',
+  'p3' => '34',
+  'p4' => '114',
+  'p5' => '930',
+  'p6' => '942',
+  'p7' => '959',
   'p8' => '0',
   'p9' => '0',
   'updated' => '0',
@@ -34178,28 +36950,28 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'menu-test-menu',
-  'mlid' => '467',
-  'plid' => '469',
-  'link_path' => 'http://google.com',
-  'router_path' => '',
-  'link_title' => 'Google',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:6:"Google";}}',
-  'module' => 'menu',
-  'hidden' => '0',
-  'external' => '1',
+  'menu_name' => 'management',
+  'mlid' => '960',
+  'plid' => '942',
+  'link_path' => 'admin/structure/types/manage/%/fields/%/widget-type',
+  'router_path' => 'admin/structure/types/manage/%/fields/%/widget-type',
+  'link_title' => 'Widget type',
+  'options' => 'a:0:{}',
+  'module' => 'system',
+  'hidden' => '-1',
+  'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '2',
-  'customized' => '1',
-  'p1' => '469',
-  'p2' => '467',
-  'p3' => '0',
-  'p4' => '0',
-  'p5' => '0',
-  'p6' => '0',
-  'p7' => '0',
+  'depth' => '7',
+  'customized' => '0',
+  'p1' => '1',
+  'p2' => '20',
+  'p3' => '34',
+  'p4' => '114',
+  'p5' => '930',
+  'p6' => '942',
+  'p7' => '960',
   'p8' => '0',
   'p9' => '0',
   'updated' => '0',
@@ -34207,57 +36979,28 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'menu-test-menu',
-  'mlid' => '468',
-  'plid' => '0',
-  'link_path' => 'http://yahoo.com',
-  'router_path' => '',
-  'link_title' => 'Yahoo',
-  'options' => 'a:2:{s:10:"attributes";a:1:{s:5:"title";s:19:"english description";}s:5:"alter";b:1;}',
-  'module' => 'menu',
-  'hidden' => '0',
-  'external' => '1',
-  'has_children' => '0',
-  'expanded' => '0',
-  'weight' => '0',
-  'depth' => '1',
-  'customized' => '1',
-  'p1' => '468',
-  'p2' => '0',
-  'p3' => '0',
-  'p4' => '0',
-  'p5' => '0',
-  'p6' => '0',
-  'p7' => '0',
-  'p8' => '0',
-  'p9' => '0',
-  'updated' => '0',
-  'language' => 'en',
-  'i18n_tsid' => '1',
-))
-->values(array(
-  'menu_name' => 'menu-test-menu',
-  'mlid' => '469',
-  'plid' => '0',
-  'link_path' => 'http://bing.com',
-  'router_path' => '',
-  'link_title' => 'Bing',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:4:"Bing";}}',
-  'module' => 'menu',
-  'hidden' => '0',
-  'external' => '1',
+  'menu_name' => 'management',
+  'mlid' => '961',
+  'plid' => '955',
+  'link_path' => 'admin/structure/types/manage/%/comment/fields/%/delete',
+  'router_path' => 'admin/structure/types/manage/%/comment/fields/%/delete',
+  'link_title' => 'Delete',
+  'options' => 'a:0:{}',
+  'module' => 'system',
+  'hidden' => '-1',
+  'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '1',
-  'customized' => '1',
-  'p1' => '469',
-  'p2' => '0',
-  'p3' => '0',
-  'p4' => '0',
-  'p5' => '0',
-  'p6' => '0',
-  'p7' => '0',
+  'weight' => '10',
+  'depth' => '7',
+  'customized' => '0',
+  'p1' => '1',
+  'p2' => '20',
+  'p3' => '34',
+  'p4' => '114',
+  'p5' => '162',
+  'p6' => '955',
+  'p7' => '961',
   'p8' => '0',
   'p9' => '0',
   'updated' => '0',
@@ -34265,28 +37008,28 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'menu-test-menu',
-  'mlid' => '470',
-  'plid' => '469',
-  'link_path' => 'http://ask.com',
-  'router_path' => '',
-  'link_title' => 'Ask',
+  'menu_name' => 'management',
+  'mlid' => '962',
+  'plid' => '955',
+  'link_path' => 'admin/structure/types/manage/%/comment/fields/%/edit',
+  'router_path' => 'admin/structure/types/manage/%/comment/fields/%/edit',
+  'link_title' => 'Edit',
   'options' => 'a:0:{}',
-  'module' => 'menu',
-  'hidden' => '0',
-  'external' => '1',
+  'module' => 'system',
+  'hidden' => '-1',
+  'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '2',
-  'customized' => '1',
-  'p1' => '469',
-  'p2' => '470',
-  'p3' => '0',
-  'p4' => '0',
-  'p5' => '0',
-  'p6' => '0',
-  'p7' => '0',
+  'depth' => '7',
+  'customized' => '0',
+  'p1' => '1',
+  'p2' => '20',
+  'p3' => '34',
+  'p4' => '114',
+  'p5' => '162',
+  'p6' => '955',
+  'p7' => '962',
   'p8' => '0',
   'p9' => '0',
   'updated' => '0',
@@ -34294,28 +37037,28 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'shortcut-set-2',
-  'mlid' => '472',
-  'plid' => '0',
-  'link_path' => 'admin/help',
-  'router_path' => 'admin/help',
-  'link_title' => 'Help',
+  'menu_name' => 'management',
+  'mlid' => '963',
+  'plid' => '955',
+  'link_path' => 'admin/structure/types/manage/%/comment/fields/%/field-settings',
+  'router_path' => 'admin/structure/types/manage/%/comment/fields/%/field-settings',
+  'link_title' => 'Field settings',
   'options' => 'a:0:{}',
-  'module' => 'menu',
-  'hidden' => '0',
+  'module' => 'system',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '-49',
-  'depth' => '1',
+  'weight' => '0',
+  'depth' => '7',
   'customized' => '0',
-  'p1' => '472',
-  'p2' => '0',
-  'p3' => '0',
-  'p4' => '0',
-  'p5' => '0',
-  'p6' => '0',
-  'p7' => '0',
+  'p1' => '1',
+  'p2' => '20',
+  'p3' => '34',
+  'p4' => '114',
+  'p5' => '162',
+  'p6' => '955',
+  'p7' => '963',
   'p8' => '0',
   'p9' => '0',
   'updated' => '0',
@@ -34323,28 +37066,28 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'shortcut-set-2',
-  'mlid' => '473',
-  'plid' => '0',
-  'link_path' => 'admin/people',
-  'router_path' => 'admin/people',
-  'link_title' => 'People',
+  'menu_name' => 'management',
+  'mlid' => '964',
+  'plid' => '955',
+  'link_path' => 'admin/structure/types/manage/%/comment/fields/%/translate',
+  'router_path' => 'admin/structure/types/manage/%/comment/fields/%/translate',
+  'link_title' => 'Translate',
   'options' => 'a:0:{}',
-  'module' => 'menu',
-  'hidden' => '0',
+  'module' => 'system',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '-50',
-  'depth' => '1',
+  'weight' => '0',
+  'depth' => '7',
   'customized' => '0',
-  'p1' => '473',
-  'p2' => '0',
-  'p3' => '0',
-  'p4' => '0',
-  'p5' => '0',
-  'p6' => '0',
-  'p7' => '0',
+  'p1' => '1',
+  'p2' => '20',
+  'p3' => '34',
+  'p4' => '114',
+  'p5' => '162',
+  'p6' => '955',
+  'p7' => '964',
   'p8' => '0',
   'p9' => '0',
   'updated' => '0',
@@ -34352,28 +37095,28 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'navigation',
-  'mlid' => '474',
-  'plid' => '4',
-  'link_path' => 'filter/tips/%',
-  'router_path' => 'filter/tips/%',
-  'link_title' => 'Compose tips',
+  'menu_name' => 'management',
+  'mlid' => '965',
+  'plid' => '955',
+  'link_path' => 'admin/structure/types/manage/%/comment/fields/%/widget-type',
+  'router_path' => 'admin/structure/types/manage/%/comment/fields/%/widget-type',
+  'link_title' => 'Widget type',
   'options' => 'a:0:{}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '2',
+  'depth' => '7',
   'customized' => '0',
-  'p1' => '4',
-  'p2' => '474',
-  'p3' => '0',
-  'p4' => '0',
-  'p5' => '0',
-  'p6' => '0',
-  'p7' => '0',
+  'p1' => '1',
+  'p2' => '20',
+  'p3' => '34',
+  'p4' => '114',
+  'p5' => '162',
+  'p6' => '955',
+  'p7' => '965',
   'p8' => '0',
   'p9' => '0',
   'updated' => '0',
@@ -34382,11 +37125,11 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '475',
+  'mlid' => '984',
   'plid' => '175',
-  'link_path' => 'admin/help/php',
-  'router_path' => 'admin/help/php',
-  'link_title' => 'php',
+  'link_path' => 'admin/help/simpletest',
+  'router_path' => 'admin/help/simpletest',
+  'link_title' => 'simpletest',
   'options' => 'a:0:{}',
   'module' => 'system',
   'hidden' => '-1',
@@ -34398,7 +37141,7 @@
   'customized' => '0',
   'p1' => '1',
   'p2' => '175',
-  'p3' => '475',
+  'p3' => '984',
   'p4' => '0',
   'p5' => '0',
   'p6' => '0',
@@ -34411,24 +37154,24 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '478',
-  'plid' => '20',
-  'link_path' => 'admin/content',
-  'router_path' => 'admin/content',
-  'link_title' => 'custom link test',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:0:"";}}',
-  'module' => 'menu',
+  'mlid' => '985',
+  'plid' => '37',
+  'link_path' => 'admin/config/development/testing',
+  'router_path' => 'admin/config/development/testing',
+  'link_title' => 'Testing',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:122:"Run tests against Drupal core and your active modules. These tests help assure that your site code is working as designed.";}}',
+  'module' => 'system',
   'hidden' => '0',
   'external' => '0',
-  'has_children' => '0',
+  'has_children' => '1',
   'expanded' => '0',
-  'weight' => '0',
-  'depth' => '3',
-  'customized' => '1',
+  'weight' => '-5',
+  'depth' => '4',
+  'customized' => '0',
   'p1' => '1',
-  'p2' => '20',
-  'p3' => '478',
-  'p4' => '0',
+  'p2' => '8',
+  'p3' => '37',
+  'p4' => '985',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -34439,26 +37182,26 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'navigation',
-  'mlid' => '479',
-  'plid' => '0',
-  'link_path' => 'node/2',
-  'router_path' => 'node/%',
-  'link_title' => 'node link test',
-  'options' => 'a:2:{s:10:"attributes";a:1:{s:5:"title";s:6:"node 2";}s:5:"query";a:2:{s:4:"name";s:6:"ferret";s:5:"color";s:6:"purple";}}',
-  'module' => 'menu',
-  'hidden' => '0',
+  'menu_name' => 'management',
+  'mlid' => '986',
+  'plid' => '985',
+  'link_path' => 'admin/config/development/testing/list',
+  'router_path' => 'admin/config/development/testing/list',
+  'link_title' => 'List',
+  'options' => 'a:0:{}',
+  'module' => 'system',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '3',
-  'depth' => '1',
-  'customized' => '1',
-  'p1' => '479',
-  'p2' => '0',
-  'p3' => '0',
-  'p4' => '0',
-  'p5' => '0',
+  'weight' => '0',
+  'depth' => '5',
+  'customized' => '0',
+  'p1' => '1',
+  'p2' => '8',
+  'p3' => '37',
+  'p4' => '985',
+  'p5' => '986',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -34468,26 +37211,26 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'book-toc-1',
-  'mlid' => '480',
-  'plid' => '0',
-  'link_path' => 'node/4',
-  'router_path' => 'node/%',
-  'link_title' => 'Test top book title',
+  'menu_name' => 'management',
+  'mlid' => '987',
+  'plid' => '985',
+  'link_path' => 'admin/config/development/testing/settings',
+  'router_path' => 'admin/config/development/testing/settings',
+  'link_title' => 'Settings',
   'options' => 'a:0:{}',
-  'module' => 'book',
-  'hidden' => '0',
+  'module' => 'system',
+  'hidden' => '-1',
   'external' => '0',
-  'has_children' => '1',
+  'has_children' => '0',
   'expanded' => '0',
-  'weight' => '-10',
-  'depth' => '1',
+  'weight' => '0',
+  'depth' => '5',
   'customized' => '0',
-  'p1' => '480',
-  'p2' => '0',
-  'p3' => '0',
-  'p4' => '0',
-  'p5' => '0',
+  'p1' => '1',
+  'p2' => '8',
+  'p3' => '37',
+  'p4' => '985',
+  'p5' => '987',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -34497,26 +37240,26 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'book-toc-1',
-  'mlid' => '481',
-  'plid' => '480',
-  'link_path' => 'node/6',
-  'router_path' => 'node/%',
-  'link_title' => 'Test book title child 1',
-  'options' => 'a:0:{}',
-  'module' => 'book',
+  'menu_name' => 'management',
+  'mlid' => '988',
+  'plid' => '985',
+  'link_path' => 'admin/config/development/testing/results/%',
+  'router_path' => 'admin/config/development/testing/results/%',
+  'link_title' => 'Test result',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:21:"View result of tests.";}}',
+  'module' => 'system',
   'hidden' => '0',
   'external' => '0',
-  'has_children' => '1',
+  'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '2',
+  'depth' => '5',
   'customized' => '0',
-  'p1' => '480',
-  'p2' => '481',
-  'p3' => '0',
-  'p4' => '0',
-  'p5' => '0',
+  'p1' => '1',
+  'p2' => '8',
+  'p3' => '37',
+  'p4' => '985',
+  'p5' => '988',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
@@ -34526,14 +37269,14 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'book-toc-1',
-  'mlid' => '482',
-  'plid' => '481',
-  'link_path' => 'node/2',
-  'router_path' => 'node/%',
-  'link_title' => 'Test book title child 1.1',
-  'options' => 'a:0:{}',
-  'module' => 'book',
+  'menu_name' => 'management',
+  'mlid' => '989',
+  'plid' => '20',
+  'link_path' => 'admin/structure/trigger',
+  'router_path' => 'admin/structure/trigger',
+  'link_title' => 'Triggers',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:34:"Configure when to execute actions.";}}',
+  'module' => 'system',
   'hidden' => '0',
   'external' => '0',
   'has_children' => '0',
@@ -34541,9 +37284,9 @@
   'weight' => '0',
   'depth' => '3',
   'customized' => '0',
-  'p1' => '480',
-  'p2' => '481',
-  'p3' => '482',
+  'p1' => '1',
+  'p2' => '20',
+  'p3' => '989',
   'p4' => '0',
   'p5' => '0',
   'p6' => '0',
@@ -34555,24 +37298,24 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'book-toc-2',
-  'mlid' => '483',
-  'plid' => '481',
-  'link_path' => 'node/1',
-  'router_path' => 'node/%',
-  'link_title' => 'Test book title 2',
+  'menu_name' => 'management',
+  'mlid' => '990',
+  'plid' => '175',
+  'link_path' => 'admin/help/trigger',
+  'router_path' => 'admin/help/trigger',
+  'link_title' => 'trigger',
   'options' => 'a:0:{}',
-  'module' => 'book',
-  'hidden' => '0',
+  'module' => 'system',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
   'depth' => '3',
   'customized' => '0',
-  'p1' => '480',
-  'p2' => '481',
-  'p3' => '483',
+  'p1' => '1',
+  'p2' => '175',
+  'p3' => '990',
   'p4' => '0',
   'p5' => '0',
   'p6' => '0',
@@ -34584,25 +37327,25 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'navigation',
-  'mlid' => '484',
-  'plid' => '0',
-  'link_path' => 'node/2',
-  'router_path' => 'node/%',
-  'link_title' => 'The thing about Deep Space 9',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:0:"";}}',
-  'module' => 'menu',
-  'hidden' => '0',
+  'menu_name' => 'management',
+  'mlid' => '991',
+  'plid' => '989',
+  'link_path' => 'admin/structure/trigger/comment',
+  'router_path' => 'admin/structure/trigger/comment',
+  'link_title' => 'Comment',
+  'options' => 'a:0:{}',
+  'module' => 'system',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '9',
-  'depth' => '1',
-  'customized' => '1',
-  'p1' => '484',
-  'p2' => '0',
-  'p3' => '0',
-  'p4' => '0',
+  'weight' => '0',
+  'depth' => '4',
+  'customized' => '0',
+  'p1' => '1',
+  'p2' => '20',
+  'p3' => '989',
+  'p4' => '991',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -34613,25 +37356,25 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'navigation',
-  'mlid' => '485',
-  'plid' => '0',
-  'link_path' => 'node/3',
-  'router_path' => 'node/%',
-  'link_title' => 'is - The thing about Deep Space 9',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:0:"";}}',
-  'module' => 'menu',
-  'hidden' => '0',
+  'menu_name' => 'management',
+  'mlid' => '992',
+  'plid' => '989',
+  'link_path' => 'admin/structure/trigger/node',
+  'router_path' => 'admin/structure/trigger/node',
+  'link_title' => 'Node',
+  'options' => 'a:0:{}',
+  'module' => 'system',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '10',
-  'depth' => '1',
-  'customized' => '1',
-  'p1' => '485',
-  'p2' => '0',
-  'p3' => '0',
-  'p4' => '0',
+  'weight' => '0',
+  'depth' => '4',
+  'customized' => '0',
+  'p1' => '1',
+  'p2' => '20',
+  'p3' => '989',
+  'p4' => '992',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -34642,25 +37385,25 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'navigation',
-  'mlid' => '486',
-  'plid' => '0',
-  'link_path' => 'node/4',
-  'router_path' => 'node/%',
-  'link_title' => 'is - The thing about Firefly',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:0:"";}}',
-  'module' => 'menu',
-  'hidden' => '0',
+  'menu_name' => 'management',
+  'mlid' => '993',
+  'plid' => '989',
+  'link_path' => 'admin/structure/trigger/system',
+  'router_path' => 'admin/structure/trigger/system',
+  'link_title' => 'System',
+  'options' => 'a:0:{}',
+  'module' => 'system',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '11',
-  'depth' => '1',
-  'customized' => '1',
-  'p1' => '486',
-  'p2' => '0',
-  'p3' => '0',
-  'p4' => '0',
+  'weight' => '0',
+  'depth' => '4',
+  'customized' => '0',
+  'p1' => '1',
+  'p2' => '20',
+  'p3' => '989',
+  'p4' => '993',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -34671,25 +37414,25 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'navigation',
-  'mlid' => '487',
-  'plid' => '0',
-  'link_path' => 'node/5',
-  'router_path' => 'node/%',
-  'link_title' => 'en - The thing about Firefly',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:0:"";}}',
-  'module' => 'menu',
-  'hidden' => '0',
+  'menu_name' => 'management',
+  'mlid' => '994',
+  'plid' => '989',
+  'link_path' => 'admin/structure/trigger/taxonomy',
+  'router_path' => 'admin/structure/trigger/taxonomy',
+  'link_title' => 'Taxonomy',
+  'options' => 'a:0:{}',
+  'module' => 'system',
+  'hidden' => '-1',
   'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
-  'weight' => '12',
-  'depth' => '1',
-  'customized' => '1',
-  'p1' => '487',
-  'p2' => '0',
-  'p3' => '0',
-  'p4' => '0',
+  'weight' => '0',
+  'depth' => '4',
+  'customized' => '0',
+  'p1' => '1',
+  'p2' => '20',
+  'p3' => '989',
+  'p4' => '994',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -34701,24 +37444,24 @@
 ))
 ->values(array(
   'menu_name' => 'management',
-  'mlid' => '491',
-  'plid' => '48',
-  'link_path' => 'admin/config/regional/entity_translation',
-  'router_path' => 'admin/config/regional/entity_translation',
-  'link_title' => 'Entity translation',
-  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:83:"Configure which entities can be translated and enable or disable language fallback.";}}',
+  'mlid' => '995',
+  'plid' => '989',
+  'link_path' => 'admin/structure/trigger/unassign',
+  'router_path' => 'admin/structure/trigger/unassign',
+  'link_title' => 'Unassign',
+  'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:34:"Unassign an action from a trigger.";}}',
   'module' => 'system',
-  'hidden' => '0',
+  'hidden' => '-1',
   'external' => '0',
-  'has_children' => '1',
+  'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
   'depth' => '4',
   'customized' => '0',
   'p1' => '1',
-  'p2' => '8',
-  'p3' => '48',
-  'p4' => '491',
+  'p2' => '20',
+  'p3' => '989',
+  'p4' => '995',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
@@ -34729,53 +37472,53 @@
   'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'menu-test-menu',
-  'mlid' => '700',
-  'plid' => '0',
-  'link_path' => 'http://yahoo.com',
-  'router_path' => '',
-  'link_title' => 'fr - Yahoo',
-  'options' => 'a:2:{s:10:"attributes";a:1:{s:5:"title";s:16:"fr - description";}s:5:"alter";b:1;}',
-  'module' => 'menu',
-  'hidden' => '0',
-  'external' => '1',
+  'menu_name' => 'management',
+  'mlid' => '996',
+  'plid' => '989',
+  'link_path' => 'admin/structure/trigger/user',
+  'router_path' => 'admin/structure/trigger/user',
+  'link_title' => 'User',
+  'options' => 'a:0:{}',
+  'module' => 'system',
+  'hidden' => '-1',
+  'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '1',
-  'customized' => '1',
-  'p1' => '468',
-  'p2' => '0',
-  'p3' => '0',
-  'p4' => '0',
+  'depth' => '4',
+  'customized' => '0',
+  'p1' => '1',
+  'p2' => '20',
+  'p3' => '989',
+  'p4' => '996',
   'p5' => '0',
   'p6' => '0',
   'p7' => '0',
   'p8' => '0',
   'p9' => '0',
   'updated' => '0',
-  'language' => 'fr',
-  'i18n_tsid' => '1',
+  'language' => 'und',
+  'i18n_tsid' => '0',
 ))
 ->values(array(
-  'menu_name' => 'menu-test-menu',
-  'mlid' => '701',
-  'plid' => '0',
-  'link_path' => 'http://yahoo.com',
-  'router_path' => '',
-  'link_title' => 'is - Yahoo',
-  'options' => 'a:2:{s:10:"attributes";a:1:{s:5:"title";s:16:"is - description";}s:5:"alter";b:1;}',
-  'module' => 'menu',
-  'hidden' => '0',
-  'external' => '1',
+  'menu_name' => 'management',
+  'mlid' => '997',
+  'plid' => '175',
+  'link_path' => 'admin/help/syslog',
+  'router_path' => 'admin/help/syslog',
+  'link_title' => 'syslog',
+  'options' => 'a:0:{}',
+  'module' => 'system',
+  'hidden' => '-1',
+  'external' => '0',
   'has_children' => '0',
   'expanded' => '0',
   'weight' => '0',
-  'depth' => '1',
-  'customized' => '1',
-  'p1' => '468',
-  'p2' => '0',
-  'p3' => '0',
+  'depth' => '3',
+  'customized' => '0',
+  'p1' => '1',
+  'p2' => '175',
+  'p3' => '997',
   'p4' => '0',
   'p5' => '0',
   'p6' => '0',
@@ -34783,8 +37526,8 @@
   'p8' => '0',
   'p9' => '0',
   'updated' => '0',
-  'language' => 'is',
-  'i18n_tsid' => '1',
+  'language' => 'und',
+  'i18n_tsid' => '0',
 ))
 ->execute();
 $connection->schema()->createTable('menu_router', array(
@@ -35159,7 +37902,7 @@
   'load_functions' => '',
   'to_arg_functions' => '',
   'access_callback' => '_system_themes_access',
-  'access_arguments' => 'a:1:{i:0;O:8:"stdClass":12:{s:8:"filename";s:25:"themes/bartik/bartik.info";s:4:"name";s:6:"bartik";s:4:"type";s:5:"theme";s:5:"owner";s:45:"themes/engines/phptemplate/phptemplate.engine";s:6:"status";s:1:"1";s:9:"bootstrap";s:1:"0";s:14:"schema_version";s:2:"-1";s:6:"weight";s:1:"0";s:4:"info";a:18:{s:4:"name";s:6:"Bartik";s:11:"description";s:48:"A flexible, recolorable theme with many regions.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:11:"stylesheets";a:2:{s:3:"all";a:3:{s:14:"css/layout.css";s:28:"themes/bartik/css/layout.css";s:13:"css/style.css";s:27:"themes/bartik/css/style.css";s:14:"css/colors.css";s:28:"themes/bartik/css/colors.css";}s:5:"print";a:1:{s:13:"css/print.css";s:27:"themes/bartik/css/print.css";}}s:7:"regions";a:17:{s:6:"header";s:6:"Header";s:4:"help";s:4:"Help";s:8:"page_top";s:8:"Page top";s:11:"page_bottom";s:11:"Page bottom";s:11:"highlighted";s:11:"Highlighted";s:8:"featured";s:8:"Featured";s:7:"content";s:7:"Content";s:13:"sidebar_first";s:13:"Sidebar first";s:14:"sidebar_second";s:14:"Sidebar second";s:14:"triptych_first";s:14:"Triptych first";s:15:"triptych_middle";s:15:"Triptych middle";s:13:"triptych_last";s:13:"Triptych last";s:18:"footer_firstcolumn";s:19:"Footer first column";s:19:"footer_secondcolumn";s:20:"Footer second column";s:18:"footer_thirdcolumn";s:19:"Footer third column";s:19:"footer_fourthcolumn";s:20:"Footer fourth column";s:6:"footer";s:6:"Footer";}s:8:"settings";a:1:{s:20:"shortcut_module_link";s:1:"0";}s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:6:"engine";s:11:"phptemplate";s:8:"features";a:9:{i:0;s:4:"logo";i:1;s:7:"favicon";i:2;s:4:"name";i:3;s:6:"slogan";i:4;s:17:"node_user_picture";i:5;s:20:"comment_user_picture";i:6;s:25:"comment_user_verification";i:7;s:9:"main_menu";i:8;s:14:"secondary_menu";}s:10:"screenshot";s:28:"themes/bartik/screenshot.png";s:3:"php";s:5:"5.2.4";s:7:"scripts";a:0:{}s:5:"mtime";i:1444866674;s:14:"regions_hidden";a:2:{i:0;s:8:"page_top";i:1;s:11:"page_bottom";}s:28:"overlay_supplemental_regions";a:1:{i:0;s:8:"page_top";}}s:6:"prefix";s:11:"phptemplate";s:11:"stylesheets";a:2:{s:3:"all";a:3:{s:14:"css/layout.css";s:28:"themes/bartik/css/layout.css";s:13:"css/style.css";s:27:"themes/bartik/css/style.css";s:14:"css/colors.css";s:28:"themes/bartik/css/colors.css";}s:5:"print";a:1:{s:13:"css/print.css";s:27:"themes/bartik/css/print.css";}}s:6:"engine";s:11:"phptemplate";}}',
+  'access_arguments' => 'a:1:{i:0;O:8:"stdClass":12:{s:8:"filename";s:25:"themes/bartik/bartik.info";s:4:"name";s:6:"bartik";s:4:"type";s:5:"theme";s:5:"owner";s:45:"themes/engines/phptemplate/phptemplate.engine";s:6:"status";s:1:"1";s:9:"bootstrap";s:1:"0";s:14:"schema_version";s:2:"-1";s:6:"weight";s:1:"0";s:4:"info";a:16:{s:4:"name";s:6:"Bartik";s:11:"description";s:48:"A flexible, recolorable theme with many regions.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:11:"stylesheets";a:2:{s:3:"all";a:3:{s:14:"css/layout.css";s:28:"themes/bartik/css/layout.css";s:13:"css/style.css";s:27:"themes/bartik/css/style.css";s:14:"css/colors.css";s:28:"themes/bartik/css/colors.css";}s:5:"print";a:1:{s:13:"css/print.css";s:27:"themes/bartik/css/print.css";}}s:7:"regions";a:17:{s:6:"header";s:6:"Header";s:4:"help";s:4:"Help";s:8:"page_top";s:8:"Page top";s:11:"page_bottom";s:11:"Page bottom";s:11:"highlighted";s:11:"Highlighted";s:8:"featured";s:8:"Featured";s:7:"content";s:7:"Content";s:13:"sidebar_first";s:13:"Sidebar first";s:14:"sidebar_second";s:14:"Sidebar second";s:14:"triptych_first";s:14:"Triptych first";s:15:"triptych_middle";s:15:"Triptych middle";s:13:"triptych_last";s:13:"Triptych last";s:18:"footer_firstcolumn";s:19:"Footer first column";s:19:"footer_secondcolumn";s:20:"Footer second column";s:18:"footer_thirdcolumn";s:19:"Footer third column";s:19:"footer_fourthcolumn";s:20:"Footer fourth column";s:6:"footer";s:6:"Footer";}s:8:"settings";a:1:{s:20:"shortcut_module_link";s:1:"0";}s:6:"engine";s:11:"phptemplate";s:8:"features";a:9:{i:0;s:4:"logo";i:1;s:7:"favicon";i:2;s:4:"name";i:3;s:6:"slogan";i:4;s:17:"node_user_picture";i:5;s:20:"comment_user_picture";i:6;s:25:"comment_user_verification";i:7;s:9:"main_menu";i:8;s:14:"secondary_menu";}s:10:"screenshot";s:28:"themes/bartik/screenshot.png";s:3:"php";s:5:"5.2.4";s:7:"scripts";a:0:{}s:5:"mtime";i:1664863480;s:14:"regions_hidden";a:2:{i:0;s:8:"page_top";i:1;s:11:"page_bottom";}s:28:"overlay_supplemental_regions";a:1:{i:0;s:8:"page_top";}}s:6:"prefix";s:11:"phptemplate";s:11:"stylesheets";a:2:{s:3:"all";a:3:{s:14:"css/layout.css";s:28:"themes/bartik/css/layout.css";s:13:"css/style.css";s:27:"themes/bartik/css/style.css";s:14:"css/colors.css";s:28:"themes/bartik/css/colors.css";}s:5:"print";a:1:{s:13:"css/print.css";s:27:"themes/bartik/css/print.css";}}s:6:"engine";s:11:"phptemplate";}}',
   'page_callback' => 'drupal_get_form',
   'page_arguments' => 'a:2:{i:0;s:21:"system_theme_settings";i:1;s:6:"bartik";}',
   'delivery_callback' => '',
@@ -35184,7 +37927,7 @@
   'load_functions' => '',
   'to_arg_functions' => '',
   'access_callback' => '_system_themes_access',
-  'access_arguments' => 'a:1:{i:0;O:8:"stdClass":12:{s:8:"filename";s:27:"themes/garland/garland.info";s:4:"name";s:7:"garland";s:4:"type";s:5:"theme";s:5:"owner";s:45:"themes/engines/phptemplate/phptemplate.engine";s:6:"status";s:1:"0";s:9:"bootstrap";s:1:"0";s:14:"schema_version";s:2:"-1";s:6:"weight";s:1:"0";s:4:"info";a:18:{s:4:"name";s:7:"Garland";s:11:"description";s:111:"A multi-column theme which can be configured to modify colors and switch between fixed and fluid width layouts.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:11:"stylesheets";a:2:{s:3:"all";a:1:{s:9:"style.css";s:24:"themes/garland/style.css";}s:5:"print";a:1:{s:9:"print.css";s:24:"themes/garland/print.css";}}s:8:"settings";a:1:{s:13:"garland_width";s:5:"fluid";}s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:6:"engine";s:11:"phptemplate";s:7:"regions";a:9:{s:13:"sidebar_first";s:12:"Left sidebar";s:14:"sidebar_second";s:13:"Right sidebar";s:7:"content";s:7:"Content";s:6:"header";s:6:"Header";s:6:"footer";s:6:"Footer";s:11:"highlighted";s:11:"Highlighted";s:4:"help";s:4:"Help";s:8:"page_top";s:8:"Page top";s:11:"page_bottom";s:11:"Page bottom";}s:8:"features";a:9:{i:0;s:4:"logo";i:1;s:7:"favicon";i:2;s:4:"name";i:3;s:6:"slogan";i:4;s:17:"node_user_picture";i:5;s:20:"comment_user_picture";i:6;s:25:"comment_user_verification";i:7;s:9:"main_menu";i:8;s:14:"secondary_menu";}s:10:"screenshot";s:29:"themes/garland/screenshot.png";s:3:"php";s:5:"5.2.4";s:7:"scripts";a:0:{}s:5:"mtime";i:1444866674;s:14:"regions_hidden";a:2:{i:0;s:8:"page_top";i:1;s:11:"page_bottom";}s:28:"overlay_supplemental_regions";a:1:{i:0;s:8:"page_top";}}s:6:"prefix";s:11:"phptemplate";s:11:"stylesheets";a:2:{s:3:"all";a:1:{s:9:"style.css";s:24:"themes/garland/style.css";}s:5:"print";a:1:{s:9:"print.css";s:24:"themes/garland/print.css";}}s:6:"engine";s:11:"phptemplate";}}',
+  'access_arguments' => 'a:1:{i:0;O:8:"stdClass":12:{s:8:"filename";s:27:"themes/garland/garland.info";s:4:"name";s:7:"garland";s:4:"type";s:5:"theme";s:5:"owner";s:45:"themes/engines/phptemplate/phptemplate.engine";s:6:"status";s:1:"0";s:9:"bootstrap";s:1:"0";s:14:"schema_version";s:2:"-1";s:6:"weight";s:1:"0";s:4:"info";a:16:{s:4:"name";s:7:"Garland";s:11:"description";s:111:"A multi-column theme which can be configured to modify colors and switch between fixed and fluid width layouts.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:11:"stylesheets";a:2:{s:3:"all";a:1:{s:9:"style.css";s:24:"themes/garland/style.css";}s:5:"print";a:1:{s:9:"print.css";s:24:"themes/garland/print.css";}}s:8:"settings";a:1:{s:13:"garland_width";s:5:"fluid";}s:6:"engine";s:11:"phptemplate";s:7:"regions";a:9:{s:13:"sidebar_first";s:12:"Left sidebar";s:14:"sidebar_second";s:13:"Right sidebar";s:7:"content";s:7:"Content";s:6:"header";s:6:"Header";s:6:"footer";s:6:"Footer";s:11:"highlighted";s:11:"Highlighted";s:4:"help";s:4:"Help";s:8:"page_top";s:8:"Page top";s:11:"page_bottom";s:11:"Page bottom";}s:8:"features";a:9:{i:0;s:4:"logo";i:1;s:7:"favicon";i:2;s:4:"name";i:3;s:6:"slogan";i:4;s:17:"node_user_picture";i:5;s:20:"comment_user_picture";i:6;s:25:"comment_user_verification";i:7;s:9:"main_menu";i:8;s:14:"secondary_menu";}s:10:"screenshot";s:29:"themes/garland/screenshot.png";s:3:"php";s:5:"5.2.4";s:7:"scripts";a:0:{}s:5:"mtime";i:1664863480;s:14:"regions_hidden";a:2:{i:0;s:8:"page_top";i:1;s:11:"page_bottom";}s:28:"overlay_supplemental_regions";a:1:{i:0;s:8:"page_top";}}s:6:"prefix";s:11:"phptemplate";s:11:"stylesheets";a:2:{s:3:"all";a:1:{s:9:"style.css";s:24:"themes/garland/style.css";}s:5:"print";a:1:{s:9:"print.css";s:24:"themes/garland/print.css";}}s:6:"engine";s:11:"phptemplate";}}',
   'page_callback' => 'drupal_get_form',
   'page_arguments' => 'a:2:{i:0;s:21:"system_theme_settings";i:1;s:7:"garland";}',
   'delivery_callback' => '',
@@ -35234,7 +37977,7 @@
   'load_functions' => '',
   'to_arg_functions' => '',
   'access_callback' => '_system_themes_access',
-  'access_arguments' => 'a:1:{i:0;O:8:"stdClass":12:{s:8:"filename";s:23:"themes/seven/seven.info";s:4:"name";s:5:"seven";s:4:"type";s:5:"theme";s:5:"owner";s:45:"themes/engines/phptemplate/phptemplate.engine";s:6:"status";s:1:"1";s:9:"bootstrap";s:1:"0";s:14:"schema_version";s:2:"-1";s:6:"weight";s:1:"0";s:4:"info";a:18:{s:4:"name";s:5:"Seven";s:11:"description";s:65:"A simple one-column, tableless, fluid width administration theme.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:11:"stylesheets";a:1:{s:6:"screen";a:2:{s:9:"reset.css";s:22:"themes/seven/reset.css";s:9:"style.css";s:22:"themes/seven/style.css";}}s:8:"settings";a:1:{s:20:"shortcut_module_link";s:1:"1";}s:7:"regions";a:5:{s:7:"content";s:7:"Content";s:4:"help";s:4:"Help";s:8:"page_top";s:8:"Page top";s:11:"page_bottom";s:11:"Page bottom";s:13:"sidebar_first";s:13:"First sidebar";}s:14:"regions_hidden";a:3:{i:0;s:13:"sidebar_first";i:1;s:8:"page_top";i:2;s:11:"page_bottom";}s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:6:"engine";s:11:"phptemplate";s:8:"features";a:9:{i:0;s:4:"logo";i:1;s:7:"favicon";i:2;s:4:"name";i:3;s:6:"slogan";i:4;s:17:"node_user_picture";i:5;s:20:"comment_user_picture";i:6;s:25:"comment_user_verification";i:7;s:9:"main_menu";i:8;s:14:"secondary_menu";}s:10:"screenshot";s:27:"themes/seven/screenshot.png";s:3:"php";s:5:"5.2.4";s:7:"scripts";a:0:{}s:5:"mtime";i:1444866674;s:28:"overlay_supplemental_regions";a:1:{i:0;s:8:"page_top";}}s:6:"prefix";s:11:"phptemplate";s:11:"stylesheets";a:1:{s:6:"screen";a:2:{s:9:"reset.css";s:22:"themes/seven/reset.css";s:9:"style.css";s:22:"themes/seven/style.css";}}s:6:"engine";s:11:"phptemplate";}}',
+  'access_arguments' => 'a:1:{i:0;O:8:"stdClass":12:{s:8:"filename";s:23:"themes/seven/seven.info";s:4:"name";s:5:"seven";s:4:"type";s:5:"theme";s:5:"owner";s:45:"themes/engines/phptemplate/phptemplate.engine";s:6:"status";s:1:"1";s:9:"bootstrap";s:1:"0";s:14:"schema_version";s:2:"-1";s:6:"weight";s:1:"0";s:4:"info";a:16:{s:4:"name";s:5:"Seven";s:11:"description";s:65:"A simple one-column, tableless, fluid width administration theme.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:11:"stylesheets";a:1:{s:6:"screen";a:2:{s:9:"reset.css";s:22:"themes/seven/reset.css";s:9:"style.css";s:22:"themes/seven/style.css";}}s:8:"settings";a:1:{s:20:"shortcut_module_link";s:1:"1";}s:7:"regions";a:5:{s:7:"content";s:7:"Content";s:4:"help";s:4:"Help";s:8:"page_top";s:8:"Page top";s:11:"page_bottom";s:11:"Page bottom";s:13:"sidebar_first";s:13:"First sidebar";}s:14:"regions_hidden";a:3:{i:0;s:13:"sidebar_first";i:1;s:8:"page_top";i:2;s:11:"page_bottom";}s:6:"engine";s:11:"phptemplate";s:8:"features";a:9:{i:0;s:4:"logo";i:1;s:7:"favicon";i:2;s:4:"name";i:3;s:6:"slogan";i:4;s:17:"node_user_picture";i:5;s:20:"comment_user_picture";i:6;s:25:"comment_user_verification";i:7;s:9:"main_menu";i:8;s:14:"secondary_menu";}s:10:"screenshot";s:27:"themes/seven/screenshot.png";s:3:"php";s:5:"5.2.4";s:7:"scripts";a:0:{}s:5:"mtime";i:1664863480;s:28:"overlay_supplemental_regions";a:1:{i:0;s:8:"page_top";}}s:6:"prefix";s:11:"phptemplate";s:11:"stylesheets";a:1:{s:6:"screen";a:2:{s:9:"reset.css";s:22:"themes/seven/reset.css";s:9:"style.css";s:22:"themes/seven/style.css";}}s:6:"engine";s:11:"phptemplate";}}',
   'page_callback' => 'drupal_get_form',
   'page_arguments' => 'a:2:{i:0;s:21:"system_theme_settings";i:1;s:5:"seven";}',
   'delivery_callback' => '',
@@ -35259,7 +38002,7 @@
   'load_functions' => '',
   'to_arg_functions' => '',
   'access_callback' => '_system_themes_access',
-  'access_arguments' => "a:1:{i:0;O:8:\"stdClass\":12:{s:8:\"filename\";s:23:\"themes/stark/stark.info\";s:4:\"name\";s:5:\"stark\";s:4:\"type\";s:5:\"theme\";s:5:\"owner\";s:45:\"themes/engines/phptemplate/phptemplate.engine\";s:6:\"status\";s:1:\"0\";s:9:\"bootstrap\";s:1:\"0\";s:14:\"schema_version\";s:2:\"-1\";s:6:\"weight\";s:1:\"0\";s:4:\"info\";a:17:{s:4:\"name\";s:5:\"Stark\";s:11:\"description\";s:208:\"This theme demonstrates Drupal's default HTML markup and CSS styles. To learn how to build your own theme and override Drupal's default code, see the <a href=\"http://drupal.org/theme-guide\">Theming Guide</a>.\";s:7:\"package\";s:4:\"Core\";s:7:\"version\";s:4:\"7.40\";s:4:\"core\";s:3:\"7.x\";s:11:\"stylesheets\";a:1:{s:3:\"all\";a:1:{s:10:\"layout.css\";s:23:\"themes/stark/layout.css\";}}s:7:\"project\";s:6:\"drupal\";s:9:\"datestamp\";s:10:\"1444866674\";s:6:\"engine\";s:11:\"phptemplate\";s:7:\"regions\";a:9:{s:13:\"sidebar_first\";s:12:\"Left sidebar\";s:14:\"sidebar_second\";s:13:\"Right sidebar\";s:7:\"content\";s:7:\"Content\";s:6:\"header\";s:6:\"Header\";s:6:\"footer\";s:6:\"Footer\";s:11:\"highlighted\";s:11:\"Highlighted\";s:4:\"help\";s:4:\"Help\";s:8:\"page_top\";s:8:\"Page top\";s:11:\"page_bottom\";s:11:\"Page bottom\";}s:8:\"features\";a:9:{i:0;s:4:\"logo\";i:1;s:7:\"favicon\";i:2;s:4:\"name\";i:3;s:6:\"slogan\";i:4;s:17:\"node_user_picture\";i:5;s:20:\"comment_user_picture\";i:6;s:25:\"comment_user_verification\";i:7;s:9:\"main_menu\";i:8;s:14:\"secondary_menu\";}s:10:\"screenshot\";s:27:\"themes/stark/screenshot.png\";s:3:\"php\";s:5:\"5.2.4\";s:7:\"scripts\";a:0:{}s:5:\"mtime\";i:1444866674;s:14:\"regions_hidden\";a:2:{i:0;s:8:\"page_top\";i:1;s:11:\"page_bottom\";}s:28:\"overlay_supplemental_regions\";a:1:{i:0;s:8:\"page_top\";}}s:6:\"prefix\";s:11:\"phptemplate\";s:11:\"stylesheets\";a:1:{s:3:\"all\";a:1:{s:10:\"layout.css\";s:23:\"themes/stark/layout.css\";}}s:6:\"engine\";s:11:\"phptemplate\";}}",
+  'access_arguments' => "a:1:{i:0;O:8:\"stdClass\":12:{s:8:\"filename\";s:23:\"themes/stark/stark.info\";s:4:\"name\";s:5:\"stark\";s:4:\"type\";s:5:\"theme\";s:5:\"owner\";s:45:\"themes/engines/phptemplate/phptemplate.engine\";s:6:\"status\";s:1:\"0\";s:9:\"bootstrap\";s:1:\"0\";s:14:\"schema_version\";s:2:\"-1\";s:6:\"weight\";s:1:\"0\";s:4:\"info\";a:15:{s:4:\"name\";s:5:\"Stark\";s:11:\"description\";s:208:\"This theme demonstrates Drupal's default HTML markup and CSS styles. To learn how to build your own theme and override Drupal's default code, see the <a href=\"http://drupal.org/theme-guide\">Theming Guide</a>.\";s:7:\"package\";s:4:\"Core\";s:7:\"version\";s:4:\"7.92\";s:4:\"core\";s:3:\"7.x\";s:11:\"stylesheets\";a:1:{s:3:\"all\";a:1:{s:10:\"layout.css\";s:23:\"themes/stark/layout.css\";}}s:6:\"engine\";s:11:\"phptemplate\";s:7:\"regions\";a:9:{s:13:\"sidebar_first\";s:12:\"Left sidebar\";s:14:\"sidebar_second\";s:13:\"Right sidebar\";s:7:\"content\";s:7:\"Content\";s:6:\"header\";s:6:\"Header\";s:6:\"footer\";s:6:\"Footer\";s:11:\"highlighted\";s:11:\"Highlighted\";s:4:\"help\";s:4:\"Help\";s:8:\"page_top\";s:8:\"Page top\";s:11:\"page_bottom\";s:11:\"Page bottom\";}s:8:\"features\";a:9:{i:0;s:4:\"logo\";i:1;s:7:\"favicon\";i:2;s:4:\"name\";i:3;s:6:\"slogan\";i:4;s:17:\"node_user_picture\";i:5;s:20:\"comment_user_picture\";i:6;s:25:\"comment_user_verification\";i:7;s:9:\"main_menu\";i:8;s:14:\"secondary_menu\";}s:10:\"screenshot\";s:27:\"themes/stark/screenshot.png\";s:3:\"php\";s:5:\"5.2.4\";s:7:\"scripts\";a:0:{}s:5:\"mtime\";i:1664863480;s:14:\"regions_hidden\";a:2:{i:0;s:8:\"page_top\";i:1;s:11:\"page_bottom\";}s:28:\"overlay_supplemental_regions\";a:1:{i:0;s:8:\"page_top\";}}s:6:\"prefix\";s:11:\"phptemplate\";s:11:\"stylesheets\";a:1:{s:3:\"all\";a:1:{s:10:\"layout.css\";s:23:\"themes/stark/layout.css\";}}s:6:\"engine\";s:11:\"phptemplate\";}}",
   'page_callback' => 'drupal_get_form',
   'page_arguments' => 'a:2:{i:0;s:21:"system_theme_settings";i:1;s:5:"stark";}',
   'delivery_callback' => '',
@@ -35529,6 +38272,56 @@
   'weight' => '0',
   'include_file' => 'modules/filter/filter.admin.inc',
 ))
+->values(array(
+  'path' => 'admin/config/content/link',
+  'load_functions' => '',
+  'to_arg_functions' => '',
+  'access_callback' => 'user_access',
+  'access_arguments' => 'a:1:{i:0;s:29:"administer site configuration";}',
+  'page_callback' => 'drupal_get_form',
+  'page_arguments' => 'a:1:{i:0;s:19:"link_admin_settings";}',
+  'delivery_callback' => '',
+  'fit' => '15',
+  'number_parts' => '4',
+  'context' => '0',
+  'tab_parent' => '',
+  'tab_root' => 'admin/config/content/link',
+  'title' => 'Link settings',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '6',
+  'description' => 'Settings for the link module.',
+  'position' => '',
+  'weight' => '0',
+  'include_file' => 'sites/all/modules/link/link.admin.inc',
+))
+->values(array(
+  'path' => 'admin/config/content/title',
+  'load_functions' => '',
+  'to_arg_functions' => '',
+  'access_callback' => 'user_access',
+  'access_arguments' => 'a:1:{i:0;s:29:"administer site configuration";}',
+  'page_callback' => 'drupal_get_form',
+  'page_arguments' => 'a:1:{i:0;s:25:"title_admin_settings_form";}',
+  'delivery_callback' => '',
+  'fit' => '15',
+  'number_parts' => '4',
+  'context' => '0',
+  'tab_parent' => '',
+  'tab_root' => 'admin/config/content/title',
+  'title' => 'Title settings',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '6',
+  'description' => 'Settings for the Title module.',
+  'position' => '',
+  'weight' => '0',
+  'include_file' => 'sites/all/modules/title/title.admin.inc',
+))
 ->values(array(
   'path' => 'admin/config/date',
   'load_functions' => '',
@@ -36108,8 +38901,8 @@
   'path' => 'admin/config/people/accounts/display',
   'load_functions' => '',
   'to_arg_functions' => '',
-  'access_callback' => 'user_access',
-  'access_arguments' => 'a:1:{i:0;s:16:"administer users";}',
+  'access_callback' => 'field_ui_admin_access',
+  'access_arguments' => 'a:2:{i:0;s:11:"user_access";i:1;a:1:{i:0;s:16:"administer users";}}',
   'page_callback' => 'drupal_get_form',
   'page_arguments' => 'a:4:{i:0;s:30:"field_ui_display_overview_form";i:1;s:4:"user";i:2;s:4:"user";i:3;s:7:"default";}',
   'delivery_callback' => '',
@@ -36134,7 +38927,7 @@
   'load_functions' => '',
   'to_arg_functions' => '',
   'access_callback' => '_field_ui_view_mode_menu_access',
-  'access_arguments' => 'a:5:{i:0;s:4:"user";i:1;s:4:"user";i:2;s:7:"default";i:3;s:11:"user_access";i:4;s:16:"administer users";}',
+  'access_arguments' => 'a:6:{i:0;s:4:"user";i:1;s:4:"user";i:2;s:7:"default";i:3;s:21:"field_ui_admin_access";i:4;s:11:"user_access";i:5;a:1:{i:0;s:16:"administer users";}}',
   'page_callback' => 'drupal_get_form',
   'page_arguments' => 'a:4:{i:0;s:30:"field_ui_display_overview_form";i:1;s:4:"user";i:2;s:4:"user";i:3;s:7:"default";}',
   'delivery_callback' => '',
@@ -36159,7 +38952,7 @@
   'load_functions' => '',
   'to_arg_functions' => '',
   'access_callback' => '_field_ui_view_mode_menu_access',
-  'access_arguments' => 'a:5:{i:0;s:4:"user";i:1;s:4:"user";i:2;s:4:"full";i:3;s:11:"user_access";i:4;s:16:"administer users";}',
+  'access_arguments' => 'a:6:{i:0;s:4:"user";i:1;s:4:"user";i:2;s:4:"full";i:3;s:21:"field_ui_admin_access";i:4;s:11:"user_access";i:5;a:1:{i:0;s:16:"administer users";}}',
   'page_callback' => 'drupal_get_form',
   'page_arguments' => 'a:4:{i:0;s:30:"field_ui_display_overview_form";i:1;s:4:"user";i:2;s:4:"user";i:3;s:4:"full";}',
   'delivery_callback' => '',
@@ -36183,8 +38976,8 @@
   'path' => 'admin/config/people/accounts/fields',
   'load_functions' => '',
   'to_arg_functions' => '',
-  'access_callback' => 'user_access',
-  'access_arguments' => 'a:1:{i:0;s:16:"administer users";}',
+  'access_callback' => 'field_ui_admin_access',
+  'access_arguments' => 'a:2:{i:0;s:11:"user_access";i:1;a:1:{i:0;s:16:"administer users";}}',
   'page_callback' => 'drupal_get_form',
   'page_arguments' => 'a:3:{i:0;s:28:"field_ui_field_overview_form";i:1;s:4:"user";i:2;s:4:"user";}',
   'delivery_callback' => '',
@@ -36208,8 +39001,8 @@
   'path' => 'admin/config/people/accounts/fields/%',
   'load_functions' => 'a:1:{i:5;a:1:{s:18:"field_ui_menu_load";a:4:{i:0;s:4:"user";i:1;s:4:"user";i:2;s:1:"0";i:3;s:4:"%map";}}}',
   'to_arg_functions' => '',
-  'access_callback' => 'user_access',
-  'access_arguments' => 'a:1:{i:0;s:16:"administer users";}',
+  'access_callback' => 'field_ui_admin_access',
+  'access_arguments' => 'a:2:{i:0;s:11:"user_access";i:1;a:1:{i:0;s:16:"administer users";}}',
   'page_callback' => 'drupal_get_form',
   'page_arguments' => 'a:2:{i:0;s:24:"field_ui_field_edit_form";i:1;i:5;}',
   'delivery_callback' => '',
@@ -36233,8 +39026,8 @@
   'path' => 'admin/config/people/accounts/fields/%/delete',
   'load_functions' => 'a:1:{i:5;a:1:{s:18:"field_ui_menu_load";a:4:{i:0;s:4:"user";i:1;s:4:"user";i:2;s:1:"0";i:3;s:4:"%map";}}}',
   'to_arg_functions' => '',
-  'access_callback' => 'user_access',
-  'access_arguments' => 'a:1:{i:0;s:16:"administer users";}',
+  'access_callback' => 'field_ui_admin_access',
+  'access_arguments' => 'a:2:{i:0;s:11:"user_access";i:1;a:1:{i:0;s:16:"administer users";}}',
   'page_callback' => 'drupal_get_form',
   'page_arguments' => 'a:2:{i:0;s:26:"field_ui_field_delete_form";i:1;i:5;}',
   'delivery_callback' => '',
@@ -36258,8 +39051,8 @@
   'path' => 'admin/config/people/accounts/fields/%/edit',
   'load_functions' => 'a:1:{i:5;a:1:{s:18:"field_ui_menu_load";a:4:{i:0;s:4:"user";i:1;s:4:"user";i:2;s:1:"0";i:3;s:4:"%map";}}}',
   'to_arg_functions' => '',
-  'access_callback' => 'user_access',
-  'access_arguments' => 'a:1:{i:0;s:16:"administer users";}',
+  'access_callback' => 'field_ui_admin_access',
+  'access_arguments' => 'a:2:{i:0;s:11:"user_access";i:1;a:1:{i:0;s:16:"administer users";}}',
   'page_callback' => 'drupal_get_form',
   'page_arguments' => 'a:2:{i:0;s:24:"field_ui_field_edit_form";i:1;i:5;}',
   'delivery_callback' => '',
@@ -36283,8 +39076,8 @@
   'path' => 'admin/config/people/accounts/fields/%/field-settings',
   'load_functions' => 'a:1:{i:5;a:1:{s:18:"field_ui_menu_load";a:4:{i:0;s:4:"user";i:1;s:4:"user";i:2;s:1:"0";i:3;s:4:"%map";}}}',
   'to_arg_functions' => '',
-  'access_callback' => 'user_access',
-  'access_arguments' => 'a:1:{i:0;s:16:"administer users";}',
+  'access_callback' => 'field_ui_admin_access',
+  'access_arguments' => 'a:2:{i:0;s:11:"user_access";i:1;a:1:{i:0;s:16:"administer users";}}',
   'page_callback' => 'drupal_get_form',
   'page_arguments' => 'a:2:{i:0;s:28:"field_ui_field_settings_form";i:1;i:5;}',
   'delivery_callback' => '',
@@ -36305,11 +39098,61 @@
   'include_file' => 'modules/field_ui/field_ui.admin.inc',
 ))
 ->values(array(
-  'path' => 'admin/config/people/accounts/fields/%/widget-type',
+  'path' => 'admin/config/people/accounts/fields/%/translate',
   'load_functions' => 'a:1:{i:5;a:1:{s:18:"field_ui_menu_load";a:4:{i:0;s:4:"user";i:1;s:4:"user";i:2;s:1:"0";i:3;s:4:"%map";}}}',
   'to_arg_functions' => '',
   'access_callback' => 'user_access',
   'access_arguments' => 'a:1:{i:0;s:16:"administer users";}',
+  'page_callback' => 'i18n_field_page_translate',
+  'page_arguments' => 'a:1:{i:0;i:5;}',
+  'delivery_callback' => '',
+  'fit' => '125',
+  'number_parts' => '7',
+  'context' => '1',
+  'tab_parent' => 'admin/config/people/accounts/fields/%',
+  'tab_root' => 'admin/config/people/accounts/fields/%',
+  'title' => 'Translate',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '132',
+  'description' => '',
+  'position' => '',
+  'weight' => '0',
+  'include_file' => 'sites/all/modules/i18n/i18n_field/i18n_field.pages.inc',
+))
+->values(array(
+  'path' => 'admin/config/people/accounts/fields/%/translate/%',
+  'load_functions' => 'a:2:{i:5;a:1:{s:18:"field_ui_menu_load";a:4:{i:0;s:4:"user";i:1;s:4:"user";i:2;s:1:"0";i:3;s:4:"%map";}}i:7;a:1:{s:18:"i18n_language_load";a:4:{i:0;s:4:"user";i:1;s:4:"user";i:2;s:1:"0";i:3;s:4:"%map";}}}',
+  'to_arg_functions' => '',
+  'access_callback' => 'user_access',
+  'access_arguments' => 'a:1:{i:0;s:16:"administer users";}',
+  'page_callback' => 'i18n_field_page_translate',
+  'page_arguments' => 'a:2:{i:0;i:5;i:1;i:7;}',
+  'delivery_callback' => '',
+  'fit' => '250',
+  'number_parts' => '8',
+  'context' => '0',
+  'tab_parent' => '',
+  'tab_root' => 'admin/config/people/accounts/fields/%/translate/%',
+  'title' => 'Instance',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '0',
+  'description' => '',
+  'position' => '',
+  'weight' => '0',
+  'include_file' => 'sites/all/modules/i18n/i18n_field/i18n_field.pages.inc',
+))
+->values(array(
+  'path' => 'admin/config/people/accounts/fields/%/widget-type',
+  'load_functions' => 'a:1:{i:5;a:1:{s:18:"field_ui_menu_load";a:4:{i:0;s:4:"user";i:1;s:4:"user";i:2;s:1:"0";i:3;s:4:"%map";}}}',
+  'to_arg_functions' => '',
+  'access_callback' => 'field_ui_admin_access',
+  'access_arguments' => 'a:2:{i:0;s:11:"user_access";i:1;a:1:{i:0;s:16:"administer users";}}',
   'page_callback' => 'drupal_get_form',
   'page_arguments' => 'a:2:{i:0;s:25:"field_ui_widget_type_form";i:1;i:5;}',
   'delivery_callback' => '',
@@ -36754,6 +39597,181 @@
   'weight' => '0',
   'include_file' => 'sites/all/modules/entity_translation/entity_translation.admin.inc',
 ))
+->values(array(
+  'path' => 'admin/config/regional/entity_translation/translatable/%',
+  'load_functions' => 'a:1:{i:5;N;}',
+  'to_arg_functions' => '',
+  'access_callback' => 'user_access',
+  'access_arguments' => 'a:1:{i:0;s:28:"toggle field translatability";}',
+  'page_callback' => 'drupal_get_form',
+  'page_arguments' => 'a:2:{i:0;s:36:"entity_translation_translatable_form";i:1;i:5;}',
+  'delivery_callback' => '',
+  'fit' => '62',
+  'number_parts' => '6',
+  'context' => '0',
+  'tab_parent' => '',
+  'tab_root' => 'admin/config/regional/entity_translation/translatable/%',
+  'title' => 'Confirm change in translatability.',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '6',
+  'description' => 'Confirmation page for changing field translatability.',
+  'position' => '',
+  'weight' => '0',
+  'include_file' => 'sites/all/modules/entity_translation/entity_translation.admin.inc',
+))
+->values(array(
+  'path' => 'admin/config/regional/i18n',
+  'load_functions' => '',
+  'to_arg_functions' => '',
+  'access_callback' => 'user_access',
+  'access_arguments' => 'a:1:{i:0;s:29:"administer site configuration";}',
+  'page_callback' => 'drupal_get_form',
+  'page_arguments' => 'a:2:{i:0;s:20:"variable_module_form";i:1;s:4:"i18n";}',
+  'delivery_callback' => '',
+  'fit' => '15',
+  'number_parts' => '4',
+  'context' => '0',
+  'tab_parent' => '',
+  'tab_root' => 'admin/config/regional/i18n',
+  'title' => 'Multilingual settings',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '6',
+  'description' => 'Configure extended options for multilingual content and translations.',
+  'position' => '',
+  'weight' => '10',
+  'include_file' => '',
+))
+->values(array(
+  'path' => 'admin/config/regional/i18n/configure',
+  'load_functions' => '',
+  'to_arg_functions' => '',
+  'access_callback' => 'user_access',
+  'access_arguments' => 'a:1:{i:0;s:29:"administer site configuration";}',
+  'page_callback' => 'drupal_get_form',
+  'page_arguments' => 'a:2:{i:0;s:20:"variable_module_form";i:1;s:4:"i18n";}',
+  'delivery_callback' => '',
+  'fit' => '31',
+  'number_parts' => '5',
+  'context' => '1',
+  'tab_parent' => 'admin/config/regional/i18n',
+  'tab_root' => 'admin/config/regional/i18n',
+  'title' => 'Multilingual system',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '140',
+  'description' => 'Configure extended options for multilingual content and translations.',
+  'position' => '',
+  'weight' => '0',
+  'include_file' => '',
+))
+->values(array(
+  'path' => 'admin/config/regional/i18n/strings',
+  'load_functions' => '',
+  'to_arg_functions' => '',
+  'access_callback' => 'user_access',
+  'access_arguments' => 'a:1:{i:0;s:29:"administer site configuration";}',
+  'page_callback' => 'drupal_get_form',
+  'page_arguments' => 'a:2:{i:0;s:18:"variable_edit_form";i:1;a:3:{i:0;s:27:"i18n_string_allowed_formats";i:1;s:27:"i18n_string_source_language";i:2;s:39:"i18n_string_textgroup_class_[textgroup]";}}',
+  'delivery_callback' => '',
+  'fit' => '31',
+  'number_parts' => '5',
+  'context' => '1',
+  'tab_parent' => 'admin/config/regional/i18n',
+  'tab_root' => 'admin/config/regional/i18n',
+  'title' => 'Strings',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '132',
+  'description' => 'Options for user defined strings.',
+  'position' => '',
+  'weight' => '20',
+  'include_file' => '',
+))
+->values(array(
+  'path' => 'admin/config/regional/i18n/variable',
+  'load_functions' => '',
+  'to_arg_functions' => '',
+  'access_callback' => 'user_access',
+  'access_arguments' => 'a:1:{i:0;s:29:"administer site configuration";}',
+  'page_callback' => 'drupal_get_form',
+  'page_arguments' => 'a:2:{i:0;s:36:"variable_realm_select_variables_form";i:1;s:8:"language";}',
+  'delivery_callback' => '',
+  'fit' => '31',
+  'number_parts' => '5',
+  'context' => '1',
+  'tab_parent' => 'admin/config/regional/i18n',
+  'tab_root' => 'admin/config/regional/i18n',
+  'title' => 'Variables',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '132',
+  'description' => 'Configure multilingual variables.',
+  'position' => '',
+  'weight' => '0',
+  'include_file' => 'sites/all/modules/variable/variable_realm/variable_realm.form.inc',
+))
+->values(array(
+  'path' => 'admin/config/regional/i18n_translation',
+  'load_functions' => '',
+  'to_arg_functions' => '',
+  'access_callback' => 'user_access',
+  'access_arguments' => 'a:1:{i:0;s:29:"administer site configuration";}',
+  'page_callback' => 'i18n_translation_admin_overview',
+  'page_arguments' => 'a:0:{}',
+  'delivery_callback' => '',
+  'fit' => '15',
+  'number_parts' => '4',
+  'context' => '0',
+  'tab_parent' => '',
+  'tab_root' => 'admin/config/regional/i18n_translation',
+  'title' => 'Translation sets',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '6',
+  'description' => 'Translation sets overview.',
+  'position' => '',
+  'weight' => '10',
+  'include_file' => 'sites/all/modules/i18n/i18n_translation/i18n_translation.admin.inc',
+))
+->values(array(
+  'path' => 'admin/config/regional/i18n_translation/configure',
+  'load_functions' => '',
+  'to_arg_functions' => '',
+  'access_callback' => 'user_access',
+  'access_arguments' => 'a:1:{i:0;s:29:"administer site configuration";}',
+  'page_callback' => 'i18n_translation_admin_overview',
+  'page_arguments' => 'a:0:{}',
+  'delivery_callback' => '',
+  'fit' => '31',
+  'number_parts' => '5',
+  'context' => '1',
+  'tab_parent' => 'admin/config/regional/i18n_translation',
+  'tab_root' => 'admin/config/regional/i18n_translation',
+  'title' => 'Translation sets',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '140',
+  'description' => 'Overview of existing translation sets.',
+  'position' => '',
+  'weight' => '0',
+  'include_file' => 'sites/all/modules/i18n/i18n_translation/i18n_translation.admin.inc',
+))
 ->values(array(
   'path' => 'admin/config/regional/language',
   'load_functions' => '',
@@ -37036,7 +40054,7 @@
   'access_callback' => 'user_access',
   'access_arguments' => 'a:1:{i:0;s:19:"translate interface";}',
   'page_callback' => 'drupal_get_form',
-  'page_arguments' => 'a:2:{i:0;s:26:"locale_translate_edit_form";i:1;i:5;}',
+  'page_arguments' => 'a:2:{i:0;s:38:"i18n_string_locale_translate_edit_form";i:1;i:5;}',
   'delivery_callback' => '',
   'fit' => '62',
   'number_parts' => '6',
@@ -37052,7 +40070,7 @@
   'description' => '',
   'position' => '',
   'weight' => '0',
-  'include_file' => 'modules/locale/locale.admin.inc',
+  'include_file' => 'sites/all/modules/i18n/i18n_string/i18n_string.pages.inc',
 ))
 ->values(array(
   'path' => 'admin/config/regional/translate/export',
@@ -37079,6 +40097,31 @@
   'weight' => '30',
   'include_file' => 'modules/locale/locale.admin.inc',
 ))
+->values(array(
+  'path' => 'admin/config/regional/translate/i18n_string',
+  'load_functions' => '',
+  'to_arg_functions' => '',
+  'access_callback' => 'user_access',
+  'access_arguments' => 'a:1:{i:0;s:19:"translate interface";}',
+  'page_callback' => 'drupal_get_form',
+  'page_arguments' => 'a:1:{i:0;s:30:"i18n_string_admin_refresh_form";}',
+  'delivery_callback' => '',
+  'fit' => '31',
+  'number_parts' => '5',
+  'context' => '1',
+  'tab_parent' => 'admin/config/regional/translate',
+  'tab_root' => 'admin/config/regional/translate',
+  'title' => 'Strings',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '132',
+  'description' => 'Refresh user defined strings.',
+  'position' => '',
+  'weight' => '20',
+  'include_file' => 'sites/all/modules/i18n/i18n_string/i18n_string.admin.inc',
+))
 ->values(array(
   'path' => 'admin/config/regional/translate/import',
   'load_functions' => '',
@@ -37135,7 +40178,7 @@
   'to_arg_functions' => '',
   'access_callback' => 'user_access',
   'access_arguments' => 'a:1:{i:0;s:19:"translate interface";}',
-  'page_callback' => 'locale_translate_seek_screen',
+  'page_callback' => 'i18n_string_locale_translate_seek_screen',
   'page_arguments' => 'a:0:{}',
   'delivery_callback' => '',
   'fit' => '31',
@@ -37152,7 +40195,7 @@
   'description' => '',
   'position' => '',
   'weight' => '10',
-  'include_file' => 'modules/locale/locale.admin.inc',
+  'include_file' => 'sites/all/modules/i18n/i18n_string/i18n_string.pages.inc',
 ))
 ->values(array(
   'path' => 'admin/config/search',
@@ -38904,6 +41947,156 @@
   'weight' => '0',
   'include_file' => 'modules/help/help.admin.inc',
 ))
+->values(array(
+  'path' => 'admin/help/i18n',
+  'load_functions' => '',
+  'to_arg_functions' => '',
+  'access_callback' => 'user_access',
+  'access_arguments' => 'a:1:{i:0;s:27:"access administration pages";}',
+  'page_callback' => 'help_page',
+  'page_arguments' => 'a:1:{i:0;i:2;}',
+  'delivery_callback' => '',
+  'fit' => '7',
+  'number_parts' => '3',
+  'context' => '0',
+  'tab_parent' => '',
+  'tab_root' => 'admin/help/i18n',
+  'title' => 'i18n',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '4',
+  'description' => '',
+  'position' => '',
+  'weight' => '0',
+  'include_file' => 'modules/help/help.admin.inc',
+))
+->values(array(
+  'path' => 'admin/help/i18n_block',
+  'load_functions' => '',
+  'to_arg_functions' => '',
+  'access_callback' => 'user_access',
+  'access_arguments' => 'a:1:{i:0;s:27:"access administration pages";}',
+  'page_callback' => 'help_page',
+  'page_arguments' => 'a:1:{i:0;i:2;}',
+  'delivery_callback' => '',
+  'fit' => '7',
+  'number_parts' => '3',
+  'context' => '0',
+  'tab_parent' => '',
+  'tab_root' => 'admin/help/i18n_block',
+  'title' => 'i18n_block',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '4',
+  'description' => '',
+  'position' => '',
+  'weight' => '0',
+  'include_file' => 'modules/help/help.admin.inc',
+))
+->values(array(
+  'path' => 'admin/help/i18n_menu',
+  'load_functions' => '',
+  'to_arg_functions' => '',
+  'access_callback' => 'user_access',
+  'access_arguments' => 'a:1:{i:0;s:27:"access administration pages";}',
+  'page_callback' => 'help_page',
+  'page_arguments' => 'a:1:{i:0;i:2;}',
+  'delivery_callback' => '',
+  'fit' => '7',
+  'number_parts' => '3',
+  'context' => '0',
+  'tab_parent' => '',
+  'tab_root' => 'admin/help/i18n_menu',
+  'title' => 'i18n_menu',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '4',
+  'description' => '',
+  'position' => '',
+  'weight' => '0',
+  'include_file' => 'modules/help/help.admin.inc',
+))
+->values(array(
+  'path' => 'admin/help/i18n_string',
+  'load_functions' => '',
+  'to_arg_functions' => '',
+  'access_callback' => 'user_access',
+  'access_arguments' => 'a:1:{i:0;s:27:"access administration pages";}',
+  'page_callback' => 'help_page',
+  'page_arguments' => 'a:1:{i:0;i:2;}',
+  'delivery_callback' => '',
+  'fit' => '7',
+  'number_parts' => '3',
+  'context' => '0',
+  'tab_parent' => '',
+  'tab_root' => 'admin/help/i18n_string',
+  'title' => 'i18n_string',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '4',
+  'description' => '',
+  'position' => '',
+  'weight' => '0',
+  'include_file' => 'modules/help/help.admin.inc',
+))
+->values(array(
+  'path' => 'admin/help/i18n_sync',
+  'load_functions' => '',
+  'to_arg_functions' => '',
+  'access_callback' => 'user_access',
+  'access_arguments' => 'a:1:{i:0;s:27:"access administration pages";}',
+  'page_callback' => 'help_page',
+  'page_arguments' => 'a:1:{i:0;i:2;}',
+  'delivery_callback' => '',
+  'fit' => '7',
+  'number_parts' => '3',
+  'context' => '0',
+  'tab_parent' => '',
+  'tab_root' => 'admin/help/i18n_sync',
+  'title' => 'i18n_sync',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '4',
+  'description' => '',
+  'position' => '',
+  'weight' => '0',
+  'include_file' => 'modules/help/help.admin.inc',
+))
+->values(array(
+  'path' => 'admin/help/i18n_taxonomy',
+  'load_functions' => '',
+  'to_arg_functions' => '',
+  'access_callback' => 'user_access',
+  'access_arguments' => 'a:1:{i:0;s:27:"access administration pages";}',
+  'page_callback' => 'help_page',
+  'page_arguments' => 'a:1:{i:0;i:2;}',
+  'delivery_callback' => '',
+  'fit' => '7',
+  'number_parts' => '3',
+  'context' => '0',
+  'tab_parent' => '',
+  'tab_root' => 'admin/help/i18n_taxonomy',
+  'title' => 'i18n_taxonomy',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '4',
+  'description' => '',
+  'position' => '',
+  'weight' => '0',
+  'include_file' => 'modules/help/help.admin.inc',
+))
 ->values(array(
   'path' => 'admin/help/image',
   'load_functions' => '',
@@ -38929,6 +42122,31 @@
   'weight' => '0',
   'include_file' => 'modules/help/help.admin.inc',
 ))
+->values(array(
+  'path' => 'admin/help/link',
+  'load_functions' => '',
+  'to_arg_functions' => '',
+  'access_callback' => 'user_access',
+  'access_arguments' => 'a:1:{i:0;s:27:"access administration pages";}',
+  'page_callback' => 'help_page',
+  'page_arguments' => 'a:1:{i:0;i:2;}',
+  'delivery_callback' => '',
+  'fit' => '7',
+  'number_parts' => '3',
+  'context' => '0',
+  'tab_parent' => '',
+  'tab_root' => 'admin/help/link',
+  'title' => 'link',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '4',
+  'description' => '',
+  'position' => '',
+  'weight' => '0',
+  'include_file' => 'modules/help/help.admin.inc',
+))
 ->values(array(
   'path' => 'admin/help/list',
   'load_functions' => '',
@@ -39154,6 +42372,31 @@
   'weight' => '0',
   'include_file' => 'modules/help/help.admin.inc',
 ))
+->values(array(
+  'path' => 'admin/help/references',
+  'load_functions' => '',
+  'to_arg_functions' => '',
+  'access_callback' => 'user_access',
+  'access_arguments' => 'a:1:{i:0;s:27:"access administration pages";}',
+  'page_callback' => 'help_page',
+  'page_arguments' => 'a:1:{i:0;i:2;}',
+  'delivery_callback' => '',
+  'fit' => '7',
+  'number_parts' => '3',
+  'context' => '0',
+  'tab_parent' => '',
+  'tab_root' => 'admin/help/references',
+  'title' => 'references',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '4',
+  'description' => '',
+  'position' => '',
+  'weight' => '0',
+  'include_file' => 'modules/help/help.admin.inc',
+))
 ->values(array(
   'path' => 'admin/help/search',
   'load_functions' => '',
@@ -39354,6 +42597,31 @@
   'weight' => '0',
   'include_file' => 'modules/help/help.admin.inc',
 ))
+->values(array(
+  'path' => 'admin/help/title',
+  'load_functions' => '',
+  'to_arg_functions' => '',
+  'access_callback' => 'user_access',
+  'access_arguments' => 'a:1:{i:0;s:27:"access administration pages";}',
+  'page_callback' => 'help_page',
+  'page_arguments' => 'a:1:{i:0;i:2;}',
+  'delivery_callback' => '',
+  'fit' => '7',
+  'number_parts' => '3',
+  'context' => '0',
+  'tab_parent' => '',
+  'tab_root' => 'admin/help/title',
+  'title' => 'title',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '4',
+  'description' => '',
+  'position' => '',
+  'weight' => '0',
+  'include_file' => 'modules/help/help.admin.inc',
+))
 ->values(array(
   'path' => 'admin/help/toolbar',
   'load_functions' => '',
@@ -40534,7 +43802,7 @@
   'load_functions' => '',
   'to_arg_functions' => '',
   'access_callback' => '_block_themes_access',
-  'access_arguments' => 'a:1:{i:0;O:8:"stdClass":12:{s:8:"filename";s:25:"themes/bartik/bartik.info";s:4:"name";s:6:"bartik";s:4:"type";s:5:"theme";s:5:"owner";s:45:"themes/engines/phptemplate/phptemplate.engine";s:6:"status";s:1:"1";s:9:"bootstrap";s:1:"0";s:14:"schema_version";s:2:"-1";s:6:"weight";s:1:"0";s:4:"info";a:18:{s:4:"name";s:6:"Bartik";s:11:"description";s:48:"A flexible, recolorable theme with many regions.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:11:"stylesheets";a:2:{s:3:"all";a:3:{s:14:"css/layout.css";s:28:"themes/bartik/css/layout.css";s:13:"css/style.css";s:27:"themes/bartik/css/style.css";s:14:"css/colors.css";s:28:"themes/bartik/css/colors.css";}s:5:"print";a:1:{s:13:"css/print.css";s:27:"themes/bartik/css/print.css";}}s:7:"regions";a:17:{s:6:"header";s:6:"Header";s:4:"help";s:4:"Help";s:8:"page_top";s:8:"Page top";s:11:"page_bottom";s:11:"Page bottom";s:11:"highlighted";s:11:"Highlighted";s:8:"featured";s:8:"Featured";s:7:"content";s:7:"Content";s:13:"sidebar_first";s:13:"Sidebar first";s:14:"sidebar_second";s:14:"Sidebar second";s:14:"triptych_first";s:14:"Triptych first";s:15:"triptych_middle";s:15:"Triptych middle";s:13:"triptych_last";s:13:"Triptych last";s:18:"footer_firstcolumn";s:19:"Footer first column";s:19:"footer_secondcolumn";s:20:"Footer second column";s:18:"footer_thirdcolumn";s:19:"Footer third column";s:19:"footer_fourthcolumn";s:20:"Footer fourth column";s:6:"footer";s:6:"Footer";}s:8:"settings";a:1:{s:20:"shortcut_module_link";s:1:"0";}s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:6:"engine";s:11:"phptemplate";s:8:"features";a:9:{i:0;s:4:"logo";i:1;s:7:"favicon";i:2;s:4:"name";i:3;s:6:"slogan";i:4;s:17:"node_user_picture";i:5;s:20:"comment_user_picture";i:6;s:25:"comment_user_verification";i:7;s:9:"main_menu";i:8;s:14:"secondary_menu";}s:10:"screenshot";s:28:"themes/bartik/screenshot.png";s:3:"php";s:5:"5.2.4";s:7:"scripts";a:0:{}s:5:"mtime";i:1444866674;s:14:"regions_hidden";a:2:{i:0;s:8:"page_top";i:1;s:11:"page_bottom";}s:28:"overlay_supplemental_regions";a:1:{i:0;s:8:"page_top";}}s:6:"prefix";s:11:"phptemplate";s:11:"stylesheets";a:2:{s:3:"all";a:3:{s:14:"css/layout.css";s:28:"themes/bartik/css/layout.css";s:13:"css/style.css";s:27:"themes/bartik/css/style.css";s:14:"css/colors.css";s:28:"themes/bartik/css/colors.css";}s:5:"print";a:1:{s:13:"css/print.css";s:27:"themes/bartik/css/print.css";}}s:6:"engine";s:11:"phptemplate";}}',
+  'access_arguments' => 'a:1:{i:0;O:8:"stdClass":12:{s:8:"filename";s:25:"themes/bartik/bartik.info";s:4:"name";s:6:"bartik";s:4:"type";s:5:"theme";s:5:"owner";s:45:"themes/engines/phptemplate/phptemplate.engine";s:6:"status";s:1:"1";s:9:"bootstrap";s:1:"0";s:14:"schema_version";s:2:"-1";s:6:"weight";s:1:"0";s:4:"info";a:16:{s:4:"name";s:6:"Bartik";s:11:"description";s:48:"A flexible, recolorable theme with many regions.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:11:"stylesheets";a:2:{s:3:"all";a:3:{s:14:"css/layout.css";s:28:"themes/bartik/css/layout.css";s:13:"css/style.css";s:27:"themes/bartik/css/style.css";s:14:"css/colors.css";s:28:"themes/bartik/css/colors.css";}s:5:"print";a:1:{s:13:"css/print.css";s:27:"themes/bartik/css/print.css";}}s:7:"regions";a:17:{s:6:"header";s:6:"Header";s:4:"help";s:4:"Help";s:8:"page_top";s:8:"Page top";s:11:"page_bottom";s:11:"Page bottom";s:11:"highlighted";s:11:"Highlighted";s:8:"featured";s:8:"Featured";s:7:"content";s:7:"Content";s:13:"sidebar_first";s:13:"Sidebar first";s:14:"sidebar_second";s:14:"Sidebar second";s:14:"triptych_first";s:14:"Triptych first";s:15:"triptych_middle";s:15:"Triptych middle";s:13:"triptych_last";s:13:"Triptych last";s:18:"footer_firstcolumn";s:19:"Footer first column";s:19:"footer_secondcolumn";s:20:"Footer second column";s:18:"footer_thirdcolumn";s:19:"Footer third column";s:19:"footer_fourthcolumn";s:20:"Footer fourth column";s:6:"footer";s:6:"Footer";}s:8:"settings";a:1:{s:20:"shortcut_module_link";s:1:"0";}s:6:"engine";s:11:"phptemplate";s:8:"features";a:9:{i:0;s:4:"logo";i:1;s:7:"favicon";i:2;s:4:"name";i:3;s:6:"slogan";i:4;s:17:"node_user_picture";i:5;s:20:"comment_user_picture";i:6;s:25:"comment_user_verification";i:7;s:9:"main_menu";i:8;s:14:"secondary_menu";}s:10:"screenshot";s:28:"themes/bartik/screenshot.png";s:3:"php";s:5:"5.2.4";s:7:"scripts";a:0:{}s:5:"mtime";i:1664863480;s:14:"regions_hidden";a:2:{i:0;s:8:"page_top";i:1;s:11:"page_bottom";}s:28:"overlay_supplemental_regions";a:1:{i:0;s:8:"page_top";}}s:6:"prefix";s:11:"phptemplate";s:11:"stylesheets";a:2:{s:3:"all";a:3:{s:14:"css/layout.css";s:28:"themes/bartik/css/layout.css";s:13:"css/style.css";s:27:"themes/bartik/css/style.css";s:14:"css/colors.css";s:28:"themes/bartik/css/colors.css";}s:5:"print";a:1:{s:13:"css/print.css";s:27:"themes/bartik/css/print.css";}}s:6:"engine";s:11:"phptemplate";}}',
   'page_callback' => 'block_admin_demo',
   'page_arguments' => 'a:1:{i:0;s:6:"bartik";}',
   'delivery_callback' => '',
@@ -40559,7 +43827,7 @@
   'load_functions' => '',
   'to_arg_functions' => '',
   'access_callback' => '_block_themes_access',
-  'access_arguments' => 'a:1:{i:0;O:8:"stdClass":12:{s:8:"filename";s:27:"themes/garland/garland.info";s:4:"name";s:7:"garland";s:4:"type";s:5:"theme";s:5:"owner";s:45:"themes/engines/phptemplate/phptemplate.engine";s:6:"status";s:1:"0";s:9:"bootstrap";s:1:"0";s:14:"schema_version";s:2:"-1";s:6:"weight";s:1:"0";s:4:"info";a:18:{s:4:"name";s:7:"Garland";s:11:"description";s:111:"A multi-column theme which can be configured to modify colors and switch between fixed and fluid width layouts.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:11:"stylesheets";a:2:{s:3:"all";a:1:{s:9:"style.css";s:24:"themes/garland/style.css";}s:5:"print";a:1:{s:9:"print.css";s:24:"themes/garland/print.css";}}s:8:"settings";a:1:{s:13:"garland_width";s:5:"fluid";}s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:6:"engine";s:11:"phptemplate";s:7:"regions";a:9:{s:13:"sidebar_first";s:12:"Left sidebar";s:14:"sidebar_second";s:13:"Right sidebar";s:7:"content";s:7:"Content";s:6:"header";s:6:"Header";s:6:"footer";s:6:"Footer";s:11:"highlighted";s:11:"Highlighted";s:4:"help";s:4:"Help";s:8:"page_top";s:8:"Page top";s:11:"page_bottom";s:11:"Page bottom";}s:8:"features";a:9:{i:0;s:4:"logo";i:1;s:7:"favicon";i:2;s:4:"name";i:3;s:6:"slogan";i:4;s:17:"node_user_picture";i:5;s:20:"comment_user_picture";i:6;s:25:"comment_user_verification";i:7;s:9:"main_menu";i:8;s:14:"secondary_menu";}s:10:"screenshot";s:29:"themes/garland/screenshot.png";s:3:"php";s:5:"5.2.4";s:7:"scripts";a:0:{}s:5:"mtime";i:1444866674;s:14:"regions_hidden";a:2:{i:0;s:8:"page_top";i:1;s:11:"page_bottom";}s:28:"overlay_supplemental_regions";a:1:{i:0;s:8:"page_top";}}s:6:"prefix";s:11:"phptemplate";s:11:"stylesheets";a:2:{s:3:"all";a:1:{s:9:"style.css";s:24:"themes/garland/style.css";}s:5:"print";a:1:{s:9:"print.css";s:24:"themes/garland/print.css";}}s:6:"engine";s:11:"phptemplate";}}',
+  'access_arguments' => 'a:1:{i:0;O:8:"stdClass":12:{s:8:"filename";s:27:"themes/garland/garland.info";s:4:"name";s:7:"garland";s:4:"type";s:5:"theme";s:5:"owner";s:45:"themes/engines/phptemplate/phptemplate.engine";s:6:"status";s:1:"0";s:9:"bootstrap";s:1:"0";s:14:"schema_version";s:2:"-1";s:6:"weight";s:1:"0";s:4:"info";a:16:{s:4:"name";s:7:"Garland";s:11:"description";s:111:"A multi-column theme which can be configured to modify colors and switch between fixed and fluid width layouts.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:11:"stylesheets";a:2:{s:3:"all";a:1:{s:9:"style.css";s:24:"themes/garland/style.css";}s:5:"print";a:1:{s:9:"print.css";s:24:"themes/garland/print.css";}}s:8:"settings";a:1:{s:13:"garland_width";s:5:"fluid";}s:6:"engine";s:11:"phptemplate";s:7:"regions";a:9:{s:13:"sidebar_first";s:12:"Left sidebar";s:14:"sidebar_second";s:13:"Right sidebar";s:7:"content";s:7:"Content";s:6:"header";s:6:"Header";s:6:"footer";s:6:"Footer";s:11:"highlighted";s:11:"Highlighted";s:4:"help";s:4:"Help";s:8:"page_top";s:8:"Page top";s:11:"page_bottom";s:11:"Page bottom";}s:8:"features";a:9:{i:0;s:4:"logo";i:1;s:7:"favicon";i:2;s:4:"name";i:3;s:6:"slogan";i:4;s:17:"node_user_picture";i:5;s:20:"comment_user_picture";i:6;s:25:"comment_user_verification";i:7;s:9:"main_menu";i:8;s:14:"secondary_menu";}s:10:"screenshot";s:29:"themes/garland/screenshot.png";s:3:"php";s:5:"5.2.4";s:7:"scripts";a:0:{}s:5:"mtime";i:1664863480;s:14:"regions_hidden";a:2:{i:0;s:8:"page_top";i:1;s:11:"page_bottom";}s:28:"overlay_supplemental_regions";a:1:{i:0;s:8:"page_top";}}s:6:"prefix";s:11:"phptemplate";s:11:"stylesheets";a:2:{s:3:"all";a:1:{s:9:"style.css";s:24:"themes/garland/style.css";}s:5:"print";a:1:{s:9:"print.css";s:24:"themes/garland/print.css";}}s:6:"engine";s:11:"phptemplate";}}',
   'page_callback' => 'block_admin_demo',
   'page_arguments' => 'a:1:{i:0;s:7:"garland";}',
   'delivery_callback' => '',
@@ -40584,7 +43852,7 @@
   'load_functions' => '',
   'to_arg_functions' => '',
   'access_callback' => '_block_themes_access',
-  'access_arguments' => 'a:1:{i:0;O:8:"stdClass":12:{s:8:"filename";s:23:"themes/seven/seven.info";s:4:"name";s:5:"seven";s:4:"type";s:5:"theme";s:5:"owner";s:45:"themes/engines/phptemplate/phptemplate.engine";s:6:"status";s:1:"1";s:9:"bootstrap";s:1:"0";s:14:"schema_version";s:2:"-1";s:6:"weight";s:1:"0";s:4:"info";a:18:{s:4:"name";s:5:"Seven";s:11:"description";s:65:"A simple one-column, tableless, fluid width administration theme.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:11:"stylesheets";a:1:{s:6:"screen";a:2:{s:9:"reset.css";s:22:"themes/seven/reset.css";s:9:"style.css";s:22:"themes/seven/style.css";}}s:8:"settings";a:1:{s:20:"shortcut_module_link";s:1:"1";}s:7:"regions";a:5:{s:7:"content";s:7:"Content";s:4:"help";s:4:"Help";s:8:"page_top";s:8:"Page top";s:11:"page_bottom";s:11:"Page bottom";s:13:"sidebar_first";s:13:"First sidebar";}s:14:"regions_hidden";a:3:{i:0;s:13:"sidebar_first";i:1;s:8:"page_top";i:2;s:11:"page_bottom";}s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:6:"engine";s:11:"phptemplate";s:8:"features";a:9:{i:0;s:4:"logo";i:1;s:7:"favicon";i:2;s:4:"name";i:3;s:6:"slogan";i:4;s:17:"node_user_picture";i:5;s:20:"comment_user_picture";i:6;s:25:"comment_user_verification";i:7;s:9:"main_menu";i:8;s:14:"secondary_menu";}s:10:"screenshot";s:27:"themes/seven/screenshot.png";s:3:"php";s:5:"5.2.4";s:7:"scripts";a:0:{}s:5:"mtime";i:1444866674;s:28:"overlay_supplemental_regions";a:1:{i:0;s:8:"page_top";}}s:6:"prefix";s:11:"phptemplate";s:11:"stylesheets";a:1:{s:6:"screen";a:2:{s:9:"reset.css";s:22:"themes/seven/reset.css";s:9:"style.css";s:22:"themes/seven/style.css";}}s:6:"engine";s:11:"phptemplate";}}',
+  'access_arguments' => 'a:1:{i:0;O:8:"stdClass":12:{s:8:"filename";s:23:"themes/seven/seven.info";s:4:"name";s:5:"seven";s:4:"type";s:5:"theme";s:5:"owner";s:45:"themes/engines/phptemplate/phptemplate.engine";s:6:"status";s:1:"1";s:9:"bootstrap";s:1:"0";s:14:"schema_version";s:2:"-1";s:6:"weight";s:1:"0";s:4:"info";a:16:{s:4:"name";s:5:"Seven";s:11:"description";s:65:"A simple one-column, tableless, fluid width administration theme.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:11:"stylesheets";a:1:{s:6:"screen";a:2:{s:9:"reset.css";s:22:"themes/seven/reset.css";s:9:"style.css";s:22:"themes/seven/style.css";}}s:8:"settings";a:1:{s:20:"shortcut_module_link";s:1:"1";}s:7:"regions";a:5:{s:7:"content";s:7:"Content";s:4:"help";s:4:"Help";s:8:"page_top";s:8:"Page top";s:11:"page_bottom";s:11:"Page bottom";s:13:"sidebar_first";s:13:"First sidebar";}s:14:"regions_hidden";a:3:{i:0;s:13:"sidebar_first";i:1;s:8:"page_top";i:2;s:11:"page_bottom";}s:6:"engine";s:11:"phptemplate";s:8:"features";a:9:{i:0;s:4:"logo";i:1;s:7:"favicon";i:2;s:4:"name";i:3;s:6:"slogan";i:4;s:17:"node_user_picture";i:5;s:20:"comment_user_picture";i:6;s:25:"comment_user_verification";i:7;s:9:"main_menu";i:8;s:14:"secondary_menu";}s:10:"screenshot";s:27:"themes/seven/screenshot.png";s:3:"php";s:5:"5.2.4";s:7:"scripts";a:0:{}s:5:"mtime";i:1664863480;s:28:"overlay_supplemental_regions";a:1:{i:0;s:8:"page_top";}}s:6:"prefix";s:11:"phptemplate";s:11:"stylesheets";a:1:{s:6:"screen";a:2:{s:9:"reset.css";s:22:"themes/seven/reset.css";s:9:"style.css";s:22:"themes/seven/style.css";}}s:6:"engine";s:11:"phptemplate";}}',
   'page_callback' => 'block_admin_demo',
   'page_arguments' => 'a:1:{i:0;s:5:"seven";}',
   'delivery_callback' => '',
@@ -40609,7 +43877,7 @@
   'load_functions' => '',
   'to_arg_functions' => '',
   'access_callback' => '_block_themes_access',
-  'access_arguments' => "a:1:{i:0;O:8:\"stdClass\":12:{s:8:\"filename\";s:23:\"themes/stark/stark.info\";s:4:\"name\";s:5:\"stark\";s:4:\"type\";s:5:\"theme\";s:5:\"owner\";s:45:\"themes/engines/phptemplate/phptemplate.engine\";s:6:\"status\";s:1:\"0\";s:9:\"bootstrap\";s:1:\"0\";s:14:\"schema_version\";s:2:\"-1\";s:6:\"weight\";s:1:\"0\";s:4:\"info\";a:17:{s:4:\"name\";s:5:\"Stark\";s:11:\"description\";s:208:\"This theme demonstrates Drupal's default HTML markup and CSS styles. To learn how to build your own theme and override Drupal's default code, see the <a href=\"http://drupal.org/theme-guide\">Theming Guide</a>.\";s:7:\"package\";s:4:\"Core\";s:7:\"version\";s:4:\"7.40\";s:4:\"core\";s:3:\"7.x\";s:11:\"stylesheets\";a:1:{s:3:\"all\";a:1:{s:10:\"layout.css\";s:23:\"themes/stark/layout.css\";}}s:7:\"project\";s:6:\"drupal\";s:9:\"datestamp\";s:10:\"1444866674\";s:6:\"engine\";s:11:\"phptemplate\";s:7:\"regions\";a:9:{s:13:\"sidebar_first\";s:12:\"Left sidebar\";s:14:\"sidebar_second\";s:13:\"Right sidebar\";s:7:\"content\";s:7:\"Content\";s:6:\"header\";s:6:\"Header\";s:6:\"footer\";s:6:\"Footer\";s:11:\"highlighted\";s:11:\"Highlighted\";s:4:\"help\";s:4:\"Help\";s:8:\"page_top\";s:8:\"Page top\";s:11:\"page_bottom\";s:11:\"Page bottom\";}s:8:\"features\";a:9:{i:0;s:4:\"logo\";i:1;s:7:\"favicon\";i:2;s:4:\"name\";i:3;s:6:\"slogan\";i:4;s:17:\"node_user_picture\";i:5;s:20:\"comment_user_picture\";i:6;s:25:\"comment_user_verification\";i:7;s:9:\"main_menu\";i:8;s:14:\"secondary_menu\";}s:10:\"screenshot\";s:27:\"themes/stark/screenshot.png\";s:3:\"php\";s:5:\"5.2.4\";s:7:\"scripts\";a:0:{}s:5:\"mtime\";i:1444866674;s:14:\"regions_hidden\";a:2:{i:0;s:8:\"page_top\";i:1;s:11:\"page_bottom\";}s:28:\"overlay_supplemental_regions\";a:1:{i:0;s:8:\"page_top\";}}s:6:\"prefix\";s:11:\"phptemplate\";s:11:\"stylesheets\";a:1:{s:3:\"all\";a:1:{s:10:\"layout.css\";s:23:\"themes/stark/layout.css\";}}s:6:\"engine\";s:11:\"phptemplate\";}}",
+  'access_arguments' => "a:1:{i:0;O:8:\"stdClass\":12:{s:8:\"filename\";s:23:\"themes/stark/stark.info\";s:4:\"name\";s:5:\"stark\";s:4:\"type\";s:5:\"theme\";s:5:\"owner\";s:45:\"themes/engines/phptemplate/phptemplate.engine\";s:6:\"status\";s:1:\"0\";s:9:\"bootstrap\";s:1:\"0\";s:14:\"schema_version\";s:2:\"-1\";s:6:\"weight\";s:1:\"0\";s:4:\"info\";a:15:{s:4:\"name\";s:5:\"Stark\";s:11:\"description\";s:208:\"This theme demonstrates Drupal's default HTML markup and CSS styles. To learn how to build your own theme and override Drupal's default code, see the <a href=\"http://drupal.org/theme-guide\">Theming Guide</a>.\";s:7:\"package\";s:4:\"Core\";s:7:\"version\";s:4:\"7.92\";s:4:\"core\";s:3:\"7.x\";s:11:\"stylesheets\";a:1:{s:3:\"all\";a:1:{s:10:\"layout.css\";s:23:\"themes/stark/layout.css\";}}s:6:\"engine\";s:11:\"phptemplate\";s:7:\"regions\";a:9:{s:13:\"sidebar_first\";s:12:\"Left sidebar\";s:14:\"sidebar_second\";s:13:\"Right sidebar\";s:7:\"content\";s:7:\"Content\";s:6:\"header\";s:6:\"Header\";s:6:\"footer\";s:6:\"Footer\";s:11:\"highlighted\";s:11:\"Highlighted\";s:4:\"help\";s:4:\"Help\";s:8:\"page_top\";s:8:\"Page top\";s:11:\"page_bottom\";s:11:\"Page bottom\";}s:8:\"features\";a:9:{i:0;s:4:\"logo\";i:1;s:7:\"favicon\";i:2;s:4:\"name\";i:3;s:6:\"slogan\";i:4;s:17:\"node_user_picture\";i:5;s:20:\"comment_user_picture\";i:6;s:25:\"comment_user_verification\";i:7;s:9:\"main_menu\";i:8;s:14:\"secondary_menu\";}s:10:\"screenshot\";s:27:\"themes/stark/screenshot.png\";s:3:\"php\";s:5:\"5.2.4\";s:7:\"scripts\";a:0:{}s:5:\"mtime\";i:1664863480;s:14:\"regions_hidden\";a:2:{i:0;s:8:\"page_top\";i:1;s:11:\"page_bottom\";}s:28:\"overlay_supplemental_regions\";a:1:{i:0;s:8:\"page_top\";}}s:6:\"prefix\";s:11:\"phptemplate\";s:11:\"stylesheets\";a:1:{s:3:\"all\";a:1:{s:10:\"layout.css\";s:23:\"themes/stark/layout.css\";}}s:6:\"engine\";s:11:\"phptemplate\";}}",
   'page_callback' => 'block_admin_demo',
   'page_arguments' => 'a:1:{i:0;s:5:"stark";}',
   'delivery_callback' => '',
@@ -40634,7 +43902,7 @@
   'load_functions' => '',
   'to_arg_functions' => '',
   'access_callback' => '_block_themes_access',
-  'access_arguments' => 'a:1:{i:0;O:8:"stdClass":12:{s:8:"filename";s:25:"themes/bartik/bartik.info";s:4:"name";s:6:"bartik";s:4:"type";s:5:"theme";s:5:"owner";s:45:"themes/engines/phptemplate/phptemplate.engine";s:6:"status";s:1:"1";s:9:"bootstrap";s:1:"0";s:14:"schema_version";s:2:"-1";s:6:"weight";s:1:"0";s:4:"info";a:18:{s:4:"name";s:6:"Bartik";s:11:"description";s:48:"A flexible, recolorable theme with many regions.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:11:"stylesheets";a:2:{s:3:"all";a:3:{s:14:"css/layout.css";s:28:"themes/bartik/css/layout.css";s:13:"css/style.css";s:27:"themes/bartik/css/style.css";s:14:"css/colors.css";s:28:"themes/bartik/css/colors.css";}s:5:"print";a:1:{s:13:"css/print.css";s:27:"themes/bartik/css/print.css";}}s:7:"regions";a:17:{s:6:"header";s:6:"Header";s:4:"help";s:4:"Help";s:8:"page_top";s:8:"Page top";s:11:"page_bottom";s:11:"Page bottom";s:11:"highlighted";s:11:"Highlighted";s:8:"featured";s:8:"Featured";s:7:"content";s:7:"Content";s:13:"sidebar_first";s:13:"Sidebar first";s:14:"sidebar_second";s:14:"Sidebar second";s:14:"triptych_first";s:14:"Triptych first";s:15:"triptych_middle";s:15:"Triptych middle";s:13:"triptych_last";s:13:"Triptych last";s:18:"footer_firstcolumn";s:19:"Footer first column";s:19:"footer_secondcolumn";s:20:"Footer second column";s:18:"footer_thirdcolumn";s:19:"Footer third column";s:19:"footer_fourthcolumn";s:20:"Footer fourth column";s:6:"footer";s:6:"Footer";}s:8:"settings";a:1:{s:20:"shortcut_module_link";s:1:"0";}s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:6:"engine";s:11:"phptemplate";s:8:"features";a:9:{i:0;s:4:"logo";i:1;s:7:"favicon";i:2;s:4:"name";i:3;s:6:"slogan";i:4;s:17:"node_user_picture";i:5;s:20:"comment_user_picture";i:6;s:25:"comment_user_verification";i:7;s:9:"main_menu";i:8;s:14:"secondary_menu";}s:10:"screenshot";s:28:"themes/bartik/screenshot.png";s:3:"php";s:5:"5.2.4";s:7:"scripts";a:0:{}s:5:"mtime";i:1444866674;s:14:"regions_hidden";a:2:{i:0;s:8:"page_top";i:1;s:11:"page_bottom";}s:28:"overlay_supplemental_regions";a:1:{i:0;s:8:"page_top";}}s:6:"prefix";s:11:"phptemplate";s:11:"stylesheets";a:2:{s:3:"all";a:3:{s:14:"css/layout.css";s:28:"themes/bartik/css/layout.css";s:13:"css/style.css";s:27:"themes/bartik/css/style.css";s:14:"css/colors.css";s:28:"themes/bartik/css/colors.css";}s:5:"print";a:1:{s:13:"css/print.css";s:27:"themes/bartik/css/print.css";}}s:6:"engine";s:11:"phptemplate";}}',
+  'access_arguments' => 'a:1:{i:0;O:8:"stdClass":12:{s:8:"filename";s:25:"themes/bartik/bartik.info";s:4:"name";s:6:"bartik";s:4:"type";s:5:"theme";s:5:"owner";s:45:"themes/engines/phptemplate/phptemplate.engine";s:6:"status";s:1:"1";s:9:"bootstrap";s:1:"0";s:14:"schema_version";s:2:"-1";s:6:"weight";s:1:"0";s:4:"info";a:16:{s:4:"name";s:6:"Bartik";s:11:"description";s:48:"A flexible, recolorable theme with many regions.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:11:"stylesheets";a:2:{s:3:"all";a:3:{s:14:"css/layout.css";s:28:"themes/bartik/css/layout.css";s:13:"css/style.css";s:27:"themes/bartik/css/style.css";s:14:"css/colors.css";s:28:"themes/bartik/css/colors.css";}s:5:"print";a:1:{s:13:"css/print.css";s:27:"themes/bartik/css/print.css";}}s:7:"regions";a:17:{s:6:"header";s:6:"Header";s:4:"help";s:4:"Help";s:8:"page_top";s:8:"Page top";s:11:"page_bottom";s:11:"Page bottom";s:11:"highlighted";s:11:"Highlighted";s:8:"featured";s:8:"Featured";s:7:"content";s:7:"Content";s:13:"sidebar_first";s:13:"Sidebar first";s:14:"sidebar_second";s:14:"Sidebar second";s:14:"triptych_first";s:14:"Triptych first";s:15:"triptych_middle";s:15:"Triptych middle";s:13:"triptych_last";s:13:"Triptych last";s:18:"footer_firstcolumn";s:19:"Footer first column";s:19:"footer_secondcolumn";s:20:"Footer second column";s:18:"footer_thirdcolumn";s:19:"Footer third column";s:19:"footer_fourthcolumn";s:20:"Footer fourth column";s:6:"footer";s:6:"Footer";}s:8:"settings";a:1:{s:20:"shortcut_module_link";s:1:"0";}s:6:"engine";s:11:"phptemplate";s:8:"features";a:9:{i:0;s:4:"logo";i:1;s:7:"favicon";i:2;s:4:"name";i:3;s:6:"slogan";i:4;s:17:"node_user_picture";i:5;s:20:"comment_user_picture";i:6;s:25:"comment_user_verification";i:7;s:9:"main_menu";i:8;s:14:"secondary_menu";}s:10:"screenshot";s:28:"themes/bartik/screenshot.png";s:3:"php";s:5:"5.2.4";s:7:"scripts";a:0:{}s:5:"mtime";i:1664863480;s:14:"regions_hidden";a:2:{i:0;s:8:"page_top";i:1;s:11:"page_bottom";}s:28:"overlay_supplemental_regions";a:1:{i:0;s:8:"page_top";}}s:6:"prefix";s:11:"phptemplate";s:11:"stylesheets";a:2:{s:3:"all";a:3:{s:14:"css/layout.css";s:28:"themes/bartik/css/layout.css";s:13:"css/style.css";s:27:"themes/bartik/css/style.css";s:14:"css/colors.css";s:28:"themes/bartik/css/colors.css";}s:5:"print";a:1:{s:13:"css/print.css";s:27:"themes/bartik/css/print.css";}}s:6:"engine";s:11:"phptemplate";}}',
   'page_callback' => 'block_admin_display',
   'page_arguments' => 'a:1:{i:0;s:6:"bartik";}',
   'delivery_callback' => '',
@@ -40659,7 +43927,7 @@
   'load_functions' => '',
   'to_arg_functions' => '',
   'access_callback' => '_block_themes_access',
-  'access_arguments' => 'a:1:{i:0;O:8:"stdClass":12:{s:8:"filename";s:27:"themes/garland/garland.info";s:4:"name";s:7:"garland";s:4:"type";s:5:"theme";s:5:"owner";s:45:"themes/engines/phptemplate/phptemplate.engine";s:6:"status";s:1:"0";s:9:"bootstrap";s:1:"0";s:14:"schema_version";s:2:"-1";s:6:"weight";s:1:"0";s:4:"info";a:18:{s:4:"name";s:7:"Garland";s:11:"description";s:111:"A multi-column theme which can be configured to modify colors and switch between fixed and fluid width layouts.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:11:"stylesheets";a:2:{s:3:"all";a:1:{s:9:"style.css";s:24:"themes/garland/style.css";}s:5:"print";a:1:{s:9:"print.css";s:24:"themes/garland/print.css";}}s:8:"settings";a:1:{s:13:"garland_width";s:5:"fluid";}s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:6:"engine";s:11:"phptemplate";s:7:"regions";a:9:{s:13:"sidebar_first";s:12:"Left sidebar";s:14:"sidebar_second";s:13:"Right sidebar";s:7:"content";s:7:"Content";s:6:"header";s:6:"Header";s:6:"footer";s:6:"Footer";s:11:"highlighted";s:11:"Highlighted";s:4:"help";s:4:"Help";s:8:"page_top";s:8:"Page top";s:11:"page_bottom";s:11:"Page bottom";}s:8:"features";a:9:{i:0;s:4:"logo";i:1;s:7:"favicon";i:2;s:4:"name";i:3;s:6:"slogan";i:4;s:17:"node_user_picture";i:5;s:20:"comment_user_picture";i:6;s:25:"comment_user_verification";i:7;s:9:"main_menu";i:8;s:14:"secondary_menu";}s:10:"screenshot";s:29:"themes/garland/screenshot.png";s:3:"php";s:5:"5.2.4";s:7:"scripts";a:0:{}s:5:"mtime";i:1444866674;s:14:"regions_hidden";a:2:{i:0;s:8:"page_top";i:1;s:11:"page_bottom";}s:28:"overlay_supplemental_regions";a:1:{i:0;s:8:"page_top";}}s:6:"prefix";s:11:"phptemplate";s:11:"stylesheets";a:2:{s:3:"all";a:1:{s:9:"style.css";s:24:"themes/garland/style.css";}s:5:"print";a:1:{s:9:"print.css";s:24:"themes/garland/print.css";}}s:6:"engine";s:11:"phptemplate";}}',
+  'access_arguments' => 'a:1:{i:0;O:8:"stdClass":12:{s:8:"filename";s:27:"themes/garland/garland.info";s:4:"name";s:7:"garland";s:4:"type";s:5:"theme";s:5:"owner";s:45:"themes/engines/phptemplate/phptemplate.engine";s:6:"status";s:1:"0";s:9:"bootstrap";s:1:"0";s:14:"schema_version";s:2:"-1";s:6:"weight";s:1:"0";s:4:"info";a:16:{s:4:"name";s:7:"Garland";s:11:"description";s:111:"A multi-column theme which can be configured to modify colors and switch between fixed and fluid width layouts.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:11:"stylesheets";a:2:{s:3:"all";a:1:{s:9:"style.css";s:24:"themes/garland/style.css";}s:5:"print";a:1:{s:9:"print.css";s:24:"themes/garland/print.css";}}s:8:"settings";a:1:{s:13:"garland_width";s:5:"fluid";}s:6:"engine";s:11:"phptemplate";s:7:"regions";a:9:{s:13:"sidebar_first";s:12:"Left sidebar";s:14:"sidebar_second";s:13:"Right sidebar";s:7:"content";s:7:"Content";s:6:"header";s:6:"Header";s:6:"footer";s:6:"Footer";s:11:"highlighted";s:11:"Highlighted";s:4:"help";s:4:"Help";s:8:"page_top";s:8:"Page top";s:11:"page_bottom";s:11:"Page bottom";}s:8:"features";a:9:{i:0;s:4:"logo";i:1;s:7:"favicon";i:2;s:4:"name";i:3;s:6:"slogan";i:4;s:17:"node_user_picture";i:5;s:20:"comment_user_picture";i:6;s:25:"comment_user_verification";i:7;s:9:"main_menu";i:8;s:14:"secondary_menu";}s:10:"screenshot";s:29:"themes/garland/screenshot.png";s:3:"php";s:5:"5.2.4";s:7:"scripts";a:0:{}s:5:"mtime";i:1664863480;s:14:"regions_hidden";a:2:{i:0;s:8:"page_top";i:1;s:11:"page_bottom";}s:28:"overlay_supplemental_regions";a:1:{i:0;s:8:"page_top";}}s:6:"prefix";s:11:"phptemplate";s:11:"stylesheets";a:2:{s:3:"all";a:1:{s:9:"style.css";s:24:"themes/garland/style.css";}s:5:"print";a:1:{s:9:"print.css";s:24:"themes/garland/print.css";}}s:6:"engine";s:11:"phptemplate";}}',
   'page_callback' => 'block_admin_display',
   'page_arguments' => 'a:1:{i:0;s:7:"garland";}',
   'delivery_callback' => '',
@@ -40709,7 +43977,7 @@
   'load_functions' => '',
   'to_arg_functions' => '',
   'access_callback' => '_block_themes_access',
-  'access_arguments' => 'a:1:{i:0;O:8:"stdClass":12:{s:8:"filename";s:23:"themes/seven/seven.info";s:4:"name";s:5:"seven";s:4:"type";s:5:"theme";s:5:"owner";s:45:"themes/engines/phptemplate/phptemplate.engine";s:6:"status";s:1:"1";s:9:"bootstrap";s:1:"0";s:14:"schema_version";s:2:"-1";s:6:"weight";s:1:"0";s:4:"info";a:18:{s:4:"name";s:5:"Seven";s:11:"description";s:65:"A simple one-column, tableless, fluid width administration theme.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:11:"stylesheets";a:1:{s:6:"screen";a:2:{s:9:"reset.css";s:22:"themes/seven/reset.css";s:9:"style.css";s:22:"themes/seven/style.css";}}s:8:"settings";a:1:{s:20:"shortcut_module_link";s:1:"1";}s:7:"regions";a:5:{s:7:"content";s:7:"Content";s:4:"help";s:4:"Help";s:8:"page_top";s:8:"Page top";s:11:"page_bottom";s:11:"Page bottom";s:13:"sidebar_first";s:13:"First sidebar";}s:14:"regions_hidden";a:3:{i:0;s:13:"sidebar_first";i:1;s:8:"page_top";i:2;s:11:"page_bottom";}s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:6:"engine";s:11:"phptemplate";s:8:"features";a:9:{i:0;s:4:"logo";i:1;s:7:"favicon";i:2;s:4:"name";i:3;s:6:"slogan";i:4;s:17:"node_user_picture";i:5;s:20:"comment_user_picture";i:6;s:25:"comment_user_verification";i:7;s:9:"main_menu";i:8;s:14:"secondary_menu";}s:10:"screenshot";s:27:"themes/seven/screenshot.png";s:3:"php";s:5:"5.2.4";s:7:"scripts";a:0:{}s:5:"mtime";i:1444866674;s:28:"overlay_supplemental_regions";a:1:{i:0;s:8:"page_top";}}s:6:"prefix";s:11:"phptemplate";s:11:"stylesheets";a:1:{s:6:"screen";a:2:{s:9:"reset.css";s:22:"themes/seven/reset.css";s:9:"style.css";s:22:"themes/seven/style.css";}}s:6:"engine";s:11:"phptemplate";}}',
+  'access_arguments' => 'a:1:{i:0;O:8:"stdClass":12:{s:8:"filename";s:23:"themes/seven/seven.info";s:4:"name";s:5:"seven";s:4:"type";s:5:"theme";s:5:"owner";s:45:"themes/engines/phptemplate/phptemplate.engine";s:6:"status";s:1:"1";s:9:"bootstrap";s:1:"0";s:14:"schema_version";s:2:"-1";s:6:"weight";s:1:"0";s:4:"info";a:16:{s:4:"name";s:5:"Seven";s:11:"description";s:65:"A simple one-column, tableless, fluid width administration theme.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:11:"stylesheets";a:1:{s:6:"screen";a:2:{s:9:"reset.css";s:22:"themes/seven/reset.css";s:9:"style.css";s:22:"themes/seven/style.css";}}s:8:"settings";a:1:{s:20:"shortcut_module_link";s:1:"1";}s:7:"regions";a:5:{s:7:"content";s:7:"Content";s:4:"help";s:4:"Help";s:8:"page_top";s:8:"Page top";s:11:"page_bottom";s:11:"Page bottom";s:13:"sidebar_first";s:13:"First sidebar";}s:14:"regions_hidden";a:3:{i:0;s:13:"sidebar_first";i:1;s:8:"page_top";i:2;s:11:"page_bottom";}s:6:"engine";s:11:"phptemplate";s:8:"features";a:9:{i:0;s:4:"logo";i:1;s:7:"favicon";i:2;s:4:"name";i:3;s:6:"slogan";i:4;s:17:"node_user_picture";i:5;s:20:"comment_user_picture";i:6;s:25:"comment_user_verification";i:7;s:9:"main_menu";i:8;s:14:"secondary_menu";}s:10:"screenshot";s:27:"themes/seven/screenshot.png";s:3:"php";s:5:"5.2.4";s:7:"scripts";a:0:{}s:5:"mtime";i:1664863480;s:28:"overlay_supplemental_regions";a:1:{i:0;s:8:"page_top";}}s:6:"prefix";s:11:"phptemplate";s:11:"stylesheets";a:1:{s:6:"screen";a:2:{s:9:"reset.css";s:22:"themes/seven/reset.css";s:9:"style.css";s:22:"themes/seven/style.css";}}s:6:"engine";s:11:"phptemplate";}}',
   'page_callback' => 'block_admin_display',
   'page_arguments' => 'a:1:{i:0;s:5:"seven";}',
   'delivery_callback' => '',
@@ -40759,7 +44027,7 @@
   'load_functions' => '',
   'to_arg_functions' => '',
   'access_callback' => '_block_themes_access',
-  'access_arguments' => "a:1:{i:0;O:8:\"stdClass\":12:{s:8:\"filename\";s:23:\"themes/stark/stark.info\";s:4:\"name\";s:5:\"stark\";s:4:\"type\";s:5:\"theme\";s:5:\"owner\";s:45:\"themes/engines/phptemplate/phptemplate.engine\";s:6:\"status\";s:1:\"0\";s:9:\"bootstrap\";s:1:\"0\";s:14:\"schema_version\";s:2:\"-1\";s:6:\"weight\";s:1:\"0\";s:4:\"info\";a:17:{s:4:\"name\";s:5:\"Stark\";s:11:\"description\";s:208:\"This theme demonstrates Drupal's default HTML markup and CSS styles. To learn how to build your own theme and override Drupal's default code, see the <a href=\"http://drupal.org/theme-guide\">Theming Guide</a>.\";s:7:\"package\";s:4:\"Core\";s:7:\"version\";s:4:\"7.40\";s:4:\"core\";s:3:\"7.x\";s:11:\"stylesheets\";a:1:{s:3:\"all\";a:1:{s:10:\"layout.css\";s:23:\"themes/stark/layout.css\";}}s:7:\"project\";s:6:\"drupal\";s:9:\"datestamp\";s:10:\"1444866674\";s:6:\"engine\";s:11:\"phptemplate\";s:7:\"regions\";a:9:{s:13:\"sidebar_first\";s:12:\"Left sidebar\";s:14:\"sidebar_second\";s:13:\"Right sidebar\";s:7:\"content\";s:7:\"Content\";s:6:\"header\";s:6:\"Header\";s:6:\"footer\";s:6:\"Footer\";s:11:\"highlighted\";s:11:\"Highlighted\";s:4:\"help\";s:4:\"Help\";s:8:\"page_top\";s:8:\"Page top\";s:11:\"page_bottom\";s:11:\"Page bottom\";}s:8:\"features\";a:9:{i:0;s:4:\"logo\";i:1;s:7:\"favicon\";i:2;s:4:\"name\";i:3;s:6:\"slogan\";i:4;s:17:\"node_user_picture\";i:5;s:20:\"comment_user_picture\";i:6;s:25:\"comment_user_verification\";i:7;s:9:\"main_menu\";i:8;s:14:\"secondary_menu\";}s:10:\"screenshot\";s:27:\"themes/stark/screenshot.png\";s:3:\"php\";s:5:\"5.2.4\";s:7:\"scripts\";a:0:{}s:5:\"mtime\";i:1444866674;s:14:\"regions_hidden\";a:2:{i:0;s:8:\"page_top\";i:1;s:11:\"page_bottom\";}s:28:\"overlay_supplemental_regions\";a:1:{i:0;s:8:\"page_top\";}}s:6:\"prefix\";s:11:\"phptemplate\";s:11:\"stylesheets\";a:1:{s:3:\"all\";a:1:{s:10:\"layout.css\";s:23:\"themes/stark/layout.css\";}}s:6:\"engine\";s:11:\"phptemplate\";}}",
+  'access_arguments' => "a:1:{i:0;O:8:\"stdClass\":12:{s:8:\"filename\";s:23:\"themes/stark/stark.info\";s:4:\"name\";s:5:\"stark\";s:4:\"type\";s:5:\"theme\";s:5:\"owner\";s:45:\"themes/engines/phptemplate/phptemplate.engine\";s:6:\"status\";s:1:\"0\";s:9:\"bootstrap\";s:1:\"0\";s:14:\"schema_version\";s:2:\"-1\";s:6:\"weight\";s:1:\"0\";s:4:\"info\";a:15:{s:4:\"name\";s:5:\"Stark\";s:11:\"description\";s:208:\"This theme demonstrates Drupal's default HTML markup and CSS styles. To learn how to build your own theme and override Drupal's default code, see the <a href=\"http://drupal.org/theme-guide\">Theming Guide</a>.\";s:7:\"package\";s:4:\"Core\";s:7:\"version\";s:4:\"7.92\";s:4:\"core\";s:3:\"7.x\";s:11:\"stylesheets\";a:1:{s:3:\"all\";a:1:{s:10:\"layout.css\";s:23:\"themes/stark/layout.css\";}}s:6:\"engine\";s:11:\"phptemplate\";s:7:\"regions\";a:9:{s:13:\"sidebar_first\";s:12:\"Left sidebar\";s:14:\"sidebar_second\";s:13:\"Right sidebar\";s:7:\"content\";s:7:\"Content\";s:6:\"header\";s:6:\"Header\";s:6:\"footer\";s:6:\"Footer\";s:11:\"highlighted\";s:11:\"Highlighted\";s:4:\"help\";s:4:\"Help\";s:8:\"page_top\";s:8:\"Page top\";s:11:\"page_bottom\";s:11:\"Page bottom\";}s:8:\"features\";a:9:{i:0;s:4:\"logo\";i:1;s:7:\"favicon\";i:2;s:4:\"name\";i:3;s:6:\"slogan\";i:4;s:17:\"node_user_picture\";i:5;s:20:\"comment_user_picture\";i:6;s:25:\"comment_user_verification\";i:7;s:9:\"main_menu\";i:8;s:14:\"secondary_menu\";}s:10:\"screenshot\";s:27:\"themes/stark/screenshot.png\";s:3:\"php\";s:5:\"5.2.4\";s:7:\"scripts\";a:0:{}s:5:\"mtime\";i:1664863480;s:14:\"regions_hidden\";a:2:{i:0;s:8:\"page_top\";i:1;s:11:\"page_bottom\";}s:28:\"overlay_supplemental_regions\";a:1:{i:0;s:8:\"page_top\";}}s:6:\"prefix\";s:11:\"phptemplate\";s:11:\"stylesheets\";a:1:{s:3:\"all\";a:1:{s:10:\"layout.css\";s:23:\"themes/stark/layout.css\";}}s:6:\"engine\";s:11:\"phptemplate\";}}",
   'page_callback' => 'block_admin_display',
   'page_arguments' => 'a:1:{i:0;s:5:"stark";}',
   'delivery_callback' => '',
@@ -40840,10 +44108,10 @@
   'delivery_callback' => '',
   'fit' => '121',
   'number_parts' => '7',
-  'context' => '2',
+  'context' => '3',
   'tab_parent' => 'admin/structure/block/manage/%/%',
   'tab_root' => 'admin/structure/block/manage/%/%',
-  'title' => 'Configure block',
+  'title' => 'Configure',
   'title_callback' => 't',
   'title_arguments' => '',
   'theme_callback' => '',
@@ -40851,7 +44119,7 @@
   'type' => '140',
   'description' => '',
   'position' => '',
-  'weight' => '0',
+  'weight' => '-100',
   'include_file' => 'modules/block/block.admin.inc',
 ))
 ->values(array(
@@ -40866,19 +44134,69 @@
   'fit' => '121',
   'number_parts' => '7',
   'context' => '0',
-  'tab_parent' => 'admin/structure/block/manage/%/%',
-  'tab_root' => 'admin/structure/block/manage/%/%',
+  'tab_parent' => '',
+  'tab_root' => 'admin/structure/block/manage/%/%/delete',
   'title' => 'Delete block',
   'title_callback' => 't',
   'title_arguments' => '',
   'theme_callback' => '',
   'theme_arguments' => 'a:0:{}',
-  'type' => '132',
+  'type' => '0',
   'description' => '',
   'position' => '',
   'weight' => '0',
   'include_file' => 'modules/block/block.admin.inc',
 ))
+->values(array(
+  'path' => 'admin/structure/block/manage/%/%/translate',
+  'load_functions' => 'a:2:{i:4;N;i:5;N;}',
+  'to_arg_functions' => '',
+  'access_callback' => 'i18n_block_translate_tab_access',
+  'access_arguments' => 'a:2:{i:0;i:4;i:1;i:5;}',
+  'page_callback' => 'i18n_block_translate_tab_page',
+  'page_arguments' => 'a:2:{i:0;i:4;i:1;i:5;}',
+  'delivery_callback' => '',
+  'fit' => '121',
+  'number_parts' => '7',
+  'context' => '3',
+  'tab_parent' => 'admin/structure/block/manage/%/%',
+  'tab_root' => 'admin/structure/block/manage/%/%',
+  'title' => 'Translate',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '132',
+  'description' => '',
+  'position' => '',
+  'weight' => '10',
+  'include_file' => '',
+))
+->values(array(
+  'path' => 'admin/structure/block/manage/%/%/translate/%',
+  'load_functions' => 'a:3:{i:4;N;i:5;N;i:7;s:18:"i18n_language_load";}',
+  'to_arg_functions' => '',
+  'access_callback' => 'i18n_block_translate_tab_access',
+  'access_arguments' => 'a:2:{i:0;i:4;i:1;i:5;}',
+  'page_callback' => 'i18n_block_translate_tab_page',
+  'page_arguments' => 'a:3:{i:0;i:4;i:1;i:5;i:2;i:7;}',
+  'delivery_callback' => '',
+  'fit' => '242',
+  'number_parts' => '8',
+  'context' => '0',
+  'tab_parent' => '',
+  'tab_root' => 'admin/structure/block/manage/%/%/translate/%',
+  'title' => 'Translate',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '0',
+  'description' => '',
+  'position' => '',
+  'weight' => '10',
+  'include_file' => '',
+))
 ->values(array(
   'path' => 'admin/structure/contact',
   'load_functions' => '',
@@ -41204,6 +44522,31 @@
   'weight' => '0',
   'include_file' => 'modules/menu/menu.admin.inc',
 ))
+->values(array(
+  'path' => 'admin/structure/menu/item/%',
+  'load_functions' => 'a:1:{i:4;s:14:"menu_link_load";}',
+  'to_arg_functions' => '',
+  'access_callback' => 'user_access',
+  'access_arguments' => 'a:1:{i:0;s:15:"administer menu";}',
+  'page_callback' => 'drupal_get_form',
+  'page_arguments' => 'a:4:{i:0;s:14:"menu_edit_item";i:1;s:4:"edit";i:2;i:4;i:3;N;}',
+  'delivery_callback' => '',
+  'fit' => '30',
+  'number_parts' => '5',
+  'context' => '0',
+  'tab_parent' => '',
+  'tab_root' => 'admin/structure/menu/item/%',
+  'title' => 'Edit menu link',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '0',
+  'description' => '',
+  'position' => '',
+  'weight' => '0',
+  'include_file' => 'modules/menu/menu.admin.inc',
+))
 ->values(array(
   'path' => 'admin/structure/menu/item/%/delete',
   'load_functions' => 'a:1:{i:4;s:14:"menu_link_load";}',
@@ -41240,15 +44583,15 @@
   'delivery_callback' => '',
   'fit' => '61',
   'number_parts' => '6',
-  'context' => '0',
-  'tab_parent' => '',
-  'tab_root' => 'admin/structure/menu/item/%/edit',
+  'context' => '1',
+  'tab_parent' => 'admin/structure/menu/item/%',
+  'tab_root' => 'admin/structure/menu/item/%',
   'title' => 'Edit menu link',
   'title_callback' => 't',
   'title_arguments' => '',
   'theme_callback' => '',
   'theme_arguments' => 'a:0:{}',
-  'type' => '6',
+  'type' => '140',
   'description' => '',
   'position' => '',
   'weight' => '0',
@@ -41279,6 +44622,56 @@
   'weight' => '0',
   'include_file' => 'modules/menu/menu.admin.inc',
 ))
+->values(array(
+  'path' => 'admin/structure/menu/item/%/translate',
+  'load_functions' => 'a:1:{i:4;s:14:"menu_link_load";}',
+  'to_arg_functions' => '',
+  'access_callback' => 'i18n_object_translate_access',
+  'access_arguments' => 'a:2:{i:0;s:9:"menu_link";i:1;i:4;}',
+  'page_callback' => 'i18n_page_translate_tab',
+  'page_arguments' => 'a:2:{i:0;s:9:"menu_link";i:1;i:4;}',
+  'delivery_callback' => '',
+  'fit' => '61',
+  'number_parts' => '6',
+  'context' => '1',
+  'tab_parent' => 'admin/structure/menu/item/%',
+  'tab_root' => 'admin/structure/menu/item/%',
+  'title' => 'Translate',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '132',
+  'description' => '',
+  'position' => '',
+  'weight' => '10',
+  'include_file' => 'sites/all/modules/i18n/i18n.pages.inc',
+))
+->values(array(
+  'path' => 'admin/structure/menu/item/%/translate/%',
+  'load_functions' => 'a:2:{i:4;s:14:"menu_link_load";i:6;s:18:"i18n_language_load";}',
+  'to_arg_functions' => '',
+  'access_callback' => 'i18n_object_translate_access',
+  'access_arguments' => 'a:2:{i:0;s:9:"menu_link";i:1;i:4;}',
+  'page_callback' => 'i18n_page_translate_tab',
+  'page_arguments' => 'a:3:{i:0;s:9:"menu_link";i:1;i:4;i:2;i:6;}',
+  'delivery_callback' => '',
+  'fit' => '122',
+  'number_parts' => '7',
+  'context' => '0',
+  'tab_parent' => '',
+  'tab_root' => 'admin/structure/menu/item/%/translate/%',
+  'title' => 'Translate',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '0',
+  'description' => '',
+  'position' => '',
+  'weight' => '0',
+  'include_file' => 'sites/all/modules/i18n/i18n.pages.inc',
+))
 ->values(array(
   'path' => 'admin/structure/menu/list',
   'load_functions' => '',
@@ -41319,7 +44712,7 @@
   'tab_parent' => '',
   'tab_root' => 'admin/structure/menu/manage/%',
   'title' => 'Customize menu',
-  'title_callback' => 'menu_overview_title',
+  'title_callback' => 'i18n_menu_menu_overview_title',
   'title_arguments' => 'a:1:{i:0;i:4;}',
   'theme_callback' => '',
   'theme_arguments' => 'a:0:{}',
@@ -41429,6 +44822,156 @@
   'weight' => '-10',
   'include_file' => 'modules/menu/menu.admin.inc',
 ))
+->values(array(
+  'path' => 'admin/structure/menu/manage/%/translate',
+  'load_functions' => 'a:1:{i:4;s:9:"menu_load";}',
+  'to_arg_functions' => '',
+  'access_callback' => 'i18n_object_translate_access',
+  'access_arguments' => 'a:2:{i:0;s:4:"menu";i:1;i:4;}',
+  'page_callback' => 'i18n_page_translate_localize',
+  'page_arguments' => 'a:2:{i:0;s:4:"menu";i:1;i:4;}',
+  'delivery_callback' => '',
+  'fit' => '61',
+  'number_parts' => '6',
+  'context' => '1',
+  'tab_parent' => 'admin/structure/menu/manage/%',
+  'tab_root' => 'admin/structure/menu/manage/%',
+  'title' => 'Translate',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '132',
+  'description' => '',
+  'position' => '',
+  'weight' => '10',
+  'include_file' => 'sites/all/modules/i18n/i18n.pages.inc',
+))
+->values(array(
+  'path' => 'admin/structure/menu/manage/%/translate/%',
+  'load_functions' => 'a:2:{i:4;s:9:"menu_load";i:6;s:18:"i18n_language_load";}',
+  'to_arg_functions' => '',
+  'access_callback' => 'i18n_object_translate_access',
+  'access_arguments' => 'a:2:{i:0;s:4:"menu";i:1;i:4;}',
+  'page_callback' => 'i18n_page_translate_localize',
+  'page_arguments' => 'a:3:{i:0;s:4:"menu";i:1;i:4;i:2;i:6;}',
+  'delivery_callback' => '',
+  'fit' => '122',
+  'number_parts' => '7',
+  'context' => '0',
+  'tab_parent' => '',
+  'tab_root' => 'admin/structure/menu/manage/%/translate/%',
+  'title' => 'Translate',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '0',
+  'description' => '',
+  'position' => '',
+  'weight' => '0',
+  'include_file' => 'sites/all/modules/i18n/i18n.pages.inc',
+))
+->values(array(
+  'path' => 'admin/structure/menu/manage/translation',
+  'load_functions' => '',
+  'to_arg_functions' => '',
+  'access_callback' => 'user_access',
+  'access_arguments' => 'a:1:{i:0;s:15:"administer menu";}',
+  'page_callback' => 'i18n_translation_set_list_manage',
+  'page_arguments' => 'a:1:{i:0;s:9:"menu_link";}',
+  'delivery_callback' => '',
+  'fit' => '31',
+  'number_parts' => '5',
+  'context' => '1',
+  'tab_parent' => 'admin/structure/menu',
+  'tab_root' => 'admin/structure/menu',
+  'title' => 'Translation sets',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '132',
+  'description' => '',
+  'position' => '',
+  'weight' => '10',
+  'include_file' => '',
+))
+->values(array(
+  'path' => 'admin/structure/menu/manage/translation/add',
+  'load_functions' => '',
+  'to_arg_functions' => '',
+  'access_callback' => 'user_access',
+  'access_arguments' => 'a:1:{i:0;s:15:"administer menu";}',
+  'page_callback' => 'drupal_get_form',
+  'page_arguments' => 'a:1:{i:0;s:26:"i18n_menu_translation_form";}',
+  'delivery_callback' => '',
+  'fit' => '63',
+  'number_parts' => '6',
+  'context' => '1',
+  'tab_parent' => 'admin/structure/menu/manage/translation',
+  'tab_root' => 'admin/structure/menu',
+  'title' => 'Add translation',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '388',
+  'description' => '',
+  'position' => '',
+  'weight' => '0',
+  'include_file' => 'sites/all/modules/i18n/i18n_menu/i18n_menu.admin.inc',
+))
+->values(array(
+  'path' => 'admin/structure/menu/manage/translation/delete/%',
+  'load_functions' => 'a:1:{i:6;s:26:"i18n_menu_translation_load";}',
+  'to_arg_functions' => '',
+  'access_callback' => 'user_access',
+  'access_arguments' => 'a:1:{i:0;s:15:"administer menu";}',
+  'page_callback' => 'drupal_get_form',
+  'page_arguments' => 'a:2:{i:0;s:35:"i18n_translation_set_delete_confirm";i:1;i:6;}',
+  'delivery_callback' => '',
+  'fit' => '126',
+  'number_parts' => '7',
+  'context' => '0',
+  'tab_parent' => '',
+  'tab_root' => 'admin/structure/menu/manage/translation/delete/%',
+  'title' => 'Delete translation',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '0',
+  'description' => '',
+  'position' => '',
+  'weight' => '0',
+  'include_file' => '',
+))
+->values(array(
+  'path' => 'admin/structure/menu/manage/translation/edit/%',
+  'load_functions' => 'a:1:{i:6;s:26:"i18n_menu_translation_load";}',
+  'to_arg_functions' => '',
+  'access_callback' => 'user_access',
+  'access_arguments' => 'a:1:{i:0;s:15:"administer menu";}',
+  'page_callback' => 'drupal_get_form',
+  'page_arguments' => 'a:2:{i:0;s:26:"i18n_menu_translation_form";i:1;i:6;}',
+  'delivery_callback' => '',
+  'fit' => '126',
+  'number_parts' => '7',
+  'context' => '0',
+  'tab_parent' => '',
+  'tab_root' => 'admin/structure/menu/manage/translation/edit/%',
+  'title' => 'Edit translation',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '0',
+  'description' => '',
+  'position' => '',
+  'weight' => '0',
+  'include_file' => 'sites/all/modules/i18n/i18n_menu/i18n_menu.admin.inc',
+))
 ->values(array(
   'path' => 'admin/structure/menu/parents',
   'load_functions' => '',
@@ -41558,8 +45101,8 @@
   'path' => 'admin/structure/taxonomy/%/display',
   'load_functions' => 'a:1:{i:3;s:37:"taxonomy_vocabulary_machine_name_load";}',
   'to_arg_functions' => '',
-  'access_callback' => 'user_access',
-  'access_arguments' => 'a:1:{i:0;s:19:"administer taxonomy";}',
+  'access_callback' => 'field_ui_admin_access',
+  'access_arguments' => 'a:2:{i:0;s:11:"user_access";i:1;a:1:{i:0;s:19:"administer taxonomy";}}',
   'page_callback' => 'drupal_get_form',
   'page_arguments' => 'a:4:{i:0;s:30:"field_ui_display_overview_form";i:1;s:13:"taxonomy_term";i:2;i:3;i:3;s:7:"default";}',
   'delivery_callback' => '',
@@ -41584,7 +45127,7 @@
   'load_functions' => 'a:1:{i:3;s:37:"taxonomy_vocabulary_machine_name_load";}',
   'to_arg_functions' => '',
   'access_callback' => '_field_ui_view_mode_menu_access',
-  'access_arguments' => 'a:5:{i:0;s:13:"taxonomy_term";i:1;i:3;i:2;s:7:"default";i:3;s:11:"user_access";i:4;s:19:"administer taxonomy";}',
+  'access_arguments' => 'a:6:{i:0;s:13:"taxonomy_term";i:1;i:3;i:2;s:7:"default";i:3;s:21:"field_ui_admin_access";i:4;s:11:"user_access";i:5;a:1:{i:0;s:19:"administer taxonomy";}}',
   'page_callback' => 'drupal_get_form',
   'page_arguments' => 'a:4:{i:0;s:30:"field_ui_display_overview_form";i:1;s:13:"taxonomy_term";i:2;i:3;i:3;s:7:"default";}',
   'delivery_callback' => '',
@@ -41609,7 +45152,7 @@
   'load_functions' => 'a:1:{i:3;s:37:"taxonomy_vocabulary_machine_name_load";}',
   'to_arg_functions' => '',
   'access_callback' => '_field_ui_view_mode_menu_access',
-  'access_arguments' => 'a:5:{i:0;s:13:"taxonomy_term";i:1;i:3;i:2;s:4:"full";i:3;s:11:"user_access";i:4;s:19:"administer taxonomy";}',
+  'access_arguments' => 'a:6:{i:0;s:13:"taxonomy_term";i:1;i:3;i:2;s:4:"full";i:3;s:21:"field_ui_admin_access";i:4;s:11:"user_access";i:5;a:1:{i:0;s:19:"administer taxonomy";}}',
   'page_callback' => 'drupal_get_form',
   'page_arguments' => 'a:4:{i:0;s:30:"field_ui_display_overview_form";i:1;s:13:"taxonomy_term";i:2;i:3;i:3;s:4:"full";}',
   'delivery_callback' => '',
@@ -41658,8 +45201,8 @@
   'path' => 'admin/structure/taxonomy/%/fields',
   'load_functions' => 'a:1:{i:3;s:37:"taxonomy_vocabulary_machine_name_load";}',
   'to_arg_functions' => '',
-  'access_callback' => 'user_access',
-  'access_arguments' => 'a:1:{i:0;s:19:"administer taxonomy";}',
+  'access_callback' => 'field_ui_admin_access',
+  'access_arguments' => 'a:2:{i:0;s:11:"user_access";i:1;a:1:{i:0;s:19:"administer taxonomy";}}',
   'page_callback' => 'drupal_get_form',
   'page_arguments' => 'a:3:{i:0;s:28:"field_ui_field_overview_form";i:1;s:13:"taxonomy_term";i:2;i:3;}',
   'delivery_callback' => '',
@@ -41683,8 +45226,8 @@
   'path' => 'admin/structure/taxonomy/%/fields/%',
   'load_functions' => 'a:2:{i:3;a:1:{s:37:"taxonomy_vocabulary_machine_name_load";a:4:{i:0;s:13:"taxonomy_term";i:1;i:3;i:2;s:1:"3";i:3;s:4:"%map";}}i:5;a:1:{s:18:"field_ui_menu_load";a:4:{i:0;s:13:"taxonomy_term";i:1;i:3;i:2;s:1:"3";i:3;s:4:"%map";}}}',
   'to_arg_functions' => '',
-  'access_callback' => 'user_access',
-  'access_arguments' => 'a:1:{i:0;s:19:"administer taxonomy";}',
+  'access_callback' => 'field_ui_admin_access',
+  'access_arguments' => 'a:2:{i:0;s:11:"user_access";i:1;a:1:{i:0;s:19:"administer taxonomy";}}',
   'page_callback' => 'drupal_get_form',
   'page_arguments' => 'a:2:{i:0;s:24:"field_ui_field_edit_form";i:1;i:5;}',
   'delivery_callback' => '',
@@ -41708,8 +45251,8 @@
   'path' => 'admin/structure/taxonomy/%/fields/%/delete',
   'load_functions' => 'a:2:{i:3;a:1:{s:37:"taxonomy_vocabulary_machine_name_load";a:4:{i:0;s:13:"taxonomy_term";i:1;i:3;i:2;s:1:"3";i:3;s:4:"%map";}}i:5;a:1:{s:18:"field_ui_menu_load";a:4:{i:0;s:13:"taxonomy_term";i:1;i:3;i:2;s:1:"3";i:3;s:4:"%map";}}}',
   'to_arg_functions' => '',
-  'access_callback' => 'user_access',
-  'access_arguments' => 'a:1:{i:0;s:19:"administer taxonomy";}',
+  'access_callback' => 'field_ui_admin_access',
+  'access_arguments' => 'a:2:{i:0;s:11:"user_access";i:1;a:1:{i:0;s:19:"administer taxonomy";}}',
   'page_callback' => 'drupal_get_form',
   'page_arguments' => 'a:2:{i:0;s:26:"field_ui_field_delete_form";i:1;i:5;}',
   'delivery_callback' => '',
@@ -41733,8 +45276,8 @@
   'path' => 'admin/structure/taxonomy/%/fields/%/edit',
   'load_functions' => 'a:2:{i:3;a:1:{s:37:"taxonomy_vocabulary_machine_name_load";a:4:{i:0;s:13:"taxonomy_term";i:1;i:3;i:2;s:1:"3";i:3;s:4:"%map";}}i:5;a:1:{s:18:"field_ui_menu_load";a:4:{i:0;s:13:"taxonomy_term";i:1;i:3;i:2;s:1:"3";i:3;s:4:"%map";}}}',
   'to_arg_functions' => '',
-  'access_callback' => 'user_access',
-  'access_arguments' => 'a:1:{i:0;s:19:"administer taxonomy";}',
+  'access_callback' => 'field_ui_admin_access',
+  'access_arguments' => 'a:2:{i:0;s:11:"user_access";i:1;a:1:{i:0;s:19:"administer taxonomy";}}',
   'page_callback' => 'drupal_get_form',
   'page_arguments' => 'a:2:{i:0;s:24:"field_ui_field_edit_form";i:1;i:5;}',
   'delivery_callback' => '',
@@ -41758,8 +45301,8 @@
   'path' => 'admin/structure/taxonomy/%/fields/%/field-settings',
   'load_functions' => 'a:2:{i:3;a:1:{s:37:"taxonomy_vocabulary_machine_name_load";a:4:{i:0;s:13:"taxonomy_term";i:1;i:3;i:2;s:1:"3";i:3;s:4:"%map";}}i:5;a:1:{s:18:"field_ui_menu_load";a:4:{i:0;s:13:"taxonomy_term";i:1;i:3;i:2;s:1:"3";i:3;s:4:"%map";}}}',
   'to_arg_functions' => '',
-  'access_callback' => 'user_access',
-  'access_arguments' => 'a:1:{i:0;s:19:"administer taxonomy";}',
+  'access_callback' => 'field_ui_admin_access',
+  'access_arguments' => 'a:2:{i:0;s:11:"user_access";i:1;a:1:{i:0;s:19:"administer taxonomy";}}',
   'page_callback' => 'drupal_get_form',
   'page_arguments' => 'a:2:{i:0;s:28:"field_ui_field_settings_form";i:1;i:5;}',
   'delivery_callback' => '',
@@ -41780,11 +45323,61 @@
   'include_file' => 'modules/field_ui/field_ui.admin.inc',
 ))
 ->values(array(
-  'path' => 'admin/structure/taxonomy/%/fields/%/widget-type',
+  'path' => 'admin/structure/taxonomy/%/fields/%/translate',
   'load_functions' => 'a:2:{i:3;a:1:{s:37:"taxonomy_vocabulary_machine_name_load";a:4:{i:0;s:13:"taxonomy_term";i:1;i:3;i:2;s:1:"3";i:3;s:4:"%map";}}i:5;a:1:{s:18:"field_ui_menu_load";a:4:{i:0;s:13:"taxonomy_term";i:1;i:3;i:2;s:1:"3";i:3;s:4:"%map";}}}',
   'to_arg_functions' => '',
   'access_callback' => 'user_access',
   'access_arguments' => 'a:1:{i:0;s:19:"administer taxonomy";}',
+  'page_callback' => 'i18n_field_page_translate',
+  'page_arguments' => 'a:1:{i:0;i:5;}',
+  'delivery_callback' => '',
+  'fit' => '117',
+  'number_parts' => '7',
+  'context' => '1',
+  'tab_parent' => 'admin/structure/taxonomy/%/fields/%',
+  'tab_root' => 'admin/structure/taxonomy/%/fields/%',
+  'title' => 'Translate',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '132',
+  'description' => '',
+  'position' => '',
+  'weight' => '0',
+  'include_file' => 'sites/all/modules/i18n/i18n_field/i18n_field.pages.inc',
+))
+->values(array(
+  'path' => 'admin/structure/taxonomy/%/fields/%/translate/%',
+  'load_functions' => 'a:3:{i:3;a:1:{s:37:"taxonomy_vocabulary_machine_name_load";a:4:{i:0;s:13:"taxonomy_term";i:1;i:3;i:2;s:1:"3";i:3;s:4:"%map";}}i:5;a:1:{s:18:"field_ui_menu_load";a:4:{i:0;s:13:"taxonomy_term";i:1;i:3;i:2;s:1:"3";i:3;s:4:"%map";}}i:7;a:1:{s:18:"i18n_language_load";a:4:{i:0;s:13:"taxonomy_term";i:1;i:3;i:2;s:1:"3";i:3;s:4:"%map";}}}',
+  'to_arg_functions' => '',
+  'access_callback' => 'user_access',
+  'access_arguments' => 'a:1:{i:0;s:19:"administer taxonomy";}',
+  'page_callback' => 'i18n_field_page_translate',
+  'page_arguments' => 'a:2:{i:0;i:5;i:1;i:7;}',
+  'delivery_callback' => '',
+  'fit' => '234',
+  'number_parts' => '8',
+  'context' => '0',
+  'tab_parent' => '',
+  'tab_root' => 'admin/structure/taxonomy/%/fields/%/translate/%',
+  'title' => 'Instance',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '0',
+  'description' => '',
+  'position' => '',
+  'weight' => '0',
+  'include_file' => 'sites/all/modules/i18n/i18n_field/i18n_field.pages.inc',
+))
+->values(array(
+  'path' => 'admin/structure/taxonomy/%/fields/%/widget-type',
+  'load_functions' => 'a:2:{i:3;a:1:{s:37:"taxonomy_vocabulary_machine_name_load";a:4:{i:0;s:13:"taxonomy_term";i:1;i:3;i:2;s:1:"3";i:3;s:4:"%map";}}i:5;a:1:{s:18:"field_ui_menu_load";a:4:{i:0;s:13:"taxonomy_term";i:1;i:3;i:2;s:1:"3";i:3;s:4:"%map";}}}',
+  'to_arg_functions' => '',
+  'access_callback' => 'field_ui_admin_access',
+  'access_arguments' => 'a:2:{i:0;s:11:"user_access";i:1;a:1:{i:0;s:19:"administer taxonomy";}}',
   'page_callback' => 'drupal_get_form',
   'page_arguments' => 'a:2:{i:0;s:25:"field_ui_widget_type_form";i:1;i:5;}',
   'delivery_callback' => '',
@@ -41804,6 +45397,31 @@
   'weight' => '0',
   'include_file' => 'modules/field_ui/field_ui.admin.inc',
 ))
+->values(array(
+  'path' => 'admin/structure/taxonomy/%/fields/replace/%',
+  'load_functions' => 'a:2:{i:3;a:1:{s:37:"taxonomy_vocabulary_machine_name_load";a:0:{}}i:6;N;}',
+  'to_arg_functions' => '',
+  'access_callback' => 'user_access',
+  'access_arguments' => 'a:1:{i:0;s:19:"administer taxonomy";}',
+  'page_callback' => 'drupal_get_form',
+  'page_arguments' => 'a:4:{i:0;s:28:"title_field_replacement_form";i:1;s:13:"taxonomy_term";i:2;i:3;i:3;i:6;}',
+  'delivery_callback' => '',
+  'fit' => '118',
+  'number_parts' => '7',
+  'context' => '0',
+  'tab_parent' => '',
+  'tab_root' => 'admin/structure/taxonomy/%/fields/replace/%',
+  'title' => 'Replace fields',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '6',
+  'description' => '',
+  'position' => '',
+  'weight' => '0',
+  'include_file' => 'sites/all/modules/title/title.admin.inc',
+))
 ->values(array(
   'path' => 'admin/structure/taxonomy/%/list',
   'load_functions' => 'a:1:{i:3;s:37:"taxonomy_vocabulary_machine_name_load";}',
@@ -41829,6 +45447,181 @@
   'weight' => '-20',
   'include_file' => 'modules/taxonomy/taxonomy.admin.inc',
 ))
+->values(array(
+  'path' => 'admin/structure/taxonomy/%/list/list',
+  'load_functions' => 'a:1:{i:3;s:37:"taxonomy_vocabulary_machine_name_load";}',
+  'to_arg_functions' => '',
+  'access_callback' => 'user_access',
+  'access_arguments' => 'a:1:{i:0;s:19:"administer taxonomy";}',
+  'page_callback' => 'drupal_get_form',
+  'page_arguments' => 'a:2:{i:0;s:23:"taxonomy_overview_terms";i:1;i:3;}',
+  'delivery_callback' => '',
+  'fit' => '59',
+  'number_parts' => '6',
+  'context' => '1',
+  'tab_parent' => 'admin/structure/taxonomy/%/list',
+  'tab_root' => 'admin/structure/taxonomy/%',
+  'title' => 'Terms',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '140',
+  'description' => '',
+  'position' => '',
+  'weight' => '-20',
+  'include_file' => 'modules/taxonomy/taxonomy.admin.inc',
+))
+->values(array(
+  'path' => 'admin/structure/taxonomy/%/list/sets',
+  'load_functions' => 'a:1:{i:3;s:37:"taxonomy_vocabulary_machine_name_load";}',
+  'to_arg_functions' => '',
+  'access_callback' => 'i18n_taxonomy_vocabulary_translation_tab_sets_access',
+  'access_arguments' => 'a:1:{i:0;i:3;}',
+  'page_callback' => 'i18n_taxonomy_translation_sets_overview',
+  'page_arguments' => 'a:1:{i:0;i:3;}',
+  'delivery_callback' => '',
+  'fit' => '59',
+  'number_parts' => '6',
+  'context' => '1',
+  'tab_parent' => 'admin/structure/taxonomy/%/list',
+  'tab_root' => 'admin/structure/taxonomy/%',
+  'title' => 'Translation sets',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '132',
+  'description' => '',
+  'position' => '',
+  'weight' => '0',
+  'include_file' => 'sites/all/modules/i18n/i18n_taxonomy/i18n_taxonomy.admin.inc',
+))
+->values(array(
+  'path' => 'admin/structure/taxonomy/%/list/sets/add',
+  'load_functions' => 'a:1:{i:3;s:37:"taxonomy_vocabulary_machine_name_load";}',
+  'to_arg_functions' => '',
+  'access_callback' => 'i18n_taxonomy_vocabulary_translation_tab_sets_access',
+  'access_arguments' => 'a:1:{i:0;i:3;}',
+  'page_callback' => 'drupal_get_form',
+  'page_arguments' => 'a:2:{i:0;s:35:"i18n_taxonomy_translation_term_form";i:1;i:3;}',
+  'delivery_callback' => '',
+  'fit' => '119',
+  'number_parts' => '7',
+  'context' => '1',
+  'tab_parent' => 'admin/structure/taxonomy/%/list/sets',
+  'tab_root' => 'admin/structure/taxonomy/%',
+  'title' => 'Create new translation',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '388',
+  'description' => '',
+  'position' => '',
+  'weight' => '0',
+  'include_file' => 'sites/all/modules/i18n/i18n_taxonomy/i18n_taxonomy.admin.inc',
+))
+->values(array(
+  'path' => 'admin/structure/taxonomy/%/list/sets/delete/%',
+  'load_functions' => 'a:2:{i:3;s:37:"taxonomy_vocabulary_machine_name_load";i:7;s:34:"i18n_taxonomy_translation_set_load";}',
+  'to_arg_functions' => '',
+  'access_callback' => 'i18n_taxonomy_vocabulary_translation_tab_sets_access',
+  'access_arguments' => 'a:1:{i:0;i:3;}',
+  'page_callback' => 'drupal_get_form',
+  'page_arguments' => 'a:2:{i:0;s:35:"i18n_translation_set_delete_confirm";i:1;i:7;}',
+  'delivery_callback' => '',
+  'fit' => '238',
+  'number_parts' => '8',
+  'context' => '0',
+  'tab_parent' => '',
+  'tab_root' => 'admin/structure/taxonomy/%/list/sets/delete/%',
+  'title' => 'Delete translation',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '0',
+  'description' => '',
+  'position' => '',
+  'weight' => '0',
+  'include_file' => '',
+))
+->values(array(
+  'path' => 'admin/structure/taxonomy/%/list/sets/edit/%',
+  'load_functions' => 'a:2:{i:3;s:37:"taxonomy_vocabulary_machine_name_load";i:7;s:34:"i18n_taxonomy_translation_set_load";}',
+  'to_arg_functions' => '',
+  'access_callback' => 'i18n_taxonomy_vocabulary_translation_tab_sets_access',
+  'access_arguments' => 'a:1:{i:0;i:3;}',
+  'page_callback' => 'drupal_get_form',
+  'page_arguments' => 'a:3:{i:0;s:35:"i18n_taxonomy_translation_term_form";i:1;i:3;i:2;i:7;}',
+  'delivery_callback' => '',
+  'fit' => '238',
+  'number_parts' => '8',
+  'context' => '0',
+  'tab_parent' => '',
+  'tab_root' => 'admin/structure/taxonomy/%/list/sets/edit/%',
+  'title' => 'Edit translation',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '0',
+  'description' => '',
+  'position' => '',
+  'weight' => '0',
+  'include_file' => 'sites/all/modules/i18n/i18n_taxonomy/i18n_taxonomy.admin.inc',
+))
+->values(array(
+  'path' => 'admin/structure/taxonomy/%/translate',
+  'load_functions' => 'a:1:{i:3;s:37:"taxonomy_vocabulary_machine_name_load";}',
+  'to_arg_functions' => '',
+  'access_callback' => 'i18n_object_translate_access',
+  'access_arguments' => 'a:2:{i:0;s:19:"taxonomy_vocabulary";i:1;i:3;}',
+  'page_callback' => 'i18n_page_translate_localize',
+  'page_arguments' => 'a:2:{i:0;s:19:"taxonomy_vocabulary";i:1;i:3;}',
+  'delivery_callback' => '',
+  'fit' => '29',
+  'number_parts' => '5',
+  'context' => '1',
+  'tab_parent' => 'admin/structure/taxonomy/%',
+  'tab_root' => 'admin/structure/taxonomy/%',
+  'title' => 'Translate',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '132',
+  'description' => '',
+  'position' => '',
+  'weight' => '10',
+  'include_file' => 'sites/all/modules/i18n/i18n.pages.inc',
+))
+->values(array(
+  'path' => 'admin/structure/taxonomy/%/translate/%',
+  'load_functions' => 'a:2:{i:3;s:37:"taxonomy_vocabulary_machine_name_load";i:5;s:18:"i18n_language_load";}',
+  'to_arg_functions' => '',
+  'access_callback' => 'i18n_object_translate_access',
+  'access_arguments' => 'a:2:{i:0;s:19:"taxonomy_vocabulary";i:1;i:3;}',
+  'page_callback' => 'i18n_page_translate_localize',
+  'page_arguments' => 'a:3:{i:0;s:19:"taxonomy_vocabulary";i:1;i:3;i:2;i:5;}',
+  'delivery_callback' => '',
+  'fit' => '58',
+  'number_parts' => '6',
+  'context' => '0',
+  'tab_parent' => '',
+  'tab_root' => 'admin/structure/taxonomy/%/translate/%',
+  'title' => 'Translate',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '0',
+  'description' => '',
+  'position' => '',
+  'weight' => '0',
+  'include_file' => 'sites/all/modules/i18n/i18n.pages.inc',
+))
 ->values(array(
   'path' => 'admin/structure/taxonomy/add',
   'load_functions' => '',
@@ -42158,8 +45951,8 @@
   'path' => 'admin/structure/types/manage/%/comment/display',
   'load_functions' => 'a:1:{i:4;s:22:"comment_node_type_load";}',
   'to_arg_functions' => '',
-  'access_callback' => 'user_access',
-  'access_arguments' => 'a:1:{i:0;s:24:"administer content types";}',
+  'access_callback' => 'field_ui_admin_access',
+  'access_arguments' => 'a:2:{i:0;s:11:"user_access";i:1;a:1:{i:0;s:24:"administer content types";}}',
   'page_callback' => 'drupal_get_form',
   'page_arguments' => 'a:4:{i:0;s:30:"field_ui_display_overview_form";i:1;s:7:"comment";i:2;i:4;i:3;s:7:"default";}',
   'delivery_callback' => '',
@@ -42184,7 +45977,7 @@
   'load_functions' => 'a:1:{i:4;s:22:"comment_node_type_load";}',
   'to_arg_functions' => '',
   'access_callback' => '_field_ui_view_mode_menu_access',
-  'access_arguments' => 'a:5:{i:0;s:7:"comment";i:1;i:4;i:2;s:7:"default";i:3;s:11:"user_access";i:4;s:24:"administer content types";}',
+  'access_arguments' => 'a:6:{i:0;s:7:"comment";i:1;i:4;i:2;s:7:"default";i:3;s:21:"field_ui_admin_access";i:4;s:11:"user_access";i:5;a:1:{i:0;s:24:"administer content types";}}',
   'page_callback' => 'drupal_get_form',
   'page_arguments' => 'a:4:{i:0;s:30:"field_ui_display_overview_form";i:1;s:7:"comment";i:2;i:4;i:3;s:7:"default";}',
   'delivery_callback' => '',
@@ -42209,7 +46002,7 @@
   'load_functions' => 'a:1:{i:4;s:22:"comment_node_type_load";}',
   'to_arg_functions' => '',
   'access_callback' => '_field_ui_view_mode_menu_access',
-  'access_arguments' => 'a:5:{i:0;s:7:"comment";i:1;i:4;i:2;s:4:"full";i:3;s:11:"user_access";i:4;s:24:"administer content types";}',
+  'access_arguments' => 'a:6:{i:0;s:7:"comment";i:1;i:4;i:2;s:4:"full";i:3;s:21:"field_ui_admin_access";i:4;s:11:"user_access";i:5;a:1:{i:0;s:24:"administer content types";}}',
   'page_callback' => 'drupal_get_form',
   'page_arguments' => 'a:4:{i:0;s:30:"field_ui_display_overview_form";i:1;s:7:"comment";i:2;i:4;i:3;s:4:"full";}',
   'delivery_callback' => '',
@@ -42233,8 +46026,8 @@
   'path' => 'admin/structure/types/manage/%/comment/fields',
   'load_functions' => 'a:1:{i:4;s:22:"comment_node_type_load";}',
   'to_arg_functions' => '',
-  'access_callback' => 'user_access',
-  'access_arguments' => 'a:1:{i:0;s:24:"administer content types";}',
+  'access_callback' => 'field_ui_admin_access',
+  'access_arguments' => 'a:2:{i:0;s:11:"user_access";i:1;a:1:{i:0;s:24:"administer content types";}}',
   'page_callback' => 'drupal_get_form',
   'page_arguments' => 'a:3:{i:0;s:28:"field_ui_field_overview_form";i:1;s:7:"comment";i:2;i:4;}',
   'delivery_callback' => '',
@@ -42258,8 +46051,8 @@
   'path' => 'admin/structure/types/manage/%/comment/fields/%',
   'load_functions' => 'a:2:{i:4;a:1:{s:22:"comment_node_type_load";a:4:{i:0;s:7:"comment";i:1;i:4;i:2;s:1:"4";i:3;s:4:"%map";}}i:7;a:1:{s:18:"field_ui_menu_load";a:4:{i:0;s:7:"comment";i:1;i:4;i:2;s:1:"4";i:3;s:4:"%map";}}}',
   'to_arg_functions' => '',
-  'access_callback' => 'user_access',
-  'access_arguments' => 'a:1:{i:0;s:24:"administer content types";}',
+  'access_callback' => 'field_ui_admin_access',
+  'access_arguments' => 'a:2:{i:0;s:11:"user_access";i:1;a:1:{i:0;s:24:"administer content types";}}',
   'page_callback' => 'drupal_get_form',
   'page_arguments' => 'a:2:{i:0;s:24:"field_ui_field_edit_form";i:1;i:7;}',
   'delivery_callback' => '',
@@ -42283,8 +46076,8 @@
   'path' => 'admin/structure/types/manage/%/comment/fields/%/delete',
   'load_functions' => 'a:2:{i:4;a:1:{s:22:"comment_node_type_load";a:4:{i:0;s:7:"comment";i:1;i:4;i:2;s:1:"4";i:3;s:4:"%map";}}i:7;a:1:{s:18:"field_ui_menu_load";a:4:{i:0;s:7:"comment";i:1;i:4;i:2;s:1:"4";i:3;s:4:"%map";}}}',
   'to_arg_functions' => '',
-  'access_callback' => 'user_access',
-  'access_arguments' => 'a:1:{i:0;s:24:"administer content types";}',
+  'access_callback' => 'field_ui_admin_access',
+  'access_arguments' => 'a:2:{i:0;s:11:"user_access";i:1;a:1:{i:0;s:24:"administer content types";}}',
   'page_callback' => 'drupal_get_form',
   'page_arguments' => 'a:2:{i:0;s:26:"field_ui_field_delete_form";i:1;i:7;}',
   'delivery_callback' => '',
@@ -42308,8 +46101,8 @@
   'path' => 'admin/structure/types/manage/%/comment/fields/%/edit',
   'load_functions' => 'a:2:{i:4;a:1:{s:22:"comment_node_type_load";a:4:{i:0;s:7:"comment";i:1;i:4;i:2;s:1:"4";i:3;s:4:"%map";}}i:7;a:1:{s:18:"field_ui_menu_load";a:4:{i:0;s:7:"comment";i:1;i:4;i:2;s:1:"4";i:3;s:4:"%map";}}}',
   'to_arg_functions' => '',
-  'access_callback' => 'user_access',
-  'access_arguments' => 'a:1:{i:0;s:24:"administer content types";}',
+  'access_callback' => 'field_ui_admin_access',
+  'access_arguments' => 'a:2:{i:0;s:11:"user_access";i:1;a:1:{i:0;s:24:"administer content types";}}',
   'page_callback' => 'drupal_get_form',
   'page_arguments' => 'a:2:{i:0;s:24:"field_ui_field_edit_form";i:1;i:7;}',
   'delivery_callback' => '',
@@ -42333,8 +46126,8 @@
   'path' => 'admin/structure/types/manage/%/comment/fields/%/field-settings',
   'load_functions' => 'a:2:{i:4;a:1:{s:22:"comment_node_type_load";a:4:{i:0;s:7:"comment";i:1;i:4;i:2;s:1:"4";i:3;s:4:"%map";}}i:7;a:1:{s:18:"field_ui_menu_load";a:4:{i:0;s:7:"comment";i:1;i:4;i:2;s:1:"4";i:3;s:4:"%map";}}}',
   'to_arg_functions' => '',
-  'access_callback' => 'user_access',
-  'access_arguments' => 'a:1:{i:0;s:24:"administer content types";}',
+  'access_callback' => 'field_ui_admin_access',
+  'access_arguments' => 'a:2:{i:0;s:11:"user_access";i:1;a:1:{i:0;s:24:"administer content types";}}',
   'page_callback' => 'drupal_get_form',
   'page_arguments' => 'a:2:{i:0;s:28:"field_ui_field_settings_form";i:1;i:7;}',
   'delivery_callback' => '',
@@ -42355,11 +46148,61 @@
   'include_file' => 'modules/field_ui/field_ui.admin.inc',
 ))
 ->values(array(
-  'path' => 'admin/structure/types/manage/%/comment/fields/%/widget-type',
+  'path' => 'admin/structure/types/manage/%/comment/fields/%/translate',
+  'load_functions' => 'a:2:{i:4;a:1:{s:22:"comment_node_type_load";a:4:{i:0;s:7:"comment";i:1;i:4;i:2;s:1:"4";i:3;s:4:"%map";}}i:7;a:1:{s:18:"field_ui_menu_load";a:4:{i:0;s:7:"comment";i:1;i:4;i:2;s:1:"4";i:3;s:4:"%map";}}}',
+  'to_arg_functions' => '',
+  'access_callback' => 'user_access',
+  'access_arguments' => 'a:1:{i:0;s:24:"administer content types";}',
+  'page_callback' => 'i18n_field_page_translate',
+  'page_arguments' => 'a:1:{i:0;i:7;}',
+  'delivery_callback' => '',
+  'fit' => '493',
+  'number_parts' => '9',
+  'context' => '1',
+  'tab_parent' => 'admin/structure/types/manage/%/comment/fields/%',
+  'tab_root' => 'admin/structure/types/manage/%/comment/fields/%',
+  'title' => 'Translate',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '132',
+  'description' => '',
+  'position' => '',
+  'weight' => '0',
+  'include_file' => 'sites/all/modules/i18n/i18n_field/i18n_field.pages.inc',
+))
+->values(array(
+  'path' => 'admin/structure/types/manage/%/comment/fields/%/translate/%i18n_language',
   'load_functions' => 'a:2:{i:4;a:1:{s:22:"comment_node_type_load";a:4:{i:0;s:7:"comment";i:1;i:4;i:2;s:1:"4";i:3;s:4:"%map";}}i:7;a:1:{s:18:"field_ui_menu_load";a:4:{i:0;s:7:"comment";i:1;i:4;i:2;s:1:"4";i:3;s:4:"%map";}}}',
   'to_arg_functions' => '',
   'access_callback' => 'user_access',
   'access_arguments' => 'a:1:{i:0;s:24:"administer content types";}',
+  'page_callback' => 'i18n_field_page_translate',
+  'page_arguments' => 'a:2:{i:0;i:7;i:1;i:9;}',
+  'delivery_callback' => '',
+  'fit' => '493',
+  'number_parts' => '9',
+  'context' => '0',
+  'tab_parent' => '',
+  'tab_root' => 'admin/structure/types/manage/%/comment/fields/%/translate/%i18n_language',
+  'title' => 'Instance',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '0',
+  'description' => '',
+  'position' => '',
+  'weight' => '0',
+  'include_file' => 'sites/all/modules/i18n/i18n_field/i18n_field.pages.inc',
+))
+->values(array(
+  'path' => 'admin/structure/types/manage/%/comment/fields/%/widget-type',
+  'load_functions' => 'a:2:{i:4;a:1:{s:22:"comment_node_type_load";a:4:{i:0;s:7:"comment";i:1;i:4;i:2;s:1:"4";i:3;s:4:"%map";}}i:7;a:1:{s:18:"field_ui_menu_load";a:4:{i:0;s:7:"comment";i:1;i:4;i:2;s:1:"4";i:3;s:4:"%map";}}}',
+  'to_arg_functions' => '',
+  'access_callback' => 'field_ui_admin_access',
+  'access_arguments' => 'a:2:{i:0;s:11:"user_access";i:1;a:1:{i:0;s:24:"administer content types";}}',
   'page_callback' => 'drupal_get_form',
   'page_arguments' => 'a:2:{i:0;s:25:"field_ui_widget_type_form";i:1;i:7;}',
   'delivery_callback' => '',
@@ -42379,6 +46222,31 @@
   'weight' => '0',
   'include_file' => 'modules/field_ui/field_ui.admin.inc',
 ))
+->values(array(
+  'path' => 'admin/structure/types/manage/%/comment/fields/replace/%',
+  'load_functions' => 'a:2:{i:4;a:1:{s:22:"comment_node_type_load";a:0:{}}i:8;N;}',
+  'to_arg_functions' => '',
+  'access_callback' => 'user_access',
+  'access_arguments' => 'a:1:{i:0;s:24:"administer content types";}',
+  'page_callback' => 'drupal_get_form',
+  'page_arguments' => 'a:4:{i:0;s:28:"title_field_replacement_form";i:1;s:7:"comment";i:2;i:4;i:3;i:8;}',
+  'delivery_callback' => '',
+  'fit' => '494',
+  'number_parts' => '9',
+  'context' => '0',
+  'tab_parent' => '',
+  'tab_root' => 'admin/structure/types/manage/%/comment/fields/replace/%',
+  'title' => 'Replace fields',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '6',
+  'description' => '',
+  'position' => '',
+  'weight' => '0',
+  'include_file' => 'sites/all/modules/title/title.admin.inc',
+))
 ->values(array(
   'path' => 'admin/structure/types/manage/%/delete',
   'load_functions' => 'a:1:{i:4;s:14:"node_type_load";}',
@@ -42408,8 +46276,8 @@
   'path' => 'admin/structure/types/manage/%/display',
   'load_functions' => 'a:1:{i:4;s:14:"node_type_load";}',
   'to_arg_functions' => '',
-  'access_callback' => 'user_access',
-  'access_arguments' => 'a:1:{i:0;s:24:"administer content types";}',
+  'access_callback' => 'field_ui_admin_access',
+  'access_arguments' => 'a:2:{i:0;s:11:"user_access";i:1;a:1:{i:0;s:24:"administer content types";}}',
   'page_callback' => 'drupal_get_form',
   'page_arguments' => 'a:4:{i:0;s:30:"field_ui_display_overview_form";i:1;s:4:"node";i:2;i:4;i:3;s:7:"default";}',
   'delivery_callback' => '',
@@ -42434,7 +46302,7 @@
   'load_functions' => 'a:1:{i:4;s:14:"node_type_load";}',
   'to_arg_functions' => '',
   'access_callback' => '_field_ui_view_mode_menu_access',
-  'access_arguments' => 'a:5:{i:0;s:4:"node";i:1;i:4;i:2;s:7:"default";i:3;s:11:"user_access";i:4;s:24:"administer content types";}',
+  'access_arguments' => 'a:6:{i:0;s:4:"node";i:1;i:4;i:2;s:7:"default";i:3;s:21:"field_ui_admin_access";i:4;s:11:"user_access";i:5;a:1:{i:0;s:24:"administer content types";}}',
   'page_callback' => 'drupal_get_form',
   'page_arguments' => 'a:4:{i:0;s:30:"field_ui_display_overview_form";i:1;s:4:"node";i:2;i:4;i:3;s:7:"default";}',
   'delivery_callback' => '',
@@ -42459,7 +46327,7 @@
   'load_functions' => 'a:1:{i:4;s:14:"node_type_load";}',
   'to_arg_functions' => '',
   'access_callback' => '_field_ui_view_mode_menu_access',
-  'access_arguments' => 'a:5:{i:0;s:4:"node";i:1;i:4;i:2;s:4:"full";i:3;s:11:"user_access";i:4;s:24:"administer content types";}',
+  'access_arguments' => 'a:6:{i:0;s:4:"node";i:1;i:4;i:2;s:4:"full";i:3;s:21:"field_ui_admin_access";i:4;s:11:"user_access";i:5;a:1:{i:0;s:24:"administer content types";}}',
   'page_callback' => 'drupal_get_form',
   'page_arguments' => 'a:4:{i:0;s:30:"field_ui_display_overview_form";i:1;s:4:"node";i:2;i:4;i:3;s:4:"full";}',
   'delivery_callback' => '',
@@ -42484,7 +46352,7 @@
   'load_functions' => 'a:1:{i:4;s:14:"node_type_load";}',
   'to_arg_functions' => '',
   'access_callback' => '_field_ui_view_mode_menu_access',
-  'access_arguments' => 'a:5:{i:0;s:4:"node";i:1;i:4;i:2;s:5:"print";i:3;s:11:"user_access";i:4;s:24:"administer content types";}',
+  'access_arguments' => 'a:6:{i:0;s:4:"node";i:1;i:4;i:2;s:5:"print";i:3;s:21:"field_ui_admin_access";i:4;s:11:"user_access";i:5;a:1:{i:0;s:24:"administer content types";}}',
   'page_callback' => 'drupal_get_form',
   'page_arguments' => 'a:4:{i:0;s:30:"field_ui_display_overview_form";i:1;s:4:"node";i:2;i:4;i:3;s:5:"print";}',
   'delivery_callback' => '',
@@ -42509,7 +46377,7 @@
   'load_functions' => 'a:1:{i:4;s:14:"node_type_load";}',
   'to_arg_functions' => '',
   'access_callback' => '_field_ui_view_mode_menu_access',
-  'access_arguments' => 'a:5:{i:0;s:4:"node";i:1;i:4;i:2;s:3:"rss";i:3;s:11:"user_access";i:4;s:24:"administer content types";}',
+  'access_arguments' => 'a:6:{i:0;s:4:"node";i:1;i:4;i:2;s:3:"rss";i:3;s:21:"field_ui_admin_access";i:4;s:11:"user_access";i:5;a:1:{i:0;s:24:"administer content types";}}',
   'page_callback' => 'drupal_get_form',
   'page_arguments' => 'a:4:{i:0;s:30:"field_ui_display_overview_form";i:1;s:4:"node";i:2;i:4;i:3;s:3:"rss";}',
   'delivery_callback' => '',
@@ -42534,7 +46402,7 @@
   'load_functions' => 'a:1:{i:4;s:14:"node_type_load";}',
   'to_arg_functions' => '',
   'access_callback' => '_field_ui_view_mode_menu_access',
-  'access_arguments' => 'a:5:{i:0;s:4:"node";i:1;i:4;i:2;s:12:"search_index";i:3;s:11:"user_access";i:4;s:24:"administer content types";}',
+  'access_arguments' => 'a:6:{i:0;s:4:"node";i:1;i:4;i:2;s:12:"search_index";i:3;s:21:"field_ui_admin_access";i:4;s:11:"user_access";i:5;a:1:{i:0;s:24:"administer content types";}}',
   'page_callback' => 'drupal_get_form',
   'page_arguments' => 'a:4:{i:0;s:30:"field_ui_display_overview_form";i:1;s:4:"node";i:2;i:4;i:3;s:12:"search_index";}',
   'delivery_callback' => '',
@@ -42559,7 +46427,7 @@
   'load_functions' => 'a:1:{i:4;s:14:"node_type_load";}',
   'to_arg_functions' => '',
   'access_callback' => '_field_ui_view_mode_menu_access',
-  'access_arguments' => 'a:5:{i:0;s:4:"node";i:1;i:4;i:2;s:13:"search_result";i:3;s:11:"user_access";i:4;s:24:"administer content types";}',
+  'access_arguments' => 'a:6:{i:0;s:4:"node";i:1;i:4;i:2;s:13:"search_result";i:3;s:21:"field_ui_admin_access";i:4;s:11:"user_access";i:5;a:1:{i:0;s:24:"administer content types";}}',
   'page_callback' => 'drupal_get_form',
   'page_arguments' => 'a:4:{i:0;s:30:"field_ui_display_overview_form";i:1;s:4:"node";i:2;i:4;i:3;s:13:"search_result";}',
   'delivery_callback' => '',
@@ -42584,7 +46452,7 @@
   'load_functions' => 'a:1:{i:4;s:14:"node_type_load";}',
   'to_arg_functions' => '',
   'access_callback' => '_field_ui_view_mode_menu_access',
-  'access_arguments' => 'a:5:{i:0;s:4:"node";i:1;i:4;i:2;s:6:"teaser";i:3;s:11:"user_access";i:4;s:24:"administer content types";}',
+  'access_arguments' => 'a:6:{i:0;s:4:"node";i:1;i:4;i:2;s:6:"teaser";i:3;s:21:"field_ui_admin_access";i:4;s:11:"user_access";i:5;a:1:{i:0;s:24:"administer content types";}}',
   'page_callback' => 'drupal_get_form',
   'page_arguments' => 'a:4:{i:0;s:30:"field_ui_display_overview_form";i:1;s:4:"node";i:2;i:4;i:3;s:6:"teaser";}',
   'delivery_callback' => '',
@@ -42633,8 +46501,8 @@
   'path' => 'admin/structure/types/manage/%/fields',
   'load_functions' => 'a:1:{i:4;s:14:"node_type_load";}',
   'to_arg_functions' => '',
-  'access_callback' => 'user_access',
-  'access_arguments' => 'a:1:{i:0;s:24:"administer content types";}',
+  'access_callback' => 'field_ui_admin_access',
+  'access_arguments' => 'a:2:{i:0;s:11:"user_access";i:1;a:1:{i:0;s:24:"administer content types";}}',
   'page_callback' => 'drupal_get_form',
   'page_arguments' => 'a:3:{i:0;s:28:"field_ui_field_overview_form";i:1;s:4:"node";i:2;i:4;}',
   'delivery_callback' => '',
@@ -42658,8 +46526,8 @@
   'path' => 'admin/structure/types/manage/%/fields/%',
   'load_functions' => 'a:2:{i:4;a:1:{s:14:"node_type_load";a:4:{i:0;s:4:"node";i:1;i:4;i:2;s:1:"4";i:3;s:4:"%map";}}i:6;a:1:{s:18:"field_ui_menu_load";a:4:{i:0;s:4:"node";i:1;i:4;i:2;s:1:"4";i:3;s:4:"%map";}}}',
   'to_arg_functions' => '',
-  'access_callback' => 'user_access',
-  'access_arguments' => 'a:1:{i:0;s:24:"administer content types";}',
+  'access_callback' => 'field_ui_admin_access',
+  'access_arguments' => 'a:2:{i:0;s:11:"user_access";i:1;a:1:{i:0;s:24:"administer content types";}}',
   'page_callback' => 'drupal_get_form',
   'page_arguments' => 'a:2:{i:0;s:24:"field_ui_field_edit_form";i:1;i:6;}',
   'delivery_callback' => '',
@@ -42683,8 +46551,8 @@
   'path' => 'admin/structure/types/manage/%/fields/%/delete',
   'load_functions' => 'a:2:{i:4;a:1:{s:14:"node_type_load";a:4:{i:0;s:4:"node";i:1;i:4;i:2;s:1:"4";i:3;s:4:"%map";}}i:6;a:1:{s:18:"field_ui_menu_load";a:4:{i:0;s:4:"node";i:1;i:4;i:2;s:1:"4";i:3;s:4:"%map";}}}',
   'to_arg_functions' => '',
-  'access_callback' => 'user_access',
-  'access_arguments' => 'a:1:{i:0;s:24:"administer content types";}',
+  'access_callback' => 'field_ui_admin_access',
+  'access_arguments' => 'a:2:{i:0;s:11:"user_access";i:1;a:1:{i:0;s:24:"administer content types";}}',
   'page_callback' => 'drupal_get_form',
   'page_arguments' => 'a:2:{i:0;s:26:"field_ui_field_delete_form";i:1;i:6;}',
   'delivery_callback' => '',
@@ -42708,8 +46576,8 @@
   'path' => 'admin/structure/types/manage/%/fields/%/edit',
   'load_functions' => 'a:2:{i:4;a:1:{s:14:"node_type_load";a:4:{i:0;s:4:"node";i:1;i:4;i:2;s:1:"4";i:3;s:4:"%map";}}i:6;a:1:{s:18:"field_ui_menu_load";a:4:{i:0;s:4:"node";i:1;i:4;i:2;s:1:"4";i:3;s:4:"%map";}}}',
   'to_arg_functions' => '',
-  'access_callback' => 'user_access',
-  'access_arguments' => 'a:1:{i:0;s:24:"administer content types";}',
+  'access_callback' => 'field_ui_admin_access',
+  'access_arguments' => 'a:2:{i:0;s:11:"user_access";i:1;a:1:{i:0;s:24:"administer content types";}}',
   'page_callback' => 'drupal_get_form',
   'page_arguments' => 'a:2:{i:0;s:24:"field_ui_field_edit_form";i:1;i:6;}',
   'delivery_callback' => '',
@@ -42733,8 +46601,8 @@
   'path' => 'admin/structure/types/manage/%/fields/%/field-settings',
   'load_functions' => 'a:2:{i:4;a:1:{s:14:"node_type_load";a:4:{i:0;s:4:"node";i:1;i:4;i:2;s:1:"4";i:3;s:4:"%map";}}i:6;a:1:{s:18:"field_ui_menu_load";a:4:{i:0;s:4:"node";i:1;i:4;i:2;s:1:"4";i:3;s:4:"%map";}}}',
   'to_arg_functions' => '',
-  'access_callback' => 'user_access',
-  'access_arguments' => 'a:1:{i:0;s:24:"administer content types";}',
+  'access_callback' => 'field_ui_admin_access',
+  'access_arguments' => 'a:2:{i:0;s:11:"user_access";i:1;a:1:{i:0;s:24:"administer content types";}}',
   'page_callback' => 'drupal_get_form',
   'page_arguments' => 'a:2:{i:0;s:28:"field_ui_field_settings_form";i:1;i:6;}',
   'delivery_callback' => '',
@@ -42755,11 +46623,61 @@
   'include_file' => 'modules/field_ui/field_ui.admin.inc',
 ))
 ->values(array(
-  'path' => 'admin/structure/types/manage/%/fields/%/widget-type',
+  'path' => 'admin/structure/types/manage/%/fields/%/translate',
   'load_functions' => 'a:2:{i:4;a:1:{s:14:"node_type_load";a:4:{i:0;s:4:"node";i:1;i:4;i:2;s:1:"4";i:3;s:4:"%map";}}i:6;a:1:{s:18:"field_ui_menu_load";a:4:{i:0;s:4:"node";i:1;i:4;i:2;s:1:"4";i:3;s:4:"%map";}}}',
   'to_arg_functions' => '',
   'access_callback' => 'user_access',
   'access_arguments' => 'a:1:{i:0;s:24:"administer content types";}',
+  'page_callback' => 'i18n_field_page_translate',
+  'page_arguments' => 'a:1:{i:0;i:6;}',
+  'delivery_callback' => '',
+  'fit' => '245',
+  'number_parts' => '8',
+  'context' => '1',
+  'tab_parent' => 'admin/structure/types/manage/%/fields/%',
+  'tab_root' => 'admin/structure/types/manage/%/fields/%',
+  'title' => 'Translate',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '132',
+  'description' => '',
+  'position' => '',
+  'weight' => '0',
+  'include_file' => 'sites/all/modules/i18n/i18n_field/i18n_field.pages.inc',
+))
+->values(array(
+  'path' => 'admin/structure/types/manage/%/fields/%/translate/%',
+  'load_functions' => 'a:3:{i:4;a:1:{s:14:"node_type_load";a:4:{i:0;s:4:"node";i:1;i:4;i:2;s:1:"4";i:3;s:4:"%map";}}i:6;a:1:{s:18:"field_ui_menu_load";a:4:{i:0;s:4:"node";i:1;i:4;i:2;s:1:"4";i:3;s:4:"%map";}}i:8;a:1:{s:18:"i18n_language_load";a:4:{i:0;s:4:"node";i:1;i:4;i:2;s:1:"4";i:3;s:4:"%map";}}}',
+  'to_arg_functions' => '',
+  'access_callback' => 'user_access',
+  'access_arguments' => 'a:1:{i:0;s:24:"administer content types";}',
+  'page_callback' => 'i18n_field_page_translate',
+  'page_arguments' => 'a:2:{i:0;i:6;i:1;i:8;}',
+  'delivery_callback' => '',
+  'fit' => '490',
+  'number_parts' => '9',
+  'context' => '0',
+  'tab_parent' => '',
+  'tab_root' => 'admin/structure/types/manage/%/fields/%/translate/%',
+  'title' => 'Instance',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '0',
+  'description' => '',
+  'position' => '',
+  'weight' => '0',
+  'include_file' => 'sites/all/modules/i18n/i18n_field/i18n_field.pages.inc',
+))
+->values(array(
+  'path' => 'admin/structure/types/manage/%/fields/%/widget-type',
+  'load_functions' => 'a:2:{i:4;a:1:{s:14:"node_type_load";a:4:{i:0;s:4:"node";i:1;i:4;i:2;s:1:"4";i:3;s:4:"%map";}}i:6;a:1:{s:18:"field_ui_menu_load";a:4:{i:0;s:4:"node";i:1;i:4;i:2;s:1:"4";i:3;s:4:"%map";}}}',
+  'to_arg_functions' => '',
+  'access_callback' => 'field_ui_admin_access',
+  'access_arguments' => 'a:2:{i:0;s:11:"user_access";i:1;a:1:{i:0;s:24:"administer content types";}}',
   'page_callback' => 'drupal_get_form',
   'page_arguments' => 'a:2:{i:0;s:25:"field_ui_widget_type_form";i:1;i:6;}',
   'delivery_callback' => '',
@@ -42779,6 +46697,31 @@
   'weight' => '0',
   'include_file' => 'modules/field_ui/field_ui.admin.inc',
 ))
+->values(array(
+  'path' => 'admin/structure/types/manage/%/fields/replace/%',
+  'load_functions' => 'a:2:{i:4;a:1:{s:14:"node_type_load";a:0:{}}i:7;N;}',
+  'to_arg_functions' => '',
+  'access_callback' => 'user_access',
+  'access_arguments' => 'a:1:{i:0;s:24:"administer content types";}',
+  'page_callback' => 'drupal_get_form',
+  'page_arguments' => 'a:4:{i:0;s:28:"title_field_replacement_form";i:1;s:4:"node";i:2;i:4;i:3;i:7;}',
+  'delivery_callback' => '',
+  'fit' => '246',
+  'number_parts' => '8',
+  'context' => '0',
+  'tab_parent' => '',
+  'tab_root' => 'admin/structure/types/manage/%/fields/replace/%',
+  'title' => 'Replace fields',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '6',
+  'description' => '',
+  'position' => '',
+  'weight' => '0',
+  'include_file' => 'sites/all/modules/title/title.admin.inc',
+))
 ->values(array(
   'path' => 'admin/tasks',
   'load_functions' => '',
@@ -43408,10 +47351,10 @@
   'path' => 'comment/%/edit',
   'load_functions' => 'a:1:{i:1;s:12:"comment_load";}',
   'to_arg_functions' => '',
-  'access_callback' => 'comment_access',
-  'access_arguments' => 'a:2:{i:0;s:4:"edit";i:1;i:1;}',
-  'page_callback' => 'comment_edit_page',
-  'page_arguments' => 'a:1:{i:0;i:1;}',
+  'access_callback' => 'entity_translation_edit_access',
+  'access_arguments' => 'a:6:{i:0;s:7:"comment";i:1;i:1;i:2;b:0;i:3;a:8:{s:5:"title";s:4:"Edit";s:13:"page callback";s:17:"comment_edit_page";s:14:"page arguments";a:1:{i:0;i:1;}s:15:"access callback";s:14:"comment_access";s:16:"access arguments";a:2:{i:0;s:4:"edit";i:1;i:1;}s:4:"type";i:132;s:6:"weight";i:0;s:6:"module";s:7:"comment";}i:4;s:4:"edit";i:5;i:1;}',
+  'page_callback' => 'entity_translation_edit_page',
+  'page_arguments' => 'a:5:{i:0;s:7:"comment";i:1;i:1;i:2;b:0;i:3;a:8:{s:5:"title";s:4:"Edit";s:13:"page callback";s:17:"comment_edit_page";s:14:"page arguments";a:1:{i:0;i:1;}s:15:"access callback";s:14:"comment_access";s:16:"access arguments";a:2:{i:0;s:4:"edit";i:1;i:1;}s:4:"type";i:132;s:6:"weight";i:0;s:6:"module";s:7:"comment";}i:4;i:1;}',
   'delivery_callback' => '',
   'fit' => '5',
   'number_parts' => '3',
@@ -43429,6 +47372,106 @@
   'weight' => '0',
   'include_file' => '',
 ))
+->values(array(
+  'path' => 'comment/%/edit/%',
+  'load_functions' => 'a:2:{i:1;s:12:"comment_load";i:3;s:32:"entity_translation_language_load";}',
+  'to_arg_functions' => '',
+  'access_callback' => 'entity_translation_edit_access',
+  'access_arguments' => 'a:6:{i:0;s:7:"comment";i:1;i:1;i:2;i:3;i:3;a:8:{s:5:"title";s:4:"Edit";s:13:"page callback";s:17:"comment_edit_page";s:14:"page arguments";a:1:{i:0;i:1;}s:15:"access callback";s:14:"comment_access";s:16:"access arguments";a:2:{i:0;s:4:"edit";i:1;i:1;}s:4:"type";i:132;s:6:"weight";i:0;s:6:"module";s:7:"comment";}i:4;s:4:"edit";i:5;i:1;}',
+  'page_callback' => 'entity_translation_edit_page',
+  'page_arguments' => 'a:5:{i:0;s:7:"comment";i:1;i:1;i:2;i:3;i:3;a:8:{s:5:"title";s:4:"Edit";s:13:"page callback";s:17:"comment_edit_page";s:14:"page arguments";a:1:{i:0;i:1;}s:15:"access callback";s:14:"comment_access";s:16:"access arguments";a:2:{i:0;s:4:"edit";i:1;i:1;}s:4:"type";i:132;s:6:"weight";i:0;s:6:"module";s:7:"comment";}i:4;i:1;}',
+  'delivery_callback' => '',
+  'fit' => '10',
+  'number_parts' => '4',
+  'context' => '1',
+  'tab_parent' => 'comment/%/edit',
+  'tab_root' => 'comment/%',
+  'title' => 'Edit',
+  'title_callback' => 'entity_translation_edit_title',
+  'title_arguments' => 'a:1:{i:0;i:3;}',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '140',
+  'description' => '',
+  'position' => '',
+  'weight' => '0',
+  'include_file' => '',
+))
+->values(array(
+  'path' => 'comment/%/edit/add/%/%',
+  'load_functions' => 'a:3:{i:1;s:12:"comment_load";i:4;s:32:"entity_translation_language_load";i:5;s:32:"entity_translation_language_load";}',
+  'to_arg_functions' => '',
+  'access_callback' => 'entity_translation_add_access',
+  'access_arguments' => 'a:7:{i:0;s:7:"comment";i:1;i:1;i:2;i:4;i:3;i:5;i:4;a:8:{s:5:"title";s:4:"Edit";s:13:"page callback";s:17:"comment_edit_page";s:14:"page arguments";a:1:{i:0;i:1;}s:15:"access callback";s:14:"comment_access";s:16:"access arguments";a:2:{i:0;s:4:"edit";i:1;i:1;}s:4:"type";i:132;s:6:"weight";i:0;s:6:"module";s:7:"comment";}i:5;s:4:"edit";i:6;i:1;}',
+  'page_callback' => 'entity_translation_add_page',
+  'page_arguments' => 'a:6:{i:0;s:7:"comment";i:1;i:1;i:2;i:4;i:3;i:5;i:4;a:8:{s:5:"title";s:4:"Edit";s:13:"page callback";s:17:"comment_edit_page";s:14:"page arguments";a:1:{i:0;i:1;}s:15:"access callback";s:14:"comment_access";s:16:"access arguments";a:2:{i:0;s:4:"edit";i:1;i:1;}s:4:"type";i:132;s:6:"weight";i:0;s:6:"module";s:7:"comment";}i:5;i:1;}',
+  'delivery_callback' => '',
+  'fit' => '44',
+  'number_parts' => '6',
+  'context' => '1',
+  'tab_parent' => 'comment/%/edit',
+  'tab_root' => 'comment/%',
+  'title' => 'Edit',
+  'title_callback' => 'Add translation',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '132',
+  'description' => '',
+  'position' => '',
+  'weight' => '0',
+  'include_file' => '',
+))
+->values(array(
+  'path' => 'comment/%/translate',
+  'load_functions' => 'a:1:{i:1;s:12:"comment_load";}',
+  'to_arg_functions' => '',
+  'access_callback' => 'entity_translation_tab_access',
+  'access_arguments' => 'a:2:{i:0;s:7:"comment";i:1;i:1;}',
+  'page_callback' => 'entity_translation_overview',
+  'page_arguments' => 'a:2:{i:0;s:7:"comment";i:1;i:1;}',
+  'delivery_callback' => '',
+  'fit' => '5',
+  'number_parts' => '3',
+  'context' => '3',
+  'tab_parent' => 'comment/%',
+  'tab_root' => 'comment/%',
+  'title' => 'Translate',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '132',
+  'description' => '',
+  'position' => '',
+  'weight' => '1',
+  'include_file' => 'sites/all/modules/entity_translation/entity_translation.admin.inc',
+))
+->values(array(
+  'path' => 'comment/%/translate/delete/%',
+  'load_functions' => 'a:2:{i:1;s:12:"comment_load";i:4;s:32:"entity_translation_language_load";}',
+  'to_arg_functions' => '',
+  'access_callback' => 'entity_translation_tab_access',
+  'access_arguments' => 'a:2:{i:0;s:7:"comment";i:1;i:1;}',
+  'page_callback' => 'drupal_get_form',
+  'page_arguments' => 'a:4:{i:0;s:33:"entity_translation_delete_confirm";i:1;s:7:"comment";i:2;i:1;i:3;i:4;}',
+  'delivery_callback' => '',
+  'fit' => '22',
+  'number_parts' => '5',
+  'context' => '0',
+  'tab_parent' => '',
+  'tab_root' => 'comment/%/translate/delete/%',
+  'title' => 'Delete',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '6',
+  'description' => '',
+  'position' => '',
+  'weight' => '0',
+  'include_file' => 'sites/all/modules/entity_translation/entity_translation.admin.inc',
+))
 ->values(array(
   'path' => 'comment/%/view',
   'load_functions' => 'a:1:{i:1;N;}',
@@ -43754,6 +47797,31 @@
   'weight' => '0',
   'include_file' => '',
 ))
+->values(array(
+  'path' => 'entity_translation/taxonomy_term/autocomplete',
+  'load_functions' => '',
+  'to_arg_functions' => '',
+  'access_callback' => 'user_access',
+  'access_arguments' => 'a:1:{i:0;s:14:"access content";}',
+  'page_callback' => 'entity_translation_taxonomy_term_autocomplete',
+  'page_arguments' => 'a:0:{}',
+  'delivery_callback' => '',
+  'fit' => '7',
+  'number_parts' => '3',
+  'context' => '0',
+  'tab_parent' => '',
+  'tab_root' => 'entity_translation/taxonomy_term/autocomplete',
+  'title' => 'Entity translation autocomplete',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '0',
+  'description' => '',
+  'position' => '',
+  'weight' => '0',
+  'include_file' => '',
+))
 ->values(array(
   'path' => 'file/ajax',
   'load_functions' => '',
@@ -43904,6 +47972,81 @@
   'weight' => '0',
   'include_file' => 'modules/forum/forum.pages.inc',
 ))
+->values(array(
+  'path' => 'i18n/taxonomy/autocomplete/language/%',
+  'load_functions' => 'a:1:{i:4;N;}',
+  'to_arg_functions' => '',
+  'access_callback' => 'user_access',
+  'access_arguments' => 'a:1:{i:0;s:14:"access content";}',
+  'page_callback' => 'i18n_taxonomy_autocomplete_language',
+  'page_arguments' => 'a:2:{i:0;i:4;i:1;N;}',
+  'delivery_callback' => '',
+  'fit' => '30',
+  'number_parts' => '5',
+  'context' => '0',
+  'tab_parent' => '',
+  'tab_root' => 'i18n/taxonomy/autocomplete/language/%',
+  'title' => 'Autocomplete taxonomy',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '0',
+  'description' => '',
+  'position' => '',
+  'weight' => '0',
+  'include_file' => 'sites/all/modules/i18n/i18n_taxonomy/i18n_taxonomy.pages.inc',
+))
+->values(array(
+  'path' => 'i18n/taxonomy/autocomplete/vocabulary/%/%',
+  'load_functions' => 'a:2:{i:4;s:37:"taxonomy_vocabulary_machine_name_load";i:5;N;}',
+  'to_arg_functions' => '',
+  'access_callback' => 'user_access',
+  'access_arguments' => 'a:1:{i:0;s:14:"access content";}',
+  'page_callback' => 'i18n_taxonomy_autocomplete_language',
+  'page_arguments' => 'a:2:{i:0;i:5;i:1;i:4;}',
+  'delivery_callback' => '',
+  'fit' => '60',
+  'number_parts' => '6',
+  'context' => '0',
+  'tab_parent' => '',
+  'tab_root' => 'i18n/taxonomy/autocomplete/vocabulary/%/%',
+  'title' => 'Autocomplete taxonomy',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '0',
+  'description' => '',
+  'position' => '',
+  'weight' => '0',
+  'include_file' => 'sites/all/modules/i18n/i18n_taxonomy/i18n_taxonomy.pages.inc',
+))
+->values(array(
+  'path' => 'i18n_string/save',
+  'load_functions' => '',
+  'to_arg_functions' => '',
+  'access_callback' => 'user_access',
+  'access_arguments' => 'a:1:{i:0;s:23:"use on-page translation";}',
+  'page_callback' => 'i18n_string_l10n_client_save_string',
+  'page_arguments' => 'a:0:{}',
+  'delivery_callback' => '',
+  'fit' => '3',
+  'number_parts' => '2',
+  'context' => '0',
+  'tab_parent' => '',
+  'tab_root' => 'i18n_string/save',
+  'title' => 'Save string',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '0',
+  'description' => '',
+  'position' => '',
+  'weight' => '0',
+  'include_file' => 'sites/all/modules/i18n/i18n_string/i18n_string.pages.inc',
+))
 ->values(array(
   'path' => 'node',
   'load_functions' => '',
@@ -43983,10 +48126,10 @@
   'path' => 'node/%/edit',
   'load_functions' => 'a:1:{i:1;s:9:"node_load";}',
   'to_arg_functions' => '',
-  'access_callback' => 'node_access',
-  'access_arguments' => 'a:2:{i:0;s:6:"update";i:1;i:1;}',
-  'page_callback' => 'node_page_edit',
-  'page_arguments' => 'a:1:{i:0;i:1;}',
+  'access_callback' => 'entity_translation_edit_access',
+  'access_arguments' => 'a:6:{i:0;s:4:"node";i:1;i:1;i:2;b:0;i:3;a:10:{s:5:"title";s:4:"Edit";s:13:"page callback";s:14:"node_page_edit";s:14:"page arguments";a:1:{i:0;i:1;}s:15:"access callback";s:11:"node_access";s:16:"access arguments";a:2:{i:0;s:6:"update";i:1;i:1;}s:6:"weight";i:0;s:4:"type";i:132;s:7:"context";i:3;s:4:"file";s:14:"node.pages.inc";s:6:"module";s:4:"node";}i:4;s:6:"update";i:5;i:1;}',
+  'page_callback' => 'entity_translation_edit_page',
+  'page_arguments' => 'a:5:{i:0;s:4:"node";i:1;i:1;i:2;b:0;i:3;a:10:{s:5:"title";s:4:"Edit";s:13:"page callback";s:14:"node_page_edit";s:14:"page arguments";a:1:{i:0;i:1;}s:15:"access callback";s:11:"node_access";s:16:"access arguments";a:2:{i:0;s:6:"update";i:1;i:1;}s:6:"weight";i:0;s:4:"type";i:132;s:7:"context";i:3;s:4:"file";s:14:"node.pages.inc";s:6:"module";s:4:"node";}i:4;i:1;}',
   'delivery_callback' => '',
   'fit' => '5',
   'number_parts' => '3',
@@ -44004,6 +48147,56 @@
   'weight' => '0',
   'include_file' => 'modules/node/node.pages.inc',
 ))
+->values(array(
+  'path' => 'node/%/edit/%',
+  'load_functions' => 'a:2:{i:1;s:9:"node_load";i:3;s:32:"entity_translation_language_load";}',
+  'to_arg_functions' => '',
+  'access_callback' => 'entity_translation_edit_access',
+  'access_arguments' => 'a:6:{i:0;s:4:"node";i:1;i:1;i:2;i:3;i:3;a:10:{s:5:"title";s:4:"Edit";s:13:"page callback";s:14:"node_page_edit";s:14:"page arguments";a:1:{i:0;i:1;}s:15:"access callback";s:11:"node_access";s:16:"access arguments";a:2:{i:0;s:6:"update";i:1;i:1;}s:6:"weight";i:0;s:4:"type";i:132;s:7:"context";i:3;s:4:"file";s:14:"node.pages.inc";s:6:"module";s:4:"node";}i:4;s:6:"update";i:5;i:1;}',
+  'page_callback' => 'entity_translation_edit_page',
+  'page_arguments' => 'a:5:{i:0;s:4:"node";i:1;i:1;i:2;i:3;i:3;a:10:{s:5:"title";s:4:"Edit";s:13:"page callback";s:14:"node_page_edit";s:14:"page arguments";a:1:{i:0;i:1;}s:15:"access callback";s:11:"node_access";s:16:"access arguments";a:2:{i:0;s:6:"update";i:1;i:1;}s:6:"weight";i:0;s:4:"type";i:132;s:7:"context";i:3;s:4:"file";s:14:"node.pages.inc";s:6:"module";s:4:"node";}i:4;i:1;}',
+  'delivery_callback' => '',
+  'fit' => '10',
+  'number_parts' => '4',
+  'context' => '3',
+  'tab_parent' => 'node/%/edit',
+  'tab_root' => 'node/%',
+  'title' => 'Edit',
+  'title_callback' => 'entity_translation_edit_title',
+  'title_arguments' => 'a:1:{i:0;i:3;}',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '140',
+  'description' => '',
+  'position' => '',
+  'weight' => '0',
+  'include_file' => 'modules/node/node.pages.inc',
+))
+->values(array(
+  'path' => 'node/%/edit/add/%/%',
+  'load_functions' => 'a:3:{i:1;s:9:"node_load";i:4;s:32:"entity_translation_language_load";i:5;s:32:"entity_translation_language_load";}',
+  'to_arg_functions' => '',
+  'access_callback' => 'entity_translation_add_access',
+  'access_arguments' => 'a:7:{i:0;s:4:"node";i:1;i:1;i:2;i:4;i:3;i:5;i:4;a:10:{s:5:"title";s:4:"Edit";s:13:"page callback";s:14:"node_page_edit";s:14:"page arguments";a:1:{i:0;i:1;}s:15:"access callback";s:11:"node_access";s:16:"access arguments";a:2:{i:0;s:6:"update";i:1;i:1;}s:6:"weight";i:0;s:4:"type";i:132;s:7:"context";i:3;s:4:"file";s:14:"node.pages.inc";s:6:"module";s:4:"node";}i:5;s:6:"update";i:6;i:1;}',
+  'page_callback' => 'entity_translation_add_page',
+  'page_arguments' => 'a:6:{i:0;s:4:"node";i:1;i:1;i:2;i:4;i:3;i:5;i:4;a:10:{s:5:"title";s:4:"Edit";s:13:"page callback";s:14:"node_page_edit";s:14:"page arguments";a:1:{i:0;i:1;}s:15:"access callback";s:11:"node_access";s:16:"access arguments";a:2:{i:0;s:6:"update";i:1;i:1;}s:6:"weight";i:0;s:4:"type";i:132;s:7:"context";i:3;s:4:"file";s:14:"node.pages.inc";s:6:"module";s:4:"node";}i:5;i:1;}',
+  'delivery_callback' => '',
+  'fit' => '44',
+  'number_parts' => '6',
+  'context' => '3',
+  'tab_parent' => 'node/%/edit',
+  'tab_root' => 'node/%',
+  'title' => 'Edit',
+  'title_callback' => 'Add translation',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '132',
+  'description' => '',
+  'position' => '',
+  'weight' => '0',
+  'include_file' => 'modules/node/node.pages.inc',
+))
 ->values(array(
   'path' => 'node/%/outline',
   'load_functions' => 'a:1:{i:1;s:9:"node_load";}',
@@ -44183,14 +48376,14 @@
   'path' => 'node/%/translate',
   'load_functions' => 'a:1:{i:1;s:9:"node_load";}',
   'to_arg_functions' => '',
-  'access_callback' => '_translation_tab_access',
-  'access_arguments' => 'a:1:{i:0;i:1;}',
-  'page_callback' => 'translation_node_overview',
-  'page_arguments' => 'a:1:{i:0;i:1;}',
+  'access_callback' => 'entity_translation_node_tab_access',
+  'access_arguments' => 'a:3:{i:0;i:1;i:1;s:23:"_translation_tab_access";i:2;i:1;}',
+  'page_callback' => 'entity_translation_overview',
+  'page_arguments' => 'a:4:{i:0;s:4:"node";i:1;i:1;i:2;a:3:{s:13:"page callback";s:25:"translation_node_overview";s:4:"file";s:21:"translation.pages.inc";s:6:"module";s:11:"translation";}i:3;i:1;}',
   'delivery_callback' => '',
   'fit' => '5',
   'number_parts' => '3',
-  'context' => '1',
+  'context' => '3',
   'tab_parent' => 'node/%',
   'tab_root' => 'node/%',
   'title' => 'Translate',
@@ -44201,8 +48394,33 @@
   'type' => '132',
   'description' => '',
   'position' => '',
-  'weight' => '2',
-  'include_file' => 'modules/translation/translation.pages.inc',
+  'weight' => '1',
+  'include_file' => 'sites/all/modules/entity_translation/entity_translation.admin.inc',
+))
+->values(array(
+  'path' => 'node/%/translate/delete/%',
+  'load_functions' => 'a:2:{i:1;s:9:"node_load";i:4;s:32:"entity_translation_language_load";}',
+  'to_arg_functions' => '',
+  'access_callback' => 'entity_translation_node_tab_access',
+  'access_arguments' => 'a:1:{i:0;i:1;}',
+  'page_callback' => 'drupal_get_form',
+  'page_arguments' => 'a:4:{i:0;s:33:"entity_translation_delete_confirm";i:1;s:4:"node";i:2;i:1;i:3;i:4;}',
+  'delivery_callback' => '',
+  'fit' => '22',
+  'number_parts' => '5',
+  'context' => '0',
+  'tab_parent' => '',
+  'tab_root' => 'node/%/translate/delete/%',
+  'title' => 'Delete',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '6',
+  'description' => '',
+  'position' => '',
+  'weight' => '0',
+  'include_file' => 'sites/all/modules/entity_translation/entity_translation.admin.inc',
 ))
 ->values(array(
   'path' => 'node/%/view',
@@ -44254,6 +48472,31 @@
   'weight' => '0',
   'include_file' => 'modules/node/node.pages.inc',
 ))
+->values(array(
+  'path' => 'node/add/a-thirty-two-character-type-name',
+  'load_functions' => '',
+  'to_arg_functions' => '',
+  'access_callback' => 'node_access',
+  'access_arguments' => 'a:2:{i:0;s:6:"create";i:1;s:32:"a_thirty_two_character_type_name";}',
+  'page_callback' => 'node_add',
+  'page_arguments' => 'a:1:{i:0;s:32:"a_thirty_two_character_type_name";}',
+  'delivery_callback' => '',
+  'fit' => '7',
+  'number_parts' => '3',
+  'context' => '0',
+  'tab_parent' => '',
+  'tab_root' => 'node/add/a-thirty-two-character-type-name',
+  'title' => 'Test long name',
+  'title_callback' => 'check_plain',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '6',
+  'description' => '',
+  'position' => '',
+  'weight' => '0',
+  'include_file' => 'modules/node/node.pages.inc',
+))
 ->values(array(
   'path' => 'node/add/article',
   'load_functions' => '',
@@ -44329,6 +48572,31 @@
   'weight' => '0',
   'include_file' => 'modules/node/node.pages.inc',
 ))
+->values(array(
+  'path' => 'node/add/et',
+  'load_functions' => '',
+  'to_arg_functions' => '',
+  'access_callback' => 'node_access',
+  'access_arguments' => 'a:2:{i:0;s:6:"create";i:1;s:2:"et";}',
+  'page_callback' => 'node_add',
+  'page_arguments' => 'a:1:{i:0;s:2:"et";}',
+  'delivery_callback' => '',
+  'fit' => '7',
+  'number_parts' => '3',
+  'context' => '0',
+  'tab_parent' => '',
+  'tab_root' => 'node/add/et',
+  'title' => 'Entity translation test',
+  'title_callback' => 'check_plain',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '6',
+  'description' => 'Entity translation test',
+  'position' => '',
+  'weight' => '0',
+  'include_file' => 'modules/node/node.pages.inc',
+))
 ->values(array(
   'path' => 'node/add/forum',
   'load_functions' => '',
@@ -44529,56 +48797,6 @@
   'weight' => '0',
   'include_file' => 'modules/search/search.pages.inc',
 ))
-->values(array(
-  'path' => 'search/user',
-  'load_functions' => '',
-  'to_arg_functions' => '',
-  'access_callback' => '_search_menu_access',
-  'access_arguments' => 'a:1:{i:0;s:4:"user";}',
-  'page_callback' => 'search_view',
-  'page_arguments' => 'a:2:{i:0;s:4:"user";i:1;s:0:"";}',
-  'delivery_callback' => '',
-  'fit' => '3',
-  'number_parts' => '2',
-  'context' => '1',
-  'tab_parent' => 'search',
-  'tab_root' => 'search',
-  'title' => 'Users',
-  'title_callback' => 't',
-  'title_arguments' => '',
-  'theme_callback' => '',
-  'theme_arguments' => 'a:0:{}',
-  'type' => '132',
-  'description' => '',
-  'position' => '',
-  'weight' => '0',
-  'include_file' => 'modules/search/search.pages.inc',
-))
-->values(array(
-  'path' => 'search/user/%',
-  'load_functions' => 'a:1:{i:2;a:1:{s:14:"menu_tail_load";a:2:{i:0;s:4:"%map";i:1;s:6:"%index";}}}',
-  'to_arg_functions' => 'a:1:{i:2;s:16:"menu_tail_to_arg";}',
-  'access_callback' => '_search_menu_access',
-  'access_arguments' => 'a:1:{i:0;s:4:"user";}',
-  'page_callback' => 'search_view',
-  'page_arguments' => 'a:2:{i:0;s:4:"user";i:1;i:2;}',
-  'delivery_callback' => '',
-  'fit' => '6',
-  'number_parts' => '3',
-  'context' => '1',
-  'tab_parent' => 'search/node',
-  'tab_root' => 'search/node/%',
-  'title' => 'Users',
-  'title_callback' => 't',
-  'title_arguments' => '',
-  'theme_callback' => '',
-  'theme_arguments' => 'a:0:{}',
-  'type' => '132',
-  'description' => '',
-  'position' => '',
-  'weight' => '0',
-  'include_file' => 'modules/search/search.pages.inc',
-))
 ->values(array(
   'path' => 'sites/default/files/styles/%',
   'load_functions' => 'a:1:{i:4;s:16:"image_style_load";}',
@@ -44735,7 +48953,7 @@
   'to_arg_functions' => '',
   'access_callback' => 'user_access',
   'access_arguments' => 'a:1:{i:0;s:14:"access content";}',
-  'page_callback' => 'taxonomy_autocomplete',
+  'page_callback' => 'i18n_taxonomy_autocomplete_field',
   'page_arguments' => 'a:0:{}',
   'delivery_callback' => '',
   'fit' => '3',
@@ -44752,7 +48970,7 @@
   'description' => '',
   'position' => '',
   'weight' => '0',
-  'include_file' => 'modules/taxonomy/taxonomy.pages.inc',
+  'include_file' => 'sites/all/modules/i18n/i18n_taxonomy/i18n_taxonomy.pages.inc',
 ))
 ->values(array(
   'path' => 'taxonomy/term/%',
@@ -44760,7 +48978,7 @@
   'to_arg_functions' => '',
   'access_callback' => 'user_access',
   'access_arguments' => 'a:1:{i:0;s:14:"access content";}',
-  'page_callback' => 'taxonomy_term_page',
+  'page_callback' => 'i18n_taxonomy_term_page',
   'page_arguments' => 'a:1:{i:0;i:2;}',
   'delivery_callback' => '',
   'fit' => '6',
@@ -44769,7 +48987,7 @@
   'tab_parent' => '',
   'tab_root' => 'taxonomy/term/%',
   'title' => 'Taxonomy term',
-  'title_callback' => 'taxonomy_term_title',
+  'title_callback' => 'i18n_taxonomy_term_name',
   'title_arguments' => 'a:1:{i:0;i:2;}',
   'theme_callback' => '',
   'theme_arguments' => 'a:0:{}',
@@ -44777,16 +48995,16 @@
   'description' => '',
   'position' => '',
   'weight' => '0',
-  'include_file' => 'modules/taxonomy/taxonomy.pages.inc',
+  'include_file' => 'sites/all/modules/i18n/i18n_taxonomy/i18n_taxonomy.pages.inc',
 ))
 ->values(array(
   'path' => 'taxonomy/term/%/edit',
   'load_functions' => 'a:1:{i:2;s:18:"taxonomy_term_load";}',
   'to_arg_functions' => '',
-  'access_callback' => 'taxonomy_term_edit_access',
-  'access_arguments' => 'a:1:{i:0;i:2;}',
-  'page_callback' => 'drupal_get_form',
-  'page_arguments' => 'a:3:{i:0;s:18:"taxonomy_form_term";i:1;i:2;i:2;N;}',
+  'access_callback' => 'entity_translation_edit_access',
+  'access_arguments' => 'a:5:{i:0;s:13:"taxonomy_term";i:1;i:2;i:2;b:0;i:3;a:9:{s:5:"title";s:4:"Edit";s:13:"page callback";s:15:"drupal_get_form";s:14:"page arguments";a:3:{i:0;s:18:"taxonomy_form_term";i:1;i:2;i:2;N;}s:15:"access callback";s:25:"taxonomy_term_edit_access";s:16:"access arguments";a:1:{i:0;i:2;}s:4:"type";i:132;s:6:"weight";i:10;s:4:"file";s:18:"taxonomy.admin.inc";s:6:"module";s:8:"taxonomy";}i:4;i:2;}',
+  'page_callback' => 'entity_translation_edit_page',
+  'page_arguments' => 'a:7:{i:0;s:13:"taxonomy_term";i:1;i:2;i:2;b:0;i:3;a:9:{s:5:"title";s:4:"Edit";s:13:"page callback";s:15:"drupal_get_form";s:14:"page arguments";a:3:{i:0;s:18:"taxonomy_form_term";i:1;i:2;i:2;N;}s:15:"access callback";s:25:"taxonomy_term_edit_access";s:16:"access arguments";a:1:{i:0;i:2;}s:4:"type";i:132;s:6:"weight";i:10;s:4:"file";s:18:"taxonomy.admin.inc";s:6:"module";s:8:"taxonomy";}i:4;s:18:"taxonomy_form_term";i:5;i:2;i:6;N;}',
   'delivery_callback' => '',
   'fit' => '13',
   'number_parts' => '4',
@@ -44804,6 +49022,56 @@
   'weight' => '10',
   'include_file' => 'modules/taxonomy/taxonomy.admin.inc',
 ))
+->values(array(
+  'path' => 'taxonomy/term/%/edit/%',
+  'load_functions' => 'a:2:{i:2;s:18:"taxonomy_term_load";i:4;s:32:"entity_translation_language_load";}',
+  'to_arg_functions' => '',
+  'access_callback' => 'entity_translation_edit_access',
+  'access_arguments' => 'a:5:{i:0;s:13:"taxonomy_term";i:1;i:2;i:2;i:4;i:3;a:9:{s:5:"title";s:4:"Edit";s:13:"page callback";s:15:"drupal_get_form";s:14:"page arguments";a:3:{i:0;s:18:"taxonomy_form_term";i:1;i:2;i:2;N;}s:15:"access callback";s:25:"taxonomy_term_edit_access";s:16:"access arguments";a:1:{i:0;i:2;}s:4:"type";i:132;s:6:"weight";i:10;s:4:"file";s:18:"taxonomy.admin.inc";s:6:"module";s:8:"taxonomy";}i:4;i:2;}',
+  'page_callback' => 'entity_translation_edit_page',
+  'page_arguments' => 'a:7:{i:0;s:13:"taxonomy_term";i:1;i:2;i:2;i:4;i:3;a:9:{s:5:"title";s:4:"Edit";s:13:"page callback";s:15:"drupal_get_form";s:14:"page arguments";a:3:{i:0;s:18:"taxonomy_form_term";i:1;i:2;i:2;N;}s:15:"access callback";s:25:"taxonomy_term_edit_access";s:16:"access arguments";a:1:{i:0;i:2;}s:4:"type";i:132;s:6:"weight";i:10;s:4:"file";s:18:"taxonomy.admin.inc";s:6:"module";s:8:"taxonomy";}i:4;s:18:"taxonomy_form_term";i:5;i:2;i:6;N;}',
+  'delivery_callback' => '',
+  'fit' => '26',
+  'number_parts' => '5',
+  'context' => '1',
+  'tab_parent' => 'taxonomy/term/%/edit',
+  'tab_root' => 'taxonomy/term/%',
+  'title' => 'Edit',
+  'title_callback' => 'entity_translation_edit_title',
+  'title_arguments' => 'a:1:{i:0;i:4;}',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '140',
+  'description' => '',
+  'position' => '',
+  'weight' => '10',
+  'include_file' => 'modules/taxonomy/taxonomy.admin.inc',
+))
+->values(array(
+  'path' => 'taxonomy/term/%/edit/add/%/%',
+  'load_functions' => 'a:3:{i:2;s:18:"taxonomy_term_load";i:5;s:32:"entity_translation_language_load";i:6;s:32:"entity_translation_language_load";}',
+  'to_arg_functions' => '',
+  'access_callback' => 'entity_translation_add_access',
+  'access_arguments' => 'a:6:{i:0;s:13:"taxonomy_term";i:1;i:2;i:2;i:5;i:3;i:6;i:4;a:9:{s:5:"title";s:4:"Edit";s:13:"page callback";s:15:"drupal_get_form";s:14:"page arguments";a:3:{i:0;s:18:"taxonomy_form_term";i:1;i:2;i:2;N;}s:15:"access callback";s:25:"taxonomy_term_edit_access";s:16:"access arguments";a:1:{i:0;i:2;}s:4:"type";i:132;s:6:"weight";i:10;s:4:"file";s:18:"taxonomy.admin.inc";s:6:"module";s:8:"taxonomy";}i:5;i:2;}',
+  'page_callback' => 'entity_translation_add_page',
+  'page_arguments' => 'a:8:{i:0;s:13:"taxonomy_term";i:1;i:2;i:2;i:5;i:3;i:6;i:4;a:9:{s:5:"title";s:4:"Edit";s:13:"page callback";s:15:"drupal_get_form";s:14:"page arguments";a:3:{i:0;s:18:"taxonomy_form_term";i:1;i:2;i:2;N;}s:15:"access callback";s:25:"taxonomy_term_edit_access";s:16:"access arguments";a:1:{i:0;i:2;}s:4:"type";i:132;s:6:"weight";i:10;s:4:"file";s:18:"taxonomy.admin.inc";s:6:"module";s:8:"taxonomy";}i:5;s:18:"taxonomy_form_term";i:6;i:2;i:7;N;}',
+  'delivery_callback' => '',
+  'fit' => '108',
+  'number_parts' => '7',
+  'context' => '1',
+  'tab_parent' => 'taxonomy/term/%/edit',
+  'tab_root' => 'taxonomy/term/%',
+  'title' => 'Edit',
+  'title_callback' => 'Add translation',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '132',
+  'description' => '',
+  'position' => '',
+  'weight' => '10',
+  'include_file' => 'modules/taxonomy/taxonomy.admin.inc',
+))
 ->values(array(
   'path' => 'taxonomy/term/%/feed',
   'load_functions' => 'a:1:{i:2;s:18:"taxonomy_term_load";}',
@@ -44829,13 +49097,88 @@
   'weight' => '0',
   'include_file' => 'modules/taxonomy/taxonomy.pages.inc',
 ))
+->values(array(
+  'path' => 'taxonomy/term/%/translate',
+  'load_functions' => 'a:1:{i:2;s:18:"taxonomy_term_load";}',
+  'to_arg_functions' => '',
+  'access_callback' => 'entity_translation_taxonomy_term_tab_access',
+  'access_arguments' => 'a:4:{i:0;i:2;i:1;s:28:"i18n_object_translate_access";i:2;s:13:"taxonomy_term";i:3;i:2;}',
+  'page_callback' => 'entity_translation_overview',
+  'page_arguments' => 'a:5:{i:0;s:13:"taxonomy_term";i:1;i:2;i:2;a:3:{s:13:"page callback";s:23:"i18n_page_translate_tab";s:4:"file";s:14:"i18n.pages.inc";s:6:"module";s:4:"i18n";}i:3;s:13:"taxonomy_term";i:4;i:2;}',
+  'delivery_callback' => '',
+  'fit' => '13',
+  'number_parts' => '4',
+  'context' => '3',
+  'tab_parent' => 'taxonomy/term/%',
+  'tab_root' => 'taxonomy/term/%',
+  'title' => 'Translate',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '132',
+  'description' => '',
+  'position' => '',
+  'weight' => '11',
+  'include_file' => 'sites/all/modules/entity_translation/entity_translation.admin.inc',
+))
+->values(array(
+  'path' => 'taxonomy/term/%/translate/%',
+  'load_functions' => 'a:2:{i:2;s:18:"taxonomy_term_load";i:4;s:18:"i18n_language_load";}',
+  'to_arg_functions' => '',
+  'access_callback' => 'i18n_object_translate_access',
+  'access_arguments' => 'a:2:{i:0;s:13:"taxonomy_term";i:1;i:2;}',
+  'page_callback' => 'i18n_page_translate_tab',
+  'page_arguments' => 'a:3:{i:0;s:13:"taxonomy_term";i:1;i:2;i:2;i:4;}',
+  'delivery_callback' => '',
+  'fit' => '26',
+  'number_parts' => '5',
+  'context' => '0',
+  'tab_parent' => '',
+  'tab_root' => 'taxonomy/term/%/translate/%',
+  'title' => 'Translate',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '0',
+  'description' => '',
+  'position' => '',
+  'weight' => '0',
+  'include_file' => 'sites/all/modules/i18n/i18n.pages.inc',
+))
+->values(array(
+  'path' => 'taxonomy/term/%/translate/delete/%',
+  'load_functions' => 'a:2:{i:2;s:18:"taxonomy_term_load";i:5;s:32:"entity_translation_language_load";}',
+  'to_arg_functions' => '',
+  'access_callback' => 'entity_translation_taxonomy_term_tab_access',
+  'access_arguments' => 'a:4:{i:0;i:2;i:1;s:28:"i18n_object_translate_access";i:2;s:13:"taxonomy_term";i:3;i:2;}',
+  'page_callback' => 'drupal_get_form',
+  'page_arguments' => 'a:4:{i:0;s:33:"entity_translation_delete_confirm";i:1;s:13:"taxonomy_term";i:2;i:2;i:3;i:5;}',
+  'delivery_callback' => '',
+  'fit' => '54',
+  'number_parts' => '6',
+  'context' => '0',
+  'tab_parent' => '',
+  'tab_root' => 'taxonomy/term/%/translate/delete/%',
+  'title' => 'Delete',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '6',
+  'description' => '',
+  'position' => '',
+  'weight' => '0',
+  'include_file' => 'sites/all/modules/entity_translation/entity_translation.admin.inc',
+))
 ->values(array(
   'path' => 'taxonomy/term/%/view',
   'load_functions' => 'a:1:{i:2;s:18:"taxonomy_term_load";}',
   'to_arg_functions' => '',
   'access_callback' => 'user_access',
   'access_arguments' => 'a:1:{i:0;s:14:"access content";}',
-  'page_callback' => 'taxonomy_term_page',
+  'page_callback' => 'i18n_taxonomy_term_page',
   'page_arguments' => 'a:1:{i:0;i:2;}',
   'delivery_callback' => '',
   'fit' => '13',
@@ -44852,7 +49195,7 @@
   'description' => '',
   'position' => '',
   'weight' => '0',
-  'include_file' => 'modules/taxonomy/taxonomy.pages.inc',
+  'include_file' => 'sites/all/modules/i18n/i18n_taxonomy/i18n_taxonomy.pages.inc',
 ))
 ->values(array(
   'path' => 'toolbar/toggle',
@@ -45083,10 +49426,10 @@
   'path' => 'user/%/edit',
   'load_functions' => 'a:1:{i:1;s:9:"user_load";}',
   'to_arg_functions' => '',
-  'access_callback' => 'user_edit_access',
-  'access_arguments' => 'a:1:{i:0;i:1;}',
-  'page_callback' => 'drupal_get_form',
-  'page_arguments' => 'a:2:{i:0;s:17:"user_profile_form";i:1;i:1;}',
+  'access_callback' => 'entity_translation_edit_access',
+  'access_arguments' => 'a:5:{i:0;s:4:"user";i:1;i:1;i:2;b:0;i:3;a:8:{s:5:"title";s:4:"Edit";s:13:"page callback";s:15:"drupal_get_form";s:14:"page arguments";a:2:{i:0;s:17:"user_profile_form";i:1;i:1;}s:15:"access callback";s:16:"user_edit_access";s:16:"access arguments";a:1:{i:0;i:1;}s:4:"type";i:132;s:4:"file";s:14:"user.pages.inc";s:6:"module";s:4:"user";}i:4;i:1;}',
+  'page_callback' => 'entity_translation_edit_page',
+  'page_arguments' => 'a:6:{i:0;s:4:"user";i:1;i:1;i:2;b:0;i:3;a:8:{s:5:"title";s:4:"Edit";s:13:"page callback";s:15:"drupal_get_form";s:14:"page arguments";a:2:{i:0;s:17:"user_profile_form";i:1;i:1;}s:15:"access callback";s:16:"user_edit_access";s:16:"access arguments";a:1:{i:0;i:1;}s:4:"type";i:132;s:4:"file";s:14:"user.pages.inc";s:6:"module";s:4:"user";}i:4;s:17:"user_profile_form";i:5;i:1;}',
   'delivery_callback' => '',
   'fit' => '5',
   'number_parts' => '3',
@@ -45104,14 +49447,39 @@
   'weight' => '0',
   'include_file' => 'modules/user/user.pages.inc',
 ))
+->values(array(
+  'path' => 'user/%/edit/%',
+  'load_functions' => 'a:2:{i:1;s:9:"user_load";i:3;s:32:"entity_translation_language_load";}',
+  'to_arg_functions' => '',
+  'access_callback' => 'entity_translation_edit_access',
+  'access_arguments' => 'a:5:{i:0;s:4:"user";i:1;i:1;i:2;i:3;i:3;a:8:{s:5:"title";s:4:"Edit";s:13:"page callback";s:15:"drupal_get_form";s:14:"page arguments";a:2:{i:0;s:17:"user_profile_form";i:1;i:1;}s:15:"access callback";s:16:"user_edit_access";s:16:"access arguments";a:1:{i:0;i:1;}s:4:"type";i:132;s:4:"file";s:14:"user.pages.inc";s:6:"module";s:4:"user";}i:4;i:1;}',
+  'page_callback' => 'entity_translation_edit_page',
+  'page_arguments' => 'a:6:{i:0;s:4:"user";i:1;i:1;i:2;i:3;i:3;a:8:{s:5:"title";s:4:"Edit";s:13:"page callback";s:15:"drupal_get_form";s:14:"page arguments";a:2:{i:0;s:17:"user_profile_form";i:1;i:1;}s:15:"access callback";s:16:"user_edit_access";s:16:"access arguments";a:1:{i:0;i:1;}s:4:"type";i:132;s:4:"file";s:14:"user.pages.inc";s:6:"module";s:4:"user";}i:4;s:17:"user_profile_form";i:5;i:1;}',
+  'delivery_callback' => '',
+  'fit' => '10',
+  'number_parts' => '4',
+  'context' => '1',
+  'tab_parent' => 'user/%/edit',
+  'tab_root' => 'user/%',
+  'title' => 'Edit',
+  'title_callback' => 'entity_translation_edit_title',
+  'title_arguments' => 'a:1:{i:0;i:3;}',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '140',
+  'description' => '',
+  'position' => '',
+  'weight' => '0',
+  'include_file' => 'modules/user/user.pages.inc',
+))
 ->values(array(
   'path' => 'user/%/edit/account',
   'load_functions' => 'a:1:{i:1;a:1:{s:18:"user_category_load";a:2:{i:0;s:4:"%map";i:1;s:6:"%index";}}}',
   'to_arg_functions' => '',
-  'access_callback' => 'user_edit_access',
-  'access_arguments' => 'a:1:{i:0;i:1;}',
-  'page_callback' => 'drupal_get_form',
-  'page_arguments' => 'a:2:{i:0;s:17:"user_profile_form";i:1;i:1;}',
+  'access_callback' => 'entity_translation_edit_access',
+  'access_arguments' => 'a:5:{i:0;s:4:"user";i:1;i:1;i:2;b:0;i:3;a:8:{s:5:"title";s:4:"Edit";s:13:"page callback";s:15:"drupal_get_form";s:14:"page arguments";a:2:{i:0;s:17:"user_profile_form";i:1;i:1;}s:15:"access callback";s:16:"user_edit_access";s:16:"access arguments";a:1:{i:0;i:1;}s:4:"type";i:132;s:4:"file";s:14:"user.pages.inc";s:6:"module";s:4:"user";}i:4;i:1;}',
+  'page_callback' => 'entity_translation_edit_page',
+  'page_arguments' => 'a:6:{i:0;s:4:"user";i:1;i:1;i:2;b:0;i:3;a:8:{s:5:"title";s:4:"Edit";s:13:"page callback";s:15:"drupal_get_form";s:14:"page arguments";a:2:{i:0;s:17:"user_profile_form";i:1;i:1;}s:15:"access callback";s:16:"user_edit_access";s:16:"access arguments";a:1:{i:0;i:1;}s:4:"type";i:132;s:4:"file";s:14:"user.pages.inc";s:6:"module";s:4:"user";}i:4;s:17:"user_profile_form";i:5;i:1;}',
   'delivery_callback' => '',
   'fit' => '11',
   'number_parts' => '4',
@@ -45129,6 +49497,31 @@
   'weight' => '0',
   'include_file' => 'modules/user/user.pages.inc',
 ))
+->values(array(
+  'path' => 'user/%/edit/add/%/%',
+  'load_functions' => 'a:3:{i:1;s:9:"user_load";i:4;s:32:"entity_translation_language_load";i:5;s:32:"entity_translation_language_load";}',
+  'to_arg_functions' => '',
+  'access_callback' => 'entity_translation_add_access',
+  'access_arguments' => 'a:6:{i:0;s:4:"user";i:1;i:1;i:2;i:4;i:3;i:5;i:4;a:8:{s:5:"title";s:4:"Edit";s:13:"page callback";s:15:"drupal_get_form";s:14:"page arguments";a:2:{i:0;s:17:"user_profile_form";i:1;i:1;}s:15:"access callback";s:16:"user_edit_access";s:16:"access arguments";a:1:{i:0;i:1;}s:4:"type";i:132;s:4:"file";s:14:"user.pages.inc";s:6:"module";s:4:"user";}i:5;i:1;}',
+  'page_callback' => 'entity_translation_add_page',
+  'page_arguments' => 'a:7:{i:0;s:4:"user";i:1;i:1;i:2;i:4;i:3;i:5;i:4;a:8:{s:5:"title";s:4:"Edit";s:13:"page callback";s:15:"drupal_get_form";s:14:"page arguments";a:2:{i:0;s:17:"user_profile_form";i:1;i:1;}s:15:"access callback";s:16:"user_edit_access";s:16:"access arguments";a:1:{i:0;i:1;}s:4:"type";i:132;s:4:"file";s:14:"user.pages.inc";s:6:"module";s:4:"user";}i:5;s:17:"user_profile_form";i:6;i:1;}',
+  'delivery_callback' => '',
+  'fit' => '44',
+  'number_parts' => '6',
+  'context' => '1',
+  'tab_parent' => 'user/%/edit',
+  'tab_root' => 'user/%',
+  'title' => 'Edit',
+  'title_callback' => 'Add translation',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '132',
+  'description' => '',
+  'position' => '',
+  'weight' => '0',
+  'include_file' => 'modules/user/user.pages.inc',
+))
 ->values(array(
   'path' => 'user/%/shortcuts',
   'load_functions' => 'a:1:{i:1;s:9:"user_load";}',
@@ -45229,6 +49622,56 @@
   'weight' => '2',
   'include_file' => 'modules/statistics/statistics.pages.inc',
 ))
+->values(array(
+  'path' => 'user/%/translate',
+  'load_functions' => 'a:1:{i:1;s:9:"user_load";}',
+  'to_arg_functions' => '',
+  'access_callback' => 'entity_translation_tab_access',
+  'access_arguments' => 'a:2:{i:0;s:4:"user";i:1;i:1;}',
+  'page_callback' => 'entity_translation_overview',
+  'page_arguments' => 'a:2:{i:0;s:4:"user";i:1;i:1;}',
+  'delivery_callback' => '',
+  'fit' => '5',
+  'number_parts' => '3',
+  'context' => '3',
+  'tab_parent' => 'user/%',
+  'tab_root' => 'user/%',
+  'title' => 'Translate',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '132',
+  'description' => '',
+  'position' => '',
+  'weight' => '2',
+  'include_file' => 'sites/all/modules/entity_translation/entity_translation.admin.inc',
+))
+->values(array(
+  'path' => 'user/%/translate/delete/%',
+  'load_functions' => 'a:2:{i:1;s:9:"user_load";i:4;s:32:"entity_translation_language_load";}',
+  'to_arg_functions' => '',
+  'access_callback' => 'entity_translation_tab_access',
+  'access_arguments' => 'a:2:{i:0;s:4:"user";i:1;i:1;}',
+  'page_callback' => 'drupal_get_form',
+  'page_arguments' => 'a:4:{i:0;s:33:"entity_translation_delete_confirm";i:1;s:4:"user";i:2;i:1;i:3;i:4;}',
+  'delivery_callback' => '',
+  'fit' => '22',
+  'number_parts' => '5',
+  'context' => '0',
+  'tab_parent' => '',
+  'tab_root' => 'user/%/translate/delete/%',
+  'title' => 'Delete',
+  'title_callback' => 't',
+  'title_arguments' => '',
+  'theme_callback' => '',
+  'theme_arguments' => 'a:0:{}',
+  'type' => '6',
+  'description' => '',
+  'position' => '',
+  'weight' => '0',
+  'include_file' => 'sites/all/modules/entity_translation/entity_translation.admin.inc',
+))
 ->values(array(
   'path' => 'user/%/view',
   'load_functions' => 'a:1:{i:1;s:9:"user_load";}',
@@ -46406,6 +50849,21 @@
   'disabled' => '0',
   'orig_type' => 'article',
 ))
+->values(array(
+  'type' => 'a_thirty_two_character_type_name',
+  'name' => 'Test long name',
+  'base' => 'node_content',
+  'module' => 'node',
+  'description' => '',
+  'help' => '',
+  'has_title' => '1',
+  'title_label' => 'Title',
+  'custom' => '1',
+  'modified' => '1',
+  'locked' => '0',
+  'disabled' => '0',
+  'orig_type' => 'page',
+))
 ->values(array(
   'type' => 'blog',
   'name' => 'Blog entry',
@@ -46436,6 +50894,21 @@
   'disabled' => '0',
   'orig_type' => 'book',
 ))
+->values(array(
+  'type' => 'et',
+  'name' => 'Entity translation test',
+  'base' => 'node_content',
+  'module' => 'node',
+  'description' => 'Entity translation test',
+  'help' => 'Help text foret pages',
+  'has_title' => '1',
+  'title_label' => 'Title',
+  'custom' => '1',
+  'modified' => '1',
+  'locked' => '0',
+  'disabled' => '0',
+  'orig_type' => 'et',
+))
 ->values(array(
   'type' => 'forum',
   'name' => 'Forum topic',
@@ -46481,38 +50954,7 @@
   'disabled' => '0',
   'orig_type' => 'test_content_type',
 ))
-->values(array(
-  'type' => 'et',
-  'name' => 'Entity translation test',
-  'base' => 'node_content',
-  'module' => 'node',
-  'description' => 'Entity translation test',
-  'help' => 'Help text foret pages',
-  'has_title' => '1',
-  'title_label' => 'Title',
-  'custom' => '1',
-  'modified' => '1',
-  'locked' => '0',
-  'disabled' => '0',
-  'orig_type' => 'et',
-))
- ->values(array(
-  'type' => 'a_thirty_two_character_type_name',
-  'name' => 'Test long name',
-  'base' => 'node_content',
-  'module' => 'node',
-  'description' => '',
-  'help' => '',
-  'has_title' => '1',
-  'title_label' => 'Title',
-  'custom' => '1',
-  'modified' => '1',
-  'locked' => '0',
-  'disabled' => '0',
-  'orig_type' => 'page',
-))
 ->execute();
-
 $connection->schema()->createTable('picture_mapping', array(
   'fields' => array(
     'label' => array(
@@ -46556,7 +50998,6 @@
   'mapping' => 'a:2:{s:38:"breakpoints.theme.my_theme_id.computer";a:3:{s:12:"multiplier_1";a:2:{s:12:"mapping_type";s:11:"image_style";s:11:"image_style";s:20:"custom_image_style_1";}s:12:"multiplier_2";a:3:{s:12:"mapping_type";s:5:"sizes";s:5:"sizes";i:2;s:18:"sizes_image_styles";a:2:{i:0;s:20:"custom_image_style_1";i:1;s:20:"custom_image_style_2";}}s:12:"multiplier_3";a:1:{s:12:"mapping_type";s:5:"_none";}}s:41:"breakpoints.theme.my_theme_id.computertwo";a:1:{s:12:"multiplier_2";a:3:{s:12:"mapping_type";s:5:"sizes";s:5:"sizes";i:2;s:18:"sizes_image_styles";a:2:{i:0;s:20:"custom_image_style_1";i:1;s:20:"custom_image_style_2";}}}}',
 ))
 ->execute();
-
 $connection->schema()->createTable('queue', array(
   'fields' => array(
     'item_id' => array(
@@ -46595,6 +51036,22 @@
   'mysql_character_set' => 'utf8',
 ));
 
+$connection->insert('queue')
+->fields(array(
+  'item_id',
+  'name',
+  'data',
+  'expire',
+  'created',
+))
+->values(array(
+  'item_id' => '129',
+  'name' => 'update_fetch_tasks',
+  'data' => 'a:8:{s:4:"name";s:6:"drupal";s:4:"info";a:6:{s:4:"name";s:10:"Aggregator";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.92";s:7:"project";s:6:"drupal";s:16:"_info_file_ctime";i:1664863480;s:9:"datestamp";i:0;}s:9:"datestamp";i:0;s:8:"includes";a:41:{s:10:"aggregator";s:10:"Aggregator";s:5:"block";s:5:"Block";s:4:"blog";s:4:"Blog";s:4:"book";s:4:"Book";s:5:"color";s:5:"Color";s:7:"comment";s:7:"Comment";s:7:"contact";s:7:"Contact";s:10:"contextual";s:16:"Contextual links";s:9:"dashboard";s:9:"Dashboard";s:5:"dblog";s:16:"Database logging";s:5:"field";s:5:"Field";s:17:"field_sql_storage";s:17:"Field SQL storage";s:8:"field_ui";s:8:"Field UI";s:4:"file";s:4:"File";s:6:"filter";s:6:"Filter";s:5:"forum";s:5:"Forum";s:4:"help";s:4:"Help";s:5:"image";s:5:"Image";s:4:"list";s:4:"List";s:6:"locale";s:6:"Locale";s:4:"menu";s:4:"Menu";s:4:"node";s:4:"Node";s:6:"number";s:6:"Number";s:7:"options";s:7:"Options";s:7:"overlay";s:7:"Overlay";s:4:"path";s:4:"Path";s:3:"php";s:10:"PHP filter";s:3:"rdf";s:3:"RDF";s:6:"search";s:6:"Search";s:8:"shortcut";s:8:"Shortcut";s:10:"statistics";s:10:"Statistics";s:6:"system";s:6:"System";s:8:"taxonomy";s:8:"Taxonomy";s:4:"text";s:4:"Text";s:7:"toolbar";s:7:"Toolbar";s:7:"tracker";s:7:"Tracker";s:11:"translation";s:19:"Content translation";s:6:"update";s:14:"Update manager";s:4:"user";s:4:"User";s:6:"bartik";s:6:"Bartik";s:5:"seven";s:5:"Seven";}s:12:"project_type";s:4:"core";s:14:"project_status";b:1;s:10:"sub_themes";a:0:{}s:11:"base_themes";a:0:{}}',
+  'expire' => '0',
+  'created' => '1664931778',
+))
+->execute();
 $connection->schema()->createTable('rdf_mapping', array(
   'fields' => array(
     'type' => array(
@@ -46641,16 +51098,16 @@
   'bundle' => 'forum',
   'mapping' => 'a:10:{s:7:"rdftype";a:2:{i:0;s:9:"sioc:Post";i:1;s:15:"sioct:BoardPost";}s:15:"taxonomy_forums";a:2:{s:10:"predicates";a:1:{i:0;s:18:"sioc:has_container";}s:4:"type";s:3:"rel";}s:5:"title";a:1:{s:10:"predicates";a:1:{i:0;s:8:"dc:title";}}s:7:"created";a:3:{s:10:"predicates";a:2:{i:0;s:7:"dc:date";i:1;s:10:"dc:created";}s:8:"datatype";s:12:"xsd:dateTime";s:8:"callback";s:12:"date_iso8601";}s:7:"changed";a:3:{s:10:"predicates";a:1:{i:0;s:11:"dc:modified";}s:8:"datatype";s:12:"xsd:dateTime";s:8:"callback";s:12:"date_iso8601";}s:4:"body";a:1:{s:10:"predicates";a:1:{i:0;s:15:"content:encoded";}}s:3:"uid";a:2:{s:10:"predicates";a:1:{i:0;s:16:"sioc:has_creator";}s:4:"type";s:3:"rel";}s:4:"name";a:1:{s:10:"predicates";a:1:{i:0;s:9:"foaf:name";}}s:13:"comment_count";a:2:{s:10:"predicates";a:1:{i:0;s:16:"sioc:num_replies";}s:8:"datatype";s:11:"xsd:integer";}s:13:"last_activity";a:3:{s:10:"predicates";a:1:{i:0;s:23:"sioc:last_activity_date";}s:8:"datatype";s:12:"xsd:dateTime";s:8:"callback";s:12:"date_iso8601";}}',
 ))
-->values(array(
-  'type' => 'taxonomy_term',
-  'bundle' => 'forums',
-  'mapping' => 'a:5:{s:7:"rdftype";a:2:{i:0;s:14:"sioc:Container";i:1;s:10:"sioc:Forum";}s:4:"name";a:1:{s:10:"predicates";a:2:{i:0;s:10:"rdfs:label";i:1;s:14:"skos:prefLabel";}}s:11:"description";a:1:{s:10:"predicates";a:1:{i:0;s:15:"skos:definition";}}s:3:"vid";a:2:{s:10:"predicates";a:1:{i:0;s:13:"skos:inScheme";}s:4:"type";s:3:"rel";}s:6:"parent";a:2:{s:10:"predicates";a:1:{i:0;s:12:"skos:broader";}s:4:"type";s:3:"rel";}}',
-))
 ->values(array(
   'type' => 'node',
   'bundle' => 'page',
   'mapping' => 'a:9:{s:7:"rdftype";a:1:{i:0;s:13:"foaf:Document";}s:5:"title";a:1:{s:10:"predicates";a:1:{i:0;s:8:"dc:title";}}s:7:"created";a:3:{s:10:"predicates";a:2:{i:0;s:7:"dc:date";i:1;s:10:"dc:created";}s:8:"datatype";s:12:"xsd:dateTime";s:8:"callback";s:12:"date_iso8601";}s:7:"changed";a:3:{s:10:"predicates";a:1:{i:0;s:11:"dc:modified";}s:8:"datatype";s:12:"xsd:dateTime";s:8:"callback";s:12:"date_iso8601";}s:4:"body";a:1:{s:10:"predicates";a:1:{i:0;s:15:"content:encoded";}}s:3:"uid";a:2:{s:10:"predicates";a:1:{i:0;s:16:"sioc:has_creator";}s:4:"type";s:3:"rel";}s:4:"name";a:1:{s:10:"predicates";a:1:{i:0;s:9:"foaf:name";}}s:13:"comment_count";a:2:{s:10:"predicates";a:1:{i:0;s:16:"sioc:num_replies";}s:8:"datatype";s:11:"xsd:integer";}s:13:"last_activity";a:3:{s:10:"predicates";a:1:{i:0;s:23:"sioc:last_activity_date";}s:8:"datatype";s:12:"xsd:dateTime";s:8:"callback";s:12:"date_iso8601";}}',
 ))
+->values(array(
+  'type' => 'taxonomy_term',
+  'bundle' => 'forums',
+  'mapping' => 'a:5:{s:7:"rdftype";a:2:{i:0;s:14:"sioc:Container";i:1;s:10:"sioc:Forum";}s:4:"name";a:1:{s:10:"predicates";a:2:{i:0;s:10:"rdfs:label";i:1;s:14:"skos:prefLabel";}}s:11:"description";a:1:{s:10:"predicates";a:1:{i:0;s:15:"skos:definition";}}s:3:"vid";a:2:{s:10:"predicates";a:1:{i:0;s:13:"skos:inScheme";}s:4:"type";s:3:"rel";}s:6:"parent";a:2:{s:10:"predicates";a:1:{i:0;s:12:"skos:broader";}s:4:"type";s:3:"rel";}}',
+))
 ->execute();
 $connection->schema()->createTable('registry', array(
   'fields' => array(
@@ -46928,63 +51385,70 @@
   'type' => 'class',
   'filename' => 'modules/block/block.test',
   'module' => 'block',
-  'weight' => '-5',
+  'weight' => '0',
 ))
 ->values(array(
   'name' => 'BlockCacheTestCase',
   'type' => 'class',
   'filename' => 'modules/block/block.test',
   'module' => 'block',
-  'weight' => '-5',
+  'weight' => '0',
 ))
 ->values(array(
   'name' => 'BlockHashTestCase',
   'type' => 'class',
   'filename' => 'modules/block/block.test',
   'module' => 'block',
-  'weight' => '-5',
+  'weight' => '0',
 ))
 ->values(array(
   'name' => 'BlockHiddenRegionTestCase',
   'type' => 'class',
   'filename' => 'modules/block/block.test',
   'module' => 'block',
-  'weight' => '-5',
+  'weight' => '0',
 ))
 ->values(array(
   'name' => 'BlockHTMLIdTestCase',
   'type' => 'class',
   'filename' => 'modules/block/block.test',
   'module' => 'block',
-  'weight' => '-5',
+  'weight' => '0',
+))
+->values(array(
+  'name' => 'BlockInterestCohortTest',
+  'type' => 'class',
+  'filename' => 'modules/simpletest/tests/common.test',
+  'module' => 'simpletest',
+  'weight' => '0',
 ))
 ->values(array(
   'name' => 'BlockInvalidRegionTestCase',
   'type' => 'class',
   'filename' => 'modules/block/block.test',
   'module' => 'block',
-  'weight' => '-5',
+  'weight' => '0',
 ))
 ->values(array(
   'name' => 'BlockTemplateSuggestionsUnitTest',
   'type' => 'class',
   'filename' => 'modules/block/block.test',
   'module' => 'block',
-  'weight' => '-5',
+  'weight' => '0',
 ))
 ->values(array(
   'name' => 'BlockTestCase',
   'type' => 'class',
   'filename' => 'modules/block/block.test',
   'module' => 'block',
-  'weight' => '-5',
+  'weight' => '0',
 ))
 ->values(array(
   'name' => 'BlockViewModuleDeltaAlterWebTest',
   'type' => 'class',
   'filename' => 'modules/block/block.test',
   'module' => 'block',
-  'weight' => '-5',
+  'weight' => '0',
 ))
 ->values(array(
   'name' => 'BlogTestCase',
@@ -47021,6 +51485,13 @@
   'module' => 'simpletest',
   'weight' => '0',
 ))
+->values(array(
+  'name' => 'BootstrapGetFilenameWebTestCase',
+  'type' => 'class',
+  'filename' => 'modules/simpletest/tests/bootstrap.test',
+  'module' => 'simpletest',
+  'weight' => '0',
+))
 ->values(array(
   'name' => 'BootstrapIPAddressTestCase',
   'type' => 'class',
@@ -47231,6 +51702,13 @@
   'module' => 'color',
   'weight' => '0',
 ))
+->values(array(
+  'name' => 'ColorUnitTestCase',
+  'type' => 'class',
+  'filename' => 'modules/color/color.test',
+  'module' => 'color',
+  'weight' => '0',
+))
 ->values(array(
   'name' => 'CommentActionsTestCase',
   'type' => 'class',
@@ -47343,6 +51821,13 @@
   'module' => 'comment',
   'weight' => '0',
 ))
+->values(array(
+  'name' => 'CommentUninstallTestCase',
+  'type' => 'class',
+  'filename' => 'modules/comment/comment.test',
+  'module' => 'comment',
+  'weight' => '0',
+))
 ->values(array(
   'name' => 'CommentUpgradePathTestCase',
   'type' => 'class',
@@ -47364,6 +51849,13 @@
   'module' => 'simpletest',
   'weight' => '0',
 ))
+->values(array(
+  'name' => 'CommonURLWebTest',
+  'type' => 'class',
+  'filename' => 'modules/simpletest/tests/common.test',
+  'module' => 'simpletest',
+  'weight' => '0',
+))
 ->values(array(
   'name' => 'CommonXssUnitTest',
   'type' => 'class',
@@ -47434,25 +51926,11 @@
   'module' => 'phone',
   'weight' => '0',
 ))
-->values(array(
-  'name' => 'CtoolsContextIDTestCase',
-  'type' => 'class',
-  'filename' => 'sites/all/modules/ctools/tests/context.test',
-  'module' => 'ctools',
-  'weight' => '0',
-))
 ->values(array(
   'name' => 'CtoolsContextKeywordsSubstitutionTestCase',
   'type' => 'class',
   'filename' => 'sites/all/modules/ctools/tests/context.test',
-  'module' => 'ctools',
-  'weight' => '0',
-))
-->values(array(
-  'name' => 'CtoolsContextUnitTestCase',
-  'type' => 'class',
-  'filename' => 'sites/all/modules/ctools/tests/context.test',
-  'module' => 'ctools',
+  'module' => 'ctools_plugin_test',
   'weight' => '0',
 ))
 ->values(array(
@@ -47462,18 +51940,11 @@
   'module' => 'ctools',
   'weight' => '0',
 ))
-->values(array(
-  'name' => 'CtoolsCSSObjectCache',
-  'type' => 'class',
-  'filename' => 'sites/all/modules/ctools/tests/css_cache.test',
-  'module' => 'ctools',
-  'weight' => '0',
-))
 ->values(array(
   'name' => 'CtoolsCssTestCase',
   'type' => 'class',
   'filename' => 'sites/all/modules/ctools/tests/css.test',
-  'module' => 'ctools',
+  'module' => 'ctools_plugin_test',
   'weight' => '0',
 ))
 ->values(array(
@@ -47487,49 +51958,28 @@
   'name' => 'CtoolsMathExpressionStackTestCase',
   'type' => 'class',
   'filename' => 'sites/all/modules/ctools/tests/math_expression_stack.test',
-  'module' => 'ctools',
+  'module' => 'ctools_plugin_test',
   'weight' => '0',
 ))
 ->values(array(
   'name' => 'CtoolsMathExpressionTestCase',
   'type' => 'class',
   'filename' => 'sites/all/modules/ctools/tests/math_expression.test',
-  'module' => 'ctools',
-  'weight' => '0',
-))
-->values(array(
-  'name' => 'CtoolsModuleTestCase',
-  'type' => 'class',
-  'filename' => 'sites/all/modules/ctools/tests/ctools.test',
-  'module' => 'ctools',
+  'module' => 'ctools_plugin_test',
   'weight' => '0',
 ))
 ->values(array(
   'name' => 'CtoolsObjectCache',
   'type' => 'class',
   'filename' => 'sites/all/modules/ctools/tests/object_cache.test',
-  'module' => 'ctools',
-  'weight' => '0',
-))
-->values(array(
-  'name' => 'CtoolsPageTokens',
-  'type' => 'class',
-  'filename' => 'sites/all/modules/ctools/tests/page_tokens.test',
-  'module' => 'ctools',
+  'module' => 'ctools_plugin_test',
   'weight' => '0',
 ))
 ->values(array(
   'name' => 'CtoolsPluginsGetInfoTestCase',
   'type' => 'class',
   'filename' => 'sites/all/modules/ctools/tests/ctools.plugins.test',
-  'module' => 'ctools',
-  'weight' => '0',
-))
-->values(array(
-  'name' => 'CtoolsUnitObjectCachePlugins',
-  'type' => 'class',
-  'filename' => 'sites/all/modules/ctools/tests/object_cache_unit.test',
-  'module' => 'ctools',
+  'module' => 'ctools_plugin_test',
   'weight' => '0',
 ))
 ->values(array(
@@ -47777,6 +52227,13 @@
   'module' => 'simpletest',
   'weight' => '0',
 ))
+->values(array(
+  'name' => 'DatabaseReservedKeywordTestCase',
+  'type' => 'class',
+  'filename' => 'modules/simpletest/tests/database_test.test',
+  'module' => 'simpletest',
+  'weight' => '0',
+))
 ->values(array(
   'name' => 'DatabaseSchema',
   'type' => 'class',
@@ -47917,6 +52374,13 @@
   'module' => '',
   'weight' => '0',
 ))
+->values(array(
+  'name' => 'DatabaseTablePrefixTestCase',
+  'type' => 'class',
+  'filename' => 'modules/simpletest/tests/database_test.test',
+  'module' => 'simpletest',
+  'weight' => '0',
+))
 ->values(array(
   'name' => 'DatabaseTaggingTestCase',
   'type' => 'class',
@@ -48044,37 +52508,58 @@
   'weight' => '0',
 ))
 ->values(array(
-  'name' => 'DateAPITestCase',
+  'name' => 'DateAllDayUiTestCase',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/date/date_all_day/tests/DateAllDayUiTestCase.test',
+  'module' => 'date_all_day',
+  'weight' => '0',
+))
+->values(array(
+  'name' => 'DateApiTestCase',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/date/date_api/tests/DateApiTestCase.test',
+  'module' => 'date_api',
+  'weight' => '0',
+))
+->values(array(
+  'name' => 'DateApiUnitTestCase',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/date/date_api/tests/DateApiUnitTestCase.test',
+  'module' => 'date_api',
+  'weight' => '0',
+))
+->values(array(
+  'name' => 'DateEmwTestCase',
   'type' => 'class',
-  'filename' => 'sites/all/modules/date/tests/date_api.test',
+  'filename' => 'sites/all/modules/date/tests/DateEmwTestCase.test',
   'module' => 'date',
   'weight' => '0',
 ))
 ->values(array(
-  'name' => 'DateFieldBasic',
+  'name' => 'DateFieldTestBase',
   'type' => 'class',
-  'filename' => 'sites/all/modules/date/tests/date_field.test',
+  'filename' => 'sites/all/modules/date/tests/DateFieldTestBase.test',
   'module' => 'date',
   'weight' => '0',
 ))
 ->values(array(
   'name' => 'DateFieldTestCase',
   'type' => 'class',
-  'filename' => 'sites/all/modules/date/tests/date_field.test',
+  'filename' => 'sites/all/modules/date/tests/DateFieldTestCase.test',
   'module' => 'date',
   'weight' => '0',
 ))
 ->values(array(
-  'name' => 'DateFormTestCase',
+  'name' => 'DateFormatTestCase',
   'type' => 'class',
-  'filename' => 'sites/all/modules/date/tests/date_form.test',
-  'module' => 'date',
+  'filename' => 'modules/system/system.test',
+  'module' => 'system',
   'weight' => '0',
 ))
 ->values(array(
-  'name' => 'DateMigrateExampleUnitTest',
+  'name' => 'DateFormTestCase',
   'type' => 'class',
-  'filename' => 'sites/all/modules/date/tests/date_migrate.test',
+  'filename' => 'sites/all/modules/date/tests/DateFormTestCase.test',
   'module' => 'date',
   'weight' => '0',
 ))
@@ -48085,6 +52570,20 @@
   'module' => 'date',
   'weight' => '0',
 ))
+->values(array(
+  'name' => 'DateMigrateTestCase',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/date/tests/DateMigrateTestCase.test',
+  'module' => 'date',
+  'weight' => '0',
+))
+->values(array(
+  'name' => 'DateNowUnitTestCase',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/date/tests/DateNowUnitTestCase.test',
+  'module' => 'date',
+  'weight' => '0',
+))
 ->values(array(
   'name' => 'DateObject',
   'type' => 'class',
@@ -48092,6 +52591,34 @@
   'module' => 'date_api',
   'weight' => '0',
 ))
+->values(array(
+  'name' => 'DatePopupFieldTestCase',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/date/date_popup/tests/DatePopupFieldTestCase.test',
+  'module' => 'date_popup',
+  'weight' => '0',
+))
+->values(array(
+  'name' => 'DatePopupValidationTestCase',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/date/date_popup/tests/DatePopupValidationTestCase.test',
+  'module' => 'date_popup',
+  'weight' => '0',
+))
+->values(array(
+  'name' => 'DatePopupWithViewsTestCase',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/date/date_popup/tests/DatePopupWithViewsTestCase.test',
+  'module' => 'date_popup',
+  'weight' => '0',
+))
+->values(array(
+  'name' => 'DateRepeatFieldTestCase',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/date/date_repeat_field/tests/DateRepeatFieldTestCase.test',
+  'module' => 'date_repeat_field',
+  'weight' => '0',
+))
 ->values(array(
   'name' => 'DateRepeatFormTestCase',
   'type' => 'class',
@@ -48116,36 +52643,36 @@
 ->values(array(
   'name' => 'DateTimezoneTestCase',
   'type' => 'class',
-  'filename' => 'sites/all/modules/date/tests/date_timezone.test',
+  'filename' => 'sites/all/modules/date/tests/DateTimezoneTestCase.test',
   'module' => 'date',
   'weight' => '0',
 ))
 ->values(array(
   'name' => 'DateToolsTestCase',
   'type' => 'class',
-  'filename' => 'sites/all/modules/date/date_tools/tests/date_tools.test',
+  'filename' => 'sites/all/modules/date/date_tools/tests/DateToolsTestCase.test',
   'module' => 'date_tools',
   'weight' => '0',
 ))
 ->values(array(
-  'name' => 'DateUITestCase',
+  'name' => 'DateUiTestCase',
   'type' => 'class',
-  'filename' => 'sites/all/modules/date/tests/date.test',
+  'filename' => 'sites/all/modules/date/tests/DateUiTestCase.test',
   'module' => 'date',
   'weight' => '0',
 ))
 ->values(array(
   'name' => 'DateValidationTestCase',
   'type' => 'class',
-  'filename' => 'sites/all/modules/date/tests/date_validation.test',
+  'filename' => 'sites/all/modules/date/tests/DateValidationTestCase.test',
   'module' => 'date',
   'weight' => '0',
 ))
 ->values(array(
-  'name' => 'DateViewsPopupTestCase',
+  'name' => 'DateViewsFilterTestCase',
   'type' => 'class',
-  'filename' => 'sites/all/modules/date/tests/date_views_popup.test',
-  'module' => 'date',
+  'filename' => 'sites/all/modules/date/date_views/tests/date_views_filter.test',
+  'module' => 'date_views',
   'weight' => '0',
 ))
 ->values(array(
@@ -48197,6 +52724,13 @@
   'module' => 'simpletest',
   'weight' => '0',
 ))
+->values(array(
+  'name' => 'DrupalAddHtmlHeadLinkTest',
+  'type' => 'class',
+  'filename' => 'modules/simpletest/tests/common.test',
+  'module' => 'simpletest',
+  'weight' => '0',
+))
 ->values(array(
   'name' => 'DrupalAlterTestCase',
   'type' => 'class',
@@ -48309,6 +52843,13 @@
   'module' => 'simpletest',
   'weight' => '0',
 ))
+->values(array(
+  'name' => 'DrupalHTTPRedirectTest',
+  'type' => 'class',
+  'filename' => 'modules/simpletest/tests/common.test',
+  'module' => 'simpletest',
+  'weight' => '0',
+))
 ->values(array(
   'name' => 'DrupalHTTPRequestTestCase',
   'type' => 'class',
@@ -48328,14 +52869,14 @@
   'type' => 'class',
   'filename' => 'sites/all/modules/i18n/i18n.test',
   'module' => 'i18n',
-  'weight' => '10',
+  'weight' => '0',
 ))
 ->values(array(
   'name' => 'Drupali18nTestCase',
   'type' => 'class',
   'filename' => 'sites/all/modules/i18n/i18n.test',
   'module' => 'i18n',
-  'weight' => '10',
+  'weight' => '0',
 ))
 ->values(array(
   'name' => 'DrupalJSONTest',
@@ -48400,6 +52941,13 @@
   'module' => 'simpletest',
   'weight' => '0',
 ))
+->values(array(
+  'name' => 'DrupalRequestSanitizer',
+  'type' => 'class',
+  'filename' => 'includes/request-sanitizer.inc',
+  'module' => '',
+  'weight' => '0',
+))
 ->values(array(
   'name' => 'DrupalSetContentTestCase',
   'type' => 'class',
@@ -48813,6 +53361,13 @@
   'module' => 'entityreference',
   'weight' => '0',
 ))
+->values(array(
+  'name' => 'EntityReferenceFieldTestCase',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/entityreference/tests/entityreference.field.test',
+  'module' => 'entityreference',
+  'weight' => '0',
+))
 ->values(array(
   'name' => 'EntityReferenceHandlersTestCase',
   'type' => 'class',
@@ -48944,49 +53499,126 @@
   'type' => 'class',
   'filename' => 'sites/all/modules/entity_translation/includes/translation.handler.comment.inc',
   'module' => 'entity_translation',
-  'weight' => '11',
+  'weight' => '0',
+))
+->values(array(
+  'name' => 'EntityTranslationCommentTestCase',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/entity_translation/tests/entity_translation.test',
+  'module' => 'entity_translation',
+  'weight' => '0',
+))
+->values(array(
+  'name' => 'EntityTranslationContentTranslationTestCase',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/entity_translation/tests/entity_translation.test',
+  'module' => 'entity_translation',
+  'weight' => '0',
 ))
 ->values(array(
   'name' => 'EntityTranslationDefaultHandler',
   'type' => 'class',
   'filename' => 'sites/all/modules/entity_translation/includes/translation.handler.inc',
   'module' => 'entity_translation',
-  'weight' => '11',
+  'weight' => '0',
 ))
 ->values(array(
   'name' => 'EntityTranslationHandlerFactory',
   'type' => 'class',
   'filename' => 'sites/all/modules/entity_translation/includes/translation.handler_factory.inc',
   'module' => 'entity_translation',
-  'weight' => '11',
+  'weight' => '0',
 ))
 ->values(array(
   'name' => 'EntityTranslationHandlerInterface',
   'type' => 'interface',
   'filename' => 'sites/all/modules/entity_translation/includes/translation.handler.inc',
   'module' => 'entity_translation',
-  'weight' => '11',
+  'weight' => '0',
+))
+->values(array(
+  'name' => 'EntityTranslationHierarchyTestCase',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/entity_translation/tests/entity_translation.test',
+  'module' => 'entity_translation',
+  'weight' => '0',
+))
+->values(array(
+  'name' => 'EntityTranslationHookTestCase',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/entity_translation/tests/entity_translation.test',
+  'module' => 'entity_translation',
+  'weight' => '0',
+))
+->values(array(
+  'name' => 'EntityTranslationIntegrationTestCase',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/entity_translation/tests/entity_translation.test',
+  'module' => 'entity_translation',
+  'weight' => '0',
+))
+->values(array(
+  'name' => 'EntityTranslationMenuTranslationTestCase',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/entity_translation/entity_translation_i18n_menu/entity_translation_i18n_menu.test',
+  'module' => 'entity_translation_i18n_menu',
+  'weight' => '0',
 ))
 ->values(array(
   'name' => 'EntityTranslationNodeHandler',
   'type' => 'class',
   'filename' => 'sites/all/modules/entity_translation/includes/translation.handler.node.inc',
   'module' => 'entity_translation',
-  'weight' => '11',
+  'weight' => '0',
+))
+->values(array(
+  'name' => 'EntityTranslationTaxonomyAutocompleteTestCase',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/entity_translation/tests/entity_translation.test',
+  'module' => 'entity_translation',
+  'weight' => '0',
 ))
 ->values(array(
   'name' => 'EntityTranslationTaxonomyTermHandler',
   'type' => 'class',
   'filename' => 'sites/all/modules/entity_translation/includes/translation.handler.taxonomy_term.inc',
   'module' => 'entity_translation',
-  'weight' => '11',
+  'weight' => '0',
+))
+->values(array(
+  'name' => 'EntityTranslationTestCase',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/entity_translation/tests/entity_translation.test',
+  'module' => 'entity_translation',
+  'weight' => '0',
+))
+->values(array(
+  'name' => 'EntityTranslationToggleFieldsTranslatabilityTestCase',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/entity_translation/tests/entity_translation.test',
+  'module' => 'entity_translation',
+  'weight' => '0',
+))
+->values(array(
+  'name' => 'EntityTranslationTranslationTestCase',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/entity_translation/tests/entity_translation.test',
+  'module' => 'entity_translation',
+  'weight' => '0',
+))
+->values(array(
+  'name' => 'EntityTranslationUpgradeTestCase',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/entity_translation/entity_translation_upgrade/entity_translation_upgrade.test',
+  'module' => 'entity_translation_upgrade',
+  'weight' => '0',
 ))
 ->values(array(
   'name' => 'EntityTranslationUserHandler',
   'type' => 'class',
   'filename' => 'sites/all/modules/entity_translation/includes/translation.handler.user.inc',
   'module' => 'entity_translation',
-  'weight' => '11',
+  'weight' => '0',
 ))
 ->values(array(
   'name' => 'EntityValueWrapper',
@@ -49007,49 +53639,49 @@
   'type' => 'class',
   'filename' => 'sites/all/modules/entity_translation/views/entity_translation_handler_field_field.inc',
   'module' => 'entity_translation',
-  'weight' => '11',
+  'weight' => '0',
 ))
 ->values(array(
   'name' => 'entity_translation_handler_field_label',
   'type' => 'class',
   'filename' => 'sites/all/modules/entity_translation/views/entity_translation_handler_field_label.inc',
   'module' => 'entity_translation',
-  'weight' => '11',
+  'weight' => '0',
 ))
 ->values(array(
   'name' => 'entity_translation_handler_field_translate_link',
   'type' => 'class',
   'filename' => 'sites/all/modules/entity_translation/views/entity_translation_handler_field_translate_link.inc',
   'module' => 'entity_translation',
-  'weight' => '11',
+  'weight' => '0',
 ))
 ->values(array(
   'name' => 'entity_translation_handler_filter_entity_type',
   'type' => 'class',
   'filename' => 'sites/all/modules/entity_translation/views/entity_translation_handler_filter_entity_type.inc',
   'module' => 'entity_translation',
-  'weight' => '11',
+  'weight' => '0',
 ))
 ->values(array(
   'name' => 'entity_translation_handler_filter_language',
   'type' => 'class',
   'filename' => 'sites/all/modules/entity_translation/views/entity_translation_handler_filter_language.inc',
   'module' => 'entity_translation',
-  'weight' => '11',
+  'weight' => '0',
 ))
 ->values(array(
   'name' => 'entity_translation_handler_filter_translation_exists',
   'type' => 'class',
   'filename' => 'sites/all/modules/entity_translation/views/entity_translation_handler_filter_translation_exists.inc',
   'module' => 'entity_translation',
-  'weight' => '11',
+  'weight' => '0',
 ))
 ->values(array(
   'name' => 'entity_translation_handler_relationship',
   'type' => 'class',
   'filename' => 'sites/all/modules/entity_translation/views/entity_translation_handler_relationship.inc',
   'module' => 'entity_translation',
-  'weight' => '11',
+  'weight' => '0',
 ))
 ->values(array(
   'name' => 'entity_views_handler_area_entity',
@@ -49359,6 +53991,13 @@
   'module' => 'simpletest',
   'weight' => '0',
 ))
+->values(array(
+  'name' => 'FileFieldAnonymousSubmission',
+  'type' => 'class',
+  'filename' => 'modules/file/tests/file.test',
+  'module' => 'file',
+  'weight' => '0',
+))
 ->values(array(
   'name' => 'FileFieldDisplayTestCase',
   'type' => 'class',
@@ -49471,6 +54110,13 @@
   'module' => 'simpletest',
   'weight' => '0',
 ))
+->values(array(
+  'name' => 'FileScanDirectory',
+  'type' => 'class',
+  'filename' => 'modules/file/tests/file.test',
+  'module' => 'file',
+  'weight' => '0',
+))
 ->values(array(
   'name' => 'FileScanDirectoryTest',
   'type' => 'class',
@@ -49499,6 +54145,13 @@
   'module' => 'simpletest',
   'weight' => '0',
 ))
+->values(array(
+  'name' => 'FileThemeImplementationsTestCase',
+  'type' => 'class',
+  'filename' => 'modules/file/tests/file.test',
+  'module' => 'file',
+  'weight' => '0',
+))
 ->values(array(
   'name' => 'FileTokenReplaceTestCase',
   'type' => 'class',
@@ -49786,6 +54439,13 @@
   'module' => 'simpletest',
   'weight' => '0',
 ))
+->values(array(
+  'name' => 'FormsFormCacheTestCase',
+  'type' => 'class',
+  'filename' => 'modules/simpletest/tests/form.test',
+  'module' => 'simpletest',
+  'weight' => '0',
+))
 ->values(array(
   'name' => 'FormsFormStoragePageCacheTestCase',
   'type' => 'class',
@@ -49856,6 +54516,13 @@
   'module' => 'simpletest',
   'weight' => '0',
 ))
+->values(array(
+  'name' => 'FormTextareaTestCase',
+  'type' => 'class',
+  'filename' => 'modules/simpletest/tests/form.test',
+  'module' => 'simpletest',
+  'weight' => '0',
+))
 ->values(array(
   'name' => 'FormValidationTestCase',
   'type' => 'class',
@@ -49898,13 +54565,6 @@
   'module' => 'simpletest',
   'weight' => '0',
 ))
-->values(array(
-  'name' => 'HeadLinksTestCase',
-  'type' => 'class',
-  'filename' => 'sites/all/modules/ctools/page_manager/tests/head_links.test',
-  'module' => 'page_manager',
-  'weight' => '0',
-))
 ->values(array(
   'name' => 'HelpTestCase',
   'type' => 'class',
@@ -49926,6 +54586,13 @@
   'module' => 'system',
   'weight' => '0',
 ))
+->values(array(
+  'name' => 'HtaccessTest',
+  'type' => 'class',
+  'filename' => 'modules/system/system.test',
+  'module' => 'system',
+  'weight' => '0',
+))
 ->values(array(
   'name' => 'HTMLIdTestCase',
   'type' => 'class',
@@ -49940,6 +54607,195 @@
   'module' => 'phone',
   'weight' => '0',
 ))
+->values(array(
+  'name' => 'i18nBlocksTestCase',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/i18n/i18n_block/i18n_block.test',
+  'module' => 'i18n_block',
+  'weight' => '0',
+))
+->values(array(
+  'name' => 'i18nFieldTestCase',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/i18n/i18n_field/i18n_field.test',
+  'module' => 'i18n_field',
+  'weight' => '0',
+))
+->values(array(
+  'name' => 'i18nForumTestCase',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/i18n/i18n_forum/i18n_forum.test',
+  'module' => 'i18n_forum',
+  'weight' => '0',
+))
+->values(array(
+  'name' => 'i18nMenuTestCase',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/i18n/i18n_menu/i18n_menu.test',
+  'module' => 'i18n_menu',
+  'weight' => '0',
+))
+->values(array(
+  'name' => 'I18nNodeTestCase',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/i18n/i18n_node/i18n_node.test',
+  'module' => 'i18n_node',
+  'weight' => '0',
+))
+->values(array(
+  'name' => 'i18nPathTestCase',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/i18n/i18n_path/i18n_path.test',
+  'module' => 'i18n_path',
+  'weight' => '0',
+))
+->values(array(
+  'name' => 'I18NSelectAdminViewsAjax',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/i18n/i18n_select/i18n_select.test',
+  'module' => 'i18n_select',
+  'weight' => '0',
+))
+->values(array(
+  'name' => 'i18nSelectTestCase',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/i18n/i18n_select/i18n_select.test',
+  'module' => 'i18n_select',
+  'weight' => '0',
+))
+->values(array(
+  'name' => 'i18nStringTestCase',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/i18n/i18n_string/i18n_string.test',
+  'module' => 'i18n_string',
+  'weight' => '0',
+))
+->values(array(
+  'name' => 'i18nSyncTestCase',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/i18n/i18n_sync/i18n_sync.test',
+  'module' => 'i18n_sync',
+  'weight' => '0',
+))
+->values(array(
+  'name' => 'i18nTaxonomyTestCase',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/i18n/i18n_taxonomy/i18n_taxonomy.test',
+  'module' => 'i18n_taxonomy',
+  'weight' => '0',
+))
+->values(array(
+  'name' => 'I18nVariableLanguageRealm',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/i18n/i18n_variable/i18n_variable.class.inc',
+  'module' => 'i18n_variable',
+  'weight' => '0',
+))
+->values(array(
+  'name' => 'i18nVariableTestCase',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/i18n/i18n_variable/i18n_variable.test',
+  'module' => 'i18n_variable',
+  'weight' => '0',
+))
+->values(array(
+  'name' => 'i18n_block_object',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/i18n/i18n_block/i18n_block.inc',
+  'module' => 'i18n_block',
+  'weight' => '0',
+))
+->values(array(
+  'name' => 'i18n_field',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/i18n/i18n_field/i18n_field.inc',
+  'module' => 'i18n_field',
+  'weight' => '0',
+))
+->values(array(
+  'name' => 'i18n_field_base',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/i18n/i18n_field/i18n_field.inc',
+  'module' => 'i18n_field',
+  'weight' => '0',
+))
+->values(array(
+  'name' => 'i18n_field_instance',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/i18n/i18n_field/i18n_field.inc',
+  'module' => 'i18n_field',
+  'weight' => '0',
+))
+->values(array(
+  'name' => 'i18n_menu_link',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/i18n/i18n_menu/i18n_menu.inc',
+  'module' => 'i18n_menu',
+  'weight' => '0',
+))
+->values(array(
+  'name' => 'i18n_menu_link_translation_set',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/i18n/i18n_menu/i18n_menu.inc',
+  'module' => 'i18n_menu',
+  'weight' => '0',
+))
+->values(array(
+  'name' => 'i18n_object_wrapper',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/i18n/i18n_object.inc',
+  'module' => 'i18n',
+  'weight' => '0',
+))
+->values(array(
+  'name' => 'i18n_string_object',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/i18n/i18n_string/i18n_string.inc',
+  'module' => 'i18n_string',
+  'weight' => '0',
+))
+->values(array(
+  'name' => 'i18n_string_object_wrapper',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/i18n/i18n_string/i18n_string.inc',
+  'module' => 'i18n_string',
+  'weight' => '0',
+))
+->values(array(
+  'name' => 'i18n_string_textgroup_cached',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/i18n/i18n_string/i18n_string.inc',
+  'module' => 'i18n_string',
+  'weight' => '0',
+))
+->values(array(
+  'name' => 'i18n_string_textgroup_default',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/i18n/i18n_string/i18n_string.inc',
+  'module' => 'i18n_string',
+  'weight' => '0',
+))
+->values(array(
+  'name' => 'i18n_taxonomy_term',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/i18n/i18n_taxonomy/i18n_taxonomy.inc',
+  'module' => 'i18n_taxonomy',
+  'weight' => '0',
+))
+->values(array(
+  'name' => 'i18n_taxonomy_translation_set',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/i18n/i18n_taxonomy/i18n_taxonomy.inc',
+  'module' => 'i18n_taxonomy',
+  'weight' => '0',
+))
+->values(array(
+  'name' => 'i18n_translation_set',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/i18n/i18n_translation/i18n_translation.inc',
+  'module' => 'i18n_translation',
+  'weight' => '0',
+))
 ->values(array(
   'name' => 'ILPhoneNumberTestCase',
   'type' => 'class',
@@ -50108,6 +54964,13 @@
   'module' => '',
   'weight' => '0',
 ))
+->values(array(
+  'name' => 'InvalidQueryConditionOperatorException',
+  'type' => 'class',
+  'filename' => 'includes/database/database.inc',
+  'module' => '',
+  'weight' => '0',
+))
 ->values(array(
   'name' => 'IPAddressBlockingTestCase',
   'type' => 'class',
@@ -50137,72 +55000,86 @@
   'weight' => '0',
 ))
 ->values(array(
-  'name' => 'LinkAttributeCrudTest',
+  'name' => 'LinkBaseTestClass',
   'type' => 'class',
-  'filename' => 'sites/all/modules/link/tests/link.attribute.test',
+  'filename' => 'sites/all/modules/link/tests/LinkBaseTestClass.test',
   'module' => 'link',
   'weight' => '0',
 ))
 ->values(array(
-  'name' => 'LinkBaseTestClass',
+  'name' => 'LinkConvertInternalPathsTest',
   'type' => 'class',
-  'filename' => 'sites/all/modules/link/tests/link.test',
+  'filename' => 'sites/all/modules/link/tests/LinkConvertInternalPathsTest.test',
   'module' => 'link',
   'weight' => '0',
 ))
 ->values(array(
-  'name' => 'LinkContentCrudTest',
+  'name' => 'LinkDefaultProtocolTest',
   'type' => 'class',
-  'filename' => 'sites/all/modules/link/tests/link.crud.test',
+  'filename' => 'sites/all/modules/link/tests/LinkDefaultProtocolTest.test',
   'module' => 'link',
   'weight' => '0',
 ))
 ->values(array(
-  'name' => 'LinkTokenTest',
+  'name' => 'LinkEntityTokenTest',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/link/tests/LinkEntityTokenTest.test',
+  'module' => 'link',
+  'weight' => '0',
+))
+->values(array(
+  'name' => 'LinkFieldAttributesTest',
   'type' => 'class',
-  'filename' => 'sites/all/modules/link/tests/link.token.test',
+  'filename' => 'sites/all/modules/link/tests/LinkFieldAttributesTest.test',
   'module' => 'link',
   'weight' => '0',
 ))
 ->values(array(
-  'name' => 'LinkUITest',
+  'name' => 'LinkFieldCrudTest',
   'type' => 'class',
-  'filename' => 'sites/all/modules/link/tests/link.crud_browser.test',
+  'filename' => 'sites/all/modules/link/tests/LinkFieldCrudTest.test',
   'module' => 'link',
   'weight' => '0',
 ))
 ->values(array(
-  'name' => 'LinkValidateSpecificURL',
+  'name' => 'LinkFieldValidateTest',
   'type' => 'class',
-  'filename' => 'sites/all/modules/link/tests/link.validate.test',
+  'filename' => 'sites/all/modules/link/tests/LinkFieldValidateTest.test',
   'module' => 'link',
   'weight' => '0',
 ))
 ->values(array(
-  'name' => 'LinkValidateTest',
+  'name' => 'LinkPathPrefixesTest',
   'type' => 'class',
-  'filename' => 'sites/all/modules/link/tests/link.validate.test',
+  'filename' => 'sites/all/modules/link/tests/LinkPathPrefixesTest.test',
   'module' => 'link',
   'weight' => '0',
 ))
 ->values(array(
-  'name' => 'LinkValidateTestCase',
+  'name' => 'LinkSanitizeTest',
   'type' => 'class',
-  'filename' => 'sites/all/modules/link/tests/link.validate.test',
+  'filename' => 'sites/all/modules/link/tests/LinkSanitizeTest.test',
   'module' => 'link',
   'weight' => '0',
 ))
 ->values(array(
-  'name' => 'LinkValidateTestNews',
+  'name' => 'LinkTokenTest',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/link/tests/LinkTokenTest.test',
+  'module' => 'link',
+  'weight' => '0',
+))
+->values(array(
+  'name' => 'LinkUnitTestCase',
   'type' => 'class',
-  'filename' => 'sites/all/modules/link/tests/link.validate.test',
+  'filename' => 'sites/all/modules/link/tests/LinkUnitTestCase.test',
   'module' => 'link',
   'weight' => '0',
 ))
 ->values(array(
-  'name' => 'LinkValidateUrlLight',
+  'name' => 'LinkValidationApiTest',
   'type' => 'class',
-  'filename' => 'sites/all/modules/link/tests/link.validate.test',
+  'filename' => 'sites/all/modules/link/tests/LinkValidationApiTest.test',
   'module' => 'link',
   'weight' => '0',
 ))
@@ -50360,6 +55237,13 @@
   'module' => 'locale',
   'weight' => '0',
 ))
+->values(array(
+  'name' => 'LocaleStringIsSafeTest',
+  'type' => 'class',
+  'filename' => 'modules/locale/locale.test',
+  'module' => 'locale',
+  'weight' => '0',
+))
 ->values(array(
   'name' => 'LocaleTranslationFunctionalTest',
   'type' => 'class',
@@ -50451,6 +55335,13 @@
   'module' => 'simpletest',
   'weight' => '0',
 ))
+->values(array(
+  'name' => 'MenuDataIntegrityTestCase',
+  'type' => 'class',
+  'filename' => 'modules/simpletest/tests/menu.test',
+  'module' => 'simpletest',
+  'weight' => '0',
+))
 ->values(array(
   'name' => 'MenuLinksUnitTestCase',
   'type' => 'class',
@@ -50528,6 +55419,13 @@
   'module' => '',
   'weight' => '0',
 ))
+->values(array(
+  'name' => 'MFWTestCase',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/multiupload_filefield_widget/multiupload_filefield_widget.test',
+  'module' => 'multiupload_filefield_widget',
+  'weight' => '0',
+))
 ->values(array(
   'name' => 'MigrateEmailFieldHandler',
   'type' => 'class',
@@ -50568,7 +55466,7 @@
   'type' => 'class',
   'filename' => 'sites/all/modules/entity_translation/includes/translation.migrate.inc',
   'module' => 'entity_translation',
-  'weight' => '11',
+  'weight' => '0',
 ))
 ->values(array(
   'name' => 'MockTestConnection',
@@ -50598,6 +55496,13 @@
   'module' => 'simpletest',
   'weight' => '0',
 ))
+->values(array(
+  'name' => 'ModuleProvidedThemeEngineTestCase',
+  'type' => 'class',
+  'filename' => 'modules/simpletest/tests/theme.test',
+  'module' => 'simpletest',
+  'weight' => '0',
+))
 ->values(array(
   'name' => 'ModuleRequiredTestCase',
   'type' => 'class',
@@ -50652,7 +55557,7 @@
   'type' => 'class',
   'filename' => 'modules/block/block.test',
   'module' => 'block',
-  'weight' => '-5',
+  'weight' => '0',
 ))
 ->values(array(
   'name' => 'NLPhoneNumberTestCase',
@@ -50787,6 +55692,13 @@
   'module' => 'node',
   'weight' => '0',
 ))
+->values(array(
+  'name' => 'NodeMultiByteUtf8Test',
+  'type' => 'class',
+  'filename' => 'modules/node/node.test',
+  'module' => 'node',
+  'weight' => '0',
+))
 ->values(array(
   'name' => 'NodePageCacheTest',
   'type' => 'class',
@@ -50808,6 +55720,13 @@
   'module' => 'node',
   'weight' => '0',
 ))
+->values(array(
+  'name' => 'NodeReferenceFormTest',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/references/node_reference/node_reference.test',
+  'module' => 'node_reference',
+  'weight' => '0',
+))
 ->values(array(
   'name' => 'NodeRevisionPermissionsTestCase',
   'type' => 'class',
@@ -50897,7 +55816,7 @@
   'type' => 'class',
   'filename' => 'modules/block/block.test',
   'module' => 'block',
-  'weight' => '-5',
+  'weight' => '0',
 ))
 ->values(array(
   'name' => 'NumberFieldTestCase',
@@ -51368,6 +56287,41 @@
   'module' => 'rdf',
   'weight' => '0',
 ))
+->values(array(
+  'name' => 'references_handler_argument',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/references/views/references_handler_argument.inc',
+  'module' => 'references',
+  'weight' => '0',
+))
+->values(array(
+  'name' => 'references_handler_relationship',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/references/views/references_handler_relationship.inc',
+  'module' => 'references',
+  'weight' => '0',
+))
+->values(array(
+  'name' => 'references_plugin_display',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/references/views/references_plugin_display.inc',
+  'module' => 'references',
+  'weight' => '0',
+))
+->values(array(
+  'name' => 'references_plugin_row_fields',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/references/views/references_plugin_row_fields.inc',
+  'module' => 'references',
+  'weight' => '0',
+))
+->values(array(
+  'name' => 'references_plugin_style',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/references/views/references_plugin_style.inc',
+  'module' => 'references',
+  'weight' => '0',
+))
 ->values(array(
   'name' => 'RegistryParseFilesTestCase',
   'type' => 'class',
@@ -51459,6 +56413,13 @@
   'module' => 'simpletest',
   'weight' => '0',
 ))
+->values(array(
+  'name' => 'RequestSanitizerTest',
+  'type' => 'class',
+  'filename' => 'modules/simpletest/tests/request_sanitizer.test',
+  'module' => 'simpletest',
+  'weight' => '0',
+))
 ->values(array(
   'name' => 'RetrieveFileTestCase',
   'type' => 'class',
@@ -51473,6 +56434,13 @@
   'module' => 'phone',
   'weight' => '0',
 ))
+->values(array(
+  'name' => 'SanitizerTestRequest',
+  'type' => 'class',
+  'filename' => 'modules/simpletest/tests/request_sanitizer.test',
+  'module' => 'simpletest',
+  'weight' => '0',
+))
 ->values(array(
   'name' => 'SchemaCache',
   'type' => 'class',
@@ -51704,6 +56672,13 @@
   'module' => 'simpletest',
   'weight' => '0',
 ))
+->values(array(
+  'name' => 'SessionUnitTestCase',
+  'type' => 'class',
+  'filename' => 'modules/simpletest/tests/session.test',
+  'module' => 'simpletest',
+  'weight' => '0',
+))
 ->values(array(
   'name' => 'SGPhoneNumberTestCase',
   'type' => 'class',
@@ -51893,6 +56868,13 @@
   'module' => 'system',
   'weight' => '0',
 ))
+->values(array(
+  'name' => 'SystemArchiverTest',
+  'type' => 'class',
+  'filename' => 'modules/system/system.test',
+  'module' => 'system',
+  'weight' => '0',
+))
 ->values(array(
   'name' => 'SystemAuthorizeCase',
   'type' => 'class',
@@ -51991,6 +56973,20 @@
   'module' => 'taxonomy',
   'weight' => '0',
 ))
+->values(array(
+  'name' => 'TaxonomyPrivateFileTestCase',
+  'type' => 'class',
+  'filename' => 'modules/taxonomy/taxonomy.test',
+  'module' => 'taxonomy',
+  'weight' => '0',
+))
+->values(array(
+  'name' => 'TaxonomyQueryAlterTestCase',
+  'type' => 'class',
+  'filename' => 'modules/taxonomy/taxonomy.test',
+  'module' => 'taxonomy',
+  'weight' => '0',
+))
 ->values(array(
   'name' => 'TaxonomyRSSTestCase',
   'type' => 'class',
@@ -51998,6 +56994,13 @@
   'module' => 'taxonomy',
   'weight' => '0',
 ))
+->values(array(
+  'name' => 'TaxonomyTermCacheUsageTestCase',
+  'type' => 'class',
+  'filename' => 'modules/taxonomy/taxonomy.test',
+  'module' => 'taxonomy',
+  'weight' => '0',
+))
 ->values(array(
   'name' => 'TaxonomyTermController',
   'type' => 'class',
@@ -52192,21 +57195,21 @@
   'type' => 'class',
   'filename' => 'sites/all/modules/title/tests/TitleAdminSettingsTestCase.test',
   'module' => 'title',
-  'weight' => '100',
+  'weight' => '0',
 ))
 ->values(array(
   'name' => 'TitleFieldReplacementTestCase',
   'type' => 'class',
   'filename' => 'sites/all/modules/title/tests/TitleFieldReplacementTestCase.test',
   'module' => 'title',
-  'weight' => '100',
+  'weight' => '0',
 ))
 ->values(array(
   'name' => 'TitleTranslationTestCase',
   'type' => 'class',
   'filename' => 'sites/all/modules/title/tests/TitleTranslationTestCase.test',
   'module' => 'title',
-  'weight' => '100',
+  'weight' => '0',
 ))
 ->values(array(
   'name' => 'TokenReplaceTestCase',
@@ -52418,6 +57421,13 @@
   'module' => '',
   'weight' => '0',
 ))
+->values(array(
+  'name' => 'UpdateQuery_mysql',
+  'type' => 'class',
+  'filename' => 'includes/database/mysql/query.inc',
+  'module' => '',
+  'weight' => '0',
+))
 ->values(array(
   'name' => 'UpdateQuery_pgsql',
   'type' => 'class',
@@ -52516,6 +57526,13 @@
   'module' => 'simpletest',
   'weight' => '0',
 ))
+->values(array(
+  'name' => 'UrlIsExternalUnitTest',
+  'type' => 'class',
+  'filename' => 'modules/simpletest/tests/common.test',
+  'module' => 'simpletest',
+  'weight' => '0',
+))
 ->values(array(
   'name' => 'UserAccountLinksUnitTests',
   'type' => 'class',
@@ -52579,6 +57596,13 @@
   'module' => 'user',
   'weight' => '0',
 ))
+->values(array(
+  'name' => 'UserEditRebuildTestCase',
+  'type' => 'class',
+  'filename' => 'modules/user/user.test',
+  'module' => 'user',
+  'weight' => '0',
+))
 ->values(array(
   'name' => 'UserEditTestCase',
   'type' => 'class',
@@ -52724,63 +57748,63 @@
   'type' => 'interface',
   'filename' => 'sites/all/modules/variable/variable_realm/variable_realm.class.inc',
   'module' => 'variable_realm',
-  'weight' => '-1000',
+  'weight' => '0',
 ))
 ->values(array(
   'name' => 'VariableRealmDefaultController',
   'type' => 'class',
   'filename' => 'sites/all/modules/variable/variable_realm/variable_realm.class.inc',
   'module' => 'variable_realm',
-  'weight' => '-1000',
+  'weight' => '0',
 ))
 ->values(array(
   'name' => 'VariableRealmDefaultStore',
   'type' => 'class',
   'filename' => 'sites/all/modules/variable/variable_realm/variable_realm.class.inc',
   'module' => 'variable_realm',
-  'weight' => '-1000',
+  'weight' => '0',
 ))
 ->values(array(
   'name' => 'VariableRealmGlobalStore',
   'type' => 'class',
   'filename' => 'sites/all/modules/variable/variable_realm/variable_realm.class.inc',
   'module' => 'variable_realm',
-  'weight' => '-1000',
+  'weight' => '0',
 ))
 ->values(array(
   'name' => 'VariableRealmHooks',
   'type' => 'interface',
   'filename' => 'sites/all/modules/variable/variable_realm/variable_realm.class.inc',
   'module' => 'variable_realm',
-  'weight' => '-1000',
+  'weight' => '0',
 ))
 ->values(array(
   'name' => 'VariableRealmStoreInterface',
   'type' => 'interface',
   'filename' => 'sites/all/modules/variable/variable_realm/variable_realm.class.inc',
   'module' => 'variable_realm',
-  'weight' => '-1000',
+  'weight' => '0',
 ))
 ->values(array(
   'name' => 'VariableRealmUnionController',
   'type' => 'class',
   'filename' => 'sites/all/modules/variable/variable_realm/variable_realm_union.class.inc',
   'module' => 'variable_realm',
-  'weight' => '-1000',
+  'weight' => '0',
 ))
 ->values(array(
   'name' => 'VariableStoreRealmStore',
   'type' => 'class',
   'filename' => 'sites/all/modules/variable/variable_store/variable_store.class.inc',
   'module' => 'variable_store',
-  'weight' => '-1000',
+  'weight' => '0',
 ))
 ->values(array(
   'name' => 'VariableStoreTestCase',
   'type' => 'class',
   'filename' => 'sites/all/modules/variable/variable_store/variable_store.test',
   'module' => 'variable_store',
-  'weight' => '-1000',
+  'weight' => '0',
 ))
 ->values(array(
   'name' => 'VariableTestCase',
@@ -52801,7 +57825,7 @@
   'type' => 'class',
   'filename' => 'sites/all/modules/views/tests/views_ajax.test',
   'module' => 'views',
-  'weight' => '10',
+  'weight' => '0',
 ))
 ->values(array(
   'name' => 'ViewsAnalyzeTest',
@@ -52838,6 +57862,13 @@
   'module' => 'views',
   'weight' => '0',
 ))
+->values(array(
+  'name' => 'ViewsCloneTest',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/views/tests/views_clone.test',
+  'module' => 'views',
+  'weight' => '0',
+))
 ->values(array(
   'name' => 'ViewsExposedFormTest',
   'type' => 'class',
@@ -52887,13 +57918,6 @@
   'module' => 'views',
   'weight' => '0',
 ))
-->values(array(
-  'name' => 'ViewsHandlerArgumentStringTest',
-  'type' => 'class',
-  'filename' => 'sites/all/modules/views/tests/handlers/views_handler_argument_string.test',
-  'module' => 'views',
-  'weight' => '0',
-))
 ->values(array(
   'name' => 'ViewsHandlerFieldBooleanTest',
   'type' => 'class',
@@ -52955,7 +57979,7 @@
   'type' => 'class',
   'filename' => 'sites/all/modules/views/tests/handlers/views_handler_field_file_extension.test',
   'module' => 'views',
-  'weight' => '10',
+  'weight' => '0',
 ))
 ->values(array(
   'name' => 'ViewsHandlerFilterCombineTest',
@@ -53013,6 +58037,20 @@
   'module' => 'views',
   'weight' => '0',
 ))
+->values(array(
+  'name' => 'ViewsHandlerFilterTest',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/views/tests/views_handler_filter.test',
+  'module' => 'views',
+  'weight' => '0',
+))
+->values(array(
+  'name' => 'ViewsHandlerManyToOneTest',
+  'type' => 'class',
+  'filename' => 'sites/all/modules/views/tests/handlers/views_handler_manytoone.test',
+  'module' => 'views',
+  'weight' => '0',
+))
 ->values(array(
   'name' => 'ViewsHandlerRelationshipNodeTermDataTest',
   'type' => 'class',
@@ -53053,7 +58091,7 @@
   'type' => 'class',
   'filename' => 'sites/all/modules/views/tests/handlers/views_handlers.test',
   'module' => 'views',
-  'weight' => '10',
+  'weight' => '0',
 ))
 ->values(array(
   'name' => 'ViewsHandlerTestFileSize',
@@ -53093,8 +58131,8 @@
 ->values(array(
   'name' => 'ViewsPagerTestCase',
   'type' => 'class',
-  'filename' => 'sites/all/modules/date/tests/date_views_pager.test',
-  'module' => 'date',
+  'filename' => 'sites/all/modules/date/date_views/tests/date_views_pager.test',
+  'module' => 'date_views',
   'weight' => '0',
 ))
 ->values(array(
@@ -53168,7 +58206,7 @@
   'weight' => '0',
 ))
 ->values(array(
-  'name' => 'viewsUiGroupbyTestCase',
+  'name' => 'ViewsUiGroupbyTestCase',
   'type' => 'class',
   'filename' => 'sites/all/modules/views/tests/views_groupby.test',
   'module' => 'views',
@@ -53277,7 +58315,7 @@
   'type' => 'class',
   'filename' => 'sites/all/modules/title/views/views_handler_title_field.inc',
   'module' => 'title',
-  'weight' => '100',
+  'weight' => '0',
 ))
 ->values(array(
   'name' => 'XMLRPCBasicTestCase',
@@ -53338,7 +58376,7 @@
 ))
 ->values(array(
   'filename' => 'includes/ajax.inc',
-  'hash' => 'a22c8f7345c1f714ea40bbaa1385fa0e3763b389c82656cf6ff3e4d051532ee4',
+  'hash' => '8d5ebead219c48d5929ee6a5a178a331471ee6ceb38653094514c952457eaebd',
 ))
 ->values(array(
   'filename' => 'includes/archiver.inc',
@@ -53346,11 +58384,11 @@
 ))
 ->values(array(
   'filename' => 'includes/authorize.inc',
-  'hash' => '6d64d8c21aa01eb12fc29918732e4df6b871ed06e5d41373cb95c197ed661d13',
+  'hash' => '3eb984facfe9e0228e4d01ece6345cf33dfcd2fcc9c291b15f2e4f782a6029a9',
 ))
 ->values(array(
   'filename' => 'includes/batch.inc',
-  'hash' => '1fe00f9a25481cd43e19fbd6bd37b7ff9dca79f8405ec3e55ffb011be12ec2c3',
+  'hash' => '756b66e69a05b74629dee0ff175385813b27eb635aa49380edd4a65532998825',
 ))
 ->values(array(
   'filename' => 'includes/batch.queue.inc',
@@ -53358,7 +58396,7 @@
 ))
 ->values(array(
   'filename' => 'includes/bootstrap.inc',
-  'hash' => '245deaa370fa492dae401e2eee215f771f9ffbba14c1ff50631a6a4b2b3c771e',
+  'hash' => '7a9ea059e58578df97a205f0b3f0929cfe469e68addb4331a8dd4b54c2c407ec',
 ))
 ->values(array(
   'filename' => 'includes/cache-install.inc',
@@ -53366,15 +58404,15 @@
 ))
 ->values(array(
   'filename' => 'includes/cache.inc',
-  'hash' => 'ee0bf13c7e067695dffcb9ade3b79fea82a3a8db9e9a422ebfcc91c383aa4b4c',
+  'hash' => '033c9bf2555dba29382b077f78cc00c82fd7f42a959ba31b710adddf6fdf24fe',
 ))
 ->values(array(
   'filename' => 'includes/common.inc',
-  'hash' => 'd64557e1027136d80e66c329133336412c8301b48c6703943494cff1309f934c',
+  'hash' => '3b30067db24a5ba03a5a2151c6616590ffb8aba4073f15d2398268ac860d8083',
 ))
 ->values(array(
   'filename' => 'includes/database/database.inc',
-  'hash' => '27f874fb21e1a85c86e0317669e2e26c1c6611a5e913c5bbce4c7aa62734edfe',
+  'hash' => '9f79732882753fda10b4c0a3fc9fe1cb7f4cdacef743a28664d8af6a855ac8b7',
 ))
 ->values(array(
   'filename' => 'includes/database/log.inc',
@@ -53382,7 +58420,7 @@
 ))
 ->values(array(
   'filename' => 'includes/database/mysql/database.inc',
-  'hash' => 'f021edd0e2b5e315336eb6b5e481b9516c12de78dff2c468be3d7fd0d3672665',
+  'hash' => 'fb808762239838f920ffeb74a89db5894fb46131d8bb4c65a0caff82358562c6',
 ))
 ->values(array(
   'filename' => 'includes/database/mysql/install.inc',
@@ -53390,51 +58428,51 @@
 ))
 ->values(array(
   'filename' => 'includes/database/mysql/query.inc',
-  'hash' => '0212a871646c223bf77aa26b945c77a8974855373967b5fb9fdc09f8a1de88a6',
+  'hash' => 'cddf695f7dbd483591f93af805e7118a04eac3f21c0105326642c6463587670c',
 ))
 ->values(array(
   'filename' => 'includes/database/mysql/schema.inc',
-  'hash' => '6f43ac87508f868fe38ee09994fc18d69915bada0237f8ac3b717cafe8f22c6b',
+  'hash' => 'c34aa7b7d2cb4662965497ff86f242224116bbd9b72ca6287c12039a65feb72e',
 ))
 ->values(array(
   'filename' => 'includes/database/pgsql/database.inc',
-  'hash' => 'd737f95947d78eb801e8ec8ca8b01e72d2e305924efce8abca0a98c1b5264cff',
+  'hash' => 'f53cb5779d702dde7aefacf8ee25d67cac48d3b94cd8d64057d42c61c5713526',
 ))
 ->values(array(
   'filename' => 'includes/database/pgsql/install.inc',
-  'hash' => '585b80c5bbd6f134bff60d06397f15154657a577d4da8d1b181858905f09dea5',
+  'hash' => '39587f26a9e054afaab2064d996af910f1b201ef1c6b82938ef130e4ff8c6aab',
 ))
 ->values(array(
   'filename' => 'includes/database/pgsql/query.inc',
-  'hash' => '0df57377686c921e722a10b49d5e433b131176c8059a4ace4680964206fc14b4',
+  'hash' => 'bb04ae9239c2179aeb3ef0a55596ee5ae0ddfb5dfd701896c41bf8c42a62280b',
 ))
 ->values(array(
   'filename' => 'includes/database/pgsql/schema.inc',
-  'hash' => '1588daadfa53506aa1f5d94572162a45a46dc3ceabdd0e2f224532ded6508403',
+  'hash' => '0eb77d1d8b30988ba89cbacbcbbc3b66d8ab98b8be8dfa4208a50a45ee77b6e2',
 ))
 ->values(array(
   'filename' => 'includes/database/pgsql/select.inc',
-  'hash' => 'fd4bba7887c1dc6abc8f080fc3a76c01d92ea085434e355dc1ecb50d8743c22d',
+  'hash' => '1e509bc97c58223750e8ea735145b316827e36f43c07b946003e41f5bca23659',
 ))
 ->values(array(
   'filename' => 'includes/database/prefetch.inc',
-  'hash' => 'b5b207a66a69ecb52ee4f4459af16a7b5eabedc87254245f37cc33bebb61c0fb',
+  'hash' => '026b6b272a91bae5d9325477530167e737b29bf988553a28cdf72fc1d1ea57ed',
 ))
 ->values(array(
   'filename' => 'includes/database/query.inc',
-  'hash' => '4016a397f10f071cac338fd0a9b004296106e42ab2b9db8c7ff0db341658e88f',
+  'hash' => 'f4792f623339ba9097e2af5a4785a3d7d836c831af3894506ddacaa124dd892c',
 ))
 ->values(array(
   'filename' => 'includes/database/schema.inc',
-  'hash' => '9fecfd13fc1d4056a62d385840dccd052ea0e184dc47101f4bd8f57f10b68174',
+  'hash' => 'da9d48f26c3a47a91f1eb2fa216e9deab2ec42ba10c76039623ce7b6bc984a06',
 ))
 ->values(array(
   'filename' => 'includes/database/select.inc',
-  'hash' => '5e9cdc383564ba86cb9dcad0046990ce15415a3000e4f617d6e0f30a205b852c',
+  'hash' => '72eeb85a2739c56d25e359c17847d3094e1a67164a2eb85e70b5260cb7d5c79d',
 ))
 ->values(array(
   'filename' => 'includes/database/sqlite/database.inc',
-  'hash' => '4281c6e80932560ecbeb07d1757efd133e8699a6fccf58c27a55df0f71794622',
+  'hash' => '22e80c5a02c143eace3628e196dded78552e6f2889d1989d052e2a37f46e7f0f',
 ))
 ->values(array(
   'filename' => 'includes/database/sqlite/install.inc',
@@ -53442,11 +58480,11 @@
 ))
 ->values(array(
   'filename' => 'includes/database/sqlite/query.inc',
-  'hash' => 'f33ab1b6350736a231a4f3f93012d3aac4431ac4e5510fb3a015a5aa6cab8303',
+  'hash' => '5d4dc3ac34cb2dbc0293471e85e37c890da3da6cd8c0c540c6f33313e4c0cbe9',
 ))
 ->values(array(
   'filename' => 'includes/database/sqlite/schema.inc',
-  'hash' => 'cd829700205a8574f8b9d88cd1eaf909519c64754c6f84d6c62b5d21f5886f8d',
+  'hash' => '7bf3af0a255f374ba0c5db175548e836d953b903d31e1adb1e4d3df40d6fdb98',
 ))
 ->values(array(
   'filename' => 'includes/database/sqlite/select.inc',
@@ -53454,27 +58492,31 @@
 ))
 ->values(array(
   'filename' => 'includes/date.inc',
-  'hash' => '18c047be64f201e16d189f1cc47ed9dcf0a145151b1ee187e90511b24e5d2b36',
+  'hash' => '1de2c25e3b67a9919fc6c8061594442b6fb2cdd3a48ddf1591ee3aa98484b737',
 ))
 ->values(array(
   'filename' => 'includes/entity.inc',
-  'hash' => 'e4fc9ff21b165a804d7ac4f036b3b5bd1d3c73da7029bf3f761d4bdee9ae3c96',
+  'hash' => 'd548abea63b68b5f59bbb59cf9ceeda53a7e96949cbbfe25ba3fce08f0a7c0e9',
 ))
 ->values(array(
   'filename' => 'includes/errors.inc',
-  'hash' => '72cc29840b24830df98a5628286b4d82738f2abbb78e69b4980310ff12062668',
+  'hash' => '577e66843ac3ac0d6cb9d0808ff48d9e83acad0faeffad5dfe1ba09bf2631b97',
 ))
 ->values(array(
   'filename' => 'includes/file.inc',
-  'hash' => '9de0398940bf2db560902736f1832d8b72b3e8b49dbbaba5f94c9331425ee04a',
+  'hash' => 'd0b26c57edd76096e28e3bb98a24129bf6070de1523106b03b53803ed883382b',
 ))
 ->values(array(
   'filename' => 'includes/file.mimetypes.inc',
   'hash' => '33266e837f4ce076378e7e8cef6c5af46446226ca4259f83e13f605856a7f147',
 ))
+->values(array(
+  'filename' => 'includes/file.phar.inc',
+  'hash' => '544df23f736ce49f458033d6515a301a8ca1c7a7d1bfd3f388caef910534abb3',
+))
 ->values(array(
   'filename' => 'includes/filetransfer/filetransfer.inc',
-  'hash' => 'fdea8ae48345ec91885ac48a9bc53daf87616271472bb7c29b7e3ce219b22034',
+  'hash' => '48a9cbcd6651a7fbf9fca9707ebc9fc79be36c33cd2f8c272b375123ce3f4dc3',
 ))
 ->values(array(
   'filename' => 'includes/filetransfer/ftp.inc',
@@ -53490,7 +58532,7 @@
 ))
 ->values(array(
   'filename' => 'includes/form.inc',
-  'hash' => '9b37fe7e5d04b25604bbc63abb6b6d332be14926011533b4449de52d45a86765',
+  'hash' => 'c6f9db191716ae0ea71bd79951e55344825fbc600e8e07057557593d614f6f9c',
 ))
 ->values(array(
   'filename' => 'includes/graph.inc',
@@ -53502,15 +58544,15 @@
 ))
 ->values(array(
   'filename' => 'includes/install.core.inc',
-  'hash' => '733ec6fac8e51747d1c83f266a42e4a0cb6bf31ac50f17f06e37c9e0865f4a38',
+  'hash' => 'b6f3e5d9bd4154f840253e34aed131bb401deb4fcb3421b379851231b8b4c149',
 ))
 ->values(array(
   'filename' => 'includes/install.inc',
-  'hash' => '781c54771c14b067bb38d222096f981121d479222fbdea9c433405de561a2881',
+  'hash' => 'dc7b5c97803df3e8e80e62984fe820de53ebc4141b645f66f6344f51ef4d5b19',
 ))
 ->values(array(
   'filename' => 'includes/iso.inc',
-  'hash' => '0ce4c225edcfa9f037703bc7dd09d4e268a69bcc90e55da0a3f04c502bd2f349',
+  'hash' => '09f14cce40153fa48e24a7daa44185c09ec9f56a638b5e56e9390c67ec5aaec8',
 ))
 ->values(array(
   'filename' => 'includes/json-encode.inc',
@@ -53522,7 +58564,7 @@
 ))
 ->values(array(
   'filename' => 'includes/locale.inc',
-  'hash' => 'f8a3ba7868698e9b43c2ceaebe2cbdcb92d6c68427e817a6e10a76b937b5a127',
+  'hash' => '3161313aaab94a956f855a2635d738806142b33f06734cdc3df81a3f3854fbdb',
 ))
 ->values(array(
   'filename' => 'includes/lock.inc',
@@ -53530,19 +58572,19 @@
 ))
 ->values(array(
   'filename' => 'includes/mail.inc',
-  'hash' => 'd9fb2b99025745cbb73ebcfc7ac12df100508b9273ce35c433deacf12dd6a13a',
+  'hash' => 'a7bef724e057f7410e42c8f33b00c9a0246a2ca2e856a113c9e20eecc49fc069',
 ))
 ->values(array(
   'filename' => 'includes/menu.inc',
-  'hash' => '2ecc6f990dc2d987425c680e27a4ddeec2e8376a2be408b00a144131f41a59ea',
+  'hash' => '9cbc6636d5c5f9c681eea9fd9c09973e2e29b66bca38420883b657f9e1c0800a',
 ))
 ->values(array(
   'filename' => 'includes/module.inc',
-  'hash' => 'a18bc92e5fc1f2a31a79eace8c6f2436bc15c8f0b332c8b7aaafa3a223746861',
+  'hash' => '75720e119c7fdc82bdefdd43e36661c990da6f69c1008e6f7997a6081590c8db',
 ))
 ->values(array(
   'filename' => 'includes/pager.inc',
-  'hash' => '6f9494b85c07a2cc3be4e54aff2d2757485238c476a7da084d25bde1d88be6d8',
+  'hash' => 'a596da575268e116c140b65e4ec98e4006c04a188f65a1c48b766b6ee276853f',
 ))
 ->values(array(
   'filename' => 'includes/password.inc',
@@ -53550,19 +58592,23 @@
 ))
 ->values(array(
   'filename' => 'includes/path.inc',
-  'hash' => '74bf05f3c68b0218730abf3e539fcf08b271959c8f4611940d05124f34a6a66f',
+  'hash' => 'e399fc0af1f25cebda4b6c471ab203db8abe1a0fe15e632f19e614f32d71821e',
 ))
 ->values(array(
   'filename' => 'includes/registry.inc',
-  'hash' => 'f47b20859f0fc80bf4bb2849a1282d6c54006957b69da0e5f4691de585ca4cdf',
+  'hash' => '2067cc87973e7af23428d3f41b8f8739d80092bc3c9e20b5a8858e481d03f22c',
+))
+->values(array(
+  'filename' => 'includes/request-sanitizer.inc',
+  'hash' => '770e8ece7b53d13e2b5ef99da02adb9a3d18071c6cd29eb01af30927cf749a73',
 ))
 ->values(array(
   'filename' => 'includes/session.inc',
-  'hash' => '7548621ae4c273179a76eba41aa58b740100613bc015ad388a5c30132b61e34b',
+  'hash' => '9981d139191b6a983f837e867058a376b62ae7cf5df607aee29e3e322a927b50',
 ))
 ->values(array(
   'filename' => 'includes/stream_wrappers.inc',
-  'hash' => '4f1feb774a8dbc04ca382fa052f59e58039c7261625f3df29987d6b31f08d92d',
+  'hash' => '3244dae1fa57557f8d0d805fc163830ac1263914587f652f009594a0fa51eeaf',
 ))
 ->values(array(
   'filename' => 'includes/tablesort.inc',
@@ -53570,7 +58616,7 @@
 ))
 ->values(array(
   'filename' => 'includes/theme.inc',
-  'hash' => '507932af124871dd2639ab8eafbbd68f962ef70f44ef1c4fd1a14daf04c53b5e',
+  'hash' => 'ae46daba6419ca613bc6a08ba4d7f9bbab9b19889937099d2e4c1737e9e7b2df',
 ))
 ->values(array(
   'filename' => 'includes/theme.maintenance.inc',
@@ -53586,11 +58632,11 @@
 ))
 ->values(array(
   'filename' => 'includes/unicode.inc',
-  'hash' => 'e18772dafe0f80eb139fcfc582fef1704ba9f730647057d4f4841d6a6e4066ca',
+  'hash' => '89636ce5847340fd19be319839b4203b0d4bbc3487973413d6de9b5f6f839222',
 ))
 ->values(array(
   'filename' => 'includes/update.inc',
-  'hash' => '77403195059de797422d9d9202f18548a38558995120c7f9ffb9bd044730a3bc',
+  'hash' => '25c30f1e61ef9c91a7bdeb37791c2215d9dc2ae07dba124722d783ca31bb01e7',
 ))
 ->values(array(
   'filename' => 'includes/updater.inc',
@@ -53606,11 +58652,11 @@
 ))
 ->values(array(
   'filename' => 'includes/xmlrpcs.inc',
-  'hash' => '741aa8d6fcc6c45a9409064f52351f7999b7c702d73def8da44de2567946598a',
+  'hash' => '925c4d5bf429ad9650f059a8862a100bd394dce887933f5b3e7e32309a51fd8e',
 ))
 ->values(array(
   'filename' => 'modules/aggregator/aggregator.test',
-  'hash' => '1288945ead1e0b250cb0f2d8bc5486ab1c67295b78b5f1ba0f77ade7bf1243b4',
+  'hash' => '6219c2fd0469320614567b1229c994bfb3ef8b321c04316df542d1ba936c9c1d',
 ))
 ->values(array(
   'filename' => 'modules/block/block.test',
@@ -53622,23 +58668,23 @@
 ))
 ->values(array(
   'filename' => 'modules/book/book.test',
-  'hash' => 'a75a4ec12f930d85adbf7c46d6a1a4ed1356657466874f21e9cc931b6cd41aa0',
+  'hash' => '6cec3afcb077db3d3fe4bcbfe2011555b69d5588f0c01f181c86305d20a33eae',
 ))
 ->values(array(
   'filename' => 'modules/color/color.test',
-  'hash' => '013806279bd47ceb2f82ca854b57f880ba21058f7a2592c422afae881a7f5d15',
+  'hash' => '9e05a4bbd51092c7fabe821fa1950a03347c4b2c0d15cdab91db0407b6e24b75',
 ))
 ->values(array(
   'filename' => 'modules/comment/comment.module',
-  'hash' => 'db858137ff6ce06d87cb3b8f5275bed90c33a6d9aa7d46e7a74524cc2f052309',
+  'hash' => '6fa14cedb32d94a5c23ead69bc59ebd3dea04ccde583dc429c38097ca5ff39cc',
 ))
 ->values(array(
   'filename' => 'modules/comment/comment.test',
-  'hash' => '0443a4dbc5aef3d64405a7cabf462c8c5e0b24517d89410d261027b85292cd4b',
+  'hash' => '570e35408ad9ca04d881bf2a4f1da6b28668dbb761e7616e8309b2d153d90e03',
 ))
 ->values(array(
   'filename' => 'modules/contact/contact.test',
-  'hash' => 'd49eedd71859fbb6ffa26b87226f640db56694c8f43c863c83d920cf3632f9ad',
+  'hash' => '655e8d5fe7536a972c2233e438a142166b15a118cc644e94b756c2814c375634',
 ))
 ->values(array(
   'filename' => 'modules/contextual/contextual.test',
@@ -53650,7 +58696,7 @@
 ))
 ->values(array(
   'filename' => 'modules/dblog/dblog.test',
-  'hash' => '11fbb8522b1c9dc7c85edba3aed7308a8891f26fc7292008822bea1b54722912',
+  'hash' => '87a38f90f57c8a7069e9b34d461049d41388981fe1e16a8c437f0ff12753702e',
 ))
 ->values(array(
   'filename' => 'modules/field/field.attach.inc',
@@ -53658,47 +58704,47 @@
 ))
 ->values(array(
   'filename' => 'modules/field/field.info.class.inc',
-  'hash' => 'cf18178e119d43897d3abd882ba3acc0cf59d1ad747663437c57b1ec4d0a4322',
+  'hash' => '31deca748d873bf78cc6b8c064fdecc5a3451a9d2e9a131bc8c204905029e31f',
 ))
 ->values(array(
   'filename' => 'modules/field/field.module',
-  'hash' => 'e9359f8cac64b2d81ac067d7da22972116dc10b9b346752a8ef8292943a958c9',
+  'hash' => '48b5b83f214a8d19e446f46c5d7a1cd35faa656ccb7b540f9f02462a440cacdd',
 ))
 ->values(array(
   'filename' => 'modules/field/modules/field_sql_storage/field_sql_storage.test',
-  'hash' => '315eedaf2022afc884c35efd3b7c400eddab6ea30bec91924bc82ab5cd3e79f2',
+  'hash' => '9eb6699cbaf9d8af5879551135ac3acf13b2c356c3792666a38e237db297a97c',
 ))
 ->values(array(
   'filename' => 'modules/field/modules/list/tests/list.test',
-  'hash' => '97e55bd49f6f4b0562d04aa3773b5ab9b35063aee05c8c7231780cdcf9c97714',
+  'hash' => '27dbff6becf419aab9652892e4ddcdf53000aa8699c3d5fc72c19af9a0ae52e6',
 ))
 ->values(array(
   'filename' => 'modules/field/modules/number/number.test',
-  'hash' => '9ccf835bbf80ff31b121286f6fbcf59cc42b622a51ab56b22362b2f55c656e18',
+  'hash' => '4392f6fadf67c7533725e12bbe15ee2624cd54158e153f42f6cad3c28144395e',
 ))
 ->values(array(
   'filename' => 'modules/field/modules/options/options.test',
-  'hash' => 'c71441020206b1587dece7296cca306a9f0fbd6e8f04dae272efc15ed3a38383',
+  'hash' => '9691cd4352c380e8dff0985b539bb3d69c20bc43663427a3d291c59395a87eed',
 ))
 ->values(array(
   'filename' => 'modules/field/modules/text/text.test',
-  'hash' => 'a1e5cb0fa8c0651c68d560d9bb7781463a84200f701b00b6e797a9ca792a7e42',
+  'hash' => 'e93177e4fdf4dda8958822410470cfe3c68eca413f1e0eba12e8c03b42acf634',
 ))
 ->values(array(
   'filename' => 'modules/field/tests/field.test',
-  'hash' => '5eaad7a933ef8ea05b958056492ce17858cd542111f0fe81dd1a5949ad8f966e',
+  'hash' => 'bb3abf8be54272b4e374bbfcd408694022a58a31354a4dfc99166846a68edbb4',
 ))
 ->values(array(
   'filename' => 'modules/field_ui/field_ui.test',
-  'hash' => 'ded58a83a37cf111834f68fde9c34cddc7f4d36b91f31281e41ed5220c65dac4',
+  'hash' => 'f535e5627c969e9083a63aaf72d4ac645e30709d7b87af15c6c3b870481f283a',
 ))
 ->values(array(
   'filename' => 'modules/file/tests/file.test',
-  'hash' => '51d79794cbe647b2f5635ca9193b4d63bb9f99db4d9074676a80c55582b02985',
+  'hash' => '6abb9228cc7caae3d1661f389377d3bbd2f590abed2214a1bc5e0860e857aaf3',
 ))
 ->values(array(
   'filename' => 'modules/filter/filter.test',
-  'hash' => '268488be9d8e6a4bfa906bbb5bbf1f0df5881c04a421cbefcd7aa4f05fb63ba0',
+  'hash' => 'b8aa5e6b832422c6ad5fe963898ec9526c814614f27ecccb67107ce194997d6a',
 ))
 ->values(array(
   'filename' => 'modules/forum/forum.test',
@@ -53710,31 +58756,31 @@
 ))
 ->values(array(
   'filename' => 'modules/image/image.test',
-  'hash' => '19459f5be2fb58058a984ef302d6f6defca20207324db25726d06a7743cc2960',
+  'hash' => '09bc6e4e69eb11a12abc1ab4823227c528d9a72d2d3651626d129d4700fbaac6',
 ))
 ->values(array(
   'filename' => 'modules/locale/locale.test',
-  'hash' => '61c6a80ba44ff92e6ba4a350b7c95890368e2f9e029b8f84563df2490a8e93b1',
+  'hash' => '0b54695190fe24e5024e4a445a8028dd51211852d63147ca8a907b87260275b1',
 ))
 ->values(array(
   'filename' => 'modules/menu/menu.test',
-  'hash' => '51817d6c591c28cf268145c2d39b41f66e453edf42c86472e61b7081da1d86bb',
+  'hash' => 'db0600ff4e9d2159ecf26c991cbb81931edb32513a0bb7716964ee84006dd912',
 ))
 ->values(array(
   'filename' => 'modules/node/node.module',
-  'hash' => 'b594aa316e7d74024d633fb95a6e89a2c6c14cb108a481fd0b2521ec0e3316de',
+  'hash' => 'a0431f275b291779ffd1061d7d98b6942106235350b807828e94c6929ad04a41',
 ))
 ->values(array(
   'filename' => 'modules/node/node.test',
-  'hash' => 'e2e485fde00796305fd6926c8b4e9c4e1919020a3ec00819aa5cc1d2b3ebcc5c',
+  'hash' => '5d6e2853efb3f596525508e76f7f44d15621180f9ef51aaf957fc042fb21df1e',
 ))
 ->values(array(
   'filename' => 'modules/openid/openid.test',
-  'hash' => '3decf7faf3a9396671d52c6065a31f0ef81828015e0348a0ba9358b618e737a1',
+  'hash' => 'a9de8727e9411002c28c0caee7fc347780ecebf18959c800683166b7f313416d',
 ))
 ->values(array(
   'filename' => 'modules/path/path.test',
-  'hash' => '2004183b2c7c86028bf78c519c6a7afc4397a8267874462b0c2b49b0f8c20322',
+  'hash' => 'e7dabb4bbb7afd1b09adf1e64438b74726fc122422b31c7ae6d8e0ed2f7df6b6',
 ))
 ->values(array(
   'filename' => 'modules/php/php.test',
@@ -53742,11 +58788,11 @@
 ))
 ->values(array(
   'filename' => 'modules/poll/poll.test',
-  'hash' => 'cc8486dc337471d13014954e1c1e4e5ad4956e4a0cbd395adbd064f8e5849c72',
+  'hash' => '7030be7dee36cc35f62a35770287919ca0451362a86dbd8ddd44fd180c176ea3',
 ))
 ->values(array(
   'filename' => 'modules/profile/profile.test',
-  'hash' => 'afc23aa58769a84d94c4a6cef7b0ea2c9aa0edfdf2563a34757a1fb4d3d58233',
+  'hash' => 'de3e5807b3dc5f658270194f6ef012b5ad858ca9ad79f2782a69531754b442a3',
 ))
 ->values(array(
   'filename' => 'modules/rdf/rdf.test',
@@ -53754,11 +58800,11 @@
 ))
 ->values(array(
   'filename' => 'modules/search/search.extender.inc',
-  'hash' => '013a6a841cc48a6dc991153fb692b8d1546e56b78d9c95e97e0d7e92296d3481',
+  'hash' => '1a92d28913cd9d7cd0d2ec007848e079c14e84a8bcb9423e70ad97309ac14eb6',
 ))
 ->values(array(
   'filename' => 'modules/search/search.test',
-  'hash' => '6512521f8de3a54238c8f337ae0aa105cab2bbc9a1addb5b1ccb755842656913',
+  'hash' => 'e43c21510d510885dfad6484afa931382083b75b7e67286bda56a6aafe265f28',
 ))
 ->values(array(
   'filename' => 'modules/shortcut/shortcut.test',
@@ -53766,11 +58812,11 @@
 ))
 ->values(array(
   'filename' => 'modules/simpletest/drupal_web_test_case.php',
-  'hash' => 'a4c07ab08d578cc9c4adfb39aaa98270cacc58885c1d61f3a71f207142f4fc0b',
+  'hash' => '1083284bccd3bdd544892448225be6bd50ee5756a5c6f1d0b2d1402a5c2b58c5',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/simpletest.test',
-  'hash' => '8112284b928297e326a2cb2a029a8ee35490732ce73ab0b54a91e9613a84e951',
+  'hash' => '6277067fd886ab815b43166f7fc2d7d612c1e74250ef2c6d37409231e915cc7a',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/actions.test',
@@ -53790,7 +58836,7 @@
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/bootstrap.test',
-  'hash' => '4ccb0841905a34438e5b3acd712d0a1b52b6aa41535d3a64d3e50eff355a5dbe',
+  'hash' => 'b899f759b13e991e1a7da7872ccac11d033b7ede9fd1247f75c5c1ba2964869e',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/cache.test',
@@ -53798,15 +58844,15 @@
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/common.test',
-  'hash' => 'aa2449d4ce5109bc9593901f34f74ce9caeea6450539a120afdf7a71f1e35276',
+  'hash' => '93c11263dbe597216dd5d5ac4079d302df2de3325c875c24f1f9ea4d69654655',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/database_test.test',
-  'hash' => '64baa1520d815e049310ae697fa79390b6b0a02fb03d47c64d3caec8d40ab8e9',
+  'hash' => '202ce3146c44b7cd074e25ecb508c83d9ae8c824f919dcdbb7f384e45181205b',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/entity_crud.test',
-  'hash' => '0db2e08cb15ef287ed622fa56cee85e6a61b6e7a8547c77531a80a9ec1379d87',
+  'hash' => '5f37e407d2f9da2d13bb09250d8410f0b754da49067e1e52c3ff80bc304a7d1c',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/entity_crud_hook_test.test',
@@ -53818,19 +58864,19 @@
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/error.test',
-  'hash' => 'df8360738a4b3c946209a560ae83065728ae1aa56744cd8aaee398325a7cda60',
+  'hash' => '8bc733264d5be80534e5b9b2d20c88f5c3990c49c09d66d6331b3acaa4912e39',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/file.test',
-  'hash' => '25fdee40ceb8c84f08677224db941e251906f2caa185b351de80eba76f20c90b',
+  'hash' => 'a868d9ac5c41f9a502660d3edba32159d3ab0fb813d27b1fb51bfaa1eb046d59',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/filetransfer.test',
-  'hash' => 'a5ae7e24c43f994968d059c93d56be0dfd580699e2cb884afb074b9ae5895fd9',
+  'hash' => '827431af2bb0359633c39a4748bc9b593759a260d1493445940e35a9fb04ca15',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/form.test',
-  'hash' => '1d932031c1b2e33947c1cb480457f9f6c95b1ee93bab6eab785c2cde290fd9d7',
+  'hash' => '7c1249cb1dd9af5937c54b30345ad98e6c98df5c8d852264d9b02d157aeea1ff',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/graph.test',
@@ -53838,7 +58884,7 @@
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/image.test',
-  'hash' => 'fbad58b83e40aec654bf66835e30f81b83a76714efc560d73e7be3841ab5e996',
+  'hash' => '2481007d8c75d450c26112e3c333f2e4af9fd580d9cfb150e8aaa7e85a711ecc',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/lock.test',
@@ -53846,19 +58892,19 @@
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/mail.test',
-  'hash' => '9f772652385048639264f64147eab2675e9e76be2258e70bbefc2f6f753d047f',
+  'hash' => '3ed6b251f5c3926699f0b680f65489e619067ea6e4de920305b7a11c03d00efa',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/menu.test',
-  'hash' => 'b7602b23403271fd404646cd5f4970ce278eb3c014ed30676f1ba680cfd749a1',
+  'hash' => 'd69a66ded52e5012a25a816c4bf6994705b395db82328885ac31335e430fedc9',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/module.test',
-  'hash' => '056de988f33d43c39e62f067af8f449f5192cd27bbbcf358a6e3b0d34d94167c',
+  'hash' => '3fd14d8d64c3af3dd95e93e4fc3283803becd3702ce8bcd0e4cfb58bba39401d',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/pager.test',
-  'hash' => '9586bc07f5ed2791ae69e8cacf1a257ffe85dde3be7769ce6e84435a001bc296',
+  'hash' => '999bda0384620ff7fdf8e4c150e0ca40d08c063b0ba4f3c0e6cff896b75de561',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/password.test',
@@ -53866,19 +58912,23 @@
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/path.test',
-  'hash' => '814b32c225e1a73f225b52c0e5a9579a754dd9f597cb71189fa0b62c5ce821ad',
+  'hash' => '4d1212854ad28515c354d8855ed7feddce95fe0ab25049af5219020c3e3ac966',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/registry.test',
   'hash' => 'eadaa4f04ffbe49656ee9c8d477a4855de12f5f7fd6923894ab6565b86fde28f',
 ))
+->values(array(
+  'filename' => 'modules/simpletest/tests/request_sanitizer.test',
+  'hash' => '7d0e607eff78a19a90f35264816d67e8b7247cfab3cc70acbe83c0eafba8ec32',
+))
 ->values(array(
   'filename' => 'modules/simpletest/tests/schema.test',
-  'hash' => '14a7975e040ae8d3a7c8bb82c9e26dabe78978f6371dec22ae8c81b71cf3e4bb',
+  'hash' => 'dab8762069f1f39d732285e63e816ff74adf039e3afd490e3aaa12fe593341f4',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/session.test',
-  'hash' => '6416694ef7c79680f99e405468401567357c38abead1e0ce9e232a15e7dcd823',
+  'hash' => '4a17c93fb504286398cce49043c525a52308bed909ff85c2f898e7e363a12270',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/tablesort.test',
@@ -53886,7 +58936,7 @@
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/theme.test',
-  'hash' => 'f542bdf4efc342609b8804767b793521c6641ab5cd31a7130865feeef5f2cfa1',
+  'hash' => 'd2dae5c529c910ab08b60895115a6b1a7625774ef728fc48a06ade83544afdf0',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/unicode.test',
@@ -53898,7 +58948,7 @@
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/upgrade/update.aggregator.test',
-  'hash' => 'a2b6a574993591e93dacbd303a300b852775a3beea1343fb1f11578a8cdd26e1',
+  'hash' => 'fb4c04c020722ff2a430f68b1d5b4248fd200d0c46757f467c55082909c64e7e',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/upgrade/update.field.test',
@@ -53914,59 +58964,59 @@
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/upgrade/upgrade.comment.test',
-  'hash' => 'a20a8b44b46a6bc1cc0f0a18e67a12933d0b101d463bcdc21212e5f35d93c379',
+  'hash' => '4680ff86eac44b815f09cb5761cd05269531234a9cdd32173f4cf1796b15e8e5',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/upgrade/upgrade.filter.test',
-  'hash' => '0485b6d466476a85e7591eb4bdaf303b1b75a871038f1d5669a3f6d4cd81ecd0',
+  'hash' => 'a73a708aaca2354f3383f488dcdc9594fd2f39c9babb60cc61a4e1f87e113713',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/upgrade/upgrade.forum.test',
-  'hash' => '6330fe5d85a81d7d5686da5a40cf18b275bef4c5819afb334f8fc0b043532bb4',
+  'hash' => '5c323b21b20413adeadb994f002e85d4ee01b9f318a0a2ab4fea2ba25b9f9884',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/upgrade/upgrade.locale.test',
-  'hash' => 'ec2d285222dd85022a16daed2b3a3e951dba97ab4de9fd46d89d2064f5db7595',
+  'hash' => '81f91bc55599124feada7754a9b33de32b9f489117e914a3daa2634b612f2fca',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/upgrade/upgrade.menu.test',
-  'hash' => 'fa6e46dcb1028e6c3faad86c50d3d9296d7a4095115ffb8d39b627dbd31996d7',
+  'hash' => 'bbe507a367a7080dc4c32f89d54f1fab2559ab99aa2957fb657cc9b36f252d76',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/upgrade/upgrade.node.test',
-  'hash' => 'f16f1ae5b5b3584e4d1d119473a962112fb28796efb5283aaa8df2db0ddec364',
+  'hash' => 'd5f34bd6e218a9fd1a6df4a9ceb5893ead12566fc5be516aaed5892f05fd2d76',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/upgrade/upgrade.taxonomy.test',
-  'hash' => '805528f81162014479d94e70bcaf234f818a1898d057e05d08b148a9120743b9',
+  'hash' => '338bcfaa484637ac2d24289624b46e9ef836f8392a20bcbb13cf205ef7781bdc',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/upgrade/upgrade.test',
-  'hash' => '877364dd82e5e1ed28e1ee93c48fbec083237012f44038a8fef39d9c6cb8b4f9',
+  'hash' => 'bbdf974735711a97f9a774d94470aedd1db9ff3e18fea5668b080233d1accd27',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/upgrade/upgrade.translatable.test',
-  'hash' => '7a53241c9df9c671fb1da2789fe32c0e0425267f1647293a89adadbfa49bc4ac',
+  'hash' => 'e215bb35f01262678c066b088a7d817ebfa69c1ac96abbfc9f69660b7748c993',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/upgrade/upgrade.trigger.test',
-  'hash' => '4ba820349ef89f6eaa73f429c053e09f937d36808149a00563efa5b551e8669d',
+  'hash' => '290da2f6349227bb0e031bdbb3087a1df1d4833926e50f959754079c6363ca34',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/upgrade/upgrade.upload.test',
-  'hash' => '8fc15f53a5ef54b48133a8525fcd384729563ba2d9bd49ab035549d07fabf3c4',
+  'hash' => '4c49a9221403f8b2b857c7df85a402459c40600ebe6dd8251954f7fdfc57e8a0',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/upgrade/upgrade.user.test',
-  'hash' => '9c11a51f2bd262f957e6c609ec84b26ac9d1fa00feeb0078b7a12beb450daab3',
+  'hash' => 'b63c413ea1c77d87b5bcca26a3fc1b6ad50ad6733bbf0ceae02b6182915d033e',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/xmlrpc.test',
-  'hash' => '1d9b1fe51d31722473478087d50ed09b180748047205cea936db49a74ade82e7',
+  'hash' => '6a4f2fec0c3b8027655069ac71c41d9ee7ec7838257081ede18a4647d7dacec4',
 ))
 ->values(array(
   'filename' => 'modules/statistics/statistics.test',
-  'hash' => '3fd921d3cc26f9363bba0d6f29efb96c49c88ca51e2e2376b6554afaff8ceeb5',
+  'hash' => '7abe4cce7ef548637d709e22cf340f9973b6d77615a470949d20a6426f5b08f2',
 ))
 ->values(array(
   'filename' => 'modules/syslog/syslog.test',
@@ -53974,39 +59024,39 @@
 ))
 ->values(array(
   'filename' => 'modules/system/system.archiver.inc',
-  'hash' => 'faa849f3e646a910ab82fd6c8bbf0a4e6b8c60725d7ba81ec0556bd716616cd1',
+  'hash' => '05caceec7b3baecfebd053959c513f134a5ae4070749339495274a81bebb904a',
 ))
 ->values(array(
   'filename' => 'modules/system/system.mail.inc',
-  'hash' => 'd31e1769f5defbe5f27dc68f641ab80fb8d3de92f6e895f4c654ec05fc7e5f0f',
+  'hash' => 'd2f4fca46269981db5edb6316176b7b8161de59d4c24c514b63fe3c536ebb4d6',
 ))
 ->values(array(
   'filename' => 'modules/system/system.queue.inc',
-  'hash' => 'a60cff401fc410cd81dc1d105ed66f79396ed7b15fdc3a5c5b80593ad5d4352a',
+  'hash' => 'a77a5913d84368092805ac551ca63737c1d829455504fcccb95baa2932f28009',
 ))
 ->values(array(
   'filename' => 'modules/system/system.tar.inc',
-  'hash' => '8a31d91f7b3cd7eac25b3fa46e1ed9a8527c39718ba76c3f8c0bbbeaa3aa4086',
+  'hash' => '2dd9560bddab659f0379ef9eca095fc65a364128420d9d9e540ef81ca649a7d6',
 ))
 ->values(array(
   'filename' => 'modules/system/system.test',
-  'hash' => 'b53fdc9f28a49d9bdd819721a6bc4ae0e8a7b023a415e98672a99453187c1f1e',
+  'hash' => 'f815c9be6f3059a891147aca5dd6f45a857cd608db78d683c529a29ebd5ab7a0',
 ))
 ->values(array(
   'filename' => 'modules/system/system.updater.inc',
-  'hash' => '338cf14cb691ba16ee551b3b9e0fa4f579a2f25c964130658236726d17563b6a',
+  'hash' => '9433fa8d39500b8c59ab05f41c0aac83b2586a43be4aa949821380e36c4d3c48',
 ))
 ->values(array(
   'filename' => 'modules/taxonomy/taxonomy.module',
-  'hash' => '45d6d5652a464318f3eccf8bad6220cc5784e7ffdb0c7b732bf4d540e1effe83',
+  'hash' => 'b246e538820cbd80b972e8a16b488b8974eb5dcfc16578f5405927c9727441a6',
 ))
 ->values(array(
   'filename' => 'modules/taxonomy/taxonomy.test',
-  'hash' => '8525035816906e327ad48bd48bb071597f4c58368a692bcec401299a86699e6e',
+  'hash' => '4db45ebdc63089e79cce177221ffc50658554688c9b467226b7afb2da7e35940',
 ))
 ->values(array(
   'filename' => 'modules/tracker/tracker.test',
-  'hash' => 'bea7303dfe934afeb271506da43bcf24a51d7d5546181796d7f9f70b6283ed67',
+  'hash' => '5669b4d8f6ea7f652a4dd47f31de6b68f2cbc087e30fedbf7db0df5bef1470c2',
 ))
 ->values(array(
   'filename' => 'modules/translation/translation.test',
@@ -54014,19 +59064,23 @@
 ))
 ->values(array(
   'filename' => 'modules/trigger/trigger.test',
-  'hash' => '662f1a55e62832d7d5258965ca70ebe9d36ce8ae34e05fda2a2f9dc72418978b',
+  'hash' => '589376e9ce183c4dcb6c8ef49fd8c0295247fd1cf49c5237d770bf73058ef725',
 ))
 ->values(array(
   'filename' => 'modules/update/update.test',
-  'hash' => '1ea3e22bd4d47afb8b2799057cdbdfbb57ce09013d9d5f2de7e61ef9c2ebc72d',
+  'hash' => '994b66b737f16eb98ee18c9e9ecd62e86de2792159e70b36982e95b48f2746a3',
 ))
 ->values(array(
   'filename' => 'modules/user/user.module',
-  'hash' => '88bb508e0eb658281b085cd07c81808bd9634bba8a2271515c1d68079d58817d',
+  'hash' => '6762ef76e12db1f48e2856d0f5c420ecdaa29fff26775275c1ff9d7e357e7b4d',
 ))
 ->values(array(
   'filename' => 'modules/user/user.test',
-  'hash' => '178320fdb9a0c8754f1fa7272f68f536dcb94ae82ce7d0fc6a0f8a476c1f6922',
+  'hash' => '09b1d7ade399e4fc65ce86e39ed33ee62f36e51cda5c25687eb7fa1e51cc06b8',
+))
+->values(array(
+  'filename' => 'sites/all/modules/breakpoints/breakpoints.test',
+  'hash' => '3d0dae6143ff9903554128f599a4156d852e57d5665e5cebc2ecc55f5eaef962',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/ctools/includes/context.inc',
@@ -54082,59 +59136,99 @@
 ))
 ->values(array(
   'filename' => 'sites/all/modules/date/date.migrate.inc',
-  'hash' => '47ffb48daf97c13ef154cf2ffff577018f02a7091b85dfb39e9c2c89e1da6a5d',
+  'hash' => '3fec62a1b4d4860bb56f65834f210f7eaf88834fa3eace42ca23e758366c3d0c',
+))
+->values(array(
+  'filename' => 'sites/all/modules/date/date_all_day/tests/DateAllDayUiTestCase.test',
+  'hash' => '77fccf66c797453a1c2c47901aaba102a02037ac91076d5a1c9674dd73c8ad43',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/date/date_api/date_api.module',
-  'hash' => 'af2124c5727d839871309b31fe288fe3945d6ef67eb469ddcc02839be98860dc',
+  'hash' => 'dd47bba4cda203e53a59ae3a0fceee0f2142af27247cd5cf9a572d534628940b',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/date/date_api/date_api_sql.inc',
-  'hash' => '5a484b487c13fd6094348e2011c19e72d6c6c9ceb0b0a4143ef5542cd1c495fa',
+  'hash' => '75d63062024609e31649d71564d488e4dc4c58600af5e0d31418482c61282b2f',
+))
+->values(array(
+  'filename' => 'sites/all/modules/date/date_api/tests/DateApiTestCase.test',
+  'hash' => 'b5c1b3f1ec0d5ff3b1daa1d28fccf185b7bd9c8baafb15432a6188a678b97711',
+))
+->values(array(
+  'filename' => 'sites/all/modules/date/date_api/tests/DateApiUnitTestCase.test',
+  'hash' => '941b4fb0ab683801a3baa41c8da5987e0772892934659df5c53d705fb46e2507',
+))
+->values(array(
+  'filename' => 'sites/all/modules/date/date_popup/tests/DatePopupFieldTestCase.test',
+  'hash' => '91a40fbbfa9d764a9fe64a9cf7a6ec918125201689f2729bb15c2cf4d3272047',
+))
+->values(array(
+  'filename' => 'sites/all/modules/date/date_popup/tests/DatePopupValidationTestCase.test',
+  'hash' => '77106bb5dbfb3e5bb19a8c1b48ef3b08defa0f8c784836a6587f1d264e0be146',
+))
+->values(array(
+  'filename' => 'sites/all/modules/date/date_popup/tests/DatePopupWithViewsTestCase.test',
+  'hash' => '86ca5fa9f4ae198b39b5416945922909f72ac1dd136d5b4e4ea32bee7cfc386f',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/date/date_repeat/tests/date_repeat.test',
-  'hash' => '3702268fa89aa7ed9bcae025f0fb21bd67f90e89d53122049854de60a5316d4a',
+  'hash' => '1bdd55de5ffa1928c97bb34ef730c8737a2c9b014c125a4944734613a239c771',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/date/date_repeat/tests/date_repeat_form.test',
-  'hash' => '2ec4e5d57d5b9f1adf81505d40890c63dc684f2d0f00669b9c8c12518eb3bf4a',
+  'hash' => '43378ddf7bafcee0d1edff8ee6fe25e7feeef00f62d74aed32799860d7dc6ebc',
+))
+->values(array(
+  'filename' => 'sites/all/modules/date/date_repeat_field/tests/DateRepeatFieldTestCase.test',
+  'hash' => '3f80bd729f487ae583c35c4c02283d0f017acab5e166ada327feb1dcaaf6e07e',
+))
+->values(array(
+  'filename' => 'sites/all/modules/date/date_tools/tests/DateToolsTestCase.test',
+  'hash' => '2ec6ea450536c7732a816b98bfdd071e6f6102ef913b7279e511d079a09f76ea',
+))
+->values(array(
+  'filename' => 'sites/all/modules/date/date_views/tests/date_views_filter.test',
+  'hash' => '67f89e36fac1ed70ff7415c04570cfd8fe4760b9d14e5bc823e4727341b4085e',
+))
+->values(array(
+  'filename' => 'sites/all/modules/date/date_views/tests/date_views_pager.test',
+  'hash' => 'd933a4ef64f2dd4a7bca5bc898a178befd6c820279890698767c400806f8db74',
 ))
 ->values(array(
-  'filename' => 'sites/all/modules/date/date_tools/tests/date_tools.test',
-  'hash' => 'bdb9b310295207ce2284b23556810296e1477b9604e98a3d0fb21aba7da04394',
+  'filename' => 'sites/all/modules/date/tests/DateEmwTestCase.test',
+  'hash' => 'd9d1b6a3700327a99599e0385a4d4acb16ba9a0d66ed004bfa75d56fa589a4e1',
 ))
 ->values(array(
-  'filename' => 'sites/all/modules/date/tests/date.test',
-  'hash' => '6cb38e9ed60bfdfa268051b47fcad699f1c8104accc7286abafbeddbbc9d143c',
+  'filename' => 'sites/all/modules/date/tests/DateFieldTestBase.test',
+  'hash' => '901a2a2127ccc5190590277246acf06a7d9af7db1f4de3afa5962764c52b62e4',
 ))
 ->values(array(
-  'filename' => 'sites/all/modules/date/tests/date_api.test',
-  'hash' => '280148ca742592a1e22f663fe4d810532b95d09975db0182347a0bbd6917f996',
+  'filename' => 'sites/all/modules/date/tests/DateFieldTestCase.test',
+  'hash' => '06868eeb56be6956da92a60e7b9b8bfc179a8d041af1cd45e76442f1c92046cc',
 ))
 ->values(array(
-  'filename' => 'sites/all/modules/date/tests/date_field.test',
-  'hash' => 'bae59aee63ed204e27909709e59eeae1a6192e5f7456de2ce2cce06c49732dc4',
+  'filename' => 'sites/all/modules/date/tests/DateFormTestCase.test',
+  'hash' => '8f43dff86e8b79ce5fd08be4332322a47bb78bf61af94d7019cfc3793460077b',
 ))
 ->values(array(
-  'filename' => 'sites/all/modules/date/tests/date_migrate.test',
-  'hash' => 'a43f448732d474c5136d89ff560b7e14c1ff5622f9c35a1998aa0570cd0c536c',
+  'filename' => 'sites/all/modules/date/tests/DateMigrateTestCase.test',
+  'hash' => '58f3d573f004199b2ce4bfe4c30aea457659115f8b6ee959c07a21cac1cd976e',
 ))
 ->values(array(
-  'filename' => 'sites/all/modules/date/tests/date_timezone.test',
-  'hash' => '598ac52aa82f79fe90faa401c2c6dc7114295c0321800ea9a9b4058717d00409',
+  'filename' => 'sites/all/modules/date/tests/DateNowUnitTestCase.test',
+  'hash' => 'd2e17e5a49c56c84bf115cabeccc9c0f8b735ae95433a08962eb790633efd4b6',
 ))
 ->values(array(
-  'filename' => 'sites/all/modules/date/tests/date_validation.test',
-  'hash' => '2e4d27c29192c9d55eb27b985d7e9838702c4324d36ed6e3a85999e9f25ada99',
+  'filename' => 'sites/all/modules/date/tests/DateTimezoneTestCase.test',
+  'hash' => '55bf0f1bc26cf54f95fd74c9fe0e91b5278e4fab27e28b86c36047da28d00f62',
 ))
 ->values(array(
-  'filename' => 'sites/all/modules/date/tests/date_views_pager.test',
-  'hash' => 'aceff66e11dd3ea418e9905b28384432f4fe7cf9746e711cf56add73e64336dd',
+  'filename' => 'sites/all/modules/date/tests/DateUiTestCase.test',
+  'hash' => 'c118dbbf38a96407a539d214f9833a6ecad1ff4644820fa56b80d2f99eeae22b',
 ))
 ->values(array(
-  'filename' => 'sites/all/modules/date/tests/date_views_popup.test',
-  'hash' => '0684ad4977093fd7338eb045f85ceda195e82f50bd33fecbf0dca00e42b0385e',
+  'filename' => 'sites/all/modules/date/tests/DateValidationTestCase.test',
+  'hash' => '675c3dce13d95e424364de4db2c49d88cba19ce8eb86530341374c82a3b1292f',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/email/email.migrate.inc',
@@ -54142,7 +59236,7 @@
 ))
 ->values(array(
   'filename' => 'sites/all/modules/entity/entity.features.inc',
-  'hash' => '47261e1f4f39ac3707a16fdea8a8147c09df1281bcb4b9e46b0c8120603137e8',
+  'hash' => '53f537caf6ad9355fb92b2c6db019959abdf399d80764151dd976b0891f37436',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/entity/entity.i18n.inc',
@@ -54158,35 +59252,35 @@
 ))
 ->values(array(
   'filename' => 'sites/all/modules/entity/entity.test',
-  'hash' => 'df253128e41f152b45ef30b5674009c51cf4112450e5dad8e815f39ced280db5',
+  'hash' => 'aba6490cd2041438d832dc8f63b213e0d171a5a218f6d51a9fe00c51e95069ce',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/entity/includes/entity.controller.inc',
-  'hash' => '342db185e6170b63c59a9b360a196eb322edb9a5b8c7819f66b0eae48ed13ebd',
+  'hash' => 'b85d1882fae38ee8a0e82bf75952f44f65a58fd95e3bf0c3cb2a1321cf4d308a',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/entity/includes/entity.inc',
-  'hash' => '57411fa3d7b5cd2afe8b84f20c1741f48c32673a9da07bd2c35d4a11c50c640e',
+  'hash' => '02c3c8b1d4b7230f875c4fae8e6ba3bd57431e01f312b32f3ed305a7be734774',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/entity/includes/entity.ui.inc',
-  'hash' => '65739b31af0e6b422919c17805799dc99143fd89cacfb56b9186e26ece2d0df2',
+  'hash' => '49653cbbccc4b4e51f957727aa95803c149fac9565f53ed553e2cd1c1c3580ff',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/entity/includes/entity.wrapper.inc',
-  'hash' => '0db08cbb6b730035e3e9a483e6e5c06a744a73f19e4ca83936446b44f0c3d158',
+  'hash' => 'c728444ea73d4d5a7f0ec4cc80c7b749ab3134e1d0b973f8c001936c3dd5b861',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/entity/views/entity.views.inc',
-  'hash' => 'de657f42389ed6832df787e4b618d8d7117b60d145d34ce5dcf3a5b65db29df9',
+  'hash' => '089b8ed3103f62778be3395a99ddfbd84da4235f5ad431392f8984eaa4bf349f',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/entity/views/handlers/entity_views_field_handler_helper.inc',
-  'hash' => '4ec395881109a71327ab8d7c5b5702bef30288ca66557e44e8539cc15a2135bb',
+  'hash' => '88e4cbbbeab9bbaa4c928118bdefb158ea99f343f813cf88cce01ed7fbf8bf6a',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/entity/views/handlers/entity_views_handler_area_entity.inc',
-  'hash' => '7b7bb88e53861739b7279f705f0492fc83ce95f5b20d89339480f546422ebf25',
+  'hash' => '39ac643c4365394ac54190c4d130ea5787de423b9dadc14a470687a64cfbc8ab',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/entity/views/handlers/entity_views_handler_field_boolean.inc',
@@ -54234,11 +59328,11 @@
 ))
 ->values(array(
   'filename' => 'sites/all/modules/entity/views/plugins/entity_views_plugin_row_entity_view.inc',
-  'hash' => 'ba557790215f2658146424d933e0d17787a0b15180c5815f23428448ccf056a0',
+  'hash' => 'e489ca209c66b76228383864b8267067e7cf3a1e375d9a195339f89932fed71f',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/entityreference/entityreference.migrate.inc',
-  'hash' => '617c6c49e6e0fa4d106cfb49b61a6994b5520934ac3b64a8400a9d969eab7c59',
+  'hash' => '6dfe7be97f3198bff6c145dce9a0f521c3695c380d24fe6d3feb97362363407d',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/entityreference/plugins/behavior/abstract.inc',
@@ -54246,15 +59340,15 @@
 ))
 ->values(array(
   'filename' => 'sites/all/modules/entityreference/plugins/behavior/EntityReferenceBehavior_TaxonomyIndex.class.php',
-  'hash' => '92fa0cf46ecdf6200659646e6666c562ea506c40efa41a8edd4758dc0c551b92',
+  'hash' => '29e0f80ac52c1c313455a531404a3040c9160ecd173afd2e200ff99ffbab491c',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/entityreference/plugins/selection/abstract.inc',
-  'hash' => '7ecf94f5dc3456e4a5c87117d19deb98c368617fb07d610505b1dfa351f14a0b',
+  'hash' => '9c8cdf704c8e42cc2a63d4c8271d28c7b0aa7e0b1ec081ed7bd84712631e3e72',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/entityreference/plugins/selection/EntityReference_SelectionHandler_Generic.class.php',
-  'hash' => 'e9a8a3c693ed24218d00c10c445cdb21daed10a26e6b55e5c9d6a8c616cfd871',
+  'hash' => '3516c65d6048e182dcd1b7209ccf6838e17b1d342617d06e7a07ffed8bd549c6',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/entityreference/plugins/selection/views.inc',
@@ -54262,23 +59356,27 @@
 ))
 ->values(array(
   'filename' => 'sites/all/modules/entityreference/tests/entityreference.admin.test',
-  'hash' => 'bcd6516be3099ae87a4c3d41add08edd17eafb4244db8442c5dc15f19ebde7ae',
+  'hash' => 'f9e581f0fd8481b12ae74779f28942b26d29b0df828ba092b7be87cab29e1172',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/entityreference/tests/entityreference.feeds.test',
-  'hash' => '320c7480b1758e4d80e91c0a6ea3d43b6b35d1adfe00b6155b61ef786510bb7c',
+  'hash' => 'b19193542031d2e1a247ffac8852e9219e5f7f0ed38298207ffe27cd1af9352a',
+))
+->values(array(
+  'filename' => 'sites/all/modules/entityreference/tests/entityreference.field.test',
+  'hash' => '33483dbc58b1bfab047ae640bcf59a9a3e197cdb2d93240ef3bcb939cd4a2862',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/entityreference/tests/entityreference.handlers.test',
-  'hash' => '2fa170925ac5303c519378f1763e918cc2f111205220d90998b547a08db90d8c',
+  'hash' => 'be2ea3fab2b6a5116a5ff1292ec3d916fb48ae36001e064503ef3db952c99b99',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/entityreference/tests/entityreference.taxonomy.test',
-  'hash' => '8e4f7d9ae621df0f587b6fcbf139adea2a35c69305ef018ced88447a41164c5f',
+  'hash' => '28aed16bd109189d6b2bfc8f59d914c8e237190738fa23d81dbd6cf2c2bced9b',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/entityreference/views/entityreference_plugin_display.inc',
-  'hash' => '9216a065ea4fdb2daacb1280e5c9549e3400b8553b5293534cf65a0d703ab189',
+  'hash' => 'f70ee264eec52af076bea73e525bb09fa0fdb7bfe59353d7241ccc2673799a66',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/entityreference/views/entityreference_plugin_row_fields.inc',
@@ -54286,47 +59384,247 @@
 ))
 ->values(array(
   'filename' => 'sites/all/modules/entityreference/views/entityreference_plugin_style.inc',
-  'hash' => 'ad9a7ea5a37c2d9658c2b1d19ade3011c27ed5d9959423ebf7a390372507e6b0',
+  'hash' => 'fef62f9375cbcadbfd1918227434193f45e4cc62964cb4fee22ab1d8d3b3bb26',
+))
+->values(array(
+  'filename' => 'sites/all/modules/entity_translation/entity_translation_i18n_menu/entity_translation_i18n_menu.test',
+  'hash' => '5bae8493da737121bdc9e24654c3ef1fadb9998e031533f6c46d407f5ba2ddb5',
+))
+->values(array(
+  'filename' => 'sites/all/modules/entity_translation/entity_translation_upgrade/entity_translation_upgrade.test',
+  'hash' => 'a7bff85b8ef693c394b387e3588cc4eaa730623df3f2505bc9a6e62e29de009a',
+))
+->values(array(
+  'filename' => 'sites/all/modules/entity_translation/includes/translation.handler.comment.inc',
+  'hash' => 'c1667be0bdea8805be52b10bad904f60a278213b749d4c9903e3887b6165448c',
+))
+->values(array(
+  'filename' => 'sites/all/modules/entity_translation/includes/translation.handler.inc',
+  'hash' => 'd470382679e75b63f370e7d476a737eb104e7bae0937668d912873bc2c94ce89',
+))
+->values(array(
+  'filename' => 'sites/all/modules/entity_translation/includes/translation.handler.node.inc',
+  'hash' => '255963e0d0a38349e1c5cb3ff072819b9c39cb5760a71b312ddaac1dd2edbb82',
+))
+->values(array(
+  'filename' => 'sites/all/modules/entity_translation/includes/translation.handler.taxonomy_term.inc',
+  'hash' => '587417ed1ba9debd4caef9b32722ca003be28c325d12f3fcb82b70384c095814',
+))
+->values(array(
+  'filename' => 'sites/all/modules/entity_translation/includes/translation.handler.user.inc',
+  'hash' => '4574d55fc756f566bc10f574231ee7900a181fbaa68d647ae973d9e06b4167ac',
+))
+->values(array(
+  'filename' => 'sites/all/modules/entity_translation/includes/translation.handler_factory.inc',
+  'hash' => '80ed7658c3d685bc18e7d29129893b2fb48dcda029e730241c1d0f53db7ad367',
+))
+->values(array(
+  'filename' => 'sites/all/modules/entity_translation/includes/translation.migrate.inc',
+  'hash' => 'e5c56971c44ad5352089481e48e01fb83bfefbb5359c8033949ce5227a917d42',
+))
+->values(array(
+  'filename' => 'sites/all/modules/entity_translation/tests/entity_translation.test',
+  'hash' => 'b3aa79b5d0805999336c000aafa63c9384303bd5018ca57d78cb94fa380eb854',
+))
+->values(array(
+  'filename' => 'sites/all/modules/entity_translation/views/entity_translation_handler_field_field.inc',
+  'hash' => '4681a5b5e8963b562e6fbb39c3385024034f392162eb4ff7f52a1684db628ea8',
+))
+->values(array(
+  'filename' => 'sites/all/modules/entity_translation/views/entity_translation_handler_field_label.inc',
+  'hash' => 'd31ea1af45150832df052fad29af729c6c028a54fa44d62a023a861bbeba744d',
+))
+->values(array(
+  'filename' => 'sites/all/modules/entity_translation/views/entity_translation_handler_field_translate_link.inc',
+  'hash' => '78cfa9c4e9b074e5d45d887fe8f69a8966fc0112d95a6abc74b9b13421b58047',
+))
+->values(array(
+  'filename' => 'sites/all/modules/entity_translation/views/entity_translation_handler_filter_entity_type.inc',
+  'hash' => 'd86bb73731c60f8ebaa3d8c29f837403935e91fe062c5ab6293901aa253da3e7',
+))
+->values(array(
+  'filename' => 'sites/all/modules/entity_translation/views/entity_translation_handler_filter_language.inc',
+  'hash' => '44c3a6928b8f7cde5fea6ae7cff973982d6c7781a3c8be663838ff770435c939',
+))
+->values(array(
+  'filename' => 'sites/all/modules/entity_translation/views/entity_translation_handler_filter_translation_exists.inc',
+  'hash' => '25d8ee7f5d45a5e3984572d00816368902121574f04277a67bbabd004b67f39a',
+))
+->values(array(
+  'filename' => 'sites/all/modules/entity_translation/views/entity_translation_handler_relationship.inc',
+  'hash' => 'aac136a9eab8c4b832edd73b942e124c3fdf1f48b6c8a8d0bf5383ba1d32259c',
+))
+->values(array(
+  'filename' => 'sites/all/modules/i18n/i18n.test',
+  'hash' => 'c52b5076bfd40ec8820a1f58dd9ea6f8d0098c771f65d740298143137d52866e',
+))
+->values(array(
+  'filename' => 'sites/all/modules/i18n/i18n_block/i18n_block.inc',
+  'hash' => '73eb3b7ba1e14cd12b51c7a94dcd2e5d701d1cee5aaf24d907aa282dbc9212c1',
+))
+->values(array(
+  'filename' => 'sites/all/modules/i18n/i18n_block/i18n_block.test',
+  'hash' => 'b2608274dae333577514565b54b14f2ad8f84c3928fb0ea0ed848aa8db7375e6',
+))
+->values(array(
+  'filename' => 'sites/all/modules/i18n/i18n_field/i18n_field.inc',
+  'hash' => 'b8c9b97f9dbc510e0e3b478e8fe21e86278a19ac5b8ddcf2da15c37d14afcc03',
+))
+->values(array(
+  'filename' => 'sites/all/modules/i18n/i18n_field/i18n_field.test',
+  'hash' => '933758375305519b97501c2479834620d258881088cdbabb4a493f4e0054d068',
+))
+->values(array(
+  'filename' => 'sites/all/modules/i18n/i18n_forum/i18n_forum.test',
+  'hash' => '90b38124594fea145afac37b8343cee5a08b0db5e4f4adfcdd5cd5da9231f263',
+))
+->values(array(
+  'filename' => 'sites/all/modules/i18n/i18n_menu/i18n_menu.inc',
+  'hash' => '932080f89ff854073641d565e46d82b8ecb9221640ce63192ff080527fa89f6e',
+))
+->values(array(
+  'filename' => 'sites/all/modules/i18n/i18n_menu/i18n_menu.test',
+  'hash' => 'c907c0cf68dec26504ede662d8afa254b3903d9a964e3099011d680de87acf0b',
+))
+->values(array(
+  'filename' => 'sites/all/modules/i18n/i18n_node/i18n_node.test',
+  'hash' => '0009235387b1fb0a15ae46cea8e00539128f8a807c4e5f6c8abf27929ec28ff6',
+))
+->values(array(
+  'filename' => 'sites/all/modules/i18n/i18n_object.inc',
+  'hash' => '13118a2525f7ef27040f1c4824fcd05258154fcba128bdb5802c0aac471293c8',
+))
+->values(array(
+  'filename' => 'sites/all/modules/i18n/i18n_path/i18n_path.test',
+  'hash' => 'd625f7e36e653d8d55cf68e4366a647f5efc20689d3905d6fc77657752ac7584',
+))
+->values(array(
+  'filename' => 'sites/all/modules/i18n/i18n_select/i18n_select.test',
+  'hash' => 'bfb4267be987278f079382f218433a191973f13f4f8c06077e719ca90fd744ed',
+))
+->values(array(
+  'filename' => 'sites/all/modules/i18n/i18n_string/i18n_string.admin.inc',
+  'hash' => 'ace6c13b12cbb5379c803def1f4c4ba073457aa7fe84d1f87a4a4693e28b216c',
+))
+->values(array(
+  'filename' => 'sites/all/modules/i18n/i18n_string/i18n_string.inc',
+  'hash' => '35569a693d0bb7df4035acefddc026087676f5671f0957ec56bbdd63eadd1fbc',
+))
+->values(array(
+  'filename' => 'sites/all/modules/i18n/i18n_string/i18n_string.test',
+  'hash' => '5127520c1b08f78d3314d6df948b6a59eeb5a889c74687a196bfa3244c33f6d8',
+))
+->values(array(
+  'filename' => 'sites/all/modules/i18n/i18n_sync/i18n_sync.install',
+  'hash' => '12b053b45d9f2741afd2eccae8fc5e267c0319319976b08125a789d8df76abca',
+))
+->values(array(
+  'filename' => 'sites/all/modules/i18n/i18n_sync/i18n_sync.module',
+  'hash' => '24aed1c28846be9333241c6c84ef18cea642ad13c220e043112f9dbd7ec081b2',
+))
+->values(array(
+  'filename' => 'sites/all/modules/i18n/i18n_sync/i18n_sync.node.inc',
+  'hash' => 'eeb55d7fca17c7b8396053a31d7a14e1a40643f87549648617c005115ef480c1',
+))
+->values(array(
+  'filename' => 'sites/all/modules/i18n/i18n_sync/i18n_sync.test',
+  'hash' => '3da6de303a0d0443d312c44f72c6e346acb52688ffd1349b615640abb7a93ca5',
+))
+->values(array(
+  'filename' => 'sites/all/modules/i18n/i18n_taxonomy/i18n_taxonomy.admin.inc',
+  'hash' => '5b609efc7ae96ddf4129dc9ee59a4a17fd522c8f9c6e148ffb1ac6eb24700246',
+))
+->values(array(
+  'filename' => 'sites/all/modules/i18n/i18n_taxonomy/i18n_taxonomy.inc',
+  'hash' => '7bc643c59e25c8a00491bc70258821793bbcb232a70510eff071a02bb1e4343e',
+))
+->values(array(
+  'filename' => 'sites/all/modules/i18n/i18n_taxonomy/i18n_taxonomy.pages.inc',
+  'hash' => 'cd0cb343cbfe113a13583450618163b90e6bee8778f79b6dc76ce12dfd13a2f4',
+))
+->values(array(
+  'filename' => 'sites/all/modules/i18n/i18n_taxonomy/i18n_taxonomy.test',
+  'hash' => '29fc8c69345e4d2b8eda25ae5d7775772ff1432452f07d51d66b727857ba3690',
+))
+->values(array(
+  'filename' => 'sites/all/modules/i18n/i18n_translation/i18n_translation.inc',
+  'hash' => 'e7e38105a080efcb1d947e7e6d2f1487127b166905b2722c516582827ddaf143',
+))
+->values(array(
+  'filename' => 'sites/all/modules/i18n/i18n_variable/i18n_variable.class.inc',
+  'hash' => '8803cd58f313f348b08afb953c6ebcfc6ea2203e9751bee09326b882b346edc6',
+))
+->values(array(
+  'filename' => 'sites/all/modules/i18n/i18n_variable/i18n_variable.test',
+  'hash' => 'b511aa2d4275a7464cb0aef90e308568a08ff523c80d6a63567cbeba94918e01',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/link/link.migrate.inc',
-  'hash' => '0a17ff0daa79813174fff92e9db787e75e710fe757b6924eec193c66fe13f3df',
+  'hash' => '329488d6a88a0cbcd68ebeffbb88cc12da3518b61e28744cd612474cf8e8a165',
 ))
 ->values(array(
-  'filename' => 'sites/all/modules/link/link.module',
-  'hash' => '3fdf23f9f409b80df5eee57207a5045c566422cef14128306835f7b1b03a5e66',
+  'filename' => 'sites/all/modules/link/tests/LinkBaseTestClass.test',
+  'hash' => 'eb3ab4b3a547e0b06e98ec09ede36438b47a64db079a2c55a4e0bb6368218271',
+))
+->values(array(
+  'filename' => 'sites/all/modules/link/tests/LinkConvertInternalPathsTest.test',
+  'hash' => '5696b4cdaaf8253659a11395f79673a26c9596de58a6552532638807cf632050',
+))
+->values(array(
+  'filename' => 'sites/all/modules/link/tests/LinkDefaultProtocolTest.test',
+  'hash' => 'b35360a8c21e242b5c8e34bb9b83e39e84f93d58aca8cc5513a42b95cec5cf3b',
+))
+->values(array(
+  'filename' => 'sites/all/modules/link/tests/LinkEntityTokenTest.test',
+  'hash' => '37efc9d5193f71decc36c29779580c79d54abbfecad2caf14bd05b710176204b',
+))
+->values(array(
+  'filename' => 'sites/all/modules/link/tests/LinkFieldAttributesTest.test',
+  'hash' => '0682b64eb37a6020d81d1049c0ca53c0243fefc3cee3ec3e5b55970e6e1b5e86',
+))
+->values(array(
+  'filename' => 'sites/all/modules/link/tests/LinkFieldCrudTest.test',
+  'hash' => '1ebd9285f414f56c80a0dc454a3193c0829f6fea40ec62a1fd69f6246a73d6c3',
 ))
 ->values(array(
-  'filename' => 'sites/all/modules/link/tests/link.attribute.test',
-  'hash' => '8c21045dbcf346edf8dc70c157d02074dd87372d4f60e7f5a4ae11683cd79399',
+  'filename' => 'sites/all/modules/link/tests/LinkFieldValidateTest.test',
+  'hash' => '46281a764f666d6edbc6f7efcd2d2e166fa35fe59e7a41d3c4a12eeca8995165',
 ))
 ->values(array(
-  'filename' => 'sites/all/modules/link/tests/link.crud.test',
-  'hash' => 'de19e2c5e8c6cb02f25d7051bdd1db77852379ac59ce8185c25b4bf927478f22',
+  'filename' => 'sites/all/modules/link/tests/LinkPathPrefixesTest.test',
+  'hash' => '85e24764e755d960f10111b2697836243b08b68f0be2b92e3968e0114ab0a5d5',
 ))
 ->values(array(
-  'filename' => 'sites/all/modules/link/tests/link.crud_browser.test',
-  'hash' => '07794771164033e14a635625ad08fdbcdc4dafa154db2ec0bd9a95ca30202eb5',
+  'filename' => 'sites/all/modules/link/tests/LinkSanitizeTest.test',
+  'hash' => '6a662005fa4370c7584b35d78c5989aeb5a4dcf6537a095cb3fb5c29ec49e07a',
 ))
 ->values(array(
-  'filename' => 'sites/all/modules/link/tests/link.test',
-  'hash' => 'fe5d8cd577fbfc07929e7216e115530a28777ace9b7135fbc853a3a78d550456',
+  'filename' => 'sites/all/modules/link/tests/LinkTokenTest.test',
+  'hash' => '04523630d058b3ceb0509dbc4cacc90b81f3c8d1c04cafeb8d1db20606969fa7',
 ))
 ->values(array(
-  'filename' => 'sites/all/modules/link/tests/link.token.test',
-  'hash' => '930af3b64ccabd58a14c8f596ee4b908596b4bee64174bfa34d55fbab7173da4',
+  'filename' => 'sites/all/modules/link/tests/LinkUnitTestCase.test',
+  'hash' => '57cbcc85ae344b38c1a374df68b8b1864af4eba82246a345a5355bf321fce668',
 ))
 ->values(array(
-  'filename' => 'sites/all/modules/link/tests/link.validate.test',
-  'hash' => '4fb3d9124767f43332f2e40bcca3aba98575dd1f6a286adfc8831607823986c5',
+  'filename' => 'sites/all/modules/link/tests/LinkValidationApiTest.test',
+  'hash' => '1bc0ad1d140be70511ad6082efb8ea0770593a692100c18e362f6925d29945a9',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/link/views/link_views_handler_argument_target.inc',
-  'hash' => 'd77c23c6b085382c63e7dbce3d95afc9756517edcdc4cd455892d8333520d4c9',
+  'hash' => '99203a8b7c5a6e39c75104836aada6d4034ab010c95f4dbdc28b020f32383da7',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/link/views/link_views_handler_filter_protocol.inc',
-  'hash' => 'e10a0d2de73bfa9a56fadbac023c6ac16022ced40c0444ab6ffed1b5d7ea7358',
+  'hash' => '7135d542a2f9bb7263870024324d5398208e3b6f1ddff7e3142e6b0de757d5ad',
+))
+->values(array(
+  'filename' => 'sites/all/modules/multiupload_filefield_widget/multiupload_filefield_widget.module',
+  'hash' => '184be72d9c2b74973019acc74df64be6e5c5fdab2d2bcff5111f83cf5210865a',
+))
+->values(array(
+  'filename' => 'sites/all/modules/multiupload_filefield_widget/multiupload_filefield_widget.test',
+  'hash' => 'd206793dfb93a72a82ddaf3dbc408e5944d0f2c47edbf838b037b594aa1fb8fe',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/phone/phone.migrate.inc',
@@ -54448,81 +59746,177 @@
   'filename' => 'sites/all/modules/phone/tests/phone.za.test',
   'hash' => 'c5491ab663972aa23ae2f917a0fc605a6136f02e1b207d3fc650ed1f251359ee',
 ))
+->values(array(
+  'filename' => 'sites/all/modules/references/node_reference/node_reference.test',
+  'hash' => '5746afcbdfe47cfe75cce38c9690759cc2ab762bf2ae88d560aa0634dc671076',
+))
+->values(array(
+  'filename' => 'sites/all/modules/references/views/references_handler_argument.inc',
+  'hash' => '8548d8cd4676fc24bb26d0cf1a81640bbb8e8528c4b5a49195ff6c3d1fc53c41',
+))
+->values(array(
+  'filename' => 'sites/all/modules/references/views/references_handler_relationship.inc',
+  'hash' => '8fbf980fc3c9300ccb95e5efc4fa402233e4c9d4ed7a6d26b70264e37008c6e4',
+))
+->values(array(
+  'filename' => 'sites/all/modules/references/views/references_plugin_display.inc',
+  'hash' => 'eba22fcf16dff09cebd7f0864e8c7a51e1d1041e048dfda6160f6f7836741857',
+))
+->values(array(
+  'filename' => 'sites/all/modules/references/views/references_plugin_row_fields.inc',
+  'hash' => '061ea853c8d82b60aa472f23fdbe050e089d52ea0ede9567ecb0fc21b0135f5b',
+))
+->values(array(
+  'filename' => 'sites/all/modules/references/views/references_plugin_style.inc',
+  'hash' => 'b1761b3fdcb1fed613799011f148358b2a618d3f32126ca1c0465191d9885f74',
+))
 ->values(array(
   'filename' => 'sites/all/modules/telephone/telephone.migrate.inc',
   'hash' => '14561d51028bcf5b9e2f18654c3ba76eda444feb12ea6ac4e88fdbf4c1a35650',
 ))
+->values(array(
+  'filename' => 'sites/all/modules/title/tests/TitleAdminSettingsTestCase.test',
+  'hash' => '1aa98eb4a80966ccefb2378bcbd842f4aef2235c53a087fbbc4c7e103b7c84e7',
+))
+->values(array(
+  'filename' => 'sites/all/modules/title/tests/TitleFieldReplacementTestCase.test',
+  'hash' => '265bfc71f96b08e6ccd3c65286c218bed315d441e8b138ed03f6a18b139aa464',
+))
+->values(array(
+  'filename' => 'sites/all/modules/title/tests/TitleTranslationTestCase.test',
+  'hash' => '1df6a3f30ac41bece9a7a95ce0007827f3a6ebd6748ed1507bb5e71ce2ff9d3c',
+))
+->values(array(
+  'filename' => 'sites/all/modules/title/views/views_handler_title_field.inc',
+  'hash' => '683a24b01764154d49c1822233af47b196f48fe158acd9abe85449db4d743333',
+))
+->values(array(
+  'filename' => 'sites/all/modules/variable/includes/forum.variable.inc',
+  'hash' => '84ab5992d648c704b2ae6d680cf8e02d3150cccd8939170f7e8fd82ac054b516',
+))
+->values(array(
+  'filename' => 'sites/all/modules/variable/includes/locale.variable.inc',
+  'hash' => '27173d9c9e526a8ba88c5f48bf516aaac59ad932b64ef654621bc11f1ccd9f7a',
+))
+->values(array(
+  'filename' => 'sites/all/modules/variable/includes/menu.variable.inc',
+  'hash' => 'bc776840ee32060a9fda616ca154d3fd315461fbe07ce822d7969b79fccd8160',
+))
+->values(array(
+  'filename' => 'sites/all/modules/variable/includes/node.variable.inc',
+  'hash' => '596064101f8fbd3affdb61ca1240354ce0b51778601a8b02c021a1150bbf4e06',
+))
+->values(array(
+  'filename' => 'sites/all/modules/variable/includes/system.variable.inc',
+  'hash' => '909bae0f1e3a4d85c32c385a92a58c559576fb60fd13a0e4f71127eee27afd3e',
+))
+->values(array(
+  'filename' => 'sites/all/modules/variable/includes/taxonomy.variable.inc',
+  'hash' => '7792f07f8ea088cd8c3350e16f4cacef262c319c2e605dd911f17999a872f09e',
+))
+->values(array(
+  'filename' => 'sites/all/modules/variable/includes/translation.variable.inc',
+  'hash' => '3e4e82f779986bfb32987d6b27bdab9f907ba5e18841847f138a20c42cf725d4',
+))
+->values(array(
+  'filename' => 'sites/all/modules/variable/includes/user.variable.inc',
+  'hash' => 'b80094c1db0037f396f197bdd70c19e87afe76f4378c5c6089c4199af3bcb03a',
+))
+->values(array(
+  'filename' => 'sites/all/modules/variable/variable.test',
+  'hash' => 'a6614814c24aee5ae1d2f2f8c23c08138466c41a82e57ee670e070d7cdd6e4b2',
+))
+->values(array(
+  'filename' => 'sites/all/modules/variable/variable_realm/variable_realm.class.inc',
+  'hash' => 'ba523237a0e0116b3fdb3c86390fd2adc51b1cc50bab25d42995cd40a5b582bf',
+))
+->values(array(
+  'filename' => 'sites/all/modules/variable/variable_realm/variable_realm_union.class.inc',
+  'hash' => 'e9597edd9bac66e6b7f078cee37c3ced317b2768821cdac77b8d4c2f68b2adcc',
+))
+->values(array(
+  'filename' => 'sites/all/modules/variable/variable_store/variable_store.class.inc',
+  'hash' => '16870479d9464f0453d573e1384c808bae8319944fdf466e67ebdb53f6f8f54c',
+))
+->values(array(
+  'filename' => 'sites/all/modules/variable/variable_store/variable_store.test',
+  'hash' => '1546243a6be757de0fd7f9fe1428152fb0e53a91453c53c72aebb06f6cef4311',
+))
 ->values(array(
   'filename' => 'sites/all/modules/views/tests/comment/views_handler_argument_comment_user_uid.test',
-  'hash' => 'b8b417ef0e05806a88bd7d5e2f7dcb41339fbf5b66f39311defc9fb65476d561',
+  'hash' => 'ec9e9668eb1ae33364125feae864e2984b731cc6d6f66874f9b56c5729a42cc3',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/views/tests/comment/views_handler_filter_comment_user_uid.test',
-  'hash' => '347c6ffd4383706dbde844235aaf31cff44a22e95d2e6d8ef4da34a41b70edd1',
+  'hash' => 'd62fe3f3257efc0eaf742e3c177ea3f1bd5efb9fc8f91dc1bc5e9e6196085bd7',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/views/tests/field/views_fieldapi.test',
-  'hash' => '53e6d57c2d1d6cd0cd92e15ca4077ba532214daf41e9c7c0f940c7c8dbd86a66',
+  'hash' => 'a85c1dddb1c128b40dabbcb02c7013ae96b2da15a2df766b5317483fd4484aba',
 ))
 ->values(array(
-  'filename' => 'sites/all/modules/views/tests/handlers/views_handler_area_text.test',
-  'hash' => 'af74a74a3357567b844606add76d7ca1271317778dd7bd245a216cf963c738b4',
+  'filename' => 'sites/all/modules/views/tests/handlers/views_handlers.test',
+  'hash' => '44f3dd30909d43e250c726e312290a522131c7f0d3048fc5f8583fc8c5986f72',
 ))
 ->values(array(
-  'filename' => 'sites/all/modules/views/tests/handlers/views_handler_argument_null.test',
-  'hash' => '1d174e1f467b905d67217bd755100d78ffeca4aa4ada5c4be40270cd6d30b721',
+  'filename' => 'sites/all/modules/views/tests/handlers/views_handler_area_text.test',
+  'hash' => '3553a85c6d86992a17029eac182b486940393cee0c06380cf9f60ed208a57b5f',
 ))
 ->values(array(
-  'filename' => 'sites/all/modules/views/tests/handlers/views_handler_argument_string.test',
-  'hash' => '3d0213af0041146abb61dcdc750869ed773d0ac80cfa74ffbadfdd03b1f11c52',
+  'filename' => 'sites/all/modules/views/tests/handlers/views_handler_argument_null.test',
+  'hash' => 'e9adbe3e322cc8b536d79b5b915cab97102199abf2a14ad7a6374cfd18246372',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/views/tests/handlers/views_handler_field.test',
-  'hash' => 'af552bf825ab77486b3d0d156779b7c4806ce5a983c6116ad68b633daf9bb927',
+  'hash' => 'd4a833179c4f9aa57c42ef951b9e6d5a9304281e7aeb8c7dbe92ed6b24251cb4',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/views/tests/handlers/views_handler_field_boolean.test',
-  'hash' => 'd334b12a850f36b41fe89ab30a9d758fd3ce434286bd136404344b7b288460ae',
+  'hash' => 'c9f409147fe545a413b365ee37e0758a47291165effc76f0ae8743f84915053d',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/views/tests/handlers/views_handler_field_counter.test',
-  'hash' => '75b31942adf06b107f5ffd3c97545fde8cd1040b1d00f682e3c7c1320026e26c',
+  'hash' => '86f4514cfa72192034db1ef70723cb2b2b1ffde6e4e5fb4212ec959cd5697ba6',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/views/tests/handlers/views_handler_field_custom.test',
-  'hash' => '1446bc3d5a6b1180a79edfa46a5268dbf7f089836aa3bc45df00ddaff9dd0ce1',
+  'hash' => '57d1f7d01e57f8e2a9694340684344f5e7d6d5c90bad8679aba591192c1f6a2d',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/views/tests/handlers/views_handler_field_date.test',
-  'hash' => '6f45326d7f74127956d9d8e4d7ad96a4beb0f66175fa40daf1d618d1a5fa996d',
+  'hash' => '27f9b23bc31068a3f2a2f5b6678388dd4175b66f758b60e9a996e061a2e3a789',
+))
+->values(array(
+  'filename' => 'sites/all/modules/views/tests/handlers/views_handler_field_file_extension.test',
+  'hash' => '0f9c376f31ca47ecc0f01548d451c548ef7bebe8a07974def77e6725badda4e6',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/views/tests/handlers/views_handler_field_file_size.test',
-  'hash' => '49184db68af398a54e81c8a76261acd861da8fd7846b9d51dcf476d61396bfb9',
+  'hash' => '9c951d86dad9df3fca72b20abcb1345a0473578324a454c75d8a5a22e8b68015',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/views/tests/handlers/views_handler_field_math.test',
-  'hash' => '6e39e4f782e6b36151ceafb41a5509f7c661be79b393b24f6f5496d724535887',
+  'hash' => 'bbf418c1be15c20d4ddf09add1620f19ff91dc66611e8426a5528900ad9baf60',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/views/tests/handlers/views_handler_field_url.test',
-  'hash' => 'b41f762a71594b438a2e60a79c8260ba54e6305635725b0747e29f0d3ffe08c9',
+  'hash' => '0c0e54a93ffd5890b81807e0d0440d061f771fafc6d99943d5d9dfc4a1702686',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/views/tests/handlers/views_handler_field_xss.test',
-  'hash' => 'f129ee16c03f84673e33990cbb2da5aa88c362f46e9ba1620b2a842ffd1c9cd2',
+  'hash' => '17f33ec5473f0ddf8fbce6a3dfe3e65c0e51b7b13a0afc1b6d3dcf3667d4d83b',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/views/tests/handlers/views_handler_filter_combine.test',
-  'hash' => '05842d83a11822afe7d566835f5db9f0f94fdb27ddfc388d38138767bdf36f8b',
+  'hash' => '40dd1c5db7f8f225999dd1f7acd616269ad6d67155dcb8f843349597ac5a0a13',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/views/tests/handlers/views_handler_filter_date.test',
-  'hash' => '045cc449b68bbd5526071bf38c505b6d44f6c91868273c3120705c3bad250aee',
+  'hash' => 'a26c239c803507d2716ad35c4b3ee6b5339628f45d46dcd2a5d505769309c503',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/views/tests/handlers/views_handler_filter_equality.test',
-  'hash' => 'c88f21c9cbf1aae83393b26616908f8020c18fe378d76256c7ba192df2ec17af',
+  'hash' => 'df783f081546df2f3f77ac69665cd95a5725bdccc5673ab35a79a59aca08ce1a',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/views/tests/handlers/views_handler_filter_in_operator.test',
@@ -54530,35 +59924,39 @@
 ))
 ->values(array(
   'filename' => 'sites/all/modules/views/tests/handlers/views_handler_filter_numeric.test',
-  'hash' => '35ac7a34e696b979e86ef7209b6697098d9abe218e30a02cc4fe39fb11f2a852',
+  'hash' => '818f73baea9d062dbc7e4ef35444c6cbb26b4b60ed3972c6d9e697162c755d05',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/views/tests/handlers/views_handler_filter_string.test',
-  'hash' => 'b7d090780748faad478e619fd55673d746d4a0cf343d9e40ea96881324c34cbd',
+  'hash' => '33eec214b52abf24b54fa7eae0758f9f0cd59468c11829f87f575baa2017b84e',
+))
+->values(array(
+  'filename' => 'sites/all/modules/views/tests/handlers/views_handler_manytoone.test',
+  'hash' => '378fed0a25f7466666441a8d1f6692b9434c026d8b31c1a8659d54f1026fbbf6',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/views/tests/handlers/views_handler_sort.test',
-  'hash' => 'f4ff79e6bc54e83c4eb2777811f33702b7e9fe7416ef70ae00d100fa54d44fec',
+  'hash' => 'ace33efab99798d8221871038b2298b9e645f22278dd015dda5fac6688ee54ee',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/views/tests/handlers/views_handler_sort_date.test',
-  'hash' => 'f548584d7c6a71cabd3ce07e04053a38df3f3e1685210ce8114238fd05344c10',
+  'hash' => '4f997b2d2afdb64747b087c7e118287bc58872d72740e5004e17e5ee6ef643c7',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/views/tests/handlers/views_handler_sort_random.test',
-  'hash' => '4fdba9bf05a26720ffa97e7a37da65ddc9044bd2832f8c89007b82feb062f182',
+  'hash' => '9ff72485303fd209ef748c65d0cb52078400985b54f256b82f1b3bb28a323a1f',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/views/tests/node/views_node_revision_relations.test',
-  'hash' => '9467497a6d693615b48c8f57611a850002317bcb091b926d2efbbe56a4e61480',
+  'hash' => '108f56a3381d1c9a72f85d5a681ebeff66c587d032d13ed229dfc32c7d0195d7',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/views/tests/plugins/views_plugin_display.test',
-  'hash' => '4a6b136543a60999604c54125fa9d4f5aa61a5dcc71e2133d89325d81bc0fc2d',
+  'hash' => 'fb9399398d003056fe5b7d79f67de93b6a79a2a651f1041c73d5beedf632bfde',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/views/tests/styles/views_plugin_style.test',
-  'hash' => 'fb6c3279645fbcc1126acb3e1c908189e5240c647f81dcfd9b0761570c99d269',
+  'hash' => 'ec6258fd8ae26ac1832cf2ad9d0f5625965168126413ed6dc7798d09b658db03',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/views/tests/styles/views_plugin_style_base.test',
@@ -54566,103 +59964,115 @@
 ))
 ->values(array(
   'filename' => 'sites/all/modules/views/tests/styles/views_plugin_style_jump_menu.test',
-  'hash' => 'b88baa8aebe183943a6e4cf2df314fef13ac41b5844cd5fa4aa91557dd624895',
+  'hash' => 'a78de0a289d2813b8b0c4a841c147d8e9c4a2dd6f6b8a7c89b7a62a9daee2520',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/views/tests/styles/views_plugin_style_mapping.test',
-  'hash' => 'a4e68bc8cfbeff4a1d9b8085fd115bfe7a8c4b84c049573fa0409b0dc8c2f053',
+  'hash' => 'c0e4768100d803b5f1e48c2883ebb9951e538bd72cf4a7325a7c5c7970c2967a',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/views/tests/styles/views_plugin_style_unformatted.test',
-  'hash' => '033ca29d41af47cd7bd12d50fea6c956dde247202ebda9df7f637111481bb51d',
+  'hash' => 'd22239d0812c2f28df86b1742a0968c8ce76f120072a7bf5631b839967ff757a',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/views/tests/taxonomy/views_handler_relationship_node_term_data.test',
-  'hash' => '6074f5c7ae63225ea0cd26626ace6c017740e226f4d3c234e39869c31308223d',
+  'hash' => '6c4b72146690700987abca3f746e01278c0866438d5324263766fc4493802e12',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/views/tests/user/views_handler_field_user_name.test',
-  'hash' => '69641b6da26d8daee9a2ceb2d0df56668bf09b86db1d4071c275b6e8d0885f9e',
+  'hash' => 'fa92b2055c02ea2c3cd5f9619848f299cc83a3d21638a7dd44804ea9e0644ad0',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/views/tests/user/views_user.test',
-  'hash' => 'fbb63b42a0b7051bd4d33cf36841f39d7cc13a63b0554eca431b2a08c19facae',
+  'hash' => '59c88fe311319773d8d2e9d76b4f6b6f5731c86797e47760ec585295c376853c',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/views/tests/user/views_user_argument_default.test',
-  'hash' => '6423f2db7673763991b1fd0c452a7d84413c7dd888ca6c95545fadc531cfaaf4',
+  'hash' => 'a2026a55bec3bfd84601f4c03ba5a284732f9797c61c175a906b11a8fbe8effc',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/views/tests/user/views_user_argument_validate.test',
-  'hash' => 'c88c9e5d162958f8924849758486a0d83822ada06088f5cf71bfbe76932d8d84',
+  'hash' => '954b4b5886e74f20a113032734dfca6e5c1cfc068d31a5b9ba428337659a44e3',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/views/tests/views_access.test',
-  'hash' => 'f8b9d04b43c09a67ec722290a30408c1df8c163cf6e5863b41468bb4e381ee6f',
+  'hash' => '3f17cc9257c3c12f24197106b27654e811801fc5d5639022e23a98c7b45e4d7f',
+))
+->values(array(
+  'filename' => 'sites/all/modules/views/tests/views_ajax.test',
+  'hash' => '9741ae5e85382066f5a6401d1d85b333dedd741d13194c4dafcdc0ca81441e7b',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/views/tests/views_analyze.test',
-  'hash' => '5548e36c99bb626209d63e5cddbc31f49ad83865c983d2662c6826b328d24ffb',
+  'hash' => 'f521c5e3c781d6eaf1ad58536a875c2c8cefc973a23087073653f397b7de89df',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/views/tests/views_argument_default.test',
-  'hash' => '5950937aae4608bba5b86f366ef3a56cc6518bbccfeaeacda79fa13246d220e4',
+  'hash' => 'de7a8eb60e71b6bc2996d636bb91aa6c9c3adca6f857300b13c1e650d07ad66e',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/views/tests/views_argument_validator.test',
-  'hash' => '31f8f49946c8aa3b03d6d9a2281bdfb11c54071b28e83fb3e827ca6ff5e38c88',
+  'hash' => '8fe3d99942cd98f981a08ab49b09eb8bb2cf1e2fb09b53dc1030abb59611edba',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/views/tests/views_basic.test',
-  'hash' => '655bd33983f84bbea68a3f24bfab545d2c02f36a478566edf35a98a58ff0c6cf',
+  'hash' => 'e3715a9df468b1c2decb4d8a068a68ca6a3f8bd467066634075ee643d6cabb60',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/views/tests/views_cache.test',
-  'hash' => '76316e1f026c2ab81ef91450b9d6d5985cbfab087f839ea0edd112209bf84fd9',
+  'hash' => '325ac3e8100fe1c9aa065a72bdd238c863bf51da269d2a686a36060d05ede112',
+))
+->values(array(
+  'filename' => 'sites/all/modules/views/tests/views_clone.test',
+  'hash' => '99176a985b8e7ce8a83214f2a98a66394a2ebe7a852192e82f50d359bee89052',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/views/tests/views_exposed_form.test',
-  'hash' => '2b2b16373af8ecade91d7c77bd8c2da8286a33bde554874f5d81399d201c3228',
+  'hash' => '0427bd048cab45f3f07aca9f96e8e8f083f464ca61975c107f63988ec9fbc9a1',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/views/tests/views_glossary.test',
-  'hash' => '118d50177a68a6f88e3727e10f8bcc6f95176282cc42fbd604458eeb932a36e8',
+  'hash' => '777f21f55146c0f54a8fc3326a40cda1d47cfb8c4267c646ad38c76c9b1eb226',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/views/tests/views_groupby.test',
-  'hash' => 'ac6ca55f084f4884c06437815ccfa5c4d10bfef808c3f6f17a4f69537794a992',
+  'hash' => 'db01e228395517ed4d0d8fa234a63a14781068f60e54d07e40ae7ef12052394d',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/views/tests/views_handlers.test',
-  'hash' => 'a696e3d6b1748da03a04ac532f403700d07c920b9c405c628a6c94ea6764f501',
+  'hash' => '87f9e7bd3afa75f79bb1f3cdfff0b76fc4199174e197459b7c3f985c8256ffcd',
+))
+->values(array(
+  'filename' => 'sites/all/modules/views/tests/views_handler_filter.test',
+  'hash' => '39f2aade9f7d32ca2dd3d22fe3c36eb973695e315e8bca6dd76cb72fd5734779',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/views/tests/views_module.test',
-  'hash' => '3939798f2f679308903d4845f5625dd60df6110aec2615e33ab81e854d0b7e73',
+  'hash' => '2640ac503d4a832258f8836459b9228a6ce39849d199d407f85ff4a9d939c7a8',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/views/tests/views_pager.test',
-  'hash' => '6f448c8c13c5177afb35103119d6281958a2d6dbdfb96ae5f4ee77cb3b44adc5',
+  'hash' => 'fd1e54a66c8f4c4b7bc811cf0466ea1c7bb8d961b8b592d2101ae168dbc8f613',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/views/tests/views_query.test',
-  'hash' => '1ab587994dc43b1315e9a534d005798aecaa14182ba23a2b445e56516b9528cb',
+  'hash' => 'e7f5b1449539805086fd2b10239c8f702851a3dbefe8e93a89d85ab75361e9ff',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/views/tests/views_translatable.test',
-  'hash' => '6899c7b09ab72c262480cf78d200ecddfb683e8f2495438a55b35ae0e103a1b3',
+  'hash' => '09e2091a84268085a75992b30b761c76a58b8ca2c1612e41d899c180ff8d9066',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/views/tests/views_ui.test',
-  'hash' => 'f9687a363d7cc2828739583e3eedeb68c99acd505ff4e3036c806a42b93a2688',
+  'hash' => 'fbd2f7ed1320f28dc7ac17949296199218f9f10ee18bdc6c35c75c75e68876fb',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/views/tests/views_upgrade.test',
-  'hash' => 'c48bd74b85809dd78d963e525e38f3b6dd7e12aa249f73bd6a20247a40d6713a',
+  'hash' => 'ebebe64dc1fd8b70908e11e6ad4e7b81c4ab472d3da4773fd6f46932764fc60e',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/views/tests/views_view.test',
-  'hash' => 'a52e010d27cc2eb29804a3acd30f574adf11fad1f5860e431178b61cddbdbb69',
+  'hash' => '9fc3e62bfa6ad01bbf71b9b2ff065466290de378bd7adc28943dba1c1364fc83',
 ))
 ->execute();
 $connection->schema()->createTable('role', array(
@@ -54749,39 +60159,64 @@
   'module',
 ))
 ->values(array(
-  'rid' => '3',
-  'permission' => 'access administration pages',
-  'module' => 'system',
+  'rid' => '1',
+  'permission' => 'access comments',
+  'module' => 'comment',
 ))
 ->values(array(
-  'rid' => '3',
-  'permission' => 'access all views',
-  'module' => 'views',
+  'rid' => '1',
+  'permission' => 'access content',
+  'module' => 'node',
 ))
 ->values(array(
   'rid' => '1',
+  'permission' => 'use text format filtered_html',
+  'module' => 'filter',
+))
+->values(array(
+  'rid' => '2',
   'permission' => 'access comments',
   'module' => 'comment',
 ))
 ->values(array(
   'rid' => '2',
-  'permission' => 'access comments',
+  'permission' => 'access content',
+  'module' => 'node',
+))
+->values(array(
+  'rid' => '2',
+  'permission' => 'post comments',
   'module' => 'comment',
 ))
 ->values(array(
-  'rid' => '3',
-  'permission' => 'access comments',
+  'rid' => '2',
+  'permission' => 'skip comment approval',
   'module' => 'comment',
 ))
 ->values(array(
-  'rid' => '1',
-  'permission' => 'access content',
-  'module' => 'node',
+  'rid' => '2',
+  'permission' => 'use text format custom_text_format',
+  'module' => 'filter',
 ))
 ->values(array(
   'rid' => '2',
-  'permission' => 'access content',
-  'module' => 'node',
+  'permission' => 'use text format filtered_html',
+  'module' => 'filter',
+))
+->values(array(
+  'rid' => '3',
+  'permission' => 'access administration pages',
+  'module' => 'system',
+))
+->values(array(
+  'rid' => '3',
+  'permission' => 'access all views',
+  'module' => 'views',
+))
+->values(array(
+  'rid' => '3',
+  'permission' => 'access comments',
+  'module' => 'comment',
 ))
 ->values(array(
   'rid' => '3',
@@ -54798,21 +60233,11 @@
   'permission' => 'access contextual links',
   'module' => 'contextual',
 ))
-->values(array(
-  'rid' => '3',
-  'permission' => 'access dashboard',
-  'module' => 'dashboard',
-))
 ->values(array(
   'rid' => '3',
   'permission' => 'access news feeds',
   'module' => 'aggregator',
 ))
-->values(array(
-  'rid' => '3',
-  'permission' => 'access overlay',
-  'module' => 'overlay',
-))
 ->values(array(
   'rid' => '3',
   'permission' => 'access printer-friendly version',
@@ -54888,6 +60313,11 @@
   'permission' => 'administer content types',
   'module' => 'node',
 ))
+->values(array(
+  'rid' => '3',
+  'permission' => 'administer fields',
+  'module' => 'field',
+))
 ->values(array(
   'rid' => '3',
   'permission' => 'administer filters',
@@ -55093,11 +60523,6 @@
   'permission' => 'edit terms in 1',
   'module' => 'taxonomy',
 ))
-->values(array(
-  'rid' => '2',
-  'permission' => 'post comments',
-  'module' => 'comment',
-))
 ->values(array(
   'rid' => '3',
   'permission' => 'post comments',
@@ -55118,11 +60543,6 @@
   'permission' => 'select account cancellation method',
   'module' => 'user',
 ))
-->values(array(
-  'rid' => '2',
-  'permission' => 'skip comment approval',
-  'module' => 'comment',
-))
 ->values(array(
   'rid' => '3',
   'permission' => 'skip comment approval',
@@ -55168,26 +60588,11 @@
   'permission' => 'use PHP for settings',
   'module' => 'php',
 ))
-->values(array(
-  'rid' => '2',
-  'permission' => 'use text format custom_text_format',
-  'module' => 'filter',
-))
 ->values(array(
   'rid' => '3',
   'permission' => 'use text format custom_text_format',
   'module' => 'filter',
 ))
-->values(array(
-  'rid' => '1',
-  'permission' => 'use text format filtered_html',
-  'module' => 'filter',
-))
-->values(array(
-  'rid' => '2',
-  'permission' => 'use text format filtered_html',
-  'module' => 'filter',
-))
 ->values(array(
   'rid' => '3',
   'permission' => 'use text format filtered_html',
@@ -55357,6 +60762,12 @@
   'type' => 'node',
   'score' => '1',
 ))
+->values(array(
+  'word' => '9',
+  'sid' => '2',
+  'type' => 'node',
+  'score' => '26',
+))
 ->values(array(
   'word' => '99999999',
   'sid' => '1',
@@ -55369,6 +60780,18 @@
   'type' => 'node',
   'score' => '1',
 ))
+->values(array(
+  'word' => 'about',
+  'sid' => '2',
+  'type' => 'node',
+  'score' => '26',
+))
+->values(array(
+  'word' => 'absolute',
+  'sid' => '2',
+  'type' => 'node',
+  'score' => '1',
+))
 ->values(array(
   'word' => 'admin',
   'sid' => '1',
@@ -55381,6 +60804,18 @@
   'type' => 'node',
   'score' => '11',
 ))
+->values(array(
+  'word' => 'benjamin',
+  'sid' => '2',
+  'type' => 'node',
+  'score' => '11',
+))
+->values(array(
+  'word' => 'best',
+  'sid' => '2',
+  'type' => 'node',
+  'score' => '1',
+))
 ->values(array(
   'word' => 'click',
   'sid' => '1',
@@ -55399,12 +60834,24 @@
   'type' => 'node',
   'score' => '1',
 ))
+->values(array(
+  'word' => 'deep',
+  'sid' => '2',
+  'type' => 'node',
+  'score' => '26',
+))
 ->values(array(
   'word' => 'default',
   'sid' => '1',
   'type' => 'node',
   'score' => '11',
 ))
+->values(array(
+  'word' => 'ever',
+  'sid' => '2',
+  'type' => 'node',
+  'score' => '1',
+))
 ->values(array(
   'word' => 'examplecom',
   'sid' => '1',
@@ -55423,6 +60870,12 @@
   'type' => 'node',
   'score' => '2',
 ))
+->values(array(
+  'word' => 'know',
+  'sid' => '2',
+  'type' => 'node',
+  'score' => '1',
+))
 ->values(array(
   'word' => 'monday',
   'sid' => '1',
@@ -55460,134 +60913,86 @@
   'score' => '1',
 ))
 ->values(array(
-  'word' => 'register',
-  'sid' => '1',
-  'type' => 'node',
-  'score' => '2',
-))
-->values(array(
-  'word' => 'some',
-  'sid' => '1',
-  'type' => 'node',
-  'score' => '1',
-))
-->values(array(
-  'word' => 'submitted',
-  'sid' => '1',
-  'type' => 'node',
-  'score' => '1',
-))
-->values(array(
-  'word' => 'text',
-  'sid' => '1',
-  'type' => 'node',
-  'score' => '1',
-))
-->values(array(
-  'word' => 'this',
-  'sid' => '1',
-  'type' => 'node',
-  'score' => '1',
-))
-->values(array(
-  'word' => 'value',
-  'sid' => '1',
-  'type' => 'node',
-  'score' => '1',
-))
-->values(array(
-  'word' => 'value120suffix',
-  'sid' => '1',
-  'type' => 'node',
-  'score' => '1',
-))
-->values(array(
-  'word' => '9',
+  'word' => 'quark',
   'sid' => '2',
   'type' => 'node',
-  'score' => '26',
+  'score' => '11',
 ))
 ->values(array(
-  'word' => 'about',
-  'sid' => '2',
+  'word' => 'register',
+  'sid' => '1',
   'type' => 'node',
-  'score' => '26',
+  'score' => '2',
 ))
 ->values(array(
-  'word' => 'absolute',
+  'word' => 'show',
   'sid' => '2',
   'type' => 'node',
   'score' => '1',
 ))
 ->values(array(
-  'word' => 'benjamin',
+  'word' => 'sisko',
   'sid' => '2',
   'type' => 'node',
   'score' => '11',
 ))
 ->values(array(
-  'word' => 'best',
-  'sid' => '2',
+  'word' => 'some',
+  'sid' => '1',
   'type' => 'node',
   'score' => '1',
 ))
 ->values(array(
-  'word' => 'deep',
+  'word' => 'space',
   'sid' => '2',
   'type' => 'node',
   'score' => '26',
 ))
 ->values(array(
-  'word' => 'ever',
-  'sid' => '2',
+  'word' => 'submitted',
+  'sid' => '1',
   'type' => 'node',
   'score' => '1',
 ))
 ->values(array(
-  'word' => 'know',
-  'sid' => '2',
+  'word' => 'text',
+  'sid' => '1',
   'type' => 'node',
   'score' => '1',
 ))
 ->values(array(
-  'word' => 'quark',
-  'sid' => '2',
-  'type' => 'node',
-  'score' => '11',
-))
-->values(array(
-  'word' => 'show',
+  'word' => 'that',
   'sid' => '2',
   'type' => 'node',
   'score' => '1',
 ))
 ->values(array(
-  'word' => 'sisko',
+  'word' => 'thing',
   'sid' => '2',
   'type' => 'node',
-  'score' => '11',
+  'score' => '26',
 ))
 ->values(array(
-  'word' => 'space',
-  'sid' => '2',
+  'word' => 'this',
+  'sid' => '1',
   'type' => 'node',
-  'score' => '26',
+  'score' => '1',
 ))
 ->values(array(
-  'word' => 'that',
+  'word' => 'trust',
   'sid' => '2',
   'type' => 'node',
   'score' => '1',
 ))
 ->values(array(
-  'word' => 'thing',
-  'sid' => '2',
+  'word' => 'value',
+  'sid' => '1',
   'type' => 'node',
-  'score' => '26',
+  'score' => '1',
 ))
 ->values(array(
-  'word' => 'trust',
-  'sid' => '2',
+  'word' => 'value120suffix',
+  'sid' => '1',
   'type' => 'node',
   'score' => '1',
 ))
@@ -55892,7 +61297,7 @@
   'value',
 ))
 ->values(array(
-  'value' => '2',
+  'value' => '7',
 ))
 ->execute();
 $connection->schema()->createTable('sessions', array(
@@ -56070,6 +61475,32 @@
   'primary key' => array(
     'message_id',
   ),
+  'indexes' => array(
+    'reporter' => array(
+      'test_class',
+      'message_id',
+    ),
+  ),
+  'mysql_character_set' => 'utf8',
+));
+
+$connection->schema()->createTable('simpletest_test_id', array(
+  'fields' => array(
+    'test_id' => array(
+      'type' => 'serial',
+      'not null' => TRUE,
+      'size' => 'normal',
+    ),
+    'last_prefix' => array(
+      'type' => 'varchar',
+      'not null' => FALSE,
+      'length' => '60',
+      'default' => '',
+    ),
+  ),
+  'primary key' => array(
+    'test_id',
+  ),
   'mysql_character_set' => 'utf8',
 ));
 
@@ -56156,7 +61587,7 @@
   'bootstrap' => '0',
   'schema_version' => '7004',
   'weight' => '0',
-  'info' => 'a:14:{s:4:"name";s:10:"Aggregator";s:11:"description";s:57:"Aggregates syndicated content (RSS, RDF, and Atom feeds).";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:15:"aggregator.test";}s:9:"configure";s:41:"admin/config/services/aggregator/settings";s:11:"stylesheets";a:1:{s:3:"all";a:1:{s:14:"aggregator.css";s:33:"modules/aggregator/aggregator.css";}}s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:12:{s:4:"name";s:10:"Aggregator";s:11:"description";s:57:"Aggregates syndicated content (RSS, RDF, and Atom feeds).";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:15:"aggregator.test";}s:9:"configure";s:41:"admin/config/services/aggregator/settings";s:11:"stylesheets";a:1:{s:3:"all";a:1:{s:14:"aggregator.css";s:33:"modules/aggregator/aggregator.css";}}s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/aggregator/tests/aggregator_test.module',
@@ -56167,7 +61598,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:23:"Aggregator module tests";s:11:"description";s:46:"Support module for aggregator related testing.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:23:"Aggregator module tests";s:11:"description";s:46:"Support module for aggregator related testing.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/block/block.module',
@@ -56178,7 +61609,7 @@
   'bootstrap' => '0',
   'schema_version' => '7009',
   'weight' => '-5',
-  'info' => 'a:13:{s:4:"name";s:5:"Block";s:11:"description";s:140:"Controls the visual building blocks a page is constructed with. Blocks are boxes of content rendered into an area, or region, of a web page.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:10:"block.test";}s:9:"configure";s:21:"admin/structure/block";s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:5:"Block";s:11:"description";s:140:"Controls the visual building blocks a page is constructed with. Blocks are boxes of content rendered into an area, or region, of a web page.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:10:"block.test";}s:9:"configure";s:21:"admin/structure/block";s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/block/tests/block_test.module',
@@ -56189,7 +61620,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:10:"Block test";s:11:"description";s:21:"Provides test blocks.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:10:"Block test";s:11:"description";s:21:"Provides test blocks.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/blog/blog.module',
@@ -56200,7 +61631,7 @@
   'bootstrap' => '0',
   'schema_version' => '0',
   'weight' => '0',
-  'info' => 'a:12:{s:4:"name";s:4:"Blog";s:11:"description";s:25:"Enables multi-user blogs.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:9:"blog.test";}s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:10:{s:4:"name";s:4:"Blog";s:11:"description";s:25:"Enables multi-user blogs.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:9:"blog.test";}s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/book/book.module',
@@ -56211,7 +61642,7 @@
   'bootstrap' => '0',
   'schema_version' => '0',
   'weight' => '0',
-  'info' => 'a:14:{s:4:"name";s:4:"Book";s:11:"description";s:66:"Allows users to create and organize related content in an outline.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:9:"book.test";}s:9:"configure";s:27:"admin/content/book/settings";s:11:"stylesheets";a:1:{s:3:"all";a:1:{s:8:"book.css";s:21:"modules/book/book.css";}}s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:12:{s:4:"name";s:4:"Book";s:11:"description";s:66:"Allows users to create and organize related content in an outline.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:9:"book.test";}s:9:"configure";s:27:"admin/content/book/settings";s:11:"stylesheets";a:1:{s:3:"all";a:1:{s:8:"book.css";s:21:"modules/book/book.css";}}s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/color/color.module',
@@ -56222,7 +61653,7 @@
   'bootstrap' => '0',
   'schema_version' => '7001',
   'weight' => '0',
-  'info' => 'a:12:{s:4:"name";s:5:"Color";s:11:"description";s:70:"Allows administrators to change the color scheme of compatible themes.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:10:"color.test";}s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:10:{s:4:"name";s:5:"Color";s:11:"description";s:70:"Allows administrators to change the color scheme of compatible themes.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:10:"color.test";}s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/comment/comment.module',
@@ -56233,7 +61664,7 @@
   'bootstrap' => '0',
   'schema_version' => '7009',
   'weight' => '0',
-  'info' => 'a:14:{s:4:"name";s:7:"Comment";s:11:"description";s:57:"Allows users to comment on and discuss published content.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:12:"dependencies";a:1:{i:0;s:4:"text";}s:5:"files";a:2:{i:0;s:14:"comment.module";i:1;s:12:"comment.test";}s:9:"configure";s:21:"admin/content/comment";s:11:"stylesheets";a:1:{s:3:"all";a:1:{s:11:"comment.css";s:27:"modules/comment/comment.css";}}s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:12:{s:4:"name";s:7:"Comment";s:11:"description";s:57:"Allows users to comment on and discuss published content.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:12:"dependencies";a:1:{i:0;s:4:"text";}s:5:"files";a:2:{i:0;s:14:"comment.module";i:1;s:12:"comment.test";}s:9:"configure";s:21:"admin/content/comment";s:11:"stylesheets";a:1:{s:3:"all";a:1:{s:11:"comment.css";s:27:"modules/comment/comment.css";}}s:5:"mtime";i:1664863480;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/contact/contact.module',
@@ -56244,7 +61675,7 @@
   'bootstrap' => '0',
   'schema_version' => '7003',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:7:"Contact";s:11:"description";s:61:"Enables the use of both personal and site-wide contact forms.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:12:"contact.test";}s:9:"configure";s:23:"admin/structure/contact";s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:7:"Contact";s:11:"description";s:61:"Enables the use of both personal and site-wide contact forms.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:12:"contact.test";}s:9:"configure";s:23:"admin/structure/contact";s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/contextual/contextual.module',
@@ -56255,7 +61686,7 @@
   'bootstrap' => '0',
   'schema_version' => '0',
   'weight' => '0',
-  'info' => 'a:12:{s:4:"name";s:16:"Contextual links";s:11:"description";s:75:"Provides contextual links to perform actions related to elements on a page.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:15:"contextual.test";}s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:10:{s:4:"name";s:16:"Contextual links";s:11:"description";s:75:"Provides contextual links to perform actions related to elements on a page.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:15:"contextual.test";}s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/dashboard/dashboard.module',
@@ -56264,9 +61695,9 @@
   'owner' => '',
   'status' => '0',
   'bootstrap' => '0',
-  'schema_version' => '0',
+  'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:9:"Dashboard";s:11:"description";s:136:"Provides a dashboard page in the administrative interface for organizing administrative tasks and tracking information within your site.";s:4:"core";s:3:"7.x";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.40";s:5:"files";a:1:{i:0;s:14:"dashboard.test";}s:12:"dependencies";a:1:{i:0;s:5:"block";}s:9:"configure";s:25:"admin/dashboard/customize";s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:9:"Dashboard";s:11:"description";s:136:"Provides a dashboard page in the administrative interface for organizing administrative tasks and tracking information within your site.";s:4:"core";s:3:"7.x";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.92";s:5:"files";a:1:{i:0;s:14:"dashboard.test";}s:12:"dependencies";a:1:{i:0;s:5:"block";}s:9:"configure";s:25:"admin/dashboard/customize";s:5:"mtime";i:1664863480;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/dblog/dblog.module',
@@ -56275,9 +61706,9 @@
   'owner' => '',
   'status' => '1',
   'bootstrap' => '1',
-  'schema_version' => '7002',
+  'schema_version' => '7003',
   'weight' => '0',
-  'info' => 'a:12:{s:4:"name";s:16:"Database logging";s:11:"description";s:47:"Logs and records system events to the database.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:10:"dblog.test";}s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:10:{s:4:"name";s:16:"Database logging";s:11:"description";s:47:"Logs and records system events to the database.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:10:"dblog.test";}s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/field/field.module',
@@ -56286,9 +61717,9 @@
   'owner' => '',
   'status' => '1',
   'bootstrap' => '0',
-  'schema_version' => '7003',
+  'schema_version' => '7004',
   'weight' => '0',
-  'info' => 'a:14:{s:4:"name";s:5:"Field";s:11:"description";s:57:"Field API to add fields to entities like nodes and users.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:5:"files";a:4:{i:0;s:12:"field.module";i:1;s:16:"field.attach.inc";i:2;s:20:"field.info.class.inc";i:3;s:16:"tests/field.test";}s:12:"dependencies";a:1:{i:0;s:17:"field_sql_storage";}s:8:"required";b:1;s:11:"stylesheets";a:1:{s:3:"all";a:1:{s:15:"theme/field.css";s:29:"modules/field/theme/field.css";}}s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:12:{s:4:"name";s:5:"Field";s:11:"description";s:57:"Field API to add fields to entities like nodes and users.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:5:"files";a:4:{i:0;s:12:"field.module";i:1;s:16:"field.attach.inc";i:2;s:20:"field.info.class.inc";i:3;s:16:"tests/field.test";}s:12:"dependencies";a:1:{i:0;s:17:"field_sql_storage";}s:8:"required";b:1;s:11:"stylesheets";a:1:{s:3:"all";a:1:{s:15:"theme/field.css";s:29:"modules/field/theme/field.css";}}s:5:"mtime";i:1664863480;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/field/modules/field_sql_storage/field_sql_storage.module',
@@ -56299,7 +61730,7 @@
   'bootstrap' => '0',
   'schema_version' => '7002',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:17:"Field SQL storage";s:11:"description";s:37:"Stores field data in an SQL database.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:12:"dependencies";a:1:{i:0;s:5:"field";}s:5:"files";a:1:{i:0;s:22:"field_sql_storage.test";}s:8:"required";b:1;s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:17:"Field SQL storage";s:11:"description";s:37:"Stores field data in an SQL database.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:12:"dependencies";a:1:{i:0;s:5:"field";}s:5:"files";a:1:{i:0;s:22:"field_sql_storage.test";}s:8:"required";b:1;s:5:"mtime";i:1664863480;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/field/modules/list/list.module',
@@ -56310,7 +61741,7 @@
   'bootstrap' => '0',
   'schema_version' => '7002',
   'weight' => '0',
-  'info' => 'a:14:{s:4:"name";s:4:"List";s:11:"description";s:69:"Defines list field types. Use with Options to create selection lists.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:12:"dependencies";a:2:{i:0;s:5:"field";i:1;s:7:"options";}s:5:"files";a:1:{i:0;s:15:"tests/list.test";}s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;s:8:"required";b:1;s:11:"explanation";s:73:"Field type(s) in use - see <a href="/admin/reports/fields">Field list</a>";}',
+  'info' => 'a:12:{s:4:"name";s:4:"List";s:11:"description";s:69:"Defines list field types. Use with Options to create selection lists.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:12:"dependencies";a:2:{i:0;s:5:"field";i:1;s:7:"options";}s:5:"files";a:1:{i:0;s:15:"tests/list.test";}s:5:"mtime";i:1664863480;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;s:8:"required";b:1;s:11:"explanation";s:73:"Field type(s) in use - see <a href="/admin/reports/fields">Field list</a>";}',
 ))
 ->values(array(
   'filename' => 'modules/field/modules/list/tests/list_test.module',
@@ -56321,7 +61752,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:9:"List test";s:11:"description";s:41:"Support module for the List module tests.";s:4:"core";s:3:"7.x";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.40";s:6:"hidden";b:1;s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:9:"List test";s:11:"description";s:41:"Support module for the List module tests.";s:4:"core";s:3:"7.x";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.92";s:6:"hidden";b:1;s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/field/modules/number/number.module',
@@ -56332,7 +61763,7 @@
   'bootstrap' => '0',
   'schema_version' => '0',
   'weight' => '0',
-  'info' => 'a:14:{s:4:"name";s:6:"Number";s:11:"description";s:28:"Defines numeric field types.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:12:"dependencies";a:1:{i:0;s:5:"field";}s:5:"files";a:1:{i:0;s:11:"number.test";}s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;s:8:"required";b:1;s:11:"explanation";s:73:"Field type(s) in use - see <a href="/admin/reports/fields">Field list</a>";}',
+  'info' => 'a:12:{s:4:"name";s:6:"Number";s:11:"description";s:28:"Defines numeric field types.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:12:"dependencies";a:1:{i:0;s:5:"field";}s:5:"files";a:1:{i:0;s:11:"number.test";}s:5:"mtime";i:1664863480;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;s:8:"required";b:1;s:11:"explanation";s:73:"Field type(s) in use - see <a href="/admin/reports/fields">Field list</a>";}',
 ))
 ->values(array(
   'filename' => 'modules/field/modules/options/options.module',
@@ -56343,7 +61774,7 @@
   'bootstrap' => '0',
   'schema_version' => '0',
   'weight' => '0',
-  'info' => 'a:12:{s:4:"name";s:7:"Options";s:11:"description";s:82:"Defines selection, check box and radio button widgets for text and numeric fields.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:12:"dependencies";a:1:{i:0;s:5:"field";}s:5:"files";a:1:{i:0;s:12:"options.test";}s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:10:{s:4:"name";s:7:"Options";s:11:"description";s:82:"Defines selection, check box and radio button widgets for text and numeric fields.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:12:"dependencies";a:1:{i:0;s:5:"field";}s:5:"files";a:1:{i:0;s:12:"options.test";}s:5:"mtime";i:1664863480;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/field/modules/text/text.module',
@@ -56354,7 +61785,7 @@
   'bootstrap' => '0',
   'schema_version' => '7000',
   'weight' => '0',
-  'info' => 'a:14:{s:4:"name";s:4:"Text";s:11:"description";s:32:"Defines simple text field types.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:12:"dependencies";a:1:{i:0;s:5:"field";}s:5:"files";a:1:{i:0;s:9:"text.test";}s:8:"required";b:1;s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;s:11:"explanation";s:73:"Field type(s) in use - see <a href="/admin/reports/fields">Field list</a>";}',
+  'info' => 'a:12:{s:4:"name";s:4:"Text";s:11:"description";s:32:"Defines simple text field types.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:12:"dependencies";a:1:{i:0;s:5:"field";}s:5:"files";a:1:{i:0;s:9:"text.test";}s:8:"required";b:1;s:5:"mtime";i:1664863480;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;s:11:"explanation";s:73:"Field type(s) in use - see <a href="/admin/reports/fields">Field list</a>";}',
 ))
 ->values(array(
   'filename' => 'modules/field/tests/field_test.module',
@@ -56365,7 +61796,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:14:"Field API Test";s:11:"description";s:39:"Support module for the Field API tests.";s:4:"core";s:3:"7.x";s:7:"package";s:7:"Testing";s:5:"files";a:1:{i:0;s:21:"field_test.entity.inc";}s:7:"version";s:4:"7.40";s:6:"hidden";b:1;s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:14:"Field API Test";s:11:"description";s:39:"Support module for the Field API tests.";s:4:"core";s:3:"7.x";s:7:"package";s:7:"Testing";s:5:"files";a:1:{i:0;s:21:"field_test.entity.inc";}s:7:"version";s:4:"7.92";s:6:"hidden";b:1;s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/field_ui/field_ui.module',
@@ -56376,7 +61807,7 @@
   'bootstrap' => '0',
   'schema_version' => '0',
   'weight' => '0',
-  'info' => 'a:12:{s:4:"name";s:8:"Field UI";s:11:"description";s:33:"User interface for the Field API.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:12:"dependencies";a:1:{i:0;s:5:"field";}s:5:"files";a:1:{i:0;s:13:"field_ui.test";}s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:10:{s:4:"name";s:8:"Field UI";s:11:"description";s:33:"User interface for the Field API.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:12:"dependencies";a:1:{i:0;s:5:"field";}s:5:"files";a:1:{i:0;s:13:"field_ui.test";}s:5:"mtime";i:1664863480;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/file/file.module',
@@ -56387,7 +61818,7 @@
   'bootstrap' => '0',
   'schema_version' => '0',
   'weight' => '0',
-  'info' => 'a:14:{s:4:"name";s:4:"File";s:11:"description";s:26:"Defines a file field type.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:12:"dependencies";a:1:{i:0;s:5:"field";}s:5:"files";a:1:{i:0;s:15:"tests/file.test";}s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;s:8:"required";b:1;s:11:"explanation";s:73:"Field type(s) in use - see <a href="/admin/reports/fields">Field list</a>";}',
+  'info' => 'a:12:{s:4:"name";s:4:"File";s:11:"description";s:26:"Defines a file field type.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:12:"dependencies";a:1:{i:0;s:5:"field";}s:5:"files";a:1:{i:0;s:15:"tests/file.test";}s:5:"mtime";i:1664863480;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;s:8:"required";b:1;s:11:"explanation";s:73:"Field type(s) in use - see <a href="/admin/reports/fields">Field list</a>";}',
 ))
 ->values(array(
   'filename' => 'modules/file/tests/file_module_test.module',
@@ -56398,7 +61829,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:9:"File test";s:11:"description";s:53:"Provides hooks for testing File module functionality.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:9:"File test";s:11:"description";s:53:"Provides hooks for testing File module functionality.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/filter/filter.module',
@@ -56409,7 +61840,7 @@
   'bootstrap' => '0',
   'schema_version' => '7010',
   'weight' => '0',
-  'info' => 'a:14:{s:4:"name";s:6:"Filter";s:11:"description";s:43:"Filters content in preparation for display.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:11:"filter.test";}s:8:"required";b:1;s:9:"configure";s:28:"admin/config/content/formats";s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:12:{s:4:"name";s:6:"Filter";s:11:"description";s:43:"Filters content in preparation for display.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:11:"filter.test";}s:8:"required";b:1;s:9:"configure";s:28:"admin/config/content/formats";s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/forum/forum.module',
@@ -56420,7 +61851,7 @@
   'bootstrap' => '0',
   'schema_version' => '7012',
   'weight' => '1',
-  'info' => 'a:14:{s:4:"name";s:5:"Forum";s:11:"description";s:27:"Provides discussion forums.";s:12:"dependencies";a:2:{i:0;s:8:"taxonomy";i:1;s:7:"comment";}s:7:"package";s:4:"Core";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:10:"forum.test";}s:9:"configure";s:21:"admin/structure/forum";s:11:"stylesheets";a:1:{s:3:"all";a:1:{s:9:"forum.css";s:23:"modules/forum/forum.css";}}s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:12:{s:4:"name";s:5:"Forum";s:11:"description";s:27:"Provides discussion forums.";s:12:"dependencies";a:2:{i:0;s:8:"taxonomy";i:1;s:7:"comment";}s:7:"package";s:4:"Core";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:10:"forum.test";}s:9:"configure";s:21:"admin/structure/forum";s:11:"stylesheets";a:1:{s:3:"all";a:1:{s:9:"forum.css";s:23:"modules/forum/forum.css";}}s:5:"mtime";i:1664863480;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/help/help.module',
@@ -56431,7 +61862,7 @@
   'bootstrap' => '0',
   'schema_version' => '0',
   'weight' => '0',
-  'info' => 'a:12:{s:4:"name";s:4:"Help";s:11:"description";s:35:"Manages the display of online help.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:9:"help.test";}s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:10:{s:4:"name";s:4:"Help";s:11:"description";s:35:"Manages the display of online help.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:9:"help.test";}s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/image/image.module',
@@ -56442,7 +61873,18 @@
   'bootstrap' => '0',
   'schema_version' => '7005',
   'weight' => '0',
-  'info' => 'a:15:{s:4:"name";s:5:"Image";s:11:"description";s:34:"Provides image manipulation tools.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:12:"dependencies";a:1:{i:0;s:4:"file";}s:5:"files";a:1:{i:0;s:10:"image.test";}s:9:"configure";s:31:"admin/config/media/image-styles";s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;s:8:"required";b:1;s:11:"explanation";s:73:"Field type(s) in use - see <a href="/admin/reports/fields">Field list</a>";}',
+  'info' => 'a:13:{s:4:"name";s:5:"Image";s:11:"description";s:34:"Provides image manipulation tools.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:12:"dependencies";a:1:{i:0;s:4:"file";}s:5:"files";a:1:{i:0;s:10:"image.test";}s:9:"configure";s:31:"admin/config/media/image-styles";s:5:"mtime";i:1664863480;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;s:8:"required";b:1;s:11:"explanation";s:73:"Field type(s) in use - see <a href="/admin/reports/fields">Field list</a>";}',
+))
+->values(array(
+  'filename' => 'modules/image/tests/image_module_styles_test.module',
+  'name' => 'image_module_styles_test',
+  'type' => 'module',
+  'owner' => '',
+  'status' => '0',
+  'bootstrap' => '0',
+  'schema_version' => '-1',
+  'weight' => '0',
+  'info' => 'a:11:{s:4:"name";s:17:"Image Styles test";s:11:"description";s:80:"Provides additional hook implementations for testing Image Styles functionality.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:31:"image_module_styles_test.module";}s:12:"dependencies";a:1:{i:0;s:17:"image_module_test";}s:6:"hidden";b:1;s:5:"mtime";i:1664871879;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/image/tests/image_module_test.module',
@@ -56453,7 +61895,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:10:"Image test";s:11:"description";s:69:"Provides hook implementations for testing Image module functionality.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:24:"image_module_test.module";}s:6:"hidden";b:1;s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:10:"Image test";s:11:"description";s:69:"Provides hook implementations for testing Image module functionality.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:24:"image_module_test.module";}s:6:"hidden";b:1;s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/locale/locale.module',
@@ -56464,7 +61906,7 @@
   'bootstrap' => '0',
   'schema_version' => '7005',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:6:"Locale";s:11:"description";s:119:"Adds language handling functionality and enables the translation of the user interface to languages other than English.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:11:"locale.test";}s:9:"configure";s:30:"admin/config/regional/language";s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:6:"Locale";s:11:"description";s:119:"Adds language handling functionality and enables the translation of the user interface to languages other than English.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:11:"locale.test";}s:9:"configure";s:30:"admin/config/regional/language";s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/locale/tests/locale_test.module',
@@ -56475,7 +61917,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:11:"Locale Test";s:11:"description";s:42:"Support module for the locale layer tests.";s:4:"core";s:3:"7.x";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.40";s:6:"hidden";b:1;s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:11:"Locale Test";s:11:"description";s:42:"Support module for the locale layer tests.";s:4:"core";s:3:"7.x";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.92";s:6:"hidden";b:1;s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/menu/menu.module',
@@ -56486,7 +61928,7 @@
   'bootstrap' => '0',
   'schema_version' => '7003',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:4:"Menu";s:11:"description";s:60:"Allows administrators to customize the site navigation menu.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:9:"menu.test";}s:9:"configure";s:20:"admin/structure/menu";s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:4:"Menu";s:11:"description";s:60:"Allows administrators to customize the site navigation menu.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:9:"menu.test";}s:9:"configure";s:20:"admin/structure/menu";s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/node/node.module',
@@ -56495,9 +61937,9 @@
   'owner' => '',
   'status' => '1',
   'bootstrap' => '0',
-  'schema_version' => '7015',
+  'schema_version' => '7016',
   'weight' => '0',
-  'info' => 'a:15:{s:4:"name";s:4:"Node";s:11:"description";s:66:"Allows content to be submitted to the site and displayed on pages.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:5:"files";a:2:{i:0;s:11:"node.module";i:1;s:9:"node.test";}s:8:"required";b:1;s:9:"configure";s:21:"admin/structure/types";s:11:"stylesheets";a:1:{s:3:"all";a:1:{s:8:"node.css";s:21:"modules/node/node.css";}}s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:13:{s:4:"name";s:4:"Node";s:11:"description";s:66:"Allows content to be submitted to the site and displayed on pages.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:5:"files";a:2:{i:0;s:11:"node.module";i:1;s:9:"node.test";}s:8:"required";b:1;s:9:"configure";s:21:"admin/structure/types";s:11:"stylesheets";a:1:{s:3:"all";a:1:{s:8:"node.css";s:21:"modules/node/node.css";}}s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/node/tests/node_access_test.module',
@@ -56508,7 +61950,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:24:"Node module access tests";s:11:"description";s:43:"Support module for node permission testing.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:24:"Node module access tests";s:11:"description";s:43:"Support module for node permission testing.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/node/tests/node_test.module',
@@ -56519,7 +61961,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:17:"Node module tests";s:11:"description";s:40:"Support module for node related testing.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:17:"Node module tests";s:11:"description";s:40:"Support module for node related testing.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/node/tests/node_test_exception.module',
@@ -56530,7 +61972,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:27:"Node module exception tests";s:11:"description";s:50:"Support module for node related exception testing.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:27:"Node module exception tests";s:11:"description";s:50:"Support module for node related exception testing.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/openid/openid.module',
@@ -56539,9 +61981,9 @@
   'owner' => '',
   'status' => '0',
   'bootstrap' => '0',
-  'schema_version' => '7000',
+  'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:12:{s:4:"name";s:6:"OpenID";s:11:"description";s:48:"Allows users to log into your site using OpenID.";s:7:"version";s:4:"7.40";s:7:"package";s:4:"Core";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:11:"openid.test";}s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:10:{s:4:"name";s:6:"OpenID";s:11:"description";s:48:"Allows users to log into your site using OpenID.";s:7:"version";s:4:"7.92";s:7:"package";s:4:"Core";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:11:"openid.test";}s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/openid/tests/openid_test.module',
@@ -56552,7 +61994,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:21:"OpenID dummy provider";s:11:"description";s:33:"OpenID provider used for testing.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:12:"dependencies";a:1:{i:0;s:6:"openid";}s:6:"hidden";b:1;s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:21:"OpenID dummy provider";s:11:"description";s:33:"OpenID provider used for testing.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:12:"dependencies";a:1:{i:0;s:6:"openid";}s:6:"hidden";b:1;s:5:"mtime";i:1664863480;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/overlay/overlay.module',
@@ -56561,9 +62003,9 @@
   'owner' => '',
   'status' => '0',
   'bootstrap' => '0',
-  'schema_version' => '0',
+  'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:12:{s:4:"name";s:7:"Overlay";s:11:"description";s:59:"Displays the Drupal administration interface in an overlay.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:10:{s:4:"name";s:7:"Overlay";s:11:"description";s:59:"Displays the Drupal administration interface in an overlay.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/path/path.module',
@@ -56574,7 +62016,7 @@
   'bootstrap' => '0',
   'schema_version' => '0',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:4:"Path";s:11:"description";s:28:"Allows users to rename URLs.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:9:"path.test";}s:9:"configure";s:24:"admin/config/search/path";s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:4:"Path";s:11:"description";s:28:"Allows users to rename URLs.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:9:"path.test";}s:9:"configure";s:24:"admin/config/search/path";s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/php/php.module',
@@ -56585,7 +62027,7 @@
   'bootstrap' => '0',
   'schema_version' => '0',
   'weight' => '0',
-  'info' => 'a:12:{s:4:"name";s:10:"PHP filter";s:11:"description";s:50:"Allows embedded PHP code/snippets to be evaluated.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:8:"php.test";}s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:10:{s:4:"name";s:10:"PHP filter";s:11:"description";s:50:"Allows embedded PHP code/snippets to be evaluated.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:8:"php.test";}s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/poll/poll.module',
@@ -56596,7 +62038,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:4:"Poll";s:11:"description";s:95:"Allows your site to capture votes on different topics in the form of multiple choice questions.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:9:"poll.test";}s:11:"stylesheets";a:1:{s:3:"all";a:1:{s:8:"poll.css";s:21:"modules/poll/poll.css";}}s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:4:"Poll";s:11:"description";s:95:"Allows your site to capture votes on different topics in the form of multiple choice questions.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:9:"poll.test";}s:11:"stylesheets";a:1:{s:3:"all";a:1:{s:8:"poll.css";s:21:"modules/poll/poll.css";}}s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/profile/profile.module',
@@ -56607,7 +62049,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:14:{s:4:"name";s:7:"Profile";s:11:"description";s:36:"Supports configurable user profiles.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:12:"profile.test";}s:9:"configure";s:27:"admin/config/people/profile";s:6:"hidden";b:1;s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:12:{s:4:"name";s:7:"Profile";s:11:"description";s:36:"Supports configurable user profiles.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:12:"profile.test";}s:9:"configure";s:27:"admin/config/people/profile";s:6:"hidden";b:1;s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/rdf/rdf.module',
@@ -56618,7 +62060,7 @@
   'bootstrap' => '0',
   'schema_version' => '0',
   'weight' => '0',
-  'info' => 'a:12:{s:4:"name";s:3:"RDF";s:11:"description";s:148:"Enriches your content with metadata to let other applications (e.g. search engines, aggregators) better understand its relationships and attributes.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:8:"rdf.test";}s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:10:{s:4:"name";s:3:"RDF";s:11:"description";s:148:"Enriches your content with metadata to let other applications (e.g. search engines, aggregators) better understand its relationships and attributes.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:8:"rdf.test";}s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/rdf/tests/rdf_test.module',
@@ -56629,7 +62071,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:16:"RDF module tests";s:11:"description";s:38:"Support module for RDF module testing.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:16:"RDF module tests";s:11:"description";s:38:"Support module for RDF module testing.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:12:"dependencies";a:1:{i:0;s:4:"blog";}s:5:"mtime";i:1664863480;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/search/search.module',
@@ -56640,7 +62082,7 @@
   'bootstrap' => '0',
   'schema_version' => '7000',
   'weight' => '0',
-  'info' => 'a:14:{s:4:"name";s:6:"Search";s:11:"description";s:36:"Enables site-wide keyword searching.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:5:"files";a:2:{i:0;s:19:"search.extender.inc";i:1;s:11:"search.test";}s:9:"configure";s:28:"admin/config/search/settings";s:11:"stylesheets";a:1:{s:3:"all";a:1:{s:10:"search.css";s:25:"modules/search/search.css";}}s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:12:{s:4:"name";s:6:"Search";s:11:"description";s:36:"Enables site-wide keyword searching.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:5:"files";a:2:{i:0;s:19:"search.extender.inc";i:1;s:11:"search.test";}s:9:"configure";s:28:"admin/config/search/settings";s:11:"stylesheets";a:1:{s:3:"all";a:1:{s:10:"search.css";s:25:"modules/search/search.css";}}s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/search/tests/search_embedded_form.module',
@@ -56651,7 +62093,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:20:"Search embedded form";s:11:"description";s:59:"Support module for search module testing of embedded forms.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:20:"Search embedded form";s:11:"description";s:59:"Support module for search module testing of embedded forms.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/search/tests/search_extra_type.module',
@@ -56662,7 +62104,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:16:"Test search type";s:11:"description";s:41:"Support module for search module testing.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:16:"Test search type";s:11:"description";s:41:"Support module for search module testing.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/search/tests/search_node_tags.module',
@@ -56673,7 +62115,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:21:"Test search node tags";s:11:"description";s:44:"Support module for Node search tags testing.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:21:"Test search node tags";s:11:"description";s:44:"Support module for Node search tags testing.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/shortcut/shortcut.module',
@@ -56684,7 +62126,7 @@
   'bootstrap' => '0',
   'schema_version' => '0',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:8:"Shortcut";s:11:"description";s:60:"Allows users to manage customizable lists of shortcut links.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:13:"shortcut.test";}s:9:"configure";s:36:"admin/config/user-interface/shortcut";s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:8:"Shortcut";s:11:"description";s:60:"Allows users to manage customizable lists of shortcut links.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:13:"shortcut.test";}s:9:"configure";s:36:"admin/config/user-interface/shortcut";s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/simpletest.module',
@@ -56695,7 +62137,7 @@
   'bootstrap' => '0',
   'schema_version' => '0',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:7:"Testing";s:11:"description";s:53:"Provides a framework for unit and functional testing.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:5:"files";a:50:{i:0;s:15:"simpletest.test";i:1;s:24:"drupal_web_test_case.php";i:2;s:18:"tests/actions.test";i:3;s:15:"tests/ajax.test";i:4;s:16:"tests/batch.test";i:5;s:15:"tests/boot.test";i:6;s:20:"tests/bootstrap.test";i:7;s:16:"tests/cache.test";i:8;s:17:"tests/common.test";i:9;s:24:"tests/database_test.test";i:10;s:22:"tests/entity_crud.test";i:11;s:32:"tests/entity_crud_hook_test.test";i:12;s:23:"tests/entity_query.test";i:13;s:16:"tests/error.test";i:14;s:15:"tests/file.test";i:15;s:23:"tests/filetransfer.test";i:16;s:15:"tests/form.test";i:17;s:16:"tests/graph.test";i:18;s:16:"tests/image.test";i:19;s:15:"tests/lock.test";i:20;s:15:"tests/mail.test";i:21;s:15:"tests/menu.test";i:22;s:17:"tests/module.test";i:23;s:16:"tests/pager.test";i:24;s:19:"tests/password.test";i:25;s:15:"tests/path.test";i:26;s:19:"tests/registry.test";i:27;s:17:"tests/schema.test";i:28;s:18:"tests/session.test";i:29;s:20:"tests/tablesort.test";i:30;s:16:"tests/theme.test";i:31;s:18:"tests/unicode.test";i:32;s:17:"tests/update.test";i:33;s:17:"tests/xmlrpc.test";i:34;s:26:"tests/upgrade/upgrade.test";i:35;s:34:"tests/upgrade/upgrade.comment.test";i:36;s:33:"tests/upgrade/upgrade.filter.test";i:37;s:32:"tests/upgrade/upgrade.forum.test";i:38;s:33:"tests/upgrade/upgrade.locale.test";i:39;s:31:"tests/upgrade/upgrade.menu.test";i:40;s:31:"tests/upgrade/upgrade.node.test";i:41;s:35:"tests/upgrade/upgrade.taxonomy.test";i:42;s:34:"tests/upgrade/upgrade.trigger.test";i:43;s:39:"tests/upgrade/upgrade.translatable.test";i:44;s:33:"tests/upgrade/upgrade.upload.test";i:45;s:31:"tests/upgrade/upgrade.user.test";i:46;s:36:"tests/upgrade/update.aggregator.test";i:47;s:33:"tests/upgrade/update.trigger.test";i:48;s:31:"tests/upgrade/update.field.test";i:49;s:30:"tests/upgrade/update.user.test";}s:9:"configure";s:41:"admin/config/development/testing/settings";s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:7:"Testing";s:11:"description";s:53:"Provides a framework for unit and functional testing.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:5:"files";a:51:{i:0;s:15:"simpletest.test";i:1;s:24:"drupal_web_test_case.php";i:2;s:18:"tests/actions.test";i:3;s:15:"tests/ajax.test";i:4;s:16:"tests/batch.test";i:5;s:15:"tests/boot.test";i:6;s:20:"tests/bootstrap.test";i:7;s:16:"tests/cache.test";i:8;s:17:"tests/common.test";i:9;s:24:"tests/database_test.test";i:10;s:22:"tests/entity_crud.test";i:11;s:32:"tests/entity_crud_hook_test.test";i:12;s:23:"tests/entity_query.test";i:13;s:16:"tests/error.test";i:14;s:15:"tests/file.test";i:15;s:23:"tests/filetransfer.test";i:16;s:15:"tests/form.test";i:17;s:16:"tests/graph.test";i:18;s:16:"tests/image.test";i:19;s:15:"tests/lock.test";i:20;s:15:"tests/mail.test";i:21;s:15:"tests/menu.test";i:22;s:17:"tests/module.test";i:23;s:16:"tests/pager.test";i:24;s:19:"tests/password.test";i:25;s:15:"tests/path.test";i:26;s:19:"tests/registry.test";i:27;s:28:"tests/request_sanitizer.test";i:28;s:17:"tests/schema.test";i:29;s:18:"tests/session.test";i:30;s:20:"tests/tablesort.test";i:31;s:16:"tests/theme.test";i:32;s:18:"tests/unicode.test";i:33;s:17:"tests/update.test";i:34;s:17:"tests/xmlrpc.test";i:35;s:26:"tests/upgrade/upgrade.test";i:36;s:34:"tests/upgrade/upgrade.comment.test";i:37;s:33:"tests/upgrade/upgrade.filter.test";i:38;s:32:"tests/upgrade/upgrade.forum.test";i:39;s:33:"tests/upgrade/upgrade.locale.test";i:40;s:31:"tests/upgrade/upgrade.menu.test";i:41;s:31:"tests/upgrade/upgrade.node.test";i:42;s:35:"tests/upgrade/upgrade.taxonomy.test";i:43;s:34:"tests/upgrade/upgrade.trigger.test";i:44;s:39:"tests/upgrade/upgrade.translatable.test";i:45;s:33:"tests/upgrade/upgrade.upload.test";i:46;s:31:"tests/upgrade/upgrade.user.test";i:47;s:36:"tests/upgrade/update.aggregator.test";i:48;s:33:"tests/upgrade/update.trigger.test";i:49;s:31:"tests/upgrade/update.field.test";i:50;s:30:"tests/upgrade/update.user.test";}s:9:"configure";s:41:"admin/config/development/testing/settings";s:5:"mtime";i:1664871879;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/actions_loop_test.module',
@@ -56706,7 +62148,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:17:"Actions loop test";s:11:"description";s:39:"Support module for action loop testing.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:17:"Actions loop test";s:11:"description";s:39:"Support module for action loop testing.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/ajax_forms_test.module',
@@ -56717,7 +62159,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:26:"AJAX form test mock module";s:11:"description";s:25:"Test for AJAX form calls.";s:4:"core";s:3:"7.x";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.40";s:6:"hidden";b:1;s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:26:"AJAX form test mock module";s:11:"description";s:25:"Test for AJAX form calls.";s:4:"core";s:3:"7.x";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.92";s:6:"hidden";b:1;s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/ajax_test.module',
@@ -56728,7 +62170,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:9:"AJAX Test";s:11:"description";s:40:"Support module for AJAX framework tests.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:9:"AJAX Test";s:11:"description";s:40:"Support module for AJAX framework tests.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/batch_test.module',
@@ -56739,7 +62181,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:14:"Batch API test";s:11:"description";s:35:"Support module for Batch API tests.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:14:"Batch API test";s:11:"description";s:35:"Support module for Batch API tests.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/boot_test_1.module',
@@ -56750,7 +62192,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:21:"Early bootstrap tests";s:11:"description";s:39:"A support module for hook_boot testing.";s:4:"core";s:3:"7.x";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.40";s:6:"hidden";b:1;s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:21:"Early bootstrap tests";s:11:"description";s:39:"A support module for hook_boot testing.";s:4:"core";s:3:"7.x";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.92";s:6:"hidden";b:1;s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/boot_test_2.module',
@@ -56761,7 +62203,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:21:"Early bootstrap tests";s:11:"description";s:44:"A support module for hook_boot hook testing.";s:4:"core";s:3:"7.x";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.40";s:6:"hidden";b:1;s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:21:"Early bootstrap tests";s:11:"description";s:44:"A support module for hook_boot hook testing.";s:4:"core";s:3:"7.x";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.92";s:6:"hidden";b:1;s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/common_test.module',
@@ -56772,7 +62214,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:14:{s:4:"name";s:11:"Common Test";s:11:"description";s:32:"Support module for Common tests.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:11:"stylesheets";a:2:{s:3:"all";a:1:{s:15:"common_test.css";s:40:"modules/simpletest/tests/common_test.css";}s:5:"print";a:1:{s:21:"common_test.print.css";s:46:"modules/simpletest/tests/common_test.print.css";}}s:6:"hidden";b:1;s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:12:{s:4:"name";s:11:"Common Test";s:11:"description";s:32:"Support module for Common tests.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:11:"stylesheets";a:2:{s:3:"all";a:1:{s:15:"common_test.css";s:40:"modules/simpletest/tests/common_test.css";}s:5:"print";a:1:{s:21:"common_test.print.css";s:46:"modules/simpletest/tests/common_test.print.css";}}s:6:"hidden";b:1;s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/common_test_cron_helper.module',
@@ -56783,7 +62225,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:23:"Common Test Cron Helper";s:11:"description";s:56:"Helper module for CronRunTestCase::testCronExceptions().";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:23:"Common Test Cron Helper";s:11:"description";s:56:"Helper module for CronRunTestCase::testCronExceptions().";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/database_test.module',
@@ -56794,7 +62236,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:13:"Database Test";s:11:"description";s:40:"Support module for Database layer tests.";s:4:"core";s:3:"7.x";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.40";s:6:"hidden";b:1;s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:13:"Database Test";s:11:"description";s:40:"Support module for Database layer tests.";s:4:"core";s:3:"7.x";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.92";s:6:"hidden";b:1;s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/drupal_autoload_test/drupal_autoload_test.module',
@@ -56805,7 +62247,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:25:"Drupal code registry test";s:11:"description";s:45:"Support module for testing the code registry.";s:5:"files";a:2:{i:0;s:34:"drupal_autoload_test_interface.inc";i:1;s:30:"drupal_autoload_test_class.inc";}s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:25:"Drupal code registry test";s:11:"description";s:45:"Support module for testing the code registry.";s:5:"files";a:2:{i:0;s:34:"drupal_autoload_test_interface.inc";i:1;s:30:"drupal_autoload_test_class.inc";}s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/drupal_system_listing_compatible_test/drupal_system_listing_compatible_test.module',
@@ -56816,7 +62258,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:37:"Drupal system listing compatible test";s:11:"description";s:62:"Support module for testing the drupal_system_listing function.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:37:"Drupal system listing compatible test";s:11:"description";s:62:"Support module for testing the drupal_system_listing function.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/drupal_system_listing_incompatible_test/drupal_system_listing_incompatible_test.module',
@@ -56827,7 +62269,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:39:"Drupal system listing incompatible test";s:11:"description";s:62:"Support module for testing the drupal_system_listing function.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:39:"Drupal system listing incompatible test";s:11:"description";s:62:"Support module for testing the drupal_system_listing function.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/entity_cache_test.module',
@@ -56838,7 +62280,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:17:"Entity cache test";s:11:"description";s:40:"Support module for testing entity cache.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:12:"dependencies";a:1:{i:0;s:28:"entity_cache_test_dependency";}s:6:"hidden";b:1;s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:17:"Entity cache test";s:11:"description";s:40:"Support module for testing entity cache.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:12:"dependencies";a:1:{i:0;s:28:"entity_cache_test_dependency";}s:6:"hidden";b:1;s:5:"mtime";i:1664863480;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/entity_cache_test_dependency.module',
@@ -56849,7 +62291,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:28:"Entity cache test dependency";s:11:"description";s:51:"Support dependency module for testing entity cache.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:28:"Entity cache test dependency";s:11:"description";s:51:"Support dependency module for testing entity cache.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/entity_crud_hook_test.module',
@@ -56860,7 +62302,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:22:"Entity CRUD Hooks Test";s:11:"description";s:35:"Support module for CRUD hook tests.";s:4:"core";s:3:"7.x";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.40";s:6:"hidden";b:1;s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:22:"Entity CRUD Hooks Test";s:11:"description";s:35:"Support module for CRUD hook tests.";s:4:"core";s:3:"7.x";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.92";s:6:"hidden";b:1;s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/entity_query_access_test.module',
@@ -56871,7 +62313,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:24:"Entity query access test";s:11:"description";s:49:"Support module for checking entity query results.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:24:"Entity query access test";s:11:"description";s:49:"Support module for checking entity query results.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/error_test.module',
@@ -56882,7 +62324,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:10:"Error test";s:11:"description";s:47:"Support module for error and exception testing.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:10:"Error test";s:11:"description";s:47:"Support module for error and exception testing.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/file_test.module',
@@ -56893,7 +62335,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:9:"File test";s:11:"description";s:39:"Support module for file handling tests.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:16:"file_test.module";}s:6:"hidden";b:1;s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:9:"File test";s:11:"description";s:39:"Support module for file handling tests.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:16:"file_test.module";}s:6:"hidden";b:1;s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/filter_test.module',
@@ -56904,7 +62346,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:18:"Filter test module";s:11:"description";s:33:"Tests filter hooks and functions.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:18:"Filter test module";s:11:"description";s:33:"Tests filter hooks and functions.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/form_test.module',
@@ -56915,7 +62357,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:12:"FormAPI Test";s:11:"description";s:34:"Support module for Form API tests.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:12:"FormAPI Test";s:11:"description";s:34:"Support module for Form API tests.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/image_test.module',
@@ -56926,7 +62368,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:10:"Image test";s:11:"description";s:39:"Support module for image toolkit tests.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:10:"Image test";s:11:"description";s:39:"Support module for image toolkit tests.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/menu_test.module',
@@ -56937,7 +62379,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:15:"Hook menu tests";s:11:"description";s:37:"Support module for menu hook testing.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:15:"Hook menu tests";s:11:"description";s:37:"Support module for menu hook testing.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/module_test.module',
@@ -56948,7 +62390,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:11:"Module test";s:11:"description";s:41:"Support module for module system testing.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:11:"Module test";s:11:"description";s:41:"Support module for module system testing.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/path_test.module',
@@ -56959,7 +62401,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:15:"Hook path tests";s:11:"description";s:37:"Support module for path hook testing.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:15:"Hook path tests";s:11:"description";s:37:"Support module for path hook testing.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/psr_0_test/psr_0_test.module',
@@ -56970,7 +62412,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:16:"PSR-0 Test cases";s:11:"description";s:44:"Test classes to be discovered by simpletest.";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.40";s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:16:"PSR-0 Test cases";s:11:"description";s:44:"Test classes to be discovered by simpletest.";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:7:"package";s:7:"Testing";s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:7:"version";N;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/psr_4_test/psr_4_test.module',
@@ -56981,7 +62423,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:16:"PSR-4 Test cases";s:11:"description";s:44:"Test classes to be discovered by simpletest.";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.40";s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:16:"PSR-4 Test cases";s:11:"description";s:44:"Test classes to be discovered by simpletest.";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:7:"package";s:7:"Testing";s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:7:"version";N;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/requirements1_test.module',
@@ -56992,7 +62434,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => "a:13:{s:4:\"name\";s:19:\"Requirements 1 Test\";s:11:\"description\";s:80:\"Tests that a module is not installed when it fails hook_requirements('install').\";s:7:\"package\";s:7:\"Testing\";s:7:\"version\";s:4:\"7.40\";s:4:\"core\";s:3:\"7.x\";s:6:\"hidden\";b:1;s:7:\"project\";s:6:\"drupal\";s:9:\"datestamp\";s:10:\"1444866674\";s:5:\"mtime\";i:1444866674;s:12:\"dependencies\";a:0:{}s:3:\"php\";s:5:\"5.2.4\";s:5:\"files\";a:0:{}s:9:\"bootstrap\";i:0;}",
+  'info' => "a:11:{s:4:\"name\";s:19:\"Requirements 1 Test\";s:11:\"description\";s:80:\"Tests that a module is not installed when it fails hook_requirements('install').\";s:7:\"package\";s:7:\"Testing\";s:7:\"version\";s:4:\"7.92\";s:4:\"core\";s:3:\"7.x\";s:6:\"hidden\";b:1;s:5:\"mtime\";i:1664863480;s:12:\"dependencies\";a:0:{}s:3:\"php\";s:5:\"5.2.4\";s:5:\"files\";a:0:{}s:9:\"bootstrap\";i:0;}",
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/requirements2_test.module',
@@ -57003,7 +62445,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => "a:13:{s:4:\"name\";s:19:\"Requirements 2 Test\";s:11:\"description\";s:98:\"Tests that a module is not installed when the one it depends on fails hook_requirements('install).\";s:12:\"dependencies\";a:2:{i:0;s:18:\"requirements1_test\";i:1;s:7:\"comment\";}s:7:\"package\";s:7:\"Testing\";s:7:\"version\";s:4:\"7.40\";s:4:\"core\";s:3:\"7.x\";s:6:\"hidden\";b:1;s:7:\"project\";s:6:\"drupal\";s:9:\"datestamp\";s:10:\"1444866674\";s:5:\"mtime\";i:1444866674;s:3:\"php\";s:5:\"5.2.4\";s:5:\"files\";a:0:{}s:9:\"bootstrap\";i:0;}",
+  'info' => "a:11:{s:4:\"name\";s:19:\"Requirements 2 Test\";s:11:\"description\";s:98:\"Tests that a module is not installed when the one it depends on fails hook_requirements('install).\";s:12:\"dependencies\";a:2:{i:0;s:18:\"requirements1_test\";i:1;s:7:\"comment\";}s:7:\"package\";s:7:\"Testing\";s:7:\"version\";s:4:\"7.92\";s:4:\"core\";s:3:\"7.x\";s:6:\"hidden\";b:1;s:5:\"mtime\";i:1664863480;s:3:\"php\";s:5:\"5.2.4\";s:5:\"files\";a:0:{}s:9:\"bootstrap\";i:0;}",
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/session_test.module',
@@ -57014,7 +62456,18 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:12:"Session test";s:11:"description";s:40:"Support module for session data testing.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:12:"Session test";s:11:"description";s:40:"Support module for session data testing.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+))
+->values(array(
+  'filename' => 'modules/simpletest/tests/system_admin_test.module',
+  'name' => 'system_admin_test',
+  'type' => 'module',
+  'owner' => '',
+  'status' => '0',
+  'bootstrap' => '0',
+  'schema_version' => '-1',
+  'weight' => '0',
+  'info' => 'a:12:{s:4:"name";s:17:"System Admin Test";s:11:"description";s:44:"Support module for testing system.admin.inc.";s:7:"package";s:16:"Only For Testing";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:6:"hidden";b:0;s:9:"configure";s:13:"config/broken";s:5:"mtime";i:1664871879;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/system_dependencies_test.module',
@@ -57025,7 +62478,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:22:"System dependency test";s:11:"description";s:47:"Support module for testing system dependencies.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:12:"dependencies";a:1:{i:0;s:19:"_missing_dependency";}s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:22:"System dependency test";s:11:"description";s:47:"Support module for testing system dependencies.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:12:"dependencies";a:1:{i:0;s:19:"_missing_dependency";}s:5:"mtime";i:1664863480;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/system_incompatible_core_version_dependencies_test.module',
@@ -57036,7 +62489,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:50:"System incompatible core version dependencies test";s:11:"description";s:47:"Support module for testing system dependencies.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:12:"dependencies";a:1:{i:0;s:37:"system_incompatible_core_version_test";}s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:50:"System incompatible core version dependencies test";s:11:"description";s:47:"Support module for testing system dependencies.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:12:"dependencies";a:1:{i:0;s:37:"system_incompatible_core_version_test";}s:5:"mtime";i:1664863480;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/system_incompatible_core_version_test.module',
@@ -57047,7 +62500,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:37:"System incompatible core version test";s:11:"description";s:47:"Support module for testing system dependencies.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.40";s:4:"core";s:3:"5.x";s:6:"hidden";b:1;s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:37:"System incompatible core version test";s:11:"description";s:47:"Support module for testing system dependencies.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.92";s:4:"core";s:3:"5.x";s:6:"hidden";b:1;s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/system_incompatible_module_version_dependencies_test.module',
@@ -57058,7 +62511,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:52:"System incompatible module version dependencies test";s:11:"description";s:47:"Support module for testing system dependencies.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:12:"dependencies";a:1:{i:0;s:46:"system_incompatible_module_version_test (>2.0)";}s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:52:"System incompatible module version dependencies test";s:11:"description";s:47:"Support module for testing system dependencies.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:12:"dependencies";a:1:{i:0;s:46:"system_incompatible_module_version_test (>2.0)";}s:5:"mtime";i:1664863480;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/system_incompatible_module_version_test.module',
@@ -57069,7 +62522,18 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:39:"System incompatible module version test";s:11:"description";s:47:"Support module for testing system dependencies.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:39:"System incompatible module version test";s:11:"description";s:47:"Support module for testing system dependencies.";s:7:"package";s:7:"Testing";s:7:"version";s:3:"1.0";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+))
+->values(array(
+  'filename' => 'modules/simpletest/tests/system_null_version_test.module',
+  'name' => 'system_null_version_test',
+  'type' => 'module',
+  'owner' => '',
+  'status' => '0',
+  'bootstrap' => '0',
+  'schema_version' => '-1',
+  'weight' => '0',
+  'info' => 'a:11:{s:4:"name";s:24:"System null version test";s:11:"description";s:47:"Support module for testing with a null version.";s:7:"package";s:16:"Only For Testing";s:4:"core";s:3:"7.x";s:6:"hidden";b:0;s:5:"mtime";i:1664871879;s:12:"dependencies";a:0:{}s:7:"version";N;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/system_project_namespace_test.module',
@@ -57080,7 +62544,18 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:29:"System project namespace test";s:11:"description";s:58:"Support module for testing project namespace dependencies.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:12:"dependencies";a:1:{i:0;s:13:"drupal:filter";}s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:29:"System project namespace test";s:11:"description";s:58:"Support module for testing project namespace dependencies.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:12:"dependencies";a:1:{i:0;s:13:"drupal:filter";}s:5:"mtime";i:1664863480;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+))
+->values(array(
+  'filename' => 'modules/simpletest/tests/system_requires_null_version_test.module',
+  'name' => 'system_requires_null_version_test',
+  'type' => 'module',
+  'owner' => '',
+  'status' => '0',
+  'bootstrap' => '0',
+  'schema_version' => '-1',
+  'weight' => '0',
+  'info' => 'a:11:{s:4:"name";s:33:"System requires null version test";s:11:"description";s:44:"Support module for testing system_modules().";s:7:"package";s:16:"Only For Testing";s:4:"core";s:3:"7.x";s:7:"version";s:4:"7.92";s:6:"hidden";b:0;s:12:"dependencies";a:1:{i:0;s:24:"system_null_version_test";}s:5:"mtime";i:1664871879;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/system_test.module',
@@ -57091,7 +62566,18 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:11:"System test";s:11:"description";s:34:"Support module for system testing.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:18:"system_test.module";}s:6:"hidden";b:1;s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:11:"System test";s:11:"description";s:34:"Support module for system testing.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:18:"system_test.module";}s:6:"hidden";b:1;s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+))
+->values(array(
+  'filename' => 'modules/simpletest/tests/taxonomy_nodes_test.module',
+  'name' => 'taxonomy_nodes_test',
+  'type' => 'module',
+  'owner' => '',
+  'status' => '0',
+  'bootstrap' => '0',
+  'schema_version' => '-1',
+  'weight' => '0',
+  'info' => 'a:11:{s:4:"name";s:31:"Taxonomy module node list tests";s:11:"description";s:54:"Support module for taxonomy node list related testing.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:5:"mtime";i:1664871879;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/taxonomy_test.module',
@@ -57102,7 +62588,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:20:"Taxonomy test module";s:11:"description";s:45:""Tests functions and hooks not used in core".";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:12:"dependencies";a:1:{i:0;s:8:"taxonomy";}s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:20:"Taxonomy test module";s:11:"description";s:45:""Tests functions and hooks not used in core".";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:12:"dependencies";a:1:{i:0;s:8:"taxonomy";}s:5:"mtime";i:1664863480;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/theme_test.module',
@@ -57113,7 +62599,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:10:"Theme test";s:11:"description";s:40:"Support module for theme system testing.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:10:"Theme test";s:11:"description";s:40:"Support module for theme system testing.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/update_script_test.module',
@@ -57124,7 +62610,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:18:"Update script test";s:11:"description";s:41:"Support module for update script testing.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:18:"Update script test";s:11:"description";s:41:"Support module for update script testing.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/update_test_1.module',
@@ -57135,7 +62621,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:11:"Update test";s:11:"description";s:34:"Support module for update testing.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:11:"Update test";s:11:"description";s:34:"Support module for update testing.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/update_test_2.module',
@@ -57146,7 +62632,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:11:"Update test";s:11:"description";s:34:"Support module for update testing.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:11:"Update test";s:11:"description";s:34:"Support module for update testing.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/update_test_3.module',
@@ -57157,7 +62643,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:11:"Update test";s:11:"description";s:34:"Support module for update testing.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:11:"Update test";s:11:"description";s:34:"Support module for update testing.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/url_alter_test.module',
@@ -57168,7 +62654,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:15:"Url_alter tests";s:11:"description";s:45:"A support modules for url_alter hook testing.";s:4:"core";s:3:"7.x";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.40";s:6:"hidden";b:1;s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:15:"Url_alter tests";s:11:"description";s:45:"A support modules for url_alter hook testing.";s:4:"core";s:3:"7.x";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.92";s:6:"hidden";b:1;s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/simpletest/tests/xmlrpc_test.module',
@@ -57179,7 +62665,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:12:"XML-RPC Test";s:11:"description";s:75:"Support module for XML-RPC tests according to the validator1 specification.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:12:"XML-RPC Test";s:11:"description";s:75:"Support module for XML-RPC tests according to the validator1 specification.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/statistics/statistics.module',
@@ -57190,7 +62676,7 @@
   'bootstrap' => '1',
   'schema_version' => '7000',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:10:"Statistics";s:11:"description";s:37:"Logs access statistics for your site.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:15:"statistics.test";}s:9:"configure";s:30:"admin/config/system/statistics";s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:10:"Statistics";s:11:"description";s:37:"Logs access statistics for your site.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:15:"statistics.test";}s:9:"configure";s:30:"admin/config/system/statistics";s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/syslog/syslog.module',
@@ -57201,7 +62687,7 @@
   'bootstrap' => '1',
   'schema_version' => '0',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:6:"Syslog";s:11:"description";s:41:"Logs and records system events to syslog.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:11:"syslog.test";}s:9:"configure";s:32:"admin/config/development/logging";s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:6:"Syslog";s:11:"description";s:41:"Logs and records system events to syslog.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:11:"syslog.test";}s:9:"configure";s:32:"admin/config/development/logging";s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/system/system.module',
@@ -57209,10 +62695,10 @@
   'type' => 'module',
   'owner' => '',
   'status' => '1',
-  'bootstrap' => '1',
-  'schema_version' => '7080',
+  'bootstrap' => '0',
+  'schema_version' => '7084',
   'weight' => '0',
-  'info' => 'a:14:{s:4:"name";s:6:"System";s:11:"description";s:54:"Handles general site configuration for administrators.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:5:"files";a:6:{i:0;s:19:"system.archiver.inc";i:1;s:15:"system.mail.inc";i:2;s:16:"system.queue.inc";i:3;s:14:"system.tar.inc";i:4;s:18:"system.updater.inc";i:5;s:11:"system.test";}s:8:"required";b:1;s:9:"configure";s:19:"admin/config/system";s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:12:{s:4:"name";s:6:"System";s:11:"description";s:54:"Handles general site configuration for administrators.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:5:"files";a:6:{i:0;s:19:"system.archiver.inc";i:1;s:15:"system.mail.inc";i:2;s:16:"system.queue.inc";i:3;s:14:"system.tar.inc";i:4;s:18:"system.updater.inc";i:5;s:11:"system.test";}s:8:"required";b:1;s:9:"configure";s:19:"admin/config/system";s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/system/tests/cron_queue_test.module',
@@ -57223,7 +62709,18 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:15:"Cron Queue test";s:11:"description";s:41:"Support module for the cron queue runner.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:15:"Cron Queue test";s:11:"description";s:41:"Support module for the cron queue runner.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+))
+->values(array(
+  'filename' => 'modules/system/tests/system_cron_test.module',
+  'name' => 'system_cron_test',
+  'type' => 'module',
+  'owner' => '',
+  'status' => '0',
+  'bootstrap' => '0',
+  'schema_version' => '-1',
+  'weight' => '0',
+  'info' => 'a:11:{s:4:"name";s:16:"System Cron Test";s:11:"description";s:45:"Support module for testing the system_cron().";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/taxonomy/taxonomy.module',
@@ -57234,7 +62731,7 @@
   'bootstrap' => '0',
   'schema_version' => '7011',
   'weight' => '0',
-  'info' => 'a:15:{s:4:"name";s:8:"Taxonomy";s:11:"description";s:38:"Enables the categorization of content.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:12:"dependencies";a:1:{i:0;s:7:"options";}s:5:"files";a:2:{i:0;s:15:"taxonomy.module";i:1;s:13:"taxonomy.test";}s:9:"configure";s:24:"admin/structure/taxonomy";s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;s:8:"required";b:1;s:11:"explanation";s:73:"Field type(s) in use - see <a href="/admin/reports/fields">Field list</a>";}',
+  'info' => 'a:13:{s:4:"name";s:8:"Taxonomy";s:11:"description";s:38:"Enables the categorization of content.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:12:"dependencies";a:1:{i:0;s:7:"options";}s:5:"files";a:2:{i:0;s:15:"taxonomy.module";i:1;s:13:"taxonomy.test";}s:9:"configure";s:24:"admin/structure/taxonomy";s:5:"mtime";i:1664863480;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;s:8:"required";b:1;s:11:"explanation";s:73:"Field type(s) in use - see <a href="/admin/reports/fields">Field list</a>";}',
 ))
 ->values(array(
   'filename' => 'modules/toolbar/toolbar.module',
@@ -57245,7 +62742,7 @@
   'bootstrap' => '0',
   'schema_version' => '0',
   'weight' => '0',
-  'info' => 'a:12:{s:4:"name";s:7:"Toolbar";s:11:"description";s:99:"Provides a toolbar that shows the top-level administration menu items and links from other modules.";s:4:"core";s:3:"7.x";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.40";s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:10:{s:4:"name";s:7:"Toolbar";s:11:"description";s:99:"Provides a toolbar that shows the top-level administration menu items and links from other modules.";s:4:"core";s:3:"7.x";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.92";s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/tracker/tracker.module',
@@ -57256,7 +62753,7 @@
   'bootstrap' => '0',
   'schema_version' => '7000',
   'weight' => '0',
-  'info' => 'a:12:{s:4:"name";s:7:"Tracker";s:11:"description";s:45:"Enables tracking of recent content for users.";s:12:"dependencies";a:1:{i:0;s:7:"comment";}s:7:"package";s:4:"Core";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:12:"tracker.test";}s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:10:{s:4:"name";s:7:"Tracker";s:11:"description";s:45:"Enables tracking of recent content for users.";s:12:"dependencies";a:1:{i:0;s:7:"comment";}s:7:"package";s:4:"Core";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:12:"tracker.test";}s:5:"mtime";i:1664863480;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/translation/tests/translation_test.module',
@@ -57267,7 +62764,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:24:"Content Translation Test";s:11:"description";s:49:"Support module for the content translation tests.";s:4:"core";s:3:"7.x";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.40";s:6:"hidden";b:1;s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:24:"Content Translation Test";s:11:"description";s:49:"Support module for the content translation tests.";s:4:"core";s:3:"7.x";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.92";s:6:"hidden";b:1;s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/translation/translation.module',
@@ -57278,7 +62775,7 @@
   'bootstrap' => '0',
   'schema_version' => '0',
   'weight' => '0',
-  'info' => 'a:12:{s:4:"name";s:19:"Content translation";s:11:"description";s:57:"Allows content to be translated into different languages.";s:12:"dependencies";a:1:{i:0;s:6:"locale";}s:7:"package";s:4:"Core";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:16:"translation.test";}s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:10:{s:4:"name";s:19:"Content translation";s:11:"description";s:57:"Allows content to be translated into different languages.";s:12:"dependencies";a:1:{i:0;s:6:"locale";}s:7:"package";s:4:"Core";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:16:"translation.test";}s:5:"mtime";i:1664863480;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/trigger/tests/trigger_test.module',
@@ -57289,7 +62786,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:12:"Trigger Test";s:11:"description";s:33:"Support module for Trigger tests.";s:7:"package";s:7:"Testing";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:7:"version";s:4:"7.40";s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:12:"Trigger Test";s:11:"description";s:33:"Support module for Trigger tests.";s:7:"package";s:7:"Testing";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:7:"version";N;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/trigger/trigger.module',
@@ -57300,7 +62797,7 @@
   'bootstrap' => '0',
   'schema_version' => '7002',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:7:"Trigger";s:11:"description";s:90:"Enables actions to be fired on certain system events, such as when new content is created.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:12:"trigger.test";}s:9:"configure";s:23:"admin/structure/trigger";s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:7:"Trigger";s:11:"description";s:90:"Enables actions to be fired on certain system events, such as when new content is created.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:12:"trigger.test";}s:9:"configure";s:23:"admin/structure/trigger";s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/update/tests/aaa_update_test.module',
@@ -57311,7 +62808,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:15:"AAA Update test";s:11:"description";s:41:"Support module for update module testing.";s:7:"package";s:7:"Testing";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:7:"version";s:4:"7.40";s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:15:"AAA Update test";s:11:"description";s:41:"Support module for update module testing.";s:7:"package";s:7:"Testing";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:7:"version";N;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/update/tests/bbb_update_test.module',
@@ -57322,7 +62819,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:15:"BBB Update test";s:11:"description";s:41:"Support module for update module testing.";s:7:"package";s:7:"Testing";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:7:"version";s:4:"7.40";s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:15:"BBB Update test";s:11:"description";s:41:"Support module for update module testing.";s:7:"package";s:7:"Testing";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:7:"version";N;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/update/tests/ccc_update_test.module',
@@ -57333,7 +62830,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:15:"CCC Update test";s:11:"description";s:41:"Support module for update module testing.";s:7:"package";s:7:"Testing";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:7:"version";s:4:"7.40";s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:15:"CCC Update test";s:11:"description";s:41:"Support module for update module testing.";s:7:"package";s:7:"Testing";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:7:"version";N;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/update/tests/update_test.module',
@@ -57344,7 +62841,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:11:"Update test";s:11:"description";s:41:"Support module for update module testing.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:11:"Update test";s:11:"description";s:41:"Support module for update module testing.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/update/update.module',
@@ -57355,7 +62852,18 @@
   'bootstrap' => '0',
   'schema_version' => '7001',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:14:"Update manager";s:11:"description";s:104:"Checks for available updates, and can securely install or update modules and themes via a web interface.";s:7:"version";s:4:"7.40";s:7:"package";s:4:"Core";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:11:"update.test";}s:9:"configure";s:30:"admin/reports/updates/settings";s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:14:"Update manager";s:11:"description";s:104:"Checks for available updates, and can securely install or update modules and themes via a web interface.";s:7:"version";s:4:"7.92";s:7:"package";s:4:"Core";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:11:"update.test";}s:9:"configure";s:30:"admin/reports/updates/settings";s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+))
+->values(array(
+  'filename' => 'modules/user/tests/user_flood_test.module',
+  'name' => 'user_flood_test',
+  'type' => 'module',
+  'owner' => '',
+  'status' => '0',
+  'bootstrap' => '0',
+  'schema_version' => '-1',
+  'weight' => '0',
+  'info' => 'a:11:{s:4:"name";s:31:"User module flood control tests";s:11:"description";s:46:"Support module for user flood control testing.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:5:"mtime";i:1664871879;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/user/tests/user_form_test.module',
@@ -57366,7 +62874,18 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:22:"User module form tests";s:11:"description";s:37:"Support module for user form testing.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:22:"User module form tests";s:11:"description";s:37:"Support module for user form testing.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+))
+->values(array(
+  'filename' => 'modules/user/tests/user_session_test.module',
+  'name' => 'user_session_test',
+  'type' => 'module',
+  'owner' => '',
+  'status' => '0',
+  'bootstrap' => '0',
+  'schema_version' => '-1',
+  'weight' => '0',
+  'info' => 'a:11:{s:4:"name";s:25:"User module session tests";s:11:"description";s:40:"Support module for user session testing.";s:7:"package";s:7:"Testing";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:5:"mtime";i:1664871879;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'modules/user/user.module',
@@ -57375,9 +62894,9 @@
   'owner' => '',
   'status' => '1',
   'bootstrap' => '0',
-  'schema_version' => '7018',
+  'schema_version' => '7020',
   'weight' => '0',
-  'info' => 'a:15:{s:4:"name";s:4:"User";s:11:"description";s:47:"Manages the user registration and login system.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:5:"files";a:2:{i:0;s:11:"user.module";i:1;s:9:"user.test";}s:8:"required";b:1;s:9:"configure";s:19:"admin/config/people";s:11:"stylesheets";a:1:{s:3:"all";a:1:{s:8:"user.css";s:21:"modules/user/user.css";}}s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:5:"mtime";i:1444866674;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:13:{s:4:"name";s:4:"User";s:11:"description";s:47:"Manages the user registration and login system.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:5:"files";a:2:{i:0;s:11:"user.module";i:1;s:9:"user.test";}s:8:"required";b:1;s:9:"configure";s:19:"admin/config/people";s:11:"stylesheets";a:1:{s:3:"all";a:1:{s:8:"user.css";s:21:"modules/user/user.css";}}s:5:"mtime";i:1664863480;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'profiles/standard/standard.profile',
@@ -57388,7 +62907,7 @@
   'bootstrap' => '0',
   'schema_version' => '0',
   'weight' => '1000',
-  'info' => 'a:13:{s:4:"name";s:8:"Standard";s:11:"description";s:51:"Install with commonly used features pre-configured.";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:12:"dependencies";a:21:{i:0;s:5:"block";i:1;s:5:"color";i:2;s:7:"comment";i:3;s:10:"contextual";i:4;s:9:"dashboard";i:5;s:4:"help";i:6;s:5:"image";i:7;s:4:"list";i:8;s:4:"menu";i:9;s:6:"number";i:10;s:7:"options";i:11;s:4:"path";i:12;s:8:"taxonomy";i:13;s:5:"dblog";i:14;s:6:"search";i:15;s:8:"shortcut";i:16;s:7:"toolbar";i:17;s:7:"overlay";i:18;s:8:"field_ui";i:19;s:4:"file";i:20;s:3:"rdf";}s:5:"mtime";i:1535762879;s:7:"package";s:5:"Other";s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;s:6:"hidden";b:1;s:8:"required";b:1;s:17:"distribution_name";s:6:"Drupal";}',
+  'info' => 'a:13:{s:4:"name";s:8:"Standard";s:11:"description";s:51:"Install with commonly used features pre-configured.";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:12:"dependencies";a:21:{i:0;s:5:"block";i:1;s:5:"color";i:2;s:7:"comment";i:3;s:10:"contextual";i:4;s:9:"dashboard";i:5;s:4:"help";i:6;s:5:"image";i:7;s:4:"list";i:8;s:4:"menu";i:9;s:6:"number";i:10;s:7:"options";i:11;s:4:"path";i:12;s:8:"taxonomy";i:13;s:5:"dblog";i:14;s:6:"search";i:15;s:8:"shortcut";i:16;s:7:"toolbar";i:17;s:7:"overlay";i:18;s:8:"field_ui";i:19;s:4:"file";i:20;s:3:"rdf";}s:5:"mtime";i:1664863480;s:7:"package";s:5:"Other";s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;s:6:"hidden";b:1;s:8:"required";b:1;s:17:"distribution_name";s:6:"Drupal";}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/breakpoints/breakpoints.module',
@@ -57397,9 +62916,9 @@
   'owner' => '',
   'status' => '0',
   'bootstrap' => '0',
-  'schema_version' => '-1',
+  'schema_version' => '7102',
   'weight' => '0',
-  'info' => 'a:11:{s:4:"name";s:11:"Breakpoints";s:11:"description";s:18:"Manage breakpoints";s:4:"core";s:3:"7.x";s:12:"dependencies";a:1:{i:0;s:6:"ctools";}s:5:"files";a:2:{i:0;s:18:"breakpoints.module";i:1;s:16:"breakpoints.test";}s:9:"configure";s:30:"admin/config/media/breakpoints";s:5:"mtime";i:1544938132;s:7:"package";s:5:"Other";s:7:"version";N;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:11:"Breakpoints";s:11:"description";s:18:"Manage breakpoints";s:4:"core";s:3:"7.x";s:12:"dependencies";a:1:{i:0;s:6:"ctools";}s:5:"files";a:2:{i:0;s:18:"breakpoints.module";i:1;s:16:"breakpoints.test";}s:9:"configure";s:30:"admin/config/media/breakpoints";s:5:"mtime";i:1664870344;s:7:"package";s:5:"Other";s:7:"version";N;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/breakpoints/tests/breakpoints_theme_test.module',
@@ -57410,29 +62929,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:11:{s:4:"name";s:22:"Breakpoints Theme Test";s:11:"description";s:35:"Test breakpoints provided by themes";s:7:"package";s:5:"Other";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:5:"mtime";i:1544938132;s:12:"dependencies";a:0:{}s:7:"version";N;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
-))
-->values(array(
-  'filename' => 'sites/all/modules/multiupload_filefield_widget/multiupload_filefield_widget.module',
-  'name' => 'multiupload_filefield_widget',
-  'type' => 'module',
-  'owner' => '',
-  'status' => '1',
-  'bootstrap' => '0',
-  'schema_version' => '0',
-  'weight' => '0',
-  'info' => 'a:12:{s:4:"name";s:28:"Multiupload Filefield Widget";s:11:"description";s:76:"Creates a widget for filefield to upload multiple files at once using html5.";s:7:"package";s:6:"Fields";s:4:"core";s:3:"7.x";s:12:"dependencies";a:1:{i:0;s:4:"file";}s:5:"files";a:2:{i:0;s:35:"multiupload_filefield_widget.module";i:1;s:33:"multiupload_filefield_widget.test";}s:7:"version";s:8:"7.x-1.13";s:7:"project";s:28:"multiupload_filefield_widget";s:9:"datestamp";s:10:"1388873905";s:5:"mtime";i:1388873905;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
-))
-->values(array(
-  'filename' => 'sites/all/modules/multiupload_imagefield_widget/multiupload_imagefield_widget.module',
-  'name' => 'multiupload_imagefield_widget',
-  'type' => 'module',
-  'owner' => '',
-  'status' => '1',
-  'bootstrap' => '0',
-  'schema_version' => '0',
-  'weight' => '0',
-  'info' => 'a:12:{s:4:"name";s:29:"Multiupload Imagefield Widget";s:11:"description";s:77:"Creates a widget for imagefield to upload multiple files at once using html5.";s:7:"package";s:6:"Fields";s:12:"dependencies";a:2:{i:0;s:28:"multiupload_filefield_widget";i:1;s:5:"image";}s:4:"core";s:3:"7.x";s:7:"version";s:7:"7.x-1.3";s:7:"project";s:29:"multiupload_imagefield_widget";s:9:"datestamp";s:10:"1388874206";s:5:"mtime";i:1388874206;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:22:"Breakpoints Theme Test";s:11:"description";s:35:"Test breakpoints provided by themes";s:7:"package";s:5:"Other";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:5:"mtime";i:1664870344;s:12:"dependencies";a:0:{}s:7:"version";N;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/ctools/bulk_export/bulk_export.module',
@@ -57443,7 +62940,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:12:{s:4:"name";s:11:"Bulk Export";s:11:"description";s:67:"Performs bulk exporting of data objects known about by Chaos tools.";s:4:"core";s:3:"7.x";s:12:"dependencies";a:1:{i:0;s:6:"ctools";}s:7:"package";s:16:"Chaos tool suite";s:7:"version";s:7:"7.x-1.9";s:7:"project";s:6:"ctools";s:9:"datestamp";s:10:"1440020680";s:5:"mtime";i:1440020680;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:10:{s:4:"name";s:11:"Bulk Export";s:11:"description";s:67:"Performs bulk exporting of data objects known about by Chaos tools.";s:4:"core";s:3:"7.x";s:12:"dependencies";a:1:{i:0;s:6:"ctools";}s:7:"package";s:16:"Chaos tool suite";s:7:"version";s:7:"7.x-1.9";s:5:"mtime";i:1664871889;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/ctools/ctools.module',
@@ -57452,9 +62949,9 @@
   'owner' => '',
   'status' => '1',
   'bootstrap' => '0',
-  'schema_version' => '6008',
+  'schema_version' => '7001',
   'weight' => '0',
-  'info' => 'a:12:{s:4:"name";s:11:"Chaos tools";s:11:"description";s:46:"A library of helpful tools by Merlin of Chaos.";s:4:"core";s:3:"7.x";s:7:"package";s:16:"Chaos tool suite";s:5:"files";a:3:{i:0;s:20:"includes/context.inc";i:1;s:22:"includes/math-expr.inc";i:2;s:21:"includes/stylizer.inc";}s:7:"version";s:7:"7.x-1.4";s:7:"project";s:6:"ctools";s:9:"datestamp";s:10:"1392220730";s:5:"mtime";i:1392220730;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:10:{s:4:"name";s:11:"Chaos tools";s:11:"description";s:46:"A library of helpful tools by Merlin of Chaos.";s:4:"core";s:3:"7.x";s:7:"package";s:16:"Chaos tool suite";s:7:"version";s:7:"7.x-1.9";s:5:"files";a:5:{i:0;s:20:"includes/context.inc";i:1;s:22:"includes/css-cache.inc";i:2;s:22:"includes/math-expr.inc";i:3;s:21:"includes/stylizer.inc";i:4;s:20:"tests/css_cache.test";}s:5:"mtime";i:1664871889;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/ctools/ctools_access_ruleset/ctools_access_ruleset.module',
@@ -57465,7 +62962,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:12:{s:4:"name";s:15:"Custom rulesets";s:11:"description";s:81:"Create custom, exportable, reusable access rulesets for applications like Panels.";s:4:"core";s:3:"7.x";s:7:"package";s:16:"Chaos tool suite";s:7:"version";s:7:"7.x-1.9";s:12:"dependencies";a:1:{i:0;s:6:"ctools";}s:7:"project";s:6:"ctools";s:9:"datestamp";s:10:"1440020680";s:5:"mtime";i:1440020680;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:10:{s:4:"name";s:15:"Custom rulesets";s:11:"description";s:81:"Create custom, exportable, reusable access rulesets for applications like Panels.";s:4:"core";s:3:"7.x";s:7:"package";s:16:"Chaos tool suite";s:7:"version";s:7:"7.x-1.9";s:12:"dependencies";a:1:{i:0;s:6:"ctools";}s:5:"mtime";i:1664871889;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/ctools/ctools_ajax_sample/ctools_ajax_sample.module',
@@ -57476,7 +62973,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:12:{s:4:"name";s:33:"Chaos Tools (CTools) AJAX Example";s:11:"description";s:41:"Shows how to use the power of Chaos AJAX.";s:7:"package";s:16:"Chaos tool suite";s:7:"version";s:7:"7.x-1.9";s:12:"dependencies";a:1:{i:0;s:6:"ctools";}s:4:"core";s:3:"7.x";s:7:"project";s:6:"ctools";s:9:"datestamp";s:10:"1440020680";s:5:"mtime";i:1440020680;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:10:{s:4:"name";s:33:"Chaos Tools (CTools) AJAX Example";s:11:"description";s:41:"Shows how to use the power of Chaos AJAX.";s:7:"package";s:16:"Chaos tool suite";s:7:"version";s:7:"7.x-1.9";s:12:"dependencies";a:1:{i:0;s:6:"ctools";}s:4:"core";s:3:"7.x";s:5:"mtime";i:1664871889;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/ctools/ctools_custom_content/ctools_custom_content.module',
@@ -57487,7 +62984,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:12:{s:4:"name";s:20:"Custom content panes";s:11:"description";s:79:"Create custom, exportable, reusable content panes for applications like Panels.";s:4:"core";s:3:"7.x";s:7:"package";s:16:"Chaos tool suite";s:7:"version";s:7:"7.x-1.9";s:12:"dependencies";a:1:{i:0;s:6:"ctools";}s:7:"project";s:6:"ctools";s:9:"datestamp";s:10:"1440020680";s:5:"mtime";i:1440020680;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:10:{s:4:"name";s:20:"Custom content panes";s:11:"description";s:79:"Create custom, exportable, reusable content panes for applications like Panels.";s:4:"core";s:3:"7.x";s:7:"package";s:16:"Chaos tool suite";s:7:"version";s:7:"7.x-1.9";s:12:"dependencies";a:1:{i:0;s:6:"ctools";}s:5:"mtime";i:1664871889;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/ctools/ctools_plugin_example/ctools_plugin_example.module',
@@ -57498,7 +62995,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:12:{s:4:"name";s:35:"Chaos Tools (CTools) Plugin Example";s:11:"description";s:75:"Shows how an external module can provide ctools plugins (for Panels, etc.).";s:7:"package";s:16:"Chaos tool suite";s:7:"version";s:7:"7.x-1.9";s:12:"dependencies";a:4:{i:0;s:6:"ctools";i:1;s:6:"panels";i:2;s:12:"page_manager";i:3;s:13:"advanced_help";}s:4:"core";s:3:"7.x";s:7:"project";s:6:"ctools";s:9:"datestamp";s:10:"1440020680";s:5:"mtime";i:1440020680;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:10:{s:4:"name";s:35:"Chaos Tools (CTools) Plugin Example";s:11:"description";s:75:"Shows how an external module can provide ctools plugins (for Panels, etc.).";s:7:"package";s:16:"Chaos tool suite";s:7:"version";s:7:"7.x-1.9";s:12:"dependencies";a:4:{i:0;s:6:"ctools";i:1;s:6:"panels";i:2;s:12:"page_manager";i:3;s:13:"advanced_help";}s:4:"core";s:3:"7.x";s:5:"mtime";i:1664871889;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/ctools/page_manager/page_manager.module',
@@ -57509,7 +63006,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:12:{s:4:"name";s:12:"Page manager";s:11:"description";s:54:"Provides a UI and API to manage pages within the site.";s:4:"core";s:3:"7.x";s:12:"dependencies";a:1:{i:0;s:6:"ctools";}s:7:"package";s:16:"Chaos tool suite";s:7:"version";s:7:"7.x-1.9";s:7:"project";s:6:"ctools";s:9:"datestamp";s:10:"1440020680";s:5:"mtime";i:1440020680;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:10:{s:4:"name";s:12:"Page manager";s:11:"description";s:54:"Provides a UI and API to manage pages within the site.";s:4:"core";s:3:"7.x";s:12:"dependencies";a:1:{i:0;s:6:"ctools";}s:7:"package";s:16:"Chaos tool suite";s:7:"version";s:7:"7.x-1.9";s:5:"mtime";i:1664871889;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/ctools/stylizer/stylizer.module',
@@ -57520,7 +63017,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:12:{s:4:"name";s:8:"Stylizer";s:11:"description";s:53:"Create custom styles for applications such as Panels.";s:4:"core";s:3:"7.x";s:7:"package";s:16:"Chaos tool suite";s:7:"version";s:7:"7.x-1.9";s:12:"dependencies";a:2:{i:0;s:6:"ctools";i:1;s:5:"color";}s:7:"project";s:6:"ctools";s:9:"datestamp";s:10:"1440020680";s:5:"mtime";i:1440020680;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:10:{s:4:"name";s:8:"Stylizer";s:11:"description";s:53:"Create custom styles for applications such as Panels.";s:4:"core";s:3:"7.x";s:7:"package";s:16:"Chaos tool suite";s:7:"version";s:7:"7.x-1.9";s:12:"dependencies";a:2:{i:0;s:6:"ctools";i:1;s:5:"color";}s:5:"mtime";i:1664871889;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/ctools/term_depth/term_depth.module',
@@ -57531,7 +63028,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:12:{s:4:"name";s:17:"Term Depth access";s:11:"description";s:48:"Controls access to context based upon term depth";s:4:"core";s:3:"7.x";s:12:"dependencies";a:1:{i:0;s:6:"ctools";}s:7:"package";s:16:"Chaos tool suite";s:7:"version";s:7:"7.x-1.9";s:7:"project";s:6:"ctools";s:9:"datestamp";s:10:"1440020680";s:5:"mtime";i:1440020680;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:10:{s:4:"name";s:17:"Term Depth access";s:11:"description";s:48:"Controls access to context based upon term depth";s:4:"core";s:3:"7.x";s:12:"dependencies";a:1:{i:0;s:6:"ctools";}s:7:"package";s:16:"Chaos tool suite";s:7:"version";s:7:"7.x-1.9";s:5:"mtime";i:1664871889;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/ctools/tests/ctools_export_test/ctools_export_test.module',
@@ -57542,7 +63039,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:18:"CTools export test";s:11:"description";s:25:"CTools export test module";s:4:"core";s:3:"7.x";s:7:"package";s:16:"Chaos tool suite";s:7:"version";s:7:"7.x-1.9";s:12:"dependencies";a:1:{i:0;s:6:"ctools";}s:6:"hidden";b:1;s:5:"files";a:1:{i:0;s:18:"ctools_export.test";}s:7:"project";s:6:"ctools";s:9:"datestamp";s:10:"1440020680";s:5:"mtime";i:1440020680;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:18:"CTools export test";s:11:"description";s:25:"CTools export test module";s:4:"core";s:3:"7.x";s:7:"package";s:16:"Chaos tool suite";s:7:"version";s:7:"7.x-1.9";s:12:"dependencies";a:1:{i:0;s:6:"ctools";}s:6:"hidden";b:1;s:5:"files";a:1:{i:0;s:18:"ctools_export.test";}s:5:"mtime";i:1664871889;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/ctools/tests/ctools_plugin_test.module',
@@ -57553,7 +63050,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:24:"Chaos tools plugins test";s:11:"description";s:42:"Provides hooks for testing ctools plugins.";s:7:"package";s:16:"Chaos tool suite";s:7:"version";s:7:"7.x-1.9";s:4:"core";s:3:"7.x";s:12:"dependencies";a:1:{i:0;s:6:"ctools";}s:5:"files";a:6:{i:0;s:19:"ctools.plugins.test";i:1;s:17:"object_cache.test";i:2;s:8:"css.test";i:3;s:12:"context.test";i:4;s:20:"math_expression.test";i:5;s:26:"math_expression_stack.test";}s:6:"hidden";b:1;s:7:"project";s:6:"ctools";s:9:"datestamp";s:10:"1440020680";s:5:"mtime";i:1440020680;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:24:"Chaos tools plugins test";s:11:"description";s:42:"Provides hooks for testing ctools plugins.";s:7:"package";s:16:"Chaos tool suite";s:7:"version";s:7:"7.x-1.9";s:4:"core";s:3:"7.x";s:12:"dependencies";a:1:{i:0;s:6:"ctools";}s:5:"files";a:6:{i:0;s:19:"ctools.plugins.test";i:1;s:17:"object_cache.test";i:2;s:8:"css.test";i:3;s:12:"context.test";i:4;s:20:"math_expression.test";i:5;s:26:"math_expression_stack.test";}s:6:"hidden";b:1;s:5:"mtime";i:1664871889;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/ctools/views_content/views_content.module',
@@ -57564,7 +63061,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:12:{s:4:"name";s:19:"Views content panes";s:11:"description";s:104:"Allows Views content to be used in Panels, Dashboard and other modules which use the CTools Content API.";s:7:"package";s:16:"Chaos tool suite";s:12:"dependencies";a:2:{i:0;s:6:"ctools";i:1;s:5:"views";}s:4:"core";s:3:"7.x";s:7:"version";s:7:"7.x-1.9";s:5:"files";a:3:{i:0;s:61:"plugins/views/views_content_plugin_display_ctools_context.inc";i:1;s:57:"plugins/views/views_content_plugin_display_panel_pane.inc";i:2;s:59:"plugins/views/views_content_plugin_style_ctools_context.inc";}s:7:"project";s:6:"ctools";s:9:"datestamp";s:10:"1440020680";s:5:"mtime";i:1440020680;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:10:{s:4:"name";s:19:"Views content panes";s:11:"description";s:104:"Allows Views content to be used in Panels, Dashboard and other modules which use the CTools Content API.";s:7:"package";s:16:"Chaos tool suite";s:12:"dependencies";a:2:{i:0;s:6:"ctools";i:1;s:5:"views";}s:4:"core";s:3:"7.x";s:7:"version";s:7:"7.x-1.9";s:5:"files";a:3:{i:0;s:61:"plugins/views/views_content_plugin_display_ctools_context.inc";i:1;s:57:"plugins/views/views_content_plugin_display_panel_pane.inc";i:2;s:59:"plugins/views/views_content_plugin_style_ctools_context.inc";}s:5:"mtime";i:1664871889;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/date/date.module',
@@ -57573,9 +63070,9 @@
   'owner' => '',
   'status' => '1',
   'bootstrap' => '0',
-  'schema_version' => '7004',
+  'schema_version' => '7200',
   'weight' => '0',
-  'info' => 'a:14:{s:4:"name";s:4:"Date";s:11:"description";s:33:"Makes date/time fields available.";s:12:"dependencies";a:1:{i:0;s:8:"date_api";}s:7:"package";s:9:"Date/Time";s:4:"core";s:3:"7.x";s:3:"php";s:3:"5.2";s:5:"files";a:9:{i:0;s:16:"date.migrate.inc";i:1;s:19:"tests/date_api.test";i:2;s:15:"tests/date.test";i:3;s:21:"tests/date_field.test";i:4;s:23:"tests/date_migrate.test";i:5;s:26:"tests/date_validation.test";i:6;s:24:"tests/date_timezone.test";i:7;s:27:"tests/date_views_pager.test";i:8;s:27:"tests/date_views_popup.test";}s:7:"version";s:7:"7.x-2.9";s:7:"project";s:4:"date";s:9:"datestamp";s:10:"1441727353";s:5:"mtime";i:1441727353;s:9:"bootstrap";i:0;s:8:"required";b:1;s:11:"explanation";s:73:"Field type(s) in use - see <a href="/admin/reports/fields">Field list</a>";}',
+  'info' => 'a:13:{s:4:"name";s:4:"Date";s:11:"description";s:33:"Makes date/time fields available.";s:12:"dependencies";a:1:{i:0;s:13:"date:date_api";}s:7:"package";s:9:"Date/Time";s:4:"core";s:3:"7.x";s:5:"files";a:10:{i:0;s:16:"date.migrate.inc";i:1;s:26:"tests/DateEmwTestCase.test";i:2;s:27:"tests/DateFormTestCase.test";i:3;s:30:"tests/DateMigrateTestCase.test";i:4;s:30:"tests/DateNowUnitTestCase.test";i:5;s:28:"tests/DateFieldTestBase.test";i:6;s:28:"tests/DateFieldTestCase.test";i:7;s:31:"tests/DateTimezoneTestCase.test";i:8;s:25:"tests/DateUiTestCase.test";i:9;s:33:"tests/DateValidationTestCase.test";}s:17:"test_dependencies";a:4:{i:0;s:13:"entity:entity";i:1;s:23:"features:features (2.x)";i:2;s:15:"migrate:migrate";i:3;s:11:"views:views";}s:5:"mtime";i:1664867418;s:7:"version";N;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;s:8:"required";b:1;s:11:"explanation";s:73:"Field type(s) in use - see <a href="/admin/reports/fields">Field list</a>";}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/date/date_all_day/date_all_day.module',
@@ -57586,7 +63083,18 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => "a:12:{s:4:\"name\";s:12:\"Date All Day\";s:11:\"description\";s:142:\"Adds 'All Day' functionality to date fields, including an 'All Day' theme and 'All Day' checkboxes for the Date select and Date popup widgets.\";s:12:\"dependencies\";a:2:{i:0;s:8:\"date_api\";i:1;s:4:\"date\";}s:7:\"package\";s:9:\"Date/Time\";s:4:\"core\";s:3:\"7.x\";s:7:\"version\";s:7:\"7.x-2.9\";s:7:\"project\";s:4:\"date\";s:9:\"datestamp\";s:10:\"1441727353\";s:5:\"mtime\";i:1441727353;s:3:\"php\";s:5:\"5.2.4\";s:5:\"files\";a:0:{}s:9:\"bootstrap\";i:0;}",
+  'info' => "a:10:{s:4:\"name\";s:12:\"Date All Day\";s:11:\"description\";s:142:\"Adds 'All Day' functionality to date fields, including an 'All Day' theme and 'All Day' checkboxes for the Date select and Date popup widgets.\";s:7:\"package\";s:9:\"Date/Time\";s:4:\"core\";s:3:\"7.x\";s:12:\"dependencies\";a:2:{i:0;s:13:\"date:date_api\";i:1;s:9:\"date:date\";}s:5:\"files\";a:2:{i:0;s:31:\"tests/DateAllDayUiTestCase.test\";i:1;s:32:\"tests/DateAllDayUpdatesTest.test\";}s:5:\"mtime\";i:1664867418;s:7:\"version\";N;s:3:\"php\";s:5:\"5.2.4\";s:9:\"bootstrap\";i:0;}",
+))
+->values(array(
+  'filename' => 'sites/all/modules/date/date_all_day/tests/date_all_day_test_feature/date_all_day_test_feature.module',
+  'name' => 'date_all_day_test_feature',
+  'type' => 'module',
+  'owner' => '',
+  'status' => '0',
+  'bootstrap' => '0',
+  'schema_version' => '-1',
+  'weight' => '0',
+  'info' => 'a:12:{s:4:"name";s:25:"Date All Day Test Feature";s:11:"description";s:57:"Example content type for testing the Date All Day module.";s:4:"core";s:3:"7.x";s:7:"package";s:9:"Date/Time";s:12:"dependencies";a:3:{i:0;s:9:"date:date";i:1;s:17:"date:date_all_day";i:2;s:17:"features:features";}s:8:"features";a:4:{s:12:"features_api";a:1:{i:0;s:5:"api:2";}s:10:"field_base";a:2:{i:0;s:4:"body";i:1;s:18:"field_date_all_day";}s:14:"field_instance";a:2:{i:0;s:27:"node-date_all_day_test-body";i:1;s:41:"node-date_all_day_test-field_date_all_day";}s:4:"node";a:1:{i:0;s:17:"date_all_day_test";}}s:6:"hidden";s:1:"1";s:5:"mtime";i:1664867418;s:7:"version";N;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/date/date_api/date_api.module',
@@ -57597,7 +63105,7 @@
   'bootstrap' => '0',
   'schema_version' => '7001',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:8:"Date API";s:11:"description";s:45:"A Date API that can be used by other modules.";s:7:"package";s:9:"Date/Time";s:4:"core";s:3:"7.x";s:3:"php";s:3:"5.2";s:11:"stylesheets";a:1:{s:3:"all";a:1:{s:8:"date.css";s:40:"sites/all/modules/date/date_api/date.css";}}s:5:"files";a:2:{i:0;s:15:"date_api.module";i:1;s:16:"date_api_sql.inc";}s:7:"version";s:7:"7.x-2.9";s:7:"project";s:4:"date";s:9:"datestamp";s:10:"1441727353";s:5:"mtime";i:1441727353;s:12:"dependencies";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:10:{s:4:"name";s:8:"Date API";s:11:"description";s:45:"A Date API that can be used by other modules.";s:7:"package";s:9:"Date/Time";s:4:"core";s:3:"7.x";s:5:"files";a:4:{i:0;s:15:"date_api.module";i:1;s:16:"date_api_sql.inc";i:2;s:26:"tests/DateApiTestCase.test";i:3;s:30:"tests/DateApiUnitTestCase.test";}s:5:"mtime";i:1664867418;s:12:"dependencies";a:0:{}s:7:"version";N;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/date/date_context/date_context.module',
@@ -57608,7 +63116,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:12:{s:4:"name";s:12:"Date Context";s:11:"description";s:99:"Adds an option to the Context module to set a context condition based on the value of a date field.";s:7:"package";s:9:"Date/Time";s:4:"core";s:3:"7.x";s:12:"dependencies";a:2:{i:0;s:4:"date";i:1;s:7:"context";}s:5:"files";a:2:{i:0;s:19:"date_context.module";i:1;s:39:"plugins/date_context_date_condition.inc";}s:7:"version";s:7:"7.x-2.9";s:7:"project";s:4:"date";s:9:"datestamp";s:10:"1441727353";s:5:"mtime";i:1441727353;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:10:{s:4:"name";s:12:"Date Context";s:11:"description";s:99:"Adds an option to the Context module to set a context condition based on the value of a date field.";s:7:"package";s:9:"Date/Time";s:4:"core";s:3:"7.x";s:12:"dependencies";a:2:{i:0;s:9:"date:date";i:1;s:15:"context:context";}s:5:"files";a:1:{i:0;s:39:"plugins/date_context_date_condition.inc";}s:5:"mtime";i:1664867418;s:7:"version";N;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/date/date_migrate/date_migrate.module',
@@ -57619,51 +63127,51 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:14:"Date Migration";s:11:"description";s:73:"Obsolete data migration module. Disable if no other modules depend on it.";s:4:"core";s:3:"7.x";s:7:"package";s:9:"Date/Time";s:6:"hidden";b:1;s:7:"version";s:7:"7.x-2.9";s:7:"project";s:4:"date";s:9:"datestamp";s:10:"1441727353";s:5:"mtime";i:1441727353;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:14:"Date Migration";s:11:"description";s:73:"Obsolete data migration module. Disable if no other modules depend on it.";s:4:"core";s:3:"7.x";s:7:"package";s:9:"Date/Time";s:6:"hidden";b:1;s:5:"mtime";i:1664867418;s:12:"dependencies";a:0:{}s:7:"version";N;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
-  'filename' => 'sites/all/modules/date/date_migrate/date_migrate_example/date_migrate_example.module',
-  'name' => 'date_migrate_example',
+  'filename' => 'sites/all/modules/date/date_popup/date_popup.module',
+  'name' => 'date_popup',
   'type' => 'module',
   'owner' => '',
   'status' => '0',
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"core";s:3:"7.x";s:12:"dependencies";a:5:{i:0;s:4:"date";i:1;s:11:"date_repeat";i:2;s:17:"date_repeat_field";i:3;s:8:"features";i:4;s:7:"migrate";}s:11:"description";s:42:"Examples of migrating with the Date module";s:8:"features";a:2:{s:5:"field";a:8:{i:0;s:30:"node-date_migrate_example-body";i:1;s:36:"node-date_migrate_example-field_date";i:2;s:42:"node-date_migrate_example-field_date_range";i:3;s:43:"node-date_migrate_example-field_date_repeat";i:4;s:41:"node-date_migrate_example-field_datestamp";i:5;s:47:"node-date_migrate_example-field_datestamp_range";i:6;s:40:"node-date_migrate_example-field_datetime";i:7;s:46:"node-date_migrate_example-field_datetime_range";}s:4:"node";a:1:{i:0;s:20:"date_migrate_example";}}s:5:"files";a:1:{i:0;s:32:"date_migrate_example.migrate.inc";}s:4:"name";s:22:"Date Migration Example";s:7:"package";s:8:"Features";s:7:"project";s:4:"date";s:7:"version";s:7:"7.x-2.9";s:9:"datestamp";s:10:"1441727353";s:5:"mtime";i:1441727353;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:10:"Date Popup";s:11:"description";s:84:"Enables jquery popup calendars and time entry widgets for selecting dates and times.";s:7:"package";s:9:"Date/Time";s:4:"core";s:3:"7.x";s:9:"configure";s:28:"admin/config/date/date_popup";s:12:"dependencies";a:1:{i:0;s:13:"date:date_api";}s:5:"files";a:3:{i:0;s:33:"tests/DatePopupFieldTestCase.test";i:1;s:38:"tests/DatePopupValidationTestCase.test";i:2;s:37:"tests/DatePopupWithViewsTestCase.test";}s:5:"mtime";i:1664867418;s:7:"version";N;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
-  'filename' => 'sites/all/modules/date/date_popup/date_popup.module',
-  'name' => 'date_popup',
+  'filename' => 'sites/all/modules/date/date_repeat/date_repeat.module',
+  'name' => 'date_repeat',
   'type' => 'module',
   'owner' => '',
   'status' => '0',
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:14:{s:4:"name";s:10:"Date Popup";s:11:"description";s:84:"Enables jquery popup calendars and time entry widgets for selecting dates and times.";s:12:"dependencies";a:1:{i:0;s:8:"date_api";}s:7:"package";s:9:"Date/Time";s:4:"core";s:3:"7.x";s:9:"configure";s:28:"admin/config/date/date_popup";s:11:"stylesheets";a:1:{s:3:"all";a:1:{s:25:"themes/datepicker.1.7.css";s:59:"sites/all/modules/date/date_popup/themes/datepicker.1.7.css";}}s:7:"version";s:7:"7.x-2.9";s:7:"project";s:4:"date";s:9:"datestamp";s:10:"1441727353";s:5:"mtime";i:1441727353;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:10:{s:4:"name";s:15:"Date Repeat API";s:11:"description";s:73:"A Date Repeat API to calculate repeating dates and times from iCal rules.";s:7:"package";s:9:"Date/Time";s:4:"core";s:3:"7.x";s:12:"dependencies";a:1:{i:0;s:13:"date:date_api";}s:5:"files";a:2:{i:0;s:22:"tests/date_repeat.test";i:1;s:27:"tests/date_repeat_form.test";}s:5:"mtime";i:1664867418;s:7:"version";N;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
-  'filename' => 'sites/all/modules/date/date_repeat/date_repeat.module',
-  'name' => 'date_repeat',
+  'filename' => 'sites/all/modules/date/date_repeat_field/date_repeat_field.module',
+  'name' => 'date_repeat_field',
   'type' => 'module',
   'owner' => '',
   'status' => '0',
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:12:{s:4:"name";s:15:"Date Repeat API";s:11:"description";s:73:"A Date Repeat API to calculate repeating dates and times from iCal rules.";s:12:"dependencies";a:1:{i:0;s:8:"date_api";}s:7:"package";s:9:"Date/Time";s:4:"core";s:3:"7.x";s:3:"php";s:3:"5.2";s:5:"files";a:2:{i:0;s:22:"tests/date_repeat.test";i:1;s:27:"tests/date_repeat_form.test";}s:7:"version";s:7:"7.x-2.9";s:7:"project";s:4:"date";s:9:"datestamp";s:10:"1441727353";s:5:"mtime";i:1441727353;s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:17:"Date Repeat Field";s:11:"description";s:97:"Creates the option of Repeating date fields and manages Date fields that use the Date Repeat API.";s:7:"package";s:9:"Date/Time";s:4:"core";s:3:"7.x";s:12:"dependencies";a:3:{i:0;s:13:"date:date_api";i:1;s:9:"date:date";i:2;s:16:"date:date_repeat";}s:11:"stylesheets";a:1:{s:3:"all";a:1:{s:21:"date_repeat_field.css";s:62:"sites/all/modules/date/date_repeat_field/date_repeat_field.css";}}s:5:"files";a:1:{i:0;s:34:"tests/DateRepeatFieldTestCase.test";}s:5:"mtime";i:1664867418;s:7:"version";N;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
-  'filename' => 'sites/all/modules/date/date_repeat_field/date_repeat_field.module',
-  'name' => 'date_repeat_field',
+  'filename' => 'sites/all/modules/date/date_repeat_field/tests/date_repeat_test_feature/date_repeat_test_feature.module',
+  'name' => 'date_repeat_test_feature',
   'type' => 'module',
   'owner' => '',
   'status' => '0',
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:17:"Date Repeat Field";s:11:"description";s:97:"Creates the option of Repeating date fields and manages Date fields that use the Date Repeat API.";s:12:"dependencies";a:3:{i:0;s:8:"date_api";i:1;s:4:"date";i:2;s:11:"date_repeat";}s:11:"stylesheets";a:1:{s:3:"all";a:1:{s:21:"date_repeat_field.css";s:62:"sites/all/modules/date/date_repeat_field/date_repeat_field.css";}}s:7:"package";s:9:"Date/Time";s:4:"core";s:3:"7.x";s:7:"version";s:7:"7.x-2.9";s:7:"project";s:4:"date";s:9:"datestamp";s:10:"1441727353";s:5:"mtime";i:1441727353;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:12:{s:4:"name";s:24:"Date Repeat Test Feature";s:11:"description";s:44:"Examples for testing the Date Repeat module.";s:4:"core";s:3:"7.x";s:7:"package";s:9:"Date/Time";s:6:"hidden";b:1;s:12:"dependencies";a:4:{i:0;s:9:"date:date";i:1;s:16:"date:date_repeat";i:2;s:22:"date:date_repeat_field";i:3;s:17:"features:features";}s:8:"features";a:4:{s:12:"features_api";a:1:{i:0;s:5:"api:2";}s:10:"field_base";a:2:{i:0;s:4:"body";i:1;s:17:"field_date_repeat";}s:14:"field_instance";a:2:{i:0;s:26:"node-date_repeat_test-body";i:1;s:39:"node-date_repeat_test-field_date_repeat";}s:4:"node";a:1:{i:0;s:16:"date_repeat_test";}}s:5:"mtime";i:1664867418;s:7:"version";N;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/date/date_tools/date_tools.module',
@@ -57674,7 +63182,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:10:"Date Tools";s:11:"description";s:52:"Tools to import and auto-create dates and calendars.";s:12:"dependencies";a:1:{i:0;s:4:"date";}s:7:"package";s:9:"Date/Time";s:4:"core";s:3:"7.x";s:9:"configure";s:23:"admin/config/date/tools";s:5:"files";a:1:{i:0;s:21:"tests/date_tools.test";}s:7:"version";s:8:"7.x-2.10";s:7:"project";s:4:"date";s:9:"datestamp";s:10:"1491562090";s:5:"mtime";i:1535762879;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:10:"Date Tools";s:11:"description";s:52:"Tools to import and auto-create dates and calendars.";s:7:"package";s:9:"Date/Time";s:4:"core";s:3:"7.x";s:9:"configure";s:23:"admin/config/date/tools";s:12:"dependencies";a:1:{i:0;s:9:"date:date";}s:5:"files";a:1:{i:0;s:28:"tests/DateToolsTestCase.test";}s:5:"mtime";i:1664867418;s:7:"version";N;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/date/date_views/date_views.module',
@@ -57685,7 +63193,18 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:12:{s:4:"name";s:10:"Date Views";s:11:"description";s:57:"Views integration for date fields and date functionality.";s:7:"package";s:9:"Date/Time";s:12:"dependencies";a:2:{i:0;s:8:"date_api";i:1;s:5:"views";}s:4:"core";s:3:"7.x";s:3:"php";s:3:"5.2";s:5:"files";a:6:{i:0;s:40:"includes/date_views_argument_handler.inc";i:1;s:47:"includes/date_views_argument_handler_simple.inc";i:2;s:38:"includes/date_views_filter_handler.inc";i:3;s:45:"includes/date_views_filter_handler_simple.inc";i:4;s:29:"includes/date_views.views.inc";i:5;s:36:"includes/date_views_plugin_pager.inc";}s:7:"version";s:8:"7.x-2.10";s:7:"project";s:4:"date";s:9:"datestamp";s:10:"1491562090";s:5:"mtime";i:1535762879;s:9:"bootstrap";i:0;}',
+  'info' => 'a:10:{s:4:"name";s:10:"Date Views";s:11:"description";s:57:"Views integration for date fields and date functionality.";s:7:"package";s:9:"Date/Time";s:4:"core";s:3:"7.x";s:12:"dependencies";a:2:{i:0;s:13:"date:date_api";i:1;s:11:"views:views";}s:5:"files";a:7:{i:0;s:40:"includes/date_views_argument_handler.inc";i:1;s:47:"includes/date_views_argument_handler_simple.inc";i:2;s:38:"includes/date_views_filter_handler.inc";i:3;s:45:"includes/date_views_filter_handler_simple.inc";i:4;s:36:"includes/date_views_plugin_pager.inc";i:5;s:28:"tests/date_views_filter.test";i:6;s:27:"tests/date_views_pager.test";}s:5:"mtime";i:1664867418;s:7:"version";N;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+))
+->values(array(
+  'filename' => 'sites/all/modules/date/tests/date_migrate_test/date_migrate_test.module',
+  'name' => 'date_migrate_test',
+  'type' => 'module',
+  'owner' => '',
+  'status' => '0',
+  'bootstrap' => '0',
+  'schema_version' => '-1',
+  'weight' => '0',
+  'info' => "a:11:{s:4:\"name\";s:26:\"Date Migration Test Helper\";s:11:\"description\";s:53:\"Helper for the Date module's Migrate API integration.\";s:7:\"package\";s:9:\"Date/Time\";s:4:\"core\";s:3:\"7.x\";s:6:\"hidden\";b:1;s:12:\"dependencies\";a:2:{i:0;s:22:\"date:date_test_feature\";i:1;s:15:\"migrate:migrate\";}s:5:\"files\";a:1:{i:0;s:29:\"date_migrate_test.migrate.inc\";}s:5:\"mtime\";i:1664867418;s:7:\"version\";N;s:3:\"php\";s:5:\"5.2.4\";s:9:\"bootstrap\";i:0;}",
 ))
 ->values(array(
   'filename' => 'sites/all/modules/date/tests/date_test/date_test.module',
@@ -57696,7 +63215,18 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:17:"Date module tests";s:11:"description";s:40:"Support module for date related testing.";s:7:"package";s:9:"Date/Time";s:7:"version";s:8:"7.x-2.10";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:12:"dependencies";a:1:{i:0;s:4:"date";}s:7:"project";s:4:"date";s:9:"datestamp";s:10:"1491562090";s:5:"mtime";i:1535762879;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:17:"Date module tests";s:11:"description";s:40:"Support module for date related testing.";s:7:"package";s:9:"Date/Time";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:12:"dependencies";a:1:{i:0;s:9:"date:date";}s:5:"mtime";i:1664867418;s:7:"version";N;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+))
+->values(array(
+  'filename' => 'sites/all/modules/date/tests/date_test_feature/date_test_feature.module',
+  'name' => 'date_test_feature',
+  'type' => 'module',
+  'owner' => '',
+  'status' => '0',
+  'bootstrap' => '0',
+  'schema_version' => '-1',
+  'weight' => '0',
+  'info' => 'a:12:{s:4:"name";s:17:"Date Test Feature";s:11:"description";s:73:"Examples of migrating with the Date module, primarily for use with tests.";s:4:"core";s:3:"7.x";s:7:"package";s:9:"Date/Time";s:6:"hidden";b:1;s:12:"dependencies";a:4:{i:0;s:9:"date:date";i:1;s:16:"date:date_repeat";i:2;s:22:"date:date_repeat_field";i:3;s:17:"features:features";}s:8:"features";a:4:{s:12:"features_api";a:1:{i:0;s:5:"api:2";}s:10:"field_base";a:8:{i:0;s:4:"body";i:1;s:10:"field_date";i:2;s:16:"field_date_range";i:3;s:17:"field_date_repeat";i:4;s:15:"field_datestamp";i:5;s:21:"field_datestamp_range";i:6;s:14:"field_datetime";i:7;s:20:"field_datetime_range";}s:14:"field_instance";a:8:{i:0;s:19:"node-date_test-body";i:1;s:25:"node-date_test-field_date";i:2;s:31:"node-date_test-field_date_range";i:3;s:32:"node-date_test-field_date_repeat";i:4;s:30:"node-date_test-field_datestamp";i:5;s:36:"node-date_test-field_datestamp_range";i:6;s:29:"node-date_test-field_datetime";i:7;s:35:"node-date_test-field_datetime_range";}s:4:"node";a:1:{i:0;s:9:"date_test";}}s:5:"mtime";i:1664867418;s:7:"version";N;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/email/email.module',
@@ -57707,7 +63237,7 @@
   'bootstrap' => '0',
   'schema_version' => '0',
   'weight' => '0',
-  'info' => 'a:14:{s:4:"name";s:5:"Email";s:11:"description";s:28:"Defines an email field type.";s:4:"core";s:3:"7.x";s:7:"package";s:6:"Fields";s:5:"files";a:1:{i:0;s:17:"email.migrate.inc";}s:7:"version";s:7:"7.x-1.3";s:7:"project";s:5:"email";s:9:"datestamp";s:10:"1397134155";s:5:"mtime";i:1397134155;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;s:8:"required";b:1;s:11:"explanation";s:73:"Field type(s) in use - see <a href="/admin/reports/fields">Field list</a>";}',
+  'info' => 'a:12:{s:4:"name";s:5:"Email";s:11:"description";s:28:"Defines an email field type.";s:4:"core";s:3:"7.x";s:7:"package";s:6:"Fields";s:5:"files";a:1:{i:0;s:17:"email.migrate.inc";}s:5:"mtime";i:1664867555;s:12:"dependencies";a:0:{}s:7:"version";N;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;s:8:"required";b:1;s:11:"explanation";s:73:"Field type(s) in use - see <a href="/admin/reports/fields">Field list</a>";}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/entity/entity.module',
@@ -57718,7 +63248,7 @@
   'bootstrap' => '0',
   'schema_version' => '7003',
   'weight' => '0',
-  'info' => 'a:12:{s:4:"name";s:10:"Entity API";s:11:"description";s:69:"Enables modules to work with any entity type and to provide entities.";s:4:"core";s:3:"7.x";s:5:"files";a:24:{i:0;s:19:"entity.features.inc";i:1;s:15:"entity.i18n.inc";i:2;s:15:"entity.info.inc";i:3;s:16:"entity.rules.inc";i:4;s:11:"entity.test";i:5;s:19:"includes/entity.inc";i:6;s:30:"includes/entity.controller.inc";i:7;s:22:"includes/entity.ui.inc";i:8;s:27:"includes/entity.wrapper.inc";i:9;s:22:"views/entity.views.inc";i:10;s:52:"views/handlers/entity_views_field_handler_helper.inc";i:11;s:51:"views/handlers/entity_views_handler_area_entity.inc";i:12;s:53:"views/handlers/entity_views_handler_field_boolean.inc";i:13;s:50:"views/handlers/entity_views_handler_field_date.inc";i:14;s:54:"views/handlers/entity_views_handler_field_duration.inc";i:15;s:52:"views/handlers/entity_views_handler_field_entity.inc";i:16;s:51:"views/handlers/entity_views_handler_field_field.inc";i:17;s:53:"views/handlers/entity_views_handler_field_numeric.inc";i:18;s:53:"views/handlers/entity_views_handler_field_options.inc";i:19;s:50:"views/handlers/entity_views_handler_field_text.inc";i:20;s:49:"views/handlers/entity_views_handler_field_uri.inc";i:21;s:62:"views/handlers/entity_views_handler_relationship_by_bundle.inc";i:22;s:52:"views/handlers/entity_views_handler_relationship.inc";i:23;s:53:"views/plugins/entity_views_plugin_row_entity_view.inc";}s:7:"version";s:7:"7.x-1.6";s:7:"project";s:6:"entity";s:9:"datestamp";s:10:"1424876582";s:5:"mtime";i:1424876582;s:12:"dependencies";a:0:{}s:7:"package";s:5:"Other";s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:10:{s:4:"name";s:10:"Entity API";s:11:"description";s:69:"Enables modules to work with any entity type and to provide entities.";s:4:"core";s:3:"7.x";s:5:"files";a:24:{i:0;s:19:"entity.features.inc";i:1;s:15:"entity.i18n.inc";i:2;s:15:"entity.info.inc";i:3;s:16:"entity.rules.inc";i:4;s:11:"entity.test";i:5;s:19:"includes/entity.inc";i:6;s:30:"includes/entity.controller.inc";i:7;s:22:"includes/entity.ui.inc";i:8;s:27:"includes/entity.wrapper.inc";i:9;s:22:"views/entity.views.inc";i:10;s:52:"views/handlers/entity_views_field_handler_helper.inc";i:11;s:51:"views/handlers/entity_views_handler_area_entity.inc";i:12;s:53:"views/handlers/entity_views_handler_field_boolean.inc";i:13;s:50:"views/handlers/entity_views_handler_field_date.inc";i:14;s:54:"views/handlers/entity_views_handler_field_duration.inc";i:15;s:52:"views/handlers/entity_views_handler_field_entity.inc";i:16;s:51:"views/handlers/entity_views_handler_field_field.inc";i:17;s:53:"views/handlers/entity_views_handler_field_numeric.inc";i:18;s:53:"views/handlers/entity_views_handler_field_options.inc";i:19;s:50:"views/handlers/entity_views_handler_field_text.inc";i:20;s:49:"views/handlers/entity_views_handler_field_uri.inc";i:21;s:62:"views/handlers/entity_views_handler_relationship_by_bundle.inc";i:22;s:52:"views/handlers/entity_views_handler_relationship.inc";i:23;s:53:"views/plugins/entity_views_plugin_row_entity_view.inc";}s:5:"mtime";i:1664868240;s:12:"dependencies";a:0:{}s:7:"package";s:5:"Other";s:7:"version";N;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/entity/entity_token.module',
@@ -57729,7 +63259,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:12:{s:4:"name";s:13:"Entity tokens";s:11:"description";s:99:"Provides token replacements for all properties that have no tokens and are known to the entity API.";s:4:"core";s:3:"7.x";s:5:"files";a:2:{i:0;s:23:"entity_token.tokens.inc";i:1;s:19:"entity_token.module";}s:12:"dependencies";a:1:{i:0;s:6:"entity";}s:7:"version";s:7:"7.x-1.6";s:7:"project";s:6:"entity";s:9:"datestamp";s:10:"1424876582";s:5:"mtime";i:1424876582;s:7:"package";s:5:"Other";s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:10:{s:4:"name";s:13:"Entity tokens";s:11:"description";s:99:"Provides token replacements for all properties that have no tokens and are known to the entity API.";s:4:"core";s:3:"7.x";s:5:"files";a:2:{i:0;s:23:"entity_token.tokens.inc";i:1;s:19:"entity_token.module";}s:12:"dependencies";a:1:{i:0;s:6:"entity";}s:5:"mtime";i:1664868240;s:7:"package";s:5:"Other";s:7:"version";N;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/entity/tests/entity_feature.module',
@@ -57740,7 +63270,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:21:"Entity feature module";s:11:"description";s:31:"Provides some entities in code.";s:7:"version";s:7:"7.x-1.6";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:21:"entity_feature.module";}s:12:"dependencies";a:1:{i:0;s:11:"entity_test";}s:6:"hidden";b:1;s:7:"project";s:6:"entity";s:9:"datestamp";s:10:"1424876582";s:5:"mtime";i:1424876582;s:7:"package";s:5:"Other";s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:21:"Entity feature module";s:11:"description";s:31:"Provides some entities in code.";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:21:"entity_feature.module";}s:12:"dependencies";a:1:{i:0;s:11:"entity_test";}s:6:"hidden";b:1;s:5:"mtime";i:1664868240;s:7:"package";s:5:"Other";s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/entity/tests/entity_test.module',
@@ -57751,7 +63281,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:23:"Entity CRUD test module";s:11:"description";s:46:"Provides entity types based upon the CRUD API.";s:7:"version";s:7:"7.x-1.6";s:4:"core";s:3:"7.x";s:5:"files";a:2:{i:0;s:18:"entity_test.module";i:1;s:19:"entity_test.install";}s:12:"dependencies";a:1:{i:0;s:6:"entity";}s:6:"hidden";b:1;s:7:"project";s:6:"entity";s:9:"datestamp";s:10:"1424876582";s:5:"mtime";i:1424876582;s:7:"package";s:5:"Other";s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:23:"Entity CRUD test module";s:11:"description";s:46:"Provides entity types based upon the CRUD API.";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:5:"files";a:2:{i:0;s:18:"entity_test.module";i:1;s:19:"entity_test.install";}s:12:"dependencies";a:1:{i:0;s:6:"entity";}s:6:"hidden";b:1;s:5:"mtime";i:1664868240;s:7:"package";s:5:"Other";s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/entity/tests/entity_test_i18n.module',
@@ -57762,7 +63292,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:28:"Entity-test type translation";s:11:"description";s:37:"Allows translating entity-test types.";s:12:"dependencies";a:2:{i:0;s:11:"entity_test";i:1;s:11:"i18n_string";}s:7:"package";s:35:"Multilingual - Internationalization";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:7:"version";s:7:"7.x-1.6";s:7:"project";s:6:"entity";s:9:"datestamp";s:10:"1424876582";s:5:"mtime";i:1424876582;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:28:"Entity-test type translation";s:11:"description";s:37:"Allows translating entity-test types.";s:12:"dependencies";a:2:{i:0;s:11:"entity_test";i:1;s:11:"i18n_string";}s:7:"package";s:35:"Multilingual - Internationalization";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:5:"mtime";i:1664868240;s:7:"version";N;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/entityreference/entityreference.module',
@@ -57771,9 +63301,9 @@
   'owner' => '',
   'status' => '1',
   'bootstrap' => '0',
-  'schema_version' => '7002',
+  'schema_version' => '7100',
   'weight' => '0',
-  'info' => 'a:14:{s:4:"name";s:16:"Entity Reference";s:11:"description";s:51:"Provides a field that can reference other entities.";s:4:"core";s:3:"7.x";s:7:"package";s:6:"Fields";s:12:"dependencies";a:2:{i:0;s:6:"entity";i:1;s:6:"ctools";}s:5:"files";a:11:{i:0;s:27:"entityreference.migrate.inc";i:1;s:30:"plugins/selection/abstract.inc";i:2;s:27:"plugins/selection/views.inc";i:3;s:29:"plugins/behavior/abstract.inc";i:4;s:40:"views/entityreference_plugin_display.inc";i:5;s:38:"views/entityreference_plugin_style.inc";i:6;s:43:"views/entityreference_plugin_row_fields.inc";i:7;s:35:"tests/entityreference.handlers.test";i:8;s:35:"tests/entityreference.taxonomy.test";i:9;s:32:"tests/entityreference.admin.test";i:10;s:32:"tests/entityreference.feeds.test";}s:7:"version";s:7:"7.x-1.1";s:7:"project";s:15:"entityreference";s:9:"datestamp";s:10:"1384973110";s:5:"mtime";i:1384973110;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;s:8:"required";b:1;s:11:"explanation";s:73:"Field type(s) in use - see <a href="/admin/reports/fields">Field list</a>";}',
+  'info' => 'a:13:{s:4:"name";s:16:"Entity Reference";s:11:"description";s:51:"Provides a field that can reference other entities.";s:7:"package";s:6:"Fields";s:4:"core";s:3:"7.x";s:12:"dependencies";a:2:{i:0;s:6:"entity";i:1;s:6:"ctools";}s:17:"test_dependencies";a:2:{i:0;s:5:"feeds";i:1;s:5:"views";}s:5:"files";a:13:{i:0;s:27:"entityreference.migrate.inc";i:1;s:30:"plugins/selection/abstract.inc";i:2;s:27:"plugins/selection/views.inc";i:3;s:29:"plugins/behavior/abstract.inc";i:4;s:40:"views/entityreference_plugin_display.inc";i:5;s:38:"views/entityreference_plugin_style.inc";i:6;s:43:"views/entityreference_plugin_row_fields.inc";i:7;s:35:"tests/entityreference.handlers.test";i:8;s:35:"tests/entityreference.taxonomy.test";i:9;s:32:"tests/entityreference.admin.test";i:10;s:32:"tests/entityreference.feeds.test";i:11;s:32:"tests/entityreference.field.test";i:12;s:45:"tests/entityreference.entity_translation.test";}s:5:"mtime";i:1664867650;s:7:"version";N;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;s:8:"required";b:1;s:11:"explanation";s:73:"Field type(s) in use - see <a href="/admin/reports/fields">Field list</a>";}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/entityreference/examples/entityreference_behavior_example/entityreference_behavior_example.module',
@@ -57784,7 +63314,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:12:{s:4:"name";s:33:"Entity Reference Behavior Example";s:11:"description";s:71:"Provides some example code for implementing Entity Reference behaviors.";s:4:"core";s:3:"7.x";s:7:"package";s:6:"Fields";s:12:"dependencies";a:1:{i:0;s:15:"entityreference";}s:7:"version";s:7:"7.x-1.1";s:7:"project";s:15:"entityreference";s:9:"datestamp";s:10:"1384973110";s:5:"mtime";i:1384973110;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:10:{s:4:"name";s:33:"Entity Reference Behavior Example";s:11:"description";s:71:"Provides some example code for implementing Entity Reference behaviors.";s:4:"core";s:3:"7.x";s:7:"package";s:6:"Fields";s:12:"dependencies";a:1:{i:0;s:15:"entityreference";}s:5:"mtime";i:1664867650;s:7:"version";N;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/entityreference/tests/modules/entityreference_feeds_test/entityreference_feeds_test.module',
@@ -57795,7 +63325,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:41:"Entityreference - Feeds integration tests";s:11:"description";s:65:"Support module for the Entityreference - Feeds integration tests.";s:7:"package";s:7:"Testing";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:12:"dependencies";a:3:{i:0;s:5:"feeds";i:1;s:8:"feeds_ui";i:2;s:15:"entityreference";}s:7:"version";s:7:"7.x-1.1";s:7:"project";s:15:"entityreference";s:9:"datestamp";s:10:"1384973110";s:5:"mtime";i:1384973110;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:41:"Entityreference - Feeds integration tests";s:11:"description";s:65:"Support module for the Entityreference - Feeds integration tests.";s:7:"package";s:7:"Testing";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:12:"dependencies";a:3:{i:0;s:5:"feeds";i:1;s:8:"feeds_ui";i:2;s:15:"entityreference";}s:5:"mtime";i:1664867650;s:7:"version";N;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/entity_translation/entity_translation.module',
@@ -57806,7 +63336,7 @@
   'bootstrap' => '0',
   'schema_version' => '7009',
   'weight' => '11',
-  'info' => 'a:14:{s:4:"name";s:18:"Entity Translation";s:11:"description";s:58:"Allows entities to be translated into different languages.";s:7:"package";s:33:"Multilingual - Entity Translation";s:4:"core";s:3:"7.x";s:9:"configure";s:40:"admin/config/regional/entity_translation";s:12:"dependencies";a:1:{i:0;s:14:"locale (>7.14)";}s:17:"test_dependencies";a:2:{i:0;s:17:"pathauto:pathauto";i:1;s:5:"title";}s:5:"files";a:15:{i:0;s:40:"includes/translation.handler_factory.inc";i:1;s:32:"includes/translation.handler.inc";i:2;s:40:"includes/translation.handler.comment.inc";i:3;s:37:"includes/translation.handler.node.inc";i:4;s:46:"includes/translation.handler.taxonomy_term.inc";i:5;s:37:"includes/translation.handler.user.inc";i:6;s:32:"includes/translation.migrate.inc";i:7;s:29:"tests/entity_translation.test";i:8;s:49:"views/entity_translation_handler_relationship.inc";i:9;s:57:"views/entity_translation_handler_field_translate_link.inc";i:10;s:48:"views/entity_translation_handler_field_label.inc";i:11;s:55:"views/entity_translation_handler_filter_entity_type.inc";i:12;s:52:"views/entity_translation_handler_filter_language.inc";i:13;s:62:"views/entity_translation_handler_filter_translation_exists.inc";i:14;s:48:"views/entity_translation_handler_field_field.inc";}s:7:"version";s:7:"7.x-1.0";s:7:"project";s:18:"entity_translation";s:9:"datestamp";s:10:"1522600694";s:5:"mtime";i:1535762879;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:12:{s:4:"name";s:18:"Entity Translation";s:11:"description";s:58:"Allows entities to be translated into different languages.";s:7:"package";s:33:"Multilingual - Entity Translation";s:4:"core";s:3:"7.x";s:9:"configure";s:40:"admin/config/regional/entity_translation";s:12:"dependencies";a:1:{i:0;s:14:"locale (>7.14)";}s:17:"test_dependencies";a:2:{i:0;s:17:"pathauto:pathauto";i:1;s:11:"title:title";}s:5:"files";a:15:{i:0;s:40:"includes/translation.handler_factory.inc";i:1;s:32:"includes/translation.handler.inc";i:2;s:40:"includes/translation.handler.comment.inc";i:3;s:37:"includes/translation.handler.node.inc";i:4;s:46:"includes/translation.handler.taxonomy_term.inc";i:5;s:37:"includes/translation.handler.user.inc";i:6;s:32:"includes/translation.migrate.inc";i:7;s:29:"tests/entity_translation.test";i:8;s:49:"views/entity_translation_handler_relationship.inc";i:9;s:57:"views/entity_translation_handler_field_translate_link.inc";i:10;s:48:"views/entity_translation_handler_field_label.inc";i:11;s:55:"views/entity_translation_handler_filter_entity_type.inc";i:12;s:52:"views/entity_translation_handler_filter_language.inc";i:13;s:62:"views/entity_translation_handler_filter_translation_exists.inc";i:14;s:48:"views/entity_translation_handler_field_field.inc";}s:5:"mtime";i:1664867622;s:7:"version";N;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/entity_translation/entity_translation_i18n_menu/entity_translation_i18n_menu.module',
@@ -57817,7 +63347,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:12:{s:4:"name";s:23:"Entity Translation Menu";s:11:"description";s:54:"Allows menu items to be translated on the entity form.";s:7:"package";s:33:"Multilingual - Entity Translation";s:4:"core";s:3:"7.x";s:12:"dependencies";a:3:{i:0;s:18:"entity_translation";i:1;s:4:"i18n";i:2;s:9:"i18n_menu";}s:5:"files";a:1:{i:0;s:33:"entity_translation_i18n_menu.test";}s:7:"version";s:7:"7.x-1.0";s:7:"project";s:18:"entity_translation";s:9:"datestamp";s:10:"1522600694";s:5:"mtime";i:1535762879;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:10:{s:4:"name";s:23:"Entity Translation Menu";s:11:"description";s:54:"Allows menu items to be translated on the entity form.";s:7:"package";s:33:"Multilingual - Entity Translation";s:4:"core";s:3:"7.x";s:12:"dependencies";a:3:{i:0;s:18:"entity_translation";i:1;s:4:"i18n";i:2;s:9:"i18n_menu";}s:5:"files";a:1:{i:0;s:33:"entity_translation_i18n_menu.test";}s:5:"mtime";i:1664867622;s:7:"version";N;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/entity_translation/entity_translation_upgrade/entity_translation_upgrade.module',
@@ -57828,7 +63358,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:12:{s:4:"name";s:26:"Entity Translation Upgrade";s:11:"description";s:80:"Provides an upgrade path from node-based translation to field-based translation.";s:7:"package";s:33:"Multilingual - Entity Translation";s:4:"core";s:3:"7.x";s:12:"dependencies";a:1:{i:0;s:18:"entity_translation";}s:5:"files";a:1:{i:0;s:31:"entity_translation_upgrade.test";}s:7:"version";s:7:"7.x-1.0";s:7:"project";s:18:"entity_translation";s:9:"datestamp";s:10:"1522600694";s:5:"mtime";i:1535762879;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:10:{s:4:"name";s:26:"Entity Translation Upgrade";s:11:"description";s:80:"Provides an upgrade path from node-based translation to field-based translation.";s:7:"package";s:33:"Multilingual - Entity Translation";s:4:"core";s:3:"7.x";s:12:"dependencies";a:1:{i:0;s:18:"entity_translation";}s:5:"files";a:1:{i:0;s:31:"entity_translation_upgrade.test";}s:5:"mtime";i:1664867622;s:7:"version";N;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/entity_translation/tests/entity_translation_test.module',
@@ -57839,7 +63369,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:26:"Entity Translation testing";s:11:"description";s:61:"Tests Entity Translation module functionality. Do not enable.";s:4:"core";s:3:"7.x";s:7:"package";s:7:"Testing";s:6:"hidden";b:1;s:12:"dependencies";a:1:{i:0;s:18:"entity_translation";}s:5:"files";a:1:{i:0;s:30:"entity_translation_test.module";}s:7:"version";s:7:"7.x-1.0";s:7:"project";s:18:"entity_translation";s:9:"datestamp";s:10:"1522600694";s:5:"mtime";i:1535762879;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:26:"Entity Translation testing";s:11:"description";s:61:"Tests Entity Translation module functionality. Do not enable.";s:4:"core";s:3:"7.x";s:7:"package";s:7:"Testing";s:6:"hidden";b:1;s:12:"dependencies";a:1:{i:0;s:18:"entity_translation";}s:5:"files";a:1:{i:0;s:30:"entity_translation_test.module";}s:5:"mtime";i:1664867622;s:7:"version";N;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/i18n/i18n.module',
@@ -57850,7 +63380,7 @@
   'bootstrap' => '1',
   'schema_version' => '7001',
   'weight' => '10',
-  'info' => 'a:13:{s:4:"name";s:20:"Internationalization";s:11:"description";s:49:"Extends Drupal support for multilingual features.";s:12:"dependencies";a:2:{i:0;s:6:"locale";i:1;s:8:"variable";}s:7:"package";s:35:"Multilingual - Internationalization";s:4:"core";s:3:"7.x";s:5:"files";a:2:{i:0;s:15:"i18n_object.inc";i:1;s:9:"i18n.test";}s:9:"configure";s:26:"admin/config/regional/i18n";s:7:"version";s:8:"7.x-1.26";s:7:"project";s:4:"i18n";s:9:"datestamp";s:10:"1534531985";s:5:"mtime";i:1534531985;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:20:"Internationalization";s:11:"description";s:49:"Extends Drupal support for multilingual features.";s:12:"dependencies";a:2:{i:0;s:6:"locale";i:1;s:8:"variable";}s:7:"package";s:35:"Multilingual - Internationalization";s:4:"core";s:3:"7.x";s:5:"files";a:2:{i:0;s:15:"i18n_object.inc";i:1;s:9:"i18n.test";}s:9:"configure";s:26:"admin/config/regional/i18n";s:5:"mtime";i:1664867462;s:7:"version";N;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/i18n/i18n_block/i18n_block.module',
@@ -57861,7 +63391,7 @@
   'bootstrap' => '0',
   'schema_version' => '7001',
   'weight' => '100',
-  'info' => 'a:12:{s:4:"name";s:15:"Block languages";s:11:"description";s:68:"Enables language selector for blocks and optional block translation.";s:12:"dependencies";a:2:{i:0;s:5:"block";i:1;s:11:"i18n_string";}s:7:"package";s:35:"Multilingual - Internationalization";s:4:"core";s:3:"7.x";s:5:"files";a:2:{i:0;s:14:"i18n_block.inc";i:1;s:15:"i18n_block.test";}s:7:"version";s:8:"7.x-1.25";s:7:"project";s:4:"i18n";s:9:"datestamp";s:10:"1531342125";s:5:"mtime";i:1537747250;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:10:{s:4:"name";s:15:"Block languages";s:11:"description";s:68:"Enables language selector for blocks and optional block translation.";s:12:"dependencies";a:2:{i:0;s:5:"block";i:1;s:11:"i18n_string";}s:7:"package";s:35:"Multilingual - Internationalization";s:4:"core";s:3:"7.x";s:5:"files";a:2:{i:0;s:14:"i18n_block.inc";i:1;s:15:"i18n_block.test";}s:5:"mtime";i:1664867462;s:7:"version";N;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/i18n/i18n_contact/i18n_contact.module',
@@ -57872,7 +63402,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:12:{s:4:"name";s:19:"Contact translation";s:11:"description";s:63:"Makes contact categories and replies available for translation.";s:12:"dependencies";a:2:{i:0;s:7:"contact";i:1;s:11:"i18n_string";}s:7:"package";s:35:"Multilingual - Internationalization";s:4:"core";s:3:"7.x";s:7:"version";s:8:"7.x-1.25";s:7:"project";s:4:"i18n";s:9:"datestamp";s:10:"1531342125";s:5:"mtime";i:1537747250;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:10:{s:4:"name";s:19:"Contact translation";s:11:"description";s:63:"Makes contact categories and replies available for translation.";s:12:"dependencies";a:2:{i:0;s:7:"contact";i:1;s:11:"i18n_string";}s:7:"package";s:35:"Multilingual - Internationalization";s:4:"core";s:3:"7.x";s:5:"mtime";i:1664867462;s:7:"version";N;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/i18n/i18n_field/i18n_field.module',
@@ -57881,9 +63411,9 @@
   'owner' => '',
   'status' => '1',
   'bootstrap' => '0',
-  'schema_version' => '-1',
+  'schema_version' => '7000',
   'weight' => '0',
-  'info' => 'a:12:{s:4:"name";s:17:"Field translation";s:11:"description";s:26:"Translate field properties";s:12:"dependencies";a:2:{i:0;s:5:"field";i:1;s:11:"i18n_string";}s:7:"package";s:35:"Multilingual - Internationalization";s:4:"core";s:3:"7.x";s:5:"files";a:2:{i:0;s:14:"i18n_field.inc";i:1;s:15:"i18n_field.test";}s:7:"version";s:8:"7.x-1.25";s:7:"project";s:4:"i18n";s:9:"datestamp";s:10:"1531342125";s:5:"mtime";i:1537747250;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:10:{s:4:"name";s:17:"Field translation";s:11:"description";s:26:"Translate field properties";s:12:"dependencies";a:2:{i:0;s:5:"field";i:1;s:11:"i18n_string";}s:7:"package";s:35:"Multilingual - Internationalization";s:4:"core";s:3:"7.x";s:5:"files";a:2:{i:0;s:14:"i18n_field.inc";i:1;s:15:"i18n_field.test";}s:5:"mtime";i:1664867462;s:7:"version";N;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/i18n/i18n_forum/i18n_forum.module',
@@ -57894,7 +63424,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:12:{s:4:"name";s:18:"Multilingual forum";s:11:"description";s:60:"Enables multilingual forum, translates names and containers.";s:12:"dependencies";a:3:{i:0;s:5:"forum";i:1;s:13:"i18n_taxonomy";i:2;s:9:"i18n_node";}s:7:"package";s:35:"Multilingual - Internationalization";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:15:"i18n_forum.test";}s:7:"version";s:8:"7.x-1.26";s:7:"project";s:4:"i18n";s:9:"datestamp";s:10:"1534531985";s:5:"mtime";i:1534531985;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:10:{s:4:"name";s:18:"Multilingual forum";s:11:"description";s:60:"Enables multilingual forum, translates names and containers.";s:12:"dependencies";a:3:{i:0;s:5:"forum";i:1;s:13:"i18n_taxonomy";i:2;s:9:"i18n_node";}s:7:"package";s:35:"Multilingual - Internationalization";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:15:"i18n_forum.test";}s:5:"mtime";i:1664867462;s:7:"version";N;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/i18n/i18n_menu/i18n_menu.module',
@@ -57905,7 +63435,7 @@
   'bootstrap' => '0',
   'schema_version' => '7001',
   'weight' => '5',
-  'info' => 'a:10:{s:4:"name";s:16:"Menu translation";s:11:"description";s:40:"Supports translatable custom menu items.";s:12:"dependencies";a:4:{i:0;s:4:"i18n";i:1;s:4:"menu";i:2;s:11:"i18n_string";i:3;s:16:"i18n_translation";}s:7:"package";s:35:"Multilingual - Internationalization";s:4:"core";s:3:"7.x";s:5:"files";a:2:{i:0;s:13:"i18n_menu.inc";i:1;s:14:"i18n_menu.test";}s:5:"mtime";i:1569454741;s:7:"version";N;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:10:{s:4:"name";s:16:"Menu translation";s:11:"description";s:40:"Supports translatable custom menu items.";s:12:"dependencies";a:4:{i:0;s:4:"i18n";i:1;s:4:"menu";i:2;s:11:"i18n_string";i:3;s:16:"i18n_translation";}s:7:"package";s:35:"Multilingual - Internationalization";s:4:"core";s:3:"7.x";s:5:"files";a:2:{i:0;s:13:"i18n_menu.inc";i:1;s:14:"i18n_menu.test";}s:5:"mtime";i:1664867462;s:7:"version";N;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/i18n/i18n_node/i18n_node.module',
@@ -57916,7 +63446,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:20:"Multilingual content";s:11:"description";s:46:"Extended node options for multilingual content";s:12:"dependencies";a:3:{i:0;s:11:"translation";i:1;s:4:"i18n";i:2;s:11:"i18n_string";}s:7:"package";s:35:"Multilingual - Internationalization";s:4:"core";s:3:"7.x";s:9:"configure";s:31:"admin/config/regional/i18n/node";s:5:"files";a:2:{i:0;s:14:"i18n_node.test";i:1;s:22:"i18n_node.variable.inc";}s:7:"version";s:8:"7.x-1.26";s:7:"project";s:4:"i18n";s:9:"datestamp";s:10:"1534531985";s:5:"mtime";i:1534531985;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:20:"Multilingual content";s:11:"description";s:46:"Extended node options for multilingual content";s:12:"dependencies";a:3:{i:0;s:11:"translation";i:1;s:4:"i18n";i:2;s:11:"i18n_string";}s:7:"package";s:35:"Multilingual - Internationalization";s:4:"core";s:3:"7.x";s:9:"configure";s:31:"admin/config/regional/i18n/node";s:5:"files";a:2:{i:0;s:14:"i18n_node.test";i:1;s:22:"i18n_node.variable.inc";}s:5:"mtime";i:1664867462;s:7:"version";N;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/i18n/i18n_path/i18n_path.module',
@@ -57927,7 +63457,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:12:{s:4:"name";s:16:"Path translation";s:11:"description";s:37:"Define translations for generic paths";s:12:"dependencies";a:1:{i:0;s:16:"i18n_translation";}s:7:"package";s:35:"Multilingual - Internationalization";s:4:"core";s:3:"7.x";s:5:"files";a:2:{i:0;s:13:"i18n_path.inc";i:1;s:14:"i18n_path.test";}s:7:"version";s:8:"7.x-1.26";s:7:"project";s:4:"i18n";s:9:"datestamp";s:10:"1534531985";s:5:"mtime";i:1534531985;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:10:{s:4:"name";s:16:"Path translation";s:11:"description";s:37:"Define translations for generic paths";s:12:"dependencies";a:1:{i:0;s:16:"i18n_translation";}s:7:"package";s:35:"Multilingual - Internationalization";s:4:"core";s:3:"7.x";s:5:"files";a:2:{i:0;s:13:"i18n_path.inc";i:1;s:14:"i18n_path.test";}s:5:"mtime";i:1664867462;s:7:"version";N;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/i18n/i18n_redirect/i18n_redirect.module',
@@ -57938,7 +63468,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:12:{s:4:"name";s:20:"Translation redirect";s:11:"description";s:71:"Redirect to translated page when available. SEO for multilingual sites.";s:12:"dependencies";a:1:{i:0;s:4:"i18n";}s:7:"package";s:35:"Multilingual - Internationalization";s:4:"core";s:3:"7.x";s:7:"version";s:8:"7.x-1.26";s:7:"project";s:4:"i18n";s:9:"datestamp";s:10:"1534531985";s:5:"mtime";i:1534531985;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:10:{s:4:"name";s:20:"Translation redirect";s:11:"description";s:71:"Redirect to translated page when available. SEO for multilingual sites.";s:12:"dependencies";a:1:{i:0;s:4:"i18n";}s:7:"package";s:35:"Multilingual - Internationalization";s:4:"core";s:3:"7.x";s:5:"mtime";i:1664867462;s:7:"version";N;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/i18n/i18n_select/i18n_select.module',
@@ -57949,7 +63479,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:19:"Multilingual select";s:11:"description";s:45:"API module for multilingual content selection";s:12:"dependencies";a:1:{i:0;s:4:"i18n";}s:7:"package";s:35:"Multilingual - Internationalization";s:4:"core";s:3:"7.x";s:9:"configure";s:33:"admin/config/regional/i18n/select";s:5:"files";a:1:{i:0;s:16:"i18n_select.test";}s:7:"version";s:8:"7.x-1.25";s:7:"project";s:4:"i18n";s:9:"datestamp";s:10:"1531342125";s:5:"mtime";i:1537747251;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:19:"Multilingual select";s:11:"description";s:45:"API module for multilingual content selection";s:12:"dependencies";a:1:{i:0;s:4:"i18n";}s:7:"package";s:35:"Multilingual - Internationalization";s:4:"core";s:3:"7.x";s:9:"configure";s:33:"admin/config/regional/i18n/select";s:5:"files";a:1:{i:0;s:16:"i18n_select.test";}s:5:"mtime";i:1664867462;s:7:"version";N;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/i18n/i18n_string/i18n_string.module',
@@ -57958,9 +63488,9 @@
   'owner' => '',
   'status' => '1',
   'bootstrap' => '0',
-  'schema_version' => '-1',
-  'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:18:"String translation";s:11:"description";s:57:"Provides support for translation of user defined strings.";s:12:"dependencies";a:2:{i:0;s:6:"locale";i:1;s:4:"i18n";}s:7:"package";s:35:"Multilingual - Internationalization";s:4:"core";s:3:"7.x";s:5:"files";a:3:{i:0;s:21:"i18n_string.admin.inc";i:1;s:15:"i18n_string.inc";i:2;s:16:"i18n_string.test";}s:9:"configure";s:34:"admin/config/regional/i18n/strings";s:7:"version";s:8:"7.x-1.25";s:7:"project";s:4:"i18n";s:9:"datestamp";s:10:"1531342125";s:5:"mtime";i:1537747251;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'schema_version' => '7004',
+  'weight' => '10',
+  'info' => 'a:11:{s:4:"name";s:18:"String translation";s:11:"description";s:57:"Provides support for translation of user defined strings.";s:12:"dependencies";a:2:{i:0;s:6:"locale";i:1;s:4:"i18n";}s:7:"package";s:35:"Multilingual - Internationalization";s:4:"core";s:3:"7.x";s:5:"files";a:3:{i:0;s:21:"i18n_string.admin.inc";i:1;s:15:"i18n_string.inc";i:2;s:16:"i18n_string.test";}s:9:"configure";s:34:"admin/config/regional/i18n/strings";s:5:"mtime";i:1664867462;s:7:"version";N;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/i18n/i18n_sync/i18n_sync.module',
@@ -57969,9 +63499,9 @@
   'owner' => '',
   'status' => '1',
   'bootstrap' => '0',
-  'schema_version' => '-1',
-  'weight' => '0',
-  'info' => 'a:12:{s:4:"name";s:24:"Synchronize translations";s:11:"description";s:73:"Synchronizes taxonomy and fields across translations of the same content.";s:12:"dependencies";a:2:{i:0;s:4:"i18n";i:1;s:11:"translation";}s:7:"package";s:35:"Multilingual - Internationalization";s:4:"core";s:3:"7.x";s:5:"files";a:5:{i:0;s:16:"i18n_sync.module";i:1;s:17:"i18n_sync.install";i:2;s:20:"i18n_sync.module.inc";i:3;s:18:"i18n_sync.node.inc";i:4;s:14:"i18n_sync.test";}s:7:"version";s:8:"7.x-1.25";s:7:"project";s:4:"i18n";s:9:"datestamp";s:10:"1531342125";s:5:"mtime";i:1537747251;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'schema_version' => '7000',
+  'weight' => '100',
+  'info' => 'a:10:{s:4:"name";s:24:"Synchronize translations";s:11:"description";s:73:"Synchronizes taxonomy and fields across translations of the same content.";s:12:"dependencies";a:2:{i:0;s:4:"i18n";i:1;s:11:"translation";}s:7:"package";s:35:"Multilingual - Internationalization";s:4:"core";s:3:"7.x";s:5:"files";a:5:{i:0;s:16:"i18n_sync.module";i:1;s:17:"i18n_sync.install";i:2;s:20:"i18n_sync.module.inc";i:3;s:18:"i18n_sync.node.inc";i:4;s:14:"i18n_sync.test";}s:5:"mtime";i:1664867462;s:7:"version";N;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/i18n/i18n_taxonomy/i18n_taxonomy.module',
@@ -57982,7 +63512,7 @@
   'bootstrap' => '0',
   'schema_version' => '7004',
   'weight' => '5',
-  'info' => 'a:12:{s:4:"name";s:20:"Taxonomy translation";s:11:"description";s:30:"Enables multilingual taxonomy.";s:12:"dependencies";a:3:{i:0;s:8:"taxonomy";i:1;s:11:"i18n_string";i:2;s:16:"i18n_translation";}s:7:"package";s:35:"Multilingual - Internationalization";s:4:"core";s:3:"7.x";s:5:"files";a:4:{i:0;s:17:"i18n_taxonomy.inc";i:1;s:23:"i18n_taxonomy.pages.inc";i:2;s:23:"i18n_taxonomy.admin.inc";i:3;s:18:"i18n_taxonomy.test";}s:7:"version";s:8:"7.x-1.25";s:7:"project";s:4:"i18n";s:9:"datestamp";s:10:"1531342125";s:5:"mtime";i:1537747251;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:10:{s:4:"name";s:20:"Taxonomy translation";s:11:"description";s:30:"Enables multilingual taxonomy.";s:12:"dependencies";a:3:{i:0;s:8:"taxonomy";i:1;s:11:"i18n_string";i:2;s:16:"i18n_translation";}s:7:"package";s:35:"Multilingual - Internationalization";s:4:"core";s:3:"7.x";s:5:"files";a:4:{i:0;s:17:"i18n_taxonomy.inc";i:1;s:23:"i18n_taxonomy.pages.inc";i:2;s:23:"i18n_taxonomy.admin.inc";i:3;s:18:"i18n_taxonomy.test";}s:5:"mtime";i:1664867462;s:7:"version";N;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/i18n/i18n_translation/i18n_translation.module',
@@ -57991,9 +63521,9 @@
   'owner' => '',
   'status' => '1',
   'bootstrap' => '0',
-  'schema_version' => '-1',
+  'schema_version' => '0',
   'weight' => '0',
-  'info' => 'a:12:{s:4:"name";s:16:"Translation sets";s:11:"description";s:47:"Simple translation sets API for generic objects";s:12:"dependencies";a:1:{i:0;s:4:"i18n";}s:7:"package";s:35:"Multilingual - Internationalization";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:20:"i18n_translation.inc";}s:7:"version";s:8:"7.x-1.25";s:7:"project";s:4:"i18n";s:9:"datestamp";s:10:"1531342125";s:5:"mtime";i:1537747251;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:10:{s:4:"name";s:16:"Translation sets";s:11:"description";s:47:"Simple translation sets API for generic objects";s:12:"dependencies";a:1:{i:0;s:4:"i18n";}s:7:"package";s:35:"Multilingual - Internationalization";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:20:"i18n_translation.inc";}s:5:"mtime";i:1664867462;s:7:"version";N;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/i18n/i18n_user/i18n_user.module',
@@ -58004,7 +63534,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:12:{s:4:"name";s:21:"User mail translation";s:11:"description";s:43:"Translate emails sent from the User module.";s:4:"core";s:3:"7.x";s:7:"package";s:35:"Multilingual - Internationalization";s:12:"dependencies";a:1:{i:0;s:13:"i18n_variable";}s:7:"version";s:8:"7.x-1.26";s:7:"project";s:4:"i18n";s:9:"datestamp";s:10:"1534531985";s:5:"mtime";i:1534531985;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:10:{s:4:"name";s:21:"User mail translation";s:11:"description";s:43:"Translate emails sent from the User module.";s:4:"core";s:3:"7.x";s:7:"package";s:35:"Multilingual - Internationalization";s:12:"dependencies";a:1:{i:0;s:13:"i18n_variable";}s:5:"mtime";i:1664867462;s:7:"version";N;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/i18n/i18n_variable/i18n_variable.module',
@@ -58015,7 +63545,7 @@
   'bootstrap' => '1',
   'schema_version' => '7004',
   'weight' => '-900',
-  'info' => 'a:13:{s:4:"name";s:20:"Variable translation";s:11:"description";s:71:"Multilingual variables that switch language depending on page language.";s:12:"dependencies";a:3:{i:0;s:4:"i18n";i:1;s:24:"variable_store (7.x-2.x)";i:2;s:24:"variable_realm (7.x-2.x)";}s:7:"package";s:35:"Multilingual - Internationalization";s:4:"core";s:3:"7.x";s:9:"configure";s:35:"admin/config/regional/i18n/variable";s:5:"files";a:2:{i:0;s:23:"i18n_variable.class.inc";i:1;s:18:"i18n_variable.test";}s:7:"version";s:8:"7.x-1.26";s:7:"project";s:4:"i18n";s:9:"datestamp";s:10:"1534531985";s:5:"mtime";i:1534531985;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:20:"Variable translation";s:11:"description";s:71:"Multilingual variables that switch language depending on page language.";s:12:"dependencies";a:3:{i:0;s:4:"i18n";i:1;s:24:"variable_store (7.x-2.x)";i:2;s:24:"variable_realm (7.x-2.x)";}s:7:"package";s:35:"Multilingual - Internationalization";s:4:"core";s:3:"7.x";s:9:"configure";s:35:"admin/config/regional/i18n/variable";s:5:"files";a:2:{i:0;s:23:"i18n_variable.class.inc";i:1;s:18:"i18n_variable.test";}s:5:"mtime";i:1664867462;s:7:"version";N;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/i18n/tests/i18n_test.module',
@@ -58026,7 +63556,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:26:"Internationalization tests";s:11:"description";s:55:"Helper module for testing i18n (do not enable manually)";s:12:"dependencies";a:3:{i:0;s:6:"locale";i:1;s:11:"translation";i:2;s:4:"i18n";}s:7:"package";s:7:"Testing";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:7:"version";s:8:"7.x-1.26";s:7:"project";s:4:"i18n";s:9:"datestamp";s:10:"1534531985";s:5:"mtime";i:1534531985;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:26:"Internationalization tests";s:11:"description";s:55:"Helper module for testing i18n (do not enable manually)";s:12:"dependencies";a:3:{i:0;s:6:"locale";i:1;s:11:"translation";i:2;s:4:"i18n";}s:7:"package";s:7:"Testing";s:4:"core";s:3:"6.x";s:6:"hidden";b:1;s:5:"mtime";i:1664867462;s:7:"version";N;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/link/link.module',
@@ -58035,86 +63565,108 @@
   'owner' => '',
   'status' => '1',
   'bootstrap' => '0',
-  'schema_version' => '7001',
+  'schema_version' => '7100',
   'weight' => '0',
-  'info' => 'a:14:{s:4:"name";s:4:"Link";s:11:"description";s:32:"Defines simple link field types.";s:4:"core";s:3:"7.x";s:7:"package";s:6:"Fields";s:5:"files";a:10:{i:0;s:11:"link.module";i:1;s:16:"link.migrate.inc";i:2;s:15:"tests/link.test";i:3;s:25:"tests/link.attribute.test";i:4;s:20:"tests/link.crud.test";i:5;s:28:"tests/link.crud_browser.test";i:6;s:21:"tests/link.token.test";i:7;s:24:"tests/link.validate.test";i:8;s:44:"views/link_views_handler_argument_target.inc";i:9;s:44:"views/link_views_handler_filter_protocol.inc";}s:7:"version";s:7:"7.x-1.3";s:7:"project";s:4:"link";s:9:"datestamp";s:10:"1413924830";s:5:"mtime";i:1413924830;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;s:8:"required";b:1;s:11:"explanation";s:73:"Field type(s) in use - see <a href="/admin/reports/fields">Field list</a>";}',
+  'info' => 'a:14:{s:4:"name";s:4:"Link";s:11:"description";s:32:"Defines simple link field types.";s:4:"core";s:3:"7.x";s:7:"package";s:6:"Fields";s:9:"configure";s:25:"admin/config/content/link";s:5:"files";a:15:{i:0;s:16:"link.migrate.inc";i:1;s:44:"views/link_views_handler_argument_target.inc";i:2;s:44:"views/link_views_handler_filter_protocol.inc";i:3;s:28:"tests/LinkBaseTestClass.test";i:4;s:39:"tests/LinkConvertInternalPathsTest.test";i:5;s:34:"tests/LinkDefaultProtocolTest.test";i:6;s:30:"tests/LinkEntityTokenTest.test";i:7;s:34:"tests/LinkFieldAttributesTest.test";i:8;s:28:"tests/LinkFieldCrudTest.test";i:9;s:32:"tests/LinkFieldValidateTest.test";i:10;s:31:"tests/LinkPathPrefixesTest.test";i:11;s:27:"tests/LinkSanitizeTest.test";i:12;s:24:"tests/LinkTokenTest.test";i:13;s:32:"tests/LinkValidationApiTest.test";i:14;s:27:"tests/LinkUnitTestCase.test";}s:17:"test_dependencies";a:2:{i:0;s:13:"entity:entity";i:1;s:11:"token:token";}s:5:"mtime";i:1664867467;s:12:"dependencies";a:0:{}s:7:"version";N;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;s:8:"required";b:1;s:11:"explanation";s:73:"Field type(s) in use - see <a href="/admin/reports/fields">Field list</a>";}',
 ))
 ->values(array(
-  'filename' => 'sites/all/modules/phone/phone.module',
-  'name' => 'phone',
+  'filename' => 'sites/all/modules/multiupload_filefield_widget/multiupload_filefield_widget.module',
+  'name' => 'multiupload_filefield_widget',
   'type' => 'module',
   'owner' => '',
   'status' => '1',
   'bootstrap' => '0',
   'schema_version' => '0',
   'weight' => '0',
-  'info' => 'a:14:{s:4:"name";s:5:"Phone";s:11:"description";s:80:"The phone module allows administrators to define a field type for phone numbers.";s:7:"package";s:6:"Fields";s:12:"dependencies";a:1:{i:0;s:5:"field";}s:5:"files";a:30:{i:0;s:17:"phone.migrate.inc";i:1;s:19:"tests/phone.au.test";i:2;s:19:"tests/phone.be.test";i:3;s:19:"tests/phone.br.test";i:4;s:19:"tests/phone.ca.test";i:5;s:19:"tests/phone.ch.test";i:6;s:19:"tests/phone.cl.test";i:7;s:19:"tests/phone.cn.test";i:8;s:19:"tests/phone.cr.test";i:9;s:19:"tests/phone.cs.test";i:10;s:19:"tests/phone.eg.test";i:11;s:19:"tests/phone.es.test";i:12;s:19:"tests/phone.fr.test";i:13;s:19:"tests/phone.hu.test";i:14;s:19:"tests/phone.il.test";i:15;s:20:"tests/phone.int.test";i:16;s:19:"tests/phone.it.test";i:17;s:19:"tests/phone.jo.test";i:18;s:19:"tests/phone.nl.test";i:19;s:19:"tests/phone.nz.test";i:20;s:19:"tests/phone.pa.test";i:21;s:19:"tests/phone.ph.test";i:22;s:19:"tests/phone.pk.test";i:23;s:19:"tests/phone.pl.test";i:24;s:19:"tests/phone.ru.test";i:25;s:19:"tests/phone.se.test";i:26;s:19:"tests/phone.sg.test";i:27;s:19:"tests/phone.ua.test";i:28;s:19:"tests/phone.uk.test";i:29;s:19:"tests/phone.za.test";}s:4:"core";s:3:"7.x";s:7:"version";s:13:"7.x-1.0-beta1";s:7:"project";s:5:"phone";s:9:"datestamp";s:10:"1389732224";s:5:"mtime";i:1535762879;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;s:8:"required";b:1;s:11:"explanation";s:73:"Field type(s) in use - see <a href="/admin/reports/fields">Field list</a>";}',
+  'info' => 'a:10:{s:4:"name";s:28:"Multiupload Filefield Widget";s:11:"description";s:76:"Creates a widget for filefield to upload multiple files at once using html5.";s:7:"package";s:6:"Fields";s:4:"core";s:3:"7.x";s:12:"dependencies";a:1:{i:0;s:4:"file";}s:5:"files";a:2:{i:0;s:35:"multiupload_filefield_widget.module";i:1;s:33:"multiupload_filefield_widget.test";}s:5:"mtime";i:1664867583;s:7:"version";N;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
-  'filename' => 'sites/all/modules/references/node_reference/node_reference.module',
-  'name' => 'node_reference',
+  'filename' => 'sites/all/modules/multiupload_imagefield_widget/multiupload_imagefield_widget.module',
+  'name' => 'multiupload_imagefield_widget',
   'type' => 'module',
   'owner' => '',
   'status' => '1',
   'bootstrap' => '0',
-  'schema_version' => '7000',
+  'schema_version' => '0',
   'weight' => '0',
-  'info' => 'a:12:{s:4:"name";s:14:"Node Reference";s:11:"description";s:59:"Defines a field type for referencing one node from another.";s:7:"package";s:6:"Fields";s:4:"core";s:3:"7.x";s:12:"dependencies";a:3:{i:0;s:5:"field";i:1;s:10:"references";i:2;s:7:"options";}s:5:"files";a:1:{i:0;s:19:"node_reference.test";}s:7:"version";s:7:"7.x-2.2";s:7:"project";s:10:"references";s:9:"datestamp";s:10:"1492534745";s:5:"mtime";i:1492534745;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:10:{s:4:"name";s:29:"Multiupload Imagefield Widget";s:11:"description";s:77:"Creates a widget for imagefield to upload multiple files at once using html5.";s:7:"package";s:6:"Fields";s:12:"dependencies";a:2:{i:0;s:28:"multiupload_filefield_widget";i:1;s:5:"image";}s:4:"core";s:3:"7.x";s:5:"mtime";i:1664867591;s:7:"version";N;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
-  'filename' => 'sites/all/modules/references/references.module',
-  'name' => 'references',
+  'filename' => 'sites/all/modules/phone/phone.module',
+  'name' => 'phone',
   'type' => 'module',
   'owner' => '',
   'status' => '1',
   'bootstrap' => '0',
   'schema_version' => '0',
   'weight' => '0',
-  'info' => 'a:12:{s:4:"name";s:10:"References";s:11:"description";s:67:"Defines common base features for the various reference field types.";s:7:"package";s:6:"Fields";s:4:"core";s:3:"7.x";s:12:"dependencies";a:2:{i:0;s:5:"field";i:1;s:7:"options";}s:5:"files";a:5:{i:0;s:41:"views/references_handler_relationship.inc";i:1;s:37:"views/references_handler_argument.inc";i:2;s:35:"views/references_plugin_display.inc";i:3;s:33:"views/references_plugin_style.inc";i:4;s:38:"views/references_plugin_row_fields.inc";}s:7:"version";s:7:"7.x-2.2";s:7:"project";s:10:"references";s:9:"datestamp";s:10:"1492534745";s:5:"mtime";i:1492534745;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:12:{s:4:"name";s:5:"Phone";s:11:"description";s:80:"The phone module allows administrators to define a field type for phone numbers.";s:7:"package";s:6:"Fields";s:12:"dependencies";a:1:{i:0;s:5:"field";}s:5:"files";a:30:{i:0;s:17:"phone.migrate.inc";i:1;s:19:"tests/phone.au.test";i:2;s:19:"tests/phone.be.test";i:3;s:19:"tests/phone.br.test";i:4;s:19:"tests/phone.ca.test";i:5;s:19:"tests/phone.ch.test";i:6;s:19:"tests/phone.cl.test";i:7;s:19:"tests/phone.cn.test";i:8;s:19:"tests/phone.cr.test";i:9;s:19:"tests/phone.cs.test";i:10;s:19:"tests/phone.eg.test";i:11;s:19:"tests/phone.es.test";i:12;s:19:"tests/phone.fr.test";i:13;s:19:"tests/phone.hu.test";i:14;s:19:"tests/phone.il.test";i:15;s:20:"tests/phone.int.test";i:16;s:19:"tests/phone.it.test";i:17;s:19:"tests/phone.jo.test";i:18;s:19:"tests/phone.nl.test";i:19;s:19:"tests/phone.nz.test";i:20;s:19:"tests/phone.pa.test";i:21;s:19:"tests/phone.ph.test";i:22;s:19:"tests/phone.pk.test";i:23;s:19:"tests/phone.pl.test";i:24;s:19:"tests/phone.ru.test";i:25;s:19:"tests/phone.se.test";i:26;s:19:"tests/phone.sg.test";i:27;s:19:"tests/phone.ua.test";i:28;s:19:"tests/phone.uk.test";i:29;s:19:"tests/phone.za.test";}s:4:"core";s:3:"7.x";s:5:"mtime";i:1664867472;s:7:"version";N;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;s:8:"required";b:1;s:11:"explanation";s:73:"Field type(s) in use - see <a href="/admin/reports/fields">Field list</a>";}',
 ))
 ->values(array(
-  'filename' => 'sites/all/modules/references/references_uuid/references_uuid.module',
-  'name' => 'references_uuid',
+  'filename' => 'sites/all/modules/picture/flexslider_picture/flexslider_picture.module',
+  'name' => 'flexslider_picture',
   'type' => 'module',
   'owner' => '',
   'status' => '0',
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:12:{s:4:"name";s:15:"References UUID";s:4:"core";s:3:"7.x";s:7:"package";s:6:"Fields";s:12:"dependencies";a:2:{i:0;s:10:"references";i:1;s:4:"uuid";}s:7:"version";s:7:"7.x-2.2";s:7:"project";s:10:"references";s:9:"datestamp";s:10:"1492534745";s:5:"mtime";i:1492534745;s:11:"description";s:0:"";s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:10:{s:4:"name";s:18:"FlexSlider Picture";s:11:"description";s:87:"Integrates the Picture module with the FlexSlider module for a truly responsive slider.";s:7:"package";s:7:"Picture";s:4:"core";s:3:"7.x";s:12:"dependencies";a:3:{i:0;s:7:"picture";i:1;s:16:"flexslider (2.x)";i:2;s:23:"flexslider_fields (2.x)";}s:5:"mtime";i:1664870250;s:7:"version";N;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
-  'filename' => 'sites/all/modules/references/user_reference/user_reference.module',
-  'name' => 'user_reference',
+  'filename' => 'sites/all/modules/picture/picture.module',
+  'name' => 'picture',
+  'type' => 'module',
+  'owner' => '',
+  'status' => '0',
+  'bootstrap' => '0',
+  'schema_version' => '7203',
+  'weight' => '0',
+  'info' => 'a:12:{s:4:"name";s:7:"Picture";s:11:"description";s:15:"Picture element";s:4:"core";s:3:"7.x";s:12:"dependencies";a:3:{i:0;s:6:"ctools";i:1;s:5:"image";i:2;s:11:"breakpoints";}s:5:"files";a:1:{i:0;s:27:"includes/PictureMapping.php";}s:9:"configure";s:26:"admin/config/media/picture";s:7:"package";s:7:"Picture";s:11:"stylesheets";a:1:{s:3:"all";a:1:{s:19:"picture_wysiwyg.css";s:45:"sites/all/modules/picture/picture_wysiwyg.css";}}s:5:"mtime";i:1664870250;s:7:"version";N;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+))
+->values(array(
+  'filename' => 'sites/all/modules/references/node_reference/node_reference.module',
+  'name' => 'node_reference',
+  'type' => 'module',
+  'owner' => '',
+  'status' => '1',
+  'bootstrap' => '0',
+  'schema_version' => '7000',
+  'weight' => '0',
+  'info' => 'a:12:{s:4:"name";s:14:"Node Reference";s:11:"description";s:59:"Defines a field type for referencing one node from another.";s:7:"package";s:6:"Fields";s:4:"core";s:3:"7.x";s:12:"dependencies";a:3:{i:0;s:5:"field";i:1;s:10:"references";i:2;s:7:"options";}s:5:"files";a:1:{i:0;s:19:"node_reference.test";}s:5:"mtime";i:1664867628;s:7:"version";N;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;s:8:"required";b:1;s:11:"explanation";s:73:"Field type(s) in use - see <a href="/admin/reports/fields">Field list</a>";}',
+))
+->values(array(
+  'filename' => 'sites/all/modules/references/references.module',
+  'name' => 'references',
   'type' => 'module',
   'owner' => '',
   'status' => '1',
   'bootstrap' => '0',
   'schema_version' => '0',
   'weight' => '0',
-  'info' => 'a:12:{s:4:"name";s:14:"User Reference";s:11:"description";s:56:"Defines a field type for referencing a user from a node.";s:7:"package";s:6:"Fields";s:4:"core";s:3:"7.x";s:12:"dependencies";a:3:{i:0;s:5:"field";i:1;s:10:"references";i:2;s:7:"options";}s:7:"version";s:7:"7.x-2.2";s:7:"project";s:10:"references";s:9:"datestamp";s:10:"1492534745";s:5:"mtime";i:1492534745;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:10:{s:4:"name";s:10:"References";s:11:"description";s:67:"Defines common base features for the various reference field types.";s:7:"package";s:6:"Fields";s:4:"core";s:3:"7.x";s:12:"dependencies";a:2:{i:0;s:5:"field";i:1;s:7:"options";}s:5:"files";a:5:{i:0;s:41:"views/references_handler_relationship.inc";i:1;s:37:"views/references_handler_argument.inc";i:2;s:35:"views/references_plugin_display.inc";i:3;s:33:"views/references_plugin_style.inc";i:4;s:38:"views/references_plugin_row_fields.inc";}s:5:"mtime";i:1664867628;s:7:"version";N;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
-  'filename' => 'sites/all/modules/picture/flexslider_picture/flexslider_picture.module',
-  'name' => 'flexslider_picture',
+  'filename' => 'sites/all/modules/references/references_uuid/references_uuid.module',
+  'name' => 'references_uuid',
   'type' => 'module',
   'owner' => '',
   'status' => '0',
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:10:{s:4:"name";s:18:"FlexSlider Picture";s:11:"description";s:87:"Integrates the Picture module with the FlexSlider module for a truly responsive slider.";s:7:"package";s:7:"Picture";s:4:"core";s:3:"7.x";s:12:"dependencies";a:3:{i:0;s:7:"picture";i:1;s:16:"flexslider (2.x)";i:2;s:23:"flexslider_fields (2.x)";}s:5:"mtime";i:1544936288;s:7:"version";N;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:10:{s:4:"name";s:15:"References UUID";s:11:"description";s:28:"UUID for References project.";s:4:"core";s:3:"7.x";s:7:"package";s:6:"Fields";s:12:"dependencies";a:2:{i:0;s:10:"references";i:1;s:4:"uuid";}s:5:"mtime";i:1664867628;s:7:"version";N;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
-  'filename' => 'sites/all/modules/picture/picture.module',
-  'name' => 'picture',
+  'filename' => 'sites/all/modules/references/user_reference/user_reference.module',
+  'name' => 'user_reference',
   'type' => 'module',
   'owner' => '',
-  'status' => '0',
+  'status' => '1',
   'bootstrap' => '0',
-  'schema_version' => '-1',
+  'schema_version' => '0',
   'weight' => '0',
-  'info' => 'a:12:{s:4:"name";s:7:"Picture";s:11:"description";s:15:"Picture element";s:4:"core";s:3:"7.x";s:12:"dependencies";a:3:{i:0;s:6:"ctools";i:1;s:5:"image";i:2;s:11:"breakpoints";}s:5:"files";a:1:{i:0;s:27:"includes/PictureMapping.php";}s:9:"configure";s:26:"admin/config/media/picture";s:7:"package";s:7:"Picture";s:11:"stylesheets";a:1:{s:3:"all";a:1:{s:19:"picture_wysiwyg.css";s:45:"sites/all/modules/picture/picture_wysiwyg.css";}}s:5:"mtime";i:1544936288;s:7:"version";N;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:12:{s:4:"name";s:14:"User Reference";s:11:"description";s:56:"Defines a field type for referencing a user from a node.";s:7:"package";s:6:"Fields";s:4:"core";s:3:"7.x";s:12:"dependencies";a:3:{i:0;s:5:"field";i:1;s:10:"references";i:2;s:7:"options";}s:5:"mtime";i:1664867628;s:7:"version";N;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;s:8:"required";b:1;s:11:"explanation";s:73:"Field type(s) in use - see <a href="/admin/reports/fields">Field list</a>";}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/telephone/telephone.module',
@@ -58125,7 +63677,7 @@
   'bootstrap' => '0',
   'schema_version' => '0',
   'weight' => '0',
-  'info' => 'a:12:{s:4:"name";s:9:"Telephone";s:11:"description";s:43:"Defines a field type for telephone numbers.";s:7:"package";s:6:"Fields";s:4:"core";s:3:"7.x";s:12:"dependencies";a:1:{i:0;s:5:"field";}s:5:"files";a:1:{i:0;s:21:"telephone.migrate.inc";}s:7:"version";s:14:"7.x-1.0-alpha1";s:7:"project";s:9:"telephone";s:9:"datestamp";s:10:"1389736105";s:5:"mtime";i:1389736105;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:12:{s:4:"name";s:9:"Telephone";s:11:"description";s:43:"Defines a field type for telephone numbers.";s:7:"package";s:6:"Fields";s:4:"core";s:3:"7.x";s:12:"dependencies";a:1:{i:0;s:5:"field";}s:5:"files";a:1:{i:0;s:21:"telephone.migrate.inc";}s:5:"mtime";i:1664867478;s:7:"version";N;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;s:8:"required";b:1;s:11:"explanation";s:73:"Field type(s) in use - see <a href="/admin/reports/fields">Field list</a>";}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/title/tests/title_test.module',
@@ -58136,7 +63688,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:11:{s:4:"name";s:10:"Title Test";s:11:"description";s:61:"Testing module for Title module functionality. Do not enable.";s:4:"core";s:3:"7.x";s:7:"package";s:7:"Testing";s:6:"hidden";b:1;s:12:"dependencies";a:4:{i:0;s:5:"title";i:1;s:8:"taxonomy";i:2;s:6:"entity";i:3;s:18:"entity_translation";}s:5:"mtime";i:1544915724;s:7:"version";N;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:10:"Title Test";s:11:"description";s:61:"Testing module for Title module functionality. Do not enable.";s:4:"core";s:3:"7.x";s:7:"package";s:7:"Testing";s:6:"hidden";b:1;s:12:"dependencies";a:4:{i:0;s:5:"title";i:1;s:8:"taxonomy";i:2;s:6:"entity";i:3;s:18:"entity_translation";}s:5:"mtime";i:1664867487;s:7:"version";N;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/title/title.module',
@@ -58147,7 +63699,7 @@
   'bootstrap' => '0',
   'schema_version' => '7002',
   'weight' => '100',
-  'info' => 'a:13:{s:4:"name";s:5:"Title";s:11:"description";s:50:"Replaces entity legacy fields with regular fields.";s:4:"core";s:3:"7.x";s:7:"package";s:6:"Fields";s:9:"configure";s:26:"admin/config/content/title";s:12:"dependencies";a:1:{i:0;s:14:"system (>7.14)";}s:5:"files";a:3:{i:0;s:12:"title.module";i:1;s:35:"views/views_handler_title_field.inc";i:2;s:16:"tests/title.test";}s:7:"version";s:14:"7.x-1.0-alpha9";s:7:"project";s:5:"title";s:9:"datestamp";s:10:"1484302985";s:5:"mtime";i:1484302985;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:12:{s:4:"name";s:5:"Title";s:11:"description";s:50:"Replaces entity legacy fields with regular fields.";s:4:"core";s:3:"7.x";s:7:"package";s:6:"Fields";s:9:"configure";s:26:"admin/config/content/title";s:12:"dependencies";a:1:{i:0;s:14:"system (>7.14)";}s:5:"files";a:4:{i:0;s:35:"views/views_handler_title_field.inc";i:1;s:37:"tests/TitleAdminSettingsTestCase.test";i:2;s:40:"tests/TitleFieldReplacementTestCase.test";i:3;s:35:"tests/TitleTranslationTestCase.test";}s:17:"test_dependencies";a:2:{i:0;s:6:"entity";i:1;s:18:"entity_translation";}s:5:"mtime";i:1664867487;s:7:"version";N;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/variable/variable.module',
@@ -58158,7 +63710,7 @@
   'bootstrap' => '1',
   'schema_version' => '0',
   'weight' => '0',
-  'info' => 'a:12:{s:4:"name";s:8:"Variable";s:11:"description";s:43:"Variable Information and basic variable API";s:7:"package";s:8:"Variable";s:4:"core";s:3:"7.x";s:5:"files";a:9:{i:0;s:27:"includes/forum.variable.inc";i:1;s:28:"includes/locale.variable.inc";i:2;s:26:"includes/menu.variable.inc";i:3;s:26:"includes/node.variable.inc";i:4;s:28:"includes/system.variable.inc";i:5;s:30:"includes/taxonomy.variable.inc";i:6;s:33:"includes/translation.variable.inc";i:7;s:26:"includes/user.variable.inc";i:8;s:13:"variable.test";}s:7:"version";s:7:"7.x-2.5";s:7:"project";s:8:"variable";s:9:"datestamp";s:10:"1398250128";s:5:"mtime";i:1398250128;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:10:{s:4:"name";s:8:"Variable";s:11:"description";s:43:"Variable Information and basic variable API";s:7:"package";s:8:"Variable";s:4:"core";s:3:"7.x";s:5:"files";a:9:{i:0;s:27:"includes/forum.variable.inc";i:1;s:28:"includes/locale.variable.inc";i:2;s:26:"includes/menu.variable.inc";i:3;s:26:"includes/node.variable.inc";i:4;s:28:"includes/system.variable.inc";i:5;s:30:"includes/taxonomy.variable.inc";i:6;s:33:"includes/translation.variable.inc";i:7;s:26:"includes/user.variable.inc";i:8;s:13:"variable.test";}s:5:"mtime";i:1664867493;s:12:"dependencies";a:0:{}s:7:"version";N;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/variable/variable_admin/variable_admin.module',
@@ -58169,7 +63721,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:12:{s:4:"name";s:14:"Variable admin";s:11:"description";s:26:"Variable Administration UI";s:12:"dependencies";a:1:{i:0;s:8:"variable";}s:7:"package";s:8:"Variable";s:4:"core";s:3:"7.x";s:7:"version";s:7:"7.x-2.5";s:7:"project";s:8:"variable";s:9:"datestamp";s:10:"1398250128";s:5:"mtime";i:1398250128;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:10:{s:4:"name";s:14:"Variable admin";s:11:"description";s:26:"Variable Administration UI";s:12:"dependencies";a:1:{i:0;s:8:"variable";}s:7:"package";s:8:"Variable";s:4:"core";s:3:"7.x";s:5:"mtime";i:1664867493;s:7:"version";N;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/variable/variable_example/variable_example.module',
@@ -58180,7 +63732,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:12:{s:4:"name";s:16:"Variable example";s:11:"description";s:83:"An example module showing how to use the Variable API and providing some variables.";s:12:"dependencies";a:2:{i:0;s:8:"variable";i:1;s:14:"variable_store";}s:7:"package";s:15:"Example modules";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:29:"variable_example.variable.inc";}s:7:"version";s:7:"7.x-2.5";s:7:"project";s:8:"variable";s:9:"datestamp";s:10:"1398250128";s:5:"mtime";i:1398250128;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:10:{s:4:"name";s:16:"Variable example";s:11:"description";s:83:"An example module showing how to use the Variable API and providing some variables.";s:12:"dependencies";a:2:{i:0;s:8:"variable";i:1;s:14:"variable_store";}s:7:"package";s:15:"Example modules";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:29:"variable_example.variable.inc";}s:5:"mtime";i:1664867493;s:7:"version";N;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/variable/variable_realm/variable_realm.module',
@@ -58191,7 +63743,7 @@
   'bootstrap' => '1',
   'schema_version' => '7000',
   'weight' => '-1000',
-  'info' => 'a:12:{s:4:"name";s:14:"Variable realm";s:11:"description";s:49:"API to use variable realms from different modules";s:12:"dependencies";a:1:{i:0;s:8:"variable";}s:7:"package";s:8:"Variable";s:4:"core";s:3:"7.x";s:7:"version";s:7:"7.x-2.5";s:5:"files";a:2:{i:0;s:24:"variable_realm.class.inc";i:1;s:30:"variable_realm_union.class.inc";}s:7:"project";s:8:"variable";s:9:"datestamp";s:10:"1398250128";s:5:"mtime";i:1398250128;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:10:{s:4:"name";s:14:"Variable realm";s:11:"description";s:49:"API to use variable realms from different modules";s:12:"dependencies";a:1:{i:0;s:8:"variable";}s:7:"package";s:8:"Variable";s:4:"core";s:3:"7.x";s:7:"version";s:7:"7.x-2.x";s:5:"files";a:2:{i:0;s:24:"variable_realm.class.inc";i:1;s:30:"variable_realm_union.class.inc";}s:5:"mtime";i:1664867493;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/variable/variable_store/variable_store.module',
@@ -58202,7 +63754,7 @@
   'bootstrap' => '1',
   'schema_version' => '7000',
   'weight' => '-1000',
-  'info' => 'a:12:{s:4:"name";s:14:"Variable store";s:11:"description";s:60:"Database storage for variable realms. This is an API module.";s:12:"dependencies";a:1:{i:0;s:8:"variable";}s:7:"package";s:8:"Variable";s:4:"core";s:3:"7.x";s:7:"version";s:7:"7.x-2.5";s:5:"files";a:2:{i:0;s:24:"variable_store.class.inc";i:1;s:19:"variable_store.test";}s:7:"project";s:8:"variable";s:9:"datestamp";s:10:"1398250128";s:5:"mtime";i:1398250128;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:10:{s:4:"name";s:14:"Variable store";s:11:"description";s:60:"Database storage for variable realms. This is an API module.";s:12:"dependencies";a:1:{i:0;s:8:"variable";}s:7:"package";s:8:"Variable";s:4:"core";s:3:"7.x";s:7:"version";s:7:"7.x-2.x";s:5:"files";a:2:{i:0;s:24:"variable_store.class.inc";i:1;s:19:"variable_store.test";}s:5:"mtime";i:1664867493;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/variable/variable_views/variable_views.module',
@@ -58213,7 +63765,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:12:{s:4:"name";s:14:"Variable views";s:11:"description";s:78:"Provides views integration for variable, included a default variable argument.";s:12:"dependencies";a:2:{i:0;s:8:"variable";i:1;s:5:"views";}s:7:"package";s:8:"Variable";s:4:"core";s:3:"7.x";s:5:"files";a:3:{i:0;s:51:"includes/views_plugin_argument_default_variable.inc";i:1;s:47:"includes/views_handler_field_variable_title.inc";i:2;s:47:"includes/views_handler_field_variable_value.inc";}s:7:"version";s:7:"7.x-2.5";s:7:"project";s:8:"variable";s:9:"datestamp";s:10:"1398250128";s:5:"mtime";i:1398250128;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => 'a:10:{s:4:"name";s:14:"Variable views";s:11:"description";s:78:"Provides views integration for variable, included a default variable argument.";s:12:"dependencies";a:2:{i:0;s:8:"variable";i:1;s:5:"views";}s:7:"package";s:8:"Variable";s:4:"core";s:3:"7.x";s:5:"files";a:3:{i:0;s:51:"includes/views_plugin_argument_default_variable.inc";i:1;s:47:"includes/views_handler_field_variable_title.inc";i:2;s:47:"includes/views_handler_field_variable_value.inc";}s:5:"mtime";i:1664867493;s:7:"version";N;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/views/tests/views_test.module',
@@ -58224,7 +63776,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:10:"Views Test";s:11:"description";s:22:"Test module for Views.";s:7:"package";s:5:"Views";s:4:"core";s:3:"7.x";s:12:"dependencies";a:1:{i:0;s:5:"views";}s:6:"hidden";b:1;s:7:"version";s:8:"7.x-3.20";s:7:"project";s:5:"views";s:9:"datestamp";s:10:"1523668093";s:5:"mtime";i:1535762879;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
+  'info' => 'a:11:{s:4:"name";s:10:"Views Test";s:11:"description";s:22:"Test module for Views.";s:7:"package";s:5:"Views";s:4:"core";s:3:"7.x";s:12:"dependencies";a:1:{i:0;s:5:"views";}s:6:"hidden";b:1;s:5:"mtime";i:1664867501;s:7:"version";N;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/views/views.module',
@@ -58233,9 +63785,9 @@
   'owner' => '',
   'status' => '0',
   'bootstrap' => '0',
-  'schema_version' => '7301',
-  'weight' => '10',
-  'info' => 'a:13:{s:4:"name";s:5:"Views";s:11:"description";s:55:"Create customized lists and queries from your database.";s:7:"package";s:5:"Views";s:4:"core";s:3:"7.x";s:3:"php";s:3:"5.2";s:11:"stylesheets";a:1:{s:3:"all";a:1:{s:13:"css/views.css";s:37:"sites/all/modules/views/css/views.css";}}s:12:"dependencies";a:1:{i:0;s:6:"ctools";}s:5:"files";a:297:{i:0;s:31:"handlers/views_handler_area.inc";i:1;s:38:"handlers/views_handler_area_result.inc";i:2;s:36:"handlers/views_handler_area_text.inc";i:3;s:43:"handlers/views_handler_area_text_custom.inc";i:4;s:36:"handlers/views_handler_area_view.inc";i:5;s:35:"handlers/views_handler_argument.inc";i:6;s:40:"handlers/views_handler_argument_date.inc";i:7;s:43:"handlers/views_handler_argument_formula.inc";i:8;s:47:"handlers/views_handler_argument_many_to_one.inc";i:9;s:40:"handlers/views_handler_argument_null.inc";i:10;s:43:"handlers/views_handler_argument_numeric.inc";i:11;s:42:"handlers/views_handler_argument_string.inc";i:12;s:52:"handlers/views_handler_argument_group_by_numeric.inc";i:13;s:32:"handlers/views_handler_field.inc";i:14;s:40:"handlers/views_handler_field_counter.inc";i:15;s:40:"handlers/views_handler_field_boolean.inc";i:16;s:49:"handlers/views_handler_field_contextual_links.inc";i:17;s:39:"handlers/views_handler_field_custom.inc";i:18;s:37:"handlers/views_handler_field_date.inc";i:19;s:39:"handlers/views_handler_field_entity.inc";i:20;s:39:"handlers/views_handler_field_markup.inc";i:21;s:37:"handlers/views_handler_field_math.inc";i:22;s:40:"handlers/views_handler_field_numeric.inc";i:23;s:47:"handlers/views_handler_field_prerender_list.inc";i:24;s:46:"handlers/views_handler_field_time_interval.inc";i:25;s:43:"handlers/views_handler_field_serialized.inc";i:26;s:45:"handlers/views_handler_field_machine_name.inc";i:27;s:36:"handlers/views_handler_field_url.inc";i:28;s:33:"handlers/views_handler_filter.inc";i:29;s:50:"handlers/views_handler_filter_boolean_operator.inc";i:30;s:57:"handlers/views_handler_filter_boolean_operator_string.inc";i:31;s:41:"handlers/views_handler_filter_combine.inc";i:32;s:38:"handlers/views_handler_filter_date.inc";i:33;s:42:"handlers/views_handler_filter_equality.inc";i:34;s:47:"handlers/views_handler_filter_entity_bundle.inc";i:35;s:50:"handlers/views_handler_filter_group_by_numeric.inc";i:36;s:45:"handlers/views_handler_filter_in_operator.inc";i:37;s:45:"handlers/views_handler_filter_many_to_one.inc";i:38;s:41:"handlers/views_handler_filter_numeric.inc";i:39;s:40:"handlers/views_handler_filter_string.inc";i:40;s:39:"handlers/views_handler_relationship.inc";i:41;s:53:"handlers/views_handler_relationship_groupwise_max.inc";i:42;s:31:"handlers/views_handler_sort.inc";i:43;s:36:"handlers/views_handler_sort_date.inc";i:44;s:39:"handlers/views_handler_sort_formula.inc";i:45;s:48:"handlers/views_handler_sort_group_by_numeric.inc";i:46;s:46:"handlers/views_handler_sort_menu_hierarchy.inc";i:47;s:38:"handlers/views_handler_sort_random.inc";i:48;s:17:"includes/base.inc";i:49;s:21:"includes/handlers.inc";i:50;s:20:"includes/plugins.inc";i:51;s:17:"includes/view.inc";i:52;s:60:"modules/aggregator/views_handler_argument_aggregator_fid.inc";i:53;s:60:"modules/aggregator/views_handler_argument_aggregator_iid.inc";i:54;s:69:"modules/aggregator/views_handler_argument_aggregator_category_cid.inc";i:55;s:64:"modules/aggregator/views_handler_field_aggregator_title_link.inc";i:56;s:62:"modules/aggregator/views_handler_field_aggregator_category.inc";i:57;s:70:"modules/aggregator/views_handler_field_aggregator_item_description.inc";i:58;s:57:"modules/aggregator/views_handler_field_aggregator_xss.inc";i:59;s:67:"modules/aggregator/views_handler_filter_aggregator_category_cid.inc";i:60;s:54:"modules/aggregator/views_plugin_row_aggregator_rss.inc";i:61;s:56:"modules/book/views_plugin_argument_default_book_root.inc";i:62;s:59:"modules/comment/views_handler_argument_comment_user_uid.inc";i:63;s:47:"modules/comment/views_handler_field_comment.inc";i:64;s:53:"modules/comment/views_handler_field_comment_depth.inc";i:65;s:52:"modules/comment/views_handler_field_comment_link.inc";i:66;s:60:"modules/comment/views_handler_field_comment_link_approve.inc";i:67;s:59:"modules/comment/views_handler_field_comment_link_delete.inc";i:68;s:57:"modules/comment/views_handler_field_comment_link_edit.inc";i:69;s:58:"modules/comment/views_handler_field_comment_link_reply.inc";i:70;s:57:"modules/comment/views_handler_field_comment_node_link.inc";i:71;s:56:"modules/comment/views_handler_field_comment_username.inc";i:72;s:61:"modules/comment/views_handler_field_ncs_last_comment_name.inc";i:73;s:56:"modules/comment/views_handler_field_ncs_last_updated.inc";i:74;s:52:"modules/comment/views_handler_field_node_comment.inc";i:75;s:57:"modules/comment/views_handler_field_node_new_comments.inc";i:76;s:62:"modules/comment/views_handler_field_last_comment_timestamp.inc";i:77;s:57:"modules/comment/views_handler_filter_comment_user_uid.inc";i:78;s:57:"modules/comment/views_handler_filter_ncs_last_updated.inc";i:79;s:53:"modules/comment/views_handler_filter_node_comment.inc";i:80;s:53:"modules/comment/views_handler_sort_comment_thread.inc";i:81;s:60:"modules/comment/views_handler_sort_ncs_last_comment_name.inc";i:82;s:55:"modules/comment/views_handler_sort_ncs_last_updated.inc";i:83;s:48:"modules/comment/views_plugin_row_comment_rss.inc";i:84;s:49:"modules/comment/views_plugin_row_comment_view.inc";i:85;s:52:"modules/contact/views_handler_field_contact_link.inc";i:86;s:43:"modules/field/views_handler_field_field.inc";i:87;s:59:"modules/field/views_handler_relationship_entity_reverse.inc";i:88;s:51:"modules/field/views_handler_argument_field_list.inc";i:89;s:58:"modules/field/views_handler_argument_field_list_string.inc";i:90;s:49:"modules/field/views_handler_filter_field_list.inc";i:91;s:57:"modules/filter/views_handler_field_filter_format_name.inc";i:92;s:52:"modules/locale/views_handler_field_node_language.inc";i:93;s:53:"modules/locale/views_handler_filter_node_language.inc";i:94;s:54:"modules/locale/views_handler_argument_locale_group.inc";i:95;s:57:"modules/locale/views_handler_argument_locale_language.inc";i:96;s:51:"modules/locale/views_handler_field_locale_group.inc";i:97;s:54:"modules/locale/views_handler_field_locale_language.inc";i:98;s:55:"modules/locale/views_handler_field_locale_link_edit.inc";i:99;s:52:"modules/locale/views_handler_filter_locale_group.inc";i:100;s:55:"modules/locale/views_handler_filter_locale_language.inc";i:101;s:54:"modules/locale/views_handler_filter_locale_version.inc";i:102;s:53:"modules/node/views_handler_argument_dates_various.inc";i:103;s:53:"modules/node/views_handler_argument_node_language.inc";i:104;s:48:"modules/node/views_handler_argument_node_nid.inc";i:105;s:49:"modules/node/views_handler_argument_node_type.inc";i:106;s:48:"modules/node/views_handler_argument_node_vid.inc";i:107;s:57:"modules/node/views_handler_argument_node_uid_revision.inc";i:108;s:59:"modules/node/views_handler_field_history_user_timestamp.inc";i:109;s:41:"modules/node/views_handler_field_node.inc";i:110;s:46:"modules/node/views_handler_field_node_link.inc";i:111;s:53:"modules/node/views_handler_field_node_link_delete.inc";i:112;s:51:"modules/node/views_handler_field_node_link_edit.inc";i:113;s:50:"modules/node/views_handler_field_node_revision.inc";i:114;s:55:"modules/node/views_handler_field_node_revision_link.inc";i:115;s:62:"modules/node/views_handler_field_node_revision_link_delete.inc";i:116;s:62:"modules/node/views_handler_field_node_revision_link_revert.inc";i:117;s:46:"modules/node/views_handler_field_node_path.inc";i:118;s:46:"modules/node/views_handler_field_node_type.inc";i:119;s:60:"modules/node/views_handler_filter_history_user_timestamp.inc";i:120;s:49:"modules/node/views_handler_filter_node_access.inc";i:121;s:49:"modules/node/views_handler_filter_node_status.inc";i:122;s:47:"modules/node/views_handler_filter_node_type.inc";i:123;s:55:"modules/node/views_handler_filter_node_uid_revision.inc";i:124;s:51:"modules/node/views_plugin_argument_default_node.inc";i:125;s:52:"modules/node/views_plugin_argument_validate_node.inc";i:126;s:42:"modules/node/views_plugin_row_node_rss.inc";i:127;s:43:"modules/node/views_plugin_row_node_view.inc";i:128;s:52:"modules/profile/views_handler_field_profile_date.inc";i:129;s:52:"modules/profile/views_handler_field_profile_list.inc";i:130;s:58:"modules/profile/views_handler_filter_profile_selection.inc";i:131;s:48:"modules/search/views_handler_argument_search.inc";i:132;s:51:"modules/search/views_handler_field_search_score.inc";i:133;s:46:"modules/search/views_handler_filter_search.inc";i:134;s:50:"modules/search/views_handler_sort_search_score.inc";i:135;s:47:"modules/search/views_plugin_row_search_view.inc";i:136;s:57:"modules/statistics/views_handler_field_accesslog_path.inc";i:137;s:50:"modules/system/views_handler_argument_file_fid.inc";i:138;s:43:"modules/system/views_handler_field_file.inc";i:139;s:53:"modules/system/views_handler_field_file_extension.inc";i:140;s:52:"modules/system/views_handler_field_file_filemime.inc";i:141;s:47:"modules/system/views_handler_field_file_uri.inc";i:142;s:50:"modules/system/views_handler_field_file_status.inc";i:143;s:51:"modules/system/views_handler_filter_file_status.inc";i:144;s:52:"modules/taxonomy/views_handler_argument_taxonomy.inc";i:145;s:57:"modules/taxonomy/views_handler_argument_term_node_tid.inc";i:146;s:63:"modules/taxonomy/views_handler_argument_term_node_tid_depth.inc";i:147;s:72:"modules/taxonomy/views_handler_argument_term_node_tid_depth_modifier.inc";i:148;s:58:"modules/taxonomy/views_handler_argument_vocabulary_vid.inc";i:149;s:67:"modules/taxonomy/views_handler_argument_vocabulary_machine_name.inc";i:150;s:49:"modules/taxonomy/views_handler_field_taxonomy.inc";i:151;s:54:"modules/taxonomy/views_handler_field_term_node_tid.inc";i:152;s:55:"modules/taxonomy/views_handler_field_term_link_edit.inc";i:153;s:55:"modules/taxonomy/views_handler_filter_term_node_tid.inc";i:154;s:61:"modules/taxonomy/views_handler_filter_term_node_tid_depth.inc";i:155;s:56:"modules/taxonomy/views_handler_filter_vocabulary_vid.inc";i:156;s:65:"modules/taxonomy/views_handler_filter_vocabulary_machine_name.inc";i:157;s:62:"modules/taxonomy/views_handler_relationship_node_term_data.inc";i:158;s:65:"modules/taxonomy/views_plugin_argument_validate_taxonomy_term.inc";i:159;s:63:"modules/taxonomy/views_plugin_argument_default_taxonomy_tid.inc";i:160;s:67:"modules/tracker/views_handler_argument_tracker_comment_user_uid.inc";i:161;s:65:"modules/tracker/views_handler_filter_tracker_comment_user_uid.inc";i:162;s:65:"modules/tracker/views_handler_filter_tracker_boolean_operator.inc";i:163;s:51:"modules/system/views_handler_filter_system_type.inc";i:164;s:56:"modules/translation/views_handler_argument_node_tnid.inc";i:165;s:63:"modules/translation/views_handler_field_node_link_translate.inc";i:166;s:65:"modules/translation/views_handler_field_node_translation_link.inc";i:167;s:54:"modules/translation/views_handler_filter_node_tnid.inc";i:168;s:60:"modules/translation/views_handler_filter_node_tnid_child.inc";i:169;s:62:"modules/translation/views_handler_relationship_translation.inc";i:170;s:48:"modules/user/views_handler_argument_user_uid.inc";i:171;s:55:"modules/user/views_handler_argument_users_roles_rid.inc";i:172;s:41:"modules/user/views_handler_field_user.inc";i:173;s:50:"modules/user/views_handler_field_user_language.inc";i:174;s:46:"modules/user/views_handler_field_user_link.inc";i:175;s:53:"modules/user/views_handler_field_user_link_cancel.inc";i:176;s:51:"modules/user/views_handler_field_user_link_edit.inc";i:177;s:46:"modules/user/views_handler_field_user_mail.inc";i:178;s:46:"modules/user/views_handler_field_user_name.inc";i:179;s:53:"modules/user/views_handler_field_user_permissions.inc";i:180;s:49:"modules/user/views_handler_field_user_picture.inc";i:181;s:47:"modules/user/views_handler_field_user_roles.inc";i:182;s:50:"modules/user/views_handler_filter_user_current.inc";i:183;s:47:"modules/user/views_handler_filter_user_name.inc";i:184;s:54:"modules/user/views_handler_filter_user_permissions.inc";i:185;s:48:"modules/user/views_handler_filter_user_roles.inc";i:186;s:59:"modules/user/views_plugin_argument_default_current_user.inc";i:187;s:51:"modules/user/views_plugin_argument_default_user.inc";i:188;s:52:"modules/user/views_plugin_argument_validate_user.inc";i:189;s:43:"modules/user/views_plugin_row_user_view.inc";i:190;s:31:"plugins/views_plugin_access.inc";i:191;s:36:"plugins/views_plugin_access_none.inc";i:192;s:36:"plugins/views_plugin_access_perm.inc";i:193;s:36:"plugins/views_plugin_access_role.inc";i:194;s:41:"plugins/views_plugin_argument_default.inc";i:195;s:45:"plugins/views_plugin_argument_default_php.inc";i:196;s:47:"plugins/views_plugin_argument_default_fixed.inc";i:197;s:45:"plugins/views_plugin_argument_default_raw.inc";i:198;s:42:"plugins/views_plugin_argument_validate.inc";i:199;s:50:"plugins/views_plugin_argument_validate_numeric.inc";i:200;s:46:"plugins/views_plugin_argument_validate_php.inc";i:201;s:30:"plugins/views_plugin_cache.inc";i:202;s:35:"plugins/views_plugin_cache_none.inc";i:203;s:35:"plugins/views_plugin_cache_time.inc";i:204;s:32:"plugins/views_plugin_display.inc";i:205;s:43:"plugins/views_plugin_display_attachment.inc";i:206;s:38:"plugins/views_plugin_display_block.inc";i:207;s:40:"plugins/views_plugin_display_default.inc";i:208;s:38:"plugins/views_plugin_display_embed.inc";i:209;s:41:"plugins/views_plugin_display_extender.inc";i:210;s:37:"plugins/views_plugin_display_feed.inc";i:211;s:37:"plugins/views_plugin_display_page.inc";i:212;s:43:"plugins/views_plugin_exposed_form_basic.inc";i:213;s:37:"plugins/views_plugin_exposed_form.inc";i:214;s:52:"plugins/views_plugin_exposed_form_input_required.inc";i:215;s:42:"plugins/views_plugin_localization_core.inc";i:216;s:37:"plugins/views_plugin_localization.inc";i:217;s:42:"plugins/views_plugin_localization_none.inc";i:218;s:30:"plugins/views_plugin_pager.inc";i:219;s:35:"plugins/views_plugin_pager_full.inc";i:220;s:35:"plugins/views_plugin_pager_mini.inc";i:221;s:35:"plugins/views_plugin_pager_none.inc";i:222;s:35:"plugins/views_plugin_pager_some.inc";i:223;s:30:"plugins/views_plugin_query.inc";i:224;s:38:"plugins/views_plugin_query_default.inc";i:225;s:28:"plugins/views_plugin_row.inc";i:226;s:35:"plugins/views_plugin_row_fields.inc";i:227;s:39:"plugins/views_plugin_row_rss_fields.inc";i:228;s:30:"plugins/views_plugin_style.inc";i:229;s:38:"plugins/views_plugin_style_default.inc";i:230;s:35:"plugins/views_plugin_style_grid.inc";i:231;s:35:"plugins/views_plugin_style_list.inc";i:232;s:40:"plugins/views_plugin_style_jump_menu.inc";i:233;s:38:"plugins/views_plugin_style_mapping.inc";i:234;s:34:"plugins/views_plugin_style_rss.inc";i:235;s:38:"plugins/views_plugin_style_summary.inc";i:236;s:48:"plugins/views_plugin_style_summary_jump_menu.inc";i:237;s:50:"plugins/views_plugin_style_summary_unformatted.inc";i:238;s:36:"plugins/views_plugin_style_table.inc";i:239;s:43:"tests/handlers/views_handler_area_text.test";i:240;s:47:"tests/handlers/views_handler_argument_null.test";i:241;s:49:"tests/handlers/views_handler_argument_string.test";i:242;s:39:"tests/handlers/views_handler_field.test";i:243;s:47:"tests/handlers/views_handler_field_boolean.test";i:244;s:46:"tests/handlers/views_handler_field_custom.test";i:245;s:47:"tests/handlers/views_handler_field_counter.test";i:246;s:44:"tests/handlers/views_handler_field_date.test";i:247;s:49:"tests/handlers/views_handler_field_file_size.test";i:248;s:44:"tests/handlers/views_handler_field_math.test";i:249;s:43:"tests/handlers/views_handler_field_url.test";i:250;s:43:"tests/handlers/views_handler_field_xss.test";i:251;s:48:"tests/handlers/views_handler_filter_combine.test";i:252;s:45:"tests/handlers/views_handler_filter_date.test";i:253;s:49:"tests/handlers/views_handler_filter_equality.test";i:254;s:52:"tests/handlers/views_handler_filter_in_operator.test";i:255;s:48:"tests/handlers/views_handler_filter_numeric.test";i:256;s:47:"tests/handlers/views_handler_filter_string.test";i:257;s:45:"tests/handlers/views_handler_sort_random.test";i:258;s:43:"tests/handlers/views_handler_sort_date.test";i:259;s:38:"tests/handlers/views_handler_sort.test";i:260;s:60:"tests/test_plugins/views_test_plugin_access_test_dynamic.inc";i:261;s:59:"tests/test_plugins/views_test_plugin_access_test_static.inc";i:262;s:59:"tests/test_plugins/views_test_plugin_style_test_mapping.inc";i:263;s:39:"tests/plugins/views_plugin_display.test";i:264;s:46:"tests/styles/views_plugin_style_jump_menu.test";i:265;s:36:"tests/styles/views_plugin_style.test";i:266;s:41:"tests/styles/views_plugin_style_base.test";i:267;s:44:"tests/styles/views_plugin_style_mapping.test";i:268;s:48:"tests/styles/views_plugin_style_unformatted.test";i:269;s:23:"tests/views_access.test";i:270;s:24:"tests/views_analyze.test";i:271;s:22:"tests/views_basic.test";i:272;s:33:"tests/views_argument_default.test";i:273;s:35:"tests/views_argument_validator.test";i:274;s:29:"tests/views_exposed_form.test";i:275;s:31:"tests/field/views_fieldapi.test";i:276;s:25:"tests/views_glossary.test";i:277;s:24:"tests/views_groupby.test";i:278;s:25:"tests/views_handlers.test";i:279;s:23:"tests/views_module.test";i:280;s:22:"tests/views_pager.test";i:281;s:40:"tests/views_plugin_localization_test.inc";i:282;s:29:"tests/views_translatable.test";i:283;s:22:"tests/views_query.test";i:284;s:24:"tests/views_upgrade.test";i:285;s:34:"tests/views_test.views_default.inc";i:286;s:58:"tests/comment/views_handler_argument_comment_user_uid.test";i:287;s:56:"tests/comment/views_handler_filter_comment_user_uid.test";i:288;s:45:"tests/node/views_node_revision_relations.test";i:289;s:61:"tests/taxonomy/views_handler_relationship_node_term_data.test";i:290;s:45:"tests/user/views_handler_field_user_name.test";i:291;s:43:"tests/user/views_user_argument_default.test";i:292;s:44:"tests/user/views_user_argument_validate.test";i:293;s:26:"tests/user/views_user.test";i:294;s:22:"tests/views_cache.test";i:295;s:21:"tests/views_view.test";i:296;s:19:"tests/views_ui.test";}s:7:"version";s:7:"7.x-3.7";s:7:"project";s:5:"views";s:9:"datestamp";s:10:"1365499236";s:5:"mtime";i:1365499236;s:9:"bootstrap";i:0;}',
+  'schema_version' => '-1',
+  'weight' => '0',
+  'info' => 'a:11:{s:4:"name";s:5:"Views";s:11:"description";s:55:"Create customized lists and queries from your database.";s:7:"package";s:5:"Views";s:4:"core";s:3:"7.x";s:11:"stylesheets";a:1:{s:3:"all";a:1:{s:13:"css/views.css";s:37:"sites/all/modules/views/css/views.css";}}s:12:"dependencies";a:1:{i:0;s:6:"ctools";}s:5:"files";a:316:{i:0;s:31:"handlers/views_handler_area.inc";i:1;s:40:"handlers/views_handler_area_messages.inc";i:2;s:38:"handlers/views_handler_area_result.inc";i:3;s:36:"handlers/views_handler_area_text.inc";i:4;s:43:"handlers/views_handler_area_text_custom.inc";i:5;s:36:"handlers/views_handler_area_view.inc";i:6;s:35:"handlers/views_handler_argument.inc";i:7;s:40:"handlers/views_handler_argument_date.inc";i:8;s:43:"handlers/views_handler_argument_formula.inc";i:9;s:47:"handlers/views_handler_argument_many_to_one.inc";i:10;s:40:"handlers/views_handler_argument_null.inc";i:11;s:43:"handlers/views_handler_argument_numeric.inc";i:12;s:42:"handlers/views_handler_argument_string.inc";i:13;s:52:"handlers/views_handler_argument_group_by_numeric.inc";i:14;s:32:"handlers/views_handler_field.inc";i:15;s:40:"handlers/views_handler_field_counter.inc";i:16;s:40:"handlers/views_handler_field_boolean.inc";i:17;s:49:"handlers/views_handler_field_contextual_links.inc";i:18;s:48:"handlers/views_handler_field_ctools_dropdown.inc";i:19;s:39:"handlers/views_handler_field_custom.inc";i:20;s:37:"handlers/views_handler_field_date.inc";i:21;s:39:"handlers/views_handler_field_entity.inc";i:22;s:38:"handlers/views_handler_field_links.inc";i:23;s:39:"handlers/views_handler_field_markup.inc";i:24;s:37:"handlers/views_handler_field_math.inc";i:25;s:40:"handlers/views_handler_field_numeric.inc";i:26;s:47:"handlers/views_handler_field_prerender_list.inc";i:27;s:46:"handlers/views_handler_field_time_interval.inc";i:28;s:43:"handlers/views_handler_field_serialized.inc";i:29;s:45:"handlers/views_handler_field_machine_name.inc";i:30;s:36:"handlers/views_handler_field_url.inc";i:31;s:33:"handlers/views_handler_filter.inc";i:32;s:50:"handlers/views_handler_filter_boolean_operator.inc";i:33;s:57:"handlers/views_handler_filter_boolean_operator_string.inc";i:34;s:41:"handlers/views_handler_filter_combine.inc";i:35;s:38:"handlers/views_handler_filter_date.inc";i:36;s:42:"handlers/views_handler_filter_equality.inc";i:37;s:47:"handlers/views_handler_filter_entity_bundle.inc";i:38;s:50:"handlers/views_handler_filter_group_by_numeric.inc";i:39;s:45:"handlers/views_handler_filter_in_operator.inc";i:40;s:45:"handlers/views_handler_filter_many_to_one.inc";i:41;s:41:"handlers/views_handler_filter_numeric.inc";i:42;s:40:"handlers/views_handler_filter_string.inc";i:43;s:48:"handlers/views_handler_filter_fields_compare.inc";i:44;s:39:"handlers/views_handler_relationship.inc";i:45;s:53:"handlers/views_handler_relationship_groupwise_max.inc";i:46;s:31:"handlers/views_handler_sort.inc";i:47;s:36:"handlers/views_handler_sort_date.inc";i:48;s:39:"handlers/views_handler_sort_formula.inc";i:49;s:48:"handlers/views_handler_sort_group_by_numeric.inc";i:50;s:46:"handlers/views_handler_sort_menu_hierarchy.inc";i:51;s:38:"handlers/views_handler_sort_random.inc";i:52;s:17:"includes/base.inc";i:53;s:21:"includes/handlers.inc";i:54;s:20:"includes/plugins.inc";i:55;s:17:"includes/view.inc";i:56;s:60:"modules/aggregator/views_handler_argument_aggregator_fid.inc";i:57;s:60:"modules/aggregator/views_handler_argument_aggregator_iid.inc";i:58;s:69:"modules/aggregator/views_handler_argument_aggregator_category_cid.inc";i:59;s:64:"modules/aggregator/views_handler_field_aggregator_title_link.inc";i:60;s:62:"modules/aggregator/views_handler_field_aggregator_category.inc";i:61;s:70:"modules/aggregator/views_handler_field_aggregator_item_description.inc";i:62;s:57:"modules/aggregator/views_handler_field_aggregator_xss.inc";i:63;s:67:"modules/aggregator/views_handler_filter_aggregator_category_cid.inc";i:64;s:54:"modules/aggregator/views_plugin_row_aggregator_rss.inc";i:65;s:56:"modules/book/views_plugin_argument_default_book_root.inc";i:66;s:59:"modules/comment/views_handler_argument_comment_user_uid.inc";i:67;s:47:"modules/comment/views_handler_field_comment.inc";i:68;s:53:"modules/comment/views_handler_field_comment_depth.inc";i:69;s:52:"modules/comment/views_handler_field_comment_link.inc";i:70;s:60:"modules/comment/views_handler_field_comment_link_approve.inc";i:71;s:59:"modules/comment/views_handler_field_comment_link_delete.inc";i:72;s:57:"modules/comment/views_handler_field_comment_link_edit.inc";i:73;s:58:"modules/comment/views_handler_field_comment_link_reply.inc";i:74;s:57:"modules/comment/views_handler_field_comment_node_link.inc";i:75;s:56:"modules/comment/views_handler_field_comment_username.inc";i:76;s:61:"modules/comment/views_handler_field_ncs_last_comment_name.inc";i:77;s:56:"modules/comment/views_handler_field_ncs_last_updated.inc";i:78;s:52:"modules/comment/views_handler_field_node_comment.inc";i:79;s:57:"modules/comment/views_handler_field_node_new_comments.inc";i:80;s:62:"modules/comment/views_handler_field_last_comment_timestamp.inc";i:81;s:57:"modules/comment/views_handler_filter_comment_user_uid.inc";i:82;s:57:"modules/comment/views_handler_filter_ncs_last_updated.inc";i:83;s:53:"modules/comment/views_handler_filter_node_comment.inc";i:84;s:53:"modules/comment/views_handler_sort_comment_thread.inc";i:85;s:60:"modules/comment/views_handler_sort_ncs_last_comment_name.inc";i:86;s:55:"modules/comment/views_handler_sort_ncs_last_updated.inc";i:87;s:48:"modules/comment/views_plugin_row_comment_rss.inc";i:88;s:49:"modules/comment/views_plugin_row_comment_view.inc";i:89;s:52:"modules/contact/views_handler_field_contact_link.inc";i:90;s:43:"modules/field/views_handler_field_field.inc";i:91;s:59:"modules/field/views_handler_relationship_entity_reverse.inc";i:92;s:51:"modules/field/views_handler_argument_field_list.inc";i:93;s:57:"modules/field/views_handler_filter_field_list_boolean.inc";i:94;s:58:"modules/field/views_handler_argument_field_list_string.inc";i:95;s:49:"modules/field/views_handler_filter_field_list.inc";i:96;s:57:"modules/filter/views_handler_field_filter_format_name.inc";i:97;s:52:"modules/locale/views_handler_field_node_language.inc";i:98;s:53:"modules/locale/views_handler_filter_node_language.inc";i:99;s:54:"modules/locale/views_handler_argument_locale_group.inc";i:100;s:57:"modules/locale/views_handler_argument_locale_language.inc";i:101;s:51:"modules/locale/views_handler_field_locale_group.inc";i:102;s:54:"modules/locale/views_handler_field_locale_language.inc";i:103;s:55:"modules/locale/views_handler_field_locale_link_edit.inc";i:104;s:52:"modules/locale/views_handler_filter_locale_group.inc";i:105;s:55:"modules/locale/views_handler_filter_locale_language.inc";i:106;s:54:"modules/locale/views_handler_filter_locale_version.inc";i:107;s:51:"modules/locale/views_handler_sort_node_language.inc";i:108;s:53:"modules/node/views_handler_argument_dates_various.inc";i:109;s:53:"modules/node/views_handler_argument_node_language.inc";i:110;s:48:"modules/node/views_handler_argument_node_nid.inc";i:111;s:49:"modules/node/views_handler_argument_node_type.inc";i:112;s:48:"modules/node/views_handler_argument_node_vid.inc";i:113;s:57:"modules/node/views_handler_argument_node_uid_revision.inc";i:114;s:59:"modules/node/views_handler_field_history_user_timestamp.inc";i:115;s:41:"modules/node/views_handler_field_node.inc";i:116;s:46:"modules/node/views_handler_field_node_link.inc";i:117;s:53:"modules/node/views_handler_field_node_link_delete.inc";i:118;s:51:"modules/node/views_handler_field_node_link_edit.inc";i:119;s:50:"modules/node/views_handler_field_node_revision.inc";i:120;s:55:"modules/node/views_handler_field_node_revision_link.inc";i:121;s:62:"modules/node/views_handler_field_node_revision_link_delete.inc";i:122;s:62:"modules/node/views_handler_field_node_revision_link_revert.inc";i:123;s:46:"modules/node/views_handler_field_node_path.inc";i:124;s:46:"modules/node/views_handler_field_node_type.inc";i:125;s:55:"modules/node/views_handler_field_node_version_count.inc";i:126;s:60:"modules/node/views_handler_filter_history_user_timestamp.inc";i:127;s:49:"modules/node/views_handler_filter_node_access.inc";i:128;s:49:"modules/node/views_handler_filter_node_status.inc";i:129;s:47:"modules/node/views_handler_filter_node_type.inc";i:130;s:55:"modules/node/views_handler_filter_node_uid_revision.inc";i:131;s:56:"modules/node/views_handler_filter_node_version_count.inc";i:132;s:54:"modules/node/views_handler_sort_node_version_count.inc";i:133;s:51:"modules/node/views_plugin_argument_default_node.inc";i:134;s:52:"modules/node/views_plugin_argument_validate_node.inc";i:135;s:42:"modules/node/views_plugin_row_node_rss.inc";i:136;s:43:"modules/node/views_plugin_row_node_view.inc";i:137;s:52:"modules/profile/views_handler_field_profile_date.inc";i:138;s:52:"modules/profile/views_handler_field_profile_list.inc";i:139;s:58:"modules/profile/views_handler_filter_profile_selection.inc";i:140;s:48:"modules/search/views_handler_argument_search.inc";i:141;s:51:"modules/search/views_handler_field_search_score.inc";i:142;s:46:"modules/search/views_handler_filter_search.inc";i:143;s:50:"modules/search/views_handler_sort_search_score.inc";i:144;s:47:"modules/search/views_plugin_row_search_view.inc";i:145;s:57:"modules/statistics/views_handler_field_accesslog_path.inc";i:146;s:65:"modules/statistics/views_handler_field_node_counter_timestamp.inc";i:147;s:61:"modules/statistics/views_handler_field_statistics_numeric.inc";i:148;s:50:"modules/system/views_handler_argument_file_fid.inc";i:149;s:43:"modules/system/views_handler_field_file.inc";i:150;s:53:"modules/system/views_handler_field_file_extension.inc";i:151;s:52:"modules/system/views_handler_field_file_filemime.inc";i:152;s:47:"modules/system/views_handler_field_file_uri.inc";i:153;s:50:"modules/system/views_handler_field_file_status.inc";i:154;s:51:"modules/system/views_handler_filter_file_status.inc";i:155;s:52:"modules/taxonomy/views_handler_argument_taxonomy.inc";i:156;s:57:"modules/taxonomy/views_handler_argument_term_node_tid.inc";i:157;s:63:"modules/taxonomy/views_handler_argument_term_node_tid_depth.inc";i:158;s:68:"modules/taxonomy/views_handler_argument_term_node_tid_depth_join.inc";i:159;s:72:"modules/taxonomy/views_handler_argument_term_node_tid_depth_modifier.inc";i:160;s:58:"modules/taxonomy/views_handler_argument_vocabulary_vid.inc";i:161;s:67:"modules/taxonomy/views_handler_argument_vocabulary_machine_name.inc";i:162;s:49:"modules/taxonomy/views_handler_field_taxonomy.inc";i:163;s:54:"modules/taxonomy/views_handler_field_term_node_tid.inc";i:164;s:55:"modules/taxonomy/views_handler_field_term_link_edit.inc";i:165;s:55:"modules/taxonomy/views_handler_filter_term_node_tid.inc";i:166;s:61:"modules/taxonomy/views_handler_filter_term_node_tid_depth.inc";i:167;s:66:"modules/taxonomy/views_handler_filter_term_node_tid_depth_join.inc";i:168;s:56:"modules/taxonomy/views_handler_filter_vocabulary_vid.inc";i:169;s:65:"modules/taxonomy/views_handler_filter_vocabulary_machine_name.inc";i:170;s:62:"modules/taxonomy/views_handler_relationship_node_term_data.inc";i:171;s:65:"modules/taxonomy/views_plugin_argument_validate_taxonomy_term.inc";i:172;s:63:"modules/taxonomy/views_plugin_argument_default_taxonomy_tid.inc";i:173;s:67:"modules/tracker/views_handler_argument_tracker_comment_user_uid.inc";i:174;s:65:"modules/tracker/views_handler_filter_tracker_comment_user_uid.inc";i:175;s:65:"modules/tracker/views_handler_filter_tracker_boolean_operator.inc";i:176;s:51:"modules/system/views_handler_filter_system_type.inc";i:177;s:56:"modules/translation/views_handler_argument_node_tnid.inc";i:178;s:63:"modules/translation/views_handler_field_node_link_translate.inc";i:179;s:65:"modules/translation/views_handler_field_node_translation_link.inc";i:180;s:54:"modules/translation/views_handler_filter_node_tnid.inc";i:181;s:60:"modules/translation/views_handler_filter_node_tnid_child.inc";i:182;s:62:"modules/translation/views_handler_relationship_translation.inc";i:183;s:48:"modules/user/views_handler_argument_user_uid.inc";i:184;s:55:"modules/user/views_handler_argument_users_roles_rid.inc";i:185;s:41:"modules/user/views_handler_field_user.inc";i:186;s:50:"modules/user/views_handler_field_user_language.inc";i:187;s:46:"modules/user/views_handler_field_user_link.inc";i:188;s:53:"modules/user/views_handler_field_user_link_cancel.inc";i:189;s:51:"modules/user/views_handler_field_user_link_edit.inc";i:190;s:46:"modules/user/views_handler_field_user_mail.inc";i:191;s:46:"modules/user/views_handler_field_user_name.inc";i:192;s:53:"modules/user/views_handler_field_user_permissions.inc";i:193;s:49:"modules/user/views_handler_field_user_picture.inc";i:194;s:47:"modules/user/views_handler_field_user_roles.inc";i:195;s:50:"modules/user/views_handler_filter_user_current.inc";i:196;s:47:"modules/user/views_handler_filter_user_name.inc";i:197;s:54:"modules/user/views_handler_filter_user_permissions.inc";i:198;s:48:"modules/user/views_handler_filter_user_roles.inc";i:199;s:59:"modules/user/views_plugin_argument_default_current_user.inc";i:200;s:51:"modules/user/views_plugin_argument_default_user.inc";i:201;s:52:"modules/user/views_plugin_argument_validate_user.inc";i:202;s:43:"modules/user/views_plugin_row_user_view.inc";i:203;s:31:"plugins/views_plugin_access.inc";i:204;s:36:"plugins/views_plugin_access_none.inc";i:205;s:36:"plugins/views_plugin_access_perm.inc";i:206;s:36:"plugins/views_plugin_access_role.inc";i:207;s:41:"plugins/views_plugin_argument_default.inc";i:208;s:45:"plugins/views_plugin_argument_default_php.inc";i:209;s:47:"plugins/views_plugin_argument_default_fixed.inc";i:210;s:45:"plugins/views_plugin_argument_default_raw.inc";i:211;s:42:"plugins/views_plugin_argument_validate.inc";i:212;s:50:"plugins/views_plugin_argument_validate_numeric.inc";i:213;s:46:"plugins/views_plugin_argument_validate_php.inc";i:214;s:30:"plugins/views_plugin_cache.inc";i:215;s:35:"plugins/views_plugin_cache_none.inc";i:216;s:35:"plugins/views_plugin_cache_time.inc";i:217;s:32:"plugins/views_plugin_display.inc";i:218;s:43:"plugins/views_plugin_display_attachment.inc";i:219;s:38:"plugins/views_plugin_display_block.inc";i:220;s:40:"plugins/views_plugin_display_default.inc";i:221;s:38:"plugins/views_plugin_display_embed.inc";i:222;s:41:"plugins/views_plugin_display_extender.inc";i:223;s:37:"plugins/views_plugin_display_feed.inc";i:224;s:37:"plugins/views_plugin_display_page.inc";i:225;s:43:"plugins/views_plugin_exposed_form_basic.inc";i:226;s:37:"plugins/views_plugin_exposed_form.inc";i:227;s:52:"plugins/views_plugin_exposed_form_input_required.inc";i:228;s:42:"plugins/views_plugin_localization_core.inc";i:229;s:37:"plugins/views_plugin_localization.inc";i:230;s:42:"plugins/views_plugin_localization_none.inc";i:231;s:30:"plugins/views_plugin_pager.inc";i:232;s:35:"plugins/views_plugin_pager_full.inc";i:233;s:35:"plugins/views_plugin_pager_mini.inc";i:234;s:35:"plugins/views_plugin_pager_none.inc";i:235;s:35:"plugins/views_plugin_pager_some.inc";i:236;s:30:"plugins/views_plugin_query.inc";i:237;s:38:"plugins/views_plugin_query_default.inc";i:238;s:28:"plugins/views_plugin_row.inc";i:239;s:35:"plugins/views_plugin_row_fields.inc";i:240;s:39:"plugins/views_plugin_row_rss_fields.inc";i:241;s:30:"plugins/views_plugin_style.inc";i:242;s:38:"plugins/views_plugin_style_default.inc";i:243;s:35:"plugins/views_plugin_style_grid.inc";i:244;s:35:"plugins/views_plugin_style_list.inc";i:245;s:40:"plugins/views_plugin_style_jump_menu.inc";i:246;s:38:"plugins/views_plugin_style_mapping.inc";i:247;s:34:"plugins/views_plugin_style_rss.inc";i:248;s:38:"plugins/views_plugin_style_summary.inc";i:249;s:48:"plugins/views_plugin_style_summary_jump_menu.inc";i:250;s:50:"plugins/views_plugin_style_summary_unformatted.inc";i:251;s:36:"plugins/views_plugin_style_table.inc";i:252;s:34:"tests/handlers/views_handlers.test";i:253;s:43:"tests/handlers/views_handler_area_text.test";i:254;s:47:"tests/handlers/views_handler_argument_null.test";i:255;s:39:"tests/handlers/views_handler_field.test";i:256;s:47:"tests/handlers/views_handler_field_boolean.test";i:257;s:46:"tests/handlers/views_handler_field_custom.test";i:258;s:47:"tests/handlers/views_handler_field_counter.test";i:259;s:44:"tests/handlers/views_handler_field_date.test";i:260;s:54:"tests/handlers/views_handler_field_file_extension.test";i:261;s:49:"tests/handlers/views_handler_field_file_size.test";i:262;s:44:"tests/handlers/views_handler_field_math.test";i:263;s:43:"tests/handlers/views_handler_field_url.test";i:264;s:43:"tests/handlers/views_handler_field_xss.test";i:265;s:48:"tests/handlers/views_handler_filter_combine.test";i:266;s:45:"tests/handlers/views_handler_filter_date.test";i:267;s:49:"tests/handlers/views_handler_filter_equality.test";i:268;s:52:"tests/handlers/views_handler_filter_in_operator.test";i:269;s:48:"tests/handlers/views_handler_filter_numeric.test";i:270;s:47:"tests/handlers/views_handler_filter_string.test";i:271;s:43:"tests/handlers/views_handler_manytoone.test";i:272;s:45:"tests/handlers/views_handler_sort_random.test";i:273;s:43:"tests/handlers/views_handler_sort_date.test";i:274;s:38:"tests/handlers/views_handler_sort.test";i:275;s:46:"tests/test_handlers/views_test_area_access.inc";i:276;s:60:"tests/test_plugins/views_test_plugin_access_test_dynamic.inc";i:277;s:59:"tests/test_plugins/views_test_plugin_access_test_static.inc";i:278;s:59:"tests/test_plugins/views_test_plugin_style_test_mapping.inc";i:279;s:39:"tests/plugins/views_plugin_display.test";i:280;s:46:"tests/styles/views_plugin_style_jump_menu.test";i:281;s:36:"tests/styles/views_plugin_style.test";i:282;s:41:"tests/styles/views_plugin_style_base.test";i:283;s:44:"tests/styles/views_plugin_style_mapping.test";i:284;s:48:"tests/styles/views_plugin_style_unformatted.test";i:285;s:23:"tests/views_access.test";i:286;s:24:"tests/views_analyze.test";i:287;s:22:"tests/views_basic.test";i:288;s:21:"tests/views_ajax.test";i:289;s:33:"tests/views_argument_default.test";i:290;s:35:"tests/views_argument_validator.test";i:291;s:29:"tests/views_exposed_form.test";i:292;s:31:"tests/field/views_fieldapi.test";i:293;s:25:"tests/views_glossary.test";i:294;s:24:"tests/views_groupby.test";i:295;s:31:"tests/views_handler_filter.test";i:296;s:25:"tests/views_handlers.test";i:297;s:23:"tests/views_module.test";i:298;s:22:"tests/views_pager.test";i:299;s:40:"tests/views_plugin_localization_test.inc";i:300;s:29:"tests/views_translatable.test";i:301;s:22:"tests/views_query.test";i:302;s:24:"tests/views_upgrade.test";i:303;s:34:"tests/views_test.views_default.inc";i:304;s:58:"tests/comment/views_handler_argument_comment_user_uid.test";i:305;s:56:"tests/comment/views_handler_filter_comment_user_uid.test";i:306;s:45:"tests/node/views_node_revision_relations.test";i:307;s:61:"tests/taxonomy/views_handler_relationship_node_term_data.test";i:308;s:45:"tests/user/views_handler_field_user_name.test";i:309;s:43:"tests/user/views_user_argument_default.test";i:310;s:44:"tests/user/views_user_argument_validate.test";i:311;s:26:"tests/user/views_user.test";i:312;s:22:"tests/views_cache.test";i:313;s:22:"tests/views_clone.test";i:314;s:21:"tests/views_view.test";i:315;s:19:"tests/views_ui.test";}s:5:"mtime";i:1664867501;s:7:"version";N;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
 ))
 ->values(array(
   'filename' => 'sites/all/modules/views/views_ui.module',
@@ -58244,9 +63796,9 @@
   'owner' => '',
   'status' => '0',
   'bootstrap' => '0',
-  'schema_version' => '0',
+  'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:13:{s:4:"name";s:8:"Views UI";s:11:"description";s:93:"Administrative interface to views. Without this module, you cannot create or edit your views.";s:7:"package";s:5:"Views";s:4:"core";s:3:"7.x";s:9:"configure";s:21:"admin/structure/views";s:12:"dependencies";a:1:{i:0;s:5:"views";}s:5:"files";a:2:{i:0;s:15:"views_ui.module";i:1;s:57:"plugins/views_wizard/views_ui_base_views_wizard.class.php";}s:7:"version";s:7:"7.x-3.7";s:7:"project";s:5:"views";s:9:"datestamp";s:10:"1365499236";s:5:"mtime";i:1365499236;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+  'info' => "a:12:{s:4:\"name\";s:8:\"Views UI\";s:11:\"description\";s:93:\"Administrative interface to views. Without this module, you cannot create or edit your views.\";s:7:\"package\";s:5:\"Views\";s:4:\"core\";s:3:\"7.x\";s:9:\"configure\";s:21:\"admin/structure/views\";s:12:\"dependencies\";a:1:{i:0;s:5:\"views\";}s:34:\"# @codingStandardsIgnoreLine\nfiles\";a:1:{i:0;s:15:\"views_ui.module\";}s:5:\"files\";a:1:{i:0;s:57:\"plugins/views_wizard/views_ui_base_views_wizard.class.php\";}s:5:\"mtime\";i:1664867501;s:7:\"version\";N;s:3:\"php\";s:5:\"5.2.4\";s:9:\"bootstrap\";i:0;}",
 ))
 ->values(array(
   'filename' => 'themes/bartik/bartik.info',
@@ -58257,7 +63809,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:18:{s:4:"name";s:6:"Bartik";s:11:"description";s:48:"A flexible, recolorable theme with many regions.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:11:"stylesheets";a:2:{s:3:"all";a:3:{s:14:"css/layout.css";s:28:"themes/bartik/css/layout.css";s:13:"css/style.css";s:27:"themes/bartik/css/style.css";s:14:"css/colors.css";s:28:"themes/bartik/css/colors.css";}s:5:"print";a:1:{s:13:"css/print.css";s:27:"themes/bartik/css/print.css";}}s:7:"regions";a:17:{s:6:"header";s:6:"Header";s:4:"help";s:4:"Help";s:8:"page_top";s:8:"Page top";s:11:"page_bottom";s:11:"Page bottom";s:11:"highlighted";s:11:"Highlighted";s:8:"featured";s:8:"Featured";s:7:"content";s:7:"Content";s:13:"sidebar_first";s:13:"Sidebar first";s:14:"sidebar_second";s:14:"Sidebar second";s:14:"triptych_first";s:14:"Triptych first";s:15:"triptych_middle";s:15:"Triptych middle";s:13:"triptych_last";s:13:"Triptych last";s:18:"footer_firstcolumn";s:19:"Footer first column";s:19:"footer_secondcolumn";s:20:"Footer second column";s:18:"footer_thirdcolumn";s:19:"Footer third column";s:19:"footer_fourthcolumn";s:20:"Footer fourth column";s:6:"footer";s:6:"Footer";}s:8:"settings";a:1:{s:20:"shortcut_module_link";s:1:"0";}s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:6:"engine";s:11:"phptemplate";s:8:"features";a:9:{i:0;s:4:"logo";i:1;s:7:"favicon";i:2;s:4:"name";i:3;s:6:"slogan";i:4;s:17:"node_user_picture";i:5;s:20:"comment_user_picture";i:6;s:25:"comment_user_verification";i:7;s:9:"main_menu";i:8;s:14:"secondary_menu";}s:10:"screenshot";s:28:"themes/bartik/screenshot.png";s:3:"php";s:5:"5.2.4";s:7:"scripts";a:0:{}s:5:"mtime";i:1444866674;s:14:"regions_hidden";a:2:{i:0;s:8:"page_top";i:1;s:11:"page_bottom";}s:28:"overlay_supplemental_regions";a:1:{i:0;s:8:"page_top";}}',
+  'info' => 'a:16:{s:4:"name";s:6:"Bartik";s:11:"description";s:48:"A flexible, recolorable theme with many regions.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:11:"stylesheets";a:2:{s:3:"all";a:3:{s:14:"css/layout.css";s:28:"themes/bartik/css/layout.css";s:13:"css/style.css";s:27:"themes/bartik/css/style.css";s:14:"css/colors.css";s:28:"themes/bartik/css/colors.css";}s:5:"print";a:1:{s:13:"css/print.css";s:27:"themes/bartik/css/print.css";}}s:7:"regions";a:17:{s:6:"header";s:6:"Header";s:4:"help";s:4:"Help";s:8:"page_top";s:8:"Page top";s:11:"page_bottom";s:11:"Page bottom";s:11:"highlighted";s:11:"Highlighted";s:8:"featured";s:8:"Featured";s:7:"content";s:7:"Content";s:13:"sidebar_first";s:13:"Sidebar first";s:14:"sidebar_second";s:14:"Sidebar second";s:14:"triptych_first";s:14:"Triptych first";s:15:"triptych_middle";s:15:"Triptych middle";s:13:"triptych_last";s:13:"Triptych last";s:18:"footer_firstcolumn";s:19:"Footer first column";s:19:"footer_secondcolumn";s:20:"Footer second column";s:18:"footer_thirdcolumn";s:19:"Footer third column";s:19:"footer_fourthcolumn";s:20:"Footer fourth column";s:6:"footer";s:6:"Footer";}s:8:"settings";a:1:{s:20:"shortcut_module_link";s:1:"0";}s:6:"engine";s:11:"phptemplate";s:8:"features";a:9:{i:0;s:4:"logo";i:1;s:7:"favicon";i:2;s:4:"name";i:3;s:6:"slogan";i:4;s:17:"node_user_picture";i:5;s:20:"comment_user_picture";i:6;s:25:"comment_user_verification";i:7;s:9:"main_menu";i:8;s:14:"secondary_menu";}s:10:"screenshot";s:28:"themes/bartik/screenshot.png";s:3:"php";s:5:"5.2.4";s:7:"scripts";a:0:{}s:5:"mtime";i:1664863480;s:14:"regions_hidden";a:2:{i:0;s:8:"page_top";i:1;s:11:"page_bottom";}s:28:"overlay_supplemental_regions";a:1:{i:0;s:8:"page_top";}}',
 ))
 ->values(array(
   'filename' => 'themes/garland/garland.info',
@@ -58268,7 +63820,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:18:{s:4:"name";s:7:"Garland";s:11:"description";s:111:"A multi-column theme which can be configured to modify colors and switch between fixed and fluid width layouts.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:11:"stylesheets";a:2:{s:3:"all";a:1:{s:9:"style.css";s:24:"themes/garland/style.css";}s:5:"print";a:1:{s:9:"print.css";s:24:"themes/garland/print.css";}}s:8:"settings";a:1:{s:13:"garland_width";s:5:"fluid";}s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:6:"engine";s:11:"phptemplate";s:7:"regions";a:9:{s:13:"sidebar_first";s:12:"Left sidebar";s:14:"sidebar_second";s:13:"Right sidebar";s:7:"content";s:7:"Content";s:6:"header";s:6:"Header";s:6:"footer";s:6:"Footer";s:11:"highlighted";s:11:"Highlighted";s:4:"help";s:4:"Help";s:8:"page_top";s:8:"Page top";s:11:"page_bottom";s:11:"Page bottom";}s:8:"features";a:9:{i:0;s:4:"logo";i:1;s:7:"favicon";i:2;s:4:"name";i:3;s:6:"slogan";i:4;s:17:"node_user_picture";i:5;s:20:"comment_user_picture";i:6;s:25:"comment_user_verification";i:7;s:9:"main_menu";i:8;s:14:"secondary_menu";}s:10:"screenshot";s:29:"themes/garland/screenshot.png";s:3:"php";s:5:"5.2.4";s:7:"scripts";a:0:{}s:5:"mtime";i:1444866674;s:14:"regions_hidden";a:2:{i:0;s:8:"page_top";i:1;s:11:"page_bottom";}s:28:"overlay_supplemental_regions";a:1:{i:0;s:8:"page_top";}}',
+  'info' => 'a:16:{s:4:"name";s:7:"Garland";s:11:"description";s:111:"A multi-column theme which can be configured to modify colors and switch between fixed and fluid width layouts.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:11:"stylesheets";a:2:{s:3:"all";a:1:{s:9:"style.css";s:24:"themes/garland/style.css";}s:5:"print";a:1:{s:9:"print.css";s:24:"themes/garland/print.css";}}s:8:"settings";a:1:{s:13:"garland_width";s:5:"fluid";}s:6:"engine";s:11:"phptemplate";s:7:"regions";a:9:{s:13:"sidebar_first";s:12:"Left sidebar";s:14:"sidebar_second";s:13:"Right sidebar";s:7:"content";s:7:"Content";s:6:"header";s:6:"Header";s:6:"footer";s:6:"Footer";s:11:"highlighted";s:11:"Highlighted";s:4:"help";s:4:"Help";s:8:"page_top";s:8:"Page top";s:11:"page_bottom";s:11:"Page bottom";}s:8:"features";a:9:{i:0;s:4:"logo";i:1;s:7:"favicon";i:2;s:4:"name";i:3;s:6:"slogan";i:4;s:17:"node_user_picture";i:5;s:20:"comment_user_picture";i:6;s:25:"comment_user_verification";i:7;s:9:"main_menu";i:8;s:14:"secondary_menu";}s:10:"screenshot";s:29:"themes/garland/screenshot.png";s:3:"php";s:5:"5.2.4";s:7:"scripts";a:0:{}s:5:"mtime";i:1664863480;s:14:"regions_hidden";a:2:{i:0;s:8:"page_top";i:1;s:11:"page_bottom";}s:28:"overlay_supplemental_regions";a:1:{i:0;s:8:"page_top";}}',
 ))
 ->values(array(
   'filename' => 'themes/seven/seven.info',
@@ -58279,7 +63831,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => 'a:18:{s:4:"name";s:5:"Seven";s:11:"description";s:65:"A simple one-column, tableless, fluid width administration theme.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.40";s:4:"core";s:3:"7.x";s:11:"stylesheets";a:1:{s:6:"screen";a:2:{s:9:"reset.css";s:22:"themes/seven/reset.css";s:9:"style.css";s:22:"themes/seven/style.css";}}s:8:"settings";a:1:{s:20:"shortcut_module_link";s:1:"1";}s:7:"regions";a:5:{s:7:"content";s:7:"Content";s:4:"help";s:4:"Help";s:8:"page_top";s:8:"Page top";s:11:"page_bottom";s:11:"Page bottom";s:13:"sidebar_first";s:13:"First sidebar";}s:14:"regions_hidden";a:3:{i:0;s:13:"sidebar_first";i:1;s:8:"page_top";i:2;s:11:"page_bottom";}s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1444866674";s:6:"engine";s:11:"phptemplate";s:8:"features";a:9:{i:0;s:4:"logo";i:1;s:7:"favicon";i:2;s:4:"name";i:3;s:6:"slogan";i:4;s:17:"node_user_picture";i:5;s:20:"comment_user_picture";i:6;s:25:"comment_user_verification";i:7;s:9:"main_menu";i:8;s:14:"secondary_menu";}s:10:"screenshot";s:27:"themes/seven/screenshot.png";s:3:"php";s:5:"5.2.4";s:7:"scripts";a:0:{}s:5:"mtime";i:1444866674;s:28:"overlay_supplemental_regions";a:1:{i:0;s:8:"page_top";}}',
+  'info' => 'a:16:{s:4:"name";s:5:"Seven";s:11:"description";s:65:"A simple one-column, tableless, fluid width administration theme.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.92";s:4:"core";s:3:"7.x";s:11:"stylesheets";a:1:{s:6:"screen";a:2:{s:9:"reset.css";s:22:"themes/seven/reset.css";s:9:"style.css";s:22:"themes/seven/style.css";}}s:8:"settings";a:1:{s:20:"shortcut_module_link";s:1:"1";}s:7:"regions";a:5:{s:7:"content";s:7:"Content";s:4:"help";s:4:"Help";s:8:"page_top";s:8:"Page top";s:11:"page_bottom";s:11:"Page bottom";s:13:"sidebar_first";s:13:"First sidebar";}s:14:"regions_hidden";a:3:{i:0;s:13:"sidebar_first";i:1;s:8:"page_top";i:2;s:11:"page_bottom";}s:6:"engine";s:11:"phptemplate";s:8:"features";a:9:{i:0;s:4:"logo";i:1;s:7:"favicon";i:2;s:4:"name";i:3;s:6:"slogan";i:4;s:17:"node_user_picture";i:5;s:20:"comment_user_picture";i:6;s:25:"comment_user_verification";i:7;s:9:"main_menu";i:8;s:14:"secondary_menu";}s:10:"screenshot";s:27:"themes/seven/screenshot.png";s:3:"php";s:5:"5.2.4";s:7:"scripts";a:0:{}s:5:"mtime";i:1664863480;s:28:"overlay_supplemental_regions";a:1:{i:0;s:8:"page_top";}}',
 ))
 ->values(array(
   'filename' => 'themes/stark/stark.info',
@@ -58290,7 +63842,7 @@
   'bootstrap' => '0',
   'schema_version' => '-1',
   'weight' => '0',
-  'info' => "a:17:{s:4:\"name\";s:5:\"Stark\";s:11:\"description\";s:208:\"This theme demonstrates Drupal's default HTML markup and CSS styles. To learn how to build your own theme and override Drupal's default code, see the <a href=\"http://drupal.org/theme-guide\">Theming Guide</a>.\";s:7:\"package\";s:4:\"Core\";s:7:\"version\";s:4:\"7.40\";s:4:\"core\";s:3:\"7.x\";s:11:\"stylesheets\";a:1:{s:3:\"all\";a:1:{s:10:\"layout.css\";s:23:\"themes/stark/layout.css\";}}s:7:\"project\";s:6:\"drupal\";s:9:\"datestamp\";s:10:\"1444866674\";s:6:\"engine\";s:11:\"phptemplate\";s:7:\"regions\";a:9:{s:13:\"sidebar_first\";s:12:\"Left sidebar\";s:14:\"sidebar_second\";s:13:\"Right sidebar\";s:7:\"content\";s:7:\"Content\";s:6:\"header\";s:6:\"Header\";s:6:\"footer\";s:6:\"Footer\";s:11:\"highlighted\";s:11:\"Highlighted\";s:4:\"help\";s:4:\"Help\";s:8:\"page_top\";s:8:\"Page top\";s:11:\"page_bottom\";s:11:\"Page bottom\";}s:8:\"features\";a:9:{i:0;s:4:\"logo\";i:1;s:7:\"favicon\";i:2;s:4:\"name\";i:3;s:6:\"slogan\";i:4;s:17:\"node_user_picture\";i:5;s:20:\"comment_user_picture\";i:6;s:25:\"comment_user_verification\";i:7;s:9:\"main_menu\";i:8;s:14:\"secondary_menu\";}s:10:\"screenshot\";s:27:\"themes/stark/screenshot.png\";s:3:\"php\";s:5:\"5.2.4\";s:7:\"scripts\";a:0:{}s:5:\"mtime\";i:1444866674;s:14:\"regions_hidden\";a:2:{i:0;s:8:\"page_top\";i:1;s:11:\"page_bottom\";}s:28:\"overlay_supplemental_regions\";a:1:{i:0;s:8:\"page_top\";}}",
+  'info' => "a:15:{s:4:\"name\";s:5:\"Stark\";s:11:\"description\";s:208:\"This theme demonstrates Drupal's default HTML markup and CSS styles. To learn how to build your own theme and override Drupal's default code, see the <a href=\"http://drupal.org/theme-guide\">Theming Guide</a>.\";s:7:\"package\";s:4:\"Core\";s:7:\"version\";s:4:\"7.92\";s:4:\"core\";s:3:\"7.x\";s:11:\"stylesheets\";a:1:{s:3:\"all\";a:1:{s:10:\"layout.css\";s:23:\"themes/stark/layout.css\";}}s:6:\"engine\";s:11:\"phptemplate\";s:7:\"regions\";a:9:{s:13:\"sidebar_first\";s:12:\"Left sidebar\";s:14:\"sidebar_second\";s:13:\"Right sidebar\";s:7:\"content\";s:7:\"Content\";s:6:\"header\";s:6:\"Header\";s:6:\"footer\";s:6:\"Footer\";s:11:\"highlighted\";s:11:\"Highlighted\";s:4:\"help\";s:4:\"Help\";s:8:\"page_top\";s:8:\"Page top\";s:11:\"page_bottom\";s:11:\"Page bottom\";}s:8:\"features\";a:9:{i:0;s:4:\"logo\";i:1;s:7:\"favicon\";i:2;s:4:\"name\";i:3;s:6:\"slogan\";i:4;s:17:\"node_user_picture\";i:5;s:20:\"comment_user_picture\";i:6;s:25:\"comment_user_verification\";i:7;s:9:\"main_menu\";i:8;s:14:\"secondary_menu\";}s:10:\"screenshot\";s:27:\"themes/stark/screenshot.png\";s:3:\"php\";s:5:\"5.2.4\";s:7:\"scripts\";a:0:{}s:5:\"mtime\";i:1664863480;s:14:\"regions_hidden\";a:2:{i:0;s:8:\"page_top\";i:1;s:11:\"page_bottom\";}s:28:\"overlay_supplemental_regions\";a:1:{i:0;s:8:\"page_top\";}}",
 ))
 ->execute();
 $connection->schema()->createTable('taxonomy_index', array(
@@ -58312,7 +63864,7 @@
     'sticky' => array(
       'type' => 'int',
       'not null' => FALSE,
-      'size' => 'normal',
+      'size' => 'tiny',
       'default' => '0',
     ),
     'created' => array(
@@ -58322,6 +63874,16 @@
       'default' => '0',
     ),
   ),
+  'indexes' => array(
+    'term_node' => array(
+      'tid',
+      'sticky',
+      'created',
+    ),
+    'nid' => array(
+      'nid',
+    ),
+  ),
   'mysql_character_set' => 'utf8',
 ));
 
@@ -58340,7 +63902,7 @@
 ))
 ->values(array(
   'nid' => '1',
-  'tid' => '4',
+  'tid' => '15',
   'sticky' => '0',
   'created' => '1421727515',
 ))
@@ -58351,22 +63913,40 @@
   'created' => '1421727515',
 ))
 ->values(array(
-  'nid' => '1',
-  'tid' => '15',
+  'nid' => '2',
+  'tid' => '9',
   'sticky' => '0',
-  'created' => '1421727515',
+  'created' => '1441306772',
 ))
 ->values(array(
-  'nid' => '6',
-  'tid' => '1',
+  'nid' => '2',
+  'tid' => '14',
   'sticky' => '0',
-  'created' => '1504715414',
+  'created' => '1441306772',
 ))
 ->values(array(
-  'nid' => '7',
-  'tid' => '1',
+  'nid' => '2',
+  'tid' => '17',
   'sticky' => '0',
-  'created' => '1504715432',
+  'created' => '1441306772',
+))
+->values(array(
+  'nid' => '2',
+  'tid' => '20',
+  'sticky' => '0',
+  'created' => '1441306772',
+))
+->values(array(
+  'nid' => '2',
+  'tid' => '21',
+  'sticky' => '0',
+  'created' => '1441306772',
+))
+->values(array(
+  'nid' => '2',
+  'tid' => '24',
+  'sticky' => '0',
+  'created' => '1441306772',
 ))
 ->values(array(
   'nid' => '3',
@@ -58399,40 +63979,16 @@
   'created' => '1471428152',
 ))
 ->values(array(
-  'nid' => '2',
-  'tid' => '9',
-  'sticky' => '0',
-  'created' => '1441306772',
-))
-->values(array(
-  'nid' => '2',
-  'tid' => '14',
-  'sticky' => '0',
-  'created' => '1441306772',
-))
-->values(array(
-  'nid' => '2',
-  'tid' => '17',
-  'sticky' => '0',
-  'created' => '1441306772',
-))
-->values(array(
-  'nid' => '2',
-  'tid' => '20',
-  'sticky' => '0',
-  'created' => '1441306772',
-))
-->values(array(
-  'nid' => '2',
-  'tid' => '21',
+  'nid' => '6',
+  'tid' => '1',
   'sticky' => '0',
-  'created' => '1441306772',
+  'created' => '1504715414',
 ))
 ->values(array(
-  'nid' => '2',
-  'tid' => '24',
+  'nid' => '7',
+  'tid' => '1',
   'sticky' => '0',
-  'created' => '1441306772',
+  'created' => '1504715432',
 ))
 ->execute();
 $connection->schema()->createTable('taxonomy_term_data', array(
@@ -58795,6 +64351,10 @@
   'tid' => '3',
   'parent' => '0',
 ))
+->values(array(
+  'tid' => '4',
+  'parent' => '3',
+))
 ->values(array(
   'tid' => '5',
   'parent' => '0',
@@ -58803,6 +64363,14 @@
   'tid' => '6',
   'parent' => '0',
 ))
+->values(array(
+  'tid' => '7',
+  'parent' => '6',
+))
+->values(array(
+  'tid' => '8',
+  'parent' => '6',
+))
 ->values(array(
   'tid' => '9',
   'parent' => '0',
@@ -58867,18 +64435,6 @@
   'tid' => '24',
   'parent' => '0',
 ))
-->values(array(
-  'tid' => '4',
-  'parent' => '3',
-))
-->values(array(
-  'tid' => '7',
-  'parent' => '6',
-))
-->values(array(
-  'tid' => '8',
-  'parent' => '6',
-))
 ->values(array(
   'tid' => '25',
   'parent' => '0',
@@ -59168,18 +64724,6 @@
   'mysql_character_set' => 'utf8',
 ));
 
-$connection->insert('trigger_assignments')
-->fields(array(
-  'hook',
-  'aid',
-  'weight',
-))
-->values(array(
-  'hook' => 'comment_presave',
-  'aid' => 'comment_publish_action',
-  'weight' => '1',
-))
-->execute();
 $connection->schema()->createTable('url_alias', array(
   'fields' => array(
     'pid' => array(
@@ -59353,10 +64897,21 @@
       'not null' => FALSE,
       'size' => 'normal',
     ),
+    'changed' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'default' => '0',
+    ),
   ),
   'primary key' => array(
     'uid',
   ),
+  'indexes' => array(
+    'changed' => array(
+      'changed',
+    ),
+  ),
   'mysql_character_set' => 'utf8',
 ));
 
@@ -59378,6 +64933,7 @@
   'picture',
   'init',
   'data',
+  'changed',
 ))
 ->values(array(
   'uid' => '1',
@@ -59388,14 +64944,15 @@
   'signature' => '',
   'signature_format' => NULL,
   'created' => '0',
-  'access' => '1444945097',
-  'login' => '1444945097',
+  'access' => '1664938970',
+  'login' => '1664931778',
   'status' => '1',
   'timezone' => NULL,
   'language' => '',
   'picture' => '0',
   'init' => '',
   'data' => 'a:1:{s:7:"contact";i:1;}',
+  'changed' => '0',
 ))
 ->values(array(
   'uid' => '2',
@@ -59414,6 +64971,7 @@
   'picture' => '0',
   'init' => 'odo@local.host',
   'data' => 'a:1:{s:7:"contact";i:1;}',
+  'changed' => '1440532218',
 ))
 ->values(array(
   'uid' => '3',
@@ -59432,6 +64990,7 @@
   'picture' => '0',
   'init' => 'bob@local.host',
   'data' => 'a:1:{s:7:"contact";i:1;}',
+  'changed' => '1440532218',
 ))
 ->execute();
 $connection->schema()->createTable('users_roles', array(
@@ -59601,41 +65160,49 @@
   'name' => 'cache',
   'value' => 'i:0;',
 ))
+->values(array(
+  'name' => 'cache_class_cache_ctools_css',
+  'value' => 's:14:"CToolsCssCache";',
+))
 ->values(array(
   'name' => 'cache_flush_cache',
   'value' => 'i:0;',
 ))
 ->values(array(
   'name' => 'cache_flush_cache_block',
-  'value' => 'i:0;',
+  'value' => 'i:1664938978;',
 ))
 ->values(array(
   'name' => 'cache_flush_cache_field',
-  'value' => 'i:0;',
+  'value' => 'i:1664931769;',
 ))
 ->values(array(
   'name' => 'cache_flush_cache_filter',
-  'value' => 'i:1444944970;',
+  'value' => 'i:1664931769;',
 ))
 ->values(array(
   'name' => 'cache_flush_cache_form',
-  'value' => 'i:1444944970;',
+  'value' => 'i:0;',
 ))
 ->values(array(
   'name' => 'cache_flush_cache_image',
-  'value' => 'i:1444944970;',
+  'value' => 'i:1664931769;',
 ))
 ->values(array(
   'name' => 'cache_flush_cache_menu',
-  'value' => 'i:1444944970;',
+  'value' => 'i:0;',
 ))
 ->values(array(
   'name' => 'cache_flush_cache_page',
-  'value' => 'i:0;',
+  'value' => 'i:1664938978;',
 ))
 ->values(array(
   'name' => 'cache_flush_cache_path',
-  'value' => 'i:1444944970;',
+  'value' => 'i:0;',
+))
+->values(array(
+  'name' => 'cache_flush_cache_variable',
+  'value' => 'i:0;',
 ))
 ->values(array(
   'name' => 'cache_lifetime',
@@ -59875,7 +65442,7 @@
 ))
 ->values(array(
   'name' => 'cron_last',
-  'value' => 'i:1444944970;',
+  'value' => 'i:1664931769;',
 ))
 ->values(array(
   'name' => 'cron_threshold_error',
@@ -59887,15 +65454,11 @@
 ))
 ->values(array(
   'name' => 'css_js_query_string',
-  'value' => 's:6:"nwa6nq";',
+  'value' => 's:6:"rj9f4y";',
 ))
 ->values(array(
   'name' => 'ctools_last_cron',
-  'value' => 'i:1421720834;',
-))
-->values(array(
-  'name' => 'dashboard_stashed_blocks',
-  'value' => 'a:5:{i:0;a:3:{s:6:"module";s:4:"node";s:5:"delta";s:6:"recent";s:6:"region";s:14:"dashboard_main";}i:1;a:3:{s:6:"module";s:4:"user";s:5:"delta";s:3:"new";s:6:"region";s:17:"dashboard_sidebar";}i:2;a:3:{s:6:"module";s:6:"search";s:5:"delta";s:4:"form";s:6:"region";s:17:"dashboard_sidebar";}i:3;a:3:{s:6:"module";s:7:"comment";s:5:"delta";s:6:"recent";s:6:"region";s:18:"dashboard_inactive";}i:4;a:3:{s:6:"module";s:4:"user";s:5:"delta";s:6:"online";s:6:"region";s:18:"dashboard_inactive";}}',
+  'value' => 'i:1664864749;',
 ))
 ->values(array(
   'name' => 'date_api_version',
@@ -59919,7 +65482,7 @@
 ))
 ->values(array(
   'name' => 'drupal_css_cache_files',
-  'value' => 'a:10:{s:64:"823ba1006db72809515d2221cd02ec1075d7b49b0c07f49307b3a7930bfdd9e4";s:64:"public://css/css_xE-rWrJf-fncB6ztZfd2huxqgxu4WO-qwma6Xer30m4.css";s:64:"039ba69b25efd672767c5ee21b686a2cdaa496c5fb210693b88f81cc556db518";s:64:"public://css/css_M8BpLSgFJ1ipHW-ZwVd6p7yRHsT3q23ohYErZrFJ1xA.css";s:64:"568f3bca87830de88c7b44e71808ac7f33f4cdf273ed3bf3d2532bd48f084b06";s:64:"public://css/css_NRg0AX3iY_x0OX3_WzcWp90JnwurHRvZn6i75GL0rRI.css";s:64:"586e4d641f74d0fbdea2ecffe62294e983c5961df8d0128aab1c561505f6b35a";s:64:"public://css/css_2THG1eGiBIizsWFeexsNe1iDifJ00QRS9uSd03rY9co.css";s:64:"cb9f93e666a396bb3eb14c5fd16f7ebd1cdd0067733eb0a2ab1b294b6f14f76f";s:64:"public://css/css_1kF33EODTO5gDyEbdpAfYzMKbjG3ottD1s5np0BNI8U.css";s:64:"35337ea541d4968f58917d83eaa9e495d5a38bb0aaf23bc714650d3c71fc275a";s:64:"public://css/css_LJ87GFKz9ZFt2bWZ4pMV8e2o8w_790Mbwcd7C-RKri0.css";s:64:"592db66916e1dd3416cbe95bcb34a5a68775eb0b7cf95e4c858671de35290cc9";s:64:"public://css/css_LS9OUalDR9-d_lCAvF3yUWjNU6yF8ZBm84jEPRvoyuQ.css";s:64:"fe9fca5a618e55058e69458a65b2edb4e958c16c13e1d1526c4dc0c0e782b483";s:64:"public://css/css_WWafHiT44xXp69Ucog34hgXKsZRScJzl3S17Xg7evtM.css";s:64:"ebb3f433ad4107b1ac31e9d7de0f9a5d399040e9f82b6364211dcfaadea158c0";s:64:"public://css/css_Nv0ct-zkzztuah_LbaPFF8ZkdSEk-LxBtTWMm9mN_F8.css";s:64:"032d72e2b3124645b11e59c23005327dc2b450af6aaa6bf3cad34a6a65a9d774";s:64:"public://css/css_ZDWl28hdmeinIcKg-HMrN6uKD0nTMld5NlXLmm5MH2U.css";}',
+  'value' => 'a:6:{s:64:"823ba1006db72809515d2221cd02ec1075d7b49b0c07f49307b3a7930bfdd9e4";s:64:"public://css/css_xE-rWrJf-fncB6ztZfd2huxqgxu4WO-qwma6Xer30m4.css";s:64:"592db66916e1dd3416cbe95bcb34a5a68775eb0b7cf95e4c858671de35290cc9";s:64:"public://css/css_LS9OUalDR9-d_lCAvF3yUWjNU6yF8ZBm84jEPRvoyuQ.css";s:64:"81935fa696766294f7d725dbd56e753cf2b6daabd7cb948171830648d35be3f1";s:64:"public://css/css_ELXvY8pQ9Dhp7LiF1Gra7jv5X_cMGOmgGfJ6go69M0w.css";s:64:"8366be3a82d83db4ec0cd63fdb2977a1145c38937190ceb866dd8b9322c159a6";s:64:"public://css/css_BAlE_6v49tysdATXG1mLraYC8i0QUkmM-SZc1C0dkU0.css";s:64:"f3f74dcad951a1a986b64eeabc10d3141b1f70cd67b02447398b004b5706789c";s:64:"public://css/css_Hex-pwCTDDfQD41aRswi2OFNCxosYgUEBnZsKNQ5BWo.css";s:64:"ebb3f433ad4107b1ac31e9d7de0f9a5d399040e9f82b6364211dcfaadea158c0";s:64:"public://css/css_Nv0ct-zkzztuah_LbaPFF8ZkdSEk-LxBtTWMm9mN_F8.css";}',
 ))
 ->values(array(
   'name' => 'drupal_http_request_fails',
@@ -59945,6 +65508,10 @@
   'name' => 'entityreference:base-tables',
   'value' => 'a:7:{s:4:"node";a:2:{i:0;s:4:"node";i:1;s:3:"nid";}s:13:"taxonomy_term";a:2:{i:0;s:18:"taxonomy_term_data";i:1;s:3:"tid";}s:7:"comment";a:2:{i:0;s:7:"comment";i:1;s:3:"cid";}s:16:"i18n_translation";a:2:{i:0;s:20:"i18n_translation_set";i:1;s:4:"tsid";}s:4:"file";a:2:{i:0;s:12:"file_managed";i:1;s:3:"fid";}s:19:"taxonomy_vocabulary";a:2:{i:0;s:19:"taxonomy_vocabulary";i:1;s:3:"vid";}s:4:"user";a:2:{i:0;s:5:"users";i:1;s:3:"uid";}}',
 ))
+->values(array(
+  'name' => 'entity_cache_tables_created',
+  'value' => 'N;',
+))
 ->values(array(
   'name' => 'entity_translation_entity_types',
   'value' => 'a:4:{s:7:"comment";s:7:"comment";s:4:"node";s:4:"node";s:13:"taxonomy_term";s:13:"taxonomy_term";s:4:"user";s:4:"user";}',
@@ -60131,7 +65698,7 @@
 ))
 ->values(array(
   'name' => 'javascript_parsed',
-  'value' => 'a:17:{i:0;s:14:"misc/drupal.js";i:1;s:14:"misc/jquery.js";i:2;s:19:"misc/jquery.once.js";i:3;s:32:"modules/contextual/contextual.js";i:4;s:21:"misc/jquery.cookie.js";i:5;s:26:"modules/toolbar/toolbar.js";i:6;s:19:"misc/tableheader.js";i:7;s:12:"misc/form.js";i:8;s:16:"misc/collapse.js";i:9;s:17:"misc/tabledrag.js";s:10:"refresh:is";s:7:"waiting";i:10;s:20:"misc/machine-name.js";i:11;s:16:"misc/textarea.js";i:12;s:36:"modules/comment/comment-node-form.js";i:13;s:26:"modules/menu/menu.admin.js";i:14;s:21:"misc/vertical-tabs.js";i:15;s:29:"modules/node/content_types.js";}',
+  'value' => 'a:12:{i:0;s:14:"misc/drupal.js";i:1;s:14:"misc/jquery.js";i:2;s:27:"misc/jquery-extend-3.4.0.js";i:3;s:44:"misc/jquery-html-prefilter-3.5.0-backport.js";i:4;s:19:"misc/jquery.once.js";i:5;s:19:"misc/tableheader.js";i:6;s:12:"misc/form.js";i:7;s:16:"misc/collapse.js";i:8;s:21:"misc/jquery.cookie.js";i:9;s:26:"modules/toolbar/toolbar.js";s:10:"refresh:fr";s:7:"waiting";s:10:"refresh:is";s:7:"waiting";}',
 ))
 ->values(array(
   'name' => 'language_content_type_article',
@@ -60203,7 +65770,7 @@
 ))
 ->values(array(
   'name' => 'maintenance_mode',
-  'value' => 'i:0;',
+  'value' => 'b:0;',
 ))
 ->values(array(
   'name' => 'maintenance_mode_message',
@@ -60215,7 +65782,7 @@
 ))
 ->values(array(
   'name' => 'menu_masks',
-  'value' => 'a:47:{i:0;i:501;i:1;i:493;i:2;i:490;i:3;i:250;i:4;i:247;i:5;i:246;i:6;i:245;i:7;i:242;i:8;i:238;i:9;i:234;i:10;i:126;i:11;i:125;i:12;i:123;i:13;i:122;i:14;i:121;i:15;i:119;i:16;i:117;i:17;i:108;i:18;i:63;i:19;i:62;i:20;i:61;i:21;i:60;i:22;i:59;i:23;i:58;i:24;i:56;i:25;i:54;i:26;i:44;i:27;i:31;i:28;i:30;i:29;i:29;i:30;i:26;i:31;i:24;i:32;i:22;i:33;i:21;i:34;i:15;i:35;i:14;i:36;i:13;i:37;i:12;i:38;i:11;i:39;i:10;i:40;i:8;i:41;i:7;i:42;i:6;i:43;i:5;i:44;i:3;i:45;i:2;i:46;i:1;}',
+  'value' => 'a:49:{i:0;i:501;i:1;i:494;i:2;i:493;i:3;i:490;i:4;i:250;i:5;i:247;i:6;i:246;i:7;i:245;i:8;i:242;i:9;i:238;i:10;i:234;i:11;i:126;i:12;i:125;i:13;i:123;i:14;i:122;i:15;i:121;i:16;i:119;i:17;i:118;i:18;i:117;i:19;i:108;i:20;i:63;i:21;i:62;i:22;i:61;i:23;i:60;i:24;i:59;i:25;i:58;i:26;i:56;i:27;i:54;i:28;i:44;i:29;i:31;i:30;i:30;i:31;i:29;i:32;i:26;i:33;i:24;i:34;i:22;i:35;i:21;i:36;i:15;i:37;i:14;i:38;i:13;i:39;i:12;i:40;i:11;i:41;i:10;i:42;i:8;i:43;i:7;i:44;i:6;i:45;i:5;i:46;i:3;i:47;i:2;i:48;i:1;}',
 ))
 ->values(array(
   'name' => 'menu_options_article',
@@ -60279,7 +65846,7 @@
 ))
 ->values(array(
   'name' => 'node_cron_last',
-  'value' => 's:10:"1441306832";',
+  'value' => 's:10:"1564543706";',
 ))
 ->values(array(
   'name' => 'node_options_article',
@@ -60389,6 +65956,10 @@
   'name' => 'path_alias_whitelist',
   'value' => 'a:3:{s:8:"taxonomy";b:1;s:4:"node";b:1;s:5:"admin";b:1;}',
 ))
+->values(array(
+  'name' => 'picture_updated_to_file_entity_2',
+  'value' => 'b:0;',
+))
 ->values(array(
   'name' => 'preprocess_css',
   'value' => 'i:1;',
@@ -60479,7 +66050,7 @@
 ))
 ->values(array(
   'name' => 'statistics_day_timestamp',
-  'value' => 'i:1444944970;',
+  'value' => 'i:1664864749;',
 ))
 ->values(array(
   'name' => 'statistics_enable_access_log',
@@ -60547,7 +66118,7 @@
 ))
 ->values(array(
   'name' => 'update_last_check',
-  'value' => 'i:1444944973;',
+  'value' => 'i:1664931769;',
 ))
 ->values(array(
   'name' => 'update_max_fetch_attempts',
@@ -60774,100 +66345,100 @@
 ))
 ->values(array(
   'realm' => 'language',
-  'realm_key' => 'is',
-  'name' => 'anonymous',
-  'value' => 'is - anonymous',
+  'realm_key' => 'en',
+  'name' => 'user_default_timezone',
+  'value' => '2',
   'serialized' => '0',
 ))
 ->values(array(
   'realm' => 'language',
-  'realm_key' => 'is',
-  'name' => 'maintenance_mode_message',
-  'value' => 'is - This is a custom maintenance mode message.',
+  'realm_key' => 'fr',
+  'name' => 'site_403',
+  'value' => 'node',
   'serialized' => '0',
 ))
 ->values(array(
   'realm' => 'language',
   'realm_key' => 'fr',
-  'name' => 'site_403',
+  'name' => 'site_404',
   'value' => 'node',
   'serialized' => '0',
 ))
 ->values(array(
   'realm' => 'language',
-  'realm_key' => 'is',
-  'name' => 'site_403',
-  'value' => 'node/1',
+  'realm_key' => 'fr',
+  'name' => 'site_frontpage',
+  'value' => 'node',
   'serialized' => '0',
 ))
 ->values(array(
   'realm' => 'language',
   'realm_key' => 'fr',
-  'name' => 'site_404',
-  'value' => 'node',
+  'name' => 'site_name',
+  'value' => 'The Site Name',
   'serialized' => '0',
 ))
 ->values(array(
   'realm' => 'language',
-  'realm_key' => 'is',
-  'name' => 'site_404',
-  'value' => 'node/6',
+  'realm_key' => 'fr',
+  'name' => 'site_slogan',
+  'value' => 'fr - The Slogan',
   'serialized' => '0',
 ))
 ->values(array(
   'realm' => 'language',
   'realm_key' => 'fr',
-  'name' => 'site_frontpage',
-  'value' => 'node',
+  'name' => 'user_default_timezone',
+  'value' => '0',
   'serialized' => '0',
 ))
 ->values(array(
   'realm' => 'language',
   'realm_key' => 'is',
-  'name' => 'site_frontpage',
-  'value' => 'node/4',
+  'name' => 'anonymous',
+  'value' => 'is - anonymous',
   'serialized' => '0',
 ))
 ->values(array(
   'realm' => 'language',
-  'realm_key' => 'fr',
-  'name' => 'site_name',
-  'value' => 'The Site Name',
+  'realm_key' => 'is',
+  'name' => 'maintenance_mode_message',
+  'value' => 'is - This is a custom maintenance mode message.',
   'serialized' => '0',
 ))
 ->values(array(
   'realm' => 'language',
   'realm_key' => 'is',
-  'name' => 'site_name',
-  'value' => 'is - The Site Name',
+  'name' => 'site_403',
+  'value' => 'node/1',
   'serialized' => '0',
 ))
 ->values(array(
   'realm' => 'language',
-  'realm_key' => 'fr',
-  'name' => 'site_slogan',
-  'value' => 'fr - The Slogan',
+  'realm_key' => 'is',
+  'name' => 'site_404',
+  'value' => 'node/6',
   'serialized' => '0',
 ))
 ->values(array(
   'realm' => 'language',
   'realm_key' => 'is',
-  'name' => 'site_slogan',
-  'value' => 'is - The Slogan',
+  'name' => 'site_frontpage',
+  'value' => 'node/4',
   'serialized' => '0',
 ))
 ->values(array(
   'realm' => 'language',
-  'realm_key' => 'en',
-  'name' => 'user_default_timezone',
-  'value' => '2',
+  'realm_key' => 'is',
+  'name' => 'site_name',
+  'value' => 'is - The Site Name',
   'serialized' => '0',
 ))
 ->values(array(
   'realm' => 'language',
-  'realm_key' => 'fr',
-  'name' => 'user_default_timezone',
-  'value' => '0',
+  'realm_key' => 'is',
+  'name' => 'site_slogan',
+  'value' => 'is - The Slogan',
   'serialized' => '0',
 ))
 ->values(array(
@@ -61053,3 +66624,8 @@
   ),
   'mysql_character_set' => 'utf8',
 ));
+
+// Reset the SQL mode.
+if ($connection->databaseType() === 'mysql') {
+  $connection->query("SET sql_mode = '$sql_mode'");
+}
diff --git a/core/modules/migrate_drupal/tests/src/Kernel/d7/FieldDiscoveryTest.php b/core/modules/migrate_drupal/tests/src/Kernel/d7/FieldDiscoveryTest.php
index 04cc3c5975..2291ac3d63 100644
--- a/core/modules/migrate_drupal/tests/src/Kernel/d7/FieldDiscoveryTest.php
+++ b/core/modules/migrate_drupal/tests/src/Kernel/d7/FieldDiscoveryTest.php
@@ -210,6 +210,7 @@ public function addAllFieldProcessesAltersData() {
                   'taxonomy_term_reference_plain' => 'entity_reference_label',
                   'taxonomy_term_reference_rss_category' => 'entity_reference_label',
                   'i18n_taxonomy_term_reference_link' => 'entity_reference_label',
+                  'i18n_taxonomy_term_reference_plain' => 'entity_reference_label',
                   'entityreference_entity_view' => 'entity_reference_entity_view',
                 ],
                 'link_field' => [
diff --git a/core/modules/migrate_drupal/tests/src/Unit/FieldDiscoveryTest.php b/core/modules/migrate_drupal/tests/src/Unit/FieldDiscoveryTest.php
index 1c60da83fe..809ace5229 100644
--- a/core/modules/migrate_drupal/tests/src/Unit/FieldDiscoveryTest.php
+++ b/core/modules/migrate_drupal/tests/src/Unit/FieldDiscoveryTest.php
@@ -178,7 +178,7 @@ public function getBundleFieldsData() {
         'entity_type_id' => 'user',
         'bundle' => 'user',
         'expected_fields' => [
-            'user_field_1' => ['field_info_key' => 'user_field_1_data'],
+          'user_field_1' => ['field_info_key' => 'user_field_1_data'],
         ],
       ],
       'Comment - Content Type 1' => [
diff --git a/core/modules/migrate_drupal/tests/src/Unit/MigrationStateUnitTest.php b/core/modules/migrate_drupal/tests/src/Unit/MigrationStateUnitTest.php
index 3c770c7847..ea4b54356e 100644
--- a/core/modules/migrate_drupal/tests/src/Unit/MigrationStateUnitTest.php
+++ b/core/modules/migrate_drupal/tests/src/Unit/MigrationStateUnitTest.php
@@ -396,7 +396,6 @@ public function providerGetUpgradeStates() {
     // Test menu migration with menu_ui uninstalled.
     $tests[3] = $tests[1];
     unset($tests[3]['modules_to_enable']['menu_ui']);
-    unset($tests[3]['files']['menu_ui']);
     unset($tests[3]['migrations']['menu_ui']);
     $tests[3]['expected_7'] = [
       MigrationState::NOT_FINISHED => [
diff --git a/core/modules/migrate_drupal_ui/migrate_drupal_ui.routing.yml b/core/modules/migrate_drupal_ui/migrate_drupal_ui.routing.yml
index 438c8aabc5..9da6cfb1d9 100644
--- a/core/modules/migrate_drupal_ui/migrate_drupal_ui.routing.yml
+++ b/core/modules/migrate_drupal_ui/migrate_drupal_ui.routing.yml
@@ -47,7 +47,7 @@ migrate_drupal_ui.upgrade_review:
 migrate_drupal_ui.log:
   path: '/admin/reports/upgrade'
   defaults:
-      _controller: '\Drupal\migrate_drupal_ui\Controller\MigrateController::showLog'
+    _controller: '\Drupal\migrate_drupal_ui\Controller\MigrateController::showLog'
   requirements:
     _custom_access: '\Drupal\migrate_drupal_ui\MigrateAccessCheck::checkAccess'
   options:
diff --git a/core/modules/migrate_drupal_ui/src/Batch/MigrateUpgradeImportBatch.php b/core/modules/migrate_drupal_ui/src/Batch/MigrateUpgradeImportBatch.php
index 5345db3e8f..93d285c2f6 100644
--- a/core/modules/migrate_drupal_ui/src/Batch/MigrateUpgradeImportBatch.php
+++ b/core/modules/migrate_drupal_ui/src/Batch/MigrateUpgradeImportBatch.php
@@ -232,10 +232,10 @@ public static function run($initial_ids, $config, &$context) {
         $migration = \Drupal::service('plugin.manager.migration')->createInstance($migration_id);
         $migration_name = $migration->label() ? $migration->label() : $migration_id;
         $context['message'] = (string) new TranslatableMarkup('Currently upgrading @migration (@current of @max total tasks)', [
-            '@migration' => $migration_name,
-            '@current' => $context['sandbox']['current'],
-            '@max' => $context['sandbox']['max'],
-          ]) . "<br />\n" . $context['message'];
+          '@migration' => $migration_name,
+          '@current' => $context['sandbox']['current'],
+          '@max' => $context['sandbox']['max'],
+        ]) . "<br />\n" . $context['message'];
       }
     }
     else {
diff --git a/core/modules/migrate_drupal_ui/src/Form/CredentialForm.php b/core/modules/migrate_drupal_ui/src/Form/CredentialForm.php
index 8900a50768..87e57604bb 100644
--- a/core/modules/migrate_drupal_ui/src/Form/CredentialForm.php
+++ b/core/modules/migrate_drupal_ui/src/Form/CredentialForm.php
@@ -5,8 +5,10 @@
 use Drupal\Component\Utility\UrlHelper;
 use Drupal\Core\Config\ConfigFactoryInterface;
 use Drupal\Core\Database\Connection;
+use Drupal\Core\Database\Database;
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\State\StateInterface;
+use Drupal\Core\Site\Settings;
 use Drupal\Core\TempStore\PrivateTempStoreFactory;
 use Drupal\migrate\Exception\RequirementsException;
 use Drupal\migrate\Plugin\Exception\BadPluginDefinitionException;
@@ -99,19 +101,42 @@ public function buildForm(array $form, FormStateInterface $form_state) {
       '#description' => $this->t('Provide the information to access the Drupal site you want to upgrade. Files can be imported into the upgraded site as well.  See the <a href=":url">Upgrade documentation for more detailed instructions</a>.', [':url' => 'https://www.drupal.org/upgrade/migrate']),
     ];
 
+    $migrate_source_version = Settings::get('migrate_source_version') == '6' ? '6' : '7';
     $form['version'] = [
       '#type' => 'radios',
-      '#default_value' => 7,
+      '#default_value' => $migrate_source_version,
       '#title' => $this->t('Drupal version of the source site'),
       '#options' => ['6' => $this->t('Drupal 6'), '7' => $this->t('Drupal 7')],
       '#required' => TRUE,
     ];
 
+    $available_connections = array_diff(array_keys(Database::getAllConnectionInfo()), ['default']);
+    $options = array_combine($available_connections, $available_connections);
+    $migrate_source_connection = Settings::get('migrate_source_connection');
+    $preferred_connections = $migrate_source_connection
+      ? ['migrate', $migrate_source_connection]
+      : ['migrate'];
+    $default_options = array_intersect($preferred_connections, $available_connections);
+    $form['source_connection'] = [
+      '#type' => 'select',
+      '#title' => $this->t('Source connection'),
+      '#options' => $options,
+      '#default_value' => array_pop($default_options),
+      '#empty_option' => $this->t('- User defined -'),
+      '#description' => $this->t('Choose one of the keys from the $databases array or else select "User defined" and enter database credentials.'),
+      '#access' => !empty($options),
+    ];
+
     $form['database'] = [
       '#type' => 'details',
       '#title' => $this->t('Source database'),
       '#description' => $this->t('Provide credentials for the database of the Drupal site you want to upgrade.'),
       '#open' => TRUE,
+      '#states' => [
+        'visible' => [
+          ':input[name=source_connection]' => ['value' => ''],
+        ],
+      ],
     ];
 
     $form['database']['driver'] = [
@@ -119,6 +144,11 @@ public function buildForm(array $form, FormStateInterface $form_state) {
       '#title' => $this->t('Database type'),
       '#required' => TRUE,
       '#default_value' => $default_driver,
+      '#states' => [
+        'required' => [
+          ':input[name=source_connection]' => ['value' => ''],
+        ],
+      ],
     ];
     if (count($drivers) == 1) {
       $form['database']['driver']['#disabled'] = TRUE;
@@ -136,6 +166,27 @@ public function buildForm(array $form, FormStateInterface $form_state) {
       // for mysql and pgsql must not be required.
       $form['database']['settings'][$key]['database']['#required'] = FALSE;
       $form['database']['settings'][$key]['username']['#required'] = FALSE;
+      $form['database']['settings'][$key]['database']['#states'] = [
+        'required' => [
+          ':input[name=source_connection]' => ['value' => ''],
+          ':input[name=driver]' => ['value' => $key],
+        ],
+      ];
+      if ($key != 'sqlite') {
+        $form['database']['settings'][$key]['username']['#states'] = [
+          'required' => [
+            ':input[name=source_connection]' => ['value' => ''],
+            ':input[name=driver]' => ['value' => $key],
+          ],
+        ];
+        $form['database']['settings'][$key]['password']['#states'] = [
+          'required' => [
+            ':input[name=source_connection]' => ['value' => ''],
+            ':input[name=driver]' => ['value' => $key],
+          ],
+        ];
+      }
+
       $form['database']['settings'][$key]['#prefix'] = '<h2 class="js-hide">' . $this->t('@driver_name settings', ['@driver_name' => $driver->name()]) . '</h2>';
       $form['database']['settings'][$key]['#type'] = 'container';
       $form['database']['settings'][$key]['#tree'] = TRUE;
@@ -164,6 +215,7 @@ public function buildForm(array $form, FormStateInterface $form_state) {
     $form['source']['d6_source_base_path'] = [
       '#type' => 'textfield',
       '#title' => $this->t('Document root for files'),
+      '#default_value' => Settings::get('migrate_file_public_path') ?? '',
       '#description' => $this->t('To import files from your current Drupal site, enter a local file directory containing your site (e.g. /var/www/docroot), or your site address (for example http://example.com).'),
       '#states' => [
         'visible' => [
@@ -176,6 +228,7 @@ public function buildForm(array $form, FormStateInterface $form_state) {
     $form['source']['source_base_path'] = [
       '#type' => 'textfield',
       '#title' => $this->t('Document root for public files'),
+      '#default_value' => Settings::get('migrate_file_public_path') ?? '',
       '#description' => $this->t('To import public files from your current Drupal site, enter a local file directory containing your site (e.g. /var/www/docroot), or your site address (for example http://example.com).'),
       '#states' => [
         'visible' => [
@@ -188,7 +241,7 @@ public function buildForm(array $form, FormStateInterface $form_state) {
     $form['source']['source_private_file_path'] = [
       '#type' => 'textfield',
       '#title' => $this->t('Document root for private files'),
-      '#default_value' => '',
+      '#default_value' => Settings::get('migrate_file_private_path') ?? '',
       '#description' => $this->t('To import private files from your current Drupal site, enter a local file directory containing your site (e.g. /var/www/docroot). Leave blank to use the same value as Public files directory.'),
       '#states' => [
         'visible' => [
@@ -205,29 +258,36 @@ public function buildForm(array $form, FormStateInterface $form_state) {
    * {@inheritdoc}
    */
   public function validateForm(array &$form, FormStateInterface $form_state) {
-    // Retrieve the database driver from the form, use reflection to get the
-    // namespace, and then construct a valid database array the same as in
-    // settings.php.
-    $driver = $form_state->getValue('driver');
-    $drivers = $this->getDatabaseTypes();
-    $reflection = new \ReflectionClass($drivers[$driver]);
-    $install_namespace = $reflection->getNamespaceName();
-
-    $database = $form_state->getValue($driver);
-    // Cut the trailing \Install from namespace.
-    $database['namespace'] = substr($install_namespace, 0, strrpos($install_namespace, '\\'));
-    $database['driver'] = $driver;
-
-    // Validate the driver settings and just end here if we have any issues.
-    $connection = NULL;
-    $error_key = $database['driver'] . '][database';
-    if ($errors = $drivers[$driver]->validateDatabaseSettings($database)) {
-      foreach ($errors as $name => $message) {
-        $this->errors[$name] = $message;
+    $source_connection = $form_state->getValue('source_connection');
+    if ($source_connection) {
+      $info = Database::getConnectionInfo($source_connection);
+      $database = reset($info);
+    }
+    else {
+      // Retrieve the database driver from the form, use reflection to get the
+      // namespace, and then construct a valid database array the same as in
+      // settings.php.
+      $driver = $form_state->getValue('driver');
+      $drivers = $this->getDatabaseTypes();
+      $reflection = new \ReflectionClass($drivers[$driver]);
+      $install_namespace = $reflection->getNamespaceName();
+
+      $database = $form_state->getValue($driver);
+      // Cut the trailing \Install from namespace.
+      $database['namespace'] = substr($install_namespace, 0, strrpos($install_namespace, '\\'));
+      $database['driver'] = $driver;
+
+      // Validate the driver settings and just end here if we have any issues.
+      $connection = NULL;
+      if ($errors = $drivers[$driver]->validateDatabaseSettings($database)) {
+        foreach ($errors as $name => $message) {
+          $this->errors[$name] = $message;
+        }
       }
     }
 
     // Get the Drupal version of the source database so it can be validated.
+    $error_key = $database['driver'] . '][database';
     if (!$this->errors) {
       try {
         $connection = $this->getConnection($database);
@@ -283,6 +343,17 @@ public function validateForm(array &$form, FormStateInterface $form_state) {
    * Ensures that entered path can be read.
    */
   public function validatePaths($element, FormStateInterface $form_state) {
+    $version = $form_state->getValue('version');
+    // Only validate the paths relevant to the legacy Drupal version.
+    if (($version !== '7')
+      && ($element['#name'] == 'source_base_path' || $element['#name'] == 'source_private_file_path')) {
+      return;
+    }
+
+    if ($version !== '6' && ($element['#name'] == 'd6_source_base_path')) {
+      return;
+    }
+
     if ($source = $element['#value']) {
       $msg = $this->t('Failed to read from @title.', ['@title' => $element['#title']]);
       if (UrlHelper::isExternal($source)) {
diff --git a/core/modules/migrate_drupal_ui/src/Form/OverviewForm.php b/core/modules/migrate_drupal_ui/src/Form/OverviewForm.php
index 162c7686ce..e9c29e3069 100644
--- a/core/modules/migrate_drupal_ui/src/Form/OverviewForm.php
+++ b/core/modules/migrate_drupal_ui/src/Form/OverviewForm.php
@@ -35,9 +35,9 @@ public function buildForm(array $form, FormStateInterface $form_state) {
 
     $form['info_header'] = [
       '#markup' => '<p>' . $this->t('Upgrade a site by importing its files and the data from its database into a clean and empty new install of Drupal @version. See the <a href=":url">Drupal site upgrades handbook</a> for more information.', [
-          '@version' => $this->destinationSiteVersion,
-          ':url' => 'https://www.drupal.org/upgrade/migrate',
-        ]),
+        '@version' => $this->destinationSiteVersion,
+        ':url' => 'https://www.drupal.org/upgrade/migrate',
+      ]),
     ];
 
     $form['legend']['#markup'] = '';
diff --git a/core/modules/migrate_drupal_ui/tests/modules/migration_provider_test/migrations/migration_provider_no_annotation.yml b/core/modules/migrate_drupal_ui/tests/modules/migration_provider_test/migrations/migration_provider_no_annotation.yml
index bdc906660b..02f95ed3d8 100644
--- a/core/modules/migrate_drupal_ui/tests/modules/migration_provider_test/migrations/migration_provider_no_annotation.yml
+++ b/core/modules/migrate_drupal_ui/tests/modules/migration_provider_test/migrations/migration_provider_no_annotation.yml
@@ -4,7 +4,7 @@ migration_tags:
   - Drupal 6
   - Drupal 7
 source:
-# Test plugin without a source_module annotation
+  # Test plugin without a source_module annotation
   plugin: no_source_module
 process:
   message: site_offline_message
diff --git a/core/modules/migrate_drupal_ui/tests/modules/migration_provider_test/src/Plugin/migrate/source/NoSourceModule.php b/core/modules/migrate_drupal_ui/tests/modules/migration_provider_test/src/Plugin/migrate/source/NoSourceModule.php
index 0fc3063bb6..6971bbe4f4 100644
--- a/core/modules/migrate_drupal_ui/tests/modules/migration_provider_test/src/Plugin/migrate/source/NoSourceModule.php
+++ b/core/modules/migrate_drupal_ui/tests/modules/migration_provider_test/src/Plugin/migrate/source/NoSourceModule.php
@@ -16,16 +16,22 @@ class NoSourceModule extends DrupalSqlBase {
   /**
    * {@inheritdoc}
    */
-  public function query() {}
+  public function query() {
+    throw new \BadMethodCallException('This method should never be called');
+  }
 
   /**
    * {@inheritdoc}
    */
-  public function fields() {}
+  public function fields() {
+    throw new \BadMethodCallException('This method should never be called');
+  }
 
   /**
    * {@inheritdoc}
    */
-  public function getIds() {}
+  public function getIds() {
+    throw new \BadMethodCallException('This method should never be called');
+  }
 
 }
diff --git a/core/modules/migrate_drupal_ui/tests/src/Functional/d6/MultilingualReviewPageTest.php b/core/modules/migrate_drupal_ui/tests/src/Functional/d6/MultilingualReviewPageTest.php
index 7fdfa319fc..136ec128b8 100644
--- a/core/modules/migrate_drupal_ui/tests/src/Functional/d6/MultilingualReviewPageTest.php
+++ b/core/modules/migrate_drupal_ui/tests/src/Functional/d6/MultilingualReviewPageTest.php
@@ -29,8 +29,6 @@ class MultilingualReviewPageTest extends MultilingualReviewPageTestBase {
     'forum',
     'statistics',
     'syslog',
-    // @todo Remove tracker in https://www.drupal.org/project/drupal/issues/3261452
-    'tracker',
     'update',
     // Test migrations states.
     'migrate_state_finished_test',
diff --git a/core/modules/migrate_drupal_ui/tests/src/Functional/d6/NoMultilingualReviewPageTest.php b/core/modules/migrate_drupal_ui/tests/src/Functional/d6/NoMultilingualReviewPageTest.php
index 41d15e5b79..19243c61c7 100644
--- a/core/modules/migrate_drupal_ui/tests/src/Functional/d6/NoMultilingualReviewPageTest.php
+++ b/core/modules/migrate_drupal_ui/tests/src/Functional/d6/NoMultilingualReviewPageTest.php
@@ -27,8 +27,6 @@ class NoMultilingualReviewPageTest extends NoMultilingualReviewPageTestBase {
     'forum',
     'statistics',
     'syslog',
-    // @todo Remove tracker in https://www.drupal.org/project/drupal/issues/3261452
-    'tracker',
     'update',
     // Test migrations states.
     'migrate_state_finished_test',
diff --git a/core/modules/migrate_drupal_ui/tests/src/FunctionalJavascript/SettingsTest.php b/core/modules/migrate_drupal_ui/tests/src/FunctionalJavascript/SettingsTest.php
new file mode 100644
index 0000000000..776f115f7a
--- /dev/null
+++ b/core/modules/migrate_drupal_ui/tests/src/FunctionalJavascript/SettingsTest.php
@@ -0,0 +1,274 @@
+<?php
+
+namespace Drupal\Tests\migrate_drupal_ui\FunctionalJavascript;
+
+use Drupal\FunctionalJavascriptTests\WebDriverTestBase;
+
+/**
+ * Tests migrate upgrade credential form with settings in settings.php.
+ *
+ * @group migrate_drupal_ui
+ */
+class SettingsTest extends WebDriverTestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  protected $defaultTheme = 'stark';
+
+  /**
+   * {@inheritdoc}
+   */
+  protected static $modules = [
+    'migrate',
+    'migrate_drupal',
+    'migrate_drupal_ui',
+  ];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp(): void {
+    parent::setUp();
+
+    // Log in as user 1. Migrations in the UI can only be performed as user 1.
+    $this->drupalLogin($this->rootUser);
+  }
+
+  /**
+   * Test the Credential form with defaults in settings.php.
+   *
+   * @param string|null $source_connection
+   *   The value for the source_connection select field.
+   * @param string $version
+   *   The legacy Drupal version.
+   * @param string[] $manual
+   *   User entered form values.
+   * @param string[] $databases
+   *   Databases data or the settings array.
+   * @param string $expected_source_connection
+   *   The expected source database connection key.
+   *
+   * @throws \Behat\Mink\Exception\ElementNotFoundException
+   * @throws \Behat\Mink\Exception\ExpectationException
+   *
+   * @dataProvider providerTestCredentialForm
+   */
+  public function testCredentialForm($source_connection, $version, array $manual, array $databases, $expected_source_connection) {
+    // Write settings.
+    $migrate_file_public_path = '/var/www/drupal7/sites/default/files';
+    $migrate_file_private_path = '/var/www/drupal7/sites/default/files/private';
+    $settings['settings']['migrate_source_version'] = (object) [
+      'value' => $version,
+      'required' => TRUE,
+    ];
+    $settings['settings']['migrate_source_connection'] = (object) [
+      'value' => $source_connection,
+      'required' => TRUE,
+    ];
+    $settings['settings']['migrate_file_public_path'] = (object) [
+      'value' => $migrate_file_public_path,
+      'required' => TRUE,
+    ];
+    $settings['settings']['migrate_file_private_path'] = (object) [
+      'value' => $migrate_file_private_path,
+      'required' => TRUE,
+    ];
+    foreach ($databases as $key => $value) {
+      $settings['databases'][$key]['default'] = (object) [
+        'value' => $value['default'],
+        'required' => TRUE,
+      ];
+    }
+    $this->writeSettings($settings);
+
+    $edits = [];
+    // Enter the values manually if provided.
+    if (!empty($manual)) {
+      $edit = [];
+      $driver = 'mysql';
+      $edit[$driver]['host'] = $manual['host'];
+      $edit[$driver]['database'] = $manual['database'];
+      $edit[$driver]['username'] = $manual['username'];
+      $edit[$driver]['password'] = $manual['password'];
+      $edits = $this->translatePostValues($edit);
+    }
+
+    // Start the upgrade process.
+    $this->drupalGet('/upgrade');
+    $this->submitForm([], 'Continue');
+    $session = $this->assertSession();
+    // The source connection field is only displayed when there are connections
+    // other than default.
+    if (empty($databases)) {
+      $session->fieldNotExists('source_connection');
+    }
+    else {
+      $session->fieldExists('source_connection');
+    }
+
+    // Submit the Credential form.
+    $this->submitForm($edits, 'Review upgrade');
+
+    // Confirm that the form actually submitted. IF it submitted, we should see
+    // error messages about reading files. If there is no error message, that
+    // indicates that the form did not submit.
+    $session->responseContains('Failed to read from Document root');
+
+    // Assert the form values.
+    $session->fieldValueEquals('version', $version);
+
+    // Check the manually entered credentials or simply the database key.
+    if (empty($manual)) {
+      $session->fieldValueEquals('source_connection', $expected_source_connection);
+    }
+    else {
+      $session->fieldValueEquals('mysql[host]', $manual['host']);
+      $session->fieldValueEquals('mysql[database]', $manual['database']);
+      $session->fieldValueEquals('mysql[username]', $manual['username']);
+    }
+
+    // Confirm the file paths are correct.
+    $session->fieldValueEquals('d6_source_base_path', $migrate_file_public_path);
+    $session->fieldValueEquals('source_base_path', $migrate_file_public_path);
+    $session->fieldValueEquals('source_private_file_path', $migrate_file_private_path);
+  }
+
+  /**
+   * Data provider for testCredentialForm.
+   */
+  public function providerTestCredentialForm() {
+    return [
+      'no values in settings.php' => [
+        'source_connection' => "",
+        'version' => '7',
+        'manual' => [
+          'host' => '172.18.0.2',
+          'database' => 'drupal7',
+          'username' => 'kate',
+          'password' => 'pwd',
+        ],
+        'databases' => [],
+        'expected_source_connection' => '',
+      ],
+      'single database in settings, migrate' => [
+        'source_connection' => 'migrate',
+        'version' => '7',
+        'manual' => [],
+        'databases' => [
+          'migrate' => [
+            'default' => [
+              'database' => 'drupal7',
+              'username' => 'user',
+              'password' => 'pwd',
+              'prefix' => 'test',
+              'host' => '172.18.0.3',
+              'port' => '3307',
+              'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql',
+              'driver' => 'mysql',
+            ],
+          ],
+        ],
+        'expected_source_connection' => 'migrate',
+      ],
+      'migrate_source_connection not set' => [
+        'source_connection' => '',
+        'version' => '7',
+        'manual' => [],
+        'databases' => [
+          'migrate' => [
+            'default' => [
+              'database' => 'drupal7',
+              'username' => 'user',
+              'password' => 'pwd',
+              'prefix' => 'test',
+              'host' => '172.18.0.3',
+              'port' => '3307',
+              'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql',
+              'driver' => 'mysql',
+            ],
+          ],
+        ],
+        'expected_source_connection' => 'migrate',
+      ],
+      'single database in settings, legacy' => [
+        'source_connection' => 'legacy',
+        'version' => '6',
+        'manual' => [],
+        'databases' => [
+          'legacy' => [
+            'default' => [
+              'database' => 'drupal6',
+              'username' => 'user',
+              'password' => 'pwd',
+              'prefix' => 'test',
+              'host' => '172.18.0.6',
+              'port' => '3307',
+              'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql',
+              'driver' => 'mysql',
+            ],
+          ],
+        ],
+        'expected_source_connection' => 'legacy',
+      ],
+      'two databases in settings' => [
+        'source_connection' => 'source2',
+        'version' => '7',
+        'manual' => [],
+        'databases' => [
+          'migrate' => [
+            'default' => [
+              'database' => 'drupal7',
+              'username' => 'user',
+              'password' => 'pwd',
+              'prefix' => 'test',
+              'host' => '172.18.0.3',
+              'port' => '3307',
+              'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql',
+              'driver' => 'mysql',
+            ],
+          ],
+          'legacy' => [
+            'default' => [
+              'database' => 'site',
+              'username' => 'user',
+              'password' => 'pwd',
+              'prefix' => 'test',
+              'host' => '172.18.0.2',
+              'port' => '3307',
+              'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql',
+              'driver' => 'mysql',
+            ],
+          ],
+        ],
+        'expected_source_connection' => 'migrate',
+      ],
+      'database in settings, but use manual' => [
+        'source_connection' => '',
+        'version' => '7',
+        'manual' => [
+          'host' => '172.18.0.2',
+          'database' => 'drupal7',
+          'username' => 'kate',
+          'password' => 'pwd',
+        ],
+        'databases' => [
+          'legacy' => [
+            'default' => [
+              'database' => 'site',
+              'username' => 'user',
+              'password' => 'pwd',
+              'prefix' => 'test',
+              'host' => '172.18.0.2',
+              'port' => '3307',
+              'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql',
+              'driver' => 'mysql',
+            ],
+          ],
+        ],
+        'expected_source_connection' => '',
+      ],
+    ];
+  }
+
+}
diff --git a/core/modules/mysql/mysql.install b/core/modules/mysql/mysql.install
index 11a098ed5b..42ed7344af 100644
--- a/core/modules/mysql/mysql.install
+++ b/core/modules/mysql/mysql.install
@@ -23,10 +23,11 @@ function mysql_requirements($phase) {
       }
 
       $query = 'SELECT @@SESSION.tx_isolation';
-      // The database variable "tx_isolation" has been removed in MySQL v8.0 and
+      // The database variable "tx_isolation" has been removed in MySQL v8.0.3 and
       // has been replaced by "transaction_isolation".
       // @see https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_tx_isolation
-      if (!$connection->isMariaDb() && version_compare($connection->version(), '8.0.0-AnyName', '>')) {
+      // @see https://dev.mysql.com/doc/refman/8.0/en/added-deprecated-removed.html
+      if (!$connection->isMariaDb() && version_compare($connection->version(), '8.0.2-AnyName', '>')) {
         $query = 'SELECT @@SESSION.transaction_isolation';
       }
 
diff --git a/core/modules/mysql/mysql.module b/core/modules/mysql/mysql.module
index a8572bf865..3a68ca95e9 100644
--- a/core/modules/mysql/mysql.module
+++ b/core/modules/mysql/mysql.module
@@ -15,7 +15,7 @@ function mysql_help($route_name, RouteMatchInterface $route_match) {
     case 'help.page.mysql':
       $output = '';
       $output .= '<h3>' . t('About') . '</h3>';
-      $output .= '<p>' . t('The MySQL module provides the connection between Drupal and a MySQL, MariaDB or equivalent database. For more information, see the <a href=":mysql">online documentation for the MySQL module</a>.', [':mysql' => 'https://www.drupal.org/documentation/modules/mysql']) . '</p>';
+      $output .= '<p>' . t('The MySQL module provides the connection between Drupal and a MySQL, MariaDB or equivalent database. For more information, see the <a href=":mysql">online documentation for the MySQL module</a>.', [':mysql' => 'https://www.drupal.org/docs/core-modules-and-themes/core-modules/mysql-module']) . '</p>';
       return $output;
 
   }
diff --git a/core/modules/mysql/src/Driver/Database/mysql/Connection.php b/core/modules/mysql/src/Driver/Database/mysql/Connection.php
index 910387eb5f..3e8437e8f9 100644
--- a/core/modules/mysql/src/Driver/Database/mysql/Connection.php
+++ b/core/modules/mysql/src/Driver/Database/mysql/Connection.php
@@ -9,6 +9,7 @@
 use Drupal\Core\Database\DatabaseNotFoundException;
 use Drupal\Core\Database\DatabaseException;
 use Drupal\Core\Database\Connection as DatabaseConnection;
+use Drupal\Core\Database\SupportsTemporaryTablesInterface;
 use Drupal\Core\Database\TransactionNoActiveException;
 
 /**
@@ -19,7 +20,7 @@
 /**
  * MySQL implementation of \Drupal\Core\Database\Connection.
  */
-class Connection extends DatabaseConnection {
+class Connection extends DatabaseConnection implements SupportsTemporaryTablesInterface {
 
   /**
    * Error code for "Unknown database" error.
@@ -222,6 +223,15 @@ public function queryRange($query, $from, $count, array $args = [], array $optio
     return $this->query($query . ' LIMIT ' . (int) $from . ', ' . (int) $count, $args, $options);
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  public function queryTemporary($query, array $args = [], array $options = []) {
+    $tablename = 'db_temporary_' . uniqid();
+    $this->query('CREATE TEMPORARY TABLE {' . $tablename . '} Engine=MEMORY ' . $query, $args, $options);
+    return $tablename;
+  }
+
   public function driver() {
     return 'mysql';
   }
diff --git a/core/modules/mysql/src/Driver/Database/mysql/Schema.php b/core/modules/mysql/src/Driver/Database/mysql/Schema.php
index ab937ef2ae..8ffad9fc6b 100644
--- a/core/modules/mysql/src/Driver/Database/mysql/Schema.php
+++ b/core/modules/mysql/src/Driver/Database/mysql/Schema.php
@@ -44,7 +44,7 @@ class Schema extends DatabaseSchema {
   /**
    * Get information about the table and database name from the prefix.
    *
-   * @return
+   * @return array
    *   A keyed array with information about the database, table name and prefix.
    */
   protected function getPrefixInfo($table = 'default', $add_prefix = TRUE) {
@@ -81,15 +81,7 @@ protected function buildTableNameCondition($table_name, $operator = '=', $add_pr
   }
 
   /**
-   * Generate SQL to create a new table from a Drupal schema definition.
-   *
-   * @param $name
-   *   The name of the table to create.
-   * @param $table
-   *   A Schema API table definition array.
-   *
-   * @return
-   *   An array of SQL statements to create the table.
+   * {@inheritdoc}
    */
   protected function createTableSql($name, $table) {
     $info = $this->connection->getConnectionOptions();
diff --git a/core/modules/mysql/tests/src/Kernel/mysql/ConnectionTest.php b/core/modules/mysql/tests/src/Kernel/mysql/ConnectionTest.php
new file mode 100644
index 0000000000..71be9ea513
--- /dev/null
+++ b/core/modules/mysql/tests/src/Kernel/mysql/ConnectionTest.php
@@ -0,0 +1,24 @@
+<?php
+
+namespace Drupal\Tests\mysql\Kernel\mysql;
+
+use Drupal\Core\Database\Database;
+use Drupal\Core\Database\DatabaseExceptionWrapper;
+use Drupal\KernelTests\Core\Database\DriverSpecificDatabaseTestBase;
+
+/**
+ * MySQL-specific connection tests.
+ *
+ * @group Database
+ */
+class ConnectionTest extends DriverSpecificDatabaseTestBase {
+
+  /**
+   * Ensure that you cannot execute multiple statements on MySQL.
+   */
+  public function testMultipleStatementsForNewPhp(): void {
+    $this->expectException(DatabaseExceptionWrapper::class);
+    Database::getConnection('default', 'default')->query('SELECT * FROM {test}; SELECT * FROM {test_people}', [], ['allow_delimiter_in_query' => TRUE]);
+  }
+
+}
diff --git a/core/modules/mysql/tests/src/Kernel/mysql/ConnectionUnitTest.php b/core/modules/mysql/tests/src/Kernel/mysql/ConnectionUnitTest.php
new file mode 100644
index 0000000000..2c394bb625
--- /dev/null
+++ b/core/modules/mysql/tests/src/Kernel/mysql/ConnectionUnitTest.php
@@ -0,0 +1,25 @@
+<?php
+
+namespace Drupal\Tests\mysql\Kernel\mysql;
+
+use Drupal\KernelTests\Core\Database\DriverSpecificConnectionUnitTestBase;
+
+/**
+ * MySQL-specific connection unit tests.
+ *
+ * @group Database
+ */
+class ConnectionUnitTest extends DriverSpecificConnectionUnitTestBase {
+
+  /**
+   * Returns a set of queries specific for MySQL.
+   */
+  protected function getQuery(): array {
+    return [
+      'connection_id' => 'SELECT CONNECTION_ID()',
+      'processlist' => 'SHOW PROCESSLIST',
+      'show_tables' => 'SHOW TABLES',
+    ];
+  }
+
+}
diff --git a/core/modules/system/tests/src/Kernel/Scripts/DbDumpCommandTest.php b/core/modules/mysql/tests/src/Kernel/mysql/Console/DbDumpCommandTest.php
similarity index 89%
rename from core/modules/system/tests/src/Kernel/Scripts/DbDumpCommandTest.php
rename to core/modules/mysql/tests/src/Kernel/mysql/Console/DbDumpCommandTest.php
index fb01a73f1f..5ebdd21c0c 100644
--- a/core/modules/system/tests/src/Kernel/Scripts/DbDumpCommandTest.php
+++ b/core/modules/mysql/tests/src/Kernel/mysql/Console/DbDumpCommandTest.php
@@ -1,10 +1,9 @@
 <?php
 
-namespace Drupal\Tests\system\Kernel\Scripts;
+namespace Drupal\Tests\mysql\Kernel\mysql\Console;
 
 use Drupal\Core\Command\DbDumpCommand;
-use Drupal\Core\Database\Database;
-use Drupal\KernelTests\KernelTestBase;
+use Drupal\KernelTests\Core\Database\DriverSpecificKernelTestBase;
 use Symfony\Component\Console\Tester\CommandTester;
 
 /**
@@ -12,7 +11,7 @@
  *
  * @group console
  */
-class DbDumpCommandTest extends KernelTestBase {
+class DbDumpCommandTest extends DriverSpecificKernelTestBase {
 
   /**
    * {@inheritdoc}
@@ -25,11 +24,6 @@ class DbDumpCommandTest extends KernelTestBase {
   protected function setUp(): void {
     parent::setUp();
 
-    // Determine what database backend is running, and set the skip flag.
-    if (Database::getConnection()->databaseType() !== 'mysql') {
-      $this->markTestSkipped("Skipping test since the DbDumpCommand is currently only compatible with MySQL");
-    }
-
     // Rebuild the router to ensure a routing table.
     \Drupal::service('router.builder')->rebuild();
 
diff --git a/core/modules/mysql/tests/src/Kernel/mysql/DatabaseExceptionWrapperTest.php b/core/modules/mysql/tests/src/Kernel/mysql/DatabaseExceptionWrapperTest.php
new file mode 100644
index 0000000000..1b2999efd7
--- /dev/null
+++ b/core/modules/mysql/tests/src/Kernel/mysql/DatabaseExceptionWrapperTest.php
@@ -0,0 +1,43 @@
+<?php
+
+namespace Drupal\Tests\mysql\Kernel\mysql;
+
+use Drupal\Core\Database\DatabaseExceptionWrapper;
+use Drupal\Core\Database\Database;
+use Drupal\KernelTests\Core\Database\DriverSpecificKernelTestBase;
+
+/**
+ * Tests exceptions thrown by queries.
+ *
+ * @group Database
+ */
+class DatabaseExceptionWrapperTest extends DriverSpecificKernelTestBase {
+
+  /**
+   * Tests Connection::prepareStatement exceptions on preparation.
+   *
+   * Core database drivers use PDO emulated statements or the StatementPrefetch
+   * class, which defer the statement check to the moment of the execution. In
+   * order to test a failure at preparation time, we have to force the
+   * connection not to emulate statement preparation. Still, this is only valid
+   * for the MySql driver.
+   */
+  public function testPrepareStatementFailOnPreparation() {
+    $connection_info = Database::getConnectionInfo('default');
+    $connection_info['default']['pdo'][\PDO::ATTR_EMULATE_PREPARES] = FALSE;
+    Database::addConnectionInfo('default', 'foo', $connection_info['default']);
+    $foo_connection = Database::getConnection('foo', 'default');
+    $this->expectException(DatabaseExceptionWrapper::class);
+    $stmt = $foo_connection->prepareStatement('bananas', []);
+  }
+
+  /**
+   * Tests Connection::prepareStatement exception on execution.
+   */
+  public function testPrepareStatementFailOnExecution() {
+    $this->expectException(\PDOException::class);
+    $stmt = $this->connection->prepareStatement('bananas', []);
+    $stmt->execute();
+  }
+
+}
diff --git a/core/tests/Drupal/KernelTests/Core/Command/DbDumpTest.php b/core/modules/mysql/tests/src/Kernel/mysql/DbDumpTest.php
similarity index 96%
rename from core/tests/Drupal/KernelTests/Core/Command/DbDumpTest.php
rename to core/modules/mysql/tests/src/Kernel/mysql/DbDumpTest.php
index 3b19ba5542..e8b3ae4eb9 100644
--- a/core/tests/Drupal/KernelTests/Core/Command/DbDumpTest.php
+++ b/core/modules/mysql/tests/src/Kernel/mysql/DbDumpTest.php
@@ -1,13 +1,13 @@
 <?php
 
-namespace Drupal\KernelTests\Core\Command;
+namespace Drupal\Tests\mysql\Kernel\mysql;
 
 use Drupal\Component\Render\FormattableMarkup;
 use Drupal\Core\Command\DbDumpApplication;
 use Drupal\Core\Config\DatabaseStorage;
 use Drupal\Core\Database\Database;
 use Drupal\Core\DependencyInjection\ContainerBuilder;
-use Drupal\KernelTests\KernelTestBase;
+use Drupal\KernelTests\Core\Database\DriverSpecificKernelTestBase;
 use Drupal\Tests\Traits\Core\PathAliasTestTrait;
 use Drupal\user\Entity\User;
 use Symfony\Component\Console\Tester\CommandTester;
@@ -18,7 +18,7 @@
  *
  * @group Update
  */
-class DbDumpTest extends KernelTestBase {
+class DbDumpTest extends DriverSpecificKernelTestBase {
 
   use PathAliasTestTrait;
 
@@ -84,10 +84,6 @@ public function register(ContainerBuilder $container) {
   protected function setUp(): void {
     parent::setUp();
 
-    if (Database::getConnection()->databaseType() !== 'mysql') {
-      $this->markTestSkipped("Skipping test since the DbDumpCommand is currently only compatible with MySql");
-    }
-
     // Create some schemas so our export contains tables.
     $this->installSchema('system', ['sessions']);
     $this->installSchema('dblog', ['watchdog']);
diff --git a/core/tests/Drupal/KernelTests/Core/Database/LargeQueryTest.php b/core/modules/mysql/tests/src/Kernel/mysql/LargeQueryTest.php
similarity index 83%
rename from core/tests/Drupal/KernelTests/Core/Database/LargeQueryTest.php
rename to core/modules/mysql/tests/src/Kernel/mysql/LargeQueryTest.php
index 869f85ebc7..6ef64db42b 100644
--- a/core/tests/Drupal/KernelTests/Core/Database/LargeQueryTest.php
+++ b/core/modules/mysql/tests/src/Kernel/mysql/LargeQueryTest.php
@@ -1,27 +1,23 @@
 <?php
 
-namespace Drupal\KernelTests\Core\Database;
+namespace Drupal\Tests\mysql\Kernel\mysql;
 
 use Drupal\Component\Utility\Environment;
 use Drupal\Core\Database\Database;
 use Drupal\Core\Database\DatabaseException;
+use Drupal\KernelTests\Core\Database\DriverSpecificDatabaseTestBase;
 
 /**
  * Tests handling of large queries.
  *
  * @group Database
  */
-class LargeQueryTest extends DatabaseTestBase {
+class LargeQueryTest extends DriverSpecificDatabaseTestBase {
 
   /**
    * Tests truncation of messages when max_allowed_packet exception occurs.
    */
-  public function testMaxAllowedPacketQueryTruncating() {
-    // Only run this test for the 'mysql' driver.
-    $driver = $this->connection->driver();
-    if ($driver !== 'mysql') {
-      $this->markTestSkipped("MySql tests can not run for driver '$driver'.");
-    }
+  public function testMaxAllowedPacketQueryTruncating(): void {
     // The max_allowed_packet value is configured per database instance.
     // Retrieve the max_allowed_packet value from the current instance and
     // check if PHP is configured with sufficient allowed memory to be able
diff --git a/core/tests/Drupal/KernelTests/Core/Database/MysqlDriverLegacyTest.php b/core/modules/mysql/tests/src/Kernel/mysql/MysqlDriverLegacyTest.php
similarity index 90%
rename from core/tests/Drupal/KernelTests/Core/Database/MysqlDriverLegacyTest.php
rename to core/modules/mysql/tests/src/Kernel/mysql/MysqlDriverLegacyTest.php
index 549c1986c0..774cc941df 100644
--- a/core/tests/Drupal/KernelTests/Core/Database/MysqlDriverLegacyTest.php
+++ b/core/modules/mysql/tests/src/Kernel/mysql/MysqlDriverLegacyTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\KernelTests\Core\Database;
+namespace Drupal\Tests\mysql\Kernel\mysql;
 
 use Drupal\Core\Database\Driver\mysql\Connection;
 use Drupal\Core\Database\Driver\mysql\ExceptionHandler;
@@ -8,6 +8,7 @@
 use Drupal\Core\Database\Driver\mysql\Insert;
 use Drupal\Core\Database\Driver\mysql\Schema;
 use Drupal\Core\Database\Driver\mysql\Upsert;
+use Drupal\KernelTests\Core\Database\DriverSpecificDatabaseTestBase;
 use Drupal\Tests\Core\Database\Stub\StubPDO;
 
 /**
@@ -16,17 +17,7 @@
  * @group legacy
  * @group Database
  */
-class MysqlDriverLegacyTest extends DatabaseTestBase {
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function setUp(): void {
-    parent::setUp();
-    if ($this->connection->driver() !== 'mysql') {
-      $this->markTestSkipped('Only test the deprecation message for the MySQL database driver classes in Core.');
-    }
-  }
+class MysqlDriverLegacyTest extends DriverSpecificDatabaseTestBase {
 
   /**
    * @covers Drupal\Core\Database\Driver\mysql\Install\Tasks
diff --git a/core/modules/mysql/tests/src/Kernel/mysql/NextIdTest.php b/core/modules/mysql/tests/src/Kernel/mysql/NextIdTest.php
new file mode 100644
index 0000000000..ea7f3523c4
--- /dev/null
+++ b/core/modules/mysql/tests/src/Kernel/mysql/NextIdTest.php
@@ -0,0 +1,58 @@
+<?php
+
+namespace Drupal\Tests\mysql\Kernel\mysql;
+
+use Drupal\Core\Database\Database;
+use Drupal\KernelTests\Core\Database\DriverSpecificDatabaseTestBase;
+
+/**
+ * Tests the sequences API.
+ *
+ * @group Database
+ */
+class NextIdTest extends DriverSpecificDatabaseTestBase {
+
+  /**
+   * The modules to enable.
+   *
+   * @var array
+   */
+  protected static $modules = ['database_test', 'system'];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp(): void {
+    parent::setUp();
+    $this->installSchema('system', 'sequences');
+  }
+
+  /**
+   * Tests that sequences table clear up works when a connection is closed.
+   *
+   * @see \Drupal\mysql\Driver\Database\mysql\Connection::__destruct()
+   */
+  public function testDbNextIdClosedConnection() {
+    // Create an additional connection to test closing the connection.
+    $connection_info = Database::getConnectionInfo();
+    Database::addConnectionInfo('default', 'next_id', $connection_info['default']);
+
+    // Get a few IDs to ensure there the clean up needs to run and there is more
+    // than one row.
+    Database::getConnection('next_id')->nextId();
+    Database::getConnection('next_id')->nextId();
+
+    // At this point the sequences table should contain unnecessary rows.
+    $count = $this->connection->select('sequences')->countQuery()->execute()->fetchField();
+    $this->assertGreaterThan(1, $count);
+
+    // Close the connection.
+    Database::closeConnection('next_id');
+
+    // Test that \Drupal\mysql\Driver\Database\mysql\Connection::__destruct()
+    // successfully trims the sequences table if the connection is closed.
+    $count = $this->connection->select('sequences')->countQuery()->execute()->fetchField();
+    $this->assertEquals(1, $count);
+  }
+
+}
diff --git a/core/tests/Drupal/KernelTests/Core/Database/PrefixInfoTest.php b/core/modules/mysql/tests/src/Kernel/mysql/PrefixInfoTest.php
similarity index 89%
rename from core/tests/Drupal/KernelTests/Core/Database/PrefixInfoTest.php
rename to core/modules/mysql/tests/src/Kernel/mysql/PrefixInfoTest.php
index 2afec6de82..929cb64907 100644
--- a/core/tests/Drupal/KernelTests/Core/Database/PrefixInfoTest.php
+++ b/core/modules/mysql/tests/src/Kernel/mysql/PrefixInfoTest.php
@@ -1,15 +1,16 @@
 <?php
 
-namespace Drupal\KernelTests\Core\Database;
+namespace Drupal\Tests\mysql\Kernel\mysql;
 
 use Drupal\Core\Database\Database;
+use Drupal\KernelTests\Core\Database\DriverSpecificKernelTestBase;
 
 /**
  * Tests that the prefix info for a database schema is correct.
  *
  * @group Database
  */
-class PrefixInfoTest extends DatabaseTestBase {
+class PrefixInfoTest extends DriverSpecificKernelTestBase {
 
   /**
    * Tests that DatabaseSchema::getPrefixInfo() returns the right database.
@@ -21,11 +22,6 @@ class PrefixInfoTest extends DatabaseTestBase {
    * set in the return array.
    */
   public function testGetPrefixInfo() {
-    // Only run this test for the 'mysql' driver.
-    $driver = $this->connection->driver();
-    if ($driver !== 'mysql') {
-      $this->markTestSkipped("MySql tests can not run for driver '$driver'.");
-    }
     $connection_info = Database::getConnectionInfo('default');
 
     // Copy the default connection info to the 'extra' key.
diff --git a/core/modules/mysql/tests/src/Kernel/mysql/SchemaTest.php b/core/modules/mysql/tests/src/Kernel/mysql/SchemaTest.php
new file mode 100644
index 0000000000..f08a04df89
--- /dev/null
+++ b/core/modules/mysql/tests/src/Kernel/mysql/SchemaTest.php
@@ -0,0 +1,231 @@
+<?php
+
+namespace Drupal\Tests\mysql\Kernel\mysql;
+
+use Drupal\Component\Utility\Unicode;
+use Drupal\Core\Database\SchemaException;
+use Drupal\Core\Database\SchemaObjectDoesNotExistException;
+use Drupal\Core\Database\SchemaObjectExistsException;
+use Drupal\KernelTests\Core\Database\DriverSpecificSchemaTestBase;
+
+/**
+ * Tests schema API for the MySQL driver.
+ *
+ * @group Database
+ */
+class SchemaTest extends DriverSpecificSchemaTestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function checkSchemaComment(string $description, string $table, string $column = NULL): void {
+    $comment = $this->schema->getComment($table, $column);
+    $max_length = $column ? 255 : 60;
+    $description = Unicode::truncate($description, $max_length, TRUE, TRUE);
+    $this->assertSame($description, $comment, 'The comment matches the schema description.');
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function assertCollation(): void {
+    // Make sure that varchar fields have the correct collations.
+    $columns = $this->connection->query('SHOW FULL COLUMNS FROM {test_table}');
+    foreach ($columns as $column) {
+      if ($column->Field == 'test_field_string') {
+        $string_check = $column->Collation;
+      }
+      if ($column->Field == 'test_field_string_ascii') {
+        $string_ascii_check = $column->Collation;
+      }
+    }
+    $this->assertMatchesRegularExpression('#^(utf8mb4_general_ci|utf8mb4_0900_ai_ci)$#', $string_check, 'test_field_string should have a utf8mb4_general_ci or a utf8mb4_0900_ai_ci collation, but it has not.');
+    $this->assertSame('ascii_general_ci', $string_ascii_check, 'test_field_string_ascii should have a ascii_general_ci collation, but it has not.');
+  }
+
+  /**
+   * Tests that indexes on string fields are limited to 191 characters on MySQL.
+   *
+   * @see \Drupal\mysql\Driver\Database\mysql\Schema::getNormalizedIndexes()
+   */
+  public function testIndexLength(): void {
+    $table_specification = [
+      'fields' => [
+        'id'  => [
+          'type' => 'int',
+          'default' => NULL,
+        ],
+        'test_field_text'  => [
+          'type' => 'text',
+          'not null' => TRUE,
+        ],
+        'test_field_string_long'  => [
+          'type' => 'varchar',
+          'length' => 255,
+          'not null' => TRUE,
+        ],
+        'test_field_string_ascii_long'  => [
+          'type' => 'varchar_ascii',
+          'length' => 255,
+        ],
+        'test_field_string_short'  => [
+          'type' => 'varchar',
+          'length' => 128,
+          'not null' => TRUE,
+        ],
+      ],
+      'indexes' => [
+        'test_regular' => [
+          'test_field_text',
+          'test_field_string_long',
+          'test_field_string_ascii_long',
+          'test_field_string_short',
+        ],
+        'test_length' => [
+          ['test_field_text', 128],
+          ['test_field_string_long', 128],
+          ['test_field_string_ascii_long', 128],
+          ['test_field_string_short', 128],
+        ],
+        'test_mixed' => [
+          ['test_field_text', 200],
+          'test_field_string_long',
+          ['test_field_string_ascii_long', 200],
+          'test_field_string_short',
+        ],
+      ],
+    ];
+    $this->schema->createTable('test_table_index_length', $table_specification);
+
+    // Ensure expected exception thrown when adding index with missing info.
+    $expected_exception_message = "MySQL needs the 'test_field_text' field specification in order to normalize the 'test_regular' index";
+    $missing_field_spec = $table_specification;
+    unset($missing_field_spec['fields']['test_field_text']);
+    try {
+      $this->schema->addIndex('test_table_index_length', 'test_separate', [['test_field_text', 200]], $missing_field_spec);
+      $this->fail('SchemaException not thrown when adding index with missing information.');
+    }
+    catch (SchemaException $e) {
+      $this->assertEquals($expected_exception_message, $e->getMessage());
+    }
+
+    // Add a separate index.
+    $this->schema->addIndex('test_table_index_length', 'test_separate', [['test_field_text', 200]], $table_specification);
+    $table_specification_with_new_index = $table_specification;
+    $table_specification_with_new_index['indexes']['test_separate'] = [['test_field_text', 200]];
+
+    // Ensure that the exceptions of addIndex are thrown as expected.
+    try {
+      $this->schema->addIndex('test_table_index_length', 'test_separate', [['test_field_text', 200]], $table_specification);
+      $this->fail('\Drupal\Core\Database\SchemaObjectExistsException exception missed.');
+    }
+    catch (SchemaObjectExistsException $e) {
+      // Expected exception; just continue testing.
+    }
+
+    try {
+      $this->schema->addIndex('test_table_non_existing', 'test_separate', [['test_field_text', 200]], $table_specification);
+      $this->fail('\Drupal\Core\Database\SchemaObjectDoesNotExistException exception missed.');
+    }
+    catch (SchemaObjectDoesNotExistException $e) {
+      // Expected exception; just continue testing.
+    }
+
+    // Get index information.
+    $results = $this->connection->query('SHOW INDEX FROM {test_table_index_length}');
+    $expected_lengths = [
+      'test_regular' => [
+        'test_field_text' => 191,
+        'test_field_string_long' => 191,
+        'test_field_string_ascii_long' => NULL,
+        'test_field_string_short' => NULL,
+      ],
+      'test_length' => [
+        'test_field_text' => 128,
+        'test_field_string_long' => 128,
+        'test_field_string_ascii_long' => 128,
+        'test_field_string_short' => NULL,
+      ],
+      'test_mixed' => [
+        'test_field_text' => 191,
+        'test_field_string_long' => 191,
+        'test_field_string_ascii_long' => 200,
+        'test_field_string_short' => NULL,
+      ],
+      'test_separate' => [
+        'test_field_text' => 191,
+      ],
+    ];
+
+    // Count the number of columns defined in the indexes.
+    $column_count = 0;
+    foreach ($table_specification_with_new_index['indexes'] as $index) {
+      foreach ($index as $field) {
+        $column_count++;
+      }
+    }
+    $test_count = 0;
+    foreach ($results as $result) {
+      $this->assertEquals($expected_lengths[$result->Key_name][$result->Column_name], $result->Sub_part, 'Index length matches expected value.');
+      $test_count++;
+    }
+    $this->assertEquals($column_count, $test_count, 'Number of tests matches expected value.');
+  }
+
+  /**
+   * @covers \Drupal\mysql\Driver\Database\mysql\Schema::introspectIndexSchema
+   */
+  public function testIntrospectIndexSchema(): void {
+    $table_specification = [
+      'fields' => [
+        'id'  => [
+          'type' => 'int',
+          'not null' => TRUE,
+          'default' => 0,
+        ],
+        'test_field_1'  => [
+          'type' => 'int',
+          'not null' => TRUE,
+          'default' => 0,
+        ],
+        'test_field_2'  => [
+          'type' => 'int',
+          'default' => 0,
+        ],
+        'test_field_3'  => [
+          'type' => 'int',
+          'default' => 0,
+        ],
+        'test_field_4'  => [
+          'type' => 'int',
+          'default' => 0,
+        ],
+        'test_field_5'  => [
+          'type' => 'int',
+          'default' => 0,
+        ],
+      ],
+      'primary key' => ['id', 'test_field_1'],
+      'unique keys' => [
+        'test_field_2' => ['test_field_2'],
+        'test_field_3_test_field_4' => ['test_field_3', 'test_field_4'],
+      ],
+      'indexes' => [
+        'test_field_4' => ['test_field_4'],
+        'test_field_4_test_field_5' => ['test_field_4', 'test_field_5'],
+      ],
+    ];
+
+    $table_name = strtolower($this->getRandomGenerator()->name());
+    $this->schema->createTable($table_name, $table_specification);
+
+    unset($table_specification['fields']);
+
+    $introspect_index_schema = new \ReflectionMethod(get_class($this->schema), 'introspectIndexSchema');
+    $introspect_index_schema->setAccessible(TRUE);
+    $index_schema = $introspect_index_schema->invoke($this->schema, $table_name);
+
+    $this->assertEquals($table_specification, $index_schema);
+  }
+
+}
diff --git a/core/tests/Drupal/KernelTests/Core/Database/SqlModeTest.php b/core/modules/mysql/tests/src/Kernel/mysql/SqlModeTest.php
similarity index 73%
rename from core/tests/Drupal/KernelTests/Core/Database/SqlModeTest.php
rename to core/modules/mysql/tests/src/Kernel/mysql/SqlModeTest.php
index 49dd61373d..cbda94cf72 100644
--- a/core/tests/Drupal/KernelTests/Core/Database/SqlModeTest.php
+++ b/core/modules/mysql/tests/src/Kernel/mysql/SqlModeTest.php
@@ -1,29 +1,20 @@
 <?php
 
-namespace Drupal\KernelTests\Core\Database;
+namespace Drupal\Tests\mysql\Kernel\mysql;
+
+use Drupal\KernelTests\Core\Database\DriverSpecificDatabaseTestBase;
 
 /**
  * Tests compatibility of the MySQL driver with various sql_mode options.
  *
  * @group Database
  */
-class SqlModeTest extends DatabaseTestBase {
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function setUp(): void {
-    parent::setUp();
-
-    if ($this->connection->databaseType() !== 'mysql') {
-      $this->markTestSkipped("Skipping test since sql_mode is a MySQL-only feature.");
-    }
-  }
+class SqlModeTest extends DriverSpecificDatabaseTestBase {
 
   /**
    * Tests quoting identifiers in queries.
    */
-  public function testQuotingIdentifiers() {
+  public function testQuotingIdentifiers(): void {
     // Use SQL-reserved words for both the table and column names.
     $query = $this->connection->query('SELECT [update] FROM {select}');
     $this->assertEquals('Update value 1', $query->fetchObject()->update);
diff --git a/core/modules/mysql/tests/src/Kernel/mysql/TemporaryQueryTest.php b/core/modules/mysql/tests/src/Kernel/mysql/TemporaryQueryTest.php
new file mode 100644
index 0000000000..484ccc7522
--- /dev/null
+++ b/core/modules/mysql/tests/src/Kernel/mysql/TemporaryQueryTest.php
@@ -0,0 +1,39 @@
+<?php
+
+namespace Drupal\Tests\mysql\Kernel\mysql;
+
+use Drupal\KernelTests\Core\Database\TemporaryQueryTestBase;
+
+/**
+ * Tests the temporary query functionality.
+ *
+ * @group Database
+ */
+class TemporaryQueryTest extends TemporaryQueryTestBase {
+
+  /**
+   * Confirms that temporary tables work.
+   */
+  public function testTemporaryQuery() {
+    parent::testTemporaryQuery();
+
+    $connection = $this->getConnection();
+
+    $table_name_test = $connection->queryTemporary('SELECT [name] FROM {test}', []);
+
+    // Assert that the table is indeed a temporary one.
+    $temporary_table_info = $connection->query("SHOW CREATE TABLE {" . $table_name_test . "}")->fetchAssoc();
+    $this->stringContains($temporary_table_info["Create Table"], "CREATE TEMPORARY TABLE");
+
+    // Assert that both have the same field names.
+    $normal_table_fields = $connection->query("SELECT * FROM {test}")->fetch();
+    $temp_table_name = $connection->queryTemporary('SELECT * FROM {test}');
+    $temp_table_fields = $connection->query("SELECT * FROM {" . $temp_table_name . "}")->fetch();
+
+    $normal_table_fields = array_keys(get_object_vars($normal_table_fields));
+    $temp_table_fields = array_keys(get_object_vars($temp_table_fields));
+
+    $this->assertEmpty(array_diff($normal_table_fields, $temp_table_fields));
+  }
+
+}
diff --git a/core/tests/Drupal/Tests/Core/Database/Driver/mysql/ConnectionTest.php b/core/modules/mysql/tests/src/Unit/ConnectionTest.php
similarity index 98%
rename from core/tests/Drupal/Tests/Core/Database/Driver/mysql/ConnectionTest.php
rename to core/modules/mysql/tests/src/Unit/ConnectionTest.php
index fcfd6b0886..878d7672ad 100644
--- a/core/tests/Drupal/Tests/Core/Database/Driver/mysql/ConnectionTest.php
+++ b/core/modules/mysql/tests/src/Unit/ConnectionTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\Tests\Core\Database\Driver\mysql;
+namespace Drupal\Tests\mysql\Unit;
 
 use Drupal\mysql\Driver\Database\mysql\Connection;
 use Drupal\Tests\UnitTestCase;
diff --git a/core/tests/Drupal/Tests/Core/Database/Driver/mysql/install/TasksTest.php b/core/modules/mysql/tests/src/Unit/InstallTasksTest.php
similarity index 96%
rename from core/tests/Drupal/Tests/Core/Database/Driver/mysql/install/TasksTest.php
rename to core/modules/mysql/tests/src/Unit/InstallTasksTest.php
index b8b6915aea..f0cb3c88bf 100644
--- a/core/tests/Drupal/Tests/Core/Database/Driver/mysql/install/TasksTest.php
+++ b/core/modules/mysql/tests/src/Unit/InstallTasksTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\Tests\Core\Database\Driver\mysql\install;
+namespace Drupal\Tests\mysql\Unit;
 
 use Drupal\mysql\Driver\Database\mysql\Connection;
 use Drupal\mysql\Driver\Database\mysql\Install\Tasks;
@@ -12,7 +12,7 @@
  * @coversDefaultClass \Drupal\mysql\Driver\Database\mysql\Install\Tasks
  * @group Database
  */
-class TasksTest extends UnitTestCase {
+class InstallTasksTest extends UnitTestCase {
 
   /**
    * A connection object prophecy.
diff --git a/core/modules/node/node.api.php b/core/modules/node/node.api.php
index b0006cf8cd..face0558d2 100644
--- a/core/modules/node/node.api.php
+++ b/core/modules/node/node.api.php
@@ -63,8 +63,6 @@
  * sure to restore your {node_access} record after node_access_rebuild() is
  * called.
  *
- * For a detailed example, see node_access_example.module.
- *
  * @param \Drupal\Core\Session\AccountInterface $account
  *   The account object whose grants are requested.
  * @param string $op
@@ -147,7 +145,7 @@ function hook_node_grants(\Drupal\Core\Session\AccountInterface $account, $op) {
  * @param \Drupal\node\NodeInterface $node
  *   The node that has just been saved.
  *
- * @return
+ * @return array|null
  *   An array of grants as defined above.
  *
  * @see hook_node_access_records_alter()
diff --git a/core/modules/node/node.module b/core/modules/node/node.module
index 1a4b90e8f1..eb3050e82f 100644
--- a/core/modules/node/node.module
+++ b/core/modules/node/node.module
@@ -330,7 +330,7 @@ function node_entity_extra_field_info() {
  * @param string $new_id
  *   The new node type of the nodes.
  *
- * @return
+ * @return int
  *   The number of nodes whose node type field was modified.
  */
 function node_type_update_nodes($old_id, $new_id) {
@@ -813,9 +813,6 @@ function node_form_system_themes_admin_form_submit($form, FormStateInterface $fo
  * Note also that access to create nodes is handled by
  * hook_ENTITY_TYPE_create_access().
  *
- * To see how to write a node access module of your own, see
- * node_access_example.module.
- *
  * @see \Drupal\node\NodeAccessControlHandler
  */
 
@@ -893,7 +890,7 @@ function node_access_grants($op, AccountInterface $account) {
  *   (optional) The user object for the user whose access is being checked. If
  *   omitted, the current user is used. Defaults to NULL.
  *
- * @return
+ * @return bool
  *   TRUE if 'view' access to all nodes is granted, FALSE otherwise.
  *
  * @see hook_node_grants()
diff --git a/core/modules/node/src/Controller/NodeController.php b/core/modules/node/src/Controller/NodeController.php
index ed80d7ced7..f5449802da 100644
--- a/core/modules/node/src/Controller/NodeController.php
+++ b/core/modules/node/src/Controller/NodeController.php
@@ -230,8 +230,8 @@ public function revisionOverview(NodeInterface $node) {
             $links['revert'] = [
               'title' => $vid < $node->getRevisionId() ? $this->t('Revert') : $this->t('Set as current revision'),
               'url' => $has_translations ?
-                Url::fromRoute('node.revision_revert_translation_confirm', ['node' => $node->id(), 'node_revision' => $vid, 'langcode' => $langcode]) :
-                Url::fromRoute('node.revision_revert_confirm', ['node' => $node->id(), 'node_revision' => $vid]),
+              Url::fromRoute('node.revision_revert_translation_confirm', ['node' => $node->id(), 'node_revision' => $vid, 'langcode' => $langcode]) :
+              Url::fromRoute('node.revision_revert_confirm', ['node' => $node->id(), 'node_revision' => $vid]),
             ];
           }
 
diff --git a/core/modules/node/src/NodeGrantDatabaseStorage.php b/core/modules/node/src/NodeGrantDatabaseStorage.php
index 4718a7c876..66ab73f696 100644
--- a/core/modules/node/src/NodeGrantDatabaseStorage.php
+++ b/core/modules/node/src/NodeGrantDatabaseStorage.php
@@ -256,13 +256,13 @@ public function delete() {
   public function writeDefault() {
     $this->database->insert('node_access')
       ->fields([
-          'nid' => 0,
-          'realm' => 'all',
-          'gid' => 0,
-          'grant_view' => 1,
-          'grant_update' => 0,
-          'grant_delete' => 0,
-        ])
+        'nid' => 0,
+        'realm' => 'all',
+        'gid' => 0,
+        'grant_view' => 1,
+        'grant_update' => 0,
+        'grant_delete' => 0,
+      ])
       ->execute();
   }
 
diff --git a/core/modules/node/src/NodeTypeListBuilder.php b/core/modules/node/src/NodeTypeListBuilder.php
index 870729891a..c99f3a545c 100644
--- a/core/modules/node/src/NodeTypeListBuilder.php
+++ b/core/modules/node/src/NodeTypeListBuilder.php
@@ -56,8 +56,8 @@ public function getDefaultOperations(EntityInterface $entity) {
   public function render() {
     $build = parent::render();
     $build['table']['#empty'] = $this->t('No content types available. <a href=":link">Add content type</a>.', [
-        ':link' => Url::fromRoute('node.type_add')->toString(),
-      ]);
+      ':link' => Url::fromRoute('node.type_add')->toString(),
+    ]);
     return $build;
   }
 
diff --git a/core/modules/node/src/Plugin/Action/AssignOwnerNode.php b/core/modules/node/src/Plugin/Action/AssignOwnerNode.php
index ae9a7402b6..287dcb0189 100644
--- a/core/modules/node/src/Plugin/Action/AssignOwnerNode.php
+++ b/core/modules/node/src/Plugin/Action/AssignOwnerNode.php
@@ -76,7 +76,7 @@ public function defaultConfiguration() {
    * {@inheritdoc}
    */
   public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
-    $description = t('The username of the user to which you would like to assign ownership.');
+    $description = $this->t('The username of the user to which you would like to assign ownership.');
     $count = $this->connection->query("SELECT COUNT(*) FROM {users}")->fetchField();
 
     // Use dropdown for fewer than 200 users; textbox for more than that.
@@ -88,7 +88,7 @@ public function buildConfigurationForm(array $form, FormStateInterface $form_sta
       }
       $form['owner_uid'] = [
         '#type' => 'select',
-        '#title' => t('Username'),
+        '#title' => $this->t('Username'),
         '#default_value' => $this->configuration['owner_uid'],
         '#options' => $options,
         '#description' => $description,
@@ -97,7 +97,7 @@ public function buildConfigurationForm(array $form, FormStateInterface $form_sta
     else {
       $form['owner_uid'] = [
         '#type' => 'entity_autocomplete',
-        '#title' => t('Username'),
+        '#title' => $this->t('Username'),
         '#target_type' => 'user',
         '#selection_settings' => [
           'include_anonymous' => FALSE,
@@ -119,7 +119,7 @@ public function buildConfigurationForm(array $form, FormStateInterface $form_sta
   public function validateConfigurationForm(array &$form, FormStateInterface $form_state) {
     $exists = (bool) $this->connection->queryRange('SELECT 1 FROM {users_field_data} WHERE [uid] = :uid AND [default_langcode] = 1', 0, 1, [':uid' => $form_state->getValue('owner_uid')])->fetchField();
     if (!$exists) {
-      $form_state->setErrorByName('owner_uid', t('Enter a valid username.'));
+      $form_state->setErrorByName('owner_uid', $this->t('Enter a valid username.'));
     }
   }
 
diff --git a/core/modules/node/src/Plugin/Action/UnpublishByKeywordNode.php b/core/modules/node/src/Plugin/Action/UnpublishByKeywordNode.php
index 94abf8b634..42f344d52c 100644
--- a/core/modules/node/src/Plugin/Action/UnpublishByKeywordNode.php
+++ b/core/modules/node/src/Plugin/Action/UnpublishByKeywordNode.php
@@ -49,9 +49,9 @@ public function defaultConfiguration() {
    */
   public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
     $form['keywords'] = [
-      '#title' => t('Keywords'),
+      '#title' => $this->t('Keywords'),
       '#type' => 'textarea',
-      '#description' => t('The content will be unpublished if it contains any of the phrases above. Use a case-sensitive, comma-separated list of phrases. Example: funny, bungee jumping, "Company, Inc."'),
+      '#description' => $this->t('The content will be unpublished if it contains any of the phrases above. Use a case-sensitive, comma-separated list of phrases. Example: funny, bungee jumping, "Company, Inc."'),
       '#default_value' => Tags::implode($this->configuration['keywords']),
     ];
     return $form;
diff --git a/core/modules/node/src/Plugin/Search/NodeSearch.php b/core/modules/node/src/Plugin/Search/NodeSearch.php
index 0342c5f01d..1f6e166530 100644
--- a/core/modules/node/src/Plugin/Search/NodeSearch.php
+++ b/core/modules/node/src/Plugin/Search/NodeSearch.php
@@ -584,14 +584,14 @@ public function searchFormAlter(array &$form, FormStateInterface $form_state) {
     // Add advanced search keyword-related boxes.
     $form['advanced'] = [
       '#type' => 'details',
-      '#title' => t('Advanced search'),
+      '#title' => $this->t('Advanced search'),
       '#attributes' => ['class' => ['search-advanced']],
       '#access' => $this->account && $this->account->hasPermission('use advanced search'),
       '#open' => $used_advanced,
     ];
     $form['advanced']['keywords-fieldset'] = [
       '#type' => 'fieldset',
-      '#title' => t('Keywords'),
+      '#title' => $this->t('Keywords'),
     ];
 
     $form['advanced']['keywords'] = [
@@ -601,7 +601,7 @@ public function searchFormAlter(array &$form, FormStateInterface $form_state) {
 
     $form['advanced']['keywords-fieldset']['keywords']['or'] = [
       '#type' => 'textfield',
-      '#title' => t('Containing any of the words'),
+      '#title' => $this->t('Containing any of the words'),
       '#size' => 30,
       '#maxlength' => 255,
       '#default_value' => $defaults['or'] ?? '',
@@ -609,7 +609,7 @@ public function searchFormAlter(array &$form, FormStateInterface $form_state) {
 
     $form['advanced']['keywords-fieldset']['keywords']['phrase'] = [
       '#type' => 'textfield',
-      '#title' => t('Containing the phrase'),
+      '#title' => $this->t('Containing the phrase'),
       '#size' => 30,
       '#maxlength' => 255,
       '#default_value' => $defaults['phrase'] ?? '',
@@ -617,7 +617,7 @@ public function searchFormAlter(array &$form, FormStateInterface $form_state) {
 
     $form['advanced']['keywords-fieldset']['keywords']['negative'] = [
       '#type' => 'textfield',
-      '#title' => t('Containing none of the words'),
+      '#title' => $this->t('Containing none of the words'),
       '#size' => 30,
       '#maxlength' => 255,
       '#default_value' => $defaults['negative'] ?? '',
@@ -627,11 +627,11 @@ public function searchFormAlter(array &$form, FormStateInterface $form_state) {
     $types = array_map(['\Drupal\Component\Utility\Html', 'escape'], node_type_get_names());
     $form['advanced']['types-fieldset'] = [
       '#type' => 'fieldset',
-      '#title' => t('Types'),
+      '#title' => $this->t('Types'),
     ];
     $form['advanced']['types-fieldset']['type'] = [
       '#type' => 'checkboxes',
-      '#title' => t('Only of the type(s)'),
+      '#title' => $this->t('Only of the type(s)'),
       '#prefix' => '<div class="criterion">',
       '#suffix' => '</div>',
       '#options' => $types,
@@ -640,7 +640,7 @@ public function searchFormAlter(array &$form, FormStateInterface $form_state) {
 
     $form['advanced']['submit'] = [
       '#type' => 'submit',
-      '#value' => t('Advanced search'),
+      '#value' => $this->t('Advanced search'),
       '#prefix' => '<div class="action">',
       '#suffix' => '</div>',
       '#weight' => 100,
@@ -651,16 +651,16 @@ public function searchFormAlter(array &$form, FormStateInterface $form_state) {
     $language_list = $this->languageManager->getLanguages(LanguageInterface::STATE_ALL);
     foreach ($language_list as $langcode => $language) {
       // Make locked languages appear special in the list.
-      $language_options[$langcode] = $language->isLocked() ? t('- @name -', ['@name' => $language->getName()]) : $language->getName();
+      $language_options[$langcode] = $language->isLocked() ? $this->t('- @name -', ['@name' => $language->getName()]) : $language->getName();
     }
     if (count($language_options) > 1) {
       $form['advanced']['lang-fieldset'] = [
         '#type' => 'fieldset',
-        '#title' => t('Languages'),
+        '#title' => $this->t('Languages'),
       ];
       $form['advanced']['lang-fieldset']['language'] = [
         '#type' => 'checkboxes',
-        '#title' => t('Languages'),
+        '#title' => $this->t('Languages'),
         '#prefix' => '<div class="criterion">',
         '#suffix' => '</div>',
         '#options' => $language_options,
@@ -823,7 +823,7 @@ public function buildConfigurationForm(array $form, FormStateInterface $form_sta
     // Output form for defining rank factor weights.
     $form['content_ranking'] = [
       '#type' => 'details',
-      '#title' => t('Content ranking'),
+      '#title' => $this->t('Content ranking'),
       '#open' => TRUE,
     ];
     $form['content_ranking']['info'] = [
diff --git a/core/modules/node/src/Plugin/migrate/D6NodeDeriver.php b/core/modules/node/src/Plugin/migrate/D6NodeDeriver.php
index a8fa1d0bbe..b5fdc54a90 100644
--- a/core/modules/node/src/Plugin/migrate/D6NodeDeriver.php
+++ b/core/modules/node/src/Plugin/migrate/D6NodeDeriver.php
@@ -5,6 +5,7 @@
 use Drupal\Component\Plugin\Derivative\DeriverBase;
 use Drupal\Core\Database\DatabaseExceptionWrapper;
 use Drupal\Core\Plugin\Discovery\ContainerDeriverInterface;
+use Drupal\Core\StringTranslation\StringTranslationTrait;
 use Drupal\migrate\Exception\RequirementsException;
 use Drupal\migrate\Plugin\MigrationDeriverTrait;
 use Drupal\migrate_drupal\FieldDiscoveryInterface;
@@ -15,6 +16,7 @@
  */
 class D6NodeDeriver extends DeriverBase implements ContainerDeriverInterface {
   use MigrationDeriverTrait;
+  use StringTranslationTrait;
 
   /**
    * The base plugin ID this derivative is for.
@@ -89,7 +91,7 @@ public function getDerivativeDefinitions($base_plugin_definition) {
         $node_type = $row->getSourceProperty('type');
         $values = $base_plugin_definition;
 
-        $values['label'] = t("@label (@type)", [
+        $values['label'] = $this->t("@label (@type)", [
           '@label' => $values['label'],
           '@type' => $node_type,
         ]);
diff --git a/core/modules/node/src/Plugin/migrate/D7NodeDeriver.php b/core/modules/node/src/Plugin/migrate/D7NodeDeriver.php
index 380aab81e4..59b071413c 100644
--- a/core/modules/node/src/Plugin/migrate/D7NodeDeriver.php
+++ b/core/modules/node/src/Plugin/migrate/D7NodeDeriver.php
@@ -5,6 +5,7 @@
 use Drupal\Component\Plugin\Derivative\DeriverBase;
 use Drupal\Core\Database\DatabaseExceptionWrapper;
 use Drupal\Core\Plugin\Discovery\ContainerDeriverInterface;
+use Drupal\Core\StringTranslation\StringTranslationTrait;
 use Drupal\migrate\Exception\RequirementsException;
 use Drupal\migrate\Plugin\MigrationDeriverTrait;
 use Drupal\migrate_drupal\FieldDiscoveryInterface;
@@ -15,6 +16,7 @@
  */
 class D7NodeDeriver extends DeriverBase implements ContainerDeriverInterface {
   use MigrationDeriverTrait;
+  use StringTranslationTrait;
 
   /**
    * The base plugin ID this derivative is for.
@@ -89,7 +91,7 @@ public function getDerivativeDefinitions($base_plugin_definition) {
         $node_type = $row->getSourceProperty('type');
         $values = $base_plugin_definition;
 
-        $values['label'] = t('@label (@type)', [
+        $values['label'] = $this->t('@label (@type)', [
           '@label' => $values['label'],
           '@type' => $row->getSourceProperty('name'),
         ]);
diff --git a/core/modules/node/src/Plugin/migrate/source/d6/Node.php b/core/modules/node/src/Plugin/migrate/source/d6/Node.php
index a1a3166420..e3f5a9b0eb 100644
--- a/core/modules/node/src/Plugin/migrate/source/d6/Node.php
+++ b/core/modules/node/src/Plugin/migrate/source/d6/Node.php
@@ -107,19 +107,19 @@ public function query() {
     $this->handleTranslations($query);
 
     $query->fields('n', [
-        'nid',
-        'type',
-        'language',
-        'status',
-        'created',
-        'changed',
-        'comment',
-        'promote',
-        'moderate',
-        'sticky',
-        'tnid',
-        'translate',
-      ])
+      'nid',
+      'type',
+      'language',
+      'status',
+      'created',
+      'changed',
+      'comment',
+      'promote',
+      'moderate',
+      'sticky',
+      'tnid',
+      'translate',
+    ])
       ->fields('nr', [
         'title',
         'body',
diff --git a/core/modules/node/src/Plugin/migrate/source/d6/NodeRevision.php b/core/modules/node/src/Plugin/migrate/source/d6/NodeRevision.php
index a3420165e0..810c157b5c 100644
--- a/core/modules/node/src/Plugin/migrate/source/d6/NodeRevision.php
+++ b/core/modules/node/src/Plugin/migrate/source/d6/NodeRevision.php
@@ -30,7 +30,7 @@ class NodeRevision extends Node {
   public function fields() {
     // Use all the node fields plus the vid that identifies the version.
     return parent::fields() + [
-      'vid' => t('The primary identifier for this version.'),
+      'vid' => $this->t('The primary identifier for this version.'),
       'log' => $this->t('Revision Log message'),
       'timestamp' => $this->t('Revision timestamp'),
     ];
diff --git a/core/modules/node/src/Plugin/migrate/source/d7/NodeRevision.php b/core/modules/node/src/Plugin/migrate/source/d7/NodeRevision.php
index 1b13b7bbf8..5be6ac3b3e 100644
--- a/core/modules/node/src/Plugin/migrate/source/d7/NodeRevision.php
+++ b/core/modules/node/src/Plugin/migrate/source/d7/NodeRevision.php
@@ -28,7 +28,7 @@ class NodeRevision extends Node {
   public function fields() {
     // Use all the node fields plus the vid that identifies the version.
     return parent::fields() + [
-      'vid' => t('The primary identifier for this version.'),
+      'vid' => $this->t('The primary identifier for this version.'),
       'log' => $this->t('Revision Log message'),
       'timestamp' => $this->t('Revision timestamp'),
     ];
diff --git a/core/modules/node/tests/modules/node_access_test_language/node_access_test_language.info.yml b/core/modules/node/tests/modules/node_access_test_language/node_access_test_language.info.yml
index 29daa2216e..a827774b60 100644
--- a/core/modules/node/tests/modules/node_access_test_language/node_access_test_language.info.yml
+++ b/core/modules/node/tests/modules/node_access_test_language/node_access_test_language.info.yml
@@ -4,4 +4,4 @@ description: 'Support module for language-aware node access testing.'
 package: Testing
 version: VERSION
 dependencies:
-- drupal:options
+  - drupal:options
diff --git a/core/modules/node/tests/src/Functional/NodeAccessBaseTableTest.php b/core/modules/node/tests/src/Functional/NodeAccessBaseTableTest.php
index ac042c1145..8081babaf2 100644
--- a/core/modules/node/tests/src/Functional/NodeAccessBaseTableTest.php
+++ b/core/modules/node/tests/src/Functional/NodeAccessBaseTableTest.php
@@ -2,7 +2,11 @@
 
 namespace Drupal\Tests\node\Functional;
 
+use Drupal\Core\Field\FieldStorageDefinitionInterface;
+use Drupal\Core\Language\LanguageInterface;
 use Drupal\node\Entity\NodeType;
+use Drupal\taxonomy\Entity\Vocabulary;
+use Drupal\Tests\field\Traits\EntityReferenceTestTrait;
 
 /**
  * Tests behavior of the node access subsystem if the base table is not node.
@@ -11,27 +15,25 @@
  */
 class NodeAccessBaseTableTest extends NodeTestBase {
 
+  use EntityReferenceTestTrait;
+
   /**
    * Modules to enable.
    *
    * @var array
    */
-  protected static $modules = ['node_access_test', 'views'];
+  protected static $modules = [
+    'node_access_test',
+    'views',
+    'taxonomy',
+    'search',
+  ];
 
   /**
    * {@inheritdoc}
    */
   protected $defaultTheme = 'stark';
 
-  /**
-   * The installation profile to use with this test.
-   *
-   * This test class requires the "tags" taxonomy field.
-   *
-   * @var string
-   */
-  protected $profile = 'standard';
-
   /**
    * Nodes by user.
    *
@@ -65,9 +67,39 @@ class NodeAccessBaseTableTest extends NodeTestBase {
    */
   protected $nidsVisible;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
+    // Create the vocabulary for the tag field.
+    $vocabulary = Vocabulary::create([
+      'name' => 'Tags',
+      'vid' => 'tags',
+      'langcode' => LanguageInterface::LANGCODE_NOT_SPECIFIED,
+    ]);
+    $vocabulary->save();
+    $field_name = 'field_' . $vocabulary->id();
+
+    $handler_settings = [
+      'target_bundles' => [
+        $vocabulary->id() => $vocabulary->id(),
+      ],
+      'auto_create' => TRUE,
+    ];
+
+    $this->createEntityReferenceField('node', 'article', $field_name, 'Tags', 'taxonomy_term', 'default', $handler_settings, FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED);
+    $entity_type_manager = $this->container->get('entity_type.manager');
+    $entity_type_manager
+      ->getStorage('entity_form_display')
+      ->load('node.article.default')
+      ->setComponent($field_name, [
+        'type' => 'entity_reference_autocomplete_tags',
+        'weight' => -4,
+      ])
+      ->save();
+
     node_access_test_add_field(NodeType::load('article'));
 
     node_access_rebuild();
diff --git a/core/modules/node/tests/src/Functional/NodeAccessFieldTest.php b/core/modules/node/tests/src/Functional/NodeAccessFieldTest.php
index 08c567448c..51a94a1ca8 100644
--- a/core/modules/node/tests/src/Functional/NodeAccessFieldTest.php
+++ b/core/modules/node/tests/src/Functional/NodeAccessFieldTest.php
@@ -45,6 +45,9 @@ class NodeAccessFieldTest extends NodeTestBase {
    */
   protected $fieldName;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/node/tests/src/Functional/NodeAccessMenuLinkTest.php b/core/modules/node/tests/src/Functional/NodeAccessMenuLinkTest.php
index d003f06515..7650968e96 100644
--- a/core/modules/node/tests/src/Functional/NodeAccessMenuLinkTest.php
+++ b/core/modules/node/tests/src/Functional/NodeAccessMenuLinkTest.php
@@ -30,6 +30,9 @@ class NodeAccessMenuLinkTest extends NodeTestBase {
    */
   protected $contentAdminUser;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/node/tests/src/Functional/NodeAccessPagerTest.php b/core/modules/node/tests/src/Functional/NodeAccessPagerTest.php
index 482dd663ed..f00dc196c6 100644
--- a/core/modules/node/tests/src/Functional/NodeAccessPagerTest.php
+++ b/core/modules/node/tests/src/Functional/NodeAccessPagerTest.php
@@ -36,6 +36,9 @@ class NodeAccessPagerTest extends BrowserTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/node/tests/src/Functional/NodeAdminTest.php b/core/modules/node/tests/src/Functional/NodeAdminTest.php
index c5719eb9a6..6b01df12aa 100644
--- a/core/modules/node/tests/src/Functional/NodeAdminTest.php
+++ b/core/modules/node/tests/src/Functional/NodeAdminTest.php
@@ -52,6 +52,9 @@ class NodeAdminTest extends NodeTestBase {
    */
   protected static $modules = ['views'];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/node/tests/src/Functional/NodeBlockFunctionalTest.php b/core/modules/node/tests/src/Functional/NodeBlockFunctionalTest.php
index 1142e8f994..049243c41e 100644
--- a/core/modules/node/tests/src/Functional/NodeBlockFunctionalTest.php
+++ b/core/modules/node/tests/src/Functional/NodeBlockFunctionalTest.php
@@ -44,6 +44,9 @@ class NodeBlockFunctionalTest extends NodeTestBase {
    */
   protected static $modules = ['block', 'views', 'node_block_test'];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/node/tests/src/Functional/NodeCreationTest.php b/core/modules/node/tests/src/Functional/NodeCreationTest.php
index 2cbb0fd3c4..fd041cb9bd 100644
--- a/core/modules/node/tests/src/Functional/NodeCreationTest.php
+++ b/core/modules/node/tests/src/Functional/NodeCreationTest.php
@@ -35,6 +35,9 @@ class NodeCreationTest extends NodeTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/node/tests/src/Functional/NodeEditFormTest.php b/core/modules/node/tests/src/Functional/NodeEditFormTest.php
index 73311dbe78..1601f9debf 100644
--- a/core/modules/node/tests/src/Functional/NodeEditFormTest.php
+++ b/core/modules/node/tests/src/Functional/NodeEditFormTest.php
@@ -45,6 +45,9 @@ class NodeEditFormTest extends NodeTestBase {
    */
   protected static $modules = ['block', 'node', 'datetime'];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/node/tests/src/Functional/NodeFieldMultilingualTest.php b/core/modules/node/tests/src/Functional/NodeFieldMultilingualTest.php
index 8683c4c167..55ac77fda2 100644
--- a/core/modules/node/tests/src/Functional/NodeFieldMultilingualTest.php
+++ b/core/modules/node/tests/src/Functional/NodeFieldMultilingualTest.php
@@ -27,6 +27,9 @@ class NodeFieldMultilingualTest extends BrowserTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/node/tests/src/Functional/NodePostSettingsTest.php b/core/modules/node/tests/src/Functional/NodePostSettingsTest.php
index a9a670d621..6610cc67e6 100644
--- a/core/modules/node/tests/src/Functional/NodePostSettingsTest.php
+++ b/core/modules/node/tests/src/Functional/NodePostSettingsTest.php
@@ -15,6 +15,9 @@ class NodePostSettingsTest extends NodeTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/node/tests/src/Functional/NodeQueryAlterTest.php b/core/modules/node/tests/src/Functional/NodeQueryAlterTest.php
index ef51a4298b..1fb3afd9cb 100644
--- a/core/modules/node/tests/src/Functional/NodeQueryAlterTest.php
+++ b/core/modules/node/tests/src/Functional/NodeQueryAlterTest.php
@@ -41,6 +41,9 @@ class NodeQueryAlterTest extends NodeTestBase {
    */
   protected User $noAccessUser2;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/node/tests/src/Functional/NodeRSSContentTest.php b/core/modules/node/tests/src/Functional/NodeRSSContentTest.php
index a7a1ad4e88..6d77f2ac9f 100644
--- a/core/modules/node/tests/src/Functional/NodeRSSContentTest.php
+++ b/core/modules/node/tests/src/Functional/NodeRSSContentTest.php
@@ -27,6 +27,9 @@ class NodeRSSContentTest extends NodeTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/node/tests/src/Functional/NodeRevisionsTest.php b/core/modules/node/tests/src/Functional/NodeRevisionsTest.php
index f22cc66912..48e263ceae 100644
--- a/core/modules/node/tests/src/Functional/NodeRevisionsTest.php
+++ b/core/modules/node/tests/src/Functional/NodeRevisionsTest.php
@@ -9,7 +9,6 @@
 use Drupal\language\Entity\ConfigurableLanguage;
 use Drupal\node\Entity\Node;
 use Drupal\node\NodeInterface;
-use Drupal\Component\Serialization\Json;
 
 /**
  * Create a node with revisions and test viewing, saving, reverting, and
@@ -361,27 +360,6 @@ public function testNodeRevisionWithoutLogMessage() {
     $this->assertEmpty($node_revision->revision_log->value, 'After a new node revision is saved with an empty log message, the log message for the node is empty.');
   }
 
-  /**
-   * Gets server-rendered contextual links for the given contextual links IDs.
-   *
-   * @param string[] $ids
-   *   An array of contextual link IDs.
-   * @param string $current_path
-   *   The Drupal path for the page for which the contextual links are rendered.
-   *
-   * @return string
-   *   The decoded JSON response body.
-   */
-  protected function renderContextualLinks(array $ids, $current_path) {
-    $post = [];
-    for ($i = 0; $i < count($ids); $i++) {
-      $post['ids[' . $i . ']'] = $ids[$i];
-    }
-    $response = $this->drupalPost('contextual/render', 'application/json', $post, ['query' => ['destination' => $current_path]]);
-
-    return Json::decode($response);
-  }
-
   /**
    * Tests the revision translations are correctly reverted.
    */
diff --git a/core/modules/node/tests/src/Functional/NodeSaveTest.php b/core/modules/node/tests/src/Functional/NodeSaveTest.php
index 8377b22058..dd1060d0f6 100644
--- a/core/modules/node/tests/src/Functional/NodeSaveTest.php
+++ b/core/modules/node/tests/src/Functional/NodeSaveTest.php
@@ -30,6 +30,9 @@ class NodeSaveTest extends NodeTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/node/tests/src/Functional/NodeSyndicateBlockTest.php b/core/modules/node/tests/src/Functional/NodeSyndicateBlockTest.php
index 8449a9e741..e2fc7a2131 100644
--- a/core/modules/node/tests/src/Functional/NodeSyndicateBlockTest.php
+++ b/core/modules/node/tests/src/Functional/NodeSyndicateBlockTest.php
@@ -21,6 +21,9 @@ class NodeSyndicateBlockTest extends NodeTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/node/tests/src/Functional/NodeTitleTest.php b/core/modules/node/tests/src/Functional/NodeTitleTest.php
index 0d1a93e502..fe3213902d 100644
--- a/core/modules/node/tests/src/Functional/NodeTitleTest.php
+++ b/core/modules/node/tests/src/Functional/NodeTitleTest.php
@@ -68,8 +68,7 @@ public function testNodeTitle() {
 
     // Test <title> tag.
     $this->drupalGet('node/' . $node->id());
-    $xpath = '//title';
-    $this->assertEquals($this->xpath($xpath)[0]->getText(), $node->label() . ' | Drupal', 'Page title is equal to node title.');
+    $this->assertSession()->elementTextEquals('xpath', '//title', $node->label() . ' | Drupal');
 
     // Test breadcrumb in comment preview.
     $this->assertBreadcrumb('comment/reply/node/' . $node->id() . '/comment', [
@@ -93,8 +92,7 @@ public function testNodeTitle() {
     $this->drupalGet('node/' . $node->id());
     $this->assertSession()->titleEquals('0 | Drupal');
     // Test that 0 appears in the template <h1>.
-    $xpath = '//h1';
-    $this->assertSame('0', $this->xpath($xpath)[0]->getText(), 'Node title is displayed as 0.');
+    $this->assertSession()->elementTextEquals('xpath', '//h1', '0');
 
     // Test edge case where node title contains special characters.
     $edge_case_title = 'article\'s "title".';
diff --git a/core/modules/node/tests/src/Functional/NodeTranslationUITest.php b/core/modules/node/tests/src/Functional/NodeTranslationUITest.php
index 1d6258278d..3072779191 100644
--- a/core/modules/node/tests/src/Functional/NodeTranslationUITest.php
+++ b/core/modules/node/tests/src/Functional/NodeTranslationUITest.php
@@ -61,6 +61,9 @@ class NodeTranslationUITest extends ContentTranslationUITestBase {
    */
   protected $profile = 'standard';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     $this->entityTypeId = 'node';
     $this->bundle = 'article';
diff --git a/core/modules/node/tests/src/Functional/NodeTypeInitialLanguageTest.php b/core/modules/node/tests/src/Functional/NodeTypeInitialLanguageTest.php
index f7cc1589ab..fba16f1e06 100644
--- a/core/modules/node/tests/src/Functional/NodeTypeInitialLanguageTest.php
+++ b/core/modules/node/tests/src/Functional/NodeTypeInitialLanguageTest.php
@@ -23,6 +23,9 @@ class NodeTypeInitialLanguageTest extends NodeTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/node/tests/src/Functional/NodeTypeTranslationTest.php b/core/modules/node/tests/src/Functional/NodeTypeTranslationTest.php
index 07dd0af2a5..e7dfe01886 100644
--- a/core/modules/node/tests/src/Functional/NodeTypeTranslationTest.php
+++ b/core/modules/node/tests/src/Functional/NodeTypeTranslationTest.php
@@ -54,6 +54,9 @@ class NodeTypeTranslationTest extends BrowserTestBase {
    */
   protected $adminUser;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/node/tests/src/Functional/PagePreviewTest.php b/core/modules/node/tests/src/Functional/PagePreviewTest.php
index b0bc51fb7b..9303d6d7c8 100644
--- a/core/modules/node/tests/src/Functional/PagePreviewTest.php
+++ b/core/modules/node/tests/src/Functional/PagePreviewTest.php
@@ -65,6 +65,9 @@ class PagePreviewTest extends NodeTestBase {
    */
   protected Term $term;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->addDefaultCommentField('node', 'page');
@@ -219,8 +222,7 @@ public function testPagePreview() {
     $this->assertSession()->linkExists('Back to content editing');
 
     // Check that we see the class of the node type on the body element.
-    $body_class_element = $this->xpath("//body[contains(@class, 'page-node-type-page')]");
-    $this->assertNotEmpty($body_class_element, 'Node type body class found.');
+    $this->assertSession()->elementExists('xpath', "//body[contains(@class, 'page-node-type-page')]");
 
     // Get the UUID.
     $url = parse_url($this->getUrl());
diff --git a/core/modules/node/tests/src/Functional/Views/FrontPageTest.php b/core/modules/node/tests/src/Functional/Views/FrontPageTest.php
index 9b3e1ce2ad..6ef860f799 100644
--- a/core/modules/node/tests/src/Functional/Views/FrontPageTest.php
+++ b/core/modules/node/tests/src/Functional/Views/FrontPageTest.php
@@ -6,6 +6,7 @@
 use Drupal\Core\Language\LanguageInterface;
 use Drupal\Core\Url;
 use Drupal\node\Entity\Node;
+use Drupal\Tests\system\Functional\Cache\AssertPageCacheContextsAndTagsTrait;
 use Drupal\Tests\views\Functional\ViewTestBase;
 use Drupal\views\Tests\AssertViewsCacheTagsTrait;
 use Drupal\views\ViewExecutable;
@@ -18,6 +19,7 @@
  */
 class FrontPageTest extends ViewTestBase {
 
+  use AssertPageCacheContextsAndTagsTrait;
   use AssertViewsCacheTagsTrait;
 
   /**
@@ -301,12 +303,11 @@ protected function doTestFrontPageViewCacheTags($do_assert_views_caches) {
     $cache_context_tags = \Drupal::service('cache_contexts_manager')->convertTokensToKeys($cache_contexts)->getCacheTags();
     $first_page_output_cache_tags = Cache::mergeTags($first_page_result_cache_tags, $cache_context_tags);
     $first_page_output_cache_tags = Cache::mergeTags($first_page_output_cache_tags, [
-        'config:filter.format.plain_text',
-        'node_view',
-        'user_view',
-        'user:0',
-      ]
-    );
+      'config:filter.format.plain_text',
+      'node_view',
+      'user_view',
+      'user:0',
+    ]);
     $view->setDisplay('page_1');
     $view->setCurrentPage(0);
     $this->assertViewsCacheTags(
diff --git a/core/modules/node/tests/src/Kernel/Action/UnpublishByKeywordActionTest.php b/core/modules/node/tests/src/Kernel/Action/UnpublishByKeywordActionTest.php
index ff28d41fbf..c2a69bbba8 100644
--- a/core/modules/node/tests/src/Kernel/Action/UnpublishByKeywordActionTest.php
+++ b/core/modules/node/tests/src/Kernel/Action/UnpublishByKeywordActionTest.php
@@ -18,6 +18,9 @@ class UnpublishByKeywordActionTest extends KernelTestBase {
    */
   protected static $modules = ['action', 'node', 'system', 'user', 'field'];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->installEntitySchema('node');
diff --git a/core/modules/node/tests/src/Kernel/NodeAccessLanguageAwareCombinationTest.php b/core/modules/node/tests/src/Kernel/NodeAccessLanguageAwareCombinationTest.php
index dc1966815f..f8a2e5f0e2 100644
--- a/core/modules/node/tests/src/Kernel/NodeAccessLanguageAwareCombinationTest.php
+++ b/core/modules/node/tests/src/Kernel/NodeAccessLanguageAwareCombinationTest.php
@@ -50,6 +50,9 @@ class NodeAccessLanguageAwareCombinationTest extends NodeAccessTestBase {
    */
   protected $adminUser;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
@@ -175,7 +178,7 @@ protected function setUp(): void {
     $this->nodes['public_no_language_private'] = $this->drupalCreateNode([
       'field_private' => [['value' => 1]],
       'private' => FALSE,
-        'langcode' => LanguageInterface::LANGCODE_NOT_SPECIFIED,
+      'langcode' => LanguageInterface::LANGCODE_NOT_SPECIFIED,
     ]);
     $this->nodes['public_no_language_public'] = $this->drupalCreateNode([
       'field_private' => [['value' => 0]],
diff --git a/core/modules/node/tests/src/Kernel/NodeAccessLanguageAwareTest.php b/core/modules/node/tests/src/Kernel/NodeAccessLanguageAwareTest.php
index e4ec70f980..c3fc89d2f2 100644
--- a/core/modules/node/tests/src/Kernel/NodeAccessLanguageAwareTest.php
+++ b/core/modules/node/tests/src/Kernel/NodeAccessLanguageAwareTest.php
@@ -45,6 +45,9 @@ class NodeAccessLanguageAwareTest extends NodeAccessTestBase {
    */
   protected $webUser;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/node/tests/src/Kernel/NodeBodyFieldStorageTest.php b/core/modules/node/tests/src/Kernel/NodeBodyFieldStorageTest.php
index b47394bdfa..7c973fc7e7 100644
--- a/core/modules/node/tests/src/Kernel/NodeBodyFieldStorageTest.php
+++ b/core/modules/node/tests/src/Kernel/NodeBodyFieldStorageTest.php
@@ -28,6 +28,9 @@ class NodeBodyFieldStorageTest extends KernelTestBase {
     'filter',
   ];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->installSchema('system', 'sequences');
diff --git a/core/modules/node/tests/src/Kernel/NodeFieldAccessTest.php b/core/modules/node/tests/src/Kernel/NodeFieldAccessTest.php
index 0f54c38ec0..b19c6bea2f 100644
--- a/core/modules/node/tests/src/Kernel/NodeFieldAccessTest.php
+++ b/core/modules/node/tests/src/Kernel/NodeFieldAccessTest.php
@@ -49,7 +49,7 @@ public function testAccessToAdministrativeFields() {
     // Create the page node type with revisions disabled.
     $page = NodeType::create([
       'type' => 'page',
-        'new_revision' => FALSE,
+      'new_revision' => FALSE,
     ]);
     $page->save();
 
diff --git a/core/modules/node/tests/src/Kernel/NodeListBuilderTest.php b/core/modules/node/tests/src/Kernel/NodeListBuilderTest.php
index 11f1a28645..0f1933da2d 100644
--- a/core/modules/node/tests/src/Kernel/NodeListBuilderTest.php
+++ b/core/modules/node/tests/src/Kernel/NodeListBuilderTest.php
@@ -17,6 +17,9 @@ class NodeListBuilderTest extends KernelTestBase {
    */
   protected static $modules = ['node', 'user'];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/node/tests/src/Kernel/NodeOwnerTest.php b/core/modules/node/tests/src/Kernel/NodeOwnerTest.php
index 537f816cea..1edd85376e 100644
--- a/core/modules/node/tests/src/Kernel/NodeOwnerTest.php
+++ b/core/modules/node/tests/src/Kernel/NodeOwnerTest.php
@@ -22,6 +22,9 @@ class NodeOwnerTest extends EntityKernelTestBase {
    */
   protected static $modules = ['node', 'language'];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/node/tests/src/Unit/NodeOperationAccessTest.php b/core/modules/node/tests/src/Unit/NodeOperationAccessTest.php
index 3ed6cb4214..569e71c578 100644
--- a/core/modules/node/tests/src/Unit/NodeOperationAccessTest.php
+++ b/core/modules/node/tests/src/Unit/NodeOperationAccessTest.php
@@ -70,7 +70,7 @@ public function testRevisionOperations($operation, array $hasPermissionMap, $ass
     $language = $this->createMock(LanguageInterface::class);
     $language->expects($this->any())
       ->method('getId')
-      ->will($this->returnValue('de'));
+      ->willReturn('de');
 
     $nid = 333;
     /** @var \Drupal\node\NodeInterface|\PHPUnit\Framework\MockObject\MockObject $node */
diff --git a/core/modules/node/tests/src/Unit/PageCache/DenyNodePreviewTest.php b/core/modules/node/tests/src/Unit/PageCache/DenyNodePreviewTest.php
index 8970654b2a..674deab0b6 100644
--- a/core/modules/node/tests/src/Unit/PageCache/DenyNodePreviewTest.php
+++ b/core/modules/node/tests/src/Unit/PageCache/DenyNodePreviewTest.php
@@ -42,6 +42,9 @@ class DenyNodePreviewTest extends UnitTestCase {
    */
   protected $routeMatch;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     $this->routeMatch = $this->createMock('Drupal\Core\Routing\RouteMatchInterface');
     $this->policy = new DenyNodePreview($this->routeMatch);
@@ -58,7 +61,7 @@ protected function setUp(): void {
   public function testPrivateImageStyleDownloadPolicy($expected_result, $route_name) {
     $this->routeMatch->expects($this->once())
       ->method('getRouteName')
-      ->will($this->returnValue($route_name));
+      ->willReturn($route_name);
 
     $actual_result = $this->policy->check($this->response, $this->request);
     $this->assertSame($expected_result, $actual_result);
diff --git a/core/modules/node/tests/src/Unit/Plugin/views/field/NodeBulkFormTest.php b/core/modules/node/tests/src/Unit/Plugin/views/field/NodeBulkFormTest.php
index cd421f167e..4f3f98b571 100644
--- a/core/modules/node/tests/src/Unit/Plugin/views/field/NodeBulkFormTest.php
+++ b/core/modules/node/tests/src/Unit/Plugin/views/field/NodeBulkFormTest.php
@@ -33,26 +33,26 @@ public function testConstructor() {
       $action = $this->createMock('\Drupal\system\ActionConfigEntityInterface');
       $action->expects($this->any())
         ->method('getType')
-        ->will($this->returnValue('node'));
+        ->willReturn('node');
       $actions[$i] = $action;
     }
 
     $action = $this->createMock('\Drupal\system\ActionConfigEntityInterface');
     $action->expects($this->any())
       ->method('getType')
-      ->will($this->returnValue('user'));
+      ->willReturn('user');
     $actions[] = $action;
 
     $entity_storage = $this->createMock('Drupal\Core\Entity\EntityStorageInterface');
     $entity_storage->expects($this->any())
       ->method('loadMultiple')
-      ->will($this->returnValue($actions));
+      ->willReturn($actions);
 
     $entity_type_manager = $this->createMock(EntityTypeManagerInterface::class);
     $entity_type_manager->expects($this->once())
       ->method('getStorage')
       ->with('action')
-      ->will($this->returnValue($entity_storage));
+      ->willReturn($entity_storage);
 
     $entity_repository = $this->createMock(EntityRepositoryInterface::class);
 
@@ -66,7 +66,7 @@ public function testConstructor() {
     $views_data->expects($this->any())
       ->method('get')
       ->with('node')
-      ->will($this->returnValue(['table' => ['entity type' => 'node']]));
+      ->willReturn(['table' => ['entity type' => 'node']]);
     $container = new ContainerBuilder();
     $container->set('views.views_data', $views_data);
     $container->set('string_translation', $this->getStringTranslationStub());
@@ -76,7 +76,7 @@ public function testConstructor() {
     $storage->expects($this->any())
       ->method('get')
       ->with('base_table')
-      ->will($this->returnValue('node'));
+      ->willReturn('node');
 
     $executable = $this->getMockBuilder('Drupal\views\ViewExecutable')
       ->disableOriginalConstructor()
diff --git a/core/modules/options/src/Plugin/Field/FieldType/ListFloatItem.php b/core/modules/options/src/Plugin/Field/FieldType/ListFloatItem.php
index 855d5b46c3..a09152d509 100644
--- a/core/modules/options/src/Plugin/Field/FieldType/ListFloatItem.php
+++ b/core/modules/options/src/Plugin/Field/FieldType/ListFloatItem.php
@@ -4,6 +4,7 @@
 
 use Drupal\Core\Field\FieldFilteredMarkup;
 use Drupal\Core\Field\FieldStorageDefinitionInterface;
+use Drupal\Core\StringTranslation\TranslatableMarkup;
 use Drupal\Core\TypedData\DataDefinition;
 
 /**
@@ -25,7 +26,7 @@ class ListFloatItem extends ListItemBase {
    */
   public static function propertyDefinitions(FieldStorageDefinitionInterface $field_definition) {
     $properties['value'] = DataDefinition::create('float')
-      ->setLabel(t('Float value'))
+      ->setLabel(new TranslatableMarkup('Float value'))
       ->setRequired(TRUE);
 
     return $properties;
@@ -51,12 +52,12 @@ public static function schema(FieldStorageDefinitionInterface $field_definition)
    * {@inheritdoc}
    */
   protected function allowedValuesDescription() {
-    $description = '<p>' . t('The possible values this field can contain. Enter one value per line, in the format key|label.');
-    $description .= '<br/>' . t('The key is the stored value, and must be numeric. The label will be used in displayed values and edit forms.');
-    $description .= '<br/>' . t('The label is optional: if a line contains a single number, it will be used as key and label.');
-    $description .= '<br/>' . t('Lists of labels are also accepted (one label per line), only if the field does not hold any values yet. Numeric keys will be automatically generated from the positions in the list.');
+    $description = '<p>' . $this->t('The possible values this field can contain. Enter one value per line, in the format key|label.');
+    $description .= '<br/>' . $this->t('The key is the stored value, and must be numeric. The label will be used in displayed values and edit forms.');
+    $description .= '<br/>' . $this->t('The label is optional: if a line contains a single number, it will be used as key and label.');
+    $description .= '<br/>' . $this->t('Lists of labels are also accepted (one label per line), only if the field does not hold any values yet. Numeric keys will be automatically generated from the positions in the list.');
     $description .= '</p>';
-    $description .= '<p>' . t('Allowed HTML tags in labels: @tags', ['@tags' => FieldFilteredMarkup::displayAllowedTags()]) . '</p>';
+    $description .= '<p>' . $this->t('Allowed HTML tags in labels: @tags', ['@tags' => FieldFilteredMarkup::displayAllowedTags()]) . '</p>';
     return $description;
   }
 
@@ -83,7 +84,7 @@ protected static function extractAllowedValues($string, $has_data) {
    */
   protected static function validateAllowedValue($option) {
     if (!is_numeric($option)) {
-      return t('Allowed values list: each key must be a valid integer or decimal.');
+      return new TranslatableMarkup('Allowed values list: each key must be a valid integer or decimal.');
     }
   }
 
diff --git a/core/modules/options/src/Plugin/Field/FieldType/ListIntegerItem.php b/core/modules/options/src/Plugin/Field/FieldType/ListIntegerItem.php
index 8a96007519..eabec6f022 100644
--- a/core/modules/options/src/Plugin/Field/FieldType/ListIntegerItem.php
+++ b/core/modules/options/src/Plugin/Field/FieldType/ListIntegerItem.php
@@ -4,6 +4,7 @@
 
 use Drupal\Core\Field\FieldFilteredMarkup;
 use Drupal\Core\Field\FieldStorageDefinitionInterface;
+use Drupal\Core\StringTranslation\TranslatableMarkup;
 use Drupal\Core\TypedData\DataDefinition;
 
 /**
@@ -25,7 +26,7 @@ class ListIntegerItem extends ListItemBase {
    */
   public static function propertyDefinitions(FieldStorageDefinitionInterface $field_definition) {
     $properties['value'] = DataDefinition::create('integer')
-      ->setLabel(t('Integer value'))
+      ->setLabel(new TranslatableMarkup('Integer value'))
       ->setRequired(TRUE);
 
     return $properties;
@@ -51,12 +52,12 @@ public static function schema(FieldStorageDefinitionInterface $field_definition)
    * {@inheritdoc}
    */
   protected function allowedValuesDescription() {
-    $description = '<p>' . t('The possible values this field can contain. Enter one value per line, in the format key|label.');
-    $description .= '<br/>' . t('The key is the stored value, and must be numeric. The label will be used in displayed values and edit forms.');
-    $description .= '<br/>' . t('The label is optional: if a line contains a single number, it will be used as key and label.');
-    $description .= '<br/>' . t('Lists of labels are also accepted (one label per line), only if the field does not hold any values yet. Numeric keys will be automatically generated from the positions in the list.');
+    $description = '<p>' . $this->t('The possible values this field can contain. Enter one value per line, in the format key|label.');
+    $description .= '<br/>' . $this->t('The key is the stored value, and must be numeric. The label will be used in displayed values and edit forms.');
+    $description .= '<br/>' . $this->t('The label is optional: if a line contains a single number, it will be used as key and label.');
+    $description .= '<br/>' . $this->t('Lists of labels are also accepted (one label per line), only if the field does not hold any values yet. Numeric keys will be automatically generated from the positions in the list.');
     $description .= '</p>';
-    $description .= '<p>' . t('Allowed HTML tags in labels: @tags', ['@tags' => FieldFilteredMarkup::displayAllowedTags()]) . '</p>';
+    $description .= '<p>' . $this->t('Allowed HTML tags in labels: @tags', ['@tags' => FieldFilteredMarkup::displayAllowedTags()]) . '</p>';
     return $description;
   }
 
@@ -65,7 +66,7 @@ protected function allowedValuesDescription() {
    */
   protected static function validateAllowedValue($option) {
     if (!preg_match('/^-?\d+$/', $option)) {
-      return t('Allowed values list: keys must be integers.');
+      return new TranslatableMarkup('Allowed values list: keys must be integers.');
     }
   }
 
diff --git a/core/modules/options/src/Plugin/Field/FieldType/ListItemBase.php b/core/modules/options/src/Plugin/Field/FieldType/ListItemBase.php
index 7c36758940..62c32aa513 100644
--- a/core/modules/options/src/Plugin/Field/FieldType/ListItemBase.php
+++ b/core/modules/options/src/Plugin/Field/FieldType/ListItemBase.php
@@ -7,6 +7,7 @@
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\Form\OptGroup;
 use Drupal\Core\Session\AccountInterface;
+use Drupal\Core\StringTranslation\TranslatableMarkup;
 use Drupal\Core\TypedData\OptionsProviderInterface;
 
 /**
@@ -84,7 +85,7 @@ public function storageSettingsForm(array &$form, FormStateInterface $form_state
 
     $element['allowed_values'] = [
       '#type' => 'textarea',
-      '#title' => t('Allowed values list'),
+      '#title' => $this->t('Allowed values list'),
       '#default_value' => $this->allowedValuesString($allowed_values),
       '#rows' => 10,
       '#access' => empty($allowed_values_function),
@@ -99,8 +100,8 @@ public function storageSettingsForm(array &$form, FormStateInterface $form_state
 
     $element['allowed_values_function'] = [
       '#type' => 'item',
-      '#title' => t('Allowed values list'),
-      '#markup' => t('The value of this field is being determined by the %function function and may not be changed.', ['%function' => $allowed_values_function]),
+      '#title' => $this->t('Allowed values list'),
+      '#markup' => $this->t('The value of this field is being determined by the %function function and may not be changed.', ['%function' => $allowed_values_function]),
       '#access' => !empty($allowed_values_function),
       '#value' => $allowed_values_function,
     ];
@@ -131,7 +132,7 @@ public static function validateAllowedValues($element, FormStateInterface $form_
     $values = static::extractAllowedValues($element['#value'], $element['#field_has_data']);
 
     if (!is_array($values)) {
-      $form_state->setError($element, t('Allowed values list: invalid input.'));
+      $form_state->setError($element, new TranslatableMarkup('Allowed values list: invalid input.'));
     }
     else {
       // Check that keys are valid for the field type.
@@ -146,7 +147,7 @@ public static function validateAllowedValues($element, FormStateInterface $form_
       if ($element['#field_has_data']) {
         $lost_keys = array_keys(array_diff_key($element['#allowed_values'], $values));
         if (_options_values_in_use($element['#entity_type'], $element['#field_name'], $lost_keys)) {
-          $form_state->setError($element, t('Allowed values list: some values are being removed while currently in use.'));
+          $form_state->setError($element, new TranslatableMarkup('Allowed values list: some values are being removed while currently in use.'));
         }
       }
 
diff --git a/core/modules/options/src/Plugin/Field/FieldType/ListStringItem.php b/core/modules/options/src/Plugin/Field/FieldType/ListStringItem.php
index 5550307643..acd86c0fa2 100644
--- a/core/modules/options/src/Plugin/Field/FieldType/ListStringItem.php
+++ b/core/modules/options/src/Plugin/Field/FieldType/ListStringItem.php
@@ -4,6 +4,7 @@
 
 use Drupal\Core\Field\FieldFilteredMarkup;
 use Drupal\Core\Field\FieldStorageDefinitionInterface;
+use Drupal\Core\StringTranslation\TranslatableMarkup;
 use Drupal\Core\TypedData\DataDefinition;
 
 /**
@@ -25,7 +26,7 @@ class ListStringItem extends ListItemBase {
    */
   public static function propertyDefinitions(FieldStorageDefinitionInterface $field_definition) {
     $properties['value'] = DataDefinition::create('string')
-      ->setLabel(t('Text value'))
+      ->setLabel(new TranslatableMarkup('Text value'))
       ->addConstraint('Length', ['max' => 255])
       ->setRequired(TRUE);
 
@@ -53,11 +54,11 @@ public static function schema(FieldStorageDefinitionInterface $field_definition)
    * {@inheritdoc}
    */
   protected function allowedValuesDescription() {
-    $description = '<p>' . t('The possible values this field can contain. Enter one value per line, in the format key|label.');
-    $description .= '<br/>' . t('The key is the stored value. The label will be used in displayed values and edit forms.');
-    $description .= '<br/>' . t('The label is optional: if a line contains a single string, it will be used as key and label.');
+    $description = '<p>' . $this->t('The possible values this field can contain. Enter one value per line, in the format key|label.');
+    $description .= '<br/>' . $this->t('The key is the stored value. The label will be used in displayed values and edit forms.');
+    $description .= '<br/>' . $this->t('The label is optional: if a line contains a single string, it will be used as key and label.');
     $description .= '</p>';
-    $description .= '<p>' . t('Allowed HTML tags in labels: @tags', ['@tags' => FieldFilteredMarkup::displayAllowedTags()]) . '</p>';
+    $description .= '<p>' . $this->t('Allowed HTML tags in labels: @tags', ['@tags' => FieldFilteredMarkup::displayAllowedTags()]) . '</p>';
     return $description;
   }
 
@@ -66,7 +67,7 @@ protected function allowedValuesDescription() {
    */
   protected static function validateAllowedValue($option) {
     if (mb_strlen($option) > 255) {
-      return t('Allowed values list: each key must be a string at most 255 characters long.');
+      return new TranslatableMarkup('Allowed values list: each key must be a string at most 255 characters long.');
     }
   }
 
diff --git a/core/modules/options/tests/src/Functional/OptionsDynamicValuesTestBase.php b/core/modules/options/tests/src/Functional/OptionsDynamicValuesTestBase.php
index 3846f12524..cc541675b5 100644
--- a/core/modules/options/tests/src/Functional/OptionsDynamicValuesTestBase.php
+++ b/core/modules/options/tests/src/Functional/OptionsDynamicValuesTestBase.php
@@ -45,6 +45,9 @@ abstract class OptionsDynamicValuesTestBase extends FieldTestBase {
    */
   protected array $test;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/options/tests/src/Functional/OptionsFieldUITest.php b/core/modules/options/tests/src/Functional/OptionsFieldUITest.php
index 23e965bd41..75cd7fb17c 100644
--- a/core/modules/options/tests/src/Functional/OptionsFieldUITest.php
+++ b/core/modules/options/tests/src/Functional/OptionsFieldUITest.php
@@ -59,6 +59,9 @@ class OptionsFieldUITest extends FieldTestBase {
    */
   protected $adminPath;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
@@ -344,9 +347,7 @@ public function testNodeDisplay() {
     $on = $this->randomMachineName();
     $off = $this->randomMachineName();
     $edit = [
-      'settings[allowed_values]' =>
-        "1|$on
-        0|$off",
+      'settings[allowed_values]' => "1|$on" . PHP_EOL . "0|$off",
     ];
 
     $this->drupalGet($this->adminPath);
diff --git a/core/modules/options/tests/src/Functional/OptionsFloatFieldImportTest.php b/core/modules/options/tests/src/Functional/OptionsFloatFieldImportTest.php
index e70ba1ac81..8365d3f164 100644
--- a/core/modules/options/tests/src/Functional/OptionsFloatFieldImportTest.php
+++ b/core/modules/options/tests/src/Functional/OptionsFloatFieldImportTest.php
@@ -31,6 +31,9 @@ class OptionsFloatFieldImportTest extends FieldTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/options/tests/src/Functional/OptionsWidgetsTest.php b/core/modules/options/tests/src/Functional/OptionsWidgetsTest.php
index 486c0b21c9..dcbdc12e90 100644
--- a/core/modules/options/tests/src/Functional/OptionsWidgetsTest.php
+++ b/core/modules/options/tests/src/Functional/OptionsWidgetsTest.php
@@ -54,6 +54,9 @@ class OptionsWidgetsTest extends FieldTestBase {
    */
   protected $float;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/options/tests/src/Kernel/Views/OptionsTestBase.php b/core/modules/options/tests/src/Kernel/Views/OptionsTestBase.php
index 5b6a55b6b9..45b8f4f82c 100644
--- a/core/modules/options/tests/src/Kernel/Views/OptionsTestBase.php
+++ b/core/modules/options/tests/src/Kernel/Views/OptionsTestBase.php
@@ -48,6 +48,9 @@ abstract class OptionsTestBase extends ViewsKernelTestBase {
    */
   protected $fieldNames;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp($import_test_views = TRUE): void {
     parent::setUp();
     $this->mockStandardInstall();
diff --git a/core/modules/path/src/Plugin/Field/FieldWidget/PathWidget.php b/core/modules/path/src/Plugin/Field/FieldWidget/PathWidget.php
index 441c65c94f..088ef784e2 100644
--- a/core/modules/path/src/Plugin/Field/FieldWidget/PathWidget.php
+++ b/core/modules/path/src/Plugin/Field/FieldWidget/PathWidget.php
@@ -44,7 +44,7 @@ public function formElement(FieldItemListInterface $items, $delta, array $elemen
     $element['source'] = [
       '#type' => 'value',
       '#value' => !$entity->isNew() ? '/' . $entity->toUrl()->getInternalPath() : NULL,
-     ];
+    ];
     $element['langcode'] = [
       '#type' => 'value',
       '#value' => $items[$delta]->langcode,
@@ -56,7 +56,7 @@ public function formElement(FieldItemListInterface $items, $delta, array $elemen
     if (isset($form['advanced'])) {
       $element += [
         '#type' => 'details',
-        '#title' => t('URL path settings'),
+        '#title' => $this->t('URL path settings'),
         '#open' => !empty($items[$delta]->alias),
         '#group' => 'advanced',
         '#access' => $entity->get('path')->access('edit'),
diff --git a/core/modules/path/tests/src/Functional/PathAdminTest.php b/core/modules/path/tests/src/Functional/PathAdminTest.php
index b3228d4003..d48a791ed3 100644
--- a/core/modules/path/tests/src/Functional/PathAdminTest.php
+++ b/core/modules/path/tests/src/Functional/PathAdminTest.php
@@ -21,6 +21,9 @@ class PathAdminTest extends PathTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/path/tests/src/Functional/PathAliasTest.php b/core/modules/path/tests/src/Functional/PathAliasTest.php
index 20b350f872..b55a8a4b6b 100644
--- a/core/modules/path/tests/src/Functional/PathAliasTest.php
+++ b/core/modules/path/tests/src/Functional/PathAliasTest.php
@@ -26,6 +26,9 @@ class PathAliasTest extends PathTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
@@ -266,10 +269,8 @@ public function testNodeAlias() {
     $this->assertSession()->statusCodeEquals(200);
 
     // Confirm the 'canonical' and 'shortlink' URLs.
-    $elements = $this->xpath("//link[contains(@rel, 'canonical') and contains(@href, '" . $edit['path[0][alias]'] . "')]");
-    $this->assertNotEmpty($elements, 'Page contains canonical link URL.');
-    $elements = $this->xpath("//link[contains(@rel, 'shortlink') and contains(@href, 'node/" . $node1->id() . "')]");
-    $this->assertNotEmpty($elements, 'Page contains shortlink URL.');
+    $this->assertSession()->elementExists('xpath', "//link[contains(@rel, 'canonical') and contains(@href, '" . $edit['path[0][alias]'] . "')]");
+    $this->assertSession()->elementExists('xpath', "//link[contains(@rel, 'shortlink') and contains(@href, 'node/" . $node1->id() . "')]");
 
     $previous = $edit['path[0][alias]'];
     // Change alias to one containing "exotic" characters.
diff --git a/core/modules/path/tests/src/Functional/PathLanguageTest.php b/core/modules/path/tests/src/Functional/PathLanguageTest.php
index bbf2cd62f2..d6d62f6a8f 100644
--- a/core/modules/path/tests/src/Functional/PathLanguageTest.php
+++ b/core/modules/path/tests/src/Functional/PathLanguageTest.php
@@ -33,6 +33,9 @@ class PathLanguageTest extends PathTestBase {
    */
   protected $webUser;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/path/tests/src/Functional/PathLanguageUiTest.php b/core/modules/path/tests/src/Functional/PathLanguageUiTest.php
index f49788f9ea..5ca4e94fab 100644
--- a/core/modules/path/tests/src/Functional/PathLanguageUiTest.php
+++ b/core/modules/path/tests/src/Functional/PathLanguageUiTest.php
@@ -23,6 +23,9 @@ class PathLanguageUiTest extends PathTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/path/tests/src/Functional/PathNodeFormTest.php b/core/modules/path/tests/src/Functional/PathNodeFormTest.php
index 39205adcfd..cca9e55f6e 100644
--- a/core/modules/path/tests/src/Functional/PathNodeFormTest.php
+++ b/core/modules/path/tests/src/Functional/PathNodeFormTest.php
@@ -21,6 +21,9 @@ class PathNodeFormTest extends PathTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/path/tests/src/Functional/PathTaxonomyTermTest.php b/core/modules/path/tests/src/Functional/PathTaxonomyTermTest.php
index b578e92640..f49d702de0 100644
--- a/core/modules/path/tests/src/Functional/PathTaxonomyTermTest.php
+++ b/core/modules/path/tests/src/Functional/PathTaxonomyTermTest.php
@@ -23,6 +23,9 @@ class PathTaxonomyTermTest extends PathTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
@@ -68,10 +71,8 @@ public function testTermAlias() {
     $this->assertSession()->pageTextContains($description);
 
     // Confirm the 'canonical' and 'shortlink' URLs.
-    $elements = $this->xpath("//link[contains(@rel, 'canonical') and contains(@href, '" . $edit['path[0][alias]'] . "')]");
-    $this->assertNotEmpty($elements, 'Term page contains canonical link URL.');
-    $elements = $this->xpath("//link[contains(@rel, 'shortlink') and contains(@href, 'taxonomy/term/" . $tid . "')]");
-    $this->assertNotEmpty($elements, 'Term page contains shortlink URL.');
+    $this->assertSession()->elementExists('xpath', "//link[contains(@rel, 'canonical') and contains(@href, '" . $edit['path[0][alias]'] . "')]");
+    $this->assertSession()->elementExists('xpath', "//link[contains(@rel, 'shortlink') and contains(@href, 'taxonomy/term/" . $tid . "')]");
 
     // Change the term's URL alias.
     $edit2 = [];
diff --git a/core/modules/path/tests/src/Functional/PathTestBase.php b/core/modules/path/tests/src/Functional/PathTestBase.php
index 5749ff151b..8cee5cc1cd 100644
--- a/core/modules/path/tests/src/Functional/PathTestBase.php
+++ b/core/modules/path/tests/src/Functional/PathTestBase.php
@@ -19,6 +19,9 @@ abstract class PathTestBase extends BrowserTestBase {
    */
   protected static $modules = ['node', 'path'];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/path/tests/src/Kernel/PathNoCanonicalLinkTest.php b/core/modules/path/tests/src/Kernel/PathNoCanonicalLinkTest.php
index 5ef693cac6..2b5257b956 100644
--- a/core/modules/path/tests/src/Kernel/PathNoCanonicalLinkTest.php
+++ b/core/modules/path/tests/src/Kernel/PathNoCanonicalLinkTest.php
@@ -27,6 +27,9 @@ class PathNoCanonicalLinkTest extends KernelTestBase {
     'system',
   ];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/path_alias/src/AliasManager.php b/core/modules/path_alias/src/AliasManager.php
index fb695dd345..0e2df80679 100644
--- a/core/modules/path_alias/src/AliasManager.php
+++ b/core/modules/path_alias/src/AliasManager.php
@@ -103,7 +103,7 @@ class AliasManager implements AliasManagerInterface {
    * @param \Drupal\Core\Cache\CacheBackendInterface $cache
    *   Cache backend.
    */
-  public function __construct($alias_repository, AliasWhitelistInterface $whitelist, LanguageManagerInterface $language_manager, CacheBackendInterface $cache) {
+  public function __construct(AliasRepositoryInterface $alias_repository, AliasWhitelistInterface $whitelist, LanguageManagerInterface $language_manager, CacheBackendInterface $cache) {
     $this->pathAliasRepository = $alias_repository;
     $this->languageManager = $language_manager;
     $this->whitelist = $whitelist;
@@ -275,9 +275,6 @@ public function cacheClear($source = NULL) {
    *
    * @param string $path
    *   An optional path for which an alias is being inserted.
-   *
-   * @return
-   *   An array containing a white list of path aliases.
    */
   protected function pathAliasWhitelistRebuild($path = NULL) {
     // When paths are inserted, only rebuild the whitelist if the path has a top
diff --git a/core/modules/path_alias/tests/src/Unit/AliasManagerTest.php b/core/modules/path_alias/tests/src/Unit/AliasManagerTest.php
index 0e76f07a16..1bff1a5d80 100644
--- a/core/modules/path_alias/tests/src/Unit/AliasManagerTest.php
+++ b/core/modules/path_alias/tests/src/Unit/AliasManagerTest.php
@@ -91,12 +91,12 @@ public function testGetPathByAliasNoMatch() {
     $this->languageManager->expects($this->any())
       ->method('getCurrentLanguage')
       ->with(LanguageInterface::TYPE_URL)
-      ->will($this->returnValue($language));
+      ->willReturn($language);
 
     $this->aliasRepository->expects($this->once())
       ->method('lookupByAlias')
       ->with($alias, $language->getId())
-      ->will($this->returnValue(NULL));
+      ->willReturn(NULL);
 
     $this->assertEquals($alias, $this->aliasManager->getPathByAlias($alias));
     // Call it twice to test the static cache.
@@ -117,7 +117,7 @@ public function testGetPathByAliasMatch() {
     $this->aliasRepository->expects($this->once())
       ->method('lookupByAlias')
       ->with($alias, $language->getId())
-      ->will($this->returnValue(['path' => $path]));
+      ->willReturn(['path' => $path]);
 
     $this->assertEquals($path, $this->aliasManager->getPathByAlias($alias));
     // Call it twice to test the static cache.
@@ -139,7 +139,7 @@ public function testGetPathByAliasLangcode() {
     $this->aliasRepository->expects($this->once())
       ->method('lookupByAlias')
       ->with($alias, 'de')
-      ->will($this->returnValue(['path' => $path]));
+      ->willReturn(['path' => $path]);
 
     $this->assertEquals($path, $this->aliasManager->getPathByAlias($alias, 'de'));
     // Call it twice to test the static cache.
@@ -161,7 +161,7 @@ public function testGetAliasByPathWhitelist() {
     $this->aliasWhitelist->expects($this->any())
       ->method('get')
       ->with($path_part1)
-      ->will($this->returnValue(FALSE));
+      ->willReturn(FALSE);
 
     // The whitelist returns FALSE for that path part, so the storage should
     // never be called.
@@ -188,12 +188,12 @@ public function testGetAliasByPathNoMatch() {
     $this->aliasWhitelist->expects($this->any())
       ->method('get')
       ->with($path_part1)
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $this->aliasRepository->expects($this->once())
       ->method('lookupBySystemPath')
       ->with($path, $language->getId())
-      ->will($this->returnValue(NULL));
+      ->willReturn(NULL);
 
     $this->assertEquals($path, $this->aliasManager->getAliasByPath($path));
     // Call it twice to test the static cache.
@@ -226,12 +226,12 @@ public function testGetAliasByPathMatch() {
     $this->aliasWhitelist->expects($this->any())
       ->method('get')
       ->with($path_part1)
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $this->aliasRepository->expects($this->once())
       ->method('lookupBySystemPath')
       ->with($path, $language->getId())
-      ->will($this->returnValue(['alias' => $alias]));
+      ->willReturn(['alias' => $alias]);
 
     $this->assertEquals($alias, $this->aliasManager->getAliasByPath($path));
     // Call it twice to test the static cache.
@@ -263,7 +263,7 @@ public function testGetAliasByPathCachedMatch() {
     $this->cache->expects($this->once())
       ->method('get')
       ->with($this->cacheKey)
-      ->will($this->returnValue((object) ['data' => $cached_paths]));
+      ->willReturn((object) ['data' => $cached_paths]);
 
     // Simulate a request so that the preloaded paths are fetched.
     $this->aliasManager->setCacheKey($this->path);
@@ -271,12 +271,12 @@ public function testGetAliasByPathCachedMatch() {
     $this->aliasWhitelist->expects($this->any())
       ->method('get')
       ->with($path_part1)
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $this->aliasRepository->expects($this->once())
       ->method('preloadPathAlias')
       ->with($cached_paths[$language->getId()], $language->getId())
-      ->will($this->returnValue([$path => $alias]));
+      ->willReturn([$path => $alias]);
 
     // LookupPathAlias should not be called.
     $this->aliasRepository->expects($this->never())
@@ -311,7 +311,7 @@ public function testGetAliasByPathCachedMissLanguage() {
     $this->cache->expects($this->once())
       ->method('get')
       ->with($this->cacheKey)
-      ->will($this->returnValue((object) ['data' => $cached_paths]));
+      ->willReturn((object) ['data' => $cached_paths]);
 
     // Simulate a request so that the preloaded paths are fetched.
     $this->aliasManager->setCacheKey($this->path);
@@ -319,7 +319,7 @@ public function testGetAliasByPathCachedMissLanguage() {
     $this->aliasWhitelist->expects($this->any())
       ->method('get')
       ->with($path_part1)
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     // The requested language is different than the cached, so this will
     // need to load.
@@ -328,7 +328,7 @@ public function testGetAliasByPathCachedMissLanguage() {
     $this->aliasRepository->expects($this->once())
       ->method('lookupBySystemPath')
       ->with($path, $language->getId())
-      ->will($this->returnValue(['alias' => $alias]));
+      ->willReturn(['alias' => $alias]);
 
     $this->assertEquals($alias, $this->aliasManager->getAliasByPath($path));
     // Call it twice to test the static cache.
@@ -360,7 +360,7 @@ public function testGetAliasByPathCachedMissNoAlias() {
     $this->cache->expects($this->once())
       ->method('get')
       ->with($this->cacheKey)
-      ->will($this->returnValue((object) ['data' => $cached_paths]));
+      ->willReturn((object) ['data' => $cached_paths]);
 
     // Simulate a request so that the preloaded paths are fetched.
     $this->aliasManager->setCacheKey($this->path);
@@ -368,12 +368,12 @@ public function testGetAliasByPathCachedMissNoAlias() {
     $this->aliasWhitelist->expects($this->any())
       ->method('get')
       ->with($path_part1)
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $this->aliasRepository->expects($this->once())
       ->method('preloadPathAlias')
       ->with($cached_paths[$language->getId()], $language->getId())
-      ->will($this->returnValue([$cached_path => $cached_alias]));
+      ->willReturn([$cached_path => $cached_alias]);
 
     // LookupPathAlias() should not be called.
     $this->aliasRepository->expects($this->never())
@@ -408,7 +408,7 @@ public function testGetAliasByPathUncachedMissNoAlias() {
     $this->cache->expects($this->once())
       ->method('get')
       ->with($this->cacheKey)
-      ->will($this->returnValue((object) ['data' => $cached_paths]));
+      ->willReturn((object) ['data' => $cached_paths]);
 
     // Simulate a request so that the preloaded paths are fetched.
     $this->aliasManager->setCacheKey($this->path);
@@ -416,17 +416,17 @@ public function testGetAliasByPathUncachedMissNoAlias() {
     $this->aliasWhitelist->expects($this->any())
       ->method('get')
       ->with($path_part1)
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $this->aliasRepository->expects($this->once())
       ->method('preloadPathAlias')
       ->with($cached_paths[$language->getId()], $language->getId())
-      ->will($this->returnValue([$cached_path => $cached_alias]));
+      ->willReturn([$cached_path => $cached_alias]);
 
     $this->aliasRepository->expects($this->once())
       ->method('lookupBySystemPath')
       ->with($path, $language->getId())
-      ->will($this->returnValue(NULL));
+      ->willReturn(NULL);
 
     $this->assertEquals($path, $this->aliasManager->getAliasByPath($path));
     // Call it twice to test the static cache.
@@ -494,7 +494,7 @@ public function testGetAliasByPathUncachedMissWithAlias() {
     $this->cache->expects($this->once())
       ->method('get')
       ->with($this->cacheKey)
-      ->will($this->returnValue((object) ['data' => $cached_paths]));
+      ->willReturn((object) ['data' => $cached_paths]);
 
     // Simulate a request so that the preloaded paths are fetched.
     $this->aliasManager->setCacheKey($this->path);
@@ -502,17 +502,17 @@ public function testGetAliasByPathUncachedMissWithAlias() {
     $this->aliasWhitelist->expects($this->any())
       ->method('get')
       ->with($path_part1)
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $this->aliasRepository->expects($this->once())
       ->method('preloadPathAlias')
       ->with($cached_paths[$language->getId()], $language->getId())
-      ->will($this->returnValue([$cached_path => $cached_alias]));
+      ->willReturn([$cached_path => $cached_alias]);
 
     $this->aliasRepository->expects($this->once())
       ->method('lookupBySystemPath')
       ->with($path, $language->getId())
-      ->will($this->returnValue(['alias' => $new_alias]));
+      ->willReturn(['alias' => $new_alias]);
 
     $this->assertEquals($new_alias, $this->aliasManager->getAliasByPath($path));
     // Call it twice to test the static cache.
@@ -537,7 +537,7 @@ protected function setUpCurrentLanguage() {
     $this->languageManager->expects($this->any())
       ->method('getCurrentLanguage')
       ->with(LanguageInterface::TYPE_URL)
-      ->will($this->returnValue($language));
+      ->willReturn($language);
 
     return $language;
   }
diff --git a/core/modules/path_alias/tests/src/Unit/PathProcessor/AliasPathProcessorTest.php b/core/modules/path_alias/tests/src/Unit/PathProcessor/AliasPathProcessorTest.php
index 5da232eb45..43cbc5387d 100644
--- a/core/modules/path_alias/tests/src/Unit/PathProcessor/AliasPathProcessorTest.php
+++ b/core/modules/path_alias/tests/src/Unit/PathProcessor/AliasPathProcessorTest.php
@@ -29,6 +29,9 @@ class AliasPathProcessorTest extends UnitTestCase {
    */
   protected $pathProcessor;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     $this->aliasManager = $this->createMock('Drupal\path_alias\AliasManagerInterface');
     $this->pathProcessor = new AliasPathProcessor($this->aliasManager);
diff --git a/core/modules/pgsql/pgsql.module b/core/modules/pgsql/pgsql.module
index 4d9027bc43..0b5ba47050 100644
--- a/core/modules/pgsql/pgsql.module
+++ b/core/modules/pgsql/pgsql.module
@@ -15,7 +15,7 @@ function pgsql_help($route_name, RouteMatchInterface $route_match) {
     case 'help.page.pgsql':
       $output = '';
       $output .= '<h3>' . t('About') . '</h3>';
-      $output .= '<p>' . t('The PostgreSQL module provides the connection between Drupal and a PostgreSQL database. For more information, see the <a href=":pgsql">online documentation for the PostgreSQL module</a>.', [':pgsql' => 'https://www.drupal.org/documentation/modules/pgsql']) . '</p>';
+      $output .= '<p>' . t('The PostgreSQL module provides the connection between Drupal and a PostgreSQL database. For more information, see the <a href=":pgsql">online documentation for the PostgreSQL module</a>.', [':pgsql' => 'https://www.drupal.org/docs/core-modules-and-themes/core-modules/postgresql-module']) . '</p>';
       return $output;
 
   }
diff --git a/core/modules/pgsql/src/Driver/Database/pgsql/Connection.php b/core/modules/pgsql/src/Driver/Database/pgsql/Connection.php
index 67ed801631..58d500e361 100644
--- a/core/modules/pgsql/src/Driver/Database/pgsql/Connection.php
+++ b/core/modules/pgsql/src/Driver/Database/pgsql/Connection.php
@@ -8,6 +8,7 @@
 use Drupal\Core\Database\DatabaseNotFoundException;
 use Drupal\Core\Database\StatementInterface;
 use Drupal\Core\Database\StatementWrapper;
+use Drupal\Core\Database\SupportsTemporaryTablesInterface;
 
 // cSpell:ignore ilike nextval
 
@@ -19,7 +20,7 @@
 /**
  * PostgreSQL implementation of \Drupal\Core\Database\Connection.
  */
-class Connection extends DatabaseConnection {
+class Connection extends DatabaseConnection implements SupportsTemporaryTablesInterface {
 
   /**
    * The name by which to obtain a lock for retrieve the next insert id.
@@ -209,6 +210,15 @@ public function queryRange($query, $from, $count, array $args = [], array $optio
     return $this->query($query . ' LIMIT ' . (int) $count . ' OFFSET ' . (int) $from, $args, $options);
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  public function queryTemporary($query, array $args = [], array $options = []) {
+    $tablename = 'db_temporary_' . uniqid();
+    $this->query('CREATE TEMPORARY TABLE {' . $tablename . '} AS ' . $query, $args, $options);
+    return $tablename;
+  }
+
   public function driver() {
     return 'pgsql';
   }
diff --git a/core/modules/pgsql/src/Driver/Database/pgsql/Schema.php b/core/modules/pgsql/src/Driver/Database/pgsql/Schema.php
index 986005d682..39257bd318 100644
--- a/core/modules/pgsql/src/Driver/Database/pgsql/Schema.php
+++ b/core/modules/pgsql/src/Driver/Database/pgsql/Schema.php
@@ -271,15 +271,7 @@ public function queryFieldInformation($table, $field, $constraint_type = 'c') {
   }
 
   /**
-   * Generate SQL to create a new table from a Drupal schema definition.
-   *
-   * @param string $name
-   *   The name of the table to create.
-   * @param array $table
-   *   A Schema API table definition array.
-   *
-   * @return array
-   *   An array of SQL statements to create the table.
+   * {@inheritdoc}
    */
   protected function createTableSql($name, $table) {
     $sql_fields = [];
@@ -461,7 +453,7 @@ public function getFieldTypeMap() {
       'serial:medium' => 'serial',
       'serial:big' => 'bigserial',
       'serial:normal' => 'serial',
-      ];
+    ];
     return $map;
   }
 
diff --git a/core/modules/pgsql/tests/src/Kernel/pgsql/ConnectionUnitTest.php b/core/modules/pgsql/tests/src/Kernel/pgsql/ConnectionUnitTest.php
new file mode 100644
index 0000000000..9b30b8a73a
--- /dev/null
+++ b/core/modules/pgsql/tests/src/Kernel/pgsql/ConnectionUnitTest.php
@@ -0,0 +1,25 @@
+<?php
+
+namespace Drupal\Tests\pgsql\Kernel\pgsql;
+
+use Drupal\KernelTests\Core\Database\DriverSpecificConnectionUnitTestBase;
+
+/**
+ * PostgreSQL-specific connection unit tests.
+ *
+ * @group Database
+ */
+class ConnectionUnitTest extends DriverSpecificConnectionUnitTestBase {
+
+  /**
+   * Returns a set of queries specific for PostgreSQL.
+   */
+  protected function getQuery(): array {
+    return [
+      'connection_id' => 'SELECT pg_backend_pid()',
+      'processlist' => 'SELECT pid FROM pg_stat_activity',
+      'show_tables' => 'SELECT * FROM pg_catalog.pg_tables',
+    ];
+  }
+
+}
diff --git a/core/modules/pgsql/tests/src/Kernel/pgsql/DatabaseExceptionWrapperTest.php b/core/modules/pgsql/tests/src/Kernel/pgsql/DatabaseExceptionWrapperTest.php
new file mode 100644
index 0000000000..f8617313fc
--- /dev/null
+++ b/core/modules/pgsql/tests/src/Kernel/pgsql/DatabaseExceptionWrapperTest.php
@@ -0,0 +1,23 @@
+<?php
+
+namespace Drupal\Tests\pgsql\Kernel\pgsql;
+
+use Drupal\KernelTests\Core\Database\DriverSpecificKernelTestBase;
+
+/**
+ * Tests exceptions thrown by queries.
+ *
+ * @group Database
+ */
+class DatabaseExceptionWrapperTest extends DriverSpecificKernelTestBase {
+
+  /**
+   * Tests Connection::prepareStatement exception on execution.
+   */
+  public function testPrepareStatementFailOnExecution() {
+    $this->expectException(\PDOException::class);
+    $stmt = $this->connection->prepareStatement('bananas', []);
+    $stmt->execute();
+  }
+
+}
diff --git a/core/modules/pgsql/tests/src/Kernel/pgsql/KernelTestBaseTest.php b/core/modules/pgsql/tests/src/Kernel/pgsql/KernelTestBaseTest.php
new file mode 100644
index 0000000000..8e7926b3cf
--- /dev/null
+++ b/core/modules/pgsql/tests/src/Kernel/pgsql/KernelTestBaseTest.php
@@ -0,0 +1,24 @@
+<?php
+
+namespace Drupal\Tests\pgsql\Kernel\pgsql;
+
+use Drupal\KernelTests\Core\Database\DriverSpecificKernelTestBase;
+
+/**
+ * @coversDefaultClass \Drupal\KernelTests\KernelTestBase
+ *
+ * @group KernelTests
+ * @group Database
+ */
+class KernelTestBaseTest extends DriverSpecificKernelTestBase {
+
+  /**
+   * @covers ::setUp
+   */
+  public function testSetUp() {
+    // Ensure that the database tasks have been run during set up.
+    $this->assertSame('on', $this->connection->query("SHOW standard_conforming_strings")->fetchField());
+    $this->assertSame('escape', $this->connection->query("SHOW bytea_output")->fetchField());
+  }
+
+}
diff --git a/core/tests/Drupal/KernelTests/Core/Database/PgsqlDriverLegacyTest.php b/core/modules/pgsql/tests/src/Kernel/pgsql/PgsqlDriverLegacyTest.php
similarity index 92%
rename from core/tests/Drupal/KernelTests/Core/Database/PgsqlDriverLegacyTest.php
rename to core/modules/pgsql/tests/src/Kernel/pgsql/PgsqlDriverLegacyTest.php
index 273e1f9607..bcdd365660 100644
--- a/core/tests/Drupal/KernelTests/Core/Database/PgsqlDriverLegacyTest.php
+++ b/core/modules/pgsql/tests/src/Kernel/pgsql/PgsqlDriverLegacyTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\KernelTests\Core\Database;
+namespace Drupal\Tests\pgsql\Kernel\pgsql;
 
 use Drupal\Core\Database\Driver\pgsql\Connection;
 use Drupal\Core\Database\Driver\pgsql\Delete;
@@ -11,6 +11,7 @@
 use Drupal\Core\Database\Driver\pgsql\Truncate;
 use Drupal\Core\Database\Driver\pgsql\Update;
 use Drupal\Core\Database\Driver\pgsql\Upsert;
+use Drupal\KernelTests\Core\Database\DriverSpecificDatabaseTestBase;
 use Drupal\Tests\Core\Database\Stub\StubPDO;
 
 /**
@@ -19,17 +20,7 @@
  * @group legacy
  * @group Database
  */
-class PgsqlDriverLegacyTest extends DatabaseTestBase {
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function setUp(): void {
-    parent::setUp();
-    if ($this->connection->driver() !== 'pgsql') {
-      $this->markTestSkipped('Only test the deprecation message for the PostgreSQL database driver classes in Core.');
-    }
-  }
+class PgsqlDriverLegacyTest extends DriverSpecificDatabaseTestBase {
 
   /**
    * @covers Drupal\Core\Database\Driver\pgsql\Install\Tasks
diff --git a/core/modules/pgsql/tests/src/Kernel/pgsql/SchemaTest.php b/core/modules/pgsql/tests/src/Kernel/pgsql/SchemaTest.php
new file mode 100644
index 0000000000..0c252ec529
--- /dev/null
+++ b/core/modules/pgsql/tests/src/Kernel/pgsql/SchemaTest.php
@@ -0,0 +1,126 @@
+<?php
+
+namespace Drupal\Tests\pgsql\Kernel\pgsql;
+
+use Drupal\KernelTests\Core\Database\DriverSpecificSchemaTestBase;
+
+/**
+ * Tests schema API for the PostgreSQL driver.
+ *
+ * @group Database
+ */
+class SchemaTest extends DriverSpecificSchemaTestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function checkSchemaComment(string $description, string $table, string $column = NULL): void {
+    $this->assertSame($description, $this->schema->getComment($table, $column), 'The comment matches the schema description.');
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function checkSequenceRenaming(string $tableName): void {
+    // For PostgreSQL, we also need to check that the sequence has been renamed.
+    // The initial name of the sequence has been generated automatically by
+    // PostgreSQL when the table was created, however, on subsequent table
+    // renames the name is generated by Drupal and can not be easily
+    // re-constructed. Hence we can only check that we still have a sequence on
+    // the new table name.
+    $sequenceExists = (bool) $this->connection->query("SELECT pg_get_serial_sequence('{" . $tableName . "}', 'id')")->fetchField();
+    $this->assertTrue($sequenceExists, 'Sequence was renamed.');
+
+    // Rename the table again and repeat the check.
+    $anotherTableName = strtolower($this->getRandomGenerator()->name(63 - strlen($this->getDatabasePrefix())));
+    $this->schema->renameTable($tableName, $anotherTableName);
+
+    $sequenceExists = (bool) $this->connection->query("SELECT pg_get_serial_sequence('{" . $anotherTableName . "}', 'id')")->fetchField();
+    $this->assertTrue($sequenceExists, 'Sequence was renamed.');
+  }
+
+  /**
+   * @covers \Drupal\pgsql\Driver\Database\pgsql\Schema::introspectIndexSchema
+   */
+  public function testIntrospectIndexSchema(): void {
+    $table_specification = [
+      'fields' => [
+        'id'  => [
+          'type' => 'int',
+          'not null' => TRUE,
+          'default' => 0,
+        ],
+        'test_field_1'  => [
+          'type' => 'int',
+          'not null' => TRUE,
+          'default' => 0,
+        ],
+        'test_field_2'  => [
+          'type' => 'int',
+          'default' => 0,
+        ],
+        'test_field_3'  => [
+          'type' => 'int',
+          'default' => 0,
+        ],
+        'test_field_4'  => [
+          'type' => 'int',
+          'default' => 0,
+        ],
+        'test_field_5'  => [
+          'type' => 'int',
+          'default' => 0,
+        ],
+      ],
+      'primary key' => ['id', 'test_field_1'],
+      'unique keys' => [
+        'test_field_2' => ['test_field_2'],
+        'test_field_3_test_field_4' => ['test_field_3', 'test_field_4'],
+      ],
+      'indexes' => [
+        'test_field_4' => ['test_field_4'],
+        'test_field_4_test_field_5' => ['test_field_4', 'test_field_5'],
+      ],
+    ];
+
+    $table_name = strtolower($this->getRandomGenerator()->name());
+    $this->schema->createTable($table_name, $table_specification);
+
+    unset($table_specification['fields']);
+
+    $introspect_index_schema = new \ReflectionMethod(get_class($this->schema), 'introspectIndexSchema');
+    $introspect_index_schema->setAccessible(TRUE);
+    $index_schema = $introspect_index_schema->invoke($this->schema, $table_name);
+
+    // The PostgreSQL driver is using a custom naming scheme for its indexes, so
+    // we need to adjust the initial table specification.
+    $ensure_identifier_length = new \ReflectionMethod(get_class($this->schema), 'ensureIdentifiersLength');
+    $ensure_identifier_length->setAccessible(TRUE);
+
+    foreach ($table_specification['unique keys'] as $original_index_name => $columns) {
+      unset($table_specification['unique keys'][$original_index_name]);
+      $new_index_name = $ensure_identifier_length->invoke($this->schema, $table_name, $original_index_name, 'key');
+      $table_specification['unique keys'][$new_index_name] = $columns;
+    }
+
+    foreach ($table_specification['indexes'] as $original_index_name => $columns) {
+      unset($table_specification['indexes'][$original_index_name]);
+      $new_index_name = $ensure_identifier_length->invoke($this->schema, $table_name, $original_index_name, 'idx');
+      $table_specification['indexes'][$new_index_name] = $columns;
+    }
+
+    $this->assertEquals($table_specification, $index_schema);
+  }
+
+  /**
+   * @covers \Drupal\Core\Database\Driver\pgsql\Schema::extensionExists
+   */
+  public function testPgsqlExtensionExists(): void {
+    // Test the method for a non existing extension.
+    $this->assertFalse($this->schema->extensionExists('non_existing_extension'));
+
+    // Test the method for an existing extension.
+    $this->assertTrue($this->schema->extensionExists('pg_trgm'));
+  }
+
+}
diff --git a/core/modules/pgsql/tests/src/Kernel/pgsql/TemporaryQueryTest.php b/core/modules/pgsql/tests/src/Kernel/pgsql/TemporaryQueryTest.php
new file mode 100644
index 0000000000..03284e75f5
--- /dev/null
+++ b/core/modules/pgsql/tests/src/Kernel/pgsql/TemporaryQueryTest.php
@@ -0,0 +1,39 @@
+<?php
+
+namespace Drupal\Tests\pgsql\Kernel\pgsql;
+
+use Drupal\KernelTests\Core\Database\TemporaryQueryTestBase;
+
+/**
+ * Tests the temporary query functionality.
+ *
+ * @group Database
+ */
+class TemporaryQueryTest extends TemporaryQueryTestBase {
+
+  /**
+   * Confirms that temporary tables work.
+   */
+  public function testTemporaryQuery() {
+    parent::testTemporaryQuery();
+
+    $connection = $this->getConnection();
+
+    $table_name_test = $connection->queryTemporary('SELECT [name] FROM {test}', []);
+
+    // Assert that the table is indeed a temporary one.
+    $temporary_table_info = $connection->query("SELECT * FROM pg_class WHERE relname LIKE '%$table_name_test%'")->fetch();
+    $this->assertEquals("t", $temporary_table_info->relpersistence);
+
+    // Assert that both have the same field names.
+    $normal_table_fields = $connection->query("SELECT * FROM {test}")->fetch();
+    $temp_table_name = $connection->queryTemporary('SELECT * FROM {test}');
+    $temp_table_fields = $connection->query("SELECT * FROM {" . $temp_table_name . "}")->fetch();
+
+    $normal_table_fields = array_keys(get_object_vars($normal_table_fields));
+    $temp_table_fields = array_keys(get_object_vars($temp_table_fields));
+
+    $this->assertEmpty(array_diff($normal_table_fields, $temp_table_fields));
+  }
+
+}
diff --git a/core/tests/Drupal/Tests/Core/Database/Driver/pgsql/PostgresqlSchemaTest.php b/core/modules/pgsql/tests/src/Unit/SchemaTest.php
similarity index 95%
rename from core/tests/Drupal/Tests/Core/Database/Driver/pgsql/PostgresqlSchemaTest.php
rename to core/modules/pgsql/tests/src/Unit/SchemaTest.php
index 0e50eb1840..7673638143 100644
--- a/core/tests/Drupal/Tests/Core/Database/Driver/pgsql/PostgresqlSchemaTest.php
+++ b/core/modules/pgsql/tests/src/Unit/SchemaTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\Tests\Core\Database\Driver\pgsql;
+namespace Drupal\Tests\pgsql\Unit;
 
 use Drupal\pgsql\Driver\Database\pgsql\Schema;
 use Drupal\Tests\UnitTestCase;
@@ -11,7 +11,7 @@
  * @coversDefaultClass \Drupal\pgsql\Driver\Database\pgsql\Schema
  * @group Database
  */
-class PostgresqlSchemaTest extends UnitTestCase {
+class SchemaTest extends UnitTestCase {
 
   /**
    * The PostgreSql DB connection.
diff --git a/core/modules/responsive_image/migrations/d7_responsive_image_styles.yml b/core/modules/responsive_image/migrations/d7_responsive_image_styles.yml
index 2ed283c2ee..af4ac522b4 100644
--- a/core/modules/responsive_image/migrations/d7_responsive_image_styles.yml
+++ b/core/modules/responsive_image/migrations/d7_responsive_image_styles.yml
@@ -11,8 +11,8 @@ process:
   image_style_mappings:
     plugin: image_style_mappings
     source:
-     - mapping
-     - breakpoint_group
+      - mapping
+      - breakpoint_group
   breakpoint_group: breakpoint_group
 destination:
   plugin: entity:responsive_image_style
diff --git a/core/modules/responsive_image/src/Plugin/Field/FieldFormatter/ResponsiveImageFormatter.php b/core/modules/responsive_image/src/Plugin/Field/FieldFormatter/ResponsiveImageFormatter.php
index ca3bb39408..4c625da4fc 100644
--- a/core/modules/responsive_image/src/Plugin/Field/FieldFormatter/ResponsiveImageFormatter.php
+++ b/core/modules/responsive_image/src/Plugin/Field/FieldFormatter/ResponsiveImageFormatter.php
@@ -134,7 +134,7 @@ public function settingsForm(array $form, FormStateInterface $form_state) {
     }
 
     $elements['responsive_image_style'] = [
-      '#title' => t('Responsive image style'),
+      '#title' => $this->t('Responsive image style'),
       '#type' => 'select',
       '#default_value' => $this->getSetting('responsive_image_style') ?: NULL,
       '#required' => TRUE,
@@ -142,18 +142,18 @@ public function settingsForm(array $form, FormStateInterface $form_state) {
       '#description' => [
         '#markup' => $this->linkGenerator->generate($this->t('Configure Responsive Image Styles'), new Url('entity.responsive_image_style.collection')),
         '#access' => $this->currentUser->hasPermission('administer responsive image styles'),
-        ],
+      ],
     ];
 
     $link_types = [
-      'content' => t('Content'),
-      'file' => t('File'),
+      'content' => $this->t('Content'),
+      'file' => $this->t('File'),
     ];
     $elements['image_link'] = [
-      '#title' => t('Link image to'),
+      '#title' => $this->t('Link image to'),
       '#type' => 'select',
       '#default_value' => $this->getSetting('image_link'),
-      '#empty_option' => t('Nothing'),
+      '#empty_option' => $this->t('Nothing'),
       '#options' => $link_types,
     ];
 
@@ -168,11 +168,11 @@ public function settingsSummary() {
 
     $responsive_image_style = $this->responsiveImageStyleStorage->load($this->getSetting('responsive_image_style'));
     if ($responsive_image_style) {
-      $summary[] = t('Responsive image style: @responsive_image_style', ['@responsive_image_style' => $responsive_image_style->label()]);
+      $summary[] = $this->t('Responsive image style: @responsive_image_style', ['@responsive_image_style' => $responsive_image_style->label()]);
 
       $link_types = [
-        'content' => t('Linked to content'),
-        'file' => t('Linked to file'),
+        'content' => $this->t('Linked to content'),
+        'file' => $this->t('Linked to file'),
       ];
       // Display this setting only if image is linked.
       if (isset($link_types[$this->getSetting('image_link')])) {
@@ -180,7 +180,7 @@ public function settingsSummary() {
       }
     }
     else {
-      $summary[] = t('Select a responsive image style.');
+      $summary[] = $this->t('Select a responsive image style.');
     }
 
     return $summary;
diff --git a/core/modules/responsive_image/tests/src/Functional/ResponsiveImageFieldDisplayTest.php b/core/modules/responsive_image/tests/src/Functional/ResponsiveImageFieldDisplayTest.php
index e865b0ee29..8abca68b22 100644
--- a/core/modules/responsive_image/tests/src/Functional/ResponsiveImageFieldDisplayTest.php
+++ b/core/modules/responsive_image/tests/src/Functional/ResponsiveImageFieldDisplayTest.php
@@ -426,9 +426,9 @@ public function testResponsiveImageFieldFormattersOneSource() {
         'image_mapping' => 'medium',
       ])
       ->addImageStyleMapping('responsive_image_test_module.empty', '2x', [
-          'image_mapping_type' => 'image_style',
-          'image_mapping' => 'large',
-        ])
+        'image_mapping_type' => 'image_style',
+        'image_mapping' => 'large',
+      ])
       ->save();
     $node_storage = $this->container->get('entity_type.manager')->getStorage('node');
     $field_name = mb_strtolower($this->randomMachineName());
diff --git a/core/modules/responsive_image/tests/src/Unit/ResponsiveImageStyleConfigEntityUnitTest.php b/core/modules/responsive_image/tests/src/Unit/ResponsiveImageStyleConfigEntityUnitTest.php
index d6045e2420..0e6255f605 100644
--- a/core/modules/responsive_image/tests/src/Unit/ResponsiveImageStyleConfigEntityUnitTest.php
+++ b/core/modules/responsive_image/tests/src/Unit/ResponsiveImageStyleConfigEntityUnitTest.php
@@ -42,13 +42,13 @@ protected function setUp(): void {
     $this->entityType = $this->createMock('\Drupal\Core\Entity\EntityTypeInterface');
     $this->entityType->expects($this->any())
       ->method('getProvider')
-      ->will($this->returnValue('responsive_image'));
+      ->willReturn('responsive_image');
 
     $this->entityTypeManager = $this->createMock(EntityTypeManagerInterface::class);
     $this->entityTypeManager->expects($this->any())
       ->method('getDefinition')
       ->with('responsive_image_style')
-      ->will($this->returnValue($this->entityType));
+      ->willReturn($this->entityType);
 
     $this->breakpointManager = $this->createMock('\Drupal\breakpoint\BreakpointManagerInterface');
 
@@ -124,45 +124,45 @@ public function testHasImageStyleMappings() {
     $entity = new ResponsiveImageStyle([]);
     $this->assertFalse($entity->hasImageStyleMappings());
     $entity->addImageStyleMapping('test_breakpoint', '1x', [
-        'image_mapping_type' => 'image_style',
-        'image_mapping' => '',
+      'image_mapping_type' => 'image_style',
+      'image_mapping' => '',
     ]);
     $this->assertFalse($entity->hasImageStyleMappings());
     $entity->removeImageStyleMappings();
     $entity->addImageStyleMapping('test_breakpoint', '1x', [
-        'image_mapping_type' => 'sizes',
-        'image_mapping' => [
-          'sizes' => '(min-width:700px) 700px, 100vw',
-          'sizes_image_styles' => [],
-        ],
+      'image_mapping_type' => 'sizes',
+      'image_mapping' => [
+        'sizes' => '(min-width:700px) 700px, 100vw',
+        'sizes_image_styles' => [],
+      ],
     ]);
     $this->assertFalse($entity->hasImageStyleMappings());
     $entity->removeImageStyleMappings();
     $entity->addImageStyleMapping('test_breakpoint', '1x', [
-        'image_mapping_type' => 'sizes',
-        'image_mapping' => [
-          'sizes' => '',
-          'sizes_image_styles' => [
-            'large' => 'large',
-          ],
+      'image_mapping_type' => 'sizes',
+      'image_mapping' => [
+        'sizes' => '',
+        'sizes_image_styles' => [
+          'large' => 'large',
         ],
+      ],
     ]);
     $this->assertFalse($entity->hasImageStyleMappings());
     $entity->removeImageStyleMappings();
     $entity->addImageStyleMapping('test_breakpoint', '1x', [
-        'image_mapping_type' => 'image_style',
-        'image_mapping' => 'large',
+      'image_mapping_type' => 'image_style',
+      'image_mapping' => 'large',
     ]);
     $this->assertTrue($entity->hasImageStyleMappings());
     $entity->removeImageStyleMappings();
     $entity->addImageStyleMapping('test_breakpoint', '1x', [
-        'image_mapping_type' => 'sizes',
-        'image_mapping' => [
-          'sizes' => '(min-width:700px) 700px, 100vw',
-          'sizes_image_styles' => [
-            'large' => 'large',
-          ],
+      'image_mapping_type' => 'sizes',
+      'image_mapping' => [
+        'sizes' => '(min-width:700px) 700px, 100vw',
+        'sizes_image_styles' => [
+          'large' => 'large',
         ],
+      ],
     ]);
     $this->assertTrue($entity->hasImageStyleMappings());
   }
diff --git a/core/modules/rest/src/Plugin/views/row/DataEntityRow.php b/core/modules/rest/src/Plugin/views/row/DataEntityRow.php
index 1ea81d785d..f583687a82 100644
--- a/core/modules/rest/src/Plugin/views/row/DataEntityRow.php
+++ b/core/modules/rest/src/Plugin/views/row/DataEntityRow.php
@@ -107,7 +107,7 @@ public static function create(ContainerInterface $container, array $configuratio
    * {@inheritdoc}
    */
   public function render($row) {
-    return $this->getEntityTranslation($row->_entity, $row);
+    return $this->getEntityTranslationByRelationship($row->_entity, $row);
   }
 
   /**
diff --git a/core/modules/rest/tests/modules/rest_test/rest_test.services.yml b/core/modules/rest/tests/modules/rest_test/rest_test.services.yml
index 85b418a6c6..4ccb316c42 100644
--- a/core/modules/rest/tests/modules/rest_test/rest_test.services.yml
+++ b/core/modules/rest/tests/modules/rest_test/rest_test.services.yml
@@ -8,10 +8,10 @@ services:
     tags:
       - { name: authentication_provider, provider_id: 'rest_test_auth_global', global: TRUE }
   rest_test.page_cache_request_policy.deny_test_auth_requests:
-      class: Drupal\rest_test\PageCache\RequestPolicy\DenyTestAuthRequests
-      public: false
-      tags:
-        - { name: page_cache_request_policy }
+    class: Drupal\rest_test\PageCache\RequestPolicy\DenyTestAuthRequests
+    public: false
+    tags:
+      - { name: page_cache_request_policy }
   rest_test.encoder.foobar:
     class: Drupal\serialization\Encoder\JsonEncoder
     tags:
diff --git a/core/modules/rest/tests/src/Functional/EntityResource/EntityResourceTestBase.php b/core/modules/rest/tests/src/Functional/EntityResource/EntityResourceTestBase.php
index a97cfa3a6c..b7175788e9 100644
--- a/core/modules/rest/tests/src/Functional/EntityResource/EntityResourceTestBase.php
+++ b/core/modules/rest/tests/src/Functional/EntityResource/EntityResourceTestBase.php
@@ -85,6 +85,8 @@ abstract class EntityResourceTestBase extends ResourceTestBase {
   protected static $patchProtectedFieldNames;
 
   /**
+   * The unique field names.
+   *
    * The fields that need a different (random) value for each new entity created
    * by a POST request.
    *
@@ -93,6 +95,8 @@ abstract class EntityResourceTestBase extends ResourceTestBase {
   protected static $uniqueFieldNames = [];
 
   /**
+   * The field name for the label.
+   *
    * Optionally specify which field is the 'label' field. Some entities do not
    * specify a 'label' entity key. For example: User.
    *
@@ -519,19 +523,18 @@ public function testGet() {
     // @see \Drupal\rest\EventSubscriber\ResourceResponseSubscriber::flattenResponse()
     $cache_items = $this->container->get('database')
       ->select('cache_dynamic_page_cache', 'c')
-      ->fields('c', ['cid', 'data'])
+      ->fields('c', ['data'])
       ->condition('c.cid', '%[route]=rest.%', 'LIKE')
       ->execute()
-      ->fetchAllAssoc('cid');
+      ->fetchAll();
     if (!$is_cacheable_by_dynamic_page_cache) {
       $this->assertCount(0, $cache_items);
     }
     else {
-      $this->assertCount(2, $cache_items);
-      $found_cache_redirect = FALSE;
+      $this->assertLessThanOrEqual(2, count($cache_items));
       $found_cached_200_response = FALSE;
       $other_cached_responses_are_4xx = TRUE;
-      foreach ($cache_items as $cid => $cache_item) {
+      foreach ($cache_items as $cache_item) {
         $cached_data = unserialize($cache_item->data);
         if (!isset($cached_data['#cache_redirect'])) {
           $cached_response = $cached_data['#response'];
@@ -544,11 +547,7 @@ public function testGet() {
           $this->assertNotInstanceOf(ResourceResponseInterface::class, $cached_response);
           $this->assertInstanceOf(CacheableResponseInterface::class, $cached_response);
         }
-        else {
-          $found_cache_redirect = TRUE;
-        }
       }
-      $this->assertTrue($found_cache_redirect);
       $this->assertTrue($found_cached_200_response);
       $this->assertTrue($other_cached_responses_are_4xx);
     }
diff --git a/core/modules/rest/tests/src/Functional/Views/StyleSerializerTest.php b/core/modules/rest/tests/src/Functional/Views/StyleSerializerTest.php
index f83369b213..7360f4d865 100644
--- a/core/modules/rest/tests/src/Functional/Views/StyleSerializerTest.php
+++ b/core/modules/rest/tests/src/Functional/Views/StyleSerializerTest.php
@@ -70,6 +70,9 @@ class StyleSerializerTest extends ViewTestBase {
    */
   protected $renderer;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp($import_test_views = TRUE, $modules = ['rest_test_views']): void {
     parent::setUp($import_test_views, $modules);
 
diff --git a/core/modules/rest/tests/src/Unit/CollectRoutesTest.php b/core/modules/rest/tests/src/Unit/CollectRoutesTest.php
index b5c390d4dc..8e60baa9b7 100644
--- a/core/modules/rest/tests/src/Unit/CollectRoutesTest.php
+++ b/core/modules/rest/tests/src/Unit/CollectRoutesTest.php
@@ -85,7 +85,7 @@ protected function setUp(): void {
     $container->set('authentication_collector', $authentication_collector);
     $authentication_collector->expects($this->any())
       ->method('getSortedProviders')
-      ->will($this->returnValue(['basic_auth' => 'data', 'cookie' => 'data']));
+      ->willReturn(['basic_auth' => 'data', 'cookie' => 'data']);
 
     $container->setParameter('serializer.format_providers', ['json']);
 
@@ -105,7 +105,7 @@ protected function setUp(): void {
 
     $display_manager->expects($this->once())
       ->method('getDefinition')
-      ->will($this->returnValue(['id' => 'test', 'provider' => 'test']));
+      ->willReturn(['id' => 'test', 'provider' => 'test']);
 
     $none = $this->getMockBuilder('\Drupal\views\Plugin\views\access\None')
       ->disableOriginalConstructor()
@@ -113,7 +113,7 @@ protected function setUp(): void {
 
     $access_manager->expects($this->once())
       ->method('createInstance')
-      ->will($this->returnValue($none));
+      ->willReturn($none);
 
     $style_plugin = $this->getMockBuilder('\Drupal\rest\Plugin\views\style\Serializer')
       ->onlyMethods(['getFormats', 'init'])
@@ -122,16 +122,16 @@ protected function setUp(): void {
 
     $style_plugin->expects($this->once())
       ->method('getFormats')
-      ->will($this->returnValue(['json']));
+      ->willReturn(['json']);
 
     $style_plugin->expects($this->once())
       ->method('init')
       ->with($view_executable)
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $style_manager->expects($this->once())
       ->method('createInstance')
-      ->will($this->returnValue($style_plugin));
+      ->willReturn($style_plugin);
 
     $this->routes = new RouteCollection();
     $this->routes->add('test_1', new Route('/test/1'));
diff --git a/core/modules/rest/tests/src/Unit/EntityResourceValidationTraitTest.php b/core/modules/rest/tests/src/Unit/EntityResourceValidationTraitTest.php
index 17d512e41b..99bd36db1e 100644
--- a/core/modules/rest/tests/src/Unit/EntityResourceValidationTraitTest.php
+++ b/core/modules/rest/tests/src/Unit/EntityResourceValidationTraitTest.php
@@ -56,7 +56,7 @@ public function testFailedValidate() {
 
     $violations->expects($this->once())
       ->method('filterByFieldAccess')
-      ->will($this->returnValue([]));
+      ->willReturn([]);
 
     $entity->validate()->willReturn($violations);
 
diff --git a/core/modules/search/tests/modules/search_extra_type/src/Plugin/Search/SearchExtraTypeSearch.php b/core/modules/search/tests/modules/search_extra_type/src/Plugin/Search/SearchExtraTypeSearch.php
index 2ae2682ba7..5726e247f6 100644
--- a/core/modules/search/tests/modules/search_extra_type/src/Plugin/Search/SearchExtraTypeSearch.php
+++ b/core/modules/search/tests/modules/search_extra_type/src/Plugin/Search/SearchExtraTypeSearch.php
@@ -26,6 +26,7 @@ public function setSearch($keywords, array $parameters, array $attributes) {
       $parameters['search_conditions'] = '';
     }
     parent::setSearch($keywords, $parameters, $attributes);
+    return $this;
   }
 
   /**
@@ -91,16 +92,16 @@ public function buildConfigurationForm(array $form, FormStateInterface $form_sta
     // Output form for defining rank factor weights.
     $form['extra_type_settings'] = [
       '#type' => 'fieldset',
-      '#title' => t('Extra type settings'),
+      '#title' => $this->t('Extra type settings'),
       '#tree' => TRUE,
     ];
 
     $form['extra_type_settings']['boost'] = [
       '#type' => 'select',
-      '#title' => t('Boost method'),
+      '#title' => $this->t('Boost method'),
       '#options' => [
-        'bi' => t('Bistro mathematics'),
-        'ii' => t('Infinite Improbability'),
+        'bi' => $this->t('Bistro mathematics'),
+        'ii' => $this->t('Infinite Improbability'),
       ],
       '#default_value' => $this->configuration['boost'],
     ];
diff --git a/core/modules/search/tests/src/Functional/SearchAdvancedSearchFormTest.php b/core/modules/search/tests/src/Functional/SearchAdvancedSearchFormTest.php
index 1189a5e93a..e1b330cb5f 100644
--- a/core/modules/search/tests/src/Functional/SearchAdvancedSearchFormTest.php
+++ b/core/modules/search/tests/src/Functional/SearchAdvancedSearchFormTest.php
@@ -28,6 +28,9 @@ class SearchAdvancedSearchFormTest extends BrowserTestBase {
    */
   protected $node;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/search/tests/src/Functional/SearchBlockTest.php b/core/modules/search/tests/src/Functional/SearchBlockTest.php
index 884751e805..6ac385fe41 100644
--- a/core/modules/search/tests/src/Functional/SearchBlockTest.php
+++ b/core/modules/search/tests/src/Functional/SearchBlockTest.php
@@ -62,9 +62,7 @@ public function testSearchFormBlock() {
     $this->assertSession()->pageTextContains($block->label());
 
     // Check that name attribute is not empty.
-    $pattern = "//input[@type='submit' and @name='']";
-    $elements = $this->xpath($pattern);
-    $this->assertEmpty($elements, 'The search input field does not have empty name attribute.');
+    $this->assertSession()->elementNotExists('xpath', "//input[@type='submit' and @name='']");
 
     // Test a normal search via the block form, from the front page.
     $terms = ['keys' => 'test'];
diff --git a/core/modules/search/tests/src/Functional/SearchCommentCountToggleTest.php b/core/modules/search/tests/src/Functional/SearchCommentCountToggleTest.php
index b95a74ec5a..27c537d60d 100644
--- a/core/modules/search/tests/src/Functional/SearchCommentCountToggleTest.php
+++ b/core/modules/search/tests/src/Functional/SearchCommentCountToggleTest.php
@@ -46,6 +46,9 @@ class SearchCommentCountToggleTest extends BrowserTestBase {
    */
   protected $searchableNodes;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/search/tests/src/Functional/SearchCommentTest.php b/core/modules/search/tests/src/Functional/SearchCommentTest.php
index 25142d8940..dd61a161a7 100644
--- a/core/modules/search/tests/src/Functional/SearchCommentTest.php
+++ b/core/modules/search/tests/src/Functional/SearchCommentTest.php
@@ -59,6 +59,9 @@ class SearchCommentTest extends BrowserTestBase {
    */
   protected $node;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/search/tests/src/Functional/SearchConfigSettingsFormTest.php b/core/modules/search/tests/src/Functional/SearchConfigSettingsFormTest.php
index 3ace4e846f..451a1acccf 100644
--- a/core/modules/search/tests/src/Functional/SearchConfigSettingsFormTest.php
+++ b/core/modules/search/tests/src/Functional/SearchConfigSettingsFormTest.php
@@ -45,6 +45,9 @@ class SearchConfigSettingsFormTest extends BrowserTestBase {
    */
   protected $searchNode;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/search/tests/src/Functional/SearchDateIntervalTest.php b/core/modules/search/tests/src/Functional/SearchDateIntervalTest.php
index 4f52f322b0..e7ecdf8e43 100644
--- a/core/modules/search/tests/src/Functional/SearchDateIntervalTest.php
+++ b/core/modules/search/tests/src/Functional/SearchDateIntervalTest.php
@@ -27,6 +27,9 @@ class SearchDateIntervalTest extends BrowserTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/search/tests/src/Functional/SearchEmbedFormTest.php b/core/modules/search/tests/src/Functional/SearchEmbedFormTest.php
index 22fac20176..ddba079a2a 100644
--- a/core/modules/search/tests/src/Functional/SearchEmbedFormTest.php
+++ b/core/modules/search/tests/src/Functional/SearchEmbedFormTest.php
@@ -35,6 +35,9 @@ class SearchEmbedFormTest extends BrowserTestBase {
    */
   protected $submitCount = 0;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/search/tests/src/Functional/SearchKeywordsConditionsTest.php b/core/modules/search/tests/src/Functional/SearchKeywordsConditionsTest.php
index ac6f745229..07ab8fcc7a 100644
--- a/core/modules/search/tests/src/Functional/SearchKeywordsConditionsTest.php
+++ b/core/modules/search/tests/src/Functional/SearchKeywordsConditionsTest.php
@@ -38,6 +38,9 @@ class SearchKeywordsConditionsTest extends BrowserTestBase {
    */
   protected $searchingUser;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/search/tests/src/Functional/SearchLanguageTest.php b/core/modules/search/tests/src/Functional/SearchLanguageTest.php
index 24d5d2cb8c..e66a2f5d19 100644
--- a/core/modules/search/tests/src/Functional/SearchLanguageTest.php
+++ b/core/modules/search/tests/src/Functional/SearchLanguageTest.php
@@ -31,6 +31,9 @@ class SearchLanguageTest extends BrowserTestBase {
    */
   protected $searchableNodes;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/search/tests/src/Functional/SearchMultilingualEntityTest.php b/core/modules/search/tests/src/Functional/SearchMultilingualEntityTest.php
index a8dbc5d130..b6a939b0b8 100644
--- a/core/modules/search/tests/src/Functional/SearchMultilingualEntityTest.php
+++ b/core/modules/search/tests/src/Functional/SearchMultilingualEntityTest.php
@@ -45,6 +45,9 @@ class SearchMultilingualEntityTest extends BrowserTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/search/tests/src/Functional/SearchNodeDiacriticsTest.php b/core/modules/search/tests/src/Functional/SearchNodeDiacriticsTest.php
index 09d9db2c7e..b3830a6d83 100644
--- a/core/modules/search/tests/src/Functional/SearchNodeDiacriticsTest.php
+++ b/core/modules/search/tests/src/Functional/SearchNodeDiacriticsTest.php
@@ -28,6 +28,9 @@ class SearchNodeDiacriticsTest extends BrowserTestBase {
    */
   public $testUser;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/search/tests/src/Functional/SearchNodePunctuationTest.php b/core/modules/search/tests/src/Functional/SearchNodePunctuationTest.php
index f435dff141..6320cb193f 100644
--- a/core/modules/search/tests/src/Functional/SearchNodePunctuationTest.php
+++ b/core/modules/search/tests/src/Functional/SearchNodePunctuationTest.php
@@ -28,6 +28,9 @@ class SearchNodePunctuationTest extends BrowserTestBase {
    */
   public $testUser;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/search/tests/src/Functional/SearchNodeUpdateAndDeletionTest.php b/core/modules/search/tests/src/Functional/SearchNodeUpdateAndDeletionTest.php
index 66e90b3996..c01a42f34c 100644
--- a/core/modules/search/tests/src/Functional/SearchNodeUpdateAndDeletionTest.php
+++ b/core/modules/search/tests/src/Functional/SearchNodeUpdateAndDeletionTest.php
@@ -30,6 +30,9 @@ class SearchNodeUpdateAndDeletionTest extends BrowserTestBase {
    */
   public $testUser;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/search/tests/src/Functional/SearchNumberMatchingTest.php b/core/modules/search/tests/src/Functional/SearchNumberMatchingTest.php
index f2aab18eab..f6f0acf0bc 100644
--- a/core/modules/search/tests/src/Functional/SearchNumberMatchingTest.php
+++ b/core/modules/search/tests/src/Functional/SearchNumberMatchingTest.php
@@ -59,6 +59,9 @@ class SearchNumberMatchingTest extends BrowserTestBase {
    */
   protected $nodes;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/search/tests/src/Functional/SearchNumbersTest.php b/core/modules/search/tests/src/Functional/SearchNumbersTest.php
index d8c335b1ef..1e10e21c08 100644
--- a/core/modules/search/tests/src/Functional/SearchNumbersTest.php
+++ b/core/modules/search/tests/src/Functional/SearchNumbersTest.php
@@ -65,6 +65,9 @@ class SearchNumbersTest extends BrowserTestBase {
    */
   protected $nodes;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/search/tests/src/Functional/SearchPageOverrideTest.php b/core/modules/search/tests/src/Functional/SearchPageOverrideTest.php
index 60699409aa..d1dc9cc023 100644
--- a/core/modules/search/tests/src/Functional/SearchPageOverrideTest.php
+++ b/core/modules/search/tests/src/Functional/SearchPageOverrideTest.php
@@ -31,6 +31,9 @@ class SearchPageOverrideTest extends BrowserTestBase {
    */
   public $searchUser;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/search/tests/src/Functional/SearchPreprocessLangcodeTest.php b/core/modules/search/tests/src/Functional/SearchPreprocessLangcodeTest.php
index 8413f8e65e..2f57b6a44a 100644
--- a/core/modules/search/tests/src/Functional/SearchPreprocessLangcodeTest.php
+++ b/core/modules/search/tests/src/Functional/SearchPreprocessLangcodeTest.php
@@ -28,6 +28,9 @@ class SearchPreprocessLangcodeTest extends BrowserTestBase {
    */
   protected $node;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/search/tests/src/Functional/SearchRankingTest.php b/core/modules/search/tests/src/Functional/SearchRankingTest.php
index d444d3e2fa..30fb78ff16 100644
--- a/core/modules/search/tests/src/Functional/SearchRankingTest.php
+++ b/core/modules/search/tests/src/Functional/SearchRankingTest.php
@@ -40,6 +40,9 @@ class SearchRankingTest extends BrowserTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/search/tests/src/Functional/SearchSetLocaleTest.php b/core/modules/search/tests/src/Functional/SearchSetLocaleTest.php
index 650fb8d85e..95dba20b3f 100644
--- a/core/modules/search/tests/src/Functional/SearchSetLocaleTest.php
+++ b/core/modules/search/tests/src/Functional/SearchSetLocaleTest.php
@@ -28,6 +28,9 @@ class SearchSetLocaleTest extends BrowserTestBase {
    */
   protected $nodeSearchPlugin;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/search/tests/src/Unit/SearchPageRepositoryTest.php b/core/modules/search/tests/src/Unit/SearchPageRepositoryTest.php
index d12bd8d3f8..686129b5a6 100644
--- a/core/modules/search/tests/src/Unit/SearchPageRepositoryTest.php
+++ b/core/modules/search/tests/src/Unit/SearchPageRepositoryTest.php
@@ -55,13 +55,13 @@ protected function setUp(): void {
     $this->storage = $this->createMock('Drupal\Core\Config\Entity\ConfigEntityStorageInterface');
     $this->storage->expects($this->any())
       ->method('getQuery')
-      ->will($this->returnValue($this->query));
+      ->willReturn($this->query);
 
     /** @var \Drupal\Core\Entity\EntityTypeManagerInterface|\PHPUnit\Framework\MockObject\MockObject $entity_type_manager */
     $entity_type_manager = $this->createMock(EntityTypeManagerInterface::class);
     $entity_type_manager->expects($this->any())
       ->method('getStorage')
-      ->will($this->returnValue($this->storage));
+      ->willReturn($this->storage);
 
     $this->configFactory = $this->createMock('Drupal\Core\Config\ConfigFactoryInterface');
     $this->searchPageRepository = new SearchPageRepository($this->configFactory, $entity_type_manager);
@@ -74,10 +74,10 @@ public function testGetActiveSearchPages() {
     $this->query->expects($this->once())
       ->method('condition')
       ->with('status', TRUE)
-      ->will($this->returnValue($this->query));
+      ->willReturn($this->query);
     $this->query->expects($this->once())
       ->method('execute')
-      ->will($this->returnValue(['test' => 'test', 'other_test' => 'other_test']));
+      ->willReturn(['test' => 'test', 'other_test' => 'other_test']);
 
     $entities = [];
     $entities['test'] = $this->createMock('Drupal\search\SearchPageInterface');
@@ -85,7 +85,7 @@ public function testGetActiveSearchPages() {
     $this->storage->expects($this->once())
       ->method('loadMultiple')
       ->with(['test' => 'test', 'other_test' => 'other_test'])
-      ->will($this->returnValue($entities));
+      ->willReturn($entities);
 
     $result = $this->searchPageRepository->getActiveSearchPages();
     $this->assertSame($entities, $result);
@@ -98,14 +98,14 @@ public function testIsSearchActive() {
     $this->query->expects($this->once())
       ->method('condition')
       ->with('status', TRUE)
-      ->will($this->returnValue($this->query));
+      ->willReturn($this->query);
     $this->query->expects($this->once())
       ->method('range')
       ->with(0, 1)
-      ->will($this->returnValue($this->query));
+      ->willReturn($this->query);
     $this->query->expects($this->once())
       ->method('execute')
-      ->will($this->returnValue(['test' => 'test']));
+      ->willReturn(['test' => 'test']);
 
     $this->assertTrue($this->searchPageRepository->isSearchActive());
   }
@@ -117,24 +117,24 @@ public function testGetIndexableSearchPages() {
     $this->query->expects($this->once())
       ->method('condition')
       ->with('status', TRUE)
-      ->will($this->returnValue($this->query));
+      ->willReturn($this->query);
     $this->query->expects($this->once())
       ->method('execute')
-      ->will($this->returnValue(['test' => 'test', 'other_test' => 'other_test']));
+      ->willReturn(['test' => 'test', 'other_test' => 'other_test']);
 
     $entities = [];
     $entities['test'] = $this->createMock('Drupal\search\SearchPageInterface');
     $entities['test']->expects($this->once())
       ->method('isIndexable')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
     $entities['other_test'] = $this->createMock('Drupal\search\SearchPageInterface');
     $entities['other_test']->expects($this->once())
       ->method('isIndexable')
-      ->will($this->returnValue(FALSE));
+      ->willReturn(FALSE);
     $this->storage->expects($this->once())
       ->method('loadMultiple')
       ->with(['test' => 'test', 'other_test' => 'other_test'])
-      ->will($this->returnValue($entities));
+      ->willReturn($entities);
 
     $result = $this->searchPageRepository->getIndexableSearchPages();
     $this->assertCount(1, $result);
@@ -151,11 +151,11 @@ public function testClearDefaultSearchPage() {
     $config->expects($this->once())
       ->method('clear')
       ->with('default_page')
-      ->will($this->returnValue($config));
+      ->willReturn($config);
     $this->configFactory->expects($this->once())
       ->method('getEditable')
       ->with('search.settings')
-      ->will($this->returnValue($config));
+      ->willReturn($config);
     $this->searchPageRepository->clearDefaultSearchPage();
   }
 
@@ -166,10 +166,10 @@ public function testGetDefaultSearchPageWithActiveDefault() {
     $this->query->expects($this->once())
       ->method('condition')
       ->with('status', TRUE)
-      ->will($this->returnValue($this->query));
+      ->willReturn($this->query);
     $this->query->expects($this->once())
       ->method('execute')
-      ->will($this->returnValue(['test' => 'test', 'other_test' => 'other_test']));
+      ->willReturn(['test' => 'test', 'other_test' => 'other_test']);
 
     $config = $this->getMockBuilder('Drupal\Core\Config\Config')
       ->disableOriginalConstructor()
@@ -177,11 +177,11 @@ public function testGetDefaultSearchPageWithActiveDefault() {
     $config->expects($this->once())
       ->method('get')
       ->with('default_page')
-      ->will($this->returnValue('test'));
+      ->willReturn('test');
     $this->configFactory->expects($this->once())
       ->method('get')
       ->with('search.settings')
-      ->will($this->returnValue($config));
+      ->willReturn($config);
 
     $this->assertSame('test', $this->searchPageRepository->getDefaultSearchPage());
   }
@@ -193,10 +193,10 @@ public function testGetDefaultSearchPageWithInactiveDefault() {
     $this->query->expects($this->once())
       ->method('condition')
       ->with('status', TRUE)
-      ->will($this->returnValue($this->query));
+      ->willReturn($this->query);
     $this->query->expects($this->once())
       ->method('execute')
-      ->will($this->returnValue(['test' => 'test']));
+      ->willReturn(['test' => 'test']);
 
     $config = $this->getMockBuilder('Drupal\Core\Config\Config')
       ->disableOriginalConstructor()
@@ -204,11 +204,11 @@ public function testGetDefaultSearchPageWithInactiveDefault() {
     $config->expects($this->once())
       ->method('get')
       ->with('default_page')
-      ->will($this->returnValue('other_test'));
+      ->willReturn('other_test');
     $this->configFactory->expects($this->once())
       ->method('get')
       ->with('search.settings')
-      ->will($this->returnValue($config));
+      ->willReturn($config);
 
     $this->assertSame('test', $this->searchPageRepository->getDefaultSearchPage());
   }
@@ -224,25 +224,25 @@ public function testSetDefaultSearchPage() {
     $config->expects($this->once())
       ->method('set')
       ->with('default_page', $id)
-      ->will($this->returnValue($config));
+      ->willReturn($config);
     $config->expects($this->once())
       ->method('save')
-      ->will($this->returnValue($config));
+      ->willReturn($config);
     $this->configFactory->expects($this->once())
       ->method('getEditable')
       ->with('search.settings')
-      ->will($this->returnValue($config));
+      ->willReturn($config);
 
     $search_page = $this->createMock('Drupal\search\SearchPageInterface');
     $search_page->expects($this->once())
       ->method('id')
-      ->will($this->returnValue($id));
+      ->willReturn($id);
     $search_page->expects($this->once())
       ->method('enable')
-      ->will($this->returnValue($search_page));
+      ->willReturn($search_page);
     $search_page->expects($this->once())
       ->method('save')
-      ->will($this->returnValue($search_page));
+      ->willReturn($search_page);
     $this->searchPageRepository->setDefaultSearchPage($search_page);
   }
 
@@ -253,10 +253,10 @@ public function testSortSearchPages() {
     $entity_type = $this->createMock('Drupal\Core\Entity\EntityTypeInterface');
     $entity_type->expects($this->any())
       ->method('getClass')
-      ->will($this->returnValue('Drupal\Tests\search\Unit\TestSearchPage'));
+      ->willReturn('Drupal\Tests\search\Unit\TestSearchPage');
     $this->storage->expects($this->once())
       ->method('getEntityType')
-      ->will($this->returnValue($entity_type));
+      ->willReturn($entity_type);
 
     // Declare entities out of their expected order so we can be sure they were
     // sorted. We cannot mock these because of uasort(), see
diff --git a/core/modules/search/tests/src/Unit/SearchPluginCollectionTest.php b/core/modules/search/tests/src/Unit/SearchPluginCollectionTest.php
index 1e6d74adcb..0f2369bda5 100644
--- a/core/modules/search/tests/src/Unit/SearchPluginCollectionTest.php
+++ b/core/modules/search/tests/src/Unit/SearchPluginCollectionTest.php
@@ -47,7 +47,7 @@ public function testGet() {
     $plugin = $this->createMock('Drupal\search\Plugin\SearchInterface');
     $this->pluginManager->expects($this->once())
       ->method('createInstance')
-      ->will($this->returnValue($plugin));
+      ->willReturn($plugin);
     $this->assertSame($plugin, $this->searchPluginCollection->get('banana'));
   }
 
@@ -59,11 +59,11 @@ public function testGetWithConfigurablePlugin() {
     $plugin->expects($this->once())
       ->method('setSearchPageId')
       ->with('fruit_stand')
-      ->will($this->returnValue($plugin));
+      ->willReturn($plugin);
 
     $this->pluginManager->expects($this->once())
       ->method('createInstance')
-      ->will($this->returnValue($plugin));
+      ->willReturn($plugin);
 
     $this->assertSame($plugin, $this->searchPluginCollection->get('banana'));
   }
diff --git a/core/modules/serialization/serialization.services.yml b/core/modules/serialization/serialization.services.yml
index 44a4b416a1..a5c6f67a72 100644
--- a/core/modules/serialization/serialization.services.yml
+++ b/core/modules/serialization/serialization.services.yml
@@ -71,14 +71,14 @@ services:
       # Priority must be higher than serializer.normalizer.primitive_data.
       - { name: normalizer, priority: 20 }
   serializer.normalizer.password_field_item:
-      class: Drupal\serialization\Normalizer\NullNormalizer
-      arguments: ['Drupal\Core\Field\Plugin\Field\FieldType\PasswordItem']
-      tags:
-        - { name: normalizer, priority: 20 }
+    class: Drupal\serialization\Normalizer\NullNormalizer
+    arguments: ['Drupal\Core\Field\Plugin\Field\FieldType\PasswordItem']
+    tags:
+      - { name: normalizer, priority: 20 }
   serializer.normalizer.safe_string:
-      class: Drupal\serialization\Normalizer\MarkupNormalizer
-      tags:
-        - { name: normalizer }
+    class: Drupal\serialization\Normalizer\MarkupNormalizer
+    tags:
+      - { name: normalizer }
   serializer.normalizer.typed_data:
     class: Drupal\serialization\Normalizer\TypedDataNormalizer
     tags:
diff --git a/core/modules/serialization/tests/src/Kernel/EntitySerializationTest.php b/core/modules/serialization/tests/src/Kernel/EntitySerializationTest.php
index 6e997dd016..46efba468c 100644
--- a/core/modules/serialization/tests/src/Kernel/EntitySerializationTest.php
+++ b/core/modules/serialization/tests/src/Kernel/EntitySerializationTest.php
@@ -70,6 +70,9 @@ class EntitySerializationTest extends NormalizerTestBase {
    */
   protected $entityClass = 'Drupal\entity_test\Entity\EntityTest';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
@@ -324,7 +327,7 @@ public function testDenormalizeInvalidCustomSerializedField() {
     $this->serializer->denormalize([
       'serialized_long' => [
         [
-         'value' => 'boo',
+          'value' => 'boo',
         ],
       ],
       'type' => 'entity_test_serialized_field',
diff --git a/core/modules/serialization/tests/src/Kernel/NormalizerTestBase.php b/core/modules/serialization/tests/src/Kernel/NormalizerTestBase.php
index bba9f0c57a..d3c7219ab3 100644
--- a/core/modules/serialization/tests/src/Kernel/NormalizerTestBase.php
+++ b/core/modules/serialization/tests/src/Kernel/NormalizerTestBase.php
@@ -26,6 +26,9 @@ abstract class NormalizerTestBase extends KernelTestBase {
     'user',
   ];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/serialization/tests/src/Kernel/SerializationTest.php b/core/modules/serialization/tests/src/Kernel/SerializationTest.php
index 700b48ac2b..b46e82d3d3 100644
--- a/core/modules/serialization/tests/src/Kernel/SerializationTest.php
+++ b/core/modules/serialization/tests/src/Kernel/SerializationTest.php
@@ -26,6 +26,9 @@ class SerializationTest extends KernelTestBase {
    */
   protected $serializer;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->serializer = $this->container->get('serializer');
diff --git a/core/modules/serialization/tests/src/Unit/Encoder/XmlEncoderTest.php b/core/modules/serialization/tests/src/Unit/Encoder/XmlEncoderTest.php
index 6ccac13695..0c8c7df863 100644
--- a/core/modules/serialization/tests/src/Unit/Encoder/XmlEncoderTest.php
+++ b/core/modules/serialization/tests/src/Unit/Encoder/XmlEncoderTest.php
@@ -33,6 +33,9 @@ class XmlEncoderTest extends UnitTestCase {
    */
   protected $testArray = ['test' => 'test'];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     $this->baseEncoder = $this->createMock(BaseXmlEncoder::class);
     $this->encoder = new XmlEncoder();
@@ -62,7 +65,7 @@ public function testEncode() {
     $this->baseEncoder->expects($this->once())
       ->method('encode')
       ->with($this->testArray, 'test', [])
-      ->will($this->returnValue('test'));
+      ->willReturn('test');
 
     $this->assertEquals('test', $this->encoder->encode($this->testArray, 'test'));
   }
@@ -74,7 +77,7 @@ public function testDecode() {
     $this->baseEncoder->expects($this->once())
       ->method('decode')
       ->with('test', 'test', [])
-      ->will($this->returnValue($this->testArray));
+      ->willReturn($this->testArray);
 
     $this->assertEquals($this->testArray, $this->encoder->decode('test', 'test'));
   }
diff --git a/core/modules/serialization/tests/src/Unit/EntityResolver/ChainEntityResolverTest.php b/core/modules/serialization/tests/src/Unit/EntityResolver/ChainEntityResolverTest.php
index 76800296df..7e85502c7f 100644
--- a/core/modules/serialization/tests/src/Unit/EntityResolver/ChainEntityResolverTest.php
+++ b/core/modules/serialization/tests/src/Unit/EntityResolver/ChainEntityResolverTest.php
@@ -140,7 +140,7 @@ protected function createEntityResolverMock($return = NULL, $called = TRUE) {
       $mock->expects($this->once())
         ->method('resolve')
         ->with($this->testNormalizer, $this->testData, $this->testEntityType)
-        ->will($this->returnValue($return));
+        ->willReturn($return);
     }
     else {
       $mock->expects($this->never())
diff --git a/core/modules/serialization/tests/src/Unit/EntityResolver/UuidResolverTest.php b/core/modules/serialization/tests/src/Unit/EntityResolver/UuidResolverTest.php
index 9094e80609..0d6c0a1d36 100644
--- a/core/modules/serialization/tests/src/Unit/EntityResolver/UuidResolverTest.php
+++ b/core/modules/serialization/tests/src/Unit/EntityResolver/UuidResolverTest.php
@@ -57,7 +57,7 @@ public function testResolveNoUuid() {
     $normalizer->expects($this->once())
       ->method('getUuid')
       ->with([])
-      ->will($this->returnValue(NULL));
+      ->willReturn(NULL);
     $this->assertNull($this->resolver->resolve($normalizer, [], 'test_type'));
   }
 
@@ -70,13 +70,13 @@ public function testResolveNoEntity() {
     $this->entityRepository->expects($this->once())
       ->method('loadEntityByUuid')
       ->with('test_type')
-      ->will($this->returnValue(NULL));
+      ->willReturn(NULL);
 
     $normalizer = $this->createMock('Drupal\serialization\EntityResolver\UuidReferenceInterface');
     $normalizer->expects($this->once())
       ->method('getUuid')
       ->with([])
-      ->will($this->returnValue($uuid));
+      ->willReturn($uuid);
 
     $this->assertNull($this->resolver->resolve($normalizer, [], 'test_type'));
   }
@@ -90,18 +90,18 @@ public function testResolveWithEntity() {
     $entity = $this->createMock('Drupal\Core\Entity\EntityInterface');
     $entity->expects($this->once())
       ->method('id')
-      ->will($this->returnValue(1));
+      ->willReturn(1);
 
     $this->entityRepository->expects($this->once())
       ->method('loadEntityByUuid')
       ->with('test_type', $uuid)
-      ->will($this->returnValue($entity));
+      ->willReturn($entity);
 
     $normalizer = $this->createMock('Drupal\serialization\EntityResolver\UuidReferenceInterface');
     $normalizer->expects($this->once())
       ->method('getUuid')
       ->with([])
-      ->will($this->returnValue($uuid));
+      ->willReturn($uuid);
     $this->assertSame(1, $this->resolver->resolve($normalizer, [], 'test_type'));
   }
 
diff --git a/core/modules/serialization/tests/src/Unit/Normalizer/ConfigEntityNormalizerTest.php b/core/modules/serialization/tests/src/Unit/Normalizer/ConfigEntityNormalizerTest.php
index c3ff3fc16d..69d58a22a8 100644
--- a/core/modules/serialization/tests/src/Unit/Normalizer/ConfigEntityNormalizerTest.php
+++ b/core/modules/serialization/tests/src/Unit/Normalizer/ConfigEntityNormalizerTest.php
@@ -42,7 +42,7 @@ public function testNormalize() {
     $config_entity = $this->createMock('Drupal\Core\Config\Entity\ConfigEntityInterface');
     $config_entity->expects($this->once())
       ->method('toArray')
-      ->will($this->returnValue($test_export_properties));
+      ->willReturn($test_export_properties);
 
     $this->assertSame(['test' => 'test'], $normalizer->normalize($config_entity));
   }
diff --git a/core/modules/serialization/tests/src/Unit/Normalizer/ContentEntityNormalizerTest.php b/core/modules/serialization/tests/src/Unit/Normalizer/ContentEntityNormalizerTest.php
index 888499c4fd..9daf730664 100644
--- a/core/modules/serialization/tests/src/Unit/Normalizer/ContentEntityNormalizerTest.php
+++ b/core/modules/serialization/tests/src/Unit/Normalizer/ContentEntityNormalizerTest.php
@@ -67,7 +67,7 @@ public function testNormalize() {
     $this->serializer->expects($this->any())
       ->method('normalize')
       ->with($this->containsOnlyInstancesOf('Drupal\Core\Field\FieldItemListInterface'), 'test_format', ['account' => NULL])
-      ->will($this->returnValue('test'));
+      ->willReturn('test');
 
     $definitions = [
       'field_accessible_external' => $this->createMockFieldListItem(TRUE, FALSE),
@@ -101,7 +101,7 @@ public function testNormalizeWithAccountContext() {
     $this->serializer->expects($this->any())
       ->method('normalize')
       ->with($this->containsOnlyInstancesOf('Drupal\Core\Field\FieldItemListInterface'), 'test_format', $context)
-      ->will($this->returnValue('test'));
+      ->willReturn('test');
 
     // The mock account should get passed directly into the access() method on
     // field items from $context['account'].
@@ -137,7 +137,7 @@ public function createMockForContentEntity($definitions) {
       ->shouldBeCalled();
     $content_entity_mock->expects($this->any())
       ->method('getTypedData')
-      ->will($this->returnValue($typed_data->reveal()));
+      ->willReturn($typed_data->reveal());
 
     return $content_entity_mock;
   }
@@ -159,7 +159,7 @@ protected function createMockFieldListItem($access, $internal, AccountInterface
     $mock = $this->createMock('Drupal\Core\Field\FieldItemListInterface');
     $mock->expects($this->once())
       ->method('getDataDefinition')
-      ->will($this->returnValue($data_definition->reveal()));
+      ->willReturn($data_definition->reveal());
     $data_definition->isInternal()
       ->willReturn($internal)
       ->shouldBeCalled();
@@ -167,7 +167,7 @@ protected function createMockFieldListItem($access, $internal, AccountInterface
       $mock->expects($this->once())
         ->method('access')
         ->with('view', $user_context)
-        ->will($this->returnValue($access));
+        ->willReturn($access);
     }
     return $mock;
   }
diff --git a/core/modules/serialization/tests/src/Unit/Normalizer/EntityNormalizerTest.php b/core/modules/serialization/tests/src/Unit/Normalizer/EntityNormalizerTest.php
index 06d280a9bd..453f527579 100644
--- a/core/modules/serialization/tests/src/Unit/Normalizer/EntityNormalizerTest.php
+++ b/core/modules/serialization/tests/src/Unit/Normalizer/EntityNormalizerTest.php
@@ -87,7 +87,7 @@ public function testNormalize() {
       ->getMockForAbstractClass();
     $content_entity->expects($this->once())
       ->method('getFields')
-      ->will($this->returnValue($definitions));
+      ->willReturn($definitions);
 
     $serializer = $this->getMockBuilder('Symfony\Component\Serializer\Serializer')
       ->disableOriginalConstructor()
@@ -137,11 +137,11 @@ public function testDenormalizeWithValidBundle() {
     $entity_type->expects($this->once())
       ->method('hasKey')
       ->with('bundle')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
     $entity_type->expects($this->once())
       ->method('getKey')
       ->with('bundle')
-      ->will($this->returnValue('test_type'));
+      ->willReturn('test_type');
     $entity_type->expects($this->once())
       ->method('entityClassImplements')
       ->with(FieldableEntityInterface::class)
@@ -149,17 +149,17 @@ public function testDenormalizeWithValidBundle() {
 
     $entity_type->expects($this->once())
       ->method('getBundleEntityType')
-      ->will($this->returnValue('test_bundle'));
+      ->willReturn('test_bundle');
 
     $entity_type_storage_definition = $this->createMock('Drupal\Core\Field\FieldStorageDefinitionInterface');
     $entity_type_storage_definition->expects($this->once())
       ->method('getMainPropertyName')
-      ->will($this->returnValue('name'));
+      ->willReturn('name');
 
     $entity_type_definition = $this->createMock('Drupal\Core\Field\FieldDefinitionInterface');
     $entity_type_definition->expects($this->once())
       ->method('getFieldStorageDefinition')
-      ->will($this->returnValue($entity_type_storage_definition));
+      ->willReturn($entity_type_storage_definition);
 
     $base_definitions = [
       'test_type' => $entity_type_definition,
@@ -168,21 +168,21 @@ public function testDenormalizeWithValidBundle() {
     $this->entityTypeManager->expects($this->once())
       ->method('getDefinition')
       ->with('test')
-      ->will($this->returnValue($entity_type));
+      ->willReturn($entity_type);
     $this->entityFieldManager->expects($this->once())
       ->method('getBaseFieldDefinitions')
       ->with('test')
-      ->will($this->returnValue($base_definitions));
+      ->willReturn($base_definitions);
 
     $entity_query_mock = $this->createMock('Drupal\Core\Entity\Query\QueryInterface');
     $entity_query_mock->expects($this->once())
       ->method('execute')
-      ->will($this->returnValue(['test_bundle' => 'test_bundle']));
+      ->willReturn(['test_bundle' => 'test_bundle']);
 
     $entity_type_storage = $this->createMock('Drupal\Core\Entity\EntityStorageInterface');
     $entity_type_storage->expects($this->once())
       ->method('getQuery')
-      ->will($this->returnValue($entity_query_mock));
+      ->willReturn($entity_query_mock);
 
     $key_1 = $this->createMock(FieldItemListInterface::class);
     $key_2 = $this->createMock(FieldItemListInterface::class);
@@ -204,7 +204,7 @@ public function testDenormalizeWithValidBundle() {
     $storage->expects($this->once())
       ->method('create')
       ->with($expected_test_data)
-      ->will($this->returnValue($entity));
+      ->willReturn($entity);
 
     $this->entityTypeManager->expects($this->exactly(2))
       ->method('getStorage')
@@ -253,11 +253,11 @@ public function testDenormalizeWithInvalidBundle() {
     $entity_type->expects($this->once())
       ->method('hasKey')
       ->with('bundle')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
     $entity_type->expects($this->once())
       ->method('getKey')
       ->with('bundle')
-      ->will($this->returnValue('test_type'));
+      ->willReturn('test_type');
     $entity_type->expects($this->once())
       ->method('entityClassImplements')
       ->with(FieldableEntityInterface::class)
@@ -265,17 +265,17 @@ public function testDenormalizeWithInvalidBundle() {
 
     $entity_type->expects($this->once())
       ->method('getBundleEntityType')
-      ->will($this->returnValue('test_bundle'));
+      ->willReturn('test_bundle');
 
     $entity_type_storage_definition = $this->createMock('Drupal\Core\Field\FieldStorageDefinitionInterface');
     $entity_type_storage_definition->expects($this->once())
       ->method('getMainPropertyName')
-      ->will($this->returnValue('name'));
+      ->willReturn('name');
 
     $entity_type_definition = $this->createMock('Drupal\Core\Field\FieldDefinitionInterface');
     $entity_type_definition->expects($this->once())
       ->method('getFieldStorageDefinition')
-      ->will($this->returnValue($entity_type_storage_definition));
+      ->willReturn($entity_type_storage_definition);
 
     $base_definitions = [
       'test_type' => $entity_type_definition,
@@ -284,26 +284,26 @@ public function testDenormalizeWithInvalidBundle() {
     $this->entityTypeManager->expects($this->once())
       ->method('getDefinition')
       ->with('test')
-      ->will($this->returnValue($entity_type));
+      ->willReturn($entity_type);
     $this->entityFieldManager->expects($this->once())
       ->method('getBaseFieldDefinitions')
       ->with('test')
-      ->will($this->returnValue($base_definitions));
+      ->willReturn($base_definitions);
 
     $entity_query_mock = $this->createMock('Drupal\Core\Entity\Query\QueryInterface');
     $entity_query_mock->expects($this->once())
       ->method('execute')
-      ->will($this->returnValue(['test_bundle_other' => 'test_bundle_other']));
+      ->willReturn(['test_bundle_other' => 'test_bundle_other']);
 
     $entity_type_storage = $this->createMock('Drupal\Core\Entity\EntityStorageInterface');
     $entity_type_storage->expects($this->once())
       ->method('getQuery')
-      ->will($this->returnValue($entity_query_mock));
+      ->willReturn($entity_query_mock);
 
     $this->entityTypeManager->expects($this->once())
       ->method('getStorage')
       ->with('test_bundle')
-      ->will($this->returnValue($entity_type_storage));
+      ->willReturn($entity_type_storage);
 
     $this->expectException(UnexpectedValueException::class);
     $this->entityNormalizer->denormalize($test_data, 'Drupal\Core\Entity\ContentEntityBase', NULL, ['entity_type' => 'test']);
@@ -328,14 +328,14 @@ public function testDenormalizeWithNoBundle() {
     $entity_type->expects($this->once())
       ->method('hasKey')
       ->with('bundle')
-      ->will($this->returnValue(FALSE));
+      ->willReturn(FALSE);
     $entity_type->expects($this->never())
       ->method('getKey');
 
     $this->entityTypeManager->expects($this->once())
       ->method('getDefinition')
       ->with('test')
-      ->will($this->returnValue($entity_type));
+      ->willReturn($entity_type);
 
     $key_1 = $this->createMock(FieldItemListInterface::class);
     $key_2 = $this->createMock(FieldItemListInterface::class);
@@ -352,12 +352,12 @@ public function testDenormalizeWithNoBundle() {
     $storage->expects($this->once())
       ->method('create')
       ->with([])
-      ->will($this->returnValue($entity));
+      ->willReturn($entity);
 
     $this->entityTypeManager->expects($this->once())
       ->method('getStorage')
       ->with('test')
-      ->will($this->returnValue($storage));
+      ->willReturn($storage);
 
     $this->entityFieldManager->expects($this->never())
       ->method('getBaseFieldDefinitions');
@@ -403,18 +403,18 @@ public function testDenormalizeWithNoFieldableEntityType() {
     $this->entityTypeManager->expects($this->once())
       ->method('getDefinition')
       ->with('test')
-      ->will($this->returnValue($entity_type));
+      ->willReturn($entity_type);
 
     $storage = $this->createMock('Drupal\Core\Entity\EntityStorageInterface');
     $storage->expects($this->once())
       ->method('create')
       ->with($test_data)
-      ->will($this->returnValue($this->createMock('Drupal\Core\Entity\EntityInterface')));
+      ->willReturn($this->createMock('Drupal\Core\Entity\EntityInterface'));
 
     $this->entityTypeManager->expects($this->once())
       ->method('getStorage')
       ->with('test')
-      ->will($this->returnValue($storage));
+      ->willReturn($storage);
 
     $this->entityFieldManager->expects($this->never())
       ->method('getBaseFieldDefinitions');
diff --git a/core/modules/serialization/tests/src/Unit/Normalizer/ListNormalizerTest.php b/core/modules/serialization/tests/src/Unit/Normalizer/ListNormalizerTest.php
index 525d9cd40f..f57818f802 100644
--- a/core/modules/serialization/tests/src/Unit/Normalizer/ListNormalizerTest.php
+++ b/core/modules/serialization/tests/src/Unit/Normalizer/ListNormalizerTest.php
@@ -43,13 +43,16 @@ class ListNormalizerTest extends UnitTestCase {
    */
   protected $typedData;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     // Mock the TypedDataManager to return a TypedDataInterface mock.
     $this->typedData = $this->createMock('Drupal\Core\TypedData\TypedDataInterface');
     $typed_data_manager = $this->createMock(TypedDataManagerInterface::class);
     $typed_data_manager->expects($this->any())
       ->method('getPropertyInstance')
-      ->will($this->returnValue($this->typedData));
+      ->willReturn($this->typedData);
 
     // Set up a mock container as ItemList() will call for the 'typed_data_manager'
     // service.
@@ -59,7 +62,7 @@ protected function setUp(): void {
     $container->expects($this->any())
       ->method('get')
       ->with($this->equalTo('typed_data_manager'))
-      ->will($this->returnValue($typed_data_manager));
+      ->willReturn($typed_data_manager);
 
     \Drupal::setContainer($container);
 
diff --git a/core/modules/serialization/tests/src/Unit/Normalizer/TypedDataNormalizerTest.php b/core/modules/serialization/tests/src/Unit/Normalizer/TypedDataNormalizerTest.php
index 0387a7e946..142da8b97f 100644
--- a/core/modules/serialization/tests/src/Unit/Normalizer/TypedDataNormalizerTest.php
+++ b/core/modules/serialization/tests/src/Unit/Normalizer/TypedDataNormalizerTest.php
@@ -25,6 +25,9 @@ class TypedDataNormalizerTest extends UnitTestCase {
    */
   protected $typedData;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     $this->normalizer = new TypedDataNormalizer();
     $this->typedData = $this->createMock('Drupal\Core\TypedData\TypedDataInterface');
@@ -45,7 +48,7 @@ public function testSupportsNormalization() {
   public function testNormalize() {
     $this->typedData->expects($this->once())
       ->method('getValue')
-      ->will($this->returnValue('test'));
+      ->willReturn('test');
 
     $this->assertEquals('test', $this->normalizer->normalize($this->typedData));
   }
diff --git a/core/modules/settings_tray/tests/modules/settings_tray_test_css/settings_tray_test_css.info.yml b/core/modules/settings_tray/tests/modules/settings_tray_test_css/settings_tray_test_css.info.yml
index 90155770b7..9e8f45e645 100644
--- a/core/modules/settings_tray/tests/modules/settings_tray_test_css/settings_tray_test_css.info.yml
+++ b/core/modules/settings_tray/tests/modules/settings_tray_test_css/settings_tray_test_css.info.yml
@@ -4,4 +4,4 @@ description: 'Provides CSS fixes for tests.'
 package: Testing
 version: VERSION
 dependencies:
-- drupal:settings_tray
+  - drupal:settings_tray
diff --git a/core/modules/shortcut/migrations/d7_shortcut.yml b/core/modules/shortcut/migrations/d7_shortcut.yml
index f6670e5d19..58e5329862 100644
--- a/core/modules/shortcut/migrations/d7_shortcut.yml
+++ b/core/modules/shortcut/migrations/d7_shortcut.yml
@@ -9,9 +9,9 @@ source:
     uri_scheme: 'internal:/'
 process:
   shortcut_set:
-     plugin: migration_lookup
-     migration: d7_shortcut_set
-     source: menu_name
+    plugin: migration_lookup
+    migration: d7_shortcut_set
+    source: menu_name
   title: link_title
   weight: weight
   link:
diff --git a/core/modules/shortcut/shortcut.module b/core/modules/shortcut/shortcut.module
index b78a8ddf97..53479f5727 100644
--- a/core/modules/shortcut/shortcut.module
+++ b/core/modules/shortcut/shortcut.module
@@ -123,7 +123,7 @@ function shortcut_set_switch_access($account = NULL) {
  *   (optional) The user account whose shortcuts will be returned. Defaults to
  *   the currently logged-in user.
  *
- * @return
+ * @return \Drupal\shortcut\ShortcutSetInterface
  *   An object representing the shortcut set that should be displayed to the
  *   current user. If the user does not have an explicit shortcut set defined,
  *   the default set is returned.
@@ -163,7 +163,7 @@ function shortcut_current_displayed_set($account = NULL) {
  *   If not provided, the function will return the currently logged-in user's
  *   default shortcut set.
  *
- * @return
+ * @return \Drupal\shortcut\ShortcutSetInterface|null
  *   An object representing the default shortcut set.
  */
 function shortcut_default_set($account = NULL) {
diff --git a/core/modules/shortcut/tests/src/Functional/ShortcutTestBase.php b/core/modules/shortcut/tests/src/Functional/ShortcutTestBase.php
index 6f657030b6..0bd0cd7c66 100644
--- a/core/modules/shortcut/tests/src/Functional/ShortcutTestBase.php
+++ b/core/modules/shortcut/tests/src/Functional/ShortcutTestBase.php
@@ -47,6 +47,9 @@ abstract class ShortcutTestBase extends BrowserTestBase {
    */
   protected $set;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/shortcut/tests/src/Unit/Menu/ShortcutLocalTasksTest.php b/core/modules/shortcut/tests/src/Unit/Menu/ShortcutLocalTasksTest.php
index b400cbee39..1bbe28f2d3 100644
--- a/core/modules/shortcut/tests/src/Unit/Menu/ShortcutLocalTasksTest.php
+++ b/core/modules/shortcut/tests/src/Unit/Menu/ShortcutLocalTasksTest.php
@@ -12,6 +12,9 @@
  */
 class ShortcutLocalTasksTest extends LocalTaskIntegrationTestBase {
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     $this->directoryList = [
       'shortcut' => 'core/modules/shortcut',
@@ -23,7 +26,7 @@ protected function setUp(): void {
     $entity_type_manager = $this->createMock(EntityTypeManagerInterface::class);
     $entity_type_manager->expects($this->any())
       ->method('getDefinitions')
-      ->will($this->returnValue([]));
+      ->willReturn([]);
     $this->container->set('entity_type.manager', $entity_type_manager);
     $this->container->set('string_translation', $this->getStringTranslationStub());
   }
diff --git a/core/modules/sqlite/sqlite.module b/core/modules/sqlite/sqlite.module
index 4cfb9923aa..324b71bd67 100644
--- a/core/modules/sqlite/sqlite.module
+++ b/core/modules/sqlite/sqlite.module
@@ -15,7 +15,7 @@ function sqlite_help($route_name, RouteMatchInterface $route_match) {
     case 'help.page.sqlite':
       $output = '';
       $output .= '<h3>' . t('About') . '</h3>';
-      $output .= '<p>' . t('The SQLite module provides the connection between Drupal and a SQLite database. For more information, see the <a href=":sqlite">online documentation for the SQLite module</a>.', [':sqlite' => 'https://www.drupal.org/documentation/modules/sqlite']) . '</p>';
+      $output .= '<p>' . t('The SQLite module provides the connection between Drupal and a SQLite database. For more information, see the <a href=":sqlite">online documentation for the SQLite module</a>.', [':sqlite' => 'https://www.drupal.org/docs/core-modules-and-themes/core-modules/sqlite-module']) . '</p>';
       return $output;
 
   }
diff --git a/core/modules/sqlite/src/Driver/Database/sqlite/Connection.php b/core/modules/sqlite/src/Driver/Database/sqlite/Connection.php
index 583eeea0a8..1f2cf1fd19 100644
--- a/core/modules/sqlite/src/Driver/Database/sqlite/Connection.php
+++ b/core/modules/sqlite/src/Driver/Database/sqlite/Connection.php
@@ -5,11 +5,12 @@
 use Drupal\Core\Database\DatabaseNotFoundException;
 use Drupal\Core\Database\Connection as DatabaseConnection;
 use Drupal\Core\Database\StatementInterface;
+use Drupal\Core\Database\SupportsTemporaryTablesInterface;
 
 /**
  * SQLite implementation of \Drupal\Core\Database\Connection.
  */
-class Connection extends DatabaseConnection {
+class Connection extends DatabaseConnection implements SupportsTemporaryTablesInterface {
 
   /**
    * Error code for "Unable to open database file" error.
@@ -352,6 +353,22 @@ public function queryRange($query, $from, $count, array $args = [], array $optio
     return $this->query($query . ' LIMIT ' . (int) $from . ', ' . (int) $count, $args, $options);
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  public function queryTemporary($query, array $args = [], array $options = []) {
+    $tablename = 'db_temporary_' . uniqid();
+
+    $this->query('CREATE TEMPORARY TABLE ' . $tablename . ' AS ' . $query, $args, $options);
+
+    // Temporary tables always live in the temp database, which means that
+    // they cannot be fully qualified table names since they do not live
+    // in the main SQLite database. We provide the fully-qualified name
+    // ourselves to prevent Drupal from applying prefixes.
+    // @see https://www.sqlite.org/lang_createtable.html
+    return 'temp.' . $tablename;
+  }
+
   public function driver() {
     return 'sqlite';
   }
diff --git a/core/modules/sqlite/src/Driver/Database/sqlite/Schema.php b/core/modules/sqlite/src/Driver/Database/sqlite/Schema.php
index ff893d2751..2302ab9a0b 100644
--- a/core/modules/sqlite/src/Driver/Database/sqlite/Schema.php
+++ b/core/modules/sqlite/src/Driver/Database/sqlite/Schema.php
@@ -44,15 +44,7 @@ public function fieldExists($table, $column) {
   }
 
   /**
-   * Generate SQL to create a new table from a Drupal schema definition.
-   *
-   * @param $name
-   *   The name of the table to create.
-   * @param $table
-   *   A Schema API table definition array.
-   *
-   * @return
-   *   An array of SQL statements to create the table.
+   * {@inheritdoc}
    */
   public function createTableSql($name, $table) {
     if (!empty($table['primary key']) && is_array($table['primary key'])) {
@@ -475,7 +467,7 @@ protected function alterTable($table, $old_schema, $new_schema, array $mapping =
    * @param $table
    *   Name of the table.
    *
-   * @return
+   * @return array
    *   An array representing the schema.
    *
    * @throws \Exception
diff --git a/core/modules/sqlite/tests/src/Kernel/sqlite/DatabaseExceptionWrapperTest.php b/core/modules/sqlite/tests/src/Kernel/sqlite/DatabaseExceptionWrapperTest.php
new file mode 100644
index 0000000000..9503e5dafa
--- /dev/null
+++ b/core/modules/sqlite/tests/src/Kernel/sqlite/DatabaseExceptionWrapperTest.php
@@ -0,0 +1,23 @@
+<?php
+
+namespace Drupal\Tests\sqlite\Kernel\sqlite;
+
+use Drupal\KernelTests\Core\Database\DriverSpecificKernelTestBase;
+
+/**
+ * Tests exceptions thrown by queries.
+ *
+ * @group Database
+ */
+class DatabaseExceptionWrapperTest extends DriverSpecificKernelTestBase {
+
+  /**
+   * Tests Connection::prepareStatement exception on execution.
+   */
+  public function testPrepareStatementFailOnExecution() {
+    $this->expectException(\PDOException::class);
+    $stmt = $this->connection->prepareStatement('bananas', []);
+    $stmt->execute();
+  }
+
+}
diff --git a/core/modules/sqlite/tests/src/Kernel/sqlite/SchemaTest.php b/core/modules/sqlite/tests/src/Kernel/sqlite/SchemaTest.php
new file mode 100644
index 0000000000..07b6624196
--- /dev/null
+++ b/core/modules/sqlite/tests/src/Kernel/sqlite/SchemaTest.php
@@ -0,0 +1,85 @@
+<?php
+
+namespace Drupal\Tests\sqlite\Kernel\sqlite;
+
+use Drupal\KernelTests\Core\Database\DriverSpecificSchemaTestBase;
+
+/**
+ * Tests schema API for the PostgreSQL driver.
+ *
+ * @group Database
+ */
+class SchemaTest extends DriverSpecificSchemaTestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function checkSchemaComment(string $description, string $table, string $column = NULL): void {
+    // The sqlite driver schema does not support fetching table/column
+    // comments.
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function tryInsertExpectsIntegrityConstraintViolationException(string $tableName): void {
+    // Sqlite does not throw an IntegrityConstraintViolationException here.
+  }
+
+  /**
+   * @covers \Drupal\sqlite\Driver\Database\sqlite\Schema::introspectIndexSchema
+   */
+  public function testIntrospectIndexSchema(): void {
+    $table_specification = [
+      'fields' => [
+        'id'  => [
+          'type' => 'int',
+          'not null' => TRUE,
+          'default' => 0,
+        ],
+        'test_field_1'  => [
+          'type' => 'int',
+          'not null' => TRUE,
+          'default' => 0,
+        ],
+        'test_field_2'  => [
+          'type' => 'int',
+          'default' => 0,
+        ],
+        'test_field_3'  => [
+          'type' => 'int',
+          'default' => 0,
+        ],
+        'test_field_4'  => [
+          'type' => 'int',
+          'default' => 0,
+        ],
+        'test_field_5'  => [
+          'type' => 'int',
+          'default' => 0,
+        ],
+      ],
+      'primary key' => ['id', 'test_field_1'],
+      'unique keys' => [
+        'test_field_2' => ['test_field_2'],
+        'test_field_3_test_field_4' => ['test_field_3', 'test_field_4'],
+      ],
+      'indexes' => [
+        'test_field_4' => ['test_field_4'],
+        'test_field_4_test_field_5' => ['test_field_4', 'test_field_5'],
+      ],
+    ];
+
+    $table_name = strtolower($this->getRandomGenerator()->name());
+    $this->schema->createTable($table_name, $table_specification);
+
+    unset($table_specification['fields']);
+
+    $introspect_index_schema = new \ReflectionMethod(get_class($this->schema), 'introspectIndexSchema');
+    $introspect_index_schema->setAccessible(TRUE);
+    $index_schema = $introspect_index_schema->invoke($this->schema, $table_name);
+
+    $this->assertEquals($table_specification, $index_schema);
+  }
+
+}
diff --git a/core/tests/Drupal/KernelTests/Core/Database/SqliteDriverLegacyTest.php b/core/modules/sqlite/tests/src/Kernel/sqlite/SqliteDriverLegacyTest.php
similarity index 92%
rename from core/tests/Drupal/KernelTests/Core/Database/SqliteDriverLegacyTest.php
rename to core/modules/sqlite/tests/src/Kernel/sqlite/SqliteDriverLegacyTest.php
index f3a34c7389..73f74e6180 100644
--- a/core/tests/Drupal/KernelTests/Core/Database/SqliteDriverLegacyTest.php
+++ b/core/modules/sqlite/tests/src/Kernel/sqlite/SqliteDriverLegacyTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\KernelTests\Core\Database;
+namespace Drupal\Tests\sqlite\Kernel\sqlite;
 
 use Drupal\Core\Database\Driver\sqlite\Connection;
 use Drupal\Core\Database\Driver\sqlite\Install\Tasks;
@@ -10,6 +10,7 @@
 use Drupal\Core\Database\Driver\sqlite\Statement;
 use Drupal\Core\Database\Driver\sqlite\Truncate;
 use Drupal\Core\Database\Driver\sqlite\Upsert;
+use Drupal\KernelTests\Core\Database\DriverSpecificDatabaseTestBase;
 use Drupal\Tests\Core\Database\Stub\StubPDO;
 
 /**
@@ -18,17 +19,7 @@
  * @group legacy
  * @group Database
  */
-class SqliteDriverLegacyTest extends DatabaseTestBase {
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function setUp(): void {
-    parent::setUp();
-    if ($this->connection->driver() !== 'sqlite') {
-      $this->markTestSkipped('Only test the deprecation message for the SQLite database driver classes in Core.');
-    }
-  }
+class SqliteDriverLegacyTest extends DriverSpecificDatabaseTestBase {
 
   /**
    * @covers Drupal\Core\Database\Driver\sqlite\Install\Tasks
diff --git a/core/modules/sqlite/tests/src/Kernel/sqlite/TemporaryQueryTest.php b/core/modules/sqlite/tests/src/Kernel/sqlite/TemporaryQueryTest.php
new file mode 100644
index 0000000000..053e7f16ad
--- /dev/null
+++ b/core/modules/sqlite/tests/src/Kernel/sqlite/TemporaryQueryTest.php
@@ -0,0 +1,38 @@
+<?php
+
+namespace Drupal\Tests\sqlite\Kernel\sqlite;
+
+use Drupal\KernelTests\Core\Database\TemporaryQueryTestBase;
+
+/**
+ * Tests the temporary query functionality.
+ *
+ * @group Database
+ */
+class TemporaryQueryTest extends TemporaryQueryTestBase {
+
+  /**
+   * Confirms that temporary tables work.
+   */
+  public function testTemporaryQuery() {
+    parent::testTemporaryQuery();
+
+    $connection = $this->getConnection();
+
+    $table_name_test = $connection->queryTemporary('SELECT [name] FROM {test}', []);
+
+    // Assert that the table is indeed a temporary one.
+    $this->stringContains("temp.", $table_name_test);
+
+    // Assert that both have the same field names.
+    $normal_table_fields = $connection->query("SELECT * FROM {test}")->fetch();
+    $temp_table_name = $connection->queryTemporary('SELECT * FROM {test}');
+    $temp_table_fields = $connection->query("SELECT * FROM $temp_table_name")->fetch();
+
+    $normal_table_fields = array_keys(get_object_vars($normal_table_fields));
+    $temp_table_fields = array_keys(get_object_vars($temp_table_fields));
+
+    $this->assertEmpty(array_diff($normal_table_fields, $temp_table_fields));
+  }
+
+}
diff --git a/core/tests/Drupal/Tests/Core/Database/Driver/sqlite/ConnectionTest.php b/core/modules/sqlite/tests/src/Unit/ConnectionTest.php
similarity index 96%
rename from core/tests/Drupal/Tests/Core/Database/Driver/sqlite/ConnectionTest.php
rename to core/modules/sqlite/tests/src/Unit/ConnectionTest.php
index 3e52d6aecc..1555d83f11 100644
--- a/core/tests/Drupal/Tests/Core/Database/Driver/sqlite/ConnectionTest.php
+++ b/core/modules/sqlite/tests/src/Unit/ConnectionTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\Tests\Core\Database\Driver\sqlite;
+namespace Drupal\Tests\sqlite\Unit;
 
 use Drupal\sqlite\Driver\Database\sqlite\Connection;
 use Drupal\Tests\Core\Database\Stub\StubPDO;
diff --git a/core/modules/statistics/src/Plugin/Block/StatisticsPopularBlock.php b/core/modules/statistics/src/Plugin/Block/StatisticsPopularBlock.php
index 53e39c3333..072c72736f 100644
--- a/core/modules/statistics/src/Plugin/Block/StatisticsPopularBlock.php
+++ b/core/modules/statistics/src/Plugin/Block/StatisticsPopularBlock.php
@@ -116,11 +116,11 @@ public function blockForm($form, FormStateInterface $form_state) {
     $numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 20, 25, 30, 40];
     $numbers = ['0' => $this->t('Disabled')] + array_combine($numbers, $numbers);
     $form['statistics_block_top_day_num'] = [
-     '#type' => 'select',
-     '#title' => $this->t("Number of day's top views to display"),
-     '#default_value' => $this->configuration['top_day_num'],
-     '#options' => $numbers,
-     '#description' => $this->t('How many content items to display in "day" list.'),
+      '#type' => 'select',
+      '#title' => $this->t("Number of day's top views to display"),
+      '#default_value' => $this->configuration['top_day_num'],
+      '#options' => $numbers,
+      '#description' => $this->t('How many content items to display in "day" list.'),
     ];
     $form['statistics_block_top_all_num'] = [
       '#type' => 'select',
diff --git a/core/modules/statistics/statistics.views.inc b/core/modules/statistics/statistics.views.inc
index e9ce164427..01e6d1efd8 100644
--- a/core/modules/statistics/statistics.views.inc
+++ b/core/modules/statistics/statistics.views.inc
@@ -24,7 +24,7 @@ function statistics_views_data() {
     'field' => [
       'id' => 'statistics_numeric',
       'click sortable' => TRUE,
-     ],
+    ],
     'filter' => [
       'id' => 'numeric',
     ],
@@ -42,7 +42,7 @@ function statistics_views_data() {
     'field' => [
       'id' => 'statistics_numeric',
       'click sortable' => TRUE,
-     ],
+    ],
     'filter' => [
       'id' => 'numeric',
     ],
diff --git a/core/modules/statistics/tests/src/Functional/StatisticsAdminTest.php b/core/modules/statistics/tests/src/Functional/StatisticsAdminTest.php
index d943bcecf1..4c68a24e18 100644
--- a/core/modules/statistics/tests/src/Functional/StatisticsAdminTest.php
+++ b/core/modules/statistics/tests/src/Functional/StatisticsAdminTest.php
@@ -48,6 +48,9 @@ class StatisticsAdminTest extends BrowserTestBase {
    */
   protected $client;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/statistics/tests/src/Functional/StatisticsLoggingTest.php b/core/modules/statistics/tests/src/Functional/StatisticsLoggingTest.php
index 02c85d7155..42bbbcbaea 100644
--- a/core/modules/statistics/tests/src/Functional/StatisticsLoggingTest.php
+++ b/core/modules/statistics/tests/src/Functional/StatisticsLoggingTest.php
@@ -56,6 +56,9 @@ class StatisticsLoggingTest extends BrowserTestBase {
    */
   protected Node $node;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/statistics/tests/src/Functional/StatisticsTestBase.php b/core/modules/statistics/tests/src/Functional/StatisticsTestBase.php
index ec430bbbc3..537597abcf 100644
--- a/core/modules/statistics/tests/src/Functional/StatisticsTestBase.php
+++ b/core/modules/statistics/tests/src/Functional/StatisticsTestBase.php
@@ -23,6 +23,9 @@ abstract class StatisticsTestBase extends BrowserTestBase {
    */
   protected $blockingUser;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/statistics/tests/src/Functional/Views/IntegrationTest.php b/core/modules/statistics/tests/src/Functional/Views/IntegrationTest.php
index da1c581d16..6c7891155b 100644
--- a/core/modules/statistics/tests/src/Functional/Views/IntegrationTest.php
+++ b/core/modules/statistics/tests/src/Functional/Views/IntegrationTest.php
@@ -54,6 +54,9 @@ class IntegrationTest extends ViewTestBase {
    */
   public static $testViews = ['test_statistics_integration'];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp($import_test_views = TRUE, $modules = ['statistics_test_views']): void {
     parent::setUp($import_test_views, $modules);
 
diff --git a/core/modules/syslog/syslog.module b/core/modules/syslog/syslog.module
index 28d57f7b05..b13af50903 100644
--- a/core/modules/syslog/syslog.module
+++ b/core/modules/syslog/syslog.module
@@ -49,7 +49,7 @@ function syslog_form_system_logging_settings_alter(&$form, FormStateInterface $f
       '#default_value' => $config->get('facility'),
       '#options'       => syslog_facility_list(),
       '#description'   => t('Depending on the system configuration, Syslog and other logging tools use this code to identify or filter messages from within the entire system log.') . $help,
-     ];
+    ];
   }
   $form['syslog_format'] = [
     '#type'          => 'textarea',
diff --git a/core/modules/syslog/tests/src/Functional/SyslogTest.php b/core/modules/syslog/tests/src/Functional/SyslogTest.php
index 2bdac37427..e622f681e4 100644
--- a/core/modules/syslog/tests/src/Functional/SyslogTest.php
+++ b/core/modules/syslog/tests/src/Functional/SyslogTest.php
@@ -38,8 +38,8 @@ public function testSettings() {
 
       $this->drupalGet('admin/config/development/logging');
       // Should be one field.
-      $field = $this->xpath('//option[@value=:value]', [':value' => LOG_LOCAL6]);
-      $this->assertSame('selected', $field[0]->getAttribute('selected'), 'Facility value saved.');
+      $field = $this->assertSession()->elementExists('xpath', '//option[@value="' . LOG_LOCAL6 . '"]');
+      $this->assertSame('selected', $field->getAttribute('selected'), 'Facility value saved.');
     }
   }
 
diff --git a/core/modules/system/config/install/system.mail.yml b/core/modules/system/config/install/system.mail.yml
index a7147a7bd9..0ea09c3812 100644
--- a/core/modules/system/config/install/system.mail.yml
+++ b/core/modules/system/config/install/system.mail.yml
@@ -1,2 +1,2 @@
 interface:
- default: 'php_mail'
+  default: 'php_mail'
diff --git a/core/modules/system/migrations/state/system.migrate_drupal.yml b/core/modules/system/migrations/state/system.migrate_drupal.yml
index 92e9bd747a..1c0f60651d 100644
--- a/core/modules/system/migrations/state/system.migrate_drupal.yml
+++ b/core/modules/system/migrations/state/system.migrate_drupal.yml
@@ -5,7 +5,7 @@ finished:
       - menu_link_content
       - menu_ui
     system: system
-# An upgrade path is not needed for jquery_ui.
+    # An upgrade path is not needed for jquery_ui.
     jquery_ui: core
   7:
     menu:
diff --git a/core/modules/system/migrations/system_maintenance.yml b/core/modules/system/migrations/system_maintenance.yml
index cf1de5346e..7caa7c5e3d 100644
--- a/core/modules/system/migrations/system_maintenance.yml
+++ b/core/modules/system/migrations/system_maintenance.yml
@@ -12,15 +12,15 @@ source:
   source_module: system
 process:
   message:
-  -
-    plugin: callback
-    callable: array_filter
-    source:
-      - maintenance_mode_message
-      - site_offline_message
-  -
-    plugin: callback
-    callable: current
+    -
+      plugin: callback
+      callable: array_filter
+      source:
+        - maintenance_mode_message
+        - site_offline_message
+    -
+      plugin: callback
+      callable: current
 destination:
   plugin: config
   config_name: system.maintenance
diff --git a/core/modules/system/src/Form/ModulesListForm.php b/core/modules/system/src/Form/ModulesListForm.php
index d0ec6f5b03..8df4971db0 100644
--- a/core/modules/system/src/Form/ModulesListForm.php
+++ b/core/modules/system/src/Form/ModulesListForm.php
@@ -263,7 +263,7 @@ protected function buildRow(array $modules, Extension $module, $distribution) {
           Url::fromUri($module->info[ExtensionLifecycle::LIFECYCLE_LINK_IDENTIFIER], [
             'attributes' =>
               [
-                'class' => 'module-link--non-stable',
+                'class' => ['module-link--non-stable'],
                 'aria-label' => $this->t('View information on the @lifecycle status of the module @module', [
                   '@lifecycle' => ucfirst($lifecycle),
                   '@module' => $module->info['name'],
diff --git a/core/modules/system/src/Form/ModulesListNonStableConfirmForm.php b/core/modules/system/src/Form/ModulesListNonStableConfirmForm.php
index 3788d30847..93bc6b5406 100644
--- a/core/modules/system/src/Form/ModulesListNonStableConfirmForm.php
+++ b/core/modules/system/src/Form/ModulesListNonStableConfirmForm.php
@@ -184,9 +184,7 @@ protected function buildNonStableInfo(): void {
         Url::fromUri($data[$machine_name]->info[ExtensionLifecycle::LIFECYCLE_LINK_IDENTIFIER], [
           'attributes' =>
             [
-              'aria-label' => ' ' . $this->t('about the status of the @name module', [
-                  '@name' => $name,
-                ]),
+              'aria-label' => ' ' . $this->t('about the status of the @name module', ['@name' => $name]),
             ],
         ])
       )->toString();
diff --git a/core/modules/system/src/Form/ThemeSettingsForm.php b/core/modules/system/src/Form/ThemeSettingsForm.php
index 00d6b28c71..3d044f5c28 100644
--- a/core/modules/system/src/Form/ThemeSettingsForm.php
+++ b/core/modules/system/src/Form/ThemeSettingsForm.php
@@ -234,7 +234,6 @@ public function buildForm(array $form, FormStateInterface $form_state, $theme =
       $form['logo']['settings']['logo_upload'] = [
         '#type' => 'file',
         '#title' => $this->t('Upload logo image'),
-        '#maxlength' => 40,
         '#description' => $this->t("If you don't have direct file access to the server, use this field to upload your logo."),
         '#upload_validators' => [
           'file_validate_is_image' => [],
diff --git a/core/modules/system/src/Plugin/ImageToolkit/GDToolkit.php b/core/modules/system/src/Plugin/ImageToolkit/GDToolkit.php
index 076540c4b4..2753273a41 100644
--- a/core/modules/system/src/Plugin/ImageToolkit/GDToolkit.php
+++ b/core/modules/system/src/Plugin/ImageToolkit/GDToolkit.php
@@ -149,12 +149,12 @@ public function getResource() {
   public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
     $form['image_jpeg_quality'] = [
       '#type' => 'number',
-      '#title' => t('JPEG quality'),
-      '#description' => t('Define the image quality for JPEG manipulations. Ranges from 0 to 100. Higher values mean better image quality but bigger files.'),
+      '#title' => $this->t('JPEG quality'),
+      '#description' => $this->t('Define the image quality for JPEG manipulations. Ranges from 0 to 100. Higher values mean better image quality but bigger files.'),
       '#min' => 0,
       '#max' => 100,
       '#default_value' => $this->configFactory->getEditable('system.image.gd')->get('jpeg_quality', FALSE),
-      '#field_suffix' => t('%'),
+      '#field_suffix' => $this->t('%'),
     ];
     return $form;
   }
@@ -376,14 +376,59 @@ public function getRequirements() {
 
     $info = gd_info();
     $requirements['version'] = [
-      'title' => t('GD library'),
+      'title' => $this->t('GD library'),
       'value' => $info['GD Version'],
     ];
 
+    // Check if toolkit supported image formats can be actually processed by the
+    // GD library installed with PHP.
+    $check_formats = [
+      IMG_GIF => 'GIF',
+      IMG_JPG => 'JPEG',
+      IMG_PNG => 'PNG',
+      IMG_WEBP => 'WEBP',
+    ];
+    $supported_formats = array_filter($check_formats, fn($type) => imagetypes() & $type, ARRAY_FILTER_USE_KEY);
+    $unsupported_formats = array_diff_key($check_formats, $supported_formats);
+
+    $descriptions = [];
+    if ($supported_formats) {
+      $descriptions[] = $this->formatPlural(
+        count($supported_formats),
+        'Supported image file format: %formats.',
+        'Supported image file formats: %formats.',
+        ['%formats' => implode(', ', $supported_formats)]
+      );
+    }
+    if ($unsupported_formats) {
+      $requirements['version']['severity'] = REQUIREMENT_WARNING;
+      $unsupported = $this->formatPlural(
+        count($unsupported_formats),
+        'Unsupported image file format: %formats.',
+        'Unsupported image file formats: %formats.',
+        ['%formats' => implode(', ', $unsupported_formats)]
+      );
+      $fix_info = $this->t('Check the <a href="https://www.php.net/manual/en/image.installation.php">PHP GD installation documentation</a> if you want to add support.');
+      $descriptions[] = $this->t('@unsupported<br>@ref', [
+        '@unsupported' => $unsupported,
+        '@ref' => $fix_info,
+      ]);
+    }
+
     // Check for filter and rotate support.
     if (!function_exists('imagefilter') || !function_exists('imagerotate')) {
       $requirements['version']['severity'] = REQUIREMENT_WARNING;
-      $requirements['version']['description'] = t('The GD Library for PHP is enabled, but was compiled without support for functions used by the rotate and desaturate effects. It was probably compiled using the official GD libraries from http://www.libgd.org instead of the GD library bundled with PHP. You should recompile PHP --with-gd using the bundled GD library. See <a href="http://php.net/manual/book.image.php">the PHP manual</a>.');
+      $descriptions[] = $this->t('The GD Library for PHP is enabled, but was compiled without support for functions used by the rotate and desaturate effects. It was probably compiled using the official GD libraries from the <a href="https://libgd.github.io/">gdLibrary site</a> instead of the GD library bundled with PHP. You should recompile PHP --with-gd using the bundled GD library. See <a href="https://www.php.net/manual/book.image.php">the PHP manual</a>.');
+    }
+
+    if (count($descriptions) > 1) {
+      $requirements['version']['description'] = [
+        '#theme' => 'item_list',
+        '#items' => $descriptions,
+      ];
+    }
+    else {
+      $requirements['version']['description'] = $descriptions[0];
     }
 
     return $requirements;
diff --git a/core/modules/system/src/SystemManager.php b/core/modules/system/src/SystemManager.php
index 89b2e7abf9..7c88d95c3e 100644
--- a/core/modules/system/src/SystemManager.php
+++ b/core/modules/system/src/SystemManager.php
@@ -107,6 +107,7 @@ public function listRequirements() {
 
     // Check run-time requirements and status information.
     $requirements = $this->moduleHandler->invokeAll('requirements', ['runtime']);
+    $this->moduleHandler->alter('requirements', $requirements);
     uasort($requirements, function ($a, $b) {
       if (!isset($a['weight'])) {
         if (!isset($b['weight'])) {
@@ -127,7 +128,7 @@ public function listRequirements() {
    *   An array of requirements, in the same format as is returned by
    *   hook_requirements().
    *
-   * @return
+   * @return int
    *   The highest severity in the array.
    */
   public function getMaxSeverity(&$requirements) {
diff --git a/core/modules/system/system.install b/core/modules/system/system.install
index 15b4f48587..41d0b4fe30 100644
--- a/core/modules/system/system.install
+++ b/core/modules/system/system.install
@@ -1204,10 +1204,6 @@ function system_requirements($phase) {
       $requirements['unicode']['description'] = t('Operations on Unicode strings are emulated on a best-effort basis. Install the <a href="http://php.net/mbstring">PHP mbstring extension</a> for improved Unicode support.');
       break;
 
-    case 'mbstring.func_overload':
-      $requirements['unicode']['description'] = t('Multibyte string function overloading in PHP is active and must be disabled. Check the php.ini <em>mbstring.func_overload</em> setting. Please refer to the <a href="http://php.net/mbstring">PHP mbstring documentation</a> for more information.');
-      break;
-
     case 'mbstring.encoding_translation':
       $requirements['unicode']['description'] = t('Multibyte string input conversion in PHP is active and must be disabled. Check the php.ini <em>mbstring.encoding_translation</em> setting. Please refer to the <a href="http://php.net/mbstring">PHP mbstring documentation</a> for more information.');
       break;
@@ -1476,7 +1472,7 @@ function system_schema() {
         'unsigned' => TRUE,
         'not null' => TRUE,
       ],
-     ],
+    ],
     'primary key' => ['value'],
   ];
 
diff --git a/core/modules/system/system.module b/core/modules/system/system.module
index 37a5b57604..47b8324ce5 100644
--- a/core/modules/system/system.module
+++ b/core/modules/system/system.module
@@ -458,9 +458,6 @@ function template_preprocess_entity_add_list(&$variables) {
  *   object created by authorize.php when the user authorizes the operation.
  * @param $page_title
  *   Optional string to use as the page title once redirected to authorize.php.
- *
- * @return
- *   Nothing, this function just initializes variables in the user's session.
  */
 function system_authorized_init($callback, $file, $arguments = [], $page_title = NULL) {
   $session = \Drupal::request()->getSession();
@@ -877,7 +874,7 @@ function system_check_directory($form_element, FormStateInterface $form_state) {
  *   Possible values: REGIONS_ALL or REGIONS_VISIBLE. Visible excludes hidden
  *   regions.
  *
- * @return
+ * @return string[]
  *   An array of regions in the form $region['name'] = 'description'.
  */
 function system_region_list($theme, $show = REGIONS_ALL) {
@@ -936,7 +933,7 @@ function system_system_info_alter(&$info, Extension $file, $type) {
  * @param $theme
  *   The name of a theme.
  *
- * @return
+ * @return string
  *   A string that is the region name.
  */
 function system_default_region($theme) {
diff --git a/core/modules/system/templates/block--system-menu-block.html.twig b/core/modules/system/templates/block--system-menu-block.html.twig
index 6113bc2ed8..1e6c3e020e 100644
--- a/core/modules/system/templates/block--system-menu-block.html.twig
+++ b/core/modules/system/templates/block--system-menu-block.html.twig
@@ -11,6 +11,7 @@
  *   - label_display: The display settings for the label.
  *   - provider: The module or other provider that provided this block plugin.
  *   - Block plugin specific settings will also be stored here.
+ * - in_preview: Whether the plugin is being rendered in preview mode.
  * - content: The content of this block.
  * - attributes: HTML attributes for the containing element.
  *   - id: A valid HTML ID and guaranteed unique.
diff --git a/core/modules/system/tests/modules/ajax_test/ajax_test.libraries.yml b/core/modules/system/tests/modules/ajax_test/ajax_test.libraries.yml
index eb4ae93d92..14cbba106a 100644
--- a/core/modules/system/tests/modules/ajax_test/ajax_test.libraries.yml
+++ b/core/modules/system/tests/modules/ajax_test/ajax_test.libraries.yml
@@ -4,19 +4,19 @@ ajax_insert:
   dependencies:
     - core/drupal.ajax
 order:
- drupalSettings:
-   ajax: test
- dependencies:
-   - ajax_test/order-css-command
-   - ajax_test/order-footer-js-command
-   - ajax_test/order-header-js-command
+  drupalSettings:
+    ajax: test
+  dependencies:
+    - ajax_test/order-css-command
+    - ajax_test/order-footer-js-command
+    - ajax_test/order-header-js-command
 
 order-css-command:
   css:
-     theme:
-       # Two CSS files (order should remain the same).
-       a.css: {}
-       b.css: {}
+    theme:
+      # Two CSS files (order should remain the same).
+      a.css: {}
+      b.css: {}
 
 order-footer-js-command:
   js:
diff --git a/core/modules/system/tests/modules/database_test/database_test.install b/core/modules/system/tests/modules/database_test/database_test.install
index 855a518031..a388f3fe68 100644
--- a/core/modules/system/tests/modules/database_test/database_test.install
+++ b/core/modules/system/tests/modules/database_test/database_test.install
@@ -170,7 +170,7 @@ function database_test_schema() {
       ],
     ],
     'primary key' => ['id'],
-    ];
+  ];
 
   $schema['test_two_blobs'] = [
     'description' => 'A simple test table with two BLOB fields.',
@@ -190,7 +190,7 @@ function database_test_schema() {
       ],
     ],
     'primary key' => ['id'],
-    ];
+  ];
 
   $schema['test_task'] = [
     'description' => 'A task list for people in the test table.',
diff --git a/core/modules/system/tests/modules/dialog_renderer_test/dialog_renderer_test.services.yml b/core/modules/system/tests/modules/dialog_renderer_test/dialog_renderer_test.services.yml
index 4be467310f..332a261c5b 100644
--- a/core/modules/system/tests/modules/dialog_renderer_test/dialog_renderer_test.services.yml
+++ b/core/modules/system/tests/modules/dialog_renderer_test/dialog_renderer_test.services.yml
@@ -1,6 +1,6 @@
 services:
-# Provide 2 main content renderer services that use the same class but
-# behave differently depending on the 2nd argument.
+  # Provide 2 main content renderer services that use the same class but behave
+  # differently depending on the 2nd argument.
   main_content_renderer.wide_modal:
     class: Drupal\dialog_renderer_test\Render\MainContent\WideModalRenderer
     arguments: ['@title_resolver', '@renderer', 'wide']
diff --git a/core/modules/system/tests/modules/display_variant_test/src/Plugin/DisplayVariant/TestDisplayVariant.php b/core/modules/system/tests/modules/display_variant_test/src/Plugin/DisplayVariant/TestDisplayVariant.php
index 4280cd416e..cd2b0f4585 100644
--- a/core/modules/system/tests/modules/display_variant_test/src/Plugin/DisplayVariant/TestDisplayVariant.php
+++ b/core/modules/system/tests/modules/display_variant_test/src/Plugin/DisplayVariant/TestDisplayVariant.php
@@ -67,6 +67,7 @@ public function setContexts(array $contexts) {
    * {@inheritdoc}
    */
   public function setMainContent(array $main_content) {
+    assert(!empty($this->getConfiguration()['required_configuration']), 'Ensure that ::setMainContent() is called with the variant configuration');
     $this->mainContent = $main_content;
     return $this;
   }
@@ -75,6 +76,7 @@ public function setMainContent(array $main_content) {
    * {@inheritdoc}
    */
   public function setTitle($title) {
+    assert(!empty($this->getConfiguration()['required_configuration']), 'Ensure that ::setTitle() is called with the variant configuration');
     $this->title = $title;
     return $this;
   }
diff --git a/core/modules/system/tests/modules/early_rendering_controller_test/src/EarlyRenderingTestController.php b/core/modules/system/tests/modules/early_rendering_controller_test/src/EarlyRenderingTestController.php
index 00f3ef9848..40b9bc8233 100644
--- a/core/modules/system/tests/modules/early_rendering_controller_test/src/EarlyRenderingTestController.php
+++ b/core/modules/system/tests/modules/early_rendering_controller_test/src/EarlyRenderingTestController.php
@@ -60,10 +60,11 @@ protected function earlyRenderContent() {
 
   public function renderArray() {
     return [
-      '#pre_render' => [function () {
-        $elements = $this->earlyRenderContent();
-        return $elements;
-      },
+      '#pre_render' => [
+        function () {
+          $elements = $this->earlyRenderContent();
+          return $elements;
+        },
       ],
     ];
   }
diff --git a/core/modules/system/tests/modules/entity_reference_test_views/entity_reference_test_views.info.yml b/core/modules/system/tests/modules/entity_reference_test_views/entity_reference_test_views.info.yml
index 9222b57c3f..88ae649dd7 100644
--- a/core/modules/system/tests/modules/entity_reference_test_views/entity_reference_test_views.info.yml
+++ b/core/modules/system/tests/modules/entity_reference_test_views/entity_reference_test_views.info.yml
@@ -4,4 +4,4 @@ description: 'Provides default views for views entity reference tests.'
 package: Testing
 version: VERSION
 dependencies:
- - drupal:views
+  - drupal:views
diff --git a/core/modules/system/tests/modules/entity_test/src/Entity/EntityTestMulChanged.php b/core/modules/system/tests/modules/entity_test/src/Entity/EntityTestMulChanged.php
index 4cede02bca..4c2fd40b04 100644
--- a/core/modules/system/tests/modules/entity_test/src/Entity/EntityTestMulChanged.php
+++ b/core/modules/system/tests/modules/entity_test/src/Entity/EntityTestMulChanged.php
@@ -72,7 +72,7 @@ public static function baseFieldDefinitions(EntityTypeInterface $entity_type) {
   public function save() {
     // Ensure a new timestamp.
     sleep(1);
-    parent::save();
+    return parent::save();
   }
 
 }
diff --git a/core/modules/system/tests/modules/entity_test/src/Entity/EntityTestRev.php b/core/modules/system/tests/modules/entity_test/src/Entity/EntityTestRev.php
index f51ce88058..e47e936276 100644
--- a/core/modules/system/tests/modules/entity_test/src/Entity/EntityTestRev.php
+++ b/core/modules/system/tests/modules/entity_test/src/Entity/EntityTestRev.php
@@ -19,7 +19,6 @@
  *       "delete" = "Drupal\entity_test\EntityTestDeleteForm",
  *       "delete-multiple-confirm" = "Drupal\Core\Entity\Form\DeleteMultipleForm"
  *     },
- *     "view_builder" = "Drupal\entity_test\EntityTestViewBuilder",
  *     "views_data" = "Drupal\views\EntityViewsData",
  *     "route_provider" = {
  *       "html" = "Drupal\Core\Entity\Routing\DefaultHtmlRouteProvider",
diff --git a/core/modules/system/tests/modules/entity_test/src/Entity/EntityTestRevPub.php b/core/modules/system/tests/modules/entity_test/src/Entity/EntityTestRevPub.php
index 175a6a0290..3c3a201d58 100644
--- a/core/modules/system/tests/modules/entity_test/src/Entity/EntityTestRevPub.php
+++ b/core/modules/system/tests/modules/entity_test/src/Entity/EntityTestRevPub.php
@@ -20,7 +20,6 @@
  *       "delete" = "Drupal\entity_test\EntityTestDeleteForm",
  *       "delete-multiple-confirm" = "Drupal\Core\Entity\Form\DeleteMultipleForm"
  *     },
- *     "view_builder" = "Drupal\entity_test\EntityTestViewBuilder",
  *   },
  *   base_table = "entity_test_revpub",
  *   revision_table = "entity_test_revpub_revision",
diff --git a/core/modules/system/tests/modules/entity_test/src/EntityTestForm.php b/core/modules/system/tests/modules/entity_test/src/EntityTestForm.php
index d471d60582..3ea354d549 100644
--- a/core/modules/system/tests/modules/entity_test/src/EntityTestForm.php
+++ b/core/modules/system/tests/modules/entity_test/src/EntityTestForm.php
@@ -57,7 +57,7 @@ public function save(array $form, FormStateInterface $form_state) {
       }
 
       $is_new = $entity->isNew();
-      $entity->save();
+      $status = $entity->save();
 
       if ($is_new) {
         $message = t('%entity_type @id has been created.', ['@id' => $entity->id(), '%entity_type' => $entity->getEntityTypeId()]);
@@ -83,6 +83,7 @@ public function save(array $form, FormStateInterface $form_state) {
     catch (\Exception $e) {
       \Drupal::state()->set('entity_test.form.save.exception', get_class($e) . ': ' . $e->getMessage());
     }
+    return $status ?? FALSE;
   }
 
 }
diff --git a/core/modules/system/tests/modules/entity_test/src/Plugin/Field/FieldType/FieldTestItem.php b/core/modules/system/tests/modules/entity_test/src/Plugin/Field/FieldType/FieldTestItem.php
index da2dc46240..1549978b42 100644
--- a/core/modules/system/tests/modules/entity_test/src/Plugin/Field/FieldType/FieldTestItem.php
+++ b/core/modules/system/tests/modules/entity_test/src/Plugin/Field/FieldType/FieldTestItem.php
@@ -32,8 +32,6 @@ class FieldTestItem extends FieldItemBase {
    * {@inheritdoc}
    */
   public static function propertyDefinitions(FieldStorageDefinitionInterface $field_definition) {
-    // This is called very early by the user entity roles field. Prevent
-    // early t() calls by using the TranslatableMarkup.
     $properties['value'] = DataDefinition::create('string')
       ->setLabel(new TranslatableMarkup('Test value'))
       ->setRequired(TRUE);
diff --git a/core/modules/system/tests/modules/entity_test/tests/src/Functional/Rest/EntityTestResourceTestBase.php b/core/modules/system/tests/modules/entity_test/tests/src/Functional/Rest/EntityTestResourceTestBase.php
index fc30b8f366..7985a3244c 100644
--- a/core/modules/system/tests/modules/entity_test/tests/src/Functional/Rest/EntityTestResourceTestBase.php
+++ b/core/modules/system/tests/modules/entity_test/tests/src/Functional/Rest/EntityTestResourceTestBase.php
@@ -78,15 +78,15 @@ protected function createEntity() {
     $entity_test = \Drupal::entityTypeManager()
       ->getStorage(static::$entityTypeId)
       ->create([
-      'name' => 'Llama',
-      'type' => static::$entityTypeId,
-      // Set a value for the internal field to confirm that it will not be
-      // returned in normalization.
-      // @see entity_test_entity_base_field_info().
-      'internal_string_field' => [
-        'value' => 'This value shall not be internal!',
-      ],
-    ]);
+        'name' => 'Llama',
+        'type' => static::$entityTypeId,
+        // Set a value for the internal field to confirm that it will not be
+        // returned in normalization.
+        // @see entity_test_entity_base_field_info().
+        'internal_string_field' => [
+          'value' => 'This value shall not be internal!',
+        ],
+      ]);
     $entity_test->setOwnerId(0);
     $entity_test->save();
 
diff --git a/core/modules/system/tests/modules/form_test/form_test.routing.yml b/core/modules/system/tests/modules/form_test/form_test.routing.yml
index 1f1379dd44..a39d924d97 100644
--- a/core/modules/system/tests/modules/form_test/form_test.routing.yml
+++ b/core/modules/system/tests/modules/form_test/form_test.routing.yml
@@ -164,6 +164,14 @@ form_test.tableselect_js:
   requirements:
     _access: 'TRUE'
 
+form_test.tableselect_disabled_rows:
+  path: '/form_test/tableselect/disabled-rows/{test_action}'
+  defaults:
+    _form: '\Drupal\form_test\Form\FormTestTableSelectDisabledRowsForm'
+    _title: 'Tableselect disabled rows tests'
+  requirements:
+    _access: 'TRUE'
+
 form_test.vertical_tabs:
   path: '/form_test/vertical-tabs'
   defaults:
diff --git a/core/modules/system/tests/modules/form_test/src/Form/FormTestTableSelectDisabledRowsForm.php b/core/modules/system/tests/modules/form_test/src/Form/FormTestTableSelectDisabledRowsForm.php
new file mode 100644
index 0000000000..8b00bfb7d4
--- /dev/null
+++ b/core/modules/system/tests/modules/form_test/src/Form/FormTestTableSelectDisabledRowsForm.php
@@ -0,0 +1,44 @@
+<?php
+
+namespace Drupal\form_test\Form;
+
+use Drupal\Core\Form\FormStateInterface;
+
+/**
+ * Builds a form to test table select with disabled rows.
+ *
+ * @internal
+ */
+class FormTestTableSelectDisabledRowsForm extends FormTestTableSelectFormBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getFormId() {
+    return '_form_test_tableselect_disabled_rows_form';
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function buildForm(array $form, FormStateInterface $form_state, $test_action = NULL) {
+    $multiple = ['multiple-true' => TRUE, 'multiple-false' => FALSE][$test_action];
+    $form = $this->tableselectFormBuilder($form, $form_state, [
+      '#multiple' => $multiple,
+      '#js_select' => TRUE,
+      '#ajax' => NULL,
+    ]);
+
+    // Disable the second row.
+    $form['tableselect']['#options']['row2']['#disabled'] = TRUE;
+
+    return $form;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function submitForm(array &$form, FormStateInterface $form_state) {
+  }
+
+}
diff --git a/core/modules/system/tests/modules/image_test/src/Plugin/ImageToolkit/Operation/test/OperationBase.php b/core/modules/system/tests/modules/image_test/src/Plugin/ImageToolkit/Operation/test/OperationBase.php
index e978f2a070..1e0b2def1d 100644
--- a/core/modules/system/tests/modules/image_test/src/Plugin/ImageToolkit/Operation/test/OperationBase.php
+++ b/core/modules/system/tests/modules/image_test/src/Plugin/ImageToolkit/Operation/test/OperationBase.php
@@ -21,6 +21,7 @@ public function arguments() {
    */
   public function execute(array $arguments) {
     // Nothing to do.
+    return TRUE;
   }
 
 }
diff --git a/core/modules/system/tests/modules/layout_test/templates/layout-test-1col.html.twig b/core/modules/system/tests/modules/layout_test/templates/layout-test-1col.html.twig
index 2207e3c71a..ab03efabc9 100644
--- a/core/modules/system/tests/modules/layout_test/templates/layout-test-1col.html.twig
+++ b/core/modules/system/tests/modules/layout_test/templates/layout-test-1col.html.twig
@@ -5,6 +5,9 @@
  */
 #}
 <div{{ attributes.addClass('layout-example-1col', 'clearfix') }}>
+  {% if in_preview %}
+    This is a preview, indeed
+  {% endif %}
   <div {{ region_attributes.top.addClass('region-top') }}>
     {{ content.top }}
   </div>
diff --git a/core/modules/system/tests/modules/menu_test/src/Plugin/Derivative/MenuLinkTestWithUnsafeTitle.php b/core/modules/system/tests/modules/menu_test/src/Plugin/Derivative/MenuLinkTestWithUnsafeTitle.php
index 822224c1a0..60d9923117 100644
--- a/core/modules/system/tests/modules/menu_test/src/Plugin/Derivative/MenuLinkTestWithUnsafeTitle.php
+++ b/core/modules/system/tests/modules/menu_test/src/Plugin/Derivative/MenuLinkTestWithUnsafeTitle.php
@@ -14,9 +14,9 @@ class MenuLinkTestWithUnsafeTitle extends DeriverBase {
    */
   public function getDerivativeDefinitions($base_plugin_definition) {
     $this->derivatives['unsafe'] = [
-        'title' => '<script>alert("Even more wild animals")</script>',
-        'menu_name' => 'tools',
-      ] + $base_plugin_definition;
+      'title' => '<script>alert("Even more wild animals")</script>',
+      'menu_name' => 'tools',
+    ] + $base_plugin_definition;
 
     return $this->derivatives;
   }
diff --git a/core/modules/system/tests/modules/module_test/module_test.permissions.yml b/core/modules/system/tests/modules/module_test/module_test.permissions.yml
index d5f58692cf..c26e65a2d1 100644
--- a/core/modules/system/tests/modules/module_test/module_test.permissions.yml
+++ b/core/modules/system/tests/modules/module_test/module_test.permissions.yml
@@ -1,2 +1,2 @@
 module_test perm:
-   title: 'example perm for module_test module'
+  title: 'example perm for module_test module'
diff --git a/core/modules/system/tests/modules/plugin_test/src/Plugin/MockBlockManager.php b/core/modules/system/tests/modules/plugin_test/src/Plugin/MockBlockManager.php
index 766aa7a8d5..d53901f6b2 100644
--- a/core/modules/system/tests/modules/plugin_test/src/Plugin/MockBlockManager.php
+++ b/core/modules/system/tests/modules/plugin_test/src/Plugin/MockBlockManager.php
@@ -8,12 +8,15 @@
 use Drupal\Component\Plugin\Factory\ReflectionFactory;
 use Drupal\Core\Plugin\Context\ContextDefinition;
 use Drupal\Core\Plugin\Context\EntityContextDefinition;
+use Drupal\Core\StringTranslation\StringTranslationTrait;
 
 /**
  * Defines a plugin manager used by Plugin API derivative unit tests.
  */
 class MockBlockManager extends PluginManagerBase {
 
+  use StringTranslationTrait;
+
   public function __construct() {
 
     // Create the object that can be used to return definitions for all the
@@ -38,7 +41,7 @@ public function __construct() {
     // A simple plugin: the user login block.
     $this->discovery->setDefinition('user_login', [
       'id' => 'user_login',
-      'label' => t('User login'),
+      'label' => $this->t('User login'),
       'class' => 'Drupal\plugin_test\Plugin\plugin_test\mock_block\MockUserLoginBlock',
     ]);
 
@@ -56,7 +59,7 @@ public function __construct() {
     // A plugin defining itself as a derivative.
     $this->discovery->setDefinition('menu:foo', [
       'id' => 'menu',
-      'label' => t('Base label'),
+      'label' => $this->t('Base label'),
       'class' => 'Drupal\plugin_test\Plugin\plugin_test\mock_block\MockMenuBlock',
     ]);
 
@@ -68,7 +71,7 @@ public function __construct() {
     // derivatives are available to the system.
     $this->discovery->setDefinition('layout', [
       'id' => 'layout',
-      'label' => t('Layout'),
+      'label' => $this->t('Layout'),
       'class' => 'Drupal\plugin_test\Plugin\plugin_test\mock_block\MockLayoutBlock',
       'deriver' => 'Drupal\plugin_test\Plugin\plugin_test\mock_block\MockLayoutBlockDeriver',
     ]);
@@ -77,38 +80,38 @@ public function __construct() {
     // user object in order to return the user name from the getTitle() method.
     $this->discovery->setDefinition('user_name', [
       'id' => 'user_name',
-      'label' => t('User name'),
+      'label' => $this->t('User name'),
       'class' => 'Drupal\plugin_test\Plugin\plugin_test\mock_block\MockUserNameBlock',
       'context_definitions' => [
-        'user' => $this->createContextDefinition('entity:user', t('User')),
+        'user' => $this->createContextDefinition('entity:user', $this->t('User')),
       ],
     ]);
 
     // An optional context version of the previous block plugin.
     $this->discovery->setDefinition('user_name_optional', [
       'id' => 'user_name_optional',
-      'label' => t('User name optional'),
+      'label' => $this->t('User name optional'),
       'class' => 'Drupal\plugin_test\Plugin\plugin_test\mock_block\MockUserNameBlock',
       'context_definitions' => [
-        'user' => $this->createContextDefinition('entity:user', t('User'), FALSE),
+        'user' => $this->createContextDefinition('entity:user', $this->t('User'), FALSE),
       ],
     ]);
 
     // A block plugin that requires a typed data string context to function.
     $this->discovery->setDefinition('string_context', [
       'id' => 'string_context',
-      'label' => t('String typed data'),
+      'label' => $this->t('String typed data'),
       'class' => 'Drupal\plugin_test\Plugin\plugin_test\mock_block\TypedDataStringBlock',
     ]);
 
     // A complex context plugin that requires both a user and node for context.
     $this->discovery->setDefinition('complex_context', [
       'id' => 'complex_context',
-      'label' => t('Complex context'),
+      'label' => $this->t('Complex context'),
       'class' => 'Drupal\plugin_test\Plugin\plugin_test\mock_block\MockComplexContextBlock',
       'context_definitions' => [
-        'user' => $this->createContextDefinition('entity:user', t('User')),
-        'node' => $this->createContextDefinition('entity:node', t('Node')),
+        'user' => $this->createContextDefinition('entity:user', $this->t('User')),
+        'node' => $this->createContextDefinition('entity:node', $this->t('Node')),
       ],
     ]);
 
diff --git a/core/modules/system/tests/modules/plugin_test/src/Plugin/plugin_test/mock_block/MockLayoutBlockDeriver.php b/core/modules/system/tests/modules/plugin_test/src/Plugin/plugin_test/mock_block/MockLayoutBlockDeriver.php
index 93fca538b8..c575dd0b58 100644
--- a/core/modules/system/tests/modules/plugin_test/src/Plugin/plugin_test/mock_block/MockLayoutBlockDeriver.php
+++ b/core/modules/system/tests/modules/plugin_test/src/Plugin/plugin_test/mock_block/MockLayoutBlockDeriver.php
@@ -3,6 +3,7 @@
 namespace Drupal\plugin_test\Plugin\plugin_test\mock_block;
 
 use Drupal\Component\Plugin\Derivative\DeriverInterface;
+use Drupal\Core\StringTranslation\StringTranslationTrait;
 
 /**
  * Mock implementation of DeriverInterface for the mock layout block plugin.
@@ -11,6 +12,8 @@
  */
 class MockLayoutBlockDeriver implements DeriverInterface {
 
+  use StringTranslationTrait;
+
   /**
    * {@inheritdoc}
    */
@@ -19,6 +22,7 @@ public function getDerivativeDefinition($derivative_id, $base_plugin_definition)
     if (isset($derivatives[$derivative_id])) {
       return $derivatives[$derivative_id];
     }
+    return NULL;
   }
 
   /**
@@ -41,7 +45,7 @@ public function getDerivativeDefinitions($base_plugin_definition) {
       // customized one, but in a real implementation, this would be fetched
       // from some \Drupal::config() object.
       'foo' => [
-        'label' => t('Layout Foo'),
+        'label' => $this->t('Layout Foo'),
       ] + $base_plugin_definition,
     ];
 
diff --git a/core/modules/system/tests/modules/plugin_test/src/Plugin/plugin_test/mock_block/MockMenuBlockDeriver.php b/core/modules/system/tests/modules/plugin_test/src/Plugin/plugin_test/mock_block/MockMenuBlockDeriver.php
index b8aedac36a..d8031a7cf9 100644
--- a/core/modules/system/tests/modules/plugin_test/src/Plugin/plugin_test/mock_block/MockMenuBlockDeriver.php
+++ b/core/modules/system/tests/modules/plugin_test/src/Plugin/plugin_test/mock_block/MockMenuBlockDeriver.php
@@ -3,6 +3,7 @@
 namespace Drupal\plugin_test\Plugin\plugin_test\mock_block;
 
 use Drupal\Component\Plugin\Derivative\DeriverInterface;
+use Drupal\Core\StringTranslation\StringTranslationTrait;
 
 /**
  * Mock implementation of DeriverInterface for the mock menu block plugin.
@@ -11,6 +12,8 @@
  */
 class MockMenuBlockDeriver implements DeriverInterface {
 
+  use StringTranslationTrait;
+
   /**
    * {@inheritdoc}
    */
@@ -19,6 +22,7 @@ public function getDerivativeDefinition($derivative_id, $base_plugin_definition)
     if (isset($derivatives[$derivative_id])) {
       return $derivatives[$derivative_id];
     }
+    return NULL;
   }
 
   /**
@@ -36,16 +40,16 @@ public function getDerivativeDefinitions($base_plugin_definition) {
     // Drupal's configuration to find out which menus actually exist.
     $derivatives = [
       'main_menu' => [
-        'label' => t('Main menu'),
+        'label' => $this->t('Main menu'),
       ] + $base_plugin_definition,
       'navigation' => [
-        'label' => t('Navigation'),
+        'label' => $this->t('Navigation'),
       ] + $base_plugin_definition,
       'foo' => [
         // Instead of the derivative label, the specific label will be used.
-        'label' => t('Derivative label'),
+        'label' => $this->t('Derivative label'),
         // This setting will be merged in.
-         'setting' => 'default',
+        'setting' => 'default',
       ] + $base_plugin_definition,
     ];
 
diff --git a/core/modules/system/tests/modules/requirements1_test/requirements1_test.install b/core/modules/system/tests/modules/requirements1_test/requirements1_test.install
index e8121617ad..611d2d49b8 100644
--- a/core/modules/system/tests/modules/requirements1_test/requirements1_test.install
+++ b/core/modules/system/tests/modules/requirements1_test/requirements1_test.install
@@ -20,5 +20,17 @@ function requirements1_test_requirements($phase) {
     ];
   }
 
+  $requirements['requirements1_test_alterable'] = [
+    'title' => t('Requirements 1 Test Alterable'),
+    'severity' => REQUIREMENT_ERROR,
+    'description' => t('A requirement that will be altered.'),
+  ];
+
+  $requirements['requirements1_test_deletable'] = [
+    'title' => t('Requirements 1 Test Deletable'),
+    'severity' => REQUIREMENT_INFO,
+    'description' => t('A requirement that will be deleted.'),
+  ];
+
   return $requirements;
 }
diff --git a/core/modules/system/tests/modules/requirements1_test/requirements1_test.module b/core/modules/system/tests/modules/requirements1_test/requirements1_test.module
new file mode 100644
index 0000000000..615c578df3
--- /dev/null
+++ b/core/modules/system/tests/modules/requirements1_test/requirements1_test.module
@@ -0,0 +1,18 @@
+<?php
+
+/**
+ * @file
+ * Hook implementations for requirements1_test module.
+ */
+
+/**
+ * Implements hook_requirements_alter().
+ */
+function requirements1_test_requirements_alter(array &$requirements): void {
+  // Change the title.
+  $requirements['requirements1_test_alterable']['title'] = t('Requirements 1 Test - Changed');
+  // Decrease the severity.
+  $requirements['requirements1_test_alterable']['severity'] = REQUIREMENT_WARNING;
+  // Delete 'requirements1_test_deletable',
+  unset($requirements['requirements1_test_deletable']);
+}
diff --git a/core/modules/system/tests/modules/service_provider_test/src/TestFileUsage.php b/core/modules/system/tests/modules/service_provider_test/src/TestFileUsage.php
index 4189e498f9..c75b8cb118 100644
--- a/core/modules/system/tests/modules/service_provider_test/src/TestFileUsage.php
+++ b/core/modules/system/tests/modules/service_provider_test/src/TestFileUsage.php
@@ -23,6 +23,7 @@ public function delete(FileInterface $file, $module, $type = NULL, $id = NULL, $
    * {@inheritdoc}
    */
   public function listUsage(FileInterface $file) {
+    return [];
   }
 
 }
diff --git a/core/modules/system/tests/modules/token_test/token_test.info.yml b/core/modules/system/tests/modules/token_test/token_test.info.yml
index 67a433eae4..b966049c53 100644
--- a/core/modules/system/tests/modules/token_test/token_test.info.yml
+++ b/core/modules/system/tests/modules/token_test/token_test.info.yml
@@ -3,5 +3,5 @@ type: module
 package: Testing
 version: VERSION
 dependencies:
- - drupal:user
- - drupal:node
+  - drupal:user
+  - drupal:node
diff --git a/core/modules/system/tests/src/Functional/Cache/CacheTestBase.php b/core/modules/system/tests/src/Functional/Cache/CacheTestBase.php
index 08c4db5e8a..007ae8736a 100644
--- a/core/modules/system/tests/src/Functional/Cache/CacheTestBase.php
+++ b/core/modules/system/tests/src/Functional/Cache/CacheTestBase.php
@@ -23,7 +23,7 @@ abstract class CacheTestBase extends BrowserTestBase {
    * @param $bin
    *   The bin the cache item was stored in.
    *
-   * @return
+   * @return bool
    *   TRUE on pass, FALSE on fail.
    */
   protected function checkCacheExists($cid, $var, $bin = NULL) {
diff --git a/core/modules/system/tests/src/Functional/Cache/ClearTest.php b/core/modules/system/tests/src/Functional/Cache/ClearTest.php
index aee7ae6747..1b0125d2ee 100644
--- a/core/modules/system/tests/src/Functional/Cache/ClearTest.php
+++ b/core/modules/system/tests/src/Functional/Cache/ClearTest.php
@@ -17,6 +17,9 @@ class ClearTest extends CacheTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     $this->defaultBin = 'render';
     $this->defaultValue = $this->randomMachineName(10);
diff --git a/core/modules/system/tests/src/Functional/Database/DatabaseTestBase.php b/core/modules/system/tests/src/Functional/Database/DatabaseTestBase.php
index 8176033ce5..f75aa39563 100644
--- a/core/modules/system/tests/src/Functional/Database/DatabaseTestBase.php
+++ b/core/modules/system/tests/src/Functional/Database/DatabaseTestBase.php
@@ -2,7 +2,9 @@
 
 namespace Drupal\Tests\system\Functional\Database;
 
-use Drupal\KernelTests\Core\Database\DatabaseTestBase as DatabaseKernelTestBase;
+use Drupal\Core\Database\Connection;
+use Drupal\Core\Database\Database;
+use Drupal\KernelTests\Core\Database\DatabaseTestSchemaDataTrait;
 use Drupal\Tests\BrowserTestBase;
 
 /**
@@ -10,6 +12,13 @@
  */
 abstract class DatabaseTestBase extends BrowserTestBase {
 
+  use DatabaseTestSchemaDataTrait;
+
+  /**
+   * The database connection for testing.
+   */
+  protected Connection $connection;
+
   /**
    * {@inheritdoc}
    */
@@ -20,8 +29,8 @@ abstract class DatabaseTestBase extends BrowserTestBase {
    */
   protected function setUp(): void {
     parent::setUp();
-
-    DatabaseKernelTestBase::addSampleData();
+    $this->connection = Database::getConnection();
+    $this->addSampleData();
   }
 
 }
diff --git a/core/modules/system/tests/src/Functional/Entity/EntityFormTest.php b/core/modules/system/tests/src/Functional/Entity/EntityFormTest.php
index a140b8e3af..5c1b02c56c 100644
--- a/core/modules/system/tests/src/Functional/Entity/EntityFormTest.php
+++ b/core/modules/system/tests/src/Functional/Entity/EntityFormTest.php
@@ -28,6 +28,9 @@ class EntityFormTest extends BrowserTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $web_user = $this->drupalCreateUser([
diff --git a/core/modules/system/tests/src/Functional/Entity/EntityOperationsTest.php b/core/modules/system/tests/src/Functional/Entity/EntityOperationsTest.php
index a3d5b21521..866570e64d 100644
--- a/core/modules/system/tests/src/Functional/Entity/EntityOperationsTest.php
+++ b/core/modules/system/tests/src/Functional/Entity/EntityOperationsTest.php
@@ -24,6 +24,9 @@ class EntityOperationsTest extends BrowserTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/system/tests/src/Functional/Entity/EntityRevisionsTest.php b/core/modules/system/tests/src/Functional/Entity/EntityRevisionsTest.php
index ed0e74d31f..dc355f05a8 100644
--- a/core/modules/system/tests/src/Functional/Entity/EntityRevisionsTest.php
+++ b/core/modules/system/tests/src/Functional/Entity/EntityRevisionsTest.php
@@ -36,6 +36,9 @@ class EntityRevisionsTest extends BrowserTestBase {
    */
   protected $webUser;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/system/tests/src/Functional/Entity/EntityTranslationFormTest.php b/core/modules/system/tests/src/Functional/Entity/EntityTranslationFormTest.php
index 1f5cb69bd2..b8efbea1cd 100644
--- a/core/modules/system/tests/src/Functional/Entity/EntityTranslationFormTest.php
+++ b/core/modules/system/tests/src/Functional/Entity/EntityTranslationFormTest.php
@@ -29,6 +29,9 @@ class EntityTranslationFormTest extends BrowserTestBase {
 
   protected $langcodes;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     // Enable translations for the test entity type.
diff --git a/core/modules/system/tests/src/Functional/Entity/EntityViewControllerTest.php b/core/modules/system/tests/src/Functional/Entity/EntityViewControllerTest.php
index 470ba9aee1..6c0f802f6e 100644
--- a/core/modules/system/tests/src/Functional/Entity/EntityViewControllerTest.php
+++ b/core/modules/system/tests/src/Functional/Entity/EntityViewControllerTest.php
@@ -31,6 +31,9 @@ class EntityViewControllerTest extends BrowserTestBase {
    */
   protected $entities = [];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     // Create some dummy entity_test entities.
diff --git a/core/modules/system/tests/src/Functional/File/ConfigTest.php b/core/modules/system/tests/src/Functional/File/ConfigTest.php
index 3fb94889f0..b63f89d536 100644
--- a/core/modules/system/tests/src/Functional/File/ConfigTest.php
+++ b/core/modules/system/tests/src/Functional/File/ConfigTest.php
@@ -16,6 +16,9 @@ class ConfigTest extends BrowserTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->drupalLogin($this->drupalCreateUser([
diff --git a/core/modules/system/tests/src/Functional/FileTransfer/FileTransferTest.php b/core/modules/system/tests/src/Functional/FileTransfer/FileTransferTest.php
index 07fd01bc47..b96caa610d 100644
--- a/core/modules/system/tests/src/Functional/FileTransfer/FileTransferTest.php
+++ b/core/modules/system/tests/src/Functional/FileTransfer/FileTransferTest.php
@@ -28,6 +28,9 @@ class FileTransferTest extends BrowserTestBase {
    */
   protected TestFileTransfer $testConnection;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->testConnection = TestFileTransfer::factory($this->root, ['hostname' => $this->hostname, 'username' => $this->username, 'password' => $this->password, 'port' => $this->port]);
diff --git a/core/modules/system/tests/src/Functional/Form/ArbitraryRebuildTest.php b/core/modules/system/tests/src/Functional/Form/ArbitraryRebuildTest.php
index 9d060f84f0..cd3fa57e36 100644
--- a/core/modules/system/tests/src/Functional/Form/ArbitraryRebuildTest.php
+++ b/core/modules/system/tests/src/Functional/Form/ArbitraryRebuildTest.php
@@ -25,6 +25,9 @@ class ArbitraryRebuildTest extends BrowserTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/system/tests/src/Functional/Form/ElementTest.php b/core/modules/system/tests/src/Functional/Form/ElementTest.php
index 8a6b027c46..3513d7deb5 100644
--- a/core/modules/system/tests/src/Functional/Form/ElementTest.php
+++ b/core/modules/system/tests/src/Functional/Form/ElementTest.php
@@ -2,7 +2,6 @@
 
 namespace Drupal\Tests\system\Functional\Form;
 
-use Drupal\Component\Render\FormattableMarkup;
 use Drupal\Tests\BrowserTestBase;
 
 /**
@@ -114,9 +113,8 @@ public function testWrapperIds() {
     // Verify that wrapper id is different from element id.
     foreach (['checkboxes', 'radios'] as $type) {
       // A single element id is found.
-      $this->assertSession()->elementsCount('xpath', "//div[@id='edit-$type']", 1);
-      $wrapper_ids = $this->xpath('//fieldset[@id=:id]', [':id' => 'edit-' . $type . '--wrapper']);
-      $this->assertCount(1, $wrapper_ids, new FormattableMarkup('A single wrapper id found for type %type', ['%type' => $type]));
+      $this->assertSession()->elementsCount('xpath', "//div[@id='edit-{$type}']", 1);
+      $this->assertSession()->elementsCount('xpath', "//fieldset[@id='edit-{$type}--wrapper']", 1);
     }
   }
 
@@ -129,9 +127,9 @@ public function testButtonClasses() {
     // "button--foo" would contain "button". Instead, check
     // " button ". Make sure it matches in the beginning and the end too
     // by adding a space before and after.
-    $this->assertCount(2, $this->xpath('//*[contains(concat(" ", @class, " "), " button ")]'));
-    $this->assertCount(1, $this->xpath('//*[contains(concat(" ", @class, " "), " button--foo ")]'));
-    $this->assertCount(1, $this->xpath('//*[contains(concat(" ", @class, " "), " button--danger ")]'));
+    $this->assertSession()->elementsCount('xpath', '//*[contains(concat(" ", @class, " "), " button ")]', 2);
+    $this->assertSession()->elementsCount('xpath', '//*[contains(concat(" ", @class, " "), " button--foo ")]', 1);
+    $this->assertSession()->elementsCount('xpath', '//*[contains(concat(" ", @class, " "), " button--danger ")]', 1);
   }
 
   /**
diff --git a/core/modules/system/tests/src/Functional/Form/ElementsTableSelectTest.php b/core/modules/system/tests/src/Functional/Form/ElementsTableSelectTest.php
index f20a753b71..6ca381f56a 100644
--- a/core/modules/system/tests/src/Functional/Form/ElementsTableSelectTest.php
+++ b/core/modules/system/tests/src/Functional/Form/ElementsTableSelectTest.php
@@ -34,11 +34,11 @@ public function testMultipleTrue() {
     $this->assertSession()->responseNotContains('Empty text.');
 
     // Test for the presence of the Select all rows tableheader.
-    $this->assertNotEmpty($this->xpath('//th[@class="select-all"]'), 'Presence of the "Select all" checkbox.');
+    $this->assertSession()->elementExists('xpath', '//th[@class="select-all"]');
 
     $rows = ['row1', 'row2', 'row3'];
     foreach ($rows as $row) {
-      $this->assertNotEmpty($this->xpath('//input[@type="checkbox"]', [$row]), "Checkbox for the value $row.");
+      $this->assertSession()->elementExists('xpath', '//input[@type="checkbox"]');
     }
   }
 
@@ -55,7 +55,7 @@ public function testMultipleFalse() {
 
     $rows = ['row1', 'row2', 'row3'];
     foreach ($rows as $row) {
-      $this->assertNotEmpty($this->xpath('//input[@type="radio"]', [$row], "Radio button value: $row"));
+      $this->assertSession()->elementExists('xpath', '//input[@type="radio"]');
     }
   }
 
@@ -70,18 +70,17 @@ public function testTableSelectColSpan() {
     $this->assertSession()->pageTextNotContains('Four');
 
     // There should be three labeled column headers and 1 for the input.
-    $table_head = $this->xpath('//thead/tr/th');
-    $this->assertCount(4, $table_head, 'There are four column headers');
+    $this->assertSession()->elementsCount('xpath', '//thead/tr/th', 4);
 
     // The first two body rows should each have 5 table cells: One for the
     // radio, one cell in the first column, one cell in the second column,
     // and two cells in the third column which has colspan 2.
     for ($i = 0; $i <= 1; $i++) {
-      $this->assertCount(5, $this->xpath('//tbody/tr[' . ($i + 1) . ']/td'), 'There are five cells in row ' . $i);
+      $this->assertSession()->elementsCount('xpath', '//tbody/tr[' . ($i + 1) . ']/td', 5);
     }
     // The third row should have 3 cells, one for the radio, one spanning the
     // first and second column, and a third in column 3 (which has colspan 3).
-    $this->assertCount(3, $this->xpath('//tbody/tr[3]/td'), 'There are three cells in row 3.');
+    $this->assertSession()->elementsCount('xpath', '//tbody/tr[3]/td', 3);
   }
 
   /**
diff --git a/core/modules/system/tests/src/Functional/Form/ElementsVerticalTabsTest.php b/core/modules/system/tests/src/Functional/Form/ElementsVerticalTabsTest.php
index 85908aa136..bdd0b80a70 100644
--- a/core/modules/system/tests/src/Functional/Form/ElementsVerticalTabsTest.php
+++ b/core/modules/system/tests/src/Functional/Form/ElementsVerticalTabsTest.php
@@ -39,6 +39,9 @@ class ElementsVerticalTabsTest extends BrowserTestBase {
    */
   protected $webUser;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/system/tests/src/Functional/Form/FormObjectTest.php b/core/modules/system/tests/src/Functional/Form/FormObjectTest.php
index 174cdf39ac..d96d8aaf83 100644
--- a/core/modules/system/tests/src/Functional/Form/FormObjectTest.php
+++ b/core/modules/system/tests/src/Functional/Form/FormObjectTest.php
@@ -33,8 +33,7 @@ public function testObjectFormCallback() {
 
     $this->drupalGet('form-test/object-builder');
     $this->assertSession()->pageTextContains('The FormTestObject::buildForm() method was used for this form.');
-    $elements = $this->xpath('//form[@id="form-test-form-test-object"]');
-    $this->assertTrue(!empty($elements), 'The correct form ID was used.');
+    $this->assertSession()->elementExists('xpath', '//form[@id="form-test-form-test-object"]');
     $this->submitForm(['bananas' => 'green'], 'Save');
     $this->assertSession()->pageTextContains('The FormTestObject::validateForm() method was used for this form.');
     $this->assertSession()->pageTextContains('The FormTestObject::submitForm() method was used for this form.');
@@ -43,8 +42,7 @@ public function testObjectFormCallback() {
 
     $this->drupalGet('form-test/object-arguments-builder/yellow');
     $this->assertSession()->pageTextContains('The FormTestArgumentsObject::buildForm() method was used for this form.');
-    $elements = $this->xpath('//form[@id="form-test-form-test-arguments-object"]');
-    $this->assertTrue(!empty($elements), 'The correct form ID was used.');
+    $this->assertSession()->elementExists('xpath', '//form[@id="form-test-form-test-arguments-object"]');
     $this->submitForm([], 'Save');
     $this->assertSession()->pageTextContains('The FormTestArgumentsObject::validateForm() method was used for this form.');
     $this->assertSession()->pageTextContains('The FormTestArgumentsObject::submitForm() method was used for this form.');
@@ -53,8 +51,7 @@ public function testObjectFormCallback() {
 
     $this->drupalGet('form-test/object-service-builder');
     $this->assertSession()->pageTextContains('The FormTestServiceObject::buildForm() method was used for this form.');
-    $elements = $this->xpath('//form[@id="form-test-form-test-service-object"]');
-    $this->assertTrue(!empty($elements), 'The correct form ID was used.');
+    $this->assertSession()->elementExists('xpath', '//form[@id="form-test-form-test-service-object"]');
     $this->submitForm(['bananas' => 'brown'], 'Save');
     $this->assertSession()->pageTextContains('The FormTestServiceObject::validateForm() method was used for this form.');
     $this->assertSession()->pageTextContains('The FormTestServiceObject::submitForm() method was used for this form.');
@@ -64,8 +61,7 @@ public function testObjectFormCallback() {
     $this->drupalGet('form-test/object-controller-builder');
     $this->assertSession()->pageTextContains('The FormTestControllerObject::create() method was used for this form.');
     $this->assertSession()->pageTextContains('The FormTestControllerObject::buildForm() method was used for this form.');
-    $elements = $this->xpath('//form[@id="form-test-form-test-controller-object"]');
-    $this->assertTrue(!empty($elements), 'The correct form ID was used.');
+    $this->assertSession()->elementExists('xpath', '//form[@id="form-test-form-test-controller-object"]');
     // Ensure parameters are injected from request attributes.
     $this->assertSession()->pageTextContains('custom_value');
     // Ensure the request object is injected.
diff --git a/core/modules/system/tests/src/Functional/Form/FormTest.php b/core/modules/system/tests/src/Functional/Form/FormTest.php
index e9a5384904..3e07093f18 100644
--- a/core/modules/system/tests/src/Functional/Form/FormTest.php
+++ b/core/modules/system/tests/src/Functional/Form/FormTest.php
@@ -33,6 +33,9 @@ class FormTest extends BrowserTestBase {
    */
   protected $defaultTheme = 'starterkit_theme';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
@@ -416,27 +419,27 @@ public function testSelect() {
     // Posting without any values should throw validation errors.
     $this->submitForm([], 'Submit');
     $no_errors = [
-        'select',
-        'select_required',
-        'select_optional',
-        'empty_value',
-        'empty_value_one',
-        'no_default_optional',
-        'no_default_empty_option_optional',
-        'no_default_empty_value_optional',
-        'multiple',
-        'multiple_no_default',
+      'select',
+      'select_required',
+      'select_optional',
+      'empty_value',
+      'empty_value_one',
+      'no_default_optional',
+      'no_default_empty_option_optional',
+      'no_default_empty_value_optional',
+      'multiple',
+      'multiple_no_default',
     ];
     foreach ($no_errors as $key) {
       $this->assertSession()->pageTextNotContains($form[$key]['#title'] . ' field is required.');
     }
 
     $expected_errors = [
-        'no_default',
-        'no_default_empty_option',
-        'no_default_empty_value',
-        'no_default_empty_value_one',
-        'multiple_no_default_required',
+      'no_default',
+      'no_default_empty_option',
+      'no_default_empty_value',
+      'no_default_empty_value_one',
+      'multiple_no_default_required',
     ];
     foreach ($expected_errors as $key) {
       $this->assertSession()->pageTextContains($form[$key]['#title'] . ' field is required.');
diff --git a/core/modules/system/tests/src/Functional/Form/LanguageSelectElementTest.php b/core/modules/system/tests/src/Functional/Form/LanguageSelectElementTest.php
index fa62399241..6622ce607c 100644
--- a/core/modules/system/tests/src/Functional/Form/LanguageSelectElementTest.php
+++ b/core/modules/system/tests/src/Functional/Form/LanguageSelectElementTest.php
@@ -47,10 +47,10 @@ public function testLanguageSelectElementOptions() {
     $this->drupalGet('form-test/language_select');
     // Check that the language fields were rendered on the page.
     $ids = [
-        'edit-languages-all' => LanguageInterface::STATE_ALL,
-        'edit-languages-configurable' => LanguageInterface::STATE_CONFIGURABLE,
-        'edit-languages-locked' => LanguageInterface::STATE_LOCKED,
-        'edit-languages-config-and-locked' => LanguageInterface::STATE_CONFIGURABLE | LanguageInterface::STATE_LOCKED,
+      'edit-languages-all' => LanguageInterface::STATE_ALL,
+      'edit-languages-configurable' => LanguageInterface::STATE_CONFIGURABLE,
+      'edit-languages-locked' => LanguageInterface::STATE_LOCKED,
+      'edit-languages-config-and-locked' => LanguageInterface::STATE_CONFIGURABLE | LanguageInterface::STATE_LOCKED,
     ];
     foreach ($ids as $id => $flags) {
       $this->assertSession()->fieldExists($id);
diff --git a/core/modules/system/tests/src/Functional/Form/RebuildTest.php b/core/modules/system/tests/src/Functional/Form/RebuildTest.php
index 061eb2c3f1..e98ec55d08 100644
--- a/core/modules/system/tests/src/Functional/Form/RebuildTest.php
+++ b/core/modules/system/tests/src/Functional/Form/RebuildTest.php
@@ -30,6 +30,9 @@ class RebuildTest extends BrowserTestBase {
    */
   protected $webUser;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/system/tests/src/Functional/Mail/HtmlToTextTest.php b/core/modules/system/tests/src/Functional/Mail/HtmlToTextTest.php
index ecb9e26054..920feaeb08 100644
--- a/core/modules/system/tests/src/Functional/Mail/HtmlToTextTest.php
+++ b/core/modules/system/tests/src/Functional/Mail/HtmlToTextTest.php
@@ -25,7 +25,7 @@ class HtmlToTextTest extends BrowserTestBase {
    * @param $text
    *   The text string to convert.
    *
-   * @return
+   * @return string
    *   An HTML representation of the text string that, when displayed in a
    *   browser, represents the PHP source code equivalent of $text.
    */
@@ -304,9 +304,9 @@ public function testFootnoteReferences() {
   public function testDrupalHtmlToTextParagraphs() {
     $tests = [];
     $tests[] = [
-        'html' => "<p>line 1<br />\nline 2<br />line 3\n<br />line 4</p><p>paragraph</p>",
+      'html' => "<p>line 1<br />\nline 2<br />line 3\n<br />line 4</p><p>paragraph</p>",
         // @todo Trailing line breaks should be trimmed.
-        'text' => "line 1\nline 2\nline 3\nline 4\n\nparagraph\n\n",
+      'text' => "line 1\nline 2\nline 3\nline 4\n\nparagraph\n\n",
     ];
     $tests[] = [
       'html' => "<p>line 1<br /> line 2</p> <p>line 4<br /> line 5</p> <p>0</p>",
diff --git a/core/modules/system/tests/src/Functional/Menu/AssertMenuActiveTrailTrait.php b/core/modules/system/tests/src/Functional/Menu/AssertMenuActiveTrailTrait.php
index ad39414c5e..2ce7f8bc5e 100644
--- a/core/modules/system/tests/src/Functional/Menu/AssertMenuActiveTrailTrait.php
+++ b/core/modules/system/tests/src/Functional/Menu/AssertMenuActiveTrailTrait.php
@@ -43,8 +43,7 @@ protected function assertMenuActiveTrail($tree, $last_active, $active_trail_clas
         $xpath .= $this->assertSession()->buildXPathQuery($part_xpath, $part_args);
         $i++;
       }
-      $elements = $this->xpath($xpath);
-      $this->assertNotEmpty($elements, 'Active trail to current page should be visible in menu tree.');
+      $this->assertSession()->elementExists('xpath', $xpath);
 
       // Append prefix for active link asserted below.
       $xpath .= '/following-sibling::ul/descendant::';
@@ -60,8 +59,7 @@ protected function assertMenuActiveTrail($tree, $last_active, $active_trail_clas
       ':href' => Url::fromUri('base:' . $active_link_path)->toString(),
       ':title' => $active_link_title,
     ];
-    $elements = $this->xpath($xpath, $args);
-    $this->assertNotEmpty($elements, sprintf('Active link %s should be visible in menu tree, including active trail links %s.', $active_link_title, implode(' » ', $tree)));
+    $this->assertSession()->elementExists('xpath', $this->assertSession()->buildXPathQuery($xpath, $args));
   }
 
 }
diff --git a/core/modules/system/tests/src/Functional/Menu/BreadcrumbTest.php b/core/modules/system/tests/src/Functional/Menu/BreadcrumbTest.php
index a02ae003aa..bd918db59a 100644
--- a/core/modules/system/tests/src/Functional/Menu/BreadcrumbTest.php
+++ b/core/modules/system/tests/src/Functional/Menu/BreadcrumbTest.php
@@ -46,6 +46,9 @@ class BreadcrumbTest extends BrowserTestBase {
    */
   protected $profile = 'standard';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
@@ -302,11 +305,7 @@ public function testBreadCrumbs() {
       // untranslated menu links automatically generated from menu router items
       // ('taxonomy/term/%') should never be translated and appear in any menu
       // other than the breadcrumb trail.
-      $elements = $this->xpath('//nav[contains(@class, :menu-class)]/descendant::a[@href=:href]', [
-        ':menu-class' => 'menu--tools',
-        ':href' => Url::fromUri('base:' . $link_path)->toString(),
-      ]);
-      $this->assertCount(1, $elements, "Link to {$link_path} appears only once.");
+      $this->assertSession()->elementsCount('xpath', '//nav[contains(@class, "menu--tools")]/descendant::a[@href="' . Url::fromUri('base:' . $link_path)->toString() . '"]', 1);
 
       // Next iteration should expect this tag as parent link.
       // Note: Term name, not link name, due to taxonomy_term_page().
diff --git a/core/modules/system/tests/src/Functional/Menu/LocalTasksTest.php b/core/modules/system/tests/src/Functional/Menu/LocalTasksTest.php
index 0c6f5a70d0..c29438b2fc 100644
--- a/core/modules/system/tests/src/Functional/Menu/LocalTasksTest.php
+++ b/core/modules/system/tests/src/Functional/Menu/LocalTasksTest.php
@@ -93,10 +93,7 @@ protected function assertLocalTaskAppears(string $title): void {
    * @internal
    */
   protected function assertNoLocalTasks(int $level = 0): void {
-    $elements = $this->xpath('//*[contains(@class, :class)]//a', [
-      ':class' => $level == 0 ? 'tabs primary' : 'tabs secondary',
-    ]);
-    $this->assertEmpty($elements, 'Local tasks not found.');
+    $this->assertSession()->elementNotExists('xpath', '//*[contains(@class, "' . ($level == 0 ? 'tabs primary' : 'tabs secondary') . '")]//a');
   }
 
   /**
@@ -191,9 +188,8 @@ public function testPluginLocalTask() {
 
     $this->assertLocalTasks($tasks, 0);
 
-    $result = $this->xpath('//ul[contains(@class, "tabs")]//li[contains(@class, "active")]');
-    $this->assertCount(1, $result, 'There is one active tab.');
-    $this->assertEquals('upcasting sub1(active tab)', $result[0]->getText(), 'The "upcasting sub1" tab is active.');
+    $this->assertSession()->elementsCount('xpath', '//ul[contains(@class, "tabs")]//li[contains(@class, "active")]', 1);
+    $this->assertSession()->elementTextEquals('xpath', '//ul[contains(@class, "tabs")]//li[contains(@class, "active")]', 'upcasting sub1(active tab)');
 
     $this->drupalGet(Url::fromRoute('menu_test.local_task_test_upcasting_sub2', ['entity_test' => '1']));
 
@@ -203,9 +199,8 @@ public function testPluginLocalTask() {
     ];
     $this->assertLocalTasks($tasks, 0);
 
-    $result = $this->xpath('//ul[contains(@class, "tabs")]//li[contains(@class, "active")]');
-    $this->assertCount(1, $result, 'There is one active tab.');
-    $this->assertEquals('upcasting sub2(active tab)', $result[0]->getText(), 'The "upcasting sub2" tab is active.');
+    $this->assertSession()->elementsCount('xpath', '//ul[contains(@class, "tabs")]//li[contains(@class, "active")]', 1);
+    $this->assertSession()->elementTextEquals('xpath', '//ul[contains(@class, "tabs")]//li[contains(@class, "active")]', 'upcasting sub2(active tab)');
   }
 
   /**
diff --git a/core/modules/system/tests/src/Functional/Menu/MenuRouterTest.php b/core/modules/system/tests/src/Functional/Menu/MenuRouterTest.php
index cbc591d873..8f1931ad47 100644
--- a/core/modules/system/tests/src/Functional/Menu/MenuRouterTest.php
+++ b/core/modules/system/tests/src/Functional/Menu/MenuRouterTest.php
@@ -31,6 +31,9 @@ class MenuRouterTest extends BrowserTestBase {
    */
   protected $adminTheme;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     // Enable dummy module that implements hook_menu.
     parent::setUp();
diff --git a/core/modules/system/tests/src/Functional/Module/ModuleTestBase.php b/core/modules/system/tests/src/Functional/Module/ModuleTestBase.php
index 64df50c217..eb03f83506 100644
--- a/core/modules/system/tests/src/Functional/Module/ModuleTestBase.php
+++ b/core/modules/system/tests/src/Functional/Module/ModuleTestBase.php
@@ -24,6 +24,9 @@ abstract class ModuleTestBase extends BrowserTestBase {
 
   protected $adminUser;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/system/tests/src/Functional/Page/DefaultMetatagsTest.php b/core/modules/system/tests/src/Functional/Page/DefaultMetatagsTest.php
index 5230b2a70b..b9506d4883 100644
--- a/core/modules/system/tests/src/Functional/Page/DefaultMetatagsTest.php
+++ b/core/modules/system/tests/src/Functional/Page/DefaultMetatagsTest.php
@@ -22,16 +22,14 @@ class DefaultMetatagsTest extends BrowserTestBase {
   public function testMetaTag() {
     $this->drupalGet('');
     // Ensures that the charset metatag is on the page.
-    $result = $this->xpath('//meta[@charset="utf-8"]');
-    $this->assertCount(1, $result);
+    $this->assertSession()->elementsCount('xpath', '//meta[@charset="utf-8"]', 1);
 
     // Ensure that the charset one is the first metatag.
     $result = $this->xpath('//meta');
     $this->assertEquals('utf-8', (string) $result[0]->getAttribute('charset'));
 
     // Ensure that the icon is on the page.
-    $result = $this->xpath('//link[@rel = "icon"]');
-    $this->assertCount(1, $result, 'The icon is present.');
+    $this->assertSession()->elementsCount('xpath', '//link[@rel = "icon"]', 1);
   }
 
 }
diff --git a/core/modules/system/tests/src/Functional/Pager/PagerTest.php b/core/modules/system/tests/src/Functional/Pager/PagerTest.php
index d6f09f2174..e27f0cb6b8 100644
--- a/core/modules/system/tests/src/Functional/Pager/PagerTest.php
+++ b/core/modules/system/tests/src/Functional/Pager/PagerTest.php
@@ -36,6 +36,9 @@ class PagerTest extends BrowserTestBase {
 
   protected $profile = 'testing';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/system/tests/src/Functional/Render/AjaxPageStateTest.php b/core/modules/system/tests/src/Functional/Render/AjaxPageStateTest.php
index d13f90f9c8..005769d38f 100644
--- a/core/modules/system/tests/src/Functional/Render/AjaxPageStateTest.php
+++ b/core/modules/system/tests/src/Functional/Render/AjaxPageStateTest.php
@@ -30,6 +30,9 @@ class AjaxPageStateTest extends BrowserTestBase {
    */
   protected $adminUser;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     // Create an administrator with all permissions.
diff --git a/core/modules/system/tests/src/Functional/Render/HtmlResponseAttachmentsTest.php b/core/modules/system/tests/src/Functional/Render/HtmlResponseAttachmentsTest.php
index a66e3d0232..b95d17eadd 100644
--- a/core/modules/system/tests/src/Functional/Render/HtmlResponseAttachmentsTest.php
+++ b/core/modules/system/tests/src/Functional/Render/HtmlResponseAttachmentsTest.php
@@ -70,8 +70,7 @@ public function testAttachments() {
     $this->assertEquals($expected_link_headers, $this->getSession()->getResponseHeaders()['Link']);
 
     // Check that duplicate alternate URLs with different hreflangs are allowed.
-    $test_link = $this->xpath('//head/link[@rel="alternate"][@href="/foo/bar"]');
-    $this->assertEquals(2, count($test_link), 'Duplicate alternate URLs are allowed.');
+    $this->assertSession()->elementsCount('xpath', '//head/link[@rel="alternate"][@href="/foo/bar"]', 2);
   }
 
   /**
diff --git a/core/modules/system/tests/src/Functional/Session/SessionHttpsTest.php b/core/modules/system/tests/src/Functional/Session/SessionHttpsTest.php
index 8b123f0882..a300f3c443 100644
--- a/core/modules/system/tests/src/Functional/Session/SessionHttpsTest.php
+++ b/core/modules/system/tests/src/Functional/Session/SessionHttpsTest.php
@@ -271,7 +271,7 @@ protected function assertSessionIds(string $sid, string $assertion_text): void {
    * @param $url
    *   A Drupal path such as 'user/login'.
    *
-   * @return
+   * @return string
    *   URL prepared for the https.php mock front controller.
    */
   protected function httpsUrl($url) {
@@ -284,7 +284,7 @@ protected function httpsUrl($url) {
    * @param $url
    *   A Drupal path such as 'user/login'.
    *
-   * @return
+   * @return string
    *   URL prepared for the http.php mock front controller.
    */
   protected function httpUrl($url) {
diff --git a/core/modules/system/tests/src/Functional/System/AccessDeniedTest.php b/core/modules/system/tests/src/Functional/System/AccessDeniedTest.php
index c06d93aa1f..2a2a730e8d 100644
--- a/core/modules/system/tests/src/Functional/System/AccessDeniedTest.php
+++ b/core/modules/system/tests/src/Functional/System/AccessDeniedTest.php
@@ -29,6 +29,9 @@ class AccessDeniedTest extends BrowserTestBase {
 
   protected $adminUser;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/system/tests/src/Functional/System/AdminTest.php b/core/modules/system/tests/src/Functional/System/AdminTest.php
index 07cd6fa16f..261b4b00a2 100644
--- a/core/modules/system/tests/src/Functional/System/AdminTest.php
+++ b/core/modules/system/tests/src/Functional/System/AdminTest.php
@@ -38,6 +38,9 @@ class AdminTest extends BrowserTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     // testAdminPages() requires Locale module.
     parent::setUp();
diff --git a/core/modules/system/tests/src/Functional/System/DateTimeTest.php b/core/modules/system/tests/src/Functional/System/DateTimeTest.php
index 44aebf2b09..8a587973be 100644
--- a/core/modules/system/tests/src/Functional/System/DateTimeTest.php
+++ b/core/modules/system/tests/src/Functional/System/DateTimeTest.php
@@ -34,6 +34,9 @@ class DateTimeTest extends BrowserTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
@@ -173,7 +176,7 @@ public function testDateFormatConfiguration() {
       'id' => 'xss_short',
       'label' => 'XSS format',
       'pattern' => '\<\s\c\r\i\p\t\>\a\l\e\r\t\(\'\X\S\S\'\)\;\<\/\s\c\r\i\p\t\>',
-      ]);
+    ]);
     $date_format->save();
 
     $this->drupalGet(Url::fromRoute('entity.date_format.collection'));
diff --git a/core/modules/system/tests/src/Functional/System/DefaultMobileMetaTagsTest.php b/core/modules/system/tests/src/Functional/System/DefaultMobileMetaTagsTest.php
index 3bdb192243..5fb7ca2453 100644
--- a/core/modules/system/tests/src/Functional/System/DefaultMobileMetaTagsTest.php
+++ b/core/modules/system/tests/src/Functional/System/DefaultMobileMetaTagsTest.php
@@ -23,6 +23,9 @@ class DefaultMobileMetaTagsTest extends BrowserTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->defaultMetaTags = [
diff --git a/core/modules/system/tests/src/Functional/System/FrontPageTest.php b/core/modules/system/tests/src/Functional/System/FrontPageTest.php
index 75714c38ec..32de72dd08 100644
--- a/core/modules/system/tests/src/Functional/System/FrontPageTest.php
+++ b/core/modules/system/tests/src/Functional/System/FrontPageTest.php
@@ -30,6 +30,9 @@ class FrontPageTest extends BrowserTestBase {
    */
   protected $nodePath;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/system/tests/src/Functional/System/IndexPhpTest.php b/core/modules/system/tests/src/Functional/System/IndexPhpTest.php
index d1e101ba7d..bd42c3a435 100644
--- a/core/modules/system/tests/src/Functional/System/IndexPhpTest.php
+++ b/core/modules/system/tests/src/Functional/System/IndexPhpTest.php
@@ -16,6 +16,9 @@ class IndexPhpTest extends BrowserTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
   }
diff --git a/core/modules/system/tests/src/Functional/System/MainContentFallbackTest.php b/core/modules/system/tests/src/Functional/System/MainContentFallbackTest.php
index 492ae0a2a3..acd4da2990 100644
--- a/core/modules/system/tests/src/Functional/System/MainContentFallbackTest.php
+++ b/core/modules/system/tests/src/Functional/System/MainContentFallbackTest.php
@@ -26,6 +26,9 @@ class MainContentFallbackTest extends BrowserTestBase {
   protected $adminUser;
   protected $webUser;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/system/tests/src/Functional/System/PageNotFoundTest.php b/core/modules/system/tests/src/Functional/System/PageNotFoundTest.php
index 47afe0917d..6e7027f30c 100644
--- a/core/modules/system/tests/src/Functional/System/PageNotFoundTest.php
+++ b/core/modules/system/tests/src/Functional/System/PageNotFoundTest.php
@@ -29,6 +29,9 @@ class PageNotFoundTest extends BrowserTestBase {
 
   protected $adminUser;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/system/tests/src/Functional/System/PageTitleTest.php b/core/modules/system/tests/src/Functional/System/PageTitleTest.php
index 4413a367a0..ce91f030bd 100644
--- a/core/modules/system/tests/src/Functional/System/PageTitleTest.php
+++ b/core/modules/system/tests/src/Functional/System/PageTitleTest.php
@@ -120,15 +120,13 @@ public function testRoutingTitle() {
     $this->drupalGet('test-render-title');
 
     $this->assertSession()->titleEquals('Foo | Drupal');
-    $result = $this->xpath('//h1[@class="page-title"]');
-    $this->assertEquals('Foo', $result[0]->getText());
+    $this->assertSession()->elementTextEquals('xpath', '//h1[@class="page-title"]', 'Foo');
 
     // Test forms
     $this->drupalGet('form-test/object-builder');
 
     $this->assertSession()->titleEquals('Test dynamic title | Drupal');
-    $result = $this->xpath('//h1[@class="page-title"]');
-    $this->assertEquals('Test dynamic title', $result[0]->getText());
+    $this->assertSession()->elementTextEquals('xpath', '//h1[@class="page-title"]', 'Test dynamic title');
 
     // Set some custom translated strings.
     $settings_key = 'locale_custom_strings_en';
@@ -152,15 +150,13 @@ public function testRoutingTitle() {
     $this->drupalGet('test-page-static-title');
 
     $this->assertSession()->titleEquals('Static title translated | Drupal');
-    $result = $this->xpath('//h1[@class="page-title"]');
-    $this->assertEquals('Static title translated', $result[0]->getText());
+    $this->assertSession()->elementTextEquals('xpath', '//h1[@class="page-title"]', 'Static title translated');
 
     // Test the dynamic '_title_callback' route option.
     $this->drupalGet('test-page-dynamic-title');
 
     $this->assertSession()->titleEquals('Dynamic title | Drupal');
-    $result = $this->xpath('//h1[@class="page-title"]');
-    $this->assertEquals('Dynamic title', $result[0]->getText());
+    $this->assertSession()->elementTextEquals('xpath', '//h1[@class="page-title"]', 'Dynamic title');
 
     // Ensure that titles are cacheable and are escaped normally if the
     // controller does not escape them.
diff --git a/core/modules/system/tests/src/Functional/System/ShutdownFunctionsTest.php b/core/modules/system/tests/src/Functional/System/ShutdownFunctionsTest.php
index 2059714e94..6d7798721c 100644
--- a/core/modules/system/tests/src/Functional/System/ShutdownFunctionsTest.php
+++ b/core/modules/system/tests/src/Functional/System/ShutdownFunctionsTest.php
@@ -23,6 +23,9 @@ class ShutdownFunctionsTest extends BrowserTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function tearDown(): void {
     // This test intentionally throws an exception in a PHP shutdown function.
     // Prevent it from being interpreted as an actual test failure.
diff --git a/core/modules/system/tests/src/Functional/System/SiteMaintenanceTest.php b/core/modules/system/tests/src/Functional/System/SiteMaintenanceTest.php
index 8e4fb45216..def93ffec1 100644
--- a/core/modules/system/tests/src/Functional/System/SiteMaintenanceTest.php
+++ b/core/modules/system/tests/src/Functional/System/SiteMaintenanceTest.php
@@ -39,6 +39,9 @@ class SiteMaintenanceTest extends BrowserTestBase {
    */
   protected User $user;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/system/tests/src/Functional/System/SystemAuthorizeTest.php b/core/modules/system/tests/src/Functional/System/SystemAuthorizeTest.php
index 376ae42482..a43c520177 100644
--- a/core/modules/system/tests/src/Functional/System/SystemAuthorizeTest.php
+++ b/core/modules/system/tests/src/Functional/System/SystemAuthorizeTest.php
@@ -23,6 +23,9 @@ class SystemAuthorizeTest extends BrowserTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/system/tests/src/Functional/System/ThemeTest.php b/core/modules/system/tests/src/Functional/System/ThemeTest.php
index 8953f2cbc2..d512d9320a 100644
--- a/core/modules/system/tests/src/Functional/System/ThemeTest.php
+++ b/core/modules/system/tests/src/Functional/System/ThemeTest.php
@@ -46,6 +46,9 @@ class ThemeTest extends BrowserTestBase {
    */
   protected Node $node;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/system/tests/src/Functional/Theme/EngineNyanCatTest.php b/core/modules/system/tests/src/Functional/Theme/EngineNyanCatTest.php
index 7a227da1dd..d6b165242a 100644
--- a/core/modules/system/tests/src/Functional/Theme/EngineNyanCatTest.php
+++ b/core/modules/system/tests/src/Functional/Theme/EngineNyanCatTest.php
@@ -23,6 +23,9 @@ class EngineNyanCatTest extends BrowserTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     \Drupal::service('theme_installer')->install(['test_theme_nyan_cat_engine']);
diff --git a/core/modules/system/tests/src/Functional/Theme/EngineTwigTest.php b/core/modules/system/tests/src/Functional/Theme/EngineTwigTest.php
index ea00a612f9..a0c16db8ae 100644
--- a/core/modules/system/tests/src/Functional/Theme/EngineTwigTest.php
+++ b/core/modules/system/tests/src/Functional/Theme/EngineTwigTest.php
@@ -28,6 +28,9 @@ class EngineTwigTest extends BrowserTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     \Drupal::service('theme_installer')->install(['test_theme']);
diff --git a/core/modules/system/tests/src/Functional/Theme/EntityFilteringThemeTest.php b/core/modules/system/tests/src/Functional/Theme/EntityFilteringThemeTest.php
index 54f39af75c..c0f91f8b43 100644
--- a/core/modules/system/tests/src/Functional/Theme/EntityFilteringThemeTest.php
+++ b/core/modules/system/tests/src/Functional/Theme/EntityFilteringThemeTest.php
@@ -82,6 +82,9 @@ class EntityFilteringThemeTest extends BrowserTestBase {
    */
   protected $xssLabel = "string with <em>HTML</em> and <script>alert('JS');</script>";
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/system/tests/src/Functional/Theme/FastTest.php b/core/modules/system/tests/src/Functional/Theme/FastTest.php
index 2f26509e8d..8e11a5ebaa 100644
--- a/core/modules/system/tests/src/Functional/Theme/FastTest.php
+++ b/core/modules/system/tests/src/Functional/Theme/FastTest.php
@@ -31,6 +31,9 @@ class FastTest extends BrowserTestBase {
    */
   protected User $account;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->account = $this->drupalCreateUser(['access user profiles']);
diff --git a/core/modules/system/tests/src/Functional/Theme/HtmlAttributesTest.php b/core/modules/system/tests/src/Functional/Theme/HtmlAttributesTest.php
index 91799ae11b..39dff899a5 100644
--- a/core/modules/system/tests/src/Functional/Theme/HtmlAttributesTest.php
+++ b/core/modules/system/tests/src/Functional/Theme/HtmlAttributesTest.php
@@ -29,8 +29,7 @@ class HtmlAttributesTest extends BrowserTestBase {
   public function testThemeHtmlAttributes() {
     $this->drupalGet('');
     $this->assertSession()->responseContains('<html lang="en" dir="ltr" theme_test_html_attribute="theme test html attribute value">');
-    $attributes = $this->xpath('/body[@theme_test_body_attribute="theme test body attribute value"]');
-    $this->assertCount(1, $attributes, "Attribute set in the 'body' element via hook_preprocess_HOOK() found.");
+    $this->assertSession()->elementsCount('xpath', '/body[@theme_test_body_attribute="theme test body attribute value"]', 1);
   }
 
 }
diff --git a/core/modules/system/tests/src/Functional/Theme/ThemeInfoTest.php b/core/modules/system/tests/src/Functional/Theme/ThemeInfoTest.php
index 51e64ff10b..833602c7f7 100644
--- a/core/modules/system/tests/src/Functional/Theme/ThemeInfoTest.php
+++ b/core/modules/system/tests/src/Functional/Theme/ThemeInfoTest.php
@@ -71,16 +71,16 @@ public function testStylesheets() {
     // should work nevertheless.
     $this->drupalGet('theme-test/info/stylesheets');
 
-    $this->assertCount(1, $this->xpath('//link[contains(@href, :href)]', [':href' => "$base/base-add.css"]), "$base/base-add.css found");
-    $this->assertCount(0, $this->xpath('//link[contains(@href, :href)]', [':href' => "base-remove.css"]), "base-remove.css not found");
+    $this->assertSession()->elementsCount('xpath', '//link[contains(@href, "' . $base . '/base-add.css")]', 1);
+    $this->assertSession()->elementNotExists('xpath', '//link[contains(@href, "base-remove.css")]');
 
-    $this->assertCount(1, $this->xpath('//link[contains(@href, :href)]', [':href' => "$sub/sub-add.css"]), "$sub/sub-add.css found");
-    $this->assertCount(0, $this->xpath('//link[contains(@href, :href)]', [':href' => "sub-remove.css"]), "sub-remove.css not found");
-    $this->assertCount(0, $this->xpath('//link[contains(@href, :href)]', [':href' => "base-add.sub-remove.css"]), "base-add.sub-remove.css not found");
+    $this->assertSession()->elementsCount('xpath', '//link[contains(@href, "' . $sub . '/sub-add.css")]', 1);
+    $this->assertSession()->elementNotExists('xpath', '//link[contains(@href, "sub-remove.css")]');
+    $this->assertSession()->elementNotExists('xpath', '//link[contains(@href, "base-add.sub-remove.css")]');
 
     // Verify that CSS files with the same name are loaded from both the base theme and subtheme.
-    $this->assertCount(1, $this->xpath('//link[contains(@href, :href)]', [':href' => "$base/samename.css"]), "$base/samename.css found");
-    $this->assertCount(1, $this->xpath('//link[contains(@href, :href)]', [':href' => "$sub/samename.css"]), "$sub/samename.css found");
+    $this->assertSession()->elementsCount('xpath', '//link[contains(@href, "' . $base . '/samename.css")]', 1);
+    $this->assertSession()->elementsCount('xpath', '//link[contains(@href, "' . $sub . '/samename.css")]', 1);
 
   }
 
diff --git a/core/modules/system/tests/src/Functional/Theme/ThemeSuggestionsAlterTest.php b/core/modules/system/tests/src/Functional/Theme/ThemeSuggestionsAlterTest.php
index 4188e29633..db0aeba7f7 100644
--- a/core/modules/system/tests/src/Functional/Theme/ThemeSuggestionsAlterTest.php
+++ b/core/modules/system/tests/src/Functional/Theme/ThemeSuggestionsAlterTest.php
@@ -24,6 +24,9 @@ class ThemeSuggestionsAlterTest extends BrowserTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     \Drupal::service('theme_installer')->install(['test_theme']);
diff --git a/core/modules/system/tests/src/Functional/Theme/ThemeTest.php b/core/modules/system/tests/src/Functional/Theme/ThemeTest.php
index 514c1f4c4a..96d154f230 100644
--- a/core/modules/system/tests/src/Functional/Theme/ThemeTest.php
+++ b/core/modules/system/tests/src/Functional/Theme/ThemeTest.php
@@ -149,8 +149,7 @@ public function testTemplateOverride() {
    */
   public function testPreprocessHtml() {
     $this->drupalGet('');
-    $attributes = $this->xpath('/body[@theme_test_page_variable="Page variable is an array."]');
-    $this->assertCount(1, $attributes, 'In template_preprocess_html(), the page variable is still an array (not rendered yet).');
+    $this->assertSession()->elementsCount('xpath', '/body[@theme_test_page_variable="Page variable is an array."]', 1);
     $this->assertSession()->pageTextContains('theme test page bottom markup');
   }
 
diff --git a/core/modules/system/tests/src/Functional/Theme/TwigExtensionTest.php b/core/modules/system/tests/src/Functional/Theme/TwigExtensionTest.php
index c6a1368d00..8b5d16a6fa 100644
--- a/core/modules/system/tests/src/Functional/Theme/TwigExtensionTest.php
+++ b/core/modules/system/tests/src/Functional/Theme/TwigExtensionTest.php
@@ -24,6 +24,9 @@ class TwigExtensionTest extends BrowserTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     \Drupal::service('theme_installer')->install(['test_theme']);
diff --git a/core/modules/system/tests/src/Functional/Theme/TwigRegistryLoaderTest.php b/core/modules/system/tests/src/Functional/Theme/TwigRegistryLoaderTest.php
index d2eab66843..3399be42aa 100644
--- a/core/modules/system/tests/src/Functional/Theme/TwigRegistryLoaderTest.php
+++ b/core/modules/system/tests/src/Functional/Theme/TwigRegistryLoaderTest.php
@@ -29,6 +29,9 @@ class TwigRegistryLoaderTest extends BrowserTestBase {
    */
   protected $twig;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     \Drupal::service('theme_installer')->install(['test_theme_twig_registry_loader', 'test_theme_twig_registry_loader_theme', 'test_theme_twig_registry_loader_subtheme']);
diff --git a/core/modules/system/tests/src/Functional/UpdateSystem/DependencyHookInvocationTest.php b/core/modules/system/tests/src/Functional/UpdateSystem/DependencyHookInvocationTest.php
index 42e772e70e..d263380924 100644
--- a/core/modules/system/tests/src/Functional/UpdateSystem/DependencyHookInvocationTest.php
+++ b/core/modules/system/tests/src/Functional/UpdateSystem/DependencyHookInvocationTest.php
@@ -28,6 +28,9 @@ class DependencyHookInvocationTest extends BrowserTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     require_once $this->root . '/core/includes/update.inc';
diff --git a/core/modules/system/tests/src/Functional/UpdateSystem/DependencyMissingTest.php b/core/modules/system/tests/src/Functional/UpdateSystem/DependencyMissingTest.php
index 7d1cb15658..a2eaa8c39c 100644
--- a/core/modules/system/tests/src/Functional/UpdateSystem/DependencyMissingTest.php
+++ b/core/modules/system/tests/src/Functional/UpdateSystem/DependencyMissingTest.php
@@ -23,6 +23,9 @@ class DependencyMissingTest extends BrowserTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     // Only install update_test_2.module, even though its updates have a
     // dependency on update_test_3.module.
diff --git a/core/modules/system/tests/src/Functional/UpdateSystem/DependencyOrderingTest.php b/core/modules/system/tests/src/Functional/UpdateSystem/DependencyOrderingTest.php
index 8576e7eae8..3e47c9e880 100644
--- a/core/modules/system/tests/src/Functional/UpdateSystem/DependencyOrderingTest.php
+++ b/core/modules/system/tests/src/Functional/UpdateSystem/DependencyOrderingTest.php
@@ -28,6 +28,9 @@ class DependencyOrderingTest extends BrowserTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     require_once $this->root . '/core/includes/update.inc';
diff --git a/core/modules/system/tests/src/Functional/UpdateSystem/InvalidUpdateHookTest.php b/core/modules/system/tests/src/Functional/UpdateSystem/InvalidUpdateHookTest.php
index 2400d46978..8412ab1f0e 100644
--- a/core/modules/system/tests/src/Functional/UpdateSystem/InvalidUpdateHookTest.php
+++ b/core/modules/system/tests/src/Functional/UpdateSystem/InvalidUpdateHookTest.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\Tests\system\Functional\UpdateSystem;
 
+use Drupal\Core\Url;
 use Drupal\Tests\BrowserTestBase;
 use Drupal\Tests\RequirementsPageTrait;
 
@@ -45,11 +46,14 @@ class InvalidUpdateHookTest extends BrowserTestBase {
    */
   private $updateUser;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     require_once $this->root . '/core/includes/update.inc';
 
-    $this->updateUrl = $GLOBALS['base_url'] . '/update.php';
+    $this->updateUrl = Url::fromRoute('system.db_update')->setAbsolute()->toString();
     $this->updateUser = $this->drupalCreateUser([
       'administer software updates',
     ]);
diff --git a/core/modules/system/tests/src/Functional/UpdateSystem/NoPreExistingSchemaUpdateTest.php b/core/modules/system/tests/src/Functional/UpdateSystem/NoPreExistingSchemaUpdateTest.php
index fd9b155bf1..d36fc941d5 100644
--- a/core/modules/system/tests/src/Functional/UpdateSystem/NoPreExistingSchemaUpdateTest.php
+++ b/core/modules/system/tests/src/Functional/UpdateSystem/NoPreExistingSchemaUpdateTest.php
@@ -20,6 +20,9 @@ class NoPreExistingSchemaUpdateTest extends BrowserTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $connection = Database::getConnection();
diff --git a/core/modules/system/tests/src/Functional/UpdateSystem/UpdateScriptTest.php b/core/modules/system/tests/src/Functional/UpdateSystem/UpdateScriptTest.php
index 819fd6e4e7..b1ff588ea5 100644
--- a/core/modules/system/tests/src/Functional/UpdateSystem/UpdateScriptTest.php
+++ b/core/modules/system/tests/src/Functional/UpdateSystem/UpdateScriptTest.php
@@ -58,6 +58,9 @@ class UpdateScriptTest extends BrowserTestBase {
    */
   private $updateUser;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->updateUrl = Url::fromRoute('system.db_update');
@@ -568,9 +571,9 @@ public function testSuccessfulMultilingualUpdateFunctionality() {
     // Add some custom languages.
     foreach (['aa', 'bb'] as $language_code) {
       ConfigurableLanguage::create([
-          'id' => $language_code,
-          'label' => $this->randomMachineName(),
-        ])->save();
+        'id' => $language_code,
+        'label' => $this->randomMachineName(),
+      ])->save();
     }
 
     $config = \Drupal::service('config.factory')->getEditable('language.negotiation');
diff --git a/core/modules/system/tests/src/Functional/UpdateSystem/UpdatesWith7xTest.php b/core/modules/system/tests/src/Functional/UpdateSystem/UpdatesWith7xTest.php
index d624c29936..e12b586873 100644
--- a/core/modules/system/tests/src/Functional/UpdateSystem/UpdatesWith7xTest.php
+++ b/core/modules/system/tests/src/Functional/UpdateSystem/UpdatesWith7xTest.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\Tests\system\Functional\UpdateSystem;
 
+use Drupal\Core\Url;
 use Drupal\Tests\BrowserTestBase;
 use Drupal\Tests\RequirementsPageTrait;
 
@@ -39,10 +40,13 @@ class UpdatesWith7xTest extends BrowserTestBase {
    */
   private $updateUser;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     require_once $this->root . '/core/includes/update.inc';
-    $this->updateUrl = $GLOBALS['base_url'] . '/update.php';
+    $this->updateUrl = Url::fromRoute('system.db_update')->setAbsolute()->toString();
     $this->updateUser = $this->drupalCreateUser([
       'administer software updates',
     ]);
diff --git a/core/modules/system/tests/src/FunctionalJavascript/Form/ElementsTableSelectTest.php b/core/modules/system/tests/src/FunctionalJavascript/Form/ElementsTableSelectTest.php
index c38627553b..2cfb76dbd0 100644
--- a/core/modules/system/tests/src/FunctionalJavascript/Form/ElementsTableSelectTest.php
+++ b/core/modules/system/tests/src/FunctionalJavascript/Form/ElementsTableSelectTest.php
@@ -60,4 +60,52 @@ public function testAjax() {
     }
   }
 
+  /**
+   * Tests table select with disabled rows.
+   */
+  public function testDisabledRows() {
+    // Asserts that a row number (1 based) is enabled.
+    $assert_row_enabled = function ($delta) {
+      $row = $this->assertSession()->elementExists('xpath', "//table/tbody/tr[$delta]");
+      $this->assertFalse($row->hasClass('disabled'));
+      $input = $row->find('css', 'input[value="row' . $delta . '"]');
+      $this->assertFalse($input->hasAttribute('disabled'));
+    };
+    // Asserts that a row number (1 based) is disabled.
+    $assert_row_disabled = function ($delta) {
+      $row = $this->assertSession()->elementExists('xpath', "//table/tbody/tr[$delta]");
+      $this->assertTrue($row->hasClass('disabled'));
+      $input = $row->find('css', 'input[value="row' . $delta . '"]');
+      $this->assertTrue($input->hasAttribute('disabled'));
+      $this->assertEquals('disabled', $input->getAttribute('disabled'));
+    };
+
+    // Test radios (#multiple == FALSE).
+    $this->drupalGet('form_test/tableselect/disabled-rows/multiple-false');
+
+    // Check that only 'row2' is disabled.
+    $assert_row_enabled(1);
+    $assert_row_disabled(2);
+    $assert_row_enabled(3);
+
+    // Test checkboxes (#multiple == TRUE).
+    $this->drupalGet('form_test/tableselect/disabled-rows/multiple-true');
+
+    // Check that only 'row2' is disabled.
+    $assert_row_enabled(1);
+    $assert_row_disabled(2);
+    $assert_row_enabled(3);
+
+    // Table select with checkboxes allow selection of all options.
+    $select_all_checkbox = $this->assertSession()->elementExists('xpath', '//table/thead/tr/th/input');
+    $select_all_checkbox->check();
+
+    // Check that the disabled option was not enabled or selected.
+    $page = $this->getSession()->getPage();
+    $page->hasCheckedField('row1');
+    $page->hasUncheckedField('row2');
+    $assert_row_disabled(2);
+    $page->hasCheckedField('row3');
+  }
+
 }
diff --git a/core/modules/system/tests/src/Kernel/Block/SystemMenuBlockTest.php b/core/modules/system/tests/src/Kernel/Block/SystemMenuBlockTest.php
index 30575f2abe..8872978fee 100644
--- a/core/modules/system/tests/src/Kernel/Block/SystemMenuBlockTest.php
+++ b/core/modules/system/tests/src/Kernel/Block/SystemMenuBlockTest.php
@@ -208,7 +208,7 @@ public function testConfigLevelDepth() {
       'test.example2' => [],
       'test.example5' => [
         'test.example7' => [],
-       ],
+      ],
       'test.example6' => [],
       'test.example8' => [],
     ];
diff --git a/core/modules/system/tests/src/Kernel/Common/PageRenderTest.php b/core/modules/system/tests/src/Kernel/Common/PageRenderTest.php
index a7842b480a..616c3037cd 100644
--- a/core/modules/system/tests/src/Kernel/Common/PageRenderTest.php
+++ b/core/modules/system/tests/src/Kernel/Common/PageRenderTest.php
@@ -56,7 +56,7 @@ public function assertPageRenderHookExceptions(string $module, string $hook): vo
     $page = [];
     try {
       $html_renderer->invokePageAttachmentHooks($page);
-      $this->error($assertion);
+      $this->fail($assertion);
     }
     catch (\LogicException $e) {
       $this->assertEquals('Only #attached and #cache may be set in ' . $hook . '().', $e->getMessage());
@@ -69,7 +69,7 @@ public function assertPageRenderHookExceptions(string $module, string $hook): vo
     $page = [];
     try {
       $html_renderer->invokePageAttachmentHooks($page);
-      $this->error($assertion);
+      $this->fail($assertion);
     }
     catch (\LogicException $e) {
       $this->assertEquals('Only #attached and #cache may be set in ' . $hook . '().', $e->getMessage());
diff --git a/core/modules/system/tests/src/Kernel/Entity/EntityLabelTest.php b/core/modules/system/tests/src/Kernel/Entity/EntityLabelTest.php
new file mode 100644
index 0000000000..a29d454355
--- /dev/null
+++ b/core/modules/system/tests/src/Kernel/Entity/EntityLabelTest.php
@@ -0,0 +1,53 @@
+<?php
+
+namespace Drupal\Tests\system\Kernel\Entity;
+
+use Drupal\Core\Plugin\Discovery\AnnotatedClassDiscovery;
+use Drupal\KernelTests\KernelTestBase;
+
+/**
+ * Tests that entity type labels use sentence-case.
+ *
+ * @group Entity
+ */
+class EntityLabelTest extends KernelTestBase {
+
+  /**
+   * Tests that entity type labels use sentence-case.
+   */
+  public function testEntityLabelCasing() {
+    $base_directory = $this->root . '/core/modules/';
+    $modules = scandir($base_directory);
+    $paths = [];
+    foreach ($modules as $module) {
+      $paths["\Drupal\\{$module}\Entity"] = $base_directory . $module . '/src/';
+    }
+    $namespaces = new \ArrayObject($paths);
+    $discovery = new AnnotatedClassDiscovery('Entity', $namespaces, 'Drupal\Core\Entity\Annotation\EntityType');
+    $definitions = $discovery->getDefinitions();
+
+    foreach ($definitions as $definition) {
+      /** @var \Drupal\Core\Entity\EntityType $definition */
+
+      /** @var \Drupal\Core\StringTranslation\TranslatableMarkup $label */
+      $label = $definition->getLabel();
+      $collection_label = $definition->getCollectionLabel();
+
+      $label_string = $label->getUntranslatedString();
+      $collection_label_string = $collection_label->getUntranslatedString();
+
+      // Keep the first word as it is for nouns that are all capital letters
+      // (like RDF, URL alias etc.) so we can't run strtolower() for the entire
+      // string. Special cases may need to be added to this test in the future
+      // if an acronym is in a different position in the label.
+      $first_word = strtok($label_string, " ");
+      $remaining_string = strtolower(strstr($label_string, " "));
+      $this->assertEquals($first_word . $remaining_string, $label_string);
+
+      $first_word = strtok($collection_label_string, " ");
+      $remaining_string = strtolower(strstr($collection_label_string, " "));
+      $this->assertEquals($first_word . $remaining_string, $collection_label_string);
+    }
+  }
+
+}
diff --git a/core/modules/system/tests/src/Kernel/Form/FormObjectTest.php b/core/modules/system/tests/src/Kernel/Form/FormObjectTest.php
index 939590e11f..ecf7c5047d 100644
--- a/core/modules/system/tests/src/Kernel/Form/FormObjectTest.php
+++ b/core/modules/system/tests/src/Kernel/Form/FormObjectTest.php
@@ -19,6 +19,9 @@ class FormObjectTest extends ConfigFormTestBase {
    */
   protected static $modules = ['form_test'];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/system/tests/src/Kernel/Module/RequirementsTest.php b/core/modules/system/tests/src/Kernel/Module/RequirementsTest.php
new file mode 100644
index 0000000000..f44442417f
--- /dev/null
+++ b/core/modules/system/tests/src/Kernel/Module/RequirementsTest.php
@@ -0,0 +1,33 @@
+<?php
+
+namespace Drupal\Tests\system\Kernel\Module;
+
+use Drupal\KernelTests\KernelTestBase;
+
+/**
+ * @covers \hook_requirements
+ * @covers \hook_requirements_alter
+ * @group Module
+ */
+class RequirementsTest extends KernelTestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  protected static $modules = [
+    'requirements1_test',
+    'system',
+  ];
+
+  /**
+   * Tests requirements data altering.
+   */
+  public function testRequirementsAlter(): void {
+    $requirements = $this->container->get('system.manager')->listRequirements();
+    // @see requirements1_test_requirements_alter()
+    $this->assertEquals('Requirements 1 Test - Changed', $requirements['requirements1_test_alterable']['title']);
+    $this->assertEquals(REQUIREMENT_WARNING, $requirements['requirements1_test_alterable']['severity']);
+    $this->assertArrayNotHasKey('requirements1_test_deletable', $requirements);
+  }
+
+}
diff --git a/core/modules/system/tests/src/Kernel/Theme/TwigIncludeTest.php b/core/modules/system/tests/src/Kernel/Theme/TwigIncludeTest.php
new file mode 100644
index 0000000000..c97e606ad1
--- /dev/null
+++ b/core/modules/system/tests/src/Kernel/Theme/TwigIncludeTest.php
@@ -0,0 +1,157 @@
+<?php
+
+namespace Drupal\Tests\system\Kernel\Theme;
+
+use Drupal\Core\DependencyInjection\ContainerBuilder;
+use Drupal\KernelTests\KernelTestBase;
+use Twig\Error\LoaderError;
+
+/**
+ * Tests including files in Twig templates.
+ *
+ * @group Theme
+ */
+class TwigIncludeTest extends KernelTestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  protected static $modules = ['system'];
+
+  /**
+   * The Twig configuration to set the container parameter to during rebuilds.
+   *
+   * @var array
+   */
+  private $twigConfig = [];
+
+  /**
+   * Tests template inclusion extension checking.
+   *
+   * @see \Drupal\Core\Template\Loader\FilesystemLoader::findTemplate()
+   */
+  public function testTemplateInclusion(): void {
+    $this->enableModules(['system']);
+    /** @var \Drupal\Core\Render\RendererInterface $renderer */
+    $renderer = \Drupal::service('renderer');
+
+    $element['test'] = [
+      '#type' => 'inline_template',
+      '#template' => "{% include '@system/container.html.twig' %}",
+    ];
+    $this->assertEquals("<div></div>\n", $renderer->renderRoot($element));
+
+    // Test that SQL files cannot be included in Twig templates by default.
+    $element = [];
+    $element['test'] = [
+      '#type' => 'inline_template',
+      '#template' => "{% include '@__main__\/core/tests/fixtures/files/sql-2.sql' %}",
+    ];
+    try {
+      $renderer->renderRoot($element);
+      $this->fail('Expected exception not thrown');
+    }
+    catch (LoaderError $e) {
+      $this->assertStringContainsString('Template "@__main__/core/tests/fixtures/files/sql-2.sql" is not defined', $e->getMessage());
+    }
+    /** @var \Drupal\Core\Template\Loader\FilesystemLoader $loader */
+    $loader = \Drupal::service('twig.loader.filesystem');
+    try {
+      $loader->getSourceContext('@__main__\/core/tests/fixtures/files/sql-2.sql');
+      $this->fail('Expected exception not thrown');
+    }
+    catch (LoaderError $e) {
+      $this->assertStringContainsString('Template @__main__\/core/tests/fixtures/files/sql-2.sql has an invalid file extension (sql). Only templates ending in one of css, html, js, svg, twig are allowed. Set the twig.config.allowed_file_extensions container parameter to customize the allowed file extensions', $e->getMessage());
+    }
+
+    // Allow SQL files to be included.
+    $twig_config = $this->container->getParameter('twig.config');
+    $twig_config['allowed_file_extensions'][] = 'sql';
+    $this->twigConfig = $twig_config;
+    $this->container->get('kernel')->shutdown();
+    $this->container->get('kernel')->boot();
+    /** @var \Drupal\Core\Template\Loader\FilesystemLoader $loader */
+    $loader = \Drupal::service('twig.loader.filesystem');
+    $source = $loader->getSourceContext('@__main__\/core/tests/fixtures/files/sql-2.sql');
+    $this->assertSame(file_get_contents('core/tests/fixtures/files/sql-2.sql'), $source->getCode());
+
+    // Test the fallback to the default list of extensions provided by the
+    // class.
+    $this->assertSame(['css', 'html', 'js', 'svg', 'twig', 'sql'], \Drupal::getContainer()->getParameter('twig.config')['allowed_file_extensions']);
+    unset($twig_config['allowed_file_extensions']);
+    $this->twigConfig = $twig_config;
+    $this->container->get('kernel')->shutdown();
+    $this->container->get('kernel')->boot();
+    $this->assertArrayNotHasKey('allowed_file_extensions', \Drupal::getContainer()->getParameter('twig.config'));
+    /** @var \Drupal\Core\Template\Loader\FilesystemLoader $loader */
+    $loader = \Drupal::service('twig.loader.filesystem');
+    try {
+      $loader->getSourceContext('@__main__\/core/tests/fixtures/files/sql-2.sql');
+      $this->fail('Expected exception not thrown');
+    }
+    catch (LoaderError $e) {
+      $this->assertStringContainsString('Template @__main__\/core/tests/fixtures/files/sql-2.sql has an invalid file extension (sql). Only templates ending in one of css, html, js, svg, twig are allowed. Set the twig.config.allowed_file_extensions container parameter to customize the allowed file extensions', $e->getMessage());
+    }
+
+    // Test a file with no extension.
+    file_put_contents($this->siteDirectory . '/test_file', 'This is a test!');
+    /** @var \Drupal\Core\Template\Loader\FilesystemLoader $loader */
+    $loader = \Drupal::service('twig.loader.filesystem');
+    try {
+      $loader->getSourceContext('@__main__\/' . $this->siteDirectory . '/test_file');
+      $this->fail('Expected exception not thrown');
+    }
+    catch (LoaderError $e) {
+      $this->assertStringContainsString('test_file has an invalid file extension (no file extension). Only templates ending in one of css, html, js, svg, twig are allowed. Set the twig.config.allowed_file_extensions container parameter to customize the allowed file extensions', $e->getMessage());
+    }
+
+    // Allow files with no extension.
+    $twig_config['allowed_file_extensions'] = ['twig', ''];
+    $this->twigConfig = $twig_config;
+    $this->container->get('kernel')->shutdown();
+    $this->container->get('kernel')->boot();
+    /** @var \Drupal\Core\Template\Loader\FilesystemLoader $loader */
+    $loader = \Drupal::service('twig.loader.filesystem');
+    $source = $loader->getSourceContext('@__main__\/' . $this->siteDirectory . '/test_file');
+    $this->assertSame('This is a test!', $source->getCode());
+
+    // Ensure the error message makes sense when no file extension is allowed.
+    try {
+      $loader->getSourceContext('@__main__\/core/tests/fixtures/files/sql-2.sql');
+      $this->fail('Expected exception not thrown');
+    }
+    catch (LoaderError $e) {
+      $this->assertStringContainsString('Template @__main__\/core/tests/fixtures/files/sql-2.sql has an invalid file extension (sql). Only templates ending in one of twig, or no file extension are allowed. Set the twig.config.allowed_file_extensions container parameter to customize the allowed file extensions', $e->getMessage());
+    }
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function register(ContainerBuilder $container) {
+    parent::register($container);
+    if (!empty($this->twigConfig)) {
+      $container->setParameter('twig.config', $this->twigConfig);
+    }
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUpFilesystem(): void {
+    // Use a real file system and not VFS so that we can include files from the
+    // site using @__main__ in a template.
+    $public_file_directory = $this->siteDirectory . '/files';
+    $private_file_directory = $this->siteDirectory . '/private';
+
+    mkdir($this->siteDirectory, 0775);
+    mkdir($this->siteDirectory . '/files', 0775);
+    mkdir($this->siteDirectory . '/private', 0775);
+    mkdir($this->siteDirectory . '/files/config/sync', 0775, TRUE);
+
+    $this->setSetting('file_public_path', $public_file_directory);
+    $this->setSetting('file_private_path', $private_file_directory);
+    $this->setSetting('config_sync_directory', $this->siteDirectory . '/files/config/sync');
+  }
+
+}
diff --git a/core/modules/system/tests/src/Kernel/Theme/TwigNamespaceTest.php b/core/modules/system/tests/src/Kernel/Theme/TwigNamespaceTest.php
index 946dcc35da..cf67b4f5a0 100644
--- a/core/modules/system/tests/src/Kernel/Theme/TwigNamespaceTest.php
+++ b/core/modules/system/tests/src/Kernel/Theme/TwigNamespaceTest.php
@@ -29,6 +29,9 @@ class TwigNamespaceTest extends KernelTestBase {
    */
   protected $twig;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     \Drupal::service('theme_installer')->install(['test_theme', 'olivero']);
diff --git a/core/modules/system/tests/src/Kernel/Token/TokenReplaceKernelTestBase.php b/core/modules/system/tests/src/Kernel/Token/TokenReplaceKernelTestBase.php
index e5799de76b..ce9e0c05fd 100644
--- a/core/modules/system/tests/src/Kernel/Token/TokenReplaceKernelTestBase.php
+++ b/core/modules/system/tests/src/Kernel/Token/TokenReplaceKernelTestBase.php
@@ -30,6 +30,9 @@ abstract class TokenReplaceKernelTestBase extends EntityKernelTestBase {
    */
   protected static $modules = ['system'];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     // Install default system configuration.
diff --git a/core/modules/system/tests/src/Unit/Breadcrumbs/PathBasedBreadcrumbBuilderTest.php b/core/modules/system/tests/src/Unit/Breadcrumbs/PathBasedBreadcrumbBuilderTest.php
index a0885b3462..2f366bfef6 100644
--- a/core/modules/system/tests/src/Unit/Breadcrumbs/PathBasedBreadcrumbBuilderTest.php
+++ b/core/modules/system/tests/src/Unit/Breadcrumbs/PathBasedBreadcrumbBuilderTest.php
@@ -164,7 +164,7 @@ public function testBuildOnFrontpage() {
   public function testBuildWithOnePathElement() {
     $this->context->expects($this->once())
       ->method('getPathInfo')
-      ->will($this->returnValue('/example'));
+      ->willReturn('/example');
 
     $breadcrumb = $this->builder->build($this->createMock('Drupal\Core\Routing\RouteMatchInterface'));
     $this->assertEquals([0 => new Link('Home', new Url('<front>'))], $breadcrumb->getLinks());
@@ -182,7 +182,7 @@ public function testBuildWithOnePathElement() {
   public function testBuildWithTwoPathElements() {
     $this->context->expects($this->once())
       ->method('getPathInfo')
-      ->will($this->returnValue('/example/baz'));
+      ->willReturn('/example/baz');
     $this->setupStubPathProcessor();
 
     $route_1 = new Route('/example');
@@ -221,7 +221,7 @@ public function testBuildWithTwoPathElements() {
   public function testBuildWithThreePathElements() {
     $this->context->expects($this->once())
       ->method('getPathInfo')
-      ->will($this->returnValue('/example/bar/baz'));
+      ->willReturn('/example/bar/baz');
     $this->setupStubPathProcessor();
 
     $route_1 = new Route('/example/bar');
@@ -279,7 +279,7 @@ public function testBuildWithThreePathElements() {
   public function testBuildWithException($exception_class, $exception_argument) {
     $this->context->expects($this->once())
       ->method('getPathInfo')
-      ->will($this->returnValue('/example/bar'));
+      ->willReturn('/example/bar');
     $this->setupStubPathProcessor();
 
     $this->requestMatcher->expects($this->any())
@@ -320,15 +320,15 @@ public function providerTestBuildWithException() {
   public function testBuildWithNonProcessedPath() {
     $this->context->expects($this->once())
       ->method('getPathInfo')
-      ->will($this->returnValue('/example/bar'));
+      ->willReturn('/example/bar');
 
     $this->pathProcessor->expects($this->once())
       ->method('processInbound')
-      ->will($this->returnValue(FALSE));
+      ->willReturn(FALSE);
 
     $this->requestMatcher->expects($this->any())
       ->method('matchRequest')
-      ->will($this->returnValue([]));
+      ->willReturn([]);
 
     $breadcrumb = $this->builder->build($this->createMock('Drupal\Core\Routing\RouteMatchInterface'));
 
@@ -357,7 +357,7 @@ public function testApplies() {
   public function testBuildWithUserPath() {
     $this->context->expects($this->once())
       ->method('getPathInfo')
-      ->will($this->returnValue('/user/1/edit'));
+      ->willReturn('/user/1/edit');
     $this->setupStubPathProcessor();
 
     $route_1 = new Route('/user/1');
@@ -378,7 +378,7 @@ public function testBuildWithUserPath() {
     $this->titleResolver->expects($this->once())
       ->method('getTitle')
       ->with($this->anything(), $route_1)
-      ->will($this->returnValue('Admin'));
+      ->willReturn('Admin');
 
     $breadcrumb = $this->builder->build($this->createMock('Drupal\Core\Routing\RouteMatchInterface'));
     $this->assertEquals([0 => new Link('Home', new Url('<front>')), 1 => new Link('Admin', new Url('user_page'))], $breadcrumb->getLinks());
diff --git a/core/modules/system/tests/src/Unit/Menu/SystemLocalTasksTest.php b/core/modules/system/tests/src/Unit/Menu/SystemLocalTasksTest.php
index 036c138cdc..55d79ec9fb 100644
--- a/core/modules/system/tests/src/Unit/Menu/SystemLocalTasksTest.php
+++ b/core/modules/system/tests/src/Unit/Menu/SystemLocalTasksTest.php
@@ -36,9 +36,9 @@ protected function setUp(): void {
     $theme->info = ['name' => 'olivero'];
     $this->themeHandler->expects($this->any())
       ->method('listInfo')
-      ->will($this->returnValue([
+      ->willReturn([
         'olivero' => $theme,
-      ]));
+      ]);
     $this->themeHandler->expects($this->any())
       ->method('hasUi')
       ->with('olivero')
diff --git a/core/modules/system/tests/src/Unit/Transliteration/MachineNameControllerTest.php b/core/modules/system/tests/src/Unit/Transliteration/MachineNameControllerTest.php
index af8954e80f..a5fbf2562a 100644
--- a/core/modules/system/tests/src/Unit/Transliteration/MachineNameControllerTest.php
+++ b/core/modules/system/tests/src/Unit/Transliteration/MachineNameControllerTest.php
@@ -33,6 +33,9 @@ class MachineNameControllerTest extends UnitTestCase {
    */
   protected $tokenGenerator;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     // Create the machine name controller.
diff --git a/core/modules/taxonomy/migrations/d6_vocabulary_field_instance.yml b/core/modules/taxonomy/migrations/d6_vocabulary_field_instance.yml
index 321b5713ab..8aa9ac664e 100644
--- a/core/modules/taxonomy/migrations/d6_vocabulary_field_instance.yml
+++ b/core/modules/taxonomy/migrations/d6_vocabulary_field_instance.yml
@@ -60,12 +60,12 @@ process:
     plugin: target_bundle
   'settings/handler_settings/auto_create': 'constants/auto_create'
   required: required
-   # Get the i18n taxonomy translation setting for this vocabulary.
-   #  0 - No multilingual options
-   #  1 - Localizable terms. Run through the localization system.
-   #  2 - Predefined language for a vocabulary and its terms.
-   #  3 - Per-language terms, translatable (referencing terms with different
-   #  languages) but not localizable.
+  # Get the i18n taxonomy translation setting for this vocabulary.
+  #  0 - No multilingual options
+  #  1 - Localizable terms. Run through the localization system.
+  #  2 - Predefined language for a vocabulary and its terms.
+  #  3 - Per-language terms, translatable (referencing terms with different
+  #  languages) but not localizable.
   translatable:
     plugin: static_map
     source: i18ntaxonomy_vocabulary
diff --git a/core/modules/taxonomy/src/Form/OverviewTerms.php b/core/modules/taxonomy/src/Form/OverviewTerms.php
index ebc9e5933c..d199c8b10d 100644
--- a/core/modules/taxonomy/src/Form/OverviewTerms.php
+++ b/core/modules/taxonomy/src/Form/OverviewTerms.php
@@ -231,7 +231,7 @@ public function buildForm(array $form, FormStateInterface $form_state, Vocabular
     // error. Ensure the form is rebuilt in the same order as the user
     // submitted.
     $user_input = $form_state->getUserInput();
-    if (!empty($user_input)) {
+    if (!empty($user_input['terms'])) {
       // Get the POST order.
       $order = array_flip(array_keys($user_input['terms']));
       // Update our form with the new order.
diff --git a/core/modules/taxonomy/src/Plugin/migrate/D7TaxonomyTermDeriver.php b/core/modules/taxonomy/src/Plugin/migrate/D7TaxonomyTermDeriver.php
index c116f813ed..2306b87f47 100644
--- a/core/modules/taxonomy/src/Plugin/migrate/D7TaxonomyTermDeriver.php
+++ b/core/modules/taxonomy/src/Plugin/migrate/D7TaxonomyTermDeriver.php
@@ -5,6 +5,7 @@
 use Drupal\Component\Plugin\Derivative\DeriverBase;
 use Drupal\Core\Database\DatabaseExceptionWrapper;
 use Drupal\Core\Plugin\Discovery\ContainerDeriverInterface;
+use Drupal\Core\StringTranslation\StringTranslationTrait;
 use Drupal\migrate\Exception\RequirementsException;
 use Drupal\migrate\Plugin\MigrationDeriverTrait;
 use Drupal\migrate_drupal\FieldDiscoveryInterface;
@@ -15,6 +16,7 @@
  */
 class D7TaxonomyTermDeriver extends DeriverBase implements ContainerDeriverInterface {
   use MigrationDeriverTrait;
+  use StringTranslationTrait;
 
   /**
    * The base plugin ID this derivative is for.
@@ -74,7 +76,7 @@ public function getDerivativeDefinitions($base_plugin_definition) {
         $bundle = $row->getSourceProperty('machine_name');
         $values = $base_plugin_definition;
 
-        $values['label'] = t('@label (@type)', [
+        $values['label'] = $this->t('@label (@type)', [
           '@label' => $values['label'],
           '@type' => $row->getSourceProperty('name'),
         ]);
diff --git a/core/modules/taxonomy/src/Plugin/migrate/field/TaxonomyTermReference.php b/core/modules/taxonomy/src/Plugin/migrate/field/TaxonomyTermReference.php
index 249aedc1ce..7e3ca7df07 100644
--- a/core/modules/taxonomy/src/Plugin/migrate/field/TaxonomyTermReference.php
+++ b/core/modules/taxonomy/src/Plugin/migrate/field/TaxonomyTermReference.php
@@ -29,6 +29,7 @@ public function getFieldFormatterMap() {
       'taxonomy_term_reference_plain' => 'entity_reference_label',
       'taxonomy_term_reference_rss_category' => 'entity_reference_label',
       'i18n_taxonomy_term_reference_link' => 'entity_reference_label',
+      'i18n_taxonomy_term_reference_plain' => 'entity_reference_label',
       'entityreference_entity_view' => 'entity_reference_entity_view',
     ];
   }
diff --git a/core/modules/taxonomy/src/Plugin/views/argument/IndexTidDepthModifier.php b/core/modules/taxonomy/src/Plugin/views/argument/IndexTidDepthModifier.php
index 65af6623be..99ca4393c9 100644
--- a/core/modules/taxonomy/src/Plugin/views/argument/IndexTidDepthModifier.php
+++ b/core/modules/taxonomy/src/Plugin/views/argument/IndexTidDepthModifier.php
@@ -53,10 +53,6 @@ public function preQuery() {
         continue;
       }
 
-      if (isset($handler)) {
-        unset($handler);
-      }
-
       $handler = &$this->view->argument[$key];
       if (empty($handler->definition['accept depth modifier'])) {
         continue;
diff --git a/core/modules/taxonomy/src/Plugin/views/filter/TaxonomyIndexTid.php b/core/modules/taxonomy/src/Plugin/views/filter/TaxonomyIndexTid.php
index 7758aee4e0..e9c4c9368d 100644
--- a/core/modules/taxonomy/src/Plugin/views/filter/TaxonomyIndexTid.php
+++ b/core/modules/taxonomy/src/Plugin/views/filter/TaxonomyIndexTid.php
@@ -280,7 +280,7 @@ protected function valueForm(&$form, FormStateInterface $form_state) {
       $this->helper->buildOptionsForm($form, $form_state);
 
       // Show help text if not exposed to end users.
-      $form['value']['#description'] = t('Leave blank for all. Otherwise, the first selected term will be the default instead of "Any".');
+      $form['value']['#description'] = $this->t('Leave blank for all. Otherwise, the first selected term will be the default instead of "Any".');
     }
   }
 
diff --git a/core/modules/taxonomy/src/TermForm.php b/core/modules/taxonomy/src/TermForm.php
index 73f6e4d11e..c077b5147d 100644
--- a/core/modules/taxonomy/src/TermForm.php
+++ b/core/modules/taxonomy/src/TermForm.php
@@ -201,6 +201,7 @@ public function save(array $form, FormStateInterface $form_state) {
       case SAVED_UPDATED:
         $this->messenger()->addStatus($this->t('Updated term %term.', ['%term' => $view_link]));
         $this->logger('taxonomy')->notice('Updated term %term.', ['%term' => $term->getName(), 'link' => $edit_link]);
+        $form_state->setRedirect('entity.taxonomy_term.canonical', ['taxonomy_term' => $term->id()]);
         break;
     }
 
diff --git a/core/modules/taxonomy/src/TermStorage.php b/core/modules/taxonomy/src/TermStorage.php
index 696be8ff70..5d1332a447 100644
--- a/core/modules/taxonomy/src/TermStorage.php
+++ b/core/modules/taxonomy/src/TermStorage.php
@@ -40,8 +40,7 @@ class TermStorage extends SqlContentEntityStorage implements TermStorageInterfac
   protected $trees = [];
 
   /**
-   * Array of all loaded term ancestry keyed by ancestor term ID, keyed by term
-   * ID.
+   * Term ancestry keyed by ancestor term ID, keyed by term ID.
    *
    * @var \Drupal\taxonomy\TermInterface[][]
    */
diff --git a/core/modules/taxonomy/taxonomy.services.yml b/core/modules/taxonomy/taxonomy.services.yml
index b724d27e5c..43818281c9 100644
--- a/core/modules/taxonomy/taxonomy.services.yml
+++ b/core/modules/taxonomy/taxonomy.services.yml
@@ -5,7 +5,7 @@ services:
     tags:
       - { name: breadcrumb_builder, priority: 1002 }
   taxonomy_term.taxonomy_term_route_context:
-      class: Drupal\taxonomy\ContextProvider\TermRouteContext
-      arguments: ['@current_route_match']
-      tags:
-        - { name: 'context_provider' }
+    class: Drupal\taxonomy\ContextProvider\TermRouteContext
+    arguments: ['@current_route_match']
+    tags:
+      - { name: 'context_provider' }
diff --git a/core/modules/taxonomy/tests/src/Functional/EarlyDateTest.php b/core/modules/taxonomy/tests/src/Functional/EarlyDateTest.php
index deed0d4030..17a7d992ca 100644
--- a/core/modules/taxonomy/tests/src/Functional/EarlyDateTest.php
+++ b/core/modules/taxonomy/tests/src/Functional/EarlyDateTest.php
@@ -25,6 +25,9 @@ class EarlyDateTest extends TaxonomyTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/taxonomy/tests/src/Functional/LoadMultipleTest.php b/core/modules/taxonomy/tests/src/Functional/LoadMultipleTest.php
index a746a5ceb9..8c135ad24c 100644
--- a/core/modules/taxonomy/tests/src/Functional/LoadMultipleTest.php
+++ b/core/modules/taxonomy/tests/src/Functional/LoadMultipleTest.php
@@ -17,6 +17,9 @@ class LoadMultipleTest extends TaxonomyTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->drupalLogin($this->drupalCreateUser(['administer taxonomy']));
diff --git a/core/modules/taxonomy/tests/src/Functional/RssTest.php b/core/modules/taxonomy/tests/src/Functional/RssTest.php
index 784df37475..87a032aa37 100644
--- a/core/modules/taxonomy/tests/src/Functional/RssTest.php
+++ b/core/modules/taxonomy/tests/src/Functional/RssTest.php
@@ -39,6 +39,9 @@ class RssTest extends TaxonomyTestBase {
    */
   protected $fieldName;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/taxonomy/tests/src/Functional/TaxonomyImageTest.php b/core/modules/taxonomy/tests/src/Functional/TaxonomyImageTest.php
deleted file mode 100644
index 38f5be61cf..0000000000
--- a/core/modules/taxonomy/tests/src/Functional/TaxonomyImageTest.php
+++ /dev/null
@@ -1,119 +0,0 @@
-<?php
-
-namespace Drupal\Tests\taxonomy\Functional;
-
-use Drupal\field\Entity\FieldConfig;
-use Drupal\Tests\TestFileCreationTrait;
-use Drupal\user\RoleInterface;
-use Drupal\file\Entity\File;
-use Drupal\field\Entity\FieldStorageConfig;
-
-/**
- * Tests access checks of private image fields.
- *
- * @group taxonomy
- */
-class TaxonomyImageTest extends TaxonomyTestBase {
-
-  use TestFileCreationTrait {
-    getTestFiles as drupalGetTestFiles;
-    compareFiles as drupalCompareFiles;
-  }
-
-  /**
-   * Used taxonomy vocabulary.
-   *
-   * @var \Drupal\taxonomy\VocabularyInterface
-   */
-  protected $vocabulary;
-
-  /**
-   * Modules to enable.
-   *
-   * @var array
-   */
-  protected static $modules = ['image'];
-
-  /**
-   * {@inheritdoc}
-   */
-  protected $defaultTheme = 'stark';
-
-  protected function setUp(): void {
-    parent::setUp();
-
-    // Remove access content permission from registered users.
-    user_role_revoke_permissions(RoleInterface::AUTHENTICATED_ID, ['access content']);
-
-    $this->vocabulary = $this->createVocabulary();
-    // Add a field to the vocabulary.
-    $entity_type = 'taxonomy_term';
-    $name = 'field_test';
-    FieldStorageConfig::create([
-      'field_name' => $name,
-      'entity_type' => $entity_type,
-      'type' => 'image',
-      'settings' => [
-        'uri_scheme' => 'private',
-      ],
-    ])->save();
-    FieldConfig::create([
-      'field_name' => $name,
-      'entity_type' => $entity_type,
-      'bundle' => $this->vocabulary->id(),
-      'settings' => [],
-    ])->save();
-    /** @var \Drupal\Core\Entity\EntityDisplayRepositoryInterface $display_repository */
-    $display_repository = \Drupal::service('entity_display.repository');
-    $display_repository->getViewDisplay($entity_type, $this->vocabulary->id())
-      ->setComponent($name, [
-        'type' => 'image',
-        'settings' => [],
-      ])
-      ->save();
-    $display_repository->getFormDisplay($entity_type, $this->vocabulary->id())
-      ->setComponent($name, [
-        'type' => 'image_image',
-        'settings' => [],
-      ])
-      ->save();
-  }
-
-  public function testTaxonomyImageAccess() {
-    $user = $this->drupalCreateUser([
-      'administer site configuration',
-      'administer taxonomy',
-      'access user profiles',
-    ]);
-    $this->drupalLogin($user);
-
-    // Create a term and upload the image.
-    $files = $this->drupalGetTestFiles('image');
-    $image = array_pop($files);
-    $edit['name[0][value]'] = $this->randomMachineName();
-    $edit['files[field_test_0]'] = \Drupal::service('file_system')->realpath($image->uri);
-    $this->drupalGet('admin/structure/taxonomy/manage/' . $this->vocabulary->id() . '/add');
-    $this->submitForm($edit, 'Save');
-    $this->submitForm(['field_test[0][alt]' => $this->randomMachineName()], 'Save');
-    $terms = \Drupal::entityTypeManager()->getStorage('taxonomy_term')->loadByProperties(['name' => $edit['name[0][value]']]);
-    $term = reset($terms);
-    $this->assertSession()->pageTextContains('Created new term ' . $term->getName() . '.');
-
-    // Create a user that should have access to the file and one that doesn't.
-    $access_user = $this->drupalCreateUser(['access content']);
-    $no_access_user = $this->drupalCreateUser();
-    $image = File::load($term->field_test->target_id);
-
-    // Ensure a user that should be able to access the file can access it.
-    $this->drupalLogin($access_user);
-    $this->drupalGet($image->createFileUrl(FALSE));
-    $this->assertSession()->statusCodeEquals(200);
-
-    // Ensure a user that should not be able to access the file cannot access
-    // it.
-    $this->drupalLogin($no_access_user);
-    $this->drupalGet($image->createFileUrl(FALSE));
-    $this->assertSession()->statusCodeEquals(403);
-  }
-
-}
diff --git a/core/modules/taxonomy/tests/src/Functional/TaxonomyTermIndentationTest.php b/core/modules/taxonomy/tests/src/Functional/TaxonomyTermIndentationTest.php
index 85b25ffe9b..79ccce9eda 100644
--- a/core/modules/taxonomy/tests/src/Functional/TaxonomyTermIndentationTest.php
+++ b/core/modules/taxonomy/tests/src/Functional/TaxonomyTermIndentationTest.php
@@ -28,6 +28,9 @@ class TaxonomyTermIndentationTest extends TaxonomyTestBase {
    */
   protected $vocabulary;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->drupalLogin($this->drupalCreateUser([
diff --git a/core/modules/taxonomy/tests/src/Functional/TermIndexTest.php b/core/modules/taxonomy/tests/src/Functional/TermIndexTest.php
index cf011b157e..c5f7087827 100644
--- a/core/modules/taxonomy/tests/src/Functional/TermIndexTest.php
+++ b/core/modules/taxonomy/tests/src/Functional/TermIndexTest.php
@@ -46,6 +46,9 @@ class TermIndexTest extends TaxonomyTestBase {
    */
   protected $fieldName2;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
@@ -62,7 +65,7 @@ protected function setUp(): void {
     $handler_settings = [
       'target_bundles' => [
         $this->vocabulary->id() => $this->vocabulary->id(),
-       ],
+      ],
       'auto_create' => TRUE,
     ];
     $this->createEntityReferenceField('node', 'article', $this->fieldName1, NULL, 'taxonomy_term', 'default', $handler_settings, FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED);
diff --git a/core/modules/taxonomy/tests/src/Functional/TermLanguageTest.php b/core/modules/taxonomy/tests/src/Functional/TermLanguageTest.php
index 442de2318f..974f14877d 100644
--- a/core/modules/taxonomy/tests/src/Functional/TermLanguageTest.php
+++ b/core/modules/taxonomy/tests/src/Functional/TermLanguageTest.php
@@ -26,6 +26,9 @@ class TermLanguageTest extends TaxonomyTestBase {
    */
   protected $vocabulary;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/taxonomy/tests/src/Functional/TermTest.php b/core/modules/taxonomy/tests/src/Functional/TermTest.php
index 0bf4118ee9..61985d5b00 100644
--- a/core/modules/taxonomy/tests/src/Functional/TermTest.php
+++ b/core/modules/taxonomy/tests/src/Functional/TermTest.php
@@ -348,6 +348,9 @@ public function testTermInterface() {
     $this->drupalGet('admin/structure/taxonomy/manage/' . $this->vocabulary->id() . '/add');
     $this->submitForm($edit, 'Save');
 
+    // Ensure form redirected back to term add page.
+    $this->assertSession()->addressEquals('admin/structure/taxonomy/manage/' . $this->vocabulary->id() . '/add');
+
     $terms = \Drupal::entityTypeManager()->getStorage('taxonomy_term')->loadByProperties([
       'name' => $edit['name[0][value]'],
     ]);
@@ -372,6 +375,9 @@ public function testTermInterface() {
     $this->drupalGet('taxonomy/term/' . $term->id() . '/edit');
     $this->submitForm($edit, 'Save');
 
+    // Ensure form redirected back to term view.
+    $this->assertSession()->addressEquals('taxonomy/term/' . $term->id());
+
     // Check that the term is still present at admin UI after edit.
     $this->drupalGet('admin/structure/taxonomy/manage/' . $this->vocabulary->id() . '/overview');
     $this->assertSession()->pageTextContains($edit['name[0][value]']);
diff --git a/core/modules/taxonomy/tests/src/Functional/TermTranslationFieldViewTest.php b/core/modules/taxonomy/tests/src/Functional/TermTranslationFieldViewTest.php
index a710b0c685..00ad913fa6 100644
--- a/core/modules/taxonomy/tests/src/Functional/TermTranslationFieldViewTest.php
+++ b/core/modules/taxonomy/tests/src/Functional/TermTranslationFieldViewTest.php
@@ -46,6 +46,9 @@ class TermTranslationFieldViewTest extends TaxonomyTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->setupLanguages();
diff --git a/core/modules/taxonomy/tests/src/Functional/TermTranslationUITest.php b/core/modules/taxonomy/tests/src/Functional/TermTranslationUITest.php
index 179b4adea8..2b4ad75364 100644
--- a/core/modules/taxonomy/tests/src/Functional/TermTranslationUITest.php
+++ b/core/modules/taxonomy/tests/src/Functional/TermTranslationUITest.php
@@ -43,6 +43,9 @@ class TermTranslationUITest extends ContentTranslationUITestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     $this->entityTypeId = 'taxonomy_term';
     $this->bundle = 'tags';
diff --git a/core/modules/taxonomy/tests/src/Functional/ThemeTest.php b/core/modules/taxonomy/tests/src/Functional/ThemeTest.php
index f3dc3dd59c..b1f5abfa8d 100644
--- a/core/modules/taxonomy/tests/src/Functional/ThemeTest.php
+++ b/core/modules/taxonomy/tests/src/Functional/ThemeTest.php
@@ -14,6 +14,9 @@ class ThemeTest extends TaxonomyTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/taxonomy/tests/src/Functional/TokenReplaceTest.php b/core/modules/taxonomy/tests/src/Functional/TokenReplaceTest.php
index 38ae70bec7..43105bd1f8 100644
--- a/core/modules/taxonomy/tests/src/Functional/TokenReplaceTest.php
+++ b/core/modules/taxonomy/tests/src/Functional/TokenReplaceTest.php
@@ -33,6 +33,9 @@ class TokenReplaceTest extends TaxonomyTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->drupalLogin($this->drupalCreateUser([
diff --git a/core/modules/taxonomy/tests/src/Functional/Views/TaxonomyFieldFilterTest.php b/core/modules/taxonomy/tests/src/Functional/Views/TaxonomyFieldFilterTest.php
index 15adc76911..14462824c2 100644
--- a/core/modules/taxonomy/tests/src/Functional/Views/TaxonomyFieldFilterTest.php
+++ b/core/modules/taxonomy/tests/src/Functional/Views/TaxonomyFieldFilterTest.php
@@ -57,6 +57,9 @@ class TaxonomyFieldFilterTest extends ViewTestBase {
    */
   public $termNames = [];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp($import_test_views = TRUE, $modules = []): void {
     parent::setUp($import_test_views, $modules);
 
diff --git a/core/modules/taxonomy/tests/src/Functional/VocabularyLanguageTest.php b/core/modules/taxonomy/tests/src/Functional/VocabularyLanguageTest.php
index a706ab94b5..1dad37e3bc 100644
--- a/core/modules/taxonomy/tests/src/Functional/VocabularyLanguageTest.php
+++ b/core/modules/taxonomy/tests/src/Functional/VocabularyLanguageTest.php
@@ -19,6 +19,9 @@ class VocabularyLanguageTest extends TaxonomyTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/taxonomy/tests/src/Functional/VocabularyPermissionsTest.php b/core/modules/taxonomy/tests/src/Functional/VocabularyPermissionsTest.php
index 1794ecde34..0cc633f5d4 100644
--- a/core/modules/taxonomy/tests/src/Functional/VocabularyPermissionsTest.php
+++ b/core/modules/taxonomy/tests/src/Functional/VocabularyPermissionsTest.php
@@ -23,6 +23,9 @@ class VocabularyPermissionsTest extends TaxonomyTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/taxonomy/tests/src/Functional/VocabularyUiTest.php b/core/modules/taxonomy/tests/src/Functional/VocabularyUiTest.php
index 47bdfdb629..562111d7e6 100644
--- a/core/modules/taxonomy/tests/src/Functional/VocabularyUiTest.php
+++ b/core/modules/taxonomy/tests/src/Functional/VocabularyUiTest.php
@@ -24,6 +24,9 @@ class VocabularyUiTest extends TaxonomyTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->drupalLogin($this->drupalCreateUser(['administer taxonomy']));
diff --git a/core/modules/taxonomy/tests/src/Kernel/Plugin/migrate/source/d7/TermLocalizedTranslationTest.php b/core/modules/taxonomy/tests/src/Kernel/Plugin/migrate/source/d7/TermLocalizedTranslationTest.php
index f04788b9da..cf8c969da9 100644
--- a/core/modules/taxonomy/tests/src/Kernel/Plugin/migrate/source/d7/TermLocalizedTranslationTest.php
+++ b/core/modules/taxonomy/tests/src/Kernel/Plugin/migrate/source/d7/TermLocalizedTranslationTest.php
@@ -153,7 +153,7 @@ public function providerSource() {
         'property' => 'description',
         'objectindex' => '5',
         'format' => 0,
-       ]);
+      ]);
     array_push($tests[1]['source_data']['locales_target'],
       [
         'lid' => 10,
@@ -170,7 +170,7 @@ public function providerSource() {
         'plid' => 0,
         'plural' => 0,
         'i18n_status' => 0,
-    ]);
+      ]);
 
     // The expected results.
     array_push($tests[1]['expected_data'],
@@ -225,7 +225,7 @@ public function providerSource() {
         'translation' => 'fr - description value 5',
         'name_translated' => 'fr - name value 5',
         'description_translated' => 'fr - description value 5',
-    ]);
+      ]);
 
     $tests[1]['expected_count'] = NULL;
     // Empty configuration will return terms for all vocabularies.
diff --git a/core/modules/taxonomy/tests/src/Unit/Menu/TaxonomyLocalTasksTest.php b/core/modules/taxonomy/tests/src/Unit/Menu/TaxonomyLocalTasksTest.php
index 5bf7dd3535..c90533fbee 100644
--- a/core/modules/taxonomy/tests/src/Unit/Menu/TaxonomyLocalTasksTest.php
+++ b/core/modules/taxonomy/tests/src/Unit/Menu/TaxonomyLocalTasksTest.php
@@ -11,6 +11,9 @@
  */
 class TaxonomyLocalTasksTest extends LocalTaskIntegrationTestBase {
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     $this->directoryList = ['taxonomy' => 'core/modules/taxonomy'];
     parent::setUp();
diff --git a/core/modules/telephone/src/Plugin/Field/FieldFormatter/TelephoneLinkFormatter.php b/core/modules/telephone/src/Plugin/Field/FieldFormatter/TelephoneLinkFormatter.php
index 60ee25cbc3..875f47ffa4 100644
--- a/core/modules/telephone/src/Plugin/Field/FieldFormatter/TelephoneLinkFormatter.php
+++ b/core/modules/telephone/src/Plugin/Field/FieldFormatter/TelephoneLinkFormatter.php
@@ -35,7 +35,7 @@ public static function defaultSettings() {
   public function settingsForm(array $form, FormStateInterface $form_state) {
     $elements['title'] = [
       '#type' => 'textfield',
-      '#title' => t('Title to replace basic numeric telephone number display'),
+      '#title' => $this->t('Title to replace basic numeric telephone number display'),
       '#default_value' => $this->getSetting('title'),
     ];
 
@@ -50,10 +50,10 @@ public function settingsSummary() {
     $settings = $this->getSettings();
 
     if (!empty($settings['title'])) {
-      $summary[] = t('Link using text: @title', ['@title' => $settings['title']]);
+      $summary[] = $this->t('Link using text: @title', ['@title' => $settings['title']]);
     }
     else {
-      $summary[] = t('Link using provided telephone number.');
+      $summary[] = $this->t('Link using provided telephone number.');
     }
 
     return $summary;
diff --git a/core/modules/telephone/src/Plugin/Field/FieldType/TelephoneItem.php b/core/modules/telephone/src/Plugin/Field/FieldType/TelephoneItem.php
index 17fc9d5e42..8fea6f93f0 100644
--- a/core/modules/telephone/src/Plugin/Field/FieldType/TelephoneItem.php
+++ b/core/modules/telephone/src/Plugin/Field/FieldType/TelephoneItem.php
@@ -6,6 +6,7 @@
 use Drupal\Core\Field\FieldItemBase;
 use Drupal\Core\Field\FieldStorageDefinitionInterface;
 use Drupal\Core\TypedData\DataDefinition;
+use Drupal\Core\StringTranslation\TranslatableMarkup;
 
 /**
  * Plugin implementation of the 'telephone' field type.
@@ -40,7 +41,7 @@ public static function schema(FieldStorageDefinitionInterface $field_definition)
    */
   public static function propertyDefinitions(FieldStorageDefinitionInterface $field_definition) {
     $properties['value'] = DataDefinition::create('string')
-      ->setLabel(t('Telephone number'))
+      ->setLabel(new TranslatableMarkup('Telephone number'))
       ->setRequired(TRUE);
 
     return $properties;
@@ -66,7 +67,7 @@ public function getConstraints() {
       'value' => [
         'Length' => [
           'max' => $max_length,
-          'maxMessage' => t('%name: the telephone number may not be longer than @max characters.', ['%name' => $this->getFieldDefinition()->getLabel(), '@max' => $max_length]),
+          'maxMessage' => $this->t('%name: the telephone number may not be longer than @max characters.', ['%name' => $this->getFieldDefinition()->getLabel(), '@max' => $max_length]),
         ],
       ],
     ]);
diff --git a/core/modules/telephone/src/Plugin/Field/FieldWidget/TelephoneDefaultWidget.php b/core/modules/telephone/src/Plugin/Field/FieldWidget/TelephoneDefaultWidget.php
index 99db3c13fe..8887d06b0a 100644
--- a/core/modules/telephone/src/Plugin/Field/FieldWidget/TelephoneDefaultWidget.php
+++ b/core/modules/telephone/src/Plugin/Field/FieldWidget/TelephoneDefaultWidget.php
@@ -34,9 +34,9 @@ public static function defaultSettings() {
   public function settingsForm(array $form, FormStateInterface $form_state) {
     $element['placeholder'] = [
       '#type' => 'textfield',
-      '#title' => t('Placeholder'),
+      '#title' => $this->t('Placeholder'),
       '#default_value' => $this->getSetting('placeholder'),
-      '#description' => t('Text that will be shown inside the field until a value is entered. This hint is usually a sample value or a brief description of the expected format.'),
+      '#description' => $this->t('Text that will be shown inside the field until a value is entered. This hint is usually a sample value or a brief description of the expected format.'),
     ];
     return $element;
   }
@@ -49,10 +49,10 @@ public function settingsSummary() {
 
     $placeholder = $this->getSetting('placeholder');
     if (!empty($placeholder)) {
-      $summary[] = t('Placeholder: @placeholder', ['@placeholder' => $placeholder]);
+      $summary[] = $this->t('Placeholder: @placeholder', ['@placeholder' => $placeholder]);
     }
     else {
-      $summary[] = t('No placeholder');
+      $summary[] = $this->t('No placeholder');
     }
 
     return $summary;
diff --git a/core/modules/telephone/tests/src/Kernel/TelephoneItemTest.php b/core/modules/telephone/tests/src/Kernel/TelephoneItemTest.php
index 0dd6be6a2f..0b793f93c3 100644
--- a/core/modules/telephone/tests/src/Kernel/TelephoneItemTest.php
+++ b/core/modules/telephone/tests/src/Kernel/TelephoneItemTest.php
@@ -23,6 +23,9 @@ class TelephoneItemTest extends FieldKernelTestBase {
    */
   protected static $modules = ['telephone'];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/text/src/Plugin/Field/FieldFormatter/TextTrimmedFormatter.php b/core/modules/text/src/Plugin/Field/FieldFormatter/TextTrimmedFormatter.php
index 6f90a56d99..d961036a91 100644
--- a/core/modules/text/src/Plugin/Field/FieldFormatter/TextTrimmedFormatter.php
+++ b/core/modules/text/src/Plugin/Field/FieldFormatter/TextTrimmedFormatter.php
@@ -41,11 +41,11 @@ public static function defaultSettings() {
    */
   public function settingsForm(array $form, FormStateInterface $form_state) {
     $element['trim_length'] = [
-      '#title' => t('Trimmed limit'),
+      '#title' => $this->t('Trimmed limit'),
       '#type' => 'number',
-      '#field_suffix' => t('characters'),
+      '#field_suffix' => $this->t('characters'),
       '#default_value' => $this->getSetting('trim_length'),
-      '#description' => t('If the summary is not set, the trimmed %label field will end at the last full sentence before this character limit.', ['%label' => $this->fieldDefinition->getLabel()]),
+      '#description' => $this->t('If the summary is not set, the trimmed %label field will end at the last full sentence before this character limit.', ['%label' => $this->fieldDefinition->getLabel()]),
       '#min' => 1,
       '#required' => TRUE,
     ];
@@ -57,7 +57,7 @@ public function settingsForm(array $form, FormStateInterface $form_state) {
    */
   public function settingsSummary() {
     $summary = [];
-    $summary[] = t('Trimmed limit: @trim_length characters', ['@trim_length' => $this->getSetting('trim_length')]);
+    $summary[] = $this->t('Trimmed limit: @trim_length characters', ['@trim_length' => $this->getSetting('trim_length')]);
     return $summary;
   }
 
diff --git a/core/modules/text/src/Plugin/Field/FieldType/TextItem.php b/core/modules/text/src/Plugin/Field/FieldType/TextItem.php
index dcee58346d..47a23dcf77 100644
--- a/core/modules/text/src/Plugin/Field/FieldType/TextItem.php
+++ b/core/modules/text/src/Plugin/Field/FieldType/TextItem.php
@@ -61,7 +61,7 @@ public function getConstraints() {
         'value' => [
           'Length' => [
             'max' => $max_length,
-            'maxMessage' => t('%name: the text may not be longer than @max characters.', ['%name' => $this->getFieldDefinition()->getLabel(), '@max' => $max_length]),
+            'maxMessage' => $this->t('%name: the text may not be longer than @max characters.', ['%name' => $this->getFieldDefinition()->getLabel(), '@max' => $max_length]),
           ],
         ],
       ]);
@@ -78,10 +78,10 @@ public function storageSettingsForm(array &$form, FormStateInterface $form_state
 
     $element['max_length'] = [
       '#type' => 'number',
-      '#title' => t('Maximum length'),
+      '#title' => $this->t('Maximum length'),
       '#default_value' => $this->getSetting('max_length'),
       '#required' => TRUE,
-      '#description' => t('The maximum length of the field in characters.'),
+      '#description' => $this->t('The maximum length of the field in characters.'),
       '#min' => 1,
       '#disabled' => $has_data,
     ];
diff --git a/core/modules/text/src/Plugin/Field/FieldType/TextWithSummaryItem.php b/core/modules/text/src/Plugin/Field/FieldType/TextWithSummaryItem.php
index 9c9a160e23..9437c381fc 100644
--- a/core/modules/text/src/Plugin/Field/FieldType/TextWithSummaryItem.php
+++ b/core/modules/text/src/Plugin/Field/FieldType/TextWithSummaryItem.php
@@ -5,6 +5,7 @@
 use Drupal\Core\Field\FieldStorageDefinitionInterface;
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\TypedData\DataDefinition;
+use Drupal\Core\StringTranslation\TranslatableMarkup;
 
 /**
  * Plugin implementation of the 'text_with_summary' field type.
@@ -37,11 +38,11 @@ public static function propertyDefinitions(FieldStorageDefinitionInterface $fiel
     $properties = parent::propertyDefinitions($field_definition);
 
     $properties['summary'] = DataDefinition::create('string')
-      ->setLabel(t('Summary'));
+      ->setLabel(new TranslatableMarkup('Summary'));
 
     $properties['summary_processed'] = DataDefinition::create('string')
-      ->setLabel(t('Processed summary'))
-      ->setDescription(t('The summary text with the text format applied.'))
+      ->setLabel(new TranslatableMarkup('Processed summary'))
+      ->setDescription(new TranslatableMarkup('The summary text with the text format applied.'))
       ->setComputed(TRUE)
       ->setClass('\Drupal\text\TextProcessed')
       ->setSetting('text source', 'summary');
@@ -91,15 +92,15 @@ public function fieldSettingsForm(array $form, FormStateInterface $form_state) {
 
     $element['display_summary'] = [
       '#type' => 'checkbox',
-      '#title' => t('Summary input'),
+      '#title' => $this->t('Summary input'),
       '#default_value' => $settings['display_summary'],
-      '#description' => t('This allows authors to input an explicit summary, to be displayed instead of the automatically trimmed text when using the "Summary or trimmed" display type.'),
+      '#description' => $this->t('This allows authors to input an explicit summary, to be displayed instead of the automatically trimmed text when using the "Summary or trimmed" display type.'),
     ];
 
     $element['required_summary'] = [
       '#type' => 'checkbox',
-      '#title' => t('Require summary'),
-      '#description' => t('The summary will also be visible when marked as required.'),
+      '#title' => $this->t('Require summary'),
+      '#description' => $this->t('The summary will also be visible when marked as required.'),
       '#default_value' => $settings['required_summary'],
     ];
 
diff --git a/core/modules/text/src/Plugin/Field/FieldWidget/TextareaWithSummaryWidget.php b/core/modules/text/src/Plugin/Field/FieldWidget/TextareaWithSummaryWidget.php
index 999bfc4623..60b51650c8 100644
--- a/core/modules/text/src/Plugin/Field/FieldWidget/TextareaWithSummaryWidget.php
+++ b/core/modules/text/src/Plugin/Field/FieldWidget/TextareaWithSummaryWidget.php
@@ -38,7 +38,7 @@ public function settingsForm(array $form, FormStateInterface $form_state) {
     $element = parent::settingsForm($form, $form_state);
     $element['summary_rows'] = [
       '#type' => 'number',
-      '#title' => t('Summary rows'),
+      '#title' => $this->t('Summary rows'),
       '#default_value' => $this->getSetting('summary_rows'),
       '#description' => $element['rows']['#description'],
       '#required' => TRUE,
@@ -46,7 +46,7 @@ public function settingsForm(array $form, FormStateInterface $form_state) {
     ];
     $element['show_summary'] = [
       '#type' => 'checkbox',
-      '#title' => t('Always show the summary field'),
+      '#title' => $this->t('Always show the summary field'),
       '#default_value' => $this->getSetting('show_summary'),
     ];
     return $element;
@@ -58,9 +58,9 @@ public function settingsForm(array $form, FormStateInterface $form_state) {
   public function settingsSummary() {
     $summary = parent::settingsSummary();
 
-    $summary[] = t('Number of summary rows: @rows', ['@rows' => $this->getSetting('summary_rows')]);
+    $summary[] = $this->t('Number of summary rows: @rows', ['@rows' => $this->getSetting('summary_rows')]);
     if ($this->getSetting('show_summary')) {
-      $summary[] = t('Summary field will always be visible');
+      $summary[] = $this->t('Summary field will always be visible');
     }
 
     return $summary;
@@ -78,7 +78,7 @@ public function formElement(FieldItemListInterface $items, $delta, array $elemen
     $element['summary'] = [
       '#type' => $display_summary ? 'textarea' : 'value',
       '#default_value' => $items[$delta]->summary,
-      '#title' => t('Summary'),
+      '#title' => $this->t('Summary'),
       '#rows' => $this->getSetting('summary_rows'),
       '#description' => !$required ? $this->t('Leave blank to use trimmed value of full text as the summary.') : '',
       '#attributes' => ['class' => ['js-text-summary', 'text-summary']],
diff --git a/core/modules/text/tests/src/Functional/TextFieldTest.php b/core/modules/text/tests/src/Functional/TextFieldTest.php
index 00d687fe61..b68c0d1f37 100644
--- a/core/modules/text/tests/src/Functional/TextFieldTest.php
+++ b/core/modules/text/tests/src/Functional/TextFieldTest.php
@@ -33,6 +33,9 @@ class TextFieldTest extends StringFieldTest {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/text/tests/src/Kernel/TextSummaryTest.php b/core/modules/text/tests/src/Kernel/TextSummaryTest.php
index acac900bfc..90904c1198 100644
--- a/core/modules/text/tests/src/Kernel/TextSummaryTest.php
+++ b/core/modules/text/tests/src/Kernel/TextSummaryTest.php
@@ -30,6 +30,9 @@ class TextSummaryTest extends KernelTestBase {
     'entity_test',
   ];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/text/tests/src/Kernel/TextWithSummaryItemTest.php b/core/modules/text/tests/src/Kernel/TextWithSummaryItemTest.php
index 3a1ca9c4d7..6630330bdb 100644
--- a/core/modules/text/tests/src/Kernel/TextWithSummaryItemTest.php
+++ b/core/modules/text/tests/src/Kernel/TextWithSummaryItemTest.php
@@ -37,6 +37,9 @@ class TextWithSummaryItemTest extends FieldKernelTestBase {
    */
   protected $field;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/text/tests/src/Unit/Migrate/d6/TextFieldTest.php b/core/modules/text/tests/src/Unit/Migrate/d6/TextFieldTest.php
index af2ce704ca..b3d0afb15b 100644
--- a/core/modules/text/tests/src/Unit/Migrate/d6/TextFieldTest.php
+++ b/core/modules/text/tests/src/Unit/Migrate/d6/TextFieldTest.php
@@ -126,25 +126,25 @@ public function getFieldTypeProvider() {
     return [
       ['string_long', 'text_textfield', ['text_processing' => FALSE]],
       ['string', 'text_textfield', [
-          'text_processing' => FALSE,
-          'max_length' => 128,
-        ],
+        'text_processing' => FALSE,
+        'max_length' => 128,
+      ],
       ],
       ['string_long', 'text_textfield', [
-          'text_processing' => FALSE,
-          'max_length' => 4096,
-        ],
+        'text_processing' => FALSE,
+        'max_length' => 4096,
+      ],
       ],
       ['text_long', 'text_textfield', ['text_processing' => TRUE]],
       ['text', 'text_textfield', [
-          'text_processing' => TRUE,
-          'max_length' => 128,
-        ],
+        'text_processing' => TRUE,
+        'max_length' => 128,
+      ],
       ],
       ['text_long', 'text_textfield', [
-          'text_processing' => TRUE,
-          'max_length' => 4096,
-        ],
+        'text_processing' => TRUE,
+        'max_length' => 4096,
+      ],
       ],
       ['list_string', 'optionwidgets_buttons'],
       ['list_string', 'optionwidgets_select'],
diff --git a/core/modules/text/tests/src/Unit/Plugin/migrate/field/d6/TextFieldTest.php b/core/modules/text/tests/src/Unit/Plugin/migrate/field/d6/TextFieldTest.php
index ccc677b225..616a16e078 100644
--- a/core/modules/text/tests/src/Unit/Plugin/migrate/field/d6/TextFieldTest.php
+++ b/core/modules/text/tests/src/Unit/Plugin/migrate/field/d6/TextFieldTest.php
@@ -126,25 +126,25 @@ public function getFieldTypeProvider() {
     return [
       ['string_long', 'text_textfield', ['text_processing' => FALSE]],
       ['string', 'text_textfield', [
-          'text_processing' => FALSE,
-          'max_length' => 128,
-        ],
+        'text_processing' => FALSE,
+        'max_length' => 128,
+      ],
       ],
       ['string_long', 'text_textfield', [
-          'text_processing' => FALSE,
-          'max_length' => 4096,
-        ],
+        'text_processing' => FALSE,
+        'max_length' => 4096,
+      ],
       ],
       ['text_long', 'text_textfield', ['text_processing' => TRUE]],
       ['text', 'text_textfield', [
-          'text_processing' => TRUE,
-          'max_length' => 128,
-        ],
+        'text_processing' => TRUE,
+        'max_length' => 128,
+      ],
       ],
       ['text_long', 'text_textfield', [
-          'text_processing' => TRUE,
-          'max_length' => 4096,
-        ],
+        'text_processing' => TRUE,
+        'max_length' => 4096,
+      ],
       ],
       ['list_string', 'optionwidgets_buttons'],
       ['list_string', 'optionwidgets_select'],
diff --git a/core/modules/text/text.module b/core/modules/text/text.module
index 509b3b7242..c0a03c62f9 100644
--- a/core/modules/text/text.module
+++ b/core/modules/text/text.module
@@ -58,7 +58,7 @@ function text_help($route_name, RouteMatchInterface $route_match) {
  *   The desired character length of the summary. If omitted, the default value
  *   will be used. Ignored if the special delimiter is present in $text.
  *
- * @return
+ * @return string
  *   The generated summary.
  */
 function text_summary($text, $format = NULL, $size = NULL) {
diff --git a/core/modules/toolbar/css/toolbar.theme.css b/core/modules/toolbar/css/toolbar.theme.css
index 0416c056ad..bdc6c3f183 100644
--- a/core/modules/toolbar/css/toolbar.theme.css
+++ b/core/modules/toolbar/css/toolbar.theme.css
@@ -85,7 +85,8 @@
 .toolbar .toolbar-tray-horizontal .toolbar-tray {
   background-color: #f5f5f5;
 }
-.toolbar-tray a {
+.toolbar-tray a,
+.toolbar-tray a:visited {
   padding: 1em 1.3333em;
   cursor: pointer;
   text-decoration: none;
diff --git a/core/modules/toolbar/tests/src/Functional/ToolbarAdminMenuTest.php b/core/modules/toolbar/tests/src/Functional/ToolbarAdminMenuTest.php
index 2b2ef5a3c9..10af7ea5d9 100644
--- a/core/modules/toolbar/tests/src/Functional/ToolbarAdminMenuTest.php
+++ b/core/modules/toolbar/tests/src/Functional/ToolbarAdminMenuTest.php
@@ -72,6 +72,9 @@ class ToolbarAdminMenuTest extends BrowserTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/toolbar/tests/src/Functional/ToolbarHookToolbarTest.php b/core/modules/toolbar/tests/src/Functional/ToolbarHookToolbarTest.php
index d04042a9ef..3600efb191 100644
--- a/core/modules/toolbar/tests/src/Functional/ToolbarHookToolbarTest.php
+++ b/core/modules/toolbar/tests/src/Functional/ToolbarHookToolbarTest.php
@@ -30,6 +30,9 @@ class ToolbarHookToolbarTest extends BrowserTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/toolbar/tests/src/Functional/ToolbarMenuTranslationTest.php b/core/modules/toolbar/tests/src/Functional/ToolbarMenuTranslationTest.php
index 0fb7fbeb25..3079352f8e 100644
--- a/core/modules/toolbar/tests/src/Functional/ToolbarMenuTranslationTest.php
+++ b/core/modules/toolbar/tests/src/Functional/ToolbarMenuTranslationTest.php
@@ -35,6 +35,9 @@ class ToolbarMenuTranslationTest extends BrowserTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/toolbar/tests/src/Unit/PageCache/AllowToolbarPathTest.php b/core/modules/toolbar/tests/src/Unit/PageCache/AllowToolbarPathTest.php
index 287c0b4d7e..279578bbb6 100644
--- a/core/modules/toolbar/tests/src/Unit/PageCache/AllowToolbarPathTest.php
+++ b/core/modules/toolbar/tests/src/Unit/PageCache/AllowToolbarPathTest.php
@@ -20,6 +20,9 @@ class AllowToolbarPathTest extends UnitTestCase {
    */
   protected $policy;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     $this->policy = new AllowToolbarPath();
   }
diff --git a/core/modules/toolbar/toolbar.api.php b/core/modules/toolbar/toolbar.api.php
index 34be7a8156..bf2ddf362b 100644
--- a/core/modules/toolbar/toolbar.api.php
+++ b/core/modules/toolbar/toolbar.api.php
@@ -36,7 +36,7 @@
  *
  * This hook is invoked in Toolbar::preRenderToolbar().
  *
- * @return
+ * @return array
  *   An array of toolbar items, keyed by unique identifiers such as 'home' or
  *   'administration', or the short name of the module implementing the hook.
  *   The corresponding value is a render element of type 'toolbar_item'.
diff --git a/core/modules/tour/src/TourViewBuilder.php b/core/modules/tour/src/TourViewBuilder.php
index cafd4dd0c8..83535172dc 100644
--- a/core/modules/tour/src/TourViewBuilder.php
+++ b/core/modules/tour/src/TourViewBuilder.php
@@ -59,8 +59,8 @@ public function viewMultiple(array $entities = [], $view_mode = 'full', $langcod
               '@total' => $total_tips,
             ]),
             'attachTo' => [
-               'element' => $selector,
-               'on' => $location ?? 'bottom-start',
+              'element' => $selector,
+              'on' => $location ?? 'bottom-start',
             ],
             // Shepherd expects classes to be provided as a string.
             'classes' => implode(' ', $classes),
diff --git a/core/modules/tour/tests/src/Functional/TourTestBasic.php b/core/modules/tour/tests/src/Functional/TourTestBasic.php
index 6d4456d7d9..7a878ee1d6 100644
--- a/core/modules/tour/tests/src/Functional/TourTestBasic.php
+++ b/core/modules/tour/tests/src/Functional/TourTestBasic.php
@@ -39,6 +39,9 @@ abstract class TourTestBasic extends TourTestBase {
    */
   protected $permissions = ['access tour'];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/tour/tests/src/Unit/Entity/TourTest.php b/core/modules/tour/tests/src/Unit/Entity/TourTest.php
index 2143175285..b1f3db0bbc 100644
--- a/core/modules/tour/tests/src/Unit/Entity/TourTest.php
+++ b/core/modules/tour/tests/src/Unit/Entity/TourTest.php
@@ -34,7 +34,7 @@ public function testHasMatchingRoute($routes, $route_name, $route_params, $resul
 
     $tour->expects($this->any())
       ->method('getRoutes')
-      ->will($this->returnValue($routes));
+      ->willReturn($routes);
 
     $this->assertSame($result, $tour->hasMatchingRoute($route_name, $route_params));
 
diff --git a/core/modules/tracker/help_topics/tracker.tracking_changed_content.html.twig b/core/modules/tracker/help_topics/tracker.tracking_changed_content.html.twig
index 67cf5dac23..1422ee8e12 100644
--- a/core/modules/tracker/help_topics/tracker.tracking_changed_content.html.twig
+++ b/core/modules/tracker/help_topics/tracker.tracking_changed_content.html.twig
@@ -5,11 +5,14 @@ related:
   - statistics.tracking_popular_content
   - history.tracking_user_content
 ---
-{% set recent = render_var(url('tracker.page')) %}
+{% set recent_link_text %}
+{% trans %}Recent content{% endtrans %}
+{% endset %}
+{% set recent_link = render_var(help_route_link(recent_link_text, 'tracker.page')) %}
 <h2>{% trans %}What displays of recently-updated content are available?{% endtrans %}</h2>
 <p>{% trans %}Assuming that you have the core Activity Tracker module installed, these pages that show recently-updated content are available:{% endtrans %}</p>
 <ul>
-  <li>{% trans %}<a href="{{ recent }}"><em>Recent content</em></a>: Shows the content that has been most recently added, updated, or commented on.{% endtrans %}</li>
+  <li>{% trans %}{{ recent_link }}: Shows the content that has been most recently added, updated, or commented on.{% endtrans %}</li>
   <li>{% trans %}The <em>My recent content</em> tab on the <em>Recent content</em> page (for logged-in users) limits the list to content created or commented on by the user viewing the page.{% endtrans %}</li>
   <li>{% trans %}The <em>Activity</em> tab on a user profile shows the same list for the user whose profile is being viewed.{% endtrans %}</li>
 </ul>
diff --git a/core/modules/tracker/tests/src/Functional/Migrate/ReviewPageTest.php b/core/modules/tracker/tests/src/Functional/Migrate/ReviewPageTest.php
index bdf3864420..f05ba409a8 100644
--- a/core/modules/tracker/tests/src/Functional/Migrate/ReviewPageTest.php
+++ b/core/modules/tracker/tests/src/Functional/Migrate/ReviewPageTest.php
@@ -8,6 +8,7 @@
  * Tests Review page.
  *
  * @group tracker
+ * @group legacy
  */
 class ReviewPageTest extends NoMultilingualReviewPageTestBase {
 
diff --git a/core/modules/tracker/tests/src/Functional/TrackerNodeAccessTest.php b/core/modules/tracker/tests/src/Functional/TrackerNodeAccessTest.php
index e06fd4cd14..58dbd26690 100644
--- a/core/modules/tracker/tests/src/Functional/TrackerNodeAccessTest.php
+++ b/core/modules/tracker/tests/src/Functional/TrackerNodeAccessTest.php
@@ -11,6 +11,7 @@
  * Tests for private node access on /tracker.
  *
  * @group tracker
+ * @group legacy
  */
 class TrackerNodeAccessTest extends BrowserTestBase {
 
@@ -33,6 +34,9 @@ class TrackerNodeAccessTest extends BrowserTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     node_access_rebuild();
diff --git a/core/modules/tracker/tests/src/Functional/TrackerRecentContentLinkTest.php b/core/modules/tracker/tests/src/Functional/TrackerRecentContentLinkTest.php
index c704b42d16..25edbbc468 100644
--- a/core/modules/tracker/tests/src/Functional/TrackerRecentContentLinkTest.php
+++ b/core/modules/tracker/tests/src/Functional/TrackerRecentContentLinkTest.php
@@ -8,6 +8,7 @@
  * Tests recent content link.
  *
  * @group tracker
+ * @group legacy
  */
 class TrackerRecentContentLinkTest extends BrowserTestBase {
 
diff --git a/core/modules/tracker/tests/src/Functional/TrackerTest.php b/core/modules/tracker/tests/src/Functional/TrackerTest.php
index c8d9784cb2..1cb6cd8a79 100644
--- a/core/modules/tracker/tests/src/Functional/TrackerTest.php
+++ b/core/modules/tracker/tests/src/Functional/TrackerTest.php
@@ -17,6 +17,7 @@
  * Create and delete nodes and check for their display in the tracker listings.
  *
  * @group tracker
+ * @group legacy
  */
 class TrackerTest extends BrowserTestBase {
 
@@ -55,6 +56,9 @@ class TrackerTest extends BrowserTestBase {
    */
   protected $otherUser;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
@@ -483,8 +487,8 @@ public function testTrackerAdminUnpublish() {
   public function assertHistoryMetadata(int $node_id, int $node_timestamp, int $node_last_comment_timestamp, bool $library_is_present = TRUE): void {
     $settings = $this->getDrupalSettings();
     $this->assertSame($library_is_present, isset($settings['ajaxPageState']) && in_array('tracker/history', explode(',', $settings['ajaxPageState']['libraries'])), 'drupal.tracker-history library is present.');
-    $this->assertCount(1, $this->xpath('//table/tbody/tr/td[@data-history-node-id="' . $node_id . '" and @data-history-node-timestamp="' . $node_timestamp . '"]'), 'Tracker table cell contains the data-history-node-id and data-history-node-timestamp attributes for the node.');
-    $this->assertCount(1, $this->xpath('//table/tbody/tr/td[@data-history-node-last-comment-timestamp="' . $node_last_comment_timestamp . '"]'), 'Tracker table cell contains the data-history-node-last-comment-timestamp attribute for the node.');
+    $this->assertSession()->elementsCount('xpath', '//table/tbody/tr/td[@data-history-node-id="' . $node_id . '" and @data-history-node-timestamp="' . $node_timestamp . '"]', 1);
+    $this->assertSession()->elementsCount('xpath', '//table/tbody/tr/td[@data-history-node-last-comment-timestamp="' . $node_last_comment_timestamp . '"]', 1);
   }
 
 }
diff --git a/core/modules/tracker/tests/src/Kernel/Migrate/d7/MigrateTrackerNodeTest.php b/core/modules/tracker/tests/src/Kernel/Migrate/d7/MigrateTrackerNodeTest.php
index c420024466..8c165f01f5 100644
--- a/core/modules/tracker/tests/src/Kernel/Migrate/d7/MigrateTrackerNodeTest.php
+++ b/core/modules/tracker/tests/src/Kernel/Migrate/d7/MigrateTrackerNodeTest.php
@@ -8,6 +8,7 @@
  * Tests migration of tracker_node.
  *
  * @group tracker
+ * @group legacy
  */
 class MigrateTrackerNodeTest extends MigrateDrupalTestBase {
 
diff --git a/core/modules/tracker/tests/src/Kernel/Migrate/d7/MigrateTrackerSettingsTest.php b/core/modules/tracker/tests/src/Kernel/Migrate/d7/MigrateTrackerSettingsTest.php
index c740054447..48ad0da838 100644
--- a/core/modules/tracker/tests/src/Kernel/Migrate/d7/MigrateTrackerSettingsTest.php
+++ b/core/modules/tracker/tests/src/Kernel/Migrate/d7/MigrateTrackerSettingsTest.php
@@ -6,6 +6,7 @@
  * Tests migration of Tracker settings to configuration.
  *
  * @group tracker
+ * @group legacy
  */
 class MigrateTrackerSettingsTest extends MigrateDrupalTestBase {
 
diff --git a/core/modules/tracker/tests/src/Kernel/Migrate/d7/MigrateTrackerUserTest.php b/core/modules/tracker/tests/src/Kernel/Migrate/d7/MigrateTrackerUserTest.php
index c43667296b..216859b2a9 100644
--- a/core/modules/tracker/tests/src/Kernel/Migrate/d7/MigrateTrackerUserTest.php
+++ b/core/modules/tracker/tests/src/Kernel/Migrate/d7/MigrateTrackerUserTest.php
@@ -8,6 +8,7 @@
  * Tests migration of tracker_user.
  *
  * @group tracker
+ * @group legacy
  */
 class MigrateTrackerUserTest extends MigrateDrupalTestBase {
 
diff --git a/core/modules/tracker/tests/src/Kernel/Plugin/migrate/source/d7/TrackerNodeTest.php b/core/modules/tracker/tests/src/Kernel/Plugin/migrate/source/d7/TrackerNodeTest.php
index b27946257f..3762d9d125 100644
--- a/core/modules/tracker/tests/src/Kernel/Plugin/migrate/source/d7/TrackerNodeTest.php
+++ b/core/modules/tracker/tests/src/Kernel/Plugin/migrate/source/d7/TrackerNodeTest.php
@@ -10,6 +10,7 @@
  * @covers Drupal\tracker\Plugin\migrate\source\d7\TrackerNode
  *
  * @group tracker
+ * @group legacy
  */
 class TrackerNodeTest extends MigrateSqlSourceTestBase {
 
diff --git a/core/modules/tracker/tests/src/Kernel/Plugin/migrate/source/d7/TrackerUserTest.php b/core/modules/tracker/tests/src/Kernel/Plugin/migrate/source/d7/TrackerUserTest.php
index d307f8ec03..acef8b98cf 100644
--- a/core/modules/tracker/tests/src/Kernel/Plugin/migrate/source/d7/TrackerUserTest.php
+++ b/core/modules/tracker/tests/src/Kernel/Plugin/migrate/source/d7/TrackerUserTest.php
@@ -10,6 +10,7 @@
  * @covers Drupal\tracker\Plugin\migrate\source\d7\TrackerUser
  *
  * @group tracker
+ * @group legacy
  */
 class TrackerUserTest extends MigrateSqlSourceTestBase {
 
diff --git a/core/modules/tracker/tests/src/Kernel/Views/TrackerUserUidTest.php b/core/modules/tracker/tests/src/Kernel/Views/TrackerUserUidTest.php
index 7434051d52..7c29b1ae6f 100644
--- a/core/modules/tracker/tests/src/Kernel/Views/TrackerUserUidTest.php
+++ b/core/modules/tracker/tests/src/Kernel/Views/TrackerUserUidTest.php
@@ -13,6 +13,7 @@
  * Tests the tracker user uid handlers.
  *
  * @group tracker
+ * @group legacy
  */
 class TrackerUserUidTest extends KernelTestBase {
 
diff --git a/core/modules/tracker/tracker.info.yml b/core/modules/tracker/tracker.info.yml
index 4f1718f09f..e51613d009 100644
--- a/core/modules/tracker/tracker.info.yml
+++ b/core/modules/tracker/tracker.info.yml
@@ -1,6 +1,8 @@
 name: Activity Tracker
 type: module
 description: 'Enables tracking of recent content for users.'
+lifecycle: deprecated
+lifecycle_link: 'https://www.drupal.org/about/core/policies/core-change-policies/deprecated-and-obsolete-modules-and-themes#s-activity-tracker'
 dependencies:
   - drupal:node
   - drupal:comment
diff --git a/core/modules/update/tests/src/Functional/FileTransferAuthorizeFormTest.php b/core/modules/update/tests/src/Functional/FileTransferAuthorizeFormTest.php
index 20d48d93b1..3da6d527fb 100644
--- a/core/modules/update/tests/src/Functional/FileTransferAuthorizeFormTest.php
+++ b/core/modules/update/tests/src/Functional/FileTransferAuthorizeFormTest.php
@@ -21,6 +21,9 @@ class FileTransferAuthorizeFormTest extends UpdateUploaderTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $admin_user = $this->drupalCreateUser([
diff --git a/core/modules/update/tests/src/Functional/UpdateContribTest.php b/core/modules/update/tests/src/Functional/UpdateContribTest.php
index 9bf0f746c5..20a0d5eda3 100644
--- a/core/modules/update/tests/src/Functional/UpdateContribTest.php
+++ b/core/modules/update/tests/src/Functional/UpdateContribTest.php
@@ -41,6 +41,9 @@ class UpdateContribTest extends UpdateTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $admin_user = $this->drupalCreateUser(['administer site configuration']);
diff --git a/core/modules/update/tests/src/Functional/UpdateSemverTestBase.php b/core/modules/update/tests/src/Functional/UpdateSemverTestBase.php
index 5f9a969126..d5e102dd4c 100644
--- a/core/modules/update/tests/src/Functional/UpdateSemverTestBase.php
+++ b/core/modules/update/tests/src/Functional/UpdateSemverTestBase.php
@@ -37,12 +37,15 @@ abstract class UpdateSemverTestBase extends UpdateTestBase {
    */
   protected $projectTitle;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $admin_user = $this->drupalCreateUser([
       'administer site configuration',
       'view update notifications',
-      ]);
+    ]);
     $this->drupalLogin($admin_user);
     $this->drupalPlaceBlock('local_actions_block');
   }
diff --git a/core/modules/update/tests/src/Functional/UpdateUploadTest.php b/core/modules/update/tests/src/Functional/UpdateUploadTest.php
index c3212f5f56..fd2643b273 100644
--- a/core/modules/update/tests/src/Functional/UpdateUploadTest.php
+++ b/core/modules/update/tests/src/Functional/UpdateUploadTest.php
@@ -30,6 +30,9 @@ class UpdateUploadTest extends UpdateUploaderTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $admin_user = $this->drupalCreateUser([
diff --git a/core/modules/update/tests/src/Unit/Menu/UpdateLocalTasksTest.php b/core/modules/update/tests/src/Unit/Menu/UpdateLocalTasksTest.php
index 7b05601dc4..c345f3551d 100644
--- a/core/modules/update/tests/src/Unit/Menu/UpdateLocalTasksTest.php
+++ b/core/modules/update/tests/src/Unit/Menu/UpdateLocalTasksTest.php
@@ -11,6 +11,9 @@
  */
 class UpdateLocalTasksTest extends LocalTaskIntegrationTestBase {
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     $this->directoryList = ['update' => 'core/modules/update'];
     parent::setUp();
diff --git a/core/modules/update/tests/src/Unit/UpdateFetcherTest.php b/core/modules/update/tests/src/Unit/UpdateFetcherTest.php
index 2150e49a67..6dd3f9ef6b 100644
--- a/core/modules/update/tests/src/Unit/UpdateFetcherTest.php
+++ b/core/modules/update/tests/src/Unit/UpdateFetcherTest.php
@@ -91,7 +91,7 @@ protected function setUp(): void {
     $container->expects($this->any())
       ->method('get')
       ->with('logger.factory')
-      ->will($this->returnValue($logger_factory));
+      ->willReturn($logger_factory);
     \Drupal::setContainer($container);
   }
 
diff --git a/core/modules/update/update.api.php b/core/modules/update/update.api.php
index 1a6e0ef00b..18ff68f9d0 100644
--- a/core/modules/update/update.api.php
+++ b/core/modules/update/update.api.php
@@ -114,7 +114,7 @@ function hook_update_status_alter(&$projects) {
  * @param string $directory
  *   The directory that the archive was extracted into.
  *
- * @return
+ * @return array
  *   If there are any problems, return an array of error messages. If there are
  *   no problems, return an empty array.
  *
diff --git a/core/modules/update/update.compare.inc b/core/modules/update/update.compare.inc
index 7f4033bae4..8f134037c9 100644
--- a/core/modules/update/update.compare.inc
+++ b/core/modules/update/update.compare.inc
@@ -77,7 +77,7 @@ function update_process_project_info(&$projects) {
  * @param array $available
  *   Data about available project releases.
  *
- * @return
+ * @return array
  *   An array of installed projects with current update status information.
  *
  * @see update_get_available()
diff --git a/core/modules/update/update.install b/core/modules/update/update.install
index ed845df6fd..f3b9e64f1a 100644
--- a/core/modules/update/update.install
+++ b/core/modules/update/update.install
@@ -101,7 +101,7 @@ function update_uninstall() {
  * @param $type
  *   What kind of project this is ('core' or 'contrib').
  *
- * @return
+ * @return array
  *   An array to be included in the nested $requirements array.
  *
  * @see hook_requirements()
diff --git a/core/modules/update/update.manager.inc b/core/modules/update/update.manager.inc
index 7895b55990..0de8675ad1 100644
--- a/core/modules/update/update.manager.inc
+++ b/core/modules/update/update.manager.inc
@@ -79,7 +79,7 @@ function update_manager_download_batch_finished($success, $results) {
  *   The update manager operation we're in the middle of. Can be either 'update'
  *   or 'install'. Use to provide operation-specific interface text.
  *
- * @return
+ * @return bool
  *   TRUE if the update manager should continue to the next step in the
  *   workflow, or FALSE if we've hit a fatal configuration and must halt the
  *   workflow.
@@ -307,7 +307,7 @@ function update_manager_batch_project_get($project, $url, &$context) {
  * it. However, it is supported here because it is a common configuration on
  * shared hosting, and there is nothing Drupal can do to prevent it.
  *
- * @return
+ * @return bool
  *   TRUE if local file transfers are allowed on this server, or FALSE if not.
  *
  * @see install_check_requirements()
diff --git a/core/modules/update/update.module b/core/modules/update/update.module
index 84e02d9718..4e24834e43 100644
--- a/core/modules/update/update.module
+++ b/core/modules/update/update.module
@@ -131,7 +131,7 @@ function update_page_top() {
  * It both enforces the 'administer software updates' permission and the global
  * kill switch for the authorize.php script.
  *
- * @return
+ * @return bool
  *   TRUE if the current user can access the updater menu items; FALSE
  *   otherwise.
  */
@@ -268,7 +268,7 @@ function _update_no_data() {
  *   (optional) Boolean to indicate if this method should refresh automatically
  *   if there's no data. Defaults to FALSE.
  *
- * @return
+ * @return array
  *   Array of data about available releases, keyed by project shortname.
  *
  * @see update_refresh()
@@ -429,7 +429,7 @@ function update_mail($key, &$message, $params) {
  * @param $langcode
  *   (optional) A language code to use. Defaults to NULL.
  *
- * @return
+ * @return \Drupal\Core\StringTranslation\TranslatableMarkup
  *   The properly translated error message for the given key.
  */
 function _update_message_text($msg_type, $msg_reason, $langcode = NULL) {
@@ -604,7 +604,7 @@ function update_storage_clear() {
 /**
  * Returns a short unique identifier for this Drupal installation.
  *
- * @return
+ * @return string
  *   An eight character string uniquely identifying this Drupal installation.
  */
 function _update_manager_unique_identifier() {
@@ -622,7 +622,7 @@ function _update_manager_unique_identifier() {
  *   (optional) Whether to attempt to create the directory if it does not
  *   already exist. Defaults to TRUE.
  *
- * @return
+ * @return string
  *   The full path to the temporary directory where update file archives should
  *   be extracted.
  */
@@ -644,7 +644,7 @@ function _update_manager_extract_directory($create = TRUE) {
  *   (optional) Whether to attempt to create the directory if it does not
  *   already exist. Defaults to TRUE.
  *
- * @return
+ * @return string
  *   The full path to the temporary directory where update file archives should
  *   be cached.
  */
diff --git a/core/modules/user/config/schema/user.schema.yml b/core/modules/user/config/schema/user.schema.yml
index 2f9bda44f2..99285373c3 100644
--- a/core/modules/user/config/schema/user.schema.yml
+++ b/core/modules/user/config/schema/user.schema.yml
@@ -52,36 +52,36 @@ user.settings:
       label: 'Enable password strength indicator'
 
 user.mail:
- type: config_object
- label: 'Email settings'
- mapping:
-  cancel_confirm:
-    type: mail
-    label: 'Account cancellation confirmation'
-  password_reset:
-    type: mail
-    label: 'Password recovery'
-  register_admin_created:
-    type: mail
-    label: 'Account created by administrator'
-  register_no_approval_required:
-    type: mail
-    label: 'Registration confirmation (No approval required)'
-  register_pending_approval:
-    type: mail
-    label: 'Registration confirmation (Pending approval)'
-  register_pending_approval_admin:
-    type: mail
-    label: 'Admin (user awaiting approval)'
-  status_activated:
-    type: mail
-    label: 'Account activation'
-  status_blocked:
-    type: mail
-    label: 'Account blocked'
-  status_canceled:
-    type: mail
-    label: 'Account cancelled'
+  type: config_object
+  label: 'Email settings'
+  mapping:
+    cancel_confirm:
+      type: mail
+      label: 'Account cancellation confirmation'
+    password_reset:
+      type: mail
+      label: 'Password recovery'
+    register_admin_created:
+      type: mail
+      label: 'Account created by administrator'
+    register_no_approval_required:
+      type: mail
+      label: 'Registration confirmation (No approval required)'
+    register_pending_approval:
+      type: mail
+      label: 'Registration confirmation (Pending approval)'
+    register_pending_approval_admin:
+      type: mail
+      label: 'Admin (user awaiting approval)'
+    status_activated:
+      type: mail
+      label: 'Account activation'
+    status_blocked:
+      type: mail
+      label: 'Account blocked'
+    status_canceled:
+      type: mail
+      label: 'Account cancelled'
 
 user.flood:
   type: config_object
diff --git a/core/modules/user/migrations/d7_user_mail.yml b/core/modules/user/migrations/d7_user_mail.yml
index d7b25149ce..c9209e1acc 100644
--- a/core/modules/user/migrations/d7_user_mail.yml
+++ b/core/modules/user/migrations/d7_user_mail.yml
@@ -22,20 +22,20 @@ source:
     - user_mail_status_blocked_body
   source_module: user
 process:
-   'status_activated/subject': user_mail_status_activated_subject
-   'status_activated/body': user_mail_status_activated_body
-   'password_reset/subject': user_mail_password_reset_subject
-   'password_reset/body': user_mail_password_reset_body
-   'cancel_confirm/subject': user_mail_status_canceled_subject
-   'cancel_confirm/body': user_mail_status_canceled_body
-   'register_admin_created/subject': user_mail_register_admin_created_subject
-   'register_admin_created/body': user_mail_register_admin_created_body
-   'register_no_approval_required/subject': user_mail_register_no_approval_required_subject
-   'register_no_approval_required/body': user_mail_register_no_approval_required_body
-   'register_pending_approval/subject': user_mail_register_pending_approval_subject
-   'register_pending_approval/body': user_mail_register_pending_approval_body
-   'status_blocked/subject': user_mail_status_blocked_subject
-   'status_blocked/body': user_mail_status_blocked_body
+  'status_activated/subject': user_mail_status_activated_subject
+  'status_activated/body': user_mail_status_activated_body
+  'password_reset/subject': user_mail_password_reset_subject
+  'password_reset/body': user_mail_password_reset_body
+  'cancel_confirm/subject': user_mail_status_canceled_subject
+  'cancel_confirm/body': user_mail_status_canceled_body
+  'register_admin_created/subject': user_mail_register_admin_created_subject
+  'register_admin_created/body': user_mail_register_admin_created_body
+  'register_no_approval_required/subject': user_mail_register_no_approval_required_subject
+  'register_no_approval_required/body': user_mail_register_no_approval_required_body
+  'register_pending_approval/subject': user_mail_register_pending_approval_subject
+  'register_pending_approval/body': user_mail_register_pending_approval_body
+  'status_blocked/subject': user_mail_status_blocked_subject
+  'status_blocked/body': user_mail_status_blocked_body
 destination:
   plugin: config
   config_name: user.mail
diff --git a/core/modules/user/src/AccountForm.php b/core/modules/user/src/AccountForm.php
index b157be34d0..c74619fddc 100644
--- a/core/modules/user/src/AccountForm.php
+++ b/core/modules/user/src/AccountForm.php
@@ -96,7 +96,7 @@ public function form(array $form, FormStateInterface $form_state) {
     $form['account']['mail'] = [
       '#type' => 'email',
       '#title' => $this->t('Email address'),
-      '#description' => $this->t('A valid email address. All emails from the system will be sent to this address. The email address is not made public and will only be used if you wish to receive a new password or wish to receive certain news or notifications by email.'),
+      '#description' => $this->t('The email address is not made public. It will only be used if you need to be contacted about your account or for opted-in notifications.'),
       '#required' => !(!$account->getEmail() && $user->hasPermission('administer users')),
       '#default_value' => (!$register ? $account->getEmail() : ''),
     ];
diff --git a/core/modules/user/src/Controller/UserController.php b/core/modules/user/src/Controller/UserController.php
index ca40039816..625969e295 100644
--- a/core/modules/user/src/Controller/UserController.php
+++ b/core/modules/user/src/Controller/UserController.php
@@ -283,8 +283,7 @@ public function userPage() {
    * Redirects users to their profile edit page.
    *
    * This controller assumes that it is only invoked for authenticated users.
-   * This is enforced for the 'user.well-known.change_password' route with the
-   * '_user_is_logged_in' requirement.
+   * This is typically enforced with the '_user_is_logged_in' requirement.
    *
    * @return \Symfony\Component\HttpFoundation\RedirectResponse
    *   Returns a redirect to the profile edit form of the currently logged in
diff --git a/core/modules/user/src/Plugin/Action/ChangeUserRoleBase.php b/core/modules/user/src/Plugin/Action/ChangeUserRoleBase.php
index e496e1f9fa..43dd5b30a6 100644
--- a/core/modules/user/src/Plugin/Action/ChangeUserRoleBase.php
+++ b/core/modules/user/src/Plugin/Action/ChangeUserRoleBase.php
@@ -62,7 +62,7 @@ public function buildConfigurationForm(array $form, FormStateInterface $form_sta
     unset($roles[RoleInterface::AUTHENTICATED_ID]);
     $form['rid'] = [
       '#type' => 'radios',
-      '#title' => t('Role'),
+      '#title' => $this->t('Role'),
       '#options' => $roles,
       '#default_value' => $this->configuration['rid'],
       '#required' => TRUE,
diff --git a/core/modules/user/tests/src/Functional/Rest/UserResourceTestBase.php b/core/modules/user/tests/src/Functional/Rest/UserResourceTestBase.php
index 3b01a626a9..88d6d7532d 100644
--- a/core/modules/user/tests/src/Functional/Rest/UserResourceTestBase.php
+++ b/core/modules/user/tests/src/Functional/Rest/UserResourceTestBase.php
@@ -288,12 +288,12 @@ public function testPatchSecurityOtherUser() {
 
     // Try changing user 1's email.
     $user1 = [
-        'mail' => [['value' => 'another_email_address@example.com']],
-        'uid' => [['value' => 1]],
-        'name' => [['value' => 'another_user_name']],
-        'pass' => [['existing' => $this->account->passRaw]],
-        'uuid' => [['value' => '2e9403a4-d8af-4096-a116-624710140be0']],
-      ] + $original_normalization;
+      'mail' => [['value' => 'another_email_address@example.com']],
+      'uid' => [['value' => 1]],
+      'name' => [['value' => 'another_user_name']],
+      'pass' => [['existing' => $this->account->passRaw]],
+      'uuid' => [['value' => '2e9403a4-d8af-4096-a116-624710140be0']],
+    ] + $original_normalization;
     $request_options[RequestOptions::BODY] = $this->serializer->encode($user1, static::$format);
     $response = $this->request('PATCH', $url, $request_options);
     // Ensure the email address has not changed.
diff --git a/core/modules/user/tests/src/Functional/UserAdminLanguageTest.php b/core/modules/user/tests/src/Functional/UserAdminLanguageTest.php
index 04810597eb..2b29e802e5 100644
--- a/core/modules/user/tests/src/Functional/UserAdminLanguageTest.php
+++ b/core/modules/user/tests/src/Functional/UserAdminLanguageTest.php
@@ -38,6 +38,9 @@ class UserAdminLanguageTest extends BrowserTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     // User to add and remove language.
diff --git a/core/modules/user/tests/src/Functional/UserAdminTest.php b/core/modules/user/tests/src/Functional/UserAdminTest.php
index 8fedf64f7c..32f9673b72 100644
--- a/core/modules/user/tests/src/Functional/UserAdminTest.php
+++ b/core/modules/user/tests/src/Functional/UserAdminTest.php
@@ -125,10 +125,10 @@ public function testUserAdmin() {
       ->set('notify.status_blocked', TRUE)
       ->save();
     $this->drupalGet('admin/people', [
-    // Sort the table by username so that we know reliably which user will be
-    // targeted with the blocking action.
-    'query' => ['order' => 'name', 'sort' => 'asc'],
-]);
+      // Sort the table by username so that we know reliably which user will be
+      // targeted with the blocking action.
+      'query' => ['order' => 'name', 'sort' => 'asc'],
+    ]);
     $this->submitForm($edit, 'Apply to selected items');
     $site_name = $this->config('system.site')->get('name');
     $this->assertMailString('body', 'Your account on ' . $site_name . ' has been blocked.', 1, 'Blocked message found in the mail sent to user C.');
@@ -147,10 +147,10 @@ public function testUserAdmin() {
     $editunblock['action'] = 'user_unblock_user_action';
     $editunblock['user_bulk_form[4]'] = TRUE;
     $this->drupalGet('admin/people', [
-    // Sort the table by username so that we know reliably which user will be
-    // targeted with the blocking action.
-    'query' => ['order' => 'name', 'sort' => 'asc'],
-]);
+      // Sort the table by username so that we know reliably which user will be
+      // targeted with the blocking action.
+      'query' => ['order' => 'name', 'sort' => 'asc'],
+    ]);
     $this->submitForm($editunblock, 'Apply to selected items');
     $user_storage->resetCache([$user_c->id()]);
     $account = $user_storage->load($user_c->id());
diff --git a/core/modules/user/tests/src/Functional/UserBlocksTest.php b/core/modules/user/tests/src/Functional/UserBlocksTest.php
index b89a6ff67f..59f96ffa6a 100644
--- a/core/modules/user/tests/src/Functional/UserBlocksTest.php
+++ b/core/modules/user/tests/src/Functional/UserBlocksTest.php
@@ -32,6 +32,9 @@ class UserBlocksTest extends BrowserTestBase {
    */
   protected $adminUser;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/user/tests/src/Functional/UserCancelTest.php b/core/modules/user/tests/src/Functional/UserCancelTest.php
index 57b703e40d..d9a2f709e6 100644
--- a/core/modules/user/tests/src/Functional/UserCancelTest.php
+++ b/core/modules/user/tests/src/Functional/UserCancelTest.php
@@ -32,6 +32,9 @@ class UserCancelTest extends BrowserTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/user/tests/src/Functional/UserPermissionsTest.php b/core/modules/user/tests/src/Functional/UserPermissionsTest.php
index 2365050371..1c5be8689d 100644
--- a/core/modules/user/tests/src/Functional/UserPermissionsTest.php
+++ b/core/modules/user/tests/src/Functional/UserPermissionsTest.php
@@ -33,6 +33,9 @@ class UserPermissionsTest extends BrowserTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
@@ -253,16 +256,18 @@ public function testAccessModulePermission() {
   public function testAccessBundlePermission() {
     $this->drupalLogin($this->adminUser);
 
-    \Drupal::service('module_installer')->install(['block_content', 'taxonomy']);
-    $this->grantPermissions(Role::load($this->rid), ['administer blocks', 'administer taxonomy']);
+    \Drupal::service('module_installer')->install(['contact', 'taxonomy']);
+    $this->grantPermissions(Role::load($this->rid), ['administer contact forms', 'administer taxonomy']);
 
     // Bundles that do not have permissions have no permissions pages.
     $edit = [];
-    $edit['label'] = 'Test block type';
-    $edit['id'] = 'test_block_type';
-    $this->drupalGet('admin/structure/block/block-content/types/add');
+    $edit['label'] = 'Test contact type';
+    $edit['id'] = 'test_contact_type';
+    $edit['recipients'] = 'webmaster@example.com';
+    $this->drupalGet('admin/structure/contact/add');
     $this->submitForm($edit, 'Save');
-    $this->drupalGet('admin/structure/block/block-content/manage/test_block_type/permissions');
+    $this->assertSession()->pageTextContains('Contact form ' . $edit['label'] . ' has been added.');
+    $this->drupalGet('admin/structure/contact/manage/test_contact_type/permissions');
     $this->assertSession()->statusCodeEquals(403);
 
     // Permissions can be changed using the bundle-specific pages.
@@ -287,7 +292,7 @@ public function testAccessBundlePermission() {
     $this->drupalLogout();
     $this->drupalGet('admin/structure/taxonomy/manage/test_vocabulary/overview/permissions');
     $this->assertSession()->statusCodeEquals(403);
-    $this->drupalGet('admin/structure/block/block-content/manage/test_block_type/permissions');
+    $this->drupalGet('admin/structure/contact/manage/test_contact_type/permissions');
     $this->assertSession()->statusCodeEquals(403);
   }
 
diff --git a/core/modules/user/tests/src/Functional/UserPictureTest.php b/core/modules/user/tests/src/Functional/UserPictureTest.php
index dd8c634421..c3ac3399a2 100644
--- a/core/modules/user/tests/src/Functional/UserPictureTest.php
+++ b/core/modules/user/tests/src/Functional/UserPictureTest.php
@@ -43,6 +43,9 @@ class UserPictureTest extends BrowserTestBase {
    */
   protected $webUser;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/user/tests/src/Functional/UserRolesAssignmentTest.php b/core/modules/user/tests/src/Functional/UserRolesAssignmentTest.php
index 208f00bf98..3a842409ef 100644
--- a/core/modules/user/tests/src/Functional/UserRolesAssignmentTest.php
+++ b/core/modules/user/tests/src/Functional/UserRolesAssignmentTest.php
@@ -11,6 +11,9 @@
  */
 class UserRolesAssignmentTest extends BrowserTestBase {
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $admin_user = $this->drupalCreateUser([
diff --git a/core/modules/user/tests/src/Functional/UserTranslationUITest.php b/core/modules/user/tests/src/Functional/UserTranslationUITest.php
index 4b0c70f439..a1220381cc 100644
--- a/core/modules/user/tests/src/Functional/UserTranslationUITest.php
+++ b/core/modules/user/tests/src/Functional/UserTranslationUITest.php
@@ -46,6 +46,9 @@ class UserTranslationUITest extends ContentTranslationUITestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     $this->entityTypeId = 'user';
     $this->testLanguageSelector = FALSE;
diff --git a/core/modules/user/tests/src/Functional/Views/FilterPermissionUiTest.php b/core/modules/user/tests/src/Functional/Views/FilterPermissionUiTest.php
index 9a02687c52..fd68980987 100644
--- a/core/modules/user/tests/src/Functional/Views/FilterPermissionUiTest.php
+++ b/core/modules/user/tests/src/Functional/Views/FilterPermissionUiTest.php
@@ -31,6 +31,9 @@ class FilterPermissionUiTest extends ViewTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp($import_test_views = TRUE, $modules = ['user_test_views']): void {
     parent::setUp($import_test_views, $modules);
 
diff --git a/core/modules/user/tests/src/Functional/Views/HandlerFilterUserNameTest.php b/core/modules/user/tests/src/Functional/Views/HandlerFilterUserNameTest.php
index ab365cde59..5fddb8a906 100644
--- a/core/modules/user/tests/src/Functional/Views/HandlerFilterUserNameTest.php
+++ b/core/modules/user/tests/src/Functional/Views/HandlerFilterUserNameTest.php
@@ -55,6 +55,9 @@ class HandlerFilterUserNameTest extends ViewTestBase {
     'uid' => 'uid',
   ];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp($import_test_views = TRUE, $modules = ['user_test_views']): void {
     parent::setUp($import_test_views, $modules);
 
diff --git a/core/modules/user/tests/src/Functional/Views/UserChangedTest.php b/core/modules/user/tests/src/Functional/Views/UserChangedTest.php
index ae9ebdd972..64beb93b4a 100644
--- a/core/modules/user/tests/src/Functional/Views/UserChangedTest.php
+++ b/core/modules/user/tests/src/Functional/Views/UserChangedTest.php
@@ -30,6 +30,9 @@ class UserChangedTest extends ViewTestBase {
    */
   public static $testViews = ['test_user_changed'];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp($import_test_views = TRUE, $modules = ['user_test_views']): void {
     parent::setUp($import_test_views, $modules);
 
diff --git a/core/modules/user/tests/src/Functional/Views/UserFieldsAccessChangeTest.php b/core/modules/user/tests/src/Functional/Views/UserFieldsAccessChangeTest.php
index beeb2fba7a..d96e945217 100644
--- a/core/modules/user/tests/src/Functional/Views/UserFieldsAccessChangeTest.php
+++ b/core/modules/user/tests/src/Functional/Views/UserFieldsAccessChangeTest.php
@@ -70,15 +70,13 @@ public function testUserNameLink() {
     // No access, so no link.
     $this->drupalGet('test_user_fields_access');
     $this->assertSession()->pageTextContains($test_user->getAccountName());
-    $result = $this->xpath($xpath);
-    $this->assertCount(0, $result, 'User is not a link');
+    $this->assertSession()->elementNotExists('xpath', $xpath);
 
     // Assign sub-admin role to grant extra access.
     $user = $this->drupalCreateUser(['sub-admin']);
     $this->drupalLogin($user);
     $this->drupalGet('test_user_fields_access');
-    $result = $this->xpath($xpath);
-    $this->assertCount(1, $result, 'User is a link');
+    $this->assertSession()->elementsCount('xpath', $xpath, 1);
   }
 
 }
diff --git a/core/modules/user/tests/src/Functional/Views/UserTestBase.php b/core/modules/user/tests/src/Functional/Views/UserTestBase.php
index 3b3a8a9008..4cacda4bf4 100644
--- a/core/modules/user/tests/src/Functional/Views/UserTestBase.php
+++ b/core/modules/user/tests/src/Functional/Views/UserTestBase.php
@@ -31,6 +31,9 @@ abstract class UserTestBase extends ViewTestBase {
    */
   protected $nodes = [];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp($import_test_views = TRUE, $modules = ['user_test_views']): void {
     parent::setUp($import_test_views, $modules);
 
diff --git a/core/modules/user/tests/src/Kernel/Controller/UserControllerTest.php b/core/modules/user/tests/src/Kernel/Controller/UserControllerTest.php
new file mode 100644
index 0000000000..942a9f5b9a
--- /dev/null
+++ b/core/modules/user/tests/src/Kernel/Controller/UserControllerTest.php
@@ -0,0 +1,76 @@
+<?php
+
+namespace Drupal\Tests\user\Kernel\Controller;
+
+use Drupal\Core\Url;
+use Drupal\KernelTests\KernelTestBase;
+use Drupal\Tests\user\Traits\UserCreationTrait;
+use Drupal\user\Controller\UserController;
+
+/**
+ * Tests for the User controller.
+ *
+ * @group user
+ *
+ * @coversDefaultClass \Drupal\user\Controller\UserController
+ */
+class UserControllerTest extends KernelTestBase {
+
+  use UserCreationTrait;
+
+  /**
+   * The user controller.
+   *
+   * @var \Drupal\user\Controller\UserController
+   */
+  protected $userController;
+
+  /**
+   * The logged in user.
+   *
+   * @var \Drupal\user\UserInterface
+   */
+  protected $user;
+
+  /**
+   * {@inheritdoc}
+   */
+  protected static $modules = [
+    'user',
+  ];
+
+  /**
+   * {@inheritDoc}
+   */
+  protected function setUp(): void {
+
+    parent::setUp();
+
+    $this->userController = UserController::create(\Drupal::getContainer());
+
+    // Create and log in a user.
+    $this->user = $this->setUpCurrentUser();
+
+  }
+
+  /**
+   * Tests the redirection to a user edit page.
+   *
+   * @covers ::userEditPage
+   */
+  public function testUserEditPage() {
+
+    $response = $this->userController->userEditPage();
+
+    // Ensure the response is directed to the correct user edit page.
+    $edit_url = Url::fromRoute('entity.user.edit_form', [
+      'user' => $this->user->id(),
+    ])->setAbsolute()
+      ->toString();
+    $this->assertEquals($edit_url, $response->getTargetUrl());
+
+    $this->assertEquals(301, $response->getStatusCode());
+
+  }
+
+}
diff --git a/core/modules/user/tests/src/Kernel/Migrate/d7/MigrateUserRoleTest.php b/core/modules/user/tests/src/Kernel/Migrate/d7/MigrateUserRoleTest.php
index a4012f8a05..2d1e2c63ff 100644
--- a/core/modules/user/tests/src/Kernel/Migrate/d7/MigrateUserRoleTest.php
+++ b/core/modules/user/tests/src/Kernel/Migrate/d7/MigrateUserRoleTest.php
@@ -134,9 +134,7 @@ public function testUserRole() {
       'access comments',
       'access content overview',
       'access contextual links',
-      'access dashboard',
       'access news feeds',
-      'access overlay',
       'access printer-friendly version',
       'access site-wide contact form',
       'access statistics',
@@ -149,6 +147,7 @@ public function testUserRole() {
       'administer comments',
       'administer contact forms',
       'administer content types',
+      'administer fields',
       'administer filters',
       'administer forums',
       'administer image styles',
diff --git a/core/modules/user/tests/src/Kernel/Plugin/migrate/source/ProfileFieldTest.php b/core/modules/user/tests/src/Kernel/Plugin/migrate/source/ProfileFieldTest.php
index 1f29505a5a..9dc0c72ea3 100644
--- a/core/modules/user/tests/src/Kernel/Plugin/migrate/source/ProfileFieldTest.php
+++ b/core/modules/user/tests/src/Kernel/Plugin/migrate/source/ProfileFieldTest.php
@@ -25,7 +25,7 @@ public function providerSource() {
       [
         'source_data' => [],
         'expected_data' => [],
-       ],
+      ],
     ];
 
     $profile_fields = [
diff --git a/core/modules/user/tests/src/Kernel/UserRoleDeleteTest.php b/core/modules/user/tests/src/Kernel/UserRoleDeleteTest.php
index 48128b0e69..7fa680f62e 100644
--- a/core/modules/user/tests/src/Kernel/UserRoleDeleteTest.php
+++ b/core/modules/user/tests/src/Kernel/UserRoleDeleteTest.php
@@ -22,6 +22,9 @@ class UserRoleDeleteTest extends KernelTestBase {
    */
   protected static $modules = ['system', 'user', 'field'];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->installEntitySchema('user');
diff --git a/core/modules/user/tests/src/Kernel/UserSaveStatusTest.php b/core/modules/user/tests/src/Kernel/UserSaveStatusTest.php
index 8432a8da02..987039f26a 100644
--- a/core/modules/user/tests/src/Kernel/UserSaveStatusTest.php
+++ b/core/modules/user/tests/src/Kernel/UserSaveStatusTest.php
@@ -19,6 +19,9 @@ class UserSaveStatusTest extends KernelTestBase {
    */
   protected static $modules = ['system', 'user', 'field'];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->installEntitySchema('user');
diff --git a/core/modules/user/tests/src/Kernel/Views/UserKernelTestBase.php b/core/modules/user/tests/src/Kernel/Views/UserKernelTestBase.php
index 80e625eee6..1cefe22bd7 100644
--- a/core/modules/user/tests/src/Kernel/Views/UserKernelTestBase.php
+++ b/core/modules/user/tests/src/Kernel/Views/UserKernelTestBase.php
@@ -38,6 +38,9 @@ abstract class UserKernelTestBase extends ViewsKernelTestBase {
    */
   protected $userStorage;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp($import_test_views = TRUE): void {
     parent::setUp();
 
diff --git a/core/modules/user/tests/src/Unit/Menu/UserLocalTasksTest.php b/core/modules/user/tests/src/Unit/Menu/UserLocalTasksTest.php
index 88a167d24c..a6dc74eb84 100644
--- a/core/modules/user/tests/src/Unit/Menu/UserLocalTasksTest.php
+++ b/core/modules/user/tests/src/Unit/Menu/UserLocalTasksTest.php
@@ -12,6 +12,9 @@
  */
 class UserLocalTasksTest extends LocalTaskIntegrationTestBase {
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     $this->directoryList = ['user' => 'core/modules/user'];
     parent::setUp();
@@ -20,7 +23,7 @@ protected function setUp(): void {
     $entity_type_manager = $this->createMock(EntityTypeManagerInterface::class);
     $entity_type_manager->expects($this->any())
       ->method('getDefinitions')
-      ->will($this->returnValue([]));
+      ->willReturn([]);
     $this->container->set('entity_type.manager', $entity_type_manager);
     $this->container->set('string_translation', $this->getStringTranslationStub());
   }
diff --git a/core/modules/user/tests/src/Unit/Plugin/Action/AddRoleUserTest.php b/core/modules/user/tests/src/Unit/Plugin/Action/AddRoleUserTest.php
index 1f460517da..a2c91e3027 100644
--- a/core/modules/user/tests/src/Unit/Plugin/Action/AddRoleUserTest.php
+++ b/core/modules/user/tests/src/Unit/Plugin/Action/AddRoleUserTest.php
@@ -20,7 +20,7 @@ public function testExecuteAddExistingRole() {
     $this->account->expects($this->any())
       ->method('hasRole')
       ->with($this->equalTo('test_role_1'))
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $config = ['rid' => 'test_role_1'];
     $add_role_plugin = new AddRoleUser($config, 'user_add_role_action', ['type' => 'user'], $this->userRoleEntityType);
@@ -38,7 +38,7 @@ public function testExecuteAddNonExistingRole() {
     $this->account->expects($this->any())
       ->method('hasRole')
       ->with($this->equalTo('test_role_1'))
-      ->will($this->returnValue(FALSE));
+      ->willReturn(FALSE);
 
     $config = ['rid' => 'test_role_1'];
     $add_role_plugin = new AddRoleUser($config, 'user_add_role_action', ['type' => 'user'], $this->userRoleEntityType);
diff --git a/core/modules/user/tests/src/Unit/Plugin/Action/RemoveRoleUserTest.php b/core/modules/user/tests/src/Unit/Plugin/Action/RemoveRoleUserTest.php
index 878b4baad2..476afe94d3 100644
--- a/core/modules/user/tests/src/Unit/Plugin/Action/RemoveRoleUserTest.php
+++ b/core/modules/user/tests/src/Unit/Plugin/Action/RemoveRoleUserTest.php
@@ -20,7 +20,7 @@ public function testExecuteRemoveExistingRole() {
     $this->account->expects($this->any())
       ->method('hasRole')
       ->with($this->equalTo('test_role_1'))
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $config = ['rid' => 'test_role_1'];
     $remove_role_plugin = new RemoveRoleUser($config, 'user_remove_role_action', ['type' => 'user'], $this->userRoleEntityType);
@@ -38,7 +38,7 @@ public function testExecuteRemoveNonExistingRole() {
     $this->account->expects($this->any())
       ->method('hasRole')
       ->with($this->equalTo('test_role_1'))
-      ->will($this->returnValue(FALSE));
+      ->willReturn(FALSE);
 
     $config = ['rid' => 'test_role_1'];
     $remove_role_plugin = new RemoveRoleUser($config, 'user_remove_role_action', ['type' => 'user'], $this->userRoleEntityType);
diff --git a/core/modules/user/tests/src/Unit/Plugin/Core/Entity/UserTest.php b/core/modules/user/tests/src/Unit/Plugin/Core/Entity/UserTest.php
index 966276bc42..f96d126e68 100644
--- a/core/modules/user/tests/src/Unit/Plugin/Core/Entity/UserTest.php
+++ b/core/modules/user/tests/src/Unit/Plugin/Core/Entity/UserTest.php
@@ -22,7 +22,7 @@ protected function createUserSession(array $rids = [], $authenticated = FALSE) {
     $user->expects($this->any())
       ->method('id')
       // @todo Also test the uid = 1 handling.
-      ->will($this->returnValue($authenticated ? 2 : 0));
+      ->willReturn($authenticated ? 2 : 0);
     $roles = [];
     foreach ($rids as $rid) {
       $roles[] = (object) [
@@ -32,7 +32,7 @@ protected function createUserSession(array $rids = [], $authenticated = FALSE) {
     $user->expects($this->any())
       ->method('get')
       ->with('roles')
-      ->will($this->returnValue($roles));
+      ->willReturn($roles);
     return $user;
   }
 
diff --git a/core/modules/user/tests/src/Unit/Plugin/Derivative/UserLocalTaskTest.php b/core/modules/user/tests/src/Unit/Plugin/Derivative/UserLocalTaskTest.php
index ac4902d852..654aa92b50 100644
--- a/core/modules/user/tests/src/Unit/Plugin/Derivative/UserLocalTaskTest.php
+++ b/core/modules/user/tests/src/Unit/Plugin/Derivative/UserLocalTaskTest.php
@@ -22,6 +22,9 @@ class UserLocalTaskTest extends UnitTestCase {
    */
   protected $deriver;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/user/tests/src/Unit/Plugin/views/field/UserBulkFormTest.php b/core/modules/user/tests/src/Unit/Plugin/views/field/UserBulkFormTest.php
index cdd6ec685b..c530ad7966 100644
--- a/core/modules/user/tests/src/Unit/Plugin/views/field/UserBulkFormTest.php
+++ b/core/modules/user/tests/src/Unit/Plugin/views/field/UserBulkFormTest.php
@@ -33,26 +33,26 @@ public function testConstructor() {
       $action = $this->createMock('\Drupal\system\ActionConfigEntityInterface');
       $action->expects($this->any())
         ->method('getType')
-        ->will($this->returnValue('user'));
+        ->willReturn('user');
       $actions[$i] = $action;
     }
 
     $action = $this->createMock('\Drupal\system\ActionConfigEntityInterface');
     $action->expects($this->any())
       ->method('getType')
-      ->will($this->returnValue('node'));
+      ->willReturn('node');
     $actions[] = $action;
 
     $entity_storage = $this->createMock('Drupal\Core\Entity\EntityStorageInterface');
     $entity_storage->expects($this->any())
       ->method('loadMultiple')
-      ->will($this->returnValue($actions));
+      ->willReturn($actions);
 
     $entity_type_manager = $this->createMock(EntityTypeManagerInterface::class);
     $entity_type_manager->expects($this->once())
       ->method('getStorage')
       ->with('action')
-      ->will($this->returnValue($entity_storage));
+      ->willReturn($entity_storage);
 
     $entity_repository = $this->createMock(EntityRepositoryInterface::class);
 
@@ -66,7 +66,7 @@ public function testConstructor() {
     $views_data->expects($this->any())
       ->method('get')
       ->with('users')
-      ->will($this->returnValue(['table' => ['entity type' => 'user']]));
+      ->willReturn(['table' => ['entity type' => 'user']]);
     $container = new ContainerBuilder();
     $container->set('views.views_data', $views_data);
     $container->set('string_translation', $this->getStringTranslationStub());
@@ -76,7 +76,7 @@ public function testConstructor() {
     $storage->expects($this->any())
       ->method('get')
       ->with('base_table')
-      ->will($this->returnValue('users'));
+      ->willReturn('users');
 
     $executable = $this->getMockBuilder('Drupal\views\ViewExecutable')
       ->disableOriginalConstructor()
diff --git a/core/modules/user/tests/src/Unit/UserAccessControlHandlerTest.php b/core/modules/user/tests/src/Unit/UserAccessControlHandlerTest.php
index 0fea2899a1..333d7bcff3 100644
--- a/core/modules/user/tests/src/Unit/UserAccessControlHandlerTest.php
+++ b/core/modules/user/tests/src/Unit/UserAccessControlHandlerTest.php
@@ -77,11 +77,11 @@ protected function setUp(): void {
     $this->viewer
       ->expects($this->any())
       ->method('hasPermission')
-      ->will($this->returnValue(FALSE));
+      ->willReturn(FALSE);
     $this->viewer
       ->expects($this->any())
       ->method('id')
-      ->will($this->returnValue(1));
+      ->willReturn(1);
 
     $this->owner = $this->createMock('\Drupal\Core\Session\AccountInterface');
     $this->owner
@@ -95,13 +95,13 @@ protected function setUp(): void {
     $this->owner
       ->expects($this->any())
       ->method('id')
-      ->will($this->returnValue(2));
+      ->willReturn(2);
 
     $this->admin = $this->createMock('\Drupal\Core\Session\AccountInterface');
     $this->admin
       ->expects($this->any())
       ->method('hasPermission')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $this->emailViewer = $this->createMock('\Drupal\Core\Session\AccountInterface');
     $this->emailViewer
@@ -113,7 +113,7 @@ protected function setUp(): void {
     $this->emailViewer
       ->expects($this->any())
       ->method('id')
-      ->will($this->returnValue(3));
+      ->willReturn(3);
 
     $entity_type = $this->createMock('Drupal\Core\Entity\EntityTypeInterface');
 
@@ -127,7 +127,7 @@ protected function setUp(): void {
     $this->items
       ->expects($this->any())
       ->method('defaultAccess')
-      ->will($this->returnValue(AccessResult::allowed()));
+      ->willReturn(AccessResult::allowed());
   }
 
   /**
@@ -139,12 +139,12 @@ public function assertFieldAccess(string $field, string $viewer, string $target,
     $field_definition = $this->createMock('Drupal\Core\Field\FieldDefinitionInterface');
     $field_definition->expects($this->any())
       ->method('getName')
-      ->will($this->returnValue($field));
+      ->willReturn($field);
 
     $this->items
       ->expects($this->any())
       ->method('getEntity')
-      ->will($this->returnValue($this->{$target}));
+      ->willReturn($this->{$target});
 
     foreach (['view' => $view, 'edit' => $edit] as $operation => $result) {
       $result_text = !isset($result) ? 'null' : ($result ? 'true' : 'false');
diff --git a/core/modules/user/tests/src/Unit/UserAuthTest.php b/core/modules/user/tests/src/Unit/UserAuthTest.php
index 926d48d4bc..e5ab2bf805 100644
--- a/core/modules/user/tests/src/Unit/UserAuthTest.php
+++ b/core/modules/user/tests/src/Unit/UserAuthTest.php
@@ -73,7 +73,7 @@ protected function setUp(): void {
     $entity_type_manager->expects($this->any())
       ->method('getStorage')
       ->with('user')
-      ->will($this->returnValue($this->userStorage));
+      ->willReturn($this->userStorage);
 
     $this->passwordService = $this->createMock('Drupal\Core\Password\PasswordInterface');
 
@@ -122,7 +122,7 @@ public function testAuthenticateWithNoAccountReturned() {
     $this->userStorage->expects($this->once())
       ->method('loadByProperties')
       ->with(['name' => $this->username])
-      ->will($this->returnValue([]));
+      ->willReturn([]);
 
     $this->assertFalse($this->userAuth->authenticate($this->username, $this->password));
   }
@@ -136,12 +136,12 @@ public function testAuthenticateWithIncorrectPassword() {
     $this->userStorage->expects($this->once())
       ->method('loadByProperties')
       ->with(['name' => $this->username])
-      ->will($this->returnValue([$this->testUser]));
+      ->willReturn([$this->testUser]);
 
     $this->passwordService->expects($this->once())
       ->method('check')
       ->with($this->password, $this->testUser->getPassword())
-      ->will($this->returnValue(FALSE));
+      ->willReturn(FALSE);
 
     $this->assertFalse($this->userAuth->authenticate($this->username, $this->password));
   }
@@ -154,17 +154,17 @@ public function testAuthenticateWithIncorrectPassword() {
   public function testAuthenticateWithCorrectPassword() {
     $this->testUser->expects($this->once())
       ->method('id')
-      ->will($this->returnValue(1));
+      ->willReturn(1);
 
     $this->userStorage->expects($this->once())
       ->method('loadByProperties')
       ->with(['name' => $this->username])
-      ->will($this->returnValue([$this->testUser]));
+      ->willReturn([$this->testUser]);
 
     $this->passwordService->expects($this->once())
       ->method('check')
       ->with($this->password, $this->testUser->getPassword())
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $this->assertSame(1, $this->userAuth->authenticate($this->username, $this->password));
   }
@@ -181,17 +181,17 @@ public function testAuthenticateWithCorrectPassword() {
   public function testAuthenticateWithZeroPassword() {
     $this->testUser->expects($this->once())
       ->method('id')
-      ->will($this->returnValue(2));
+      ->willReturn(2);
 
     $this->userStorage->expects($this->once())
       ->method('loadByProperties')
       ->with(['name' => $this->username])
-      ->will($this->returnValue([$this->testUser]));
+      ->willReturn([$this->testUser]);
 
     $this->passwordService->expects($this->once())
       ->method('check')
       ->with(0, 0)
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $this->assertSame(2, $this->userAuth->authenticate($this->username, 0));
   }
@@ -204,7 +204,7 @@ public function testAuthenticateWithZeroPassword() {
   public function testAuthenticateWithCorrectPasswordAndNewPasswordHash() {
     $this->testUser->expects($this->once())
       ->method('id')
-      ->will($this->returnValue(1));
+      ->willReturn(1);
     $this->testUser->expects($this->once())
       ->method('setPassword')
       ->with($this->password);
@@ -214,16 +214,16 @@ public function testAuthenticateWithCorrectPasswordAndNewPasswordHash() {
     $this->userStorage->expects($this->once())
       ->method('loadByProperties')
       ->with(['name' => $this->username])
-      ->will($this->returnValue([$this->testUser]));
+      ->willReturn([$this->testUser]);
 
     $this->passwordService->expects($this->once())
       ->method('check')
       ->with($this->password, $this->testUser->getPassword())
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
     $this->passwordService->expects($this->once())
       ->method('needsRehash')
       ->with($this->testUser->getPassword())
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $this->assertSame(1, $this->userAuth->authenticate($this->username, $this->password));
   }
diff --git a/core/modules/user/tests/src/Unit/Views/Argument/RolesRidTest.php b/core/modules/user/tests/src/Unit/Views/Argument/RolesRidTest.php
index dc1f9eae9c..8e18649ee7 100644
--- a/core/modules/user/tests/src/Unit/Views/Argument/RolesRidTest.php
+++ b/core/modules/user/tests/src/Unit/Views/Argument/RolesRidTest.php
@@ -46,19 +46,19 @@ public function testTitleQuery() {
     $entity_type->expects($this->any())
       ->method('getKey')
       ->with('label')
-      ->will($this->returnValue('label'));
+      ->willReturn('label');
 
     $entity_type_manager = $this->createMock(EntityTypeManagerInterface::class);
     $entity_type_manager->expects($this->any())
       ->method('getDefinition')
       ->with($this->equalTo('user_role'))
-      ->will($this->returnValue($entity_type));
+      ->willReturn($entity_type);
 
     $entity_type_manager
       ->expects($this->once())
       ->method('getStorage')
       ->with($this->equalTo('user_role'))
-      ->will($this->returnValue($role_storage));
+      ->willReturn($role_storage);
 
     // Set up a minimal container to satisfy Drupal\Core\Entity\EntityBase's
     // dependency on it.
diff --git a/core/modules/user/user.routing.yml b/core/modules/user/user.routing.yml
index 04a094abcf..d479917845 100644
--- a/core/modules/user/user.routing.yml
+++ b/core/modules/user/user.routing.yml
@@ -146,6 +146,14 @@ user.page:
   requirements:
     _user_is_logged_in: 'TRUE'
 
+user.edit:
+  path: '/user/edit'
+  defaults:
+    _controller: '\Drupal\user\Controller\UserController::userEditPage'
+    _title: 'Edit account'
+  requirements:
+    _user_is_logged_in: 'TRUE'
+
 user.login:
   path: '/user/login'
   defaults:
diff --git a/core/modules/views/config/schema/views.display.schema.yml b/core/modules/views/config/schema/views.display.schema.yml
index 3e696143f1..725b0d072e 100644
--- a/core/modules/views/config/schema/views.display.schema.yml
+++ b/core/modules/views/config/schema/views.display.schema.yml
@@ -87,8 +87,8 @@ views.display.block:
       label: 'Allow'
       mapping:
         items_per_page:
-         type: boolean
-         label: 'Items per page'
+          type: boolean
+          label: 'Items per page'
 
 views.display.feed:
   type: views_display_path
diff --git a/core/modules/views/src/Controller/ViewAjaxController.php b/core/modules/views/src/Controller/ViewAjaxController.php
index d765629d86..bff0acb81b 100644
--- a/core/modules/views/src/Controller/ViewAjaxController.php
+++ b/core/modules/views/src/Controller/ViewAjaxController.php
@@ -136,17 +136,17 @@ public function ajaxView(Request $request) {
       // @todo Remove this parsing once these are removed from the request in
       //   https://www.drupal.org/node/2504709.
       foreach ([
-          'view_name',
-          'view_display_id',
-          'view_args',
-          'view_path',
-          'view_dom_id',
-          'pager_element',
-          'view_base_path',
-          AjaxResponseSubscriber::AJAX_REQUEST_PARAMETER,
-          FormBuilderInterface::AJAX_FORM_REQUEST,
-          MainContentViewSubscriber::WRAPPER_FORMAT,
-        ] as $key) {
+        'view_name',
+        'view_display_id',
+        'view_args',
+        'view_path',
+        'view_dom_id',
+        'pager_element',
+        'view_base_path',
+        AjaxResponseSubscriber::AJAX_REQUEST_PARAMETER,
+        FormBuilderInterface::AJAX_FORM_REQUEST,
+        MainContentViewSubscriber::WRAPPER_FORMAT,
+      ] as $key) {
         $request->query->remove($key);
         $request->request->remove($key);
       }
diff --git a/core/modules/views/src/Entity/Render/DefaultLanguageRenderer.php b/core/modules/views/src/Entity/Render/DefaultLanguageRenderer.php
index 11dbb4ab87..15811aa257 100644
--- a/core/modules/views/src/Entity/Render/DefaultLanguageRenderer.php
+++ b/core/modules/views/src/Entity/Render/DefaultLanguageRenderer.php
@@ -16,4 +16,12 @@ public function getLangcode(ResultRow $row) {
     return $row->_entity->getUntranslated()->language()->getId();
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  public function getLangcodeByRelationship(ResultRow $row, string $relationship = 'none'): string {
+    $entity = $this->getEntity($row, $relationship);
+    return $entity->getUntranslated()->language()->getId();
+  }
+
 }
diff --git a/core/modules/views/src/Entity/Render/EntityFieldRenderer.php b/core/modules/views/src/Entity/Render/EntityFieldRenderer.php
index 7002c73403..5074969ab7 100644
--- a/core/modules/views/src/Entity/Render/EntityFieldRenderer.php
+++ b/core/modules/views/src/Entity/Render/EntityFieldRenderer.php
@@ -218,7 +218,8 @@ protected function buildFields(array $values) {
       $field = $this->view->field[current($field_ids)];
       foreach ($values as $result_row) {
         if ($entity = $field->getEntity($result_row)) {
-          $entities_by_bundles[$entity->bundle()][$result_row->index] = $this->getEntityTranslation($entity, $result_row);
+          $relationship = isset($field->options['relationship']) ? $field->options['relationship'] : 'none';
+          $entities_by_bundles[$entity->bundle()][$result_row->index] = $this->getEntityTranslationByRelationship($entity, $result_row, $relationship);
         }
       }
 
diff --git a/core/modules/views/src/Entity/Render/EntityTranslationRenderTrait.php b/core/modules/views/src/Entity/Render/EntityTranslationRenderTrait.php
index a4c6446743..788174a1c3 100644
--- a/core/modules/views/src/Entity/Render/EntityTranslationRenderTrait.php
+++ b/core/modules/views/src/Entity/Render/EntityTranslationRenderTrait.php
@@ -65,18 +65,41 @@ protected function getEntityTranslationRenderer() {
    *
    * @return \Drupal\Core\Entity\FieldableEntityInterface
    *   The entity translation object for the specified row.
+   *
+   * @deprecated in drupal:10.1.0 and is removed from drupal:11.0.0. Use
+   *   \Drupal\views\Entity\Render\EntityTranslationRenderTrait::getEntityTranslationByRelationship
+   *   instead.
+   *
+   * @see https://www.drupal.org/node/3311862
    */
   public function getEntityTranslation(EntityInterface $entity, ResultRow $row) {
+    @trigger_error('\Drupal\views\Entity\Render\EntityTranslationRenderTrait::getEntityTranslation is deprecated in drupal:10.1.0 and is removed from drupal:11.0.0. Use \Drupal\views\Entity\Render\EntityTranslationRenderTrait::getEntityTranslationByRelationship instead. See https://www.drupal.org/node/3311862', E_USER_DEPRECATED);
+    return $this->getEntityTranslationByRelationship($entity, $row);
+  }
+
+  /**
+   * Returns the entity translation matching the configured row language.
+   *
+   * @param \Drupal\Core\Entity\EntityInterface $entity
+   *   The entity object the field value being processed is attached to.
+   * @param \Drupal\views\ResultRow $row
+   *   The result row the field value being processed belongs to.
+   * @param string $relationship
+   *   The relationship to be used, or 'none' by default.
+   *
+   * @return \Drupal\Core\Entity\EntityInterface
+   *   The entity translation object for the specified row.
+   */
+  public function getEntityTranslationByRelationship(EntityInterface $entity, ResultRow $row, string $relationship = 'none'): EntityInterface {
     // We assume the same language should be used for all entity fields
     // belonging to a single row, even if they are attached to different entity
     // types. Below we apply language fallback to ensure a valid value is always
     // picked.
-    $translation = $entity;
     if ($entity instanceof TranslatableInterface && count($entity->getTranslationLanguages()) > 1) {
-      $langcode = $this->getEntityTranslationRenderer()->getLangcode($row);
+      $langcode = $this->getEntityTranslationRenderer()->getLangcodeByRelationship($row, $relationship);
       $translation = $this->getEntityRepository()->getTranslationFromContext($entity, $langcode);
     }
-    return $translation;
+    return $translation ?? $entity;
   }
 
   /**
diff --git a/core/modules/views/src/Entity/Render/EntityTranslationRendererBase.php b/core/modules/views/src/Entity/Render/EntityTranslationRendererBase.php
index 91cf232538..0db4f0eb20 100644
--- a/core/modules/views/src/Entity/Render/EntityTranslationRendererBase.php
+++ b/core/modules/views/src/Entity/Render/EntityTranslationRendererBase.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\views\Entity\Render;
 
+use Drupal\Core\Entity\EntityInterface;
 use Drupal\views\Plugin\views\query\QueryPluginBase;
 use Drupal\views\ResultRow;
 
@@ -21,6 +22,22 @@ abstract class EntityTranslationRendererBase extends RendererBase {
    */
   abstract public function getLangcode(ResultRow $row);
 
+  /**
+   * Returns the language code associated with the given row.
+   *
+   * @param \Drupal\views\ResultRow $row
+   *   The result row.
+   * @param string $relationship
+   *   The relationship to be used.
+   *
+   * @return string
+   */
+  public function getLangcodeByRelationship(ResultRow $row, string $relationship): string {
+    // This method needs to be overridden if the relationship is needed in the
+    // implementation of getLangcode().
+    return $this->getLangcode($row);
+  }
+
   /**
    * {@inheritdoc}
    */
@@ -31,15 +48,25 @@ public function query(QueryPluginBase $query, $relationship = NULL) {
    * {@inheritdoc}
    */
   public function preRender(array $result) {
+    $this->preRenderByRelationship($result, 'none');
+  }
+
+  /**
+   * Runs before each entity is rendered if a relationship is needed.
+   *
+   * @param \Drupal\views\ResultRow[] $result
+   *   The full array of results from the query.
+   * @param string $relationship
+   *   The relationship to be used.
+   */
+  public function preRenderByRelationship(array $result, string $relationship): void {
     $view_builder = \Drupal::entityTypeManager()->getViewBuilder($this->entityType->id());
 
-    /** @var \Drupal\views\ResultRow $row */
     foreach ($result as $row) {
-      // @todo Take relationships into account.
-      //   See https://www.drupal.org/node/2457999.
-      $entity = $row->_entity;
-      $entity->view = $this->view;
-      $this->build[$entity->id()] = $view_builder->view($entity, $this->view->rowPlugin->options['view_mode'], $this->getLangcode($row));
+      if ($entity = $this->getEntity($row, $relationship)) {
+        $entity->view = $this->view;
+        $this->build[$entity->id()] = $view_builder->view($entity, $this->view->rowPlugin->options['view_mode'], $this->getLangcodeByRelationship($row, $relationship));
+      }
     }
   }
 
@@ -47,8 +74,48 @@ public function preRender(array $result) {
    * {@inheritdoc}
    */
   public function render(ResultRow $row) {
-    $entity_id = $row->_entity->id();
-    return $this->build[$entity_id];
+    return $this->renderByRelationship($row, 'none');
+  }
+
+  /**
+   * Renders entity data.
+   *
+   * @param \Drupal\views\ResultRow $row
+   *   A single row of the query result.
+   * @param string $relationship
+   *   The relationship to be used.
+   *
+   * @return array
+   *   A renderable array for the entity data contained in the result row.
+   */
+  public function renderByRelationship(ResultRow $row, string $relationship): array {
+    if ($entity = $this->getEntity($row, $relationship)) {
+      $entity_id = $entity->id();
+      return $this->build[$entity_id];
+    }
+    return [];
+  }
+
+  /**
+   * Gets the entity associated with a row.
+   *
+   * @param \Drupal\views\ResultRow $row
+   *   The result row.
+   * @param string $relationship
+   *   (optional) The relationship.
+   *
+   * @return \Drupal\Core\Entity\EntityInterface|null
+   *   The entity might be optional, because the relationship entity might not
+   *   always exist.
+   */
+  protected function getEntity(ResultRow $row, string $relationship = 'none'): ?EntityInterface {
+    if ($relationship === 'none') {
+      return $row->_entity;
+    }
+    elseif (isset($row->_relationship_entities[$relationship])) {
+      return $row->_relationship_entities[$relationship];
+    }
+    return NULL;
   }
 
 }
diff --git a/core/modules/views/src/Entity/Render/RendererBase.php b/core/modules/views/src/Entity/Render/RendererBase.php
index 60327f615f..b47dd43081 100644
--- a/core/modules/views/src/Entity/Render/RendererBase.php
+++ b/core/modules/views/src/Entity/Render/RendererBase.php
@@ -93,7 +93,7 @@ abstract public function query(QueryPluginBase $query, $relationship = NULL);
   /**
    * Runs before each entity is rendered.
    *
-   * @param $result
+   * @param \Drupal\views\ResultRow[] $result
    *   The full array of results from the query.
    */
   public function preRender(array $result) {
diff --git a/core/modules/views/src/Entity/Render/TranslationLanguageRenderer.php b/core/modules/views/src/Entity/Render/TranslationLanguageRenderer.php
index 89f465988b..07976988e8 100644
--- a/core/modules/views/src/Entity/Render/TranslationLanguageRenderer.php
+++ b/core/modules/views/src/Entity/Render/TranslationLanguageRenderer.php
@@ -78,25 +78,28 @@ protected function getLangcodeTable(QueryPluginBase $query, $relationship) {
   /**
    * {@inheritdoc}
    */
-  public function preRender(array $result) {
+  public function preRenderByRelationship(array $result, string $relationship): void {
     $view_builder = \Drupal::entityTypeManager()->getViewBuilder($this->entityType->id());
 
     /** @var \Drupal\views\ResultRow $row */
     foreach ($result as $row) {
-      $entity = $row->_entity;
-      $entity->view = $this->view;
-      $langcode = $this->getLangcode($row);
-      $this->build[$entity->id()][$langcode] = $view_builder->view($entity, $this->view->rowPlugin->options['view_mode'], $this->getLangcode($row));
+      if ($entity = $this->getEntity($row, $relationship)) {
+        $entity->view = $this->view;
+        $langcode = $this->getLangcodeByRelationship($row, $relationship);
+        $this->build[$entity->id()][$langcode] = $view_builder->view($entity, $this->view->rowPlugin->options['view_mode'], $langcode);
+      }
     }
   }
 
   /**
    * {@inheritdoc}
    */
-  public function render(ResultRow $row) {
-    $entity_id = $row->_entity->id();
-    $langcode = $this->getLangcode($row);
-    return $this->build[$entity_id][$langcode];
+  public function renderByRelationship(ResultRow $row, string $relationship): array {
+    if ($entity = $this->getEntity($row, $relationship)) {
+      $entity_id = $entity->id();
+      return $this->build[$entity_id][$this->getLangcodeByRelationship($row, $relationship)];
+    }
+    return [];
   }
 
   /**
diff --git a/core/modules/views/src/Form/ViewsForm.php b/core/modules/views/src/Form/ViewsForm.php
index 575b92313f..e2bfb15851 100644
--- a/core/modules/views/src/Form/ViewsForm.php
+++ b/core/modules/views/src/Form/ViewsForm.php
@@ -148,8 +148,11 @@ public function buildForm(array $form, FormStateInterface $form_state, ViewExecu
     }
     $form_state->set(['step_controller', 'views_form_views_form'], 'Drupal\views\Form\ViewsFormMainForm');
 
-    // Add the base form ID.
-    $form_state->addBuildInfo('base_form_id', $this->getBaseFormId());
+    // Views forms without view arguments return the same Base Form ID and
+    // Form ID. Base form ID should only be added when different.
+    if ($this->getBaseFormId() !== $this->getFormId()) {
+      $form_state->addBuildInfo('base_form_id', $this->getBaseFormId());
+    }
 
     $form = [];
 
diff --git a/core/modules/views/src/ManyToOneHelper.php b/core/modules/views/src/ManyToOneHelper.php
index 06ee0d2bc1..5bf9df8ad5 100644
--- a/core/modules/views/src/ManyToOneHelper.php
+++ b/core/modules/views/src/ManyToOneHelper.php
@@ -21,6 +21,15 @@
  */
 class ManyToOneHelper {
 
+  /**
+   * Should the field use formula or alias.
+   *
+   * @see \Drupal\views\Plugin\views\argument\StringArgument::query()
+   *
+   * @var bool
+   */
+  public bool $formula = FALSE;
+
   /**
    * The handler.
    */
diff --git a/core/modules/views/src/Plugin/Block/ViewsExposedFilterBlock.php b/core/modules/views/src/Plugin/Block/ViewsExposedFilterBlock.php
index d877277d72..f43fda6d49 100644
--- a/core/modules/views/src/Plugin/Block/ViewsExposedFilterBlock.php
+++ b/core/modules/views/src/Plugin/Block/ViewsExposedFilterBlock.php
@@ -31,13 +31,13 @@ public function getCacheContexts() {
    *   A renderable array representing the content of the block with additional
    *   context of current view and display ID.
    */
-  public function build() {
-    $output = $this->view->display_handler->viewExposedFormBlocks();
+  public function build() : array {
+    $output = $this->view->display_handler->viewExposedFormBlocks() ?? [];
     // Provide the context for block build and block view alter hooks.
     // \Drupal\views\Plugin\Block\ViewsBlock::build() adds the same context in
     // \Drupal\views\ViewExecutable::buildRenderable() using
     // \Drupal\views\Plugin\views\display\DisplayPluginBase::buildRenderable().
-    if (is_array($output) && !empty($output)) {
+    if (!empty($output)) {
       $output += [
         '#view' => $this->view,
         '#display_id' => $this->displayID,
diff --git a/core/modules/views/src/Plugin/Derivative/ViewsBlock.php b/core/modules/views/src/Plugin/Derivative/ViewsBlock.php
index 4d9d0f23f5..3706e39eda 100644
--- a/core/modules/views/src/Plugin/Derivative/ViewsBlock.php
+++ b/core/modules/views/src/Plugin/Derivative/ViewsBlock.php
@@ -95,7 +95,7 @@ public function getDerivativeDefinitions($base_plugin_definition) {
             else {
               // Allow translators to control the punctuation. Plugin
               // definitions get cached, so use TranslatableMarkup() instead of
-              // t() to avoid double escaping when $admin_label is rendered
+              // $this->t() to avoid double escaping when $admin_label is rendered
               // during requests that use the cached definition.
               $admin_label = new TranslatableMarkup('@view: @display', ['@view' => $view->label(), '@display' => $display->display['display_title']]);
             }
diff --git a/core/modules/views/src/Plugin/Derivative/ViewsEntityRow.php b/core/modules/views/src/Plugin/Derivative/ViewsEntityRow.php
index 8dd537cc08..757b574189 100644
--- a/core/modules/views/src/Plugin/Derivative/ViewsEntityRow.php
+++ b/core/modules/views/src/Plugin/Derivative/ViewsEntityRow.php
@@ -4,6 +4,7 @@
 
 use Drupal\Core\Entity\EntityTypeManagerInterface;
 use Drupal\Core\Plugin\Discovery\ContainerDeriverInterface;
+use Drupal\Core\StringTranslation\StringTranslationTrait;
 use Drupal\views\ViewsData;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 
@@ -16,6 +17,8 @@
  */
 class ViewsEntityRow implements ContainerDeriverInterface {
 
+  use StringTranslationTrait;
+
   /**
    * Stores all entity row plugin information.
    *
@@ -93,7 +96,7 @@ public function getDerivativeDefinitions($base_plugin_definition) {
           'id' => 'entity:' . $entity_type_id,
           'provider' => 'views',
           'title' => $entity_type->getLabel(),
-          'help' => t('Display the @label', ['@label' => $entity_type->getLabel()]),
+          'help' => $this->t('Display the @label', ['@label' => $entity_type->getLabel()]),
           'base' => [$entity_type->getDataTable() ?: $entity_type->getBaseTable()],
           'entity_type' => $entity_type_id,
           'display_types' => ['normal'],
diff --git a/core/modules/views/src/Plugin/Derivative/ViewsExposedFilterBlock.php b/core/modules/views/src/Plugin/Derivative/ViewsExposedFilterBlock.php
index 0dcf62ee3d..57ac710c24 100644
--- a/core/modules/views/src/Plugin/Derivative/ViewsExposedFilterBlock.php
+++ b/core/modules/views/src/Plugin/Derivative/ViewsExposedFilterBlock.php
@@ -4,6 +4,7 @@
 
 use Drupal\Core\Plugin\Discovery\ContainerDeriverInterface;
 use Drupal\Core\Entity\EntityStorageInterface;
+use Drupal\Core\StringTranslation\StringTranslationTrait;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 
 /**
@@ -13,6 +14,8 @@
  */
 class ViewsExposedFilterBlock implements ContainerDeriverInterface {
 
+  use StringTranslationTrait;
+
   /**
    * List of derivative definitions.
    *
@@ -85,7 +88,7 @@ public function getDerivativeDefinitions($base_plugin_definition) {
           // Add a block definition for the block.
           if ($display->usesExposedFormInBlock()) {
             $delta = $view->id() . '-' . $display->display['id'];
-            $desc = t('Exposed form: @view-@display_id', ['@view' => $view->id(), '@display_id' => $display->display['id']]);
+            $desc = $this->t('Exposed form: @view-@display_id', ['@view' => $view->id(), '@display_id' => $display->display['id']]);
             $this->derivatives[$delta] = [
               'admin_label' => $desc,
               'config_dependencies' => [
diff --git a/core/modules/views/src/Plugin/EntityReferenceSelection/ViewsSelection.php b/core/modules/views/src/Plugin/EntityReferenceSelection/ViewsSelection.php
index cf80704f6b..96cb20b397 100644
--- a/core/modules/views/src/Plugin/EntityReferenceSelection/ViewsSelection.php
+++ b/core/modules/views/src/Plugin/EntityReferenceSelection/ViewsSelection.php
@@ -10,6 +10,7 @@
 use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
 use Drupal\Core\Render\RendererInterface;
 use Drupal\Core\Session\AccountInterface;
+use Drupal\Core\StringTranslation\TranslatableMarkup;
 use Drupal\Core\Url;
 use Drupal\views\Render\ViewsRenderPipelineMarkup;
 use Drupal\views\Views;
@@ -321,7 +322,7 @@ public static function settingsFormValidate($element, FormStateInterface $form_s
       [$view, $display] = explode(':', $element['view_and_display']['#value']);
     }
     else {
-      $form_state->setError($element, t('The views entity selection mode requires a view.'));
+      $form_state->setError($element, new TranslatableMarkup('The views entity selection mode requires a view.'));
       return;
     }
 
diff --git a/core/modules/views/src/Plugin/views/BrokenHandlerTrait.php b/core/modules/views/src/Plugin/views/BrokenHandlerTrait.php
index 992e8e252f..55df6484ef 100644
--- a/core/modules/views/src/Plugin/views/BrokenHandlerTrait.php
+++ b/core/modules/views/src/Plugin/views/BrokenHandlerTrait.php
@@ -16,7 +16,7 @@ trait BrokenHandlerTrait {
    * @see \Drupal\views\Plugin\views\PluginBase::defineOptions()
    */
   public function adminLabel($short = FALSE) {
-    return t('Broken/missing handler');
+    return $this->t('Broken/missing handler');
   }
 
   /**
@@ -51,7 +51,7 @@ public function query($group_by = FALSE) {
    * @see \Drupal\views\Plugin\views\PluginBase::defineOptions()
    */
   public function buildOptionsForm(&$form, FormStateInterface $form_state) {
-    $description_top = t('The handler for this item is broken or missing. The following details are available:');
+    $description_top = $this->t('The handler for this item is broken or missing. The following details are available:');
 
     foreach ($this->definition['original_configuration'] as $key => $value) {
       if (is_scalar($value)) {
@@ -59,7 +59,7 @@ public function buildOptionsForm(&$form, FormStateInterface $form_state) {
       }
     }
 
-    $description_bottom = t('Enabling the appropriate module may solve this issue. Otherwise, check to see if there is a module update available.');
+    $description_bottom = $this->t('Enabling the appropriate module may solve this issue. Otherwise, check to see if there is a module update available.');
 
     $form['description'] = [
       '#type' => 'container',
diff --git a/core/modules/views/src/Plugin/views/HandlerBase.php b/core/modules/views/src/Plugin/views/HandlerBase.php
index d13570d256..042658dc65 100644
--- a/core/modules/views/src/Plugin/views/HandlerBase.php
+++ b/core/modules/views/src/Plugin/views/HandlerBase.php
@@ -45,6 +45,8 @@ abstract class HandlerBase extends PluginBase implements ViewsHandlerInterface {
   public $tableAlias;
 
   /**
+   * The real field.
+   *
    * The actual field in the database table, maybe different
    * on other kind of query plugins/special handlers.
    *
diff --git a/core/modules/views/src/Plugin/views/ViewsPluginInterface.php b/core/modules/views/src/Plugin/views/ViewsPluginInterface.php
index ddc5341f09..4aceb2415a 100644
--- a/core/modules/views/src/Plugin/views/ViewsPluginInterface.php
+++ b/core/modules/views/src/Plugin/views/ViewsPluginInterface.php
@@ -151,7 +151,7 @@ public function destroy();
   /**
    * Validate that the plugin is correct and can be saved.
    *
-   * @return
+   * @return array|null
    *   An array of error strings to tell the user what is wrong with this
    *   plugin.
    */
diff --git a/core/modules/views/src/Plugin/views/area/DisplayLink.php b/core/modules/views/src/Plugin/views/area/DisplayLink.php
index 02f2e7480d..c7c1968ba2 100644
--- a/core/modules/views/src/Plugin/views/area/DisplayLink.php
+++ b/core/modules/views/src/Plugin/views/area/DisplayLink.php
@@ -129,10 +129,10 @@ public function validate() {
     // recommend keeping the display options equal, we do not want to enforce
     // this.
     $unequal_options = [
-      'filters' => t('Filter criteria'),
-      'sorts' => t('Sort criteria'),
-      'pager' => t('Pager'),
-      'arguments' => t('Contextual filters'),
+      'filters' => $this->t('Filter criteria'),
+      'sorts' => $this->t('Sort criteria'),
+      'pager' => $this->t('Pager'),
+      'arguments' => $this->t('Contextual filters'),
     ];
     foreach (array_keys($unequal_options) as $option) {
       if ($this->hasEqualOptions($linked_display_id, $option)) {
diff --git a/core/modules/views/src/Plugin/views/area/TokenizeAreaPluginBase.php b/core/modules/views/src/Plugin/views/area/TokenizeAreaPluginBase.php
index 0b05e173af..02533c7198 100644
--- a/core/modules/views/src/Plugin/views/area/TokenizeAreaPluginBase.php
+++ b/core/modules/views/src/Plugin/views/area/TokenizeAreaPluginBase.php
@@ -48,8 +48,8 @@ public function tokenForm(&$form, FormStateInterface $form_state) {
 
     // Get a list of the available fields and arguments for token replacement.
     $options = [];
-    $optgroup_arguments = (string) t('Arguments');
-    $optgroup_fields = (string) t('Fields');
+    $optgroup_arguments = (string) $this->t('Arguments');
+    $optgroup_fields = (string) $this->t('Fields');
     foreach ($this->view->display_handler->getHandlers('field') as $field => $handler) {
       $options[$optgroup_fields]["{{ $field }}"] = $handler->adminLabel();
     }
diff --git a/core/modules/views/src/Plugin/views/area/View.php b/core/modules/views/src/Plugin/views/area/View.php
index 0f2d5bc91e..6dae7802f7 100644
--- a/core/modules/views/src/Plugin/views/area/View.php
+++ b/core/modules/views/src/Plugin/views/area/View.php
@@ -118,7 +118,7 @@ public function render($empty = FALSE) {
       // Check if the view is part of the parent views of this view
       $search = "$view_name:$display_id";
       if (in_array($search, $this->view->parent_views)) {
-        \Drupal::messenger()->addError(t("Recursion detected in view @view display @display.", ['@view' => $view_name, '@display' => $display_id]));
+        \Drupal::messenger()->addError($this->t("Recursion detected in view @view display @display.", ['@view' => $view_name, '@display' => $display_id]));
       }
       else {
         if (!empty($this->options['inherit_arguments']) && !empty($this->view->args)) {
diff --git a/core/modules/views/src/Plugin/views/argument/ArgumentPluginBase.php b/core/modules/views/src/Plugin/views/argument/ArgumentPluginBase.php
index a3838e5fd7..9e39de0410 100644
--- a/core/modules/views/src/Plugin/views/argument/ArgumentPluginBase.php
+++ b/core/modules/views/src/Plugin/views/argument/ArgumentPluginBase.php
@@ -71,9 +71,11 @@ abstract class ArgumentPluginBase extends HandlerBase implements CacheableDepend
   public string $name_table_alias;
 
   /**
-   * The field to use for the name to use in the summary, which is
-   * the displayed output. For example, for the node: nid argument,
-   * the argument itself is the nid, but node.title is displayed.
+   * The field to use for the name to display in the summary.
+   *
+   * For example, for the node: nid argument, the argument itself is the nid,
+   * but node.title is displayed.
+   *
    * @var string
    */
   public $name_field;
@@ -420,8 +422,8 @@ protected function getTokenHelp() {
 
     foreach ($this->view->display_handler->getHandlers('argument') as $arg => $handler) {
       /** @var \Drupal\views\Plugin\views\argument\ArgumentPluginBase $handler */
-      $options[(string) t('Arguments')]["{{ arguments.$arg }}"] = $this->t('@argument title', ['@argument' => $handler->adminLabel()]);
-      $options[(string) t('Arguments')]["{{ raw_arguments.$arg }}"] = $this->t('@argument input', ['@argument' => $handler->adminLabel()]);
+      $options[(string) $this->t('Arguments')]["{{ arguments.$arg }}"] = $this->t('@argument title', ['@argument' => $handler->adminLabel()]);
+      $options[(string) $this->t('Arguments')]["{{ raw_arguments.$arg }}"] = $this->t('@argument input', ['@argument' => $handler->adminLabel()]);
     }
 
     // We have some options, so make a list.
@@ -531,6 +533,8 @@ public function submitOptionsForm(&$form, FormStateInterface $form_state) {
   }
 
   /**
+   * Default actions.
+   *
    * Provide a list of default behaviors for this argument if the argument
    * is not present.
    *
@@ -741,7 +745,7 @@ public function defaultSummaryForm(&$form, FormStateInterface $form_state) {
    *
    * Override this method only with extreme care.
    *
-   * @return
+   * @return bool
    *   A boolean value; if TRUE, continue building this view. If FALSE,
    *   building the view will be aborted here.
    */
@@ -894,9 +898,6 @@ protected function defaultSummary() {
    * - addField: add a 'num_nodes' field for the count. Usually it will
    *   be a count on $view->base_field
    * - setCountField: Reset the count field so we get the right paging.
-   *
-   * @return
-   *   The alias used to get the number of records (count) for this entry.
    */
   protected function summaryQuery() {
     $this->ensureMyTable();
@@ -904,7 +905,7 @@ protected function summaryQuery() {
     $this->base_alias = $this->query->addField($this->tableAlias, $this->realField);
 
     $this->summaryNameField();
-    return $this->summaryBasics();
+    $this->summaryBasics();
   }
 
   /**
@@ -994,8 +995,8 @@ public function summaryArgument($data) {
    *   The query results for the row.
    */
   public function summaryName($data) {
-    $value = $data->{$this->name_alias};
-    if (empty($value) && !empty($this->definition['empty field name'])) {
+    $value = (string) $data->{$this->name_alias};
+    if ($value === '' && isset($this->definition['empty field name'])) {
       $value = $this->definition['empty field name'];
     }
     return $value;
diff --git a/core/modules/views/src/Plugin/views/argument_validator/None.php b/core/modules/views/src/Plugin/views/argument_validator/None.php
index 8e8c96571f..c74f5290d1 100644
--- a/core/modules/views/src/Plugin/views/argument_validator/None.php
+++ b/core/modules/views/src/Plugin/views/argument_validator/None.php
@@ -23,7 +23,7 @@ public function validateArgument($argument) {
       return FALSE;
     }
 
-    if (!empty($this->argument->definition['numeric']) && !isset($this->argument->options['break_phrase']) && !is_numeric($arg)) {
+    if (!empty($this->argument->definition['numeric']) && !isset($this->argument->options['break_phrase'])) {
       return FALSE;
     }
 
diff --git a/core/modules/views/src/Plugin/views/cache/CachePluginBase.php b/core/modules/views/src/Plugin/views/cache/CachePluginBase.php
index 09205f227d..ab835b61c2 100644
--- a/core/modules/views/src/Plugin/views/cache/CachePluginBase.php
+++ b/core/modules/views/src/Plugin/views/cache/CachePluginBase.php
@@ -5,7 +5,7 @@
 use Drupal\Core\Cache\Cache;
 use Drupal\Core\Cache\CacheableMetadata;
 use Drupal\views\Plugin\views\PluginBase;
-use Drupal\Core\Database\Query\Select;
+use Drupal\Core\Database\Query\SelectInterface;
 use Drupal\views\ResultRow;
 
 /**
@@ -201,7 +201,7 @@ public function generateResultsKey() {
       foreach (['query', 'count_query'] as $index) {
         // If the default query back-end is used generate SQL query strings from
         // the query objects.
-        if ($build_info[$index] instanceof Select) {
+        if ($build_info[$index] instanceof SelectInterface) {
           $query = clone $build_info[$index];
           $query->preExecute();
           $build_info[$index] = [
diff --git a/core/modules/views/src/Plugin/views/display/DisplayPluginBase.php b/core/modules/views/src/Plugin/views/display/DisplayPluginBase.php
index 8e102d9c3a..1eed2d4c2b 100644
--- a/core/modules/views/src/Plugin/views/display/DisplayPluginBase.php
+++ b/core/modules/views/src/Plugin/views/display/DisplayPluginBase.php
@@ -192,7 +192,7 @@ public function initDisplay(ViewExecutable $view, array &$display, array &$optio
 
     $skip_cache = \Drupal::config('views.settings')->get('skip_cache');
 
-    if (empty($view->editing) || !$skip_cache) {
+    if (!$skip_cache) {
       $cid = 'views:unpack_options:' . hash('sha256', serialize([$this->options, $options])) . ':' . \Drupal::languageManager()->getCurrentLanguage()->getId();
       if (empty(static::$unpackOptions[$cid])) {
         $cache = \Drupal::cache('data')->get($cid);
@@ -449,7 +449,6 @@ public function defaultableSections($section = NULL) {
     // If the display cannot use a pager, then we cannot default it.
     if (!$this->usesPager()) {
       unset($sections['pager']);
-      unset($sections['items_per_page']);
     }
 
     foreach ($this->extenders as $extender) {
@@ -572,21 +571,21 @@ protected function defineOptions() {
         'contains' => [
           'type' => ['default' => 'views_query'],
           'options' => ['default' => []],
-         ],
+        ],
         'merge_defaults' => [$this, 'mergePlugin'],
       ],
       'exposed_form' => [
         'contains' => [
           'type' => ['default' => 'basic'],
           'options' => ['default' => []],
-         ],
+        ],
         'merge_defaults' => [$this, 'mergePlugin'],
       ],
       'pager' => [
         'contains' => [
           'type' => ['default' => 'mini'],
           'options' => ['default' => []],
-         ],
+        ],
         'merge_defaults' => [$this, 'mergePlugin'],
       ],
       'style' => [
@@ -1039,16 +1038,16 @@ public function optionLink($text, $section, $class = '', $title = '') {
     }
 
     return Link::fromTextAndUrl($text, Url::fromRoute('views_ui.form_display', [
-        'js' => 'nojs',
-        'view' => $this->view->storage->id(),
-        'display_id' => $this->display['id'],
-        'type' => $section,
-      ], [
-        'attributes' => [
-          'class' => ['views-ajax-link', $class],
-          'title' => $title,
-          'id' => Html::getUniqueId('views-' . $this->display['id'] . '-' . $section),
-        ],
+      'js' => 'nojs',
+      'view' => $this->view->storage->id(),
+      'display_id' => $this->display['id'],
+      'type' => $section,
+    ], [
+      'attributes' => [
+        'class' => ['views-ajax-link', $class],
+        'title' => $title,
+        'id' => Html::getUniqueId('views-' . $this->display['id'] . '-' . $section),
+      ],
     ]))->toString();
   }
 
@@ -1741,7 +1740,7 @@ public function buildOptionsForm(&$form, FormStateInterface $form_state) {
         ];
 
         $options = [];
-        $optgroup_arguments = (string) t('Arguments');
+        $optgroup_arguments = (string) $this->t('Arguments');
         foreach ($this->view->display_handler->getHandlers('argument') as $arg => $handler) {
           $options[$optgroup_arguments]["{{ arguments.$arg }}"] = $this->t('@argument title', ['@argument' => $handler->adminLabel()]);
           $options[$optgroup_arguments]["{{ raw_arguments.$arg }}"] = $this->t('@argument input', ['@argument' => $handler->adminLabel()]);
diff --git a/core/modules/views/src/Plugin/views/display/DisplayPluginInterface.php b/core/modules/views/src/Plugin/views/display/DisplayPluginInterface.php
index abf16ebe8f..abc03be58c 100644
--- a/core/modules/views/src/Plugin/views/display/DisplayPluginInterface.php
+++ b/core/modules/views/src/Plugin/views/display/DisplayPluginInterface.php
@@ -247,7 +247,7 @@ public function getUrl();
   /**
    * Determines if an option is set to use the default or current display.
    *
-   * @return
+   * @return bool
    *   TRUE for the default display.
    */
   public function isDefaulted($option);
@@ -516,7 +516,7 @@ public function getType();
   /**
    * Make sure the display and all associated handlers are valid.
    *
-   * @return
+   * @return array
    *   Empty array if the display is valid; an array of error strings if it is
    *   not.
    */
diff --git a/core/modules/views/src/Plugin/views/exposed_form/ExposedFormPluginBase.php b/core/modules/views/src/Plugin/views/exposed_form/ExposedFormPluginBase.php
index f700380fad..87e5ef38eb 100644
--- a/core/modules/views/src/Plugin/views/exposed_form/ExposedFormPluginBase.php
+++ b/core/modules/views/src/Plugin/views/exposed_form/ExposedFormPluginBase.php
@@ -54,7 +54,7 @@ public function buildOptionsForm(&$form, FormStateInterface $form_state) {
     ];
 
     $form['reset_button_label'] = [
-     '#type' => 'textfield',
+      '#type' => 'textfield',
       '#title' => $this->t('Reset button label'),
       '#description' => $this->t('Text to display in the reset button of the exposed form.'),
       '#default_value' => $this->options['reset_button_label'],
diff --git a/core/modules/views/src/Plugin/views/field/Boolean.php b/core/modules/views/src/Plugin/views/field/Boolean.php
index 8ea2ab2bc4..82b7fda995 100644
--- a/core/modules/views/src/Plugin/views/field/Boolean.php
+++ b/core/modules/views/src/Plugin/views/field/Boolean.php
@@ -54,15 +54,15 @@ public function init(ViewExecutable $view, DisplayPluginBase $display, array &$o
     parent::init($view, $display, $options);
 
     $default_formats = [
-      'yes-no' => [t('Yes'), $this->t('No')],
-      'true-false' => [t('True'), $this->t('False')],
-      'on-off' => [t('On'), $this->t('Off')],
-      'enabled-disabled' => [t('Enabled'), $this->t('Disabled')],
+      'yes-no' => [$this->t('Yes'), $this->t('No')],
+      'true-false' => [$this->t('True'), $this->t('False')],
+      'on-off' => [$this->t('On'), $this->t('Off')],
+      'enabled-disabled' => [$this->t('Enabled'), $this->t('Disabled')],
       'boolean' => [1, 0],
       'unicode-yes-no' => ['✔', '✖'],
     ];
     $output_formats = $this->definition['output formats'] ?? [];
-    $custom_format = ['custom' => [t('Custom')]];
+    $custom_format = ['custom' => [$this->t('Custom')]];
     $this->formats = array_merge($default_formats, $output_formats, $custom_format);
   }
 
diff --git a/core/modules/views/src/Plugin/views/field/BulkForm.php b/core/modules/views/src/Plugin/views/field/BulkForm.php
index 04c58e46ac..5340aac5e4 100644
--- a/core/modules/views/src/Plugin/views/field/BulkForm.php
+++ b/core/modules/views/src/Plugin/views/field/BulkForm.php
@@ -288,7 +288,7 @@ public function viewsForm(&$form, FormStateInterface $form_state) {
       // Render checkboxes for all rows.
       $form[$this->options['id']]['#tree'] = TRUE;
       foreach ($this->view->result as $row_index => $row) {
-        $entity = $this->getEntityTranslation($this->getEntity($row), $row);
+        $entity = $this->getEntityTranslationByRelationship($this->getEntity($row), $row);
 
         $form[$this->options['id']][$row_index] = [
           '#type' => 'checkbox',
diff --git a/core/modules/views/src/Plugin/views/field/EntityField.php b/core/modules/views/src/Plugin/views/field/EntityField.php
index 105f0a1ccc..2c1d76ce44 100644
--- a/core/modules/views/src/Plugin/views/field/EntityField.php
+++ b/core/modules/views/src/Plugin/views/field/EntityField.php
@@ -900,7 +900,7 @@ public function getItems(ResultRow $values) {
    */
   protected function createEntityForGroupBy(EntityInterface $entity, ResultRow $row) {
     // Retrieve the correct translation object.
-    $processed_entity = clone $this->getEntityFieldRenderer()->getEntityTranslation($entity, $row);
+    $processed_entity = clone $this->getEntityFieldRenderer()->getEntityTranslationByRelationship($entity, $row);
 
     // Copy our group fields into the cloned entity. It is possible this will
     // cause some weirdness, but there is only so much we can hope to do.
@@ -1078,7 +1078,7 @@ public function getValue(ResultRow $values, $field = NULL) {
     }
 
     // Retrieve the translated object.
-    $translated_entity = $this->getEntityFieldRenderer()->getEntityTranslation($entity, $values);
+    $translated_entity = $this->getEntityFieldRenderer()->getEntityTranslationByRelationship($entity, $values);
 
     // Some bundles might not have a specific field, in which case the entity
     // (potentially a fake one) doesn't have it either.
diff --git a/core/modules/views/src/Plugin/views/field/EntityLink.php b/core/modules/views/src/Plugin/views/field/EntityLink.php
index f7b2877a6c..6b22a408f0 100644
--- a/core/modules/views/src/Plugin/views/field/EntityLink.php
+++ b/core/modules/views/src/Plugin/views/field/EntityLink.php
@@ -38,7 +38,7 @@ protected function getUrlInfo(ResultRow $row) {
     $template = $this->getEntityLinkTemplate();
     $entity = $this->getEntity($row);
     if ($this->languageManager->isMultilingual()) {
-      $entity = $this->getEntityTranslation($entity, $row);
+      $entity = $this->getEntityTranslationByRelationship($entity, $row);
     }
     return $entity->toUrl($template)->setAbsolute($this->options['absolute']);
   }
diff --git a/core/modules/views/src/Plugin/views/field/EntityOperations.php b/core/modules/views/src/Plugin/views/field/EntityOperations.php
index e08cd8cade..a8b30059b3 100644
--- a/core/modules/views/src/Plugin/views/field/EntityOperations.php
+++ b/core/modules/views/src/Plugin/views/field/EntityOperations.php
@@ -127,7 +127,7 @@ public function buildOptionsForm(&$form, FormStateInterface $form_state) {
    * {@inheritdoc}
    */
   public function render(ResultRow $values) {
-    $entity = $this->getEntityTranslation($this->getEntity($values), $values);
+    $entity = $this->getEntityTranslationByRelationship($this->getEntity($values), $values);
     $operations = $this->entityTypeManager->getListBuilder($entity->getEntityTypeId())->getOperations($entity);
     if ($this->options['destination']) {
       foreach ($operations as &$operation) {
diff --git a/core/modules/views/src/Plugin/views/field/FieldPluginBase.php b/core/modules/views/src/Plugin/views/field/FieldPluginBase.php
index b777f41c04..3a30b1ee77 100644
--- a/core/modules/views/src/Plugin/views/field/FieldPluginBase.php
+++ b/core/modules/views/src/Plugin/views/field/FieldPluginBase.php
@@ -14,6 +14,7 @@
 use Drupal\views\ResultRow;
 use Drupal\views\ViewExecutable;
 use Twig\Environment;
+use Drupal\Core\StringTranslation\TranslatableMarkup;
 
 /**
  * @defgroup views_field_handlers Views field handler plugins
@@ -604,7 +605,7 @@ public function buildOptionsForm(&$form, FormStateInterface $form_state) {
 
     $form['element_class_enable'] = [
       '#type' => 'checkbox',
-      '#title' => $this->t('Create a CSS class'),
+      '#title' => $this->t('Add HTML class'),
       '#states' => [
         'visible' => [
           ':input[name="options[element_type_enable]"]' => ['checked' => TRUE],
@@ -648,7 +649,7 @@ public function buildOptionsForm(&$form, FormStateInterface $form_state) {
     ];
     $form['element_label_class_enable'] = [
       '#type' => 'checkbox',
-      '#title' => $this->t('Create a CSS class'),
+      '#title' => $this->t('Add HTML class'),
       '#states' => [
         'visible' => [
           ':input[name="options[element_label_type_enable]"]' => ['checked' => TRUE],
@@ -693,7 +694,7 @@ public function buildOptionsForm(&$form, FormStateInterface $form_state) {
 
     $form['element_wrapper_class_enable'] = [
       '#type' => 'checkbox',
-      '#title' => $this->t('Create a CSS class'),
+      '#title' => $this->t('Add HTML class'),
       '#states' => [
         'visible' => [
           ':input[name="options[element_wrapper_type_enable]"]' => ['checked' => TRUE],
@@ -891,8 +892,8 @@ public function buildOptionsForm(&$form, FormStateInterface $form_state) {
 
       // Setup the tokens for fields.
       $previous = $this->getPreviousFieldLabels();
-      $optgroup_arguments = (string) t('Arguments');
-      $optgroup_fields = (string) t('Fields');
+      $optgroup_arguments = (string) $this->t('Arguments');
+      $optgroup_fields = (string) $this->t('Fields');
       foreach ($previous as $id => $label) {
         $options[$optgroup_fields]["{{ $id }}"] = substr(strrchr($label, ":"), 2);
       }
@@ -1700,7 +1701,7 @@ protected function getFieldTokenPlaceholder() {
    * @param $parent_keys
    *   An array of parent keys. This will represent the array depth.
    *
-   * @return
+   * @return array
    *   An array of available tokens, with nested keys representative of the array structure.
    */
   protected function getTokenValuesRecursive(array $array, array $parent_keys = []) {
@@ -1834,7 +1835,7 @@ public static function trimText($alter, $value) {
       $value = rtrim(preg_replace('/(?:<(?!.+>)|&(?!.+;)).*$/us', '', $value));
 
       if (!empty($alter['ellipsis'])) {
-        $value .= t('…');
+        $value .= new TranslatableMarkup('…');
       }
     }
     if (!empty($alter['html'])) {
diff --git a/core/modules/views/src/Plugin/views/field/LinkBase.php b/core/modules/views/src/Plugin/views/field/LinkBase.php
index dfbf50c41b..39be58473f 100644
--- a/core/modules/views/src/Plugin/views/field/LinkBase.php
+++ b/core/modules/views/src/Plugin/views/field/LinkBase.php
@@ -220,7 +220,7 @@ protected function renderLink(ResultRow $row) {
   protected function addLangcode(ResultRow $row) {
     $entity = $this->getEntity($row);
     if ($this->languageManager->isMultilingual()) {
-      $this->options['alter']['language'] = $this->getEntityTranslation($entity, $row)->language();
+      $this->options['alter']['language'] = $this->getEntityTranslationByRelationship($entity, $row)->language();
     }
   }
 
diff --git a/core/modules/views/src/Plugin/views/field/RenderedEntity.php b/core/modules/views/src/Plugin/views/field/RenderedEntity.php
index dce5efcd21..d4429a5cfa 100644
--- a/core/modules/views/src/Plugin/views/field/RenderedEntity.php
+++ b/core/modules/views/src/Plugin/views/field/RenderedEntity.php
@@ -129,7 +129,7 @@ public function buildOptionsForm(&$form, FormStateInterface $form_state) {
    * {@inheritdoc}
    */
   public function render(ResultRow $values) {
-    $entity = $this->getEntityTranslation($this->getEntity($values), $values);
+    $entity = $this->getEntityTranslationByRelationship($this->getEntity($values), $values);
     $build = [];
     if (isset($entity)) {
       $access = $entity->access('view', NULL, TRUE);
diff --git a/core/modules/views/src/Plugin/views/filter/FilterPluginBase.php b/core/modules/views/src/Plugin/views/filter/FilterPluginBase.php
index 1da612333e..6e0bc80dcc 100644
--- a/core/modules/views/src/Plugin/views/filter/FilterPluginBase.php
+++ b/core/modules/views/src/Plugin/views/filter/FilterPluginBase.php
@@ -46,6 +46,8 @@
 abstract class FilterPluginBase extends HandlerBase implements CacheableDependencyInterface {
 
   /**
+   * The value.
+   *
    * Contains the actual value of the field,either configured in the views ui
    * or entered in the exposed filters.
    */
@@ -858,7 +860,7 @@ public function groupForm(&$form, FormStateInterface $form_state) {
     }
     foreach ($this->options['group_info']['group_items'] as $id => $group) {
       if (!empty($group['title'])) {
-        $groups[$id] = $id != 'All' ? $this->t($group['title']) : $group['title'];
+        $groups[$id] = $group['title'];
       }
     }
 
diff --git a/core/modules/views/src/Plugin/views/filter/InOperator.php b/core/modules/views/src/Plugin/views/filter/InOperator.php
index 5fdeeb958b..3a8d5de6b2 100644
--- a/core/modules/views/src/Plugin/views/filter/InOperator.php
+++ b/core/modules/views/src/Plugin/views/filter/InOperator.php
@@ -72,7 +72,7 @@ public function getValueOptions() {
       }
     }
     else {
-      $this->valueOptions = [t('Yes'), $this->t('No')];
+      $this->valueOptions = [$this->t('Yes'), $this->t('No')];
     }
 
     return $this->valueOptions;
diff --git a/core/modules/views/src/Plugin/views/query/QueryPluginBase.php b/core/modules/views/src/Plugin/views/query/QueryPluginBase.php
index 639a249e61..582023b3ea 100644
--- a/core/modules/views/src/Plugin/views/query/QueryPluginBase.php
+++ b/core/modules/views/src/Plugin/views/query/QueryPluginBase.php
@@ -172,7 +172,7 @@ public function getLimit() {
    * @param $where
    *   'where' or 'having'.
    *
-   * @return
+   * @return int|string
    *   The group ID generated.
    */
   public function setWhereGroup($type = 'AND', $group = NULL, $where = 'where') {
diff --git a/core/modules/views/src/Plugin/views/query/Sql.php b/core/modules/views/src/Plugin/views/query/Sql.php
index 28571aecfe..ae00eac454 100644
--- a/core/modules/views/src/Plugin/views/query/Sql.php
+++ b/core/modules/views/src/Plugin/views/query/Sql.php
@@ -41,21 +41,26 @@ class Sql extends QueryPluginBase {
   public $tables = [];
 
   /**
-   * Holds an array of relationships, which are aliases of the primary
-   * table that represent different ways to join the same table in.
+   * Holds an array of relationships.
+   *
+   * These are aliases of the primary table that represent different ways to
+   * join the same table in.
    */
   public $relationships = [];
 
   /**
-   * An array of sections of the WHERE query. Each section is in itself
-   * an array of pieces and a flag as to whether or not it should be AND
-   * or OR.
+   * An array of sections of the WHERE query.
+   *
+   * Each section is in itself an array of pieces and a flag as to whether or
+   * not it should be AND or OR.
    */
+
   public $where = [];
   /**
-   * An array of sections of the HAVING query. Each section is in itself
-   * an array of pieces and a flag as to whether or not it should be AND
-   * or OR.
+   * An array of sections of the HAVING query.
+   *
+   * Each section is in itself an array of pieces and a flag as to whether or
+   * not it should be AND or OR.
    */
   public $having = [];
 
@@ -580,7 +585,7 @@ protected function markTable($table, $relationship, $alias) {
    * @param \Drupal\views\Plugin\views\join\JoinPluginBase $join
    *   A Join object (or derived object) to join the alias in.
    *
-   * @return
+   * @return string|null
    *   The alias used to refer to this specific table, or NULL if the table
    *   cannot be ensured.
    */
diff --git a/core/modules/views/src/Plugin/views/relationship/EntityReverse.php b/core/modules/views/src/Plugin/views/relationship/EntityReverse.php
index 9ebba38603..64c3d70557 100644
--- a/core/modules/views/src/Plugin/views/relationship/EntityReverse.php
+++ b/core/modules/views/src/Plugin/views/relationship/EntityReverse.php
@@ -79,13 +79,7 @@ public function query() {
       $first['extra'] = $this->definition['join_extra'];
     }
 
-    if (!empty($def['join_id'])) {
-      $id = $def['join_id'];
-    }
-    else {
-      $id = 'standard';
-    }
-    $first_join = $this->joinManager->createInstance($id, $first);
+    $first_join = $this->joinManager->createInstance('standard', $first);
 
     $this->first_alias = $this->query->addTable($this->definition['field table'], $this->relationship, $first_join);
 
@@ -103,13 +97,7 @@ public function query() {
       $second['type'] = 'INNER';
     }
 
-    if (!empty($def['join_id'])) {
-      $id = $def['join_id'];
-    }
-    else {
-      $id = 'standard';
-    }
-    $second_join = $this->joinManager->createInstance($id, $second);
+    $second_join = $this->joinManager->createInstance('standard', $second);
     $second_join->adjusted = TRUE;
 
     // use a short alias for this:
diff --git a/core/modules/views/src/Plugin/views/row/EntityRow.php b/core/modules/views/src/Plugin/views/row/EntityRow.php
index f67dedcbb0..bbcdee8983 100644
--- a/core/modules/views/src/Plugin/views/row/EntityRow.php
+++ b/core/modules/views/src/Plugin/views/row/EntityRow.php
@@ -202,7 +202,11 @@ public function summaryTitle() {
    */
   public function query() {
     parent::query();
-    $this->getEntityTranslationRenderer()->query($this->view->getQuery());
+    $relationship_table = NULL;
+    if (isset($this->options['relationship'], $this->view->relationship[$this->options['relationship']])) {
+      $relationship_table = $this->view->relationship[$this->options['relationship']]->alias;
+    }
+    $this->getEntityTranslationRenderer()->query($this->view->getQuery(), $relationship_table);
   }
 
   /**
@@ -211,7 +215,7 @@ public function query() {
   public function preRender($result) {
     parent::preRender($result);
     if ($result) {
-      $this->getEntityTranslationRenderer()->preRender($result);
+      $this->getEntityTranslationRenderer()->preRenderByRelationship($result, isset($this->options['relationship']) ? $this->options['relationship'] : 'none');
     }
   }
 
@@ -219,7 +223,7 @@ public function preRender($result) {
    * {@inheritdoc}
    */
   public function render($row) {
-    return $this->getEntityTranslationRenderer()->render($row);
+    return $this->getEntityTranslationRenderer()->renderByRelationship($row, isset($this->options['relationship']) ? $this->options['relationship'] : 'none');
   }
 
   /**
diff --git a/core/modules/views/src/Plugin/views/row/RowPluginBase.php b/core/modules/views/src/Plugin/views/row/RowPluginBase.php
index 06772d356b..3577314bab 100644
--- a/core/modules/views/src/Plugin/views/row/RowPluginBase.php
+++ b/core/modules/views/src/Plugin/views/row/RowPluginBase.php
@@ -100,7 +100,7 @@ public function buildOptionsForm(&$form, FormStateInterface $form_state) {
         $data = Views::viewsData()->get($relationship['table']);
         $base = $data[$relationship['field']]['relationship']['base'];
         if ($base == $this->base_table) {
-          $relationship_handler->init($executable, $relationship);
+          $relationship_handler->init($executable, $this->displayHandler, $relationship);
           $relationship_options[$relationship['id']] = $relationship_handler->adminLabel();
         }
       }
diff --git a/core/modules/views/src/Plugin/views/style/Rss.php b/core/modules/views/src/Plugin/views/style/Rss.php
index 8095e36f86..bea3089ab2 100644
--- a/core/modules/views/src/Plugin/views/style/Rss.php
+++ b/core/modules/views/src/Plugin/views/style/Rss.php
@@ -84,7 +84,7 @@ public function buildOptionsForm(&$form, FormStateInterface $form_state) {
   /**
    * Return an array of additional XHTML elements to add to the channel.
    *
-   * @return
+   * @return array
    *   A render array.
    */
   protected function getChannelElements() {
diff --git a/core/modules/views/src/Plugin/views/style/StylePluginBase.php b/core/modules/views/src/Plugin/views/style/StylePluginBase.php
index 1d2a63a62f..029e443097 100644
--- a/core/modules/views/src/Plugin/views/style/StylePluginBase.php
+++ b/core/modules/views/src/Plugin/views/style/StylePluginBase.php
@@ -526,7 +526,7 @@ public function renderGroupingSets($sets) {
    *   $groupings is an old-style string or if the rendered option is missing
    *   for a grouping instruction.
    *
-   * @return
+   * @return array
    *   The grouped record set.
    *   A nested set structure is generated if multiple grouping fields are used.
    *
diff --git a/core/modules/views/src/Plugin/views/style/Table.php b/core/modules/views/src/Plugin/views/style/Table.php
index fb75b0dedd..a933104bc2 100644
--- a/core/modules/views/src/Plugin/views/style/Table.php
+++ b/core/modules/views/src/Plugin/views/style/Table.php
@@ -336,7 +336,7 @@ public function buildOptionsForm(&$form, FormStateInterface $form_state) {
           'views-align-left' => $this->t('Left', [], ['context' => 'Text alignment']),
           'views-align-center' => $this->t('Center', [], ['context' => 'Text alignment']),
           'views-align-right' => $this->t('Right', [], ['context' => 'Text alignment']),
-          ],
+        ],
         '#states' => [
           'visible' => [
             $column_selector => ['value' => $field],
diff --git a/core/modules/views/src/Plugin/views/wizard/WizardPluginBase.php b/core/modules/views/src/Plugin/views/wizard/WizardPluginBase.php
index 206cf86430..6205b97efd 100644
--- a/core/modules/views/src/Plugin/views/wizard/WizardPluginBase.php
+++ b/core/modules/views/src/Plugin/views/wizard/WizardPluginBase.php
@@ -514,7 +514,7 @@ public function buildForm(array $form, FormStateInterface $form_state) {
    *   An array representing the current version of the #select element within
    *   the form.
    *
-   * @return
+   * @return array|string
    *   The current value of the #select element. A common use for this is to feed
    *   it back into $element['#default_value'] so that the form will be rendered
    *   with the correct value selected.
@@ -1044,7 +1044,7 @@ protected function defaultDisplaySortsUser($form, FormStateInterface $form_state
           'entity_type' => $data['table']['entity type'] ?? NULL,
           'entity_field' => $data[$column]['entity field'] ?? NULL,
           'plugin_id' => $data[$column]['sort']['id'],
-       ];
+        ];
       }
     }
 
diff --git a/core/modules/views/src/Tests/AssertViewsCacheTagsTrait.php b/core/modules/views/src/Tests/AssertViewsCacheTagsTrait.php
index e40fbb959c..897290b287 100644
--- a/core/modules/views/src/Tests/AssertViewsCacheTagsTrait.php
+++ b/core/modules/views/src/Tests/AssertViewsCacheTagsTrait.php
@@ -3,15 +3,12 @@
 namespace Drupal\views\Tests;
 
 use Drupal\Core\Cache\Cache;
-use Drupal\Tests\system\Functional\Cache\AssertPageCacheContextsAndTagsTrait;
 use Drupal\views\Plugin\views\display\DisplayPluginBase;
 use Drupal\views\ViewExecutable;
 use Symfony\Component\HttpFoundation\Request;
 
 trait AssertViewsCacheTagsTrait {
 
-  use AssertPageCacheContextsAndTagsTrait;
-
   /**
    * Asserts a view's result & render cache items' cache tags.
    *
diff --git a/core/modules/views/src/ViewExecutable.php b/core/modules/views/src/ViewExecutable.php
index 77165e691c..84049aec1f 100644
--- a/core/modules/views/src/ViewExecutable.php
+++ b/core/modules/views/src/ViewExecutable.php
@@ -24,6 +24,7 @@
  * @see https://www.drupal.org/node/2849674
  * @see https://bugs.php.net/bug.php?id=66052
  */
+#[\AllowDynamicProperties]
 class ViewExecutable {
 
   /**
@@ -350,9 +351,12 @@ class ViewExecutable {
   public $inited;
 
   /**
-   * The rendered output of the exposed form.
+   * The render array for the exposed form.
    *
-   * @var string
+   * In cases that the exposed form is rendered as a block this will be an
+   * empty array.
+   *
+   * @var array
    */
   public $exposed_widgets;
 
diff --git a/core/modules/views/src/Views.php b/core/modules/views/src/Views.php
index 03218ac94e..33ec07304a 100644
--- a/core/modules/views/src/Views.php
+++ b/core/modules/views/src/Views.php
@@ -137,7 +137,7 @@ public static function getView($id) {
    * @param array $base
    *   An array of possible base tables.
    *
-   * @return
+   * @return array
    *   A keyed array of in the form of 'base_table' => 'Description'.
    */
   public static function fetchPluginNames($type, $key = NULL, array $base = []) {
@@ -308,7 +308,7 @@ public static function getViewsAsOptions($views_only = FALSE, $filter = 'all', $
       case 'disabled':
       case 'enabled':
         $filter = ucfirst($filter);
-        $views = call_user_func("static::get{$filter}Views");
+        $views = call_user_func(static::class . "::get{$filter}Views");
         break;
 
       default:
diff --git a/core/modules/views/src/ViewsConfigUpdater.php b/core/modules/views/src/ViewsConfigUpdater.php
index ff35e9626e..c0f5b4c55a 100644
--- a/core/modules/views/src/ViewsConfigUpdater.php
+++ b/core/modules/views/src/ViewsConfigUpdater.php
@@ -151,4 +151,54 @@ protected function processDisplayHandlers(ViewEntityInterface $view, $return_on_
     return $changed;
   }
 
+  /**
+   * Add eager load option to all oembed type field configurations.
+   *
+   * @param \Drupal\views\ViewEntityInterface $view
+   *   The View to update.
+   *
+   * @return bool
+   *   Whether the view was updated.
+   */
+  public function needsOembedEagerLoadFieldUpdate(ViewEntityInterface $view) {
+    return $this->processDisplayHandlers($view, TRUE, function (&$handler, $handler_type) use ($view) {
+      return $this->processOembedEagerLoadFieldHandler($handler, $handler_type, $view);
+    });
+  }
+
+  /**
+   * Processes oembed type fields.
+   *
+   * @param array $handler
+   *   A display handler.
+   * @param string $handler_type
+   *   The handler type.
+   * @param \Drupal\views\ViewEntityInterface $view
+   *   The View being updated.
+   *
+   * @return bool
+   *   Whether the handler was updated.
+   */
+  protected function processOembedEagerLoadFieldHandler(array &$handler, string $handler_type, ViewEntityInterface $view): bool {
+    $changed = FALSE;
+
+    // Add any missing settings for lazy loading.
+    if (($handler_type === 'field')
+      && isset($handler['plugin_id'], $handler['type'])
+      && $handler['plugin_id'] === 'field'
+      && $handler['type'] === 'oembed'
+      && !array_key_exists('loading', $handler['settings'])) {
+      $handler['settings']['loading'] = ['attribute' => 'eager'];
+      $changed = TRUE;
+    }
+
+    $deprecations_triggered = &$this->triggeredDeprecations['3212351'][$view->id()];
+    if ($this->deprecationsEnabled && $changed && !$deprecations_triggered) {
+      $deprecations_triggered = TRUE;
+      @trigger_error(sprintf('The oEmbed loading attribute update for view "%s" is deprecated in drupal:10.1.0 and is removed from drupal:11.0.0. Profile, module and theme provided configuration should be updated to accommodate the changes described at https://www.drupal.org/node/3275103.', $view->id()), E_USER_DEPRECATED);
+    }
+
+    return $changed;
+  }
+
 }
diff --git a/core/modules/views/tests/modules/views_form_test/views_form_test.info.yml b/core/modules/views/tests/modules/views_form_test/views_form_test.info.yml
new file mode 100644
index 0000000000..9d642b457f
--- /dev/null
+++ b/core/modules/views/tests/modules/views_form_test/views_form_test.info.yml
@@ -0,0 +1,8 @@
+name: 'Views Form Test'
+type: module
+description: 'Provides hook to alter views form for testing purposes.'
+package: Testing
+version: VERSION
+dependencies:
+  - drupal:views
+  - drupal:media
diff --git a/core/modules/views/tests/modules/views_form_test/views_form_test.module b/core/modules/views/tests/modules/views_form_test/views_form_test.module
new file mode 100644
index 0000000000..678d45153a
--- /dev/null
+++ b/core/modules/views/tests/modules/views_form_test/views_form_test.module
@@ -0,0 +1,17 @@
+<?php
+
+/**
+ * @file
+ * Hook implementations for this module.
+ */
+
+use Drupal\Core\Form\FormStateInterface;
+
+/**
+ * Implements hook_form_BASE_FORM_ID_alter().
+ */
+function views_form_test_form_views_form_media_media_page_list_alter(&$form, FormStateInterface $form_state, $form_id) {
+  $state = \Drupal::state();
+  $count = $state->get('hook_form_BASE_FORM_ID_alter_count', 0);
+  $state->set('hook_form_BASE_FORM_ID_alter_count', $count + 1);
+}
diff --git a/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_entity_row.yml b/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_entity_row.yml
index 6eafce72e6..58189a30cd 100644
--- a/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_entity_row.yml
+++ b/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_entity_row.yml
@@ -6,8 +6,8 @@ label: ''
 module: views
 description: ''
 tag: ''
-base_table: taxonomy_term_field_data
-base_field: nid
+base_table: entity_test
+base_field: id
 display:
   default:
     display_options:
@@ -20,10 +20,17 @@ display:
           offset: 0
         type: none
       row:
-        type: 'entity:taxonomy_term'
+        type: 'entity:entity_test'
         options:
           relationship: none
           view_mode: full
+      relationships:
+        user_id:
+          table: entity_test
+          field: user_id
+          id: user_id
+          relationship: none
+          plugin_id: standard
     display_plugin: default
     display_title: Default
     id: default
diff --git a/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_entity_row_renderers.yml b/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_entity_row_renderers.yml
index 9fcf52d2db..3947592d12 100644
--- a/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_entity_row_renderers.yml
+++ b/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_entity_row_renderers.yml
@@ -69,3 +69,272 @@ display:
         row: false
       row:
         type: fields
+  page_3:
+    display_plugin: page
+    id: page_3
+    display_title: 'Page 3'
+    position: 3
+    display_options:
+      rendering_language: '***LANGUAGE_entity_translation***'
+      path: test_entity_row_renderers/entities_relationship
+      display_extenders: { }
+      display_description: ''
+      relationships:
+        field_reference:
+          id: field_reference
+          table: node__field_reference
+          field: field_reference
+          relationship: none
+          group_type: group
+          admin_label: 'field_reference: Content'
+          required: false
+          plugin_id: standard
+      defaults:
+        relationships: false
+        filters: false
+        filter_groups: false
+        sorts: false
+        row: false
+      filters:
+        langcode:
+          id: langcode
+          table: node_field_data
+          field: langcode
+          relationship: none
+          group_type: group
+          admin_label: ''
+          operator: in
+          value:
+            en: en
+          group: 1
+          exposed: false
+          expose:
+            operator_id: ''
+            label: ''
+            description: ''
+            use_operator: false
+            operator: ''
+            operator_limit_selection: false
+            operator_list: { }
+            identifier: ''
+            required: false
+            remember: false
+            multiple: false
+            remember_roles:
+              authenticated: authenticated
+            reduce: false
+          is_grouped: false
+          group_info:
+            label: ''
+            description: ''
+            identifier: ''
+            optional: true
+            widget: select
+            multiple: false
+            remember: false
+            default_group: All
+            default_group_multiple: { }
+            group_items: { }
+          entity_type: node
+          entity_field: langcode
+          plugin_id: language
+      filter_groups:
+        operator: AND
+        groups:
+          1: AND
+      sorts:
+        title:
+          id: title
+          table: node_field_data
+          field: title
+          plugin_id: standard
+          entity_type: node
+          entity_field: title
+          expose:
+            field_identifier: title
+        title_1:
+          id: title_1
+          table: node_field_data
+          field: title
+          relationship: field_reference
+          group_type: group
+          admin_label: ''
+          order: ASC
+          exposed: false
+          expose:
+            label: ''
+            field_identifier: ''
+          entity_type: node
+          entity_field: title
+          plugin_id: standard
+      row:
+        type: 'entity:node'
+        options:
+          relationship: field_reference
+          view_mode: teaser
+  page_4:
+    display_plugin: page
+    id: page_4
+    display_title: 'Page 4'
+    position: 3
+    display_options:
+      rendering_language: '***LANGUAGE_entity_default***'
+      path: test_entity_row_renderers/fields_relationship
+      display_description: ''
+      relationships:
+        field_reference:
+          id: field_reference
+          table: node__field_reference
+          field: field_reference
+          relationship: none
+          group_type: group
+          admin_label: 'field_reference: Content'
+          required: false
+          plugin_id: standard
+      defaults:
+        relationships: false
+        filters: false
+        filter_groups: false
+        sorts: false
+        row: false
+        fields: false
+      filters:
+        langcode:
+          id: langcode
+          table: node_field_data
+          field: langcode
+          relationship: none
+          group_type: group
+          admin_label: ''
+          operator: in
+          value:
+            en: en
+          group: 1
+          exposed: false
+          expose:
+            operator_id: ''
+            label: ''
+            description: ''
+            use_operator: false
+            operator: ''
+            operator_limit_selection: false
+            operator_list: { }
+            identifier: ''
+            required: false
+            remember: false
+            multiple: false
+            remember_roles:
+              authenticated: authenticated
+            reduce: false
+          is_grouped: false
+          group_info:
+            label: ''
+            description: ''
+            identifier: ''
+            optional: true
+            widget: select
+            multiple: false
+            remember: false
+            default_group: All
+            default_group_multiple: { }
+            group_items: { }
+          entity_type: node
+          entity_field: langcode
+          plugin_id: language
+      filter_groups:
+        operator: AND
+        groups:
+          1: AND
+      sorts:
+        title:
+          id: title
+          table: node_field_data
+          field: title
+          plugin_id: standard
+          entity_type: node
+          entity_field: title
+          expose:
+            field_identifier: title
+        title_1:
+          id: title_1
+          table: node_field_data
+          field: title
+          relationship: field_reference
+          group_type: group
+          admin_label: ''
+          order: ASC
+          exposed: false
+          expose:
+            label: ''
+            field_identifier: ''
+          entity_type: node
+          entity_field: title
+          plugin_id: standard
+      row:
+        type: fields
+      fields:
+        title:
+          id: title
+          table: node_field_data
+          field: title
+          relationship: field_reference
+          group_type: group
+          admin_label: ''
+          label: ''
+          exclude: false
+          alter:
+            alter_text: false
+            text: ''
+            make_link: false
+            path: ''
+            absolute: false
+            external: false
+            replace_spaces: false
+            path_case: none
+            trim_whitespace: false
+            alt: ''
+            rel: ''
+            link_class: ''
+            prefix: ''
+            suffix: ''
+            target: ''
+            nl2br: false
+            max_length: 0
+            word_boundary: true
+            ellipsis: true
+            more_link: false
+            more_link_text: ''
+            more_link_path: ''
+            strip_tags: false
+            trim: false
+            preserve_tags: ''
+            html: false
+          element_type: ''
+          element_class: ''
+          element_label_type: ''
+          element_label_class: ''
+          element_label_colon: false
+          element_wrapper_type: ''
+          element_wrapper_class: ''
+          element_default_classes: true
+          empty: ''
+          hide_empty: false
+          empty_zero: false
+          hide_alter_empty: true
+          click_sort_column: value
+          type: string
+          settings:
+            link_to_entity: false
+          group_column: value
+          group_columns: { }
+          group_rows: true
+          delta_limit: 0
+          delta_offset: 0
+          delta_reversed: false
+          delta_first_last: false
+          multi_type: separator
+          separator: ', '
+          field_api_classes: false
+          entity_type: node
+          entity_field: title
+          plugin_id: field
diff --git a/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_exposed_form_pager.yml b/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_exposed_form_pager.yml
index a580bc18bd..d4324f180e 100644
--- a/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_exposed_form_pager.yml
+++ b/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_exposed_form_pager.yml
@@ -2,9 +2,9 @@ langcode: en
 status: true
 dependencies:
   config:
-  - core.entity_view_mode.node.teaser
+    - core.entity_view_mode.node.teaser
   module:
-  - node
+    - node
 id: test_exposed_form_pager
 label: ''
 module: views
@@ -149,10 +149,10 @@ display:
     cache_metadata:
       max-age: -1
       contexts:
-      - 'languages:language_interface'
-      - url
-      - url.query_args
-      - 'user.node_grants:view'
+        - 'languages:language_interface'
+        - url
+        - url.query_args
+        - 'user.node_grants:view'
       tags: {  }
   page_1:
     display_options:
@@ -165,8 +165,8 @@ display:
     cache_metadata:
       max-age: -1
       contexts:
-      - 'languages:language_interface'
-      - url
-      - url.query_args
-      - 'user.node_grants:view'
+        - 'languages:language_interface'
+        - url
+        - url.query_args
+        - 'user.node_grants:view'
       tags: {  }
diff --git a/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_taxonomy_glossary.yml b/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_taxonomy_glossary.yml
index ffa1becad1..64c7ec9833 100644
--- a/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_taxonomy_glossary.yml
+++ b/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_taxonomy_glossary.yml
@@ -12,84 +12,34 @@ base_table: taxonomy_term_field_data
 base_field: tid
 display:
   default:
-    display_plugin: default
     id: default
     display_title: Default
+    display_plugin: default
     position: 0
     display_options:
-      access:
-        type: none
-        options: {  }
-      cache:
-        type: tag
-        options: {  }
-      query:
-        type: views_query
-        options:
-          disable_sql_rewrite: false
-          distinct: false
-          replica: false
-          query_comment: ''
-          query_tags: {  }
-      exposed_form:
-        type: basic
-        options:
-          submit_button: Apply
-          reset_button: false
-          reset_button_label: Reset
-          exposed_sorts_label: 'Sort by'
-          expose_sort_order: true
-          sort_asc_label: Asc
-          sort_desc_label: Desc
-      pager:
-        type: mini
-        options:
-          items_per_page: 10
-          offset: 0
-          id: 0
-          total_pages: null
-          expose:
-            items_per_page: false
-            items_per_page_label: 'Items per page'
-            items_per_page_options: '5, 10, 25, 50'
-            items_per_page_options_all: false
-            items_per_page_options_all_label: '- All -'
-            offset: false
-            offset_label: Offset
-          tags:
-            previous: ‹‹
-            next: ››
-      style:
-        type: default
-      row:
-        type: fields
+      title: test_taxonomy_glossary
       fields:
         name:
           id: name
           table: taxonomy_term_field_data
           field: name
+          relationship: none
+          group_type: group
+          admin_label: ''
           entity_type: taxonomy_term
           entity_field: name
+          plugin_id: term_name
           label: ''
+          exclude: false
           alter:
             alter_text: false
             make_link: false
             absolute: false
-            trim: false
             word_boundary: false
             ellipsis: false
             strip_tags: false
+            trim: false
             html: false
-          hide_empty: false
-          empty_zero: false
-          type: string
-          settings:
-            link_to_entity: true
-          plugin_id: term_name
-          relationship: none
-          group_type: group
-          admin_label: ''
-          exclude: false
           element_type: ''
           element_class: ''
           element_label_type: ''
@@ -99,8 +49,13 @@ display:
           element_wrapper_class: ''
           element_default_classes: true
           empty: ''
+          hide_empty: false
+          empty_zero: false
           hide_alter_empty: true
           click_sort_column: value
+          type: string
+          settings:
+            link_to_entity: true
           group_column: value
           group_columns: {  }
           group_rows: true
@@ -112,13 +67,42 @@ display:
           separator: ', '
           field_api_classes: false
           convert_spaces: false
-      filters: {  }
-      sorts: {  }
-      title: test_taxonomy_glossary
-      header: {  }
-      footer: {  }
+      pager:
+        type: mini
+        options:
+          offset: 0
+          items_per_page: 10
+          total_pages: null
+          id: 0
+          tags:
+            next: ››
+            previous: ‹‹
+          expose:
+            items_per_page: false
+            items_per_page_label: 'Items per page'
+            items_per_page_options: '5, 10, 25, 50'
+            items_per_page_options_all: false
+            items_per_page_options_all_label: '- All -'
+            offset: false
+            offset_label: Offset
+      exposed_form:
+        type: basic
+        options:
+          submit_button: Apply
+          reset_button: false
+          reset_button_label: Reset
+          exposed_sorts_label: 'Sort by'
+          expose_sort_order: true
+          sort_asc_label: Asc
+          sort_desc_label: Desc
+      access:
+        type: none
+        options: {  }
+      cache:
+        type: tag
+        options: {  }
       empty: {  }
-      relationships: {  }
+      sorts: {  }
       arguments:
         name:
           id: name
@@ -127,6 +111,9 @@ display:
           relationship: none
           group_type: group
           admin_label: ''
+          entity_type: taxonomy_term
+          entity_field: name
+          plugin_id: string
           default_action: ignore
           exception:
             value: all
@@ -141,8 +128,8 @@ display:
           summary_options:
             base_path: ''
             count: true
-            items_per_page: 25
             override: false
+            items_per_page: 25
           summary:
             sort_order: asc
             number_of_records: 0
@@ -160,22 +147,102 @@ display:
           break_phrase: false
           add_table: false
           require_value: false
+      filters: {  }
+      style:
+        type: default
+      row:
+        type: fields
+      query:
+        type: views_query
+        options:
+          query_comment: ''
+          disable_sql_rewrite: false
+          distinct: false
+          replica: false
+          query_tags: {  }
+      relationships: {  }
+      header: {  }
+      footer: {  }
+      display_extenders: {  }
+    cache_metadata:
+      max-age: -1
+      contexts:
+        - 'languages:language_content'
+        - 'languages:language_interface'
+        - url
+        - url.query_args
+      tags: {  }
+  attachment_1:
+    id: attachment_1
+    display_title: Attachment
+    display_plugin: attachment
+    position: 2
+    display_options:
+      pager:
+        type: none
+        options:
+          offset: 0
+      arguments:
+        name:
+          id: name
+          table: taxonomy_term_field_data
+          field: name
+          relationship: none
+          group_type: group
+          admin_label: ''
           entity_type: taxonomy_term
           entity_field: name
           plugin_id: string
+          default_action: summary
+          exception:
+            value: all
+            title_enable: false
+            title: All
+          title_enable: false
+          title: ''
+          default_argument_type: fixed
+          default_argument_options:
+            argument: ''
+          default_argument_skip_url: false
+          summary_options:
+            base_path: ''
+            count: true
+            override: false
+            items_per_page: 25
+          summary:
+            sort_order: asc
+            number_of_records: 0
+            format: default_summary
+          specify_validation: true
+          validate:
+            type: none
+            fail: 'not found'
+          validate_options: {  }
+          glossary: true
+          limit: 1
+          case: lower
+          path_case: lower
+          transform_dash: false
+          break_phrase: false
+          add_table: false
+          require_value: false
+      defaults:
+        arguments: false
       display_extenders: {  }
+      displays:
+        default: default
+        page_1: page_1
     cache_metadata:
       max-age: -1
       contexts:
         - 'languages:language_content'
         - 'languages:language_interface'
         - url
-        - url.query_args
       tags: {  }
   page_1:
-    display_plugin: page
     id: page_1
     display_title: Page
+    display_plugin: page
     position: 1
     display_options:
       display_extenders: {  }
diff --git a/core/modules/views/tests/modules/views_test_data/src/Plugin/views/field/FieldFormButtonTest.php b/core/modules/views/tests/modules/views_test_data/src/Plugin/views/field/FieldFormButtonTest.php
index 2367981ad5..1e81e51e23 100644
--- a/core/modules/views/tests/modules/views_test_data/src/Plugin/views/field/FieldFormButtonTest.php
+++ b/core/modules/views/tests/modules/views_test_data/src/Plugin/views/field/FieldFormButtonTest.php
@@ -46,7 +46,7 @@ public function viewsForm(&$form, FormStateInterface $form_state) {
     foreach ($this->view->result as $row_index => $row) {
       $form[$this->options['id']][$row_index] = [
         '#type' => 'submit',
-        '#value' => t('Test Button'),
+        '#value' => $this->t('Test Button'),
         '#name' => 'test-button-' . $row_index,
         '#test_button' => TRUE,
         '#row_index' => $row_index,
diff --git a/core/modules/views/tests/modules/views_test_data/src/Plugin/views/filter/FilterTest.php b/core/modules/views/tests/modules/views_test_data/src/Plugin/views/filter/FilterTest.php
index 5bc7a190cd..b9557d2ef0 100644
--- a/core/modules/views/tests/modules/views_test_data/src/Plugin/views/filter/FilterTest.php
+++ b/core/modules/views/tests/modules/views_test_data/src/Plugin/views/filter/FilterTest.php
@@ -23,9 +23,7 @@ protected function defineOptions() {
   }
 
   /**
-   * Overrides Drupal\views\Plugin\views\row\RowPluginBase::buildOptionsForm().
-   *
-   * @return array
+   * {@inheritdoc}
    */
   public function buildOptionsForm(&$form, FormStateInterface $form_state) {
     parent::buildOptionsForm($form, $form_state);
diff --git a/core/modules/views/tests/src/Functional/DefaultViewsTest.php b/core/modules/views/tests/src/Functional/DefaultViewsTest.php
index 8a623e3e35..4717b3f24f 100644
--- a/core/modules/views/tests/src/Functional/DefaultViewsTest.php
+++ b/core/modules/views/tests/src/Functional/DefaultViewsTest.php
@@ -56,6 +56,9 @@ class DefaultViewsTest extends ViewTestBase {
     'glossary' => ['all'],
   ];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp($import_test_views = TRUE, $modules = []): void {
     parent::setUp($import_test_views, $modules);
 
diff --git a/core/modules/views/tests/src/Functional/GlossaryTest.php b/core/modules/views/tests/src/Functional/GlossaryTest.php
index 3b1b8966f5..3b89663253 100644
--- a/core/modules/views/tests/src/Functional/GlossaryTest.php
+++ b/core/modules/views/tests/src/Functional/GlossaryTest.php
@@ -4,6 +4,7 @@
 
 use Drupal\Core\Language\LanguageInterface;
 use Drupal\Core\Url;
+use Drupal\Tests\system\Functional\Cache\AssertPageCacheContextsAndTagsTrait;
 use Drupal\views\Tests\AssertViewsCacheTagsTrait;
 use Drupal\views\Views;
 
@@ -14,6 +15,7 @@
  */
 class GlossaryTest extends ViewTestBase {
 
+  use AssertPageCacheContextsAndTagsTrait;
   use AssertViewsCacheTagsTrait;
 
   /**
diff --git a/core/modules/views/tests/src/Functional/Handler/AreaTest.php b/core/modules/views/tests/src/Functional/Handler/AreaTest.php
index 8c516c76ef..38aadfbc1f 100644
--- a/core/modules/views/tests/src/Functional/Handler/AreaTest.php
+++ b/core/modules/views/tests/src/Functional/Handler/AreaTest.php
@@ -34,6 +34,9 @@ class AreaTest extends ViewTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp($import_test_views = TRUE, $modules = ['views_test_config']): void {
     parent::setUp($import_test_views, $modules);
 
@@ -175,8 +178,7 @@ public function testRenderAreaToken() {
     $this->drupalGet('admin/structure/views/nojs/handler/test_example_area/default/empty/test_example');
 
     // Test that the list is token present.
-    $element = $this->xpath('//ul[@class="global-tokens"]');
-    $this->assertNotEmpty($element, 'Token list found on the options form.');
+    $this->assertSession()->elementExists('xpath', '//ul[@class="global-tokens"]');
 
     $empty_handler = &$view->empty['test_example'];
 
diff --git a/core/modules/views/tests/src/Functional/Handler/FieldEntityOperationsTest.php b/core/modules/views/tests/src/Functional/Handler/FieldEntityOperationsTest.php
index 10307b2b1e..3d3ba8c500 100644
--- a/core/modules/views/tests/src/Functional/Handler/FieldEntityOperationsTest.php
+++ b/core/modules/views/tests/src/Functional/Handler/FieldEntityOperationsTest.php
@@ -33,6 +33,9 @@ class FieldEntityOperationsTest extends ViewTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp($import_test_views = TRUE, $modules = ['views_test_config']): void {
     parent::setUp($import_test_views, $modules);
 
diff --git a/core/modules/views/tests/src/Functional/Handler/FieldWebTest.php b/core/modules/views/tests/src/Functional/Handler/FieldWebTest.php
index 17c7ee0f3f..565974cb3a 100644
--- a/core/modules/views/tests/src/Functional/Handler/FieldWebTest.php
+++ b/core/modules/views/tests/src/Functional/Handler/FieldWebTest.php
@@ -48,6 +48,9 @@ class FieldWebTest extends ViewTestBase {
     'views_test_data_name' => 'name',
   ];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp($import_test_views = TRUE, $modules = ['views_test_config']): void {
     parent::setUp($import_test_views, $modules);
 
diff --git a/core/modules/views/tests/src/Functional/Handler/FilterDateTest.php b/core/modules/views/tests/src/Functional/Handler/FilterDateTest.php
index acf9280843..5e2614d616 100644
--- a/core/modules/views/tests/src/Functional/Handler/FilterDateTest.php
+++ b/core/modules/views/tests/src/Functional/Handler/FilterDateTest.php
@@ -53,6 +53,9 @@ class FilterDateTest extends ViewTestBase {
    */
   protected array $map;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp($import_test_views = TRUE, $modules = ['views_test_config']): void {
     parent::setUp($import_test_views, $modules);
     $this->dateFormatter = $this->container->get('date.formatter');
diff --git a/core/modules/views/tests/src/Functional/Handler/HandlerTest.php b/core/modules/views/tests/src/Functional/Handler/HandlerTest.php
index 9844959396..65810230ed 100644
--- a/core/modules/views/tests/src/Functional/Handler/HandlerTest.php
+++ b/core/modules/views/tests/src/Functional/Handler/HandlerTest.php
@@ -39,6 +39,9 @@ class HandlerTest extends ViewTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp($import_test_views = TRUE, $modules = ['views_test_config']): void {
     parent::setUp($import_test_views, $modules);
     $this->drupalCreateContentType(['type' => 'page']);
@@ -255,6 +258,12 @@ public function testRelationshipUI() {
     $expected_options = ['none', 'nid'];
     $this->assertEquals($expected_options, $options);
 
+    // Change the Row plugin to display "Content".
+    $this->drupalGet('admin/structure/views/nojs/display/test_handler_relationships/default/row');
+    $this->submitForm(['row[type]' => 'entity:node'], 'Apply');
+    $this->assertSession()->fieldExists('row_options[relationship]');
+    $this->submitForm(['row_options[view_mode]' => 'default'], 'Apply');
+
     // Remove the relationship and make sure no relationship option appears.
     $this->drupalGet('admin/structure/views/nojs/handler/test_handler_relationships/default/relationship/nid');
     $this->submitForm([], 'Remove');
diff --git a/core/modules/views/tests/src/Functional/Plugin/AccessTest.php b/core/modules/views/tests/src/Functional/Plugin/AccessTest.php
index 80630bfc55..b42ca4e124 100644
--- a/core/modules/views/tests/src/Functional/Plugin/AccessTest.php
+++ b/core/modules/views/tests/src/Functional/Plugin/AccessTest.php
@@ -48,6 +48,9 @@ class AccessTest extends ViewTestBase {
    */
   protected $normalUser;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp($import_test_views = TRUE, $modules = ['views_test_config']): void {
     parent::setUp($import_test_views, $modules);
 
diff --git a/core/modules/views/tests/src/Functional/Plugin/ArgumentDefaultTest.php b/core/modules/views/tests/src/Functional/Plugin/ArgumentDefaultTest.php
index e87372c7ba..fc92ce624c 100644
--- a/core/modules/views/tests/src/Functional/Plugin/ArgumentDefaultTest.php
+++ b/core/modules/views/tests/src/Functional/Plugin/ArgumentDefaultTest.php
@@ -28,7 +28,7 @@ class ArgumentDefaultTest extends ViewTestBase {
     'test_argument_default_current_user',
     'test_argument_default_node',
     'test_argument_default_query_param',
-    ];
+  ];
 
   /**
    * {@inheritdoc}
@@ -42,6 +42,9 @@ class ArgumentDefaultTest extends ViewTestBase {
    */
   protected static $modules = ['node', 'views_ui', 'block'];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp($import_test_views = TRUE, $modules = ['views_test_config']): void {
     parent::setUp($import_test_views, $modules);
 
@@ -145,7 +148,7 @@ public function testArgumentDefaultNode() {
       'bypass node access',
       'access user profiles',
       'view all revisions',
-      ];
+    ];
     $views_admin = $this->drupalCreateUser($permissions);
     $this->drupalLogin($views_admin);
 
@@ -161,11 +164,10 @@ public function testArgumentDefaultNode() {
     // the nodes we expect appear in the respective pages.
     $id = 'view-block-id';
     $this->drupalPlaceBlock("views_block:test_argument_default_node-block_1", ['id' => $id]);
-    $xpath = '//*[@id="block-' . $id . '"]';
     $this->drupalGet('node/' . $node1->id());
-    $this->assertStringContainsString($node1->getTitle(), $this->xpath($xpath)[0]->getText());
+    $this->assertSession()->elementTextContains('xpath', '//*[@id="block-' . $id . '"]', $node1->getTitle());
     $this->drupalGet('node/' . $node2->id());
-    $this->assertStringContainsString($node2->getTitle(), $this->xpath($xpath)[0]->getText());
+    $this->assertSession()->elementTextContains('xpath', '//*[@id="block-' . $id . '"]', $node2->getTitle());
   }
 
   /**
diff --git a/core/modules/views/tests/src/Functional/Plugin/CacheTagTest.php b/core/modules/views/tests/src/Functional/Plugin/CacheTagTest.php
index 8fb8ab3c42..290fd59dde 100644
--- a/core/modules/views/tests/src/Functional/Plugin/CacheTagTest.php
+++ b/core/modules/views/tests/src/Functional/Plugin/CacheTagTest.php
@@ -76,6 +76,9 @@ class CacheTagTest extends ViewTestBase {
    */
   protected $user;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp($import_test_views = TRUE, $modules = ['views_test_config']): void {
     parent::setUp($import_test_views, $modules);
 
diff --git a/core/modules/views/tests/src/Functional/Plugin/DisabledDisplayTest.php b/core/modules/views/tests/src/Functional/Plugin/DisabledDisplayTest.php
index 4a164a5826..54548cb956 100644
--- a/core/modules/views/tests/src/Functional/Plugin/DisabledDisplayTest.php
+++ b/core/modules/views/tests/src/Functional/Plugin/DisabledDisplayTest.php
@@ -31,6 +31,9 @@ class DisabledDisplayTest extends ViewTestBase {
    */
   protected $defaultTheme = 'starterkit_theme';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp($import_test_views = TRUE, $modules = ['views_test_config']): void {
     parent::setUp($import_test_views, $modules);
 
@@ -64,8 +67,7 @@ public function testDisabledDisplays() {
 
     // Enabled page display should return content.
     $this->drupalGet('test-disabled-display');
-    $result = $this->xpath('//h1[@class="page-title"]');
-    $this->assertEquals('test_disabled_display', $result[0]->getText(), 'The enabled page_1 display is accessible.');
+    $this->assertSession()->elementTextEquals('xpath', '//h1[@class="page-title"]', 'test_disabled_display');
 
     // Disabled page view should 404.
     $this->drupalGet('test-disabled-display-2');
@@ -83,8 +85,7 @@ public function testDisabledDisplays() {
 
     // Check that the originally disabled page_2 display is now enabled.
     $this->drupalGet('test-disabled-display-2');
-    $result = $this->xpath('//h1[@class="page-title"]');
-    $this->assertEquals('test_disabled_display', $result[0]->getText(), 'The enabled page_2 display is accessible.');
+    $this->assertSession()->elementTextEquals('xpath', '//h1[@class="page-title"]', 'test_disabled_display');
 
     // Disable each disabled display and save the view.
     foreach ($display_ids as $display_id) {
diff --git a/core/modules/views/tests/src/Functional/Plugin/DisplayAttachmentTest.php b/core/modules/views/tests/src/Functional/Plugin/DisplayAttachmentTest.php
index cb8300ff76..38f1541722 100644
--- a/core/modules/views/tests/src/Functional/Plugin/DisplayAttachmentTest.php
+++ b/core/modules/views/tests/src/Functional/Plugin/DisplayAttachmentTest.php
@@ -32,6 +32,9 @@ class DisplayAttachmentTest extends ViewTestBase {
    */
   protected $defaultTheme = 'starterkit_theme';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp($import_test_views = TRUE, $modules = ['views_test_config']): void {
     parent::setUp($import_test_views, $modules);
 
diff --git a/core/modules/views/tests/src/Functional/Plugin/DisplayFeedTest.php b/core/modules/views/tests/src/Functional/Plugin/DisplayFeedTest.php
index 8cd8aa4211..f2510c690b 100644
--- a/core/modules/views/tests/src/Functional/Plugin/DisplayFeedTest.php
+++ b/core/modules/views/tests/src/Functional/Plugin/DisplayFeedTest.php
@@ -36,6 +36,9 @@ class DisplayFeedTest extends ViewTestBase {
    */
   protected $defaultTheme = 'starterkit_theme';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp($import_test_views = TRUE, $modules = ['views_test_config']): void {
     parent::setUp($import_test_views, $modules);
 
@@ -165,9 +168,8 @@ public function testDisabledFeed() {
 
     // Check that the rss header is output on the page display.
     $this->drupalGet('/test-attached-disabled');
-    $feed_header = $this->xpath('//link[@rel="alternate"]');
-    $this->assertEquals('application/rss+xml', $feed_header[0]->getAttribute('type'), 'The feed link has the type application/rss+xml.');
-    $this->assertStringContainsString('test-attached-disabled.xml', $feed_header[0]->getAttribute('href'), 'Page display contains the correct feed URL.');
+    $this->assertSession()->elementAttributeContains('xpath', '//link[@rel="alternate"]', 'type', 'application/rss+xml');
+    $this->assertSession()->elementAttributeContains('xpath', '//link[@rel="alternate"]', 'href', 'test-attached-disabled.xml');
 
     // Disable the feed display.
     $view->displayHandlers->get('feed_1')->setOption('enabled', FALSE);
@@ -175,8 +177,7 @@ public function testDisabledFeed() {
 
     // Ensure there is no link rel present on the page.
     $this->drupalGet('/test-attached-disabled');
-    $result = $this->xpath('//link[@rel="alternate"]');
-    $this->assertEmpty($result, 'Page display does not contain a feed header.');
+    $this->assertSession()->elementNotExists('xpath', '//link[@rel="alternate"]');
 
     // Ensure the feed attachment returns 'Not found'.
     $this->drupalGet('/test-attached-disabled.xml');
diff --git a/core/modules/views/tests/src/Functional/Plugin/DisplayFeedTranslationTest.php b/core/modules/views/tests/src/Functional/Plugin/DisplayFeedTranslationTest.php
index d5ceed177d..985952eae9 100644
--- a/core/modules/views/tests/src/Functional/Plugin/DisplayFeedTranslationTest.php
+++ b/core/modules/views/tests/src/Functional/Plugin/DisplayFeedTranslationTest.php
@@ -48,6 +48,9 @@ class DisplayFeedTranslationTest extends ViewTestBase {
    */
   protected $langcodes;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp($import_test_views = TRUE, $modules = ['views_test_config']): void {
     parent::setUp($import_test_views, $modules);
 
diff --git a/core/modules/views/tests/src/Functional/Plugin/DisplayTest.php b/core/modules/views/tests/src/Functional/Plugin/DisplayTest.php
index 1121220fa1..2e99e8f565 100644
--- a/core/modules/views/tests/src/Functional/Plugin/DisplayTest.php
+++ b/core/modules/views/tests/src/Functional/Plugin/DisplayTest.php
@@ -34,6 +34,9 @@ class DisplayTest extends ViewTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp($import_test_views = TRUE, $modules = ['views_test_config']): void {
     parent::setUp($import_test_views, $modules);
 
diff --git a/core/modules/views/tests/src/Functional/Plugin/ExposedFormTest.php b/core/modules/views/tests/src/Functional/Plugin/ExposedFormTest.php
index b871112658..4a875a3e3a 100644
--- a/core/modules/views/tests/src/Functional/Plugin/ExposedFormTest.php
+++ b/core/modules/views/tests/src/Functional/Plugin/ExposedFormTest.php
@@ -44,6 +44,9 @@ class ExposedFormTest extends ViewTestBase {
    */
   protected $nodes = [];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp($import_test_views = TRUE, $modules = ['views_test_config']): void {
     parent::setUp($import_test_views, $modules);
 
@@ -247,9 +250,7 @@ public function testExposedBlock($display) {
     $this->assertSession()->pageTextMatchesCount(1, '/' . $view->getTitle() . '/');
 
     // Test there is an exposed form in a block.
-    $xpath = $this->assertSession()->buildXPathQuery('//div[@id=:id]/form/@id', [':id' => Html::getUniqueId('block-' . $block->id())]);
-    $result = $this->xpath($xpath);
-    $this->assertCount(1, $result);
+    $this->assertSession()->elementsCount('xpath', '//div[@id="' . Html::getUniqueId('block-' . $block->id()) . '"]/form/@id', 1);
 
     // Test there is not an exposed form in the view page content area.
     $xpath = $this->assertSession()->buildXPathQuery('//div[@class="view-content"]/form/@id', [
@@ -258,8 +259,9 @@ public function testExposedBlock($display) {
     $this->assertSession()->elementNotExists('xpath', $xpath);
 
     // Test there is only one views exposed form on the page.
-    $elements = $this->xpath('//form[@id=:id]', [':id' => $this->getExpectedExposedFormId($view)]);
-    $this->assertCount(1, $elements, 'One exposed form block found.');
+    $xpath = '//form[@id="' . $this->getExpectedExposedFormId($view) . '"]';
+    $this->assertSession()->elementsCount('xpath', $xpath, 1);
+    $element = $this->assertSession()->elementExists('xpath', $xpath);
 
     // Test that the correct option is selected after form submission.
     $this->assertCacheContext('url');
@@ -270,13 +272,13 @@ public function testExposedBlock($display) {
       'page' => ['page'],
     ];
     foreach ($arguments as $argument => $bundles) {
-      $elements[0]->find('css', 'select')->selectOption($argument);
-      $elements[0]->findButton('Apply')->click();
+      $element->find('css', 'select')->selectOption($argument);
+      $element->findButton('Apply')->click();
       $this->assertCacheContext('url');
       $this->assertTrue($this->assertSession()->optionExists('Content: Type', $argument)->isSelected());
       $this->assertNodesExist($bundles);
     }
-    $elements[0]->findButton('Reset')->click();
+    $element->findButton('Reset')->click();
     $this->assertNodesExist($arguments['All']);
   }
 
diff --git a/core/modules/views/tests/src/Functional/Plugin/FilterTest.php b/core/modules/views/tests/src/Functional/Plugin/FilterTest.php
index 7b1c859497..b153916439 100644
--- a/core/modules/views/tests/src/Functional/Plugin/FilterTest.php
+++ b/core/modules/views/tests/src/Functional/Plugin/FilterTest.php
@@ -34,6 +34,9 @@ class FilterTest extends ViewTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp($import_test_views = TRUE, $modules = ['views_test_config']): void {
     parent::setUp($import_test_views, $modules);
 
diff --git a/core/modules/views/tests/src/Functional/Plugin/MiniPagerTest.php b/core/modules/views/tests/src/Functional/Plugin/MiniPagerTest.php
index 05a6aac213..5b51d971f8 100644
--- a/core/modules/views/tests/src/Functional/Plugin/MiniPagerTest.php
+++ b/core/modules/views/tests/src/Functional/Plugin/MiniPagerTest.php
@@ -39,6 +39,9 @@ class MiniPagerTest extends ViewTestBase {
    */
   protected $nodes;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp($import_test_views = TRUE, $modules = ['views_test_config']): void {
     parent::setUp($import_test_views, $modules);
 
diff --git a/core/modules/views/tests/src/Functional/Plugin/NumericFormatPluralTest.php b/core/modules/views/tests/src/Functional/Plugin/NumericFormatPluralTest.php
index d9e4099f0a..3f06249777 100644
--- a/core/modules/views/tests/src/Functional/Plugin/NumericFormatPluralTest.php
+++ b/core/modules/views/tests/src/Functional/Plugin/NumericFormatPluralTest.php
@@ -33,6 +33,9 @@ class NumericFormatPluralTest extends ViewTestBase {
    */
   public static $testViews = ['numeric_test'];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp($import_test_views = TRUE, $modules = ['views_test_config']): void {
     parent::setUp($import_test_views, $modules);
 
diff --git a/core/modules/views/tests/src/Functional/Plugin/StyleTableTest.php b/core/modules/views/tests/src/Functional/Plugin/StyleTableTest.php
index 08a60a87c3..08755487ce 100644
--- a/core/modules/views/tests/src/Functional/Plugin/StyleTableTest.php
+++ b/core/modules/views/tests/src/Functional/Plugin/StyleTableTest.php
@@ -41,21 +41,17 @@ protected function setUp($import_test_views = TRUE, $modules = ['views_test_conf
   public function testAccessibilitySettings() {
     $this->drupalGet('test-table');
 
-    $result = $this->xpath('//caption/child::text()');
-    $this->assertNotEmpty($result, 'The caption appears on the table.');
-    $this->assertEquals('caption-text', trim($result[0]->getText()));
+    $this->assertSession()->elementExists('xpath', '//caption/child::text()');
+    $this->assertSession()->elementTextEquals('xpath', '//caption/child::text()', 'caption-text');
 
-    $result = $this->xpath('//summary/child::text()');
-    $this->assertNotEmpty($result, 'The summary appears on the table.');
-    $this->assertEquals('summary-text', trim($result[0]->getText()));
+    $this->assertSession()->elementExists('xpath', '//summary/child::text()');
+    $this->assertSession()->elementTextEquals('xpath', '//summary/child::text()', 'summary-text');
     // Check that the summary has the right accessibility settings.
-    $summary = $this->xpath('//summary')[0];
-    $this->assertTrue($summary->hasAttribute('role'));
-    $this->assertTrue($summary->hasAttribute('aria-expanded'));
+    $this->assertSession()->elementAttributeExists('xpath', '//summary', 'role');
+    $this->assertSession()->elementAttributeExists('xpath', '//summary', 'aria-expanded');
 
-    $result = $this->xpath('//caption/details/child::text()[normalize-space()]');
-    $this->assertNotEmpty($result, 'The table description appears on the table.');
-    $this->assertEquals('description-text', trim($result[0]->getText()));
+    $this->assertSession()->elementExists('xpath', '//caption/details/child::text()[normalize-space()]');
+    $this->assertSession()->elementTextEquals('xpath', '//caption/details/child::text()[normalize-space()]', 'description-text');
 
     // Remove the caption and ensure the caption is not displayed anymore.
     $view = View::load('test_table');
@@ -64,8 +60,7 @@ public function testAccessibilitySettings() {
     $view->save();
 
     $this->drupalGet('test-table');
-    $result = $this->xpath('//caption/child::text()');
-    $this->assertEmpty(trim($result[0]->getText()), 'Ensure that the caption disappears.');
+    $this->assertSession()->elementTextEquals('xpath', '//caption/child::text()', '');
 
     // Remove the table summary.
     $display = &$view->getDisplay('default');
@@ -73,8 +68,7 @@ public function testAccessibilitySettings() {
     $view->save();
 
     $this->drupalGet('test-table');
-    $result = $this->xpath('//summary/child::text()');
-    $this->assertEmpty($result, 'Ensure that the summary disappears.');
+    $this->assertSession()->elementNotExists('xpath', '//summary/child::text()');
 
     // Remove the table description.
     $display = &$view->getDisplay('default');
@@ -82,8 +76,7 @@ public function testAccessibilitySettings() {
     $view->save();
 
     $this->drupalGet('test-table');
-    $result = $this->xpath('//caption/details/child::text()[normalize-space()]');
-    $this->assertEmpty($result, 'Ensure that the description disappears.');
+    $this->assertSession()->elementNotExists('xpath', '//caption/details/child::text()[normalize-space()]');
   }
 
   /**
@@ -96,10 +89,8 @@ public function testFieldInColumns() {
     // Check for class " views-field-job ", because just "views-field-job" won't
     // do: "views-field-job-1" would also contain "views-field-job".
     // @see Drupal\system\Tests\Form\ElementTest::testButtonClasses().
-    $result = $this->xpath('//tbody/tr/td[contains(concat(" ", @class, " "), " views-field-job ")]');
-    $this->assertGreaterThan(0, count($result), 'Ensure there is a td with the class views-field-job');
-    $result = $this->xpath('//tbody/tr/td[contains(concat(" ", @class, " "), " views-field-job-1 ")]');
-    $this->assertGreaterThan(0, count($result), 'Ensure there is a td with the class views-field-job-1');
+    $this->assertSession()->elementExists('xpath', '//tbody/tr/td[contains(concat(" ", @class, " "), " views-field-job ")]');
+    $this->assertSession()->elementExists('xpath', '//tbody/tr/td[contains(concat(" ", @class, " "), " views-field-job-1 ")]');
 
     // Combine the second job-column with the first one, with ', ' as separator.
     $view = View::load('test_table');
@@ -110,12 +101,8 @@ public function testFieldInColumns() {
 
     // Ensure that both columns are properly combined.
     $this->drupalGet('test-table');
-
-    $result = $this->xpath('//tbody/tr/td[contains(concat(" ", @class, " "), " views-field-job views-field-job-1 ")]');
-    $this->assertGreaterThan(0, count($result), 'Ensure that the job column class names are joined into a single column');
-
-    $result = $this->xpath('//tbody/tr/td[contains(., "Drummer, Drummer")]');
-    $this->assertGreaterThan(0, count($result), 'Ensure the job column values are joined into a single column');
+    $this->assertSession()->elementExists('xpath', '//tbody/tr/td[contains(concat(" ", @class, " "), " views-field-job views-field-job-1 ")]');
+    $this->assertSession()->elementExists('xpath', '//tbody/tr/td[contains(., "Drummer, Drummer")]');
   }
 
   /**
@@ -138,11 +125,8 @@ public function testNumericFieldVisible() {
 
     $this->drupalGet('test-table');
 
-    $result = $this->xpath('//tbody/tr/td[contains(., "Baby")]');
-    $this->assertGreaterThan(0, count($result), 'Ensure that the baby is found.');
-
-    $result = $this->xpath('//tbody/tr/td[text()=0]');
-    $this->assertGreaterThan(0, count($result), 'Ensure that the baby\'s age is shown');
+    $this->assertSession()->elementExists('xpath', '//tbody/tr/td[contains(., "Baby")]');
+    $this->assertSession()->elementExists('xpath', '//tbody/tr/td[text()=0]');
   }
 
   /**
@@ -159,9 +143,7 @@ public function testEmptyColumn() {
     // Test that only one of the job columns still shows.
     // Ensure that empty column header is hidden.
     $this->assertSession()->elementsCount('xpath', '//thead/tr/th/a[text()="Job"]', 1);
-
-    $result = $this->xpath('//tbody/tr/td[contains(concat(" ", @class, " "), " views-field-job-1 ")]');
-    $this->assertCount(0, $result, 'Ensure the empty table cells are hidden.');
+    $this->assertSession()->elementNotExists('xpath', '//tbody/tr/td[contains(concat(" ", @class, " "), " views-field-job-1 ")]');
   }
 
   /**
@@ -212,7 +194,7 @@ public function testGrouping() {
     // Ensure that we don't find the caption containing unsafe markup.
     $this->assertSession()->responseNotContains($unsafe_markup);
     // Ensure that the summary isn't shown.
-    $this->assertEmpty($this->xpath('//caption/details'));
+    $this->assertSession()->elementNotExists('xpath', '//caption/details');
 
     // Ensure that all expected captions are found.
     foreach ($expected_captions as $raw_caption) {
diff --git a/core/modules/views/tests/src/Functional/Plugin/ViewsBulkTest.php b/core/modules/views/tests/src/Functional/Plugin/ViewsBulkTest.php
index cd93f42a40..c0be12e33d 100644
--- a/core/modules/views/tests/src/Functional/Plugin/ViewsBulkTest.php
+++ b/core/modules/views/tests/src/Functional/Plugin/ViewsBulkTest.php
@@ -30,6 +30,9 @@ class ViewsBulkTest extends ViewTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp($import_test_views = TRUE, $modules = ['views_test_config']): void {
     parent::setUp($import_test_views, $modules);
 
diff --git a/core/modules/views/tests/src/Functional/TaxonomyGlossaryTest.php b/core/modules/views/tests/src/Functional/TaxonomyGlossaryTest.php
index f883bb0999..9113ba80de 100644
--- a/core/modules/views/tests/src/Functional/TaxonomyGlossaryTest.php
+++ b/core/modules/views/tests/src/Functional/TaxonomyGlossaryTest.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\Tests\views\Functional;
 
+use Drupal\Core\Url;
 use Drupal\Tests\taxonomy\Traits\TaxonomyTestTrait;
 
 /**
@@ -39,6 +40,9 @@ class TaxonomyGlossaryTest extends ViewTestBase {
    */
   protected $taxonomyTerms;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp($import_test_views = TRUE, $modules = ['views_test_config']): void {
     parent::setUp($import_test_views, $modules);
 
@@ -49,15 +53,44 @@ protected function setUp($import_test_views = TRUE, $modules = ['views_test_conf
     for ($i = 0; $i < 10; $i++) {
       $this->taxonomyTerms[] = $this->createTerm($vocabulary);
     }
+    $this->taxonomyTerms[] = $this->createTerm($vocabulary, ['name' => '0' . $this->randomMachineName()]);
   }
 
   /**
    * Tests a taxonomy glossary view.
    */
   public function testTaxonomyGlossaryView() {
+    $initials = [];
+    foreach ($this->taxonomyTerms as $term) {
+      $char = mb_strtolower(substr($term->label(), 0, 1));
+      $initials += [$char => 0];
+      $initials[$char]++;
+    }
+
+    $this->drupalGet('test_taxonomy_glossary');
+    $assert_session = $this->assertSession();
+
+    foreach ($initials as $char => $count) {
+      $href = Url::fromUserInput('/test_taxonomy_glossary/' . $char)->toString();
+
+      $xpath = $assert_session->buildXPathQuery('//a[@href=:href and normalize-space(text())=:label]', [
+        ':href' => $href,
+        ':label' => $char,
+      ]);
+      $link = $assert_session->elementExists('xpath', $xpath);
+
+      // Assert that the expected number of results is indicated in the link.
+      preg_match("/{$char} \(([0-9]+)\)/", $link->getParent()->getText(), $matches);
+      $this->assertEquals($count, $matches[1]);
+    }
+
+    // Check that no other glossary links but the expected ones have been
+    // rendered.
+    $assert_session->elementsCount('xpath', '/ancestor::ul//a', count($initials), $link);
+
     // Go the taxonomy glossary page for the first term.
     $this->drupalGet('test_taxonomy_glossary/' . substr($this->taxonomyTerms[0]->getName(), 0, 1));
-    $this->assertSession()->pageTextContains($this->taxonomyTerms[0]->getName());
+    $assert_session->pageTextContains($this->taxonomyTerms[0]->getName());
   }
 
 }
diff --git a/core/modules/views/tests/src/Functional/ViewAjaxTest.php b/core/modules/views/tests/src/Functional/ViewAjaxTest.php
index bb525f53fe..1ea37e1fea 100644
--- a/core/modules/views/tests/src/Functional/ViewAjaxTest.php
+++ b/core/modules/views/tests/src/Functional/ViewAjaxTest.php
@@ -23,6 +23,9 @@ class ViewAjaxTest extends ViewTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp($import_test_views = TRUE, $modules = ['views_test_config']): void {
     parent::setUp($import_test_views, $modules);
 
diff --git a/core/modules/views/tests/src/Functional/ViewTestBase.php b/core/modules/views/tests/src/Functional/ViewTestBase.php
index ea33d9b486..de7eeb084f 100644
--- a/core/modules/views/tests/src/Functional/ViewTestBase.php
+++ b/core/modules/views/tests/src/Functional/ViewTestBase.php
@@ -29,6 +29,16 @@ abstract class ViewTestBase extends BrowserTestBase {
    */
   protected static $modules = ['views', 'views_test_config'];
 
+  /**
+   * Sets up the test.
+   *
+   * @param bool $import_test_views
+   *   Should the views specified on the test class be imported. If you need
+   *   to setup some additional stuff, like fields, you need to call false and
+   *   then call createTestViews for your own.
+   * @param array $modules
+   *   The module directories to look in for test views.
+   */
   protected function setUp($import_test_views = TRUE, $modules = ['views_test_config']): void {
     parent::setUp();
     if ($import_test_views) {
diff --git a/core/modules/views/tests/src/Functional/ViewsFormAlterTest.php b/core/modules/views/tests/src/Functional/ViewsFormAlterTest.php
new file mode 100644
index 0000000000..91177d6941
--- /dev/null
+++ b/core/modules/views/tests/src/Functional/ViewsFormAlterTest.php
@@ -0,0 +1,32 @@
+<?php
+
+namespace Drupal\Tests\views\Functional;
+
+/**
+ * Tests hook_form_BASE_FORM_ID_alter for a ViewsForm.
+ *
+ * @group views
+ */
+class ViewsFormAlterTest extends ViewTestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  protected static $modules = ['views_form_test'];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected $defaultTheme = 'stark';
+
+  /**
+   * Tests hook_form_BASE_FORM_ID_alter for a ViewsForm.
+   */
+  public function testViewsFormAlter() {
+    $this->drupalLogin($this->createUser(['access media overview']));
+    $this->drupalGet('admin/content/media');
+    $count = $this->container->get('state')->get('hook_form_BASE_FORM_ID_alter_count');
+    $this->assertEquals(1, $count, 'hook_form_BASE_FORM_ID_alter was invoked only once');
+  }
+
+}
diff --git a/core/modules/views/tests/src/Functional/Wizard/BasicTest.php b/core/modules/views/tests/src/Functional/Wizard/BasicTest.php
index fbbd320609..61921c0c16 100644
--- a/core/modules/views/tests/src/Functional/Wizard/BasicTest.php
+++ b/core/modules/views/tests/src/Functional/Wizard/BasicTest.php
@@ -18,6 +18,9 @@ class BasicTest extends WizardTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp($import_test_views = TRUE, $modules = []): void {
     parent::setUp($import_test_views, $modules);
 
diff --git a/core/modules/views/tests/src/Functional/Wizard/ItemsPerPageTest.php b/core/modules/views/tests/src/Functional/Wizard/ItemsPerPageTest.php
index 7bddee93d9..da9ac54e06 100644
--- a/core/modules/views/tests/src/Functional/Wizard/ItemsPerPageTest.php
+++ b/core/modules/views/tests/src/Functional/Wizard/ItemsPerPageTest.php
@@ -15,6 +15,9 @@ class ItemsPerPageTest extends WizardTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp($import_test_views = TRUE, $modules = []): void {
     parent::setUp($import_test_views, $modules);
 
diff --git a/core/modules/views/tests/src/Functional/Wizard/PagerTest.php b/core/modules/views/tests/src/Functional/Wizard/PagerTest.php
index fa8355a7d0..fb99faa53a 100644
--- a/core/modules/views/tests/src/Functional/Wizard/PagerTest.php
+++ b/core/modules/views/tests/src/Functional/Wizard/PagerTest.php
@@ -32,15 +32,13 @@ public function testPager() {
 
     // This technique for finding the existence of a pager
     // matches that used in Drupal\views_ui\Tests\PreviewTest.php.
-    $elements = $this->xpath('//ul[contains(@class, :class)]/li', [':class' => 'pager__items']);
-    $this->assertNotEmpty($elements, 'Full pager found.');
+    $this->assertSession()->elementExists('xpath', '//ul[contains(@class, "pager__items")]/li');
 
     // Make a View that does not have a pager.
     $path_with_no_pager = 'test-view-without-pager';
     $this->createViewAtPath($path_with_no_pager, FALSE);
     $this->drupalGet($path_with_no_pager);
-    $elements = $this->xpath('//ul[contains(@class, :class)]/li', [':class' => 'pager__items']);
-    $this->assertEmpty($elements, 'Full pager not found.');
+    $this->assertSession()->elementNotExists('xpath', '//ul[contains(@class, "pager__items")]/li');
   }
 
   /**
diff --git a/core/modules/views/tests/src/Functional/Wizard/SortingTest.php b/core/modules/views/tests/src/Functional/Wizard/SortingTest.php
index 51d67a988a..52d8f96c24 100644
--- a/core/modules/views/tests/src/Functional/Wizard/SortingTest.php
+++ b/core/modules/views/tests/src/Functional/Wizard/SortingTest.php
@@ -14,6 +14,9 @@ class SortingTest extends WizardTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp($import_test_views = TRUE, $modules = ['views_test_config']): void {
     parent::setUp($import_test_views, $modules);
 
diff --git a/core/modules/views/tests/src/Functional/Wizard/TaggedWithTest.php b/core/modules/views/tests/src/Functional/Wizard/TaggedWithTest.php
index 7ba92062fc..ffcdf1f49f 100644
--- a/core/modules/views/tests/src/Functional/Wizard/TaggedWithTest.php
+++ b/core/modules/views/tests/src/Functional/Wizard/TaggedWithTest.php
@@ -71,6 +71,9 @@ class TaggedWithTest extends WizardTestBase {
    */
   protected $tagField;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp($import_test_views = TRUE, $modules = []): void {
     parent::setUp($import_test_views, $modules);
 
@@ -269,10 +272,10 @@ public function testTaggedWithByViewReference() {
     $view['show[type]'] = $this->nodeTypeWithTags->id();
     $this->drupalGet('admin/structure/views/add');
     $this->submitForm($view, 'Update "of type" choice');
-    $this->assertNotEmpty($this->xpath($tags_xpath));
+    $this->assertSession()->elementExists('xpath', $tags_xpath);
     $view['show[type]'] = $this->nodeTypeWithoutTags->id();
     $this->submitForm($view, 'Update "of type" choice (2)');
-    $this->assertNotEmpty($this->xpath($tags_xpath));
+    $this->assertSession()->elementExists('xpath', $tags_xpath);
     $this->submitForm(['show[tagged_with]' => 'term1'], 'Save and edit');
     $this->assertSession()->statusCodeEquals(200);
     $this->getSession()->getPage()->hasContent('Has taxonomy term (= term1)');
diff --git a/core/modules/views/tests/src/Functional/Wizard/WizardTestBase.php b/core/modules/views/tests/src/Functional/Wizard/WizardTestBase.php
index 42c3ed03d5..8bf877ce13 100644
--- a/core/modules/views/tests/src/Functional/Wizard/WizardTestBase.php
+++ b/core/modules/views/tests/src/Functional/Wizard/WizardTestBase.php
@@ -16,6 +16,9 @@ abstract class WizardTestBase extends ViewTestBase {
    */
   protected static $modules = ['node', 'views_ui', 'block', 'rest'];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp($import_test_views = TRUE, $modules = []): void {
     parent::setUp($import_test_views, $modules);
 
diff --git a/core/modules/views/tests/src/Kernel/Entity/EntityViewsDataTest.php b/core/modules/views/tests/src/Kernel/Entity/EntityViewsDataTest.php
index c96792e93b..6fc3c673d1 100644
--- a/core/modules/views/tests/src/Kernel/Entity/EntityViewsDataTest.php
+++ b/core/modules/views/tests/src/Kernel/Entity/EntityViewsDataTest.php
@@ -418,7 +418,8 @@ public function testBaseTableFields() {
     $this->assertEquals([
       'left_field' => 'id',
       'field' => 'entity_id',
-      'extra' => [[
+      'extra' => [
+        [
           'field' => 'deleted',
           'value' => 0,
           'numeric' => TRUE,
@@ -506,7 +507,8 @@ public function testDataTableFields() {
     $this->assertEquals([
       'left_field' => 'id',
       'field' => 'entity_id',
-      'extra' => [[
+      'extra' => [
+        [
           'field' => 'deleted',
           'value' => 0,
           'numeric' => TRUE,
@@ -636,7 +638,8 @@ public function testRevisionTableFields() {
     $this->assertEquals([
       'left_field' => 'id',
       'field' => 'entity_id',
-      'extra' => [[
+      'extra' => [
+        [
           'field' => 'deleted',
           'value' => 0,
           'numeric' => TRUE,
@@ -649,7 +652,8 @@ public function testRevisionTableFields() {
     $this->assertEquals([
       'left_field' => 'revision_id',
       'field' => 'entity_id',
-      'extra' => [[
+      'extra' => [
+        [
           'field' => 'deleted',
           'value' => 0,
           'numeric' => TRUE,
diff --git a/core/modules/views/tests/src/Kernel/Entity/RowEntityRenderersTest.php b/core/modules/views/tests/src/Kernel/Entity/RowEntityRenderersTest.php
index 47ea5f40e2..02a2b04e3d 100644
--- a/core/modules/views/tests/src/Kernel/Entity/RowEntityRenderersTest.php
+++ b/core/modules/views/tests/src/Kernel/Entity/RowEntityRenderersTest.php
@@ -2,10 +2,13 @@
 
 namespace Drupal\Tests\views\Kernel\Entity;
 
+use Drupal\field\Entity\FieldConfig;
+use Drupal\field\Entity\FieldStorageConfig;
 use Drupal\language\Entity\ConfigurableLanguage;
 use Drupal\node\Entity\NodeType;
 use Drupal\Tests\views\Kernel\ViewsKernelTestBase;
 use Drupal\user\Entity\User;
+use Drupal\views\Tests\ViewTestData;
 use Drupal\views\Views;
 
 /**
@@ -83,7 +86,7 @@ class RowEntityRenderersTest extends ViewsKernelTestBase {
    * {@inheritdoc}
    */
   protected function setUp($import_test_views = TRUE): void {
-    parent::setUp();
+    parent::setUp(FALSE);
 
     $this->installEntitySchema('node');
     $this->installEntitySchema('user');
@@ -107,6 +110,17 @@ protected function setUp($import_test_views = TRUE): void {
     $node_type->setDisplaySubmitted(FALSE);
     $node_type->save();
 
+    FieldStorageConfig::create([
+      'entity_type' => 'node',
+      'type' => 'entity_reference',
+      'field_name' => 'field_reference',
+    ])->save();
+    FieldConfig::create([
+      'entity_type' => 'node',
+      'bundle' => 'test',
+      'field_name' => 'field_reference',
+    ])->save();
+
     $this->values = [];
     $this->ids = [];
     $controller = \Drupal::entityTypeManager()->getStorage('node');
@@ -116,6 +130,7 @@ protected function setUp($import_test_views = TRUE): void {
       // Create a node with a different default language each time.
       $default_langcode = $this->langcodes[$langcode_index++];
       $node = $controller->create(['type' => 'test', 'uid' => $this->testAuthor->id(), 'langcode' => $default_langcode]);
+
       // Ensure the default language is processed first.
       $langcodes = array_merge([$default_langcode], array_diff($this->langcodes, [$default_langcode]));
 
@@ -124,10 +139,14 @@ protected function setUp($import_test_views = TRUE): void {
         $this->values[$i][$langcode] = $i . '-' . $langcode . '-' . $this->randomMachineName();
 
         if ($langcode != $default_langcode) {
-          $node->addTranslation($langcode, ['title' => $this->values[$i][$langcode]]);
+          $node->addTranslation($langcode, [
+            'title' => $this->values[$i][$langcode],
+            'field_reference' => ($i + 1) % 3 + 1,
+          ]);
         }
         else {
           $node->setTitle($this->values[$i][$langcode]);
+          $node->set('field_reference', ($i + 1) % 3 + 1);
         }
 
         $node->save();
@@ -138,6 +157,7 @@ protected function setUp($import_test_views = TRUE): void {
         ];
       }
     }
+    ViewTestData::createTestViews(static::class, ['views_test_config']);
   }
 
   /**
@@ -154,6 +174,20 @@ public function testFieldRenderers() {
     $this->checkLanguageRenderers('page_2', $this->values);
   }
 
+  /**
+   * Tests the entity row renderers for relationships.
+   */
+  public function testEntityRenderersRelationship() {
+    $this->checkLanguageRenderersRelationship('page_3', $this->values);
+  }
+
+  /**
+   * Tests the field row renderers for relationships.
+   */
+  public function testFieldRenderersRelationship() {
+    $this->checkLanguageRenderersRelationship('page_4', $this->values);
+  }
+
   /**
    * Tests the row renderer with a revision base table.
    */
@@ -240,6 +274,90 @@ protected function checkLanguageRenderers($display, $values) {
     $this->assertTranslations($display, 'l0', $expected, 'The language specific renderer behaves as expected.');
   }
 
+  /**
+   * Checks language renderer configurations work with relationships.
+   *
+   * The Views with relationships filter and sort a little differently.
+   * First, they filter such that we only consider English nodes when finding
+   * relationships. If we didn't do this, we'd get 27 results in these Views,
+   * which is just way too much. Second, after sorting by the node title, we
+   * sort by the title of the referenced translation to have a predictable
+   * order.
+   *
+   * @param string $display
+   *   Name of display to test with.
+   * @param array $values
+   *   An array of node information which are each an array of node titles
+   *   associated with language keys appropriate for the translation of that
+   *   node.
+   */
+  protected function checkLanguageRenderersRelationship($display, $values) {
+    $expected = [
+      $values[1]['en'],
+      $values[1]['en'],
+      $values[1]['en'],
+      $values[2]['en'],
+      $values[2]['en'],
+      $values[2]['en'],
+      $values[0]['en'],
+      $values[0]['en'],
+      $values[0]['en'],
+    ];
+    $this->assertTranslations($display, '***LANGUAGE_language_content***', $expected, 'The current language renderer behaves as expected.');
+
+    $expected = [
+      $values[1]['l0'],
+      $values[1]['l0'],
+      $values[1]['l0'],
+      $values[2]['l1'],
+      $values[2]['l1'],
+      $values[2]['l1'],
+      $values[0]['en'],
+      $values[0]['en'],
+      $values[0]['en'],
+    ];
+    $this->assertTranslations($display, '***LANGUAGE_entity_default***', $expected, 'The default language renderer behaves as expected.');
+
+    $expected = [
+      $values[1]['en'],
+      $values[1]['l0'],
+      $values[1]['l1'],
+      $values[2]['en'],
+      $values[2]['l0'],
+      $values[2]['l1'],
+      $values[0]['en'],
+      $values[0]['l0'],
+      $values[0]['l1'],
+    ];
+    $this->assertTranslations($display, '***LANGUAGE_entity_translation***', $expected, 'The translation language renderer behaves as expected.');
+
+    $expected = [
+      $values[1][$this->langcodes[0]],
+      $values[1][$this->langcodes[0]],
+      $values[1][$this->langcodes[0]],
+      $values[2][$this->langcodes[0]],
+      $values[2][$this->langcodes[0]],
+      $values[2][$this->langcodes[0]],
+      $values[0][$this->langcodes[0]],
+      $values[0][$this->langcodes[0]],
+      $values[0][$this->langcodes[0]],
+    ];
+    $this->assertTranslations($display, '***LANGUAGE_site_default***', $expected, 'The site default language renderer behaves as expected.');
+
+    $expected = [
+      $values[1]['l0'],
+      $values[1]['l0'],
+      $values[1]['l0'],
+      $values[2]['l0'],
+      $values[2]['l0'],
+      $values[2]['l0'],
+      $values[0]['l0'],
+      $values[0]['l0'],
+      $values[0]['l0'],
+    ];
+    $this->assertTranslations($display, 'l0', $expected, 'The language specific renderer behaves as expected.');
+  }
+
   /**
    * Checks that the view results match the expected values.
    *
diff --git a/core/modules/views/tests/src/Kernel/Handler/AreaTextTest.php b/core/modules/views/tests/src/Kernel/Handler/AreaTextTest.php
index 9941e11b52..6a1c062b2e 100644
--- a/core/modules/views/tests/src/Kernel/Handler/AreaTextTest.php
+++ b/core/modules/views/tests/src/Kernel/Handler/AreaTextTest.php
@@ -22,6 +22,9 @@ class AreaTextTest extends ViewsKernelTestBase {
    */
   public static $testViews = ['test_view'];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp($import_test_views = TRUE): void {
     parent::setUp();
 
diff --git a/core/modules/views/tests/src/Kernel/Handler/FilterCombineTest.php b/core/modules/views/tests/src/Kernel/Handler/FilterCombineTest.php
index 7a748f485e..6d5b71742d 100644
--- a/core/modules/views/tests/src/Kernel/Handler/FilterCombineTest.php
+++ b/core/modules/views/tests/src/Kernel/Handler/FilterCombineTest.php
@@ -104,13 +104,13 @@ public function testFilterCombineWord() {
 
     $fields = $view->displayHandlers->get('default')->getOption('fields');
     $view->displayHandlers->get('default')->overrideOption('fields', $fields + [
-        'job' => [
-          'id' => 'job',
-          'table' => 'views_test_data',
-          'field' => 'job',
-          'relationship' => 'none',
-        ],
-      ]);
+      'job' => [
+        'id' => 'job',
+        'table' => 'views_test_data',
+        'field' => 'job',
+        'relationship' => 'none',
+      ],
+    ]);
 
     // Change the filtering.
     $view->displayHandlers->get('default')->overrideOption('filters', [
@@ -155,13 +155,13 @@ public function testFilterCombineAllWords() {
 
     $fields = $view->displayHandlers->get('default')->getOption('fields');
     $view->displayHandlers->get('default')->overrideOption('fields', $fields + [
-        'job' => [
-          'id' => 'job',
-          'table' => 'views_test_data',
-          'field' => 'job',
-          'relationship' => 'none',
-        ],
-      ]);
+      'job' => [
+        'id' => 'job',
+        'table' => 'views_test_data',
+        'field' => 'job',
+        'relationship' => 'none',
+      ],
+    ]);
 
     // Set the filtering to allwords and simulate searching for a phrase.
     $view->displayHandlers->get('default')->overrideOption('filters', [
diff --git a/core/modules/views/tests/src/Kernel/Handler/FilterNumericTest.php b/core/modules/views/tests/src/Kernel/Handler/FilterNumericTest.php
index a2c2fe6f51..36f71a5bf2 100644
--- a/core/modules/views/tests/src/Kernel/Handler/FilterNumericTest.php
+++ b/core/modules/views/tests/src/Kernel/Handler/FilterNumericTest.php
@@ -338,7 +338,7 @@ public function testFilterNumericEmpty() {
 
     $this->executeView($view);
     $resultset = [
-    [
+      [
         'name' => 'John',
         'age' => 25,
       ],
@@ -391,7 +391,7 @@ public function testFilterNumericExposedGroupedNotEmpty() {
 
     $this->executeView($view);
     $resultset = [
-    [
+      [
         'name' => 'John',
         'age' => 25,
       ],
diff --git a/core/modules/views/tests/src/Kernel/Handler/HandlerAliasTest.php b/core/modules/views/tests/src/Kernel/Handler/HandlerAliasTest.php
index bcbcc4a536..6ac117d9ae 100644
--- a/core/modules/views/tests/src/Kernel/Handler/HandlerAliasTest.php
+++ b/core/modules/views/tests/src/Kernel/Handler/HandlerAliasTest.php
@@ -21,6 +21,9 @@ class HandlerAliasTest extends ViewsKernelTestBase {
    */
   public static $testViews = ['test_filter', 'test_alias'];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp($import_test_views = TRUE): void {
     parent::setUp();
 
diff --git a/core/modules/views/tests/src/Kernel/Handler/SortDateTest.php b/core/modules/views/tests/src/Kernel/Handler/SortDateTest.php
index a27e1b5c50..ef33882f05 100644
--- a/core/modules/views/tests/src/Kernel/Handler/SortDateTest.php
+++ b/core/modules/views/tests/src/Kernel/Handler/SortDateTest.php
@@ -104,7 +104,7 @@ protected function expectedResultSet($granularity, $reverse = TRUE) {
             ['name' => 'Meredith'],
             ['name' => 'Paul'],
             ['name' => 'John'],
-           ];
+          ];
           break;
 
         case 'hour':
diff --git a/core/modules/views/tests/src/Kernel/Plugin/JoinTest.php b/core/modules/views/tests/src/Kernel/Plugin/JoinTest.php
index fd546473be..7bb9402671 100644
--- a/core/modules/views/tests/src/Kernel/Plugin/JoinTest.php
+++ b/core/modules/views/tests/src/Kernel/Plugin/JoinTest.php
@@ -30,6 +30,9 @@ class JoinTest extends RelationshipJoinTestBase {
    */
   protected $manager;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp($import_test_views = TRUE): void {
     parent::setUp();
 
diff --git a/core/modules/views/tests/src/Kernel/Plugin/PluginBaseTest.php b/core/modules/views/tests/src/Kernel/Plugin/PluginBaseTest.php
index 7b485d3daa..d02e657a89 100644
--- a/core/modules/views/tests/src/Kernel/Plugin/PluginBaseTest.php
+++ b/core/modules/views/tests/src/Kernel/Plugin/PluginBaseTest.php
@@ -24,6 +24,9 @@ class PluginBaseTest extends KernelTestBase {
    */
   protected $testPluginBase;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->testPluginBase = new TestPluginBase();
diff --git a/core/modules/views/tests/src/Kernel/Plugin/RelationshipJoinTestBase.php b/core/modules/views/tests/src/Kernel/Plugin/RelationshipJoinTestBase.php
index ecb90a7f3f..aaaa78df88 100644
--- a/core/modules/views/tests/src/Kernel/Plugin/RelationshipJoinTestBase.php
+++ b/core/modules/views/tests/src/Kernel/Plugin/RelationshipJoinTestBase.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\Tests\views\Kernel\Plugin;
 
+use Drupal\Core\StringTranslation\TranslatableMarkup;
 use Drupal\user\Entity\User;
 use Drupal\views\Views;
 
@@ -69,8 +70,8 @@ protected function schemaDefinition() {
   protected function viewsData() {
     $data = parent::viewsData();
     $data['views_test_data']['uid'] = [
-      'title' => t('UID'),
-      'help' => t('The test data UID'),
+      'title' => new TranslatableMarkup('UID'),
+      'help' => new TranslatableMarkup('The test data UID'),
       'relationship' => [
         'id' => 'standard',
         'base' => 'users_field_data',
diff --git a/core/modules/views/tests/src/Kernel/Plugin/RowEntityTest.php b/core/modules/views/tests/src/Kernel/Plugin/RowEntityTest.php
index 6b7ebe252a..fe1d54a0a5 100644
--- a/core/modules/views/tests/src/Kernel/Plugin/RowEntityTest.php
+++ b/core/modules/views/tests/src/Kernel/Plugin/RowEntityTest.php
@@ -3,10 +3,10 @@
 namespace Drupal\Tests\views\Kernel\Plugin;
 
 use Drupal\Core\Form\FormState;
+use Drupal\entity_test\Entity\EntityTest;
+use Drupal\user\Entity\User;
 use Drupal\views\Views;
 use Drupal\Tests\views\Kernel\ViewsKernelTestBase;
-use Drupal\taxonomy\Entity\Vocabulary;
-use Drupal\taxonomy\Entity\Term;
 
 /**
  * Tests the generic entity row plugin.
@@ -22,12 +22,9 @@ class RowEntityTest extends ViewsKernelTestBase {
    * @var array
    */
   protected static $modules = [
-    'taxonomy',
-    'text',
-    'filter',
+    'entity_test',
     'field',
     'system',
-    'node',
     'user',
   ];
 
@@ -42,26 +39,55 @@ class RowEntityTest extends ViewsKernelTestBase {
    * {@inheritdoc}
    */
   protected function setUp($import_test_views = TRUE): void {
-    parent::setUp();
+    parent::setUp($import_test_views);
 
-    $this->installEntitySchema('taxonomy_term');
-    $this->installConfig(['taxonomy']);
+    $this->installEntitySchema('entity_test');
+    $this->installEntitySchema('user');
   }
 
   /**
    * Tests the entity row handler.
    */
   public function testEntityRow() {
-    $vocab = Vocabulary::create(['name' => $this->randomMachineName(), 'vid' => strtolower($this->randomMachineName())]);
-    $vocab->save();
-    $term = Term::create(['name' => $this->randomMachineName(), 'vid' => $vocab->id()]);
-    $term->save();
+    $user = User::create([
+      'name' => 'test user',
+    ]);
+    $user->save();
 
+    $entity_test = EntityTest::create([
+      'user_id' => $user->id(),
+      'name' => 'test entity test',
+    ]);
+    $entity_test->save();
+
+    // Ensure entities have different ids.
+    if ($entity_test->id() == $user->id()) {
+      $entity_test->delete();
+      $entity_test = EntityTest::create([
+        'user_id' => $user->id(),
+        'name' => 'test entity test',
+      ]);
+      $entity_test->save();
+    }
+
+    $view = Views::getView('test_entity_row');
+    $build = $view->preview();
+    $this->render($build);
+
+    $this->assertText('test entity test');
+    $this->assertNoText('Member for');
+
+    // Change the view to use a relationship to render the row.
     $view = Views::getView('test_entity_row');
+    $display = &$view->storage->getDisplay('default');
+    $display['display_options']['row']['type'] = 'entity:user';
+    $display['display_options']['row']['options']['relationship'] = 'user_id';
+    $view->setDisplay('default');
     $build = $view->preview();
     $this->render($build);
 
-    $this->assertText($term->getName(), 'The rendered entity appears as row in the view.');
+    $this->assertNoText('test entity test');
+    $this->assertText('Member for');
 
     // Tests the available view mode options.
     $form = [];
diff --git a/core/modules/views/tests/src/Kernel/PluginInstanceTest.php b/core/modules/views/tests/src/Kernel/PluginInstanceTest.php
index d5d1dd6004..ee8865d995 100644
--- a/core/modules/views/tests/src/Kernel/PluginInstanceTest.php
+++ b/core/modules/views/tests/src/Kernel/PluginInstanceTest.php
@@ -53,6 +53,9 @@ class PluginInstanceTest extends ViewsKernelTestBase {
    */
   protected $definitions;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp($import_test_views = TRUE): void {
     parent::setUp();
 
diff --git a/core/modules/views/tests/src/Kernel/ViewsHooksTest.php b/core/modules/views/tests/src/Kernel/ViewsHooksTest.php
index bbca39f28d..95942b2f67 100644
--- a/core/modules/views/tests/src/Kernel/ViewsHooksTest.php
+++ b/core/modules/views/tests/src/Kernel/ViewsHooksTest.php
@@ -52,6 +52,9 @@ class ViewsHooksTest extends ViewsKernelTestBase {
    */
   protected $moduleHandler;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp($import_test_views = TRUE): void {
     parent::setUp();
 
diff --git a/core/modules/views/tests/src/Kernel/Wizard/WizardPluginBaseKernelTest.php b/core/modules/views/tests/src/Kernel/Wizard/WizardPluginBaseKernelTest.php
index 5b2a385253..81c596e062 100644
--- a/core/modules/views/tests/src/Kernel/Wizard/WizardPluginBaseKernelTest.php
+++ b/core/modules/views/tests/src/Kernel/Wizard/WizardPluginBaseKernelTest.php
@@ -29,6 +29,9 @@ class WizardPluginBaseKernelTest extends ViewsKernelTestBase {
    */
   protected $wizard;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp($import_test_views = TRUE): void {
     parent::setUp();
 
diff --git a/core/modules/views/tests/src/Unit/Controller/ViewAjaxControllerTest.php b/core/modules/views/tests/src/Unit/Controller/ViewAjaxControllerTest.php
index 429e71e3e6..07d134ed40 100644
--- a/core/modules/views/tests/src/Unit/Controller/ViewAjaxControllerTest.php
+++ b/core/modules/views/tests/src/Unit/Controller/ViewAjaxControllerTest.php
@@ -134,7 +134,7 @@ public function testMissingView() {
     $this->viewStorage->expects($this->once())
       ->method('load')
       ->with('test_view')
-      ->will($this->returnValue(FALSE));
+      ->willReturn(FALSE);
 
     $this->expectException(NotFoundHttpException::class);
     $this->viewAjaxController->ajaxView($request);
@@ -155,19 +155,19 @@ public function testAccessDeniedView() {
     $this->viewStorage->expects($this->once())
       ->method('load')
       ->with('test_view')
-      ->will($this->returnValue($view));
+      ->willReturn($view);
 
     $executable = $this->getMockBuilder('Drupal\views\ViewExecutable')
       ->disableOriginalConstructor()
       ->getMock();
     $executable->expects($this->once())
       ->method('access')
-      ->will($this->returnValue(FALSE));
+      ->willReturn(FALSE);
 
     $this->executableFactory->expects($this->once())
       ->method('get')
       ->with($view)
-      ->will($this->returnValue($executable));
+      ->willReturn($executable);
 
     $this->expectException(AccessDeniedHttpException::class);
     $this->viewAjaxController->ajaxView($request);
@@ -336,7 +336,7 @@ public function testAjaxViewWithPager() {
     $display_collection->expects($this->any())
       ->method('get')
       ->with('page_1')
-      ->will($this->returnValue($display_handler));
+      ->willReturn($display_handler);
     $executable->displayHandlers = $display_collection;
 
     $response = $this->viewAjaxController->ajaxView($request);
@@ -367,25 +367,25 @@ protected function setupValidMocks($use_ajax = self::USE_AJAX) {
     $this->viewStorage->expects($this->once())
       ->method('load')
       ->with('test_view')
-      ->will($this->returnValue($view));
+      ->willReturn($view);
 
     $executable = $this->getMockBuilder('Drupal\views\ViewExecutable')
       ->disableOriginalConstructor()
       ->getMock();
     $executable->expects($this->once())
       ->method('access')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
     $executable->expects($this->any())
       ->method('setDisplay')
       ->willReturn(TRUE);
     $executable->expects($this->atMost(1))
       ->method('preview')
-      ->will($this->returnValue(['#markup' => 'View result']));
+      ->willReturn(['#markup' => 'View result']);
 
     $this->executableFactory->expects($this->once())
       ->method('get')
       ->with($view)
-      ->will($this->returnValue($executable));
+      ->willReturn($executable);
 
     $display_handler = $this->getMockBuilder('Drupal\views\Plugin\views\display\DisplayPluginBase')
       ->disableOriginalConstructor()
@@ -403,7 +403,7 @@ protected function setupValidMocks($use_ajax = self::USE_AJAX) {
     $display_collection->expects($this->any())
       ->method('get')
       ->with('page_1')
-      ->will($this->returnValue($display_handler));
+      ->willReturn($display_handler);
 
     $executable->display_handler = $display_handler;
     $executable->displayHandlers = $display_collection;
diff --git a/core/modules/views/tests/src/Unit/EventSubscriber/RouteSubscriberTest.php b/core/modules/views/tests/src/Unit/EventSubscriber/RouteSubscriberTest.php
index 8a46618244..55d9fcf5c0 100644
--- a/core/modules/views/tests/src/Unit/EventSubscriber/RouteSubscriberTest.php
+++ b/core/modules/views/tests/src/Unit/EventSubscriber/RouteSubscriberTest.php
@@ -48,6 +48,9 @@ class RouteSubscriberTest extends UnitTestCase {
    */
   protected $state;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     $this->entityTypeManager = $this->createMock(EntityTypeManagerInterface::class);
     $this->viewStorage = $this->getMockBuilder('Drupal\Core\Config\Entity\ConfigEntityStorage')
@@ -56,7 +59,7 @@ protected function setUp(): void {
     $this->entityTypeManager->expects($this->any())
       ->method('getStorage')
       ->with('view')
-      ->will($this->returnValue($this->viewStorage));
+      ->willReturn($this->viewStorage);
     $this->state = $this->createMock('\Drupal\Core\State\StateInterface');
     $this->routeSubscriber = new TestRouteSubscriber($this->entityTypeManager, $this->state);
   }
@@ -69,10 +72,10 @@ public function testRouteRebuildFinished() {
 
     $display_1->expects($this->once())
       ->method('collectRoutes')
-      ->will($this->returnValue(['test_id.page_1' => 'views.test_id.page_1']));
+      ->willReturn(['test_id.page_1' => 'views.test_id.page_1']);
     $display_2->expects($this->once())
       ->method('collectRoutes')
-      ->will($this->returnValue(['test_id.page_2' => 'views.test_id.page_2']));
+      ->willReturn(['test_id.page_2' => 'views.test_id.page_2']);
 
     $this->routeSubscriber->routes();
 
@@ -152,14 +155,14 @@ protected function setupMocks() {
       ->getMock();
     $this->viewStorage->expects($this->any())
       ->method('load')
-      ->will($this->returnValue($view));
+      ->willReturn($view);
 
     $view->expects($this->any())
       ->method('getExecutable')
-      ->will($this->returnValue($executable));
+      ->willReturn($executable);
     $view->expects($this->any())
       ->method('id')
-      ->will($this->returnValue('test_id'));
+      ->willReturn('test_id');
     $executable->storage = $view;
 
     $executable->expects($this->any())
diff --git a/core/modules/views/tests/src/Unit/Plugin/Block/ViewsBlockTest.php b/core/modules/views/tests/src/Unit/Plugin/Block/ViewsBlockTest.php
index 446dbc8be7..796c3c87a3 100644
--- a/core/modules/views/tests/src/Unit/Plugin/Block/ViewsBlockTest.php
+++ b/core/modules/views/tests/src/Unit/Plugin/Block/ViewsBlockTest.php
@@ -63,7 +63,7 @@ protected function setUp(): void {
     $condition_plugin_manager = $this->createMock('Drupal\Core\Executable\ExecutableManagerInterface');
     $condition_plugin_manager->expects($this->any())
       ->method('getDefinitions')
-      ->will($this->returnValue([]));
+      ->willReturn([]);
     $container = new ContainerBuilder();
     $container->set('plugin.manager.condition', $condition_plugin_manager);
     \Drupal::setContainer($container);
@@ -75,7 +75,7 @@ protected function setUp(): void {
     $this->executable->expects($this->any())
       ->method('setDisplay')
       ->with('block_1')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
     $this->executable->expects($this->any())
       ->method('getShowAdminLinks')
       ->willReturn(FALSE);
@@ -99,7 +99,7 @@ protected function setUp(): void {
     $this->executableFactory->expects($this->any())
       ->method('get')
       ->with($this->view)
-      ->will($this->returnValue($this->executable));
+      ->willReturn($this->executable);
 
     $this->displayHandler = $this->getMockBuilder('Drupal\views\Plugin\views\display\Block')
       ->disableOriginalConstructor()
@@ -126,7 +126,7 @@ protected function setUp(): void {
     $this->storage->expects($this->any())
       ->method('load')
       ->with('test_view')
-      ->will($this->returnValue($this->view));
+      ->willReturn($this->view);
     $this->account = $this->createMock('Drupal\Core\Session\AccountInterface');
   }
 
diff --git a/core/modules/views/tests/src/Unit/Plugin/Derivative/ViewsLocalTaskTest.php b/core/modules/views/tests/src/Unit/Plugin/Derivative/ViewsLocalTaskTest.php
index d2b921c4a6..d875c01a02 100644
--- a/core/modules/views/tests/src/Unit/Plugin/Derivative/ViewsLocalTaskTest.php
+++ b/core/modules/views/tests/src/Unit/Plugin/Derivative/ViewsLocalTaskTest.php
@@ -49,6 +49,9 @@ class ViewsLocalTaskTest extends UnitTestCase {
    */
   protected $localTaskDerivative;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     $this->routeProvider = $this->createMock('Drupal\Core\Routing\RouteProviderInterface');
     $this->state = $this->createMock('Drupal\Core\State\StateInterface');
@@ -84,7 +87,7 @@ public function testGetDerivativeDefinitionsWithoutLocalTask() {
     $display_plugin->expects($this->once())
       ->method('getOption')
       ->with('menu')
-      ->will($this->returnValue(['type' => 'normal']));
+      ->willReturn(['type' => 'normal']);
     $executable->display_handler = $display_plugin;
 
     $storage = $this->getMockBuilder('Drupal\views\Entity\View')
@@ -92,7 +95,7 @@ public function testGetDerivativeDefinitionsWithoutLocalTask() {
       ->getMock();
     $storage->expects($this->any())
       ->method('id')
-      ->will($this->returnValue('example_view'));
+      ->willReturn('example_view');
     $storage->expects($this->any())
       ->method('getExecutable')
       ->willReturn($executable);
@@ -121,7 +124,7 @@ public function testGetDerivativeDefinitionsWithLocalTask() {
       ->getMock();
     $storage->expects($this->any())
       ->method('id')
-      ->will($this->returnValue('example_view'));
+      ->willReturn('example_view');
     $storage->expects($this->any())
       ->method('getExecutable')
       ->willReturn($executable);
@@ -139,7 +142,11 @@ public function testGetDerivativeDefinitionsWithLocalTask() {
     $display_plugin->expects($this->once())
       ->method('getOption')
       ->with('menu')
-      ->will($this->returnValue(['type' => 'tab', 'weight' => 12, 'title' => 'Example title']));
+      ->willReturn([
+        'type' => 'tab',
+        'weight' => 12,
+        'title' => 'Example title',
+      ]);
     $executable->display_handler = $display_plugin;
 
     $result = [['example_view', 'page_1']];
@@ -151,7 +158,7 @@ public function testGetDerivativeDefinitionsWithLocalTask() {
     $this->state->expects($this->once())
       ->method('get')
       ->with('views.view_route_names')
-      ->will($this->returnValue($view_route_names));
+      ->willReturn($view_route_names);
 
     $definitions = $this->localTaskDerivative->getDerivativeDefinitions($this->baseDefinition);
     $this->assertCount(1, $definitions);
@@ -174,7 +181,7 @@ public function testGetDerivativeDefinitionsWithOverrideRoute() {
       ->getMock();
     $storage->expects($this->any())
       ->method('id')
-      ->will($this->returnValue('example_view'));
+      ->willReturn('example_view');
     $storage->expects($this->any())
       ->method('getExecutable')
       ->willReturn($executable);
@@ -192,7 +199,7 @@ public function testGetDerivativeDefinitionsWithOverrideRoute() {
     $display_plugin->expects($this->once())
       ->method('getOption')
       ->with('menu')
-      ->will($this->returnValue(['type' => 'tab', 'weight' => 12]));
+      ->willReturn(['type' => 'tab', 'weight' => 12]);
     $executable->display_handler = $display_plugin;
 
     $result = [['example_view', 'page_1']];
@@ -205,7 +212,7 @@ public function testGetDerivativeDefinitionsWithOverrideRoute() {
     $this->state->expects($this->once())
       ->method('get')
       ->with('views.view_route_names')
-      ->will($this->returnValue($view_route_names));
+      ->willReturn($view_route_names);
 
     $definitions = $this->localTaskDerivative->getDerivativeDefinitions($this->baseDefinition);
     $this->assertCount(0, $definitions);
@@ -223,7 +230,7 @@ public function testGetDerivativeDefinitionsWithDefaultLocalTask() {
       ->getMock();
     $storage->expects($this->any())
       ->method('id')
-      ->will($this->returnValue('example_view'));
+      ->willReturn('example_view');
     $storage->expects($this->any())
       ->method('getExecutable')
       ->willReturn($executable);
@@ -241,7 +248,11 @@ public function testGetDerivativeDefinitionsWithDefaultLocalTask() {
     $display_plugin->expects($this->exactly(2))
       ->method('getOption')
       ->with('menu')
-      ->will($this->returnValue(['type' => 'default tab', 'weight' => 12, 'title' => 'Example title']));
+      ->willReturn([
+        'type' => 'default tab',
+        'weight' => 12,
+        'title' => 'Example title',
+      ]);
     $executable->display_handler = $display_plugin;
 
     $result = [['example_view', 'page_1']];
@@ -253,7 +264,7 @@ public function testGetDerivativeDefinitionsWithDefaultLocalTask() {
     $this->state->expects($this->exactly(2))
       ->method('get')
       ->with('views.view_route_names')
-      ->will($this->returnValue($view_route_names));
+      ->willReturn($view_route_names);
 
     $definitions = $this->localTaskDerivative->getDerivativeDefinitions($this->baseDefinition);
     $this->assertCount(1, $definitions);
@@ -292,7 +303,7 @@ public function testGetDerivativeDefinitionsWithExistingLocalTask() {
       ->getMock();
     $storage->expects($this->any())
       ->method('id')
-      ->will($this->returnValue('example_view'));
+      ->willReturn('example_view');
     $storage->expects($this->any())
       ->method('getExecutable')
       ->willReturn($executable);
@@ -310,10 +321,14 @@ public function testGetDerivativeDefinitionsWithExistingLocalTask() {
     $display_plugin->expects($this->exactly(2))
       ->method('getOption')
       ->with('menu')
-      ->will($this->returnValue(['type' => 'tab', 'weight' => 12, 'title' => 'Example title']));
+      ->willReturn([
+        'type' => 'tab',
+        'weight' => 12,
+        'title' => 'Example title',
+      ]);
     $display_plugin->expects($this->once())
       ->method('getPath')
-      ->will($this->returnValue('path/example'));
+      ->willReturn('path/example');
     $executable->display_handler = $display_plugin;
 
     $result = [['example_view', 'page_1']];
@@ -325,7 +340,7 @@ public function testGetDerivativeDefinitionsWithExistingLocalTask() {
     $this->state->expects($this->exactly(2))
       ->method('get')
       ->with('views.view_route_names')
-      ->will($this->returnValue($view_route_names));
+      ->willReturn($view_route_names);
 
     // Mock the route provider.
     $route_collection = new RouteCollection();
@@ -333,7 +348,7 @@ public function testGetDerivativeDefinitionsWithExistingLocalTask() {
     $this->routeProvider->expects($this->any())
       ->method('getRoutesByPattern')
       ->with('/path')
-      ->will($this->returnValue($route_collection));
+      ->willReturn($route_collection);
 
     // Setup the existing local task of the test_route.
     $definitions['test_route_tab'] = $other_tab = [
diff --git a/core/modules/views/tests/src/Unit/Plugin/area/ResultTest.php b/core/modules/views/tests/src/Unit/Plugin/area/ResultTest.php
index 19b9eb951c..5f85d89476 100644
--- a/core/modules/views/tests/src/Unit/Plugin/area/ResultTest.php
+++ b/core/modules/views/tests/src/Unit/Plugin/area/ResultTest.php
@@ -32,6 +32,9 @@ class ResultTest extends UnitTestCase {
    */
   protected $resultHandler;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/modules/views/tests/src/Unit/Plugin/area/ViewTest.php b/core/modules/views/tests/src/Unit/Plugin/area/ViewTest.php
index 1d0ff22073..4f095fb447 100644
--- a/core/modules/views/tests/src/Unit/Plugin/area/ViewTest.php
+++ b/core/modules/views/tests/src/Unit/Plugin/area/ViewTest.php
@@ -55,7 +55,7 @@ public function testCalculateDependencies() {
       ->willReturnMap([
         ['this', $view_this],
         ['other', $view_other],
-    ]);
+      ]);
     $this->viewHandler->view->storage = $view_this;
 
     $this->viewHandler->options['view_to_insert'] = 'other:default';
diff --git a/core/modules/views/tests/src/Unit/Plugin/argument_default/RawTest.php b/core/modules/views/tests/src/Unit/Plugin/argument_default/RawTest.php
index a153c09a96..66c5c9772f 100644
--- a/core/modules/views/tests/src/Unit/Plugin/argument_default/RawTest.php
+++ b/core/modules/views/tests/src/Unit/Plugin/argument_default/RawTest.php
@@ -33,7 +33,7 @@ public function testGetArgument() {
     $current_path->setPath('/test/example', $request);
     $view->expects($this->any())
       ->method('getRequest')
-      ->will($this->returnValue($request));
+      ->willReturn($request);
     $alias_manager = $this->createMock(AliasManagerInterface::class);
     $alias_manager->expects($this->never())
       ->method('getAliasByPath');
@@ -76,7 +76,7 @@ public function testGetArgument() {
     $alias_manager->expects($this->any())
       ->method('getAliasByPath')
       ->with($this->equalTo('/test/example'))
-      ->will($this->returnValue('/other/example'));
+      ->willReturn('/other/example');
 
     $raw = new Raw([], 'raw', [], $alias_manager, $current_path);
     $options = [
diff --git a/core/modules/views/tests/src/Unit/Plugin/argument_validator/EntityTest.php b/core/modules/views/tests/src/Unit/Plugin/argument_validator/EntityTest.php
index 74eb8d5c47..b7ccfa0019 100644
--- a/core/modules/views/tests/src/Unit/Plugin/argument_validator/EntityTest.php
+++ b/core/modules/views/tests/src/Unit/Plugin/argument_validator/EntityTest.php
@@ -60,7 +60,7 @@ protected function setUp(): void {
     $mock_entity = $this->getMockForAbstractClass('Drupal\Core\Entity\EntityBase', [], '', FALSE, TRUE, TRUE, ['bundle', 'access']);
     $mock_entity->expects($this->any())
       ->method('bundle')
-      ->will($this->returnValue('test_bundle'));
+      ->willReturn('test_bundle');
     $mock_entity->expects($this->any())
       ->method('access')
       ->willReturnMap([
@@ -72,7 +72,7 @@ protected function setUp(): void {
     $mock_entity_bundle_2 = $this->getMockForAbstractClass('Drupal\Core\Entity\EntityBase', [], '', FALSE, TRUE, TRUE, ['bundle', 'access']);
     $mock_entity_bundle_2->expects($this->any())
       ->method('bundle')
-      ->will($this->returnValue('test_bundle_2'));
+      ->willReturn('test_bundle_2');
     $mock_entity_bundle_2->expects($this->any())
       ->method('access')
       ->willReturnMap([
@@ -100,7 +100,7 @@ protected function setUp(): void {
     $this->entityTypeManager->expects($this->any())
       ->method('getStorage')
       ->with('entity_test')
-      ->will($this->returnValue($storage));
+      ->willReturn($storage);
 
     $this->executable = $this->getMockBuilder('Drupal\views\ViewExecutable')
       ->disableOriginalConstructor()
diff --git a/core/modules/views/tests/src/Unit/Plugin/display/PathPluginBaseTest.php b/core/modules/views/tests/src/Unit/Plugin/display/PathPluginBaseTest.php
index 17369481a2..e4a24f6114 100644
--- a/core/modules/views/tests/src/Unit/Plugin/display/PathPluginBaseTest.php
+++ b/core/modules/views/tests/src/Unit/Plugin/display/PathPluginBaseTest.php
@@ -546,7 +546,7 @@ protected function setupViewExecutableAccessPlugin() {
       ->getMock();
     $view_entity->expects($this->any())
       ->method('id')
-      ->will($this->returnValue('test_id'));
+      ->willReturn('test_id');
 
     $view = $this->getMockBuilder('Drupal\views\ViewExecutable')
       ->disableOriginalConstructor()
@@ -554,15 +554,12 @@ protected function setupViewExecutableAccessPlugin() {
 
     $view->storage = $view_entity;
 
-    // Skip views options caching.
-    $view->editing = TRUE;
-
     $access_plugin = $this->getMockBuilder('Drupal\views\Plugin\views\access\AccessPluginBase')
       ->disableOriginalConstructor()
       ->getMockForAbstractClass();
     $this->accessPluginManager->expects($this->any())
       ->method('createInstance')
-      ->will($this->returnValue($access_plugin));
+      ->willReturn($access_plugin);
 
     return [$view, $view_entity, $access_plugin];
   }
diff --git a/core/modules/views/tests/src/Unit/Plugin/pager/PagerPluginBaseTest.php b/core/modules/views/tests/src/Unit/Plugin/pager/PagerPluginBaseTest.php
index d1a3c1af64..5af77767b3 100644
--- a/core/modules/views/tests/src/Unit/Plugin/pager/PagerPluginBaseTest.php
+++ b/core/modules/views/tests/src/Unit/Plugin/pager/PagerPluginBaseTest.php
@@ -24,6 +24,9 @@ class PagerPluginBaseTest extends UnitTestCase {
    */
   protected $pager;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     $this->pager = $this->getMockBuilder('Drupal\views\Plugin\views\pager\PagerPluginBase')
       ->disableOriginalConstructor()
@@ -210,7 +213,7 @@ public function testExecuteCountQueryWithoutOffset() {
 
     $statement->expects($this->once())
       ->method('fetchField')
-      ->will($this->returnValue(3));
+      ->willReturn(3);
 
     $query = $this->getMockBuilder('\Drupal\Core\Database\Query\Select')
       ->disableOriginalConstructor()
@@ -218,7 +221,7 @@ public function testExecuteCountQueryWithoutOffset() {
 
     $query->expects($this->once())
       ->method('execute')
-      ->will($this->returnValue($statement));
+      ->willReturn($statement);
 
     $this->pager->setOffset(0);
     $this->assertEquals(3, $this->pager->executeCountQuery($query));
@@ -234,7 +237,7 @@ public function testExecuteCountQueryWithOffset() {
 
     $statement->expects($this->once())
       ->method('fetchField')
-      ->will($this->returnValue(3));
+      ->willReturn(3);
 
     $query = $this->getMockBuilder('\Drupal\Core\Database\Query\Select')
       ->disableOriginalConstructor()
@@ -242,7 +245,7 @@ public function testExecuteCountQueryWithOffset() {
 
     $query->expects($this->once())
       ->method('execute')
-      ->will($this->returnValue($statement));
+      ->willReturn($statement);
 
     $this->pager->setOffset(2);
     $this->assertEquals(1, $this->pager->executeCountQuery($query));
@@ -258,7 +261,7 @@ public function testExecuteCountQueryWithOffsetLargerThanResult() {
 
     $statement->expects($this->once())
       ->method('fetchField')
-      ->will($this->returnValue(2));
+      ->willReturn(2);
 
     $query = $this->getMockBuilder(Select::class)
       ->disableOriginalConstructor()
@@ -266,7 +269,7 @@ public function testExecuteCountQueryWithOffsetLargerThanResult() {
 
     $query->expects($this->once())
       ->method('execute')
-      ->will($this->returnValue($statement));
+      ->willReturn($statement);
 
     $this->pager->setOffset(3);
     $this->assertEquals(0, $this->pager->executeCountQuery($query));
diff --git a/core/modules/views/tests/src/Unit/Plugin/views/display/BlockTest.php b/core/modules/views/tests/src/Unit/Plugin/views/display/BlockTest.php
index 5cea3d915f..bc19101824 100644
--- a/core/modules/views/tests/src/Unit/Plugin/views/display/BlockTest.php
+++ b/core/modules/views/tests/src/Unit/Plugin/views/display/BlockTest.php
@@ -44,7 +44,7 @@ protected function setUp(): void {
     $this->executable->expects($this->any())
       ->method('setDisplay')
       ->with('block_1')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $this->blockDisplay = $this->executable->display_handler = $this->getMockBuilder('Drupal\views\Plugin\views\display\Block')
       ->disableOriginalConstructor()
@@ -67,7 +67,7 @@ public function testBuildNoOverride() {
 
     $this->blockPlugin->expects($this->once())
       ->method('getConfiguration')
-      ->will($this->returnValue(['items_per_page' => 'none']));
+      ->willReturn(['items_per_page' => 'none']);
 
     $this->blockDisplay->preBlockBuild($this->blockPlugin);
   }
@@ -82,7 +82,7 @@ public function testBuildOverride() {
 
     $this->blockPlugin->expects($this->once())
       ->method('getConfiguration')
-      ->will($this->returnValue(['items_per_page' => 5]));
+      ->willReturn(['items_per_page' => 5]);
 
     $this->blockDisplay->preBlockBuild($this->blockPlugin);
   }
diff --git a/core/modules/views/tests/src/Unit/Plugin/views/field/EntityOperationsUnitTest.php b/core/modules/views/tests/src/Unit/Plugin/views/field/EntityOperationsUnitTest.php
index b5daf4ab1d..8dfa29357d 100644
--- a/core/modules/views/tests/src/Unit/Plugin/views/field/EntityOperationsUnitTest.php
+++ b/core/modules/views/tests/src/Unit/Plugin/views/field/EntityOperationsUnitTest.php
@@ -101,7 +101,7 @@ public function testRenderWithDestination() {
       ->getMock();
     $entity->expects($this->any())
       ->method('getEntityTypeId')
-      ->will($this->returnValue($entity_type_id));
+      ->willReturn($entity_type_id);
 
     $operations = [
       'foo' => [
@@ -112,12 +112,12 @@ public function testRenderWithDestination() {
     $list_builder->expects($this->once())
       ->method('getOperations')
       ->with($entity)
-      ->will($this->returnValue($operations));
+      ->willReturn($operations);
 
     $this->entityTypeManager->expects($this->once())
       ->method('getListBuilder')
       ->with($entity_type_id)
-      ->will($this->returnValue($list_builder));
+      ->willReturn($list_builder);
 
     $this->plugin->options['destination'] = TRUE;
 
@@ -143,7 +143,7 @@ public function testRenderWithoutDestination() {
       ->getMock();
     $entity->expects($this->any())
       ->method('getEntityTypeId')
-      ->will($this->returnValue($entity_type_id));
+      ->willReturn($entity_type_id);
 
     $operations = [
       'foo' => [
@@ -154,12 +154,12 @@ public function testRenderWithoutDestination() {
     $list_builder->expects($this->once())
       ->method('getOperations')
       ->with($entity)
-      ->will($this->returnValue($operations));
+      ->willReturn($operations);
 
     $this->entityTypeManager->expects($this->once())
       ->method('getListBuilder')
       ->with($entity_type_id)
-      ->will($this->returnValue($list_builder));
+      ->willReturn($list_builder);
 
     $this->plugin->options['destination'] = FALSE;
 
diff --git a/core/modules/views/tests/src/Unit/Routing/ViewPageControllerTest.php b/core/modules/views/tests/src/Unit/Routing/ViewPageControllerTest.php
index c898806fbc..9a7db01c1d 100644
--- a/core/modules/views/tests/src/Unit/Routing/ViewPageControllerTest.php
+++ b/core/modules/views/tests/src/Unit/Routing/ViewPageControllerTest.php
@@ -35,6 +35,9 @@ class ViewPageControllerTest extends UnitTestCase {
     '#view_display_show_admin_links' => NULL,
   ];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     $this->pageController = new ViewPageController();
   }
@@ -131,7 +134,7 @@ public function testHandleWithArgumentsOnOverriddenRoute() {
       '#cache' => [
         'keys' => ['view', 'test_page_view', 'display', 'page_1', 'args', 'test-argument'],
       ],
-      ] + $this->defaultRenderArray;
+    ] + $this->defaultRenderArray;
 
     $this->assertEquals($build, $result);
   }
@@ -170,7 +173,7 @@ public function testHandleWithArgumentsOnOverriddenRouteWithUpcasting() {
       '#cache' => [
         'keys' => ['view', 'test_page_view', 'display', 'page_1', 'args', 'example_id'],
       ],
-      ] + $this->defaultRenderArray;
+    ] + $this->defaultRenderArray;
 
     $this->assertEquals($build, $result);
   }
diff --git a/core/modules/views/tests/src/Unit/ViewsDataHelperTest.php b/core/modules/views/tests/src/Unit/ViewsDataHelperTest.php
index 6dbfd3c94d..e481bb3faa 100644
--- a/core/modules/views/tests/src/Unit/ViewsDataHelperTest.php
+++ b/core/modules/views/tests/src/Unit/ViewsDataHelperTest.php
@@ -44,7 +44,7 @@ public function testFetchFields() {
       ->getMock();
     $views_data->expects($this->once())
       ->method('getAll')
-      ->will($this->returnValue($this->viewsData()));
+      ->willReturn($this->viewsData());
 
     $data_helper = new ViewsDataHelper($views_data);
 
diff --git a/core/modules/views/tests/src/Unit/ViewsDataTest.php b/core/modules/views/tests/src/Unit/ViewsDataTest.php
index 30233553ce..b30ff64805 100644
--- a/core/modules/views/tests/src/Unit/ViewsDataTest.php
+++ b/core/modules/views/tests/src/Unit/ViewsDataTest.php
@@ -70,7 +70,7 @@ protected function setUp(): void {
     $this->languageManager = $this->createMock('Drupal\Core\Language\LanguageManagerInterface');
     $this->languageManager->expects($this->any())
       ->method('getCurrentLanguage')
-      ->will($this->returnValue(new Language(['id' => 'en'])));
+      ->willReturn(new Language(['id' => 'en']));
 
     $this->viewsData = new ViewsData($this->cacheBackend, $this->configFactory, $this->moduleHandler, $this->languageManager);
   }
@@ -192,7 +192,7 @@ public function testGetOnFirstCall() {
     $this->cacheBackend->expects($this->once())
       ->method('get')
       ->with("views_data:en")
-      ->will($this->returnValue(FALSE));
+      ->willReturn(FALSE);
 
     $expected_views_data = $this->viewsDataWithProvider();
     $views_data = $this->viewsData->getAll();
@@ -281,7 +281,7 @@ public function testFullGetCache() {
     $this->cacheBackend->expects($this->once())
       ->method('get')
       ->with("views_data:en")
-      ->will($this->returnValue(FALSE));
+      ->willReturn(FALSE);
 
     $views_data = $this->viewsData->getAll();
     $this->assertSame($expected_views_data, $views_data);
@@ -404,7 +404,7 @@ public function testCacheCallsWithSameTableMultipleTimesAndWarmCache() {
     $this->cacheBackend->expects($this->once())
       ->method('get')
       ->with('views_data:views_test_data:en')
-      ->will($this->returnValue((object) ['data' => $expected_views_data['views_test_data']]));
+      ->willReturn((object) ['data' => $expected_views_data['views_test_data']]);
     $this->cacheBackend->expects($this->never())
       ->method('set');
 
@@ -512,7 +512,7 @@ public function testCacheCallsWithWarmCacheForInvalidTable() {
     $this->cacheBackend->expects($this->once())
       ->method('get')
       ->with("views_data:$non_existing_table:en")
-      ->will($this->returnValue((object) ['data' => []]));
+      ->willReturn((object) ['data' => []]);
     $this->cacheBackend->expects($this->never())
       ->method('set');
 
@@ -565,7 +565,7 @@ public function testCacheCallsWithWarmCacheAndGetAllTables() {
     $this->cacheBackend->expects($this->once())
       ->method('get')
       ->with("views_data:en")
-      ->will($this->returnValue((object) ['data' => $expected_views_data]));
+      ->willReturn((object) ['data' => $expected_views_data]);
     $this->cacheBackend->expects($this->never())
       ->method('set');
 
diff --git a/core/modules/views/tests/src/Unit/ViewsTest.php b/core/modules/views/tests/src/Unit/ViewsTest.php
index 813c88d980..5eb36e4c0d 100644
--- a/core/modules/views/tests/src/Unit/ViewsTest.php
+++ b/core/modules/views/tests/src/Unit/ViewsTest.php
@@ -58,13 +58,13 @@ public function testGetView() {
     $view_storage->expects($this->once())
       ->method('load')
       ->with('test_view')
-      ->will($this->returnValue($view));
+      ->willReturn($view);
 
     $entity_type_manager = $this->createMock('Drupal\Core\Entity\EntityTypeManagerInterface');
     $entity_type_manager->expects($this->once())
       ->method('getStorage')
       ->with('view')
-      ->will($this->returnValue($view_storage));
+      ->willReturn($view_storage);
     $this->container->set('entity_type.manager', $entity_type_manager);
 
     $executable = Views::getView('test_view');
@@ -168,13 +168,17 @@ public function testGetApplicableViews($applicable_type, $expected) {
     $view_storage->expects($this->once())
       ->method('loadMultiple')
       ->with(['test_view_1', 'test_view_2', 'test_view_3'])
-      ->will($this->returnValue(['test_view_1' => $view_1, 'test_view_2' => $view_2, 'test_view_3' => $view_3]));
+      ->willReturn([
+        'test_view_1' => $view_1,
+        'test_view_2' => $view_2,
+        'test_view_3' => $view_3,
+      ]);
 
     $entity_type_manager = $this->createMock(EntityTypeManagerInterface::class);
     $entity_type_manager->expects($this->exactly(2))
       ->method('getStorage')
       ->with('view')
-      ->will($this->returnValue($view_storage));
+      ->willReturn($view_storage);
     $this->container->set('entity_type.manager', $entity_type_manager);
 
     $definitions = [
diff --git a/core/modules/views/views.post_update.php b/core/modules/views/views.post_update.php
index afb9dbb8d0..ddb0a80726 100644
--- a/core/modules/views/views.post_update.php
+++ b/core/modules/views/views.post_update.php
@@ -5,6 +5,10 @@
  * Post update functions for Views.
  */
 
+use Drupal\Core\Config\Entity\ConfigEntityUpdater;
+use Drupal\views\ViewEntityInterface;
+use Drupal\views\ViewsConfigUpdater;
+
 /**
  * Implements hook_removed_post_updates().
  */
@@ -37,3 +41,14 @@ function views_removed_post_updates() {
     'views_post_update_image_lazy_load' => '10.0.0',
   ];
 }
+
+/**
+ * Add eager load option to all oembed type field configurations.
+ */
+function views_post_update_oembed_eager_load(?array &$sandbox = NULL): void {
+  /** @var \Drupal\views\ViewsConfigUpdater $view_config_updater */
+  $view_config_updater = \Drupal::classResolver(ViewsConfigUpdater::class);
+  \Drupal::classResolver(ConfigEntityUpdater::class)->update($sandbox, 'view', function (ViewEntityInterface $view) use ($view_config_updater): bool {
+    return $view_config_updater->needsOembedEagerLoadFieldUpdate($view);
+  });
+}
diff --git a/core/modules/views/views.services.yml b/core/modules/views/views.services.yml
index 1521a5671a..591cd6c961 100644
--- a/core/modules/views/views.services.yml
+++ b/core/modules/views/views.services.yml
@@ -84,7 +84,7 @@ services:
     class: Drupal\views\Plugin\views\query\MysqlDateSql
     arguments: ['@database']
     tags:
-       - { name: backend_overridable }
+      - { name: backend_overridable }
   pgsql.views.date_sql:
     class: Drupal\views\Plugin\views\query\PostgresqlDateSql
     arguments: ['@database']
diff --git a/core/modules/views/views.views.inc b/core/modules/views/views.views.inc
index de79773321..2f88006d1a 100644
--- a/core/modules/views/views.views.inc
+++ b/core/modules/views/views.views.inc
@@ -22,14 +22,14 @@ function views_views_data() {
   $data['views']['table']['group'] = t('Global');
   $data['views']['table']['join'] = [
   // #global is a special flag which allows a table to appear all the time.
-  '#global' => [],
+    '#global' => [],
   ];
 
   $data['views']['random'] = [
-  'title' => t('Random'),
-  'help' => t('Randomize the display order.'),
-  'sort' => [
-    'id' => 'random',
+    'title' => t('Random'),
+    'help' => t('Randomize the display order.'),
+    'sort' => [
+      'id' => 'random',
     ],
   ];
 
@@ -116,7 +116,7 @@ function views_views_data() {
   ];
 
   $data['views']['combine'] = [
-   'title' => t('Combine fields filter'),
+    'title' => t('Combine fields filter'),
     'help' => t('Combine multiple fields together and search by them.'),
     'filter' => [
       'id' => 'combine',
diff --git a/core/modules/views_ui/admin.inc b/core/modules/views_ui/admin.inc
index 31d0ddaed1..230dd773ae 100644
--- a/core/modules/views_ui/admin.inc
+++ b/core/modules/views_ui/admin.inc
@@ -182,7 +182,7 @@ function views_ui_add_ajax_wrapper($element, FormStateInterface $form_state) {
 /**
  * Updates a part of the add view form via AJAX.
  *
- * @return
+ * @return array
  *   The part of the form that has changed.
  */
 function views_ui_ajax_update_form($form, FormStateInterface $form_state) {
diff --git a/core/modules/views_ui/src/Form/Ajax/EditDetails.php b/core/modules/views_ui/src/Form/Ajax/EditDetails.php
index bbb7266d8c..b3f8b517ca 100644
--- a/core/modules/views_ui/src/Form/Ajax/EditDetails.php
+++ b/core/modules/views_ui/src/Form/Ajax/EditDetails.php
@@ -51,10 +51,10 @@ public function buildForm(array $form, FormStateInterface $form_state) {
       '#default_value' => $view->get('langcode'),
     ];
     $form['details']['description'] = [
-       '#type' => 'textfield',
-       '#title' => $this->t('Administrative description'),
-       '#default_value' => $view->get('description'),
-     ];
+      '#type' => 'textfield',
+      '#title' => $this->t('Administrative description'),
+      '#default_value' => $view->get('description'),
+    ];
     $form['details']['tag'] = [
       '#type' => 'textfield',
       '#title' => $this->t('Administrative tags'),
diff --git a/core/modules/views_ui/src/ViewEditForm.php b/core/modules/views_ui/src/ViewEditForm.php
index 1182f9e436..c0e0c353c3 100644
--- a/core/modules/views_ui/src/ViewEditForm.php
+++ b/core/modules/views_ui/src/ViewEditForm.php
@@ -601,8 +601,8 @@ public function getDisplayDetails($view, $display) {
     $build['columns']['second']['header'] = $this->getFormBucket($view, 'header', $display);
     $build['columns']['second']['footer'] = $this->getFormBucket($view, 'footer', $display);
     $build['columns']['second']['empty'] = $this->getFormBucket($view, 'empty', $display);
-    $build['columns']['third']['arguments'] = $this->getFormBucket($view, 'argument', $display);
     $build['columns']['third']['relationships'] = $this->getFormBucket($view, 'relationship', $display);
+    $build['columns']['third']['arguments'] = $this->getFormBucket($view, 'argument', $display);
 
     return $build;
   }
diff --git a/core/modules/views_ui/src/ViewUI.php b/core/modules/views_ui/src/ViewUI.php
index f7646231a2..531c27a7e7 100644
--- a/core/modules/views_ui/src/ViewUI.php
+++ b/core/modules/views_ui/src/ViewUI.php
@@ -23,6 +23,7 @@
 /**
  * Stores UI related temporary settings.
  */
+#[\AllowDynamicProperties]
 class ViewUI implements ViewEntityInterface {
 
   /**
@@ -121,8 +122,9 @@ class ViewUI implements ViewEntityInterface {
   ];
 
   /**
-   * Whether the config is being created, updated or deleted through the
-   * import process.
+   * Whether the config is being synced through the import process.
+   *
+   * This is the case with create, update or delete.
    *
    * @var bool
    */
@@ -677,9 +679,9 @@ public function renderPreview($display_id, $args = []) {
                 [
                   'data' => [
                     '#prefix' => '<pre>',
-                     'queries' => $queries,
-                     '#suffix' => '</pre>',
-                    ],
+                    'queries' => $queries,
+                    '#suffix' => '</pre>',
+                  ],
                 ],
               ];
             }
@@ -834,7 +836,7 @@ public function renderPreview($display_id, $args = []) {
   /**
    * Get the user's current progress through the form stack.
    *
-   * @return
+   * @return array|bool
    *   FALSE if the user is not currently in a multiple-form stack. Otherwise,
    *   an associative array with the following keys:
    *   - current: The number of the current form on the stack.
diff --git a/core/modules/views_ui/tests/src/Functional/DefaultViewsTest.php b/core/modules/views_ui/tests/src/Functional/DefaultViewsTest.php
index 09aacc6891..7d13dbbc83 100644
--- a/core/modules/views_ui/tests/src/Functional/DefaultViewsTest.php
+++ b/core/modules/views_ui/tests/src/Functional/DefaultViewsTest.php
@@ -25,6 +25,9 @@ class DefaultViewsTest extends UITestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp($import_test_views = TRUE, $modules = ['views_test_config']): void {
     parent::setUp($import_test_views, $modules);
 
@@ -169,32 +172,14 @@ public function testDefaultViews() {
    * Tests that enabling views moves them to the correct table.
    */
   public function testSplitListing() {
-    // Build a re-usable xpath query.
-    $xpath = '//div[@id="views-entity-list"]/div[@class = :status]/table//td/text()[contains(., :title)]';
-
-    $arguments = [
-      ':status' => 'views-list-section enabled',
-      ':title' => 'test_view_status',
-    ];
-
     $this->drupalGet('admin/structure/views');
-
-    $elements = $this->xpath($xpath, $arguments);
-    $this->assertCount(0, $elements, 'A disabled view is not found in the enabled views table.');
-
-    $arguments[':status'] = 'views-list-section disabled';
-    $elements = $this->xpath($xpath, $arguments);
-    $this->assertCount(1, $elements, 'A disabled view is found in the disabled views table.');
+    $this->assertSession()->elementNotExists('xpath', '//div[@id="views-entity-list"]/div[@class = "views-list-section enabled"]/table//td/text()[contains(., "test_view_status")]');
+    $this->assertSession()->elementsCount('xpath', '//div[@id="views-entity-list"]/div[@class = "views-list-section disabled"]/table//td/text()[contains(., "test_view_status")]', 1);
 
     // Enable the view.
     $this->clickViewsOperationLink('Enable', '/test_view_status/');
-
-    $elements = $this->xpath($xpath, $arguments);
-    $this->assertCount(0, $elements, 'After enabling a view, it is not found in the disabled views table.');
-
-    $arguments[':status'] = 'views-list-section enabled';
-    $elements = $this->xpath($xpath, $arguments);
-    $this->assertCount(1, $elements, 'After enabling a view, it is found in the enabled views table.');
+    $this->assertSession()->elementNotExists('xpath', '//div[@id="views-entity-list"]/div[@class = "views-list-section disabled"]/table//td/text()[contains(., "test_view_status")]');
+    $this->assertSession()->elementsCount('xpath', '//div[@id="views-entity-list"]/div[@class = "views-list-section enabled"]/table//td/text()[contains(., "test_view_status")]', 1);
 
     // Attempt to disable the view by path directly, with no token.
     $this->drupalGet('admin/structure/views/view/test_view_status/disable');
diff --git a/core/modules/views_ui/tests/src/Functional/DisplayCRUDTest.php b/core/modules/views_ui/tests/src/Functional/DisplayCRUDTest.php
index 6bdd144050..579308baf5 100644
--- a/core/modules/views_ui/tests/src/Functional/DisplayCRUDTest.php
+++ b/core/modules/views_ui/tests/src/Functional/DisplayCRUDTest.php
@@ -106,8 +106,7 @@ public function testRemoveDisplay() {
    */
   public function testDefaultDisplay() {
     $this->drupalGet('admin/structure/views/view/test_display');
-    $elements = $this->xpath('//*[@id="views-page-1-display-title"]');
-    $this->assertCount(1, $elements, 'The page display is loaded as the default display.');
+    $this->assertSession()->elementsCount('xpath', '//*[@id="views-page-1-display-title"]', 1);
   }
 
   /**
diff --git a/core/modules/views_ui/tests/src/Functional/DisplayPathTest.php b/core/modules/views_ui/tests/src/Functional/DisplayPathTest.php
index 032cb5843f..36991c2f54 100644
--- a/core/modules/views_ui/tests/src/Functional/DisplayPathTest.php
+++ b/core/modules/views_ui/tests/src/Functional/DisplayPathTest.php
@@ -16,6 +16,9 @@ class DisplayPathTest extends UITestBase {
 
   use AssertPageCacheContextsAndTagsTrait;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp($import_test_views = TRUE, $modules = ['views_test_config']): void {
     parent::setUp($import_test_views, $modules);
 
diff --git a/core/modules/views_ui/tests/src/Functional/DisplayTest.php b/core/modules/views_ui/tests/src/Functional/DisplayTest.php
index 8289f8ee56..5467baf036 100644
--- a/core/modules/views_ui/tests/src/Functional/DisplayTest.php
+++ b/core/modules/views_ui/tests/src/Functional/DisplayTest.php
@@ -56,9 +56,9 @@ public function testReorderDisplay() {
     $view = $this->randomView($view);
 
     $this->clickLink('Reorder displays');
-    $this->assertNotEmpty($this->xpath('//tr[@id="display-row-default"]'), 'Make sure the default display appears on the reorder listing');
-    $this->assertNotEmpty($this->xpath('//tr[@id="display-row-page_1"]'), 'Make sure the page display appears on the reorder listing');
-    $this->assertNotEmpty($this->xpath('//tr[@id="display-row-block_1"]'), 'Make sure the block display appears on the reorder listing');
+    $this->assertSession()->elementExists('xpath', '//tr[@id="display-row-default"]');
+    $this->assertSession()->elementExists('xpath', '//tr[@id="display-row-page_1"]');
+    $this->assertSession()->elementExists('xpath', '//tr[@id="display-row-block_1"]');
 
     // Ensure the view displays are in the expected order in configuration.
     $expected_display_order = ['default', 'block_1', 'page_1'];
diff --git a/core/modules/views_ui/tests/src/Functional/DuplicateTest.php b/core/modules/views_ui/tests/src/Functional/DuplicateTest.php
index c461c839a2..90de1faec7 100644
--- a/core/modules/views_ui/tests/src/Functional/DuplicateTest.php
+++ b/core/modules/views_ui/tests/src/Functional/DuplicateTest.php
@@ -14,6 +14,9 @@ class DuplicateTest extends UITestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp($import_test_views = TRUE, $modules = ['views_test_config']): void {
     parent::setUp($import_test_views, $modules);
 
diff --git a/core/modules/views_ui/tests/src/Functional/ExposedFormUITest.php b/core/modules/views_ui/tests/src/Functional/ExposedFormUITest.php
index 85f66cd1fd..0e805d6426 100644
--- a/core/modules/views_ui/tests/src/Functional/ExposedFormUITest.php
+++ b/core/modules/views_ui/tests/src/Functional/ExposedFormUITest.php
@@ -44,6 +44,9 @@ class ExposedFormUITest extends UITestBase {
    */
   protected $groupFormUiErrors = [];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp($import_test_views = TRUE, $modules = ['views_test_config']): void {
     parent::setUp($import_test_views, $modules);
 
diff --git a/core/modules/views_ui/tests/src/Functional/FieldUITest.php b/core/modules/views_ui/tests/src/Functional/FieldUITest.php
index 0e0c1e6fa3..02a309048d 100644
--- a/core/modules/views_ui/tests/src/Functional/FieldUITest.php
+++ b/core/modules/views_ui/tests/src/Functional/FieldUITest.php
@@ -58,8 +58,7 @@ public function testFieldUI() {
     $this->assertSession()->elementTextEquals('xpath', "{$xpath}[2]", '{{ id }} == ID');
     $this->assertSession()->elementTextEquals('xpath', "{$xpath}[3]", '{{ name }} == Name');
 
-    $result = $this->xpath('//details[@id="edit-options-more"]');
-    $this->assertEmpty($result, "Container 'more' is empty and should not be displayed.");
+    $this->assertSession()->elementNotExists('xpath', '//details[@id="edit-options-more"]');
 
     // Ensure that dialog titles are not escaped.
     $edit_groupby_url = 'admin/structure/views/nojs/handler/test_view/default/field/name';
diff --git a/core/modules/views_ui/tests/src/Functional/FilterNumericWebTest.php b/core/modules/views_ui/tests/src/Functional/FilterNumericWebTest.php
index 0952c5e1cd..62803428f9 100644
--- a/core/modules/views_ui/tests/src/Functional/FilterNumericWebTest.php
+++ b/core/modules/views_ui/tests/src/Functional/FilterNumericWebTest.php
@@ -144,8 +144,7 @@ public function testFilterNumericUI() {
 
     // Make sure the label is visible and that there's no fieldset wrapper.
     $this->assertSession()->elementsCount('xpath', '//label[contains(@for, "edit-age") and contains(text(), "Age greater than")]', 1);
-    $fieldset = $this->xpath('//fieldset[contains(@id, "edit-age-wrapper")]');
-    $this->assertEmpty($fieldset);
+    $this->assertSession()->elementNotExists('xpath', '//fieldset[contains(@id, "edit-age-wrapper")]');
   }
 
 }
diff --git a/core/modules/views_ui/tests/src/Functional/HandlerTest.php b/core/modules/views_ui/tests/src/Functional/HandlerTest.php
index 6462e57d3e..3f6fef8d92 100644
--- a/core/modules/views_ui/tests/src/Functional/HandlerTest.php
+++ b/core/modules/views_ui/tests/src/Functional/HandlerTest.php
@@ -298,8 +298,7 @@ public function testErrorMissingHelp() {
    * @internal
    */
   public function assertNoDuplicateField(string $field_name, string $entity_type): void {
-    $elements = $this->xpath('//td[.=:entity_type]/preceding-sibling::td[@class="title" and .=:title]', [':title' => $field_name, ':entity_type' => $entity_type]);
-    $this->assertCount(1, $elements, $field_name . ' appears just once in ' . $entity_type . '.');
+    $this->assertSession()->elementsCount('xpath', '//td[.="' . $entity_type . '"]/preceding-sibling::td[@class="title" and .="' . $field_name . '"]', 1);
   }
 
 }
diff --git a/core/modules/views_ui/tests/src/Functional/OverrideDisplaysTest.php b/core/modules/views_ui/tests/src/Functional/OverrideDisplaysTest.php
index 9c0ed2b23b..1c030b5cdc 100644
--- a/core/modules/views_ui/tests/src/Functional/OverrideDisplaysTest.php
+++ b/core/modules/views_ui/tests/src/Functional/OverrideDisplaysTest.php
@@ -14,6 +14,9 @@ class OverrideDisplaysTest extends UITestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp($import_test_views = TRUE, $modules = ['views_test_config']): void {
     parent::setUp($import_test_views, $modules);
 
diff --git a/core/modules/views_ui/tests/src/Functional/TranslatedViewTest.php b/core/modules/views_ui/tests/src/Functional/TranslatedViewTest.php
index edc9a6db61..534d0409c0 100644
--- a/core/modules/views_ui/tests/src/Functional/TranslatedViewTest.php
+++ b/core/modules/views_ui/tests/src/Functional/TranslatedViewTest.php
@@ -42,6 +42,9 @@ class TranslatedViewTest extends UITestBase {
    */
   protected $adminUser;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp($import_test_views = TRUE, $modules = []): void {
     parent::setUp($import_test_views, $modules);
 
diff --git a/core/modules/views_ui/tests/src/Functional/ViewsListTest.php b/core/modules/views_ui/tests/src/Functional/ViewsListTest.php
index 93f80b3e15..2bbfbdd8b9 100644
--- a/core/modules/views_ui/tests/src/Functional/ViewsListTest.php
+++ b/core/modules/views_ui/tests/src/Functional/ViewsListTest.php
@@ -74,7 +74,7 @@ public function testViewsListLimit() {
     $this->drupalGet('admin/structure/views');
 
     // Check that all the rows are listed.
-    $this->assertCount($limit, $this->xpath('//tbody/tr[contains(@class,"views-ui-list-enabled")]'));
+    $this->assertSession()->elementsCount('xpath', '//tbody/tr[contains(@class,"views-ui-list-enabled")]', $limit);
   }
 
 }
diff --git a/core/modules/views_ui/tests/src/Functional/ViewsUITourTest.php b/core/modules/views_ui/tests/src/Functional/ViewsUITourTest.php
index 72817fb071..c28580b32c 100644
--- a/core/modules/views_ui/tests/src/Functional/ViewsUITourTest.php
+++ b/core/modules/views_ui/tests/src/Functional/ViewsUITourTest.php
@@ -38,6 +38,9 @@ class ViewsUITourTest extends TourTestBase {
    */
   protected static $modules = ['views_ui', 'tour', 'language', 'locale'];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->adminUser = $this->drupalCreateUser([
@@ -108,10 +111,10 @@ public function testViewsUiTourTipsTranslated() {
    */
   public function createTranslation($source, $langcode) {
     return $this->localeStorage->createTranslation([
-        'lid' => $source->lid,
-        'language' => $langcode,
-        'translation' => $this->randomMachineName(100),
-      ])->save();
+      'lid' => $source->lid,
+      'language' => $langcode,
+      'translation' => $this->randomMachineName(100),
+    ])->save();
   }
 
 }
diff --git a/core/modules/views_ui/tests/src/FunctionalJavascript/PreviewTest.php b/core/modules/views_ui/tests/src/FunctionalJavascript/PreviewTest.php
index da1d865ac0..4184efd769 100644
--- a/core/modules/views_ui/tests/src/FunctionalJavascript/PreviewTest.php
+++ b/core/modules/views_ui/tests/src/FunctionalJavascript/PreviewTest.php
@@ -133,8 +133,8 @@ public function testPreviewWithPagersUI() {
     $this->getPreviewAJAX('test_pager_full_ajax', 'default', 5);
 
     // Test that the pager is present and rendered.
-    $elements = $this->xpath('//ul[contains(@class, :class)]/li', [':class' => 'pager__items']);
-    $this->assertNotEmpty($elements, 'Full pager found.');
+    $elements = $this->xpath('//ul[contains(@class, "pager__items")]/li');
+    $this->assertNotEmpty($elements);
 
     // Verify elements and links to pages.
     // We expect to find 5 elements: current page == 1, links to pages 2 and
@@ -159,8 +159,8 @@ public function testPreviewWithPagersUI() {
     $this->clickPreviewLinkAJAX($element, 5);
 
     // Test that the pager is present and rendered.
-    $elements = $this->xpath('//ul[contains(@class, :class)]/li', [':class' => 'pager__items']);
-    $this->assertNotEmpty($elements, 'Full pager found.');
+    $elements = $this->xpath('//ul[contains(@class, "pager__items")]/li');
+    $this->assertNotEmpty($elements);
 
     // Verify elements and links to pages.
     // We expect to find 7 elements: links to '<< first' and '< previous'
@@ -191,8 +191,8 @@ public function testPreviewWithPagersUI() {
     $this->getPreviewAJAX('test_mini_pager_ajax', 'default', 3);
 
     // Test that the pager is present and rendered.
-    $elements = $this->xpath('//ul[contains(@class, :class)]/li', [':class' => 'pager__items']);
-    $this->assertNotEmpty($elements, 'Mini pager found.');
+    $elements = $this->xpath('//ul[contains(@class, "pager__items")]/li');
+    $this->assertNotEmpty($elements);
 
     // Verify elements and links to pages.
     // We expect to find current pages element with no link, next page element
@@ -207,8 +207,8 @@ public function testPreviewWithPagersUI() {
     $this->clickPreviewLinkAJAX($next_page_link, 3);
 
     // Test that the pager is present and rendered.
-    $elements = $this->xpath('//ul[contains(@class, :class)]/li', [':class' => 'pager__items']);
-    $this->assertNotEmpty($elements, 'Mini pager found.');
+    $elements = $this->xpath('//ul[contains(@class, "pager__items")]/li');
+    $this->assertNotEmpty($elements);
 
     // Verify elements and links to pages.
     // We expect to find 3 elements: previous page with a link, current
diff --git a/core/modules/views_ui/tests/src/Unit/ViewListBuilderTest.php b/core/modules/views_ui/tests/src/Unit/ViewListBuilderTest.php
index c0d3eea411..b576cb7b01 100644
--- a/core/modules/views_ui/tests/src/Unit/ViewListBuilderTest.php
+++ b/core/modules/views_ui/tests/src/Unit/ViewListBuilderTest.php
@@ -90,10 +90,11 @@ public function testBuildRowEntityList() {
       ->getMock();
     $page_display->expects($this->any())
       ->method('getPath')
-      ->will($this->onConsecutiveCalls(
-        $this->returnValue('test_page'),
-        $this->returnValue('<object>malformed_path</object>'),
-        $this->returnValue('<script>alert("placeholder_page/%")</script>')));
+      ->willReturnOnConsecutiveCalls(
+        'test_page',
+        '<object>malformed_path</object>',
+        '<script>alert("placeholder_page/%")</script>',
+      );
 
     $embed_display = $this->getMockBuilder('Drupal\views\Plugin\views\display\Embed')
       ->onlyMethods(['initDisplay'])
diff --git a/core/modules/views_ui/tests/src/Unit/ViewUIObjectTest.php b/core/modules/views_ui/tests/src/Unit/ViewUIObjectTest.php
index 17f93a4777..36b4933a6f 100644
--- a/core/modules/views_ui/tests/src/Unit/ViewUIObjectTest.php
+++ b/core/modules/views_ui/tests/src/Unit/ViewUIObjectTest.php
@@ -85,7 +85,7 @@ public function testIsLocked() {
     $account = $this->createMock('Drupal\Core\Session\AccountInterface');
     $account->expects($this->exactly(2))
       ->method('id')
-      ->will($this->returnValue(1));
+      ->willReturn(1);
 
     $container = new ContainerBuilder();
     $container->set('current_user', $account);
diff --git a/core/modules/workspaces/css/workspaces.off-canvas.css b/core/modules/workspaces/css/workspaces.off-canvas.css
index 653cb4892e..5577f7df65 100644
--- a/core/modules/workspaces/css/workspaces.off-canvas.css
+++ b/core/modules/workspaces/css/workspaces.off-canvas.css
@@ -16,13 +16,13 @@
 
 @media (min-width: 47.9375rem) {
 
-#drupal-off-canvas-wrapper.workspaces-dialog .ui-dialog-content > div {
-      display: flex;
-      align-items: flex-end;
-      width: 100%;
-      height: 100%;
+  #drupal-off-canvas-wrapper.workspaces-dialog .ui-dialog-content > div {
+    display: flex;
+    align-items: flex-end;
+    width: 100%;
+    height: 100%;
   }
-    }
+}
 
 /**
    * The Workspace UI hides the titlebar, but we need to show and correctly
@@ -30,205 +30,177 @@
    */
 
 #drupal-off-canvas-wrapper.workspaces-dialog .ui-dialog-titlebar {
-    all: revert;
-  }
+  all: revert;
+}
 
 #drupal-off-canvas-wrapper.workspaces-dialog .ui-dialog-titlebar:before {
-      content: none;
-    }
-
-#drupal-off-canvas-wrapper.workspaces-dialog .ui-dialog-titlebar .ui-dialog-title {
-      display: none;
-    }
-
-[dir="ltr"] #drupal-off-canvas-wrapper.workspaces-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close {
-      right: 1em;
+  content: none;
 }
 
-[dir="rtl"] #drupal-off-canvas-wrapper.workspaces-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close {
-      left: 1em;
+#drupal-off-canvas-wrapper.workspaces-dialog .ui-dialog-titlebar .ui-dialog-title {
+  display: none;
 }
 
 #drupal-off-canvas-wrapper.workspaces-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close {
-      top: 1em;
-      z-index: 1;
-      transform: none;
-    }
+  inset-block-start: 1em;
+  inset-inline-end: 1em;
+  z-index: 1;
+  transform: none;
+}
 
 #drupal-off-canvas-wrapper.workspaces-dialog .active-workspace {
-    padding: 0 var(--off-canvas-padding);
-  }
+  padding: 0 var(--off-canvas-padding);
+}
 
 @media (min-width: 47.9375rem) {
 
-#drupal-off-canvas-wrapper.workspaces-dialog .active-workspace {
-      display: flex;
-      flex-direction: column;
-      flex-basis: 12.5rem;
-      flex-grow: 2;
-      align-self: stretch;
-      order: 1;
-      padding: var(--off-canvas-padding) var(--off-canvas-padding) 0;
+  #drupal-off-canvas-wrapper.workspaces-dialog .active-workspace {
+    display: flex;
+    flex-direction: column;
+    flex-basis: 12.5rem;
+    flex-grow: 2;
+    align-self: stretch;
+    order: 1;
+    padding: var(--off-canvas-padding) var(--off-canvas-padding) 0;
   }
-    }
+}
 
 #drupal-off-canvas-wrapper.workspaces-dialog .active-workspace__title {
-    font-size: 0.8125rem;
-    font-weight: bold;
-  }
-
-#drupal-off-canvas-wrapper.workspaces-dialog .active-workspace__label {
-    position: relative; /* Anchor icon pseudo-element. */
-    padding: 1.125rem 3.125rem 0;
-    color: #fff;
-    font-size: 1.125rem;
-    font-weight: bold;
-    line-height: 1.2;
-  }
-
-[dir="ltr"] #drupal-off-canvas-wrapper.workspaces-dialog .active-workspace__label:before {
-      left: 0;
+  font-size: 0.8125rem;
+  font-weight: bold;
 }
 
-[dir="rtl"] #drupal-off-canvas-wrapper.workspaces-dialog .active-workspace__label:before {
-      right: 0;
+#drupal-off-canvas-wrapper.workspaces-dialog .active-workspace__label {
+  position: relative; /* Anchor icon pseudo-element. */
+  padding: 1.125rem 3.125rem 0;
+  color: #fff;
+  font-size: 1.125rem;
+  font-weight: bold;
+  line-height: 1.2;
 }
 
 #drupal-off-canvas-wrapper.workspaces-dialog .active-workspace__label:before {
-      position: absolute;
-      display: block;
-      width: 1.25rem;
-      height: 1.25rem;
-      content: "";
-      background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 40 40'%3e  %3cpath fill='%23F0A100' fill-rule='evenodd' d='M38,0 L2.002,0 C0.896716337,-1.37884559e-07 0.000552089742,0.895716475 0,2.001 L0,38.003 C0,39.105 0.899,40.003 2,40.003 L38,40.003 C39.103,40.003 40,39.103 40,38.003 L40,2.001 C40.000531,1.47031248 39.7900198,0.961193334 39.4148607,0.585846626 C39.0397016,0.210499918 38.5306877,-0.000265742306 38,0 Z M34.003,4 C35.105,4 36.003,4.899 36.003,6 C36.003,7.102 35.103,7.998 34.003,7.998 C32.9235903,7.96385326 32.0662376,7.07894966 32.0662376,5.999 C32.0662376,4.91905034 32.9235903,4.03414674 34.003,4 Z M26.003,4 C27.105,4 28.002,4.899 28.002,6 C28.002,7.102 27.102,7.998 26.002,7.998 C24.9225903,7.96385326 24.0652376,7.07894966 24.0652376,5.999 C24.0652376,4.91905034 24.9225903,4.03414674 26.002,4 L26.003,4 Z M18.002,4 C19.104,4 20.002,4.899 20.002,6 C20.002,7.102 19.102,7.998 18.002,7.998 C16.899,7.998 16.002,7.1 16.002,5.999 C16.0025521,4.89482104 16.8978209,3.99999986 18.002,4 Z M36.002,36.002 L4,36.002 L4,12.001 L36.002,12.001 L36.002,36.002 Z M8.805,32.002 L15.196,32.002 C15.4092125,32.0030667 15.6140295,31.9189775 15.764983,31.7683995 C15.9159365,31.6178215 16.0005357,31.4132145 16,31.2 L16,16.805 C16.0005341,16.5919596 15.916072,16.3875055 15.7653354,16.2369566 C15.6145988,16.0864077 15.4100395,16.0022004 15.197,16.003 L8.794,16.003 C8.581215,16.0027342 8.37706868,16.087145 8.22660684,16.2376068 C8.07614501,16.3880687 7.99173418,16.592215 7.992,16.805 L7.992,31.208 C7.99966319,31.6507223 8.36222028,32.0048063 8.805,32.002 Z M20.803,24.002 L31.206,24.002 C31.4190404,24.0025341 31.6234945,23.918072 31.7740434,23.7673354 C31.9245923,23.6165988 32.0087996,23.4120395 32.008,23.199 L32.008,16.797 C32.0085328,16.5841335 31.9242078,16.3798319 31.7736879,16.2293121 C31.6231681,16.0787922 31.4188665,15.9944672 31.206,15.995 L20.803,15.995 C20.5901335,15.9944672 20.3858319,16.0787922 20.2353121,16.2293121 C20.0847922,16.3798319 20.0004672,16.5841335 20.001,16.797 L20.001,23.199 C20.001,23.646 20.356,24.001 20.803,24.001 L20.803,24.002 Z M20.803,32.002 L31.206,32.002 C31.4188665,32.0025328 31.6231681,31.9182078 31.7736879,31.7676879 C31.9242078,31.6171681 32.0085328,31.4128665 32.008,31.2 L32.008,28.797 C32.0085328,28.5841335 31.9242078,28.3798319 31.7736879,28.2293121 C31.6231681,28.0787922 31.4188665,27.9944672 31.206,27.995 L20.803,27.995 C20.5901335,27.9944672 20.3858319,28.0787922 20.2353121,28.2293121 C20.0847922,28.3798319 20.0004672,28.5841335 20.001,28.797 L20.001,31.2 C20.001,31.647 20.356,32.002 20.803,32.002 Z'/%3e%3c/svg%3e") center center no-repeat;
-      background-size: contain;
-    }
+  position: absolute;
+  inset-inline-start: 0;
+  display: block;
+  width: 1.25rem;
+  height: 1.25rem;
+  content: "";
+  background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 40 40'%3e  %3cpath fill='%23F0A100' fill-rule='evenodd' d='M38,0 L2.002,0 C0.896716337,-1.37884559e-07 0.000552089742,0.895716475 0,2.001 L0,38.003 C0,39.105 0.899,40.003 2,40.003 L38,40.003 C39.103,40.003 40,39.103 40,38.003 L40,2.001 C40.000531,1.47031248 39.7900198,0.961193334 39.4148607,0.585846626 C39.0397016,0.210499918 38.5306877,-0.000265742306 38,0 Z M34.003,4 C35.105,4 36.003,4.899 36.003,6 C36.003,7.102 35.103,7.998 34.003,7.998 C32.9235903,7.96385326 32.0662376,7.07894966 32.0662376,5.999 C32.0662376,4.91905034 32.9235903,4.03414674 34.003,4 Z M26.003,4 C27.105,4 28.002,4.899 28.002,6 C28.002,7.102 27.102,7.998 26.002,7.998 C24.9225903,7.96385326 24.0652376,7.07894966 24.0652376,5.999 C24.0652376,4.91905034 24.9225903,4.03414674 26.002,4 L26.003,4 Z M18.002,4 C19.104,4 20.002,4.899 20.002,6 C20.002,7.102 19.102,7.998 18.002,7.998 C16.899,7.998 16.002,7.1 16.002,5.999 C16.0025521,4.89482104 16.8978209,3.99999986 18.002,4 Z M36.002,36.002 L4,36.002 L4,12.001 L36.002,12.001 L36.002,36.002 Z M8.805,32.002 L15.196,32.002 C15.4092125,32.0030667 15.6140295,31.9189775 15.764983,31.7683995 C15.9159365,31.6178215 16.0005357,31.4132145 16,31.2 L16,16.805 C16.0005341,16.5919596 15.916072,16.3875055 15.7653354,16.2369566 C15.6145988,16.0864077 15.4100395,16.0022004 15.197,16.003 L8.794,16.003 C8.581215,16.0027342 8.37706868,16.087145 8.22660684,16.2376068 C8.07614501,16.3880687 7.99173418,16.592215 7.992,16.805 L7.992,31.208 C7.99966319,31.6507223 8.36222028,32.0048063 8.805,32.002 Z M20.803,24.002 L31.206,24.002 C31.4190404,24.0025341 31.6234945,23.918072 31.7740434,23.7673354 C31.9245923,23.6165988 32.0087996,23.4120395 32.008,23.199 L32.008,16.797 C32.0085328,16.5841335 31.9242078,16.3798319 31.7736879,16.2293121 C31.6231681,16.0787922 31.4188665,15.9944672 31.206,15.995 L20.803,15.995 C20.5901335,15.9944672 20.3858319,16.0787922 20.2353121,16.2293121 C20.0847922,16.3798319 20.0004672,16.5841335 20.001,16.797 L20.001,23.199 C20.001,23.646 20.356,24.001 20.803,24.001 L20.803,24.002 Z M20.803,32.002 L31.206,32.002 C31.4188665,32.0025328 31.6231681,31.9182078 31.7736879,31.7676879 C31.9242078,31.6171681 32.0085328,31.4128665 32.008,31.2 L32.008,28.797 C32.0085328,28.5841335 31.9242078,28.3798319 31.7736879,28.2293121 C31.6231681,28.0787922 31.4188665,27.9944672 31.206,27.995 L20.803,27.995 C20.5901335,27.9944672 20.3858319,28.0787922 20.2353121,28.2293121 C20.0847922,28.3798319 20.0004672,28.5841335 20.001,28.797 L20.001,31.2 C20.001,31.647 20.356,32.002 20.803,32.002 Z'/%3e%3c/svg%3e") center center no-repeat;
+  background-size: contain;
+}
 
 @media (min-width: 47.9375rem) {
 
-#drupal-off-canvas-wrapper.workspaces-dialog .active-workspace__label:before {
-        width: 2.5rem;
-        height: 2.5rem;
-    }
-      }
+  #drupal-off-canvas-wrapper.workspaces-dialog .active-workspace__label:before {
+    width: 2.5rem;
+    height: 2.5rem;
+  }
+}
 
 /* This is the "Manage workspace" link that appears when you're on a non-default workspace. */
 
 #drupal-off-canvas-wrapper.workspaces-dialog .active-workspace__manage {
-    display: block;
-    font-size: 0.8125rem;
-  }
+  display: block;
+  font-size: 0.8125rem;
+}
 
 /* This is the link to "View all workspaces". */
 
 #drupal-off-canvas-wrapper.workspaces-dialog .all-workspaces {
-    display: inline-block;
-    padding: var(--off-canvas-padding);
-    font-size: 0.875rem;
-  }
+  display: inline-block;
+  padding: var(--off-canvas-padding);
+  font-size: 0.875rem;
+}
 
 @media (min-width: 47.9375rem) {
 
-#drupal-off-canvas-wrapper.workspaces-dialog .all-workspaces {
-      grid-row: 1;
-      grid-column: 2;
-      justify-self: end;
-      padding: 0;
+  #drupal-off-canvas-wrapper.workspaces-dialog .all-workspaces {
+    grid-row: 1;
+    grid-column: 2;
+    justify-self: end;
+    padding: 0;
   }
-    }
+}
 
 #drupal-off-canvas-wrapper.workspaces-dialog .workspaces > h3 {
-      margin-top: 0;
-    }
+  margin-top: 0;
+}
 
 #drupal-off-canvas-wrapper.workspaces-dialog .workspaces ul {
-      display: flex;
-      flex-direction: column;
-      grid-row: 2;
-      grid-column: 1 / -1;
-      margin: 0;
-      padding: 0;
-      list-style: none;
-      gap: 2px;
-    }
+  display: flex;
+  flex-direction: column;
+  grid-row: 2;
+  grid-column: 1 / -1;
+  margin: 0;
+  padding: 0;
+  list-style: none;
+  gap: 2px;
+}
 
 @media (min-width: 47.9375rem) {
 
-#drupal-off-canvas-wrapper.workspaces-dialog .workspaces ul {
-        flex-direction: row;
-    }
-      }
+  #drupal-off-canvas-wrapper.workspaces-dialog .workspaces ul {
+    flex-direction: row;
+  }
+}
 
 #drupal-off-canvas-wrapper.workspaces-dialog .workspaces li {
-      flex: 1;
-    }
+  flex: 1;
+}
 
 @media (min-width: 47.9375rem) {
 
-#drupal-off-canvas-wrapper.workspaces-dialog .workspaces {
-      display: grid;
-      flex-grow: 8;
-      grid-template-columns: 1fr 1fr;
+  #drupal-off-canvas-wrapper.workspaces-dialog .workspaces {
+    display: grid;
+    flex-grow: 8;
+    grid-template-columns: 1fr 1fr;
   }
-    }
-
-/* This is the link to the workspace. */
-
-[dir="ltr"] #drupal-off-canvas-wrapper.workspaces-dialog .workspaces__item {
-    padding-left: 3.125rem;
 }
 
-[dir="rtl"] #drupal-off-canvas-wrapper.workspaces-dialog .workspaces__item {
-    padding-right: 3.125rem;
-}
+/* This is the link to the workspace. */
 
 #drupal-off-canvas-wrapper.workspaces-dialog .workspaces__item {
-    position: relative;
-    display: block;
-    min-height: 4.6875rem;
-    padding-top: var(--off-canvas-padding);
-    color: var(--off-canvas-text-color);
-    outline-offset: -2px; /* Ensure focus outline doesn't overflow. */
-    background-color: var(--off-canvas-background-color-light);
-    font-size: 0.875rem;
-    font-weight: bold;
-  }
-
-#drupal-off-canvas-wrapper.workspaces-dialog .workspaces__item:hover,
-    #drupal-off-canvas-wrapper.workspaces-dialog .workspaces__item:focus {
-      background-color: #666;
-    }
-
-[dir="ltr"] #drupal-off-canvas-wrapper.workspaces-dialog .workspaces__item:before {
-      left: var(--off-canvas-padding);
+  position: relative;
+  display: block;
+  min-height: 4.6875rem;
+  padding-block-start: var(--off-canvas-padding);
+  padding-inline-start: 3.125rem;
+  color: var(--off-canvas-text-color);
+  outline-offset: -2px; /* Ensure focus outline doesn't overflow. */
+  background-color: var(--off-canvas-background-color-light);
+  font-size: 0.875rem;
+  font-weight: bold;
 }
 
-[dir="rtl"] #drupal-off-canvas-wrapper.workspaces-dialog .workspaces__item:before {
-      right: var(--off-canvas-padding);
+#drupal-off-canvas-wrapper.workspaces-dialog .workspaces__item:hover,
+#drupal-off-canvas-wrapper.workspaces-dialog .workspaces__item:focus {
+  background-color: #666;
 }
 
 #drupal-off-canvas-wrapper.workspaces-dialog .workspaces__item:before {
-      position: absolute;
-      display: block;
-      width: 1.25rem;
-      height: 1.25rem;
-      content: "";
-      background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 40 40'%3e  %3cpath fill='%23F0A100' fill-rule='evenodd' d='M38,0 L2.002,0 C0.896716337,-1.37884559e-07 0.000552089742,0.895716475 0,2.001 L0,38.003 C0,39.105 0.899,40.003 2,40.003 L38,40.003 C39.103,40.003 40,39.103 40,38.003 L40,2.001 C40.000531,1.47031248 39.7900198,0.961193334 39.4148607,0.585846626 C39.0397016,0.210499918 38.5306877,-0.000265742306 38,0 Z M34.003,4 C35.105,4 36.003,4.899 36.003,6 C36.003,7.102 35.103,7.998 34.003,7.998 C32.9235903,7.96385326 32.0662376,7.07894966 32.0662376,5.999 C32.0662376,4.91905034 32.9235903,4.03414674 34.003,4 Z M26.003,4 C27.105,4 28.002,4.899 28.002,6 C28.002,7.102 27.102,7.998 26.002,7.998 C24.9225903,7.96385326 24.0652376,7.07894966 24.0652376,5.999 C24.0652376,4.91905034 24.9225903,4.03414674 26.002,4 L26.003,4 Z M18.002,4 C19.104,4 20.002,4.899 20.002,6 C20.002,7.102 19.102,7.998 18.002,7.998 C16.899,7.998 16.002,7.1 16.002,5.999 C16.0025521,4.89482104 16.8978209,3.99999986 18.002,4 Z M36.002,36.002 L4,36.002 L4,12.001 L36.002,12.001 L36.002,36.002 Z M8.805,32.002 L15.196,32.002 C15.4092125,32.0030667 15.6140295,31.9189775 15.764983,31.7683995 C15.9159365,31.6178215 16.0005357,31.4132145 16,31.2 L16,16.805 C16.0005341,16.5919596 15.916072,16.3875055 15.7653354,16.2369566 C15.6145988,16.0864077 15.4100395,16.0022004 15.197,16.003 L8.794,16.003 C8.581215,16.0027342 8.37706868,16.087145 8.22660684,16.2376068 C8.07614501,16.3880687 7.99173418,16.592215 7.992,16.805 L7.992,31.208 C7.99966319,31.6507223 8.36222028,32.0048063 8.805,32.002 Z M20.803,24.002 L31.206,24.002 C31.4190404,24.0025341 31.6234945,23.918072 31.7740434,23.7673354 C31.9245923,23.6165988 32.0087996,23.4120395 32.008,23.199 L32.008,16.797 C32.0085328,16.5841335 31.9242078,16.3798319 31.7736879,16.2293121 C31.6231681,16.0787922 31.4188665,15.9944672 31.206,15.995 L20.803,15.995 C20.5901335,15.9944672 20.3858319,16.0787922 20.2353121,16.2293121 C20.0847922,16.3798319 20.0004672,16.5841335 20.001,16.797 L20.001,23.199 C20.001,23.646 20.356,24.001 20.803,24.001 L20.803,24.002 Z M20.803,32.002 L31.206,32.002 C31.4188665,32.0025328 31.6231681,31.9182078 31.7736879,31.7676879 C31.9242078,31.6171681 32.0085328,31.4128665 32.008,31.2 L32.008,28.797 C32.0085328,28.5841335 31.9242078,28.3798319 31.7736879,28.2293121 C31.6231681,28.0787922 31.4188665,27.9944672 31.206,27.995 L20.803,27.995 C20.5901335,27.9944672 20.3858319,28.0787922 20.2353121,28.2293121 C20.0847922,28.3798319 20.0004672,28.5841335 20.001,28.797 L20.001,31.2 C20.001,31.647 20.356,32.002 20.803,32.002 Z'/%3e%3c/svg%3e") center center no-repeat;
-      background-size: 100% auto;
-    }
+  position: absolute;
+  inset-inline-start: var(--off-canvas-padding);
+  display: block;
+  width: 1.25rem;
+  height: 1.25rem;
+  content: "";
+  background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 40 40'%3e  %3cpath fill='%23F0A100' fill-rule='evenodd' d='M38,0 L2.002,0 C0.896716337,-1.37884559e-07 0.000552089742,0.895716475 0,2.001 L0,38.003 C0,39.105 0.899,40.003 2,40.003 L38,40.003 C39.103,40.003 40,39.103 40,38.003 L40,2.001 C40.000531,1.47031248 39.7900198,0.961193334 39.4148607,0.585846626 C39.0397016,0.210499918 38.5306877,-0.000265742306 38,0 Z M34.003,4 C35.105,4 36.003,4.899 36.003,6 C36.003,7.102 35.103,7.998 34.003,7.998 C32.9235903,7.96385326 32.0662376,7.07894966 32.0662376,5.999 C32.0662376,4.91905034 32.9235903,4.03414674 34.003,4 Z M26.003,4 C27.105,4 28.002,4.899 28.002,6 C28.002,7.102 27.102,7.998 26.002,7.998 C24.9225903,7.96385326 24.0652376,7.07894966 24.0652376,5.999 C24.0652376,4.91905034 24.9225903,4.03414674 26.002,4 L26.003,4 Z M18.002,4 C19.104,4 20.002,4.899 20.002,6 C20.002,7.102 19.102,7.998 18.002,7.998 C16.899,7.998 16.002,7.1 16.002,5.999 C16.0025521,4.89482104 16.8978209,3.99999986 18.002,4 Z M36.002,36.002 L4,36.002 L4,12.001 L36.002,12.001 L36.002,36.002 Z M8.805,32.002 L15.196,32.002 C15.4092125,32.0030667 15.6140295,31.9189775 15.764983,31.7683995 C15.9159365,31.6178215 16.0005357,31.4132145 16,31.2 L16,16.805 C16.0005341,16.5919596 15.916072,16.3875055 15.7653354,16.2369566 C15.6145988,16.0864077 15.4100395,16.0022004 15.197,16.003 L8.794,16.003 C8.581215,16.0027342 8.37706868,16.087145 8.22660684,16.2376068 C8.07614501,16.3880687 7.99173418,16.592215 7.992,16.805 L7.992,31.208 C7.99966319,31.6507223 8.36222028,32.0048063 8.805,32.002 Z M20.803,24.002 L31.206,24.002 C31.4190404,24.0025341 31.6234945,23.918072 31.7740434,23.7673354 C31.9245923,23.6165988 32.0087996,23.4120395 32.008,23.199 L32.008,16.797 C32.0085328,16.5841335 31.9242078,16.3798319 31.7736879,16.2293121 C31.6231681,16.0787922 31.4188665,15.9944672 31.206,15.995 L20.803,15.995 C20.5901335,15.9944672 20.3858319,16.0787922 20.2353121,16.2293121 C20.0847922,16.3798319 20.0004672,16.5841335 20.001,16.797 L20.001,23.199 C20.001,23.646 20.356,24.001 20.803,24.001 L20.803,24.002 Z M20.803,32.002 L31.206,32.002 C31.4188665,32.0025328 31.6231681,31.9182078 31.7736879,31.7676879 C31.9242078,31.6171681 32.0085328,31.4128665 32.008,31.2 L32.008,28.797 C32.0085328,28.5841335 31.9242078,28.3798319 31.7736879,28.2293121 C31.6231681,28.0787922 31.4188665,27.9944672 31.206,27.995 L20.803,27.995 C20.5901335,27.9944672 20.3858319,28.0787922 20.2353121,28.2293121 C20.0847922,28.3798319 20.0004672,28.5841335 20.001,28.797 L20.001,31.2 C20.001,31.647 20.356,32.002 20.803,32.002 Z'/%3e%3c/svg%3e") center center no-repeat;
+  background-size: 100% auto;
+}
 
 #drupal-off-canvas-wrapper.workspaces-dialog .active-workspace--default .active-workspace__label:before,
-  #drupal-off-canvas-wrapper.workspaces-dialog .workspaces__item--default:before {
-    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'%3e  %3cpath fill='%2381C071' fill-rule='evenodd' d='M19,0 L1,0 C0.449,0 0,0.448 0,1 L0,19 C0,19.552 0.45,20 1,20 L19,20 C19.552,20 20,19.55 20,19 L20,1 C20,0.44771525 19.5522847,3.38176876e-17 19,0 Z M17.001,2 C17.553,2 18.001,2.45 18.001,3 C18.001,3.55 17.551,3.999 17.001,3.999 C16.451,3.999 16.001,3.549 16.001,2.999 C16.001,2.44671525 16.4487153,1.999 17.001,1.999 L17.001,2 Z M13.001,2 C13.552,2 14.001,2.45 14.001,3 C14.001,3.55 13.551,3.999 13.001,3.999 C12.4487153,3.999 12.001,3.55128475 12.001,2.999 C12.001,2.44671525 12.4487153,1.999 13.001,1.999 L13.001,2 Z M9.001,2 C9.552,2 10.001,2.45 10.001,3 C10.001,3.55 9.551,3.999 9.001,3.999 C8.44871525,3.999 8.001,3.55128475 8.001,2.999 C8.001,2.44671525 8.44871525,1.999 9.001,1.999 L9.001,2 Z M18.001,18 L2,18 L2,6 L18.001,6 L18.001,18 Z M4.402,16 L7.598,16 C7.70460623,16.0005334 7.80701477,15.9584887 7.88249152,15.8831997 C7.95796827,15.8079107 8.00026785,15.7056072 8,15.599 L8,8.402 C8.00026565,8.29574025 7.95824022,8.19374159 7.88319685,8.11851062 C7.80815349,8.04327965 7.70626008,8.00099967 7.6,8.001 L4.396,8.001 C4.28956674,8.00073358 4.18741595,8.04289612 4.11215603,8.11815603 C4.03689612,8.19341595 3.99473358,8.29556674 3.995,8.402 L3.995,15.603 C3.999,15.823 4.177,16 4.401,16 L4.402,16 Z M10.402,12 L15.603,12 C15.7094333,12.0002664 15.811584,11.9581039 15.886844,11.882844 C15.9621039,11.807584 16.0042664,11.7054333 16.004,11.599 L16.004,8.398 C16.0042664,8.29156674 15.9621039,8.18941595 15.886844,8.11415603 C15.811584,8.03889612 15.7094333,7.99673358 15.603,7.997 L10.402,7.997 C10.2957402,7.99673435 10.1937416,8.03875978 10.1185106,8.11380315 C10.0432796,8.18884651 10.0009997,8.29073992 10.001,8.397 L10.001,11.6 C10.001,11.824 10.178,12 10.401,12 L10.402,12 Z M10.402,16 L15.603,16 C15.7094333,16.0002664 15.811584,15.9581039 15.886844,15.882844 C15.9621039,15.807584 16.0042664,15.7054333 16.004,15.599 L16.004,14.398 C16.0042664,14.2915667 15.9621039,14.189416 15.886844,14.114156 C15.811584,14.0388961 15.7094333,13.9967336 15.603,13.997 L10.402,13.997 C10.2957402,13.9967343 10.1937416,14.0387598 10.1185106,14.1138031 C10.0432796,14.1888465 10.0009997,14.2907399 10.001,14.397 L10.001,15.6 C10.001,15.824 10.178,16 10.401,16 L10.402,16 Z'/%3e%3c/svg%3e"); /* Green icon. */
-  }
+#drupal-off-canvas-wrapper.workspaces-dialog .workspaces__item--default:before {
+  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'%3e  %3cpath fill='%2381C071' fill-rule='evenodd' d='M19,0 L1,0 C0.449,0 0,0.448 0,1 L0,19 C0,19.552 0.45,20 1,20 L19,20 C19.552,20 20,19.55 20,19 L20,1 C20,0.44771525 19.5522847,3.38176876e-17 19,0 Z M17.001,2 C17.553,2 18.001,2.45 18.001,3 C18.001,3.55 17.551,3.999 17.001,3.999 C16.451,3.999 16.001,3.549 16.001,2.999 C16.001,2.44671525 16.4487153,1.999 17.001,1.999 L17.001,2 Z M13.001,2 C13.552,2 14.001,2.45 14.001,3 C14.001,3.55 13.551,3.999 13.001,3.999 C12.4487153,3.999 12.001,3.55128475 12.001,2.999 C12.001,2.44671525 12.4487153,1.999 13.001,1.999 L13.001,2 Z M9.001,2 C9.552,2 10.001,2.45 10.001,3 C10.001,3.55 9.551,3.999 9.001,3.999 C8.44871525,3.999 8.001,3.55128475 8.001,2.999 C8.001,2.44671525 8.44871525,1.999 9.001,1.999 L9.001,2 Z M18.001,18 L2,18 L2,6 L18.001,6 L18.001,18 Z M4.402,16 L7.598,16 C7.70460623,16.0005334 7.80701477,15.9584887 7.88249152,15.8831997 C7.95796827,15.8079107 8.00026785,15.7056072 8,15.599 L8,8.402 C8.00026565,8.29574025 7.95824022,8.19374159 7.88319685,8.11851062 C7.80815349,8.04327965 7.70626008,8.00099967 7.6,8.001 L4.396,8.001 C4.28956674,8.00073358 4.18741595,8.04289612 4.11215603,8.11815603 C4.03689612,8.19341595 3.99473358,8.29556674 3.995,8.402 L3.995,15.603 C3.999,15.823 4.177,16 4.401,16 L4.402,16 Z M10.402,12 L15.603,12 C15.7094333,12.0002664 15.811584,11.9581039 15.886844,11.882844 C15.9621039,11.807584 16.0042664,11.7054333 16.004,11.599 L16.004,8.398 C16.0042664,8.29156674 15.9621039,8.18941595 15.886844,8.11415603 C15.811584,8.03889612 15.7094333,7.99673358 15.603,7.997 L10.402,7.997 C10.2957402,7.99673435 10.1937416,8.03875978 10.1185106,8.11380315 C10.0432796,8.18884651 10.0009997,8.29073992 10.001,8.397 L10.001,11.6 C10.001,11.824 10.178,12 10.401,12 L10.402,12 Z M10.402,16 L15.603,16 C15.7094333,16.0002664 15.811584,15.9581039 15.886844,15.882844 C15.9621039,15.807584 16.0042664,15.7054333 16.004,15.599 L16.004,14.398 C16.0042664,14.2915667 15.9621039,14.189416 15.886844,14.114156 C15.811584,14.0388961 15.7094333,13.9967336 15.603,13.997 L10.402,13.997 C10.2957402,13.9967343 10.1937416,14.0387598 10.1185106,14.1138031 C10.0432796,14.1888465 10.0009997,14.2907399 10.001,14.397 L10.001,15.6 C10.001,15.824 10.178,16 10.401,16 L10.402,16 Z'/%3e%3c/svg%3e"); /* Green icon. */
+}
 
 #drupal-off-canvas-wrapper.workspaces-dialog .active-workspace__actions .button {
-    margin: 0.625rem 0 0;
-  }
+  margin: 0.625rem 0 0;
+}
 
 @media (max-width: 47.9375rem) {
 
-#drupal-off-canvas-wrapper.workspaces-dialog {
+  #drupal-off-canvas-wrapper.workspaces-dialog {
     height: 100% !important;
-}
   }
+}
diff --git a/core/modules/workspaces/css/workspaces.toolbar.css b/core/modules/workspaces/css/workspaces.toolbar.css
index e95d15876e..dcb3c62bfe 100644
--- a/core/modules/workspaces/css/workspaces.toolbar.css
+++ b/core/modules/workspaces/css/workspaces.toolbar.css
@@ -21,8 +21,17 @@
   background-color: #81c071;
 }
 
-[dir="ltr"] .toolbar-oriented .toolbar-bar .workspaces-toolbar-tab {
-  float: right;
+.toolbar-oriented .toolbar-bar .workspaces-toolbar-tab {
+  float: right; /* LTR */
+
+  /**
+   * Chromium and Webkit do not yet support flow relative logical properties,
+   * such as float: inline-end. However, PostCSS Logical does not compile this
+   * value, so we accommodate by not using these.
+   *
+   * @see https://caniuse.com/mdn-css_properties_clear_flow_relative_values
+   * @see https://github.com/csstools/postcss-plugins/issues/632
+   */
 }
 
 [dir="rtl"] .toolbar-oriented .toolbar-bar .workspaces-toolbar-tab {
@@ -30,8 +39,17 @@
 }
 
 @media (min-width: 16.5rem) {
-  [dir="ltr"] .toolbar:not(.toolbar-oriented) .toolbar-bar .workspaces-toolbar-tab {
-    float: right;
+  .toolbar:not(.toolbar-oriented) .toolbar-bar .workspaces-toolbar-tab {
+    float: right; /* LTR */
+
+    /**
+     * Chromium and Webkit do not yet support flow relative logical properties,
+     * such as float: inline-end. However, PostCSS Logical does not compile this
+     * value, so we accommodate by not using these.
+     *
+     * @see https://caniuse.com/mdn-css_properties_clear_flow_relative_values
+     * @see https://github.com/csstools/postcss-plugins/issues/632
+     */
   }
   [dir="rtl"] .toolbar:not(.toolbar-oriented) .toolbar-bar .workspaces-toolbar-tab {
     float: left;
@@ -40,23 +58,16 @@
 
 /* Link within the toolbar tab. */
 
-[dir="ltr"] .toolbar .toolbar-bar .workspaces-toolbar-tab .toolbar-item {
-  text-align: left;
-}
-
-[dir="rtl"] .toolbar .toolbar-bar .workspaces-toolbar-tab .toolbar-item {
-  text-align: right;
-}
-
 .toolbar .toolbar-bar .workspaces-toolbar-tab .toolbar-item {
   width: 100%;
   margin: 0;
+  text-align: start;
   color: inherit;
 }
 
 .toolbar-oriented :is(.toolbar .toolbar-bar .workspaces-toolbar-tab .toolbar-item) {
-    width: auto;
-    text-align: initial;
+  width: auto;
+  text-align: initial;
 }
 
 .toolbar .toolbar-icon-workspace:before {
@@ -69,32 +80,16 @@
     max-width: 8em;
   }
 
-  [dir="ltr"] .toolbar .toolbar-bar .workspaces-toolbar-tab .toolbar-icon-workspace {
-    padding-left: 2.75em;
-    padding-right: 1.3333em;
-  }
-
-  [dir="rtl"] .toolbar .toolbar-bar .workspaces-toolbar-tab .toolbar-icon-workspace {
-    padding-right: 2.75em;
-    padding-left: 1.3333em;
-  }
-
   .toolbar .toolbar-bar .workspaces-toolbar-tab .toolbar-icon-workspace {
     overflow: hidden;
+    padding-inline: 2.75em 1.3333em;
     white-space: nowrap;
     text-indent: 0;
     text-overflow: ellipsis;
   }
 
-  [dir="ltr"] .toolbar .toolbar-bar .workspaces-toolbar-tab .toolbar-icon-workspace:before {
-    left: 0.6667em;
-  }
-
-  [dir="rtl"] .toolbar .toolbar-bar .workspaces-toolbar-tab .toolbar-icon-workspace:before {
-    right: 0.6667em;
-  }
-
   .toolbar .toolbar-bar .workspaces-toolbar-tab .toolbar-icon-workspace:before {
+    inset-inline-start: 0.6667em;
     width: 1.25rem;
     background-size: 100% auto;
   }
diff --git a/core/modules/workspaces/css/workspaces.toolbar.pcss.css b/core/modules/workspaces/css/workspaces.toolbar.pcss.css
index f5da3ad75b..136804e206 100644
--- a/core/modules/workspaces/css/workspaces.toolbar.pcss.css
+++ b/core/modules/workspaces/css/workspaces.toolbar.pcss.css
@@ -12,12 +12,36 @@
   background-color: #81c071;
 }
 .toolbar-oriented .toolbar-bar .workspaces-toolbar-tab {
-  float: inline-end;
+  float: right; /* LTR */
+
+  /**
+   * Chromium and Webkit do not yet support flow relative logical properties,
+   * such as float: inline-end. However, PostCSS Logical does not compile this
+   * value, so we accommodate by not using these.
+   *
+   * @see https://caniuse.com/mdn-css_properties_clear_flow_relative_values
+   * @see https://github.com/csstools/postcss-plugins/issues/632
+   */
+  &:dir(rtl) {
+    float: left;
+  }
 }
 
 @media (min-width: 264px) {
   .toolbar:not(.toolbar-oriented) .toolbar-bar .workspaces-toolbar-tab {
-    float: inline-end;
+    float: right; /* LTR */
+
+    /**
+     * Chromium and Webkit do not yet support flow relative logical properties,
+     * such as float: inline-end. However, PostCSS Logical does not compile this
+     * value, so we accommodate by not using these.
+     *
+     * @see https://caniuse.com/mdn-css_properties_clear_flow_relative_values
+     * @see https://github.com/csstools/postcss-plugins/issues/632
+     */
+    &:dir(rtl) {
+      float: left;
+    }
   }
 }
 
diff --git a/core/modules/workspaces/tests/src/Functional/WorkspacesUninstallTest.php b/core/modules/workspaces/tests/src/Functional/WorkspacesUninstallTest.php
index c40d9cf71a..019870209b 100644
--- a/core/modules/workspaces/tests/src/Functional/WorkspacesUninstallTest.php
+++ b/core/modules/workspaces/tests/src/Functional/WorkspacesUninstallTest.php
@@ -3,6 +3,7 @@
 namespace Drupal\Tests\workspaces\Functional;
 
 use Drupal\Tests\BrowserTestBase;
+use Drupal\Tests\node\Traits\ContentTypeCreationTrait;
 
 /**
  * Tests uninstalling the Workspaces module.
@@ -10,16 +11,12 @@
  * @group workspaces
  */
 class WorkspacesUninstallTest extends BrowserTestBase {
+  use ContentTypeCreationTrait;
 
   /**
    * {@inheritdoc}
    */
-  protected $profile = 'standard';
-
-  /**
-   * {@inheritdoc}
-   */
-  protected static $modules = ['workspaces'];
+  protected static $modules = ['workspaces', 'node'];
 
   /**
    * {@inheritdoc}
@@ -30,6 +27,7 @@ class WorkspacesUninstallTest extends BrowserTestBase {
    * Tests deleting workspace entities and uninstalling Workspaces module.
    */
   public function testUninstallingWorkspace() {
+    $this->createContentType(['type' => 'article']);
     $this->drupalLogin($this->rootUser);
     $this->drupalGet('/admin/modules/uninstall');
     $session = $this->assertSession();
diff --git a/core/modules/workspaces/workspaces.info.yml b/core/modules/workspaces/workspaces.info.yml
index 6ca68a80dd..3a0623efd1 100644
--- a/core/modules/workspaces/workspaces.info.yml
+++ b/core/modules/workspaces/workspaces.info.yml
@@ -6,4 +6,4 @@ package: Core (Experimental)
 lifecycle: experimental
 configure: entity.workspace.collection
 dependencies:
- - drupal:user
+  - drupal:user
diff --git a/core/modules/workspaces/workspaces.module b/core/modules/workspaces/workspaces.module
index 8555a3c4bf..0155e25bc3 100644
--- a/core/modules/workspaces/workspaces.module
+++ b/core/modules/workspaces/workspaces.module
@@ -30,7 +30,7 @@ function workspaces_help($route_name, RouteMatchInterface $route_match) {
     case 'help.page.workspaces':
       $output = '';
       $output .= '<h3>' . t('About') . '</h3>';
-      $output .= '<p>' . t('The Workspaces module allows workspaces to be defined and switched between. Content is then assigned to the active workspace when created. For more information, see the <a href=":workspaces">online documentation for the Workspaces module</a>.', [':workspaces' => 'https://www.drupal.org/node/2824024']) . '</p>';
+      $output .= '<p>' . t('The Workspaces module allows workspaces to be defined and switched between. Content is then assigned to the active workspace when created. For more information, see the <a href=":workspaces">online documentation for the Workspaces module</a>.', [':workspaces' => 'https://www.drupal.org/docs/8/core/modules/workspace/overview']) . '</p>';
       return $output;
   }
 }
diff --git a/core/package.json b/core/package.json
index 4b457b2f99..b7c81c35f7 100644
--- a/core/package.json
+++ b/core/package.json
@@ -32,32 +32,32 @@
     "watch:ckeditor5-dev": "yarn watch:ckeditor5 --mode=development"
   },
   "devDependencies": {
-    "@ckeditor/ckeditor5-alignment": "~35.1.0",
-    "@ckeditor/ckeditor5-basic-styles": "~35.1.0",
-    "@ckeditor/ckeditor5-block-quote": "~35.1.0",
-    "@ckeditor/ckeditor5-code-block": "~35.1.0",
-    "@ckeditor/ckeditor5-editor-classic": "~35.1.0",
-    "@ckeditor/ckeditor5-editor-decoupled": "~35.1.0",
-    "@ckeditor/ckeditor5-essentials": "~35.1.0",
-    "@ckeditor/ckeditor5-heading": "~35.1.0",
-    "@ckeditor/ckeditor5-horizontal-line": "~35.1.0",
-    "@ckeditor/ckeditor5-html-support": "~35.1.0",
-    "@ckeditor/ckeditor5-image": "~35.1.0",
-    "@ckeditor/ckeditor5-indent": "~35.1.0",
-    "@ckeditor/ckeditor5-language": "~35.1.0",
-    "@ckeditor/ckeditor5-link": "~35.1.0",
-    "@ckeditor/ckeditor5-list": "~35.1.0",
-    "@ckeditor/ckeditor5-paste-from-office": "~35.1.0",
-    "@ckeditor/ckeditor5-remove-format": "~35.1.0",
-    "@ckeditor/ckeditor5-source-editing": "~35.1.0",
-    "@ckeditor/ckeditor5-special-characters": "~35.1.0",
-    "@ckeditor/ckeditor5-style": "~35.1.0",
-    "@ckeditor/ckeditor5-table": "~35.1.0",
+    "@ckeditor/ckeditor5-alignment": "~35.2.0",
+    "@ckeditor/ckeditor5-basic-styles": "~35.2.0",
+    "@ckeditor/ckeditor5-block-quote": "~35.2.0",
+    "@ckeditor/ckeditor5-code-block": "~35.2.0",
+    "@ckeditor/ckeditor5-editor-classic": "~35.2.0",
+    "@ckeditor/ckeditor5-editor-decoupled": "~35.2.0",
+    "@ckeditor/ckeditor5-essentials": "~35.2.0",
+    "@ckeditor/ckeditor5-heading": "~35.2.0",
+    "@ckeditor/ckeditor5-horizontal-line": "~35.2.0",
+    "@ckeditor/ckeditor5-html-support": "~35.2.0",
+    "@ckeditor/ckeditor5-image": "~35.2.0",
+    "@ckeditor/ckeditor5-indent": "~35.2.0",
+    "@ckeditor/ckeditor5-language": "~35.2.0",
+    "@ckeditor/ckeditor5-link": "~35.2.0",
+    "@ckeditor/ckeditor5-list": "~35.2.0",
+    "@ckeditor/ckeditor5-paste-from-office": "~35.2.0",
+    "@ckeditor/ckeditor5-remove-format": "~35.2.0",
+    "@ckeditor/ckeditor5-source-editing": "~35.2.0",
+    "@ckeditor/ckeditor5-special-characters": "~35.2.0",
+    "@ckeditor/ckeditor5-style": "~35.2.0",
+    "@ckeditor/ckeditor5-table": "~35.2.0",
     "@drupal/once": "1.0.x",
     "backbone": "1.4.x",
     "chokidar": "^3.3.1",
     "chromedriver": "^98.0.1",
-    "ckeditor5": "~35.1.0",
+    "ckeditor5": "~35.2.0",
     "cspell": "^6.0.0",
     "dotenv-safe": "^8.2.0",
     "eslint": "^8.9.0",
@@ -109,5 +109,6 @@
     "last 1 ChromeAndroid version",
     "last 1 Samsung version",
     "Firefox ESR"
-  ]
+  ],
+  "dependencies": {}
 }
diff --git a/core/phpcs.xml.dist b/core/phpcs.xml.dist
index c8a0dbdf87..9836486b3e 100644
--- a/core/phpcs.xml.dist
+++ b/core/phpcs.xml.dist
@@ -28,9 +28,7 @@
 
   <!-- Drupal sniffs -->
   <rule ref="Drupal.Arrays.Array">
-    <!-- Sniff for these errors: CommaLastItem -->
-    <exclude name="Drupal.Arrays.Array.ArrayClosingIndentation"/>
-    <exclude name="Drupal.Arrays.Array.ArrayIndentation"/>
+    <!-- Sniff for these errors: ArrayClosingIndentation, ArrayIndentation, CommaLastItem -->
     <exclude name="Drupal.Arrays.Array.LongLineDeclaration"/>
   </rule>
   <rule ref="Drupal.CSS.ClassDefinitionNameSpacing"/>
@@ -71,7 +69,6 @@
     <exclude name="Drupal.Commenting.FunctionComment.Missing"/>
     <exclude name="Drupal.Commenting.FunctionComment.MissingParamType"/>
     <exclude name="Drupal.Commenting.FunctionComment.MissingReturnComment"/>
-    <exclude name="Drupal.Commenting.FunctionComment.MissingReturnType"/>
     <exclude name="Drupal.Commenting.FunctionComment.ParamCommentFullStop"/>
     <exclude name="Drupal.Commenting.FunctionComment.TypeHintMissing"/>
   </rule>
@@ -167,6 +164,9 @@
   <rule ref="DrupalPractice.Commenting.ExpectedException"/>
   <rule ref="DrupalPractice.General.ExceptionT"/>
   <rule ref="DrupalPractice.InfoFiles.NamespacedDependency"/>
+  <rule ref="DrupalPractice.Objects.GlobalFunction">
+    <include-pattern>*/Plugin/*</include-pattern>
+  </rule>
 
   <!-- Generic sniffs -->
   <rule ref="Generic.Arrays.DisallowLongArraySyntax"/>
diff --git a/core/phpstan-baseline.neon b/core/phpstan-baseline.neon
index 832940ec7e..3a6e2d730c 100644
--- a/core/phpstan-baseline.neon
+++ b/core/phpstan-baseline.neon
@@ -160,11 +160,6 @@ parameters:
 			count: 1
 			path: lib/Drupal/Core/Database/Query/Merge.php
 
-		-
-			message: "#^Call to an undefined method Drupal\\\\Core\\\\Database\\\\Schema\\:\\:createTableSql\\(\\)\\.$#"
-			count: 1
-			path: lib/Drupal/Core/Database/Schema.php
-
 		-
 			message: "#^Call to deprecated constant REQUEST_TIME\\: Deprecated in drupal\\:8\\.3\\.0 and is removed from drupal\\:10\\.0\\.0\\. Use \\\\Drupal\\:\\:time\\(\\)\\-\\>getRequestTime\\(\\); $#"
 			count: 2
@@ -225,11 +220,6 @@ parameters:
 			count: 1
 			path: lib/Drupal/Core/Entity/KeyValueStore/KeyValueContentEntityStorage.php
 
-		-
-			message: "#^Method Drupal\\\\Core\\\\Entity\\\\Plugin\\\\DataType\\\\Deriver\\\\EntityDeriver\\:\\:getDerivativeDefinition\\(\\) should return array but return statement is missing\\.$#"
-			count: 1
-			path: lib/Drupal/Core/Entity/Plugin/DataType/Deriver/EntityDeriver.php
-
 		-
 			message: "#^Method Drupal\\\\Core\\\\Entity\\\\Query\\\\QueryBase\\:\\:getClass\\(\\) should return string but return statement is missing\\.$#"
 			count: 1
@@ -280,11 +270,6 @@ parameters:
 			count: 1
 			path: lib/Drupal/Core/Field/FieldTypePluginManager.php
 
-		-
-			message: "#^Method Drupal\\\\Core\\\\Field\\\\Plugin\\\\DataType\\\\Deriver\\\\FieldItemDeriver\\:\\:getDerivativeDefinition\\(\\) should return array but return statement is missing\\.$#"
-			count: 1
-			path: lib/Drupal/Core/Field/Plugin/DataType/Deriver/FieldItemDeriver.php
-
 		-
 			message: "#^Call to deprecated constant REQUEST_TIME\\: Deprecated in drupal\\:8\\.3\\.0 and is removed from drupal\\:10\\.0\\.0\\. Use \\\\Drupal\\:\\:time\\(\\)\\-\\>getRequestTime\\(\\); $#"
 			count: 1
@@ -370,11 +355,6 @@ parameters:
 			count: 1
 			path: lib/Drupal/Core/Session/SessionManager.php
 
-		-
-			message: "#^Call to an undefined method Drupal\\\\Core\\\\StreamWrapper\\\\ReadOnlyStream\\:\\:getLocalPath\\(\\)\\.$#"
-			count: 1
-			path: lib/Drupal/Core/StreamWrapper/ReadOnlyStream.php
-
 		-
 			message: "#^Method Drupal\\\\Core\\\\Template\\\\AttributeValueBase\\:\\:render\\(\\) should return string but return statement is missing\\.$#"
 			count: 1
@@ -385,16 +365,6 @@ parameters:
 			count: 1
 			path: lib/Drupal/Core/Template/TwigPhpStorageCache.php
 
-		-
-			message: "#^Method Drupal\\\\Core\\\\Test\\\\TestRunnerKernel\\:\\:boot\\(\\) should return \\$this\\(Drupal\\\\Core\\\\Test\\\\TestRunnerKernel\\) but return statement is missing\\.$#"
-			count: 1
-			path: lib/Drupal/Core/Test/TestRunnerKernel.php
-
-		-
-			message: "#^Method Drupal\\\\Core\\\\Test\\\\TestRunnerKernel\\:\\:discoverServiceProviders\\(\\) should return array but return statement is missing\\.$#"
-			count: 1
-			path: lib/Drupal/Core/Test/TestRunnerKernel.php
-
 		-
 			message: "#^Method Drupal\\\\Core\\\\Theme\\\\ThemeInitialization\\:\\:resolveStyleSheetPlaceholders\\(\\) should return string but return statement is missing\\.$#"
 			count: 1
@@ -550,21 +520,11 @@ parameters:
 			count: 1
 			path: modules/comment/tests/src/Functional/Views/DefaultViewRecentCommentsTest.php
 
-		-
-			message: "#^Method Drupal\\\\config_test\\\\ConfigTestForm\\:\\:save\\(\\) should return int but return statement is missing\\.$#"
-			count: 1
-			path: modules/config/tests/config_test/src/ConfigTestForm.php
-
 		-
 			message: "#^Call to deprecated constant REQUEST_TIME\\: Deprecated in drupal\\:8\\.3\\.0 and is removed from drupal\\:10\\.0\\.0\\. Use \\\\Drupal\\:\\:time\\(\\)\\-\\>getRequestTime\\(\\); $#"
 			count: 1
 			path: modules/config_translation/src/FormElement/DateFormat.php
 
-		-
-			message: "#^Call to an undefined method Drupal\\\\Tests\\\\config_translation\\\\Functional\\\\ConfigTranslationUiTest\\:\\:drupalPostWithFormat\\(\\)\\.$#"
-			count: 1
-			path: modules/config_translation/tests/src/Functional/ConfigTranslationUiTest.php
-
 		-
 			message: "#^Method Drupal\\\\contact\\\\ContactFormEditForm\\:\\:save\\(\\) should return int but return statement is missing\\.$#"
 			count: 1
@@ -885,11 +845,6 @@ parameters:
 			count: 1
 			path: modules/migrate/tests/src/Kernel/MigrateTestBase.php
 
-		-
-			message: "#^Cannot unset offset 'menu_ui' on array\\{system\\: \"finished\\:\\\\n  6\\:\\\\n   …\", menu_link_content\\: \"finished\\:\\\\n  6\\:\\\\n   …\", menu\\: \"finished\\:\\\\n  6\\:\\\\n   …\"\\}\\.$#"
-			count: 1
-			path: modules/migrate_drupal/tests/src/Unit/MigrationStateUnitTest.php
-
 		-
 			message: "#^Call to deprecated constant REQUEST_TIME\\: Deprecated in drupal\\:8\\.3\\.0 and is removed from drupal\\:10\\.0\\.0\\. Use \\\\Drupal\\:\\:time\\(\\)\\-\\>getRequestTime\\(\\); $#"
 			count: 2
@@ -900,21 +855,6 @@ parameters:
 			count: 1
 			path: modules/migrate_drupal_ui/src/Form/ReviewForm.php
 
-		-
-			message: "#^Method Drupal\\\\migration_provider_test\\\\Plugin\\\\migrate\\\\source\\\\NoSourceModule\\:\\:fields\\(\\) should return array but return statement is missing\\.$#"
-			count: 1
-			path: modules/migrate_drupal_ui/tests/modules/migration_provider_test/src/Plugin/migrate/source/NoSourceModule.php
-
-		-
-			message: "#^Method Drupal\\\\migration_provider_test\\\\Plugin\\\\migrate\\\\source\\\\NoSourceModule\\:\\:getIds\\(\\) should return array\\<array\\> but return statement is missing\\.$#"
-			count: 1
-			path: modules/migrate_drupal_ui/tests/modules/migration_provider_test/src/Plugin/migrate/source/NoSourceModule.php
-
-		-
-			message: "#^Method Drupal\\\\migration_provider_test\\\\Plugin\\\\migrate\\\\source\\\\NoSourceModule\\:\\:query\\(\\) should return Drupal\\\\Core\\\\Database\\\\Query\\\\SelectInterface but return statement is missing\\.$#"
-			count: 1
-			path: modules/migrate_drupal_ui/tests/modules/migration_provider_test/src/Plugin/migrate/source/NoSourceModule.php
-
 		-
 			message: "#^Call to an undefined method Drupal\\\\Tests\\\\migrate_drupal_ui\\\\Functional\\\\CredentialFormTest\\:\\:installEntitySchema\\(\\)\\.$#"
 			count: 8
@@ -970,11 +910,6 @@ parameters:
 			count: 1
 			path: modules/node/tests/src/Functional/NodeRevisionsAllTest.php
 
-		-
-			message: "#^Call to an undefined method Drupal\\\\Tests\\\\node\\\\Functional\\\\NodeRevisionsTest\\:\\:drupalPost\\(\\)\\.$#"
-			count: 1
-			path: modules/node/tests/src/Functional/NodeRevisionsTest.php
-
 		-
 			message: "#^Call to deprecated constant REQUEST_TIME\\: Deprecated in drupal\\:8\\.3\\.0 and is removed from drupal\\:10\\.0\\.0\\. Use \\\\Drupal\\:\\:time\\(\\)\\-\\>getRequestTime\\(\\); $#"
 			count: 1
@@ -1050,11 +985,6 @@ parameters:
 			count: 1
 			path: modules/responsive_image/src/ResponsiveImageStyleForm.php
 
-		-
-			message: "#^Method Drupal\\\\rest\\\\Plugin\\\\Deriver\\\\EntityDeriver\\:\\:getDerivativeDefinition\\(\\) should return array but return statement is missing\\.$#"
-			count: 1
-			path: modules/rest/src/Plugin/Deriver/EntityDeriver.php
-
 		-
 			message: "#^Method Drupal\\\\rest\\\\Routing\\\\ResourceRoutes\\:\\:onDynamicRouteEvent\\(\\) should return array but return statement is missing\\.$#"
 			count: 1
@@ -1085,11 +1015,6 @@ parameters:
 			count: 1
 			path: modules/search/src/SearchPageRepository.php
 
-		-
-			message: "#^Method Drupal\\\\search_extra_type\\\\Plugin\\\\Search\\\\SearchExtraTypeSearch\\:\\:setSearch\\(\\) should return \\$this\\(Drupal\\\\search_extra_type\\\\Plugin\\\\Search\\\\SearchExtraTypeSearch\\) but return statement is missing\\.$#"
-			count: 1
-			path: modules/search/tests/modules/search_extra_type/src/Plugin/Search/SearchExtraTypeSearch.php
-
 		-
 			message: "#^Call to deprecated constant REQUEST_TIME\\: Deprecated in drupal\\:8\\.3\\.0 and is removed from drupal\\:10\\.0\\.0\\. Use \\\\Drupal\\:\\:time\\(\\)\\-\\>getRequestTime\\(\\); $#"
 			count: 1
@@ -1165,16 +1090,6 @@ parameters:
 			count: 2
 			path: modules/system/tests/modules/entity_test/entity_test.install
 
-		-
-			message: "#^Method Drupal\\\\entity_test\\\\Entity\\\\EntityTestMulChanged\\:\\:save\\(\\) should return int but return statement is missing\\.$#"
-			count: 1
-			path: modules/system/tests/modules/entity_test/src/Entity/EntityTestMulChanged.php
-
-		-
-			message: "#^Method Drupal\\\\entity_test\\\\EntityTestForm\\:\\:save\\(\\) should return int but return statement is missing\\.$#"
-			count: 1
-			path: modules/system/tests/modules/entity_test/src/EntityTestForm.php
-
 		-
 			message: "#^Call to deprecated constant REQUEST_TIME\\: Deprecated in drupal\\:8\\.3\\.0 and is removed from drupal\\:10\\.0\\.0\\. Use \\\\Drupal\\:\\:time\\(\\)\\-\\>getRequestTime\\(\\); $#"
 			count: 1
@@ -1185,41 +1100,16 @@ parameters:
 			count: 1
 			path: modules/system/tests/modules/hold_test/src/EventSubscriber/HoldTestSubscriber.php
 
-		-
-			message: "#^Method Drupal\\\\image_test\\\\Plugin\\\\ImageToolkit\\\\Operation\\\\test\\\\OperationBase\\:\\:execute\\(\\) should return bool but return statement is missing\\.$#"
-			count: 1
-			path: modules/system/tests/modules/image_test/src/Plugin/ImageToolkit/Operation/test/OperationBase.php
-
 		-
 			message: "#^Configuration entity must define a `config_export` key\\. See https\\://www\\.drupal\\.org/node/2481909$#"
 			count: 1
 			path: modules/system/tests/modules/module_installer_config_test/src/Entity/TestConfigType.php
 
-		-
-			message: "#^Method Drupal\\\\plugin_test\\\\Plugin\\\\plugin_test\\\\mock_block\\\\MockLayoutBlockDeriver\\:\\:getDerivativeDefinition\\(\\) should return array but return statement is missing\\.$#"
-			count: 1
-			path: modules/system/tests/modules/plugin_test/src/Plugin/plugin_test/mock_block/MockLayoutBlockDeriver.php
-
-		-
-			message: "#^Method Drupal\\\\plugin_test\\\\Plugin\\\\plugin_test\\\\mock_block\\\\MockMenuBlockDeriver\\:\\:getDerivativeDefinition\\(\\) should return array but return statement is missing\\.$#"
-			count: 1
-			path: modules/system/tests/modules/plugin_test/src/Plugin/plugin_test/mock_block/MockMenuBlockDeriver.php
-
-		-
-			message: "#^Method Drupal\\\\service_provider_test\\\\TestFileUsage\\:\\:listUsage\\(\\) should return array but return statement is missing\\.$#"
-			count: 1
-			path: modules/system/tests/modules/service_provider_test/src/TestFileUsage.php
-
 		-
 			message: "#^Instantiated class Drupal\\\\Tests\\\\system\\\\Functional\\\\FileTransfer\\\\Exception not found\\.$#"
 			count: 1
 			path: modules/system/tests/src/Functional/FileTransfer/FileTransferTest.php
 
-		-
-			message: "#^Call to an undefined method Drupal\\\\Tests\\\\system\\\\Kernel\\\\Common\\\\PageRenderTest\\:\\:error\\(\\)\\.$#"
-			count: 2
-			path: modules/system/tests/src/Kernel/Common/PageRenderTest.php
-
 		-
 			message: "#^Call to deprecated constant REQUEST_TIME\\: Deprecated in drupal\\:8\\.3\\.0 and is removed from drupal\\:10\\.0\\.0\\. Use \\\\Drupal\\:\\:time\\(\\)\\-\\>getRequestTime\\(\\); $#"
 			count: 1
@@ -1230,11 +1120,6 @@ parameters:
 			count: 1
 			path: modules/taxonomy/src/Plugin/migrate/source/d7/TermTranslation.php
 
-		-
-			message: "#^Call to function unset\\(\\) contains undefined variable \\$handler\\.$#"
-			count: 1
-			path: modules/taxonomy/src/Plugin/views/argument/IndexTidDepthModifier.php
-
 		-
 			message: "#^Method Drupal\\\\taxonomy\\\\TermForm\\:\\:save\\(\\) should return int but return statement is missing\\.$#"
 			count: 1
@@ -1390,11 +1275,6 @@ parameters:
 			count: 1
 			path: modules/views/src/Plugin/views/argument/Date.php
 
-		-
-			message: "#^Undefined variable\\: \\$arg$#"
-			count: 1
-			path: modules/views/src/Plugin/views/argument_validator/None.php
-
 		-
 			message: "#^Method Drupal\\\\views\\\\Plugin\\\\views\\\\cache\\\\CachePluginBase\\:\\:cacheGet\\(\\) should return bool but return statement is missing\\.$#"
 			count: 1
@@ -1405,11 +1285,6 @@ parameters:
 			count: 1
 			path: modules/views/src/Plugin/views/cache/Time.php
 
-		-
-			message: "#^Cannot unset offset 'items_per_page' on array\\{access\\: array\\{'access'\\}, cache\\: array\\{'cache'\\}, title\\: array\\{'title'\\}, css_class\\: array\\{'css_class'\\}, use_ajax\\: array\\{'use_ajax'\\}, hide_attachment_summary\\: array\\{'hide_attachment…'\\}, show_admin_links\\: array\\{'show_admin_links'\\}, group_by\\: array\\{'group_by'\\}, \\.\\.\\.\\}\\.$#"
-			count: 1
-			path: modules/views/src/Plugin/views/display/DisplayPluginBase.php
-
 		-
 			message: "#^Call to deprecated constant REQUEST_TIME\\: Deprecated in drupal\\:8\\.3\\.0 and is removed from drupal\\:10\\.0\\.0\\. Use \\\\Drupal\\:\\:time\\(\\)\\-\\>getRequestTime\\(\\); $#"
 			count: 2
@@ -1445,11 +1320,6 @@ parameters:
 			count: 2
 			path: modules/views/src/Plugin/views/filter/FilterPluginBase.php
 
-		-
-			message: "#^Undefined variable\\: \\$def$#"
-			count: 2
-			path: modules/views/src/Plugin/views/relationship/EntityReverse.php
-
 		-
 			message: "#^Call to deprecated constant REQUEST_TIME\\: Deprecated in drupal\\:8\\.3\\.0 and is removed from drupal\\:10\\.0\\.0\\. Use \\\\Drupal\\:\\:time\\(\\)\\-\\>getRequestTime\\(\\); $#"
 			count: 1
@@ -1460,11 +1330,6 @@ parameters:
 			count: 1
 			path: modules/views/tests/modules/views_config_entity_test/src/Entity/ViewsConfigEntityTest.php
 
-		-
-			message: "#^Method Drupal\\\\views_test_data\\\\Plugin\\\\views\\\\filter\\\\FilterTest\\:\\:buildOptionsForm\\(\\) should return array but return statement is missing\\.$#"
-			count: 1
-			path: modules/views/tests/modules/views_test_data/src/Plugin/views/filter/FilterTest.php
-
 		-
 			message: "#^Call to deprecated constant REQUEST_TIME\\: Deprecated in drupal\\:8\\.3\\.0 and is removed from drupal\\:10\\.0\\.0\\. Use \\\\Drupal\\:\\:time\\(\\)\\-\\>getRequestTime\\(\\); $#"
 			count: 1
@@ -1510,21 +1375,6 @@ parameters:
 			count: 1
 			path: modules/views/tests/src/Kernel/Handler/FieldFieldTest.php
 
-		-
-			message: "#^Call to an undefined method Drupal\\\\Tests\\\\views\\\\Kernel\\\\RenderCacheIntegrationTest\\:\\:assertSession\\(\\)\\.$#"
-			count: 2
-			path: modules/views/tests/src/Kernel/RenderCacheIntegrationTest.php
-
-		-
-			message: "#^Call to an undefined method Drupal\\\\Tests\\\\views\\\\Kernel\\\\RenderCacheIntegrationTest\\:\\:drupalGet\\(\\)\\.$#"
-			count: 2
-			path: modules/views/tests/src/Kernel/RenderCacheIntegrationTest.php
-
-		-
-			message: "#^Call to an undefined method Drupal\\\\Tests\\\\views\\\\Kernel\\\\RenderCacheIntegrationTest\\:\\:getSession\\(\\)\\.$#"
-			count: 3
-			path: modules/views/tests/src/Kernel/RenderCacheIntegrationTest.php
-
 		-
 			message: "#^Call to deprecated constant REQUEST_TIME\\: Deprecated in drupal\\:8\\.3\\.0 and is removed from drupal\\:10\\.0\\.0\\. Use \\\\Drupal\\:\\:time\\(\\)\\-\\>getRequestTime\\(\\); $#"
 			count: 2
@@ -1665,11 +1515,6 @@ parameters:
 			count: 5
 			path: tests/Drupal/KernelTests/Core/TypedData/TypedDataTest.php
 
-		-
-			message: "#^Parameter \\$template of method Drupal\\\\KernelTests\\\\KernelTestBase\\:\\:prepareTemplate\\(\\) has invalid type Text_Template\\.$#"
-			count: 1
-			path: tests/Drupal/KernelTests/KernelTestBase.php
-
 		-
 			message: "#^Instantiated class Drupal\\\\KernelTests\\\\KernelMissingDependentModuleMethodTest not found\\.$#"
 			count: 1
@@ -1710,21 +1555,6 @@ parameters:
 			count: 1
 			path: tests/Drupal/Tests/Component/Annotation/Doctrine/DocParserTest.php
 
-		-
-			message: "#^Cannot unset offset int on array\\<string, mixed\\>\\.$#"
-			count: 1
-			path: tests/Drupal/Tests/Component/PhpStorage/FileStorageReadOnlyTest.php
-
-		-
-			message: "#^Cannot unset offset int on array\\<string, mixed\\>\\.$#"
-			count: 1
-			path: tests/Drupal/Tests/Component/PhpStorage/FileStorageTest.php
-
-		-
-			message: "#^Cannot unset offset int on array\\<string, mixed\\>\\.$#"
-			count: 1
-			path: tests/Drupal/Tests/Component/PhpStorage/PhpStorageTestBase.php
-
 		-
 			message: "#^Result of static method Drupal\\\\Composer\\\\Composer\\:\\:ensureComposerVersion\\(\\) \\(void\\) is used\\.$#"
 			count: 1
@@ -1750,11 +1580,6 @@ parameters:
 			count: 1
 			path: tests/Drupal/Tests/Core/Entity/EntityTypeBundleInfoTest.php
 
-		-
-			message: "#^Cannot unset offset 'data\\-drupal\\-link…' on array\\{data\\-drupal\\-link\\-system\\-path\\: '\\<front\\>'\\}\\.$#"
-			count: 2
-			path: tests/Drupal/Tests/Core/EventSubscriber/ActiveLinkResponseFilterTest.php
-
 		-
 			message: "#^Call to method getDefinitions\\(\\) on an unknown class Drupal\\\\Core\\\\Plugin\\\\CategorizingPluginManagerTrait\\.$#"
 			count: 3
@@ -1784,73 +1609,3 @@ parameters:
 			message: "#^\\#pre_render callback '\\\\\\\\Drupal\\\\\\\\Tests\\\\\\\\Core…' at key '0' is not trusted\\.$#"
 			count: 1
 			path: tests/Drupal/Tests/Core/Render/RendererCallbackTest.php
-
-		-
-			message: "#^Cannot unset offset '\\#cache' on array\\{\\#lazy_builder\\: array\\{'Drupal\\\\\\\\Tests\\\\\\\\Core…', array\\{mixed\\}\\}\\}\\.$#"
-			count: 1
-			path: tests/Drupal/Tests/Core/Render/RendererPlaceholdersTest.php
-
-		-
-			message: "#^Call to an undefined method Drupal\\\\Tests\\\\Core\\\\Test\\\\TestClass\\:\\:assertArrayHasKey\\(\\)\\.$#"
-			count: 3
-			path: tests/Drupal/Tests/Core/Test/AssertContentTraitTest.php
-
-		-
-			message: "#^Call to an undefined method Drupal\\\\Tests\\\\Core\\\\Test\\\\TestClass\\:\\:assertDoesNotMatchRegularExpression\\(\\)\\.$#"
-			count: 1
-			path: tests/Drupal/Tests/Core/Test/AssertContentTraitTest.php
-
-		-
-			message: "#^Call to an undefined method Drupal\\\\Tests\\\\Core\\\\Test\\\\TestClass\\:\\:assertEmpty\\(\\)\\.$#"
-			count: 6
-			path: tests/Drupal/Tests/Core/Test/AssertContentTraitTest.php
-
-		-
-			message: "#^Call to an undefined method Drupal\\\\Tests\\\\Core\\\\Test\\\\TestClass\\:\\:assertEquals\\(\\)\\.$#"
-			count: 2
-			path: tests/Drupal/Tests/Core/Test/AssertContentTraitTest.php
-
-		-
-			message: "#^Call to an undefined method Drupal\\\\Tests\\\\Core\\\\Test\\\\TestClass\\:\\:assertMatchesRegularExpression\\(\\)\\.$#"
-			count: 2
-			path: tests/Drupal/Tests/Core/Test/AssertContentTraitTest.php
-
-		-
-			message: "#^Call to an undefined method Drupal\\\\Tests\\\\Core\\\\Test\\\\TestClass\\:\\:assertNotEmpty\\(\\)\\.$#"
-			count: 10
-			path: tests/Drupal/Tests/Core/Test/AssertContentTraitTest.php
-
-		-
-			message: "#^Call to an undefined method Drupal\\\\Tests\\\\Core\\\\Test\\\\TestClass\\:\\:assertNotEquals\\(\\)\\.$#"
-			count: 1
-			path: tests/Drupal/Tests/Core/Test/AssertContentTraitTest.php
-
-		-
-			message: "#^Call to an undefined method Drupal\\\\Tests\\\\Core\\\\Test\\\\TestClass\\:\\:assertNotFalse\\(\\)\\.$#"
-			count: 1
-			path: tests/Drupal/Tests/Core/Test/AssertContentTraitTest.php
-
-		-
-			message: "#^Call to an undefined method Drupal\\\\Tests\\\\Core\\\\Test\\\\TestClass\\:\\:assertSame\\(\\)\\.$#"
-			count: 1
-			path: tests/Drupal/Tests/Core/Test/AssertContentTraitTest.php
-
-		-
-			message: "#^Call to an undefined method Drupal\\\\Tests\\\\Core\\\\Test\\\\TestClass\\:\\:assertStringContainsString\\(\\)\\.$#"
-			count: 3
-			path: tests/Drupal/Tests/Core/Test/AssertContentTraitTest.php
-
-		-
-			message: "#^Call to an undefined method Drupal\\\\Tests\\\\Core\\\\Test\\\\TestClass\\:\\:assertStringNotContainsString\\(\\)\\.$#"
-			count: 3
-			path: tests/Drupal/Tests/Core/Test/AssertContentTraitTest.php
-
-		-
-			message: "#^Call to an undefined method Drupal\\\\Tests\\\\Core\\\\Test\\\\TestClass\\:\\:assertTrue\\(\\)\\.$#"
-			count: 6
-			path: tests/Drupal/Tests/Core/Test/AssertContentTraitTest.php
-
-		-
-			message: "#^Call to an undefined method Drupal\\\\Tests\\\\Core\\\\Test\\\\TestClass\\:\\:fail\\(\\)\\.$#"
-			count: 3
-			path: tests/Drupal/Tests/Core/Test/AssertContentTraitTest.php
diff --git a/core/profiles/demo_umami/config/install/core.entity_view_display.media.remote_video.default.yml b/core/profiles/demo_umami/config/install/core.entity_view_display.media.remote_video.default.yml
index b42d301feb..82cca20b61 100644
--- a/core/profiles/demo_umami/config/install/core.entity_view_display.media.remote_video.default.yml
+++ b/core/profiles/demo_umami/config/install/core.entity_view_display.media.remote_video.default.yml
@@ -17,6 +17,8 @@ content:
     settings:
       max_width: 0
       max_height: 0
+      loading:
+        attribute: lazy
     third_party_settings: {  }
     weight: 0
     region: content
diff --git a/core/profiles/demo_umami/themes/umami/css/base.css b/core/profiles/demo_umami/themes/umami/css/base.css
index 53443d5b59..32f675429b 100644
--- a/core/profiles/demo_umami/themes/umami/css/base.css
+++ b/core/profiles/demo_umami/themes/umami/css/base.css
@@ -3,6 +3,52 @@
  * This is the base CSS file, for styling elements.
  */
 
+@font-face {
+  font-family: "Source Sans Pro";
+  src:
+    local("Source Sans Pro"),
+    url("../fonts/source-sans-pro-v21-latin-regular.woff2") format("woff2");
+  font-weight: 400;
+  font-style: normal;
+}
+
+@font-face {
+  font-family: "Source Sans Pro";
+  src:
+    local("Source Sans Pro"),
+    url("../fonts/source-sans-pro-v21-latin-italic.woff2") format("woff2");
+  font-weight: 400;
+  font-style: italic;
+}
+
+@font-face {
+  font-family: "Source Sans Pro";
+  src:
+    local("Source Sans Pro"),
+    url("../fonts/source-sans-pro-v21-latin-700.woff2") format("woff2");
+  font-weight: 700;
+  font-style: normal;
+}
+
+@font-face {
+  font-family: "Source Sans Pro";
+  src:
+    local("Source Sans Pro"),
+    url("../fonts/source-sans-pro-v21-latin-700italic.woff2") format("woff2");
+  font-weight: 700;
+  font-style: italic;
+}
+
+@font-face {
+  font-family: "Scope One";
+  src:
+    local("Scope One"),
+    local("ScopeOne-Regular"),
+    url("../fonts/scope-one-v14-latin-regular.woff2") format("woff2");
+  font-weight: 400;
+  font-style: normal;
+}
+
 html {
   box-sizing: border-box;
 }
@@ -34,7 +80,7 @@ body {
   margin: 0;
   color: #464646;
   background: #fbf5ee;
-  font-family: "Open Sans", Verdana, sans-serif;
+  font-family: "Source Sans Pro", Verdana, sans-serif;
   font-size: 1rem;
   line-height: 1.5rem;
 }
diff --git a/core/profiles/demo_umami/themes/umami/fonts/scope-one-v14-latin-regular.woff2 b/core/profiles/demo_umami/themes/umami/fonts/scope-one-v14-latin-regular.woff2
new file mode 100644
index 0000000000..06e55ee778
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/fonts/scope-one-v14-latin-regular.woff2
@@ -0,0 +1,95 @@
+wOF2     S     <  S                       :8` $	k
+dB 6$  XS4wpnFznV:"Ivz73B*K!Õ,wmK)m?ܝEȂ#EҜڋx6.[yfNd
+/ad;U^bCA5MhDm0=nHïXL{@c!'JJɬnV01Ʉyɚ*yۧ"*]'6rh"v>5Cd	T]Vk{^7*Z7()~rwRlb}0H0	@t޿HD0wh;۞KG%v۱4'sp1;9<{)೮tsE`2F%{g $0*
+HS@F6{*bDI*(-(eaaL\-mh"oݪ.kWۆt[BāA& ֝XW4WhUlwY[%vjla$TāYGU9slq
+k_aЩ_isI2Ґ,}=+^
+iST	wepӥ3MZ	JrMV?Y%ZIxHE@CF'T"H%|rFM{2n tб6J%WiVyGɗI2I&$$ɓI2IN*OyaXH'œh~%^m߬(w47<f[,PI̷U'䖽?|a'UZ4`sPΦVTw c|C}GMo*:f:;.08ⳋ1wFk=tvo	,cO [6F
+jR	ɟKɊVX1k P`ۃ?ԯ=CJQ.7bW41VGP*\;1 hbx9 eMK+|%JԈ
+s'djgh2v#m;??#kFNƲȒUxigޣRpذ%.(WWw%?We}/)ʴ*7Z"a:R~^NRuЭHH6v~-&0<RV%AYG5nPPFRb1v"IbxX;/DDDDBA6aݥFЈ'=Sp2 ]S -%?:;<	:+ [}6 @.vӯ@@hr.c%q20p{8/!^2-^|LX;KB6 յ!;Kϼܖwx%,'x1%RW푮q<6:2g,+R)pW,k?b#'h 8$"ܒb^ً:ԉ[VJqEǃcs	gj^dyw4q`Ր:tK4Cx#~`65x`p`0P؍2FA4f,me`sTG>3^dDuۧAAcOt@w1X+CYd|.+";DǞ+Sf\a68z'm0CAv|`Il`Fhu_m]C΀"!VۤFjܸpu2Bk'ï-kmkz^}(!sO"n2C8Fa=v++eQTXsN=E^q`4so0U; 4 2
+dD.|&F0;*"n
+;]V(ĂzchBb1ES]dq@щpJmS+.KðdزE
+8Oh岎YH~`u(>GC3j
+7	Y^ROpWQᄛJ'&1Uc$[cYU@=r`})IV06AVúLԪd	 )|I\YgŞ^ZwD9w,[8kB{5ɚ'v#E|Ac$2ߌaQ,296X;m|ˇCdbOf۱M詟An|߲0/Nxˣ+?bJdK@$F۶2y>aOLsjëUFpEcAe@ 	_LTV+D:дiObv@+tEE.bW|&E-"A`@oD&rh[*w9xDɮ J23R=QۛN$E!c$@!rZ.64NPxD$A'SU4"Mœ@&s08SL-M k Y Odd#bHi7rrjjiDHl<nZ-Y*+I-o")M2k1*
+nެQB%UyЉp*=,-F800%`Yz&VOVpkk8<e҆}7PFq(*[*A@RIQe S]f|Tp{"3BGbTUCL"&=(	9oq&~$`6уR	צ;ǵ"V[yEG:fH<П5:	p|[/{ny'սv1h}@2	ŤmtPM`,R:8̨lclEesBˠeheJxvBKEj Gllt <OGoXЄ%͒-{kVhh0oe }=yucTBOR_$DqRM~6Vr({$YhPHB!;9AnF
+E&Iӷ$_ZeSc
+Y,\VO6$1%nWa`ӟNk]A@1 %~:&	E0+^jwn~_X>S{dI#2 4	DRwKc'pV'$aJg/T,9O|ɴW#PEIIy0pɨA!LRA#y$ 7@G")^-o^'k =WSU_qpcYt?hAG^; 0X`4-+(M[(}.^aRv\28k_|d)٠v<zA䪇FR/&Wa5j-%$|Sއ@+fj՞lL4*jZ:zF&&0pdaɊ+/"F=azspq :Ѹ"(()\SԟR+joυ1|-e+aM=_Ā9bݲnݩy.Fq6q&G6BYhw)1dmt~#dq__Ǳp̒`cvyTǲ/5F,l0cc/pР2.ֈHG6^Yw%L|wD@ @i\ho^ w'8O	x>sLSJe_[+	+Sm@.y3@KFұ2Y
+ Jc;`cƁ
++3R0G\u3qpQ*OIMBG*'Z;K'`t;$X/bߍUGvjYӌ&7|U7O22)%Jl"B9{<ȯnӎo< ?   fNn
+ց!, LA/yV:#`, J) :0b0xHX$
+%` s@
+ƃ^sňB@ 1}:A6
+1hMThw" f
+`8h A`ESA͟*^:;4kν;;{#C):7s#z' D!J3z^GqQSkO/zЎTg{̥ZJoڃDBQi	x.ax,JU9 -JZ5FSzYd(MRv\	PH_l>/"v˧H}'[]_zP"'iW<k ߂@B~ ,Gp(
+vαq13ێvY8jSFʵj[6Ec$.Scic]?Wk5$IOѺ{w)7c)U^?bias=4pv94̤uAK?4~Bm7YLNc5yWޭyvɉmSReK>ih-?Bkg|5`Μ+{v%,~IWh 	IyZVw	
+bG߷M[Uc~7)ZI71GVsKKu|o\V?ǝp~Z|3VtW
+6MEw
+CM03m>ZSʬ%zy3jnZ?tpȚCهU8ޙO._:4;XOWJH-@:!c9;?->2ߙYCuJvbկq:oiO߾ɜl,h[!CVC2n˵]iK52_?u b:ݰBw<F.~{Q1G"M%	2MP>wj_SGk5lhȖF4Ǝ٣}&9xhjǯ\(S0iLaY64ǖJV<{>-r@K.ZC<idRH,m~tm"o_<V$^M9R+۳9͠"6ssf+ ^	Ұ:Э	԰O{k8Do`N4LRW;6^uU+GgjQ	`1Ӭ+-`EÁNNE>[2*da</rb͋s+XJMBM=g>(U8Sz>젠5Sv2a6=3ָHu{Gഞ@NADJ?;ϫت3v̛.±i{)!U`Z*h1	r~g<CZR[7sҫ,5d|G6bplef)Q5-9njiN^KE#:LHIruOap[Cˈi0{k/Tdo:zcpdj5-eQod
+ y  X!*3DI 
+)CU g `-J@5JQW!e]bqw<[&4`2"Cɴy+t(<nOy*<uE&lT|n)sۯdx,2 CM90 YΠj٨ `U9.eHD0,h²p}ɢX9RLv990D0!dqUξOIXl4 &_Lh;@Za2oVDTM/@g[
+V~-rSc\*A?E!A$J~hlUeώ7weqל[BHNÝ+%c!4nA~CH})lqjmkگ$ezSIY^/i9BAo	*.5ZGq)cuFolR#
+<(V"EK.ggYůQ2q %x;!]Q#+[M.tJ&gM@n	B#4es_
+L3**2_8T>gXص*Q;bmI"L)s
+2<nIi)P<zHzy(hyr"Ǟ\bN<,*ρ_-UV?7HsSPȴas:O;F\vKtmt,A7|@'m,!D`	<b8^đ\p9hz/vv.sp^ECsa"}iIMPBE ʡ%h! h"ڊg-ܭFJlҌuȘ=ztae94SE!Wc,%
+ct62S͈8{h-Km&W{WPXT#aa
+mևw-4gkI=Z]gXS\n;xF~[I5SS-i7JX{Cı*փm!%rϟ(-BK{v?*ɭ9%v2'-(7nf% I
+CT(
+2GAt%ؠлdi'V$hDKOH^Z\[qkm%Ygdx(I1'"XǊ"xj,k}ؒD$`r} GQAhԳBLE465	 '7sSՏc>4M&V[ĨS>C7K{ZQȞ{H>'	?V!cxvU_^-/QȺ TG~)n	ޛF_qQ}Cy<WNk-fP/+i?{RFoN'jzf%>l♖JOWVrTԹ*"DRTdcܤºAj+"~IsO4\}	uSahΟDAh$fCXH(Y8^iT%A,d82	ʡrMYxK!$5$vRX(ewb.<cs"A' }Op,vw =yOAd md6U:-:\INN<j=-~ᙡyÂY"Q ii1/S5 y?A-QH<`RN(\S7kr&?FcSk<_T(kuJIs2-	^L!=RP>y3c3Q		UhK-B>rƼpP|3&=*!!fUl6S]0mUC( iJؖ#96~XCf1KEyaϭ:l5aв=iOuYO&ʞkpj63#9qNXg'&Xf+W9/DmtGw.8K&#}HS3aN1X0΁g';%CAK@0Im^4wFzwp1myd`,B_Sq]2O{Cӡ[ˀSCQiQڴ(''=\VF6Oj8P?vʶx|lTU}m5w&HL(f+DZKPNA4p01tA'A@/ϛ-9	#Fw$+x\?ꈒ`EԔ2oa)5,u$Nм`Y/oYJi	@LJl4y72wK	Wu2ך	#M2	/3B<HΓݟv64G38BC%pXC]H4JM\=[1˶'R0]Y {#;)6*7Ҥw͙#JElD)P>¢^i\ړ̱_?	$V/yv7팸(!nsDTFd{Dsܻ
+C2*qT'%kV_:-Yi ZmԗL-~>F:q=$\N3Dڍm*Dy]37HzpudbζWKKm%7@YQL≆`	]8Z?}R3LQƏILv	3Q74MxuϤ+Z.x\c?;^K NmŨv̨\3
+ZEҽ2;w:Bn*,3#幊T{kUj~ՒŻWt~!jN1+b)7RTP`8"bH@UũŚm8쎍kƳ1B<>v
+}+fd\Ҹ?bSVx6bZ@-@%!֔~>,Om4C)?vFQD։sX)?l֌ǇGŊt\.g"(7K
+rڦPP[ AVC}['Ǣ'Y<!VOBJ$6VL>)֦\e",ϔ4-:EAmǹiI'+.VaKyE2p4jQ':JKo8x/=Qy簱b/fϘZ䥠ĘH#,IH5z[!%-E)El)ْiTҫ
+T$L\HJR4ũF[^Pد=%*<rux@5MZ?8dNA5H[P$;X*U&X9Slf'C,f~=35+k԰YQ<~$JdP%'Db^&{dNZhBUAޢMVO9c⾎-4.k#6tY؈}{	QndP0kA|;mV?2EL* *zƴr
+Y8o4{9Jό\+_[E@;uY"R8:ZCG^b#4J}@w(HG@*"VL]>9M$LnK)EJ9W&>:##z{ۻjն^3]֊&,UgV<xTfpN,Za؃k,pzh	qvOq$GKD|	#U.a2g0ZX^Ym5EfڨMegu5bc=X<~͵m&|$+x${E<ᧆuOћtCl!9XSSrTW+*$X0q^B^JL6^QQ*n"&,\11W;f{~i×ݛRnJPmLd0Ro+෼Çe
+lF<hÛ-		'Dx.bG{xvey8^Cfdֆ݇B1<b#rYwP\t_r.(d.(l%Eߝhwt-VWrNQ !ۋab#[[a5_'wňs1>\VuR^Q'r,!x4΅碈fKSC6:0LXTXW#{!) E(
+IXWmq3Q6@Ys֡#w ѰcGXlkM|tElBv{q8>joI:11CYBt#&r^'휼4JusLͼo&HMPM,{nGdJK&譱V|*lf>q޴pM;,&S3]]\<_qtN5'Kɘ5Ic
+X&Q}zE(N~cS/ex8.Yx4Vq{Mu>ܼT&%f6۶m^6hfahس6qkz=~OC#uN㢞=XIBa=k >dLJ7gOBdyLg_I *»RHfӽ{Nک5Sx\IuM$UhJ c^@&RJ#"',`j;GEqOM6*U y8sQ$Ha	+:zE!ye^$6)_+Kn0H$F@|NŘ
+eݐm\X)f/Oc6Zh\bU-r5UzF1v[E]9Fi0MlHN픮VL2i;z
+x\Gt[*rZZiׇZOex0Q,7Ue2I(e1{R>#\as_+7d{5#(Vu4:l.?e~m)msp|SO?$N=9,aͺRN,IүkHl(і~ݫ2kLr'wLHjْºT!Jh|\vNʘ&-b0OuXWMv2ΙŻ5^+GN>П=l3)+uaCBv-Jx~r	۹ī#t}>Vr{JD:8ՠ޾"[U(δϫΟ(fRwcl9q-lvɉ9}ZֳcW/fZH>ՓݻoũAqEw:숲gXId擫B_uX[:I?o>q˞*^_U|_yMW/}9rOPFt	~vniI:'TkΖδjEx#/o<<*KyEw.ݘӲcT]T;mPڣfxz==lL.x4|%:6SuΆ+4>QGљy|lџ(*ZtEнcPa$rHfW(8KSC:b@hS3B
+22Ǥ}:RIRϦ,AT6{4i"{{^fx}~O8m\5VVgBDiӉEfzs9lx:puxÝD3"u"VX̷z{;İo>
+ߦ/x*ps9pg"kR;x	ܬ٤"Iφ"{o,Uc˚R@nؔQX23N؋g;I.;q5njC,Ls2؉zCH,nUdo;2G%ۓkFf<KڢI*qE	g<?
+JۤbUiY;&oy/D袰U֌J!:438YUDP19"WYZ)jځK}Y	NJ&sg2iiU492ƣE&py&I=MnmyK]^kL5MȮىbLד;QKxR\_Ӟe4g#I5K!Op),5U''g14XT)#C)S%ZgwyB/*ڏ7mme~Vƀv
+=Ǵ)iמi/ұ݇4$i/
+kxU]<5\9cTB_D,lNHk9[+)iutHտMbJK{&%jջQQ	Dʄ8Nd*51ԃ]y6ޤRlIjjsݨhZLdt'8H!,tLozG2 +T];77AuYHIWmrA5OnJJiqbK4dh3cD&g`Rj5e<Vƨ͛<sņ0_u3 FBo`ƑdͦE(d YjD޴СR2
+,h3D&08x뚳T}!y
+?d+柾
+?pi}պl0;O[/mxtp)FdJsx6<	+{~ŗnFq<rE C(U8^{hts1D=Lko:RԨe5֑sYN	3ڡ>S\;b>_[f&Z&bk'ܑ֏)%/,=tQU2W#SrAL9#؊y
+y
+"WQ1h&Qm>&bؙMv_5NVcSPGcZ[+s+AOR(N6E^c qHyu~k|-S6
+a;ϷΘg>\q
+HhQ%L@ g6֍!~#xpo	dG[!(DlR69Aؚ3滛jf~(ƍMq&ޢ$˼S;&,i+rf0|l.p乳%~
+I5=gT
+AI̺<L>IM'٘{Y/=:˯߶GH#Hiϱku Dw([H/$gו\ԹixВ	&~^K=!FTӑ[P41+Yũr<x6wNÖ7G]6Sit5##R`(ӎ	{"F2%%$fV
+YP۳lm'HFNBψ%:b[d cpyQ:`pAW֕4=EQ<,e"dO flR=J_6@hݏk5
+ch\qmjBV-ƊYs^H)<=>;i;9řɝ]ZY^τ\i,O^5[ba`}7yII 0<&ci)9ߵUm󤁻UY=ߝсd:{p#%,q.z܏_ȳjBޤ$s+!=7P"grU2x[WAҤҜ슘ߖЧLWЏMV_=|d]b̨XBpy֐ĸ:xy{Q>jtidv$rm☡]>QB"T4_=\B}{`34,</좵_x6 A꓎)/A،r[@@iԁ	W`JBF2~X4خ蘮4N%8B3šBo[Ib;y<'"V\qQ.cCny^Gm fXa>Es*ϟ_YV[zuefӲ5loYvíldވ	$X[YXka,\nDx ~?!6C\ϐԍNNPбnt&<vXmMU+(ea;&д'φnK7UڥҝѼ$l_-* _MEw} aUϽ8Lmh7[oQ̇FEEEdćҢ?>I,Zu3xOGG#G#2Ҋ߹!ȃZfu=֜֜h18VO;*a]#Geg}V?c i>]4C#lmzG7z
+L 61LΚHVܯ}V9ღAgJ/w.OQˠiX$u%o	(J-Z^|e*l5)O,8:'\Fkge0*l5)O,ql>i@>O]vWPttMӃd(&%RJ{So5ܰgP#CBv({cE{=Y$~GaQv}{
+(7"$b'&gp&M5||PPy)'}9@{Jbna89>6cƤ&#3ZTsxػf)J4}aqִ0(ƭSA}3C9D19i0D^*q(uh!>	!qreY4ɱ?m?xJ	! 2R˳	f<SBbp*ʇe# xuf'\lƟJ!Ǩ@c_ht~j`̅e'hcb~̴+lcz7r6KǄ[N6Zu 
+$dfEPCѴO0gS)+ n-1m*vY٫4MN -&O
+RЊ{N@OOc/Ix
+<
+C2m޿FHχ
+#Ng2o	 &4&~$N O\J%e7e,
+[k}[d{"ff'#IoŲXw+bZapp+q}^`8IҲ!0T(<bpW"!7U\Ots1	Ԑp5}vh "ʸ Jojz h,+;n!I
+ ١9ʧnR,DDʓ1XM!_<4DҡQE-3^39}6@T٩bԪVIG1pe$Ҏs:%CЉ弇y_}>>.ԄQCv65ŇLjI)F #'+g@(1\p%V<fE,@m̽MJu>")fBƏLxn]f}}`,C`R_(QRQS%@@HBrn`qx,a!ĔSQQjjtZHvv(bOOcwHLlY!㈚.WBAoՊ:(KU;:UUUWVUONUUG-@a֞k㯗}? $6WlAxqN:8>ao6GC]VPGzR	cLVpA98*x / y1`	y>0?ނJXDOh+p"1P5)Ջ?6ITUً/b$KlL&t͘dγe^N}g<A<*2{3}>CuK]6[أ
+?%Ej+@ sI@h?#:%+񕲯N]/@'lBFK
+3K;E81XL+'U\)EF}^׊R |9Z8=rAYehE:d{zֆxC4F]'N}"8 6zAOO1CVX].K;ver
+F&f.\.I@Dooe&&%(9!ƣƸu:^SJIȨ܊ 7oIC1ueA݌%&;\1dĘ	
+kȻͻ[ϾCGZ+ג۶2;XIZk@Cx^U,,ٺѯ&-p~$mHėzEڌz?<rH1NaT5Zހkuzp;t,$4	!ll!,FPJZ8V]f='TJD!ĔA4耹xo_JHS(6	sU.mQ%_"%I?+00=i!S%U<)$Zݝ!T%iH4oqf<A6$9uj(}EdCŀ3g}f+JpxGWIEDMU^;5R	3lܦ/H^Q^*ENsp	L#JCFg}|y>?;NFY*RA"s G mVݨ&mN)Zґ˩M2r8jRQJE	l"/>ihc
+;ܸAs9OS +fY*-hA!U!Y+MrګVNҬhPl@	($gB;oP`fL0yT#	M0yTelJg.Hᭁ:Bᇄ$Xs?幺LJn~n
+e`M+lG	x
+zۆΓt(u%k%vYJⅦb S A='׸oc$-!nؐ(JmkPx$pnS}OWt3$oLCTЋLUб]m0^Yw}A}LLeǦ3`vvԇǽHUE-cErJmlc9Ms%GgJVD]|m˚D%4L*8%QKZHNI,By ?G,Л@&cD.@	_R6KɹzebC+>|{EUQ=Yb-$%D"@'`n5IkuÂҤB2= 2Y$-]{no4<i@{(*wQ'[Σ ^w0ߵ"q,T[-F?Q`ւ.Tv-(=^X%lA0ZE1H!h];vvt[g,r4{V"j\<NT
++= ̘b~VN2X|1C9VcV0Q+Y*̘&/%7t]?jb&Us@{yU&K<-V=I~':i}e_yfdffMZlO9fY6ܜ[?z9:RG'y(VYӣvz*ål!T4F7yYW2<JaXh]n.Сt5CKMѠkN{9Rj-L=t:,,by{@vLjj3{C5ZR3Ku!k57-bЏ5LKV:7	`PK-y.Kx8fw/#óBpHs܅["d쎁%Xw@"ݘVq 
+E|H_B7Ο5N7`+MB1,1(V"8wl
+O3:ZHv-^ӤARNVP\`AF2|KmJԘEÔI6s&;
+|:,	\7d ֋sw{UmEV	GQ.~)&MLNiHn$_|G*΍G3!~s{rl(i[V/;	Ä0Mz*4*M2L .nbOfx?߉ަ9#>FC$ZULJ :>>=9|v_lK&),XrJbjB|PL/m䀿h΄\VWU'A|Z(4q}duF tAsTW6 dnmb>5t0{Ԗ,z={nC㑫nnRsm[[U[(++F||i>ib{itqC56_~"x4ldL6ߜ~5;cWuK@{87ylqGo!;-FAj+?>,trox\mp{<kbN`ok/KO{{ldolv[{8Q}VY*&K+r0g-ѷ}y{}uyvۮIDvgs9@( ʗmъ2QI|qƋ aIԭWAFh&\998,؋eOqF6ݜ q#|m%PҭQ%7B
+^O)J9/v{y?(IR)@u6"}[^'D9#Y]/CX}F ),B#$LB |x|q~sqVT"?cr<[PV̝gtiH4dLA*P_/OW7חGmvh.om6)|6~c3I	*]+Ѝ]#7Gc\!;mqa;z&IDZN%tvgT6.V&ya;cwcjCkEpfV.D% 扆rhS}ODV!dyd.S@$v(zL״=^B/JoRi?C6$ŞtKgJEr"+5 "%7$Ga24$P۰12c'vkji;u\oPHsd))=y182<$Ԓꔌe r*VWa~}'ǃ]T,:hP4JUY)!)A
+Spx)I:Ĝ7j=hHʧp(˰xP(8
+Lc"'FbqgwW)5'&
+e+fOI$ˋ͹%"6uQ}hwDNkLѶ}6`jwTo/˜HJ\!N=&aKh5/e^.'DzmOXDE\$EޱHaYp)&'\	L$,Rp@]ֺrPy?d
+F5̜)Ґe,(0+cTji?cǺR4ZAq eyLJ411i{۳3}fw{!yӬ4ojO)+c,~΂FE`jU&GTΜ9uHil6q6WKSy- O,4ZUUS_`@?wƏ[;wOdqgRo'ie]u&q!-[9t=μMP
+c3$:ΒӲu3]VԴ4#0it~lګ}5C08AHa.&F/D)E=0
+5($P4+}a;'-{\kCM!	.&s׏p? :JFcs%ڽO5H5MF)ŕ\ߴ ;G+K"#_c[龾z@0?z(dq{B_ ZdN'ڸ;g /deukǹqC@,v $]AR<L@$` pr]OuNm.#ɔX_ːpP$7cܦag -^e_X.gxBBCx	i9	x)aL?D^TTqI UfHuiM7Α3F}<+/ӹlPocbdf-T8<\A	XsV+v("Zd"IuУ^jސ6":})*B(8?ePg%I/##\rJ~pm	yXu>61hJX%X8*JJÖPW u.jIZQ_띺jbMLL}LMLfy:/c;'NE~qP[-mՆ)
+v	Q1Y Uqz}E~iN,\ǵˀ.jWg n<lH0:2sJpPp3 :gR;Nx=:8e5M(SSkh|e2r)ӨIL*p9UҦN	l|qغ]"D
+\Z٣m2hT9C;+g\u(-%bLqU<e|(w FdF,͸dV4H룮ڣ1QQ)[r+Y=*Y WR5助x{.QhB'B4UVAiD3>Hfz,Nȥe ? G㉢jaZt6 tdS 5s)J4diP=v# KRG&1N"FUݏRHÓ(3"@d%[\y<(L>iF2{sn{))n'")^cW0SYYjIrR*o_.cH.=-.[j5km\ɜtwsϮiJیӮx:^24K~QZzMp0{rMmaVt1%mȠ7Hc	PTɫ{Hl"tj${#vz݉,)2ӏ/mx6s<<Ћ8\-Pm9WywjD#ǙBtROL,t  06 PFJRaٿ@vN敕4mYEKFh
+"7r[j[kEYc})FId)KJ	lBqu*1	}=R"uVX{Hfyf wgrwzyAv@fECuQOΆe 8eu>T(
+)
+{:ݓi2W@O\אԞ;[w3E,V<   
\ No newline at end of file
diff --git a/core/profiles/demo_umami/themes/umami/fonts/source-sans-pro-v21-latin-700.woff2 b/core/profiles/demo_umami/themes/umami/fonts/source-sans-pro-v21-latin-700.woff2
new file mode 100644
index 0000000000..cd6bfd0f4b
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/fonts/source-sans-pro-v21-latin-700.woff2
@@ -0,0 +1,47 @@
+wOF2     2|     up  2&                       @>r` 
+P: 6$p |,euv;w96@+6	{Gmتp#'Ɛ(L'Yfp5vXMc1m0?)DWI0dYјmo^ULc⒴3C?d$Ƃ%O*=g;9b'"s -:?~Sd5g&yw$U^"eZUlhyA2,bLmSq@J
+Q@QLԉ=]v.*]\-u1ӅWʡ2L	G;~](""Bk4B%3};f
+u0ݵ.Cy!Ⓝ|O`oZ҈PL3:ݜe?_+up`$H>piXً( pܬWLq[V<oN[ۼ=Ϡ,rlrRvϼyRVp JW+hLf9)@TaE
+LqׄI[SkeWE}*JǨ$z'@6Q[ 8dww!awPlR[ִPt	DaN}JJDZEy@P<0%!4밴k~mE'kYȲbaY܂ce0# /.  :U+4jZme7td:V'h]-zTՃmm!zw϶q` Gv`ۦI7AlD/d&5+G׷}#aJ^1A#P|Q.{vfBnj@ciѪ (b:Oe1@^mNgV)k
+AWc;};4)|͔?|7R,w`39s92Πc\v[hw< D@"1lr1<'$qbT&"KPl<yP"#JTQLrb*PTaUƫQVN,ZZ6M2gouͶȴnA9!ty.0\vE7ݔwܥ})x@CGK|`! 8 DhBhw+!`B"Xh֜;lEoꗝ Q,s'WO1]kM_{O/nl\-w׿@Hܷx'"U:n^`'$f-scn-W {R&?pr23jgs)C{p?h|q½Ϳ2	!E1|jhk]O?٣%M4S-AH6ZWJ6r<]tn԰*poJ(VsA٘cϒoJ4KڮZd}Bhf07Q>,fNpg*]+hqP)H^	ʓnzcFh"/r]caMyR\ :\qviy^,;( ~hN4]%CpPz?I2VvC\|l	mtD_B%\1(#vOr.^`wBR_x` -.xfpg#"k͑+؈F>~>']net f/8ώ{s%m>pҠce\<#'ېO6"!ؚ3s7K1nv GKr>C:Uh]*uH#hs	C^Q7z!'L# !ۧR$(]M.kZc\X"	QJetx FV8
+d@Mv,@ E"1L8Bݨ)r 	j\ u9M'A<8l9q'G@s BBb*0ԇ}`RHWFrTLe+W&T>SQ̒b3 ?+SJUU\F%tu!6%]?0Z=WP6n^ԫVM'p:oqGu*T%YgATy,K@<q|>7d-Y{@p#F}?[[|NV!W,x.VnlUcs2fwQrg͠C-AO
+OzOy-t^>ƁaLqfLe)X;}n#}g3aVXʝcszNx&C%	5YX"JS"dϕGWi,z9ljGcP_N܃ݴBN38sD"=|p_Pr@$6O&H7&ufH#8)dNytP(%p<!3AU	x	jWBbd+x$%U?1un}4b8+ZQV[GzvC=9Q9ԹԊO=d*9dN.NJ	܅
+M1̡
+h@y%,fY{(;c8A- о+Ϭ@D _s+n#l5rbO%W}z kWSXtS|zHQF}CŌL[&GWއ^\>9O6dE}&p<uh FJgK	oABp6kO8Q̥Z&$t(OxW`HPϲ7LB֥/u ^=2
+Dfi1</lh3%%~	LC92kd0GfL	2d~97eHedGR&/
+"Ј+]D|uE.\i< {ƨ!H\(Z>	֠IAU!"NJ2@916!>;BEPz.:_y(`б	Jbs=	ȟ8I,Bh|
+6
+F	F@"ib<*<U!L8O.T$<bt"`1^76a!q'5^灚*c}\1@R0\3-1]tGfL脓N9팳9~r)!]fx!D.pȺ!	+1-
+^l^1p} (0RQ^F`L ɱ^ND"0Gr}\UĚEe]uu7tmwCBavDrzLZ ػTq8l F! P !@u3Q, di0 (~yP	F J2%|&JnTP%mC?KLj%)g<D'%Ssg\اӣ8m3'Q m1Wb>竏<ǵ7=?V<ZQod,xr=^e}>[h}1w4ll `{g^:P 0ɑ5胏>Y*Y&_X9dɖéQj5|jթM"]+VZc,@ f , @B4<2NJY{	+/e9*
+IDeW	Ǆ2.w!0g(&F`kxs3\myH)"pg(m0ar[xj]Z݀3&U..qX{6(=u/еwS
+w"?ӷֺ~[ᳳ23ǼL
+:	MiLP);\N֍iL	!LG>6E	fudEAr7*JE1+Lhi*+[Em tl})Oe,?HZ+o<^P+#F"0F2!h\2l4W6zK	4.Yq]q0B8En1,Nw9HmH7Rn.')PlW#aMw_JO3q?h$]/Bdj:#6+$\\xUz?'hiXf$ggKǔdYu&5aP_V~(%ـ2<ߣ4	{lqA#Y^Z8jb&_H˅Kq8ǪhjyYx5LRI9=o%$hj#I@Uv.\m?*I3UfN@8Hr*.D)	MKM@I\+co"	办%pMfYF wOoxc0[M@H0v<>$YSW-m#@ JvPRMqAR\|VGQ#㵈x9JLS5'?Ue_B1< *1XuE.W`fKA"-"jrbSݥ//@/3u4V܆ƆCnCka2t!'R3]/k!С	.843F\!2(#^Gj>pG_iWɄη~ۧ1G:z1}k2+?<z0nl yKr@]a#96;'iYdhyI&||7$Yrڑ%`׉9{9iI
+>7Z0OEZwYMh=K? YvlGJ$%Q$2_R ǡoizC/!FQ%kD<Dbag m2G2ɳ Wgh,'hʮeѶFiL"|(#Z_٧/d]fV@Uj=WKm-1,FڳQ/\}!]SM]FBÚc:_o3Nsi6dET;TS8fGg6أC`-XZmT8V<9&}Q+n'd){qBGhݰe۔ɩ/Q0uZ2AA@ŧ|5|лZyS^< ҩqف։ێm)GSХUa	O
+ep X!K+Zѫkye5]gښM>-IhBP}S'o= vPL;Nl!kap`%~cB1v_@2#Gt%0
+H?_4!!F+Qvkyshs&4t~`!-ISV]㍺-V<ou[<˧%K!KQq=_D*]{S(_GDR*JnG$p\&m,L 1s"vBT%gL#Tha;eʳB|H)g{f5$qvɂ?:(@]7FIZ'^,<>z8
+6S0ߋ΀P	g]DyW-rvp+\QXx&EԠ'}+?-OrZYeJ-
+TT*l?TAÒjx^-y2]ĕG;ϠtJh:\k9&Y\"\}FrdIT<ƥ_Մ]wVX],XwC3Cc\PM`/EyqN9MB񬽦YуEEVڮ7{ɛ.g(~W{ksWze"7g<TkcYF44 &v$bdLKΠ?+GY!J5P&DSdb=Kpmfǂ2n{|Jy9Œ)=\4g ,~?Ѐ,oq\Ke$%S{9ҦJwU8{f9?#3
+sWkz~ebMq!aN ^M_*R_DWZy9a%rjiIJZVg&IAR@Z<H2zEu9>|%Ceg.ر̡_Mkmr_[? ?62nUrL>_
+ȫn|I8rͼJ&g笥IҴ̓	X5\vՏib M2;
+bBn%/O r:RyOKiJ\YO	s7sT_.Dg$!'LZd4Kg!͉+lgLu`яًչ@tBW/]3UW{9#Jf[U[LoUlHXK;$^E߸A7R ڙU:~Uu$t#NwB>TQ{qRڧ/d$%K-ʨ8%z}tHt	؁Sfk^Z'#NsqϋzoTZsr6o yZabSKyxgue[=IqӃ,[w·)l<y'1:4MWr54cqNeŢ,aAa	ai~v%EK9$Zboq	^O^*LyMTK\zG$TĜO^'cYerD5g>Ce3}B]j4%8͸@}|`GpL8TW4@&w;Њkv?B]]FZE eeE5Sj胞+JVq0PT|tLUVbF5'WRWrs9ǳ<ϵU\+P9:k0jf:<Rґ%}-f+;82]@)Zܿ	lyJ;ZADƟUQo1Q'.奺/T&vF?kkW+׺)}!| ^n $b09qPz0ںmT#q3ԘU'KO=0VAU!JwpOk0}yI6D` Ԋo%;ɧUaO>:G=5B<4\_Z"Ӯ_洳q7h_
+ ~)%Ysg{ʵqA=jAeI#˕s)Im[Jתкc{P̗sޔaqd5wֻ)]^ގYIuфbjUc%+ncCW=SNOr&-|䩙T-1`AN#IR*9\KؠC		[),&peϩ.
+d
+KfMOޯu#9~}:%p!uwӱ<4_q>4R>EFkN2PP&;xogx|A%{^'JThfE:{5`>\,&C.擦8B0o.xW֦f\K"m1(<I3iٜ$-V 'v%fz)89bY71U2HWu([5gPva_O=+F!̗B89~!5P<^J,Jޭ̀ssDZRQ0axbpr!ki\K{gֿCg 9O!8ر"~|fEy<1GoGƸ18tdL,tu(X|ifCaj(Rmǧ9P;s($guIS(䖞l.h֪VtI~>رoS
+:ܩƸНY֞' lJuWSғal"c>r+c.<;rER=j2X3T9uzԴ"5:tW`IL္ټNzS]|VKcc(uX{CVĖtUEDp\Qhf'X*~MUYMŭ&}h\Oy&
+!SIx$`uP-y~iZHTiu(ȎTDa>YFTbwk=Sڔb tQ$;+uY3LLI񋲘(GusMTRqj_nZjd.Xg/uvC{\+8׉.7)Й[VpMq8s:=Z,2aR.yɲƂؖatS
+%m.QQQB2hL4`` 8MrXXbV;@P"%jQsM?E9EAr94ёUefyEr*ojDbPH`-vՋ(qC,% y.9Ɵ;F}72yB?KmsI(c;_Q1Mۢm489=ws9o,~:c?j݃>.-ݬcf7yk4Op-.fxUۯ75i:o.OR5J{BX@GXbb|uOMcLVJRs?W6D}_WT
+ We#Z(;XvTt(>/Lx-1Zw2̄+cPE##t/ו8"Kb^ʌ#o%r5`ޢ#?$X 3A[%SӠ=Ds.Ѵsy.]vԊ6;'G٦4k5v33%(Ғ
+bՎOW*x!J.dʔAcJe_|B#
+Ĳ*c#ĂڧN70cZM/Z:(@ؾ2WW/5lZ.nXUZ]gUktYdfUK#|K7qs;n=T6%3I;,.I7e<kRF$:nȧ,̴wĄhubdzF7j3fWNO)H^W#Q2f1H_^7Rl`ptq&<3C'<aNs: 5 %٬!X Ą%%M8&_D>NxwTڐ.L]jV?.ٮq/XK(wy?LIԦɝ6fIldQtE5wG%.V)jM
+3)hS`ʸEѻCzEjrU|ʏIa	bGJܞ"OCj_1ёQc0S/)d	,FƋk#ؚ;_WTOxR,SfV^SIIi ,-
+l'Ɠ{ZJ@KHH5RaT5$qqaI.w 	>;`R#\AUcQ{hZ	T̖[A12!*4r,U*C29&vdRNdulZppKEc8wLd)P@""A}\$Oi+)^EF~xixJh\
+W1r@jG=2oğ̹[$Z	u\K<NW	Mjk?*ɣM.-qFR.eĲ+DI|B,5,%=X%;Ocd YHόtS>78^w4-NOsf $i'ˎ39,K[ YemFYM7KSxk]VV^|X*]TJY>VWJ9P; .@g<gyys/>O7ޥP{kw4> rX++gҰ%gĭ\XQԲs_]	i~$Ic§wby\3`R2+X=eȮC7yphvMjn {J4{!@дeKmmhxRDSVO^=noP5g{M.y=9|P`LywrSQO0bĠMk,yXV	HߡRk2hH! &h/;B	(&!(~HRk\MZ4n"UTYhhcF$yg7ttjZT41T}ضng7^W $3@ 8ft:&Xz0-`%+k^KVb͘mdz"׼Œk@
+/6-[qҖh9&U-645oW,ZaXQ<p8ze ԋou _a@M MYFeޫzZsQk5պd6ǌZog hx'8RI}JƏNѭnUk>/'}I]πWOm"`z^@<=Qw:{U^瓹sfh1q0#t(BcǾ?kT Є_a%^7[xμiңJ]ćchmr4<hb;ö--G;N'hm21֖\E9~꜡#h$hPV龎<`Y@yǱ}@?yfu+t3}Ibӊ^6KQRQ9<V?$bn1w5YyUgN֔bw%'W1eyZќ")ٖHߝ:HtO('[RS%#F% T{%&Ny&MG^%b}mD}xBYXx[˛J|I|QɠsX"'}y]6@b_)hw(mjίmia@`ӮȡO=//xp՚ HeNtͿ\ǒ]L9lr++BKGk]TvgU.Un3k\D2GYZ Nөsu[4JZQdAoSH]E&jsj}mѣb3ATS(U"2[*cm}Gx56":5afo-}2D\%Am;ewc썤HGH8Û:vyP	$ `T'90ȚBKT=q%ov)-Ysdc$piDJ<&DJ<2bWQ$"|CFG8pYOf?'nUӉɚt5 bJQ]^>yN_6X3P@pNS(MB?v.% 6N{-&-S%m ^L&03\@`7Rqc$5_
+j@\:$D\HpC0xzA*&I"cZU/ Ej8X媴j7hҠKy<v#1>$V)A_X(U?zU
+F:=$J%+R;
+wH{h81s
+h4B#Hx;aMKKk5~W4kآxR髱c:#H_$E
+Z@v$c4ttpى7
+G".>עDx)>+ѷ97\Ny\(TĭX:mrt^3ιt&ڵbqu7{ujkh&c5kЦUte^=k	ƛhwx0jY,TXhX8xq#X7Lv\ϗ(c$:atȰNX5[[mi~R*eRz436K?D/N<D$dT4tL,lxYiUDęQZIKB}@BD6@kCdRFkb~ϥ4
+2(iheR`X+KdꔵUa`v;*/Z;Faދ9vM#n$lm|!jKnښ4)iS& )  A0xYcD4o*Ь A
+D @ԠA*hmOM,%BQޖtڰۘ0E(H:"WĢTSq,I%$b$eb2QK2D+MmZ 
\ No newline at end of file
diff --git a/core/profiles/demo_umami/themes/umami/fonts/source-sans-pro-v21-latin-700italic.woff2 b/core/profiles/demo_umami/themes/umami/fonts/source-sans-pro-v21-latin-700italic.woff2
new file mode 100644
index 0000000000..b413356f73
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/fonts/source-sans-pro-v21-latin-700italic.woff2
@@ -0,0 +1,49 @@
+wOF2     1D     nT  0                       Fv` 
+ : 6$p (,$^Eb@e\NH92K"8Q78Ѡuy`|S@3={w+i"hW7RC05-V7gE3VEk[=QQUX!8@*:@R/;slc*X&hQCz0*$R_1*^1~_?y?PO`X.	tϼjR$մ]>mm(!AXNۥ׷wJ#x&6u`)XCo 侴RCHk~H;BW?W[7r+09\1,{ܵaҶ;o#PHM.Zh3	X4 T=4'. !pejr=q783;/Hr%مq
+ww Β<W>49>1>2
+Pч$SA(yIn6v_T-P,p*\$˂/"oη	 A!1&Yr#ÍL^JS?*! (T  | RQN] zDg7 f>
+[k"@bG7Ƃ| 80(}@7EyTζjzK1֑E%EKw!/VjBNlt܍W4T30\lYqeY<ZB~ǵvSK|,S`aiXU/~so%sc"\S*	oAvvbo?Ea1m^Y;3HlhFo;4]t,Asl5(~Ujg1nz&__J%f .Os:ޙ[[ُ~_v5/nR
+ƛ2MH
+Jk/2QdpȯX$jvz'<(s|;]#Z#7LxL1QZvҍvDʷ]<w㷉 2fw
+%$b'RWXibj^QփW	}zxនV{L<7bMͅQ3pM_+EVc7>ٴy<PZ%b̝%i۷T,@t1&6ao.˕pAet#seMw:C
+9IƠu[立EZ~+)M,kr㘂G]<#z5ޝ:ō/e%nEqaBKZ}\c"Eܜ3pli}BPOэqu\ÍE;|2Y18ƢmYEECψ$x;z];xe$WQaqax8C_`Qk&ZrݰsށύHፄ.C%*eVj(@c!ŉ*K2..24idiU鐩K"=[dr+Tmj[~= > (h" #@cA%A!l"f.˅c#7Nf4uJ3I ܞÁ$1 ^<$ fR%Ar,DX/=^2}V$kR*=
+:\ۣcb@:9X	v1 (hX8o/2ʛ`oL SES`ǩbA+	d!I=Dp$;\!d*@b>(oT.
+=[.|19{Wv橯n|6>K
+>i[E<J8=g[
+K{?̾yQVXeAA@AF 2!`#BLPL#ܧ'0s4;xќ(%  v'[ĪP`>(3!R/ɍVcpQ*@̴𲥐~|=@$,WDj/6$(	Ң<SpTptREmJӮXJT$XCߴ
+bB*h%j@BɚB_8Q`y,}0B\Zb7/I
+m#tlHRD]1b^Vtc	4FT뽮&Oilŏoxp6@D @eS+5&/H8V/ҝÖI7₋.슫u7tǋu`JgE>h%҉f bY
+Ef_d!HR;	܆λuo_3@,H%|YRi>[ߜnpp]C|}kP|bu(2Xzԓ+h,[5V%9ܮ;?[ GߋJ /, @'	k!&Q$tL
+3nybG̼ޥ|oXAӉt*It=Ff0KIL쇏3H	Y=,u=N~ateGv.@4%Cw	ߝO ϧ-O?{ɪ'O}}(z}xϷgrk?Mou3}jXka{v95~cgE8['F#^~YЬSkRkӮK&kzl ?`/  @49Q5/^is;𪽳TU~&V^ ȸ1'K.g?a ({:5rߧQ&L5i`ýק_2A8!KZ[+ql1pj[&`ofCmg^s;>`,](>m޶Zu2gw>ľ&FQE]}I]1v`wSD2AR5df<*2Y5u>Qn8)\ōrCAH֚DVYWXLC$Nʉ6poͼҀ^/mP!Pp@+T`UVչ&ً4O@ap,X2+FjU.njZ
+7;k{WVn4ٜZ:U@UP͸NC>8'p3l"UwH_D;vs-H44!A!+R$MQVsdp+,΂n#^i*$.oN#D	\j`"3qI4!dJ4X%vSPx)AZŎv}
+A΄!4/	T&\QK_ Iqq A-]凱>R܁2n xߡ`]<b6a(/
+ĐJ%Fe5eR'Ƿu)s0|OK\]}<Lk5w%5	KP}wT4Znr*vdmM k1S9|iHgT\lHWh8?0S#
+.dy*!]IQeR /)l~$"sH1j_)lf5MU.I*GT6)lÃn|=h2tx*!6@p}9%;8J.HI(<S,SyU%=N]gx0NHlDP@^'ʾ#cMg#' .inlx 'NPĀHxW`Ng!+Dxe].b9kF Cs/sJCj'x@]	8"'hp	*0*B(,	3֬ǣĲfGύ}n'`sk K$#V@3i "xдp[fdAf|_{7\d
+Ɇ4Өxr`FE2j	C$]松tpN$pfCU$'1K,($7/3wU^`&J/%.NTLܣjyx8k`8Y;.W+0,F:ԫK$b>KkyWU֤[JΖ!2VzC>u9o0SS-/B(%B9q(k*u]c4_Vl=FW*
+68dXZU՘Ko{+ˀ\Ŕ6"\$z%_
+Y@VT2b犮6+'u{_**LI ͛dk(:ʍT`}~cb ~p(Xbq;-&?}2z	gvq!'z"lO2[;ĥ|OPR)0o?V'#nT\mZm[xCa$@T=y
+AXEQyI9EmG%-^]TdJĸljg'߱4-Av|ՅD̛aեn%
+H*F5Cד|KPj'.PCUPdlm,0 8"wh^bz;|+|7S5XyP#Q W9P)hPSI<	ܖ@`vU	$J n+PE2o\1Z	?+pW%,1ȚrG#]`\>]S&OU/e;AIS{և5Br|>Fv^C6J "H8{@.gG.D W#J^Y.T}N ;ڗ$ϋB'N>- RաwgWǘk^љ4kY$QC$	o*ZSbHĝaI12phIʢ؊%B3j`9EMÛ*n$ݳR%
+(#PWeBJol]חS}>?eY<%8JpsJiޢМ9bn)s.W8}Zox-N6FtJ_p"p<*$/P..m8TPV!etmZD20h:A?R+uۈ*`ޒ
+Q7ܻQ@익` \\4(T/v
+?K	L8/*iR[˕AŻ'wsfkqOT*;؇V(n>R3qgR}+W"MZPïn|YCZ$&v[uXzX^@nP@<|1y)sc6_uڢ)E]Kf6NP+t~mH]i]?J>3(y<'ⷻ}i*PF$ynDB*佨lO{/a)B׹ҊJZdamEv;CP_HSVb
+{zq2IǨ5֨Mj7?{A!	5˛4`Y~)}W(-A%sQ4'44/0wFf7eٔA0C=gA	#ʅs7g.F̓+Du1Mکi\%{gE+Sc_^,^ɞWw|zElOZAXj=Pz	zʩmK-H·H)*̃	Ǵ28%Fo#h7~ }}r1q,nA=:Ok"~v.-RȋLf:Yff>"hI*VwVG0}CP='ƿ [[+윰@fphyJ&TH0kexP7ڭ8GSqYf`0STbqO!I䞪|L}w8pMXd(<%9{8@/*l-`V݄+s3rbc<aƔbZTz؎P(2]9r?ڣNܠrv6B~+S[11QȈW@pI(U|z@6rE3;~JFcd$~|#C-.I{V^@%长_VY3Yi"pfmo9\8
+	+O>~F1tv4)gn!KQ2MQ!\y,!_~s2;yJoK|J#x3D{iT.kL[藤޴#(@{xL}G1	c
+z	Ai(<M5KNW!hJ@lHf<j~1((Ǐ0Gp펉
+\n褻`hN}1&lJ0x< 0U\|.跹U\ܮ_XxY'(#y͓7FkѪۘzה^3AǄ.Ym\Q3T%ay	nAh)X]8g*KoR)Hqη<){ cY+>(ڷ0oҼQW[[mb6ƀ8M8kW}xK? OY2)00ԙEͳلN?=MHעs9y(D'A~E	d'/,lCFMړJ"Kje@,;2.PPpq3Kƥ	:b;;}}K+mCuӞ+7/>bVvGVn|'uF|cK$̋RLcD!@hlz0TdRqDъ$Ŗ`%!|bp߱HGD"f߼)hLW};Xg%UJ+6qMS"Lgy])<Fz
+2PAN)gjƅ:_q~Sj&ʌ6>RWpǐNo</se?b:0}E`EdmM,WiV6Om-dp&)!cW*+uZ͙vAjw+%ɓfܺtIͅY0Lw.qƢEH+@[ (FkwP9y,:_NU[ m`H㥰8:kvYNT+Ci>ݐ\e:J+0aZjhQ{´AQ;t
+!}Uuٍ/k+Bͯ%>%旔Uҿ hlT'AۉmqKB5%>SFsG"U'jŦ'[o>b=/%ƴ;Δ:&SE:'RW%$)'ot1uguQ
+8#A-C+O?'	@aN033<E;5hU)96m	ԓt%t尃JdӴ;P]#km<m_be>2;~Ei.5wcN].
+JҐ¹bLo
+ԋH=!.ǡs)7gwY߁<;FXԙU޵wHJtI'hL6UiZ-h #s[d5ʼڎVnCZPK+6_g{bP!&y0	,{T9㸱RH}i%7$ǅOA	V LA9`gqƃmt6^,.mmߙN'E?Dw*YO_{BSAP;%y),E$Sj(̩rJXICs	ҎZL^F.'5^Hƀy^O=0jLDa9^l}	P(6J?&w#ZemF@W^9{U
+@)}z*j'2UaL-nWͰ	ăޫ	^v5Cudf?nN85,a! :X"ALi|H>5  1R|%U9jEWĻ[q%}_y+T'x{nd2*p\%NbJpiz?(c,B@Ź gEx6]Jc-	w~ 6a\ˊm^!m[ _#DreI	z1>.ԙp&KZ%i̲qEw V=0$wVRsl*g<૏Pvg5#jc	H,u.k׃ކU9$cꄅ#?MRϩe=&@56s8Rl2#Vs&~?p"EM`?x΂_$RU%tt{h.fu6Nd%Z6e$#c$te"F'%:o	YЩ7<tM4%1N8թ/1B~x!!<S=\U^YۼErs&V4M%⥊[E+Cl-ɘVݔ$4ѡ QXe9X$g>u3aLI/ lZ< Ra"+H/l!iϷS44+)wstȡSaA5Z;9q$zgTj_Iٙ *bQP1bQki|3KeU
+YSSf( dnBr~o86 C*ĤJ*<]B`1y9Zr]%X\<yEwAxk֠a|^mWM<G8yLY WorHwYky&02xshdfGeRF!
+s'A$?&Nɍy`)p(?aGqUKnc٠Lȷڸ)kV!RuX[T&%=, JH_,I'G:qZ*>Oa`Q'_L,3U1.e	'$Q$b_4k=.IUTH"Nsej(Y8pe|Xc鄩P9	BJ!3:]\5	B-sg8SKiOIXճJW]OCgфI6L꺼"L5)+(lP,@rRQv8HיU^_o,ATm60tX\S&c%.,丱T-h^8"JL,;T7^gՃaߓN8>nw}Qned.fr'" CPʼIjuﹾ&:H[X%6<@~+{zMғ;NTyH#a0m̜j=kyVc>5ڵvN?AR8	cѽG'h$m;Ijv9xjUkwwC½IKg7.*:.!1cv"ЕRz2 whYzWR1Iss3R%D,Tn!!v5wuGҊgd0x,ّ֮s۲ezIUlߖS($wʤ)#uep=n	I#rjBBs5USdXnbCuG'fX|\b|g_ dIV[G`XstV@T2uFi;h72:iO!L&AJfʲ_Q sGQ8WLd<ؙA%`QӘDXa+6s8br}z4@to+k|	1ȦuIWj_J9U5g;iɫtLe:jM:h!|EX[KN'k!<$QGÞN*DY%b^6]^hTx"EaqüG KMoڭFgj]\)YjaVbm	[䀕Ezdnz^"ɋ#H/
+Juzޜv댢=J~Z<ߊqwI/lK\䎾msq} =v:#9p+o/o& m4`Y3Y`ָ>k|b@ ho:sN-ٜuŮM' IeD{D
+YdA2ԪٚЊC=#A@(ɼ;ڒwp 3C6x!LY'1ݺptjr
+|&R P}Vv50T㥇T3h[434BJ|H:$3$_=O'q6i-zk(h!\e>d*ia.؊y}0ٳuQZo]id<ŲԐz7JŚKHq+Њ0B8$5)d +؛*?K}fDjɖ]%=̫
+UDwRMޒ"d{yK=㞟[NI<@!K 	*H+n&|8jG}`V~vd+@Y(Ӡ]-#	/*s^GenΒ1:FRz=ًkoÃ6> eLh={}b Ją3άSMB`㶐AJ/1O\GY{ /'a@g#`bz]Wr^ѽ?ؠNX|50?aco6褃­W|zp@R<xDA6#}$W8)MסToOL"vVuCEX4d" hgd&n|`yݾM[f{g]_n'}byTUemDmXr=!jQ-˛YA޼G
+m2V/:79I
+a5+im.(p
+F6eY?1H
+xK[m'V#ҳhΐ:š7qApXGޓd	MΑ^ÛY$N'8$~2وCדD5ƪW`j0>5A:ZP\x|8NʩQ""FRUn!Vz*EGi$֢M,^yۮTE;/Bb(­CX:Ui-ɈIBt,]]1rAU3WңȉJMH}{'}}ucfcՊ={Fɡ@RyH$Z,Ҵ*El2qݚs۴=>Jh;NZtcVttt<[rh M3/Q?>/8+UUBrŵUߗu~k7WAF6j1^6:u}zhM4'&'}O,4,dD$b2 3(3$C3,3TmB9.:!;%:3Y ΤT$e2*1\,ih1bŉ7YDIH&]LY5E|S(TXRYL9Sc)f8*[CQGGðYV+RQy|_y4fb%b#θ'׿:\U_V#J2,,{ijw<"nq.a7as9=85#-G GG hG E Q$$`"mz1\4 GG hG E <@tLt7EO%T[, i[)cC=:R*Xĕ	*Qy*:TciZLAA^d,LxO| 
\ No newline at end of file
diff --git a/core/profiles/demo_umami/themes/umami/fonts/source-sans-pro-v21-latin-italic.woff2 b/core/profiles/demo_umami/themes/umami/fonts/source-sans-pro-v21-latin-italic.woff2
new file mode 100644
index 0000000000..9448cd526e
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/fonts/source-sans-pro-v21-latin-italic.woff2
@@ -0,0 +1,52 @@
+wOF2     1$     n  0                       F"v` 
+(.: 6$p ,#^%m J1a/(Id\ܪClk"פf!\؎:<{޳aVI[H?fPkmg`ȟo
+zI(HA3<̭j#r5d	#rTJ+Mhcb慑wF^ZG3mѲY a*@q+?=ؕ6hNf܂$Pn-- u>AGs׎tfR3C2aV#{MRDН˯ pQ57L4n]xn|oRqqR'xŷr},g􀳳%|PX2X.򍷡䉻w{k\&"J)PJ*sEl[R2E#^{WMcBz~˘nn̜i m|E}0 @JBEHj 4b^P}@@ =|&c :b  ڗ/ ${Tӯ'
+Np`x7Bl<]<u&Is݇kViSZzwdÆECLoT\KyBĩ%s	[`2,!z渡f5eAeu9K@&IPjn,`%V;㯓YRB;bϰ)f"cReκEBB¦SR{q>xݩLEU\j>y2yOS_)XҘBʉۥҘO7BKVVZ
+j	Rj}&E	&/D@~Q+=|z&٧oǣr=^55v!*AHǭ%+sV`KZ-AbXCQ#F:QdiYCQzG3$rZQJald/(=UMJAWVɒ&A^/y=J6՚효t˜ :ڀ^*ur=&YFeҐ<\0n'xǨlQYW^';[V	v:`Lܺwo
+͠bϋmX!UZkÐUP=Μ?7\l6:)m*5ɷ[5;KZCW:6D=^ojK;
+^ӚݽLO1~I&@kmȟK1'`=`!eBW_ס7ƉkWb}oLm=cꙀE{=I?;nu>SSr#l.oociJC@wI}e7KobY"n?)gn6d
+i/r	Am" mb!
+Y*,:%55+!r2:9uVd>&Vnj[vA=;l6@ tҺ AŉXpn(m R.A&*g;4:]P Xl-!AZkJ%d<TF
+2P :$a)$v A $=(ae  H w47B4ߡRa@Ȩ;aǋy)-6\80 P.
+ȑ$.Ka܂4?LHe \tqٞ45<:g] !%֘k\MDBq']zh;OZJHzk6k{X:oaXg1xܳ^GF'W%rZ ,(a"Ĉw0)C#@ 8,0Q
+nBB0{BPGA	A0YY).HϜ6RA
+$1+!h5nHI#N3  a14}Y`FƦA/*'30ep`hH<A D*(b֨G&%_.܀j4! 4JHFY 5$9n17Fzfx\T&4%-&
+s>{em!)0v\ಷ͠(Ԧ{]_nly|h i@l*8J"H"AQ\]]vU\wMv' eLؾs@̖B^0DzbSg9`2$J-@NS1םbL)`6tѝ}+Ƙ
+R	<I%Ga-}۝[qL}S]cO<wV@ǄVvb`eL=͟Y~ߘRJ2PͪjT Ez 'L ȣ ]Y	X( @8N9Bzw-D<^EF!@""`"t/!'L-M$ɷb|
+zEBlqG))͹CB*jyT /Xrj]DoTUc];p}lϞ~łp  |3 ?{>7VW3􎟬Ӥa: ;房A^	}OmN&{$Yh?+;_xxdТKZu5h&fiӮCNnͦm&m e7`0sP	(`4>$9X.H~H|U˓VV_xbULGP.H<òNԙ!|46v!UF-hQspaЪƒ+Q[;:f:7uU`H5_8V+ˮ6}yq!x Wh8w7̕Hhkۆ2>>ZBy^ |ra@RuX:Ѳdae[iI2Z$8C=z/ZA=Ts REJlUBxwh $ vJ8(a0і:$fAlW;+mpCJCiԁlfvBhMmg/IxYUV;fp5"锍^[&.bVB
+'k kYł
+oLu`FLu	6moD#hڞVK	y=.;gȻ	 k~^>:&zflq%TDx/껎өL4N!pOM9
+16аeN`>Ijoj OҭӎyqL	v}<~V$צrGh2l
+$&rnFBr%(ii77\+"P4<e;};ad{53θ;9k-O\y9Gq/=}5&I\!ΙK(Ը]!ʭib5H&F7"gAh5D 4
+$o->r_eV=^>0P7}BP5: $
+ZsD*yV_a@c#2މ@βfC@&QMfǢl3weki)ޞ
+>Qh󆵾Ӧe>u,JDdSL*{v󬻴3u9fuPvޢ}9=Zs͛'ܵ[>V\Ry~f9/cy/R,aWJR
+8Ջ<Y4	6T_-Fb4)o!m܍܀D(4(L򰍃Knغ1yX͍m0u,lM6nګiܥm"Q,g9YA_!*,̟JRZ0F:w^HLKM##CęطFF'.y&mppurzMc7xp>E@IR8~XAdƝ-nU(B.RBɦh >><`SIfZػ(9Ix mY$1p^*(QTw0erjhA#37tŗ6lO__5GF"aK$WX3W24^[jrBJh*&=X?hRR\ wJ kf'h5qX+h'Eت@&l	$	5?۶9x$cR̔ѭaS2)x,zʯ_.;fӀxM'aXt7g}ӶJ*>bė*BV!+ %.BmO졎3+.T6Ď_UrLra9Y<;l}R(Au
+|5KppI-P
+L1L[ݣʹ]K5~fFaЍ!!]-%ƞKmɭgX&1h-҉K#&߂o<gM_{UFoy478KT(ݓuvOmM7)qچԲ_l!himݐ!ԡ}RH%#)<Fmh7M58YИPb//Q%ƛ;Ib$o3eSSS|ҧ{uMIMe[=,ĩׯ(:S:1鄺u`Oj{\g#ߢWqsBl;Qat,k֎XЍɃy7¨;xR(`&+>2(zlEiYUTp5\N)}_:.HUfղGJLmx߾Va"?֭k-K(rOwD)ه=qkTGoJQeӱXXITQ4[4gಡx31}^x^1wDUlt.!`$jHzE'0]"OC1Fy7;0zWܶcf]'137<3LcRT(^
+_+/tg'& /?ThFK
+cu2wXQԐ^lr	]*{' "I͛*kq|YsyAT$bXI7!jيN|9=cZs>aU2k:㳟c?
+hOJ:`!N
+:^]R)Rywn%N4]z4RZ:fI,7P܋T,[e*{^h`dw;9ڸJd~byζp"(e^Sgo[; ӴT<>mxNld [:Wurs;;MGQd(;L$T3}/n}@(Bg)zN[vSARl'wޜXacۚl0D)BoYfQssN|;ߘҞbTVf[\[99CgQ.u
+T(.(e/9f:깓N8ߊ,RZvvFnDu YPWR*z#$e%7&]+Gq/D/LoAY/mëx:kd1.a6F1'~?:(Ss`{|t2ưD.8o}KbM`U,KG)¸-i7ܸՃH0m/*2 8[SZaSxa7'`)ؖQ,F1
+Wܴ3)eP9Pʻ'#XA1(/$Dp%&V+PΕߡp\h_bԑJgWV~.b:+u^(_Z[6?F +K[9j4f=	E9g*G\*[H؝Rks,ڛkdv= ckK,m>fN.Kхf\_^q8ֈu2|ZRDke<1ͽȿp)-4!ڄܖHXbBL6ipyBZ%Ej[%_31eb̒l>ל%~ޒ"3(Ch3ǧpjoQ7j` CH{MشC|)& M&\7ԜnnN'͆185ߨ`RP,O|QQ\;=2Hg)=NÉGp2=fYߙybbR "4A#DU6o`嵋*s0<ꆾ׮8!px\$?N;qǯb
+Z /=ƮUgο^W~jY=V>Bqw 5S-JEEHp(ř0Ŏ)\V@R59d} boXp]W1Zڅˋ/ w{i^_T6O/>+`ʡ^HHv*wqĚ~L	30|M{ctQϞOvfk3G!xh0Cfyb?_a /;
+>{B~uۅz0UrsV$!-M
+l =(JGʵO{2xb4
+4BM>|"_iu!qoܹp^SZhR.`s 71}^~d05kPßuXy2!AWqmY;"@=R/0sZӽ3T@c.<[0pٞt是~Y  9H5+RYNݿp!p I*qE#-ȕT~rɡPYLfY|	3sg*zI/#CJOEyoWZ.qDMxdBҬxjJ\*ȎU忸G3"Vecc6i`׹]|b,qv_wZWc
+Uު\,nL=R"vQҖݚ+K$ 2ΐ{8^HNfBlޭ&idos#x=ыY>:O~_KF°>Qcz=,/s"˯~lUXT,zg﯍26n?lJA_[TgWPhR*4-2ϗUHl-5GgY~NDZ;eO&ȐC@+\6KB2ZO|Q]ךcMFIJ83d	LA\W-7e0SD8CM/5EdNaUu|഑xg@!tq쐂SH}fO'1KV?S͊-:!V-*{ͬigIvTyEW,Vy:A7'<&Tfc{[Y1ɊSQM	rdM&`ڍrR+2lxN3U%)9llUi:lB"|3SSUzLjSRN%rh/LY=slxh	yYu%ZԓiC왝cri!uk"Ͳ+BfgofXY&#?(t jµO"C b^o(粿E6GKe=^+®e1hS˅mFQF,j.*	fh8̱{A+НX;_wan(A{SViXE1Jb-ͧ2б[>ǒmh=XSe]{eTÈ1%Tm:1oٖT/0%ׂ=E"ZSY|#v&Cei;m	r5l:=!RrĢ']w+<1tx`5p	7^.f^s- lʺZ{^|~Y#a7:s ];n lu&N܇Z bR񞦶)f5 9w_zkx{+ވJJƑE+bݻUi7ptѠ0q$w)5:DkFa-)57լ1yi6o5&T'3q]J`ݜNj@_DD8
+$aCG3c515nQ83I6)=+5Kx4n62}=U>VHxhOe0utƸuIfN>sx#TVe*=u^wE?7!,k^t:tnCZōjKg[MTK)6o^	z#^_;Tr
+e\=@ͱ
+|٣:g;LfᰨzkNDW%f@oVrlL-1>xnVIVx2ъeCZEl%.`H̔Eָ5Yt쌀hy+ED]e7%6ڂs_<ej"87[]LȼB4rgn@H޼"{}7W{S9>؂x Ry"aq#4pBOl׷+0[--~Z  BDH"OJhB-嶙`R`ō<J$4 OL?1G/Ȧ~}&=CWv:?GI>$C,G
+LZ/P,J˩b]ౄ4 {L~{'ᒿJٖ\YgRM9:='q9O-<澰"L,CM2.,-pļش?=eu/itl%2E$yk%JK@K.?{!S\\(
+`Կ$}^Y<tTHbhӷ(sٚ_Aʘْψ.uLX]	ST] mN<Οz/))UJZXSp5r4:^)|eW_&d4,+pΨ֊Jr hT'(VI;MdjwR4n'r̠b#aQv8x6æpO3]Vc"+$/pMqfGj֊)/i!%d5X2>:KY,sDKB >j!ٺm0X/J2+%JQm^jd)'G &Vu8k[CPyVE75r3m^7bꅠWƟ((Wv[V)5H+XMT6O+Jd:(4+[KLp]K7Dy*s5J-8T-H1evoyi\W!1C}<rP~!+Ǒ峧wMsh)7o`9dʭu냧ˆ;׽sy[nx7zt(NNR~E
+\a/qj ',A Ŏ75;5WJ:|ӳ͌[ӜeǏdѰwE`WH̅WGZ}| >=dh=x$7%3z~a0}|Мag`Z-h8h{DH_GZJ: }גUWP&cKB=8p	>C?$V%Гz-C}u 2՛eǑtF@'_qWBUYJbu2z
+W3Y+9D<:Yz:G3QR6)x&gљWgĴ4]u`ԑatK8nOj$Th	4'p,@]ecԳ;.;3륱OY;C(Mu/_55<ٜ}-~ݘb}Rq3Zq7ƌ}Rtp0n5;gǌSte+ftn޼maԾҘ=8F4;>1:Wܳ;0ӲW1u t2X$]8IVV ȒYNMGx466VѶ8[6fVf'ɒk.qg~@?k.A/2Bk:Ao[vNpσS/
+P`E}B@>^t͵P 9-uj}_?k"Wyh;1:E'HMCO 8qxS {۷] Uf?W@[Մ9eO**;0B>G9e(U2j0clz\83E^qTiD(F82jdNDMWu/&:#9}0ȏkY<5Hy>g,i<A_/i<唨(8^yR򲊊Ґ_(C0@|P/b 6DC+rI1	j0{hv֜ʞ^pMF4C/ΘpMYjOD98,HazoicAĶ2AyA,Š$ ,[A++E N%<ѠyH8k,x?$^-[t`x*#w)cr4zUu9#wVQӂ+~(;>(˙#: <)/SցT? |b& |*EؓH\u@ @0Oo+U ߍZK#9"A._jSy;,4s<IDJZǛ7e!rۦl*|-3/PjH^?23>dc a4:A']13UrXr`QDY?r:OAG}T
+
+Ro轘#@.4>10d3Y%P+;Z`	$G PD7>5e4ƫ*y~^ s6juJ_f/fhl
+}?tMF* dbe~Lj>"R]Hqu2&)D\a:ngpqLjI'eܩL@EX*S9K7nl+I0"NЂ0:^R?87łL}R!x<AS;=G↞87[/femu|Gtv? &avS g:#ӺݩEM d4߈h5"@l0CXm{9\-DFPѱZ8a׆ؙijfQP]},;5!lM+pZ+Ui֊îSHzkVv2.>9	:N0A;KPYHꛬl !H,c)A!^_;=/+^#kYjiAaAUNE3egUzZTƮf*$Us<zTϮ+
+2VdNurTGWnUe t<B-mNoޝ4w oz:1PD"%#fbK]'_BE8+PiB]u=AVS!&v9+u5רY[j3-kKn=}k#-0B|ohTшfDI,
+Z4鰉NtDc1ɰm¼]ǝu{;K E)U.QXn!#>8ib͈OHLJNIMoe*?-uDd2E`zh!m)-+g4/EЊʪںƦֶήn]-|H
+)zgXt`!n(eYƇ5#[['=
+a֎_~6GEGXkVNp0?pUK+p0@P>l8%7#}|?uX~̑	@P@q088AC0~{m/Bg0P At4:P{nl13m|/󣚸KJ@UB*9bԑY%sœABaKb2  
\ No newline at end of file
diff --git a/core/profiles/demo_umami/themes/umami/fonts/source-sans-pro-v21-latin-regular.woff2 b/core/profiles/demo_umami/themes/umami/fonts/source-sans-pro-v21-latin-regular.woff2
new file mode 100644
index 0000000000..e49928e829
--- /dev/null
+++ b/core/profiles/demo_umami/themes/umami/fonts/source-sans-pro-v21-latin-regular.woff2
@@ -0,0 +1,68 @@
+wOF2     2     u  2                       @>r` 
+: 6$p f,ne%̳7`uJcDJWMc`_7P/E`(($mҤ"4zIɃҽf]a}ω+j*u
+Dr!'xcq䎑0W%|͌?F:3cǧ|6'9yצhHDcxЛ8>	~;긩֞l5'n;!#U!ni	hv`-mVf6" l
+гj_>?ڈ֠4:TOS	p"SlUQpf_%	xG?@g{$ VX{yK9-NxR afZ~|Nm
+])Dk'LJ
+@ .o^wL7V,kv>	HfHu~oXM Xoci 1|48dbIANpHЮZedHhtAZGV2;?rhN?d: 2@6o>B%R ^Mg%T)owm"h{=.!H "aeL|+gDHf3{DbKFW    Sa mtrHK2e2c2o N 'aЛkMBn:B 'H?VWVomʟ5 =h+` *@N4I !C엍x٫fĽUd6o)¡W˅iL+.N(f{jΔ BuણAƗTj5ˣ?|qn{3-{UZB0G z{Ȱ2ln^^O	
+
+	1DD8$QT8ʰ
+GUUDMdA
++[e6h#Îw.
+k3[r=<HSOE=\K/Ž7yy=~ P(T  	1Nؓ1 0	*ET2HE@G'0X)w&U[T	cϝèzЈKO?^xeXy9[qx,&[#i"VIU8fp kQkmryQ0քs_O)2Yþ<6͈9D#zS<Jj{&H+S6M祽%BY ˮTӌJ73mT:#ؓ\:K"_B'v Bavu.Hǝ ~"$Y<IPW?XC_g.jy?AŤ괬S>
+8`ǃB;$~_Tŵ=%9ӡǾeikA_J_5bG٣hv"*<AϹO кbVxKYtӚNQKDuRǽn:=^k#`ˡX7Q
+$'AufZ(Sd;J.2&l%[8dvLbR<|U8iK	aY4.؋+28q .~JF!mfAI#4'[yxi'xCZWzf
+lZ\x`I /A<MrUYrPFL "QQBJK*=J:줼)5]k̚ɂE=V_vN ? HW UPXT!G@I5M%rP)4!]:Hh/Q]B=!@V- zሳabƄf&GȺqJ%X=DRHeM:1^On
+_h@PQR$3ұr*
+idn([yOLHuF9)WtIq	"P]=gTT*"*9QaIehﯨz,9iƺg_)-m~OzxFxdKibxasV`- q7	h S۬VQŔ|đ~(Ws¥9c[P 8
+ESL5s=eLþ3Em3p)CQaj{pni){Y6K
+3J&SET.aO*ձ*܂lzm(cLF~,gIǦH<`¶~yƯW1@$&*b.$CZnCI9eDڴ[w[c{F}eXB w|W2l.
+Hy\l  <m9G}n@qʷ0 4R ]:1)p!Vi` C+HJ!a"DPF%F#N7V#.I Ui2exdZH	Ebm{vXvC@Ţ䒫(oaQ-!+ T,!eB`X?芑OVw!X2-Û	A'tð2\SAgHoVY;j
+WSG =hMnsyJ\"P1̚#§ P<~CLER\^\!y^HC&~R(Ȃ|n4 퉶
+$4(#u  hh>fvBf	UѲ`L?a0aYm'Jꩭx
+P7Rqbma]vg{%i*MevŶbOEіdϹH]#ۖ=xbĸbɛOYPUF(Gm*%ʌR6+u(@(	vF]p1A `2<@	Y(	Qt\z8<؈Xqo*
+>Z5|P-=~$X?t ?|Ryd(c^WTb8"&\;iDQY7@a
+4RojXPwx
+ݖ;3ӅЃ.0< ",L`ȁ|BXd<GH)r)q9]p%]q5NK CR/?FGh0tc!Ĉ*|)180	@a &)jjȌ}+T{j<rƯqY㫮}wMv]cO<X~9`&=ٶ,IY0)Z , qG@y f_@o@ , LN# 1Ii(2Z.z~ܼ۷{p!88.%8&<??C߿*ph*6FCy[<K3ⳢdtU2Ï(pEw ##G ps~|A탚#`5zZ\>>x:R=Y%}>cٶ>֘g_-HMfg[KrEvY[W,ebf;'4>C4PJjzaet[n H	 f  .!tҬ^.eEUD^ѣQW"w.?j	/`!dX!CUMz~"l۸pwvV]$E!Ttִ|KLO0"8y43jiUg&CBk0"=.7ѩhK\!Z@M3!R,+2HI7,j:gZdnR(Gm[Q/ʈijLfV	bxDD6l3K@qHi2;	j)ֈ(}@P?A;Oz0dNq0Ɛ!Ubs#Üc3 мs|	D0<d#FTtd1u i2iyx^vр_[ΩTs9DnbHۏOf.;c7ʒ@pқֲOx	-نZ'p䣴]$*,-qgۏ|!ͬ|N򂉆,) uRfg(5GFP|^/_B(d'-7Au?gϳN{gE<}ZQrcMv}%,UdP&Tzmm(oiɍW_%ʠU}NN1hҰӯgV&.=ȺI$¤XC{K('ٲ*z+*~GjrB{,iv8,;I[>wFvp0X0+=g-/˚v?]+3v?nHFcҘ0) .xLC 11KQS5%zz3ΕJ/J"%}'*J}e[g^^d.f֍̇RZ2@k]&?_B2lP	"H_KSr%N{Y:wV|.)v5 A"	#nِM.$^G;HX8YLLpx1tyv4.. oёikի|ݳ?Iu3auB;dR滞BjSu2VSm3˚j%kĬ`ô7a6C.aEit.THlWh~:}eY(:wK;Zef\\22^a`de婻jSu͜Z`5a0Z=M{mRYvf"+TȕHͦ6XT}k:ksw.9JbiRAєCdx>*'2_RXƮc	>*Rx.6ntRdC(
+f=:GC"|*2&EؗvS4vZb/KAt*Kb`+|ȋkU )Yǉ-^Ġt(-11qԭCɷ-o[@q~D-PA#l3OI+|Z>Μj!q/g%0iD5e/Qat1Sd/3pRcVveYfz<>eI$!>]q̾FPC>N-nR
+gta'$ÊDN^U hw߈U)dZDnߍ8MaPH75q(JҀd%{^&f(p~._%;,`uBbݤC7R#B	
+Ύ&c@/krwGS-AB.d3K*Z&͒)bz*sugvuo<BlZ	rPk+)7JA1x-dmM뎐[[Zޒ?0t"ұ(4IGI'V@~aE:; 1m7hnzR nIJɤ]緸:r0:do;nW{C.4d)`|v
+w$qX48*]O+OLUE?!2a^6Au?K
+i߯:f>ŤpX:an(Z18z$gOp6Xz+*[¾F03^0k>ah Zz~anHU9AV[A㉙>XVH8=ۿm򘇱gvOTNXVѧ;S
+ˤ~P\`v4̻7o2_	+ NvOZeTz<غoso? lw +1ʸ[haШ҇R-#}Rv5t<IFH{ƻkkl'yǗj4UpGhUTu\碮5˺mh0D-[xrݶ5i<SDX#hYMf6R	v1ҪD!_c;(Iw>TX]zϱ*(kG؟c;Ռğ7+Nxh5SKM
+^W7L'R	lpO״ڴ`"бGzFWR{9{Jrri]d)hLQFI2=|@0:SHm|v,#G"b~ 9`wV'tŎHSii|	76֣|Y!ɧ>Mrxg>C./e߳XbF-##j0=2\_#TRcJI\Bpb
+Bn~q:+P637djk(sw*+:9G_k-
+"xyY}k_Cl3j8
+?ggpױپ]7ݕyl/`ˊzfpt[%Qؠ
+-{[\	E˥a	njx12HΦ
+`Nye9I^YshP8+rܲ#
+D5ryۣ8||ݳDEI
+=aWrrb0^)Cl4h_ړoS<Lc	@
+e˭/UT#-=#D?3)UeNPԫSi!ՐKzQWc tȀIzRckeeXQgбnAOdmY-B^:}PxA8UT/iΨ8	<<GKqva*xU"97#93^Tk?AB^yj4>XtɣWY>fQDzkѨ20Q+zG]j{gT>fdzAq{	y$]"@p&<k%*]om j36,&VG#:	8:'GZQYNӁ81Z7ǝ`)Z';ٖpt[sQK5lV`66ػIz^AJ[h3#uP}n!'D]	MзAM9zXgٚQGYMƜ]٦aǗ^ޡ/EPs^y^	i^	u2sdeJo_G(7!AYKMM/ W9͖Tv*Jbo2,*&&?ܑFcݿA]֬YBG	=e0L;a'7=wdR5n;u,ׁSpe_P}p\!E$2^HsVar[z8?D2M<Ǣ%HypTCDM?b$ԘGRY?YBղt]Ib8r(z"_µej]1\U gE}䫖s1UMT	#
+[gTPPI6%uNS'!2K]O#t7aIT
+ʇ-%eu-:aüQ\uz:xbF2gEDޒ;%)(,QYXF2a'[Fj<#\x>[pd9mɔRJ><0H$Z噠l5+GtNQMǳm0Ѧo`F1+~WKouj+	v/(e?o#Le`R?# Big)i"y&d$#${2#h0zN7n9ؒ᥈}qz=y6ҿGlՊv}*MN	)нoew݆D:}~Db=}sn4	wj+Բ6p'wbQI3#PeW+tmٍf
+n/}RBRU֮68qx*>EG<M͐xk}:-sytqZT~83C;݂E-̛^B|ƐN.5UX5j_DqMi4* 2cAyb%[mWdWUQ1ްtI-6\!NbXʮhdoII5y)_b6-G#hBeQޢB+~O
+9Q?DT+dIH*1OΔY<#C4}*E3_噋,=3o'-*MbNXt|u^Q9ްt	7w-_WV:uyH>VЇn"V[[X8K*WWO]ZЎnlOF$Qfp36r{p!!B@V+(*$P8=Sc,CG{CG%\Vȥ?(t皀!Ǉěsj^~t+׳hm*2*&!1мqt\?+UbZ%"Wf=Q"
+arxVBʳ,t\@w$~|bC! i;PV6/mYZzf;jt.d"NIw#Z o뛕e{mmR@rAǂ+l?{ a6vf6HZnޚY(_g8g3	\V𲸻)	fhӻˇkh6CqEu Jțڡ !+U(~.{gegKK`JXI~M92\Sי+0+c)r
+ژň4BۉԘ	_\8UïhqR|C'xBCc\|q-Lmͥʫ@ccFe7iZ23ƚsi'aqT2кGmh*i"7흗?˒yprY(	h:2f밎B$ $;kKQ0=,j@	P>`20OjLp@_BfE$XY=YR"-ESqW>W+gQ՛t)>1dbwMS6
+Kˤ3Yiww&f+IgAuK3;'g&[y}-X.p}ZmY:`Idjпs' HlU	ځ %'-ACDuyuTܤV4%`muG)7"	SC/B᥊xA8(M5 j+彌%;@<BiЂߢVZᶂߓquDb.1*oHqpec*3'0	GV4G'kvҦa<ƲMb,fZPT_	('2)~w{e]!G'fJCRcJaf]#b't3970ƥgZtz\|['Mۗ886v
+"n
+4܉5W2g %ta"$r]i@"A'0`DL
+EDHTHH
+F :*
+`L*In5x*.bJ^.0Qkj@heD,Piņ9'CcBA>;g	.ȦNbIX&q\+KR(Q7l㠲&OQdBʁGJ"2"^Qh+~'$լ9z kz N=GXct|^m/w9PsNj{cB匁m%L3"5
+sF
+ùs*S&C\
+:((͕T(o O%2̱:u&XTGwvժY ڨ-,_˕%gGo&Q&nӡ|1(`pjiL,OX8!Yh6s n#$=CE^ڬ▔˛b0h ?ܹH($RQ?7"$
+{9y \lтAԮOg٢d.Xj?K2yaP=GZ5,イ `$d=)Ap*]z_`=i{}-flv#Ee.m
+5-K*VkנЊ7[q18wc{;߅X?e{x;鴝,w"0Dp~`/B-Q메IWAwA@ƭ1:r!oRgPZ^sR
+Ґ2j(i<nAOF#:s[qn<nBÀDf6mClSUZ7猦YYŻ,eflVfev00%L&qO6ި՛:& 
+9A]hUǟ-2ݫGmxrQtNO3,Nl#G}Q_җ}U]+z<^@ Nt^ܵ;[28A'N]!E
+MtttΡz > _PٍWo &ގwL+&O4er [m*g g-8)$}Kk	 C-)1eUm:"~#L|k.ͤcuIm9[-8c _(|oq$9 7vY75&9}6f"N2ZME Z JaY1Ů'B>}|\6l/-:ELF㏪f΃l׏h%"6.u*'cz:PXv	u)&/
+%K^'v16n?[34)ڮry7࿑	C8Auk";\Ͷ?e݀埼IZ%M۾]V2[+e7os~ZA Kn+Kc }[S@GGvI~t,%!)0`f	VIHz+յ3=YP!O-E)H?.ڐ0,s0`i{̾)VcdI0s'׻;~sLhtG?Ǫ&$m*	s~r֗O*2`hAФ_U"
+氭3th2ϥ$yYo]=U0tJ8y1eZIHzCP^@#(CS&Rt/-^e8sw1lR^:i߹[H!]j\P$S6 F睳8(v`A-@(婈=d9ꞳOZ|@c{7T&`ZE7|9e=[J%I5- ƫE2.'A|x?Lz oP yj;O&P
+L p
+gP:xTaVtDD>SHA;%["bHI2g`H<*Z)\7x[V7]`~_Tu9bN@f$֢򦎾R*k3cJSi-3GCUJl0k`x̊jyu64!yeV1UN>@H];CbSuOGekmF\{Dv3m8>22ZSjTd.960q#mgdvG5Mq=}:η H2r
+J*j4*:m&;r~rgA+[\ymtYJTT\p^(Uf[n{eVk:Ct05k27m1ZR)i5m{Kb!ȋ!
+ZLK D4%tdE)z#z"Ⱥ1;hulQutHE@Ԟj:@([\C
+]BK
+.|%)rѢǈ+v]Ǎg 6$oovK؟'IJo[wcO%O2U4iӥϐ1S,f͖?t_2޽Nk:q0aOjpm#;ԞoE(o;ӥvup}p+F:]0>b007wSG4Vy/;`x-ðpa*JXe'f:hH[t~F+O5ALU=+?wh>я.'Imj^OV[6<$O㽃(v[޽kn   
\ No newline at end of file
diff --git a/core/profiles/demo_umami/themes/umami/layouts/oneplusfourgrid_section/layout--oneplusfourgrid-section.html.twig b/core/profiles/demo_umami/themes/umami/layouts/oneplusfourgrid_section/layout--oneplusfourgrid-section.html.twig
index 5345bcae80..40fc3e7705 100644
--- a/core/profiles/demo_umami/themes/umami/layouts/oneplusfourgrid_section/layout--oneplusfourgrid-section.html.twig
+++ b/core/profiles/demo_umami/themes/umami/layouts/oneplusfourgrid_section/layout--oneplusfourgrid-section.html.twig
@@ -4,6 +4,7 @@
  * Default theme implementation to display a one plus four grid layout.
  *
  * Available variables:
+ * - in_preview: Whether the plugin is being rendered in preview mode.
  * - content: The content for this layout.
  * - attributes: HTML attributes for the layout <div>.
  *
diff --git a/core/profiles/demo_umami/themes/umami/templates/classy/block/block--system-menu-block.html.twig b/core/profiles/demo_umami/themes/umami/templates/classy/block/block--system-menu-block.html.twig
index 407f8403fd..db3f9f8088 100644
--- a/core/profiles/demo_umami/themes/umami/templates/classy/block/block--system-menu-block.html.twig
+++ b/core/profiles/demo_umami/themes/umami/templates/classy/block/block--system-menu-block.html.twig
@@ -11,6 +11,7 @@
  *   - label_display: The display settings for the label.
  *   - provider: The module or other provider that provided this block plugin.
  *   - Block plugin specific settings will also be stored here.
+ * - in_preview: Whether the plugin is being rendered in preview mode.
  * - content: The content of this block.
  * - attributes: HTML attributes for the containing element.
  *   - id: A valid HTML ID and guaranteed unique.
diff --git a/core/profiles/demo_umami/themes/umami/templates/classy/block/block.html.twig b/core/profiles/demo_umami/themes/umami/templates/classy/block/block.html.twig
index fd3311be95..114d7c4de4 100644
--- a/core/profiles/demo_umami/themes/umami/templates/classy/block/block.html.twig
+++ b/core/profiles/demo_umami/themes/umami/templates/classy/block/block.html.twig
@@ -11,6 +11,7 @@
  *   - label_display: The display settings for the label.
  *   - provider: The module or other provider that provided this block plugin.
  *   - Block plugin specific settings will also be stored here.
+ * - in_preview: Whether the plugin is being rendered in preview mode.
  * - content: The content of this block.
  * - attributes: array of HTML attributes populated by modules, intended to
  *   be added to the main container tag of this template.
diff --git a/core/profiles/demo_umami/themes/umami/templates/components/banner-block/block--bundle--banner-block.html.twig b/core/profiles/demo_umami/themes/umami/templates/components/banner-block/block--bundle--banner-block.html.twig
index 9b13cd6844..d23cc297bf 100644
--- a/core/profiles/demo_umami/themes/umami/templates/components/banner-block/block--bundle--banner-block.html.twig
+++ b/core/profiles/demo_umami/themes/umami/templates/components/banner-block/block--bundle--banner-block.html.twig
@@ -11,6 +11,7 @@
  *   - label_display: The display settings for the label.
  *   - provider: The module or other provider that provided this block plugin.
  *   - Block plugin specific settings will also be stored here.
+ * - in_preview: Whether the plugin is being rendered in preview mode.
  * - content: The content of this block.
  * - attributes: array of HTML attributes populated by modules, intended to
  *   be added to the main container tag of this template.
diff --git a/core/profiles/demo_umami/themes/umami/templates/components/footer-promo-block/block--bundle--footer-promo-block.html.twig b/core/profiles/demo_umami/themes/umami/templates/components/footer-promo-block/block--bundle--footer-promo-block.html.twig
index e90416b9cc..489dd0c2e2 100644
--- a/core/profiles/demo_umami/themes/umami/templates/components/footer-promo-block/block--bundle--footer-promo-block.html.twig
+++ b/core/profiles/demo_umami/themes/umami/templates/components/footer-promo-block/block--bundle--footer-promo-block.html.twig
@@ -11,6 +11,7 @@
  *   - label_display: The display settings for the label.
  *   - provider: The module or other provider that provided this block plugin.
  *   - Block plugin specific settings will also be stored here.
+ * - in_preview: Whether the plugin is being rendered in preview mode.
  * - content: The content of this block.
  * - attributes: array of HTML attributes populated by modules, intended to
  *   be added to the main container tag of this template.
diff --git a/core/profiles/demo_umami/themes/umami/templates/components/help-block/block--help.html.twig b/core/profiles/demo_umami/themes/umami/templates/components/help-block/block--help.html.twig
index 20e2a4a9aa..a924817e48 100644
--- a/core/profiles/demo_umami/themes/umami/templates/components/help-block/block--help.html.twig
+++ b/core/profiles/demo_umami/themes/umami/templates/components/help-block/block--help.html.twig
@@ -11,6 +11,7 @@
  *   - label_display: The display settings for the label.
  *   - provider: The module or other provider that provided this block plugin.
  *   - Block plugin specific settings will also be stored here.
+ * - in_preview: Whether the plugin is being rendered in preview mode.
  * - content: The content of this block.
  * - attributes: array of HTML attributes populated by modules, intended to
  *   be added to the main container tag of this template.
diff --git a/core/profiles/demo_umami/themes/umami/templates/components/navigation/block--umami-main-menu.html.twig b/core/profiles/demo_umami/themes/umami/templates/components/navigation/block--umami-main-menu.html.twig
index 51174d43c9..ad21956c33 100644
--- a/core/profiles/demo_umami/themes/umami/templates/components/navigation/block--umami-main-menu.html.twig
+++ b/core/profiles/demo_umami/themes/umami/templates/components/navigation/block--umami-main-menu.html.twig
@@ -11,6 +11,7 @@
  *   - label_display: The display settings for the label.
  *   - provider: The module or other provider that provided this block plugin.
  *   - Block plugin specific settings will also be stored here.
+ * - in_preview: Whether the plugin is being rendered in preview mode.
  * - content: The content of this block.
  * - attributes: HTML attributes for the containing element.
  *   - id: A valid HTML ID and guaranteed unique.
diff --git a/core/profiles/demo_umami/themes/umami/templates/components/search/block--search-form-block.html.twig b/core/profiles/demo_umami/themes/umami/templates/components/search/block--search-form-block.html.twig
index 01599d5f7e..29e828c12e 100644
--- a/core/profiles/demo_umami/themes/umami/templates/components/search/block--search-form-block.html.twig
+++ b/core/profiles/demo_umami/themes/umami/templates/components/search/block--search-form-block.html.twig
@@ -11,6 +11,7 @@
  *   - label_display: The display settings for the label.
  *   - provider: The module or other provider that provided this block plugin.
  *   - Block plugin specific settings will also be stored here.
+ * - in_preview: Whether the plugin is being rendered in preview mode.
  * - content: The content of this block.
  * - attributes: A list HTML attributes populated by modules, intended to
  *   be added to the main container tag of this template. Includes:
diff --git a/core/profiles/demo_umami/themes/umami/umami.info.yml b/core/profiles/demo_umami/themes/umami/umami.info.yml
index cb5a178e30..35fe076ff5 100644
--- a/core/profiles/demo_umami/themes/umami/umami.info.yml
+++ b/core/profiles/demo_umami/themes/umami/umami.info.yml
@@ -8,8 +8,6 @@ libraries:
   - core/normalize
   - umami/global
   - umami/messages
-  - umami/webfonts-open-sans
-  - umami/webfonts-scope-one
 
 libraries-override:
   layout_builder/twocol_section:
diff --git a/core/profiles/demo_umami/themes/umami/umami.libraries.yml b/core/profiles/demo_umami/themes/umami/umami.libraries.yml
index 2731e25aab..db84ec743d 100644
--- a/core/profiles/demo_umami/themes/umami/umami.libraries.yml
+++ b/core/profiles/demo_umami/themes/umami/umami.libraries.yml
@@ -84,26 +84,6 @@ user:
     component:
       css/components/user/user.css: { weight: -10 }
 
-webfonts-open-sans:
-  remote: https://fonts.google.com
-  license:
-    name: Apache License, Version 2.0
-    url: http://www.apache.org/licenses/LICENSE-2.0
-    gpl-compatible: false
-  css:
-    theme:
-      'https://fonts.googleapis.com/css?family=Open+Sans:400,400i,700,700i': { type: external, minified: true }
-
-webfonts-scope-one:
-  remote: https://fonts.google.com
-  license:
-    name: SIL Open Font License, Version 1.1
-    url: http://scripts.sil.org/OFL_web
-    gpl-compatible: false
-  css:
-    theme:
-      'https://fonts.googleapis.com/css?family=Scope+One': { type: external, minified: true }
-
 view-mode-card:
   css:
     theme:
@@ -129,7 +109,7 @@ view-mode-card-common-alt:
 
 demo-umami-tour:
   css:
-   theme:
+    theme:
       css/components/tour/tour.theme.css: {}
   dependencies:
     - claro/tour-styling
diff --git a/core/profiles/standard/config/install/editor.editor.basic_html.yml b/core/profiles/standard/config/install/editor.editor.basic_html.yml
index 4db9cde8c8..33f672b316 100644
--- a/core/profiles/standard/config/install/editor.editor.basic_html.yml
+++ b/core/profiles/standard/config/install/editor.editor.basic_html.yml
@@ -33,6 +33,11 @@ settings:
         - heading4
         - heading5
         - heading6
+    ckeditor5_imageResize:
+      allow_resize: true
+    ckeditor5_list:
+      reversed: false
+      startIndex: true
     ckeditor5_sourceEditing:
       allowed_tags:
         - '<cite>'
@@ -49,11 +54,6 @@ settings:
         - '<h5 id>'
         - '<h6 id>'
         - '<span>'
-    ckeditor5_list:
-      reversed: false
-      startIndex: true
-    ckeditor5_imageResize:
-      allow_resize: true
 image_upload:
   status: true
   scheme: public
diff --git a/core/profiles/standard/config/install/editor.editor.full_html.yml b/core/profiles/standard/config/install/editor.editor.full_html.yml
index 931bada876..babf6b59e0 100644
--- a/core/profiles/standard/config/install/editor.editor.full_html.yml
+++ b/core/profiles/standard/config/install/editor.editor.full_html.yml
@@ -39,13 +39,13 @@ settings:
         - heading4
         - heading5
         - heading6
-    ckeditor5_sourceEditing:
-      allowed_tags: {  }
+    ckeditor5_imageResize:
+      allow_resize: true
     ckeditor5_list:
       reversed: true
       startIndex: true
-    ckeditor5_imageResize:
-      allow_resize: true
+    ckeditor5_sourceEditing:
+      allowed_tags: {  }
 image_upload:
   status: true
   scheme: public
diff --git a/core/profiles/standard/config/optional/core.entity_view_display.media.remote_video.default.yml b/core/profiles/standard/config/optional/core.entity_view_display.media.remote_video.default.yml
index f25014bd0f..5dd5a52d6c 100644
--- a/core/profiles/standard/config/optional/core.entity_view_display.media.remote_video.default.yml
+++ b/core/profiles/standard/config/optional/core.entity_view_display.media.remote_video.default.yml
@@ -17,6 +17,8 @@ content:
     settings:
       max_width: 0
       max_height: 0
+      loading:
+        attribute: lazy
     third_party_settings: {  }
     weight: 0
     region: content
diff --git a/core/profiles/standard/tests/src/FunctionalJavascript/StandardJavascriptTest.php b/core/profiles/standard/tests/src/FunctionalJavascript/StandardJavascriptTest.php
index cec79deacf..7f4bf79856 100644
--- a/core/profiles/standard/tests/src/FunctionalJavascript/StandardJavascriptTest.php
+++ b/core/profiles/standard/tests/src/FunctionalJavascript/StandardJavascriptTest.php
@@ -54,7 +54,8 @@ protected function assertBigPipePlaceholderReplacementCount($expected_count): vo
     $web_assert = $this->assertSession();
     $web_assert->waitForElement('css', 'script[data-big-pipe-event="stop"]');
     $page = $this->getSession()->getPage();
-    $this->assertCount($expected_count, $this->getDrupalSettings()['bigPipePlaceholderIds']);
+    // Settings are removed as soon as they are processed.
+    $this->assertCount(0, $this->getDrupalSettings()['bigPipePlaceholderIds']);
     $this->assertCount($expected_count, $page->findAll('css', 'script[data-big-pipe-replacement-for-placeholder-with-id]'));
   }
 
diff --git a/core/scripts/css/compile.js b/core/scripts/css/compile.js
index 46867eb3b5..fe52555a77 100644
--- a/core/scripts/css/compile.js
+++ b/core/scripts/css/compile.js
@@ -7,6 +7,7 @@ const postcssUrl = require('postcss-url');
 const postcssPresetEnv = require('postcss-preset-env');
 // cspell:ignore pxtorem
 const postcssPixelsToRem = require('postcss-pxtorem');
+const stylelint = require('stylelint');
 
 module.exports = (filePath, callback) => {
   // Transform the file.
@@ -75,7 +76,13 @@ module.exports = (filePath, callback) => {
     ])
     .process(css, { from: filePath })
     .then(result => {
-      callback(result.css);
+        return stylelint.lint({
+          code: result.css,
+          fix: true
+        });
+    })
+    .then(result => {
+      callback(result.output);
     })
     .catch(error => {
       log(error);
diff --git a/core/scripts/run-tests.sh b/core/scripts/run-tests.sh
index 7daf364cef..57f48f90a9 100755
--- a/core/scripts/run-tests.sh
+++ b/core/scripts/run-tests.sh
@@ -545,7 +545,11 @@ function simpletest_script_init() {
   if (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') {
     // Ensure that any and all environment variables are changed to https://.
     foreach ($_SERVER as $key => $value) {
-      $_SERVER[$key] = str_replace('http://', 'https://', $_SERVER[$key]);
+      // Some values are NULL. Non-NULL values which are falsy will not contain
+      // text to replace.
+      if ($value) {
+        $_SERVER[$key] = str_replace('http://', 'https://', $value);
+      }
     }
   }
 
@@ -604,7 +608,7 @@ function simpletest_script_setup_database($new = FALSE) {
     // Remove a possibly existing default connection (from settings.php).
     Database::removeConnection('default');
     try {
-      $databases['default']['default'] = Database::convertDbUrlToConnectionInfo($args['dburl'], DRUPAL_ROOT);
+      $databases['default']['default'] = Database::convertDbUrlToConnectionInfo($args['dburl'], DRUPAL_ROOT, TRUE);
     }
     catch (\InvalidArgumentException $e) {
       simpletest_script_print_error('Invalid --dburl. Reason: ' . $e->getMessage());
@@ -984,11 +988,12 @@ function simpletest_script_get_test_list() {
         simpletest_script_print_alternatives($first_group, $all_groups);
         exit(SIMPLETEST_SCRIPT_EXIT_FAILURE);
       }
-      // Ensure our list of tests contains only one entry for each test.
+      // Merge the tests from the groups together.
       foreach ($args['test_names'] as $group_name) {
-        $test_list = array_merge($test_list, array_flip(array_keys($groups[$group_name])));
+        $test_list = array_merge($test_list, array_keys($groups[$group_name]));
       }
-      $test_list = array_flip($test_list);
+      // Ensure our list of tests contains only one entry for each test.
+      $test_list = array_unique($test_list);
     }
   }
 
diff --git a/core/tests/Drupal/BuildTests/TestSiteApplication/InstallTest.php b/core/tests/Drupal/BuildTests/TestSiteApplication/InstallTest.php
new file mode 100644
index 0000000000..cc431a9aa8
--- /dev/null
+++ b/core/tests/Drupal/BuildTests/TestSiteApplication/InstallTest.php
@@ -0,0 +1,50 @@
+<?php
+
+namespace Drupal\BuildTests\TestSiteApplication;
+
+use Drupal\BuildTests\Framework\BuildTestBase;
+use Symfony\Component\Filesystem\Filesystem;
+use Symfony\Component\Process\PhpExecutableFinder;
+
+/**
+ * @group Build
+ * @group TestSiteApplication
+ */
+class InstallTest extends BuildTestBase {
+
+  public function testInstall() {
+    $this->copyCodebase();
+    $fs = new Filesystem();
+    $fs->chmod($this->getWorkspaceDirectory() . '/sites/default', 0700, 0000);
+
+    // Composer tells you stuff in error output.
+    $this->executeCommand('COMPOSER_DISCARD_CHANGES=true composer install --no-interaction');
+    $this->assertErrorOutputContains('Generating autoload files');
+
+    // We have to stand up the server first so we can know the port number to
+    // pass along to the install command.
+    $this->standUpServer();
+
+    $php_finder = new PhpExecutableFinder();
+    $install_command = [
+      $php_finder->find(),
+      './core/scripts/test-site.php',
+      'install',
+      '--base-url=http://localhost:' . $this->getPortNumber(),
+      '--db-url=sqlite://localhost/foo.sqlite',
+      '--install-profile=minimal',
+      '--json',
+    ];
+    $this->assertNotEmpty($output_json = $this->executeCommand(implode(' ', $install_command))->getOutput());
+    $this->assertCommandSuccessful();
+    $connection_details = json_decode($output_json, TRUE);
+    foreach (['db_prefix', 'user_agent', 'site_path'] as $key) {
+      $this->assertArrayHasKey($key, $connection_details);
+    }
+
+    // Visit paths with expectations.
+    $this->visit();
+    $this->assertDrupalVisit();
+  }
+
+}
diff --git a/core/tests/Drupal/FunctionalJavascriptTests/Ajax/DialogTest.php b/core/tests/Drupal/FunctionalJavascriptTests/Ajax/DialogTest.php
index df89dca4de..0a843954b3 100644
--- a/core/tests/Drupal/FunctionalJavascriptTests/Ajax/DialogTest.php
+++ b/core/tests/Drupal/FunctionalJavascriptTests/Ajax/DialogTest.php
@@ -172,8 +172,7 @@ public function testDialog() {
     $this->drupalGet('admin/structure/contact/add');
     // Check we get a chunk of the code, we can't test the whole form as form
     // build id and token with be different.
-    $contact_form = $this->xpath("//form[@id='contact-form-add-form']");
-    $this->assertNotEmpty($contact_form, 'Non-JS entity form page present.');
+    $this->assertSession()->elementExists('xpath', "//form[@id='contact-form-add-form']");
 
     // Reset: Return to the dialog links page.
     $this->drupalGet('ajax-test/dialog');
diff --git a/core/tests/Drupal/FunctionalJavascriptTests/DrupalSelenium2Driver.php b/core/tests/Drupal/FunctionalJavascriptTests/DrupalSelenium2Driver.php
index a8110451d8..0e1a9b4c07 100644
--- a/core/tests/Drupal/FunctionalJavascriptTests/DrupalSelenium2Driver.php
+++ b/core/tests/Drupal/FunctionalJavascriptTests/DrupalSelenium2Driver.php
@@ -44,32 +44,6 @@ public function setCookie($name, $value = NULL) {
     $this->getWebDriverSession()->setCookie($cookieArray);
   }
 
-  /**
-   * {@inheritdoc}
-   */
-  public function attachFile($xpath, $path) {
-    $element = $this->getWebDriverSession()->element('xpath', $xpath);
-
-    if ('input' !== strtolower($element->name()) || 'file' !== strtolower($element->attribute('type'))) {
-      $message = 'Impossible to %s the element with XPath "%s" as it is not a %s input';
-
-      throw new DriverException(sprintf($message, 'attach a file on', $xpath, 'file'));
-    }
-
-    // Upload the file to Selenium and use the remote path. This will
-    // ensure that Selenium always has access to the file, even if it runs
-    // as a remote instance.
-    try {
-      $remotePath = $this->uploadFileAndGetRemoteFilePath($path);
-    }
-    catch (\Exception $e) {
-      // File could not be uploaded to remote instance. Use the local path.
-      $remotePath = $path;
-    }
-
-    $element->postValue(['value' => [$remotePath]]);
-  }
-
   /**
    * Uploads a file to the Selenium instance and returns the remote path.
    *
@@ -168,6 +142,24 @@ public function setValue($xpath, $value) {
     $not_clickable_exception = NULL;
     $result = $this->waitFor(10, function () use (&$not_clickable_exception, $xpath, $value) {
       try {
+        // \Behat\Mink\Driver\Selenium2Driver::setValue() will call .blur() on
+        // the element, modify that to trigger the "input" and "change" events
+        // instead. They indicate the value has changed, rather than implying
+        // user focus changes.
+        $this->executeJsOnXpath($xpath, <<<JS
+var node = {{ELEMENT}};
+var original = node.blur;
+node.blur = function() {
+  node.dispatchEvent(new Event("input", {bubbles:true}));
+  node.dispatchEvent(new Event("change", {bubbles:true}));
+  // Do not wait for the debounce, which only triggers the 'formUpdated` event
+  // up to once every 0.3 seconds. In tests, no humans are typing, hence there
+  // is no need to debounce.
+  // @see Drupal.behaviors.formUpdated
+  node.dispatchEvent(new Event("formUpdated", {bubbles:true}));
+  node.blur = original;
+};
+JS);
         parent::setValue($xpath, $value);
         return TRUE;
       }
@@ -214,4 +206,24 @@ private function waitFor($timeout, callable $callback) {
     return $result;
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  public function dragTo($sourceXpath, $destinationXpath) {
+    // Ensure both the source and destination exist at this point.
+    $this->getWebDriverSession()->element('xpath', $sourceXpath);
+    $this->getWebDriverSession()->element('xpath', $destinationXpath);
+
+    try {
+      parent::dragTo($sourceXpath, $destinationXpath);
+    }
+    catch (Exception $e) {
+      // Do not care if this fails for any reason. It is a source of random
+      // fails. The calling code should be doing assertions on the results of
+      // dragging anyway. See upstream issues:
+      // - https://github.com/minkphp/MinkSelenium2Driver/issues/97
+      // - https://github.com/minkphp/MinkSelenium2Driver/issues/51
+    }
+  }
+
 }
diff --git a/core/tests/Drupal/FunctionalJavascriptTests/EntityReference/EntityReferenceAutocompleteWidgetTest.php b/core/tests/Drupal/FunctionalJavascriptTests/EntityReference/EntityReferenceAutocompleteWidgetTest.php
index 54db002351..bcae27f020 100644
--- a/core/tests/Drupal/FunctionalJavascriptTests/EntityReference/EntityReferenceAutocompleteWidgetTest.php
+++ b/core/tests/Drupal/FunctionalJavascriptTests/EntityReference/EntityReferenceAutocompleteWidgetTest.php
@@ -127,13 +127,12 @@ public function testEntityReferenceAutocompleteWidget() {
 
     // Change the size of the result set via the UI.
     $this->drupalLogin($this->createUser([
-        'access content',
-        'administer content types',
-        'administer node fields',
-        'administer node form display',
-        'create page content',
-      ]
-    ));
+      'access content',
+      'administer content types',
+      'administer node fields',
+      'administer node form display',
+      'create page content',
+    ]));
     $this->drupalGet('/admin/structure/types/manage/page/form-display');
     $assert_session->pageTextContains('Autocomplete suggestion list size: 1');
     // Click on the widget settings button to open the widget settings form.
diff --git a/core/tests/Drupal/FunctionalJavascriptTests/JSWebAssert.php b/core/tests/Drupal/FunctionalJavascriptTests/JSWebAssert.php
index 0a3c493855..9db43998c6 100644
--- a/core/tests/Drupal/FunctionalJavascriptTests/JSWebAssert.php
+++ b/core/tests/Drupal/FunctionalJavascriptTests/JSWebAssert.php
@@ -12,7 +12,6 @@
 use PHPUnit\Framework\Constraint\IsNull;
 use PHPUnit\Framework\Constraint\LogicalNot;
 use WebDriver\Exception;
-use WebDriver\Exception\CurlExec;
 
 // cspell:ignore interactable
 
@@ -156,18 +155,7 @@ public function waitForText($text, $timeout = 10000) {
    *   The result of $callback.
    */
   private function waitForHelper(int $timeout, callable $callback) {
-    WebDriverCurlService::disableRetry();
-    $wrapper = function (Element $element) use ($callback) {
-      try {
-        return call_user_func($callback, $element);
-      }
-      catch (CurlExec $e) {
-        return NULL;
-      }
-    };
-    $result = $this->session->getPage()->waitFor($timeout / 1000, $wrapper);
-    WebDriverCurlService::enableRetry();
-    return $result;
+    return $this->session->getPage()->waitFor($timeout / 1000, $callback);
   }
 
   /**
diff --git a/core/tests/Drupal/FunctionalJavascriptTests/Tests/JSWebAssertTest.php b/core/tests/Drupal/FunctionalJavascriptTests/Tests/JSWebAssertTest.php
index 772f6fbd34..f7c688c795 100644
--- a/core/tests/Drupal/FunctionalJavascriptTests/Tests/JSWebAssertTest.php
+++ b/core/tests/Drupal/FunctionalJavascriptTests/Tests/JSWebAssertTest.php
@@ -4,6 +4,7 @@
 
 use Behat\Mink\Element\NodeElement;
 use Behat\Mink\Exception\ElementHtmlException;
+use Drupal\Component\Utility\Timer;
 use Drupal\FunctionalJavascriptTests\WebDriverTestBase;
 
 /**
@@ -42,8 +43,15 @@ public function testJsWebAssert() {
     $assert_session->elementExists('css', '[data-drupal-selector="edit-test-assert-no-element-after-wait-fail"]');
     $page->findButton('Test assertNoElementAfterWait: fail')->press();
     try {
+      Timer::start('JSWebAssertTest');
       $assert_session->assertNoElementAfterWait('css', '[data-drupal-selector="edit-test-assert-no-element-after-wait-fail"]', 500, 'Element exists on page after too short wait.');
-      $this->fail('Element not exists on page after too short wait.');
+      // This test is fragile if webdriver responses are very slow for some
+      // reason. If they are, do not fail the test.
+      // @todo https://www.drupal.org/project/drupal/issues/3316317 remove this
+      //   workaround.
+      if (Timer::read('JSWebAssertTest') < 1000) {
+        $this->fail("Element not exists on page after too short wait.");
+      }
     }
     catch (ElementHtmlException $e) {
       $this->assertSame('Element exists on page after too short wait.', $e->getMessage());
diff --git a/core/tests/Drupal/FunctionalJavascriptTests/Tests/JSWebWithWebDriverAssertTest.php b/core/tests/Drupal/FunctionalJavascriptTests/Tests/JSWebWithWebDriverAssertTest.php
deleted file mode 100644
index 18840e2a89..0000000000
--- a/core/tests/Drupal/FunctionalJavascriptTests/Tests/JSWebWithWebDriverAssertTest.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-namespace Drupal\FunctionalJavascriptTests\Tests;
-
-use Drupal\FunctionalJavascriptTests\DrupalSelenium2Driver;
-
-/**
- * Tests for the JSWebAssert class using webdriver.
- *
- * @group javascript
- */
-class JSWebWithWebDriverAssertTest extends JSWebAssertTest {
-
-  /**
-   * {@inheritdoc}
-   */
-  protected $minkDefaultDriverClass = DrupalSelenium2Driver::class;
-
-  /**
-   * {@inheritdoc}
-   */
-  protected $defaultTheme = 'stark';
-
-}
diff --git a/core/tests/Drupal/FunctionalTests/ExistingDrupal8StyleDatabaseConnectionInSettingsPhpTest.php b/core/tests/Drupal/FunctionalTests/ExistingDrupal8StyleDatabaseConnectionInSettingsPhpTest.php
index 855387f695..3a8a1342d8 100644
--- a/core/tests/Drupal/FunctionalTests/ExistingDrupal8StyleDatabaseConnectionInSettingsPhpTest.php
+++ b/core/tests/Drupal/FunctionalTests/ExistingDrupal8StyleDatabaseConnectionInSettingsPhpTest.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\FunctionalTests;
 
+use Drupal\Core\Database\Connection;
 use Drupal\Core\Database\Database;
 use Drupal\Tests\BrowserTestBase;
 
@@ -35,6 +36,19 @@ protected function setUp(): void {
     $namespace_search = "'namespace' => 'Drupal\\\\$driver\\\\Driver\\\\Database\\\\$driver',";
     $namespace_replace = "'namespace' => 'Drupal\\\\Core\\\\Database\\\\Driver\\\\$driver',";
     $contents = str_replace($namespace_search, $namespace_replace, $contents);
+
+    // Add a replica connection to the database settings.
+    $contents .= "\$databases['default']['replica'][] = array (\n";
+    $contents .= "  'database' => 'db',\n";
+    $contents .= "  'username' => 'db',\n";
+    $contents .= "  'password' => 'db',\n";
+    $contents .= "  'prefix' => 'test22806835',\n";
+    $contents .= "  'host' => 'db',\n";
+    $contents .= "  'port' => 3306,\n";
+    $contents .= "  $namespace_replace\n";
+    $contents .= "  'driver' => 'mysql',\n";
+    $contents .= ");\n";
+
     file_put_contents($filename, $contents);
   }
 
@@ -56,4 +70,14 @@ public function testExistingDrupal8StyleDatabaseConnectionInSettingsPhp() {
     $this->assertStringNotContainsString("'autoload' => 'core/modules/$driver/src/Driver/Database/$driver/", $contents);
   }
 
+  /**
+   * Confirms that the replica database connection works.
+   */
+  public function testReplicaDrupal8StyleDatabaseConnectionInSettingsPhp() {
+    $this->drupalLogin($this->drupalCreateUser());
+
+    $replica = Database::getConnection('replica', 'default');
+    $this->assertInstanceOf(Connection::class, $replica);
+  }
+
 }
diff --git a/core/tests/Drupal/FunctionalTests/Image/ToolkitSetupFormTest.php b/core/tests/Drupal/FunctionalTests/Image/ToolkitSetupFormTest.php
index 2ee6b7a634..ab95bb96d9 100644
--- a/core/tests/Drupal/FunctionalTests/Image/ToolkitSetupFormTest.php
+++ b/core/tests/Drupal/FunctionalTests/Image/ToolkitSetupFormTest.php
@@ -23,7 +23,7 @@ class ToolkitSetupFormTest extends BrowserTestBase {
    *
    * @var array
    */
-  protected static $modules = ['system', 'image_test'];
+  protected static $modules = ['system', 'image', 'image_test'];
 
   /**
    * {@inheritdoc}
@@ -76,4 +76,14 @@ public function testToolkitSetupForm() {
     $this->assertSession()->statusCodeEquals(403);
   }
 
+  /**
+   * Tests GD toolkit requirements on the Status Report.
+   */
+  public function testGdToolkitRequirements(): void {
+    // Get Status Report.
+    $this->drupalGet('admin/reports/status');
+    $this->assertSession()->pageTextContains('GD2 image manipulation toolkit');
+    $this->assertSession()->pageTextContains('Supported image file formats: GIF, JPEG, PNG, WEBP.');
+  }
+
 }
diff --git a/core/tests/Drupal/FunctionalTests/Installer/DistributionProfileTranslationTest.php b/core/tests/Drupal/FunctionalTests/Installer/DistributionProfileTranslationTest.php
index abf93bd65e..7cd986461c 100644
--- a/core/tests/Drupal/FunctionalTests/Installer/DistributionProfileTranslationTest.php
+++ b/core/tests/Drupal/FunctionalTests/Installer/DistributionProfileTranslationTest.php
@@ -84,8 +84,7 @@ protected function setUpSettings() {
     $this->translations['Save and continue'] = 'Save and continue de';
 
     // Check the language direction.
-    $direction = current($this->xpath('/@dir'))->getText();
-    $this->assertEquals('ltr', $direction);
+    $this->assertSession()->elementTextEquals('xpath', '/@dir', 'ltr');
 
     // Verify that the distribution name appears.
     $this->assertSession()->pageTextContains($this->info['distribution']['name']);
diff --git a/core/tests/Drupal/FunctionalTests/Installer/InstallerLanguageDirectionTest.php b/core/tests/Drupal/FunctionalTests/Installer/InstallerLanguageDirectionTest.php
index 4fbf2451c1..044506b6c4 100644
--- a/core/tests/Drupal/FunctionalTests/Installer/InstallerLanguageDirectionTest.php
+++ b/core/tests/Drupal/FunctionalTests/Installer/InstallerLanguageDirectionTest.php
@@ -36,8 +36,7 @@ protected function setUpLanguage() {
     $this->translations['Save and continue'] = 'Save and continue Arabic';
 
     // Verify that language direction is right-to-left.
-    $direction = current($this->xpath('/@dir'))->getText();
-    $this->assertEquals('rtl', $direction);
+    $this->assertSession()->elementTextEquals('xpath', '/@dir', 'rtl');
   }
 
   /**
diff --git a/core/tests/Drupal/FunctionalTests/Installer/InstallerTranslationQueryTest.php b/core/tests/Drupal/FunctionalTests/Installer/InstallerTranslationQueryTest.php
index fe9da09502..3293b1d3ad 100644
--- a/core/tests/Drupal/FunctionalTests/Installer/InstallerTranslationQueryTest.php
+++ b/core/tests/Drupal/FunctionalTests/Installer/InstallerTranslationQueryTest.php
@@ -41,8 +41,7 @@ protected function visitInstaller() {
     $this->translations['Save and continue'] = 'Save and continue de';
 
     // Check the language direction.
-    $direction = current($this->xpath('/@dir'))->getText();
-    $this->assertEquals('ltr', $direction);
+    $this->assertSession()->elementTextEquals('xpath', '/@dir', 'ltr');
   }
 
   /**
diff --git a/core/tests/Drupal/FunctionalTests/Installer/InstallerTranslationTest.php b/core/tests/Drupal/FunctionalTests/Installer/InstallerTranslationTest.php
index a46adc575e..c48d53ad04 100644
--- a/core/tests/Drupal/FunctionalTests/Installer/InstallerTranslationTest.php
+++ b/core/tests/Drupal/FunctionalTests/Installer/InstallerTranslationTest.php
@@ -40,8 +40,7 @@ protected function setUpLanguage() {
     $this->translations['Save and continue'] = 'Save and continue de';
 
     // Check the language direction.
-    $direction = current($this->xpath('/@dir'))->getText();
-    $this->assertEquals('ltr', $direction);
+    $this->assertSession()->elementTextEquals('xpath', '/@dir', 'ltr');
   }
 
   /**
diff --git a/core/tests/Drupal/FunctionalTests/Menu/MenuActiveTrail403Test.php b/core/tests/Drupal/FunctionalTests/Menu/MenuActiveTrail403Test.php
index f9fe087ac8..ccbd44277f 100644
--- a/core/tests/Drupal/FunctionalTests/Menu/MenuActiveTrail403Test.php
+++ b/core/tests/Drupal/FunctionalTests/Menu/MenuActiveTrail403Test.php
@@ -49,7 +49,7 @@ protected function setUp(): void {
     $this->drupalPlaceBlock(
       'system_menu_block:' . $this->menu,
       [
-       'level' => 2,
+        'level' => 2,
       ]
     );
 
diff --git a/core/tests/Drupal/FunctionalTests/Routing/RouteCachingLanguageTest.php b/core/tests/Drupal/FunctionalTests/Routing/RouteCachingLanguageTest.php
index 9f9d4885c0..fc81b90d27 100644
--- a/core/tests/Drupal/FunctionalTests/Routing/RouteCachingLanguageTest.php
+++ b/core/tests/Drupal/FunctionalTests/Routing/RouteCachingLanguageTest.php
@@ -40,6 +40,9 @@ class RouteCachingLanguageTest extends BrowserTestBase {
    */
   protected $webUser;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/tests/Drupal/FunctionalTests/Routing/RouteCachingNonPathLanguageNegotiationTest.php b/core/tests/Drupal/FunctionalTests/Routing/RouteCachingNonPathLanguageNegotiationTest.php
index 9b80da30b1..dff4c0a586 100644
--- a/core/tests/Drupal/FunctionalTests/Routing/RouteCachingNonPathLanguageNegotiationTest.php
+++ b/core/tests/Drupal/FunctionalTests/Routing/RouteCachingNonPathLanguageNegotiationTest.php
@@ -35,6 +35,9 @@ class RouteCachingNonPathLanguageNegotiationTest extends BrowserTestBase {
    */
   protected $adminUser;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/tests/Drupal/KernelTests/Core/Action/EmailActionTest.php b/core/tests/Drupal/KernelTests/Core/Action/EmailActionTest.php
index 81d8aad895..5c898f997f 100644
--- a/core/tests/Drupal/KernelTests/Core/Action/EmailActionTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Action/EmailActionTest.php
@@ -62,4 +62,39 @@ public function testEmailAction() {
     $this->assertEquals('test@example.com', $variables['%recipient']);
   }
 
+  /**
+   * Tests multiple recipient email action plugin.
+   */
+  public function testMultipleRecipientsEmailAction() {
+    /** @var \Drupal\Core\Action\ActionManager $plugin_manager */
+    $plugin_manager = $this->container->get('plugin.manager.action');
+    $configuration = [
+      'recipient' => 'test@example.com, test+2@example.com, test+3@example.com',
+      'subject' => 'Test subject',
+      'message' => 'Test message',
+    ];
+    $plugin_manager
+      ->createInstance('action_send_email_action', $configuration)
+      ->execute();
+
+    $mails = $this->getMails();
+    $this->assertCount(1, $this->getMails());
+    $this->assertEquals('test@example.com, test+2@example.com, test+3@example.com', $mails[0]['to']);
+    $this->assertEquals('Test subject', $mails[0]['subject']);
+    $this->assertEquals("Test message\n", $mails[0]['body']);
+
+    // Ensure that the email sending is logged.
+    $log = \Drupal::database()
+      ->select('watchdog', 'w')
+      ->fields('w', ['message', 'variables'])
+      ->orderBy('wid', 'DESC')
+      ->range(0, 1)
+      ->execute()
+      ->fetch();
+
+    $this->assertEquals('Sent email to %recipient', $log->message);
+    $variables = unserialize($log->variables);
+    $this->assertEquals('test@example.com, test+2@example.com, test+3@example.com', $variables['%recipient']);
+  }
+
 }
diff --git a/core/tests/Drupal/KernelTests/Core/Cache/DatabaseBackendTest.php b/core/tests/Drupal/KernelTests/Core/Cache/DatabaseBackendTest.php
index 1b62d89451..e476ce54f1 100644
--- a/core/tests/Drupal/KernelTests/Core/Cache/DatabaseBackendTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Cache/DatabaseBackendTest.php
@@ -28,7 +28,7 @@ class DatabaseBackendTest extends GenericCacheBackendUnitTestBase {
   /**
    * Creates a new instance of DatabaseBackend.
    *
-   * @return
+   * @return \Drupal\Core\Cache\DatabaseBackend
    *   A new DatabaseBackend object.
    */
   protected function createCacheBackend($bin) {
diff --git a/core/tests/Drupal/KernelTests/Core/Cache/GenericCacheBackendUnitTestBase.php b/core/tests/Drupal/KernelTests/Core/Cache/GenericCacheBackendUnitTestBase.php
index 0d3cabac04..0e67d2348f 100644
--- a/core/tests/Drupal/KernelTests/Core/Cache/GenericCacheBackendUnitTestBase.php
+++ b/core/tests/Drupal/KernelTests/Core/Cache/GenericCacheBackendUnitTestBase.php
@@ -101,6 +101,9 @@ protected function getCacheBackend($bin = NULL) {
     return $this->cachebackends[$bin];
   }
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     $this->cachebackends = [];
     $this->defaultValue = $this->randomMachineName(10);
@@ -110,6 +113,9 @@ protected function setUp(): void {
     $this->setUpCacheBackend();
   }
 
+  /**
+   * {@inheritdoc}
+   */
   protected function tearDown(): void {
     // Destruct the registered backend, each test will get a fresh instance,
     // properly emptying it here ensure that on persistent data backends they
diff --git a/core/tests/Drupal/KernelTests/Core/Cache/MemoryBackendTest.php b/core/tests/Drupal/KernelTests/Core/Cache/MemoryBackendTest.php
index 4518532cf6..ad6da49302 100644
--- a/core/tests/Drupal/KernelTests/Core/Cache/MemoryBackendTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Cache/MemoryBackendTest.php
@@ -14,7 +14,7 @@ class MemoryBackendTest extends GenericCacheBackendUnitTestBase {
   /**
    * Creates a new instance of MemoryBackend.
    *
-   * @return
+   * @return \Drupal\Core\Cache\CacheBackendInterface
    *   A new MemoryBackend object.
    */
   protected function createCacheBackend($bin) {
diff --git a/core/tests/Drupal/KernelTests/Core/Cache/PhpBackendTest.php b/core/tests/Drupal/KernelTests/Core/Cache/PhpBackendTest.php
index 486d2d43f7..b35a3b94f0 100644
--- a/core/tests/Drupal/KernelTests/Core/Cache/PhpBackendTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Cache/PhpBackendTest.php
@@ -14,8 +14,8 @@ class PhpBackendTest extends GenericCacheBackendUnitTestBase {
   /**
    * Creates a new instance of MemoryBackend.
    *
-   * @return
-   *   A new MemoryBackend object.
+   * @return \Drupal\Core\Cache\CacheBackendInterface
+   *   A new PhpBackend object.
    */
   protected function createCacheBackend($bin) {
     $backend = new PhpBackend($bin, \Drupal::service('cache_tags.invalidator.checksum'));
diff --git a/core/tests/Drupal/KernelTests/Core/Common/XssUnitTest.php b/core/tests/Drupal/KernelTests/Core/Common/XssUnitTest.php
index b8b0fdd424..c02ff3135c 100644
--- a/core/tests/Drupal/KernelTests/Core/Common/XssUnitTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Common/XssUnitTest.php
@@ -20,6 +20,9 @@ class XssUnitTest extends KernelTestBase {
    */
   protected static $modules = ['filter', 'system'];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->installConfig(['system']);
diff --git a/core/tests/Drupal/KernelTests/Core/Config/ConfigEntityNormalizeTest.php b/core/tests/Drupal/KernelTests/Core/Config/ConfigEntityNormalizeTest.php
index 277a8f908f..3d125cf4d4 100644
--- a/core/tests/Drupal/KernelTests/Core/Config/ConfigEntityNormalizeTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Config/ConfigEntityNormalizeTest.php
@@ -18,6 +18,9 @@ class ConfigEntityNormalizeTest extends KernelTestBase {
    */
   protected static $modules = ['config_test'];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->installConfig(static::$modules);
diff --git a/core/tests/Drupal/KernelTests/Core/Config/ConfigExportStorageTest.php b/core/tests/Drupal/KernelTests/Core/Config/ConfigExportStorageTest.php
index d5d1fc6dac..22f22c5b28 100644
--- a/core/tests/Drupal/KernelTests/Core/Config/ConfigExportStorageTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Config/ConfigExportStorageTest.php
@@ -18,6 +18,9 @@ class ConfigExportStorageTest extends KernelTestBase {
    */
   protected static $modules = ['system', 'config_test'];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->installConfig(['system', 'config_test']);
diff --git a/core/tests/Drupal/KernelTests/Core/Config/ConfigImportRecreateTest.php b/core/tests/Drupal/KernelTests/Core/Config/ConfigImportRecreateTest.php
index 2f8a5c4da1..6b16e077b5 100644
--- a/core/tests/Drupal/KernelTests/Core/Config/ConfigImportRecreateTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Config/ConfigImportRecreateTest.php
@@ -28,6 +28,9 @@ class ConfigImportRecreateTest extends KernelTestBase {
    */
   protected static $modules = ['system', 'field', 'text', 'user', 'node'];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/tests/Drupal/KernelTests/Core/Config/ConfigImporterMissingContentTest.php b/core/tests/Drupal/KernelTests/Core/Config/ConfigImporterMissingContentTest.php
index a3bbf767e7..b9b1fd3392 100644
--- a/core/tests/Drupal/KernelTests/Core/Config/ConfigImporterMissingContentTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Config/ConfigImporterMissingContentTest.php
@@ -34,6 +34,9 @@ class ConfigImporterMissingContentTest extends KernelTestBase {
     'config_import_test',
   ];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->installSchema('system', 'sequences');
diff --git a/core/tests/Drupal/KernelTests/Core/Config/ConfigImporterTest.php b/core/tests/Drupal/KernelTests/Core/Config/ConfigImporterTest.php
index ef91e35688..11956180e8 100644
--- a/core/tests/Drupal/KernelTests/Core/Config/ConfigImporterTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Config/ConfigImporterTest.php
@@ -27,6 +27,9 @@ class ConfigImporterTest extends KernelTestBase {
    */
   protected static $modules = ['config_test', 'system', 'config_import_test'];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/tests/Drupal/KernelTests/Core/Config/ConfigOverrideTest.php b/core/tests/Drupal/KernelTests/Core/Config/ConfigOverrideTest.php
index 528a068c98..ad2f013f7c 100644
--- a/core/tests/Drupal/KernelTests/Core/Config/ConfigOverrideTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Config/ConfigOverrideTest.php
@@ -18,6 +18,9 @@ class ConfigOverrideTest extends KernelTestBase {
    */
   protected static $modules = ['system', 'config_test'];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->installConfig(['system']);
diff --git a/core/tests/Drupal/KernelTests/Core/Config/ExportStorageManagerTest.php b/core/tests/Drupal/KernelTests/Core/Config/ExportStorageManagerTest.php
index a5e2b3ead4..cd8486a67c 100644
--- a/core/tests/Drupal/KernelTests/Core/Config/ExportStorageManagerTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Config/ExportStorageManagerTest.php
@@ -82,7 +82,7 @@ public function testGetStorageLock() {
     $lock->expects($this->exactly(2))
       ->method('acquire')
       ->with(ExportStorageManager::LOCK_NAME)
-      ->will($this->returnValue(FALSE));
+      ->willReturn(FALSE);
     $lock->expects($this->once())
       ->method('wait')
       ->with(ExportStorageManager::LOCK_NAME);
diff --git a/core/tests/Drupal/KernelTests/Core/Config/ImportStorageTransformerTest.php b/core/tests/Drupal/KernelTests/Core/Config/ImportStorageTransformerTest.php
index 9e637c9c7a..a843e9a385 100644
--- a/core/tests/Drupal/KernelTests/Core/Config/ImportStorageTransformerTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Config/ImportStorageTransformerTest.php
@@ -69,7 +69,7 @@ public function testTransformLocked() {
     $lock->expects($this->exactly(2))
       ->method('acquire')
       ->with(ImportStorageTransformer::LOCK_NAME)
-      ->will($this->returnValue(FALSE));
+      ->willReturn(FALSE);
     $lock->expects($this->once())
       ->method('wait')
       ->with(ImportStorageTransformer::LOCK_NAME);
@@ -100,7 +100,7 @@ public function testTransformWhileImporting() {
     $lock->expects($this->once())
       ->method('lockMayBeAvailable')
       ->with(ConfigImporter::LOCK_NAME)
-      ->will($this->returnValue(FALSE));
+      ->willReturn(FALSE);
 
     // The import transformer under test.
     $transformer = new ImportStorageTransformer(
diff --git a/core/tests/Drupal/KernelTests/Core/Config/Storage/CachedStorageTest.php b/core/tests/Drupal/KernelTests/Core/Config/Storage/CachedStorageTest.php
index ae15eeefd0..1374f5975c 100644
--- a/core/tests/Drupal/KernelTests/Core/Config/Storage/CachedStorageTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Config/Storage/CachedStorageTest.php
@@ -27,6 +27,9 @@ class CachedStorageTest extends ConfigStorageTestBase {
    */
   protected $fileStorage;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     // Create a directory.
diff --git a/core/tests/Drupal/KernelTests/Core/Database/ConnectionTest.php b/core/tests/Drupal/KernelTests/Core/Database/ConnectionTest.php
index 81dfe1dac2..1f441ec736 100644
--- a/core/tests/Drupal/KernelTests/Core/Database/ConnectionTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Database/ConnectionTest.php
@@ -3,7 +3,6 @@
 namespace Drupal\KernelTests\Core\Database;
 
 use Drupal\Core\Database\Database;
-use Drupal\Core\Database\DatabaseExceptionWrapper;
 use Drupal\Core\Database\Query\Condition;
 
 /**
@@ -146,21 +145,6 @@ public function testPrefixArrayOption() {
     $foo_connection = Database::getConnection('foo', 'default');
   }
 
-  /**
-   * Ensure that you cannot execute multiple statements on MySQL.
-   */
-  public function testMultipleStatementsForNewPhp() {
-    // This just tests mysql, as other PDO integrations don't allow disabling
-    // multiple statements.
-    if (Database::getConnection()->databaseType() !== 'mysql') {
-      $this->markTestSkipped("This test only runs for MySQL");
-    }
-
-    // Disable the protection at the PHP level.
-    $this->expectException(DatabaseExceptionWrapper::class);
-    Database::getConnection('default', 'default')->query('SELECT * FROM {test}; SELECT * FROM {test_people}', [], ['allow_delimiter_in_query' => TRUE]);
-  }
-
   /**
    * Ensure that you cannot execute multiple statements in a query.
    */
diff --git a/core/tests/Drupal/KernelTests/Core/Database/DatabaseExceptionWrapperTest.php b/core/tests/Drupal/KernelTests/Core/Database/DatabaseExceptionWrapperTest.php
index b557159627..13fd71f614 100644
--- a/core/tests/Drupal/KernelTests/Core/Database/DatabaseExceptionWrapperTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Database/DatabaseExceptionWrapperTest.php
@@ -13,48 +13,6 @@
  */
 class DatabaseExceptionWrapperTest extends KernelTestBase {
 
-  /**
-   * Tests Connection::prepareStatement exceptions on execution.
-   *
-   * Core database drivers use PDO emulated statements or the StatementPrefetch
-   * class, which defer the statement check to the moment of the execution.
-   */
-  public function testPrepareStatementFailOnExecution() {
-    $connection = Database::getConnection();
-    $connection_reflection_class = new \ReflectionClass($connection);
-    $client_connection_property = $connection_reflection_class->getProperty('connection');
-    $client_connection = $client_connection_property->getValue($connection);
-    if (!$client_connection instanceof \PDO) {
-      $this->markTestSkipped("This tests can only run for drivers wrapping \\PDO connections.");
-    }
-    $this->expectException(\PDOException::class);
-    $stmt = $connection->prepareStatement('bananas', []);
-    $stmt->execute();
-  }
-
-  /**
-   * Tests Connection::prepareStatement exceptions on preparation.
-   *
-   * Core database drivers use PDO emulated statements or the StatementPrefetch
-   * class, which defer the statement check to the moment of the execution. In
-   * order to test a failure at preparation time, we have to force the
-   * connection not to emulate statement preparation. Still, this is only valid
-   * for the MySql driver.
-   */
-  public function testPrepareStatementFailOnPreparation() {
-    $driver = Database::getConnection()->driver();
-    if ($driver !== 'mysql') {
-      $this->markTestSkipped("MySql tests can not run for driver '$driver'.");
-    }
-
-    $connection_info = Database::getConnectionInfo('default');
-    $connection_info['default']['pdo'][\PDO::ATTR_EMULATE_PREPARES] = FALSE;
-    Database::addConnectionInfo('default', 'foo', $connection_info['default']);
-    $foo_connection = Database::getConnection('foo', 'default');
-    $this->expectException(DatabaseExceptionWrapper::class);
-    $stmt = $foo_connection->prepareStatement('bananas', []);
-  }
-
   /**
    * Tests the expected database exception thrown for inexistent tables.
    */
diff --git a/core/tests/Drupal/KernelTests/Core/Database/DatabaseTestBase.php b/core/tests/Drupal/KernelTests/Core/Database/DatabaseTestBase.php
index 774575688a..d6b8284ad4 100644
--- a/core/tests/Drupal/KernelTests/Core/Database/DatabaseTestBase.php
+++ b/core/tests/Drupal/KernelTests/Core/Database/DatabaseTestBase.php
@@ -13,6 +13,9 @@
  */
 abstract class DatabaseTestBase extends KernelTestBase {
 
+  use DatabaseTestSchemaDataTrait;
+  use DatabaseTestSchemaInstallTrait;
+
   protected static $modules = ['database_test'];
 
   /**
@@ -22,24 +25,14 @@ abstract class DatabaseTestBase extends KernelTestBase {
    */
   protected $connection;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->connection = Database::getConnection();
-    $this->installSchema('database_test', [
-      'test',
-      'test_classtype',
-      'test_people',
-      'test_people_copy',
-      'test_one_blob',
-      'test_two_blobs',
-      'test_task',
-      'test_null',
-      'test_serialized',
-      'TEST_UPPERCASE',
-      'select',
-      'virtual',
-    ]);
-    self::addSampleData();
+    $this->installSampleSchema();
+    $this->addSampleData();
   }
 
   /**
@@ -49,126 +42,16 @@ public function ensureSampleDataNull() {
     $this->connection->insert('test_null')
       ->fields(['name', 'age'])
       ->values([
-      'name' => 'Kermit',
-      'age' => 25,
-    ])
-      ->values([
-      'name' => 'Fozzie',
-      'age' => NULL,
-    ])
-      ->values([
-      'name' => 'Gonzo',
-      'age' => 27,
-    ])
-      ->execute();
-  }
-
-  /**
-   * Sets up our sample data.
-   */
-  public static function addSampleData() {
-    $connection = Database::getConnection();
-
-    // We need the IDs, so we can't use a multi-insert here.
-    $john = $connection->insert('test')
-      ->fields([
-        'name' => 'John',
+        'name' => 'Kermit',
         'age' => 25,
-        'job' => 'Singer',
-      ])
-      ->execute();
-
-    $george = $connection->insert('test')
-      ->fields([
-        'name' => 'George',
-        'age' => 27,
-        'job' => 'Singer',
-      ])
-      ->execute();
-
-    $connection->insert('test')
-      ->fields([
-        'name' => 'Ringo',
-        'age' => 28,
-        'job' => 'Drummer',
-      ])
-      ->execute();
-
-    $paul = $connection->insert('test')
-      ->fields([
-        'name' => 'Paul',
-        'age' => 26,
-        'job' => 'Songwriter',
-      ])
-      ->execute();
-
-    $connection->insert('test_classtype')
-      ->fields([
-        'classname' => 'Drupal\Tests\system\Functional\Database\FakeRecord',
-        'name' => 'Kay',
-        'age' => 26,
-        'job' => 'Web Developer',
-      ])
-      ->execute();
-
-    $connection->insert('test_people')
-      ->fields([
-        'name' => 'Meredith',
-        'age' => 30,
-        'job' => 'Speaker',
-      ])
-      ->execute();
-
-    $connection->insert('test_task')
-      ->fields(['pid', 'task', 'priority'])
-      ->values([
-        'pid' => $john,
-        'task' => 'eat',
-        'priority' => 3,
-      ])
-      ->values([
-        'pid' => $john,
-        'task' => 'sleep',
-        'priority' => 4,
-      ])
-      ->values([
-        'pid' => $john,
-        'task' => 'code',
-        'priority' => 1,
       ])
       ->values([
-        'pid' => $george,
-        'task' => 'sing',
-        'priority' => 2,
+        'name' => 'Fozzie',
+        'age' => NULL,
       ])
       ->values([
-        'pid' => $george,
-        'task' => 'sleep',
-        'priority' => 2,
-      ])
-      ->values([
-        'pid' => $paul,
-        'task' => 'found new band',
-        'priority' => 1,
-      ])
-      ->values([
-        'pid' => $paul,
-        'task' => 'perform at superbowl',
-        'priority' => 3,
-      ])
-      ->execute();
-
-    $connection->insert('select')
-      ->fields([
-        'id' => 1,
-        'update' => 'Update value 1',
-      ])
-      ->execute();
-
-    $connection->insert('virtual')
-      ->fields([
-        'id' => 1,
-        'function' => 'Function value 1',
+        'name' => 'Gonzo',
+        'age' => 27,
       ])
       ->execute();
   }
diff --git a/core/tests/Drupal/KernelTests/Core/Database/DatabaseTestSchemaDataTrait.php b/core/tests/Drupal/KernelTests/Core/Database/DatabaseTestSchemaDataTrait.php
new file mode 100644
index 0000000000..0c416055fb
--- /dev/null
+++ b/core/tests/Drupal/KernelTests/Core/Database/DatabaseTestSchemaDataTrait.php
@@ -0,0 +1,121 @@
+<?php
+
+namespace Drupal\KernelTests\Core\Database;
+
+use Drupal\Tests\system\Functional\Database\FakeRecord;
+
+/**
+ * Trait to manage data samples for test tables.
+ */
+trait DatabaseTestSchemaDataTrait {
+
+  /**
+   * Sets up our sample data.
+   */
+  protected function addSampleData(): void {
+
+    // We need the IDs, so we can't use a multi-insert here.
+    $john = $this->connection->insert('test')
+      ->fields([
+        'name' => 'John',
+        'age' => 25,
+        'job' => 'Singer',
+      ])
+      ->execute();
+
+    $george = $this->connection->insert('test')
+      ->fields([
+        'name' => 'George',
+        'age' => 27,
+        'job' => 'Singer',
+      ])
+      ->execute();
+
+    $this->connection->insert('test')
+      ->fields([
+        'name' => 'Ringo',
+        'age' => 28,
+        'job' => 'Drummer',
+      ])
+      ->execute();
+
+    $paul = $this->connection->insert('test')
+      ->fields([
+        'name' => 'Paul',
+        'age' => 26,
+        'job' => 'Songwriter',
+      ])
+      ->execute();
+
+    $this->connection->insert('test_classtype')
+      ->fields([
+        'classname' => FakeRecord::class,
+        'name' => 'Kay',
+        'age' => 26,
+        'job' => 'Web Developer',
+      ])
+      ->execute();
+
+    $this->connection->insert('test_people')
+      ->fields([
+        'name' => 'Meredith',
+        'age' => 30,
+        'job' => 'Speaker',
+      ])
+      ->execute();
+
+    $this->connection->insert('test_task')
+      ->fields(['pid', 'task', 'priority'])
+      ->values([
+        'pid' => $john,
+        'task' => 'eat',
+        'priority' => 3,
+      ])
+      ->values([
+        'pid' => $john,
+        'task' => 'sleep',
+        'priority' => 4,
+      ])
+      ->values([
+        'pid' => $john,
+        'task' => 'code',
+        'priority' => 1,
+      ])
+      ->values([
+        'pid' => $george,
+        'task' => 'sing',
+        'priority' => 2,
+      ])
+      ->values([
+        'pid' => $george,
+        'task' => 'sleep',
+        'priority' => 2,
+      ])
+      ->values([
+        'pid' => $paul,
+        'task' => 'found new band',
+        'priority' => 1,
+      ])
+      ->values([
+        'pid' => $paul,
+        'task' => 'perform at superbowl',
+        'priority' => 3,
+      ])
+      ->execute();
+
+    $this->connection->insert('select')
+      ->fields([
+        'id' => 1,
+        'update' => 'Update value 1',
+      ])
+      ->execute();
+
+    $this->connection->insert('virtual')
+      ->fields([
+        'id' => 1,
+        'function' => 'Function value 1',
+      ])
+      ->execute();
+  }
+
+}
diff --git a/core/tests/Drupal/KernelTests/Core/Database/DatabaseTestSchemaInstallTrait.php b/core/tests/Drupal/KernelTests/Core/Database/DatabaseTestSchemaInstallTrait.php
new file mode 100644
index 0000000000..2310abc041
--- /dev/null
+++ b/core/tests/Drupal/KernelTests/Core/Database/DatabaseTestSchemaInstallTrait.php
@@ -0,0 +1,32 @@
+<?php
+
+namespace Drupal\KernelTests\Core\Database;
+
+/**
+ * Trait to manage installation for test tables.
+ */
+trait DatabaseTestSchemaInstallTrait {
+
+  /**
+   * Sets up our sample table schema.
+   */
+  protected function installSampleSchema(): void {
+    $this->installSchema(
+      'database_test', [
+        'test',
+        'test_classtype',
+        'test_people',
+        'test_people_copy',
+        'test_one_blob',
+        'test_two_blobs',
+        'test_task',
+        'test_null',
+        'test_serialized',
+        'TEST_UPPERCASE',
+        'select',
+        'virtual',
+      ]
+    );
+  }
+
+}
diff --git a/core/tests/Drupal/KernelTests/Core/Database/ConnectionUnitTest.php b/core/tests/Drupal/KernelTests/Core/Database/DriverSpecificConnectionUnitTestBase.php
similarity index 57%
rename from core/tests/Drupal/KernelTests/Core/Database/ConnectionUnitTest.php
rename to core/tests/Drupal/KernelTests/Core/Database/DriverSpecificConnectionUnitTestBase.php
index 9b88592c73..cc50302612 100644
--- a/core/tests/Drupal/KernelTests/Core/Database/ConnectionUnitTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Database/DriverSpecificConnectionUnitTestBase.php
@@ -2,16 +2,13 @@
 
 namespace Drupal\KernelTests\Core\Database;
 
-use Drupal\Component\Render\FormattableMarkup;
+use Drupal\Core\Database\Connection;
 use Drupal\Core\Database\Database;
-use Drupal\KernelTests\KernelTestBase;
 
 /**
  * Tests management of database connections.
- *
- * @group Database
  */
-class ConnectionUnitTest extends KernelTestBase {
+abstract class DriverSpecificConnectionUnitTestBase extends DriverSpecificKernelTestBase {
 
   /**
    * A target connection identifier to be used for testing.
@@ -19,18 +16,14 @@ class ConnectionUnitTest extends KernelTestBase {
   const TEST_TARGET_CONNECTION = 'DatabaseConnectionUnitTest';
 
   /**
-   * The default database connection used for testing.
-   *
-   * @var \Drupal\Core\Database\Connection
+   * A database connection used for monitoring processes.
    */
-  protected $connection;
+  protected Connection $monitor;
 
   /**
-   * A database connection used for monitoring processes.
-   *
-   * @var \Drupal\Core\Database\Connection
+   * The connection ID of the current test connection.
    */
-  protected $monitor;
+  protected int $id;
 
   /**
    * {@inheritdoc}
@@ -38,55 +31,41 @@ class ConnectionUnitTest extends KernelTestBase {
   protected function setUp(): void {
     parent::setUp();
 
-    $this->connection = Database::getConnection();
-
     // Create an additional connection to monitor the connections being opened
     // and closed in this test.
     $connection_info = Database::getConnectionInfo();
     Database::addConnectionInfo('default', 'monitor', $connection_info['default']);
     $this->monitor = Database::getConnection('monitor');
-  }
 
-  /**
-   * Returns a set of queries specific for the database in testing.
-   */
-  protected function getQuery() {
-    if ($this->connection->databaseType() == 'pgsql') {
-      return [
-        'connection_id' => 'SELECT pg_backend_pid()',
-        'processlist' => 'SELECT pid FROM pg_stat_activity',
-        'show_tables' => 'SELECT * FROM pg_catalog.pg_tables',
-      ];
-    }
-    else {
-      return [
-        'connection_id' => 'SELECT CONNECTION_ID()',
-        'processlist' => 'SHOW PROCESSLIST',
-        'show_tables' => 'SHOW TABLES',
-      ];
-    }
-  }
-
-  /**
-   * Adds a new database connection info to Database.
-   */
-  protected function addConnection() {
     // Add a new target to the connection, by cloning the current connection.
     $connection_info = Database::getConnectionInfo();
     Database::addConnectionInfo('default', static::TEST_TARGET_CONNECTION, $connection_info['default']);
 
     // Verify that the new target exists.
     $info = Database::getConnectionInfo();
+
     // New connection info found.
     $this->assertSame($connection_info['default'], $info[static::TEST_TARGET_CONNECTION]);
+
+    // Add and open a new connection.
+    Database::getConnection(static::TEST_TARGET_CONNECTION);
+
+    // Verify that there is a new connection.
+    $this->id = $this->getConnectionId();
+    $this->assertConnection($this->id);
   }
 
+  /**
+   * Returns a set of queries specific for the database in testing.
+   */
+  abstract protected function getQuery(): array;
+
   /**
    * Returns the connection ID of the current test connection.
    *
    * @return int
    */
-  protected function getConnectionId() {
+  protected function getConnectionId(): int {
     return (int) Database::getConnection(static::TEST_TARGET_CONNECTION)->query($this->getQuery()['connection_id'])->fetchField();
   }
 
@@ -99,8 +78,7 @@ protected function getConnectionId() {
    * @internal
    */
   protected function assertConnection(int $id): void {
-    $list = $this->monitor->query($this->getQuery()['processlist'])->fetchAllKeyed(0, 0);
-    $this->assertTrue(isset($list[$id]), new FormattableMarkup('Connection ID @id found.', ['@id' => $id]));
+    $this->assertArrayHasKey($id, $this->monitor->query($this->getQuery()['processlist'])->fetchAllKeyed(0, 0));
   }
 
   /**
@@ -112,8 +90,7 @@ protected function assertConnection(int $id): void {
    * @internal
    */
   protected function assertNoConnection(int $id): void {
-    $list = $this->monitor->query($this->getQuery()['processlist'])->fetchAllKeyed(0, 0);
-    $this->assertFalse(isset($list[$id]), new FormattableMarkup('Connection ID @id not found.', ['@id' => $id]));
+    $this->assertArrayNotHasKey($id, $this->monitor->query($this->getQuery()['processlist'])->fetchAllKeyed(0, 0));
   }
 
   /**
@@ -121,48 +98,20 @@ protected function assertNoConnection(int $id): void {
    *
    * @todo getConnectionId() executes a query.
    */
-  public function testOpenClose() {
-    // Do not run this test for an SQLite database.
-    $database_type = $this->connection->databaseType();
-    if ($database_type != 'mysql' && $database_type != 'pgsql') {
-      $this->markTestSkipped("This tests only runs on MySQL and PostgreSQL");
-    }
-
-    // Add and open a new connection.
-    $this->addConnection();
-    $id = $this->getConnectionId();
-    Database::getConnection(static::TEST_TARGET_CONNECTION);
-
-    // Verify that there is a new connection.
-    $this->assertConnection($id);
-
+  public function testOpenClose(): void {
     // Close the connection.
     Database::closeConnection(static::TEST_TARGET_CONNECTION);
     // Wait 20ms to give the database engine sufficient time to react.
     usleep(20000);
 
     // Verify that we are back to the original connection count.
-    $this->assertNoConnection($id);
+    $this->assertNoConnection($this->id);
   }
 
   /**
    * Tests Database::closeConnection() with a query.
    */
-  public function testOpenQueryClose() {
-    // Do not run this test for an SQLite database.
-    $database_type = $this->connection->databaseType();
-    if ($database_type != 'mysql' && $database_type != 'pgsql') {
-      $this->markTestSkipped("This tests only runs on MySQL and PostgreSQL");
-    }
-
-    // Add and open a new connection.
-    $this->addConnection();
-    $id = $this->getConnectionId();
-    Database::getConnection(static::TEST_TARGET_CONNECTION);
-
-    // Verify that there is a new connection.
-    $this->assertConnection($id);
-
+  public function testOpenQueryClose(): void {
     // Execute a query.
     Database::getConnection(static::TEST_TARGET_CONNECTION)->query($this->getQuery()['show_tables']);
 
@@ -172,27 +121,13 @@ public function testOpenQueryClose() {
     usleep(20000);
 
     // Verify that we are back to the original connection count.
-    $this->assertNoConnection($id);
+    $this->assertNoConnection($this->id);
   }
 
   /**
    * Tests Database::closeConnection() with a query and custom prefetch method.
    */
-  public function testOpenQueryPrefetchClose() {
-    // Do not run this test for an SQLite database.
-    $database_type = $this->connection->databaseType();
-    if ($database_type != 'mysql' && $database_type != 'pgsql') {
-      $this->markTestSkipped("This tests only runs on MySQL and PostgreSQL");
-    }
-
-    // Add and open a new connection.
-    $this->addConnection();
-    $id = $this->getConnectionId();
-    Database::getConnection(static::TEST_TARGET_CONNECTION);
-
-    // Verify that there is a new connection.
-    $this->assertConnection($id);
-
+  public function testOpenQueryPrefetchClose(): void {
     // Execute a query.
     Database::getConnection(static::TEST_TARGET_CONNECTION)->query($this->getQuery()['show_tables'])->fetchCol();
 
@@ -202,27 +137,13 @@ public function testOpenQueryPrefetchClose() {
     usleep(20000);
 
     // Verify that we are back to the original connection count.
-    $this->assertNoConnection($id);
+    $this->assertNoConnection($this->id);
   }
 
   /**
    * Tests Database::closeConnection() with a select query.
    */
-  public function testOpenSelectQueryClose() {
-    // Do not run this test for an SQLite database.
-    $database_type = $this->connection->databaseType();
-    if ($database_type != 'mysql' && $database_type != 'pgsql') {
-      $this->markTestSkipped("This tests only runs on MySQL and PostgreSQL");
-    }
-
-    // Add and open a new connection.
-    $this->addConnection();
-    $id = $this->getConnectionId();
-    Database::getConnection(static::TEST_TARGET_CONNECTION);
-
-    // Verify that there is a new connection.
-    $this->assertConnection($id);
-
+  public function testOpenSelectQueryClose(): void {
     // Create a table.
     $name = 'foo';
     Database::getConnection(static::TEST_TARGET_CONNECTION)->schema()->createTable($name, [
@@ -249,7 +170,7 @@ public function testOpenSelectQueryClose() {
     usleep(20000);
 
     // Verify that we are back to the original connection count.
-    $this->assertNoConnection($id);
+    $this->assertNoConnection($this->id);
   }
 
   /**
@@ -259,12 +180,6 @@ public function testConnectionOpen() {
     $reflection = new \ReflectionObject($this->connection);
     $connection_property = $reflection->getProperty('connection');
     $connection_property->setAccessible(TRUE);
-    // Skip this test when a database driver does not implement PDO.
-    // An alternative database driver that does not implement PDO
-    // should implement its own connection test.
-    if (get_class($connection_property->getValue($this->connection)) !== 'PDO') {
-      $this->markTestSkipped('Ignored PDO connection unit test for this driver because it does not implement PDO.');
-    }
     $error_mode = $connection_property->getValue($this->connection)
       ->getAttribute(\PDO::ATTR_ERRMODE);
     // Ensure the default error mode is set to exception.
diff --git a/core/tests/Drupal/KernelTests/Core/Database/DriverSpecificDatabaseTestBase.php b/core/tests/Drupal/KernelTests/Core/Database/DriverSpecificDatabaseTestBase.php
new file mode 100644
index 0000000000..3f4c47db4a
--- /dev/null
+++ b/core/tests/Drupal/KernelTests/Core/Database/DriverSpecificDatabaseTestBase.php
@@ -0,0 +1,28 @@
+<?php
+
+namespace Drupal\KernelTests\Core\Database;
+
+/**
+ * Base class for driver specific database tests.
+ */
+abstract class DriverSpecificDatabaseTestBase extends DriverSpecificKernelTestBase {
+
+  use DatabaseTestSchemaDataTrait;
+  use DatabaseTestSchemaInstallTrait;
+
+  /**
+   * @inheritdoc
+   */
+  protected static $modules = ['database_test'];
+
+  /**
+   * @inheritdoc
+   */
+  protected function setUp(): void {
+    parent::setUp();
+
+    $this->installSampleSchema();
+    $this->addSampleData();
+  }
+
+}
diff --git a/core/tests/Drupal/KernelTests/Core/Database/DriverSpecificKernelTestBase.php b/core/tests/Drupal/KernelTests/Core/Database/DriverSpecificKernelTestBase.php
new file mode 100644
index 0000000000..a84046e7d9
--- /dev/null
+++ b/core/tests/Drupal/KernelTests/Core/Database/DriverSpecificKernelTestBase.php
@@ -0,0 +1,48 @@
+<?php
+
+namespace Drupal\KernelTests\Core\Database;
+
+use Drupal\Core\Database\Connection;
+use Drupal\Core\Database\Database;
+use Drupal\KernelTests\KernelTestBase;
+
+// cSpell:ignore mymodule mydriver
+
+/**
+ * Base class for driver specific kernel tests.
+ *
+ * Driver specific tests should be created in the
+ * \Drupal\Tests\mymodule\Kernel\mydriver namespace, and their execution will
+ * only occur when the database driver of the SUT is provided by 'mymodule' and
+ * named 'mydriver'.
+ */
+abstract class DriverSpecificKernelTestBase extends KernelTestBase {
+
+  /**
+   * The database connection for testing.
+   */
+  protected Connection $connection;
+
+  /**
+   * @inheritdoc
+   */
+  protected function setUp(): void {
+    parent::setUp();
+    $this->connection = Database::getConnection();
+
+    $running_provider = $this->connection->getProvider();
+    $running_driver = $this->connection->driver();
+    $test_class_parts = explode('\\', get_class($this));
+    $expected_provider = $test_class_parts[2] ?? '';
+    for ($i = 3; $i < count($test_class_parts); $i++) {
+      if ($test_class_parts[$i] === 'Kernel') {
+        $expected_driver = $test_class_parts[$i + 1] ?? '';
+        break;
+      }
+    }
+    if ($running_provider !== $expected_provider || $running_driver !== $expected_driver) {
+      $this->markTestSkipped("This test only runs for the database driver '$expected_driver' provided by the '$expected_provider' module. Connected database driver is '$running_driver' provided by '$running_provider'.");
+    }
+  }
+
+}
diff --git a/core/tests/Drupal/KernelTests/Core/Database/SchemaTest.php b/core/tests/Drupal/KernelTests/Core/Database/DriverSpecificSchemaTestBase.php
similarity index 77%
rename from core/tests/Drupal/KernelTests/Core/Database/SchemaTest.php
rename to core/tests/Drupal/KernelTests/Core/Database/DriverSpecificSchemaTestBase.php
index a1ccad0efe..d950fc24c4 100644
--- a/core/tests/Drupal/KernelTests/Core/Database/SchemaTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Database/DriverSpecificSchemaTestBase.php
@@ -3,60 +3,141 @@
 namespace Drupal\KernelTests\Core\Database;
 
 use Drupal\Component\Render\FormattableMarkup;
+use Drupal\Core\Database\Connection;
 use Drupal\Core\Database\Database;
+use Drupal\Core\Database\Schema;
 use Drupal\Core\Database\IntegrityConstraintViolationException;
 use Drupal\Core\Database\SchemaException;
-use Drupal\Core\Database\SchemaObjectDoesNotExistException;
-use Drupal\Core\Database\SchemaObjectExistsException;
-use Drupal\KernelTests\KernelTestBase;
-use Drupal\Component\Utility\Unicode;
 use Drupal\Tests\Core\Database\SchemaIntrospectionTestTrait;
 
 /**
  * Tests table creation and modification via the schema API.
- *
- * @coversDefaultClass \Drupal\Core\Database\Schema
- *
- * @group Database
  */
-class SchemaTest extends KernelTestBase {
+abstract class DriverSpecificSchemaTestBase extends DriverSpecificKernelTestBase {
 
   use SchemaIntrospectionTestTrait;
 
   /**
-   * A global counter for table and field creation.
-   *
-   * @var int
+   * Database schema instance.
    */
-  protected $counter;
+  protected Schema $schema;
 
   /**
-   * Connection to the database.
-   *
-   * @var \Drupal\Core\Database\Connection
+   * A global counter for table and field creation.
    */
-  protected $connection;
+  protected int $counter = 0;
 
   /**
-   * Database schema instance.
-   *
-   * @var \Drupal\Core\Database\Schema
+   * Connection to the database.
    */
-  protected $schema;
+  protected Connection $connection;
 
   /**
    * {@inheritdoc}
    */
   protected function setUp(): void {
     parent::setUp();
-    $this->connection = Database::getConnection();
     $this->schema = $this->connection->schema();
   }
 
+  /**
+   * Checks that a table or column comment matches a given description.
+   *
+   * @param string $description
+   *   The asserted description.
+   * @param string $table
+   *   The table to test.
+   * @param string|null $column
+   *   Optional column to test.
+   */
+  abstract public function checkSchemaComment(string $description, string $table, string $column = NULL): void;
+
+  /**
+   * Tests inserting data into an existing table.
+   *
+   * @param string $table
+   *   The database table to insert data into.
+   *
+   * @return bool
+   *   TRUE if the insert succeeded, FALSE otherwise.
+   */
+  public function tryInsert(string $table = 'test_table'): bool {
+    try {
+      $this->connection
+        ->insert($table)
+        ->fields(['id' => mt_rand(10, 20)])
+        ->execute();
+      return TRUE;
+    }
+    catch (\Exception $e) {
+      return FALSE;
+    }
+  }
+
+  /**
+   * Tries to insert a negative value into columns defined as unsigned.
+   *
+   * @param string $table_name
+   *   The table to insert.
+   * @param string $column_name
+   *   The column to insert.
+   *
+   * @return bool
+   *   TRUE if the insert succeeded, FALSE otherwise.
+   */
+  public function tryUnsignedInsert(string $table_name, string $column_name): bool {
+    try {
+      $this->connection
+        ->insert($table_name)
+        ->fields([$column_name => -1])
+        ->execute();
+      return TRUE;
+    }
+    catch (\Exception $e) {
+      return FALSE;
+    }
+  }
+
+  /**
+   * Tries to insert a value that throws an IntegrityConstraintViolationException.
+   *
+   * @param string $tableName
+   *   The table to insert.
+   */
+  protected function tryInsertExpectsIntegrityConstraintViolationException(string $tableName): void {
+    try {
+      $this->connection
+        ->insert($tableName)
+        ->fields(['test_field_string' => 'test'])
+        ->execute();
+      $this->fail('Expected IntegrityConstraintViolationException not thrown');
+    }
+    catch (IntegrityConstraintViolationException $e) {
+      // Do nothing, it's the expected behavior.
+    }
+  }
+
+  /**
+   * Asserts that fields have the correct collation, if supported.
+   */
+  protected function assertCollation(): void {
+    // Driver specific tests should implement this when appropriate.
+  }
+
+  /**
+   * Check that the ID sequence gets renamed when the table is renamed.
+   *
+   * @param string $tableName
+   *   The table to rename.
+   */
+  protected function checkSequenceRenaming(string $tableName): void {
+    // Driver specific tests should implement this when appropriate.
+  }
+
   /**
    * Tests database interactions.
    */
-  public function testSchema() {
+  public function testSchema(): void {
     // Try creating a table.
     $table_specification = [
       'description' => 'Schema table description may contain "quotes" and could be long—very long indeed.',
@@ -95,20 +176,8 @@ public function testSchema() {
     // Assert that the column comment has been set.
     $this->checkSchemaComment($table_specification['fields']['test_field']['description'], 'test_table', 'test_field');
 
-    if ($this->connection->databaseType() === 'mysql') {
-      // Make sure that varchar fields have the correct collation.
-      $columns = $this->connection->query('SHOW FULL COLUMNS FROM {test_table}');
-      foreach ($columns as $column) {
-        if ($column->Field == 'test_field_string') {
-          $string_check = ($column->Collation == 'utf8mb4_general_ci' || $column->Collation == 'utf8mb4_0900_ai_ci');
-        }
-        if ($column->Field == 'test_field_string_ascii') {
-          $string_ascii_check = ($column->Collation == 'ascii_general_ci');
-        }
-      }
-      $this->assertNotEmpty($string_check, 'string field has the right collation.');
-      $this->assertNotEmpty($string_ascii_check, 'ASCII string field has the right collation.');
-    }
+    // Make sure that fields have the correct collation, if supported.
+    $this->assertCollation();
 
     // An insert without a value for the column 'test_table' should fail.
     $this->assertFalse($this->tryInsert(), 'Insert without a default failed.');
@@ -237,23 +306,8 @@ public function testSchema() {
     $this->assertIndexOnColumns($new_table_name, ['id'], 'primary');
     $this->assertIndexOnColumns($new_table_name, ['test_field'], 'unique');
 
-    // For PostgreSQL, we also need to check that the sequence has been renamed.
-    // The initial name of the sequence has been generated automatically by
-    // PostgreSQL when the table was created, however, on subsequent table
-    // renames the name is generated by Drupal and can not be easily
-    // re-constructed. Hence we can only check that we still have a sequence on
-    // the new table name.
-    if ($this->connection->databaseType() == 'pgsql') {
-      $sequence_exists = (bool) $this->connection->query("SELECT pg_get_serial_sequence('{" . $new_table_name . "}', 'id')")->fetchField();
-      $this->assertTrue($sequence_exists, 'Sequence was renamed.');
-
-      // Rename the table again and repeat the check.
-      $another_table_name = strtolower($this->getRandomGenerator()->name(63 - strlen($this->getDatabasePrefix())));
-      $this->schema->renameTable($new_table_name, $another_table_name);
-
-      $sequence_exists = (bool) $this->connection->query("SELECT pg_get_serial_sequence('{" . $another_table_name . "}', 'id')")->fetchField();
-      $this->assertTrue($sequence_exists, 'Sequence was renamed.');
-    }
+    // Check that the ID sequence gets renamed when the table is renamed.
+    $this->checkSequenceRenaming($new_table_name);
 
     // Use database specific data type and ensure that table is created.
     $table_specification = [
@@ -276,264 +330,10 @@ public function testSchema() {
     $this->assertTrue($this->schema->tableExists('test_timestamp'), 'Table with database specific datatype was created.');
   }
 
-  /**
-   * @covers \Drupal\mysql\Driver\Database\mysql\Schema::introspectIndexSchema
-   * @covers \Drupal\pgsql\Driver\Database\pgsql\Schema::introspectIndexSchema
-   * @covers \Drupal\sqlite\Driver\Database\sqlite\Schema::introspectIndexSchema
-   */
-  public function testIntrospectIndexSchema() {
-    $table_specification = [
-      'fields' => [
-        'id'  => [
-          'type' => 'int',
-          'not null' => TRUE,
-          'default' => 0,
-        ],
-        'test_field_1'  => [
-          'type' => 'int',
-          'not null' => TRUE,
-          'default' => 0,
-        ],
-        'test_field_2'  => [
-          'type' => 'int',
-          'default' => 0,
-        ],
-        'test_field_3'  => [
-          'type' => 'int',
-          'default' => 0,
-        ],
-        'test_field_4'  => [
-          'type' => 'int',
-          'default' => 0,
-        ],
-        'test_field_5'  => [
-          'type' => 'int',
-          'default' => 0,
-        ],
-      ],
-      'primary key' => ['id', 'test_field_1'],
-      'unique keys' => [
-        'test_field_2' => ['test_field_2'],
-        'test_field_3_test_field_4' => ['test_field_3', 'test_field_4'],
-      ],
-      'indexes' => [
-        'test_field_4' => ['test_field_4'],
-        'test_field_4_test_field_5' => ['test_field_4', 'test_field_5'],
-      ],
-    ];
-
-    $table_name = strtolower($this->getRandomGenerator()->name());
-    $this->schema->createTable($table_name, $table_specification);
-
-    unset($table_specification['fields']);
-
-    $introspect_index_schema = new \ReflectionMethod(get_class($this->schema), 'introspectIndexSchema');
-    $introspect_index_schema->setAccessible(TRUE);
-    $index_schema = $introspect_index_schema->invoke($this->schema, $table_name);
-
-    // The PostgreSQL driver is using a custom naming scheme for its indexes, so
-    // we need to adjust the initial table specification.
-    if ($this->connection->databaseType() === 'pgsql') {
-      $ensure_identifier_length = new \ReflectionMethod(get_class($this->schema), 'ensureIdentifiersLength');
-      $ensure_identifier_length->setAccessible(TRUE);
-
-      foreach ($table_specification['unique keys'] as $original_index_name => $columns) {
-        unset($table_specification['unique keys'][$original_index_name]);
-        $new_index_name = $ensure_identifier_length->invoke($this->schema, $table_name, $original_index_name, 'key');
-        $table_specification['unique keys'][$new_index_name] = $columns;
-      }
-
-      foreach ($table_specification['indexes'] as $original_index_name => $columns) {
-        unset($table_specification['indexes'][$original_index_name]);
-        $new_index_name = $ensure_identifier_length->invoke($this->schema, $table_name, $original_index_name, 'idx');
-        $table_specification['indexes'][$new_index_name] = $columns;
-      }
-    }
-
-    $this->assertEquals($table_specification, $index_schema);
-  }
-
-  /**
-   * Tests that indexes on string fields are limited to 191 characters on MySQL.
-   *
-   * @see \Drupal\mysql\Driver\Database\mysql\Schema::getNormalizedIndexes()
-   */
-  public function testIndexLength() {
-    if ($this->connection->databaseType() !== 'mysql') {
-      $this->markTestSkipped("The '{$this->connection->databaseType()}' database type does not support setting column length for indexes.");
-    }
-
-    $table_specification = [
-      'fields' => [
-        'id'  => [
-          'type' => 'int',
-          'default' => NULL,
-        ],
-        'test_field_text'  => [
-          'type' => 'text',
-          'not null' => TRUE,
-        ],
-        'test_field_string_long'  => [
-          'type' => 'varchar',
-          'length' => 255,
-          'not null' => TRUE,
-        ],
-        'test_field_string_ascii_long'  => [
-          'type' => 'varchar_ascii',
-          'length' => 255,
-        ],
-        'test_field_string_short'  => [
-          'type' => 'varchar',
-          'length' => 128,
-          'not null' => TRUE,
-        ],
-      ],
-      'indexes' => [
-        'test_regular' => [
-          'test_field_text',
-          'test_field_string_long',
-          'test_field_string_ascii_long',
-          'test_field_string_short',
-        ],
-        'test_length' => [
-          ['test_field_text', 128],
-          ['test_field_string_long', 128],
-          ['test_field_string_ascii_long', 128],
-          ['test_field_string_short', 128],
-        ],
-        'test_mixed' => [
-          ['test_field_text', 200],
-          'test_field_string_long',
-          ['test_field_string_ascii_long', 200],
-          'test_field_string_short',
-        ],
-      ],
-    ];
-    $this->schema->createTable('test_table_index_length', $table_specification);
-
-    // Ensure expected exception thrown when adding index with missing info.
-    $expected_exception_message = "MySQL needs the 'test_field_text' field specification in order to normalize the 'test_regular' index";
-    $missing_field_spec = $table_specification;
-    unset($missing_field_spec['fields']['test_field_text']);
-    try {
-      $this->schema->addIndex('test_table_index_length', 'test_separate', [['test_field_text', 200]], $missing_field_spec);
-      $this->fail('SchemaException not thrown when adding index with missing information.');
-    }
-    catch (SchemaException $e) {
-      $this->assertEquals($expected_exception_message, $e->getMessage());
-    }
-
-    // Add a separate index.
-    $this->schema->addIndex('test_table_index_length', 'test_separate', [['test_field_text', 200]], $table_specification);
-    $table_specification_with_new_index = $table_specification;
-    $table_specification_with_new_index['indexes']['test_separate'] = [['test_field_text', 200]];
-
-    // Ensure that the exceptions of addIndex are thrown as expected.
-    try {
-      $this->schema->addIndex('test_table_index_length', 'test_separate', [['test_field_text', 200]], $table_specification);
-      $this->fail('\Drupal\Core\Database\SchemaObjectExistsException exception missed.');
-    }
-    catch (SchemaObjectExistsException $e) {
-      // Expected exception; just continue testing.
-    }
-
-    try {
-      $this->schema->addIndex('test_table_non_existing', 'test_separate', [['test_field_text', 200]], $table_specification);
-      $this->fail('\Drupal\Core\Database\SchemaObjectDoesNotExistException exception missed.');
-    }
-    catch (SchemaObjectDoesNotExistException $e) {
-      // Expected exception; just continue testing.
-    }
-
-    // Get index information.
-    $results = $this->connection->query('SHOW INDEX FROM {test_table_index_length}');
-    $expected_lengths = [
-      'test_regular' => [
-        'test_field_text' => 191,
-        'test_field_string_long' => 191,
-        'test_field_string_ascii_long' => NULL,
-        'test_field_string_short' => NULL,
-      ],
-      'test_length' => [
-        'test_field_text' => 128,
-        'test_field_string_long' => 128,
-        'test_field_string_ascii_long' => 128,
-        'test_field_string_short' => NULL,
-      ],
-      'test_mixed' => [
-        'test_field_text' => 191,
-        'test_field_string_long' => 191,
-        'test_field_string_ascii_long' => 200,
-        'test_field_string_short' => NULL,
-      ],
-      'test_separate' => [
-        'test_field_text' => 191,
-      ],
-    ];
-
-    // Count the number of columns defined in the indexes.
-    $column_count = 0;
-    foreach ($table_specification_with_new_index['indexes'] as $index) {
-      foreach ($index as $field) {
-        $column_count++;
-      }
-    }
-    $test_count = 0;
-    foreach ($results as $result) {
-      $this->assertEquals($expected_lengths[$result->Key_name][$result->Column_name], $result->Sub_part, 'Index length matches expected value.');
-      $test_count++;
-    }
-    $this->assertEquals($column_count, $test_count, 'Number of tests matches expected value.');
-  }
-
-  /**
-   * Tests inserting data into an existing table.
-   *
-   * @param string $table
-   *   The database table to insert data into.
-   *
-   * @return bool
-   *   TRUE if the insert succeeded, FALSE otherwise.
-   */
-  public function tryInsert($table = 'test_table') {
-    try {
-      $this->connection
-        ->insert($table)
-        ->fields(['id' => mt_rand(10, 20)])
-        ->execute();
-      return TRUE;
-    }
-    catch (\Exception $e) {
-      return FALSE;
-    }
-  }
-
-  /**
-   * Checks that a table or column comment matches a given description.
-   *
-   * @param $description
-   *   The asserted description.
-   * @param $table
-   *   The table to test.
-   * @param $column
-   *   Optional column to test.
-   */
-  public function checkSchemaComment($description, $table, $column = NULL) {
-    if (method_exists($this->schema, 'getComment')) {
-      $comment = $this->schema->getComment($table, $column);
-      // The schema comment truncation for mysql is different.
-      if ($this->connection->databaseType() === 'mysql') {
-        $max_length = $column ? 255 : 60;
-        $description = Unicode::truncate($description, $max_length, TRUE, TRUE);
-      }
-      $this->assertEquals($description, $comment, 'The comment matches the schema description.');
-    }
-  }
-
   /**
    * Tests creating unsigned columns and data integrity thereof.
    */
-  public function testUnsignedColumns() {
+  public function testUnsignedColumns(): void {
     // First create the table with just a serial column.
     $table_name = 'unsigned_table';
     $table_spec = [
@@ -561,34 +361,10 @@ public function testUnsignedColumns() {
     }
   }
 
-  /**
-   * Tries to insert a negative value into columns defined as unsigned.
-   *
-   * @param string $table_name
-   *   The table to insert.
-   * @param string $column_name
-   *   The column to insert.
-   *
-   * @return bool
-   *   TRUE if the insert succeeded, FALSE otherwise.
-   */
-  public function tryUnsignedInsert($table_name, $column_name) {
-    try {
-      $this->connection
-        ->insert($table_name)
-        ->fields([$column_name => -1])
-        ->execute();
-      return TRUE;
-    }
-    catch (\Exception $e) {
-      return FALSE;
-    }
-  }
-
   /**
    * Tests adding columns to an existing table with default and initial value.
    */
-  public function testSchemaAddFieldDefaultInitial() {
+  public function testSchemaAddFieldDefaultInitial(): void {
     // Test varchar types.
     foreach ([1, 32, 128, 256, 512] as $length) {
       $base_field_spec = [
@@ -814,7 +590,7 @@ protected function assertFieldCharacteristics(string $table_name, string $field_
    * @covers ::dropField
    * @covers ::findPrimaryKeyColumns
    */
-  public function testSchemaChangePrimaryKey(array $initial_primary_key, array $renamed_primary_key) {
+  public function testSchemaChangePrimaryKey(array $initial_primary_key, array $renamed_primary_key): void {
     $find_primary_key_columns = new \ReflectionMethod(get_class($this->schema), 'findPrimaryKeyColumns');
     $find_primary_key_columns->setAccessible(TRUE);
 
@@ -911,7 +687,7 @@ public function providerTestSchemaCreateTablePrimaryKey() {
   /**
    * Tests an invalid field specification as a primary key on table creation.
    */
-  public function testInvalidPrimaryKeyOnTableCreation() {
+  public function testInvalidPrimaryKeyOnTableCreation(): void {
     // Test making an invalid field the primary key of the table upon creation.
     $table_name = 'test_table';
     $table_spec = [
@@ -928,7 +704,7 @@ public function testInvalidPrimaryKeyOnTableCreation() {
   /**
    * Tests converting an int to a serial when the int column has data.
    */
-  public function testChangePrimaryKeyToSerial() {
+  public function testChangePrimaryKeyToSerial(): void {
     // Test making an invalid field the primary key of the table upon creation.
     $table_name = 'test_table';
     $table_spec = [
@@ -940,17 +716,7 @@ public function testChangePrimaryKeyToSerial() {
     ];
     $this->schema->createTable($table_name, $table_spec);
 
-    if ($this->connection->databaseType() !== 'sqlite') {
-      try {
-        $this->connection
-          ->insert($table_name)
-          ->fields(['test_field_string' => 'test'])
-          ->execute();
-        $this->fail('Expected IntegrityConstraintViolationException not thrown');
-      }
-      catch (IntegrityConstraintViolationException $e) {
-      }
-    }
+    $this->tryInsertExpectsIntegrityConstraintViolationException($table_name);
 
     // @todo https://www.drupal.org/project/drupal/issues/3222127 Change the
     //   first item to 0 to test changing a field with 0 to a serial.
@@ -992,7 +758,7 @@ public function testChangePrimaryKeyToSerial() {
   /**
    * Tests adding an invalid field specification as a primary key.
    */
-  public function testInvalidPrimaryKeyAddition() {
+  public function testInvalidPrimaryKeyAddition(): void {
     // Test adding a new invalid field to the primary key.
     $table_name = 'test_table';
     $table_spec = [
@@ -1011,7 +777,7 @@ public function testInvalidPrimaryKeyAddition() {
   /**
    * Tests changing the primary key with an invalid field specification.
    */
-  public function testInvalidPrimaryKeyChange() {
+  public function testInvalidPrimaryKeyChange(): void {
     // Test adding a new invalid field to the primary key.
     $table_name = 'test_table';
     $table_spec = [
@@ -1031,7 +797,7 @@ public function testInvalidPrimaryKeyChange() {
   /**
    * Tests changing columns between types with default and initial values.
    */
-  public function testSchemaChangeFieldDefaultInitial() {
+  public function testSchemaChangeFieldDefaultInitial(): void {
     $field_specs = [
       ['type' => 'int', 'size' => 'normal', 'not null' => FALSE],
       ['type' => 'int', 'size' => 'normal', 'not null' => TRUE, 'initial' => 1, 'default' => 17],
@@ -1132,7 +898,7 @@ protected function assertFieldChange(array $old_spec, array $new_spec, $test_dat
   /**
    * @covers ::findPrimaryKeyColumns
    */
-  public function testFindPrimaryKeyColumns() {
+  public function testFindPrimaryKeyColumns(): void {
     $method = new \ReflectionMethod(get_class($this->schema), 'findPrimaryKeyColumns');
     $method->setAccessible(TRUE);
 
@@ -1267,7 +1033,7 @@ public function testFindPrimaryKeyColumns() {
   /**
    * Tests the findTables() method.
    */
-  public function testFindTables() {
+  public function testFindTables(): void {
     // We will be testing with three tables.
     $test_schema = Database::getConnection()->schema();
 
@@ -1367,7 +1133,7 @@ public function testFindTables() {
   /**
    * Tests handling of uppercase table names.
    */
-  public function testUpperCaseTableName() {
+  public function testUpperCaseTableName(): void {
     $table_name = 'A_UPPER_CASE_TABLE_NAME';
 
     // Create the tables.
@@ -1390,7 +1156,7 @@ public function testUpperCaseTableName() {
   /**
    * Tests default values after altering table.
    */
-  public function testDefaultAfterAlter() {
+  public function testDefaultAfterAlter(): void {
     $table_name = 'test_table';
 
     // Create the table.
@@ -1458,19 +1224,4 @@ public function testDefaultAfterAlter() {
     $this->assertSame('default value', $result->column7);
   }
 
-  /**
-   * @covers \Drupal\Core\Database\Driver\pgsql\Schema::extensionExists
-   */
-  public function testPgsqlExtensionExists() {
-    if ($this->connection->databaseType() !== 'pgsql') {
-      $this->markTestSkipped("This test only runs for PostgreSQL.");
-    }
-
-    // Test the method for a non existing extension.
-    $this->assertFalse($this->schema->extensionExists('non_existing_extension'));
-
-    // Test the method for an existing extension.
-    $this->assertTrue($this->schema->extensionExists('pg_trgm'));
-  }
-
 }
diff --git a/core/tests/Drupal/KernelTests/Core/Database/LoggingTest.php b/core/tests/Drupal/KernelTests/Core/Database/LoggingTest.php
index 1badabf540..7858169af1 100644
--- a/core/tests/Drupal/KernelTests/Core/Database/LoggingTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Database/LoggingTest.php
@@ -163,7 +163,7 @@ public function testContribDriverLog($driver_namespace, $stack, array $expected_
       ->getMock();
     $log->expects($this->once())
       ->method('getDebugBacktrace')
-      ->will($this->returnValue($stack));
+      ->willReturn($stack);
     Database::addConnectionInfo('test', 'default', ['driver' => 'mysql', 'namespace' => $driver_namespace]);
 
     $result = $log->findCaller($stack);
diff --git a/core/tests/Drupal/KernelTests/Core/Database/NextIdTest.php b/core/tests/Drupal/KernelTests/Core/Database/NextIdTest.php
index 3dfe5866ba..4da2cb3bfb 100644
--- a/core/tests/Drupal/KernelTests/Core/Database/NextIdTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Database/NextIdTest.php
@@ -2,8 +2,6 @@
 
 namespace Drupal\KernelTests\Core\Database;
 
-use Drupal\Core\Database\Database;
-
 /**
  * Tests the sequences API.
  *
@@ -40,37 +38,4 @@ public function testDbNextId() {
     $this->assertEquals(1001, $result, 'Sequence provides a larger number than the existing ID.');
   }
 
-  /**
-   * Tests that sequences table clear up works when a connection is closed.
-   *
-   * @see \Drupal\mysql\Driver\Database\mysql\Connection::__destruct()
-   */
-  public function testDbNextIdClosedConnection() {
-    // Only run this test for the 'mysql' driver.
-    $driver = $this->connection->driver();
-    if ($driver !== 'mysql') {
-      $this->markTestSkipped("MySql tests can not run for driver '$driver'.");
-    }
-    // Create an additional connection to test closing the connection.
-    $connection_info = Database::getConnectionInfo();
-    Database::addConnectionInfo('default', 'next_id', $connection_info['default']);
-
-    // Get a few IDs to ensure there the clean up needs to run and there is more
-    // than one row.
-    Database::getConnection('next_id')->nextId();
-    Database::getConnection('next_id')->nextId();
-
-    // At this point the sequences table should contain unnecessary rows.
-    $count = $this->connection->select('sequences')->countQuery()->execute()->fetchField();
-    $this->assertGreaterThan(1, $count);
-
-    // Close the connection.
-    Database::closeConnection('next_id');
-
-    // Test that \Drupal\mysql\Driver\Database\mysql\Connection::__destruct()
-    // successfully trims the sequences table if the connection is closed.
-    $count = $this->connection->select('sequences')->countQuery()->execute()->fetchField();
-    $this->assertEquals(1, $count);
-  }
-
 }
diff --git a/core/tests/Drupal/KernelTests/Core/Database/TemporaryQueryTestBase.php b/core/tests/Drupal/KernelTests/Core/Database/TemporaryQueryTestBase.php
new file mode 100644
index 0000000000..0ec77b70ac
--- /dev/null
+++ b/core/tests/Drupal/KernelTests/Core/Database/TemporaryQueryTestBase.php
@@ -0,0 +1,51 @@
+<?php
+
+namespace Drupal\KernelTests\Core\Database;
+
+use Drupal\Core\Database\Database;
+
+/**
+ * Tests the temporary query functionality.
+ *
+ * @group Database
+ */
+abstract class TemporaryQueryTestBase extends DriverSpecificDatabaseTestBase {
+
+  /**
+   * Returns the connection.
+   */
+  public function getConnection() {
+    return Database::getConnection();
+  }
+
+  /**
+   * Returns the number of rows of a table.
+   */
+  public function countTableRows($table_name) {
+    return Database::getConnection()->select($table_name)->countQuery()->execute()->fetchField();
+  }
+
+  /**
+   * Confirms that temporary tables work.
+   */
+  public function testTemporaryQuery() {
+    $connection = $this->getConnection();
+
+    // Now try to run two temporary queries in the same request.
+    $table_name_test = $connection->queryTemporary('SELECT [name] FROM {test}', []);
+    $table_name_task = $connection->queryTemporary('SELECT [pid] FROM {test_task}', []);
+
+    $this->assertEquals($this->countTableRows('test'), $this->countTableRows($table_name_test), 'A temporary table was created successfully in this request.');
+    $this->assertEquals($this->countTableRows('test_task'), $this->countTableRows($table_name_task), 'A second temporary table was created successfully in this request.');
+
+    // Check that leading whitespace and comments do not cause problems
+    // in the modified query.
+    $sql = "
+      -- Let's select some rows into a temporary table
+      SELECT [name] FROM {test}
+    ";
+    $table_name_test = $connection->queryTemporary($sql, []);
+    $this->assertEquals($this->countTableRows('test'), $this->countTableRows($table_name_test), 'Leading white space and comments do not interfere with temporary table creation.');
+  }
+
+}
diff --git a/core/tests/Drupal/KernelTests/Core/Entity/BundleConstraintValidatorTest.php b/core/tests/Drupal/KernelTests/Core/Entity/BundleConstraintValidatorTest.php
index bee4cd224e..03f764aa9b 100644
--- a/core/tests/Drupal/KernelTests/Core/Entity/BundleConstraintValidatorTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Entity/BundleConstraintValidatorTest.php
@@ -21,6 +21,9 @@ class BundleConstraintValidatorTest extends KernelTestBase {
 
   protected static $modules = ['node', 'field', 'text', 'user'];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->installEntitySchema('user');
diff --git a/core/tests/Drupal/KernelTests/Core/Entity/ConfigEntityQueryTest.php b/core/tests/Drupal/KernelTests/Core/Entity/ConfigEntityQueryTest.php
index c40a4bebde..f8f329613e 100644
--- a/core/tests/Drupal/KernelTests/Core/Entity/ConfigEntityQueryTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Entity/ConfigEntityQueryTest.php
@@ -49,6 +49,9 @@ class ConfigEntityQueryTest extends KernelTestBase {
    */
   protected $entities;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/tests/Drupal/KernelTests/Core/Entity/Element/EntityAutocompleteElementFormTest.php b/core/tests/Drupal/KernelTests/Core/Entity/Element/EntityAutocompleteElementFormTest.php
index abe9dd70e2..70ff047b62 100644
--- a/core/tests/Drupal/KernelTests/Core/Entity/Element/EntityAutocompleteElementFormTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Entity/Element/EntityAutocompleteElementFormTest.php
@@ -207,14 +207,8 @@ public function testValidEntityAutocompleteElement() {
         'single_autocreate' => 'single - autocreated entity label',
         'single_autocreate_specific_uid' => 'single - autocreated entity label with specific uid',
         'tags' => $this->getAutocompleteInput($this->referencedEntities[0]) . ', ' . $this->getAutocompleteInput($this->referencedEntities[1]),
-        'tags_autocreate' =>
-          $this->getAutocompleteInput($this->referencedEntities[0])
-          . ', tags - autocreated entity label, '
-          . $this->getAutocompleteInput($this->referencedEntities[1]),
-        'tags_autocreate_specific_uid' =>
-          $this->getAutocompleteInput($this->referencedEntities[0])
-          . ', tags - autocreated entity label with specific uid, '
-          . $this->getAutocompleteInput($this->referencedEntities[1]),
+        'tags_autocreate' => $this->getAutocompleteInput($this->referencedEntities[0]) . ', tags - autocreated entity label, ' . $this->getAutocompleteInput($this->referencedEntities[1]),
+        'tags_autocreate_specific_uid' => $this->getAutocompleteInput($this->referencedEntities[0]) . ', tags - autocreated entity label with specific uid, ' . $this->getAutocompleteInput($this->referencedEntities[1]),
         'single_string_id' => $this->getAutocompleteInput($this->referencedEntities[2]),
         'tags_string_id' => $this->getAutocompleteInput($this->referencedEntities[2]) . ', ' . $this->getAutocompleteInput($this->referencedEntities[3]),
       ]);
diff --git a/core/tests/Drupal/KernelTests/Core/Entity/EntityAccessControlHandlerTest.php b/core/tests/Drupal/KernelTests/Core/Entity/EntityAccessControlHandlerTest.php
index a66fca14a8..3f303dc90f 100644
--- a/core/tests/Drupal/KernelTests/Core/Entity/EntityAccessControlHandlerTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Entity/EntityAccessControlHandlerTest.php
@@ -156,16 +156,16 @@ public function testDefaultEntityAccess() {
     // Set up a non-admin user that is allowed to view test entities.
     \Drupal::currentUser()->setAccount($this->createUser(['uid' => 2], ['view test entity']));
     $entity = EntityTest::create([
-        'name' => 'forbid_access',
-      ]);
+      'name' => 'forbid_access',
+    ]);
 
     // The user is denied access to the entity.
     $this->assertEntityAccess([
-        'create' => FALSE,
-        'update' => FALSE,
-        'delete' => FALSE,
-        'view' => FALSE,
-      ], $entity);
+      'create' => FALSE,
+      'update' => FALSE,
+      'delete' => FALSE,
+      'view' => FALSE,
+    ], $entity);
   }
 
   /**
diff --git a/core/tests/Drupal/KernelTests/Core/Entity/EntityCrudHookTest.php b/core/tests/Drupal/KernelTests/Core/Entity/EntityCrudHookTest.php
index a77b0eb5fd..3cd3855313 100644
--- a/core/tests/Drupal/KernelTests/Core/Entity/EntityCrudHookTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Entity/EntityCrudHookTest.php
@@ -52,6 +52,9 @@ class EntityCrudHookTest extends EntityKernelTestBase {
 
   protected $ids = [];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/tests/Drupal/KernelTests/Core/Entity/EntityFieldDefaultValueTest.php b/core/tests/Drupal/KernelTests/Core/Entity/EntityFieldDefaultValueTest.php
index 93d07c4d23..dace56e499 100644
--- a/core/tests/Drupal/KernelTests/Core/Entity/EntityFieldDefaultValueTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Entity/EntityFieldDefaultValueTest.php
@@ -19,6 +19,9 @@ class EntityFieldDefaultValueTest extends EntityKernelTestBase {
    */
   protected $uuid;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     // Initiate the generator object.
diff --git a/core/tests/Drupal/KernelTests/Core/Entity/EntityFieldTest.php b/core/tests/Drupal/KernelTests/Core/Entity/EntityFieldTest.php
index 7c701f1b26..d861b3d1bb 100644
--- a/core/tests/Drupal/KernelTests/Core/Entity/EntityFieldTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Entity/EntityFieldTest.php
@@ -53,6 +53,9 @@ class EntityFieldTest extends EntityKernelTestBase {
    */
   protected $entityFieldText;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/tests/Drupal/KernelTests/Core/Entity/EntityKernelTestBase.php b/core/tests/Drupal/KernelTests/Core/Entity/EntityKernelTestBase.php
index 1834972c73..1b83fee07d 100644
--- a/core/tests/Drupal/KernelTests/Core/Entity/EntityKernelTestBase.php
+++ b/core/tests/Drupal/KernelTests/Core/Entity/EntityKernelTestBase.php
@@ -55,6 +55,9 @@ abstract class EntityKernelTestBase extends KernelTestBase {
    */
   protected $state;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/tests/Drupal/KernelTests/Core/Entity/EntityLanguageTestBase.php b/core/tests/Drupal/KernelTests/Core/Entity/EntityLanguageTestBase.php
index 1182e47f60..6066118ff7 100644
--- a/core/tests/Drupal/KernelTests/Core/Entity/EntityLanguageTestBase.php
+++ b/core/tests/Drupal/KernelTests/Core/Entity/EntityLanguageTestBase.php
@@ -41,6 +41,9 @@ abstract class EntityLanguageTestBase extends EntityKernelTestBase {
 
   protected static $modules = ['language', 'entity_test'];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/tests/Drupal/KernelTests/Core/Entity/EntityNonRevisionableTranslatableFieldTest.php b/core/tests/Drupal/KernelTests/Core/Entity/EntityNonRevisionableTranslatableFieldTest.php
index 55359e088b..6d1d101da0 100644
--- a/core/tests/Drupal/KernelTests/Core/Entity/EntityNonRevisionableTranslatableFieldTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Entity/EntityNonRevisionableTranslatableFieldTest.php
@@ -21,6 +21,9 @@ class EntityNonRevisionableTranslatableFieldTest extends EntityKernelTestBase {
     'content_translation',
   ];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/tests/Drupal/KernelTests/Core/Entity/EntityQueryAggregateTest.php b/core/tests/Drupal/KernelTests/Core/Entity/EntityQueryAggregateTest.php
index 275d9274a6..42ea455a45 100644
--- a/core/tests/Drupal/KernelTests/Core/Entity/EntityQueryAggregateTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Entity/EntityQueryAggregateTest.php
@@ -34,6 +34,9 @@ class EntityQueryAggregateTest extends EntityKernelTestBase {
    */
   protected $queryResult;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/tests/Drupal/KernelTests/Core/Entity/EntityQueryRelationshipTest.php b/core/tests/Drupal/KernelTests/Core/Entity/EntityQueryRelationshipTest.php
index b0983c7577..036c453186 100644
--- a/core/tests/Drupal/KernelTests/Core/Entity/EntityQueryRelationshipTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Entity/EntityQueryRelationshipTest.php
@@ -59,6 +59,9 @@ class EntityQueryRelationshipTest extends EntityKernelTestBase {
    */
   protected $queryResults;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
@@ -77,7 +80,7 @@ protected function setUp(): void {
     $handler_settings = [
       'target_bundles' => [
         $vocabulary->id() => $vocabulary->id(),
-       ],
+      ],
       'auto_create' => TRUE,
     ];
     $this->createEntityReferenceField('entity_test', 'test_bundle', $this->fieldName, NULL, 'taxonomy_term', 'default', $handler_settings);
diff --git a/core/tests/Drupal/KernelTests/Core/Entity/EntityQueryTest.php b/core/tests/Drupal/KernelTests/Core/Entity/EntityQueryTest.php
index 40dd4b65d8..8b8682dfef 100644
--- a/core/tests/Drupal/KernelTests/Core/Entity/EntityQueryTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Entity/EntityQueryTest.php
@@ -63,6 +63,9 @@ class EntityQueryTest extends EntityKernelTestBase {
    */
   protected $storage;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
@@ -99,24 +102,34 @@ protected function setUp(): void {
       $bundles[] = $bundle;
     }
     // Each unit is a list of field name, langcode and a column-value array.
-    $units[] = [$figures, 'en', [
+    $units[] = [$figures, 'en',
+      [
         'color' => 'red',
         'shape' => 'triangle',
       ],
     ];
-    $units[] = [$figures, 'en', [
+    $units[] = [
+      $figures,
+      'en',
+      [
         'color' => 'blue',
         'shape' => 'circle',
       ],
     ];
     // To make it easier to test sorting, the greetings get formats according
     // to their langcode.
-    $units[] = [$greetings, 'tr', [
+    $units[] = [
+      $greetings,
+      'tr',
+      [
         'value' => 'merhaba',
         'format' => 'format-tr',
       ],
     ];
-    $units[] = [$greetings, 'pl', [
+    $units[] = [
+      $greetings,
+      'pl',
+      [
         'value' => 'siema',
         'format' => 'format-pl',
       ],
diff --git a/core/tests/Drupal/KernelTests/Core/Entity/EntityReferenceSelection/EntityReferenceSelectionSortTest.php b/core/tests/Drupal/KernelTests/Core/Entity/EntityReferenceSelection/EntityReferenceSelectionSortTest.php
index 52d88d3af8..62a81d3b8b 100644
--- a/core/tests/Drupal/KernelTests/Core/Entity/EntityReferenceSelection/EntityReferenceSelectionSortTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Entity/EntityReferenceSelection/EntityReferenceSelectionSortTest.php
@@ -23,6 +23,9 @@ class EntityReferenceSelectionSortTest extends EntityKernelTestBase {
    */
   protected static $modules = ['node'];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/tests/Drupal/KernelTests/Core/Entity/EntityTranslationTest.php b/core/tests/Drupal/KernelTests/Core/Entity/EntityTranslationTest.php
index 080840f566..117f1dc26e 100644
--- a/core/tests/Drupal/KernelTests/Core/Entity/EntityTranslationTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Entity/EntityTranslationTest.php
@@ -245,11 +245,10 @@ protected function doTestMultilingualProperties($entity_type) {
     $storage = $this->container->get('entity_type.manager')
       ->getStorage($entity_type);
     $storage->create([
-        'user_id' => $properties[$langcode]['user_id'],
-        'name' => 'some name',
-        $langcode_key => LanguageInterface::LANGCODE_NOT_SPECIFIED,
-      ])
-      ->save();
+      'user_id' => $properties[$langcode]['user_id'],
+      'name' => 'some name',
+      $langcode_key => LanguageInterface::LANGCODE_NOT_SPECIFIED,
+    ])->save();
 
     $entities = $storage->loadMultiple();
     $this->assertCount(3, $entities, new FormattableMarkup('%entity_type: Three entities were created.', ['%entity_type' => $entity_type]));
diff --git a/core/tests/Drupal/KernelTests/Core/Entity/EntityTypeConstraintValidatorTest.php b/core/tests/Drupal/KernelTests/Core/Entity/EntityTypeConstraintValidatorTest.php
index 122231b2b2..8e2a87d9f0 100644
--- a/core/tests/Drupal/KernelTests/Core/Entity/EntityTypeConstraintValidatorTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Entity/EntityTypeConstraintValidatorTest.php
@@ -20,6 +20,9 @@ class EntityTypeConstraintValidatorTest extends EntityKernelTestBase {
 
   protected static $modules = ['node', 'field', 'user'];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->typedData = $this->container->get('typed_data_manager');
diff --git a/core/tests/Drupal/KernelTests/Core/Entity/EntityTypedDataDefinitionTest.php b/core/tests/Drupal/KernelTests/Core/Entity/EntityTypedDataDefinitionTest.php
index 99d61a608a..d4f0fe6854 100644
--- a/core/tests/Drupal/KernelTests/Core/Entity/EntityTypedDataDefinitionTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Entity/EntityTypedDataDefinitionTest.php
@@ -37,6 +37,9 @@ class EntityTypedDataDefinitionTest extends KernelTestBase {
    */
   protected static $modules = ['system', 'filter', 'text', 'node', 'user'];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/tests/Drupal/KernelTests/Core/Entity/EntityUUIDTest.php b/core/tests/Drupal/KernelTests/Core/Entity/EntityUUIDTest.php
index 86f116702b..4de7e82a5d 100644
--- a/core/tests/Drupal/KernelTests/Core/Entity/EntityUUIDTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Entity/EntityUUIDTest.php
@@ -9,6 +9,9 @@
  */
 class EntityUUIDTest extends EntityKernelTestBase {
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/tests/Drupal/KernelTests/Core/Entity/FieldSqlStorageTest.php b/core/tests/Drupal/KernelTests/Core/Entity/FieldSqlStorageTest.php
index 47039429f1..99057a2fdc 100644
--- a/core/tests/Drupal/KernelTests/Core/Entity/FieldSqlStorageTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Entity/FieldSqlStorageTest.php
@@ -71,6 +71,9 @@ class FieldSqlStorageTest extends EntityKernelTestBase {
    */
   protected $tableMapping;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/tests/Drupal/KernelTests/Core/Field/FieldAccessTest.php b/core/tests/Drupal/KernelTests/Core/Field/FieldAccessTest.php
index 02b155534e..c3d2e21f90 100644
--- a/core/tests/Drupal/KernelTests/Core/Field/FieldAccessTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Field/FieldAccessTest.php
@@ -38,6 +38,9 @@ class FieldAccessTest extends KernelTestBase {
    */
   protected $activeUid;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     // Install field configuration.
diff --git a/core/tests/Drupal/KernelTests/Core/Field/FieldType/PasswordItemTest.php b/core/tests/Drupal/KernelTests/Core/Field/FieldType/PasswordItemTest.php
index 9b496beed6..7cb0a47708 100644
--- a/core/tests/Drupal/KernelTests/Core/Field/FieldType/PasswordItemTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Field/FieldType/PasswordItemTest.php
@@ -155,7 +155,7 @@ public function testPreSaveExistingMultipleSpacesString() {
     $entity->test_field = '     ';
     $entity->save();
 
-    // @todo Fix this bug in https://www.drupal.org/project/i/3238399.
+    // @todo Fix this bug in https://www.drupal.org/project/drupal/issues/3238399.
     $this->assertSame('     ', $entity->test_field->value);
   }
 
diff --git a/core/tests/Drupal/KernelTests/Core/File/FileTestBase.php b/core/tests/Drupal/KernelTests/Core/File/FileTestBase.php
index 9e8998461f..fe523eecf0 100644
--- a/core/tests/Drupal/KernelTests/Core/File/FileTestBase.php
+++ b/core/tests/Drupal/KernelTests/Core/File/FileTestBase.php
@@ -151,11 +151,11 @@ public function assertDirectoryPermissions($directory, $expected_mode, $message
   /**
    * Create a directory and assert it exists.
    *
-   * @param $path
+   * @param string $path
    *   Optional string with a directory path. If none is provided, a random
    *   name in the site's files directory will be used.
    *
-   * @return
+   * @return string
    *   The path to the directory.
    */
   public function createDirectory($path = NULL) {
@@ -181,7 +181,7 @@ public function createDirectory($path = NULL) {
    *   Optional string indicating the stream scheme to use. Drupal core includes
    *   public, private, and temporary. The public wrapper is the default.
    *
-   * @return
+   * @return string
    *   File URI.
    */
   public function createUri($filepath = NULL, $contents = NULL, $scheme = NULL) {
diff --git a/core/tests/Drupal/KernelTests/Core/File/MimeTypeTest.php b/core/tests/Drupal/KernelTests/Core/File/MimeTypeTest.php
index 50ae3914aa..f59293260a 100644
--- a/core/tests/Drupal/KernelTests/Core/File/MimeTypeTest.php
+++ b/core/tests/Drupal/KernelTests/Core/File/MimeTypeTest.php
@@ -60,8 +60,8 @@ public function testFileMimeTypeDetection() {
         1 => 'image/jpeg',
       ],
       'extensions' => [
-         'jar' => 0,
-         'jpg' => 1,
+        'jar' => 0,
+        'jpg' => 1,
       ],
     ];
 
diff --git a/core/tests/Drupal/KernelTests/Core/File/RemoteFileDeleteRecursiveTest.php b/core/tests/Drupal/KernelTests/Core/File/RemoteFileDeleteRecursiveTest.php
index 9749e73d45..af86fcbaa5 100644
--- a/core/tests/Drupal/KernelTests/Core/File/RemoteFileDeleteRecursiveTest.php
+++ b/core/tests/Drupal/KernelTests/Core/File/RemoteFileDeleteRecursiveTest.php
@@ -30,6 +30,9 @@ class RemoteFileDeleteRecursiveTest extends FileDeleteRecursiveTest {
    */
   protected $classname = 'Drupal\file_test\StreamWrapper\DummyRemoteStreamWrapper';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->config('system.file')->set('default_scheme', 'dummy-remote')->save();
diff --git a/core/tests/Drupal/KernelTests/Core/File/RemoteFileDeleteTest.php b/core/tests/Drupal/KernelTests/Core/File/RemoteFileDeleteTest.php
index 9cda8b0756..25c762a265 100644
--- a/core/tests/Drupal/KernelTests/Core/File/RemoteFileDeleteTest.php
+++ b/core/tests/Drupal/KernelTests/Core/File/RemoteFileDeleteTest.php
@@ -30,6 +30,9 @@ class RemoteFileDeleteTest extends FileDeleteTest {
    */
   protected $classname = 'Drupal\file_test\StreamWrapper\DummyRemoteStreamWrapper';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->config('system.file')->set('default_scheme', 'dummy-remote')->save();
diff --git a/core/tests/Drupal/KernelTests/Core/File/RemoteFileDirectoryTest.php b/core/tests/Drupal/KernelTests/Core/File/RemoteFileDirectoryTest.php
index 83b1210eb0..60b62f6b95 100644
--- a/core/tests/Drupal/KernelTests/Core/File/RemoteFileDirectoryTest.php
+++ b/core/tests/Drupal/KernelTests/Core/File/RemoteFileDirectoryTest.php
@@ -30,6 +30,9 @@ class RemoteFileDirectoryTest extends DirectoryTest {
    */
   protected $classname = 'Drupal\file_test\StreamWrapper\DummyRemoteStreamWrapper';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->config('system.file')->set('default_scheme', 'dummy-remote')->save();
diff --git a/core/tests/Drupal/KernelTests/Core/File/RemoteFileMoveTest.php b/core/tests/Drupal/KernelTests/Core/File/RemoteFileMoveTest.php
index 4a366c63d0..6e20642bda 100644
--- a/core/tests/Drupal/KernelTests/Core/File/RemoteFileMoveTest.php
+++ b/core/tests/Drupal/KernelTests/Core/File/RemoteFileMoveTest.php
@@ -30,6 +30,9 @@ class RemoteFileMoveTest extends FileMoveTest {
    */
   protected $classname = 'Drupal\file_test\StreamWrapper\DummyRemoteStreamWrapper';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->config('system.file')->set('default_scheme', 'dummy-remote')->save();
diff --git a/core/tests/Drupal/KernelTests/Core/File/RemoteFileSaveDataTest.php b/core/tests/Drupal/KernelTests/Core/File/RemoteFileSaveDataTest.php
index 3b9ea35a1e..a54b460197 100644
--- a/core/tests/Drupal/KernelTests/Core/File/RemoteFileSaveDataTest.php
+++ b/core/tests/Drupal/KernelTests/Core/File/RemoteFileSaveDataTest.php
@@ -30,6 +30,9 @@ class RemoteFileSaveDataTest extends FileSaveDataTest {
    */
   protected $classname = 'Drupal\file_test\StreamWrapper\DummyRemoteStreamWrapper';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->config('system.file')->set('default_scheme', 'dummy-remote')->save();
diff --git a/core/tests/Drupal/KernelTests/Core/File/RemoteFileScanDirectoryTest.php b/core/tests/Drupal/KernelTests/Core/File/RemoteFileScanDirectoryTest.php
index b8d6fc25b5..8ec2ded87a 100644
--- a/core/tests/Drupal/KernelTests/Core/File/RemoteFileScanDirectoryTest.php
+++ b/core/tests/Drupal/KernelTests/Core/File/RemoteFileScanDirectoryTest.php
@@ -31,6 +31,9 @@ class RemoteFileScanDirectoryTest extends ScanDirectoryTest {
    */
   protected $classname = 'Drupal\file_test\StreamWrapper\DummyRemoteStreamWrapper';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->config('system.file')->set('default_scheme', 'dummy-remote')->save();
diff --git a/core/tests/Drupal/KernelTests/Core/File/RemoteFileUnmanagedCopyTest.php b/core/tests/Drupal/KernelTests/Core/File/RemoteFileUnmanagedCopyTest.php
index c49e36294b..9913ee63de 100644
--- a/core/tests/Drupal/KernelTests/Core/File/RemoteFileUnmanagedCopyTest.php
+++ b/core/tests/Drupal/KernelTests/Core/File/RemoteFileUnmanagedCopyTest.php
@@ -30,6 +30,9 @@ class RemoteFileUnmanagedCopyTest extends FileCopyTest {
    */
   protected $classname = 'Drupal\file_test\StreamWrapper\DummyRemoteStreamWrapper';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->config('system.file')->set('default_scheme', 'dummy-remote')->save();
diff --git a/core/tests/Drupal/KernelTests/Core/File/StreamWrapperTest.php b/core/tests/Drupal/KernelTests/Core/File/StreamWrapperTest.php
index 3e0404183a..5a3a59290b 100644
--- a/core/tests/Drupal/KernelTests/Core/File/StreamWrapperTest.php
+++ b/core/tests/Drupal/KernelTests/Core/File/StreamWrapperTest.php
@@ -37,6 +37,9 @@ class StreamWrapperTest extends FileTestBase {
    */
   protected $classname = 'Drupal\file_test\StreamWrapper\DummyStreamWrapper';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/tests/Drupal/KernelTests/Core/Form/FormCacheTest.php b/core/tests/Drupal/KernelTests/Core/Form/FormCacheTest.php
index 6b8fd87dff..9d89caa87a 100644
--- a/core/tests/Drupal/KernelTests/Core/Form/FormCacheTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Form/FormCacheTest.php
@@ -38,6 +38,9 @@ class FormCacheTest extends KernelTestBase {
    */
   protected $formState;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php b/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php
index 2bb159dd77..e4c44674f9 100644
--- a/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php
@@ -517,4 +517,19 @@ public function testMissingOperation(): void {
     $this->assertFalse($image->apply('missing_op', []), 'Calling a missing image toolkit operation plugin should fail, but it did not.');
   }
 
+  /**
+   * @covers ::getRequirements
+   */
+  public function testGetRequirements(): void {
+    $this->assertEquals([
+      'version' => [
+        'title' => t('GD library'),
+        'value' => gd_info()['GD Version'],
+        'description' => t("Supported image file formats: %formats.", [
+          '%formats' => implode(', ', ['GIF', 'JPEG', 'PNG', 'WEBP']),
+        ]),
+      ],
+    ], $this->imageFactory->get()->getToolkit()->getRequirements());
+  }
+
 }
diff --git a/core/tests/Drupal/KernelTests/Core/KeyValueStore/DatabaseStorageExpirableTest.php b/core/tests/Drupal/KernelTests/Core/KeyValueStore/DatabaseStorageExpirableTest.php
index 9f52371007..4636299145 100644
--- a/core/tests/Drupal/KernelTests/Core/KeyValueStore/DatabaseStorageExpirableTest.php
+++ b/core/tests/Drupal/KernelTests/Core/KeyValueStore/DatabaseStorageExpirableTest.php
@@ -19,6 +19,9 @@ class DatabaseStorageExpirableTest extends StorageTestBase {
    */
   protected static $modules = ['system'];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->factory = 'keyvalue.expirable';
diff --git a/core/tests/Drupal/KernelTests/Core/KeyValueStore/GarbageCollectionTest.php b/core/tests/Drupal/KernelTests/Core/KeyValueStore/GarbageCollectionTest.php
index a8a0239110..669a835b08 100644
--- a/core/tests/Drupal/KernelTests/Core/KeyValueStore/GarbageCollectionTest.php
+++ b/core/tests/Drupal/KernelTests/Core/KeyValueStore/GarbageCollectionTest.php
@@ -39,12 +39,12 @@ public function testGarbageCollection() {
     for ($i = 0; $i <= 3; $i++) {
       $connection->merge('key_value_expire')
         ->keys([
-            'name' => 'key_' . $i,
-            'collection' => $collection,
-          ])
+          'name' => 'key_' . $i,
+          'collection' => $collection,
+        ])
         ->fields([
-            'expire' => REQUEST_TIME - 1,
-          ])
+          'expire' => REQUEST_TIME - 1,
+        ])
         ->execute();
     }
 
diff --git a/core/tests/Drupal/KernelTests/Core/KeyValueStore/StorageTestBase.php b/core/tests/Drupal/KernelTests/Core/KeyValueStore/StorageTestBase.php
index 23059b8372..cc64775f1e 100644
--- a/core/tests/Drupal/KernelTests/Core/KeyValueStore/StorageTestBase.php
+++ b/core/tests/Drupal/KernelTests/Core/KeyValueStore/StorageTestBase.php
@@ -30,6 +30,9 @@ abstract class StorageTestBase extends KernelTestBase {
    */
   protected $factory = 'keyvalue';
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/tests/Drupal/KernelTests/Core/Lock/LockTest.php b/core/tests/Drupal/KernelTests/Core/Lock/LockTest.php
index 24bd451fcc..faebfc7e9a 100644
--- a/core/tests/Drupal/KernelTests/Core/Lock/LockTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Lock/LockTest.php
@@ -19,6 +19,9 @@ class LockTest extends KernelTestBase {
    */
   protected $lock;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->lock = new DatabaseLockBackend($this->container->get('database'));
diff --git a/core/tests/Drupal/KernelTests/Core/Plugin/ContextDefinitionTest.php b/core/tests/Drupal/KernelTests/Core/Plugin/ContextDefinitionTest.php
index bb9fd968ca..e332be68df 100644
--- a/core/tests/Drupal/KernelTests/Core/Plugin/ContextDefinitionTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Plugin/ContextDefinitionTest.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\KernelTests\Core\Plugin;
 
+use Drupal\Core\Plugin\Context\Context;
 use Drupal\Core\Plugin\Context\ContextDefinition;
 use Drupal\Core\Plugin\Context\EntityContext;
 use Drupal\Core\Plugin\Context\EntityContextDefinition;
@@ -33,6 +34,16 @@ public function testIsSatisfiedBy() {
     $requirement = new ContextDefinition('any');
     $context = EntityContext::fromEntity($value);
     $this->assertTrue($requirement->isSatisfiedBy($context));
+
+    // Test with multiple values.
+    $definition = EntityContextDefinition::create('entity_test');
+    $definition->setMultiple();
+    $entities = [
+      EntityTest::create([]),
+      EntityTest::create([]),
+    ];
+    $context = new Context($definition, $entities);
+    $this->assertTrue($definition->isSatisfiedBy($context));
   }
 
   /**
diff --git a/core/tests/Drupal/KernelTests/Core/Plugin/Discovery/AnnotatedClassDiscoveryTest.php b/core/tests/Drupal/KernelTests/Core/Plugin/Discovery/AnnotatedClassDiscoveryTest.php
index fc976a2509..fe747c01fc 100644
--- a/core/tests/Drupal/KernelTests/Core/Plugin/Discovery/AnnotatedClassDiscoveryTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Plugin/Discovery/AnnotatedClassDiscoveryTest.php
@@ -3,6 +3,7 @@
 namespace Drupal\KernelTests\Core\Plugin\Discovery;
 
 use Drupal\Core\Plugin\Discovery\AnnotatedClassDiscovery;
+use Drupal\Core\StringTranslation\TranslatableMarkup;
 
 /**
  * Tests that plugins are correctly discovered using annotated classes.
@@ -11,6 +12,9 @@
  */
 class AnnotatedClassDiscoveryTest extends DiscoveryTestBase {
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->expectedDefinitions = [
@@ -26,7 +30,7 @@ protected function setUp(): void {
         'label' => 'Banana',
         'color' => 'yellow',
         'uses' => [
-          'bread' => t('Banana bread'),
+          'bread' => new TranslatableMarkup('Banana bread'),
           'loaf' => [
             'singular' => '@count loaf',
             'plural' => '@count loaves',
diff --git a/core/tests/Drupal/KernelTests/Core/Plugin/Discovery/CustomAnnotationClassDiscoveryTest.php b/core/tests/Drupal/KernelTests/Core/Plugin/Discovery/CustomAnnotationClassDiscoveryTest.php
index 47d22fd67d..0e29ab12a3 100644
--- a/core/tests/Drupal/KernelTests/Core/Plugin/Discovery/CustomAnnotationClassDiscoveryTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Plugin/Discovery/CustomAnnotationClassDiscoveryTest.php
@@ -12,6 +12,9 @@
  */
 class CustomAnnotationClassDiscoveryTest extends DiscoveryTestBase {
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/tests/Drupal/KernelTests/Core/Plugin/Discovery/CustomDirectoryAnnotatedClassDiscoveryTest.php b/core/tests/Drupal/KernelTests/Core/Plugin/Discovery/CustomDirectoryAnnotatedClassDiscoveryTest.php
index 001a727a2d..48f987decc 100644
--- a/core/tests/Drupal/KernelTests/Core/Plugin/Discovery/CustomDirectoryAnnotatedClassDiscoveryTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Plugin/Discovery/CustomDirectoryAnnotatedClassDiscoveryTest.php
@@ -3,6 +3,7 @@
 namespace Drupal\KernelTests\Core\Plugin\Discovery;
 
 use Drupal\Core\Plugin\Discovery\AnnotatedClassDiscovery;
+use Drupal\Core\StringTranslation\TranslatableMarkup;
 
 /**
  * Tests that plugins in a custom directory are correctly discovered using
@@ -12,6 +13,9 @@
  */
 class CustomDirectoryAnnotatedClassDiscoveryTest extends DiscoveryTestBase {
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
@@ -40,7 +44,7 @@ protected function setUp(): void {
         'label' => 'Banana',
         'color' => 'yellow',
         'uses' => [
-          'bread' => t('Banana bread'),
+          'bread' => new TranslatableMarkup('Banana bread'),
           'loaf' => [
             'singular' => '@count loaf',
             'plural' => '@count loaves',
diff --git a/core/tests/Drupal/KernelTests/Core/Plugin/Discovery/StaticDiscoveryTest.php b/core/tests/Drupal/KernelTests/Core/Plugin/Discovery/StaticDiscoveryTest.php
index 9a1b9e691a..c8e285a85b 100644
--- a/core/tests/Drupal/KernelTests/Core/Plugin/Discovery/StaticDiscoveryTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Plugin/Discovery/StaticDiscoveryTest.php
@@ -11,6 +11,9 @@
  */
 class StaticDiscoveryTest extends DiscoveryTestBase {
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->expectedDefinitions = [
diff --git a/core/tests/Drupal/KernelTests/Core/Plugin/PluginTestBase.php b/core/tests/Drupal/KernelTests/Core/Plugin/PluginTestBase.php
index 46cf470ab9..16c87953ad 100644
--- a/core/tests/Drupal/KernelTests/Core/Plugin/PluginTestBase.php
+++ b/core/tests/Drupal/KernelTests/Core/Plugin/PluginTestBase.php
@@ -29,6 +29,9 @@ abstract class PluginTestBase extends KernelTestBase {
   protected $defaultsTestPluginManager;
   protected $defaultsTestPluginExpectedDefinitions;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/tests/Drupal/KernelTests/Core/Render/Element/RenderElementTypesTest.php b/core/tests/Drupal/KernelTests/Core/Render/Element/RenderElementTypesTest.php
index 73c8c010e7..d2f36d7b73 100644
--- a/core/tests/Drupal/KernelTests/Core/Render/Element/RenderElementTypesTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Render/Element/RenderElementTypesTest.php
@@ -20,6 +20,9 @@ class RenderElementTypesTest extends KernelTestBase {
    */
   protected static $modules = ['system', 'router_test'];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->installConfig(['system']);
diff --git a/core/tests/Drupal/KernelTests/Core/Routing/MatcherDumperTest.php b/core/tests/Drupal/KernelTests/Core/Routing/MatcherDumperTest.php
index e9ed287c58..4efddf25c1 100644
--- a/core/tests/Drupal/KernelTests/Core/Routing/MatcherDumperTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Routing/MatcherDumperTest.php
@@ -33,6 +33,9 @@ class MatcherDumperTest extends KernelTestBase {
    */
   protected $state;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/tests/Drupal/KernelTests/Core/Routing/RouteProviderTest.php b/core/tests/Drupal/KernelTests/Core/Routing/RouteProviderTest.php
index cb4e026c50..dc3b90c07d 100644
--- a/core/tests/Drupal/KernelTests/Core/Routing/RouteProviderTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Routing/RouteProviderTest.php
@@ -87,6 +87,9 @@ class RouteProviderTest extends KernelTestBase {
    */
   protected $cacheTagsInvalidator;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->fixtures = new RoutingFixtures();
@@ -111,6 +114,9 @@ public function register(ContainerBuilder $container) {
     }
   }
 
+  /**
+   * {@inheritdoc}
+   */
   protected function tearDown(): void {
     $this->fixtures->dropTables(Database::getConnection());
 
diff --git a/core/tests/Drupal/KernelTests/Core/Theme/ConfigImportThemeInstallTest.php b/core/tests/Drupal/KernelTests/Core/Theme/ConfigImportThemeInstallTest.php
index f967b432bd..dfe1773b38 100644
--- a/core/tests/Drupal/KernelTests/Core/Theme/ConfigImportThemeInstallTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Theme/ConfigImportThemeInstallTest.php
@@ -19,6 +19,9 @@ class ConfigImportThemeInstallTest extends KernelTestBase {
    */
   protected static $modules = ['system'];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->installConfig(['system']);
diff --git a/core/tests/Drupal/KernelTests/Core/Theme/ImageTest.php b/core/tests/Drupal/KernelTests/Core/Theme/ImageTest.php
index c315722c13..509b6dea77 100644
--- a/core/tests/Drupal/KernelTests/Core/Theme/ImageTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Theme/ImageTest.php
@@ -33,6 +33,9 @@ class ImageTest extends KernelTestBase {
    */
   protected $testImages;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/tests/Drupal/KernelTests/Core/Theme/ThemeInstallerTest.php b/core/tests/Drupal/KernelTests/Core/Theme/ThemeInstallerTest.php
index ac423b8259..fbdd45b36d 100644
--- a/core/tests/Drupal/KernelTests/Core/Theme/ThemeInstallerTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Theme/ThemeInstallerTest.php
@@ -34,6 +34,9 @@ public function register(ContainerBuilder $container) {
       ->register('router.dumper', 'Drupal\Core\Routing\NullMatcherDumper');
   }
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->installConfig(['system']);
diff --git a/core/tests/Drupal/KernelTests/Core/Theme/ThemeSettingsTest.php b/core/tests/Drupal/KernelTests/Core/Theme/ThemeSettingsTest.php
index f5ce5cfec5..3c04cefba5 100644
--- a/core/tests/Drupal/KernelTests/Core/Theme/ThemeSettingsTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Theme/ThemeSettingsTest.php
@@ -27,6 +27,9 @@ class ThemeSettingsTest extends KernelTestBase {
    */
   protected $availableThemes;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     // Theme settings rely on System module's system.theme.global configuration.
diff --git a/core/tests/Drupal/KernelTests/Core/TypedData/AllowedValuesConstraintValidatorTest.php b/core/tests/Drupal/KernelTests/Core/TypedData/AllowedValuesConstraintValidatorTest.php
index b4c76848fb..023d0a2334 100644
--- a/core/tests/Drupal/KernelTests/Core/TypedData/AllowedValuesConstraintValidatorTest.php
+++ b/core/tests/Drupal/KernelTests/Core/TypedData/AllowedValuesConstraintValidatorTest.php
@@ -20,6 +20,9 @@ class AllowedValuesConstraintValidatorTest extends KernelTestBase {
    */
   protected $typedData;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->typedData = $this->container->get('typed_data_manager');
diff --git a/core/tests/Drupal/KernelTests/Core/TypedData/ComplexDataConstraintValidatorTest.php b/core/tests/Drupal/KernelTests/Core/TypedData/ComplexDataConstraintValidatorTest.php
index 4055038886..94b1b33aa9 100644
--- a/core/tests/Drupal/KernelTests/Core/TypedData/ComplexDataConstraintValidatorTest.php
+++ b/core/tests/Drupal/KernelTests/Core/TypedData/ComplexDataConstraintValidatorTest.php
@@ -21,6 +21,9 @@ class ComplexDataConstraintValidatorTest extends KernelTestBase {
    */
   protected $typedData;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->typedData = $this->container->get('typed_data_manager');
diff --git a/core/tests/Drupal/KernelTests/Core/TypedData/TypedDataDefinitionTest.php b/core/tests/Drupal/KernelTests/Core/TypedData/TypedDataDefinitionTest.php
index d0e7bada13..f1a62beefb 100644
--- a/core/tests/Drupal/KernelTests/Core/TypedData/TypedDataDefinitionTest.php
+++ b/core/tests/Drupal/KernelTests/Core/TypedData/TypedDataDefinitionTest.php
@@ -26,6 +26,9 @@ class TypedDataDefinitionTest extends KernelTestBase {
    */
   protected $typedDataManager;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->typedDataManager = $this->container->get('typed_data_manager');
diff --git a/core/tests/Drupal/KernelTests/Core/TypedData/TypedDataTest.php b/core/tests/Drupal/KernelTests/Core/TypedData/TypedDataTest.php
index 91962abc60..30acca31c2 100644
--- a/core/tests/Drupal/KernelTests/Core/TypedData/TypedDataTest.php
+++ b/core/tests/Drupal/KernelTests/Core/TypedData/TypedDataTest.php
@@ -40,6 +40,9 @@ class TypedDataTest extends KernelTestBase {
    */
   protected static $modules = ['system', 'field', 'file', 'user'];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/tests/Drupal/KernelTests/KernelTestBase.php b/core/tests/Drupal/KernelTests/KernelTestBase.php
index 2e6c34e420..47fd9b5862 100644
--- a/core/tests/Drupal/KernelTests/KernelTestBase.php
+++ b/core/tests/Drupal/KernelTests/KernelTestBase.php
@@ -26,6 +26,7 @@
 use Drupal\TestTools\TestVarDumper;
 use PHPUnit\Framework\Exception;
 use PHPUnit\Framework\TestCase;
+use Prophecy\PhpUnit\ProphecyTrait;
 use Symfony\Component\DependencyInjection\Definition;
 use Symfony\Component\DependencyInjection\Reference;
 use Symfony\Component\HttpFoundation\Request;
@@ -89,6 +90,7 @@ abstract class KernelTestBase extends TestCase implements ServiceProviderInterfa
   use TestRequirementsTrait;
   use PhpUnitWarnings;
   use PhpUnitCompatibilityTrait;
+  use ProphecyTrait;
   use ExpectDeprecationTrait;
 
   /**
@@ -453,7 +455,7 @@ protected function getDatabaseConnectionInfo() {
       throw new \Exception('There is no database connection so no tests can be run. You must provide a SIMPLETEST_DB environment variable to run PHPUnit based functional tests outside of run-tests.sh. See https://www.drupal.org/node/2116263#skipped-tests for more information.');
     }
     else {
-      $database = Database::convertDbUrlToConnectionInfo($db_url, $this->root);
+      $database = Database::convertDbUrlToConnectionInfo($db_url, $this->root, TRUE);
       Database::addConnectionInfo('default', 'default', $database);
     }
 
@@ -700,7 +702,12 @@ protected function installConfig($modules) {
       if (!$this->container->get('module_handler')->moduleExists($module)) {
         throw new \LogicException("$module module is not enabled.");
       }
-      $this->container->get('config.installer')->installDefaultConfig('module', $module);
+      try {
+        $this->container->get('config.installer')->installDefaultConfig('module', $module);
+      }
+      catch (\Exception $e) {
+        throw new \Exception(sprintf('Exception when installing config for module %s, message was: %s', $module, $e->getMessage()), 0, $e);
+      }
     }
   }
 
@@ -975,27 +982,6 @@ private static function getModulesToEnable($class) {
     return call_user_func_array('array_merge_recursive', $modules);
   }
 
-  /**
-   * {@inheritdoc}
-   */
-  protected function prepareTemplate(\Text_Template $template) {
-    $bootstrap_globals = '';
-
-    // Fix missing bootstrap.php when $preserveGlobalState is FALSE.
-    // @see https://github.com/sebastianbergmann/phpunit/pull/797
-    $bootstrap_globals .= '$__PHPUNIT_BOOTSTRAP = ' . var_export($GLOBALS['__PHPUNIT_BOOTSTRAP'], TRUE) . ";\n";
-
-    // Avoid repetitive test namespace discoveries to improve performance.
-    // @see /core/tests/bootstrap.php
-    $bootstrap_globals .= '$namespaces = ' . var_export($GLOBALS['namespaces'], TRUE) . ";\n";
-
-    $template->setVar([
-      'constants' => '',
-      'included_files' => '',
-      'globals' => $bootstrap_globals,
-    ]);
-  }
-
   /**
    * Prevents serializing any properties.
    *
diff --git a/core/tests/Drupal/KernelTests/KernelTestBaseTest.php b/core/tests/Drupal/KernelTests/KernelTestBaseTest.php
index fc96fbae3e..fefc271f91 100644
--- a/core/tests/Drupal/KernelTests/KernelTestBaseTest.php
+++ b/core/tests/Drupal/KernelTests/KernelTestBaseTest.php
@@ -88,13 +88,6 @@ public function testSetUp() {
     ]);
     $this->assertTrue($database->schema()->tableExists('foo'));
 
-    // Ensure that the database tasks have been run during set up. Neither MySQL
-    // nor SQLite make changes that are testable.
-    if ($database->driver() == 'pgsql') {
-      $this->assertEquals('on', $database->query("SHOW standard_conforming_strings")->fetchField());
-      $this->assertEquals('escape', $database->query("SHOW bytea_output")->fetchField());
-    }
-
     $this->assertNotNull(FileCacheFactory::getPrefix());
   }
 
@@ -316,10 +309,11 @@ protected function tearDown(): void {
     if ($connection->databaseType() === 'sqlite') {
       $result = $connection->query("SELECT name FROM " . $this->databasePrefix .
         ".sqlite_master WHERE type = :type AND name LIKE :table_name AND name NOT LIKE :pattern", [
-        ':type' => 'table',
-        ':table_name' => '%',
-        ':pattern' => 'sqlite_%',
-      ])->fetchAllKeyed(0, 0);
+          ':type' => 'table',
+          ':table_name' => '%',
+          ':pattern' => 'sqlite_%',
+        ]
+      )->fetchAllKeyed(0, 0);
       $this->assertEmpty($result, 'All test tables have been removed.');
     }
     else {
diff --git a/core/tests/Drupal/TestSite/Commands/TestSiteInstallCommand.php b/core/tests/Drupal/TestSite/Commands/TestSiteInstallCommand.php
index cb98a2fadf..f164d5bf69 100644
--- a/core/tests/Drupal/TestSite/Commands/TestSiteInstallCommand.php
+++ b/core/tests/Drupal/TestSite/Commands/TestSiteInstallCommand.php
@@ -15,6 +15,7 @@
 use Symfony\Component\Console\Input\InputOption;
 use Symfony\Component\Console\Output\OutputInterface;
 use Symfony\Component\Console\Style\SymfonyStyle;
+use Symfony\Component\Filesystem\Filesystem;
 
 /**
  * Command to create a test Drupal site.
@@ -121,6 +122,18 @@ protected function execute(InputInterface $input, OutputInterface $output): int
     // Manage site fixture.
     $this->setup($input->getOption('install-profile'), $class_name, $input->getOption('langcode'));
 
+    // Make sure there is an entry in sites.php for the new site.
+    $fs = new Filesystem();
+    if (!$fs->exists($root . '/sites/sites.php')) {
+      $fs->copy($root . '/sites/example.sites.php', $root . '/sites/sites.php');
+    }
+    $parsed = parse_url($base_url);
+    $port = $parsed['port'] ?? 80;
+    $host = $parsed['host'] ?? 'localhost';
+    // Remove 'sites/' from the beginning of the path.
+    $site_path = substr($this->siteDirectory, 6);
+    $fs->appendToFile($root . '/sites/sites.php', "\$sites['$port.$host'] = '$site_path';");
+
     $user_agent = drupal_generate_test_ua($this->databasePrefix);
     if ($input->getOption('json')) {
       $output->writeln(json_encode([
diff --git a/core/tests/Drupal/TestTools/PhpUnitCompatibility/PhpUnit9/TestCompatibilityTrait.php b/core/tests/Drupal/TestTools/PhpUnitCompatibility/PhpUnit9/TestCompatibilityTrait.php
index 997f5e245f..590fc337be 100644
--- a/core/tests/Drupal/TestTools/PhpUnitCompatibility/PhpUnit9/TestCompatibilityTrait.php
+++ b/core/tests/Drupal/TestTools/PhpUnitCompatibility/PhpUnit9/TestCompatibilityTrait.php
@@ -2,19 +2,9 @@
 
 namespace Drupal\TestTools\PhpUnitCompatibility\PhpUnit9;
 
-use Prophecy\PhpUnit\ProphecyTrait;
-
-// @todo Replace with a proper dependency when we stop supporting PHPUnit 8.
-if (!trait_exists(ProphecyTrait::class)) {
-  print "Drupal requires Prophecy PhpUnit when using PHPUnit 9 or greater. Please use 'composer require --dev phpspec/prophecy-phpunit:^2' to ensure that it is present.\n";
-  exit(1);
-}
-
 /**
  * Drupal's forward compatibility layer with multiple versions of PHPUnit.
  */
 trait TestCompatibilityTrait {
 
-  use ProphecyTrait;
-
 }
diff --git a/core/tests/Drupal/Tests/Component/Annotation/Plugin/Discovery/AnnotationBridgeDecoratorTest.php b/core/tests/Drupal/Tests/Component/Annotation/Plugin/Discovery/AnnotationBridgeDecoratorTest.php
index 324eab95b4..848f499ee1 100644
--- a/core/tests/Drupal/Tests/Component/Annotation/Plugin/Discovery/AnnotationBridgeDecoratorTest.php
+++ b/core/tests/Drupal/Tests/Component/Annotation/Plugin/Discovery/AnnotationBridgeDecoratorTest.php
@@ -6,8 +6,8 @@
 use Drupal\Component\Annotation\Plugin\Discovery\AnnotationBridgeDecorator;
 use Drupal\Component\Plugin\Definition\PluginDefinition;
 use Drupal\Component\Plugin\Discovery\DiscoveryInterface;
-use Drupal\Tests\PhpUnitCompatibilityTrait;
 use PHPUnit\Framework\TestCase;
+use Prophecy\PhpUnit\ProphecyTrait;
 
 /**
  * @coversDefaultClass \Drupal\Component\Annotation\Plugin\Discovery\AnnotationBridgeDecorator
@@ -15,7 +15,7 @@
  */
 class AnnotationBridgeDecoratorTest extends TestCase {
 
-  use PhpUnitCompatibilityTrait;
+  use ProphecyTrait;
 
   /**
    * @covers ::getDefinitions
diff --git a/core/tests/Drupal/Tests/Component/DependencyInjection/ContainerTest.php b/core/tests/Drupal/Tests/Component/DependencyInjection/ContainerTest.php
index 1a2e3115d6..a4990cc36c 100644
--- a/core/tests/Drupal/Tests/Component/DependencyInjection/ContainerTest.php
+++ b/core/tests/Drupal/Tests/Component/DependencyInjection/ContainerTest.php
@@ -8,8 +8,8 @@
 namespace Drupal\Tests\Component\DependencyInjection;
 
 use Drupal\Component\Utility\Crypt;
-use Drupal\Tests\PhpUnitCompatibilityTrait;
 use PHPUnit\Framework\TestCase;
+use Prophecy\PhpUnit\ProphecyTrait;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException;
 use Symfony\Component\DependencyInjection\Exception\LogicException;
@@ -25,7 +25,7 @@
  */
 class ContainerTest extends TestCase {
 
-  use PhpUnitCompatibilityTrait;
+  use ProphecyTrait;
 
   /**
    * The tested container.
diff --git a/core/tests/Drupal/Tests/Component/DependencyInjection/Dumper/OptimizedPhpArrayDumperTest.php b/core/tests/Drupal/Tests/Component/DependencyInjection/Dumper/OptimizedPhpArrayDumperTest.php
index 6771cee678..4fc0ec6a3b 100644
--- a/core/tests/Drupal/Tests/Component/DependencyInjection/Dumper/OptimizedPhpArrayDumperTest.php
+++ b/core/tests/Drupal/Tests/Component/DependencyInjection/Dumper/OptimizedPhpArrayDumperTest.php
@@ -8,8 +8,8 @@
 namespace Drupal\Tests\Component\DependencyInjection\Dumper {
 
   use Drupal\Component\Utility\Crypt;
-  use Drupal\Tests\PhpUnitCompatibilityTrait;
   use PHPUnit\Framework\TestCase;
+  use Prophecy\PhpUnit\ProphecyTrait;
   use Symfony\Bridge\PhpUnit\ExpectDeprecationTrait;
   use Symfony\Component\DependencyInjection\Definition;
   use Symfony\Component\DependencyInjection\Reference;
@@ -26,8 +26,8 @@
    */
   class OptimizedPhpArrayDumperTest extends TestCase {
 
-    use PhpUnitCompatibilityTrait;
     use ExpectDeprecationTrait;
+    use ProphecyTrait;
 
     /**
      * The container builder instance.
@@ -347,8 +347,8 @@ public function getDefinitionsDataProvider() {
       ] + $base_service_definition;
 
       $service_definitions[] = [
-          'shared' => FALSE,
-        ] + $base_service_definition;
+        'shared' => FALSE,
+      ] + $base_service_definition;
 
       // Test factory.
       $service_definitions[] = [
@@ -499,11 +499,11 @@ public function testGetServiceDefinitionWithReferenceToAlias($public) {
         $service_definition = $this->getPrivateServiceCall('bar', $bar_definition_php_array, TRUE);
       }
       $data = [
-         'class' => '\stdClass',
-         'arguments' => $this->getCollection([
-           $service_definition,
-         ]),
-         'arguments_count' => 1,
+        'class' => '\stdClass',
+        'arguments' => $this->getCollection([
+          $service_definition,
+        ]),
+        'arguments_count' => 1,
       ];
       $this->assertEquals($this->serializeDefinition($data), $dump['services']['foo'], 'Expected definition matches dump.');
     }
diff --git a/core/tests/Drupal/Tests/Component/EventDispatcher/ContainerAwareEventDispatcherTest.php b/core/tests/Drupal/Tests/Component/EventDispatcher/ContainerAwareEventDispatcherTest.php
index 9050744de0..10a76c1cad 100644
--- a/core/tests/Drupal/Tests/Component/EventDispatcher/ContainerAwareEventDispatcherTest.php
+++ b/core/tests/Drupal/Tests/Component/EventDispatcher/ContainerAwareEventDispatcherTest.php
@@ -40,11 +40,17 @@ class ContainerAwareEventDispatcherTest extends TestCase {
   private $dispatcher;
   private $listener;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     $this->dispatcher = $this->createEventDispatcher();
     $this->listener = new TestEventListener();
   }
 
+  /**
+   * {@inheritdoc}
+   */
   protected function tearDown(): void {
     $this->dispatcher = NULL;
     $this->listener = NULL;
diff --git a/core/tests/Drupal/Tests/Component/FileCache/FileCacheFactoryTest.php b/core/tests/Drupal/Tests/Component/FileCache/FileCacheFactoryTest.php
index b57f059183..c21bc5bf38 100644
--- a/core/tests/Drupal/Tests/Component/FileCache/FileCacheFactoryTest.php
+++ b/core/tests/Drupal/Tests/Component/FileCache/FileCacheFactoryTest.php
@@ -152,7 +152,7 @@ public function configurationDataProvider() {
       ],
       ['class' => '\stdClass'],
       $class,
-  ];
+    ];
 
     return $data;
   }
diff --git a/core/tests/Drupal/Tests/Component/Gettext/PoStreamWriterTest.php b/core/tests/Drupal/Tests/Component/Gettext/PoStreamWriterTest.php
index 361284d3d9..c3994a67cb 100644
--- a/core/tests/Drupal/Tests/Component/Gettext/PoStreamWriterTest.php
+++ b/core/tests/Drupal/Tests/Component/Gettext/PoStreamWriterTest.php
@@ -5,10 +5,10 @@
 use Drupal\Component\Gettext\PoHeader;
 use Drupal\Component\Gettext\PoItem;
 use Drupal\Component\Gettext\PoStreamWriter;
-use Drupal\Tests\PhpUnitCompatibilityTrait;
 use org\bovigo\vfs\vfsStream;
 use org\bovigo\vfs\vfsStreamFile;
 use PHPUnit\Framework\TestCase;
+use Prophecy\PhpUnit\ProphecyTrait;
 
 /**
  * @coversDefaultClass \Drupal\Component\Gettext\PoStreamWriter
@@ -16,7 +16,7 @@
  */
 class PoStreamWriterTest extends TestCase {
 
-  use PhpUnitCompatibilityTrait;
+  use ProphecyTrait;
 
   /**
    * The PO writer object under test.
diff --git a/core/tests/Drupal/Tests/Component/PhpStorage/FileStorageReadOnlyTest.php b/core/tests/Drupal/Tests/Component/PhpStorage/FileStorageReadOnlyTest.php
index c5df7508d6..907f8c5688 100644
--- a/core/tests/Drupal/Tests/Component/PhpStorage/FileStorageReadOnlyTest.php
+++ b/core/tests/Drupal/Tests/Component/PhpStorage/FileStorageReadOnlyTest.php
@@ -57,11 +57,11 @@ public function testReadOnly() {
 
     // Find a global that doesn't exist.
     do {
-      $random = mt_rand(10000, 100000);
+      $random = 'test' . mt_rand(10000, 100000);
     } while (isset($GLOBALS[$random]));
 
     // Write out a PHP file and ensure it's successfully loaded.
-    $code = "<?php\n\$GLOBALS[$random] = TRUE;";
+    $code = "<?php\n\$GLOBALS['$random'] = TRUE;";
     $success = $php->save($name, $code);
     $this->assertTrue($success);
     $php_read = new FileReadOnlyStorage($this->readonlyStorage);
diff --git a/core/tests/Drupal/Tests/Component/PhpStorage/FileStorageTest.php b/core/tests/Drupal/Tests/Component/PhpStorage/FileStorageTest.php
index 2ad99b4b22..de5fbb21c2 100644
--- a/core/tests/Drupal/Tests/Component/PhpStorage/FileStorageTest.php
+++ b/core/tests/Drupal/Tests/Component/PhpStorage/FileStorageTest.php
@@ -70,11 +70,11 @@ public function testDeleteAll() {
 
     // Find a global that doesn't exist.
     do {
-      $random = mt_rand(10000, 100000);
+      $random = 'test' . mt_rand(10000, 100000);
     } while (isset($GLOBALS[$random]));
 
     // Write out a PHP file and ensure it's successfully loaded.
-    $code = "<?php\n\$GLOBALS[$random] = TRUE;";
+    $code = "<?php\n\$GLOBALS['$random'] = TRUE;";
     $this->assertTrue($php->save($name, $code), 'Saved php file');
     $php->load($name);
     $this->assertTrue($GLOBALS[$random], 'File saved correctly with correct value');
diff --git a/core/tests/Drupal/Tests/Component/PhpStorage/PhpStorageTestBase.php b/core/tests/Drupal/Tests/Component/PhpStorage/PhpStorageTestBase.php
index 007a6fa0cb..c670bebadf 100644
--- a/core/tests/Drupal/Tests/Component/PhpStorage/PhpStorageTestBase.php
+++ b/core/tests/Drupal/Tests/Component/PhpStorage/PhpStorageTestBase.php
@@ -39,11 +39,11 @@ public function assertCRUD($php) {
 
     // Find a global that doesn't exist.
     do {
-      $random = mt_rand(10000, 100000);
+      $random = 'test' . mt_rand(10000, 100000);
     } while (isset($GLOBALS[$random]));
 
     // Write out a PHP file and ensure it's successfully loaded.
-    $code = "<?php\n\$GLOBALS[$random] = TRUE;";
+    $code = "<?php\n\$GLOBALS['$random'] = TRUE;";
     $success = $php->save($name, $code);
     $this->assertTrue($success, 'Saved php file');
     $php->load($name);
diff --git a/core/tests/Drupal/Tests/Component/Plugin/PluginManagerBaseTest.php b/core/tests/Drupal/Tests/Component/Plugin/PluginManagerBaseTest.php
index 38d47ea345..36b60b68a5 100644
--- a/core/tests/Drupal/Tests/Component/Plugin/PluginManagerBaseTest.php
+++ b/core/tests/Drupal/Tests/Component/Plugin/PluginManagerBaseTest.php
@@ -5,8 +5,8 @@
 use Drupal\Component\Plugin\Exception\PluginNotFoundException;
 use Drupal\Component\Plugin\Mapper\MapperInterface;
 use Drupal\Component\Plugin\PluginManagerBase;
-use Drupal\Tests\PhpUnitCompatibilityTrait;
 use PHPUnit\Framework\TestCase;
+use Prophecy\PhpUnit\ProphecyTrait;
 
 /**
  * @coversDefaultClass \Drupal\Component\Plugin\PluginManagerBase
@@ -14,7 +14,7 @@
  */
 class PluginManagerBaseTest extends TestCase {
 
-  use PhpUnitCompatibilityTrait;
+  use ProphecyTrait;
 
   /**
    * A callback method for mocking FactoryInterface objects.
diff --git a/core/tests/Drupal/Tests/Component/Serialization/YamlTest.php b/core/tests/Drupal/Tests/Component/Serialization/YamlTest.php
index baff425716..1aa6b8ddae 100644
--- a/core/tests/Drupal/Tests/Component/Serialization/YamlTest.php
+++ b/core/tests/Drupal/Tests/Component/Serialization/YamlTest.php
@@ -20,6 +20,9 @@ class YamlTest extends TestCase {
    */
   protected $mockParser;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->mockParser = $this->getMockBuilder('\stdClass')
@@ -28,6 +31,9 @@ protected function setUp(): void {
     YamlParserProxy::setMock($this->mockParser);
   }
 
+  /**
+   * {@inheritdoc}
+   */
   protected function tearDown(): void {
     YamlParserProxy::setMock(NULL);
     parent::tearDown();
diff --git a/core/tests/Drupal/Tests/Component/Utility/NestedArrayTest.php b/core/tests/Drupal/Tests/Component/Utility/NestedArrayTest.php
index 6e52b8d5d4..35c0be9690 100644
--- a/core/tests/Drupal/Tests/Component/Utility/NestedArrayTest.php
+++ b/core/tests/Drupal/Tests/Component/Utility/NestedArrayTest.php
@@ -33,7 +33,7 @@ protected function setUp(): void {
 
     // Create a form structure with a nested element.
     $this->form['details']['element'] = [
-     '#value' => 'Nested element',
+      '#value' => 'Nested element',
     ];
 
     // Set up parent array.
diff --git a/core/tests/Drupal/Tests/Composer/Plugin/VendorHardening/VendorHardeningPluginTest.php b/core/tests/Drupal/Tests/Composer/Plugin/VendorHardening/VendorHardeningPluginTest.php
index 0d63f9898c..81b286b986 100644
--- a/core/tests/Drupal/Tests/Composer/Plugin/VendorHardening/VendorHardeningPluginTest.php
+++ b/core/tests/Drupal/Tests/Composer/Plugin/VendorHardening/VendorHardeningPluginTest.php
@@ -8,10 +8,10 @@
 use Composer\Package\RootPackageInterface;
 use Drupal\Composer\Plugin\VendorHardening\Config;
 use Drupal\Composer\Plugin\VendorHardening\VendorHardeningPlugin;
-use Drupal\Tests\PhpUnitCompatibilityTrait;
 use Drupal\Tests\Traits\PhpUnitWarnings;
 use org\bovigo\vfs\vfsStream;
 use PHPUnit\Framework\TestCase;
+use Prophecy\PhpUnit\ProphecyTrait;
 
 /**
  * @coversDefaultClass \Drupal\Composer\Plugin\VendorHardening\VendorHardeningPlugin
@@ -20,8 +20,11 @@
 class VendorHardeningPluginTest extends TestCase {
 
   use PhpUnitWarnings;
-  use PhpUnitCompatibilityTrait;
+  use ProphecyTrait;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     vfsStream::setup('vendor', NULL, [
diff --git a/core/tests/Drupal/Tests/Core/Access/AccessManagerTest.php b/core/tests/Drupal/Tests/Core/Access/AccessManagerTest.php
index 9db016cba3..8a3a71da0b 100644
--- a/core/tests/Drupal/Tests/Core/Access/AccessManagerTest.php
+++ b/core/tests/Drupal/Tests/Core/Access/AccessManagerTest.php
@@ -363,7 +363,7 @@ public function testCheckNamedRouteWithUpcastedValues() {
     $this->routeProvider->expects($this->any())
       ->method('getRouteByName')
       ->with('test_route_1')
-      ->will($this->returnValue($route));
+      ->willReturn($route);
 
     $map[] = ['test_route_1', ['value' => 'example'], '/test-route-1/example'];
 
@@ -371,7 +371,7 @@ public function testCheckNamedRouteWithUpcastedValues() {
     $this->paramConverter->expects($this->atLeastOnce())
       ->method('convert')
       ->with(['value' => 'example', RouteObjectInterface::ROUTE_NAME => 'test_route_1', RouteObjectInterface::ROUTE_OBJECT => $route])
-      ->will($this->returnValue(['value' => 'upcasted_value']));
+      ->willReturn(['value' => 'upcasted_value']);
 
     $this->setupAccessArgumentsResolverFactory($this->exactly(2))
       ->with($this->callback(function ($route_match) {
@@ -383,10 +383,10 @@ public function testCheckNamedRouteWithUpcastedValues() {
     $access_check = $this->createMock('Drupal\Tests\Core\Access\TestAccessCheckInterface');
     $access_check->expects($this->atLeastOnce())
       ->method('applies')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
     $access_check->expects($this->atLeastOnce())
       ->method('access')
-      ->will($this->returnValue(AccessResult::forbidden()));
+      ->willReturn(AccessResult::forbidden());
 
     $this->container->set('test_access', $access_check);
     $this->container->setParameter('dynamic_access_check_services', ['test_access']);
@@ -412,7 +412,7 @@ public function testCheckNamedRouteWithDefaultValue() {
     $this->routeProvider->expects($this->any())
       ->method('getRouteByName')
       ->with('test_route_1')
-      ->will($this->returnValue($route));
+      ->willReturn($route);
 
     $map[] = ['test_route_1', ['value' => 'example'], '/test-route-1/example'];
 
@@ -420,7 +420,7 @@ public function testCheckNamedRouteWithDefaultValue() {
     $this->paramConverter->expects($this->atLeastOnce())
       ->method('convert')
       ->with(['value' => 'example', RouteObjectInterface::ROUTE_NAME => 'test_route_1', RouteObjectInterface::ROUTE_OBJECT => $route])
-      ->will($this->returnValue(['value' => 'upcasted_value']));
+      ->willReturn(['value' => 'upcasted_value']);
 
     $this->setupAccessArgumentsResolverFactory($this->exactly(2))
       ->with($this->callback(function ($route_match) {
@@ -432,10 +432,10 @@ public function testCheckNamedRouteWithDefaultValue() {
     $access_check = $this->createMock('Drupal\Tests\Core\Access\TestAccessCheckInterface');
     $access_check->expects($this->atLeastOnce())
       ->method('applies')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
     $access_check->expects($this->atLeastOnce())
       ->method('access')
-      ->will($this->returnValue(AccessResult::forbidden()));
+      ->willReturn(AccessResult::forbidden());
 
     $this->container->set('test_access', $access_check);
     $this->container->setParameter('dynamic_access_check_services', ['test_access']);
@@ -482,12 +482,12 @@ public function testCheckException($return_value) {
 
     $route_provider->expects($this->any())
       ->method('getRouteByName')
-      ->will($this->returnValue($route));
+      ->willReturn($route);
 
     $this->paramConverter = $this->createMock('Drupal\Core\ParamConverter\ParamConverterManagerInterface');
     $this->paramConverter->expects($this->any())
       ->method('convert')
-      ->will($this->returnValue([]));
+      ->willReturn([]);
 
     $this->setupAccessArgumentsResolverFactory();
 
@@ -497,7 +497,7 @@ public function testCheckException($return_value) {
     $access_check = $this->createMock('Drupal\Tests\Core\Access\TestAccessCheckInterface');
     $access_check->expects($this->any())
       ->method('access')
-      ->will($this->returnValue($return_value));
+      ->willReturn($return_value);
     $container->set('test_incorrect_value', $access_check);
 
     $access_manager = new AccessManager($route_provider, $this->paramConverter, $this->argumentsResolverFactory, $this->currentUser, $this->checkProvider);
@@ -543,9 +543,9 @@ protected function setupAccessArgumentsResolverFactory($constraint = NULL) {
         $resolver = $this->createMock('Drupal\Component\Utility\ArgumentsResolverInterface');
         $resolver->expects($this->any())
           ->method('getArguments')
-          ->will($this->returnCallback(function ($callable) use ($route_match) {
+          ->willReturnCallback(function ($callable) use ($route_match) {
             return [$route_match->getRouteObject()];
-          }));
+          });
 
         return $resolver;
       });
diff --git a/core/tests/Drupal/Tests/Core/Access/AccessResultTest.php b/core/tests/Drupal/Tests/Core/Access/AccessResultTest.php
index dbe8008b00..24ca0617f9 100644
--- a/core/tests/Drupal/Tests/Core/Access/AccessResultTest.php
+++ b/core/tests/Drupal/Tests/Core/Access/AccessResultTest.php
@@ -462,7 +462,7 @@ public function testCacheContexts() {
     $account->expects($this->any())
       ->method('hasPermission')
       ->with('may herd llamas')
-      ->will($this->returnValue(FALSE));
+      ->willReturn(FALSE);
     $contexts = ['user.permissions'];
 
     // Verify the object when using the ::allowedIfHasPermission() convenience
@@ -514,7 +514,7 @@ public function testCacheTags() {
     $node = $this->createMock('\Drupal\node\NodeInterface');
     $node->expects($this->any())
       ->method('getCacheTags')
-      ->will($this->returnValue(['node:20011988']));
+      ->willReturn(['node:20011988']);
     $node->expects($this->any())
       ->method('getCacheMaxAge')
       ->willReturn(600);
diff --git a/core/tests/Drupal/Tests/Core/Access/CsrfAccessCheckTest.php b/core/tests/Drupal/Tests/Core/Access/CsrfAccessCheckTest.php
index a52d335f19..73628aa50b 100644
--- a/core/tests/Drupal/Tests/Core/Access/CsrfAccessCheckTest.php
+++ b/core/tests/Drupal/Tests/Core/Access/CsrfAccessCheckTest.php
@@ -35,6 +35,9 @@ class CsrfAccessCheckTest extends UnitTestCase {
    */
   protected $routeMatch;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     $this->csrfToken = $this->getMockBuilder('Drupal\Core\Access\CsrfTokenGenerator')
       ->disableOriginalConstructor()
@@ -52,11 +55,11 @@ public function testAccessTokenPass() {
     $this->csrfToken->expects($this->once())
       ->method('validate')
       ->with('test_query', 'test-path/42')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $this->routeMatch->expects($this->once())
       ->method('getRawParameters')
-      ->will($this->returnValue(['node' => 42]));
+      ->willReturn(['node' => 42]);
 
     $route = new Route('/test-path/{node}', [], ['_csrf_token' => 'TRUE']);
     $request = Request::create('/test-path/42?token=test_query');
@@ -71,11 +74,11 @@ public function testCsrfTokenInvalid() {
     $this->csrfToken->expects($this->once())
       ->method('validate')
       ->with('test_query', 'test-path')
-      ->will($this->returnValue(FALSE));
+      ->willReturn(FALSE);
 
     $this->routeMatch->expects($this->once())
       ->method('getRawParameters')
-      ->will($this->returnValue([]));
+      ->willReturn([]);
 
     $route = new Route('/test-path', [], ['_csrf_token' => 'TRUE']);
     $request = Request::create('/test-path?token=test_query');
@@ -90,11 +93,11 @@ public function testCsrfTokenMissing() {
     $this->csrfToken->expects($this->once())
       ->method('validate')
       ->with('', 'test-path')
-      ->will($this->returnValue(FALSE));
+      ->willReturn(FALSE);
 
     $this->routeMatch->expects($this->once())
       ->method('getRawParameters')
-      ->will($this->returnValue([]));
+      ->willReturn([]);
 
     $route = new Route('/test-path', [], ['_csrf_token' => 'TRUE']);
     $request = Request::create('/test-path');
diff --git a/core/tests/Drupal/Tests/Core/Access/CsrfTokenGeneratorTest.php b/core/tests/Drupal/Tests/Core/Access/CsrfTokenGeneratorTest.php
index 8db48fe84f..118e5c0413 100644
--- a/core/tests/Drupal/Tests/Core/Access/CsrfTokenGeneratorTest.php
+++ b/core/tests/Drupal/Tests/Core/Access/CsrfTokenGeneratorTest.php
@@ -67,12 +67,12 @@ protected function setupDefaultExpectations() {
     $key = Crypt::randomBytesBase64();
     $this->privateKey->expects($this->any())
       ->method('get')
-      ->will($this->returnValue($key));
+      ->willReturn($key);
 
     $seed = Crypt::randomBytesBase64();
     $this->sessionMetadata->expects($this->any())
       ->method('getCsrfTokenSeed')
-      ->will($this->returnValue($seed));
+      ->willReturn($seed);
   }
 
   /**
@@ -97,11 +97,11 @@ public function testGenerateSeedOnGet() {
     $key = Crypt::randomBytesBase64();
     $this->privateKey->expects($this->any())
       ->method('get')
-      ->will($this->returnValue($key));
+      ->willReturn($key);
 
     $this->sessionMetadata->expects($this->once())
       ->method('getCsrfTokenSeed')
-      ->will($this->returnValue(NULL));
+      ->willReturn(NULL);
 
     $this->sessionMetadata->expects($this->once())
       ->method('setCsrfTokenSeed')
diff --git a/core/tests/Drupal/Tests/Core/Access/CustomAccessCheckTest.php b/core/tests/Drupal/Tests/Core/Access/CustomAccessCheckTest.php
index 33509635e6..1218df686c 100644
--- a/core/tests/Drupal/Tests/Core/Access/CustomAccessCheckTest.php
+++ b/core/tests/Drupal/Tests/Core/Access/CustomAccessCheckTest.php
@@ -72,15 +72,15 @@ public function testAccess() {
     $resolver0 = $this->createMock('Drupal\Component\Utility\ArgumentsResolverInterface');
     $resolver0->expects($this->once())
       ->method('getArguments')
-      ->will($this->returnValue([]));
+      ->willReturn([]);
     $resolver1 = $this->createMock('Drupal\Component\Utility\ArgumentsResolverInterface');
     $resolver1->expects($this->once())
       ->method('getArguments')
-      ->will($this->returnValue([]));
+      ->willReturn([]);
     $resolver2 = $this->createMock('Drupal\Component\Utility\ArgumentsResolverInterface');
     $resolver2->expects($this->once())
       ->method('getArguments')
-      ->will($this->returnValue(['parameter' => 'TRUE']));
+      ->willReturn(['parameter' => 'TRUE']);
 
     $this->argumentsResolverFactory->expects($this->exactly(3))
       ->method('getArgumentsResolver')
diff --git a/core/tests/Drupal/Tests/Core/Access/RouteProcessorCsrfTest.php b/core/tests/Drupal/Tests/Core/Access/RouteProcessorCsrfTest.php
index cadd623b5d..b76cbff4ef 100644
--- a/core/tests/Drupal/Tests/Core/Access/RouteProcessorCsrfTest.php
+++ b/core/tests/Drupal/Tests/Core/Access/RouteProcessorCsrfTest.php
@@ -28,6 +28,9 @@ class RouteProcessorCsrfTest extends UnitTestCase {
    */
   protected $processor;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     $this->csrfToken = $this->getMockBuilder('Drupal\Core\Access\CsrfTokenGenerator')
       ->disableOriginalConstructor()
diff --git a/core/tests/Drupal/Tests/Core/Ajax/AjaxResponseTest.php b/core/tests/Drupal/Tests/Core/Ajax/AjaxResponseTest.php
index 050a63822e..835e53daa2 100644
--- a/core/tests/Drupal/Tests/Core/Ajax/AjaxResponseTest.php
+++ b/core/tests/Drupal/Tests/Core/Ajax/AjaxResponseTest.php
@@ -22,6 +22,9 @@ class AjaxResponseTest extends UnitTestCase {
    */
   protected $ajaxResponse;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     $this->ajaxResponse = new AjaxResponse();
   }
@@ -36,15 +39,15 @@ public function testCommands() {
     $command_one = $this->createMock('Drupal\Core\Ajax\CommandInterface');
     $command_one->expects($this->once())
       ->method('render')
-      ->will($this->returnValue(['command' => 'one']));
+      ->willReturn(['command' => 'one']);
     $command_two = $this->createMock('Drupal\Core\Ajax\CommandInterface');
     $command_two->expects($this->once())
       ->method('render')
-      ->will($this->returnValue(['command' => 'two']));
+      ->willReturn(['command' => 'two']);
     $command_three = $this->createMock('Drupal\Core\Ajax\CommandInterface');
     $command_three->expects($this->once())
       ->method('render')
-      ->will($this->returnValue(['command' => 'three']));
+      ->willReturn(['command' => 'three']);
 
     $this->ajaxResponse->addCommand($command_one);
     $this->ajaxResponse->addCommand($command_two);
diff --git a/core/tests/Drupal/Tests/Core/Asset/CssCollectionGrouperUnitTest.php b/core/tests/Drupal/Tests/Core/Asset/CssCollectionGrouperUnitTest.php
index 041353b5ca..7d8345ea2c 100644
--- a/core/tests/Drupal/Tests/Core/Asset/CssCollectionGrouperUnitTest.php
+++ b/core/tests/Drupal/Tests/Core/Asset/CssCollectionGrouperUnitTest.php
@@ -19,6 +19,9 @@ class CssCollectionGrouperUnitTest extends UnitTestCase {
    */
   protected $grouper;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/tests/Drupal/Tests/Core/Asset/CssOptimizerUnitTest.php b/core/tests/Drupal/Tests/Core/Asset/CssOptimizerUnitTest.php
index a609c6f659..579f7da70b 100644
--- a/core/tests/Drupal/Tests/Core/Asset/CssOptimizerUnitTest.php
+++ b/core/tests/Drupal/Tests/Core/Asset/CssOptimizerUnitTest.php
@@ -32,6 +32,9 @@ class CssOptimizerUnitTest extends UnitTestCase {
    */
   protected $fileUrlGenerator;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $this->fileUrlGenerator = $this->createMock(FileUrlGeneratorInterface::class);
diff --git a/core/tests/Drupal/Tests/Core/Asset/LibraryDependencyResolverTest.php b/core/tests/Drupal/Tests/Core/Asset/LibraryDependencyResolverTest.php
index f9c7ae651d..f380e385fc 100644
--- a/core/tests/Drupal/Tests/Core/Asset/LibraryDependencyResolverTest.php
+++ b/core/tests/Drupal/Tests/Core/Asset/LibraryDependencyResolverTest.php
@@ -60,7 +60,7 @@ protected function setUp(): void {
     $this->libraryDiscovery->expects($this->any())
       ->method('getLibrariesByExtension')
       ->with('test')
-      ->will($this->returnValue($this->libraryData));
+      ->willReturn($this->libraryData);
     $this->libraryDependencyResolver = new LibraryDependencyResolver($this->libraryDiscovery);
   }
 
diff --git a/core/tests/Drupal/Tests/Core/Asset/LibraryDiscoveryCollectorTest.php b/core/tests/Drupal/Tests/Core/Asset/LibraryDiscoveryCollectorTest.php
index b2d3698465..70c22d8681 100644
--- a/core/tests/Drupal/Tests/Core/Asset/LibraryDiscoveryCollectorTest.php
+++ b/core/tests/Drupal/Tests/Core/Asset/LibraryDiscoveryCollectorTest.php
@@ -150,7 +150,7 @@ public function testDestruct() {
     $this->lock->expects($this->once())
       ->method('acquire')
       ->with($lock_key)
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
     $this->cache->expects($this->exactly(2))
       ->method('get')
       ->with('library_info:kitten_theme')
diff --git a/core/tests/Drupal/Tests/Core/Asset/LibraryDiscoveryParserTest.php b/core/tests/Drupal/Tests/Core/Asset/LibraryDiscoveryParserTest.php
index e355bc053d..e21bf5f472 100644
--- a/core/tests/Drupal/Tests/Core/Asset/LibraryDiscoveryParserTest.php
+++ b/core/tests/Drupal/Tests/Core/Asset/LibraryDiscoveryParserTest.php
@@ -119,7 +119,7 @@ public function testBuildByExtensionSimple() {
     $this->moduleHandler->expects($this->atLeastOnce())
       ->method('moduleExists')
       ->with('example_module')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $path = __DIR__ . '/library_test_files';
     $path = substr($path, strlen($this->root) + 1);
@@ -149,7 +149,7 @@ public function testBuildByExtensionWithTheme() {
     $this->moduleHandler->expects($this->atLeastOnce())
       ->method('moduleExists')
       ->with('example_theme')
-      ->will($this->returnValue(FALSE));
+      ->willReturn(FALSE);
 
     $path = __DIR__ . '/library_test_files';
     $path = substr($path, strlen($this->root) + 1);
@@ -176,7 +176,7 @@ public function testBuildByExtensionWithMissingLibraryFile() {
     $this->moduleHandler->expects($this->atLeastOnce())
       ->method('moduleExists')
       ->with('example_module')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $path = __DIR__ . '/library_test_files_not_existing';
     $path = substr($path, strlen($this->root) + 1);
@@ -197,7 +197,7 @@ public function testInvalidLibrariesFile() {
     $this->moduleHandler->expects($this->atLeastOnce())
       ->method('moduleExists')
       ->with('invalid_file')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $path = __DIR__ . '/library_test_files';
     $path = substr($path, strlen($this->root) + 1);
@@ -219,7 +219,7 @@ public function testBuildByExtensionWithOnlyDependencies() {
     $this->moduleHandler->expects($this->atLeastOnce())
       ->method('moduleExists')
       ->with('example_module_only_dependencies')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $path = __DIR__ . '/library_test_files';
     $path = substr($path, strlen($this->root) + 1);
@@ -241,7 +241,7 @@ public function testBuildByExtensionWithMissingInformation() {
     $this->moduleHandler->expects($this->atLeastOnce())
       ->method('moduleExists')
       ->with('example_module_missing_information')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $path = __DIR__ . '/library_test_files';
     $path = substr($path, strlen($this->root) + 1);
@@ -264,7 +264,7 @@ public function testVersion() {
     $this->moduleHandler->expects($this->atLeastOnce())
       ->method('moduleExists')
       ->with('versions')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $path = __DIR__ . '/library_test_files';
     $path = substr($path, strlen($this->root) + 1);
@@ -297,7 +297,7 @@ public function testExternalLibraries() {
     $this->moduleHandler->expects($this->atLeastOnce())
       ->method('moduleExists')
       ->with('external')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $path = __DIR__ . '/library_test_files';
     $path = substr($path, strlen($this->root) + 1);
@@ -323,7 +323,7 @@ public function testDefaultCssWeights() {
     $this->moduleHandler->expects($this->atLeastOnce())
       ->method('moduleExists')
       ->with('css_weights')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $path = __DIR__ . '/library_test_files';
     $path = substr($path, strlen($this->root) + 1);
@@ -364,7 +364,7 @@ public function testJsWithPositiveWeight() {
     $this->moduleHandler->expects($this->atLeastOnce())
       ->method('moduleExists')
       ->with('js_positive_weight')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $path = __DIR__ . '/library_test_files';
     $path = substr($path, strlen($this->root) + 1);
@@ -386,7 +386,7 @@ public function testLibraryWithCssJsSetting() {
     $this->moduleHandler->expects($this->atLeastOnce())
       ->method('moduleExists')
       ->with('css_js_settings')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $path = __DIR__ . '/library_test_files';
     $path = substr($path, strlen($this->root) + 1);
@@ -419,7 +419,7 @@ public function testLibraryWithDependencies() {
     $this->moduleHandler->expects($this->atLeastOnce())
       ->method('moduleExists')
       ->with('dependencies')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $path = __DIR__ . '/library_test_files';
     $path = substr($path, strlen($this->root) + 1);
@@ -445,10 +445,10 @@ public function testLibraryWithDataTypes() {
     $this->moduleHandler->expects($this->atLeastOnce())
       ->method('moduleExists')
       ->with('data_types')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
     $this->streamWrapperManager->expects($this->atLeastOnce())
       ->method('isValidUri')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $path = __DIR__ . '/library_test_files';
     $path = substr($path, strlen($this->root) + 1);
@@ -483,7 +483,7 @@ public function testLibraryWithJavaScript() {
     $this->moduleHandler->expects($this->atLeastOnce())
       ->method('moduleExists')
       ->with('js')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $path = __DIR__ . '/library_test_files';
     $path = substr($path, strlen($this->root) + 1);
@@ -509,7 +509,7 @@ public function testLibraryThirdPartyWithMissingLicense() {
     $this->moduleHandler->expects($this->atLeastOnce())
       ->method('moduleExists')
       ->with('licenses_missing_information')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $path = __DIR__ . '/library_test_files';
     $path = substr($path, strlen($this->root) + 1);
@@ -532,7 +532,7 @@ public function testLibraryWithLicenses() {
     $this->moduleHandler->expects($this->atLeastOnce())
       ->method('moduleExists')
       ->with('licenses')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $path = __DIR__ . '/library_test_files';
     $path = substr($path, strlen($this->root) + 1);
@@ -651,7 +651,7 @@ public function testLibraryOverride() {
     $this->moduleHandler->expects($this->atLeastOnce())
       ->method('moduleExists')
       ->with('example_module')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $libraries = $this->libraryDiscoveryParser->buildByExtension('example_module');
     $library = $libraries['example'];
@@ -704,7 +704,7 @@ public function testLibraryOverrideDeprecated() {
     $this->moduleHandler->expects($this->atLeastOnce())
       ->method('moduleExists')
       ->with('deprecated')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $this->libraryDiscoveryParser->buildByExtension('deprecated');
   }
@@ -729,7 +729,7 @@ public function testCssAssert($extension, $exception_message) {
     $this->moduleHandler->expects($this->atLeastOnce())
       ->method('moduleExists')
       ->with($extension)
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $path = __DIR__ . '/library_test_files';
     $path = substr($path, strlen($this->root) + 1);
@@ -761,7 +761,7 @@ public function testNonCoreLibrariesFound() {
     $this->moduleHandler->expects($this->atLeastOnce())
       ->method('moduleExists')
       ->with('example_contrib_module')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $path = __DIR__ . '/library_test_files';
     $path = substr($path, strlen($this->root) + 1);
@@ -773,7 +773,7 @@ public function testNonCoreLibrariesFound() {
     $this->librariesDirectoryFileFinder->expects($this->once())
       ->method('find')
       ->with('third_party_library/css/example.css')
-      ->will($this->returnValue('sites/example.com/libraries/third_party_library/css/example.css'));
+      ->willReturn('sites/example.com/libraries/third_party_library/css/example.css');
 
     $libraries = $this->libraryDiscoveryParser->buildByExtension('example_contrib_module');
     $library = $libraries['third_party_library'];
@@ -792,7 +792,7 @@ public function testNonCoreLibrariesNotFound() {
     $this->moduleHandler->expects($this->atLeastOnce())
       ->method('moduleExists')
       ->with('example_contrib_module')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $path = __DIR__ . '/library_test_files';
     $path = substr($path, strlen($this->root) + 1);
@@ -807,7 +807,7 @@ public function testNonCoreLibrariesNotFound() {
     $this->librariesDirectoryFileFinder->expects($this->once())
       ->method('find')
       ->with('third_party_library/css/example.css')
-      ->will($this->returnValue(FALSE));
+      ->willReturn(FALSE);
 
     $libraries = $this->libraryDiscoveryParser->buildByExtension('example_contrib_module');
     $library = $libraries['third_party_library'];
@@ -827,7 +827,7 @@ public function testEmptyLibraryFile() {
     $this->moduleHandler->expects($this->atLeastOnce())
       ->method('moduleExists')
       ->with('empty')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $path = __DIR__ . '/library_test_files';
     $path = substr($path, strlen($this->root) + 1);
diff --git a/core/tests/Drupal/Tests/Core/Block/BlockManagerTest.php b/core/tests/Drupal/Tests/Core/Block/BlockManagerTest.php
index 3f373fae3e..8d4d191d00 100644
--- a/core/tests/Drupal/Tests/Core/Block/BlockManagerTest.php
+++ b/core/tests/Drupal/Tests/Core/Block/BlockManagerTest.php
@@ -11,6 +11,7 @@
 use Drupal\Tests\UnitTestCase;
 use Psr\Log\LoggerInterface;
 use Drupal\Core\DependencyInjection\ContainerBuilder;
+use Drupal\Core\StringTranslation\StringTranslationTrait;
 
 /**
  * @coversDefaultClass \Drupal\Core\Block\BlockManager
@@ -19,6 +20,8 @@
  */
 class BlockManagerTest extends UnitTestCase {
 
+  use StringTranslationTrait;
+
   /**
    * The block manager under test.
    *
@@ -42,6 +45,7 @@ protected function setUp(): void {
     $container = new ContainerBuilder();
     $current_user = $this->prophesize(AccountInterface::class);
     $container->set('current_user', $current_user->reveal());
+    $container->set('string_translation', $this->getStringTranslationStub());
     \Drupal::setContainer($container);
 
     $cache_backend = $this->prophesize(CacheBackendInterface::class);
@@ -55,22 +59,22 @@ protected function setUp(): void {
     // that are purposefully not in alphabetical order.
     $discovery->getDefinitions()->willReturn([
       'broken' => [
-        'admin_label' => 'Broken/Missing',
-        'category' => 'Block',
+        'admin_label' => $this->t('Broken/Missing'),
+        'category' => $this->t('Block'),
         'class' => Broken::class,
         'provider' => 'core',
       ],
       'block1' => [
-        'admin_label' => 'Coconut',
-        'category' => 'Group 2',
+        'admin_label' => $this->t('Coconut'),
+        'category' => $this->t('Group 2'),
       ],
       'block2' => [
-        'admin_label' => 'Apple',
-        'category' => 'Group 1',
+        'admin_label' => $this->t('Apple'),
+        'category' => $this->t('Group 1'),
       ],
       'block3' => [
-        'admin_label' => 'Banana',
-        'category' => 'Group 2',
+        'admin_label' => $this->t('Banana'),
+        'category' => $this->t('Group 2'),
       ],
     ]);
     // Force the discovery object onto the block manager.
diff --git a/core/tests/Drupal/Tests/Core/Breadcrumb/BreadcrumbManagerTest.php b/core/tests/Drupal/Tests/Core/Breadcrumb/BreadcrumbManagerTest.php
index 234434f54c..b0e600c0b4 100644
--- a/core/tests/Drupal/Tests/Core/Breadcrumb/BreadcrumbManagerTest.php
+++ b/core/tests/Drupal/Tests/Core/Breadcrumb/BreadcrumbManagerTest.php
@@ -86,7 +86,7 @@ public function testBuildWithSingleBuilder() {
 
     $builder->expects($this->once())
       ->method('applies')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $builder->expects($this->once())
       ->method('build')
@@ -122,7 +122,7 @@ public function testBuildWithMultipleApplyingBuilders() {
     $this->breadcrumb->addCacheContexts(['baz'])->addCacheTags(['qux']);
     $builder2->expects($this->once())
       ->method('applies')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
     $builder2->expects($this->once())
       ->method('build')
       ->willReturn($this->breadcrumb);
@@ -150,7 +150,7 @@ public function testBuildWithOneNotApplyingBuilders() {
     $builder1 = $this->createMock('Drupal\Core\Breadcrumb\BreadcrumbBuilderInterface');
     $builder1->expects($this->once())
       ->method('applies')
-      ->will($this->returnValue(FALSE));
+      ->willReturn(FALSE);
     $builder1->expects($this->never())
       ->method('build');
 
@@ -160,7 +160,7 @@ public function testBuildWithOneNotApplyingBuilders() {
     $this->breadcrumb->addCacheContexts(['baz'])->addCacheTags(['qux']);
     $builder2->expects($this->once())
       ->method('applies')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
     $builder2->expects($this->once())
       ->method('build')
       ->willReturn($this->breadcrumb);
@@ -188,10 +188,10 @@ public function testBuildWithInvalidBreadcrumbResult() {
     $builder = $this->createMock('Drupal\Core\Breadcrumb\BreadcrumbBuilderInterface');
     $builder->expects($this->once())
       ->method('applies')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
     $builder->expects($this->once())
       ->method('build')
-      ->will($this->returnValue('invalid_result'));
+      ->willReturn('invalid_result');
 
     $this->breadcrumbManager->addBuilder($builder, 0);
     $this->expectException(\UnexpectedValueException::class);
diff --git a/core/tests/Drupal/Tests/Core/Cache/BackendChainImplementationUnitTest.php b/core/tests/Drupal/Tests/Core/Cache/BackendChainImplementationUnitTest.php
index 10a209e88b..7b3f76bc4c 100644
--- a/core/tests/Drupal/Tests/Core/Cache/BackendChainImplementationUnitTest.php
+++ b/core/tests/Drupal/Tests/Core/Cache/BackendChainImplementationUnitTest.php
@@ -43,6 +43,9 @@ class BackendChainImplementationUnitTest extends UnitTestCase {
    */
   protected $thirdBackend;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/tests/Drupal/Tests/Core/Cache/CacheCollectorTest.php b/core/tests/Drupal/Tests/Core/Cache/CacheCollectorTest.php
index 2c7c041a6d..4debf2836a 100644
--- a/core/tests/Drupal/Tests/Core/Cache/CacheCollectorTest.php
+++ b/core/tests/Drupal/Tests/Core/Cache/CacheCollectorTest.php
@@ -119,7 +119,7 @@ public function testGetFromCache() {
     $this->cacheBackend->expects($this->once())
       ->method('get')
       ->with($this->cid)
-      ->will($this->returnValue($cache));
+      ->willReturn($cache);
     $this->assertTrue($this->collector->has($key));
     $this->assertEquals($value, $this->collector->get($key));
     $this->assertEquals(0, $this->collector->getCacheMisses());
@@ -175,7 +175,7 @@ public function testUpdateCache() {
     $this->lock->expects($this->once())
       ->method('acquire')
       ->with($this->cid . ':Drupal\Core\Cache\CacheCollector')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
     $this->cacheBackend->expects($this->once())
       ->method('get')
       ->with($this->cid, FALSE);
@@ -204,7 +204,7 @@ public function testUpdateCacheLockFail() {
     $this->lock->expects($this->once())
       ->method('acquire')
       ->with($this->cid . ':Drupal\Core\Cache\CacheCollector')
-      ->will($this->returnValue(FALSE));
+      ->willReturn(FALSE);
     $this->cacheBackend->expects($this->never())
       ->method('set');
 
@@ -244,7 +244,7 @@ public function testUpdateCacheInvalidatedConflict() {
     $this->lock->expects($this->once())
       ->method('acquire')
       ->with($this->cid . ':Drupal\Core\Cache\CacheCollector')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
     $this->cacheBackend->expects($this->once())
       ->method('delete')
       ->with($this->cid);
@@ -272,7 +272,7 @@ public function testUpdateCacheMerge() {
     $this->lock->expects($this->once())
       ->method('acquire')
       ->with($this->cid . ':Drupal\Core\Cache\CacheCollector')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
     $cache = (object) [
       'data' => ['other key' => 'other value'],
       'created' => (int) $_SERVER['REQUEST_TIME'] + 1,
@@ -280,7 +280,7 @@ public function testUpdateCacheMerge() {
     $this->cacheBackend->expects($this->once())
       ->method('get')
       ->with($this->cid)
-      ->will($this->returnValue($cache));
+      ->willReturn($cache);
     $this->cacheBackend->expects($this->once())
       ->method('set')
       ->with($this->cid, ['other key' => 'other value', $key => $value], Cache::PERMANENT, []);
@@ -311,7 +311,7 @@ public function testUpdateCacheDelete() {
         [$this->cid],
         [$this->cid, TRUE],
       )
-      ->will($this->returnValue($cache));
+      ->willReturn($cache);
 
     $this->collector->delete($key);
 
@@ -320,7 +320,7 @@ public function testUpdateCacheDelete() {
     $this->lock->expects($this->once())
       ->method('acquire')
       ->with($this->cid . ':Drupal\Core\Cache\CacheCollector')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
     $this->cacheBackend->expects($this->once())
       ->method('set')
       ->with($this->cid, [], Cache::PERMANENT, []);
diff --git a/core/tests/Drupal/Tests/Core/Cache/CacheFactoryTest.php b/core/tests/Drupal/Tests/Core/Cache/CacheFactoryTest.php
index 2876d7177b..c67dc843dd 100644
--- a/core/tests/Drupal/Tests/Core/Cache/CacheFactoryTest.php
+++ b/core/tests/Drupal/Tests/Core/Cache/CacheFactoryTest.php
@@ -33,7 +33,7 @@ public function testCacheFactoryWithDefaultSettings() {
     $builtin_default_backend_factory->expects($this->once())
       ->method('get')
       ->with('render')
-      ->will($this->returnValue($render_bin));
+      ->willReturn($render_bin);
 
     $actual_bin = $cache_factory->get('render');
     $this->assertSame($render_bin, $actual_bin);
@@ -63,7 +63,7 @@ public function testCacheFactoryWithCustomizedDefaultBackend() {
     $custom_default_backend_factory->expects($this->once())
       ->method('get')
       ->with('render')
-      ->will($this->returnValue($render_bin));
+      ->willReturn($render_bin);
 
     $actual_bin = $cache_factory->get('render');
     $this->assertSame($render_bin, $actual_bin);
@@ -99,7 +99,7 @@ public function testCacheFactoryWithDefaultBinBackend() {
     $custom_default_backend_factory->expects($this->once())
       ->method('get')
       ->with('render')
-      ->will($this->returnValue($render_bin));
+      ->willReturn($render_bin);
 
     $actual_bin = $cache_factory->get('render');
     $this->assertSame($render_bin, $actual_bin);
@@ -139,7 +139,7 @@ public function testCacheFactoryWithSpecifiedPerBinBackend() {
     $custom_render_backend_factory->expects($this->once())
       ->method('get')
       ->with('render')
-      ->will($this->returnValue($render_bin));
+      ->willReturn($render_bin);
 
     $actual_bin = $cache_factory->get('render');
     $this->assertSame($render_bin, $actual_bin);
diff --git a/core/tests/Drupal/Tests/Core/Cache/CacheableMetadataTest.php b/core/tests/Drupal/Tests/Core/Cache/CacheableMetadataTest.php
index 2d939a75ab..ff12edabe6 100644
--- a/core/tests/Drupal/Tests/Core/Cache/CacheableMetadataTest.php
+++ b/core/tests/Drupal/Tests/Core/Cache/CacheableMetadataTest.php
@@ -129,7 +129,7 @@ public function providerSetCacheMaxAge() {
       [300, FALSE],
       [[], TRUE],
       [8.0, TRUE],
-   ];
+    ];
   }
 
   /**
diff --git a/core/tests/Drupal/Tests/Core/Cache/ChainedFastBackendTest.php b/core/tests/Drupal/Tests/Core/Cache/ChainedFastBackendTest.php
index 8f203b0f16..ac5fb40a3b 100644
--- a/core/tests/Drupal/Tests/Core/Cache/ChainedFastBackendTest.php
+++ b/core/tests/Drupal/Tests/Core/Cache/ChainedFastBackendTest.php
@@ -43,7 +43,7 @@ public function testGetDoesNotHitConsistentBackend() {
     $timestamp_item = (object) ['cid' => $timestamp_cid, 'data' => (int) $_SERVER['REQUEST_TIME'] - 60];
     $consistent_cache->expects($this->once())
       ->method('get')->with($timestamp_cid)
-      ->will($this->returnValue($timestamp_item));
+      ->willReturn($timestamp_item);
     $consistent_cache->expects($this->never())
       ->method('getMultiple');
 
@@ -82,19 +82,19 @@ public function testFallThroughToConsistentCache() {
     $consistent_cache->expects($this->once())
       ->method('get')
       ->with($timestamp_item->cid)
-      ->will($this->returnValue($timestamp_item));
+      ->willReturn($timestamp_item);
 
     // We should get a call for the cache item on the consistent backend.
     $consistent_cache->expects($this->once())
       ->method('getMultiple')
       ->with([$cache_item->cid])
-      ->will($this->returnValue([$cache_item->cid => $cache_item]));
+      ->willReturn([$cache_item->cid => $cache_item]);
 
     // We should get a call for the cache item on the fast backend.
     $fast_cache->expects($this->once())
       ->method('getMultiple')
       ->with([$cache_item->cid])
-      ->will($this->returnValue([$cache_item->cid => $cache_item]));
+      ->willReturn([$cache_item->cid => $cache_item]);
 
     // We should get a call to set the cache item on the fast backend.
     $fast_cache->expects($this->once())
diff --git a/core/tests/Drupal/Tests/Core/Cache/Context/SessionCacheContextTest.php b/core/tests/Drupal/Tests/Core/Cache/Context/SessionCacheContextTest.php
index f2f2acaad7..50219f31d2 100644
--- a/core/tests/Drupal/Tests/Core/Cache/Context/SessionCacheContextTest.php
+++ b/core/tests/Drupal/Tests/Core/Cache/Context/SessionCacheContextTest.php
@@ -34,6 +34,9 @@ class SessionCacheContextTest extends UnitTestCase {
    */
   protected $session;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     $this->request = new Request();
 
@@ -54,7 +57,7 @@ public function testSameContextForSameSession() {
     $session_id = 'aSebeZ52bbM6SvADurQP89SFnEpxY6j8';
     $this->session->expects($this->exactly(2))
       ->method('getId')
-      ->will($this->returnValue($session_id));
+      ->willReturn($session_id);
 
     $context1 = $cache_context->getContext();
     $context2 = $cache_context->getContext();
diff --git a/core/tests/Drupal/Tests/Core/Common/DiffArrayTest.php b/core/tests/Drupal/Tests/Core/Common/DiffArrayTest.php
index 80f7d4c7b0..8c963af1ca 100644
--- a/core/tests/Drupal/Tests/Core/Common/DiffArrayTest.php
+++ b/core/tests/Drupal/Tests/Core/Common/DiffArrayTest.php
@@ -26,6 +26,9 @@ class DiffArrayTest extends UnitTestCase {
    */
   protected $array2;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/tests/Drupal/Tests/Core/Condition/ConditionAccessResolverTraitTest.php b/core/tests/Drupal/Tests/Core/Condition/ConditionAccessResolverTraitTest.php
index 825b74b61e..053d30fa6f 100644
--- a/core/tests/Drupal/Tests/Core/Condition/ConditionAccessResolverTraitTest.php
+++ b/core/tests/Drupal/Tests/Core/Condition/ConditionAccessResolverTraitTest.php
@@ -34,25 +34,25 @@ public function providerTestResolveConditions() {
     $condition_true = $this->createMock('Drupal\Core\Condition\ConditionInterface');
     $condition_true->expects($this->any())
       ->method('execute')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
     $condition_false = $this->createMock('Drupal\Core\Condition\ConditionInterface');
     $condition_false->expects($this->any())
       ->method('execute')
-      ->will($this->returnValue(FALSE));
+      ->willReturn(FALSE);
     $condition_exception = $this->createMock('Drupal\Core\Condition\ConditionInterface');
     $condition_exception->expects($this->any())
       ->method('execute')
       ->will($this->throwException(new ContextException()));
     $condition_exception->expects($this->atLeastOnce())
       ->method('isNegated')
-      ->will($this->returnValue(FALSE));
+      ->willReturn(FALSE);
     $condition_negated = $this->createMock('Drupal\Core\Condition\ConditionInterface');
     $condition_negated->expects($this->any())
       ->method('execute')
       ->will($this->throwException(new ContextException()));
     $condition_negated->expects($this->atLeastOnce())
       ->method('isNegated')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $conditions = [];
     $data[] = [$conditions, 'and', TRUE];
diff --git a/core/tests/Drupal/Tests/Core/Config/CachedStorageTest.php b/core/tests/Drupal/Tests/Core/Config/CachedStorageTest.php
index 8c1b18dbce..a33c05187e 100644
--- a/core/tests/Drupal/Tests/Core/Config/CachedStorageTest.php
+++ b/core/tests/Drupal/Tests/Core/Config/CachedStorageTest.php
@@ -29,7 +29,7 @@ public function testListAllStaticCache() {
     $storage->expects($this->once())
       ->method('listAll')
       ->with($prefix)
-      ->will($this->returnValue($response));
+      ->willReturn($response);
 
     $cache = new NullBackend(__FUNCTION__);
 
diff --git a/core/tests/Drupal/Tests/Core/Config/ConfigTest.php b/core/tests/Drupal/Tests/Core/Config/ConfigTest.php
index 51f3c2d9a8..3bfd0a4d98 100644
--- a/core/tests/Drupal/Tests/Core/Config/ConfigTest.php
+++ b/core/tests/Drupal/Tests/Core/Config/ConfigTest.php
@@ -54,6 +54,9 @@ class ConfigTest extends UnitTestCase {
    */
   protected $cacheTagsInvalidator;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     $this->storage = $this->createMock('Drupal\Core\Config\StorageInterface');
     $this->eventDispatcher = $this->createMock('Symfony\Contracts\EventDispatcher\EventDispatcherInterface');
diff --git a/core/tests/Drupal/Tests/Core/Config/Entity/ConfigEntityBaseUnitTest.php b/core/tests/Drupal/Tests/Core/Config/Entity/ConfigEntityBaseUnitTest.php
index b54150a0a9..dcb0e2b313 100644
--- a/core/tests/Drupal/Tests/Core/Config/Entity/ConfigEntityBaseUnitTest.php
+++ b/core/tests/Drupal/Tests/Core/Config/Entity/ConfigEntityBaseUnitTest.php
@@ -124,7 +124,7 @@ protected function setUp(): void {
     $this->entityType = $this->createMock('\Drupal\Core\Config\Entity\ConfigEntityTypeInterface');
     $this->entityType->expects($this->any())
       ->method('getProvider')
-      ->will($this->returnValue($this->provider));
+      ->willReturn($this->provider);
     $this->entityType->expects($this->any())
       ->method('getConfigPrefix')
       ->willReturn('test_provider.' . $this->entityTypeId);
@@ -133,7 +133,7 @@ protected function setUp(): void {
     $this->entityTypeManager->expects($this->any())
       ->method('getDefinition')
       ->with($this->entityTypeId)
-      ->will($this->returnValue($this->entityType));
+      ->willReturn($this->entityType);
 
     $this->uuid = $this->createMock('\Drupal\Component\Uuid\UuidInterface');
 
@@ -141,7 +141,7 @@ protected function setUp(): void {
     $this->languageManager->expects($this->any())
       ->method('getLanguage')
       ->with('en')
-      ->will($this->returnValue(new Language(['id' => 'en'])));
+      ->willReturn(new Language(['id' => 'en']));
 
     $this->cacheTagsInvalidator = $this->createMock('Drupal\Core\Cache\CacheTagsInvalidatorInterface');
 
@@ -191,16 +191,16 @@ public function testPreSaveDuringSync() {
 
     $query->expects($this->any())
       ->method('execute')
-      ->will($this->returnValue([]));
+      ->willReturn([]);
     $query->expects($this->any())
       ->method('condition')
-      ->will($this->returnValue($query));
+      ->willReturn($query);
     $storage->expects($this->any())
       ->method('getQuery')
-      ->will($this->returnValue($query));
+      ->willReturn($query);
     $storage->expects($this->any())
       ->method('loadUnchanged')
-      ->will($this->returnValue($this->entity));
+      ->willReturn($this->entity);
 
     // Saving an entity will not reset the dependencies array during config
     // synchronization.
@@ -271,13 +271,13 @@ public function testCalculateDependenciesWithPluginCollections($definition, $exp
     $pluginCollection->expects($this->atLeastOnce())
       ->method('get')
       ->with($instance_id)
-      ->will($this->returnValue($instance));
+      ->willReturn($instance);
     $pluginCollection->addInstanceId($instance_id);
 
     // Return the mocked plugin collection.
     $this->entity->expects($this->once())
       ->method('getPluginCollections')
-      ->will($this->returnValue([$pluginCollection]));
+      ->willReturn([$pluginCollection]);
 
     $this->assertEquals($expected_dependencies, $this->entity->calculateDependencies()->getDependencies());
   }
@@ -486,12 +486,12 @@ public function testCreateDuplicate() {
     $this->entityType->expects($this->once())
       ->method('hasKey')
       ->with('uuid')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $new_uuid = '8607ef21-42bc-4913-978f-8c06207b0395';
     $this->uuid->expects($this->once())
       ->method('generate')
-      ->will($this->returnValue($new_uuid));
+      ->willReturn($new_uuid);
 
     $duplicate = $this->entity->createDuplicate();
     $this->assertInstanceOf('\Drupal\Core\Entity\EntityBase', $duplicate);
@@ -511,11 +511,11 @@ public function testSort() {
     $this->entityTypeManager->expects($this->any())
       ->method('getDefinition')
       ->with($this->entityTypeId)
-      ->will($this->returnValue([
+      ->willReturn([
         'entity_keys' => [
           'label' => 'label',
         ],
-      ]));
+      ]);
 
     $entity_a = $this->createMock('\Drupal\Core\Config\Entity\ConfigEntityInterface');
     $entity_a->expects($this->atLeastOnce())
diff --git a/core/tests/Drupal/Tests/Core/Config/Entity/EntityDisplayModeBaseUnitTest.php b/core/tests/Drupal/Tests/Core/Config/Entity/EntityDisplayModeBaseUnitTest.php
index 03ec70375a..0d411f9156 100644
--- a/core/tests/Drupal/Tests/Core/Config/Entity/EntityDisplayModeBaseUnitTest.php
+++ b/core/tests/Drupal/Tests/Core/Config/Entity/EntityDisplayModeBaseUnitTest.php
@@ -56,7 +56,7 @@ protected function setUp(): void {
     $this->entityInfo = $this->createMock('\Drupal\Core\Entity\EntityTypeInterface');
     $this->entityInfo->expects($this->any())
       ->method('getProvider')
-      ->will($this->returnValue('entity'));
+      ->willReturn('entity');
 
     $this->entityTypeManager = $this->createMock(EntityTypeManagerInterface::class);
 
@@ -78,7 +78,7 @@ public function testCalculateDependencies() {
     $target_entity_type = $this->createMock('\Drupal\Core\Entity\EntityTypeInterface');
     $target_entity_type->expects($this->any())
       ->method('getProvider')
-      ->will($this->returnValue('test_module'));
+      ->willReturn('test_module');
     $values = ['targetEntityType' => $target_entity_type_id];
 
     $this->entityTypeManager->expects($this->exactly(2))
diff --git a/core/tests/Drupal/Tests/Core/Config/ImmutableConfigTest.php b/core/tests/Drupal/Tests/Core/Config/ImmutableConfigTest.php
index b8f92f0bf0..25a75d3428 100644
--- a/core/tests/Drupal/Tests/Core/Config/ImmutableConfigTest.php
+++ b/core/tests/Drupal/Tests/Core/Config/ImmutableConfigTest.php
@@ -19,6 +19,9 @@ class ImmutableConfigTest extends UnitTestCase {
    */
   protected $config;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
     $storage = $this->createMock('Drupal\Core\Config\StorageInterface');
diff --git a/core/tests/Drupal/Tests/Core/Config/StorageComparerTest.php b/core/tests/Drupal/Tests/Core/Config/StorageComparerTest.php
index d79e7e1951..6d85e64e37 100644
--- a/core/tests/Drupal/Tests/Core/Config/StorageComparerTest.php
+++ b/core/tests/Drupal/Tests/Core/Config/StorageComparerTest.php
@@ -36,6 +36,9 @@ class StorageComparerTest extends UnitTestCase {
    */
   protected $configData;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     $this->sourceStorage = $this->createMock('Drupal\Core\Config\StorageInterface');
     $this->targetStorage = $this->createMock('Drupal\Core\Config\StorageInterface');
@@ -98,22 +101,22 @@ public function testCreateChangelistNoChange() {
     $config_files = array_keys($config_data);
     $this->sourceStorage->expects($this->once())
       ->method('listAll')
-      ->will($this->returnValue($config_files));
+      ->willReturn($config_files);
     $this->targetStorage->expects($this->once())
       ->method('listAll')
-      ->will($this->returnValue($config_files));
+      ->willReturn($config_files);
     $this->sourceStorage->expects($this->once())
       ->method('readMultiple')
-      ->will($this->returnValue($config_data));
+      ->willReturn($config_data);
     $this->targetStorage->expects($this->once())
       ->method('readMultiple')
-      ->will($this->returnValue($config_data));
+      ->willReturn($config_data);
     $this->sourceStorage->expects($this->once())
       ->method('getAllCollectionNames')
-      ->will($this->returnValue([]));
+      ->willReturn([]);
     $this->targetStorage->expects($this->once())
       ->method('getAllCollectionNames')
-      ->will($this->returnValue([]));
+      ->willReturn([]);
 
     $this->storageComparer->createChangelist();
     $this->assertEmpty($this->storageComparer->getChangelist('create'));
@@ -132,22 +135,22 @@ public function testCreateChangelistCreate() {
 
     $this->sourceStorage->expects($this->once())
       ->method('listAll')
-      ->will($this->returnValue(array_keys($source_data)));
+      ->willReturn(array_keys($source_data));
     $this->targetStorage->expects($this->once())
       ->method('listAll')
-      ->will($this->returnValue(array_keys($target_data)));
+      ->willReturn(array_keys($target_data));
     $this->sourceStorage->expects($this->once())
       ->method('readMultiple')
-      ->will($this->returnValue($source_data));
+      ->willReturn($source_data);
     $this->targetStorage->expects($this->once())
       ->method('readMultiple')
-      ->will($this->returnValue($target_data));
+      ->willReturn($target_data);
     $this->sourceStorage->expects($this->once())
       ->method('getAllCollectionNames')
-      ->will($this->returnValue([]));
+      ->willReturn([]);
     $this->targetStorage->expects($this->once())
       ->method('getAllCollectionNames')
-      ->will($this->returnValue([]));
+      ->willReturn([]);
 
     $this->storageComparer->createChangelist();
     $expected = [
@@ -171,22 +174,22 @@ public function testCreateChangelistDelete() {
 
     $this->sourceStorage->expects($this->once())
       ->method('listAll')
-      ->will($this->returnValue(array_keys($source_data)));
+      ->willReturn(array_keys($source_data));
     $this->targetStorage->expects($this->once())
       ->method('listAll')
-      ->will($this->returnValue(array_keys($target_data)));
+      ->willReturn(array_keys($target_data));
     $this->sourceStorage->expects($this->once())
       ->method('readMultiple')
-      ->will($this->returnValue($source_data));
+      ->willReturn($source_data);
     $this->targetStorage->expects($this->once())
       ->method('readMultiple')
-      ->will($this->returnValue($target_data));
+      ->willReturn($target_data);
     $this->sourceStorage->expects($this->once())
       ->method('getAllCollectionNames')
-      ->will($this->returnValue([]));
+      ->willReturn([]);
     $this->targetStorage->expects($this->once())
       ->method('getAllCollectionNames')
-      ->will($this->returnValue([]));
+      ->willReturn([]);
 
     $this->storageComparer->createChangelist();
     $expected = [
@@ -210,22 +213,22 @@ public function testCreateChangelistUpdate() {
 
     $this->sourceStorage->expects($this->once())
       ->method('listAll')
-      ->will($this->returnValue(array_keys($source_data)));
+      ->willReturn(array_keys($source_data));
     $this->targetStorage->expects($this->once())
       ->method('listAll')
-      ->will($this->returnValue(array_keys($target_data)));
+      ->willReturn(array_keys($target_data));
     $this->sourceStorage->expects($this->once())
       ->method('readMultiple')
-      ->will($this->returnValue($source_data));
+      ->willReturn($source_data);
     $this->targetStorage->expects($this->once())
       ->method('readMultiple')
-      ->will($this->returnValue($target_data));
+      ->willReturn($target_data);
     $this->sourceStorage->expects($this->once())
       ->method('getAllCollectionNames')
-      ->will($this->returnValue([]));
+      ->willReturn([]);
     $this->targetStorage->expects($this->once())
       ->method('getAllCollectionNames')
-      ->will($this->returnValue([]));
+      ->willReturn([]);
 
     $this->storageComparer->createChangelist();
     $expected = [
diff --git a/core/tests/Drupal/Tests/Core/Controller/ControllerBaseTest.php b/core/tests/Drupal/Tests/Core/Controller/ControllerBaseTest.php
index 2e156c45d9..89c22fa21d 100644
--- a/core/tests/Drupal/Tests/Core/Controller/ControllerBaseTest.php
+++ b/core/tests/Drupal/Tests/Core/Controller/ControllerBaseTest.php
@@ -18,6 +18,9 @@ class ControllerBaseTest extends UnitTestCase {
    */
   protected $controllerBase;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     $this->controllerBase = $this->getMockForAbstractClass('Drupal\Core\Controller\ControllerBase');
   }
@@ -39,7 +42,7 @@ public function testGetConfig() {
     $container->expects($this->once())
       ->method('get')
       ->with('config.factory')
-      ->will($this->returnValue($config_factory));
+      ->willReturn($config_factory);
     \Drupal::setContainer($container);
 
     $config_method = new \ReflectionMethod('Drupal\Core\Controller\ControllerBase', 'config');
diff --git a/core/tests/Drupal/Tests/Core/Controller/TitleResolverTest.php b/core/tests/Drupal/Tests/Core/Controller/TitleResolverTest.php
index 49fcb9fa1a..2eb2e20de1 100644
--- a/core/tests/Drupal/Tests/Core/Controller/TitleResolverTest.php
+++ b/core/tests/Drupal/Tests/Core/Controller/TitleResolverTest.php
@@ -48,6 +48,9 @@ class TitleResolverTest extends UnitTestCase {
    */
   protected $titleResolver;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     $this->controllerResolver = $this->createMock('\Drupal\Core\Controller\ControllerResolverInterface');
     $this->translationManager = $this->createMock('\Drupal\Core\StringTranslation\TranslationInterface');
@@ -133,11 +136,11 @@ public function testDynamicTitle() {
     $this->controllerResolver->expects($this->once())
       ->method('getControllerFromDefinition')
       ->with('Drupal\Tests\Core\Controller\TitleCallback::example')
-      ->will($this->returnValue($callable));
+      ->willReturn($callable);
     $this->argumentResolver->expects($this->once())
       ->method('getArguments')
       ->with($request, $callable)
-      ->will($this->returnValue(['example']));
+      ->willReturn(['example']);
 
     $this->assertEquals('test example', $this->titleResolver->getTitle($request, $route));
   }
diff --git a/core/tests/Drupal/Tests/Core/Database/DatabaseTest.php b/core/tests/Drupal/Tests/Core/Database/DatabaseTest.php
index 1eb469399f..bf61c2467c 100644
--- a/core/tests/Drupal/Tests/Core/Database/DatabaseTest.php
+++ b/core/tests/Drupal/Tests/Core/Database/DatabaseTest.php
@@ -4,7 +4,6 @@
 
 use Composer\Autoload\ClassLoader;
 use Drupal\Core\Database\Database;
-use Drupal\Core\Site\Settings;
 use Drupal\Tests\UnitTestCase;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 
@@ -57,10 +56,8 @@ protected function setUp(): void {
    * @covers ::findDriverAutoloadDirectory
    * @dataProvider providerFindDriverAutoloadDirectory
    */
-  public function testFindDriverAutoloadDirectory($expected, $namespace) {
-    new Settings(['extension_discovery_scan_tests' => TRUE]);
-    // The only module that provides a driver in core is a test module.
-    $this->assertSame($expected, Database::findDriverAutoloadDirectory($namespace, $this->root));
+  public function testFindDriverAutoloadDirectory($expected, $namespace, $include_test_drivers) {
+    $this->assertSame($expected, Database::findDriverAutoloadDirectory($namespace, $this->root, $include_test_drivers));
   }
 
   /**
@@ -70,9 +67,9 @@ public function testFindDriverAutoloadDirectory($expected, $namespace) {
    */
   public function providerFindDriverAutoloadDirectory() {
     return [
-      'core mysql' => ['core/modules/mysql/src/Driver/Database/mysql/', 'Drupal\mysql\Driver\Database\mysql'],
-      'D8 custom fake' => [FALSE, 'Drupal\Driver\Database\corefake'],
-      'module mysql' => ['core/modules/system/tests/modules/driver_test/src/Driver/Database/DrivertestMysql/', 'Drupal\driver_test\Driver\Database\DrivertestMysql'],
+      'core mysql' => ['core/modules/mysql/src/Driver/Database/mysql/', 'Drupal\mysql\Driver\Database\mysql', FALSE],
+      'D8 custom fake' => [FALSE, 'Drupal\Driver\Database\corefake', TRUE],
+      'module mysql' => ['core/modules/system/tests/modules/driver_test/src/Driver/Database/DrivertestMysql/', 'Drupal\driver_test\Driver\Database\DrivertestMysql', TRUE],
     ];
   }
 
@@ -81,10 +78,9 @@ public function providerFindDriverAutoloadDirectory() {
    * @dataProvider providerFindDriverAutoloadDirectoryException
    */
   public function testFindDriverAutoloadDirectoryException($expected_message, $namespace, $include_tests) {
-    new Settings(['extension_discovery_scan_tests' => $include_tests]);
     $this->expectException(\RuntimeException::class);
     $this->expectExceptionMessage($expected_message);
-    Database::findDriverAutoloadDirectory($namespace, $this->root);
+    Database::findDriverAutoloadDirectory($namespace, $this->root, $include_tests);
   }
 
   /**
diff --git a/core/tests/Drupal/Tests/Core/Database/UrlConversionTest.php b/core/tests/Drupal/Tests/Core/Database/UrlConversionTest.php
index fb1c9dde8d..2e836da87c 100644
--- a/core/tests/Drupal/Tests/Core/Database/UrlConversionTest.php
+++ b/core/tests/Drupal/Tests/Core/Database/UrlConversionTest.php
@@ -3,7 +3,6 @@
 namespace Drupal\Tests\Core\Database;
 
 use Drupal\Core\Database\Database;
-use Drupal\Core\Site\Settings;
 use Drupal\Tests\UnitTestCase;
 
 /**
@@ -39,8 +38,6 @@ protected function setUp(): void {
       ->with('site.path')
       ->willReturn('');
     \Drupal::setContainer($container);
-
-    new Settings(['extension_discovery_scan_tests' => TRUE]);
   }
 
   /**
@@ -48,8 +45,8 @@ protected function setUp(): void {
    *
    * @dataProvider providerConvertDbUrlToConnectionInfo
    */
-  public function testDbUrlToConnectionConversion($url, $database_array) {
-    $result = Database::convertDbUrlToConnectionInfo($url, $this->root);
+  public function testDbUrlToConnectionConversion($url, $database_array, $include_test_drivers) {
+    $result = Database::convertDbUrlToConnectionInfo($url, $this->root, $include_test_drivers);
     $this->assertEquals($database_array, $result);
   }
 
@@ -76,6 +73,7 @@ public function providerConvertDbUrlToConnectionInfo() {
           'namespace' => 'Drupal\mysql\Driver\Database\mysql',
           'autoload' => 'core/modules/mysql/src/Driver/Database/mysql/',
         ],
+        FALSE,
       ],
       'SQLite, relative to root, without prefix' => [
         'sqlite://localhost/test_database',
@@ -86,6 +84,7 @@ public function providerConvertDbUrlToConnectionInfo() {
           'namespace' => 'Drupal\sqlite\Driver\Database\sqlite',
           'autoload' => 'core/modules/sqlite/src/Driver/Database/sqlite/',
         ],
+        FALSE,
       ],
       'MySql with prefix' => [
         'mysql://test_user:test_pass@test_host:3306/test_database#bar',
@@ -100,6 +99,7 @@ public function providerConvertDbUrlToConnectionInfo() {
           'namespace' => 'Drupal\mysql\Driver\Database\mysql',
           'autoload' => 'core/modules/mysql/src/Driver/Database/mysql/',
         ],
+        FALSE,
       ],
       'SQLite, relative to root, with prefix' => [
         'sqlite://localhost/test_database#foo',
@@ -111,6 +111,7 @@ public function providerConvertDbUrlToConnectionInfo() {
           'namespace' => 'Drupal\sqlite\Driver\Database\sqlite',
           'autoload' => 'core/modules/sqlite/src/Driver/Database/sqlite/',
         ],
+        FALSE,
       ],
       'SQLite, absolute path, without prefix' => [
         'sqlite://localhost//baz/test_database',
@@ -121,6 +122,7 @@ public function providerConvertDbUrlToConnectionInfo() {
           'namespace' => 'Drupal\sqlite\Driver\Database\sqlite',
           'autoload' => 'core/modules/sqlite/src/Driver/Database/sqlite/',
         ],
+        FALSE,
       ],
       'MySQL contrib test driver without prefix' => [
         'DrivertestMysql://test_user:test_pass@test_host:3306/test_database?module=driver_test',
@@ -134,6 +136,7 @@ public function providerConvertDbUrlToConnectionInfo() {
           'namespace' => 'Drupal\driver_test\Driver\Database\DrivertestMysql',
           'autoload' => 'core/modules/system/tests/modules/driver_test/src/Driver/Database/DrivertestMysql/',
         ],
+        TRUE,
       ],
       'MySQL contrib test driver with prefix' => [
         'DrivertestMysql://test_user:test_pass@test_host:3306/test_database?module=driver_test#bar',
@@ -148,6 +151,7 @@ public function providerConvertDbUrlToConnectionInfo() {
           'namespace' => 'Drupal\driver_test\Driver\Database\DrivertestMysql',
           'autoload' => 'core/modules/system/tests/modules/driver_test/src/Driver/Database/DrivertestMysql/',
         ],
+        TRUE,
       ],
       'PostgreSQL contrib test driver without prefix' => [
         'DrivertestPgsql://test_user:test_pass@test_host:5432/test_database?module=driver_test',
@@ -161,6 +165,7 @@ public function providerConvertDbUrlToConnectionInfo() {
           'namespace' => 'Drupal\driver_test\Driver\Database\DrivertestPgsql',
           'autoload' => 'core/modules/system/tests/modules/driver_test/src/Driver/Database/DrivertestPgsql/',
         ],
+        TRUE,
       ],
       'PostgreSQL contrib test driver with prefix' => [
         'DrivertestPgsql://test_user:test_pass@test_host:5432/test_database?module=driver_test#bar',
@@ -175,6 +180,7 @@ public function providerConvertDbUrlToConnectionInfo() {
           'namespace' => 'Drupal\driver_test\Driver\Database\DrivertestPgsql',
           'autoload' => 'core/modules/system/tests/modules/driver_test/src/Driver/Database/DrivertestPgsql/',
         ],
+        TRUE,
       ],
       'MySql with a custom query parameter' => [
         'mysql://test_user:test_pass@test_host:3306/test_database?extra=value',
@@ -188,6 +194,7 @@ public function providerConvertDbUrlToConnectionInfo() {
           'namespace' => 'Drupal\mysql\Driver\Database\mysql',
           'autoload' => 'core/modules/mysql/src/Driver/Database/mysql/',
         ],
+        FALSE,
       ],
       'MySql with the module name mysql' => [
         'mysql://test_user:test_pass@test_host:3306/test_database?module=mysql',
@@ -201,6 +208,7 @@ public function providerConvertDbUrlToConnectionInfo() {
           'namespace' => 'Drupal\mysql\Driver\Database\mysql',
           'autoload' => 'core/modules/mysql/src/Driver/Database/mysql/',
         ],
+        FALSE,
       ],
       'PostgreSql without the module name set' => [
         'pgsql://test_user:test_pass@test_host/test_database',
@@ -213,6 +221,7 @@ public function providerConvertDbUrlToConnectionInfo() {
           'namespace' => 'Drupal\pgsql\Driver\Database\pgsql',
           'autoload' => 'core/modules/pgsql/src/Driver/Database/pgsql/',
         ],
+        FALSE,
       ],
       'PostgreSql with the module name pgsql' => [
         'pgsql://test_user:test_pass@test_host/test_database?module=pgsql',
@@ -225,6 +234,7 @@ public function providerConvertDbUrlToConnectionInfo() {
           'namespace' => 'Drupal\pgsql\Driver\Database\pgsql',
           'autoload' => 'core/modules/pgsql/src/Driver/Database/pgsql/',
         ],
+        FALSE,
       ],
       'SQLite, relative to root, without prefix and with the module name sqlite' => [
         'sqlite://localhost/test_database?module=sqlite',
@@ -235,6 +245,7 @@ public function providerConvertDbUrlToConnectionInfo() {
           'namespace' => 'Drupal\sqlite\Driver\Database\sqlite',
           'autoload' => 'core/modules/sqlite/src/Driver/Database/sqlite/',
         ],
+        FALSE,
       ],
     ];
   }
@@ -439,7 +450,7 @@ public function testDriverModuleDoesNotExist() {
     $url = 'mysql://test_user:test_pass@test_host:3306/test_database?module=does_not_exist';
     $this->expectException(\RuntimeException::class);
     $this->expectExceptionMessage("Cannot find the module 'does_not_exist' for the database driver namespace 'Drupal\does_not_exist\Driver\Database\mysql'");
-    Database::convertDbUrlToConnectionInfo($url, $this->root);
+    Database::convertDbUrlToConnectionInfo($url, $this->root, TRUE);
   }
 
   /**
@@ -449,7 +460,7 @@ public function testModuleDriverDoesNotExist() {
     $url = 'mysql://test_user:test_pass@test_host:3306/test_database?module=driver_test';
     $this->expectException(\RuntimeException::class);
     $this->expectExceptionMessage("Cannot find the database driver namespace 'Drupal\driver_test\Driver\Database\mysql' in module 'driver_test'");
-    Database::convertDbUrlToConnectionInfo($url, $this->root);
+    Database::convertDbUrlToConnectionInfo($url, $this->root, TRUE);
   }
 
 }
diff --git a/core/tests/Drupal/Tests/Core/Datetime/DateTest.php b/core/tests/Drupal/Tests/Core/Datetime/DateTest.php
index 561f2b0d08..d9b250d672 100644
--- a/core/tests/Drupal/Tests/Core/Datetime/DateTest.php
+++ b/core/tests/Drupal/Tests/Core/Datetime/DateTest.php
@@ -58,6 +58,9 @@ class DateTest extends UnitTestCase {
    */
   protected $dateFormatterStub;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/tests/Drupal/Tests/Core/DependencyInjection/Compiler/TaggedHandlersPassTest.php b/core/tests/Drupal/Tests/Core/DependencyInjection/Compiler/TaggedHandlersPassTest.php
index 680d124e9b..aec35dd8d4 100644
--- a/core/tests/Drupal/Tests/Core/DependencyInjection/Compiler/TaggedHandlersPassTest.php
+++ b/core/tests/Drupal/Tests/Core/DependencyInjection/Compiler/TaggedHandlersPassTest.php
@@ -324,9 +324,9 @@ public function testProcessWithExtraArguments() {
     $container
       ->register('handler1', __NAMESPACE__ . '\ValidHandler')
       ->addTag('consumer_id', [
-          'extra1' => 'extra1',
-          'extra2' => 'extra2',
-        ]);
+        'extra1' => 'extra1',
+        'extra2' => 'extra2',
+      ]);
 
     $handler_pass = new TaggedHandlersPass();
     $handler_pass->process($container);
diff --git a/core/tests/Drupal/Tests/Core/DrupalTest.php b/core/tests/Drupal/Tests/Core/DrupalTest.php
index 052af81346..38c59dfa08 100644
--- a/core/tests/Drupal/Tests/Core/DrupalTest.php
+++ b/core/tests/Drupal/Tests/Core/DrupalTest.php
@@ -140,7 +140,7 @@ public function testKeyValueExpirable() {
     $keyvalue->expects($this->once())
       ->method('get')
       ->with('test_collection')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
     $this->setMockContainerService('keyvalue.expirable', $keyvalue);
 
     $this->assertNotNull(\Drupal::keyValueExpirable('test_collection'));
@@ -166,7 +166,7 @@ public function testConfig() {
     $config->expects($this->once())
       ->method('get')
       ->with('test_config')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
     $this->setMockContainerService('config.factory', $config);
 
     // Test \Drupal::config(), not $this->config().
@@ -185,7 +185,7 @@ public function testQueue() {
     $queue->expects($this->once())
       ->method('get')
       ->with('test_queue', TRUE)
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
     $this->setMockContainerService('queue', $queue);
 
     $this->assertNotNull(\Drupal::queue('test_queue', TRUE));
@@ -215,7 +215,7 @@ public function testKeyValue() {
     $keyvalue->expects($this->once())
       ->method('get')
       ->with('test_collection')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
     $this->setMockContainerService('keyvalue', $keyvalue);
 
     $this->assertNotNull(\Drupal::keyValue('test_collection'));
diff --git a/core/tests/Drupal/Tests/Core/Enhancer/ParamConversionEnhancerTest.php b/core/tests/Drupal/Tests/Core/Enhancer/ParamConversionEnhancerTest.php
index 20d07c2850..ce67c40e62 100644
--- a/core/tests/Drupal/Tests/Core/Enhancer/ParamConversionEnhancerTest.php
+++ b/core/tests/Drupal/Tests/Core/Enhancer/ParamConversionEnhancerTest.php
@@ -57,7 +57,7 @@ public function testEnhance() {
     $this->paramConverterManager->expects($this->once())
       ->method('convert')
       ->with($this->isType('array'))
-      ->will($this->returnValue($expected));
+      ->willReturn($expected);
 
     $result = $this->paramConversionEnhancer->enhance($defaults, new Request());
 
diff --git a/core/tests/Drupal/Tests/Core/Entity/Access/EntityFormDisplayAccessControlHandlerTest.php b/core/tests/Drupal/Tests/Core/Entity/Access/EntityFormDisplayAccessControlHandlerTest.php
index 56a4b27af4..1b6e6646b6 100644
--- a/core/tests/Drupal/Tests/Core/Entity/Access/EntityFormDisplayAccessControlHandlerTest.php
+++ b/core/tests/Drupal/Tests/Core/Entity/Access/EntityFormDisplayAccessControlHandlerTest.php
@@ -89,11 +89,11 @@ protected function setUp(): void {
     $this->anon
       ->expects($this->any())
       ->method('hasPermission')
-      ->will($this->returnValue(FALSE));
+      ->willReturn(FALSE);
     $this->anon
       ->expects($this->any())
       ->method('id')
-      ->will($this->returnValue(0));
+      ->willReturn(0);
 
     $this->member = $this->createMock(AccountInterface::class);
     $this->member
@@ -105,7 +105,7 @@ protected function setUp(): void {
     $this->member
       ->expects($this->any())
       ->method('id')
-      ->will($this->returnValue(2));
+      ->willReturn(2);
 
     $this->parent_member = $this->createMock(AccountInterface::class);
     $this->parent_member
@@ -117,12 +117,12 @@ protected function setUp(): void {
     $this->parent_member
       ->expects($this->any())
       ->method('id')
-      ->will($this->returnValue(3));
+      ->willReturn(3);
 
     $entity_form_display_entity_type = $this->createMock(ConfigEntityTypeInterface::class);
     $entity_form_display_entity_type->expects($this->any())
       ->method('getAdminPermission')
-      ->will($this->returnValue('Llama'));
+      ->willReturn('Llama');
     $entity_form_display_entity_type
       ->expects($this->any())
       ->method('getKey')
@@ -131,20 +131,16 @@ protected function setUp(): void {
       ]);
     $entity_form_display_entity_type->expects($this->any())
       ->method('entityClassImplements')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
     $entity_form_display_entity_type->expects($this->any())
       ->method('getConfigPrefix')
       ->willReturn('');
 
     $this->moduleHandler = $this->createMock(ModuleHandlerInterface::class);
-    $this->moduleHandler
-      ->expects($this->any())
-      ->method('invokeAllWith')
-      ->will($this->returnValue([]));
     $this->moduleHandler
       ->expects($this->any())
       ->method('invokeAll')
-      ->will($this->returnValue([]));
+      ->willReturn([]);
 
     $storage_access_control_handler = new EntityFormDisplayAccessControlHandler($entity_form_display_entity_type);
     $storage_access_control_handler->setModuleHandler($this->moduleHandler);
@@ -165,12 +161,12 @@ protected function setUp(): void {
     $entity_type_manager
       ->expects($this->any())
       ->method('getDefinition')
-      ->will($this->returnValue($entity_form_display_entity_type));
+      ->willReturn($entity_form_display_entity_type);
 
     $entity_field_manager = $this->createMock(EntityFieldManagerInterface::class);
     $entity_field_manager->expects($this->any())
       ->method('getFieldDefinitions')
-      ->will($this->returnValue([]));
+      ->willReturn([]);
 
     $container = new Container();
     $container->set('entity_type.manager', $entity_type_manager);
diff --git a/core/tests/Drupal/Tests/Core/Entity/Access/EntityViewDisplayAccessControlHandlerTest.php b/core/tests/Drupal/Tests/Core/Entity/Access/EntityViewDisplayAccessControlHandlerTest.php
index c31a945879..2d3c3bab63 100644
--- a/core/tests/Drupal/Tests/Core/Entity/Access/EntityViewDisplayAccessControlHandlerTest.php
+++ b/core/tests/Drupal/Tests/Core/Entity/Access/EntityViewDisplayAccessControlHandlerTest.php
@@ -28,7 +28,7 @@ protected function setUp(): void {
     $this->member
       ->expects($this->any())
       ->method('id')
-      ->will($this->returnValue(2));
+      ->willReturn(2);
 
     $this->entity = new EntityViewDisplay([
       'targetEntityType' => 'foobar',
diff --git a/core/tests/Drupal/Tests/Core/Entity/BaseFieldDefinitionTest.php b/core/tests/Drupal/Tests/Core/Entity/BaseFieldDefinitionTest.php
index ebcd518338..aae62e0e01 100644
--- a/core/tests/Drupal/Tests/Core/Entity/BaseFieldDefinitionTest.php
+++ b/core/tests/Drupal/Tests/Core/Entity/BaseFieldDefinitionTest.php
@@ -51,19 +51,19 @@ protected function setUp(): void {
 
     $field_type_manager->expects($this->any())
       ->method('getDefinitions')
-      ->will($this->returnValue([$this->fieldType => $this->fieldTypeDefinition]));
+      ->willReturn([$this->fieldType => $this->fieldTypeDefinition]);
     $field_type_manager->expects($this->any())
       ->method('getDefinition')
       ->with($this->fieldType)
-      ->will($this->returnValue($this->fieldTypeDefinition));
+      ->willReturn($this->fieldTypeDefinition);
     $field_type_manager->expects($this->any())
       ->method('getDefaultStorageSettings')
       ->with($this->fieldType)
-      ->will($this->returnValue($this->fieldTypeDefinition['storage_settings']));
+      ->willReturn($this->fieldTypeDefinition['storage_settings']);
     $field_type_manager->expects($this->any())
       ->method('getDefaultFieldSettings')
       ->with($this->fieldType)
-      ->will($this->returnValue($this->fieldTypeDefinition['field_settings']));
+      ->willReturn($this->fieldTypeDefinition['field_settings']);
 
     $container = new ContainerBuilder();
     $container->set('plugin.manager.field.field_type', $field_type_manager);
@@ -176,7 +176,7 @@ public function testFieldDefaultValue() {
       ->getMock();
     $data_definition->expects($this->any())
       ->method('getClass')
-      ->will($this->returnValue('Drupal\Core\Field\FieldItemBase'));
+      ->willReturn('Drupal\Core\Field\FieldItemBase');
     $definition->setItemDefinition($data_definition);
 
     // Set default value only with a literal.
@@ -223,7 +223,7 @@ public function testFieldInitialValue() {
       ->getMock();
     $data_definition->expects($this->any())
       ->method('getClass')
-      ->will($this->returnValue('Drupal\Core\Field\FieldItemBase'));
+      ->willReturn('Drupal\Core\Field\FieldItemBase');
     $definition->setItemDefinition($data_definition);
 
     // Set default value only with a literal.
diff --git a/core/tests/Drupal/Tests/Core/Entity/ContentEntityBaseUnitTest.php b/core/tests/Drupal/Tests/Core/Entity/ContentEntityBaseUnitTest.php
index a5b2af8595..f3060f6c38 100644
--- a/core/tests/Drupal/Tests/Core/Entity/ContentEntityBaseUnitTest.php
+++ b/core/tests/Drupal/Tests/Core/Entity/ContentEntityBaseUnitTest.php
@@ -139,16 +139,16 @@ protected function setUp(): void {
     $this->entityType = $this->createMock('\Drupal\Core\Entity\EntityTypeInterface');
     $this->entityType->expects($this->any())
       ->method('getKeys')
-      ->will($this->returnValue([
+      ->willReturn([
         'id' => 'id',
         'uuid' => 'uuid',
-    ]));
+      ]);
 
     $this->entityTypeManager = $this->createMock(EntityTypeManagerInterface::class);
     $this->entityTypeManager->expects($this->any())
       ->method('getDefinition')
       ->with($this->entityTypeId)
-      ->will($this->returnValue($this->entityType));
+      ->willReturn($this->entityType);
 
     $this->entityFieldManager = $this->createMock(EntityFieldManagerInterface::class);
 
@@ -159,35 +159,38 @@ protected function setUp(): void {
     $this->typedDataManager = $this->createMock(TypedDataManagerInterface::class);
     $this->typedDataManager->expects($this->any())
       ->method('getDefinition')
-      ->will($this->returnValue(['class' => '\Drupal\Core\Entity\Plugin\DataType\EntityAdapter']));
+      ->willReturn(['class' => '\Drupal\Core\Entity\Plugin\DataType\EntityAdapter']);
 
     $english = new Language(['id' => 'en']);
     $not_specified = new Language(['id' => LanguageInterface::LANGCODE_NOT_SPECIFIED, 'locked' => TRUE]);
     $this->languageManager = $this->createMock('\Drupal\Core\Language\LanguageManagerInterface');
     $this->languageManager->expects($this->any())
       ->method('getLanguages')
-      ->will($this->returnValue(['en' => $english, LanguageInterface::LANGCODE_NOT_SPECIFIED => $not_specified]));
+      ->willReturn([
+        'en' => $english,
+        LanguageInterface::LANGCODE_NOT_SPECIFIED => $not_specified,
+      ]);
     $this->languageManager->expects($this->any())
       ->method('getLanguage')
       ->with('en')
-      ->will($this->returnValue($english));
+      ->willReturn($english);
     $this->languageManager->expects($this->any())
       ->method('getLanguage')
       ->with(LanguageInterface::LANGCODE_NOT_SPECIFIED)
-      ->will($this->returnValue($not_specified));
+      ->willReturn($not_specified);
 
     $this->fieldTypePluginManager = $this->getMockBuilder('\Drupal\Core\Field\FieldTypePluginManager')
       ->disableOriginalConstructor()
       ->getMock();
     $this->fieldTypePluginManager->expects($this->any())
       ->method('getDefaultStorageSettings')
-      ->will($this->returnValue([]));
+      ->willReturn([]);
     $this->fieldTypePluginManager->expects($this->any())
       ->method('getDefaultFieldSettings')
-      ->will($this->returnValue([]));
+      ->willReturn([]);
     $this->fieldTypePluginManager->expects($this->any())
       ->method('createFieldItemList')
-      ->will($this->returnValue($this->createMock('Drupal\Core\Field\FieldItemListInterface')));
+      ->willReturn($this->createMock('Drupal\Core\Field\FieldItemListInterface'));
 
     $container = new ContainerBuilder();
     $container->set('entity_field.manager', $this->entityFieldManager);
@@ -207,7 +210,7 @@ protected function setUp(): void {
     $this->entityFieldManager->expects($this->any())
       ->method('getFieldDefinitions')
       ->with($this->entityTypeId, $this->bundle)
-      ->will($this->returnValue($this->fieldDefinitions));
+      ->willReturn($this->fieldDefinitions);
 
     $this->entity = $this->getMockForAbstractClass(ContentEntityBase::class, [$values, $this->entityTypeId, $this->bundle], '', TRUE, TRUE, TRUE, ['isNew']);
     $values['defaultLangcode'] = [LanguageInterface::LANGCODE_DEFAULT => LanguageInterface::LANGCODE_NOT_SPECIFIED];
@@ -228,7 +231,7 @@ public function testIsNewRevision() {
     $this->entityType->expects($this->exactly(2))
       ->method('getKey')
       ->with('revision')
-      ->will($this->returnValue('revision_id'));
+      ->willReturn('revision_id');
 
     $field_item_list = $this->getMockBuilder('\Drupal\Core\Field\FieldItemList')
       ->disableOriginalConstructor()
@@ -240,7 +243,7 @@ public function testIsNewRevision() {
     $this->fieldTypePluginManager->expects($this->any())
       ->method('createFieldItemList')
       ->with($this->entity, 'revision_id', NULL)
-      ->will($this->returnValue($field_item_list));
+      ->willReturn($field_item_list);
 
     $this->fieldDefinitions['revision_id']->getItemDefinition()->setClass(get_class($field_item));
 
@@ -257,7 +260,7 @@ public function testSetNewRevisionException() {
     $this->entityType->expects($this->once())
       ->method('hasKey')
       ->with('revision')
-      ->will($this->returnValue(FALSE));
+      ->willReturn(FALSE);
     $this->expectException('LogicException');
     $this->expectExceptionMessage('Entity type ' . $this->entityTypeId . ' does not support revisions.');
     $this->entity->setNewRevision();
@@ -276,7 +279,7 @@ public function testIsDefaultRevision() {
     // The revision for a new entity should always be the default revision.
     $this->entity->expects($this->any())
       ->method('isNew')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
     $this->entity->isDefaultRevision(FALSE);
     $this->assertTrue($this->entity->isDefaultRevision());
   }
@@ -296,14 +299,14 @@ public function testIsTranslatable() {
     $this->entityTypeBundleInfo->expects($this->any())
       ->method('getBundleInfo')
       ->with($this->entityTypeId)
-      ->will($this->returnValue([
+      ->willReturn([
         $this->bundle => [
           'translatable' => TRUE,
         ],
-      ]));
+      ]);
     $this->languageManager->expects($this->any())
       ->method('isMultilingual')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
     $this->assertSame('en', $this->entity->language()->getId());
     $this->assertFalse($this->entity->language()->isLocked());
     $this->assertTrue($this->entity->isTranslatable());
@@ -319,7 +322,7 @@ public function testIsTranslatable() {
   public function testIsTranslatableForMonolingual() {
     $this->languageManager->expects($this->any())
       ->method('isMultilingual')
-      ->will($this->returnValue(FALSE));
+      ->willReturn(FALSE);
     $this->assertFalse($this->entity->isTranslatable());
   }
 
@@ -429,7 +432,7 @@ public function testValidate() {
       ->willReturnOnConsecutiveCalls($empty_violation_list, $non_empty_violation_list);
     $this->typedDataManager->expects($this->exactly(2))
       ->method('getValidator')
-      ->will($this->returnValue($validator));
+      ->willReturn($validator);
     $this->assertCount(0, $this->entity->validate());
     $this->assertCount(1, $this->entity->validate());
   }
@@ -450,10 +453,10 @@ public function testRequiredValidation() {
     $validator->expects($this->once())
       ->method('validate')
       ->with($this->entity->getTypedData())
-      ->will($this->returnValue($empty_violation_list));
+      ->willReturn($empty_violation_list);
     $this->typedDataManager->expects($this->any())
       ->method('getValidator')
-      ->will($this->returnValue($validator));
+      ->willReturn($validator);
 
     /** @var \Drupal\Core\Entity\EntityStorageInterface|\PHPUnit\Framework\MockObject\MockObject $storage */
     $storage = $this->createMock('\Drupal\Core\Entity\EntityStorageInterface');
@@ -466,7 +469,7 @@ public function testRequiredValidation() {
     $this->entityTypeManager->expects($this->any())
       ->method('getStorage')
       ->with($this->entityTypeId)
-      ->will($this->returnValue($storage));
+      ->willReturn($storage);
 
     // Check that entities can be saved normally when validation is not
     // required.
@@ -511,7 +514,7 @@ public function testAccess() {
       ->willReturnOnConsecutiveCalls(TRUE, AccessResult::allowed());
     $this->entityTypeManager->expects($this->exactly(4))
       ->method('getAccessControlHandler')
-      ->will($this->returnValue($access));
+      ->willReturn($access);
     $this->assertTrue($this->entity->access($operation));
     $this->assertEquals(AccessResult::allowed(), $this->entity->access($operation, NULL, TRUE));
     $this->assertTrue($this->entity->access('create'));
diff --git a/core/tests/Drupal/Tests/Core/Entity/EntityCreateAccessCheckTest.php b/core/tests/Drupal/Tests/Core/Entity/EntityCreateAccessCheckTest.php
index f499953353..4496499df8 100644
--- a/core/tests/Drupal/Tests/Core/Entity/EntityCreateAccessCheckTest.php
+++ b/core/tests/Drupal/Tests/Core/Entity/EntityCreateAccessCheckTest.php
@@ -87,11 +87,11 @@ public function testAccess($entity_bundle, $requirement, $access, $expected, $ex
       $access_control_handler->expects($this->once())
         ->method('createAccess')
         ->with($entity_bundle)
-        ->will($this->returnValue($access_result));
+        ->willReturn($access_result);
 
       $this->entityTypeManager->expects($this->any())
         ->method('getAccessControlHandler')
-        ->will($this->returnValue($access_control_handler));
+        ->willReturn($access_control_handler);
     }
 
     $applies_check = new EntityCreateAccessCheck($this->entityTypeManager);
@@ -102,7 +102,7 @@ public function testAccess($entity_bundle, $requirement, $access, $expected, $ex
     $route->expects($this->any())
       ->method('getRequirement')
       ->with('_entity_create_access')
-      ->will($this->returnValue($requirement));
+      ->willReturn($requirement);
 
     $raw_variables = new InputBag();
     if ($entity_bundle) {
@@ -112,7 +112,7 @@ public function testAccess($entity_bundle, $requirement, $access, $expected, $ex
     $route_match = $this->createMock('Drupal\Core\Routing\RouteMatchInterface');
     $route_match->expects($this->any())
       ->method('getRawParameters')
-      ->will($this->returnValue($raw_variables));
+      ->willReturn($raw_variables);
 
     $account = $this->createMock('Drupal\Core\Session\AccountInterface');
     $this->assertEquals($expected_access_result, $applies_check->access($route, $route_match, $account));
diff --git a/core/tests/Drupal/Tests/Core/Entity/EntityFieldManagerTest.php b/core/tests/Drupal/Tests/Core/Entity/EntityFieldManagerTest.php
index df404f8e7f..bfcd5ef67b 100644
--- a/core/tests/Drupal/Tests/Core/Entity/EntityFieldManagerTest.php
+++ b/core/tests/Drupal/Tests/Core/Entity/EntityFieldManagerTest.php
@@ -11,13 +11,13 @@
 use Drupal\Core\Cache\Cache;
 use Drupal\Core\Cache\CacheBackendInterface;
 use Drupal\Core\Cache\CacheTagsInvalidatorInterface;
-use Drupal\Core\Config\Entity\ConfigEntityStorageInterface;
 use Drupal\Core\Entity\ContentEntityInterface;
 use Drupal\Core\Entity\ContentEntityTypeInterface;
 use Drupal\Core\Entity\EntityDisplayRepositoryInterface;
 use Drupal\Core\Entity\EntityFieldManager;
 use Drupal\Core\Entity\EntityInterface;
 use Drupal\Core\Entity\EntityLastInstalledSchemaRepositoryInterface;
+use Drupal\Core\Entity\EntityStorageInterface;
 use Drupal\Core\Entity\EntityTypeBundleInfoInterface;
 use Drupal\Core\Entity\EntityTypeInterface;
 use Drupal\Core\Entity\EntityTypeManagerInterface;
@@ -247,8 +247,54 @@ public function testGetBaseFieldDefinitions() {
   public function testGetFieldDefinitions() {
     $field_definition = $this->setUpEntityWithFieldDefinition();
 
+    $bundle_field_definition = $this->prophesize()
+      ->willImplement(FieldDefinitionInterface::class)
+      ->willImplement(FieldStorageDefinitionInterface::class);
+
+    // Define bundle fields to be stored on the default Entity class.
+    $bundle_fields = [
+      'the_entity_id' => [
+        'test_entity_bundle' => [
+          'id_bundle' => $bundle_field_definition->reveal(),
+        ],
+        'test_entity_bundle_class' => [
+          'some_extra_field' => $bundle_field_definition->reveal(),
+        ],
+      ],
+    ];
+
+    // Define bundle fields to be stored on the bundle class.
+    $bundle_class_fields = [
+      'the_entity_id' => [
+        'test_entity_bundle_class' => [
+          'id_bundle_class' => $bundle_field_definition->reveal(),
+        ],
+      ],
+    ];
+
+    EntityTypeManagerTestEntity::$bundleFieldDefinitions = $bundle_fields;
+    EntityTypeManagerTestEntityBundle::$bundleClassFieldDefinitions = $bundle_class_fields;
+
+    // Test that only base fields are retrieved.
     $expected = ['id' => $field_definition];
+    $this->assertSame($expected, $this->entityFieldManager->getFieldDefinitions('test_entity_type', 'some_other_bundle'));
+
+    // Test that base fields and bundle fields from the default entity class are
+    // retrieved.
+    $expected = [
+      'id' => $field_definition,
+      'id_bundle' => $bundle_fields['the_entity_id']['test_entity_bundle']['id_bundle'],
+    ];
     $this->assertSame($expected, $this->entityFieldManager->getFieldDefinitions('test_entity_type', 'test_entity_bundle'));
+
+    // Test that base fields and bundle fields from the bundle class and
+    // entity class are retrieved
+    $expected = [
+      'id' => $field_definition,
+      'some_extra_field' => $bundle_fields['the_entity_id']['test_entity_bundle_class']['some_extra_field'],
+      'id_bundle_class' => $bundle_class_fields['the_entity_id']['test_entity_bundle_class']['id_bundle_class'],
+    ];
+    $this->assertSame($expected, $this->entityFieldManager->getFieldDefinitions('test_entity_type', 'test_entity_bundle_class'));
   }
 
   /**
@@ -575,8 +621,18 @@ protected function setUpEntityWithFieldDefinition($custom_invoke_all = FALSE, $f
     $this->entityType = $this->prophesize(EntityTypeInterface::class);
     $this->setUpEntityTypeDefinitions(['test_entity_type' => $this->entityType, 'base_field_override' => $override_entity_type]);
 
-    $storage = $this->prophesize(ConfigEntityStorageInterface::class);
+    $storage = $this->prophesize(EntityStorageInterface::class);
     $storage->loadMultiple(Argument::type('array'))->willReturn([]);
+
+    // By default, make the storage entity class lookup return the
+    // EntityTypeManagerTestEntity class
+    $storage->getEntityClass(NULL)->willReturn(EntityTypeManagerTestEntity::class);
+    $storage->getEntityClass(Argument::type('string'))->willReturn(EntityTypeManagerTestEntity::class);
+    // When using the "test_entity_bundle_class" bundle, return the
+    // EntityTypeManagerTestEntityBundle class
+    $storage->getEntityClass('test_entity_bundle_class')->willReturn(EntityTypeManagerTestEntityBundle::class);
+
+    $this->entityTypeManager->getStorage('test_entity_type')->willReturn($storage->reveal());
     $this->entityTypeManager->getStorage('base_field_override')->willReturn($storage->reveal());
 
     $this->entityType->getClass()->willReturn($entity_class);
@@ -864,3 +920,33 @@ public static function bundleFieldDefinitions(EntityTypeInterface $entity_type,
   }
 
 }
+
+/**
+ * Provides a bundle specific class with dummy static method implementations.
+ */
+abstract class EntityTypeManagerTestEntityBundle extends EntityTypeManagerTestEntity {
+
+  /**
+   * The bundle class field definitions.
+   *
+   * @var array[]
+   *   Keys are entity type IDs, values are arrays of which the keys are bundle
+   *   names and the values are field definitions.
+   */
+  public static $bundleClassFieldDefinitions = [];
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function bundleFieldDefinitions(EntityTypeInterface $entity_type, $bundle, array $base_field_definitions) {
+    $definitions = parent::bundleFieldDefinitions($entity_type, $bundle, $base_field_definitions);
+
+    if (isset(static::$bundleClassFieldDefinitions[$entity_type->id()][$bundle])) {
+      $definitions += static::$bundleClassFieldDefinitions[$entity_type->id()][$bundle];
+    }
+
+    return $definitions;
+
+  }
+
+}
diff --git a/core/tests/Drupal/Tests/Core/Entity/EntityFormBuilderTest.php b/core/tests/Drupal/Tests/Core/Entity/EntityFormBuilderTest.php
index 95a5809a6f..56ae73b6fb 100644
--- a/core/tests/Drupal/Tests/Core/Entity/EntityFormBuilderTest.php
+++ b/core/tests/Drupal/Tests/Core/Entity/EntityFormBuilderTest.php
@@ -52,21 +52,21 @@ public function testGetForm() {
     $form_controller = $this->createMock('Drupal\Core\Entity\EntityFormInterface');
     $form_controller->expects($this->any())
       ->method('getFormId')
-      ->will($this->returnValue('the_form_id'));
+      ->willReturn('the_form_id');
     $this->entityTypeManager->expects($this->any())
       ->method('getFormObject')
       ->with('the_entity_type', 'default')
-      ->will($this->returnValue($form_controller));
+      ->willReturn($form_controller);
 
     $this->formBuilder->expects($this->once())
       ->method('buildForm')
       ->with($form_controller, $this->isInstanceOf('Drupal\Core\Form\FormStateInterface'))
-      ->will($this->returnValue('the form contents'));
+      ->willReturn('the form contents');
 
     $entity = $this->createMock('Drupal\Core\Entity\EntityInterface');
     $entity->expects($this->once())
       ->method('getEntityTypeId')
-      ->will($this->returnValue('the_entity_type'));
+      ->willReturn('the_entity_type');
 
     $this->assertSame('the form contents', $this->entityFormBuilder->getForm($entity));
   }
diff --git a/core/tests/Drupal/Tests/Core/Entity/EntityFormTest.php b/core/tests/Drupal/Tests/Core/Entity/EntityFormTest.php
index efa591ad37..b4cd603777 100644
--- a/core/tests/Drupal/Tests/Core/Entity/EntityFormTest.php
+++ b/core/tests/Drupal/Tests/Core/Entity/EntityFormTest.php
@@ -56,10 +56,10 @@ public function testFormId($expected, $definition) {
 
     $entity->expects($this->any())
       ->method('getEntityType')
-      ->will($this->returnValue($this->entityType));
+      ->willReturn($this->entityType);
     $entity->expects($this->any())
       ->method('bundle')
-      ->will($this->returnValue($definition['bundle']));
+      ->willReturn($definition['bundle']);
 
     $this->entityForm->setEntity($entity);
     $this->entityForm->setOperation($definition['operation']);
@@ -72,31 +72,41 @@ public function testFormId($expected, $definition) {
    */
   public function providerTestFormIds() {
     return [
-      ['node_article_form', [
+      [
+        'node_article_form',
+        [
           'entity_type' => 'node',
           'bundle' => 'article',
           'operation' => 'default',
         ],
       ],
-      ['node_article_delete_form', [
+      [
+        'node_article_delete_form',
+        [
           'entity_type' => 'node',
           'bundle' => 'article',
           'operation' => 'delete',
         ],
       ],
-      ['user_user_form', [
+      [
+        'user_user_form',
+        [
           'entity_type' => 'user',
           'bundle' => 'user',
           'operation' => 'default',
         ],
       ],
-      ['user_form', [
+      [
+        'user_form',
+        [
           'entity_type' => 'user',
           'bundle' => '',
           'operation' => 'default',
         ],
       ],
-      ['user_delete_form', [
+      [
+        'user_delete_form',
+        [
           'entity_type' => 'user',
           'bundle' => '',
           'operation' => 'delete',
diff --git a/core/tests/Drupal/Tests/Core/Entity/EntityLinkTest.php b/core/tests/Drupal/Tests/Core/Entity/EntityLinkTest.php
index 20624988f8..757d5fbfbc 100644
--- a/core/tests/Drupal/Tests/Core/Entity/EntityLinkTest.php
+++ b/core/tests/Drupal/Tests/Core/Entity/EntityLinkTest.php
@@ -90,7 +90,7 @@ public function testToLink($entity_label, $link_text, $expected_text, $link_rel
       ->expects($this->any())
       ->method('getDefinition')
       ->with($entity_type_id)
-      ->will($this->returnValue($entity_type));
+      ->willReturn($entity_type);
 
     /** @var \Drupal\Core\Entity\Entity $entity */
     $entity = $this->getMockForAbstractClass('Drupal\Core\Entity\EntityBase', [
diff --git a/core/tests/Drupal/Tests/Core/Entity/EntityListBuilderTest.php b/core/tests/Drupal/Tests/Core/Entity/EntityListBuilderTest.php
index cd2a7049d4..470a2cd695 100644
--- a/core/tests/Drupal/Tests/Core/Entity/EntityListBuilderTest.php
+++ b/core/tests/Drupal/Tests/Core/Entity/EntityListBuilderTest.php
@@ -16,7 +16,7 @@
 use Drupal\Tests\UnitTestCase;
 
 /**
- * @coversDefaultClass \Drupal\entity_test\EntityTestListBuilder
+ * @coversDefaultClass \Drupal\Core\Entity\EntityListBuilder
  * @group Entity
  */
 class EntityListBuilderTest extends UnitTestCase {
@@ -107,7 +107,7 @@ public function testGetOperations() {
     $this->moduleHandler->expects($this->once())
       ->method('invokeAll')
       ->with('entity_operation', [$this->role])
-      ->will($this->returnValue($operations));
+      ->willReturn($operations);
     $this->moduleHandler->expects($this->once())
       ->method('alter')
       ->with('entity_operation');
@@ -116,10 +116,10 @@ public function testGetOperations() {
 
     $this->role->expects($this->any())
       ->method('access')
-      ->will($this->returnValue(AccessResult::allowed()));
+      ->willReturn(AccessResult::allowed());
     $this->role->expects($this->any())
       ->method('hasLinkTemplate')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
     $url = $this->getMockBuilder('\Drupal\Core\Url')
       ->disableOriginalConstructor()
       ->getMock();
@@ -128,7 +128,7 @@ public function testGetOperations() {
       ->with(['query' => ['destination' => '/foo/bar']]);
     $this->role->expects($this->any())
       ->method('toUrl')
-      ->will($this->returnValue($url));
+      ->willReturn($url);
 
     $this->redirectDestination->expects($this->atLeastOnce())
       ->method('getAsArray')
diff --git a/core/tests/Drupal/Tests/Core/Entity/EntityResolverManagerTest.php b/core/tests/Drupal/Tests/Core/Entity/EntityResolverManagerTest.php
index ad3452f638..e01e0b57f5 100644
--- a/core/tests/Drupal/Tests/Core/Entity/EntityResolverManagerTest.php
+++ b/core/tests/Drupal/Tests/Core/Entity/EntityResolverManagerTest.php
@@ -444,23 +444,23 @@ protected function setupEntityTypes() {
     $definition = $this->createMock('Drupal\Core\Entity\EntityTypeInterface');
     $definition->expects($this->any())
       ->method('getClass')
-      ->will($this->returnValue('Drupal\Tests\Core\Entity\TestEntity'));
+      ->willReturn('Drupal\Tests\Core\Entity\TestEntity');
     $definition->expects($this->any())
       ->method('isRevisionable')
       ->willReturn(FALSE);
     $revisionable_definition = $this->createMock('Drupal\Core\Entity\EntityTypeInterface');
     $revisionable_definition->expects($this->any())
       ->method('getClass')
-      ->will($this->returnValue('Drupal\Tests\Core\Entity\TestEntity'));
+      ->willReturn('Drupal\Tests\Core\Entity\TestEntity');
     $revisionable_definition->expects($this->any())
       ->method('isRevisionable')
       ->willReturn(TRUE);
     $this->entityTypeManager->expects($this->any())
       ->method('getDefinitions')
-      ->will($this->returnValue([
+      ->willReturn([
         'entity_test' => $definition,
         'entity_test_rev' => $revisionable_definition,
-      ]));
+      ]);
     $this->entityTypeManager->expects($this->any())
       ->method('getDefinition')
       ->willReturnCallback(function ($entity_type) use ($definition, $revisionable_definition) {
diff --git a/core/tests/Drupal/Tests/Core/Entity/EntityTypeBundleInfoTest.php b/core/tests/Drupal/Tests/Core/Entity/EntityTypeBundleInfoTest.php
index 591f6ded76..628303412a 100644
--- a/core/tests/Drupal/Tests/Core/Entity/EntityTypeBundleInfoTest.php
+++ b/core/tests/Drupal/Tests/Core/Entity/EntityTypeBundleInfoTest.php
@@ -194,11 +194,15 @@ public function testGetBundleInfo($entity_type_id, $expected) {
    */
   public function providerTestGetBundleInfo() {
     return [
-      ['apple', [
+      [
+        'apple',
+        [
           'apple' => ['label' => 'Apple'],
         ],
       ],
-      ['banana', [
+      [
+        'banana',
+        [
           'banana' => ['label' => 'Banana'],
         ],
       ],
diff --git a/core/tests/Drupal/Tests/Core/Entity/EntityUnitTest.php b/core/tests/Drupal/Tests/Core/Entity/EntityUnitTest.php
index b37c34a347..ede995aa5f 100644
--- a/core/tests/Drupal/Tests/Core/Entity/EntityUnitTest.php
+++ b/core/tests/Drupal/Tests/Core/Entity/EntityUnitTest.php
@@ -102,7 +102,7 @@ protected function setUp(): void {
     $this->entityTypeManager->expects($this->any())
       ->method('getDefinition')
       ->with($this->entityTypeId)
-      ->will($this->returnValue($this->entityType));
+      ->willReturn($this->entityType);
 
     $this->uuid = $this->createMock('\Drupal\Component\Uuid\UuidInterface');
 
@@ -110,7 +110,7 @@ protected function setUp(): void {
     $this->languageManager->expects($this->any())
       ->method('getLanguage')
       ->with('en')
-      ->will($this->returnValue(new Language(['id' => 'en'])));
+      ->willReturn(new Language(['id' => 'en']));
 
     $this->cacheTagsInvalidator = $this->createMock('Drupal\Core\Cache\CacheTagsInvalidator');
 
@@ -172,18 +172,18 @@ public function testLabel() {
     $this->entityType->expects($this->atLeastOnce())
       ->method('getKey')
       ->with('label')
-      ->will($this->returnValue('label'));
+      ->willReturn('label');
 
     // Set a dummy property on the entity under test to test that the label can
     // be returned form a property if there is no callback.
     $this->entityTypeManager->expects($this->atLeastOnce())
       ->method('getDefinition')
       ->with($this->entityTypeId)
-      ->will($this->returnValue([
+      ->willReturn([
         'entity_keys' => [
           'label' => 'label',
         ],
-      ]));
+      ]);
     $this->entity->label = $property_label;
 
     $this->assertSame($property_label, $this->entity->label());
@@ -198,13 +198,13 @@ public function testAccess() {
     $access->expects($this->once())
       ->method('access')
       ->with($this->entity, $operation)
-      ->will($this->returnValue(AccessResult::allowed()));
+      ->willReturn(AccessResult::allowed());
     $access->expects($this->once())
       ->method('createAccess')
-      ->will($this->returnValue(AccessResult::allowed()));
+      ->willReturn(AccessResult::allowed());
     $this->entityTypeManager->expects($this->exactly(2))
       ->method('getAccessControlHandler')
-      ->will($this->returnValue($access));
+      ->willReturn($access);
 
     $this->assertEquals(AccessResult::allowed(), $this->entity->access($operation));
     $this->assertEquals(AccessResult::allowed(), $this->entity->access('create'));
@@ -260,12 +260,12 @@ public function testLoad() {
     $storage->expects($this->once())
       ->method('load')
       ->with(1)
-      ->will($this->returnValue($this->entity));
+      ->willReturn($this->entity);
 
     $this->entityTypeManager->expects($this->once())
       ->method('getStorage')
       ->with($this->entityTypeId)
-      ->will($this->returnValue($storage));
+      ->willReturn($storage);
 
     \Drupal::getContainer()->set('entity_type.repository', $entity_type_repository);
 
@@ -294,12 +294,12 @@ public function testLoadMultiple() {
     $storage->expects($this->once())
       ->method('loadMultiple')
       ->with([1])
-      ->will($this->returnValue([1 => $this->entity]));
+      ->willReturn([1 => $this->entity]);
 
     $this->entityTypeManager->expects($this->once())
       ->method('getStorage')
       ->with($this->entityTypeId)
-      ->will($this->returnValue($storage));
+      ->willReturn($storage);
 
     \Drupal::getContainer()->set('entity_type.repository', $entity_type_repository);
 
@@ -326,12 +326,12 @@ public function testCreate() {
     $storage->expects($this->once())
       ->method('create')
       ->with([])
-      ->will($this->returnValue($this->entity));
+      ->willReturn($this->entity);
 
     $this->entityTypeManager->expects($this->once())
       ->method('getStorage')
       ->with($this->entityTypeId)
-      ->will($this->returnValue($storage));
+      ->willReturn($storage);
 
     \Drupal::getContainer()->set('entity_type.repository', $entity_type_repository);
 
@@ -352,7 +352,7 @@ public function testSave() {
     $this->entityTypeManager->expects($this->once())
       ->method('getStorage')
       ->with($this->entityTypeId)
-      ->will($this->returnValue($storage));
+      ->willReturn($storage);
 
     $this->entity->save();
   }
@@ -370,7 +370,7 @@ public function testDelete() {
     $this->entityTypeManager->expects($this->once())
       ->method('getStorage')
       ->with($this->entityTypeId)
-      ->will($this->returnValue($storage));
+      ->willReturn($storage);
 
     $this->entity->delete();
   }
diff --git a/core/tests/Drupal/Tests/Core/Entity/FieldDefinitionTest.php b/core/tests/Drupal/Tests/Core/Entity/FieldDefinitionTest.php
index a857c6f253..1343dd9abd 100644
--- a/core/tests/Drupal/Tests/Core/Entity/FieldDefinitionTest.php
+++ b/core/tests/Drupal/Tests/Core/Entity/FieldDefinitionTest.php
@@ -205,7 +205,7 @@ public function testFieldDefaultValue($factory_name) {
       ->getMock();
     $data_definition->expects($this->any())
       ->method('getClass')
-      ->will($this->returnValue('Drupal\Core\Field\FieldItemBase'));
+      ->willReturn('Drupal\Core\Field\FieldItemBase');
     $definition->setItemDefinition($data_definition);
 
     // Set default value only with a literal.
diff --git a/core/tests/Drupal/Tests/Core/Entity/KeyValueStore/KeyValueEntityStorageTest.php b/core/tests/Drupal/Tests/Core/Entity/KeyValueStore/KeyValueEntityStorageTest.php
index 27784bce4c..90b0f1c6ce 100644
--- a/core/tests/Drupal/Tests/Core/Entity/KeyValueStore/KeyValueEntityStorageTest.php
+++ b/core/tests/Drupal/Tests/Core/Entity/KeyValueStore/KeyValueEntityStorageTest.php
@@ -100,14 +100,14 @@ protected function setUp(): void {
   protected function setUpKeyValueEntityStorage($uuid_key = 'uuid') {
     $this->entityType->expects($this->atLeastOnce())
       ->method('getKey')
-      ->will($this->returnValueMap([
+      ->willReturnMap([
         ['id', 'id'],
         ['uuid', $uuid_key],
         ['langcode', 'langcode'],
-      ]));
+      ]);
     $this->entityType->expects($this->atLeastOnce())
       ->method('id')
-      ->will($this->returnValue('test_entity_type'));
+      ->willReturn('test_entity_type');
     $this->entityType->expects($this->any())
       ->method('getListCacheTags')
       ->willReturn(['test_entity_type_list']);
@@ -116,7 +116,7 @@ protected function setUpKeyValueEntityStorage($uuid_key = 'uuid') {
     $this->entityTypeManager->expects($this->any())
       ->method('getDefinition')
       ->with('test_entity_type')
-      ->will($this->returnValue($this->entityType));
+      ->willReturn($this->entityType);
 
     $this->entityFieldManager = $this->createMock(EntityFieldManagerInterface::class);
 
@@ -129,10 +129,10 @@ protected function setUpKeyValueEntityStorage($uuid_key = 'uuid') {
     $language = new Language(['langcode' => 'en']);
     $this->languageManager->expects($this->any())
       ->method('getDefaultLanguage')
-      ->will($this->returnValue($language));
+      ->willReturn($language);
     $this->languageManager->expects($this->any())
       ->method('getCurrentLanguage')
-      ->will($this->returnValue($language));
+      ->willReturn($language);
 
     $this->entityStorage = new KeyValueEntityStorage($this->entityType, $this->keyValueStore, $this->uuidService, $this->languageManager, new MemoryCache());
     $this->entityStorage->setModuleHandler($this->moduleHandler);
@@ -152,7 +152,7 @@ protected function setUpKeyValueEntityStorage($uuid_key = 'uuid') {
   public function testCreateWithPredefinedUuid() {
     $this->entityType->expects($this->once())
       ->method('getClass')
-      ->will($this->returnValue(get_class($this->getMockEntity())));
+      ->willReturn(get_class($this->getMockEntity()));
     $this->setUpKeyValueEntityStorage();
 
     $this->moduleHandler->expects($this->exactly(2))
@@ -175,7 +175,7 @@ public function testCreateWithoutUuidKey() {
     // Set up the entity storage to expect no UUID key.
     $this->entityType->expects($this->once())
       ->method('getClass')
-      ->will($this->returnValue(get_class($this->getMockEntity())));
+      ->willReturn(get_class($this->getMockEntity()));
     $this->setUpKeyValueEntityStorage(NULL);
 
     $this->moduleHandler->expects($this->exactly(2))
@@ -200,7 +200,7 @@ public function testCreate() {
     $entity = $this->getMockEntity('Drupal\Core\Entity\EntityBase', [], ['toArray']);
     $this->entityType->expects($this->once())
       ->method('getClass')
-      ->will($this->returnValue(get_class($entity)));
+      ->willReturn(get_class($entity));
     $this->setUpKeyValueEntityStorage();
 
     $this->moduleHandler->expects($this->exactly(2))
@@ -208,7 +208,7 @@ public function testCreate() {
       ->withConsecutive(['test_entity_type_create'], ['entity_create']);
     $this->uuidService->expects($this->once())
       ->method('generate')
-      ->will($this->returnValue('bar'));
+      ->willReturn('bar');
 
     $entity = $this->entityStorage->create(['id' => 'foo']);
     $this->assertInstanceOf('Drupal\Core\Entity\EntityInterface', $entity);
@@ -235,7 +235,7 @@ public function testSaveInsert(EntityInterface $entity) {
     $this->keyValueStore->expects($this->exactly(2))
       ->method('has')
       ->with('foo')
-      ->will($this->returnValue(FALSE));
+      ->willReturn(FALSE);
     $this->keyValueStore->expects($this->never())
       ->method('getMultiple');
     $this->keyValueStore->expects($this->never())
@@ -243,7 +243,7 @@ public function testSaveInsert(EntityInterface $entity) {
 
     $entity->expects($this->atLeastOnce())
       ->method('toArray')
-      ->will($this->returnValue($expected));
+      ->willReturn($expected);
 
     $this->moduleHandler->expects($this->exactly(4))
       ->method('invokeAll')
@@ -275,18 +275,18 @@ public function testSaveInsert(EntityInterface $entity) {
   public function testSaveUpdate(EntityInterface $entity) {
     $this->entityType->expects($this->once())
       ->method('getClass')
-      ->will($this->returnValue(get_class($entity)));
+      ->willReturn(get_class($entity));
     $this->setUpKeyValueEntityStorage();
 
     $expected = ['id' => 'foo'];
     $this->keyValueStore->expects($this->exactly(2))
       ->method('has')
       ->with('foo')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
     $this->keyValueStore->expects($this->once())
       ->method('getMultiple')
       ->with(['foo'])
-      ->will($this->returnValue([['id' => 'foo']]));
+      ->willReturn([['id' => 'foo']]);
     $this->keyValueStore->expects($this->never())
       ->method('delete');
     $this->moduleHandler->expects($this->exactly(4))
@@ -323,12 +323,12 @@ public function testSaveConfigEntity() {
     $expected = ['id' => 'foo'];
     $entity->expects($this->atLeastOnce())
       ->method('toArray')
-      ->will($this->returnValue($expected));
+      ->willReturn($expected);
 
     $this->keyValueStore->expects($this->exactly(2))
       ->method('has')
       ->with('foo')
-      ->will($this->returnValue(FALSE));
+      ->willReturn(FALSE);
     $this->keyValueStore->expects($this->once())
       ->method('set')
       ->with('foo', $expected);
@@ -349,21 +349,21 @@ public function testSaveConfigEntity() {
   public function testSaveRenameConfigEntity(ConfigEntityInterface $entity) {
     $this->entityType->expects($this->once())
       ->method('getClass')
-      ->will($this->returnValue(get_class($entity)));
+      ->willReturn(get_class($entity));
     $this->setUpKeyValueEntityStorage();
 
     $expected = ['id' => 'foo'];
     $entity->expects($this->once())
       ->method('toArray')
-      ->will($this->returnValue($expected));
+      ->willReturn($expected);
     $this->keyValueStore->expects($this->exactly(2))
       ->method('has')
       ->with('foo')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
     $this->keyValueStore->expects($this->once())
       ->method('getMultiple')
       ->with(['foo'])
-      ->will($this->returnValue([['id' => 'foo']]));
+      ->willReturn([['id' => 'foo']]);
     $this->keyValueStore->expects($this->once())
       ->method('delete')
       ->with('foo');
@@ -388,16 +388,16 @@ public function testSaveRenameConfigEntity(ConfigEntityInterface $entity) {
   public function testSaveContentEntity() {
     $this->entityType->expects($this->any())
       ->method('getKeys')
-      ->will($this->returnValue([
+      ->willReturn([
         'id' => 'id',
-      ]));
+      ]);
     $this->setUpKeyValueEntityStorage();
 
     $expected = ['id' => 'foo'];
     $this->keyValueStore->expects($this->exactly(2))
       ->method('has')
       ->with('foo')
-      ->will($this->returnValue(FALSE));
+      ->willReturn(FALSE);
     $this->keyValueStore->expects($this->once())
       ->method('set')
       ->with('foo', $expected);
@@ -409,10 +409,10 @@ public function testSaveContentEntity() {
     ]);
     $entity->expects($this->atLeastOnce())
       ->method('id')
-      ->will($this->returnValue('foo'));
+      ->willReturn('foo');
     $entity->expects($this->once())
       ->method('toArray')
-      ->will($this->returnValue($expected));
+      ->willReturn($expected);
     $this->entityStorage->save($entity);
   }
 
@@ -446,7 +446,7 @@ public function testSaveDuplicate() {
     $entity->enforceIsNew();
     $this->keyValueStore->expects($this->once())
       ->method('has')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
     $this->keyValueStore->expects($this->never())
       ->method('set');
     $this->keyValueStore->expects($this->never())
@@ -464,13 +464,13 @@ public function testLoad() {
     $entity = $this->getMockEntity();
     $this->entityType->expects($this->once())
       ->method('getClass')
-      ->will($this->returnValue(get_class($entity)));
+      ->willReturn(get_class($entity));
     $this->setUpKeyValueEntityStorage();
 
     $this->keyValueStore->expects($this->once())
       ->method('getMultiple')
       ->with(['foo'])
-      ->will($this->returnValue([['id' => 'foo']]));
+      ->willReturn([['id' => 'foo']]);
     $entity = $this->entityStorage->load('foo');
     $this->assertInstanceOf('Drupal\Core\Entity\EntityInterface', $entity);
     $this->assertSame('foo', $entity->id());
@@ -485,7 +485,7 @@ public function testLoadMissingEntity() {
     $this->keyValueStore->expects($this->once())
       ->method('getMultiple')
       ->with(['foo'])
-      ->will($this->returnValue([]));
+      ->willReturn([]);
     $entity = $this->entityStorage->load('foo');
     $this->assertNull($entity);
   }
@@ -501,12 +501,12 @@ public function testLoadMultipleAll() {
     $expected['bar'] = $this->getMockEntity('Drupal\Core\Entity\EntityBase', [['id' => 'bar']]);
     $this->entityType->expects($this->once())
       ->method('getClass')
-      ->will($this->returnValue(get_class(reset($expected))));
+      ->willReturn(get_class(reset($expected)));
     $this->setUpKeyValueEntityStorage();
 
     $this->keyValueStore->expects($this->once())
       ->method('getAll')
-      ->will($this->returnValue([['id' => 'foo'], ['id' => 'bar']]));
+      ->willReturn([['id' => 'foo'], ['id' => 'bar']]);
     $entities = $this->entityStorage->loadMultiple();
     foreach ($entities as $id => $entity) {
       $this->assertInstanceOf('Drupal\Core\Entity\EntityInterface', $entity);
@@ -525,14 +525,14 @@ public function testLoadMultipleIds() {
     $entity = $this->getMockEntity('Drupal\Core\Entity\EntityBase', [['id' => 'foo']]);
     $this->entityType->expects($this->once())
       ->method('getClass')
-      ->will($this->returnValue(get_class($entity)));
+      ->willReturn(get_class($entity));
     $this->setUpKeyValueEntityStorage();
 
     $expected[] = $entity;
     $this->keyValueStore->expects($this->once())
       ->method('getMultiple')
       ->with(['foo'])
-      ->will($this->returnValue([['id' => 'foo']]));
+      ->willReturn([['id' => 'foo']]);
     $entities = $this->entityStorage->loadMultiple(['foo']);
     foreach ($entities as $id => $entity) {
       $this->assertInstanceOf('Drupal\Core\Entity\EntityInterface', $entity);
diff --git a/core/tests/Drupal/Tests/Core/Entity/Sql/DefaultTableMappingTest.php b/core/tests/Drupal/Tests/Core/Entity/Sql/DefaultTableMappingTest.php
index cd1be3f9fc..66862dedf4 100644
--- a/core/tests/Drupal/Tests/Core/Entity/Sql/DefaultTableMappingTest.php
+++ b/core/tests/Drupal/Tests/Core/Entity/Sql/DefaultTableMappingTest.php
@@ -462,10 +462,10 @@ public function testGetDedicatedTableName($info, $expected_data_table, $expected
     $definition = $this->setUpDefinition($field_name, []);
     $definition->expects($this->any())
       ->method('getTargetEntityTypeId')
-      ->will($this->returnValue($entity_type_id));
+      ->willReturn($entity_type_id);
     $definition->expects($this->any())
       ->method('getUniqueStorageIdentifier')
-      ->will($this->returnValue($entity_type_id . '-' . $field_name));
+      ->willReturn($entity_type_id . '-' . $field_name);
 
     $this->entityType
       ->expects($this->any())
@@ -594,10 +594,10 @@ protected function setUpDefinition($name, array $column_names, $base_field = TRU
       ->willReturn($base_field);
     $definition->expects($this->any())
       ->method('getName')
-      ->will($this->returnValue($name));
+      ->willReturn($name);
     $definition->expects($this->any())
       ->method('getColumns')
-      ->will($this->returnValue(array_fill_keys($column_names, [])));
+      ->willReturn(array_fill_keys($column_names, []));
     return $definition;
   }
 
diff --git a/core/tests/Drupal/Tests/Core/Entity/Sql/SqlContentEntityStorageSchemaTest.php b/core/tests/Drupal/Tests/Core/Entity/Sql/SqlContentEntityStorageSchemaTest.php
index 7ae6eeba57..02b2c7e060 100644
--- a/core/tests/Drupal/Tests/Core/Entity/Sql/SqlContentEntityStorageSchemaTest.php
+++ b/core/tests/Drupal/Tests/Core/Entity/Sql/SqlContentEntityStorageSchemaTest.php
@@ -86,7 +86,7 @@ protected function setUp(): void {
 
     $this->storage->expects($this->any())
       ->method('getBaseTable')
-      ->will($this->returnValue('entity_test'));
+      ->willReturn('entity_test');
 
     // Add an ID field. This also acts as a test for a simple, single-column
     // field.
@@ -388,7 +388,7 @@ public function testGetSchemaBase() {
 
     $this->storageSchema->expects($this->any())
       ->method('getTableMapping')
-      ->will($this->returnValue($table_mapping));
+      ->willReturn($table_mapping);
 
     $this->assertNull(
       $this->storageSchema->onEntityTypeCreate($this->entityType)
@@ -422,11 +422,11 @@ public function testGetSchemaRevisionable() {
 
     $this->entityType->expects($this->any())
       ->method('getRevisionMetadataKeys')
-      ->will($this->returnValue([]));
+      ->willReturn([]);
 
     $this->storage->expects($this->exactly(9))
       ->method('getRevisionTable')
-      ->will($this->returnValue('entity_test_revision'));
+      ->willReturn('entity_test_revision');
 
     $this->setUpStorageDefinition('revision_id', [
       'columns' => [
@@ -495,7 +495,7 @@ public function testGetSchemaRevisionable() {
 
     $this->storageSchema->expects($this->any())
       ->method('getTableMapping')
-      ->will($this->returnValue($table_mapping));
+      ->willReturn($table_mapping);
 
     $this->storageSchema->onEntityTypeCreate($this->entityType);
   }
@@ -522,7 +522,7 @@ public function testGetSchemaTranslatable() {
 
     $this->storage->expects($this->any())
       ->method('getDataTable')
-      ->will($this->returnValue('entity_test_field_data'));
+      ->willReturn('entity_test_field_data');
 
     $this->setUpStorageDefinition('langcode', [
       'columns' => [
@@ -604,7 +604,7 @@ public function testGetSchemaTranslatable() {
 
     $this->storageSchema->expects($this->any())
       ->method('getTableMapping')
-      ->will($this->returnValue($table_mapping));
+      ->willReturn($table_mapping);
 
     $this->assertNull(
       $this->storageSchema->onEntityTypeCreate($this->entityType)
@@ -640,14 +640,14 @@ public function testGetSchemaRevisionableTranslatable() {
 
     $this->entityType->expects($this->any())
       ->method('isRevisionable')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
     $this->entityType->expects($this->any())
       ->method('isTranslatable')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $this->storage->expects($this->exactly(30))
       ->method('getRevisionTable')
-      ->will($this->returnValue('entity_test_revision'));
+      ->willReturn('entity_test_revision');
 
     $this->setUpStorageDefinition('revision_id', [
       'columns' => [
@@ -822,7 +822,7 @@ public function testGetSchemaRevisionableTranslatable() {
 
     $this->storageSchema->expects($this->any())
       ->method('getTableMapping')
-      ->will($this->returnValue($table_mapping));
+      ->willReturn($table_mapping);
 
     $this->storageSchema->onEntityTypeCreate($this->entityType);
   }
@@ -888,20 +888,20 @@ public function testDedicatedTableSchema() {
     $field_storage
       ->expects($this->any())
       ->method('getType')
-      ->will($this->returnValue('shape'));
+      ->willReturn('shape');
     $field_storage
       ->expects($this->any())
       ->method('getTargetEntityTypeId')
-      ->will($this->returnValue($entity_type_id));
+      ->willReturn($entity_type_id);
     $field_storage
       ->expects($this->any())
       ->method('isMultiple')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $this->storageDefinitions['id']
       ->expects($this->any())
       ->method('getType')
-      ->will($this->returnValue('integer'));
+      ->willReturn('integer');
 
     $expected = [
       $entity_type_id . '__' . $field_name => [
@@ -975,8 +975,8 @@ public function testDedicatedTableSchema() {
           $field_name . '_color' => [[$field_name . '_color', 3]],
         ],
         'unique keys' => [
-           $field_name . '_area' => [$field_name . '_area'],
-           $field_name . '_shape' => [[$field_name . '_shape', 10]],
+          $field_name . '_area' => [$field_name . '_area'],
+          $field_name . '_shape' => [[$field_name . '_shape', 10]],
         ],
         'foreign keys' => [
           $field_name . '_color' => [
@@ -997,7 +997,7 @@ public function testDedicatedTableSchema() {
 
     $this->storageSchema->expects($this->any())
       ->method('getTableMapping')
-      ->will($this->returnValue($table_mapping));
+      ->willReturn($table_mapping);
 
     $this->assertNull(
       $this->storageSchema->onFieldStorageDefinitionCreate($field_storage)
@@ -1049,20 +1049,20 @@ public function testDedicatedTableSchemaForEntityWithStringIdentifier() {
     $field_storage
       ->expects($this->any())
       ->method('getType')
-      ->will($this->returnValue('shape'));
+      ->willReturn('shape');
     $field_storage
       ->expects($this->any())
       ->method('getTargetEntityTypeId')
-      ->will($this->returnValue($entity_type_id));
+      ->willReturn($entity_type_id);
     $field_storage
       ->expects($this->any())
       ->method('isMultiple')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $this->storageDefinitions['id']
       ->expects($this->any())
       ->method('getType')
-      ->will($this->returnValue('string'));
+      ->willReturn('string');
 
     $expected = [
       $entity_type_id . '__' . $field_name => [
@@ -1142,7 +1142,7 @@ public function testDedicatedTableSchemaForEntityWithStringIdentifier() {
 
     $this->storageSchema->expects($this->any())
       ->method('getTableMapping')
-      ->will($this->returnValue($table_mapping));
+      ->willReturn($table_mapping);
 
     $this->assertNull(
       $this->storageSchema->onFieldStorageDefinitionCreate($field_storage)
@@ -1316,7 +1316,7 @@ public function testRequiresEntityStorageSchemaChanges(ContentEntityTypeInterfac
     $table_mapping->setExtraColumns('entity_test', ['default_langcode']);
     $this->storageSchema->expects($this->any())
       ->method('getTableMapping')
-      ->will($this->returnValue($table_mapping));
+      ->willReturn($table_mapping);
 
     // Setup storage schema.
     if ($change_schema) {
@@ -1357,22 +1357,22 @@ protected function setUpStorageSchema(array $expected = []) {
     $this->entityTypeManager->expects($this->any())
       ->method('getDefinition')
       ->with($this->entityType->id())
-      ->will($this->returnValue($this->entityType));
+      ->willReturn($this->entityType);
 
     $this->entityTypeManager->expects($this->any())
       ->method('getActiveDefinition')
       ->with($this->entityType->id())
-      ->will($this->returnValue($this->entityType));
+      ->willReturn($this->entityType);
 
     $this->entityFieldManager->expects($this->any())
       ->method('getFieldStorageDefinitions')
       ->with($this->entityType->id())
-      ->will($this->returnValue($this->storageDefinitions));
+      ->willReturn($this->storageDefinitions);
 
     $this->entityFieldManager->expects($this->any())
       ->method('getActiveFieldStorageDefinitions')
       ->with($this->entityType->id())
-      ->will($this->returnValue($this->storageDefinitions));
+      ->willReturn($this->storageDefinitions);
 
     $this->dbSchemaHandler = $this->getMockBuilder('Drupal\Core\Database\Schema')
       ->disableOriginalConstructor()
@@ -1403,7 +1403,7 @@ protected function setUpStorageSchema(array $expected = []) {
       ->getMock();
     $connection->expects($this->any())
       ->method('schema')
-      ->will($this->returnValue($this->dbSchemaHandler));
+      ->willReturn($this->dbSchemaHandler);
 
     $key_value = $this->createMock('Drupal\Core\KeyValueStore\KeyValueStoreInterface');
 
@@ -1423,7 +1423,7 @@ protected function setUpStorageSchema(array $expected = []) {
     $this->storageSchema
       ->expects($this->any())
       ->method('installedStorageSchema')
-      ->will($this->returnValue($key_value));
+      ->willReturn($key_value);
     $this->storageSchema
       ->expects($this->any())
       ->method('isTableEmpty')
@@ -1443,18 +1443,18 @@ public function setUpStorageDefinition($field_name, array $schema) {
     $this->storageDefinitions[$field_name] = $this->createMock('Drupal\Tests\Core\Field\TestBaseFieldDefinitionInterface');
     $this->storageDefinitions[$field_name]->expects($this->any())
       ->method('isBaseField')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
     // getName() is called once for each table.
     $this->storageDefinitions[$field_name]->expects($this->any())
       ->method('getName')
-      ->will($this->returnValue($field_name));
+      ->willReturn($field_name);
     // getSchema() is called once for each table.
     $this->storageDefinitions[$field_name]->expects($this->any())
       ->method('getSchema')
-      ->will($this->returnValue($schema));
+      ->willReturn($schema);
     $this->storageDefinitions[$field_name]->expects($this->any())
       ->method('getColumns')
-      ->will($this->returnValue($schema['columns']));
+      ->willReturn($schema['columns']);
     // Add property definitions.
     if (!empty($schema['columns'])) {
       $property_definitions = [];
@@ -1462,11 +1462,11 @@ public function setUpStorageDefinition($field_name, array $schema) {
         $property_definitions[$column] = $this->createMock('Drupal\Core\TypedData\DataDefinitionInterface');
         $property_definitions[$column]->expects($this->any())
           ->method('isRequired')
-          ->will($this->returnValue(!empty($info['not null'])));
+          ->willReturn(!empty($info['not null']));
       }
       $this->storageDefinitions[$field_name]->expects($this->any())
         ->method('getPropertyDefinitions')
-        ->will($this->returnValue($property_definitions));
+        ->willReturn($property_definitions);
     }
   }
 
@@ -1520,7 +1520,7 @@ public function testonEntityTypeUpdateWithNewIndex() {
 
     $this->storageSchema->expects($this->any())
       ->method('getTableMapping')
-      ->will($this->returnValue($table_mapping));
+      ->willReturn($table_mapping);
 
     $this->storageSchema->expects($this->any())
       ->method('loadEntitySchemaData')
diff --git a/core/tests/Drupal/Tests/Core/Entity/Sql/SqlContentEntityStorageTest.php b/core/tests/Drupal/Tests/Core/Entity/Sql/SqlContentEntityStorageTest.php
index 2f5db5ad0a..185a68eda0 100644
--- a/core/tests/Drupal/Tests/Core/Entity/Sql/SqlContentEntityStorageTest.php
+++ b/core/tests/Drupal/Tests/Core/Entity/Sql/SqlContentEntityStorageTest.php
@@ -118,7 +118,7 @@ protected function setUp(): void {
     $this->entityType = $this->createMock('Drupal\Core\Entity\ContentEntityTypeInterface');
     $this->entityType->expects($this->any())
       ->method('id')
-      ->will($this->returnValue($this->entityTypeId));
+      ->willReturn($this->entityTypeId);
 
     $this->container = new ContainerBuilder();
     \Drupal::setContainer($this->container);
@@ -131,7 +131,7 @@ protected function setUp(): void {
     $this->languageManager = $this->createMock('Drupal\Core\Language\LanguageManagerInterface');
     $this->languageManager->expects($this->any())
       ->method('getDefaultLanguage')
-      ->will($this->returnValue(new Language(['langcode' => 'en'])));
+      ->willReturn(new Language(['langcode' => 'en']));
     $this->connection = $this->getMockBuilder('Drupal\Core\Database\Connection')
       ->disableOriginalConstructor()
       ->getMock();
@@ -199,10 +199,10 @@ public function providerTestGetBaseTable() {
   public function testGetRevisionTable($revision_table, $expected) {
     $this->entityType->expects($this->any())
       ->method('isRevisionable')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
     $this->entityType->expects($this->once())
       ->method('getRevisionTable')
-      ->will($this->returnValue($revision_table));
+      ->willReturn($revision_table);
     $this->entityType->expects($this->any())
       ->method('getRevisionMetadataKeys')
       ->willReturn([]);
@@ -240,10 +240,10 @@ public function providerTestGetRevisionTable() {
   public function testGetDataTable() {
     $this->entityType->expects($this->any())
       ->method('isTranslatable')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
     $this->entityType->expects($this->exactly(1))
       ->method('getDataTable')
-      ->will($this->returnValue('entity_test_field_data'));
+      ->willReturn('entity_test_field_data');
     $this->entityType->expects($this->any())
       ->method('getRevisionMetadataKeys')
       ->willReturn([]);
@@ -270,16 +270,16 @@ public function testGetDataTable() {
   public function testGetRevisionDataTable($revision_data_table, $expected) {
     $this->entityType->expects($this->any())
       ->method('isRevisionable')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
     $this->entityType->expects($this->any())
       ->method('isTranslatable')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
     $this->entityType->expects($this->exactly(1))
       ->method('getDataTable')
-      ->will($this->returnValue('entity_test_field_data'));
+      ->willReturn('entity_test_field_data');
     $this->entityType->expects($this->once())
       ->method('getRevisionDataTable')
-      ->will($this->returnValue($revision_data_table));
+      ->willReturn($revision_data_table);
     $this->entityType->expects($this->any())
       ->method('getRevisionMetadataKeys')
       ->willReturn([]);
@@ -317,10 +317,10 @@ public function providerTestGetRevisionDataTable() {
   public function testSetTableMapping() {
     $this->entityType->expects($this->any())
       ->method('isRevisionable')
-      ->will($this->returnValue(FALSE));
+      ->willReturn(FALSE);
     $this->entityType->expects($this->any())
       ->method('isTranslatable')
-      ->will($this->returnValue(FALSE));
+      ->willReturn(FALSE);
     $this->entityType->expects($this->any())
       ->method('getRevisionMetadataKeys')
       ->willReturn([]);
@@ -337,13 +337,13 @@ public function testSetTableMapping() {
     $updated_entity_type = $this->createMock('Drupal\Core\Entity\ContentEntityTypeInterface');
     $updated_entity_type->expects($this->any())
       ->method('id')
-      ->will($this->returnValue($this->entityTypeId));
+      ->willReturn($this->entityTypeId);
     $updated_entity_type->expects($this->any())
       ->method('isRevisionable')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
     $updated_entity_type->expects($this->any())
       ->method('isTranslatable')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $table_mapping = new DefaultTableMapping($updated_entity_type, []);
     $this->entityStorage->setTableMapping($table_mapping);
@@ -371,14 +371,14 @@ public function testOnEntityTypeCreate() {
     $this->fieldDefinitions = $this->mockFieldDefinitions(['id']);
     $this->fieldDefinitions['id']->expects($this->any())
       ->method('getColumns')
-      ->will($this->returnValue($columns));
+      ->willReturn($columns);
     $this->fieldDefinitions['id']->expects($this->once())
       ->method('getSchema')
-      ->will($this->returnValue(['columns' => $columns]));
+      ->willReturn(['columns' => $columns]);
 
     $this->entityType->expects($this->once())
       ->method('getKeys')
-      ->will($this->returnValue(['id' => 'id']));
+      ->willReturn(['id' => 'id']);
     $this->entityType->expects($this->any())
       ->method('hasKey')
       ->willReturnMap([
@@ -424,7 +424,7 @@ public function testOnEntityTypeCreate() {
 
     $this->connection->expects($this->once())
       ->method('schema')
-      ->will($this->returnValue($schema_handler));
+      ->willReturn($schema_handler);
 
     $storage = $this->getMockBuilder('Drupal\Core\Entity\Sql\SqlContentEntityStorage')
       ->setConstructorArgs([$this->entityType, $this->connection, $this->entityFieldManager, $this->cache, $this->languageManager, new MemoryCache(), $this->entityTypeBundleInfo, $this->entityTypeManager])
@@ -439,12 +439,12 @@ public function testOnEntityTypeCreate() {
     $schema_handler
       ->expects($this->any())
       ->method('installedStorageSchema')
-      ->will($this->returnValue($key_value));
+      ->willReturn($key_value);
 
     $storage
       ->expects($this->any())
       ->method('getStorageSchema')
-      ->will($this->returnValue($schema_handler));
+      ->willReturn($schema_handler);
 
     $storage->onEntityTypeCreate($this->entityType);
   }
@@ -593,7 +593,7 @@ public function testGetTableMappingRevisionable(array $entity_keys) {
 
     $this->entityType->expects($this->exactly(4))
       ->method('isRevisionable')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
     $this->entityType->expects($this->any())
       ->method('getKey')
       ->willReturnMap([
@@ -604,7 +604,7 @@ public function testGetTableMappingRevisionable(array $entity_keys) {
       ]);
     $this->entityType->expects($this->any())
       ->method('getRevisionMetadataKeys')
-      ->will($this->returnValue([]));
+      ->willReturn([]);
 
     $this->setUpEntityStorage();
 
@@ -666,7 +666,7 @@ public function testGetTableMappingRevisionableWithFields(array $entity_keys) {
 
       $this->entityType->expects($this->exactly(4))
         ->method('isRevisionable')
-        ->will($this->returnValue(TRUE));
+        ->willReturn(TRUE);
       $this->entityType->expects($this->any())
         ->method('getKey')
         ->willReturnMap([
@@ -678,7 +678,7 @@ public function testGetTableMappingRevisionableWithFields(array $entity_keys) {
 
       $this->entityType->expects($this->any())
         ->method('getRevisionMetadataKeys')
-        ->will($this->returnValue($revision_metadata_field_names));
+        ->willReturn($revision_metadata_field_names);
 
       $this->setUpEntityStorage();
 
@@ -717,10 +717,10 @@ public function testGetTableMappingTranslatable(array $entity_keys) {
 
     $this->entityType->expects($this->atLeastOnce())
       ->method('isTranslatable')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
     $this->entityType->expects($this->atLeastOnce())
       ->method('getDataTable')
-      ->will($this->returnValue('entity_test_field_data'));
+      ->willReturn('entity_test_field_data');
     $this->entityType->expects($this->any())
       ->method('getKey')
       ->willReturnMap([
@@ -777,10 +777,10 @@ public function testGetTableMappingTranslatableWithFields(array $entity_keys) {
 
     $this->entityType->expects($this->atLeastOnce())
       ->method('isTranslatable')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
     $this->entityType->expects($this->atLeastOnce())
       ->method('getDataTable')
-      ->will($this->returnValue('entity_test_field_data'));
+      ->willReturn('entity_test_field_data');
     $this->entityType->expects($this->any())
       ->method('getKey')
       ->willReturnMap([
@@ -844,13 +844,13 @@ public function testGetTableMappingRevisionableTranslatable(array $entity_keys)
 
     $this->entityType->expects($this->atLeastOnce())
       ->method('isRevisionable')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
     $this->entityType->expects($this->atLeastOnce())
       ->method('isTranslatable')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
     $this->entityType->expects($this->atLeastOnce())
       ->method('getDataTable')
-      ->will($this->returnValue('entity_test_field_data'));
+      ->willReturn('entity_test_field_data');
     $this->entityType->expects($this->any())
       ->method('getKey')
       ->willReturnMap([
@@ -862,7 +862,7 @@ public function testGetTableMappingRevisionableTranslatable(array $entity_keys)
       ]);
     $this->entityType->expects($this->any())
       ->method('getRevisionMetadataKeys')
-      ->will($this->returnValue($revision_metadata_keys));
+      ->willReturn($revision_metadata_keys);
 
     $this->fieldDefinitions = $this->mockFieldDefinitions(array_values($revision_metadata_keys), ['isRevisionable' => TRUE]);
 
@@ -971,13 +971,13 @@ public function testGetTableMappingRevisionableTranslatableWithFields(array $ent
 
       $this->entityType->expects($this->atLeastOnce())
         ->method('isRevisionable')
-        ->will($this->returnValue(TRUE));
+        ->willReturn(TRUE);
       $this->entityType->expects($this->atLeastOnce())
         ->method('isTranslatable')
-        ->will($this->returnValue(TRUE));
+        ->willReturn(TRUE);
       $this->entityType->expects($this->atLeastOnce())
         ->method('getDataTable')
-        ->will($this->returnValue('entity_test_field_data'));
+        ->willReturn('entity_test_field_data');
       $this->entityType->expects($this->any())
         ->method('getKey')
         ->willReturnMap([
@@ -989,7 +989,7 @@ public function testGetTableMappingRevisionableTranslatableWithFields(array $ent
         ]);
       $this->entityType->expects($this->any())
         ->method('getRevisionMetadataKeys')
-        ->will($this->returnValue($revision_metadata_field_names));
+        ->willReturn($revision_metadata_field_names);
 
       $this->setUpEntityStorage();
 
@@ -1069,7 +1069,7 @@ public function testCreate() {
     $language = new Language(['id' => 'en']);
     $language_manager->expects($this->any())
       ->method('getCurrentLanguage')
-      ->will($this->returnValue($language));
+      ->willReturn($language);
 
     $entity = $this->getMockBuilder('Drupal\Core\Entity\ContentEntityBase')
       ->disableOriginalConstructor()
@@ -1078,34 +1078,34 @@ public function testCreate() {
 
     $this->entityType->expects($this->atLeastOnce())
       ->method('id')
-      ->will($this->returnValue($this->entityTypeId));
+      ->willReturn($this->entityTypeId);
     $this->entityType->expects($this->atLeastOnce())
       ->method('getClass')
-      ->will($this->returnValue(get_class($entity)));
+      ->willReturn(get_class($entity));
     $this->entityType->expects($this->atLeastOnce())
       ->method('getKeys')
-      ->will($this->returnValue(['id' => 'id']));
+      ->willReturn(['id' => 'id']);
 
     // ContentEntityStorageBase iterates over the entity which calls this method
     // internally in ContentEntityBase::getProperties().
     $this->entityFieldManager->expects($this->once())
       ->method('getFieldDefinitions')
-      ->will($this->returnValue([]));
+      ->willReturn([]);
 
     $this->entityType->expects($this->atLeastOnce())
       ->method('isRevisionable')
-      ->will($this->returnValue(FALSE));
+      ->willReturn(FALSE);
     $this->entityTypeManager->expects($this->atLeastOnce())
       ->method('getDefinition')
       ->with($this->entityType->id())
-      ->will($this->returnValue($this->entityType));
+      ->willReturn($this->entityType);
 
     $this->setUpEntityStorage();
 
     $entity = $this->entityStorage->create();
     $entity->expects($this->atLeastOnce())
       ->method('id')
-      ->will($this->returnValue('foo'));
+      ->willReturn('foo');
 
     $this->assertInstanceOf('Drupal\Core\Entity\EntityInterface', $entity);
     $this->assertSame('foo', $entity->id());
@@ -1136,7 +1136,7 @@ protected function mockFieldDefinitions(array $field_names, $methods = []) {
       $definition
         ->expects($this->any())
         ->method($method)
-        ->will($this->returnValue($result));
+        ->willReturn($result);
     }
 
     // Assign field names to mock definitions.
@@ -1145,7 +1145,7 @@ protected function mockFieldDefinitions(array $field_names, $methods = []) {
       $field_definitions[$field_name]
         ->expects($this->any())
         ->method('getName')
-        ->will($this->returnValue($field_name));
+        ->willReturn($field_name);
     }
 
     return $field_definitions;
@@ -1161,19 +1161,19 @@ protected function setUpEntityStorage() {
 
     $this->entityTypeManager->expects($this->any())
       ->method('getDefinition')
-      ->will($this->returnValue($this->entityType));
+      ->willReturn($this->entityType);
 
     $this->entityTypeManager->expects($this->any())
       ->method('getActiveDefinition')
-      ->will($this->returnValue($this->entityType));
+      ->willReturn($this->entityType);
 
     $this->entityFieldManager->expects($this->any())
       ->method('getFieldStorageDefinitions')
-      ->will($this->returnValue($this->fieldDefinitions));
+      ->willReturn($this->fieldDefinitions);
 
     $this->entityFieldManager->expects($this->any())
       ->method('getActiveFieldStorageDefinitions')
-      ->will($this->returnValue($this->fieldDefinitions));
+      ->willReturn($this->fieldDefinitions);
 
     $this->entityStorage = new SqlContentEntityStorage($this->entityType, $this->connection, $this->entityFieldManager, $this->cache, $this->languageManager, new MemoryCache(), $this->entityTypeBundleInfo, $this->entityTypeManager);
     $this->entityStorage->setModuleHandler($this->moduleHandler);
@@ -1193,19 +1193,19 @@ public function testLoadMultiplePersistentCached() {
       ->getMockForAbstractClass();
     $entity->expects($this->any())
       ->method('id')
-      ->will($this->returnValue($id));
+      ->willReturn($id);
 
     $this->entityType->expects($this->atLeastOnce())
       ->method('isPersistentlyCacheable')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
     $this->entityType->expects($this->atLeastOnce())
       ->method('id')
-      ->will($this->returnValue($this->entityTypeId));
+      ->willReturn($this->entityTypeId);
 
     $this->cache->expects($this->once())
       ->method('getMultiple')
       ->with([$key])
-      ->will($this->returnValue([$key => (object) ['data' => $entity]]));
+      ->willReturn([$key => (object) ['data' => $entity]]);
     $this->cache->expects($this->never())
       ->method('set');
 
@@ -1228,14 +1228,14 @@ public function testLoadMultipleNoPersistentCache() {
       ->getMockForAbstractClass();
     $entity->expects($this->any())
       ->method('id')
-      ->will($this->returnValue($id));
+      ->willReturn($id);
 
     $this->entityType->expects($this->any())
       ->method('isPersistentlyCacheable')
-      ->will($this->returnValue(FALSE));
+      ->willReturn(FALSE);
     $this->entityType->expects($this->atLeastOnce())
       ->method('id')
-      ->will($this->returnValue($this->entityTypeId));
+      ->willReturn($this->entityTypeId);
 
     // There should be no calls to the cache backend for an entity type without
     // persistent caching.
@@ -1246,7 +1246,7 @@ public function testLoadMultipleNoPersistentCache() {
 
     $this->entityTypeManager->expects($this->any())
       ->method('getActiveDefinition')
-      ->will($this->returnValue($this->entityType));
+      ->willReturn($this->entityType);
 
     $entity_storage = $this->getMockBuilder('Drupal\Core\Entity\Sql\SqlContentEntityStorage')
       ->setConstructorArgs([$this->entityType, $this->connection, $this->entityFieldManager, $this->cache, $this->languageManager, new MemoryCache(), $this->entityTypeBundleInfo, $this->entityTypeManager])
@@ -1259,7 +1259,7 @@ public function testLoadMultipleNoPersistentCache() {
     $entity_storage->expects($this->once())
       ->method('getFromStorage')
       ->with([$id])
-      ->will($this->returnValue([$id => $entity]));
+      ->willReturn([$id => $entity]);
 
     $entities = $entity_storage->loadMultiple([$id]);
     $this->assertEquals($entity, $entities[$id]);
@@ -1279,14 +1279,14 @@ public function testLoadMultiplePersistentCacheMiss() {
       ->getMockForAbstractClass();
     $entity->expects($this->any())
       ->method('id')
-      ->will($this->returnValue($id));
+      ->willReturn($id);
 
     $this->entityType->expects($this->any())
       ->method('isPersistentlyCacheable')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
     $this->entityType->expects($this->atLeastOnce())
       ->method('id')
-      ->will($this->returnValue($this->entityTypeId));
+      ->willReturn($this->entityTypeId);
 
     // In case of a cache miss, the entity is loaded from the storage and then
     // set in the cache.
@@ -1294,14 +1294,14 @@ public function testLoadMultiplePersistentCacheMiss() {
     $this->cache->expects($this->once())
       ->method('getMultiple')
       ->with([$key])
-      ->will($this->returnValue([]));
+      ->willReturn([]);
     $this->cache->expects($this->once())
       ->method('set')
       ->with($key, $entity, CacheBackendInterface::CACHE_PERMANENT, [$this->entityTypeId . '_values', 'entity_field_info']);
 
     $this->entityTypeManager->expects($this->any())
       ->method('getActiveDefinition')
-      ->will($this->returnValue($this->entityType));
+      ->willReturn($this->entityType);
 
     $entity_storage = $this->getMockBuilder('Drupal\Core\Entity\Sql\SqlContentEntityStorage')
       ->setConstructorArgs([$this->entityType, $this->connection, $this->entityFieldManager, $this->cache, $this->languageManager, new MemoryCache(), $this->entityTypeBundleInfo, $this->entityTypeManager])
@@ -1314,7 +1314,7 @@ public function testLoadMultiplePersistentCacheMiss() {
     $entity_storage->expects($this->once())
       ->method('getFromStorage')
       ->with([$id])
-      ->will($this->returnValue([$id => $entity]));
+      ->willReturn([$id => $entity]);
 
     $entities = $entity_storage->loadMultiple([$id]);
     $this->assertEquals($entity, $entities[$id]);
@@ -1351,19 +1351,19 @@ public function testHasData() {
 
     $this->entityTypeManager->expects($this->any())
       ->method('getDefinition')
-      ->will($this->returnValue($this->entityType));
+      ->willReturn($this->entityType);
 
     $this->entityTypeManager->expects($this->any())
       ->method('getActiveDefinition')
-      ->will($this->returnValue($this->entityType));
+      ->willReturn($this->entityType);
 
     $this->entityFieldManager->expects($this->any())
       ->method('getFieldStorageDefinitions')
-      ->will($this->returnValue($this->fieldDefinitions));
+      ->willReturn($this->fieldDefinitions);
 
     $this->entityFieldManager->expects($this->any())
       ->method('getActiveFieldStorageDefinitions')
-      ->will($this->returnValue($this->fieldDefinitions));
+      ->willReturn($this->fieldDefinitions);
 
     $this->entityStorage = new SqlContentEntityStorage($this->entityType, $database, $this->entityFieldManager, $this->cache, $this->languageManager, new MemoryCache(), $this->entityTypeBundleInfo, $this->entityTypeManager);
 
@@ -1409,7 +1409,7 @@ public function testCleanIds() {
     $this->fieldDefinitions = $this->mockFieldDefinitions(['id']);
     $this->fieldDefinitions['id']->expects($this->any())
       ->method('getType')
-      ->will($this->returnValue('integer'));
+      ->willReturn('integer');
 
     $this->setUpEntityStorage();
 
diff --git a/core/tests/Drupal/Tests/Core/Entity/TypedData/EntityAdapterUnitTest.php b/core/tests/Drupal/Tests/Core/Entity/TypedData/EntityAdapterUnitTest.php
index 67baf44dc2..d515a5be68 100644
--- a/core/tests/Drupal/Tests/Core/Entity/TypedData/EntityAdapterUnitTest.php
+++ b/core/tests/Drupal/Tests/Core/Entity/TypedData/EntityAdapterUnitTest.php
@@ -133,16 +133,16 @@ protected function setUp(): void {
     $this->entityType = $this->createMock('\Drupal\Core\Entity\EntityTypeInterface');
     $this->entityType->expects($this->any())
       ->method('getKeys')
-      ->will($this->returnValue([
+      ->willReturn([
         'id' => 'id',
         'uuid' => 'uuid',
-    ]));
+      ]);
 
     $this->entityTypeManager = $this->createMock(EntityTypeManagerInterface::class);
     $this->entityTypeManager->expects($this->any())
       ->method('getDefinition')
       ->with($this->entityTypeId)
-      ->will($this->returnValue($this->entityType));
+      ->willReturn($this->entityType);
 
     $this->uuid = $this->createMock('\Drupal\Component\Uuid\UuidInterface');
 
@@ -150,7 +150,7 @@ protected function setUp(): void {
     $this->typedDataManager->expects($this->any())
       ->method('getDefinition')
       ->with('entity')
-      ->will($this->returnValue(['class' => '\Drupal\Core\Entity\Plugin\DataType\EntityAdapter']));
+      ->willReturn(['class' => '\Drupal\Core\Entity\Plugin\DataType\EntityAdapter']);
     $this->typedDataManager->expects($this->any())
       ->method('getDefaultConstraints')
       ->willReturn([]);
@@ -169,22 +169,22 @@ protected function setUp(): void {
     $this->languageManager = $this->createMock('\Drupal\Core\Language\LanguageManagerInterface');
     $this->languageManager->expects($this->any())
       ->method('getLanguages')
-      ->will($this->returnValue([LanguageInterface::LANGCODE_NOT_SPECIFIED => $not_specified]));
+      ->willReturn([LanguageInterface::LANGCODE_NOT_SPECIFIED => $not_specified]);
 
     $this->languageManager->expects($this->any())
       ->method('getLanguage')
       ->with(LanguageInterface::LANGCODE_NOT_SPECIFIED)
-      ->will($this->returnValue($not_specified));
+      ->willReturn($not_specified);
 
     $this->fieldTypePluginManager = $this->getMockBuilder('\Drupal\Core\Field\FieldTypePluginManager')
       ->disableOriginalConstructor()
       ->getMock();
     $this->fieldTypePluginManager->expects($this->any())
       ->method('getDefaultStorageSettings')
-      ->will($this->returnValue([]));
+      ->willReturn([]);
     $this->fieldTypePluginManager->expects($this->any())
       ->method('getDefaultFieldSettings')
-      ->will($this->returnValue([]));
+      ->willReturn([]);
 
     $this->fieldItemList = $this->createMock('\Drupal\Core\Field\FieldItemListInterface');
     $this->fieldTypePluginManager->expects($this->any())
@@ -209,7 +209,7 @@ protected function setUp(): void {
     $this->entityFieldManager->expects($this->any())
       ->method('getFieldDefinitions')
       ->with($this->entityTypeId, $this->bundle)
-      ->will($this->returnValue($this->fieldDefinitions));
+      ->willReturn($this->fieldDefinitions);
 
     $this->entity = $this->getMockForAbstractClass('\Drupal\Core\Entity\ContentEntityBase', [$values, $this->entityTypeId, $this->bundle]);
 
diff --git a/core/tests/Drupal/Tests/Core/EventSubscriber/ActiveLinkResponseFilterTest.php b/core/tests/Drupal/Tests/Core/EventSubscriber/ActiveLinkResponseFilterTest.php
index 5e5b06cfcc..e639d8c346 100644
--- a/core/tests/Drupal/Tests/Core/EventSubscriber/ActiveLinkResponseFilterTest.php
+++ b/core/tests/Drupal/Tests/Core/EventSubscriber/ActiveLinkResponseFilterTest.php
@@ -160,13 +160,11 @@ public function providerTestSetLinkActiveClass() {
     // Matching path, plus all matching variations.
     $attributes = [
       'data-drupal-link-system-path' => 'llama',
-      'data-drupal-link-query' => Json::encode(['foo' => 'bar']),
     ];
-    $situations[] = ['context' => $context, 'is active' => TRUE, 'attributes' => $attributes];
-    $situations[] = ['context' => $context, 'is active' => TRUE, 'attributes' => $attributes + ['hreflang' => 'nl']];
+    $situations[] = ['context' => $context, 'is active' => TRUE, 'attributes' => $attributes + ['data-drupal-link-query' => Json::encode(['foo' => 'bar'])]];
+    $situations[] = ['context' => $context, 'is active' => TRUE, 'attributes' => $attributes + ['hreflang' => 'nl', 'data-drupal-link-query' => Json::encode(['foo' => 'bar'])]];
     // Matching path, plus all non-matching variations.
-    $situations[] = ['context' => $context, 'is active' => FALSE, 'attributes' => $attributes + ['hreflang' => 'en']];
-    unset($attributes['data-drupal-link-query']);
+    $situations[] = ['context' => $context, 'is active' => FALSE, 'attributes' => $attributes + ['hreflang' => 'en', 'data-drupal-link-query' => Json::encode(['foo' => 'bar'])]];
     $situations[] = ['context' => $context, 'is active' => FALSE, 'attributes' => $attributes + ['hreflang' => 'nl', 'data-drupal-link-query' => ""]];
     $situations[] = ['context' => $context, 'is active' => FALSE, 'attributes' => $attributes + ['hreflang' => 'nl', 'data-drupal-link-query' => TRUE]];
     // Special non-matching path, plus all variations.
@@ -176,7 +174,6 @@ public function providerTestSetLinkActiveClass() {
     $situations[] = ['context' => $context, 'is active' => FALSE, 'attributes' => $attributes];
     $situations[] = ['context' => $context, 'is active' => FALSE, 'attributes' => $attributes + ['hreflang' => 'nl']];
     $situations[] = ['context' => $context, 'is active' => FALSE, 'attributes' => $attributes + ['hreflang' => 'en']];
-    unset($attributes['data-drupal-link-query']);
     $situations[] = ['context' => $context, 'is active' => FALSE, 'attributes' => $attributes + ['hreflang' => 'nl', 'data-drupal-link-query' => ""]];
     $situations[] = ['context' => $context, 'is active' => FALSE, 'attributes' => $attributes + ['hreflang' => 'nl', 'data-drupal-link-query' => TRUE]];
 
@@ -191,13 +188,11 @@ public function providerTestSetLinkActiveClass() {
     // Matching path, plus all matching variations.
     $attributes = [
       'data-drupal-link-system-path' => 'llama',
-      'data-drupal-link-query' => Json::encode(['foo' => 'bar']),
     ];
-    $situations[] = ['context' => $context, 'is active' => TRUE, 'attributes' => $attributes];
-    $situations[] = ['context' => $context, 'is active' => TRUE, 'attributes' => $attributes + ['hreflang' => 'nl']];
+    $situations[] = ['context' => $context, 'is active' => TRUE, 'attributes' => $attributes + ['data-drupal-link-query' => Json::encode(['foo' => 'bar'])]];
+    $situations[] = ['context' => $context, 'is active' => TRUE, 'attributes' => $attributes + ['hreflang' => 'nl', 'data-drupal-link-query' => Json::encode(['foo' => 'bar'])]];
     // Matching path, plus all non-matching variations.
-    $situations[] = ['context' => $context, 'is active' => FALSE, 'attributes' => $attributes + ['hreflang' => 'en']];
-    unset($attributes['data-drupal-link-query']);
+    $situations[] = ['context' => $context, 'is active' => FALSE, 'attributes' => $attributes + ['hreflang' => 'en', 'data-drupal-link-query' => Json::encode(['foo' => 'bar'])]];
     $situations[] = ['context' => $context, 'is active' => FALSE, 'attributes' => $attributes + ['data-drupal-link-query' => ""]];
     $situations[] = ['context' => $context, 'is active' => FALSE, 'attributes' => $attributes + ['data-drupal-link-query' => TRUE]];
     $situations[] = ['context' => $context, 'is active' => FALSE, 'attributes' => $attributes + ['hreflang' => 'nl', 'data-drupal-link-query' => ""]];
@@ -209,7 +204,6 @@ public function providerTestSetLinkActiveClass() {
     $situations[] = ['context' => $context, 'is active' => FALSE, 'attributes' => $attributes];
     $situations[] = ['context' => $context, 'is active' => FALSE, 'attributes' => $attributes + ['hreflang' => 'nl']];
     $situations[] = ['context' => $context, 'is active' => FALSE, 'attributes' => $attributes + ['hreflang' => 'en']];
-    unset($attributes['data-drupal-link-query']);
     $situations[] = ['context' => $context, 'is active' => FALSE, 'attributes' => $attributes + ['data-drupal-link-query' => ""]];
     $situations[] = ['context' => $context, 'is active' => FALSE, 'attributes' => $attributes + ['data-drupal-link-query' => TRUE]];
     $situations[] = ['context' => $context, 'is active' => FALSE, 'attributes' => $attributes + ['hreflang' => 'nl', 'data-drupal-link-query' => ""]];
@@ -226,13 +220,11 @@ public function providerTestSetLinkActiveClass() {
     // Matching path, plus all matching variations.
     $attributes = [
       'data-drupal-link-system-path' => 'my-front-page',
-      'data-drupal-link-query' => Json::encode(['foo' => 'bar']),
     ];
-    $situations[] = ['context' => $context, 'is active' => TRUE, 'attributes' => $attributes];
-    $situations[] = ['context' => $context, 'is active' => TRUE, 'attributes' => $attributes + ['hreflang' => 'en']];
+    $situations[] = ['context' => $context, 'is active' => TRUE, 'attributes' => $attributes + ['data-drupal-link-query' => Json::encode(['foo' => 'bar'])]];
+    $situations[] = ['context' => $context, 'is active' => TRUE, 'attributes' => $attributes + ['hreflang' => 'en', 'data-drupal-link-query' => Json::encode(['foo' => 'bar'])]];
     // Matching path, plus all non-matching variations.
-    $situations[] = ['context' => $context, 'is active' => FALSE, 'attributes' => $attributes + ['hreflang' => 'nl']];
-    unset($attributes['data-drupal-link-query']);
+    $situations[] = ['context' => $context, 'is active' => FALSE, 'attributes' => $attributes + ['hreflang' => 'nl', 'data-drupal-link-query' => Json::encode(['foo' => 'bar'])]];
     $situations[] = ['context' => $context, 'is active' => FALSE, 'attributes' => $attributes + ['data-drupal-link-query' => ""]];
     $situations[] = ['context' => $context, 'is active' => FALSE, 'attributes' => $attributes + ['data-drupal-link-query' => TRUE]];
     $situations[] = ['context' => $context, 'is active' => FALSE, 'attributes' => $attributes + ['hreflang' => 'en', 'data-drupal-link-query' => ""]];
@@ -240,13 +232,11 @@ public function providerTestSetLinkActiveClass() {
     // Special matching path, plus all variations.
     $attributes = [
       'data-drupal-link-system-path' => '<front>',
-      'data-drupal-link-query' => Json::encode(['foo' => 'bar']),
     ];
-    $situations[] = ['context' => $context, 'is active' => TRUE, 'attributes' => $attributes];
-    $situations[] = ['context' => $context, 'is active' => TRUE, 'attributes' => $attributes + ['hreflang' => 'en']];
+    $situations[] = ['context' => $context, 'is active' => TRUE, 'attributes' => $attributes + ['data-drupal-link-query' => Json::encode(['foo' => 'bar'])]];
+    $situations[] = ['context' => $context, 'is active' => TRUE, 'attributes' => $attributes + ['hreflang' => 'en', 'data-drupal-link-query' => Json::encode(['foo' => 'bar'])]];
     // Special matching path, plus all non-matching variations.
-    $situations[] = ['context' => $context, 'is active' => FALSE, 'attributes' => $attributes + ['hreflang' => 'nl']];
-    unset($attributes['data-drupal-link-query']);
+    $situations[] = ['context' => $context, 'is active' => FALSE, 'attributes' => $attributes + ['hreflang' => 'nl', 'data-drupal-link-query' => Json::encode(['foo' => 'bar'])]];
     $situations[] = ['context' => $context, 'is active' => FALSE, 'attributes' => $attributes + ['data-drupal-link-query' => ""]];
     $situations[] = ['context' => $context, 'is active' => FALSE, 'attributes' => $attributes + ['data-drupal-link-query' => TRUE]];
     $situations[] = ['context' => $context, 'is active' => FALSE, 'attributes' => $attributes + ['hreflang' => 'en', 'data-drupal-link-query' => ""]];
diff --git a/core/tests/Drupal/Tests/Core/EventSubscriber/ModuleRouteSubscriberTest.php b/core/tests/Drupal/Tests/Core/EventSubscriber/ModuleRouteSubscriberTest.php
index aff4ecc174..d58560e12e 100644
--- a/core/tests/Drupal/Tests/Core/EventSubscriber/ModuleRouteSubscriberTest.php
+++ b/core/tests/Drupal/Tests/Core/EventSubscriber/ModuleRouteSubscriberTest.php
@@ -21,6 +21,9 @@ class ModuleRouteSubscriberTest extends UnitTestCase {
    */
   protected $moduleHandler;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     $this->moduleHandler = $this->createMock('Drupal\Core\Extension\ModuleHandlerInterface');
 
diff --git a/core/tests/Drupal/Tests/Core/Extension/ModuleHandlerTest.php b/core/tests/Drupal/Tests/Core/Extension/ModuleHandlerTest.php
index 1859b84cf7..c989ea870d 100644
--- a/core/tests/Drupal/Tests/Core/Extension/ModuleHandlerTest.php
+++ b/core/tests/Drupal/Tests/Core/Extension/ModuleHandlerTest.php
@@ -452,7 +452,7 @@ public function testWriteCache() {
     $this->cacheBackend
       ->expects($this->exactly(2))
       ->method('get')
-      ->will($this->returnValue(NULL));
+      ->willReturn(NULL);
     $this->cacheBackend
       ->expects($this->exactly(2))
       ->method('set')
diff --git a/core/tests/Drupal/Tests/Core/Extension/ThemeHandlerTest.php b/core/tests/Drupal/Tests/Core/Extension/ThemeHandlerTest.php
index c06d828c84..4435380e6f 100644
--- a/core/tests/Drupal/Tests/Core/Extension/ThemeHandlerTest.php
+++ b/core/tests/Drupal/Tests/Core/Extension/ThemeHandlerTest.php
@@ -64,7 +64,7 @@ protected function setUp(): void {
     $container->expects($this->any())
       ->method('get')
       ->with('class_loader')
-      ->will($this->returnValue($this->createMock(ClassLoader::class)));
+      ->willReturn($this->createMock(ClassLoader::class));
     \Drupal::setContainer($container);
   }
 
@@ -79,9 +79,9 @@ public function testRebuildThemeData() {
       ->willReturnSelf();
     $this->themeList->expects($this->once())
       ->method('getList')
-      ->will($this->returnValue([
+      ->willReturn([
         'stark' => new Extension($this->root, 'theme', 'core/themes/stark/stark.info.yml', 'stark.theme'),
-      ]));
+      ]);
 
     $theme_data = $this->themeHandler->rebuildThemeData();
     $this->assertCount(1, $theme_data);
diff --git a/core/tests/Drupal/Tests/Core/Field/BaseFieldDefinitionTestBase.php b/core/tests/Drupal/Tests/Core/Field/BaseFieldDefinitionTestBase.php
index fa26aec4f6..c2f45ae311 100644
--- a/core/tests/Drupal/Tests/Core/Field/BaseFieldDefinitionTestBase.php
+++ b/core/tests/Drupal/Tests/Core/Field/BaseFieldDefinitionTestBase.php
@@ -36,7 +36,7 @@ protected function setUp(): void {
     $module_handler->expects($this->once())
       ->method('moduleExists')
       ->with($module_name)
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
     $typed_data_manager = $this->createMock(TypedDataManagerInterface::class);
     $plugin_manager = new FieldTypePluginManager(
       $namespaces,
diff --git a/core/tests/Drupal/Tests/Core/Field/FieldItemListTest.php b/core/tests/Drupal/Tests/Core/Field/FieldItemListTest.php
index b213a2076f..a49f269aa5 100644
--- a/core/tests/Drupal/Tests/Core/Field/FieldItemListTest.php
+++ b/core/tests/Drupal/Tests/Core/Field/FieldItemListTest.php
@@ -47,7 +47,7 @@ public function testEquals($expected, FieldItemInterface $first_field_item = NUL
     $field_storage_definition = $this->createMock('Drupal\Core\Field\FieldStorageDefinitionInterface');
     $field_storage_definition->expects($this->any())
       ->method('getPropertyDefinitions')
-      ->will($this->returnValue($property_definitions));
+      ->willReturn($property_definitions);
     $field_definition = $this->createMock('Drupal\Core\Field\FieldDefinitionInterface');
     $field_definition->expects($this->any())
       ->method('getFieldStorageDefinition')
@@ -193,7 +193,7 @@ public function testHasAffectingChanges($expected, FieldItemInterface $first_fie
     $field_storage_definition = $this->createMock('Drupal\Core\Field\FieldStorageDefinitionInterface');
     $field_storage_definition->expects($this->any())
       ->method('getPropertyDefinitions')
-      ->will($this->returnValue($property_definitions));
+      ->willReturn($property_definitions);
 
     $field_definition = $this->createMock(FieldDefinitionInterface::class);
     $field_definition->expects($this->any())
@@ -251,7 +251,7 @@ public function testEqualsEmptyItems() {
     $field_storage_definition = $this->createMock('Drupal\Core\Field\FieldStorageDefinitionInterface');
     $field_storage_definition->expects($this->any())
       ->method('getPropertyDefinitions')
-      ->will($this->returnValue($property_definitions));
+      ->willReturn($property_definitions);
     $field_definition = $this->createMock('Drupal\Core\Field\FieldDefinitionInterface');
     $field_definition->expects($this->any())
       ->method('getFieldStorageDefinition')
diff --git a/core/tests/Drupal/Tests/Core/Form/ConfirmFormHelperTest.php b/core/tests/Drupal/Tests/Core/Form/ConfirmFormHelperTest.php
index b7f78627fc..f50abc1253 100644
--- a/core/tests/Drupal/Tests/Core/Form/ConfirmFormHelperTest.php
+++ b/core/tests/Drupal/Tests/Core/Form/ConfirmFormHelperTest.php
@@ -24,7 +24,7 @@ public function testCancelLinkTitle() {
     $form = $this->createMock('Drupal\Core\Form\ConfirmFormInterface');
     $form->expects($this->any())
       ->method('getCancelText')
-      ->will($this->returnValue($cancel_text));
+      ->willReturn($cancel_text);
 
     $link = ConfirmFormHelper::buildCancelLink($form, new Request());
     $this->assertSame($cancel_text, $link['#title']);
@@ -42,7 +42,7 @@ public function testCancelLinkRoute() {
     $form = $this->createMock('Drupal\Core\Form\ConfirmFormInterface');
     $form->expects($this->any())
       ->method('getCancelUrl')
-      ->will($this->returnValue($cancel_route));
+      ->willReturn($cancel_route);
     $link = ConfirmFormHelper::buildCancelLink($form, new Request());
     $this->assertEquals(Url::fromRoute($route_name), $link['#url']);
     $this->assertSame(['contexts' => ['url.query_args:destination']], $link['#cache']);
@@ -58,7 +58,7 @@ public function testCancelLinkRouteWithParams() {
     $form = $this->createMock('Drupal\Core\Form\ConfirmFormInterface');
     $form->expects($this->any())
       ->method('getCancelUrl')
-      ->will($this->returnValue($expected));
+      ->willReturn($expected);
     $link = ConfirmFormHelper::buildCancelLink($form, new Request());
     $this->assertEquals($expected, $link['#url']);
     $this->assertSame(['contexts' => ['url.query_args:destination']], $link['#cache']);
@@ -81,7 +81,7 @@ public function testCancelLinkRouteWithUrl() {
     $form = $this->createMock('Drupal\Core\Form\ConfirmFormInterface');
     $form->expects($this->any())
       ->method('getCancelUrl')
-      ->will($this->returnValue($cancel_route));
+      ->willReturn($cancel_route);
     $link = ConfirmFormHelper::buildCancelLink($form, new Request());
     $this->assertSame($cancel_route, $link['#url']);
     $this->assertSame(['contexts' => ['url.query_args:destination']], $link['#cache']);
diff --git a/core/tests/Drupal/Tests/Core/Form/EventSubscriber/FormAjaxSubscriberTest.php b/core/tests/Drupal/Tests/Core/Form/EventSubscriber/FormAjaxSubscriberTest.php
index 90581d8435..d1495335f3 100644
--- a/core/tests/Drupal/Tests/Core/Form/EventSubscriber/FormAjaxSubscriberTest.php
+++ b/core/tests/Drupal/Tests/Core/Form/EventSubscriber/FormAjaxSubscriberTest.php
@@ -221,8 +221,8 @@ public function testOnExceptionBrokenPostRequest() {
   public function testOnExceptionNestedException() {
     $form = ['#type' => 'form', '#build_id' => 'the_build_id'];
     $expected_form = $form + [
-        '#build_id_old' => 'the_build_id',
-      ];
+      '#build_id_old' => 'the_build_id',
+    ];
     $form_state = new FormState();
     $form_exception = new FormAjaxException($form, $form_state);
     $exception = new \Exception('', 0, $form_exception);
diff --git a/core/tests/Drupal/Tests/Core/Form/FormBuilderTest.php b/core/tests/Drupal/Tests/Core/Form/FormBuilderTest.php
index ae287334be..ebdf4b5493 100644
--- a/core/tests/Drupal/Tests/Core/Form/FormBuilderTest.php
+++ b/core/tests/Drupal/Tests/Core/Form/FormBuilderTest.php
@@ -116,10 +116,10 @@ public function testGetFormIdWithBaseForm() {
     $form_arg = $this->createMock('Drupal\Core\Form\BaseFormIdInterface');
     $form_arg->expects($this->once())
       ->method('getFormId')
-      ->will($this->returnValue($expected_form_id));
+      ->willReturn($expected_form_id);
     $form_arg->expects($this->once())
       ->method('getBaseFormId')
-      ->will($this->returnValue($base_form_id));
+      ->willReturn($base_form_id);
 
     $form_state = new FormState();
     $form_id = $this->formBuilder->getFormId($form_arg, $form_state);
@@ -349,10 +349,10 @@ public function testRebuildForm() {
     $form_arg = $this->createMock('Drupal\Core\Form\FormInterface');
     $form_arg->expects($this->exactly(2))
       ->method('getFormId')
-      ->will($this->returnValue($form_id));
+      ->willReturn($form_id);
     $form_arg->expects($this->exactly(4))
       ->method('buildForm')
-      ->will($this->returnValue($expected_form));
+      ->willReturn($expected_form);
 
     // Do an initial build of the form and track the build ID.
     $form_state = new FormState();
@@ -389,10 +389,10 @@ public function testRebuildFormOnGetRequest() {
     $form_arg = $this->createMock('Drupal\Core\Form\FormInterface');
     $form_arg->expects($this->exactly(2))
       ->method('getFormId')
-      ->will($this->returnValue($form_id));
+      ->willReturn($form_id);
     $form_arg->expects($this->exactly(4))
       ->method('buildForm')
-      ->will($this->returnValue($expected_form));
+      ->willReturn($expected_form);
 
     // Do an initial build of the form and track the build ID.
     $form_state = new FormState();
@@ -429,10 +429,10 @@ public function testGetCache() {
     $form_arg = $this->createMock('Drupal\Core\Form\FormInterface');
     $form_arg->expects($this->exactly(2))
       ->method('getFormId')
-      ->will($this->returnValue($form_id));
+      ->willReturn($form_id);
     $form_arg->expects($this->once())
       ->method('buildForm')
-      ->will($this->returnValue($expected_form));
+      ->willReturn($expected_form);
 
     // Do an initial build of the form and track the build ID.
     $form_state = (new FormState())
@@ -471,10 +471,10 @@ public function testUniqueHtmlId() {
     $form_arg = $this->createMock('Drupal\Core\Form\FormInterface');
     $form_arg->expects($this->exactly(2))
       ->method('getFormId')
-      ->will($this->returnValue($form_id));
+      ->willReturn($form_id);
     $form_arg->expects($this->exactly(2))
       ->method('buildForm')
-      ->will($this->returnValue($expected_form));
+      ->willReturn($expected_form);
 
     $form_state = new FormState();
     $form = $this->simulateFormSubmission($form_id, $form_arg, $form_state);
@@ -497,17 +497,17 @@ public function testUniqueElementHtmlId() {
     $form_arg_1 = $this->createMock('Drupal\Core\Form\FormInterface');
     $form_arg_1->expects($this->exactly(1))
       ->method('getFormId')
-      ->will($this->returnValue($form_id_1));
+      ->willReturn($form_id_1);
     $form_arg_1->expects($this->exactly(1))
       ->method('buildForm')
-      ->will($this->returnValue($expected_form));
+      ->willReturn($expected_form);
     $form_arg_2 = $this->createMock('Drupal\Core\Form\FormInterface');
     $form_arg_2->expects($this->exactly(1))
       ->method('getFormId')
-      ->will($this->returnValue($form_id_2));
+      ->willReturn($form_id_2);
     $form_arg_2->expects($this->exactly(1))
       ->method('buildForm')
-      ->will($this->returnValue($expected_form));
+      ->willReturn($expected_form);
     $form_state = new FormState();
     $form_1 = $this->simulateFormSubmission($form_id_1, $form_arg_1, $form_state);
     $form_state = new FormState();
@@ -890,10 +890,10 @@ public function testFormTokenCacheability($token, $is_authenticated, $expected_f
     $form_arg = $this->createMock('Drupal\Core\Form\FormInterface');
     $form_arg->expects($this->once())
       ->method('getFormId')
-      ->will($this->returnValue($form_id));
+      ->willReturn($form_id);
     $form_arg->expects($this->once())
       ->method('buildForm')
-      ->will($this->returnValue($form));
+      ->willReturn($form);
 
     $form_state = new FormState();
     $built_form = $this->formBuilder->buildForm($form_arg, $form_state);
diff --git a/core/tests/Drupal/Tests/Core/Form/FormSubmitterTest.php b/core/tests/Drupal/Tests/Core/Form/FormSubmitterTest.php
index a50b728b99..f55722f848 100644
--- a/core/tests/Drupal/Tests/Core/Form/FormSubmitterTest.php
+++ b/core/tests/Drupal/Tests/Core/Form/FormSubmitterTest.php
@@ -80,7 +80,7 @@ public function testHandleFormSubmissionWithResponses($class, $form_state_key) {
       ->getMock();
     $response->expects($this->any())
       ->method('prepare')
-      ->will($this->returnValue($response));
+      ->willReturn($response);
 
     $form_state = (new FormState())
       ->setSubmitted()
diff --git a/core/tests/Drupal/Tests/Core/Form/FormTestBase.php b/core/tests/Drupal/Tests/Core/Form/FormTestBase.php
index d9d5392035..f10f79be83 100644
--- a/core/tests/Drupal/Tests/Core/Form/FormTestBase.php
+++ b/core/tests/Drupal/Tests/Core/Form/FormTestBase.php
@@ -217,12 +217,12 @@ protected function getMockForm($form_id, $expected_form = NULL, $count = 1) {
     $form = $this->createMock('Drupal\Core\Form\FormInterface');
     $form->expects($this->once())
       ->method('getFormId')
-      ->will($this->returnValue($form_id));
+      ->willReturn($form_id);
 
     if ($expected_form) {
       $form->expects($this->exactly($count))
         ->method('buildForm')
-        ->will($this->returnValue($expected_form));
+        ->willReturn($expected_form);
     }
     return $form;
   }
diff --git a/core/tests/Drupal/Tests/Core/Form/FormValidatorTest.php b/core/tests/Drupal/Tests/Core/Form/FormValidatorTest.php
index 016d369169..eccceecc59 100644
--- a/core/tests/Drupal/Tests/Core/Form/FormValidatorTest.php
+++ b/core/tests/Drupal/Tests/Core/Form/FormValidatorTest.php
@@ -114,7 +114,7 @@ public function testValidateInvalidFormToken() {
     $request_stack->push($request);
     $this->csrfToken->expects($this->once())
       ->method('validate')
-      ->will($this->returnValue(FALSE));
+      ->willReturn(FALSE);
 
     $form_validator = $this->getMockBuilder('Drupal\Core\Form\FormValidator')
       ->setConstructorArgs([$request_stack, $this->getStringTranslationStub(), $this->csrfToken, $this->logger, $this->formErrorHandler])
@@ -142,7 +142,7 @@ public function testValidateValidFormToken() {
     $request_stack = new RequestStack();
     $this->csrfToken->expects($this->once())
       ->method('validate')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $form_validator = $this->getMockBuilder('Drupal\Core\Form\FormValidator')
       ->setConstructorArgs([$request_stack, $this->getStringTranslationStub(), $this->csrfToken, $this->logger, $this->formErrorHandler])
diff --git a/core/tests/Drupal/Tests/Core/Image/ImageTest.php b/core/tests/Drupal/Tests/Core/Image/ImageTest.php
index e0a15e2a82..4f892fa3a0 100644
--- a/core/tests/Drupal/Tests/Core/Image/ImageTest.php
+++ b/core/tests/Drupal/Tests/Core/Image/ImageTest.php
@@ -108,7 +108,7 @@ protected function getTestImage($load_expected = TRUE, array $stubs = []) {
 
     $this->toolkit->expects($this->any())
       ->method('getPluginId')
-      ->will($this->returnValue('gd'));
+      ->willReturn('gd');
 
     if (!$load_expected) {
       $this->toolkit->expects($this->never())
@@ -135,11 +135,11 @@ protected function getTestImageForOperation($class_name) {
 
     $this->toolkit->expects($this->any())
       ->method('getPluginId')
-      ->will($this->returnValue('gd'));
+      ->willReturn('gd');
 
     $this->toolkit->expects($this->any())
       ->method('getToolkitOperation')
-      ->will($this->returnValue($this->toolkitOperation));
+      ->willReturn($this->toolkitOperation);
 
     $this->image = new Image($this->toolkit, $this->source);
 
@@ -212,7 +212,7 @@ public function testSave() {
     $toolkit = $this->getToolkitMock();
     $toolkit->expects($this->once())
       ->method('save')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $image = new Image($toolkit, $this->image->getSource());
 
@@ -240,7 +240,7 @@ public function testSaveFails() {
     // This will fail if save() method isn't called on the toolkit.
     $this->toolkit->expects($this->once())
       ->method('save')
-      ->will($this->returnValue(FALSE));
+      ->willReturn(FALSE);
 
     $this->assertFalse($this->image->save());
   }
@@ -254,7 +254,7 @@ public function testChmodFails() {
     $toolkit = $this->getToolkitMock();
     $toolkit->expects($this->once())
       ->method('save')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $image = new Image($toolkit, $this->image->getSource());
 
diff --git a/core/tests/Drupal/Tests/Core/Language/LanguageUnitTest.php b/core/tests/Drupal/Tests/Core/Language/LanguageUnitTest.php
index a4c5aa5f05..f7e146f478 100644
--- a/core/tests/Drupal/Tests/Core/Language/LanguageUnitTest.php
+++ b/core/tests/Drupal/Tests/Core/Language/LanguageUnitTest.php
@@ -63,7 +63,7 @@ public function testIsDefault() {
     $container->expects($this->any())
       ->method('get')
       ->with('language.default')
-      ->will($this->returnValue($language_default));
+      ->willReturn($language_default);
     \Drupal::setContainer($container);
 
     $language = new Language(['id' => $this->randomMachineName(2)]);
diff --git a/core/tests/Drupal/Tests/Core/Layout/LayoutDefaultTest.php b/core/tests/Drupal/Tests/Core/Layout/LayoutDefaultTest.php
index af9cc38759..30b1471005 100644
--- a/core/tests/Drupal/Tests/Core/Layout/LayoutDefaultTest.php
+++ b/core/tests/Drupal/Tests/Core/Layout/LayoutDefaultTest.php
@@ -30,6 +30,7 @@ public function testBuild($regions, $expected) {
       ],
     ]);
     $expected += [
+      '#in_preview' => FALSE,
       '#settings' => [
         'label' => '',
       ],
diff --git a/core/tests/Drupal/Tests/Core/Lock/LockBackendAbstractTest.php b/core/tests/Drupal/Tests/Core/Lock/LockBackendAbstractTest.php
index 8074e53d9d..be95c518ad 100644
--- a/core/tests/Drupal/Tests/Core/Lock/LockBackendAbstractTest.php
+++ b/core/tests/Drupal/Tests/Core/Lock/LockBackendAbstractTest.php
@@ -17,6 +17,9 @@ class LockBackendAbstractTest extends UnitTestCase {
    */
   protected $lock;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     $this->lock = $this->getMockForAbstractClass('Drupal\Core\Lock\LockBackendAbstract');
   }
@@ -28,7 +31,7 @@ public function testWaitFalse() {
     $this->lock->expects($this->any())
       ->method('lockMayBeAvailable')
       ->with($this->equalTo('test_name'))
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $this->assertFalse($this->lock->wait('test_name'));
   }
@@ -43,7 +46,7 @@ public function testWaitTrue() {
     $this->lock->expects($this->any())
       ->method('lockMayBeAvailable')
       ->with($this->equalTo('test_name'))
-      ->will($this->returnValue(FALSE));
+      ->willReturn(FALSE);
 
     $this->assertTrue($this->lock->wait('test_name', 1));
   }
diff --git a/core/tests/Drupal/Tests/Core/Logger/LogMessageParserTest.php b/core/tests/Drupal/Tests/Core/Logger/LogMessageParserTest.php
index 6e45055b51..8d1347bc57 100644
--- a/core/tests/Drupal/Tests/Core/Logger/LogMessageParserTest.php
+++ b/core/tests/Drupal/Tests/Core/Logger/LogMessageParserTest.php
@@ -63,6 +63,13 @@ public function providerTestParseMessagePlaceholders() {
         ['message' => 'Test {with} two {{encapsuled}} strings', 'context' => ['with' => 'together', 'encapsuled' => 'awesome']],
         ['message' => 'Test @with two {@encapsuled} strings', 'context' => ['@with' => 'together', '@encapsuled' => 'awesome']],
       ],
+
+      // Test removal of unexpected placeholders like ! while allowed
+      // placeholders beginning with @, % and : are preserved.
+      [
+        ['message' => 'Test placeholder with :url and old !bang parameter', 'context' => [':url' => 'https://drupal.org', '!bang' => 'foo bar']],
+        ['message' => 'Test placeholder with :url and old !bang parameter', 'context' => [':url' => 'https://drupal.org']],
+      ],
     ];
   }
 
diff --git a/core/tests/Drupal/Tests/Core/Logger/LoggerChannelTest.php b/core/tests/Drupal/Tests/Core/Logger/LoggerChannelTest.php
index fc4727c999..fb4eb47acc 100644
--- a/core/tests/Drupal/Tests/Core/Logger/LoggerChannelTest.php
+++ b/core/tests/Drupal/Tests/Core/Logger/LoggerChannelTest.php
@@ -137,14 +137,14 @@ public function providerTestLog() {
     $account_mock = $this->createMock('Drupal\Core\Session\AccountInterface');
     $account_mock->expects($this->any())
       ->method('id')
-      ->will($this->returnValue(1));
+      ->willReturn(1);
 
     $request_mock = $this->getMockBuilder('Symfony\Component\HttpFoundation\Request')
       ->onlyMethods(['getClientIp'])
       ->getMock();
     $request_mock->expects($this->any())
       ->method('getClientIp')
-      ->will($this->returnValue('127.0.0.1'));
+      ->willReturn('127.0.0.1');
     $request_mock->headers = $this->createMock('Symfony\Component\HttpFoundation\ParameterBag');
 
     // No request or account.
diff --git a/core/tests/Drupal/Tests/Core/Mail/MailManagerTest.php b/core/tests/Drupal/Tests/Core/Mail/MailManagerTest.php
index fae456308e..814596df60 100644
--- a/core/tests/Drupal/Tests/Core/Mail/MailManagerTest.php
+++ b/core/tests/Drupal/Tests/Core/Mail/MailManagerTest.php
@@ -92,7 +92,7 @@ protected function setUp(): void {
     $this->discovery = $this->createMock('Drupal\Component\Plugin\Discovery\DiscoveryInterface');
     $this->discovery->expects($this->any())
       ->method('getDefinitions')
-      ->will($this->returnValue($this->definitions));
+      ->willReturn($this->definitions);
   }
 
   /**
diff --git a/core/tests/Drupal/Tests/Core/Menu/ContextualLinkDefaultTest.php b/core/tests/Drupal/Tests/Core/Menu/ContextualLinkDefaultTest.php
index 05777e0c29..49a764680b 100644
--- a/core/tests/Drupal/Tests/Core/Menu/ContextualLinkDefaultTest.php
+++ b/core/tests/Drupal/Tests/Core/Menu/ContextualLinkDefaultTest.php
@@ -50,6 +50,9 @@ class ContextualLinkDefaultTest extends UnitTestCase {
    */
   protected $stringTranslation;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
@@ -69,7 +72,7 @@ public function testGetTitle() {
     $this->stringTranslation->expects($this->once())
       ->method('translateString')
       ->with($this->pluginDefinition['title'])
-      ->will($this->returnValue('Example translated'));
+      ->willReturn('Example translated');
 
     $this->setupContextualLinkDefault();
     $this->assertEquals('Example translated', $this->contextualLinkDefault->getTitle());
@@ -84,7 +87,7 @@ public function testGetTitleWithContext() {
     $this->stringTranslation->expects($this->once())
       ->method('translateString')
       ->with($this->pluginDefinition['title'])
-      ->will($this->returnValue('Example translated with context'));
+      ->willReturn('Example translated with context');
 
     $this->setupContextualLinkDefault();
     $this->assertEquals('Example translated with context', $this->contextualLinkDefault->getTitle());
@@ -99,7 +102,7 @@ public function testGetTitleWithTitleArguments() {
     $this->stringTranslation->expects($this->once())
       ->method('translateString')
       ->with($this->pluginDefinition['title'])
-      ->will($this->returnValue('Example value'));
+      ->willReturn('Example value');
 
     $this->setupContextualLinkDefault();
     $request = new Request();
diff --git a/core/tests/Drupal/Tests/Core/Menu/ContextualLinkManagerTest.php b/core/tests/Drupal/Tests/Core/Menu/ContextualLinkManagerTest.php
index 5f9d560192..3dea04ef27 100644
--- a/core/tests/Drupal/Tests/Core/Menu/ContextualLinkManagerTest.php
+++ b/core/tests/Drupal/Tests/Core/Menu/ContextualLinkManagerTest.php
@@ -62,11 +62,14 @@ class ContextualLinkManagerTest extends UnitTestCase {
    */
   protected $account;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     $language_manager = $this->createMock(LanguageManagerInterface::class);
     $language_manager->expects($this->any())
       ->method('getCurrentLanguage')
-      ->will($this->returnValue(new Language(['id' => 'en'])));
+      ->willReturn(new Language(['id' => 'en']));
 
     $this->moduleHandler = $this->createMock(ModuleHandlerInterface::class);
     $this->moduleHandler->expects($this->any())
@@ -121,7 +124,7 @@ public function testGetContextualLinkPluginsByGroup() {
     ];
     $this->pluginDiscovery->expects($this->once())
       ->method('getDefinitions')
-      ->will($this->returnValue($definitions));
+      ->willReturn($definitions);
 
     // Test with a non existing group.
     $result = $this->contextualLinkManager->getContextualLinkPluginsByGroup('group_non_existing');
@@ -156,7 +159,7 @@ public function testGetContextualLinkPluginsByGroupWithCache() {
     $this->cacheBackend->expects($this->once())
       ->method('get')
       ->with('contextual_links_plugins:en:group1')
-      ->will($this->returnValue((object) ['data' => $definitions]));
+      ->willReturn((object) ['data' => $definitions]);
 
     $result = $this->contextualLinkManager->getContextualLinkPluginsByGroup('group1');
     $this->assertEquals($definitions, $result);
@@ -235,11 +238,11 @@ public function testGetContextualLinksArrayByGroup() {
 
     $this->pluginDiscovery->expects($this->once())
       ->method('getDefinitions')
-      ->will($this->returnValue($definitions));
+      ->willReturn($definitions);
 
     $this->accessManager->expects($this->any())
       ->method('checkNamedRoute')
-      ->will($this->returnValue(AccessResult::allowed()));
+      ->willReturn(AccessResult::allowed());
 
     $this->moduleHandler->expects($this->exactly(2))
       ->method('alter')
@@ -288,7 +291,7 @@ public function testGetContextualLinksArrayByGroupAccessCheck() {
 
     $this->pluginDiscovery->expects($this->once())
       ->method('getDefinitions')
-      ->will($this->returnValue($definitions));
+      ->willReturn($definitions);
 
     $this->accessManager->expects($this->any())
       ->method('checkNamedRoute')
@@ -320,7 +323,7 @@ public function testPluginDefinitionAlter() {
 
     $this->pluginDiscovery->expects($this->once())
       ->method('getDefinitions')
-      ->will($this->returnValue($definitions));
+      ->willReturn($definitions);
 
     $this->moduleHandler->expects($this->once())
       ->method('alter')
diff --git a/core/tests/Drupal/Tests/Core/Menu/LocalActionDefaultTest.php b/core/tests/Drupal/Tests/Core/Menu/LocalActionDefaultTest.php
index 4aa764651d..de7f2c5c13 100644
--- a/core/tests/Drupal/Tests/Core/Menu/LocalActionDefaultTest.php
+++ b/core/tests/Drupal/Tests/Core/Menu/LocalActionDefaultTest.php
@@ -57,6 +57,9 @@ class LocalActionDefaultTest extends UnitTestCase {
    */
   protected $routeProvider;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
@@ -81,7 +84,7 @@ public function testGetTitle() {
     $this->stringTranslation->expects($this->once())
       ->method('translateString')
       ->with($this->pluginDefinition['title'])
-      ->will($this->returnValue('Example translated'));
+      ->willReturn('Example translated');
 
     $this->setupLocalActionDefault();
     $this->assertEquals('Example translated', $this->localActionDefault->getTitle());
@@ -97,7 +100,7 @@ public function testGetTitleWithContext() {
     $this->stringTranslation->expects($this->once())
       ->method('translateString')
       ->with($this->pluginDefinition['title'])
-      ->will($this->returnValue('Example translated with context'));
+      ->willReturn('Example translated with context');
 
     $this->setupLocalActionDefault();
     $this->assertEquals('Example translated with context', $this->localActionDefault->getTitle());
@@ -111,7 +114,7 @@ public function testGetTitleWithTitleArguments() {
     $this->stringTranslation->expects($this->once())
       ->method('translateString')
       ->with($this->pluginDefinition['title'])
-      ->will($this->returnValue('Example value'));
+      ->willReturn('Example value');
 
     $this->setupLocalActionDefault();
     $request = new Request();
diff --git a/core/tests/Drupal/Tests/Core/Menu/LocalActionManagerTest.php b/core/tests/Drupal/Tests/Core/Menu/LocalActionManagerTest.php
index 4bba2d2326..7238bbfbe8 100644
--- a/core/tests/Drupal/Tests/Core/Menu/LocalActionManagerTest.php
+++ b/core/tests/Drupal/Tests/Core/Menu/LocalActionManagerTest.php
@@ -146,7 +146,7 @@ public function testGetTitle() {
     $this->argumentResolver->expects($this->once())
       ->method('getArguments')
       ->with($this->request, [$local_action, 'getTitle'])
-      ->will($this->returnValue(['test']));
+      ->willReturn(['test']);
 
     $this->localActionManager->getTitle($local_action);
   }
@@ -159,31 +159,31 @@ public function testGetTitle() {
   public function testGetActionsForRoute($route_appears, array $plugin_definitions, array $expected_actions) {
     $this->discovery->expects($this->any())
       ->method('getDefinitions')
-      ->will($this->returnValue($plugin_definitions));
+      ->willReturn($plugin_definitions);
     $map = [];
     foreach ($plugin_definitions as $plugin_id => $plugin_definition) {
       $plugin = $this->createMock('Drupal\Core\Menu\LocalActionInterface');
       $plugin->expects($this->any())
         ->method('getRouteName')
-        ->will($this->returnValue($plugin_definition['route_name']));
+        ->willReturn($plugin_definition['route_name']);
       $plugin->expects($this->any())
         ->method('getRouteParameters')
-        ->will($this->returnValue($plugin_definition['route_parameters'] ?? []));
+        ->willReturn($plugin_definition['route_parameters'] ?? []);
       $plugin->expects($this->any())
         ->method('getTitle')
-        ->will($this->returnValue($plugin_definition['title']));
+        ->willReturn($plugin_definition['title']);
       $this->argumentResolver->expects($this->any())
         ->method('getArguments')
         ->with($this->request, [$plugin, 'getTitle'])
-        ->will($this->returnValue([]));
+        ->willReturn([]);
 
       $plugin->expects($this->any())
         ->method('getWeight')
-        ->will($this->returnValue($plugin_definition['weight']));
+        ->willReturn($plugin_definition['weight']);
       $this->argumentResolver->expects($this->any())
         ->method('getArguments')
         ->with($this->request, [$plugin, 'getTitle'])
-        ->will($this->returnValue([]));
+        ->willReturn([]);
       $map[] = [$plugin_id, [], $plugin];
     }
     $this->factory->expects($this->any())
diff --git a/core/tests/Drupal/Tests/Core/Menu/LocalTaskDefaultTest.php b/core/tests/Drupal/Tests/Core/Menu/LocalTaskDefaultTest.php
index 5bc0a94c3d..3bd8e91f8a 100644
--- a/core/tests/Drupal/Tests/Core/Menu/LocalTaskDefaultTest.php
+++ b/core/tests/Drupal/Tests/Core/Menu/LocalTaskDefaultTest.php
@@ -64,6 +64,9 @@ class LocalTaskDefaultTest extends UnitTestCase {
    */
   protected $routeProvider;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
@@ -91,7 +94,7 @@ public function testGetRouteParametersForStaticRoute() {
     $this->routeProvider->expects($this->once())
       ->method('getRouteByName')
       ->with('test_route')
-      ->will($this->returnValue(new Route('/test-route')));
+      ->willReturn(new Route('/test-route'));
 
     $this->setupLocalTaskDefault();
 
@@ -111,7 +114,7 @@ public function testGetRouteParametersInPluginDefinitions() {
     $this->routeProvider->expects($this->once())
       ->method('getRouteByName')
       ->with('test_route')
-      ->will($this->returnValue(new Route('/test-route/{parameter}')));
+      ->willReturn(new Route('/test-route/{parameter}'));
 
     $this->setupLocalTaskDefault();
 
@@ -131,7 +134,7 @@ public function testGetRouteParametersForDynamicRouteWithNonUpcastedParameters()
     $this->routeProvider->expects($this->once())
       ->method('getRouteByName')
       ->with('test_route')
-      ->will($this->returnValue($route));
+      ->willReturn($route);
 
     $this->setupLocalTaskDefault();
 
@@ -154,7 +157,7 @@ public function testGetRouteParametersForDynamicRouteWithUpcastedParameters() {
     $this->routeProvider->expects($this->once())
       ->method('getRouteByName')
       ->with('test_route')
-      ->will($this->returnValue($route));
+      ->willReturn($route);
 
     $this->setupLocalTaskDefault();
 
@@ -176,7 +179,7 @@ public function testGetRouteParametersForDynamicRouteWithUpcastedParametersEmpty
     $this->routeProvider->expects($this->once())
       ->method('getRouteByName')
       ->with('test_route')
-      ->will($this->returnValue($route));
+      ->willReturn($route);
 
     $this->setupLocalTaskDefault();
 
@@ -259,7 +262,7 @@ public function testGetTitle() {
     $this->stringTranslation->expects($this->once())
       ->method('translateString')
       ->with($this->pluginDefinition['title'])
-      ->will($this->returnValue('Example translated'));
+      ->willReturn('Example translated');
 
     $this->setupLocalTaskDefault();
     $this->assertEquals('Example translated', $this->localTaskBase->getTitle());
@@ -274,7 +277,7 @@ public function testGetTitleWithContext() {
     $this->stringTranslation->expects($this->once())
       ->method('translateString')
       ->with($this->pluginDefinition['title'])
-      ->will($this->returnValue('Example translated with context'));
+      ->willReturn('Example translated with context');
 
     $this->setupLocalTaskDefault();
     $this->assertEquals('Example translated with context', $this->localTaskBase->getTitle());
@@ -288,7 +291,7 @@ public function testGetTitleWithTitleArguments() {
     $this->stringTranslation->expects($this->once())
       ->method('translateString')
       ->with($this->pluginDefinition['title'])
-      ->will($this->returnValue('Example value'));
+      ->willReturn('Example value');
 
     $this->setupLocalTaskDefault();
     $this->assertEquals('Example value', $this->localTaskBase->getTitle());
diff --git a/core/tests/Drupal/Tests/Core/Menu/LocalTaskIntegrationTestBase.php b/core/tests/Drupal/Tests/Core/Menu/LocalTaskIntegrationTestBase.php
index 41500531c4..fc90fdb85e 100644
--- a/core/tests/Drupal/Tests/Core/Menu/LocalTaskIntegrationTestBase.php
+++ b/core/tests/Drupal/Tests/Core/Menu/LocalTaskIntegrationTestBase.php
@@ -109,7 +109,7 @@ protected function getLocalTaskManager($module_dirs, $route_name, $route_params)
     $factory = $this->createMock('Drupal\Component\Plugin\Factory\FactoryInterface');
     $factory->expects($this->any())
       ->method('createInstance')
-      ->will($this->returnValue($plugin_stub));
+      ->willReturn($plugin_stub);
     $property = new \ReflectionProperty('Drupal\Core\Menu\LocalTaskManager', 'factory');
     $property->setAccessible(TRUE);
     $property->setValue($manager, $factory);
diff --git a/core/tests/Drupal/Tests/Core/Menu/LocalTaskManagerTest.php b/core/tests/Drupal/Tests/Core/Menu/LocalTaskManagerTest.php
index e5ac2121b7..41cce150c7 100644
--- a/core/tests/Drupal/Tests/Core/Menu/LocalTaskManagerTest.php
+++ b/core/tests/Drupal/Tests/Core/Menu/LocalTaskManagerTest.php
@@ -123,7 +123,7 @@ public function testGetLocalTasksForRouteSingleLevelTitle() {
 
     $this->pluginDiscovery->expects($this->once())
       ->method('getDefinitions')
-      ->will($this->returnValue($definitions));
+      ->willReturn($definitions);
 
     $mock_plugin = $this->createMock('Drupal\Core\Menu\LocalTaskInterface');
 
@@ -147,7 +147,7 @@ public function testGetLocalTasksForRouteForChild() {
 
     $this->pluginDiscovery->expects($this->once())
       ->method('getDefinitions')
-      ->will($this->returnValue($definitions));
+      ->willReturn($definitions);
 
     $mock_plugin = $this->createMock('Drupal\Core\Menu\LocalTaskInterface');
 
@@ -169,7 +169,7 @@ public function testGetLocalTaskForRouteWithEmptyCache() {
 
     $this->pluginDiscovery->expects($this->once())
       ->method('getDefinitions')
-      ->will($this->returnValue($definitions));
+      ->willReturn($definitions);
 
     $mock_plugin = $this->createMock('Drupal\Core\Menu\LocalTaskInterface');
     $this->setupFactory($mock_plugin);
@@ -212,7 +212,7 @@ public function testGetLocalTaskForRouteWithFilledCache() {
     $this->cacheBackend->expects($this->once())
       ->method('get')
       ->with('local_task_plugins:en:menu_local_task_test_tasks_view')
-      ->will($this->returnValue((object) ['data' => $result]));
+      ->willReturn((object) ['data' => $result]);
 
     $this->cacheBackend->expects($this->never())
       ->method('set');
@@ -235,7 +235,7 @@ public function testGetTitle() {
     $this->argumentResolver->expects($this->once())
       ->method('getArguments')
       ->with($this->request, [$menu_local_task, 'getTitle'])
-      ->will($this->returnValue([]));
+      ->willReturn([]);
 
     $this->manager->getTitle($menu_local_task);
   }
@@ -253,7 +253,7 @@ protected function setupLocalTaskManager() {
     $language_manager = $this->createMock('Drupal\Core\Language\LanguageManagerInterface');
     $language_manager->expects($this->any())
       ->method('getCurrentLanguage')
-      ->will($this->returnValue(new Language(['id' => 'en'])));
+      ->willReturn(new Language(['id' => 'en']));
 
     $this->manager = new LocalTaskManager($this->argumentResolver, $request_stack, $this->routeMatch, $this->routeProvider, $module_handler, $this->cacheBackend, $language_manager, $this->accessManager, $this->account);
 
@@ -406,7 +406,7 @@ public function testGetTasksBuildWithCacheabilityMetadata() {
 
     $this->pluginDiscovery->expects($this->once())
       ->method('getDefinitions')
-      ->will($this->returnValue($definitions));
+      ->willReturn($definitions);
 
     // Set up some cacheability metadata and ensure its merged together.
     $definitions['menu_local_task_test_tasks_settings']['cache_tags'] = ['tag.example1'];
diff --git a/core/tests/Drupal/Tests/Core/Menu/MenuActiveTrailTest.php b/core/tests/Drupal/Tests/Core/Menu/MenuActiveTrailTest.php
index 4e7e330f33..e1fa99219d 100644
--- a/core/tests/Drupal/Tests/Core/Menu/MenuActiveTrailTest.php
+++ b/core/tests/Drupal/Tests/Core/Menu/MenuActiveTrailTest.php
@@ -145,7 +145,7 @@ public function testGetActiveLink(Request $request, $links, $menu_name, $expecte
       $this->menuLinkManager->expects($this->exactly(2))
         ->method('loadLinksbyRoute')
         ->with('baby_llama')
-        ->will($this->returnValue($links));
+        ->willReturn($links);
     }
     // Test with menu name.
     $this->assertSame($expected_link, $this->menuActiveTrail->getActiveLink($menu_name));
@@ -169,7 +169,7 @@ public function testGetActiveTrailIds(Request $request, $links, $menu_name, $exp
       $this->menuLinkManager->expects($this->exactly(2))
         ->method('loadLinksbyRoute')
         ->with('baby_llama')
-        ->will($this->returnValue($links));
+        ->willReturn($links);
       if ($expected_link !== NULL) {
         $this->menuLinkManager->expects($this->exactly(2))
           ->method('getParentIds')
@@ -205,7 +205,7 @@ public function testGetCid() {
     $this->menuLinkManager->expects($this->any())
       ->method('loadLinksbyRoute')
       ->with('baby_llama')
-      ->will($this->returnValue($data[1]));
+      ->willReturn($data[1]);
 
     $expected_link = $data[3];
     $expected_trail = $data[4];
diff --git a/core/tests/Drupal/Tests/Core/Menu/StaticMenuLinkOverridesTest.php b/core/tests/Drupal/Tests/Core/Menu/StaticMenuLinkOverridesTest.php
index d1b13b0432..a440d539d3 100644
--- a/core/tests/Drupal/Tests/Core/Menu/StaticMenuLinkOverridesTest.php
+++ b/core/tests/Drupal/Tests/Core/Menu/StaticMenuLinkOverridesTest.php
@@ -121,7 +121,7 @@ public function testSaveOverride() {
     $config_factory = $this->createMock('Drupal\Core\Config\ConfigFactoryInterface');
     $config_factory->expects($this->once())
       ->method('getEditable')
-      ->will($this->returnValue($config));
+      ->willReturn($config);
 
     $static_override = new StaticMenuLinkOverrides($config_factory);
 
@@ -148,7 +148,7 @@ public function testDeleteOverrides($ids, array $old_definitions, array $new_def
     $config->expects($this->once())
       ->method('get')
       ->with('definitions')
-      ->will($this->returnValue($old_definitions));
+      ->willReturn($old_definitions);
 
     // Only save if the definitions changes.
     $config->expects($old_definitions != $new_definitions ? $this->once() : $this->never())
@@ -161,7 +161,7 @@ public function testDeleteOverrides($ids, array $old_definitions, array $new_def
     $config_factory = $this->createMock('Drupal\Core\Config\ConfigFactoryInterface');
     $config_factory->expects($this->once())
       ->method('getEditable')
-      ->will($this->returnValue($config));
+      ->willReturn($config);
 
     $static_override = new StaticMenuLinkOverrides($config_factory);
 
diff --git a/core/tests/Drupal/Tests/Core/PageCache/ChainRequestPolicyTest.php b/core/tests/Drupal/Tests/Core/PageCache/ChainRequestPolicyTest.php
index 5583a56c2d..03b66ce502 100644
--- a/core/tests/Drupal/Tests/Core/PageCache/ChainRequestPolicyTest.php
+++ b/core/tests/Drupal/Tests/Core/PageCache/ChainRequestPolicyTest.php
@@ -27,6 +27,9 @@ class ChainRequestPolicyTest extends UnitTestCase {
    */
   protected $request;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     $this->policy = new ChainRequestPolicy();
     $this->request = new Request();
@@ -52,7 +55,7 @@ public function testNullRuleChain() {
     $rule->expects($this->once())
       ->method('check')
       ->with($this->request)
-      ->will($this->returnValue(NULL));
+      ->willReturn(NULL);
 
     $this->policy->addPolicy($rule);
 
@@ -71,7 +74,7 @@ public function testChainExceptionOnInvalidReturnValue($return_value) {
     $rule->expects($this->once())
       ->method('check')
       ->with($this->request)
-      ->will($this->returnValue($return_value));
+      ->willReturn($return_value);
 
     $this->policy->addPolicy($rule);
 
@@ -108,7 +111,7 @@ public function testAllowIfAnyRuleReturnedAllow($return_values) {
       $rule->expects($this->once())
         ->method('check')
         ->with($this->request)
-        ->will($this->returnValue($return_value));
+        ->willReturn($return_value);
 
       $this->policy->addPolicy($rule);
     }
@@ -138,14 +141,14 @@ public function testStopChainOnFirstDeny() {
     $rule1->expects($this->once())
       ->method('check')
       ->with($this->request)
-      ->will($this->returnValue(RequestPolicyInterface::ALLOW));
+      ->willReturn(RequestPolicyInterface::ALLOW);
     $this->policy->addPolicy($rule1);
 
     $deny_rule = $this->createMock('Drupal\Core\PageCache\RequestPolicyInterface');
     $deny_rule->expects($this->once())
       ->method('check')
       ->with($this->request)
-      ->will($this->returnValue(RequestPolicyInterface::DENY));
+      ->willReturn(RequestPolicyInterface::DENY);
     $this->policy->addPolicy($deny_rule);
 
     $ignored_rule = $this->createMock('Drupal\Core\PageCache\RequestPolicyInterface');
diff --git a/core/tests/Drupal/Tests/Core/PageCache/ChainResponsePolicyTest.php b/core/tests/Drupal/Tests/Core/PageCache/ChainResponsePolicyTest.php
index 5a4ab748d7..85ec708986 100644
--- a/core/tests/Drupal/Tests/Core/PageCache/ChainResponsePolicyTest.php
+++ b/core/tests/Drupal/Tests/Core/PageCache/ChainResponsePolicyTest.php
@@ -35,6 +35,9 @@ class ChainResponsePolicyTest extends UnitTestCase {
    */
   protected $response;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     $this->policy = new ChainResponsePolicy();
     $this->response = new Response();
@@ -61,7 +64,7 @@ public function testNullRuleChain() {
     $rule->expects($this->once())
       ->method('check')
       ->with($this->response, $this->request)
-      ->will($this->returnValue(NULL));
+      ->willReturn(NULL);
 
     $this->policy->addPolicy($rule);
 
@@ -80,7 +83,7 @@ public function testChainExceptionOnInvalidReturnValue($return_value) {
     $rule->expects($this->once())
       ->method('check')
       ->with($this->response, $this->request)
-      ->will($this->returnValue($return_value));
+      ->willReturn($return_value);
 
     $this->policy->addPolicy($rule);
 
@@ -119,7 +122,7 @@ public function testStopChainOnFirstDeny() {
     $deny_rule->expects($this->once())
       ->method('check')
       ->with($this->response, $this->request)
-      ->will($this->returnValue(ResponsePolicyInterface::DENY));
+      ->willReturn(ResponsePolicyInterface::DENY);
     $this->policy->addPolicy($deny_rule);
 
     $ignored_rule = $this->createMock('Drupal\Core\PageCache\ResponsePolicyInterface');
diff --git a/core/tests/Drupal/Tests/Core/PageCache/CommandLineOrUnsafeMethodTest.php b/core/tests/Drupal/Tests/Core/PageCache/CommandLineOrUnsafeMethodTest.php
index c4eff94685..2d1d1b23e5 100644
--- a/core/tests/Drupal/Tests/Core/PageCache/CommandLineOrUnsafeMethodTest.php
+++ b/core/tests/Drupal/Tests/Core/PageCache/CommandLineOrUnsafeMethodTest.php
@@ -19,6 +19,9 @@ class CommandLineOrUnsafeMethodTest extends UnitTestCase {
    */
   protected $policy;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     // Note that it is necessary to partially mock the class under test in
     // order to disable the isCli-check.
@@ -36,7 +39,7 @@ protected function setUp(): void {
   public function testHttpMethod($expected_result, $method) {
     $this->policy->expects($this->once())
       ->method('isCli')
-      ->will($this->returnValue(FALSE));
+      ->willReturn(FALSE);
 
     $request = Request::create('/', $method);
     $actual_result = $this->policy->check($request);
@@ -70,7 +73,7 @@ public function providerTestHttpMethod() {
   public function testIsCli() {
     $this->policy->expects($this->once())
       ->method('isCli')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $request = Request::create('/', 'GET');
     $actual_result = $this->policy->check($request);
diff --git a/core/tests/Drupal/Tests/Core/PageCache/NoSessionOpenTest.php b/core/tests/Drupal/Tests/Core/PageCache/NoSessionOpenTest.php
index 9f24716df8..64970847c1 100644
--- a/core/tests/Drupal/Tests/Core/PageCache/NoSessionOpenTest.php
+++ b/core/tests/Drupal/Tests/Core/PageCache/NoSessionOpenTest.php
@@ -27,6 +27,9 @@ class NoSessionOpenTest extends UnitTestCase {
    */
   protected $policy;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     $this->sessionConfiguration = $this->createMock('Drupal\Core\Session\SessionConfigurationInterface');
     $this->policy = new NoSessionOpen($this->sessionConfiguration);
diff --git a/core/tests/Drupal/Tests/Core/ParamConverter/ParamConverterManagerTest.php b/core/tests/Drupal/Tests/Core/ParamConverter/ParamConverterManagerTest.php
index d755a78395..b3858a136a 100644
--- a/core/tests/Drupal/Tests/Core/ParamConverter/ParamConverterManagerTest.php
+++ b/core/tests/Drupal/Tests/Core/ParamConverter/ParamConverterManagerTest.php
@@ -132,7 +132,7 @@ public function testSetRouteParameterConverters($path, $parameters = NULL, $expe
     $converter->expects($this->any())
       ->method('applies')
       ->with($this->anything(), 'id', $this->anything())
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
     $this->manager->addConverter($converter, 'applied');
 
     $route = new Route($path);
@@ -194,7 +194,7 @@ public function testConvert() {
     $converter->expects($this->any())
       ->method('convert')
       ->with(1, $this->isType('array'), 'id', $this->isType('array'))
-      ->will($this->returnValue('something_better!'));
+      ->willReturn('something_better!');
     $this->manager->addConverter($converter, 'test_convert');
 
     $result = $this->manager->convert($defaults);
@@ -240,7 +240,7 @@ public function testConvertMissingParam() {
     $converter->expects($this->any())
       ->method('convert')
       ->with(1, $this->isType('array'), 'id', $this->isType('array'))
-      ->will($this->returnValue(NULL));
+      ->willReturn(NULL);
     $this->manager->addConverter($converter, 'test_convert');
 
     $this->expectException(ParamNotConvertedException::class);
diff --git a/core/tests/Drupal/Tests/Core/PathProcessor/PathProcessorTest.php b/core/tests/Drupal/Tests/Core/PathProcessor/PathProcessorTest.php
index 14814b6755..2737bd4015 100644
--- a/core/tests/Drupal/Tests/Core/PathProcessor/PathProcessorTest.php
+++ b/core/tests/Drupal/Tests/Core/PathProcessor/PathProcessorTest.php
@@ -35,6 +35,9 @@ class PathProcessorTest extends UnitTestCase {
    */
   protected $languageManager;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
 
     // Set up some languages to be used by the language-based path processor.
@@ -58,13 +61,13 @@ protected function setUp(): void {
       ->getMock();
     $language_manager->expects($this->any())
       ->method('getCurrentLanguage')
-      ->will($this->returnValue($languages['en']));
+      ->willReturn($languages['en']);
     $language_manager->expects($this->any())
       ->method('getLanguages')
-      ->will($this->returnValue($this->languages));
+      ->willReturn($this->languages);
     $language_manager->expects($this->any())
       ->method('getLanguageTypes')
-      ->will($this->returnValue([LanguageInterface::TYPE_INTERFACE]));
+      ->willReturn([LanguageInterface::TYPE_INTERFACE]);
 
     $this->languageManager = $language_manager;
   }
@@ -113,18 +116,18 @@ public function testProcessInbound() {
       ->getMock();
     $negotiator->expects($this->any())
       ->method('getNegotiationMethods')
-      ->will($this->returnValue([
+      ->willReturn([
         LanguageNegotiationUrl::METHOD_ID => [
           'class' => 'Drupal\language\Plugin\LanguageNegotiation\LanguageNegotiationUrl',
           'weight' => 9,
         ],
-      ]));
+      ]);
     $method = new LanguageNegotiationUrl();
     $method->setConfig($config_factory_stub);
     $method->setLanguageManager($this->languageManager);
     $negotiator->expects($this->any())
       ->method('getNegotiationMethodInstance')
-      ->will($this->returnValue($method));
+      ->willReturn($method);
 
     // Create a user stub.
     $current_user = $this->getMockBuilder('Drupal\Core\Session\AccountInterface')
diff --git a/core/tests/Drupal/Tests/Core/Plugin/CategorizingPluginManagerTraitTest.php b/core/tests/Drupal/Tests/Core/Plugin/CategorizingPluginManagerTraitTest.php
index d189383746..b7ad7110e4 100644
--- a/core/tests/Drupal/Tests/Core/Plugin/CategorizingPluginManagerTraitTest.php
+++ b/core/tests/Drupal/Tests/Core/Plugin/CategorizingPluginManagerTraitTest.php
@@ -48,9 +48,9 @@ protected function setUp(): void {
    */
   public function testGetCategories() {
     $this->assertSame([
-        'fruits',
-        'vegetables',
-      ], array_values($this->pluginManager->getCategories()));
+      'fruits',
+      'vegetables',
+    ], array_values($this->pluginManager->getCategories()));
   }
 
   /**
diff --git a/core/tests/Drupal/Tests/Core/Plugin/ContextHandlerTest.php b/core/tests/Drupal/Tests/Core/Plugin/ContextHandlerTest.php
index 0863c064af..04a8bed22d 100644
--- a/core/tests/Drupal/Tests/Core/Plugin/ContextHandlerTest.php
+++ b/core/tests/Drupal/Tests/Core/Plugin/ContextHandlerTest.php
@@ -90,7 +90,7 @@ public function providerTestCheckRequirements() {
     $context_any = $this->createMock('Drupal\Core\Plugin\Context\ContextInterface');
     $context_any->expects($this->atLeastOnce())
       ->method('getContextDefinition')
-      ->will($this->returnValue(new ContextDefinition('any')));
+      ->willReturn(new ContextDefinition('any'));
 
     $requirement_specific = new ContextDefinition('string');
     $requirement_specific->setConstraints(['Blank' => []]);
@@ -98,18 +98,18 @@ public function providerTestCheckRequirements() {
     $context_constraint_mismatch = $this->createMock('Drupal\Core\Plugin\Context\ContextInterface');
     $context_constraint_mismatch->expects($this->atLeastOnce())
       ->method('getContextDefinition')
-      ->will($this->returnValue(new ContextDefinition('foo')));
+      ->willReturn(new ContextDefinition('foo'));
     $context_datatype_mismatch = $this->createMock('Drupal\Core\Plugin\Context\ContextInterface');
     $context_datatype_mismatch->expects($this->atLeastOnce())
       ->method('getContextDefinition')
-      ->will($this->returnValue(new ContextDefinition('fuzzy')));
+      ->willReturn(new ContextDefinition('fuzzy'));
 
     $context_definition_specific = new ContextDefinition('string');
     $context_definition_specific->setConstraints(['Blank' => []]);
     $context_specific = $this->createMock('Drupal\Core\Plugin\Context\ContextInterface');
     $context_specific->expects($this->atLeastOnce())
       ->method('getContextDefinition')
-      ->will($this->returnValue($context_definition_specific));
+      ->willReturn($context_definition_specific);
 
     $data = [];
     $data[] = [[], [], TRUE];
@@ -148,21 +148,21 @@ public function providerTestGetMatchingContexts() {
     $context_any = $this->createMock('Drupal\Core\Plugin\Context\ContextInterface');
     $context_any->expects($this->atLeastOnce())
       ->method('getContextDefinition')
-      ->will($this->returnValue(new ContextDefinition('any')));
+      ->willReturn(new ContextDefinition('any'));
     $context_constraint_mismatch = $this->createMock('Drupal\Core\Plugin\Context\ContextInterface');
     $context_constraint_mismatch->expects($this->atLeastOnce())
       ->method('getContextDefinition')
-      ->will($this->returnValue(new ContextDefinition('foo')));
+      ->willReturn(new ContextDefinition('foo'));
     $context_datatype_mismatch = $this->createMock('Drupal\Core\Plugin\Context\ContextInterface');
     $context_datatype_mismatch->expects($this->atLeastOnce())
       ->method('getContextDefinition')
-      ->will($this->returnValue(new ContextDefinition('fuzzy')));
+      ->willReturn(new ContextDefinition('fuzzy'));
     $context_definition_specific = new ContextDefinition('string');
     $context_definition_specific->setConstraints(['Blank' => []]);
     $context_specific = $this->createMock('Drupal\Core\Plugin\Context\ContextInterface');
     $context_specific->expects($this->atLeastOnce())
       ->method('getContextDefinition')
-      ->will($this->returnValue($context_definition_specific));
+      ->willReturn($context_definition_specific);
 
     $data = [];
     // No context will return no valid contexts.
@@ -191,7 +191,7 @@ public function testFilterPluginDefinitionsByContexts($has_context, $definitions
       $expected_context_definition = (new ContextDefinition('string'))->setConstraints(['Blank' => []]);
       $context->expects($this->atLeastOnce())
         ->method('getContextDefinition')
-        ->will($this->returnValue($expected_context_definition));
+        ->willReturn($expected_context_definition);
       $contexts = [$context];
     }
     else {
@@ -332,7 +332,7 @@ public function testApplyContextMapping() {
       ->willReturn([]);
     $plugin->expects($this->once())
       ->method('getContextDefinitions')
-      ->will($this->returnValue(['hit' => $context_definition]));
+      ->willReturn(['hit' => $context_definition]);
     $plugin->expects($this->once())
       ->method('setContext')
       ->with('hit', $context_hit);
@@ -373,7 +373,7 @@ public function testApplyContextMappingMissingRequired() {
       ->willReturn([]);
     $plugin->expects($this->once())
       ->method('getContextDefinitions')
-      ->will($this->returnValue(['hit' => $context_definition]));
+      ->willReturn(['hit' => $context_definition]);
     $plugin->expects($this->never())
       ->method('setContext');
 
@@ -410,7 +410,7 @@ public function testApplyContextMappingMissingNotRequired() {
       ->willReturn(['optional' => 'missing']);
     $plugin->expects($this->once())
       ->method('getContextDefinitions')
-      ->will($this->returnValue(['optional' => $context_definition]));
+      ->willReturn(['optional' => $context_definition]);
     $plugin->expects($this->never())
       ->method('setContext');
 
@@ -448,7 +448,7 @@ public function testApplyContextMappingNoValueRequired() {
       ->willReturn([]);
     $plugin->expects($this->once())
       ->method('getContextDefinitions')
-      ->will($this->returnValue(['hit' => $context_definition]));
+      ->willReturn(['hit' => $context_definition]);
     $plugin->expects($this->never())
       ->method('setContext');
 
@@ -483,7 +483,7 @@ public function testApplyContextMappingNoValueNonRequired() {
       ->willReturn([]);
     $plugin->expects($this->once())
       ->method('getContextDefinitions')
-      ->will($this->returnValue(['hit' => $context_definition]));
+      ->willReturn(['hit' => $context_definition]);
     $plugin->expects($this->never())
       ->method('setContext');
 
@@ -511,7 +511,7 @@ public function testApplyContextMappingConfigurableAssigned() {
       ->willReturn([]);
     $plugin->expects($this->once())
       ->method('getContextDefinitions')
-      ->will($this->returnValue(['hit' => $context_definition]));
+      ->willReturn(['hit' => $context_definition]);
     $plugin->expects($this->once())
       ->method('setContext')
       ->with('hit', $context);
@@ -549,7 +549,7 @@ public function testApplyContextMappingConfigurableAssignedMiss() {
       ->willReturn([]);
     $plugin->expects($this->once())
       ->method('getContextDefinitions')
-      ->will($this->returnValue(['hit' => $context_definition]));
+      ->willReturn(['hit' => $context_definition]);
     $plugin->expects($this->never())
       ->method('setContext');
 
diff --git a/core/tests/Drupal/Tests/Core/Plugin/DefaultPluginManagerTest.php b/core/tests/Drupal/Tests/Core/Plugin/DefaultPluginManagerTest.php
index 3388121119..37799cdfe4 100644
--- a/core/tests/Drupal/Tests/Core/Plugin/DefaultPluginManagerTest.php
+++ b/core/tests/Drupal/Tests/Core/Plugin/DefaultPluginManagerTest.php
@@ -100,7 +100,7 @@ public function testDefaultPluginManagerWithDisabledModule() {
     $module_handler->expects($this->once())
       ->method('moduleExists')
       ->with('disabled_module')
-      ->will($this->returnValue(FALSE));
+      ->willReturn(FALSE);
 
     $plugin_manager = new TestPluginManager($this->namespaces, $definitions, $module_handler, 'test_alter_hook', '\Drupal\plugin_test\Plugin\plugin_test\fruit\FruitInterface');
 
@@ -125,7 +125,7 @@ public function testDefaultPluginManagerWithObjects() {
     $module_handler->expects($this->once())
       ->method('moduleExists')
       ->with('disabled_module')
-      ->will($this->returnValue(FALSE));
+      ->willReturn(FALSE);
 
     $plugin_manager = new TestPluginManager($this->namespaces, $definitions, $module_handler, 'test_alter_hook', '\Drupal\plugin_test\Plugin\plugin_test\fruit\FruitInterface');
 
@@ -184,7 +184,7 @@ public function testDefaultPluginManagerWithEmptyCache() {
       ->expects($this->once())
       ->method('get')
       ->with($cid)
-      ->will($this->returnValue(FALSE));
+      ->willReturn(FALSE);
     $cache_backend
       ->expects($this->once())
       ->method('set')
@@ -209,7 +209,7 @@ public function testDefaultPluginManagerWithFilledCache() {
       ->expects($this->once())
       ->method('get')
       ->with($cid)
-      ->will($this->returnValue((object) ['data' => $this->expectedDefinitions]));
+      ->willReturn((object) ['data' => $this->expectedDefinitions]);
     $cache_backend
       ->expects($this->never())
       ->method('set');
diff --git a/core/tests/Drupal/Tests/Core/Plugin/Discovery/ContainerDerivativeDiscoveryDecoratorTest.php b/core/tests/Drupal/Tests/Core/Plugin/Discovery/ContainerDerivativeDiscoveryDecoratorTest.php
index fbdec9e677..c47eba77fa 100644
--- a/core/tests/Drupal/Tests/Core/Plugin/Discovery/ContainerDerivativeDiscoveryDecoratorTest.php
+++ b/core/tests/Drupal/Tests/Core/Plugin/Discovery/ContainerDerivativeDiscoveryDecoratorTest.php
@@ -22,7 +22,7 @@ public function testGetDefinitions() {
     $example_container->expects($this->once())
       ->method('get')
       ->with($this->equalTo('example_service'))
-      ->will($this->returnValue($example_service));
+      ->willReturn($example_service);
 
     \Drupal::setContainer($example_container);
 
@@ -39,7 +39,7 @@ public function testGetDefinitions() {
     $discovery_main = $this->createMock('Drupal\Component\Plugin\Discovery\DiscoveryInterface');
     $discovery_main->expects($this->any())
       ->method('getDefinitions')
-      ->will($this->returnValue($definitions));
+      ->willReturn($definitions);
 
     $discovery = new ContainerDerivativeDiscoveryDecorator($discovery_main);
     $definitions = $discovery->getDefinitions();
diff --git a/core/tests/Drupal/Tests/Core/Plugin/Discovery/DerivativeDiscoveryDecoratorTest.php b/core/tests/Drupal/Tests/Core/Plugin/Discovery/DerivativeDiscoveryDecoratorTest.php
index 12bf5e343c..8027421bce 100644
--- a/core/tests/Drupal/Tests/Core/Plugin/Discovery/DerivativeDiscoveryDecoratorTest.php
+++ b/core/tests/Drupal/Tests/Core/Plugin/Discovery/DerivativeDiscoveryDecoratorTest.php
@@ -44,7 +44,7 @@ public function testGetDerivativeFetcher() {
 
     $this->discoveryMain->expects($this->any())
       ->method('getDefinitions')
-      ->will($this->returnValue($definitions));
+      ->willReturn($definitions);
 
     $discovery = new DerivativeDiscoveryDecorator($this->discoveryMain);
     $definitions = $discovery->getDefinitions();
@@ -70,7 +70,7 @@ public function testGetDerivativeFetcherWithAnnotationObjects() {
 
     $this->discoveryMain->expects($this->any())
       ->method('getDefinitions')
-      ->will($this->returnValue($definitions));
+      ->willReturn($definitions);
 
     $discovery = new DerivativeDiscoveryDecorator($this->discoveryMain);
     $definitions = $discovery->getDefinitions();
@@ -100,7 +100,7 @@ public function testGetDeriverClassWithClassedDefinitions() {
 
     $this->discoveryMain->expects($this->any())
       ->method('getDefinitions')
-      ->will($this->returnValue($definitions));
+      ->willReturn($definitions);
 
     $discovery = new DerivativeDiscoveryDecorator($this->discoveryMain);
     $definitions = $discovery->getDefinitions();
@@ -145,7 +145,7 @@ public function testNonExistentDerivativeFetcher() {
     ];
     $this->discoveryMain->expects($this->any())
       ->method('getDefinitions')
-      ->will($this->returnValue($definitions));
+      ->willReturn($definitions);
 
     $discovery = new DerivativeDiscoveryDecorator($this->discoveryMain);
     $this->expectException(InvalidDeriverException::class);
@@ -167,7 +167,7 @@ public function testInvalidDerivativeFetcher() {
     ];
     $this->discoveryMain->expects($this->any())
       ->method('getDefinitions')
-      ->will($this->returnValue($definitions));
+      ->willReturn($definitions);
 
     $discovery = new DerivativeDiscoveryDecorator($this->discoveryMain);
     $this->expectException(InvalidDeriverException::class);
@@ -202,7 +202,7 @@ public function testExistingDerivative() {
 
     $this->discoveryMain->expects($this->any())
       ->method('getDefinitions')
-      ->will($this->returnValue($definitions));
+      ->willReturn($definitions);
 
     $discovery = new DerivativeDiscoveryDecorator($this->discoveryMain);
     $returned_definitions = $discovery->getDefinitions();
diff --git a/core/tests/Drupal/Tests/Core/Plugin/Discovery/HookDiscoveryTest.php b/core/tests/Drupal/Tests/Core/Plugin/Discovery/HookDiscoveryTest.php
index b6d13d43dc..0ac5cd7739 100644
--- a/core/tests/Drupal/Tests/Core/Plugin/Discovery/HookDiscoveryTest.php
+++ b/core/tests/Drupal/Tests/Core/Plugin/Discovery/HookDiscoveryTest.php
@@ -40,11 +40,6 @@ protected function setUp(): void {
    * @see \Drupal\Core\Plugin\Discovery::getDefinitions()
    */
   public function testGetDefinitionsWithoutPlugins() {
-    $this->moduleHandler->expects($this->once())
-      ->method('invokeAllWith')
-      ->with('test_plugin')
-      ->will($this->returnValue([]));
-
     $this->assertCount(0, $this->hookDiscovery->getDefinitions());
   }
 
@@ -112,10 +107,6 @@ public function testGetDefinition() {
    * @see \Drupal\Core\Plugin\Discovery::getDefinition()
    */
   public function testGetDefinitionWithUnknownID() {
-    $this->moduleHandler->expects($this->once())
-      ->method('invokeAllWith')
-      ->will($this->returnValue([]));
-
     $this->expectException(PluginNotFoundException::class);
     $this->hookDiscovery->getDefinition('test_non_existent', TRUE);
   }
diff --git a/core/tests/Drupal/Tests/Core/Plugin/Discovery/YamlDiscoveryDecoratorTest.php b/core/tests/Drupal/Tests/Core/Plugin/Discovery/YamlDiscoveryDecoratorTest.php
index 7712659ea9..5717f75ca1 100644
--- a/core/tests/Drupal/Tests/Core/Plugin/Discovery/YamlDiscoveryDecoratorTest.php
+++ b/core/tests/Drupal/Tests/Core/Plugin/Discovery/YamlDiscoveryDecoratorTest.php
@@ -33,6 +33,9 @@ class YamlDiscoveryDecoratorTest extends UnitTestCase {
     'decorated_2' => 'decorated_test_2',
   ];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
@@ -59,7 +62,7 @@ protected function setUp(): void {
     $decorated = $this->createMock('Drupal\Component\Plugin\Discovery\DiscoveryInterface');
     $decorated->expects($this->once())
       ->method('getDefinitions')
-      ->will($this->returnValue($definitions));
+      ->willReturn($definitions);
 
     $this->discoveryDecorator = new YamlDiscoveryDecorator($decorated, 'test', $directories);
   }
diff --git a/core/tests/Drupal/Tests/Core/Plugin/Discovery/YamlDiscoveryTest.php b/core/tests/Drupal/Tests/Core/Plugin/Discovery/YamlDiscoveryTest.php
index b20dc52e6a..fa12c88f2e 100644
--- a/core/tests/Drupal/Tests/Core/Plugin/Discovery/YamlDiscoveryTest.php
+++ b/core/tests/Drupal/Tests/Core/Plugin/Discovery/YamlDiscoveryTest.php
@@ -32,6 +32,9 @@ class YamlDiscoveryTest extends UnitTestCase {
     'test_2' => 'test_2_b',
   ];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     parent::setUp();
 
diff --git a/core/tests/Drupal/Tests/Core/Plugin/LazyPluginCollectionTestBase.php b/core/tests/Drupal/Tests/Core/Plugin/LazyPluginCollectionTestBase.php
index 5d363f280e..e96a2d864d 100644
--- a/core/tests/Drupal/Tests/Core/Plugin/LazyPluginCollectionTestBase.php
+++ b/core/tests/Drupal/Tests/Core/Plugin/LazyPluginCollectionTestBase.php
@@ -43,11 +43,14 @@ abstract class LazyPluginCollectionTestBase extends UnitTestCase {
     'apple' => ['id' => 'apple', 'key' => 'value'],
   ];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     $this->pluginManager = $this->createMock('Drupal\Component\Plugin\PluginManagerInterface');
     $this->pluginManager->expects($this->any())
       ->method('getDefinitions')
-      ->will($this->returnValue($this->getPluginDefinitions()));
+      ->willReturn($this->getPluginDefinitions());
 
   }
 
@@ -104,7 +107,7 @@ protected function getPluginMock($plugin_id, array $definition) {
     $mock = $this->createMock('Drupal\Component\Plugin\PluginInspectionInterface');
     $mock->expects($this->any())
       ->method('getPluginId')
-      ->will($this->returnValue($plugin_id));
+      ->willReturn($plugin_id);
     return $mock;
   }
 
diff --git a/core/tests/Drupal/Tests/Core/PrivateKeyTest.php b/core/tests/Drupal/Tests/Core/PrivateKeyTest.php
index b662bec503..932bf0a2f7 100644
--- a/core/tests/Drupal/Tests/Core/PrivateKeyTest.php
+++ b/core/tests/Drupal/Tests/Core/PrivateKeyTest.php
@@ -53,7 +53,7 @@ public function testGet() {
     $this->state->expects($this->once())
       ->method('get')
       ->with('system.private_key')
-      ->will($this->returnValue($this->key));
+      ->willReturn($this->key);
 
     $this->assertEquals($this->key, $this->privateKey->get());
   }
@@ -74,7 +74,7 @@ public function testSet() {
     $this->state->expects($this->once())
       ->method('set')
       ->with('system.private_key', $random_name)
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $this->privateKey->set($random_name);
   }
diff --git a/core/tests/Drupal/Tests/Core/Render/PlaceholderGeneratorTest.php b/core/tests/Drupal/Tests/Core/Render/PlaceholderGeneratorTest.php
index 1c492dc434..cdde813b5f 100644
--- a/core/tests/Drupal/Tests/Core/Render/PlaceholderGeneratorTest.php
+++ b/core/tests/Drupal/Tests/Core/Render/PlaceholderGeneratorTest.php
@@ -50,10 +50,13 @@ public function testRenderPlaceholdersDifferentSortedContextsTags() {
     $tags_1 = ['current-temperature', 'foo'];
     $tags_2 = ['foo', 'current-temperature'];
     $test_element = [
-        '#cache' => [
-          'max-age' => Cache::PERMANENT,
-        ],
-        '#lazy_builder' => ['Drupal\Tests\Core\Render\PlaceholdersTest::callback', ['foo' => TRUE]],
+      '#cache' => [
+        'max-age' => Cache::PERMANENT,
+      ],
+      '#lazy_builder' => [
+        'Drupal\Tests\Core\Render\PlaceholdersTest::callback',
+        ['foo' => TRUE],
+      ],
     ];
 
     $test_element['#cache']['contexts'] = $contexts_1;
diff --git a/core/tests/Drupal/Tests/Core/Render/RendererBubblingTest.php b/core/tests/Drupal/Tests/Core/Render/RendererBubblingTest.php
index 31d32bdbaa..e9041d9dea 100644
--- a/core/tests/Drupal/Tests/Core/Render/RendererBubblingTest.php
+++ b/core/tests/Drupal/Tests/Core/Render/RendererBubblingTest.php
@@ -185,7 +185,7 @@ public function providerTestContextBubblingEdgeCases() {
     // set of contexts are present point to the same cache item. Regardless of
     // the contexts' order. A sad necessity because PHP doesn't have sets.)
     $test_element = [
-     '#cache' => [
+      '#cache' => [
         'keys' => ['set_test'],
         'contexts' => [],
       ],
@@ -622,7 +622,7 @@ public function testOverWriteCacheKeys() {
     $data = [
       '#cache' => [
         'keys' => ['llama', 'bar'],
-       ],
+      ],
       '#pre_render' => [__NAMESPACE__ . '\\BubblingTest::bubblingCacheOverwritePrerender'],
     ];
     $this->expectException(\LogicException::class);
diff --git a/core/tests/Drupal/Tests/Core/Render/RendererDebugTest.php b/core/tests/Drupal/Tests/Core/Render/RendererDebugTest.php
new file mode 100644
index 0000000000..a433acd188
--- /dev/null
+++ b/core/tests/Drupal/Tests/Core/Render/RendererDebugTest.php
@@ -0,0 +1,87 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Drupal\Tests\Core\Render;
+
+use function preg_replace;
+
+/**
+ * @coversDefaultClass \Drupal\Core\Render\Renderer
+ * @group Render
+ */
+class RendererDebugTest extends RendererTestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp(): void {
+    $this->rendererConfig['debug'] = TRUE;
+
+    parent::setUp();
+  }
+
+  /**
+   * Test render debug output.
+   */
+  public function testDebugOutput() {
+    $this->setUpRequest();
+    $this->setupMemoryCache();
+
+    $element = [
+      '#cache' => [
+        'keys' => ['render_cache_test_key'],
+        'tags' => ['render_cache_test_tag', 'render_cache_test_tag1'],
+        'max-age' => 10,
+      ],
+      '#markup' => 'Test 1',
+    ];
+    $markup = $this->renderer->renderRoot($element);
+
+    $expected = <<<EOF
+<!-- START RENDERER -->
+<!-- CACHE-HIT: No -->
+<!-- CACHE TAGS:
+   * render_cache_test_tag
+   * render_cache_test_tag1
+-->
+<!-- CACHE CONTEXTS:
+   * languages:language_interface
+   * theme
+-->
+<!-- CACHE KEYS:
+   * render_cache_test_key
+-->
+<!-- CACHE MAX-AGE: 10 -->
+<!-- PRE-BUBBLING CACHE TAGS:
+   * render_cache_test_tag
+   * render_cache_test_tag1
+-->
+<!-- PRE-BUBBLING CACHE CONTEXTS:
+   * languages:language_interface
+   * theme
+-->
+<!-- PRE-BUBBLING CACHE KEYS:
+   * render_cache_test_key
+-->
+<!-- PRE-BUBBLING CACHE MAX-AGE: 10 -->
+<!-- RENDERING TIME: 0.123456789 -->
+Test 1
+<!-- END RENDERER -->
+EOF;
+    $this->assertSame($expected, preg_replace('/RENDERING TIME: \d{1}.\d{9}/', 'RENDERING TIME: 0.123456789', $markup->__toString()));
+
+    $element = [
+      '#cache' => [
+        'keys' => ['render_cache_test_key'],
+        'tags' => ['render_cache_test_tag', 'render_cache_test_tag1'],
+        'max-age' => 10,
+      ],
+      '#markup' => 'Test 1',
+    ];
+    $markup = $this->renderer->renderRoot($element);
+
+    $this->assertStringContainsString('CACHE-HIT: Yes', $markup->__toString());
+  }
+
+}
diff --git a/core/tests/Drupal/Tests/Core/Render/RendererPlaceholdersTest.php b/core/tests/Drupal/Tests/Core/Render/RendererPlaceholdersTest.php
index 744f787963..c23cc1943e 100644
--- a/core/tests/Drupal/Tests/Core/Render/RendererPlaceholdersTest.php
+++ b/core/tests/Drupal/Tests/Core/Render/RendererPlaceholdersTest.php
@@ -477,7 +477,7 @@ public function providerPlaceholders() {
     // - uncacheable
     $x = $base_element_b;
     $expected_placeholder_render_array = $x['#attached']['placeholders'][(string) $generate_placeholder_markup()];
-    unset($x['#attached']['placeholders'][(string) $generate_placeholder_markup()]['#cache']);
+    $this->assertArrayNotHasKey('#cache', $expected_placeholder_render_array);
     $cases[] = [
       $x,
       $args,
diff --git a/core/tests/Drupal/Tests/Core/Render/RendererTest.php b/core/tests/Drupal/Tests/Core/Render/RendererTest.php
index ac69590e8b..7a2a7eedfb 100644
--- a/core/tests/Drupal/Tests/Core/Render/RendererTest.php
+++ b/core/tests/Drupal/Tests/Core/Render/RendererTest.php
@@ -218,10 +218,11 @@ public function providerTestRenderBasic() {
     $data[] = [
       [
         '#markup' => 'foo',
-        '#pre_render' => [function ($elements) {
-          $elements['#markup'] .= '<script>alert("bar");</script>';
-          return $elements;
-        },
+        '#pre_render' => [
+          function ($elements) {
+            $elements['#markup'] .= '<script>alert("bar");</script>';
+            return $elements;
+          },
         ],
       ],
       'fooalert("bar");',
@@ -231,10 +232,11 @@ public function providerTestRenderBasic() {
       [
         '#markup' => 'foo',
         '#allowed_tags' => ['script'],
-        '#pre_render' => [function ($elements) {
-          $elements['#markup'] .= '<script>alert("bar");</script>';
-          return $elements;
-        },
+        '#pre_render' => [
+          function ($elements) {
+            $elements['#markup'] .= '<script>alert("bar");</script>';
+            return $elements;
+          },
         ],
       ],
       'foo<script>alert("bar");</script>',
@@ -244,10 +246,11 @@ public function providerTestRenderBasic() {
     $data[] = [
       [
         '#plain_text' => 'foo',
-        '#pre_render' => [function ($elements) {
-          $elements['#plain_text'] .= '<script>alert("bar");</script>';
-          return $elements;
-        },
+        '#pre_render' => [
+          function ($elements) {
+            $elements['#plain_text'] .= '<script>alert("bar");</script>';
+            return $elements;
+          },
         ],
       ],
       'foo&lt;script&gt;alert(&quot;bar&quot;);&lt;/script&gt;',
diff --git a/core/tests/Drupal/Tests/Core/Render/RendererTestBase.php b/core/tests/Drupal/Tests/Core/Render/RendererTestBase.php
index cb3cc7892a..70346b7925 100644
--- a/core/tests/Drupal/Tests/Core/Render/RendererTestBase.php
+++ b/core/tests/Drupal/Tests/Core/Render/RendererTestBase.php
@@ -109,6 +109,7 @@ abstract class RendererTestBase extends UnitTestCase {
       'contexts' => ['session', 'user'],
       'tags' => ['current-temperature'],
     ],
+    'debug' => FALSE,
   ];
 
   /**
diff --git a/core/tests/Drupal/Tests/Core/RouteProcessor/RouteProcessorManagerTest.php b/core/tests/Drupal/Tests/Core/RouteProcessor/RouteProcessorManagerTest.php
index 3cbb2a9b82..3d1bcc4958 100644
--- a/core/tests/Drupal/Tests/Core/RouteProcessor/RouteProcessorManagerTest.php
+++ b/core/tests/Drupal/Tests/Core/RouteProcessor/RouteProcessorManagerTest.php
@@ -21,6 +21,9 @@ class RouteProcessorManagerTest extends UnitTestCase {
    */
   protected $processorManager;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     $this->processorManager = new RouteProcessorManager();
   }
diff --git a/core/tests/Drupal/Tests/Core/Routing/AccessAwareRouterTest.php b/core/tests/Drupal/Tests/Core/Routing/AccessAwareRouterTest.php
index ed2e557940..f7928065a6 100644
--- a/core/tests/Drupal/Tests/Core/Routing/AccessAwareRouterTest.php
+++ b/core/tests/Drupal/Tests/Core/Routing/AccessAwareRouterTest.php
@@ -67,7 +67,7 @@ protected function setupRouter() {
       ->getMock();
     $this->router->expects($this->once())
       ->method('matchRequest')
-      ->will($this->returnValue([RouteObjectInterface::ROUTE_OBJECT => $this->route]));
+      ->willReturn([RouteObjectInterface::ROUTE_OBJECT => $this->route]);
     $this->accessAwareRouter = new AccessAwareRouter($this->router, $this->accessManager, $this->currentUser);
   }
 
diff --git a/core/tests/Drupal/Tests/Core/Routing/LazyRouteCollectionTest.php b/core/tests/Drupal/Tests/Core/Routing/LazyRouteCollectionTest.php
index 47bade8651..2c1283e4c1 100644
--- a/core/tests/Drupal/Tests/Core/Routing/LazyRouteCollectionTest.php
+++ b/core/tests/Drupal/Tests/Core/Routing/LazyRouteCollectionTest.php
@@ -49,7 +49,7 @@ public function testGetIterator() {
     $this->routeProvider->expects($this->exactly(2))
       ->method('getRoutesByNames')
       ->with(NULL)
-      ->will($this->returnValue($this->testRoutes));
+      ->willReturn($this->testRoutes);
     $lazyRouteCollection = new LazyRouteCollection($this->routeProvider);
     $this->assertEquals($this->testRoutes, (array) $lazyRouteCollection->getIterator());
     $this->assertEquals($this->testRoutes, $lazyRouteCollection->all());
@@ -62,7 +62,7 @@ public function testCount() {
     $this->routeProvider
       ->method('getRoutesByNames')
       ->with(NULL)
-      ->will($this->returnValue($this->testRoutes));
+      ->willReturn($this->testRoutes);
     $lazyRouteCollection = new LazyRouteCollection($this->routeProvider);
     $this->assertEquals(2, $lazyRouteCollection->count());
   }
@@ -77,7 +77,7 @@ public function testGetName() {
     $this->routeProvider
       ->method('getRouteByName')
       ->with('route_1')
-      ->will($this->returnValue($this->testRoutes['route_1']));
+      ->willReturn($this->testRoutes['route_1']);
     $lazyRouteCollection = new LazyRouteCollection($this->routeProvider);
     $this->assertEquals($lazyRouteCollection->get('route_1'), $this->testRoutes['route_1']);
 
diff --git a/core/tests/Drupal/Tests/Core/Routing/RouteBuilderTest.php b/core/tests/Drupal/Tests/Core/Routing/RouteBuilderTest.php
index 66b00d5da7..a767a0eb4d 100644
--- a/core/tests/Drupal/Tests/Core/Routing/RouteBuilderTest.php
+++ b/core/tests/Drupal/Tests/Core/Routing/RouteBuilderTest.php
@@ -77,6 +77,9 @@ class RouteBuilderTest extends UnitTestCase {
    */
   protected $checkProvider;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     $this->dumper = $this->createMock('Drupal\Core\Routing\MatcherDumperInterface');
     $this->lock = $this->createMock('Drupal\Core\Lock\LockBackendInterface');
@@ -99,7 +102,7 @@ public function testRebuildLockingUnlocking() {
     $this->lock->expects($this->once())
       ->method('acquire')
       ->with('router_rebuild')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $this->lock->expects($this->once())
       ->method('release')
@@ -107,7 +110,7 @@ public function testRebuildLockingUnlocking() {
 
     $this->yamlDiscovery->expects($this->any())
       ->method('findAll')
-      ->will($this->returnValue([]));
+      ->willReturn([]);
 
     $this->assertTrue($this->routeBuilder->rebuild());
   }
@@ -119,7 +122,7 @@ public function testRebuildBlockingLock() {
     $this->lock->expects($this->once())
       ->method('acquire')
       ->with('router_rebuild')
-      ->will($this->returnValue(FALSE));
+      ->willReturn(FALSE);
 
     $this->lock->expects($this->once())
       ->method('wait')
@@ -143,14 +146,14 @@ public function testRebuildWithStaticModuleRoutes() {
     $this->lock->expects($this->once())
       ->method('acquire')
       ->with('router_rebuild')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $routing_fixtures = new RoutingFixtures();
     $routes = $routing_fixtures->staticSampleRouteCollection();
 
     $this->yamlDiscovery->expects($this->once())
       ->method('findAll')
-      ->will($this->returnValue(['test_module' => $routes]));
+      ->willReturn(['test_module' => $routes]);
 
     $route_collection = $routing_fixtures->sampleRouteCollection();
     foreach ($route_collection->all() as $route) {
@@ -191,18 +194,18 @@ public function testRebuildWithProviderBasedRoutes() {
     $this->lock->expects($this->once())
       ->method('acquire')
       ->with('router_rebuild')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $this->yamlDiscovery->expects($this->once())
       ->method('findAll')
-      ->will($this->returnValue([
+      ->willReturn([
         'test_module' => [
           'route_callbacks' => [
             '\Drupal\Tests\Core\Routing\TestRouteSubscriber::routesFromArray',
             'test_module.route_service:routesFromCollection',
           ],
         ],
-      ]));
+      ]);
 
     $container = new ContainerBuilder();
     $container->set('test_module.route_service', new TestRouteSubscriber());
@@ -258,7 +261,7 @@ public function testRebuildIfNeeded() {
     $this->lock->expects($this->once())
       ->method('acquire')
       ->with('router_rebuild')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $this->lock->expects($this->once())
       ->method('release')
@@ -266,7 +269,7 @@ public function testRebuildIfNeeded() {
 
     $this->yamlDiscovery->expects($this->any())
       ->method('findAll')
-      ->will($this->returnValue([]));
+      ->willReturn([]);
 
     $this->routeBuilder->setRebuildNeeded();
 
@@ -286,10 +289,10 @@ public function testRebuildWithOverriddenRouteClass() {
     $this->lock->expects($this->once())
       ->method('acquire')
       ->with('router_rebuild')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
     $this->yamlDiscovery->expects($this->once())
       ->method('findAll')
-      ->will($this->returnValue([
+      ->willReturn([
         'test_module' => [
           'test_route.override' => [
             'path' => '/test_route_override',
@@ -301,7 +304,7 @@ public function testRebuildWithOverriddenRouteClass() {
             'path' => '/test_route',
           ],
         ],
-      ]));
+      ]);
 
     $container = new ContainerBuilder();
     $container->set('test_module.route_service', new TestRouteSubscriber());
diff --git a/core/tests/Drupal/Tests/Core/Routing/RoutePreloaderTest.php b/core/tests/Drupal/Tests/Core/Routing/RoutePreloaderTest.php
index da61174387..a5d75064ef 100644
--- a/core/tests/Drupal/Tests/Core/Routing/RoutePreloaderTest.php
+++ b/core/tests/Drupal/Tests/Core/Routing/RoutePreloaderTest.php
@@ -65,7 +65,7 @@ public function testOnAlterRoutesWithAdminRoutes() {
     $route_collection->add('test2', new Route('/admin/bar', ['_controller' => 'Drupal\ExampleController']));
     $event->expects($this->once())
       ->method('getRouteCollection')
-      ->will($this->returnValue($route_collection));
+      ->willReturn($route_collection);
 
     $this->state->expects($this->once())
       ->method('set')
@@ -88,7 +88,7 @@ public function testOnAlterRoutesWithAdminPathNoAdminRoute() {
     $route_collection->add('test4', new Route('/admin', ['_controller' => 'Drupal\ExampleController']));
     $event->expects($this->once())
       ->method('getRouteCollection')
-      ->will($this->returnValue($route_collection));
+      ->willReturn($route_collection);
 
     $this->state->expects($this->once())
       ->method('set')
@@ -126,7 +126,7 @@ public function testOnAlterRoutesWithNonAdminRoutes() {
 
     $event->expects($this->once())
       ->method('getRouteCollection')
-      ->will($this->returnValue($route_collection));
+      ->willReturn($route_collection);
 
     $this->state->expects($this->once())
       ->method('set')
@@ -146,7 +146,7 @@ public function testOnRequestNonHtml() {
     $request->setRequestFormat('non-html');
     $event->expects($this->any())
       ->method('getRequest')
-      ->will($this->returnValue($request));
+      ->willReturn($request);
 
     $this->routeProvider->expects($this->never())
       ->method('getRoutesByNames');
@@ -167,7 +167,7 @@ public function testOnRequestOnHtml() {
     $request->setRequestFormat('html');
     $event->expects($this->any())
       ->method('getRequest')
-      ->will($this->returnValue($request));
+      ->willReturn($request);
 
     $this->routeProvider->expects($this->once())
       ->method('preLoadRoutes')
@@ -175,7 +175,7 @@ public function testOnRequestOnHtml() {
     $this->state->expects($this->once())
       ->method('get')
       ->with('routing.non_admin_routes')
-      ->will($this->returnValue(['test2']));
+      ->willReturn(['test2']);
 
     $this->preloader->onRequest($event);
   }
diff --git a/core/tests/Drupal/Tests/Core/Session/PermissionsHashGeneratorTest.php b/core/tests/Drupal/Tests/Core/Session/PermissionsHashGeneratorTest.php
index 8bd979a81c..1736593194 100644
--- a/core/tests/Drupal/Tests/Core/Session/PermissionsHashGeneratorTest.php
+++ b/core/tests/Drupal/Tests/Core/Session/PermissionsHashGeneratorTest.php
@@ -96,7 +96,7 @@ protected function setUp(): void {
       ->getMock();
     $this->account2->expects($this->any())
       ->method('getRoles')
-      ->will($this->returnValue($roles_1));
+      ->willReturn($roles_1);
     $this->account2->expects($this->any())
       ->method('id')
       ->willReturn(2);
@@ -109,7 +109,7 @@ protected function setUp(): void {
       ->getMock();
     $this->account3->expects($this->any())
       ->method('getRoles')
-      ->will($this->returnValue($roles_3));
+      ->willReturn($roles_3);
     $this->account3->expects($this->any())
       ->method('id')
       ->willReturn(3);
@@ -122,7 +122,7 @@ protected function setUp(): void {
       ->getMock();
     $this->account2Updated->expects($this->any())
       ->method('getRoles')
-      ->will($this->returnValue($roles_2_updated));
+      ->willReturn($roles_2_updated);
     $this->account2Updated->expects($this->any())
       ->method('id')
       ->willReturn(2);
@@ -135,7 +135,7 @@ protected function setUp(): void {
       ->getMock();
     $this->privateKey->expects($this->any())
       ->method('get')
-      ->will($this->returnValue($random));
+      ->willReturn($random);
     $this->cache = $this->getMockBuilder('Drupal\Core\Cache\CacheBackendInterface')
       ->disableOriginalConstructor()
       ->getMock();
@@ -178,7 +178,7 @@ public function testGeneratePersistentCache() {
     $this->staticCache->expects($this->once())
       ->method('get')
       ->with($expected_cid)
-      ->will($this->returnValue(FALSE));
+      ->willReturn(FALSE);
     $this->staticCache->expects($this->once())
       ->method('set')
       ->with($expected_cid, $this->isType('string'));
@@ -186,7 +186,7 @@ public function testGeneratePersistentCache() {
     $this->cache->expects($this->once())
       ->method('get')
       ->with($expected_cid)
-      ->will($this->returnValue($mock_cache));
+      ->willReturn($mock_cache);
     $this->cache->expects($this->never())
       ->method('set');
 
@@ -206,7 +206,7 @@ public function testGenerateStaticCache() {
     $this->staticCache->expects($this->once())
       ->method('get')
       ->with($expected_cid)
-      ->will($this->returnValue($mock_cache));
+      ->willReturn($mock_cache);
     $this->staticCache->expects($this->never())
       ->method('set');
 
@@ -228,7 +228,7 @@ public function testGenerateNoCache() {
     $this->staticCache->expects($this->once())
       ->method('get')
       ->with($expected_cid)
-      ->will($this->returnValue(FALSE));
+      ->willReturn(FALSE);
     $this->staticCache->expects($this->once())
       ->method('set')
       ->with($expected_cid, $this->isType('string'));
@@ -236,7 +236,7 @@ public function testGenerateNoCache() {
     $this->cache->expects($this->once())
       ->method('get')
       ->with($expected_cid)
-      ->will($this->returnValue(FALSE));
+      ->willReturn(FALSE);
     $this->cache->expects($this->once())
       ->method('set')
       ->with($expected_cid, $this->isType('string'));
diff --git a/core/tests/Drupal/Tests/Core/Session/UserSessionTest.php b/core/tests/Drupal/Tests/Core/Session/UserSessionTest.php
index 236b31b39b..92b156386a 100644
--- a/core/tests/Drupal/Tests/Core/Session/UserSessionTest.php
+++ b/core/tests/Drupal/Tests/Core/Session/UserSessionTest.php
@@ -117,7 +117,7 @@ protected function setUp(): void {
     $entity_type_manager->expects($this->any())
       ->method('getStorage')
       ->with($this->equalTo('user_role'))
-      ->will($this->returnValue($role_storage));
+      ->willReturn($role_storage);
     $container = new ContainerBuilder();
     $container->set('entity_type.manager', $entity_type_manager);
     \Drupal::setContainer($container);
diff --git a/core/tests/Drupal/Tests/Core/Session/WriteSafeSessionHandlerTest.php b/core/tests/Drupal/Tests/Core/Session/WriteSafeSessionHandlerTest.php
index 38e8b841c9..5db4d7c9df 100644
--- a/core/tests/Drupal/Tests/Core/Session/WriteSafeSessionHandlerTest.php
+++ b/core/tests/Drupal/Tests/Core/Session/WriteSafeSessionHandlerTest.php
@@ -27,6 +27,9 @@ class WriteSafeSessionHandlerTest extends UnitTestCase {
    */
   protected $sessionHandler;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp(): void {
     $this->wrappedSessionHandler = $this->createMock('SessionHandlerInterface');
     $this->sessionHandler = new WriteSafeSessionHandler($this->wrappedSessionHandler);
@@ -132,7 +135,7 @@ public function testSetSessionWritable() {
   public function testOtherMethods($method, $expected_result, $args) {
     $invocation = $this->wrappedSessionHandler->expects($this->exactly(2))
       ->method($method)
-      ->will($this->returnValue($expected_result));
+      ->willReturn($expected_result);
 
     // Set the parameter matcher.
     call_user_func_array([$invocation, 'with'], $args);
diff --git a/core/tests/Drupal/Tests/Core/StackMiddleware/NegotiationMiddlewareTest.php b/core/tests/Drupal/Tests/Core/StackMiddleware/NegotiationMiddlewareTest.php
index 935de8972e..a185f100bb 100644
--- a/core/tests/Drupal/Tests/Core/StackMiddleware/NegotiationMiddlewareTest.php
+++ b/core/tests/Drupal/Tests/Core/StackMiddleware/NegotiationMiddlewareTest.php
@@ -131,7 +131,7 @@ public function testSetFormat() {
     $app = $this->createMock(HttpKernelInterface::class);
     $app->expects($this->once())
       ->method('handle')
-      ->will($this->returnValue($this->createMock(Response::class)));
+      ->willReturn($this->createMock(Response::class));
 
     $content_negotiation = new StubNegotiationMiddleware($app);
 
diff --git a/core/tests/Drupal/Tests/Core/TempStore/PrivateTempStoreTest.php b/core/tests/Drupal/Tests/Core/TempStore/PrivateTempStoreTest.php
index 0df104a907..efc048cf36 100644
--- a/core/tests/Drupal/Tests/Core/TempStore/PrivateTempStoreTest.php
+++ b/core/tests/Drupal/Tests/Core/TempStore/PrivateTempStoreTest.php
@@ -127,7 +127,7 @@ public function testSetWithNoLockAvailable() {
     $this->lock->expects($this->exactly(2))
       ->method('acquire')
       ->with('1:test')
-      ->will($this->returnValue(FALSE));
+      ->willReturn(FALSE);
     $this->lock->expects($this->once())
       ->method('wait')
       ->with('1:test');
@@ -148,7 +148,7 @@ public function testSet() {
     $this->lock->expects($this->once())
       ->method('acquire')
       ->with('1:test')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
     $this->lock->expects($this->never())
       ->method('wait');
     $this->lock->expects($this->once())
@@ -192,11 +192,11 @@ public function testDeleteLocking() {
     $this->keyValue->expects($this->once())
       ->method('get')
       ->with('1:test')
-      ->will($this->returnValue($this->ownObject));
+      ->willReturn($this->ownObject);
     $this->lock->expects($this->once())
       ->method('acquire')
       ->with('1:test')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
     $this->lock->expects($this->never())
       ->method('wait');
     $this->lock->expects($this->once())
@@ -219,11 +219,11 @@ public function testDeleteWithNoLockAvailable() {
     $this->keyValue->expects($this->once())
       ->method('get')
       ->with('1:test')
-      ->will($this->returnValue($this->ownObject));
+      ->willReturn($this->ownObject);
     $this->lock->expects($this->exactly(2))
       ->method('acquire')
       ->with('1:test')
-      ->will($this->returnValue(FALSE));
+      ->willReturn(FALSE);
     $this->lock->expects($this->once())
       ->method('wait')
       ->with('1:test');
@@ -244,7 +244,7 @@ public function testDelete() {
     $this->lock->expects($this->once())
       ->method('acquire')
       ->with('1:test_2')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $this->keyValue->expects($this->exactly(3))
       ->method('get')
diff --git a/core/tests/Drupal/Tests/Core/TempStore/SharedTempStoreTest.php b/core/tests/Drupal/Tests/Core/TempStore/SharedTempStoreTest.php
index 6aa7001821..4df06f7a4c 100644
--- a/core/tests/Drupal/Tests/Core/TempStore/SharedTempStoreTest.php
+++ b/core/tests/Drupal/Tests/Core/TempStore/SharedTempStoreTest.php
@@ -147,7 +147,7 @@ public function testSetWithNoLockAvailable() {
     $this->lock->expects($this->exactly(2))
       ->method('acquire')
       ->with('test')
-      ->will($this->returnValue(FALSE));
+      ->willReturn(FALSE);
     $this->lock->expects($this->once())
       ->method('wait')
       ->with('test');
@@ -168,7 +168,7 @@ public function testSet() {
     $this->lock->expects($this->once())
       ->method('acquire')
       ->with('test')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
     $this->lock->expects($this->never())
       ->method('wait');
     $this->lock->expects($this->once())
@@ -191,7 +191,7 @@ public function testSetIfNotExists() {
     $this->keyValue->expects($this->once())
       ->method('setWithExpireIfNotExists')
       ->with('test', $this->ownObject, 604800)
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $this->assertTrue($this->tempStore->setIfNotExists('test', 'test_data'));
   }
@@ -204,7 +204,7 @@ public function testSetIfNotExists() {
   public function testSetIfOwnerWhenNotExists() {
     $this->keyValue->expects($this->once())
       ->method('setWithExpireIfNotExists')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $this->assertTrue($this->tempStore->setIfOwner('test', 'test_data'));
   }
@@ -217,12 +217,12 @@ public function testSetIfOwnerWhenNotExists() {
   public function testSetIfOwnerNoObject() {
     $this->keyValue->expects($this->once())
       ->method('setWithExpireIfNotExists')
-      ->will($this->returnValue(FALSE));
+      ->willReturn(FALSE);
 
     $this->keyValue->expects($this->once())
       ->method('get')
       ->with('test')
-      ->will($this->returnValue(FALSE));
+      ->willReturn(FALSE);
 
     $this->assertFalse($this->tempStore->setIfOwner('test', 'test_data'));
   }
@@ -236,11 +236,11 @@ public function testSetIfOwner() {
     $this->lock->expects($this->once())
       ->method('acquire')
       ->with('test')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $this->keyValue->expects($this->exactly(2))
       ->method('setWithExpireIfNotExists')
-      ->will($this->returnValue(FALSE));
+      ->willReturn(FALSE);
 
     $this->keyValue->expects($this->exactly(2))
       ->method('get')
@@ -280,7 +280,7 @@ public function testDelete() {
     $this->lock->expects($this->once())
       ->method('acquire')
       ->with('test')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
     $this->lock->expects($this->never())
       ->method('wait');
     $this->lock->expects($this->once())
@@ -303,7 +303,7 @@ public function testDeleteWithNoLockAvailable() {
     $this->lock->expects($this->exactly(2))
       ->method('acquire')
       ->with('test')
-      ->will($this->returnValue(FALSE));
+      ->willReturn(FALSE);
     $this->lock->expects($this->once())
       ->method('wait')
       ->with('test');
@@ -324,7 +324,7 @@ public function testDeleteIfOwner() {
     $this->lock->expects($this->once())
       ->method('acquire')
       ->with('test_2')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $this->keyValue->expects($this->exactly(3))
       ->method('get')
diff --git a/core/tests/Drupal/Tests/Core/Template/TwigExtensionTest.php b/core/tests/Drupal/Tests/Core/Template/TwigExtensionTest.php
index 764b47227e..d1b93b6f4d 100644
--- a/core/tests/Drupal/Tests/Core/Template/TwigExtensionTest.php
+++ b/core/tests/Drupal/Tests/Core/Template/TwigExtensionTest.php
@@ -2,6 +2,8 @@
 
 namespace Drupal\Tests\Core\Template;
 
+// cspell:ignore mila
+
 use Drupal\Core\File\FileUrlGeneratorInterface;
 use Drupal\Core\GeneratedLink;
 use Drupal\Core\Render\RenderableInterface;
@@ -307,12 +309,11 @@ public function providerTestRenderVar() {
   public function testEscapeWithGeneratedLink() {
     $loader = new FilesystemLoader();
     $twig = new Environment($loader, [
-        'debug' => TRUE,
-        'cache' => FALSE,
-        'autoescape' => 'html',
-        'optimizations' => 0,
-      ]
-    );
+      'debug' => TRUE,
+      'cache' => FALSE,
+      'autoescape' => 'html',
+      'optimizations' => 0,
+    ]);
 
     $twig->addExtension($this->systemUnderTest);
     $link = new GeneratedLink();
@@ -425,6 +426,122 @@ public function testLinkWithOverriddenAttributes() {
     $this->assertEquals(['foo', 'bar'], $build['#url']->getOption('attributes')['class']);
   }
 
+  /**
+   * Tests Twig 'add_suggestion' filter.
+   *
+   * @covers ::suggestThemeHook
+   * @dataProvider providerTestTwigAddSuggestionFilter
+   */
+  public function testTwigAddSuggestionFilter($original_render_array, $suggestion, $expected_render_array) {
+    $processed_render_array = $this->systemUnderTest->suggestThemeHook($original_render_array, $suggestion);
+    $this->assertEquals($expected_render_array, $processed_render_array);
+  }
+
+  /**
+   * A data provider for ::testTwigAddSuggestionFilter().
+   *
+   * @return \Iterator
+   */
+  public function providerTestTwigAddSuggestionFilter(): \Iterator {
+    yield 'suggestion should be added' => [
+      [
+        '#theme' => 'kitten',
+        '#name' => 'Mila',
+      ],
+      'cute',
+      [
+        '#theme' => [
+          'kitten__cute',
+          'kitten',
+        ],
+        '#name' => 'Mila',
+      ],
+    ];
+
+    yield 'suggestion should extend existing suggestions' => [
+      [
+        '#theme' => 'kitten__stripy',
+        '#name' => 'Mila',
+      ],
+      'cute',
+      [
+        '#theme' => [
+          'kitten__stripy__cute',
+          'kitten__stripy',
+        ],
+        '#name' => 'Mila',
+      ],
+    ];
+
+    yield 'suggestion should have highest priority' => [
+      [
+        '#theme' => [
+          'kitten__stripy',
+          'kitten',
+        ],
+        '#name' => 'Mila',
+      ],
+      'cute',
+      [
+        '#theme' => [
+          'kitten__stripy__cute',
+          'kitten__cute',
+          'kitten__stripy',
+          'kitten',
+        ],
+        '#name' => 'Mila',
+      ],
+    ];
+
+    yield '#printed should be removed after suggestion was added' => [
+      [
+        '#theme' => 'kitten',
+        '#name' => 'Mila',
+        '#printed' => TRUE,
+      ],
+      'cute',
+      [
+        '#theme' => [
+          'kitten__cute',
+          'kitten',
+        ],
+        '#name' => 'Mila',
+      ],
+    ];
+
+    yield 'cache key should be added' => [
+      [
+        '#theme' => 'kitten',
+        '#name' => 'Mila',
+        '#cache' => [
+          'keys' => [
+            'kitten',
+          ],
+        ],
+      ],
+      'cute',
+      [
+        '#theme' => [
+          'kitten__cute',
+          'kitten',
+        ],
+        '#name' => 'Mila',
+        '#cache' => [
+          'keys' => [
+            'kitten',
+            'cute',
+          ],
+        ],
+      ],
+    ];
+
+    yield 'null/missing content should be ignored' => [
+      NULL,
+      'cute',
+      NULL,
+    ];
+  }
+
 }
 
 class TwigExtensionTestString {
diff --git a/core/tests/Drupal/Tests/Core/Test/AssertContentTraitTest.php b/core/tests/Drupal/Tests/Core/Test/AssertContentTraitTest.php
index 3bc362b328..017b60712d 100644
--- a/core/tests/Drupal/Tests/Core/Test/AssertContentTraitTest.php
+++ b/core/tests/Drupal/Tests/Core/Test/AssertContentTraitTest.php
@@ -35,7 +35,7 @@ public function testGetTextContent() {
 
 }
 
-class TestClass {
+class TestClass extends UnitTestCase {
   use AssertContentTrait;
 
   public function _setRawContent($content) {
diff --git a/core/tests/Drupal/Tests/Core/Theme/ThemeNegotiatorTest.php b/core/tests/Drupal/Tests/Core/Theme/ThemeNegotiatorTest.php
index 84a5970344..f0d372f102 100644
--- a/core/tests/Drupal/Tests/Core/Theme/ThemeNegotiatorTest.php
+++ b/core/tests/Drupal/Tests/Core/Theme/ThemeNegotiatorTest.php
@@ -62,10 +62,10 @@ public function testDetermineActiveTheme() {
     $negotiator = $this->createMock('Drupal\Core\Theme\ThemeNegotiatorInterface');
     $negotiator->expects($this->once())
       ->method('determineActiveTheme')
-      ->will($this->returnValue('example_test'));
+      ->willReturn('example_test');
     $negotiator->expects($this->once())
       ->method('applies')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $this->container->set('test_negotiator', $negotiator);
 
@@ -73,7 +73,7 @@ public function testDetermineActiveTheme() {
 
     $this->themeAccessCheck->expects($this->any())
       ->method('checkAccess')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $route_match = new RouteMatch('test_route', new Route('/test-route'), [], []);
     $theme = $this->createThemeNegotiator($negotiators)->determineActiveTheme($route_match);
@@ -92,10 +92,10 @@ public function testDetermineActiveThemeWithPriority() {
     $negotiator = $this->createMock('Drupal\Core\Theme\ThemeNegotiatorInterface');
     $negotiator->expects($this->once())
       ->method('determineActiveTheme')
-      ->will($this->returnValue('example_test'));
+      ->willReturn('example_test');
     $negotiator->expects($this->once())
       ->method('applies')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $negotiators['test_negotiator_1'] = $negotiator;
 
@@ -113,7 +113,7 @@ public function testDetermineActiveThemeWithPriority() {
 
     $this->themeAccessCheck->expects($this->any())
       ->method('checkAccess')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $route_match = new RouteMatch('test_route', new Route('/test-route'), [], []);
     $theme = $this->createThemeNegotiator(array_keys($negotiators))->determineActiveTheme($route_match);
@@ -132,20 +132,20 @@ public function testDetermineActiveThemeWithAccessCheck() {
     $negotiator = $this->createMock('Drupal\Core\Theme\ThemeNegotiatorInterface');
     $negotiator->expects($this->once())
       ->method('determineActiveTheme')
-      ->will($this->returnValue('example_test'));
+      ->willReturn('example_test');
     $negotiator->expects($this->once())
       ->method('applies')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $negotiators['test_negotiator_1'] = $negotiator;
 
     $negotiator = $this->createMock('Drupal\Core\Theme\ThemeNegotiatorInterface');
     $negotiator->expects($this->once())
       ->method('determineActiveTheme')
-      ->will($this->returnValue('example_test2'));
+      ->willReturn('example_test2');
     $negotiator->expects($this->once())
       ->method('applies')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $negotiators['test_negotiator_2'] = $negotiator;
 
@@ -179,17 +179,17 @@ public function testDetermineActiveThemeWithNotApplyingNegotiator() {
       ->method('determineActiveTheme');
     $negotiator->expects($this->once())
       ->method('applies')
-      ->will($this->returnValue(FALSE));
+      ->willReturn(FALSE);
 
     $negotiators['test_negotiator_1'] = $negotiator;
 
     $negotiator = $this->createMock('Drupal\Core\Theme\ThemeNegotiatorInterface');
     $negotiator->expects($this->once())
       ->method('determineActiveTheme')
-      ->will($this->returnValue('example_test2'));
+      ->willReturn('example_test2');
     $negotiator->expects($this->once())
       ->method('applies')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $negotiators['test_negotiator_2'] = $negotiator;
 
@@ -199,7 +199,7 @@ public function testDetermineActiveThemeWithNotApplyingNegotiator() {
 
     $this->themeAccessCheck->expects($this->any())
       ->method('checkAccess')
-      ->will($this->returnValue(TRUE));
+      ->willReturn(TRUE);
 
     $route_match = new RouteMatch('test_route', new Route('/test-route'), [], []);
     $theme = $this->createThemeNegotiator(array_keys($negotiators))->determineActiveTheme($route_match);
diff --git a/core/tests/Drupal/Tests/Core/TypedData/RecursiveContextualValidatorTest.php b/core/tests/Drupal/Tests/Core/TypedData/RecursiveContextualValidatorTest.php
index 06e6983045..5300667181 100644
--- a/core/tests/Drupal/Tests/Core/TypedData/RecursiveContextualValidatorTest.php
+++ b/core/tests/Drupal/Tests/Core/TypedData/RecursiveContextualValidatorTest.php
@@ -1,10 +1,5 @@
 <?php
 
-/**
- * @file
- * Contains \Drupal\Tests\Core\TypedData\RecursiveContextualValidatorTest.
- */
-
 namespace Drupal\Tests\Core\TypedData;
 
 use Drupal\Core\Cache\NullBackend;
@@ -258,7 +253,7 @@ public function testValidatePropertyWithInvalidObjects($object) {
   public function providerTestValidatePropertyWithInvalidObjects() {
     $data = [];
     $data[] = [new \stdClass()];
-    $data[] = [new TestClass()];
+    $data[] = [new class() {}];
 
     $data[] = [$this->createMock('Drupal\Core\TypedData\TypedDataInterface')];
 
@@ -334,7 +329,7 @@ protected function buildExampleTypedDataWithProperties($subkey_value = NULL) {
       ],
       'key_with_properties' => [
         'value' => $subkey_value ?: ['subkey1' => 'subvalue1', 'subkey2' => 'subvalue2'],
-        ],
+      ],
     ];
     $tree['properties']['key_with_properties']['properties']['subkey1'] = ['value' => $tree['properties']['key_with_properties']['value']['subkey1']];
     $tree['properties']['key_with_properties']['properties']['subkey2'] = ['value' => $tree['properties']['key_with_properties']['value']['subkey2']];
@@ -343,7 +338,3 @@ protected function buildExampleTypedDataWithProperties($subkey_value = NULL) {
   }
 
 }
-
-class TestClass {
-
-}
diff --git a/core/tests/Drupal/Tests/Core/UrlTest.php b/core/tests/Drupal/Tests/Core/UrlTest.php
index d3084108b8..d9817a32a9 100644
--- a/core/tests/Drupal/Tests/Core/UrlTest.php
+++ b/core/tests/Drupal/Tests/Core/UrlTest.php
@@ -129,15 +129,15 @@ public function testUrlFromRequest() {
         [$this->getRequestConstraint('/node/2/edit')],
       )
       ->willReturnOnConsecutiveCalls([
-          RouteObjectInterface::ROUTE_NAME => 'view.frontpage.page_1',
-          '_raw_variables' => new InputBag(),
-        ], [
-          RouteObjectInterface::ROUTE_NAME => 'node_view',
-          '_raw_variables' => new InputBag(['node' => '1']),
-        ], [
-          RouteObjectInterface::ROUTE_NAME => 'node_edit',
-          '_raw_variables' => new InputBag(['node' => '2']),
-        ]);
+        RouteObjectInterface::ROUTE_NAME => 'view.frontpage.page_1',
+        '_raw_variables' => new InputBag(),
+      ], [
+        RouteObjectInterface::ROUTE_NAME => 'node_view',
+        '_raw_variables' => new InputBag(['node' => '1']),
+      ], [
+        RouteObjectInterface::ROUTE_NAME => 'node_edit',
+        '_raw_variables' => new InputBag(['node' => '2']),
+      ]);
 
     $urls = [];
     foreach ($this->map as $index => $values) {
@@ -265,7 +265,7 @@ public function testCreateFromRequest() {
     $this->router->expects($this->once())
       ->method('matchRequest')
       ->with($request)
-      ->will($this->returnValue($attributes));
+      ->willReturn($attributes);
 
     $url = Url::createFromRequest($request);
     $expected = new Url('the_route_name', ['color' => 'chartreuse']);
@@ -357,14 +357,14 @@ public function testGetInternalPath($urls) {
     $map[] = ['node_view', ['node' => '1'], '/node/1'];
     $map[] = ['node_edit', ['node' => '2'], '/node/2/edit'];
 
-    foreach ($urls as $index => $url) {
+    foreach ($urls as $url) {
       // Clone the url so that there is no leak of internal state into the
       // other ones.
       $url = clone $url;
       $url_generator = $this->createMock('Drupal\Core\Routing\UrlGeneratorInterface');
       $url_generator->expects($this->once())
         ->method('getPathFromRoute')
-        ->will($this->returnValueMap($map, $index));
+        ->willReturnMap($map);
       $url->setUrlGenerator($url_generator);
 
       $url->getInternalPath();
diff --git a/core/tests/Drupal/Tests/Core/Utility/LinkGeneratorTest.php b/core/tests/Drupal/Tests/Core/Utility/LinkGeneratorTest.php
index 540442693a..7d95968710 100644
--- a/core/tests/Drupal/Tests/Core/Utility/LinkGeneratorTest.php
+++ b/core/tests/Drupal/Tests/Core/Utility/LinkGeneratorTest.php
@@ -120,7 +120,7 @@ public function testGenerateHrefs($route_name, array $parameters, $absolute, $ex
     $result = $this->linkGenerator->generate('Test', $url);
     $this->assertLink([
       'attributes' => ['href' => $expected_url],
-      ], $result);
+    ], $result);
   }
 
   /**
@@ -628,7 +628,7 @@ public function testGenerateWithAlterHook() {
   public function testGenerateTwice() {
     $this->urlGenerator->expects($this->any())
       ->method('generateFromRoute')
-      ->will($this->returnValue((new GeneratedUrl())->setGeneratedUrl('/')));
+      ->willReturn((new GeneratedUrl())->setGeneratedUrl('/'));
 
     $url = Url::fromRoute('<front>', [], ['attributes' => ['class' => ['foo', 'bar']]]);
     $url->setUrlGenerator($this->urlGenerator);
diff --git a/core/tests/Drupal/Tests/Core/Utility/TokenTest.php b/core/tests/Drupal/Tests/Core/Utility/TokenTest.php
index fdfa710554..ae62e7c4eb 100644
--- a/core/tests/Drupal/Tests/Core/Utility/TokenTest.php
+++ b/core/tests/Drupal/Tests/Core/Utility/TokenTest.php
@@ -114,12 +114,12 @@ public function testGetInfo() {
 
     $this->language->expects($this->atLeastOnce())
       ->method('getId')
-      ->will($this->returnValue($this->randomMachineName()));
+      ->willReturn($this->randomMachineName());
 
     $this->languageManager->expects($this->once())
       ->method('getCurrentLanguage')
       ->with(LanguageInterface::TYPE_CONTENT)
-      ->will($this->returnValue($this->language));
+      ->willReturn($this->language);
 
     // The persistent cache must only be hit once, after which the info is
     // cached statically.
@@ -132,7 +132,7 @@ public function testGetInfo() {
     $this->moduleHandler->expects($this->once())
       ->method('invokeAll')
       ->with('token_info')
-      ->will($this->returnValue($token_info));
+      ->willReturn($token_info);
     $this->moduleHandler->expects($this->once())
       ->method('alter')
       ->with('token_info', $token_info);
diff --git a/core/tests/Drupal/Tests/DocumentElement.php b/core/tests/Drupal/Tests/DocumentElement.php
index d7b1617f25..5d6def89cb 100644
--- a/core/tests/Drupal/Tests/DocumentElement.php
+++ b/core/tests/Drupal/Tests/DocumentElement.php
@@ -7,7 +7,10 @@
 namespace Drupal\Tests;
 
 use Behat\Mink\Driver\BrowserKitDriver;
+use Behat\Mink\Element\Element;
 use Behat\Mink\Element\TraversableElement;
+use Drupal\FunctionalJavascriptTests\WebDriverCurlService;
+use WebDriver\Exception\CurlExec;
 
 /**
  * Document element.
@@ -85,4 +88,31 @@ public function getText() {
     return parent::getText();
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  public function waitFor($timeout, $callback) {
+    // Wraps waits in a function to catch curl exceptions to continue waiting.
+    WebDriverCurlService::disableRetry();
+    $count = 0;
+    $wrapper = function (Element $element) use ($callback, &$count) {
+      $count++;
+      try {
+        return call_user_func($callback, $element);
+      }
+      catch (CurlExec $e) {
+        return NULL;
+      }
+    };
+    $result = parent::waitFor($timeout, $wrapper);
+    if (!$result && $count < 2) {
+      // If the callback or the system is really slow, then it might have only
+      // fired once. In this case it is better to trigger it once more as the
+      // page state has probably changed while the callback is running.
+      return call_user_func($callback, $this);
+    }
+    WebDriverCurlService::enableRetry();
+    return $result;
+  }
+
 }
diff --git a/core/tests/Drupal/Tests/Scripts/TestSiteApplicationTest.php b/core/tests/Drupal/Tests/Scripts/TestSiteApplicationTest.php
index a312bb1458..fcb63ccd4b 100644
--- a/core/tests/Drupal/Tests/Scripts/TestSiteApplicationTest.php
+++ b/core/tests/Drupal/Tests/Scripts/TestSiteApplicationTest.php
@@ -87,10 +87,6 @@ public function testInstallWithFileWithNoClass() {
   public function testInstallWithNonSetupClass() {
     $this->markTestIncomplete('Fix this test in https://www.drupal.org/project/drupal/issues/2962157.');
 
-    // Create a connection to the DB configured in SIMPLETEST_DB.
-    $connection = Database::getConnection('default', $this->addTestDatabase(''));
-    $table_count = count($connection->schema()->findTables('%'));
-
     // Use __FILE__ to test absolute paths.
     $command_line = $this->php . ' core/scripts/test-site.php install --setup-file "' . __FILE__ . '" --db-url "' . getenv('SIMPLETEST_DB') . '"';
     $process = Process::fromShellCommandline($command_line, $this->root, ['COLUMNS' => PHP_INT_MAX]);
@@ -98,8 +94,6 @@ public function testInstallWithNonSetupClass() {
 
     $this->assertStringContainsString('The class Drupal\Tests\Scripts\TestSiteApplicationTest contained in', $process->getErrorOutput());
     $this->assertStringContainsString('needs to implement \Drupal\TestSite\TestSetupInterface', $process->getErrorOutput());
-    $this->assertSame(1, $process->getExitCode());
-    $this->assertCount($table_count, $connection->schema()->findTables('%'), 'No additional tables created in the database');
   }
 
   /**
diff --git a/core/tests/Drupal/Tests/TestFileCreationTrait.php b/core/tests/Drupal/Tests/TestFileCreationTrait.php
index 5bc40fc5ec..5f401975dc 100644
--- a/core/tests/Drupal/Tests/TestFileCreationTrait.php
+++ b/core/tests/Drupal/Tests/TestFileCreationTrait.php
@@ -48,8 +48,9 @@ trait TestFileCreationTrait {
    *   (optional) File size in bytes to match. Defaults to NULL, which will not
    *   filter the returned list by size.
    *
-   * @return array[]
-   *   List of files in public:// that match the filter(s).
+   * @return object[]
+   *   List of files in public:// that match the filter(s). Each file is an
+   *   object with 'uri', 'filename', and 'name' properties.
    */
   protected function getTestFiles($type, $size = NULL) {
     /** @var \Drupal\Core\File\FileSystemInterface $file_system */
diff --git a/core/tests/Drupal/Tests/UnitTestCase.php b/core/tests/Drupal/Tests/UnitTestCase.php
index 0191a49fa4..44f46e6bb8 100644
--- a/core/tests/Drupal/Tests/UnitTestCase.php
+++ b/core/tests/Drupal/Tests/UnitTestCase.php
@@ -12,6 +12,7 @@
 use Drupal\Tests\Traits\PhpUnitWarnings;
 use Drupal\TestTools\TestVarDumper;
 use PHPUnit\Framework\TestCase;
+use Prophecy\PhpUnit\ProphecyTrait;
 use Symfony\Component\VarDumper\VarDumper;
 use Symfony\Bridge\PhpUnit\ExpectDeprecationTrait;
 
@@ -27,6 +28,7 @@ abstract class UnitTestCase extends TestCase {
 
   use PhpUnitWarnings;
   use PhpUnitCompatibilityTrait;
+  use ProphecyTrait;
   use ExpectDeprecationTrait;
 
   /**
@@ -178,13 +180,13 @@ public function getConfigStorageStub(array $configs) {
     $config_storage = $this->createMock('Drupal\Core\Config\NullStorage');
     $config_storage->expects($this->any())
       ->method('listAll')
-      ->will($this->returnValue(array_keys($configs)));
+      ->willReturn(array_keys($configs));
 
     foreach ($configs as $name => $config) {
       $config_storage->expects($this->any())
         ->method('read')
         ->with($this->equalTo($name))
-        ->will($this->returnValue($config));
+        ->willReturn($config);
     }
     return $config_storage;
   }
@@ -230,7 +232,7 @@ protected function getContainerWithCacheTagsInvalidator(CacheTagsInvalidatorInte
     $container->expects($this->any())
       ->method('get')
       ->with('cache_tags.invalidator')
-      ->will($this->returnValue($cache_tags_validator));
+      ->willReturn($cache_tags_validator);
 
     \Drupal::setContainer($container);
     return $container;
diff --git a/core/tests/Drupal/Tests/WebAssert.php b/core/tests/Drupal/Tests/WebAssert.php
index 367449a327..404796e973 100644
--- a/core/tests/Drupal/Tests/WebAssert.php
+++ b/core/tests/Drupal/Tests/WebAssert.php
@@ -225,7 +225,7 @@ public function optionExists($select, $option, TraversableElement $container = N
       throw new ElementNotFoundException($this->session->getDriver(), 'select', 'id|name|label|value', $select);
     }
 
-    $option_field = $select_field->find('named', ['option', $option]);
+    $option_field = $select_field->find('named_exact', ['option', $option]);
 
     if ($option_field === NULL) {
       throw new ElementNotFoundException($this->session->getDriver(), 'select', 'id|name|label|value', $option);
@@ -259,7 +259,7 @@ public function optionNotExists($select, $option, TraversableElement $container
       throw new ElementNotFoundException($this->session->getDriver(), 'select', 'id|name|label|value', $select);
     }
 
-    $option_field = $select_field->find('named', ['option', $option]);
+    $option_field = $select_field->find('named_exact', ['option', $option]);
 
     $this->assert($option_field === NULL, sprintf('An option "%s" exists in select "%s", but it should not.', $option, $select));
   }
diff --git a/core/tests/Drupal/Tests/XdebugRequestTrait.php b/core/tests/Drupal/Tests/XdebugRequestTrait.php
index 48c19a6c7c..f56a47f2e5 100644
--- a/core/tests/Drupal/Tests/XdebugRequestTrait.php
+++ b/core/tests/Drupal/Tests/XdebugRequestTrait.php
@@ -31,7 +31,10 @@ protected function extractCookiesFromRequest(Request $request) {
     }
     // For CLI requests, the information is stored in $_SERVER.
     $server = $request->server;
-    if ($server->has('XDEBUG_CONFIG')) {
+    if ($server->has('XDEBUG_SESSION')) {
+      $cookies['XDEBUG_SESSION'][] = $server->get('XDEBUG_SESSION');
+    }
+    elseif ($server->has('XDEBUG_CONFIG')) {
       // $_SERVER['XDEBUG_CONFIG'] has the form "key1=value1 key2=value2 ...".
       $pairs = explode(' ', $server->get('XDEBUG_CONFIG'));
       foreach ($pairs as $pair) {
diff --git a/core/tests/bootstrap.php b/core/tests/bootstrap.php
index 77813f9945..ed4a164ccf 100644
--- a/core/tests/bootstrap.php
+++ b/core/tests/bootstrap.php
@@ -7,7 +7,6 @@
  * @see phpunit.xml.dist
  */
 
-use Drupal\Component\Assertion\Handle;
 use Drupal\TestTools\PhpUnitCompatibility\ClassWriter;
 
 /**
@@ -176,9 +175,8 @@ class_alias('\Drupal\Tests\DocumentElement', '\Behat\Mink\Element\DocumentElemen
 
 // Runtime assertions. PHPUnit follows the php.ini assert.active setting for
 // runtime assertions. By default this setting is on. Ensure exceptions are
-// thrown if an assert fails, but this call does not turn runtime assertions on
-// if they weren't on already.
-Handle::register();
+// thrown if an assert fails.
+assert_options(ASSERT_EXCEPTION, TRUE);
 
 // Ensure ignored deprecation patterns listed in .deprecation-ignore.txt are
 // considered in testing.
diff --git a/core/themes/claro/claro.info.yml b/core/themes/claro/claro.info.yml
index f7b9ff373e..365572376a 100644
--- a/core/themes/claro/claro.info.yml
+++ b/core/themes/claro/claro.info.yml
@@ -100,7 +100,7 @@ libraries-override:
   views_ui/admin.styling:
     css:
       component:
-          css/views_ui.admin.css: css/components/views_ui.admin.css
+        css/views_ui.admin.css: css/components/views_ui.admin.css
       theme:
         css/views_ui.admin.theme.css: css/theme/views_ui.admin.theme.css
 
diff --git a/core/themes/claro/claro.libraries.yml b/core/themes/claro/claro.libraries.yml
index 35ce4d6260..d417024b2c 100644
--- a/core/themes/claro/claro.libraries.yml
+++ b/core/themes/claro/claro.libraries.yml
@@ -34,7 +34,6 @@ global-styling:
       css/components/fieldset.css: {}
       css/components/form.css: {}
       css/components/form--checkbox-radio.css: {}
-      css/components/form--checkbox-radio--ie.css: {}
       css/components/form--field-multiple.css: {}
       css/components/form--managed-file.css: {}
       css/components/form--text.css: {}
@@ -247,7 +246,7 @@ vertical-tabs:
     component:
       css/components/vertical-tabs.css: {}
   js:
-     js/vertical-tabs.js: {}
+    js/vertical-tabs.js: {}
   dependencies:
     - claro/global-styling
 
diff --git a/core/themes/claro/css/base/elements.css b/core/themes/claro/css/base/elements.css
index ca5deffa00..b9d5cb4fe0 100644
--- a/core/themes/claro/css/base/elements.css
+++ b/core/themes/claro/css/base/elements.css
@@ -268,9 +268,6 @@ img {
  *
  * This is applied globally to all interactive elements except Toolbar and
  * Settings Tray since they have their own styles.
- *
- * @todo https://www.drupal.org/project/claro/issues/3048785 :focus selector is
- *   active for non-interactive elements in Internet Explorer 11.
  */
 
 .page-wrapper *:focus,
diff --git a/core/themes/claro/css/base/elements.pcss.css b/core/themes/claro/css/base/elements.pcss.css
index e716912562..55bdf36cb0 100644
--- a/core/themes/claro/css/base/elements.pcss.css
+++ b/core/themes/claro/css/base/elements.pcss.css
@@ -221,9 +221,6 @@ img {
  *
  * This is applied globally to all interactive elements except Toolbar and
  * Settings Tray since they have their own styles.
- *
- * @todo https://www.drupal.org/project/claro/issues/3048785 :focus selector is
- *   active for non-interactive elements in Internet Explorer 11.
  */
 .page-wrapper *:focus,
 .ui-dialog *:focus {
diff --git a/core/themes/claro/css/components/accordion.css b/core/themes/claro/css/components/accordion.css
index cd0552e7ab..47528e8e73 100644
--- a/core/themes/claro/css/components/accordion.css
+++ b/core/themes/claro/css/components/accordion.css
@@ -24,23 +24,23 @@
 }
 
 .accordion__item:first-child {
-    margin-top: -1px;
-    border-top-left-radius: var(--details-accordion-border-size-radius);
-    border-top-right-radius: var(--details-accordion-border-size-radius);
-  }
+  margin-top: -1px;
+  border-top-left-radius: var(--details-accordion-border-size-radius);
+  border-top-right-radius: var(--details-accordion-border-size-radius);
+}
 
 .accordion__item + .accordion__item {
-    margin-top: -1px;
-  }
+  margin-top: -1px;
+}
 
 .accordion__item:last-child {
-    margin-bottom: -1px;
-    border-bottom-right-radius: var(--details-accordion-border-size-radius);
-    border-bottom-left-radius: var(--details-accordion-border-size-radius);
-  }
+  margin-bottom: -1px;
+  border-bottom-right-radius: var(--details-accordion-border-size-radius);
+  border-bottom-left-radius: var(--details-accordion-border-size-radius);
+}
 
 .accordion__item .claro-details__summary .summary {
-    display: block;
-    color: var(--color-gray-800);
-    font-weight: normal;
-  }
+  display: block;
+  color: var(--color-gray-800);
+  font-weight: normal;
+}
diff --git a/core/themes/claro/css/components/action-link.css b/core/themes/claro/css/components/action-link.css
index 7479fe0ca6..2baa66299d 100644
--- a/core/themes/claro/css/components/action-link.css
+++ b/core/themes/claro/css/components/action-link.css
@@ -194,20 +194,6 @@
   margin-left: 0.4em;
 }
 
-/**
- * Hide action link icons for IE11.
- *
- * IE 11 does not display inline svg backgrounds
- */
-
-@media screen and (-ms-high-contrast: active) {
-  /* stylelint-disable-next-line selector-type-no-unknown */
-  _:-ms-fullscreen,
-  .action-link::before {
-    display: none;
-  }
-}
-
 /* Plus */
 
 .action-link--icon-plus::before {
@@ -237,12 +223,6 @@
   background-image: url("data:image/svg+xml,%3csvg height='16' stroke='%23ab1b1b' stroke-width='2' width='16' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M3 8h10M8 3v10'/%3e%3c/svg%3e");
 }
 
-@media screen and (-ms-high-contrast: active) {
-  .action-link--icon-plus.action-link--icon-plus.action-link--icon-plus::before {
-    background-image: url("data:image/svg+xml,%3csvg height='16' stroke='windowText' stroke-width='2' viewBox='0 0 16 16' width='16' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='m3 8h10'/%3e%3cpath d='m8 3v10'/%3e%3c/svg%3e");
-  }
-}
-
 @media (forced-colors: active) {
   .action-link--icon-plus::before {
     background: linktext !important;
@@ -284,12 +264,6 @@
   background-image: url("data:image/svg+xml,%3csvg height='16' width='16' fill='%23Ab1B1B' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M14.9 2.9c-.1-.4-.2-.6-.2-.6-.1-.4-.4-.4-.8-.5l-2.3-.3c-.3 0-.3 0-.4-.3-.4-.7-.5-1.2-.9-1.2H5.7c-.4 0-.5.5-.9 1.3-.1.2-.1.2-.4.3l-2.3.3c-.4 0-.7.1-.8.4 0 0-.1.2-.2.5-.1.6-.2.5.3.5h13.2c.5 0 .4.1.3-.4zm-1.5 1.8H2.6c-.7 0-.8.1-.7.6l.8 10.1c.1.5.1.6.8.6h9.1c.6 0 .7-.1.8-.6l.8-10.1c0-.5-.1-.6-.8-.6z'/%3e%3c/svg%3e");
 }
 
-@media screen and (-ms-high-contrast: active) {
-  .action-link--icon-trash.action-link--icon-trash.action-link--icon-trash::before {
-    background-image: url("data:image/svg+xml,%3csvg height='16' viewBox='0 0 16 16' width='16' fill='windowText' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='m14.89965 2.9c-.1-.4-.2-.6-.2-.6-.1-.4-.4-.4-.8-.5l-2.3-.3c-.3 0-.3 0-.4-.3-.4-.7-.5-1.2-.9-1.2h-4.6c-.4 0-.5.5-.9 1.3-.1.2-.1.2-.4.3l-2.3.3c-.4 0-.7.1-.8.4 0 0-.1.2-.2.5-.1.6-.2.5.3.5h13.2c.5 0 .4.1.3-.4zm-1.5 1.8h-10.8c-.7 0-.8.1-.7.6l.8 10.1c.1.5.1.6.8.6h9.1c.6 0 .7-.1.8-.6l.8-10.1c0-.5-.1-.6-.8-.6z'/%3e%3c/svg%3e") !important;
-  }
-}
-
 @media (forced-colors: active) {
   .action-link--icon-trash::before {
     background: linktext !important;
@@ -331,12 +305,6 @@
   background-image: url("data:image/svg+xml,%3csvg height='16' stroke='%23ab1b1b' stroke-width='1.5' width='16' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M13 3L3 13M13 13L3 3'/%3e%3c/svg%3e");
 }
 
-@media screen and (-ms-high-contrast: active) {
-  .action-link--icon-ex.action-link--icon-ex.action-link--icon-ex::before {
-    background-image: url("data:image/svg+xml,%3csvg height='16' stroke='windowText' stroke-width='1.5' viewBox='0 0 16 16' width='16' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M13 3L3 13'/%3e%3cpath d='M13 13L3 3'/%3e%3c/svg%3e") !important;
-  }
-}
-
 @media (forced-colors: active) {
   .action-link--icon-ex::before {
     background: linktext !important;
@@ -378,12 +346,6 @@
   background-image: url("data:image/svg+xml,%3csvg fill='none' height='16' stroke='%23ab1b1b' stroke-width='2' width='16' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M2 8.571L5.6 12 14 4'/%3e%3c/svg%3e");
 }
 
-@media screen and (-ms-high-contrast: active) {
-  .action-link--icon-checkmark.action-link--icon-checkmark.action-link--icon-checkmark::before {
-    background-image: url("data:image/svg+xml,%3csvg fill='none' height='16' stroke='windowText' stroke-width='2' width='16' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M2 8.571L5.6 12 14 4'/%3e%3c/svg%3e") !important;
-  }
-}
-
 @media (forced-colors: active) {
   .action-link--icon-checkmark::before {
     background: linktext !important;
@@ -425,12 +387,6 @@
   background-image: url("data:image/svg+xml,%3csvg height='16' fill='%23AB1B1B' width='16' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M15.426 9.249a7.29 7.29 0 00.076-.998c0-.36-.035-.71-.086-1.056l-2.275-.293a5.039 5.039 0 00-.498-1.201l1.396-1.808a7.3 7.3 0 00-1.459-1.452l-1.807 1.391a5.058 5.058 0 00-1.2-.499l-.292-2.252C8.943 1.033 8.604 1 8.252 1s-.694.033-1.032.082l-.291 2.251a5.076 5.076 0 00-1.2.499L3.924 2.441a7.3 7.3 0 00-1.459 1.452L3.86 5.701a5.076 5.076 0 00-.499 1.2l-2.276.294A7.35 7.35 0 001 8.251c0 .34.031.671.077.998l2.285.295c.115.426.284.826.499 1.2L2.444 12.58c.411.55.896 1.038 1.443 1.452l1.842-1.42c.374.215.774.383 1.2.498l.298 2.311c.337.047.677.08 1.025.08s.688-.033 1.021-.08l.299-2.311a5.056 5.056 0 001.201-.498l1.842 1.42a7.326 7.326 0 001.443-1.452l-1.416-1.837c.215-.373.383-.773.498-1.199zm-7.174 1.514a2.54 2.54 0 110-5.082 2.542 2.542 0 010 5.082z'/%3e%3c/svg%3e");
 }
 
-@media screen and (-ms-high-contrast: active) {
-  .action-link--icon-cog.action-link--icon-cog.action-link--icon-cog::before {
-    background-image: url("data:image/svg+xml,%3csvg height='16' viewBox='0 0 16 16' fill='windowText' width='16' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='m15.426 9.249c.045-.327.076-.658.076-.998 0-.36-.035-.71-.086-1.056l-2.275-.293c-.115-.426-.283-.827-.498-1.201l1.396-1.808c-.416-.551-.906-1.039-1.459-1.452l-1.807 1.391c-.373-.215-.774-.383-1.2-.499l-.292-2.252c-.338-.048-.677-.081-1.029-.081s-.694.033-1.032.082l-.291 2.251c-.426.116-.826.284-1.2.499l-1.805-1.391c-.552.413-1.044.901-1.459 1.452l1.395 1.808c-.215.374-.383.774-.499 1.2l-2.276.294c-.05.346-.085.696-.085 1.056 0 .34.031.671.077.998l2.285.295c.115.426.284.826.499 1.2l-1.417 1.836c.411.55.896 1.038 1.443 1.452l1.842-1.42c.374.215.774.383 1.2.498l.298 2.311c.337.047.677.08 1.025.08s.688-.033 1.021-.08l.299-2.311c.426-.115.826-.283 1.201-.498l1.842 1.42c.547-.414 1.031-.902 1.443-1.452l-1.416-1.837c.215-.373.383-.773.498-1.199zm-7.174 1.514c-1.406 0-2.543-1.137-2.543-2.541 0-1.402 1.137-2.541 2.543-2.541 1.402 0 2.541 1.138 2.541 2.541 0 1.404-1.139 2.541-2.541 2.541z'/%3e%3c/svg%3e") !important;
-  }
-}
-
 @media (forced-colors: active) {
   .action-link--icon-cog::before {
     background: linktext !important;
@@ -472,12 +428,6 @@
   background-image: url("data:image/svg+xml,%3csvg fill-rule='evenodd' height='16' fill='%23AB1B1B' width='16' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M8 3C4.364 3 1.258 5.073 0 8c1.258 2.927 4.364 5 8 5s6.742-2.073 8-5c-1.258-2.927-4.364-5-8-5zm0 8a3 3 0 100-6 3 3 0 000 6z'/%3e%3c/svg%3e");
 }
 
-@media screen and (-ms-high-contrast: active) {
-  .action-link--icon-show.action-link--icon-show.action-link--icon-show::before {
-    background-image: url("data:image/svg+xml,%3csvg fill-rule='evenodd' height='16' viewBox='0 0 16 16' fill='windowText' width='16' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='m8 3c-3.6363601 0-6.7418187 2.0733333-8 5 1.2581813 2.926667 4.3636399 5 8 5 3.63636 0 6.741866-2.073333 8-5-1.258134-2.9266667-4.36364-5-8-5zm0 8c1.6568531 0 3-1.343147 3-3 0-1.6568534-1.3431469-3-3-3-1.6568535 0-3 1.3431466-3 3 0 1.656853 1.3431466 3 3 3z'/%3e%3c/svg%3e") !important;
-  }
-}
-
 @media (forced-colors: active) {
   .action-link--icon-show::before {
     background: linktext !important;
@@ -519,12 +469,6 @@
   background-image: url("data:image/svg+xml,%3csvg fill-rule='evenodd' height='16' fill='%23AB1B1B' width='16' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M2.01 1.696L2 1.707 14.072 13.78l-.696.697-2.078-2.078A9.232 9.232 0 018 13c-3.636 0-6.742-2.073-8-5 .647-1.505 1.783-2.784 3.228-3.672L1 2.1l.707-.707zM5 8c0-.546.146-1.058.4-1.5l4.1 4.1A3 3 0 015 8zM5.151 3.444l1.76 1.76a3 3 0 013.885 3.885l2.344 2.344C14.41 10.561 15.41 9.375 16 8c-1.258-2.927-4.364-5-8-5-.999 0-1.958.156-2.849.444z'/%3e%3c/svg%3e");
 }
 
-@media screen and (-ms-high-contrast: active) {
-  .action-link--icon-hide.action-link--icon-hide.action-link--icon-hide::before {
-    background-image: url("data:image/svg+xml,%3csvg fill-rule='evenodd' height='16' viewBox='0 0 16 16' fill='windowText' width='16' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='m2.0106399 1.6964404-.0106399.0106426 12.072 12.07205-.6964.696467-2.077627-2.077613c-1.015347.38784-2.1292399.602013-3.297973.602013-3.6363601 0-6.7418187-2.073333-8-5 .64703865-1.5050798 1.7826266-2.7844797 3.2277199-3.6722797l-2.2277199-2.2277203.7071066-.707096zm2.98936 6.3035598c0-.54608.1459066-1.0580666.4008533-1.4991333l4.0982932 4.0982801c-.4410666.25496-.9530666.400853-1.4991464.400853-1.6568535 0-3-1.343146-3-3z'/%3e%3cpath d='m5.1510932 3.4439603 1.75984 1.75984c.3376-.1315867.7048933-.2038 1.0890666-.2038 1.6568533-.0000003 3.0000002 1.3431466 3.0000002 2.9999997 0 .3841735-.07221.7514668-.2038 1.0890668l2.344093 2.3440932c1.269973-.871746 2.26864-2.0582932 2.859707-3.43316-1.258134-2.9266664-4.36364-5-8-5-.9987733 0-1.9575066.1564134-2.8489066.44396z'/%3e%3c/svg%3e");
-  }
-}
-
 @media (forced-colors: active) {
   .action-link--icon-hide::before {
     background: linktext !important;
@@ -566,12 +510,6 @@
   background-image: url("data:image/svg+xml,%3csvg width='15' height='14' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M13.727 6.714A4.239 4.239 0 008.9 5.896L3.001 0H0v2h1v1.618L1.378 4H3v1h1v1.622h1.622l.864.862L5.5 8.5l.992.99a4.227 4.227 0 001.223 3.234 4.264 4.264 0 006.012 0 4.253 4.253 0 000-6.01zm-.829 5.182a1.653 1.653 0 11-2.338-2.338 1.653 1.653 0 112.338 2.338z' fill='%23ab1b1b'/%3e%3c/svg%3e");
 }
 
-@media screen and (-ms-high-contrast: active) {
-  .action-link--icon-key.action-link--icon-key.action-link--icon-key::before {
-    background-image: url("data:image/svg+xml,%3csvg width='15' height='14' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M13.727 6.714A4.239 4.239 0 008.9 5.896L3.001 0H0v2h1v1.618L1.378 4H3v1h1v1.622h1.622l.864.862L5.5 8.5l.992.99a4.227 4.227 0 001.223 3.234 4.264 4.264 0 006.012 0 4.253 4.253 0 000-6.01zm-.829 5.182a1.653 1.653 0 11-2.338-2.338 1.653 1.653 0 112.338 2.338z' fill='windowText'/%3e%3c/svg%3e") !important;
-  }
-}
-
 @media (forced-colors: active) {
   .action-link--icon-key::before {
     background: linktext !important;
@@ -613,12 +551,6 @@
   background-image: url("data:image/svg+xml,%3csvg width='15' height='14' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M7.002 0a7 7 0 100 14 7 7 0 000-14zm3 5c0 .551-.16 1.085-.477 1.586l-.158.22c-.07.093-.189.241-.361.393a9.67 9.67 0 01-.545.447l-.203.189-.141.129-.096.17L8 8.369v.63H5.999v-.704c.026-.396.078-.73.204-.999a2.83 2.83 0 01.439-.688l.225-.21-.01-.015.176-.14.137-.128c.186-.139.357-.277.516-.417l.148-.18A.948.948 0 008.002 5 1.001 1.001 0 006 5H4a3 3 0 016.002 0zm-1.75 6.619a.627.627 0 01-.625.625h-1.25a.627.627 0 01-.626-.625v-1.238c0-.344.281-.625.626-.625h1.25c.344 0 .625.281.625.625v1.238z' fill='%23ab1b1b'/%3e%3c/svg%3e");
 }
 
-@media screen and (-ms-high-contrast: active) {
-  .action-link--icon-questionmark.action-link--icon-questionmark.action-link--icon-questionmark::before {
-    background-image: url("data:image/svg+xml,%3csvg width='15' height='14' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M7.002 0a7 7 0 100 14 7 7 0 000-14zm3 5c0 .551-.16 1.085-.477 1.586l-.158.22c-.07.093-.189.241-.361.393a9.67 9.67 0 01-.545.447l-.203.189-.141.129-.096.17L8 8.369v.63H5.999v-.704c.026-.396.078-.73.204-.999a2.83 2.83 0 01.439-.688l.225-.21-.01-.015.176-.14.137-.128c.186-.139.357-.277.516-.417l.148-.18A.948.948 0 008.002 5 1.001 1.001 0 006 5H4a3 3 0 016.002 0zm-1.75 6.619a.627.627 0 01-.625.625h-1.25a.627.627 0 01-.626-.625v-1.238c0-.344.281-.625.626-.625h1.25c.344 0 .625.281.625.625v1.238z' fill='windowText'/%3e%3c/svg%3e") !important;
-  }
-}
-
 @media (forced-colors: active) {
   .action-link--icon-questionmark::before {
     background: linktext !important;
diff --git a/core/themes/claro/css/components/action-link.pcss.css b/core/themes/claro/css/components/action-link.pcss.css
index 9e88104f52..d040e274b5 100644
--- a/core/themes/claro/css/components/action-link.pcss.css
+++ b/core/themes/claro/css/components/action-link.pcss.css
@@ -166,19 +166,6 @@
   margin-left: 0.4em;
 }
 
-/**
- * Hide action link icons for IE11.
- *
- * IE 11 does not display inline svg backgrounds
- */
-@media screen and (-ms-high-contrast: active) {
-  /* stylelint-disable-next-line selector-type-no-unknown */
-  _:-ms-fullscreen,
-  .action-link::before {
-    display: none;
-  }
-}
-
 /* Plus */
 .action-link--icon-plus::before {
   content: "";
@@ -203,12 +190,6 @@
   background-image: url(../../images/icons/ab1b1b/plus.svg);
 }
 
-@media screen and (-ms-high-contrast: active) {
-  .action-link--icon-plus.action-link--icon-plus.action-link--icon-plus::before {
-    background-image: url(../../images/icons/windowText/plus.svg);
-  }
-}
-
 @media (forced-colors: active) {
   .action-link--icon-plus::before {
     background: linktext !important;
@@ -240,12 +221,6 @@
   background-image: url(../../images/icons/ab1b1b/trash.svg);
 }
 
-@media screen and (-ms-high-contrast: active) {
-  .action-link--icon-trash.action-link--icon-trash.action-link--icon-trash::before {
-    background-image: url(../../images/icons/windowText/trash.svg) !important;
-  }
-}
-
 @media (forced-colors: active) {
   .action-link--icon-trash::before {
     background: linktext !important;
@@ -277,12 +252,6 @@
   background-image: url(../../images/icons/ab1b1b/ex.svg);
 }
 
-@media screen and (-ms-high-contrast: active) {
-  .action-link--icon-ex.action-link--icon-ex.action-link--icon-ex::before {
-    background-image: url(../../images/icons/windowText/ex.svg) !important;
-  }
-}
-
 @media (forced-colors: active) {
   .action-link--icon-ex::before {
     background: linktext !important;
@@ -314,12 +283,6 @@
   background-image: url(../../images/icons/ab1b1b/checkmark.svg);
 }
 
-@media screen and (-ms-high-contrast: active) {
-  .action-link--icon-checkmark.action-link--icon-checkmark.action-link--icon-checkmark::before {
-    background-image: url(../../images/icons/windowText/checkmark.svg) !important;
-  }
-}
-
 @media (forced-colors: active) {
   .action-link--icon-checkmark::before {
     background: linktext !important;
@@ -351,12 +314,6 @@
   background-image: url(../../images/icons/ab1b1b/cog.svg);
 }
 
-@media screen and (-ms-high-contrast: active) {
-  .action-link--icon-cog.action-link--icon-cog.action-link--icon-cog::before {
-    background-image: url(../../images/icons/windowText/cog.svg) !important;
-  }
-}
-
 @media (forced-colors: active) {
   .action-link--icon-cog::before {
     background: linktext !important;
@@ -388,12 +345,6 @@
   background-image: url(../../images/icons/ab1b1b/show.svg);
 }
 
-@media screen and (-ms-high-contrast: active) {
-  .action-link--icon-show.action-link--icon-show.action-link--icon-show::before {
-    background-image: url(../../images/icons/windowText/show.svg) !important;
-  }
-}
-
 @media (forced-colors: active) {
   .action-link--icon-show::before {
     background: linktext !important;
@@ -425,12 +376,6 @@
   background-image: url(../../images/icons/ab1b1b/hide.svg);
 }
 
-@media screen and (-ms-high-contrast: active) {
-  .action-link--icon-hide.action-link--icon-hide.action-link--icon-hide::before {
-    background-image: url(../../images/icons/windowText/hide.svg);
-  }
-}
-
 @media (forced-colors: active) {
   .action-link--icon-hide::before {
     background: linktext !important;
@@ -462,12 +407,6 @@
   background-image: url("../../images/icons/ab1b1b/key.svg");
 }
 
-@media screen and (-ms-high-contrast: active) {
-  .action-link--icon-key.action-link--icon-key.action-link--icon-key::before {
-    background-image: url("../../images/icons/windowText/key.svg") !important;
-  }
-}
-
 @media (forced-colors: active) {
   .action-link--icon-key::before {
     background: linktext !important;
@@ -499,12 +438,6 @@
   background-image: url("../../images/icons/ab1b1b/questionmark.svg");
 }
 
-@media screen and (-ms-high-contrast: active) {
-  .action-link--icon-questionmark.action-link--icon-questionmark.action-link--icon-questionmark::before {
-    background-image: url("../../images/icons/windowText/questionmark.svg") !important;
-  }
-}
-
 @media (forced-colors: active) {
   .action-link--icon-questionmark::before {
     background: linktext !important;
diff --git a/core/themes/claro/css/components/ajax-progress.module.css b/core/themes/claro/css/components/ajax-progress.module.css
index ab06513e6e..33cc47c6bc 100644
--- a/core/themes/claro/css/components/ajax-progress.module.css
+++ b/core/themes/claro/css/components/ajax-progress.module.css
@@ -125,18 +125,6 @@
   display: none;
 }
 
-@media screen and (-ms-high-contrast: active) {
-  /**
-   * Throbber animation is shaky on Edge RTL on high contrast for border width
-   * less than 4px.
-   */
-  @supports (-ms-ime-align:auto) {
-    [dir="rtl"] .ajax-progress__throbber {
-      border-width: 4px;
-    }
-  }
-}
-
 @keyframes claro-throbber {
   0% {
     transform: rotateZ(0);
diff --git a/core/themes/claro/css/components/ajax-progress.module.pcss.css b/core/themes/claro/css/components/ajax-progress.module.pcss.css
index f0617924b9..0ff2b686e8 100644
--- a/core/themes/claro/css/components/ajax-progress.module.pcss.css
+++ b/core/themes/claro/css/components/ajax-progress.module.pcss.css
@@ -109,18 +109,6 @@
   display: none;
 }
 
-@media screen and (-ms-high-contrast: active) {
-  /**
-   * Throbber animation is shaky on Edge RTL on high contrast for border width
-   * less than 4px.
-   */
-  @supports (-ms-ime-align:auto) {
-    [dir="rtl"] .ajax-progress__throbber {
-      border-width: 4px;
-    }
-  }
-}
-
 @keyframes claro-throbber {
   0% {
     transform: rotateZ(0);
diff --git a/core/themes/claro/css/components/autocomplete-loading.module.css b/core/themes/claro/css/components/autocomplete-loading.module.css
index a77c1d0e48..39e7fee32f 100644
--- a/core/themes/claro/css/components/autocomplete-loading.module.css
+++ b/core/themes/claro/css/components/autocomplete-loading.module.css
@@ -37,38 +37,19 @@
   background-position: 100% 50%;
 }
 
-.js .form-autocomplete::-ms-clear {
-  display: none;
-}
-
 .js[dir="rtl"] .form-autocomplete {
   background-image: url("data:image/svg+xml,%3csvg width='40' height='20' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12 1c4.54-.173 8.188 4.787 6.687 9.068-1.176 4.384-6.993 6.417-10.637 3.7-.326-.39-.565.276-.846.442l-3.74 3.739-1.413-1.414 4.35-4.35C3.59 8.717 5.25 2.938 9.462 1.475A7.003 7.003 0 0112 1zm0 2c-3.242-.123-5.849 3.42-4.777 6.477.842 3.132 4.994 4.58 7.6 2.65 2.745-1.73 2.9-6.125.285-8.044A5.006 5.006 0 0012 3z' fill='%23868686'/%3e%3c/svg%3e");
   background-position: 0 50%;
 }
 
 .js .form-autocomplete.is-autocompleting {
-  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 10' height='20' width='40'%3e%3cstyle%3e%40keyframes s%7b0%25%7btransform:rotate(0deg) translate(-50%25,-50%25)%7d50%25%7btransform:rotate(430deg) translate(-50%25,-50%25);stroke-dashoffset:20%7dto%7btransform:rotate(720deg) translate(-50%25,-50%25)%7d%7d%3c/style%3e%3ccircle fill='none' cy='5' cx='5' stroke='%23003ecc' stroke-dashoffset='6.125' stroke-dasharray='25' style='animation:s 1s linear infinite' r='4'/%3e%3c/svg%3e");
-}
-
-.js[dir="rtl"] .form-autocomplete.is-autocompleting {
-  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 10' height='20' width='40'%3e%3cstyle%3e%40keyframes s%7b0%25%7btransform:rotate(0deg) translate(-50%25,-50%25)%7d50%25%7btransform:rotate(-430deg) translate(-50%25,-50%25);stroke-dashoffset:20%7dto%7btransform:rotate(-720deg) translate(-50%25,-50%25)%7d%7d%3c/style%3e%3ccircle fill='none' cy='5' cx='5' stroke='%23003ecc' stroke-dashoffset='6.125' stroke-dasharray='25' style='animation:s 1s linear infinite' r='4'/%3e%3c/svg%3e");
+  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 10' height='20' width='40'%3e%3cstyle%3e%40keyframes s%7b0%25%7btransform:rotate(0deg) translate(-50%25,0)%7d50%25%7btransform:rotate(430deg) translate(-50%25,0);stroke-dashoffset:20%7dto%7btransform:rotate(720deg) translate(-50%25,0)%7d%7d%3c/style%3e%3ccircle fill='none' cy='5' cx='5' stroke='%23003ecc' stroke-dashoffset='6.125' stroke-dasharray='25' style='animation:s 1s linear infinite;transform-origin:left' r='4'/%3e%3c/svg%3e");
+  background-position: center right -10px;
 }
 
-/* IE11 does not animate inline SVG. */
-
-/* stylelint-disable-next-line selector-type-no-unknown */
-
-_:-ms-fullscreen,
-.js .form-autocomplete.is-autocompleting {
-  background-image: url("../../images/spinner-ltr.gif");
-  background-size: 2.5rem 1.25rem;
-}
-
-/* stylelint-disable-next-line selector-type-no-unknown */
-
-_:-ms-fullscreen,
 .js[dir="rtl"] .form-autocomplete.is-autocompleting {
-  background-image: url("../../images/spinner-rtl.gif");
+  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 10' height='20' width='40'%3e%3cstyle%3e%40keyframes s%7b0%25%7btransform:rotate(0deg) translate(-50%25,0)%7d50%25%7btransform:rotate(-430deg) translate(-50%25,0);stroke-dashoffset:20%7dto%7btransform:rotate(-720deg) translate(-50%25,0)%7d%7d%3c/style%3e%3ccircle fill='none' cy='5' cx='5' stroke='%23003ecc' stroke-dashoffset='6.125' stroke-dasharray='25' style='animation:s 1s linear infinite;transform-origin:left' r='4'/%3e%3c/svg%3e");
+  background-position: center left 10px;
 }
 
 /**
diff --git a/core/themes/claro/css/components/autocomplete-loading.module.pcss.css b/core/themes/claro/css/components/autocomplete-loading.module.pcss.css
index 0aa1076be9..900bf8d368 100644
--- a/core/themes/claro/css/components/autocomplete-loading.module.pcss.css
+++ b/core/themes/claro/css/components/autocomplete-loading.module.pcss.css
@@ -29,30 +29,17 @@
   background-repeat: no-repeat;
   background-position: 100% 50%;
 }
-.js .form-autocomplete::-ms-clear {
-  display: none;
-}
 .js[dir="rtl"] .form-autocomplete {
   background-image: url(../../images/icons/868686/magnifier-rtl.svg);
   background-position: 0 50%;
 }
 .js .form-autocomplete.is-autocompleting {
   background-image: url(../../images/icons/003ecc/spinner.svg);
+  background-position: center right -10px;
 }
 .js[dir="rtl"] .form-autocomplete.is-autocompleting {
   background-image: url(../../images/icons/003ecc/spinner-rtl.svg);
-}
-/* IE11 does not animate inline SVG. */
-/* stylelint-disable-next-line selector-type-no-unknown */
-_:-ms-fullscreen,
-.js .form-autocomplete.is-autocompleting {
-  background-image: url("../../images/spinner-ltr.gif");
-  background-size: 2.5rem 1.25rem;
-}
-/* stylelint-disable-next-line selector-type-no-unknown */
-_:-ms-fullscreen,
-.js[dir="rtl"] .form-autocomplete.is-autocompleting {
-  background-image: url("../../images/spinner-rtl.gif");
+  background-position: center left 10px;
 }
 
 /**
diff --git a/core/themes/claro/css/components/breadcrumb.css b/core/themes/claro/css/components/breadcrumb.css
index bd21e015d3..999e54e063 100644
--- a/core/themes/claro/css/components/breadcrumb.css
+++ b/core/themes/claro/css/components/breadcrumb.css
@@ -38,12 +38,12 @@
 }
 
 [dir="rtl"] :is(.breadcrumb__item + .breadcrumb__item::before) {
-    transform: scaleX(-1);
+  transform: scaleX(-1);
 }
 
 @media (forced-colors: active) {
 
-.breadcrumb__item + .breadcrumb__item::before {
+  .breadcrumb__item + .breadcrumb__item::before {
     width: 0.3125rem; /* Width and height of the SVG. */
     height: 0.5rem;
     content: "";
@@ -56,8 +56,8 @@
     mask-repeat: no-repeat;
     -webkit-mask-position: center;
     mask-position: center;
-}
   }
+}
 
 .breadcrumb__link:hover,
 .breadcrumb__link:focus {
diff --git a/core/themes/claro/css/components/card.css b/core/themes/claro/css/components/card.css
index 7e65814d51..072a80deb0 100644
--- a/core/themes/claro/css/components/card.css
+++ b/core/themes/claro/css/components/card.css
@@ -155,11 +155,6 @@
  */
 
 .card__footer {
-  /**
-   * Without specifying flex-shrink, IE11 will increase footer height if an
-   * interactive element inside is hovered or focused.
-   */
-  flex-shrink: 0;
   order: 100;
   margin-top: var(--space-l);
 }
diff --git a/core/themes/claro/css/components/card.pcss.css b/core/themes/claro/css/components/card.pcss.css
index 775d46ab04..0aa004ac6b 100644
--- a/core/themes/claro/css/components/card.pcss.css
+++ b/core/themes/claro/css/components/card.pcss.css
@@ -139,11 +139,6 @@
  * Card footer.
  */
 .card__footer {
-  /**
-   * Without specifying flex-shrink, IE11 will increase footer height if an
-   * interactive element inside is hovered or focused.
-   */
-  flex-shrink: 0;
   order: 100;
   margin-top: var(--space-l);
 }
diff --git a/core/themes/claro/css/components/details.css b/core/themes/claro/css/components/details.css
index d127ce0c61..ae2e5c6e3d 100644
--- a/core/themes/claro/css/components/details.css
+++ b/core/themes/claro/css/components/details.css
@@ -60,8 +60,8 @@
 }
 
 td .claro-details {
-    width: min-content;
-    min-width: 100%;
+  width: min-content;
+  min-width: 100%;
 }
 
 .claro-details--accordion-item,
diff --git a/core/themes/claro/css/components/dialog.css b/core/themes/claro/css/components/dialog.css
index 932f38d4c5..f7d55495c6 100644
--- a/core/themes/claro/css/components/dialog.css
+++ b/core/themes/claro/css/components/dialog.css
@@ -136,38 +136,11 @@
   background: none;
 }
 
-@media screen and (-ms-high-contrast: active) {
-  .ui-dialog .ui-icon.ui-icon-closethick {
-    background: none;
-  }
-
-  .ui-dialog .ui-icon.ui-icon-closethick::before,
-  .ui-dialog .ui-icon.ui-icon-closethick::after {
-    position: relative;
-    display: block;
-    width: 50%;
-    height: 100%;
-    content: "";
-  }
-  .ui-dialog .ui-icon.ui-icon-closethick::before {
-    top: -40%;
-    left: 60%;
-    transform: rotate(45deg);
-    border-bottom: 2px white solid;
-  }
-  .ui-dialog .ui-icon.ui-icon-closethick::after {
-    top: -78%;
-    left: 60%;
-    transform: rotate(-45deg);
-    border-top: 2px white solid;
-  }
-}
-
 #drupal-off-canvas .form-type--boolean {
-    margin-left: 0;
-  }
+  margin-left: 0;
+}
 
 #drupal-off-canvas .form-item .form-item__description {
-    color: var(--color-gray-050);
-    font-size: 0.75rem;
-  }
+  color: var(--color-gray-050);
+  font-size: 0.75rem;
+}
diff --git a/core/themes/claro/css/components/dialog.pcss.css b/core/themes/claro/css/components/dialog.pcss.css
index aa06872325..568479eb48 100644
--- a/core/themes/claro/css/components/dialog.pcss.css
+++ b/core/themes/claro/css/components/dialog.pcss.css
@@ -125,33 +125,6 @@
   background: none;
 }
 
-@media screen and (-ms-high-contrast: active) {
-  .ui-dialog .ui-icon.ui-icon-closethick {
-    background: none;
-  }
-
-  .ui-dialog .ui-icon.ui-icon-closethick::before,
-  .ui-dialog .ui-icon.ui-icon-closethick::after {
-    position: relative;
-    display: block;
-    width: 50%;
-    height: 100%;
-    content: "";
-  }
-  .ui-dialog .ui-icon.ui-icon-closethick::before {
-    top: -40%;
-    left: 60%;
-    transform: rotate(45deg);
-    border-bottom: 2px white solid;
-  }
-  .ui-dialog .ui-icon.ui-icon-closethick::after {
-    top: -78%;
-    left: 60%;
-    transform: rotate(-45deg);
-    border-top: 2px white solid;
-  }
-}
-
 #drupal-off-canvas {
   & .form-type--boolean {
     margin-left: 0;
diff --git a/core/themes/claro/css/components/dropbutton.css b/core/themes/claro/css/components/dropbutton.css
index ceb9dcc4fd..c298c5bf33 100644
--- a/core/themes/claro/css/components/dropbutton.css
+++ b/core/themes/claro/css/components/dropbutton.css
@@ -210,7 +210,7 @@
 
 /* High contrast. */
 
-@media (-ms-high-contrast: active), (forced-colors: active) {
+@media (forced-colors: active) {
   /* Default. */
   .dropbutton__toggle::before {
     width: 0.5625rem;
@@ -397,18 +397,6 @@
   -webkit-font-smoothing: antialiased;
 }
 
-/**
- * Set the inherited button border color to transparent for high contrast
- * mode.
- */
-
-@media screen and (-ms-high-contrast: active) {
-  .dropbutton__item:first-of-type ~ .dropbutton__item > a,
-  .dropbutton__item:first-of-type ~ .dropbutton__item > .button {
-    border-color: transparent !important;
-  }
-}
-
 .dropbutton__item:first-of-type ~ .dropbutton__item > a:not(:focus),
 .dropbutton__item:first-of-type ~ .dropbutton__item > .button:not(:focus) {
   z-index: 1;
diff --git a/core/themes/claro/css/components/dropbutton.pcss.css b/core/themes/claro/css/components/dropbutton.pcss.css
index a1b3dc2dcf..17b220aa0f 100644
--- a/core/themes/claro/css/components/dropbutton.pcss.css
+++ b/core/themes/claro/css/components/dropbutton.pcss.css
@@ -184,7 +184,7 @@
 }
 
 /* High contrast. */
-@media (-ms-high-contrast: active), (forced-colors: active) {
+@media (forced-colors: active) {
   /* Default. */
   .dropbutton__toggle::before {
     width: 0.5625rem;
@@ -356,17 +356,6 @@
   -webkit-font-smoothing: antialiased;
 }
 
-/**
- * Set the inherited button border color to transparent for high contrast
- * mode.
- */
-@media screen and (-ms-high-contrast: active) {
-  .dropbutton__item:first-of-type ~ .dropbutton__item > a,
-  .dropbutton__item:first-of-type ~ .dropbutton__item > .button {
-    border-color: transparent !important;
-  }
-}
-
 .dropbutton__item:first-of-type ~ .dropbutton__item > a:not(:focus),
 .dropbutton__item:first-of-type ~ .dropbutton__item > .button:not(:focus) {
   z-index: 1;
diff --git a/core/themes/claro/css/components/fieldset.css b/core/themes/claro/css/components/fieldset.css
index ff193c9265..1ee784f4f0 100644
--- a/core/themes/claro/css/components/fieldset.css
+++ b/core/themes/claro/css/components/fieldset.css
@@ -29,17 +29,6 @@
   box-shadow: none;
 }
 
-/* IE workaround. */
-
-/* stylelint-disable-next-line selector-type-no-unknown */
-
-_:-ms-fullscreen,
-.fieldset {
-  display: table;
-  box-sizing: border-box;
-  width: 100%;
-}
-
 /**
  * Fieldset legend.
  */
@@ -62,7 +51,7 @@ _:-ms-fullscreen,
 .fieldset__legend--composite {
   float: none;
   width: auto;
-  margin-top: 0; /* IE11 and Edge do not collapse this margin. Ideally this would be 4px */
+  margin-top: calc(var(--space-xs) / 2); /* 4px */
   margin-bottom: calc(var(--space-xs) / 2); /* 4px */
   color: inherit;
   font-size: var(--font-size-s); /* 14px */
diff --git a/core/themes/claro/css/components/fieldset.pcss.css b/core/themes/claro/css/components/fieldset.pcss.css
index c1ef76c1cc..82c91ca358 100644
--- a/core/themes/claro/css/components/fieldset.pcss.css
+++ b/core/themes/claro/css/components/fieldset.pcss.css
@@ -22,15 +22,6 @@
   box-shadow: none;
 }
 
-/* IE workaround. */
-/* stylelint-disable-next-line selector-type-no-unknown */
-_:-ms-fullscreen,
-.fieldset {
-  display: table;
-  box-sizing: border-box;
-  width: 100%;
-}
-
 /**
  * Fieldset legend.
  */
@@ -52,7 +43,7 @@ _:-ms-fullscreen,
 .fieldset__legend--composite {
   float: none;
   width: auto;
-  margin-top: 0; /* IE11 and Edge do not collapse this margin. Ideally this would be 4px */
+  margin-top: calc(var(--space-xs) / 2); /* 4px */
   margin-bottom: calc(var(--space-xs) / 2); /* 4px */
   color: inherit;
   font-size: var(--font-size-s); /* 14px */
diff --git a/core/themes/claro/css/components/form--checkbox-radio--ie.css b/core/themes/claro/css/components/form--checkbox-radio--ie.css
deleted file mode 100644
index 3afc4d8543..0000000000
--- a/core/themes/claro/css/components/form--checkbox-radio--ie.css
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * DO NOT EDIT THIS FILE.
- * See the following change record for more information,
- * https://www.drupal.org/node/3084859
- * @preserve
- */
-
-/**
- * @file
- * Checkbox and radio input elements styles for IE11 and below.
- */
-
-.form-boolean::-ms-check {
-  display: inline-block;
-  box-sizing: border-box;
-  width: 1.125rem;
-  height: 1.125rem;
-  vertical-align: text-bottom;
-  color: transparent; /* IE */
-  border: 1px solid var(--input-border-color);
-  border-radius: 2px;
-  background: var(--input-bg-color) no-repeat 50% 50%;
-  background-image: url("data:image/svg+xml,%3csvg width='12' height='10' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M4.182 6.966L1.977 4.649l-.182-.19-.18.19-.796.835-.164.173.164.172L4 9.172l.18.19.182-.19 6.818-7.164.164-.172-.164-.173-.795-.835-.181-.19-.182.19-5.841 6.138z' fill='%23FFF'/%3e%3c/svg%3e");
-  background-size: 100% 100%;
-  box-shadow: 0 0 0 4px transparent;
-}
-
-.form-boolean--type-radio::-ms-check {
-  width: 1.1875rem;
-  height: 1.1875rem;
-  border-radius: 1.1875rem;
-}
-
-.form-boolean:focus::-ms-check {
-  color: transparent; /* IE */
-}
-
-.form-boolean:active::-ms-check,
-.form-boolean:hover::-ms-check {
-  border-color: var(--input-fg-color);
-  box-shadow: inset 0 0 0 1px var(--input-fg-color);
-}
-
-.form-boolean:focus:active::-ms-check,
-.form-boolean:focus:hover::-ms-check {
-  box-shadow: 0 0 0 2px var(--color-white), 0 0 0 5px var(--color-focus), inset 0 0 0 1px var(--input-fg-color);
-}
-
-.form-boolean--type-checkbox:checked::-ms-check {
-  color: transparent; /* IE */
-  border-color: var(--input--focus-border-color);
-  background-color: var(--input--focus-border-color);
-  background-image: url("data:image/svg+xml,%3csvg width='16' height='16' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M3.795 7.096l2.387 2.506 6.023-6.327 1.484 1.56-7.507 7.89L2.31 8.656z' fill='%23fff'/%3e%3c/svg%3e");
-}
-
-.form-boolean--type-checkbox:checked:active::-ms-check,
-.form-boolean--type-checkbox:checked:hover::-ms-check {
-  border-color: var(--input-fg-color);
-  background-color: var(--input-fg-color);
-}
-
-.form-boolean--type-radio:checked::-ms-check {
-  color: transparent; /* IE */
-  border-color: var(--input--focus-border-color);
-  background-image: url("data:image/svg+xml,%3csvg width='17' height='17' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle r='4.5' cx='8.5' cy='8.5' fill='%23003ecc'/%3e%3c/svg%3e");
-  box-shadow: inset 0 0 0 1px var(--input--focus-border-color);
-}
-
-.form-boolean--type-checkbox:checked:active::-ms-check,
-.form-boolean--type-checkbox:checked:hover::-ms-check {
-  border-color: var(--input-fg-color);
-  background-color: var(--input-fg-color);
-}
-
-.form-boolean--type-radio:checked::-ms-check {
-  border-color: var(--input--focus-border-color);
-  background-image: url("data:image/svg+xml,%3csvg width='17' height='17' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle r='4.5' cx='8.5' cy='8.5' fill='%23003ecc'/%3e%3c/svg%3e");
-  box-shadow: inset 0 0 0 1px var(--input--focus-border-color);
-}
-
-.form-boolean--type-radio:checked:focus::-ms-check {
-  box-shadow: 0 0 0 2px var(--color-white), 0 0 0 5px var(--color-focus), inset 0 0 0 1px var(--input--focus-border-color);
-}
-
-.form-boolean--type-radio:checked:active::-ms-check,
-.form-boolean--type-radio:checked:hover::-ms-check {
-  border-color: var(--input-fg-color);
-  background-image: url("data:image/svg+xml,%3csvg width='17' height='17' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle r='4.5' cx='8.5' cy='8.5' fill='%23000f33'/%3e%3c/svg%3e");
-  box-shadow: inset 0 0 0 1px var(--input-fg-color);
-}
-
-.form-boolean--type-radio:checked:focus:active::-ms-check,
-.form-boolean--type-radio:checked:focus:hover::-ms-check {
-  box-shadow: 0 0 0 2px var(--color-white), 0 0 0 5px var(--color-focus), inset 0 0 0 1px var(--input-fg-color);
-}
-
-/**
- * Error states.
- */
-
-.form-boolean.error::-ms-check {
-  border-color: var(--input--error-border-color);
-  background-color: var(--input-bg-color);
-  box-shadow: inset 0 0 0 1px var(--input--error-border-color);
-}
-
-.form-boolean.error:active::-ms-check,
-.form-boolean.error:hover::-ms-check {
-  box-shadow: inset 0 0 0 1px var(--input--error-border-color);
-}
-
-.form-boolean.error:focus::-ms-check,
-.form-boolean.error:focus:active::-ms-check,
-.form-boolean.error:focus:hover::-ms-check {
-  box-shadow: 0 0 0 2px var(--color-white), 0 0 0 5px var(--color-focus), inset 0 0 0 1px var(--input--error-border-color);
-}
-
-.form-boolean.error:checked:active::-ms-check,
-.form-boolean.error:checked:hover::-ms-check {
-  border-color: var(--input--error-border-color);
-  background-color: var(--input-bg-color);
-}
-
-.form-boolean--type-checkbox.error:checked::-ms-check,
-.form-boolean--type-checkbox.error:checked:active::-ms-check,
-.form-boolean--type-checkbox.error:checked:hover::-ms-check {
-  background-color: var(--input--error-border-color);
-}
-
-.form-boolean--type-radio.error:checked::-ms-check,
-.form-boolean--type-radio.error:checked:active::-ms-check,
-.form-boolean--type-radio.error:checked:hover::-ms-check {
-  background-image: url("data:image/svg+xml,%3csvg width='17' height='17' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle r='4.5' cx='8.5' cy='8.5' fill='%23d72222'/%3e%3c/svg%3e");
-}
-
-.form-boolean--type-radio.error:checked:focus::-ms-check {
-  box-shadow: 0 0 0 2px var(--color-white), 0 0 0 5px var(--color-focus), inset 0 0 0 1px var(--input--error-border-color);
-}
-
-/**
- * Disabled states.
- */
-
-.form-boolean[disabled]::-ms-check,
-.form-boolean[disabled]:hover::-ms-check,
-.form-boolean[disabled].error::-ms-check,
-.form-boolean[disabled].error:hover::-ms-check,
-.form-boolean--type-radio[disabled]:focus:active::-ms-check,
-.form-boolean--type-radio[disabled]:active:hover::-ms-check,
-.form-boolean--type-radio[disabled].error:active:hover::-ms-check {
-  border-color: var(--input--disabled-border-color);
-  background-color: var(--input--disabled-bg-color);
-  background-image: none;
-  box-shadow: none;
-}
-
-.form-boolean--type-checkbox[disabled]:checked::-ms-check {
-  color: transparent; /* IE */
-  background-image: url("data:image/svg+xml,%3csvg width='16' height='16' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M3.795 7.096l2.387 2.506 6.023-6.327 1.484 1.56-7.507 7.89L2.31 8.656z' fill='%2382828c'/%3e%3c/svg%3e");
-}
-
-.form-boolean--type-radio[disabled]:checked::-ms-check,
-.form-boolean--type-radio[disabled].error:checked::-ms-check {
-  color: transparent; /* IE */
-  background-image: url("data:image/svg+xml,%3csvg width='16' height='16' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M3.795 7.096l2.387 2.506 6.023-6.327 1.484 1.56-7.507 7.89L2.31 8.656z' fill='%2382828c'/%3e%3c/svg%3e");
-}
diff --git a/core/themes/claro/css/components/form--checkbox-radio--ie.pcss.css b/core/themes/claro/css/components/form--checkbox-radio--ie.pcss.css
deleted file mode 100644
index c35a56b39f..0000000000
--- a/core/themes/claro/css/components/form--checkbox-radio--ie.pcss.css
+++ /dev/null
@@ -1,137 +0,0 @@
-/**
- * @file
- * Checkbox and radio input elements styles for IE11 and below.
- */
-
-.form-boolean::-ms-check {
-  display: inline-block;
-  box-sizing: border-box;
-  width: 18px;
-  height: 18px;
-  vertical-align: text-bottom;
-  color: transparent; /* IE */
-  border: 1px solid var(--input-border-color);
-  border-radius: 2px;
-  background: var(--input-bg-color) no-repeat 50% 50%;
-  background-image: url(../../images/icons/ffffff/checkmark.svg);
-  background-size: 100% 100%;
-  box-shadow: 0 0 0 4px transparent;
-}
-.form-boolean--type-radio::-ms-check {
-  width: 19px;
-  height: 19px;
-  border-radius: 19px;
-}
-.form-boolean:focus::-ms-check {
-  color: transparent; /* IE */
-}
-.form-boolean:active::-ms-check,
-.form-boolean:hover::-ms-check {
-  border-color: var(--input-fg-color);
-  box-shadow: inset 0 0 0 1px var(--input-fg-color);
-}
-.form-boolean:focus:active::-ms-check,
-.form-boolean:focus:hover::-ms-check {
-  box-shadow: 0 0 0 2px var(--color-white), 0 0 0 5px var(--color-focus), inset 0 0 0 1px var(--input-fg-color);
-}
-.form-boolean--type-checkbox:checked::-ms-check {
-  color: transparent; /* IE */
-  border-color: var(--input--focus-border-color);
-  background-color: var(--input--focus-border-color);
-  background-image: url(../../images/icons/ffffff/checkmark-sm.svg);
-}
-.form-boolean--type-checkbox:checked:active::-ms-check,
-.form-boolean--type-checkbox:checked:hover::-ms-check {
-  border-color: var(--input-fg-color);
-  background-color: var(--input-fg-color);
-}
-.form-boolean--type-radio:checked::-ms-check {
-  color: transparent; /* IE */
-  border-color: var(--input--focus-border-color);
-  background-image: url(../../images/icons/003ecc/circle.svg);
-  box-shadow: inset 0 0 0 1px var(--input--focus-border-color);
-}
-.form-boolean--type-checkbox:checked:active::-ms-check,
-.form-boolean--type-checkbox:checked:hover::-ms-check {
-  border-color: var(--input-fg-color);
-  background-color: var(--input-fg-color);
-}
-.form-boolean--type-radio:checked::-ms-check {
-  border-color: var(--input--focus-border-color);
-  background-image: url(../../images/icons/003ecc/circle.svg);
-  box-shadow: inset 0 0 0 1px var(--input--focus-border-color);
-}
-.form-boolean--type-radio:checked:focus::-ms-check {
-  box-shadow: 0 0 0 2px var(--color-white), 0 0 0 5px var(--color-focus), inset 0 0 0 1px var(--input--focus-border-color);
-}
-.form-boolean--type-radio:checked:active::-ms-check,
-.form-boolean--type-radio:checked:hover::-ms-check {
-  border-color: var(--input-fg-color);
-  background-image: url(../../images/icons/000f33/circle.svg);
-  box-shadow: inset 0 0 0 1px var(--input-fg-color);
-}
-.form-boolean--type-radio:checked:focus:active::-ms-check,
-.form-boolean--type-radio:checked:focus:hover::-ms-check {
-  box-shadow: 0 0 0 2px var(--color-white), 0 0 0 5px var(--color-focus), inset 0 0 0 1px var(--input-fg-color);
-}
-
-/**
- * Error states.
- */
-.form-boolean.error::-ms-check {
-  border-color: var(--input--error-border-color);
-  background-color: var(--input-bg-color);
-  box-shadow: inset 0 0 0 1px var(--input--error-border-color);
-}
-.form-boolean.error:active::-ms-check,
-.form-boolean.error:hover::-ms-check {
-  box-shadow: inset 0 0 0 1px var(--input--error-border-color);
-}
-.form-boolean.error:focus::-ms-check,
-.form-boolean.error:focus:active::-ms-check,
-.form-boolean.error:focus:hover::-ms-check {
-  box-shadow: 0 0 0 2px var(--color-white), 0 0 0 5px var(--color-focus), inset 0 0 0 1px var(--input--error-border-color);
-}
-.form-boolean.error:checked:active::-ms-check,
-.form-boolean.error:checked:hover::-ms-check {
-  border-color: var(--input--error-border-color);
-  background-color: var(--input-bg-color);
-}
-.form-boolean--type-checkbox.error:checked::-ms-check,
-.form-boolean--type-checkbox.error:checked:active::-ms-check,
-.form-boolean--type-checkbox.error:checked:hover::-ms-check {
-  background-color: var(--input--error-border-color);
-}
-.form-boolean--type-radio.error:checked::-ms-check,
-.form-boolean--type-radio.error:checked:active::-ms-check,
-.form-boolean--type-radio.error:checked:hover::-ms-check {
-  background-image: url(../../images/icons/d72222/circle.svg);
-}
-.form-boolean--type-radio.error:checked:focus::-ms-check {
-  box-shadow: 0 0 0 2px var(--color-white), 0 0 0 5px var(--color-focus), inset 0 0 0 1px var(--input--error-border-color);
-}
-
-/**
- * Disabled states.
- */
-.form-boolean[disabled]::-ms-check,
-.form-boolean[disabled]:hover::-ms-check,
-.form-boolean[disabled].error::-ms-check,
-.form-boolean[disabled].error:hover::-ms-check,
-.form-boolean--type-radio[disabled]:focus:active::-ms-check,
-.form-boolean--type-radio[disabled]:active:hover::-ms-check,
-.form-boolean--type-radio[disabled].error:active:hover::-ms-check {
-  border-color: var(--input--disabled-border-color);
-  background-color: var(--input--disabled-bg-color);
-  background-image: none;
-  box-shadow: none;
-}
-.form-boolean--type-checkbox[disabled]:checked::-ms-check {
-  color: transparent; /* IE */
-  background-image: url(../../images/icons/82828c/checkmark.svg);
-}
-.form-boolean--type-radio[disabled]:checked::-ms-check,
-.form-boolean--type-radio[disabled].error:checked::-ms-check {
-  color: transparent; /* IE */
-  background-image: url(../../images/icons/82828c/checkmark.svg);
-}
diff --git a/core/themes/claro/css/components/form--managed-file.css b/core/themes/claro/css/components/form--managed-file.css
index 1c534316d7..4c8121d103 100644
--- a/core/themes/claro/css/components/form--managed-file.css
+++ b/core/themes/claro/css/components/form--managed-file.css
@@ -94,21 +94,6 @@
   display: inline-flex;
 }
 
-/**
- * Internet Explorer 11 does not shrinks our meta elements if one of its parent
- * element is a table. Without this fix, the file widgets table cell would have
- * the same width that is needed for displaying the file name in a single line.
- *
- * @see https://github.com/philipwalton/flexbugs/issues/179
- */
-
-@media all and (-ms-high-contrast: active), (-ms-high-contrast: none) {
-  *::-ms-backdrop,
-  td .form-managed-file__meta {
-    flex-basis: 100%;
-  }
-}
-
 /**
  * The 'image preview' element.
  *
@@ -157,33 +142,6 @@ td .form-managed-file.no-meta .form-managed-file__image-preview {
   max-width: 100%;
 }
 
-/**
- * Internet Explorer 11 does not increase the width of those flex items that are
- * allowed to be wrapped. We just simply change the basis to the max-width.
- */
-
-@media all and (-ms-high-contrast: active), (-ms-high-contrast: none) {
-  *::-ms-backdrop,
-  .form-managed-file__meta-items {
-    flex-basis: var(--file-widget-form-item-max-width);
-  }
-}
-
-/**
- * Meta items wrapper.
- * This markup element is needed only for working around the same IE 11 bug that
- * is described above, at the 'meta' element.
- *
- * @see https://github.com/philipwalton/flexbugs/issues/179
- */
-
-@media all and (-ms-high-contrast: active), (-ms-high-contrast: none) {
-  *::-ms-backdrop,
-  td .form-managed-file__meta-wrapper {
-    display: flex;
-  }
-}
-
 /**
  * Modify component defaults for file/image widgets.
  */
@@ -212,27 +170,12 @@ td .form-managed-file.no-meta .form-managed-file__image-preview {
   margin-left: var(--space-m);
 }
 
-/**
- * Fix and override the table-related bug of Internet Explorer 11 (described at
- * the 'meta' element).
- *
- * @see https://github.com/philipwalton/flexbugs/issues/179
- */
-
-@media all and (-ms-high-contrast: active), (-ms-high-contrast: none) {
-  *::-ms-backdrop,
-  td .form-managed-file__main .file {
-    flex: 0 1 100%;
-  }
-}
-
 /**
  * The file upload input.
  */
 
 .form-managed-file__main .form-element--api-file {
   flex: 1 1 auto;
-  min-width: 1px; /* This makes the element shrink on IE11 */
 }
 
 /**
diff --git a/core/themes/claro/css/components/form--managed-file.pcss.css b/core/themes/claro/css/components/form--managed-file.pcss.css
index 76efb20ea3..867413e490 100644
--- a/core/themes/claro/css/components/form--managed-file.pcss.css
+++ b/core/themes/claro/css/components/form--managed-file.pcss.css
@@ -81,20 +81,6 @@
   display: inline-flex;
 }
 
-/**
- * Internet Explorer 11 does not shrinks our meta elements if one of its parent
- * element is a table. Without this fix, the file widgets table cell would have
- * the same width that is needed for displaying the file name in a single line.
- *
- * @see https://github.com/philipwalton/flexbugs/issues/179
- */
-@media all and (-ms-high-contrast: active), (-ms-high-contrast: none) {
-  *::-ms-backdrop,
-  td .form-managed-file__meta {
-    flex-basis: 100%;
-  }
-}
-
 /**
  * The 'image preview' element.
  *
@@ -138,31 +124,6 @@ td .form-managed-file.no-meta .form-managed-file__image-preview {
   max-width: 100%;
 }
 
-/**
- * Internet Explorer 11 does not increase the width of those flex items that are
- * allowed to be wrapped. We just simply change the basis to the max-width.
- */
-@media all and (-ms-high-contrast: active), (-ms-high-contrast: none) {
-  *::-ms-backdrop,
-  .form-managed-file__meta-items {
-    flex-basis: var(--file-widget-form-item-max-width);
-  }
-}
-
-/**
- * Meta items wrapper.
- * This markup element is needed only for working around the same IE 11 bug that
- * is described above, at the 'meta' element.
- *
- * @see https://github.com/philipwalton/flexbugs/issues/179
- */
-@media all and (-ms-high-contrast: active), (-ms-high-contrast: none) {
-  *::-ms-backdrop,
-  td .form-managed-file__meta-wrapper {
-    display: flex;
-  }
-}
-
 /**
  * Modify component defaults for file/image widgets.
  */
@@ -188,25 +149,11 @@ td .form-managed-file.no-meta .form-managed-file__image-preview {
   margin-left: var(--space-m);
 }
 
-/**
- * Fix and override the table-related bug of Internet Explorer 11 (described at
- * the 'meta' element).
- *
- * @see https://github.com/philipwalton/flexbugs/issues/179
- */
-@media all and (-ms-high-contrast: active), (-ms-high-contrast: none) {
-  *::-ms-backdrop,
-  td .form-managed-file__main .file {
-    flex: 0 1 100%;
-  }
-}
-
 /**
  * The file upload input.
  */
 .form-managed-file__main .form-element--api-file {
   flex: 1 1 auto;
-  min-width: 1px; /* This makes the element shrink on IE11 */
 }
 
 /**
diff --git a/core/themes/claro/css/components/form--password-confirm.css b/core/themes/claro/css/components/form--password-confirm.css
index bb62ecb9ee..187903319d 100644
--- a/core/themes/claro/css/components/form--password-confirm.css
+++ b/core/themes/claro/css/components/form--password-confirm.css
@@ -106,17 +106,6 @@
   }
 }
 
-@media screen and (-ms-high-contrast: active) {
-  .password-strength__bar {
-    background-color: windowText;
-  }
-
-  .is-initial .password-strength__bar {
-    border-color: transparent;
-    background-color: transparent;
-  }
-}
-
 .password-strength__title {
   overflow: hidden;
   margin-top: var(--progress-bar-spacing-size);
@@ -154,12 +143,12 @@
 }
 
 @media (forced-colors: active) {
-    .password-strength__bar.is-weak,
-    .password-strength__bar.is-fair,
-    .password-strength__bar.is-good,
-    .password-strength__bar.is-strong {
-      background-color: canvastext;
-    }
+  .password-strength__bar.is-weak,
+  .password-strength__bar.is-fair,
+  .password-strength__bar.is-good,
+  .password-strength__bar.is-strong {
+    background-color: canvastext;
+  }
 
   .is-initial .password-strength__bar {
     border-color: transparent;
diff --git a/core/themes/claro/css/components/form--password-confirm.pcss.css b/core/themes/claro/css/components/form--password-confirm.pcss.css
index c8b8540a78..341049b8da 100644
--- a/core/themes/claro/css/components/form--password-confirm.pcss.css
+++ b/core/themes/claro/css/components/form--password-confirm.pcss.css
@@ -96,17 +96,6 @@
   }
 }
 
-@media screen and (-ms-high-contrast: active) {
-  .password-strength__bar {
-    background-color: windowText;
-  }
-
-  .is-initial .password-strength__bar {
-    border-color: transparent;
-    background-color: transparent;
-  }
-}
-
 .password-strength__title {
   overflow: hidden;
   margin-top: var(--progress-bar-spacing-size);
diff --git a/core/themes/claro/css/components/form--select.css b/core/themes/claro/css/components/form--select.css
index b87d3bd699..4f1a4eabd5 100644
--- a/core/themes/claro/css/components/form--select.css
+++ b/core/themes/claro/css/components/form--select.css
@@ -26,10 +26,10 @@
 
 @media (forced-colors: active) {
 
-[dir="rtl"] .form-element--type-select {
+  [dir="rtl"] .form-element--type-select {
     padding-left: var(--input-padding-horizontal);
-}
   }
+}
 
 .no-touchevents .form-element--type-select.form-element--extrasmall,
 .no-touchevents .form-element--type-select[name$="][_weight]"] {
@@ -43,10 +43,6 @@
   padding-left: calc(1.5rem - var(--input-border-size));
 }
 
-.form-element--type-select::-ms-expand {
-  display: none;
-}
-
 /**
  * Select states.
  */
diff --git a/core/themes/claro/css/components/form--select.pcss.css b/core/themes/claro/css/components/form--select.pcss.css
index 0fd56eec4a..9a0afb9d4f 100644
--- a/core/themes/claro/css/components/form--select.pcss.css
+++ b/core/themes/claro/css/components/form--select.pcss.css
@@ -31,10 +31,6 @@
   padding-left: calc(1.5rem - var(--input-border-size));
 }
 
-.form-element--type-select::-ms-expand {
-  display: none;
-}
-
 /**
  * Select states.
  */
diff --git a/core/themes/claro/css/components/form--text.css b/core/themes/claro/css/components/form--text.css
index 561880ef45..a5be26a6bd 100644
--- a/core/themes/claro/css/components/form--text.css
+++ b/core/themes/claro/css/components/form--text.css
@@ -66,15 +66,6 @@
   text-indent: calc(0.75rem - var(--input-border-size)); /* Text-input fallback for non-supporting browsers like Safari */
 }
 
-/**
- * Reset value border and background of the file input on IE11 and Edge.
- */
-
-.form-element--type-file::-ms-value {
-  border: 0;
-  background: inherit;
-}
-
 /**
  * Better upload button alignment for Chrome.
  */
@@ -83,21 +74,6 @@
   vertical-align: top;
 }
 
-/**
- * Target IE 11 and Edge.
- *
- * Reduce the vertical padding of the file input element to make the browse
- * button fit into the needed input height.
- */
-
-/* stylelint-disable-next-line selector-type-no-unknown */
-
-_:-ms-fullscreen,
-:root .form-element--type-file {
-  padding-top: 0.25rem;
-  padding-bottom: 0.25rem;
-}
-
 /**
  * States.
  */
diff --git a/core/themes/claro/css/components/form--text.pcss.css b/core/themes/claro/css/components/form--text.pcss.css
index 6bb2213207..4945b4ea62 100644
--- a/core/themes/claro/css/components/form--text.pcss.css
+++ b/core/themes/claro/css/components/form--text.pcss.css
@@ -53,13 +53,6 @@
   text-indent: calc(0.75rem - var(--input-border-size)); /* Text-input fallback for non-supporting browsers like Safari */
 }
 
-/**
- * Reset value border and background of the file input on IE11 and Edge.
- */
-.form-element--type-file::-ms-value {
-  border: 0;
-  background: inherit;
-}
 /**
  * Better upload button alignment for Chrome.
  */
@@ -67,19 +60,6 @@
   vertical-align: top;
 }
 
-/**
- * Target IE 11 and Edge.
- *
- * Reduce the vertical padding of the file input element to make the browse
- * button fit into the needed input height.
- */
-/* stylelint-disable-next-line selector-type-no-unknown */
-_:-ms-fullscreen,
-:root .form-element--type-file {
-  padding-top: 0.25rem;
-  padding-bottom: 0.25rem;
-}
-
 /**
  * States.
  */
diff --git a/core/themes/claro/css/components/form.css b/core/themes/claro/css/components/form.css
index 80cb6365a7..8774e564c6 100644
--- a/core/themes/claro/css/components/form.css
+++ b/core/themes/claro/css/components/form.css
@@ -15,12 +15,6 @@
   color: var(--input-fg-color--placeholder);
 }
 
-/* IE 10 and 11 needs this set as important. */
-
-:-ms-input-placeholder {
-  color: var(--input-fg-color--placeholder) !important;
-}
-
 /**
  * General form item.
  */
diff --git a/core/themes/claro/css/components/form.pcss.css b/core/themes/claro/css/components/form.pcss.css
index 3cb9da5bf9..3c353a3f4e 100644
--- a/core/themes/claro/css/components/form.pcss.css
+++ b/core/themes/claro/css/components/form.pcss.css
@@ -7,10 +7,6 @@
   opacity: 1;
   color: var(--input-fg-color--placeholder);
 }
-/* IE 10 and 11 needs this set as important. */
-:-ms-input-placeholder {
-  color: var(--input-fg-color--placeholder) !important;
-}
 
 /**
  * General form item.
diff --git a/core/themes/claro/css/components/image-preview.css b/core/themes/claro/css/components/image-preview.css
index fac026cc5a..8426c4e00c 100644
--- a/core/themes/claro/css/components/image-preview.css
+++ b/core/themes/claro/css/components/image-preview.css
@@ -44,12 +44,6 @@
   background-size: calc(var(--size-pattern-square) * 2) calc(var(--size-pattern-square) * 2);
 }
 
-@media screen and (-ms-high-contrast: active) {
-  .image-preview img {
-    background: none;
-  }
-}
-
 /**
  * Don't display file icon in image widgets.
  */
diff --git a/core/themes/claro/css/components/image-preview.pcss.css b/core/themes/claro/css/components/image-preview.pcss.css
index 17d4361086..b69eb01645 100644
--- a/core/themes/claro/css/components/image-preview.pcss.css
+++ b/core/themes/claro/css/components/image-preview.pcss.css
@@ -36,12 +36,6 @@
   background-size: calc(var(--size-pattern-square) * 2) calc(var(--size-pattern-square) * 2);
 }
 
-@media screen and (-ms-high-contrast: active) {
-  .image-preview img {
-    background: none;
-  }
-}
-
 /**
  * Don't display file icon in image widgets.
  */
diff --git a/core/themes/claro/css/components/messages.css b/core/themes/claro/css/components/messages.css
index 0faa9b708b..6fd157f04c 100644
--- a/core/themes/claro/css/components/messages.css
+++ b/core/themes/claro/css/components/messages.css
@@ -144,16 +144,3 @@
 .messages__item + .messages__item {
   margin-top: var(--space-s);
 }
-
-@media screen and (-ms-high-contrast: active) {
-  .messages {
-    border-width: 1px 1px 1px var(--messages-border-width); /* LTR */
-  }
-  [dir="rtl"] .messages {
-    border-right-width: var(--messages-border-width);
-    border-left-width: 1px;
-  }
-  .messages__header {
-    filter: grayscale(1) brightness(1.5) contrast(10);
-  }
-}
diff --git a/core/themes/claro/css/components/messages.pcss.css b/core/themes/claro/css/components/messages.pcss.css
index c3f8a53f37..d8321f6693 100644
--- a/core/themes/claro/css/components/messages.pcss.css
+++ b/core/themes/claro/css/components/messages.pcss.css
@@ -133,16 +133,3 @@
 .messages__item + .messages__item {
   margin-top: var(--space-s);
 }
-
-@media screen and (-ms-high-contrast: active) {
-  .messages {
-    border-width: 1px 1px 1px var(--messages-border-width); /* LTR */
-  }
-  [dir="rtl"] .messages {
-    border-right-width: var(--messages-border-width);
-    border-left-width: 1px;
-  }
-  .messages__header {
-    filter: grayscale(1) brightness(1.5) contrast(10);
-  }
-}
diff --git a/core/themes/claro/css/components/pager.css b/core/themes/claro/css/components/pager.css
index e04b83fa8a..6542cf5f51 100644
--- a/core/themes/claro/css/components/pager.css
+++ b/core/themes/claro/css/components/pager.css
@@ -197,7 +197,7 @@
   margin-left: 0.5rem;
 }
 
-@media (-ms-high-contrast: active), (forced-colors: active) {
+@media (forced-colors: active) {
   .pager__item a:hover {
     text-decoration: underline;
   }
diff --git a/core/themes/claro/css/components/pager.pcss.css b/core/themes/claro/css/components/pager.pcss.css
index 26a24e06fb..6ad1e14f8b 100644
--- a/core/themes/claro/css/components/pager.pcss.css
+++ b/core/themes/claro/css/components/pager.pcss.css
@@ -169,7 +169,7 @@
   margin-left: 0.5rem;
 }
 
-@media (-ms-high-contrast: active), (forced-colors: active) {
+@media (forced-colors: active) {
   .pager__item a:hover {
     text-decoration: underline;
   }
diff --git a/core/themes/claro/css/components/progress.css b/core/themes/claro/css/components/progress.css
index 9dcbe24b63..44ce6e81b0 100644
--- a/core/themes/claro/css/components/progress.css
+++ b/core/themes/claro/css/components/progress.css
@@ -66,12 +66,6 @@
   margin-left: 0;
 }
 
-@media screen and (-ms-high-contrast: active) {
-  .progress__bar {
-    background-color: windowText;
-  }
-}
-
 @media (forced-colors: active) {
   .progress__bar {
     background-color: canvastext;
diff --git a/core/themes/claro/css/components/progress.pcss.css b/core/themes/claro/css/components/progress.pcss.css
index d5a00efbcd..eec17e1221 100644
--- a/core/themes/claro/css/components/progress.pcss.css
+++ b/core/themes/claro/css/components/progress.pcss.css
@@ -57,12 +57,6 @@
   margin-left: 0;
 }
 
-@media screen and (-ms-high-contrast: active) {
-  .progress__bar {
-    background-color: windowText;
-  }
-}
-
 @media (forced-colors: active) {
   .progress__bar {
     background-color: canvastext;
diff --git a/core/themes/claro/css/components/system-admin--modules.css b/core/themes/claro/css/components/system-admin--modules.css
index 195d399b69..95339ad532 100644
--- a/core/themes/claro/css/components/system-admin--modules.css
+++ b/core/themes/claro/css/components/system-admin--modules.css
@@ -196,3 +196,7 @@ td.module-list__description {
   color: var(--color-gray-800);
   font-weight: bold;
 }
+
+.claro-details .admin-missing {
+  color: var(--color-maximumred);
+}
diff --git a/core/themes/claro/css/components/system-admin--modules.pcss.css b/core/themes/claro/css/components/system-admin--modules.pcss.css
index 157b20ae30..b25a543c3f 100644
--- a/core/themes/claro/css/components/system-admin--modules.pcss.css
+++ b/core/themes/claro/css/components/system-admin--modules.pcss.css
@@ -180,3 +180,7 @@ td.module-list__description {
   color: var(--color-gray-800);
   font-weight: bold;
 }
+
+.claro-details .admin-missing {
+  color: var(--color-maximumred);
+}
diff --git a/core/themes/claro/css/components/system-status-report.css b/core/themes/claro/css/components/system-status-report.css
index 01b42cdc01..a91bfc8718 100644
--- a/core/themes/claro/css/components/system-status-report.css
+++ b/core/themes/claro/css/components/system-status-report.css
@@ -66,7 +66,7 @@
   background-size: contain;
 }
 
-[dir="rtl"] .system-status-report__status-title:before {
+[dir="rtl"] .system-status-report__status-icon:before {
   right: 0.625rem;
   left: auto;
   margin-right: 0;
diff --git a/core/themes/claro/css/components/system-status-report.pcss.css b/core/themes/claro/css/components/system-status-report.pcss.css
index ee0e9a2a60..aa146db49a 100644
--- a/core/themes/claro/css/components/system-status-report.pcss.css
+++ b/core/themes/claro/css/components/system-status-report.pcss.css
@@ -54,7 +54,7 @@
   background-position: top center;
   background-size: contain;
 }
-[dir="rtl"] .system-status-report__status-title:before {
+[dir="rtl"] .system-status-report__status-icon:before {
   right: 10px;
   left: auto;
   margin-right: 0;
diff --git a/core/themes/claro/css/components/tabledrag.css b/core/themes/claro/css/components/tabledrag.css
index d5c1abd72e..b2a4447a37 100644
--- a/core/themes/claro/css/components/tabledrag.css
+++ b/core/themes/claro/css/components/tabledrag.css
@@ -136,13 +136,6 @@ body.drag {
   margin-left: 0;
 }
 
-@media screen and (-ms-high-contrast: active) {
-  .tabledrag-handle::after {
-    content: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='17' height='17' viewBox='0 0 16 16'%3e%3cpath fill='currentColor' d='M14.103 5.476a.5.5 0 00-.701-.053.526.526 0 00-.082.713l1.1 1.346H8.512V1.62l1.32 1.113a.501.501 0 00.732-.054.528.528 0 00-.085-.744L8.328.119a.5.5 0 00-.647 0L5.529 1.935a.527.527 0 00-.085.744.504.504 0 00.732.054l1.32-1.113v5.862H1.588L2.68 6.136a.526.526 0 00-.1-.68.5.5 0 00-.675.02L.117 7.67a.525.525 0 000 .66l1.788 2.194a.5.5 0 00.702.053.526.526 0 00.081-.713l-1.1-1.346h5.908v5.862l-1.32-1.113a.501.501 0 00-.698.082.526.526 0 00.051.716l2.152 1.817v-.001a.5.5 0 00.647 0l2.151-1.816a.526.526 0 00.052-.716.501.501 0 00-.699-.082l-1.32 1.113V8.518h5.908l-1.091 1.346a.527.527 0 00.022.776.504.504 0 00.752-.116l1.78-2.194a.527.527 0 000-.66z'/%3e%3c/svg%3e");
-    background: none;
-  }
-}
-
 @media (forced-colors: active) {
   .tabledrag-handle::after {
     content: "";
@@ -287,7 +280,7 @@ body.drag {
 }
 
 .tabledrag-cell-content .tree {
-  min-height: 100%; /* Using simply 'height: 100%' would make IE11 rendering ugly. */
+  min-height: 100%;
 }
 
 /**
diff --git a/core/themes/claro/css/components/tabledrag.pcss.css b/core/themes/claro/css/components/tabledrag.pcss.css
index d79773c272..c2ca94d925 100644
--- a/core/themes/claro/css/components/tabledrag.pcss.css
+++ b/core/themes/claro/css/components/tabledrag.pcss.css
@@ -110,13 +110,6 @@ body.drag {
   margin-left: 0;
 }
 
-@media screen and (-ms-high-contrast: active) {
-  .tabledrag-handle::after {
-    content: url(../../images/icons/currentColor/tabledrag-handle.svg);
-    background: none;
-  }
-}
-
 @media (forced-colors: active) {
   .tabledrag-handle::after {
     content: "";
@@ -248,7 +241,7 @@ body.drag {
 }
 
 .tabledrag-cell-content .tree {
-  min-height: 100%; /* Using simply 'height: 100%' would make IE11 rendering ugly. */
+  min-height: 100%;
 }
 
 /**
diff --git a/core/themes/claro/css/components/tables.css b/core/themes/claro/css/components/tables.css
index 6a128c396d..fc97d99e15 100644
--- a/core/themes/claro/css/components/tables.css
+++ b/core/themes/claro/css/components/tables.css
@@ -80,14 +80,6 @@ th {
   border-bottom: 0.125rem solid transparent;
 }
 
-/* stylelint-disable-next-line selector-type-no-unknown */
-
-_:-ms-fullscreen, /* Only IE 11 */
-.sortable-heading > a::before {
-  top: auto;
-  height: 100%;
-}
-
 .sortable-heading > a::after {
   position: absolute;
   top: 50%;
@@ -103,22 +95,12 @@ _:-ms-fullscreen, /* Only IE 11 */
 
 @media (forced-colors: active) {
 
-.sortable-heading > a::after {
+  .sortable-heading > a::after {
     opacity: 1;
     background: linktext;
     -webkit-mask: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='14' height='8'%3e%3cpath d='M1.75.25v1.5h10.5V.25zm0 3v1.5h7.5v-1.5zm0 3v1.5h4.5v-1.5z' fill='%23000f33'/%3e%3c/svg%3e") no-repeat 50% 50%;
     mask: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='14' height='8'%3e%3cpath d='M1.75.25v1.5h10.5V.25zm0 3v1.5h7.5v-1.5zm0 3v1.5h4.5v-1.5z' fill='%23000f33'/%3e%3c/svg%3e") no-repeat 50% 50%;
-}
   }
-
-/* stylelint-disable-next-line selector-type-no-unknown */
-
-_:-ms-fullscreen, /* Only IE 11 */
-.sortable-heading > a::after {
-  position: static;
-  float: right;
-  margin-top: 0.125rem; /* 2px */
-  margin-right: -1.5rem; /* -24px */
 }
 
 [dir="rtl"] .sortable-heading > a::after {
@@ -129,20 +111,11 @@ _:-ms-fullscreen, /* Only IE 11 */
 
 @media (forced-colors: active) {
 
-[dir="rtl"] .sortable-heading > a::after {
+  [dir="rtl"] .sortable-heading > a::after {
     background: linktext;
     -webkit-mask: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='14' height='8'%3e%3cpath d='M12.25.25v1.5H1.75V.25zm0 3v1.5h-7.5v-1.5zm0 3v1.5h-4.5v-1.5z' fill='%23000f33'/%3e%3c/svg%3e") no-repeat 50% 50%;
     mask: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='14' height='8'%3e%3cpath d='M12.25.25v1.5H1.75V.25zm0 3v1.5h-7.5v-1.5zm0 3v1.5h-4.5v-1.5z' fill='%23000f33'/%3e%3c/svg%3e") no-repeat 50% 50%;
-}
   }
-
-/* stylelint-disable-next-line selector-type-no-unknown */
-
-_:-ms-fullscreen, /* Only IE 11 */
-[dir="rtl"] .sortable-heading > a::after {
-  float: left;
-  margin-right: 0;
-  margin-left: -1.5rem; /* -24px */
 }
 
 /* Sortable cell's link focus/hover state. */
diff --git a/core/themes/claro/css/components/tables.pcss.css b/core/themes/claro/css/components/tables.pcss.css
index c29a88276d..d0d14a03ed 100644
--- a/core/themes/claro/css/components/tables.pcss.css
+++ b/core/themes/claro/css/components/tables.pcss.css
@@ -63,12 +63,6 @@ th {
   content: "";
   border-bottom: 0.125rem solid transparent;
 }
-/* stylelint-disable-next-line selector-type-no-unknown */
-_:-ms-fullscreen, /* Only IE 11 */
-.sortable-heading > a::before {
-  top: auto;
-  height: 100%;
-}
 .sortable-heading > a::after {
   position: absolute;
   top: 50%;
@@ -87,14 +81,6 @@ _:-ms-fullscreen, /* Only IE 11 */
     mask: url(../../images/icons/000f33/sort--inactive--ltr.svg) no-repeat 50% 50%;
   }
 }
-/* stylelint-disable-next-line selector-type-no-unknown */
-_:-ms-fullscreen, /* Only IE 11 */
-.sortable-heading > a::after {
-  position: static;
-  float: right;
-  margin-top: 0.125rem; /* 2px */
-  margin-right: -1.5rem; /* -24px */
-}
 [dir="rtl"] .sortable-heading > a::after {
   right: auto;
   left: 1rem;
@@ -105,13 +91,6 @@ _:-ms-fullscreen, /* Only IE 11 */
     mask: url(../../images/icons/000f33/sort--inactive--rtl.svg) no-repeat 50% 50%;
   }
 }
-/* stylelint-disable-next-line selector-type-no-unknown */
-_:-ms-fullscreen, /* Only IE 11 */
-[dir="rtl"] .sortable-heading > a::after {
-  float: left;
-  margin-right: 0;
-  margin-left: -1.5rem; /* -24px */
-}
 /* Sortable cell's link focus/hover state. */
 .sortable-heading > a:focus,
 .sortable-heading > a:hover {
diff --git a/core/themes/claro/css/components/tablesort-indicator.css b/core/themes/claro/css/components/tablesort-indicator.css
index c70e741fd5..ddf7ecb06b 100644
--- a/core/themes/claro/css/components/tablesort-indicator.css
+++ b/core/themes/claro/css/components/tablesort-indicator.css
@@ -24,7 +24,7 @@
 
 @media (forced-colors: active) {
 
-.tablesort {
+  .tablesort {
     background: linktext;
     -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='14' height='8'%3e%3cpath d='M1.75.25v1.5h10.5V.25zm0 3v1.5h7.5v-1.5zm0 3v1.5h4.5v-1.5z' fill='%23000f33'/%3e%3c/svg%3e");
     mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='14' height='8'%3e%3cpath d='M1.75.25v1.5h10.5V.25zm0 3v1.5h7.5v-1.5zm0 3v1.5h4.5v-1.5z' fill='%23000f33'/%3e%3c/svg%3e");
@@ -32,17 +32,7 @@
     mask-repeat: no-repeat;
     -webkit-mask-position: 0 50%;
     mask-position: 0 50%;
-}
   }
-
-/* stylelint-disable-next-line selector-type-no-unknown */
-
-_:-ms-fullscreen, /* Only IE 11 */
-.tablesort {
-  position: static;
-  float: right;
-  margin-top: 0.125rem; /* 2px */
-  margin-right: -1.5rem; /* -24px */
 }
 
 [dir="rtl"] .tablesort {
@@ -53,7 +43,7 @@ _:-ms-fullscreen, /* Only IE 11 */
 
 @media (forced-colors: active) {
 
-[dir="rtl"] .tablesort {
+  [dir="rtl"] .tablesort {
     background: linktext;
     -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='14' height='8'%3e%3cpath d='M12.25.25v1.5H1.75V.25zm0 3v1.5h-7.5v-1.5zm0 3v1.5h-4.5v-1.5z' fill='%23000f33'/%3e%3c/svg%3e");
     mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='14' height='8'%3e%3cpath d='M12.25.25v1.5H1.75V.25zm0 3v1.5h-7.5v-1.5zm0 3v1.5h-4.5v-1.5z' fill='%23000f33'/%3e%3c/svg%3e");
@@ -61,16 +51,7 @@ _:-ms-fullscreen, /* Only IE 11 */
     mask-repeat: no-repeat;
     -webkit-mask-position: 0 50%;
     mask-position: 0 50%;
-}
   }
-
-/* stylelint-disable-next-line selector-type-no-unknown */
-
-_:-ms-fullscreen, /* Only IE 11 */
-[dir="rtl"] .tablesort {
-  float: left;
-  margin-right: 0;
-  margin-left: -1.5rem; /* -24px */
 }
 
 .tablesort--asc,
@@ -81,13 +62,13 @@ _:-ms-fullscreen, /* Only IE 11 */
 
 @media (forced-colors: active) {
 
-.tablesort--asc,
-[dir="rtl"] .tablesort--asc {
+  .tablesort--asc,
+  [dir="rtl"] .tablesort--asc {
     background: linktext;
     -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='14' height='16' viewBox='0 0 10 12'%3e%3cpath d='M5 .44L.719 4.718 1.78 5.78 4.25 3.313v7.937h1.5V3.312l2.469 2.47L9.28 4.718 5 .439z' fill='%23003ecc'/%3e%3c/svg%3e");
     mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='14' height='16' viewBox='0 0 10 12'%3e%3cpath d='M5 .44L.719 4.718 1.78 5.78 4.25 3.313v7.937h1.5V3.312l2.469 2.47L9.28 4.718 5 .439z' fill='%23003ecc'/%3e%3c/svg%3e");
-}
   }
+}
 
 .tablesort--desc,
 [dir="rtl"] .tablesort--desc {
@@ -97,10 +78,10 @@ _:-ms-fullscreen, /* Only IE 11 */
 
 @media (forced-colors: active) {
 
-.tablesort--desc,
-[dir="rtl"] .tablesort--desc {
+  .tablesort--desc,
+  [dir="rtl"] .tablesort--desc {
     background: linktext;
     -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='14' height='16' viewBox='0 0 10 12'%3e%3cpath d='M4.25.75v7.938l-2.469-2.47L.72 7.282 5 11.561l4.281-4.28L8.22 6.22 5.75 8.687V.75h-1.5z' fill='%23003ecc'/%3e%3c/svg%3e");
     mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='14' height='16' viewBox='0 0 10 12'%3e%3cpath d='M4.25.75v7.938l-2.469-2.47L.72 7.282 5 11.561l4.281-4.28L8.22 6.22 5.75 8.687V.75h-1.5z' fill='%23003ecc'/%3e%3c/svg%3e");
-}
   }
+}
diff --git a/core/themes/claro/css/components/tablesort-indicator.pcss.css b/core/themes/claro/css/components/tablesort-indicator.pcss.css
index c5ae2b0d02..d87dc60b4f 100644
--- a/core/themes/claro/css/components/tablesort-indicator.pcss.css
+++ b/core/themes/claro/css/components/tablesort-indicator.pcss.css
@@ -21,15 +21,6 @@
     mask-position: 0 50%;
   }
 }
-
-/* stylelint-disable-next-line selector-type-no-unknown */
-_:-ms-fullscreen, /* Only IE 11 */
-.tablesort {
-  position: static;
-  float: right;
-  margin-top: 0.125rem; /* 2px */
-  margin-right: -1.5rem; /* -24px */
-}
 [dir="rtl"] .tablesort {
   right: auto;
   left: 1rem; /* 16px */
@@ -42,13 +33,6 @@ _:-ms-fullscreen, /* Only IE 11 */
     mask-position: 0 50%;
   }
 }
-/* stylelint-disable-next-line selector-type-no-unknown */
-_:-ms-fullscreen, /* Only IE 11 */
-[dir="rtl"] .tablesort {
-  float: left;
-  margin-right: 0;
-  margin-left: -1.5rem; /* -24px */
-}
 .tablesort--asc,
 [dir="rtl"] .tablesort--asc {
   opacity: 1;
diff --git a/core/themes/claro/css/components/toolbar.module.css b/core/themes/claro/css/components/toolbar.module.css
index dbd346b5e1..a7f24223ce 100644
--- a/core/themes/claro/css/components/toolbar.module.css
+++ b/core/themes/claro/css/components/toolbar.module.css
@@ -25,6 +25,7 @@
   font-size: small;
   line-height: 1;
 }
+
 @media print {
   #toolbar-administration {
     display: none;
@@ -225,6 +226,7 @@ body.toolbar-tray-open.toolbar-vertical.toolbar-fixed {
   margin-left: 240px; /* LTR */
   margin-left: 15rem; /* LTR */
 }
+
 @media print {
   body.toolbar-tray-open.toolbar-vertical.toolbar-fixed {
     margin-left: 0;
@@ -235,6 +237,7 @@ body.toolbar-tray-open.toolbar-vertical.toolbar-fixed {
   margin-right: 15rem;
   margin-left: auto;
 }
+
 @media print {
   [dir="rtl"] body.toolbar-tray-open.toolbar-vertical.toolbar-fixed {
     margin-right: 0;
diff --git a/core/themes/claro/css/components/vertical-tabs.css b/core/themes/claro/css/components/vertical-tabs.css
index 6c86da87ea..520598cf6c 100644
--- a/core/themes/claro/css/components/vertical-tabs.css
+++ b/core/themes/claro/css/components/vertical-tabs.css
@@ -23,12 +23,6 @@
   border-top: 1px solid transparent; /* Need to hide the pane wrapper clearfix's height */
 }
 
-@media screen and (-ms-high-contrast: active) {
-  .vertical-tabs {
-    border-color: transparent;
-  }
-}
-
 /**
  * Vertical tabs menu.
  */
@@ -148,12 +142,6 @@
   border-radius: 0 var(--vertical-tabs-border-radius) var(--vertical-tabs-border-radius) 0;
 }
 
-@media screen and (-ms-high-contrast: active) {
-  .vertical-tabs__menu-link {
-    border-color: transparent;
-  }
-}
-
 /* Menu link states. */
 
 .vertical-tabs__menu-link:focus {
@@ -232,20 +220,6 @@
   background: none;
 }
 
-@media screen and (-ms-high-contrast: active) {
-  .vertical-tabs__menu-item.is-selected .vertical-tabs__menu-link {
-    border-color: windowText transparent;
-  }
-
-  .vertical-tabs__menu-link:focus::after {
-    border-color: transparent;
-  }
-
-  .vertical-tabs__menu-item.is-selected .vertical-tabs__menu-link::before {
-    border-color: windowText;
-  }
-}
-
 .vertical-tabs__menu-link-content {
   position: relative;
   z-index: 1; /* We are using a pseudo element for displaying the hover state's background, and we have to keep the link content above that pseudo element. Without this, the text would be covered by the background. */
diff --git a/core/themes/claro/css/components/vertical-tabs.pcss.css b/core/themes/claro/css/components/vertical-tabs.pcss.css
index 2cb4fb300d..f391624ec3 100644
--- a/core/themes/claro/css/components/vertical-tabs.pcss.css
+++ b/core/themes/claro/css/components/vertical-tabs.pcss.css
@@ -15,12 +15,6 @@
   border-top: 1px solid transparent; /* Need to hide the pane wrapper clearfix's height */
 }
 
-@media screen and (-ms-high-contrast: active) {
-  .vertical-tabs {
-    border-color: transparent;
-  }
-}
-
 /**
  * Vertical tabs menu.
  */
@@ -128,12 +122,6 @@
   border-radius: 0 var(--vertical-tabs-border-radius) var(--vertical-tabs-border-radius) 0;
 }
 
-@media screen and (-ms-high-contrast: active) {
-  .vertical-tabs__menu-link {
-    border-color: transparent;
-  }
-}
-
 /* Menu link states. */
 .vertical-tabs__menu-link:focus {
   z-index: 4; /* Focus state should be on the highest level to make the focus effect be fully visible. This also means that it should have bigger z-index than the selected link. */
@@ -208,20 +196,6 @@
   background: none;
 }
 
-@media screen and (-ms-high-contrast: active) {
-  .vertical-tabs__menu-item.is-selected .vertical-tabs__menu-link {
-    border-color: windowText transparent;
-  }
-
-  .vertical-tabs__menu-link:focus::after {
-    border-color: transparent;
-  }
-
-  .vertical-tabs__menu-item.is-selected .vertical-tabs__menu-link::before {
-    border-color: windowText;
-  }
-}
-
 .vertical-tabs__menu-link-content {
   position: relative;
   z-index: 1; /* We are using a pseudo element for displaying the hover state's background, and we have to keep the link content above that pseudo element. Without this, the text would be covered by the background. */
diff --git a/core/themes/claro/css/components/views-ui.css b/core/themes/claro/css/components/views-ui.css
index de3925d6a9..9f4df43507 100644
--- a/core/themes/claro/css/components/views-ui.css
+++ b/core/themes/claro/css/components/views-ui.css
@@ -653,39 +653,3 @@ details.fieldset-no-legend {
   padding-right: 0.4rem;
   padding-left: 0.3rem;
 }
-
-@media all and (-ms-high-contrast: active), (-ms-high-contrast: none) {
-  /**
-   * Remove borders from IE11 filter config in IE11, as it does not fully support
-   * the CSS needed to size and position them properly. This results in a
-   * slightly different presentation for IE11, but one that users are accustomed
-   * to with the Seven theme.
-   */
-  .views-config-group-region .views-group-box--value > .form-item::before,
-  .views-config-group-region .views-group-box--value > .form-item::after {
-    content: "";
-    border: none;
-  }
-  .views-config-group-region,
-  .views-config-group-region .views-group-box {
-    border: none;
-  }
-
-  /**
-   * IE11 has trouble correctly using `justify-content: space-between` when a
-   * flex item has the `.visually-hidden` class. This addresses the issue and
-   * the end result is the extra action button remains in it's own column on
-   * wrap, which matches the experience when using the Seven theme.
-   */
-  .views-display-top {
-    flex-wrap: nowrap;
-    justify-content: flex-start;
-  }
-  .views-display-top__extra-actions-wrapper {
-    margin-left: auto; /* LTR */
-  }
-  [dir="rtl"] .views-display-top__extra-actions-wrapper {
-    margin-right: auto;
-    margin-left: calc(var(--space-xs) / 2);
-  }
-}
diff --git a/core/themes/claro/css/components/views-ui.pcss.css b/core/themes/claro/css/components/views-ui.pcss.css
index 7f1807ed89..35d05ecf14 100644
--- a/core/themes/claro/css/components/views-ui.pcss.css
+++ b/core/themes/claro/css/components/views-ui.pcss.css
@@ -575,39 +575,3 @@ details.fieldset-no-legend {
   padding-right: 0.4rem;
   padding-left: 0.3rem;
 }
-
-@media all and (-ms-high-contrast: active), (-ms-high-contrast: none) {
-  /**
-   * Remove borders from IE11 filter config in IE11, as it does not fully support
-   * the CSS needed to size and position them properly. This results in a
-   * slightly different presentation for IE11, but one that users are accustomed
-   * to with the Seven theme.
-   */
-  .views-config-group-region .views-group-box--value > .form-item::before,
-  .views-config-group-region .views-group-box--value > .form-item::after {
-    content: "";
-    border: none;
-  }
-  .views-config-group-region,
-  .views-config-group-region .views-group-box {
-    border: none;
-  }
-
-  /**
-   * IE11 has trouble correctly using `justify-content: space-between` when a
-   * flex item has the `.visually-hidden` class. This addresses the issue and
-   * the end result is the extra action button remains in it's own column on
-   * wrap, which matches the experience when using the Seven theme.
-   */
-  .views-display-top {
-    flex-wrap: nowrap;
-    justify-content: flex-start;
-  }
-  .views-display-top__extra-actions-wrapper {
-    margin-left: auto; /* LTR */
-  }
-  [dir="rtl"] .views-display-top__extra-actions-wrapper {
-    margin-right: auto;
-    margin-left: calc(var(--space-xs) / 2);
-  }
-}
diff --git a/core/themes/claro/css/layout/card-list.css b/core/themes/claro/css/layout/card-list.css
index 50ed096266..d252829e2e 100644
--- a/core/themes/claro/css/layout/card-list.css
+++ b/core/themes/claro/css/layout/card-list.css
@@ -12,10 +12,9 @@
 
 :root {
   --card-list-spacing: var(--space-m);
-  /* Using 100% as base causes issues in IE11. */
-  --cards-two-cols-width: calc(((99.9% + var(--card-list-spacing)) / 2) - var(--card-list-spacing));
-  --cards-three-cols-width: calc(((99.9% + var(--card-list-spacing)) / 3) - var(--card-list-spacing));
-  --cards-four-cols-width: calc(((99.9% + var(--card-list-spacing)) / 4) - var(--card-list-spacing));
+  --cards-two-cols-width: calc(((100% + var(--card-list-spacing)) / 2) - var(--card-list-spacing));
+  --cards-three-cols-width: calc(((100% + var(--card-list-spacing)) / 3) - var(--card-list-spacing));
+  --cards-four-cols-width: calc(((100% + var(--card-list-spacing)) / 4) - var(--card-list-spacing));
 }
 
 .card-list {
diff --git a/core/themes/claro/css/layout/card-list.pcss.css b/core/themes/claro/css/layout/card-list.pcss.css
index e76106263a..0613e0e734 100644
--- a/core/themes/claro/css/layout/card-list.pcss.css
+++ b/core/themes/claro/css/layout/card-list.pcss.css
@@ -5,10 +5,9 @@
 
 :root {
   --card-list-spacing: var(--space-m);
-  /* Using 100% as base causes issues in IE11. */
-  --cards-two-cols-width: calc(((99.9% + var(--card-list-spacing)) / 2) - var(--card-list-spacing));
-  --cards-three-cols-width: calc(((99.9% + var(--card-list-spacing)) / 3) - var(--card-list-spacing));
-  --cards-four-cols-width: calc(((99.9% + var(--card-list-spacing)) / 4) - var(--card-list-spacing));
+  --cards-two-cols-width: calc(((100% + var(--card-list-spacing)) / 2) - var(--card-list-spacing));
+  --cards-three-cols-width: calc(((100% + var(--card-list-spacing)) / 3) - var(--card-list-spacing));
+  --cards-four-cols-width: calc(((100% + var(--card-list-spacing)) / 4) - var(--card-list-spacing));
 }
 
 .card-list {
diff --git a/core/themes/claro/css/theme/install-page.css b/core/themes/claro/css/theme/install-page.css
index 94ffdcef23..2f1ecb50d6 100644
--- a/core/themes/claro/css/theme/install-page.css
+++ b/core/themes/claro/css/theme/install-page.css
@@ -19,34 +19,34 @@
 }
 
 .install-page h1,
-  .install-page h2 {
-    font-size: var(--font-size-h3);
-  }
+.install-page h2 {
+  font-size: var(--font-size-h3);
+}
 
 .install-page h3 {
-    font-size: var(--font-size-h4);
-  }
+  font-size: var(--font-size-h4);
+}
 
 .install-page .site-name {
-    margin-top: var(--space-s);
-    color: var(--color-gray);
-    font-size: var(--font-size-xl);
-  }
+  margin-top: var(--space-s);
+  color: var(--color-gray);
+  font-size: var(--font-size-xl);
+}
 
 .install-page .title {
-    margin-top: 0;
-    font-size: var(--font-size-h3);
-  }
+  margin-top: 0;
+  font-size: var(--font-size-h3);
+}
 
 .install-page .content {
-    color: var(--color-gray);
-  }
+  color: var(--color-gray);
+}
 
 .install-page .site-name,
-  .install-page .title,
-  .install-page .content {
-    max-width: 34rem;
-  }
+.install-page .title,
+.install-page .content {
+  max-width: 34rem;
+}
 
 /**
  * Password widget
diff --git a/core/themes/claro/css/theme/media-library.css b/core/themes/claro/css/theme/media-library.css
index 6fa8593f10..ca39fde522 100644
--- a/core/themes/claro/css/theme/media-library.css
+++ b/core/themes/claro/css/theme/media-library.css
@@ -88,12 +88,6 @@
   border-radius: 0 var(--vertical-tabs-border-radius) var(--vertical-tabs-border-radius) 0;
 }
 
-@media screen and (-ms-high-contrast: active) {
-  .media-library-menu__link {
-    border-color: transparent;
-  }
-}
-
 /* Menu link states. */
 
 .media-library-menu__link:focus {
@@ -255,17 +249,6 @@
   margin: 0.5rem 0 0;
 }
 
-/* Align remove buttons with Save button and compensate for IE scrollbar and focus padding. */
-
-@media all and (-ms-high-contrast: active), (-ms-high-contrast: none) {
-  .ui-dialog > .ui-dialog-content {
-    padding-right: calc(var(--space-s) - calc(var(--focus-border-size) + var(--focus-border-offset-size) + 2px));
-  }
-  [dir="rtl"] .ui-dialog > .ui-dialog-content {
-    padding-left: calc(var(--space-s) - calc(var(--focus-border-size) + var(--focus-border-offset-size) + 2px));
-  }
-}
-
 /* Style the media add oEmbed form. */
 
 .media-library-add-form--oembed .media-library-add-form__input-wrapper {
diff --git a/core/themes/claro/css/theme/media-library.pcss.css b/core/themes/claro/css/theme/media-library.pcss.css
index 3b3e0cd331..b2adff345e 100644
--- a/core/themes/claro/css/theme/media-library.pcss.css
+++ b/core/themes/claro/css/theme/media-library.pcss.css
@@ -77,12 +77,6 @@
   border-radius: 0 var(--vertical-tabs-border-radius) var(--vertical-tabs-border-radius) 0;
 }
 
-@media screen and (-ms-high-contrast: active) {
-  .media-library-menu__link {
-    border-color: transparent;
-  }
-}
-
 /* Menu link states. */
 .media-library-menu__link:focus {
   z-index: calc(var(--vertical-tabs-menu--z-index) + 3); /* Focus state should be on the highest level to make the focus effect be fully visible. This also means that it should have bigger z-index than the selected link. */
@@ -233,16 +227,6 @@
   margin: 8px 0 0;
 }
 
-/* Align remove buttons with Save button and compensate for IE scrollbar and focus padding. */
-@media all and (-ms-high-contrast: active), (-ms-high-contrast: none) {
-  .ui-dialog > .ui-dialog-content {
-    padding-right: calc(var(--space-s) - calc(var(--focus-border-size) + var(--focus-border-offset-size) + 2px));
-  }
-  [dir="rtl"] .ui-dialog > .ui-dialog-content {
-    padding-left: calc(var(--space-s) - calc(var(--focus-border-size) + var(--focus-border-offset-size) + 2px));
-  }
-}
-
 /* Style the media add oEmbed form. */
 .media-library-add-form--oembed .media-library-add-form__input-wrapper {
   display: flex;
diff --git a/core/themes/claro/css/theme/toolbar.theme.css b/core/themes/claro/css/theme/toolbar.theme.css
index 3fc152aeea..87342e4b8b 100644
--- a/core/themes/claro/css/theme/toolbar.theme.css
+++ b/core/themes/claro/css/theme/toolbar.theme.css
@@ -90,7 +90,8 @@
 .toolbar .toolbar-tray-horizontal .toolbar-tray {
   background-color: #f5f5f5;
 }
-.toolbar-tray a {
+.toolbar-tray a,
+.toolbar-tray a:visited {
   padding: 1em 1.3333em;
   cursor: pointer;
   text-decoration: none;
diff --git a/core/themes/claro/css/theme/toolbar.theme.pcss.css b/core/themes/claro/css/theme/toolbar.theme.pcss.css
index 578d98eeb0..d7986a07a2 100644
--- a/core/themes/claro/css/theme/toolbar.theme.pcss.css
+++ b/core/themes/claro/css/theme/toolbar.theme.pcss.css
@@ -88,7 +88,8 @@
 .toolbar .toolbar-tray-horizontal .toolbar-tray {
   background-color: #f5f5f5;
 }
-.toolbar-tray a {
+.toolbar-tray a,
+.toolbar-tray a:visited {
   padding: 1em 1.3333em;
   cursor: pointer;
   text-decoration: none;
diff --git a/core/themes/claro/images/icons/003ecc/spinner-rtl.svg b/core/themes/claro/images/icons/003ecc/spinner-rtl.svg
index 714da292b2..f411494a4b 100644
--- a/core/themes/claro/images/icons/003ecc/spinner-rtl.svg
+++ b/core/themes/claro/images/icons/003ecc/spinner-rtl.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 10 10" height="20" width="40"><style>@keyframes s{0%{transform:rotate(0deg) translate(-50%,-50%)}50%{transform:rotate(-430deg) translate(-50%,-50%);stroke-dashoffset:20}to{transform:rotate(-720deg) translate(-50%,-50%)}}</style><circle fill="none" cy="5" cx="5" stroke="#003ecc" stroke-dashoffset="6.125" stroke-dasharray="25" style="animation:s 1s linear infinite" r="4"/></svg>
\ No newline at end of file
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 10 10" height="20" width="40"><style>@keyframes s{0%{transform:rotate(0deg) translate(-50%,0)}50%{transform:rotate(-430deg) translate(-50%,0);stroke-dashoffset:20}to{transform:rotate(-720deg) translate(-50%,0)}}</style><circle fill="none" cy="5" cx="5" stroke="#003ecc" stroke-dashoffset="6.125" stroke-dasharray="25" style="animation:s 1s linear infinite;transform-origin:left" r="4"/></svg>
diff --git a/core/themes/claro/images/icons/003ecc/spinner.svg b/core/themes/claro/images/icons/003ecc/spinner.svg
index 1fd02a6d0d..b75f215e82 100644
--- a/core/themes/claro/images/icons/003ecc/spinner.svg
+++ b/core/themes/claro/images/icons/003ecc/spinner.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 10 10" height="20" width="40"><style>@keyframes s{0%{transform:rotate(0deg) translate(-50%,-50%)}50%{transform:rotate(430deg) translate(-50%,-50%);stroke-dashoffset:20}to{transform:rotate(720deg) translate(-50%,-50%)}}</style><circle fill="none" cy="5" cx="5" stroke="#003ecc" stroke-dashoffset="6.125" stroke-dasharray="25" style="animation:s 1s linear infinite" r="4"/></svg>
\ No newline at end of file
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 10 10" height="20" width="40"><style>@keyframes s{0%{transform:rotate(0deg) translate(-50%,0)}50%{transform:rotate(430deg) translate(-50%,0);stroke-dashoffset:20}to{transform:rotate(720deg) translate(-50%,0)}}</style><circle fill="none" cy="5" cx="5" stroke="#003ecc" stroke-dashoffset="6.125" stroke-dasharray="25" style="animation:s 1s linear infinite;transform-origin:left" r="4"/></svg>
diff --git a/core/themes/claro/images/icons/currentColor/tabledrag-handle.svg b/core/themes/claro/images/icons/currentColor/tabledrag-handle.svg
deleted file mode 100644
index 9a1f12b0db..0000000000
--- a/core/themes/claro/images/icons/currentColor/tabledrag-handle.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="17" height="17" viewBox="0 0 16 16"><path fill="currentColor" d="M14.103 5.476a.5.5 0 00-.701-.053.526.526 0 00-.082.713l1.1 1.346H8.512V1.62l1.32 1.113a.501.501 0 00.732-.054.528.528 0 00-.085-.744L8.328.119a.5.5 0 00-.647 0L5.529 1.935a.527.527 0 00-.085.744.504.504 0 00.732.054l1.32-1.113v5.862H1.588L2.68 6.136a.526.526 0 00-.1-.68.5.5 0 00-.675.02L.117 7.67a.525.525 0 000 .66l1.788 2.194a.5.5 0 00.702.053.526.526 0 00.081-.713l-1.1-1.346h5.908v5.862l-1.32-1.113a.501.501 0 00-.698.082.526.526 0 00.051.716l2.152 1.817v-.001a.5.5 0 00.647 0l2.151-1.816a.526.526 0 00.052-.716.501.501 0 00-.699-.082l-1.32 1.113V8.518h5.908l-1.091 1.346a.527.527 0 00.022.776.504.504 0 00.752-.116l1.78-2.194a.527.527 0 000-.66z"/></svg>
\ No newline at end of file
diff --git a/core/themes/claro/images/icons/windowText/checkmark.svg b/core/themes/claro/images/icons/windowText/checkmark.svg
deleted file mode 100644
index ee42ffe879..0000000000
--- a/core/themes/claro/images/icons/windowText/checkmark.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg fill="none" height="16" stroke="windowText" stroke-width="2" width="16" xmlns="http://www.w3.org/2000/svg"><path d="M2 8.571L5.6 12 14 4"/></svg>
\ No newline at end of file
diff --git a/core/themes/claro/images/icons/windowText/cog.svg b/core/themes/claro/images/icons/windowText/cog.svg
deleted file mode 100644
index c9bed32c02..0000000000
--- a/core/themes/claro/images/icons/windowText/cog.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg height="16" viewBox="0 0 16 16" fill="windowText" width="16" xmlns="http://www.w3.org/2000/svg"><path d="m15.426 9.249c.045-.327.076-.658.076-.998 0-.36-.035-.71-.086-1.056l-2.275-.293c-.115-.426-.283-.827-.498-1.201l1.396-1.808c-.416-.551-.906-1.039-1.459-1.452l-1.807 1.391c-.373-.215-.774-.383-1.2-.499l-.292-2.252c-.338-.048-.677-.081-1.029-.081s-.694.033-1.032.082l-.291 2.251c-.426.116-.826.284-1.2.499l-1.805-1.391c-.552.413-1.044.901-1.459 1.452l1.395 1.808c-.215.374-.383.774-.499 1.2l-2.276.294c-.05.346-.085.696-.085 1.056 0 .34.031.671.077.998l2.285.295c.115.426.284.826.499 1.2l-1.417 1.836c.411.55.896 1.038 1.443 1.452l1.842-1.42c.374.215.774.383 1.2.498l.298 2.311c.337.047.677.08 1.025.08s.688-.033 1.021-.08l.299-2.311c.426-.115.826-.283 1.201-.498l1.842 1.42c.547-.414 1.031-.902 1.443-1.452l-1.416-1.837c.215-.373.383-.773.498-1.199zm-7.174 1.514c-1.406 0-2.543-1.137-2.543-2.541 0-1.402 1.137-2.541 2.543-2.541 1.402 0 2.541 1.138 2.541 2.541 0 1.404-1.139 2.541-2.541 2.541z"/></svg>
diff --git a/core/themes/claro/images/icons/windowText/ex.svg b/core/themes/claro/images/icons/windowText/ex.svg
deleted file mode 100644
index 4570bc05d1..0000000000
--- a/core/themes/claro/images/icons/windowText/ex.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg height="16" stroke="windowText" stroke-width="1.5" viewBox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg"><path d="M13 3L3 13"/><path d="M13 13L3 3"/></svg>
diff --git a/core/themes/claro/images/icons/windowText/hide.svg b/core/themes/claro/images/icons/windowText/hide.svg
deleted file mode 100644
index 2afb3d1793..0000000000
--- a/core/themes/claro/images/icons/windowText/hide.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg fill-rule="evenodd" height="16" viewBox="0 0 16 16" fill="windowText" width="16" xmlns="http://www.w3.org/2000/svg"><path d="m2.0106399 1.6964404-.0106399.0106426 12.072 12.07205-.6964.696467-2.077627-2.077613c-1.015347.38784-2.1292399.602013-3.297973.602013-3.6363601 0-6.7418187-2.073333-8-5 .64703865-1.5050798 1.7826266-2.7844797 3.2277199-3.6722797l-2.2277199-2.2277203.7071066-.707096zm2.98936 6.3035598c0-.54608.1459066-1.0580666.4008533-1.4991333l4.0982932 4.0982801c-.4410666.25496-.9530666.400853-1.4991464.400853-1.6568535 0-3-1.343146-3-3z"/><path d="m5.1510932 3.4439603 1.75984 1.75984c.3376-.1315867.7048933-.2038 1.0890666-.2038 1.6568533-.0000003 3.0000002 1.3431466 3.0000002 2.9999997 0 .3841735-.07221.7514668-.2038 1.0890668l2.344093 2.3440932c1.269973-.871746 2.26864-2.0582932 2.859707-3.43316-1.258134-2.9266664-4.36364-5-8-5-.9987733 0-1.9575066.1564134-2.8489066.44396z"/></svg>
diff --git a/core/themes/claro/images/icons/windowText/key.svg b/core/themes/claro/images/icons/windowText/key.svg
deleted file mode 100644
index 790a3a6081..0000000000
--- a/core/themes/claro/images/icons/windowText/key.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg width="15" height="14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M13.727 6.714A4.239 4.239 0 008.9 5.896L3.001 0H0v2h1v1.618L1.378 4H3v1h1v1.622h1.622l.864.862L5.5 8.5l.992.99a4.227 4.227 0 001.223 3.234 4.264 4.264 0 006.012 0 4.253 4.253 0 000-6.01zm-.829 5.182a1.653 1.653 0 11-2.338-2.338 1.653 1.653 0 112.338 2.338z" fill="windowText"/></svg>
diff --git a/core/themes/claro/images/icons/windowText/plus.svg b/core/themes/claro/images/icons/windowText/plus.svg
deleted file mode 100644
index 7a5389099c..0000000000
--- a/core/themes/claro/images/icons/windowText/plus.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg height="16" stroke="windowText" stroke-width="2" viewBox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg"><path d="m3 8h10"/><path d="m8 3v10"/></svg>
diff --git a/core/themes/claro/images/icons/windowText/questionmark.svg b/core/themes/claro/images/icons/windowText/questionmark.svg
deleted file mode 100644
index d3dc4a97f7..0000000000
--- a/core/themes/claro/images/icons/windowText/questionmark.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg width="15" height="14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M7.002 0a7 7 0 100 14 7 7 0 000-14zm3 5c0 .551-.16 1.085-.477 1.586l-.158.22c-.07.093-.189.241-.361.393a9.67 9.67 0 01-.545.447l-.203.189-.141.129-.096.17L8 8.369v.63H5.999v-.704c.026-.396.078-.73.204-.999a2.83 2.83 0 01.439-.688l.225-.21-.01-.015.176-.14.137-.128c.186-.139.357-.277.516-.417l.148-.18A.948.948 0 008.002 5 1.001 1.001 0 006 5H4a3 3 0 016.002 0zm-1.75 6.619a.627.627 0 01-.625.625h-1.25a.627.627 0 01-.626-.625v-1.238c0-.344.281-.625.626-.625h1.25c.344 0 .625.281.625.625v1.238z" fill="windowText"/></svg>
diff --git a/core/themes/claro/images/icons/windowText/show.svg b/core/themes/claro/images/icons/windowText/show.svg
deleted file mode 100644
index cdf94b7d97..0000000000
--- a/core/themes/claro/images/icons/windowText/show.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg fill-rule="evenodd" height="16" viewBox="0 0 16 16" fill="windowText" width="16" xmlns="http://www.w3.org/2000/svg"><path d="m8 3c-3.6363601 0-6.7418187 2.0733333-8 5 1.2581813 2.926667 4.3636399 5 8 5 3.63636 0 6.741866-2.073333 8-5-1.258134-2.9266667-4.36364-5-8-5zm0 8c1.6568531 0 3-1.343147 3-3 0-1.6568534-1.3431469-3-3-3-1.6568535 0-3 1.3431466-3 3 0 1.656853 1.3431466 3 3 3z"/></svg>
diff --git a/core/themes/claro/images/icons/windowText/trash.svg b/core/themes/claro/images/icons/windowText/trash.svg
deleted file mode 100644
index 906c58cb6d..0000000000
--- a/core/themes/claro/images/icons/windowText/trash.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg height="16" viewBox="0 0 16 16" width="16" fill="windowText" xmlns="http://www.w3.org/2000/svg"><path d="m14.89965 2.9c-.1-.4-.2-.6-.2-.6-.1-.4-.4-.4-.8-.5l-2.3-.3c-.3 0-.3 0-.4-.3-.4-.7-.5-1.2-.9-1.2h-4.6c-.4 0-.5.5-.9 1.3-.1.2-.1.2-.4.3l-2.3.3c-.4 0-.7.1-.8.4 0 0-.1.2-.2.5-.1.6-.2.5.3.5h13.2c.5 0 .4.1.3-.4zm-1.5 1.8h-10.8c-.7 0-.8.1-.7.6l.8 10.1c.1.5.1.6.8.6h9.1c.6 0 .7-.1.8-.6l.8-10.1c0-.5-.1-.6-.8-.6z"/></svg>
diff --git a/core/themes/claro/images/spinner-ltr.gif b/core/themes/claro/images/spinner-ltr.gif
deleted file mode 100644
index c325da5fe3..0000000000
--- a/core/themes/claro/images/spinner-ltr.gif
+++ /dev/null
@@ -1,10 +0,0 @@
-GIF89a(    @ JT Fh刬Q3kV\C} P 6`FJ}n6u塺\!NETSCAPE2.0   !  ,    (  @` dihj6
-ѼSE1
-~D=C@^48Dh`KZr QՃIC~l2l8;0	9ujlnD~J	4vf>v,.~>]?B5PR&! !  ,     J "3"
-ɴgF0{վ:' T,`"3 E(	B"*U L#@! !  ,     J #((Dm1ftȢ'#Z	B1hJ u>C,% 7\*! !   ,     ;  $#ʊ.B1<}pH QZ1*k@8Tf"'mx4C !   ,     B  h&Fhv n^"/HHH3`#rh)xƄ3}  !  ,     J!8b!xD&2lcd3jzB5vG!ӌE6 |aX! !  ,     @#(&>St, :^@ e	l:hĹ)FbXh B3^G !   ,     <  A*)opj@)H,r68n H*BS 3	3G! !  ,     M!3y,£A%AFAY+l:aϨTHf3bEIA TZHVLL#) !   ,
-     G  AH4l[訴n 3 +y#+w4 I
-hrI!Fb+3Mɑ !  ,
-     _ c`d
-&F0ٚ r>z䀘'p/	()}^PPA:W\5jxxNC(~) \ '&! !  ,     ` #hg*+Uۤ EDB824 0K9RD0`CX ! O-]2HLiQ(N",+! !   ,     ;`<&hT1(@^@70 Brl:CEN	Ze}`H]  !   ,     B  h*2G0PDAAw(:"	xt&̨TpI^QmCQC !  ,     I!5c,1j4+Œ#,s;c`y\1`j[b'!m  !  ,     @#d$)Q@J"*	#<^
-%,Ȥh&8p!Z<avđA !   ,     <  9*x J G%+ƤrZ:Ph)~uy=)`35M! !  ,     N!hfʤ3baAYQ	Y
-+VE&kZX eɸ+^VH!=S$ޭ-FG ;
\ No newline at end of file
diff --git a/core/themes/claro/images/spinner-rtl.gif b/core/themes/claro/images/spinner-rtl.gif
deleted file mode 100644
index bfdc917d36..0000000000
--- a/core/themes/claro/images/spinner-rtl.gif
+++ /dev/null
@@ -1,12 +0,0 @@
-GIF89a(   V\R A JF۽h P EA|P6iK[z*nk^ 4!NETSCAPE2.0   !  ,    (  @!dihjEQ%ԸUL"1@ *h('Bā(X"=)á莬nQLwVb~ Pn"	~l*uLN/nh4,I*_a*Cm(TW! !  ,     B $PA$hz"!s-J"O$0$7T"ШtĒ.i;4(@@4  !   ,     <  D@@ A"g+6Fۏ$Ȥ$S&0O:$c8GG0tN! !  ,     J` \ $$]ct,"nEcV$  Ƥrl" t(F8% hJW%Vba"LHc! !  ,     U ]F:u,[̈ҵx?B 9rY#0@E@6HF p(:ԂKtj骾bsKz5! !  ,     g !a(jdViL$".@ "E !d*$ppB	#.1`"!2҈L6ON H)a4YDC\&! !  ,     f#1(Yi+-z$!Fp?B`D"p5CwSrC@4ф<8)x@TF(k"]X7KR i+%! !  ,     ?` HaR$ը8$	ltm#Gb#RTX:%
-dDEI@r%[*1 !   ,     E  d(d>c0p4c&(` 	2Ԉ(
-pJ*tDJ,"Z!MoT !  ,     G`  XKЬľoHA4Ųޜ"6`	<Q(S=*EzC !  ,     ? $J c
-*>MŌ./>]"H,;SJA!
-8G±'io#jJ,Ȳ* !   ,     <  3hp	 ĉ  al:aʜj@i.[! !  ,     I` H,hPsd.jDH!H:'&ZIdAԑa#ZcC7l]$@"IC !  ,
-     S cA!$hj2(ma>*ы	Zq`	 
-)ђ
-8{35-m
-7tWCTup! ! 
- ,
-     Y"dB堫b
-" ֦E|gA_`DFd(hP+$y-B@ŵ/akh,.V}}! !   ,     B  c1# B!l*;"<:xDNp2UBJ f#Β^C !  ,     B` $@(- 'wz)SG #K,Ib36C"AMYJIw6  !   ,     D  CbND h+&'*0P$4<	˦4XFa$ɦ'q`ZGShh ;
\ No newline at end of file
diff --git a/core/themes/claro/templates/classy/block/block--search-form-block.html.twig b/core/themes/claro/templates/classy/block/block--search-form-block.html.twig
index 667202fb6b..d1cda724ba 100644
--- a/core/themes/claro/templates/classy/block/block--search-form-block.html.twig
+++ b/core/themes/claro/templates/classy/block/block--search-form-block.html.twig
@@ -11,6 +11,7 @@
  *   - label_display: The display settings for the label.
  *   - provider: The module or other provider that provided this block plugin.
  *   - Block plugin specific settings will also be stored here.
+ * - in_preview: Whether the plugin is being rendered in preview mode.
  * - content: The content of this block.
  * - attributes: A list HTML attributes populated by modules, intended to
  *   be added to the main container tag of this template. Includes:
diff --git a/core/themes/claro/templates/classy/block/block--system-menu-block.html.twig b/core/themes/claro/templates/classy/block/block--system-menu-block.html.twig
index 407f8403fd..db3f9f8088 100644
--- a/core/themes/claro/templates/classy/block/block--system-menu-block.html.twig
+++ b/core/themes/claro/templates/classy/block/block--system-menu-block.html.twig
@@ -11,6 +11,7 @@
  *   - label_display: The display settings for the label.
  *   - provider: The module or other provider that provided this block plugin.
  *   - Block plugin specific settings will also be stored here.
+ * - in_preview: Whether the plugin is being rendered in preview mode.
  * - content: The content of this block.
  * - attributes: HTML attributes for the containing element.
  *   - id: A valid HTML ID and guaranteed unique.
diff --git a/core/themes/claro/templates/classy/block/block.html.twig b/core/themes/claro/templates/classy/block/block.html.twig
index fd3311be95..114d7c4de4 100644
--- a/core/themes/claro/templates/classy/block/block.html.twig
+++ b/core/themes/claro/templates/classy/block/block.html.twig
@@ -11,6 +11,7 @@
  *   - label_display: The display settings for the label.
  *   - provider: The module or other provider that provided this block plugin.
  *   - Block plugin specific settings will also be stored here.
+ * - in_preview: Whether the plugin is being rendered in preview mode.
  * - content: The content of this block.
  * - attributes: array of HTML attributes populated by modules, intended to
  *   be added to the main container tag of this template.
diff --git a/core/themes/olivero/css/base/base.css b/core/themes/olivero/css/base/base.css
index 67c53b7f8b..d7f37a5f50 100644
--- a/core/themes/olivero/css/base/base.css
+++ b/core/themes/olivero/css/base/base.css
@@ -46,10 +46,10 @@ body {
 }
 
 body.is-fixed {
-    position: fixed;
-    overflow: hidden;
-    width: 100%;
-  }
+  position: fixed;
+  overflow: hidden;
+  width: 100%;
+}
 
 [dir="rtl"] body {
   background-position: top right;
@@ -60,13 +60,13 @@ a {
 }
 
 a:hover {
-    color: var(--color--primary-50);
-  }
+  color: var(--color--primary-50);
+}
 
 a:focus {
-    outline: solid 2px currentColor;
-    outline-offset: 2px;
-  }
+  outline: solid 2px currentColor;
+  outline-offset: 2px;
+}
 
 button {
   font-family: inherit;
@@ -92,11 +92,11 @@ h1 {
 
 @media (min-width: 43.75rem) {
 
-h1 {
+  h1 {
     font-size: 3.75rem;
     line-height: var(--sp4);
-}
   }
+}
 
 h2 {
   letter-spacing: -0.01em;
@@ -106,11 +106,11 @@ h2 {
 
 @media (min-width: 43.75rem) {
 
-h2 {
+  h2 {
     font-size: 2.25rem;
     line-height: var(--sp3);
-}
   }
+}
 
 h3 {
   font-size: 1.25rem;
@@ -119,11 +119,11 @@ h3 {
 
 @media (min-width: 43.75rem) {
 
-h3 {
+  h3 {
     font-size: 1.5rem;
     line-height: var(--sp2);
-}
   }
+}
 
 h4 {
   font-size: 1.125rem;
@@ -146,8 +146,7 @@ h3,
 h4,
 h5,
 h6 {
-  margin-top: var(--sp);
-  margin-bottom: var(--sp);
+  margin-block: var(--sp);
   color: var(--color-text-neutral-loud);
   font-family: var(--font-sans);
   font-weight: bold;
@@ -155,44 +154,22 @@ h6 {
 
 @media (min-width: 43.75rem) {
 
-h1,
-h2,
-h3,
-h4,
-h5,
-h6 {
-    margin-top: var(--sp2);
-    margin-bottom: var(--sp2);
-}
+  h1,
+  h2,
+  h3,
+  h4,
+  h5,
+  h6 {
+    margin-block: var(--sp2);
   }
-
-[dir="ltr"] ul {
-  margin-left: 1.5em;
-}
-
-[dir="rtl"] ul {
-  margin-right: 1.5em;
-}
-
-[dir="ltr"] ul {
-  margin-right: 0;
-}
-
-[dir="rtl"] ul {
-  margin-left: 0;
-}
-
-[dir="ltr"] ul {
-  padding-left: 0;
-}
-
-[dir="rtl"] ul {
-  padding-right: 0;
 }
 
 ul {
-  margin-top: 0.25em;
-  margin-bottom: 0.25em;
+  margin-block-start: 0.25em;
+  margin-block-end: 0.25em;
+  margin-inline-start: 1.5em;
+  margin-inline-end: 0;
+  padding-inline-start: 0;
   list-style-type: disc;
   list-style-image: none;
 }
diff --git a/core/themes/olivero/css/base/variables.css b/core/themes/olivero/css/base/variables.css
index 37244ee497..44e3761454 100644
--- a/core/themes/olivero/css/base/variables.css
+++ b/core/themes/olivero/css/base/variables.css
@@ -149,6 +149,7 @@
   --color--primary-40: hsl(var(--color--primary-hue), var(--color--primary-saturation), calc(1% * (var(--color--primary-lightness) - (0.24 * var(--color--primary-lightness))))); /* Blue dark */
   --color--primary-50: hsl(var(--color--primary-hue), var(--color--primary-saturation), calc(1% * var(--color--primary-lightness))); /* Blue medium */
   --color--primary-60: hsl(var(--color--primary-hue), var(--color--primary-saturation), calc(1% * (var(--color--primary-lightness) + (0.24 * (100 - var(--color--primary-lightness)))))); /* Blue bright */
+  --color--primary-80: hsl(var(--color--primary-hue), var(--color--primary-saturation), calc(1% * (var(--color--primary-lightness) + (0.85 * (100 - var(--color--primary-lightness)))))); /* Blue very bright */
 
   /**
    * Variables specific to text.
diff --git a/core/themes/olivero/css/base/variables.pcss.css b/core/themes/olivero/css/base/variables.pcss.css
index 37973164c3..59a4824f86 100644
--- a/core/themes/olivero/css/base/variables.pcss.css
+++ b/core/themes/olivero/css/base/variables.pcss.css
@@ -110,6 +110,7 @@
   --color--primary-40: hsl(var(--color--primary-hue), var(--color--primary-saturation), calc(1% * (var(--color--primary-lightness) - (0.24 * var(--color--primary-lightness))))); /* Blue dark */
   --color--primary-50: hsl(var(--color--primary-hue), var(--color--primary-saturation), calc(1% * var(--color--primary-lightness))); /* Blue medium */
   --color--primary-60: hsl(var(--color--primary-hue), var(--color--primary-saturation), calc(1% * (var(--color--primary-lightness) + (0.24 * (100 - var(--color--primary-lightness)))))); /* Blue bright */
+  --color--primary-80: hsl(var(--color--primary-hue), var(--color--primary-saturation), calc(1% * (var(--color--primary-lightness) + (0.85 * (100 - var(--color--primary-lightness)))))); /* Blue very bright */
 
   /**
    * Variables specific to text.
diff --git a/core/themes/olivero/css/components/action-links.css b/core/themes/olivero/css/components/action-links.css
index 57f05a1536..546b8da323 100644
--- a/core/themes/olivero/css/components/action-links.css
+++ b/core/themes/olivero/css/components/action-links.css
@@ -16,43 +16,21 @@
 /* Grid related breakpoints */
 /* Grid shifts from 6 to 14 columns. */
 /* Width of the entire grid maxes out. */
-[dir="ltr"] .action-links {
-  margin-left: 0;
-}
-[dir="rtl"] .action-links {
-  margin-right: 0;
-}
-[dir="ltr"] .action-links {
-  margin-right: 0;
-}
-[dir="rtl"] .action-links {
-  margin-left: 0;
-}
-[dir="ltr"] .action-links {
-  padding-left: 0;
-}
-[dir="rtl"] .action-links {
-  padding-right: 0;
-}
-[dir="ltr"] .action-links {
-  padding-right: 0;
-}
-[dir="rtl"] .action-links {
-  padding-left: 0;
-}
 .action-links {
-  margin-top: 0;
-  margin-bottom: 0;
-  padding-top: 0;
-  padding-bottom: 0;
+  margin-block: 0;
+  margin-inline-start: 0;
+  margin-inline-end: 0;
+  padding-block: 0;
+  padding-inline-start: 0;
+  padding-inline-end: 0;
   list-style: none;
 }
 .action-links li {
-    display: inline-block;
-  }
+  display: inline-block;
+}
 .action-links li a {
-      color: var(--color-text-primary-medium);
-    }
+  color: var(--color-text-primary-medium);
+}
 .action-links-item {
   display: inline-block;
 }
diff --git a/core/themes/olivero/css/components/ajax-progress.module.css b/core/themes/olivero/css/components/ajax-progress.module.css
index a0af93cb06..7e322111cd 100644
--- a/core/themes/olivero/css/components/ajax-progress.module.css
+++ b/core/themes/olivero/css/components/ajax-progress.module.css
@@ -31,29 +31,15 @@
  * Throbber.
  */
 
-[dir="ltr"] .ajax-progress-throbber {
-  margin-left: var(--sp0-5);
-}
-
-[dir="rtl"] .ajax-progress-throbber {
-  margin-right: var(--sp0-5);
-}
-
-[dir="ltr"] .ajax-progress-throbber {
-  margin-right: var(--sp0-5);
-}
-
-[dir="rtl"] .ajax-progress-throbber {
-  margin-left: var(--sp0-5);
-}
-
 .ajax-progress-throbber {
   position: relative;
   display: inline-flex;
   align-content: center;
   height: 1.125rem;
-  margin-top: -0.1875rem;
-  margin-bottom: 0;
+  margin-block-start: -0.1875rem;
+  margin-block-end: 0;
+  margin-inline-start: var(--sp0-5);
+  margin-inline-end: var(--sp0-5);
   vertical-align: middle;
   white-space: nowrap;
   line-height: 1.125rem;
@@ -66,16 +52,9 @@
   border-color: var(--color--primary-50) transparent var(--color--primary-50) var(--color--primary-50);
 }
 
-[dir="ltr"] .ajax-progress-throbber .message {
-  padding-left: var(--sp0-5);
-}
-
-[dir="rtl"] .ajax-progress-throbber .message {
-  padding-right: var(--sp0-5);
-}
-
 .ajax-progress-throbber .message {
   display: inline-block;
+  padding-inline-start: var(--sp0-5);
   font-size: var(--font-size-s);
   font-weight: 400;
 }
@@ -84,18 +63,11 @@
  * Full screen throbber.
  */
 
-[dir="ltr"] .ajax-progress-fullscreen {
-  left: 50%;
-}
-
-[dir="rtl"] .ajax-progress-fullscreen {
-  right: 50%;
-}
-
 .ajax-progress-fullscreen {
   position: fixed;
   z-index: 1000;
-  top: 50%;
+  inset-block-start: 50%;
+  inset-inline-start: 50%;
   width: 3.5rem;
   height: 3.5rem;
   margin: -1.75rem;
@@ -105,23 +77,16 @@
   box-shadow: 0 0.25rem 0.625rem rgba(34, 35, 48, 0.1); /* LTR */
 }
 
-[dir="ltr"] .ajax-progress-fullscreen:before {
-    left: 50%;
-}
-
-[dir="rtl"] .ajax-progress-fullscreen:before {
-    right: 50%;
-}
-
 .ajax-progress-fullscreen:before {
-    position: absolute;
-    top: 50%;
-    width: 1.75rem;
-    height: 1.75rem;
-    margin: -0.875rem;
-    content: "";
-    border-width: 3px;
-  }
+  position: absolute;
+  inset-block-start: 50%;
+  inset-inline-start: 50%;
+  width: 1.75rem;
+  height: 1.75rem;
+  margin: -0.875rem;
+  content: "";
+  border-width: 3px;
+}
 
 [dir="rtl"] .ajax-progress-fullscreen {
   box-shadow: 0 -0.25rem 0.625rem rgba(34, 35, 48, 0.1);
@@ -144,12 +109,8 @@
  * have a large margin set.
  */
 
-html[dir="ltr"].js .button:not(.js-hide) + .ajax-progress-throbber {
-  margin-left: 0;
-}
-
-html[dir="rtl"].js .button:not(.js-hide) + .ajax-progress-throbber {
-  margin-right: 0;
+html.js .button:not(.js-hide) + .ajax-progress-throbber {
+  margin-inline-start: 0;
 }
 
 @keyframes olivero-throbber {
diff --git a/core/themes/olivero/css/components/autocomplete-loading.module.css b/core/themes/olivero/css/components/autocomplete-loading.module.css
index a10bd91675..731cc9aa94 100644
--- a/core/themes/olivero/css/components/autocomplete-loading.module.css
+++ b/core/themes/olivero/css/components/autocomplete-loading.module.css
@@ -31,15 +31,8 @@
   --autocomplete-icon-right-offset: var(--sp1);
 }
 
-html[dir="ltr"].js .form-autocomplete {
-  padding-right: var(--sp3);
-}
-
-html[dir="rtl"].js .form-autocomplete {
-  padding-left: var(--sp3);
-}
-
 html.js .form-autocomplete {
+  padding-inline-end: var(--sp3);
   background-color: var(--color--white);
   background-image: var(--autocomplete-search-icon-url);
   background-repeat: no-repeat;
@@ -47,12 +40,12 @@ html.js .form-autocomplete {
 }
 
 html.js .form-autocomplete:disabled {
-    background-color: var(--color--gray-100);
-  }
+  background-color: var(--color--gray-100);
+}
 
 html.js .form-autocomplete.ui-autocomplete-loading {
-    background: var(--autocomplete-throbber-icon-url) no-repeat right var(--autocomplete-icon-right-offset) center;
-  }
+  background: var(--autocomplete-throbber-icon-url) no-repeat right var(--autocomplete-icon-right-offset) center;
+}
 
 html.js[dir="rtl"] .form-autocomplete {
   background-color: var(--color--white);
@@ -62,12 +55,12 @@ html.js[dir="rtl"] .form-autocomplete {
 }
 
 html.js[dir="rtl"] .form-autocomplete:disabled {
-    background-color: var(--color--gray-100);
-  }
+  background-color: var(--color--gray-100);
+}
 
 html.js[dir="rtl"] .form-autocomplete.ui-autocomplete-loading {
-    background: var(--autocomplete-throbber-icon-url) no-repeat left var(--autocomplete-icon-right-offset) center;
-  }
+  background: var(--autocomplete-throbber-icon-url) no-repeat left var(--autocomplete-icon-right-offset) center;
+}
 
 /* IE11 does not animate inline SVG. */
 
diff --git a/core/themes/olivero/css/components/block.css b/core/themes/olivero/css/components/block.css
index 51f9201362..de2ab639f0 100644
--- a/core/themes/olivero/css/components/block.css
+++ b/core/themes/olivero/css/components/block.css
@@ -24,8 +24,7 @@
 /* Width of the entire grid maxes out. */
 
 .block__title {
-  margin-top: 0;
-  margin-bottom: var(--sp);
+  margin-block: 0 var(--sp);
   letter-spacing: 0.02em;
   color: var(--color-text-neutral-soft);
   font-size: var(--font-size-s);
diff --git a/core/themes/olivero/css/components/book.css b/core/themes/olivero/css/components/book.css
index 72851a7272..cfbf2857d4 100644
--- a/core/themes/olivero/css/components/book.css
+++ b/core/themes/olivero/css/components/book.css
@@ -23,46 +23,17 @@
 
 /* Width of the entire grid maxes out. */
 
-[dir="ltr"] .book-pager {
-  margin-left: 0;
-}
-
-[dir="rtl"] .book-pager {
-  margin-right: 0;
-}
-
-[dir="ltr"] .book-pager {
-  margin-right: 0;
-}
-
-[dir="rtl"] .book-pager {
-  margin-left: 0;
-}
-
-[dir="ltr"] .book-pager {
-  padding-left: 0;
-}
-
-[dir="rtl"] .book-pager {
-  padding-right: 0;
-}
-
-[dir="ltr"] .book-pager {
-  padding-right: 0;
-}
-
-[dir="rtl"] .book-pager {
-  padding-left: 0;
-}
-
 .book-pager {
   display: flex;
   flex-wrap: wrap;
-  margin-top: 0 var(--sp);
-  padding-top: 0;
-  padding-bottom: var(--sp);
+  margin-block-start: 0 var(--sp);
+  margin-inline-start: 0;
+  margin-inline-end: 0;
+  padding-block: 0 var(--sp);
+  padding-inline-start: 0;
+  padding-inline-end: 0;
   list-style: none;
-  border-bottom: solid 1px var(--color--primary-40);
+  border-block-end: solid 1px var(--color--primary-40);
 }
 
 .book-pager__item {
@@ -71,36 +42,25 @@
 
 @media (min-width: 31.25rem) {
 
-.book-pager__item {
+  .book-pager__item {
     flex: 0 0 33.33%;
-}
   }
+}
 
 @media (min-width: 31.25rem) {
 
-.book-pager__item--center {
+  .book-pager__item--center {
     text-align: center;
-}
   }
+}
 
 @media (min-width: 31.25rem) {
 
-[dir="ltr"] .book-pager__item--next {
-    margin-left: auto;
-  }
-
-[dir="rtl"] .book-pager__item--next {
-    margin-right: auto;
-  }
-
-[dir="ltr"] .book-pager__item--next {
-    text-align: right;
-  }
-
-[dir="rtl"] .book-pager__item--next {
-    text-align: left;
-  }
+  .book-pager__item--next {
+    margin-inline-start: auto;
+    text-align: end;
   }
+}
 
 .book-pager__link {
   display: inline-flex;
@@ -112,124 +72,50 @@
   font-weight: 600;
 }
 
-[dir="ltr"] .book-pager__link--previous:before {
-    margin-right: 0.25em;
-}
-
-[dir="rtl"] .book-pager__link--previous:before {
-    margin-left: 0.25em;
-}
-
-[dir="ltr"] .book-pager__link--previous:before {
-    border-left: solid 0.1875rem currentColor;
-}
-
-[dir="rtl"] .book-pager__link--previous:before {
-    border-right: solid 0.1875rem currentColor;
-}
-
 .book-pager__link--previous:before {
-    display: block;
-    width: var(--sp0-5);
-    height: var(--sp0-5);
-    content: "";
-    transform: rotate(-45deg);
-    border-top: solid 0.1875rem currentColor;
-  }
-
-[dir="ltr"] .book-pager__link--next:after {
-    margin-left: 0.25em;
-}
-
-[dir="rtl"] .book-pager__link--next:after {
-    margin-right: 0.25em;
-}
-
-[dir="ltr"] .book-pager__link--next:after {
-    border-left: solid 0.1875rem currentColor;
-}
-
-[dir="rtl"] .book-pager__link--next:after {
-    border-right: solid 0.1875rem currentColor;
+  display: block;
+  width: var(--sp0-5);
+  height: var(--sp0-5);
+  margin-inline-end: 0.25em;
+  content: "";
+  transform: rotate(-45deg);
+  border-block-start: solid 0.1875rem currentColor;
+  border-inline-start: solid 0.1875rem currentColor;
 }
 
 .book-pager__link--next:after {
-    display: block;
-    width: var(--sp0-5);
-    height: var(--sp0-5);
-    content: "";
-    transform: rotate(135deg);
-    border-top: solid 0.1875rem currentColor;
-  }
-
-[dir="ltr"] .book-navigation__menu {
-  margin-left: 0;
-}
-
-[dir="rtl"] .book-navigation__menu {
-  margin-right: 0;
-}
-
-[dir="ltr"] .book-navigation__menu {
-  margin-right: 0;
-}
-
-[dir="rtl"] .book-navigation__menu {
-  margin-left: 0;
-}
-
-[dir="ltr"] .book-navigation__menu {
-  padding-left: 0;
-}
-
-[dir="rtl"] .book-navigation__menu {
-  padding-right: 0;
-}
-
-[dir="ltr"] .book-navigation__menu {
-  padding-right: 0;
-}
-
-[dir="rtl"] .book-navigation__menu {
-  padding-left: 0;
+  display: block;
+  width: var(--sp0-5);
+  height: var(--sp0-5);
+  margin-inline-start: 0.25em;
+  content: "";
+  transform: rotate(135deg);
+  border-block-start: solid 0.1875rem currentColor;
+  border-inline-start: solid 0.1875rem currentColor;
 }
 
 .book-navigation__menu {
-  margin-top: var(--sp2);
-  margin-bottom: var(--sp2);
-  padding-top: 0;
-  padding-bottom: 0;
+  margin-block: var(--sp2);
+  margin-inline-start: 0;
+  margin-inline-end: 0;
+  padding-block: 0;
+  padding-inline-start: 0;
+  padding-inline-end: 0;
   list-style: none;
 }
 
-[dir="ltr"] .book-navigation__item {
-  padding-left: 0;
-}
-
-[dir="rtl"] .book-navigation__item {
-  padding-right: 0;
-}
-
-[dir="ltr"] .book-navigation__item {
-  padding-right: 0;
-}
-
-[dir="rtl"] .book-navigation__item {
-  padding-left: 0;
-}
-
 .book-navigation__item {
-  margin-top: 0;
-  margin-bottom: 0;
-  padding-top: 0;
-  padding-bottom: 0;
+  margin-block: 0;
+  padding-block: 0;
+  padding-inline-start: 0;
+  padding-inline-end: 0;
   list-style: none;
 }
 
 [dir="rtl"] .book-pager__link--previous:before {
-    transform: rotate(45deg);
-  }
+  transform: rotate(45deg);
+}
 
 [dir="rtl"] .book-pager__link--next:after {
-    transform: rotate(-135deg);
-  }
+  transform: rotate(-135deg);
+}
diff --git a/core/themes/olivero/css/components/breadcrumb.css b/core/themes/olivero/css/components/breadcrumb.css
index 4e6fe9b39d..ab7ddd076f 100644
--- a/core/themes/olivero/css/components/breadcrumb.css
+++ b/core/themes/olivero/css/components/breadcrumb.css
@@ -32,210 +32,103 @@
   /* Shadow on the right side of breadcrumbs for narrow screens. */
 }
 
-[dir="ltr"] .breadcrumb:after {
-    right: calc(var(--sp1) * -1);
-}
-
-[dir="rtl"] .breadcrumb:after {
-    left: calc(var(--sp1) * -1);
-}
-
 .breadcrumb:after {
-    position: absolute;
-    top: 0;
-    width: var(--sp3);
-    height: var(--sp2);
-    content: "";
-    background: linear-gradient(to left, var(--color--white) 0%, rgba(255, 255, 255, 0) 100%); /* LTR */
-  }
+  position: absolute;
+  inset-block-start: 0;
+  inset-inline-end: calc(var(--sp1) * -1);
+  width: var(--sp3);
+  height: var(--sp2);
+  content: "";
+  background: linear-gradient(to left, var(--color--white) 0%, rgba(255, 255, 255, 0) 100%); /* LTR */
+}
 
 @media (min-width: 62.5rem) {
 
-.breadcrumb:after {
-      content: none;
+  .breadcrumb:after {
+    content: none;
   }
-    }
+}
 
 @media (min-width: 62.5rem) {
 
-.breadcrumb {
+  .breadcrumb {
     position: static;
-}
   }
+}
 
 [dir="rtl"] .breadcrumb:after {
   background: linear-gradient(to right, var(--color--white) 0%, rgba(255, 255, 255, 0) 100%);
 }
 
-[dir="ltr"] .breadcrumb__content {
-  margin-left: calc(var(--sp0-5) * -1);
-}
-
-[dir="rtl"] .breadcrumb__content {
-  margin-right: calc(var(--sp0-5) * -1);
-}
-
-[dir="ltr"] .breadcrumb__content {
-  margin-right: calc(var(--sp1) * -1);
-}
-
-[dir="rtl"] .breadcrumb__content {
-  margin-left: calc(var(--sp1) * -1);
-}
-
-[dir="ltr"] .breadcrumb__content {
-  padding-left: var(--sp0-5);
-}
-
-[dir="rtl"] .breadcrumb__content {
-  padding-right: var(--sp0-5);
-}
-
 .breadcrumb__content {
   overflow: auto;
-  margin-top: calc(var(--sp0-5) * -1);
-  margin-bottom: calc(var(--sp0-5) * -1);
-  padding-top: var(--sp0-5);
-  padding-bottom: var(--sp0-5);
+  margin-block-start: calc(var(--sp0-5) * -1);
+  margin-block-end: calc(var(--sp0-5) * -1);
+  margin-inline-start: calc(var(--sp0-5) * -1);
+  margin-inline-end: calc(var(--sp1) * -1);
+  padding-block-start: var(--sp0-5);
+  padding-block-end: var(--sp0-5);
+  padding-inline-start: var(--sp0-5);
   -webkit-overflow-scrolling: touch;
 }
 
 @media (min-width: 62.5rem) {
 
-[dir="ltr"] .breadcrumb__content {
-    margin-right: 0;
+  .breadcrumb__content {
+    margin-inline-end: 0;
   }
-
-[dir="rtl"] .breadcrumb__content {
-    margin-left: 0;
-  }
-  }
-
-[dir="ltr"] .breadcrumb__list {
-  margin-left: calc(var(--sp1) * -1);
-}
-
-[dir="rtl"] .breadcrumb__list {
-  margin-right: calc(var(--sp1) * -1);
-}
-
-[dir="ltr"] .breadcrumb__list {
-  margin-right: calc(var(--sp1) * -1);
-}
-
-[dir="rtl"] .breadcrumb__list {
-  margin-left: calc(var(--sp1) * -1);
-}
-
-[dir="ltr"] .breadcrumb__list {
-  padding-left: var(--sp1);
-}
-
-[dir="rtl"] .breadcrumb__list {
-  padding-right: var(--sp1);
-}
-
-[dir="ltr"] .breadcrumb__list {
-  padding-right: 0;
-}
-
-[dir="rtl"] .breadcrumb__list {
-  padding-left: 0;
 }
 
 .breadcrumb__list {
   overflow-x: auto;
   width: max-content;
-  margin-top: 0;
-  margin-bottom: 0;
-  padding-top: 0;
-  padding-bottom: var(--sp1);
+  margin-block: 0;
+  margin-inline-start: calc(var(--sp1) * -1);
+  margin-inline-end: calc(var(--sp1) * -1);
+  padding-block: 0 var(--sp1);
+  padding-inline-start: var(--sp1);
+  padding-inline-end: 0;
   list-style: none;
   white-space: nowrap;
 }
 
 @media (min-width: 62.5rem) {
 
-[dir="ltr"] .breadcrumb__list {
-    margin-left: 0;
-  }
-
-[dir="rtl"] .breadcrumb__list {
-    margin-right: 0;
-  }
-
-[dir="ltr"] .breadcrumb__list {
-    margin-right: 0;
-  }
-
-[dir="rtl"] .breadcrumb__list {
-    margin-left: 0;
-  }
-
-[dir="ltr"] .breadcrumb__list {
-    padding-left: 0;
-  }
-
-[dir="rtl"] .breadcrumb__list {
-    padding-right: 0;
-  }
-
-.breadcrumb__list {
+  .breadcrumb__list {
     overflow: visible;
-    padding-bottom: 0;
+    margin-inline-start: 0;
+    margin-inline-end: 0;
+    padding-block-end: 0;
+    padding-inline-start: 0;
     white-space: normal;
-}
   }
+}
 
 .breadcrumb__item {
   display: inline-block;
 }
 
-[dir="ltr"] .breadcrumb__item:nth-child(n+2):before {
-    margin-left: 1rem;
-    margin-right: 1.25rem;
-}
-
-[dir="rtl"] .breadcrumb__item:nth-child(n+2):before {
-    margin-right: 1rem;
-    margin-left: 1.25rem;
-}
-
-[dir="ltr"] .breadcrumb__item:nth-child(n+2):before {
-    border-right: 2px solid var(--color--gray-45);
-}
-
-[dir="rtl"] .breadcrumb__item:nth-child(n+2):before {
-    border-left: 2px solid var(--color--gray-45);
-}
-
 .breadcrumb__item:nth-child(n+2):before {
-    display: inline-block;
-    width: 0.5rem;
-    height: 0.5rem;
-    content: "";
-    transform: rotate(45deg); /* LTR */
-    border-top: 2px solid var(--color--gray-45);
-  }
-
-[dir="ltr"] .breadcrumb__item:last-child {
-    margin-right: var(--sp3);
+  display: inline-block;
+  width: 0.5rem;
+  height: 0.5rem;
+  margin-inline: 1rem 1.25rem;
+  content: "";
+  transform: rotate(45deg); /* LTR */
+  border-block-start: 2px solid var(--color--gray-45);
+  border-inline-end: 2px solid var(--color--gray-45);
 }
 
-[dir="rtl"] .breadcrumb__item:last-child {
-    margin-left: var(--sp3);
+.breadcrumb__item:last-child {
+  margin-inline-end: var(--sp3);
 }
 
 @media (min-width: 62.5rem) {
 
-[dir="ltr"] .breadcrumb__item:last-child {
-      margin-right: 0;
+  .breadcrumb__item:last-child {
+    margin-inline-end: 0;
   }
-
-[dir="rtl"] .breadcrumb__item:last-child {
-      margin-left: 0;
-  }
-    }
+}
 
 [dir="rtl"] .breadcrumb__item:nth-child(n+2):before {
   transform: rotate(-45deg);
@@ -247,6 +140,6 @@
 }
 
 .breadcrumb__link:hover,
-  .breadcrumb__link:focus {
-    text-decoration: underline;
-  }
+.breadcrumb__link:focus {
+  text-decoration: underline;
+}
diff --git a/core/themes/olivero/css/components/button.css b/core/themes/olivero/css/components/button.css
index 23f4d1f53f..702a5902b2 100644
--- a/core/themes/olivero/css/components/button.css
+++ b/core/themes/olivero/css/components/button.css
@@ -23,31 +23,14 @@
 
 /* Width of the entire grid maxes out. */
 
-[dir="ltr"] .button {
-  margin-left: 0;
-}
-
-[dir="rtl"] .button {
-  margin-right: 0;
-}
-
-[dir="ltr"] .button {
-  margin-right: var(--sp1);
-}
-
-[dir="rtl"] .button {
-  margin-left: var(--sp1);
-}
-
 .button {
   display: inline-block;
   height: var(--sp3);
-  margin-top: var(--sp1);
-  margin-bottom: var(--sp1);
-  padding-top: calc((var(--sp3) - var(--line-height-s)) / 2);
-  padding-bottom: calc((var(--sp3) - var(--line-height-s)) / 2);
-  padding-left: var(--sp1-5);
-  padding-right: var(--sp1-5);
+  margin-block: var(--sp1);
+  margin-inline-start: 0;
+  margin-inline-end: var(--sp1);
+  padding-block: calc((var(--sp3) - var(--line-height-s)) / 2);
+  padding-inline: var(--sp1-5);
   cursor: pointer;
   text-align: center;
   text-decoration: none;
@@ -64,30 +47,30 @@
 }
 
 .button:hover,
-  .button:focus {
-    text-decoration: none;
-    color: var(--color-text-primary-loud);
-    border: solid 2px currentColor;
-    background: none;
-    font-weight: 700;
-  }
+.button:focus {
+  text-decoration: none;
+  color: var(--color-text-primary-loud);
+  border: solid 2px currentColor;
+  background: none;
+  font-weight: 700;
+}
 
 .button:focus {
-    outline: 2px solid var(--color--primary-60);
-    outline-offset: 2px;
-  }
+  outline: 2px solid var(--color--primary-60);
+  outline-offset: 2px;
+}
 
 .button:active {
-    color: var(--color-text-primary-medium);
-    border-color: currentColor;
-  }
+  color: var(--color-text-primary-medium);
+  border-color: currentColor;
+}
 
 .button:disabled,
-  .button.is-disabled {
-    cursor: default;
-    color: var(--color--gray-90);
-    border-color: var(--color--gray-90);
-  }
+.button.is-disabled {
+  cursor: default;
+  color: var(--color--gray-90);
+  border-color: var(--color--gray-90);
+}
 
 /*
     IE11 doesn't work properly on button elements so we only do
@@ -96,48 +79,29 @@
 
 @supports (display: inline-flex) {
 
-.button {
+  .button {
     display: inline-flex;
     align-items: center;
 
     /* Top padding accounts for font not being vertically centered within line-height. */
-    padding-top: 1px;
-    padding-bottom: 0;
-    padding-left: var(--sp1-5);
-    padding-right: var(--sp1-5);
+    padding-block: 1px 0;
+    padding-inline: var(--sp1-5);
     line-height: var(--line-height-s);
-}
   }
-
-/* No margin if is part of a menu. */
-
-[dir="ltr"] .menu .button {
-  margin-left: 0;
-}
-
-[dir="rtl"] .menu .button {
-  margin-right: 0;
-}
-
-[dir="ltr"] .menu .button {
-  margin-right: 0;
 }
 
-[dir="rtl"] .menu .button {
-  margin-left: 0;
-}
+/* No margin if is part of a menu. */
 
 .menu .button {
-  margin-top: 0;
-  margin-bottom: 0;
+  margin-block: 0;
+  margin-inline-start: 0;
+  margin-inline-end: 0;
 }
 
 .button--small {
   height: var(--sp2-5);
-  padding-top: calc((var(--sp2-5) - var(--line-height-s)) / 2);
-  padding-bottom: calc((var(--sp2-5) - var(--line-height-s)) / 2);
-  padding-left: var(--sp);
-  padding-right: var(--sp);
+  padding-block: calc((var(--sp2-5) - var(--line-height-s)) / 2);
+  padding-inline: var(--sp);
   font-size: var(--font-size-base);
   line-height: normal;
 }
@@ -148,52 +112,38 @@
 }
 
 .button--primary:hover,
-  .button--primary:focus {
-    color: var(--color--white);
-    border-color: var(--color--primary-30);
-    background-color: var(--color--primary-30);
-  }
+.button--primary:focus {
+  color: var(--color--white);
+  border-color: var(--color--primary-30);
+  background-color: var(--color--primary-30);
+}
 
 .button--primary:active {
-    color: var(--color--white);
-    background-color: var(--color--primary-40);
-  }
+  color: var(--color--white);
+  background-color: var(--color--primary-40);
+}
 
 .button--primary:disabled,
-  .button--primary.is-disabled {
-    color: var(--color--white);
-    background-color: var(--color--gray-90);
-  }
+.button--primary.is-disabled {
+  color: var(--color--white);
+  background-color: var(--color--gray-90);
+}
 
 .button--icon-back {
   display: inline-flex;
   align-items: center;
 }
 
-[dir="ltr"] .button--icon-back:before {
-    margin-right: 0.5em;
-}
-
-[dir="rtl"] .button--icon-back:before {
-    margin-left: 0.5em;
-}
-
-[dir="ltr"] .button--icon-back:before {
-    border-left: solid 2px currentColor;
-}
-
-[dir="rtl"] .button--icon-back:before {
-    border-right: solid 2px currentColor;
-}
-
 .button--icon-back:before {
-    display: block;
-    width: 0.5em;
-    height: 0.5em;
-    content: "";
-    transform: rotate(45deg); /* LTR */
-    border-bottom: solid 2px currentColor;
-  }
+  display: block;
+  width: 0.5em;
+  height: 0.5em;
+  margin-inline-end: 0.5em;
+  content: "";
+  transform: rotate(45deg); /* LTR */
+  border-block-end: solid 2px currentColor;
+  border-inline-start: solid 2px currentColor;
+}
 
 [dir="rtl"] .button--icon-back:before {
   transform: rotate(-45deg);
diff --git a/core/themes/olivero/css/components/cke-dialog.css b/core/themes/olivero/css/components/cke-dialog.css
index 6b067c6991..fbd6f2c021 100644
--- a/core/themes/olivero/css/components/cke-dialog.css
+++ b/core/themes/olivero/css/components/cke-dialog.css
@@ -16,5 +16,5 @@ select.cke_dialog_ui_input_select {
 }
 
 select.cke_dialog_ui_input_select::-ms-expand {
-    display: block;
-  }
+  display: block;
+}
diff --git a/core/themes/olivero/css/components/color-picker.css b/core/themes/olivero/css/components/color-picker.css
index 7cde429fa6..efaae9a0e1 100644
--- a/core/themes/olivero/css/components/color-picker.css
+++ b/core/themes/olivero/css/components/color-picker.css
@@ -11,6 +11,6 @@
  */
 
 [data-drupal-selector="olivero-color-picker"] input[type="color"] {
-    margin-left: 0.8125rem;
-    vertical-align: bottom;
-  }
+  margin-left: 0.8125rem;
+  vertical-align: bottom;
+}
diff --git a/core/themes/olivero/css/components/comments.css b/core/themes/olivero/css/components/comments.css
index 3f8ff293a9..648c8dd9a0 100644
--- a/core/themes/olivero/css/components/comments.css
+++ b/core/themes/olivero/css/components/comments.css
@@ -29,59 +29,30 @@
 }
 
 .comment--level-1 {
-  border-top: 2px solid var(--color--gray-95);
+  border-block-start: 2px solid var(--color--gray-95);
 }
 
 .comment--level-1 ~ .comment--level-1 {
-    margin-top: var(--sp2);
-  }
+  margin-block-start: var(--sp2);
+}
 
 .comments__title {
   display: flex;
   align-items: center;
-  margin-top: 0;
-}
-
-[dir="ltr"] .comments__count {
-  margin-left: var(--sp);
-}
-
-[dir="rtl"] .comments__count {
-  margin-right: var(--sp);
-}
-
-[dir="ltr"] .comments__count {
-  margin-right: var(--sp);
-}
-
-[dir="rtl"] .comments__count {
-  margin-left: var(--sp);
-}
-
-[dir="ltr"] .comments__count {
-  padding-left: 0.3125rem;
-}
-
-[dir="rtl"] .comments__count {
-  padding-right: 0.3125rem;
-}
-
-[dir="ltr"] .comments__count {
-  padding-right: 0.3125rem;
-}
-
-[dir="rtl"] .comments__count {
-  padding-left: 0.3125rem;
+  margin-block-start: 0;
 }
 
 .comments__count {
   position: relative;
   display: inline-block;
   min-width: 2.125rem;
-  margin-top: 0;
-  margin-bottom: var(--sp0-5);
-  padding-top: 0;
-  padding-bottom: 0;
+  margin-block-start: 0;
+  margin-block-end: var(--sp0-5);
+  margin-inline-start: var(--sp);
+  margin-inline-end: var(--sp);
+  padding-block: 0;
+  padding-inline-start: 0.3125rem;
+  padding-inline-end: 0.3125rem;
   text-align: center;
   color: var(--color--white);
   border-radius: 2px;
@@ -90,85 +61,55 @@
   line-height: 1.3125rem;
 }
 
-[dir="ltr"] .comments__count:after {
-    left: 0.5rem;
-}
-
-[dir="rtl"] .comments__count:after {
-    right: 0.5rem;
-}
-
-[dir="ltr"] .comments__count:after {
-    border-right: 0.5rem solid transparent;
-}
-
-[dir="rtl"] .comments__count:after {
-    border-left: 0.5rem solid transparent;
-}
-
 .comments__count:after {
-    position: absolute;
-    bottom: -0.4375rem;
-    width: 0;
-    height: 0;
-    content: "";
-    border-top: 0.4375rem solid var(--color--primary-40);
-  }
-
-.comment-form {
-  padding-bottom: var(--sp2);
-}
-
-[dir="ltr"] .add-comment__form {
-  padding-left: 0;
-}
-
-[dir="rtl"] .add-comment__form {
-  padding-right: 0;
+  position: absolute;
+  inset-block-end: -0.4375rem;
+  inset-inline-start: 0.5rem;
+  width: 0;
+  height: 0;
+  content: "";
+  border-block-start: 0.4375rem solid var(--color--primary-40);
+  border-inline-end: 0.5rem solid transparent;
 }
 
-[dir="ltr"] .comment {
-  padding-left: var(--sp3);
+.comment-form {
+  padding-block-end: var(--sp2);
 }
 
-[dir="rtl"] .comment {
-  padding-right: var(--sp3);
+.add-comment__form {
+  padding-inline-start: 0;
 }
 
 .comment {
   position: relative;
-  padding-top: var(--sp2);
+  padding-block-start: var(--sp2);
+  padding-inline-start: var(--sp3);
 }
 
 @media (min-width: 43.75rem) {
 
-[dir="ltr"] .comment {
-    padding-left: 0;
-  }
-
-[dir="rtl"] .comment {
-    padding-right: 0;
-  }
+  .comment {
+    padding-inline-start: 0;
   }
+}
 
 .comment__text-content {
   font-size: 1rem;
 }
 
 .comment__text-content blockquote {
-    font-size: 1.3125rem;
-    line-height: var(--sp2);
-  }
+  font-size: 1.3125rem;
+  line-height: var(--sp2);
+}
 
 /* Override for .field:not(:last-child) */
 
 .comment__text-content:not(:last-child) {
-    margin-bottom: 0;
-  }
+  margin-block-end: 0;
+}
 
 .comment__links {
-  margin-top: var(--sp);
-  margin-bottom: 0;
+  margin-block: var(--sp) 0;
 }
 
 .comment__links-link {
@@ -179,26 +120,17 @@
 }
 
 .comment__links-link:hover {
-    text-decoration: underline;
-  }
-
-.add-comment__picture-wrapper {
-  top: calc(var(--line-height-base) + var(--sp0-5));
+  text-decoration: underline;
 }
 
-[dir="ltr"] .add-comment__picture,[dir="ltr"] 
-.comment__picture {
-  left: 0;
-}
-
-[dir="rtl"] .add-comment__picture,[dir="rtl"] 
-.comment__picture {
-  right: 0;
+.add-comment__picture-wrapper {
+  inset-block-start: calc(var(--line-height-base) + var(--sp0-5));
 }
 
 .add-comment__picture,
 .comment__picture {
   position: absolute;
+  inset-inline-start: 0;
   overflow: hidden;
   width: var(--sp2);
   height: var(--sp2);
@@ -206,82 +138,62 @@
   background-color: var(--color--gray-95);
 }
 
-.add-comment__picture *:not(img), .comment__picture *:not(img) {
-    display: inherit;
-    width: inherit;
-    height: inherit;
-  }
+.add-comment__picture *:not(img),
+.comment__picture *:not(img) {
+  display: inherit;
+  width: inherit;
+  height: inherit;
+}
 
-.add-comment__picture img, .comment__picture img {
-    width: 100%;
-    height: 100%;
-    object-fit: cover;
+.add-comment__picture img,
+.comment__picture img {
+  width: 100%;
+  height: 100%;
+  object-fit: cover;
 
-    /* @TODO: create image-style for profile's avatar to have image squared by default. */
-  }
+  /* @TODO: create image-style for profile's avatar to have image squared by default. */
+}
 
 @media all and (-ms-high-contrast: active), (-ms-high-contrast: none) {
 
-.add-comment__picture img, .comment__picture img {
-      position: absolute;
-      /* stylelint-disable csstools/use-logical */
-      top: 50%;
-      left: 50%;
-      /* stylelint-enable csstools/use-logical */
-      width: 100%;
-      height: auto;
-      transform: translate(-50%, -50%);
+  .add-comment__picture img,
+  .comment__picture img {
+    position: absolute;
+    /* stylelint-disable csstools/use-logical */
+    top: 50%;
+    left: 50%;
+    /* stylelint-enable csstools/use-logical */
+    width: 100%;
+    height: auto;
+    transform: translate(-50%, -50%);
   }
-    }
+}
 
 @media (min-width: 43.75rem) {
 
-[dir="ltr"] .add-comment__picture,[dir="ltr"] 
-.comment__picture {
-    left: calc(-1 * var(--sp5));
-  }
-
-[dir="rtl"] .add-comment__picture,[dir="rtl"] 
-.comment__picture {
-    right: calc(-1 * var(--sp5));
-  }
-
-.add-comment__picture,
-.comment__picture {
+  .add-comment__picture,
+  .comment__picture {
+    inset-inline-start: calc(-1 * var(--sp5));
     width: var(--sp3);
     height: var(--sp3);
-}
   }
+}
 
 @media (min-width: 43.75rem) {
 
-[dir="ltr"] .indented .comment__picture {
-    left: calc(-1 * var(--sp4));
-  }
-
-[dir="rtl"] .indented .comment__picture {
-    right: calc(-1 * var(--sp4));
-  }
-
-.indented .comment__picture {
+  .indented .comment__picture {
+    inset-inline-start: calc(-1 * var(--sp4));
     width: var(--sp2);
     height: var(--sp2);
-}
   }
-
-.comment__meta * {
-    display: inline;
-  }
-
-[dir="ltr"] .comment__author {
-  margin-right: var(--sp);
 }
 
-[dir="rtl"] .comment__author {
-  margin-left: var(--sp);
+.comment__meta * {
+  display: inline;
 }
 
 .comment__author {
+  margin-inline-end: var(--sp);
   font-family: var(--font-sans);
   font-size: 1rem;
   font-weight: 700;
@@ -289,8 +201,8 @@
 }
 
 .comment__author a {
-    text-decoration: none;
-  }
+  text-decoration: none;
+}
 
 .comment__time {
   margin: 0;
@@ -300,97 +212,42 @@
   line-height: var(--sp);
 }
 
-[dir="ltr"] .indented {
-  margin-left: var(--comment-indentation);
-}
-
-[dir="rtl"] .indented {
-  margin-right: var(--comment-indentation);
-}
-
-[dir="ltr"] .indented > .comment:not(:last-of-type, .has-children):before {
-    left: calc(-1 * var(--comment-indentation) - var(--sp));
-}
-
-[dir="rtl"] .indented > .comment:not(:last-of-type, .has-children):before {
-    right: calc(-1 * var(--comment-indentation) - var(--sp));
-}
-
-[dir="ltr"] .indented > .comment:not(:last-of-type, .has-children):before {
-    border-left: solid 1px var(--color--gray-95);
-}
-
-[dir="rtl"] .indented > .comment:not(:last-of-type, .has-children):before {
-    border-right: solid 1px var(--color--gray-95);
+.indented {
+  margin-inline-start: var(--comment-indentation);
 }
 
 .indented > .comment:not(:last-of-type, .has-children):before {
-    position: absolute;
-    top: var(--sp2); /* Comment's padding-top */
-    width: 0;
-    height: 100%;
-    content: "";
-  }
+  position: absolute;
+  inset-block-start: var(--sp2);
+  inset-inline-start: calc(-1 * var(--comment-indentation) - var(--sp)); /* Comment's padding-top */
+  width: 0;
+  height: 100%;
+  content: "";
+  border-inline-start: solid 1px var(--color--gray-95);
+}
 
 @media (min-width: 43.75rem) {
 
-[dir="ltr"] .indented > .comment:not(:last-of-type, .has-children):before {
-      left: calc(-1 * var(--comment-indentation--md) + var(--sp));
-  }
-
-[dir="rtl"] .indented > .comment:not(:last-of-type, .has-children):before {
-      right: calc(-1 * var(--comment-indentation--md) + var(--sp));
+  .indented > .comment:not(:last-of-type, .has-children):before {
+    inset-inline-start: calc(-1 * var(--comment-indentation--md) + var(--sp));
   }
-    }
+}
 
 @media (min-width: 43.75rem) {
 
-[dir="ltr"] .indented {
-    margin-left: var(--comment-indentation--md);
-  }
-
-[dir="rtl"] .indented {
-    margin-right: var(--comment-indentation--md);
-  }
+  .indented {
+    margin-inline-start: var(--comment-indentation--md);
   }
-
-[dir="ltr"] .show-hide-btn {
-  margin-left: var(--sp3);
-}
-
-[dir="rtl"] .show-hide-btn {
-  margin-right: var(--sp3);
-}
-
-[dir="ltr"] .show-hide-btn {
-  margin-right: 0;
-}
-
-[dir="rtl"] .show-hide-btn {
-  margin-left: 0;
-}
-
-[dir="ltr"] .show-hide-btn {
-  padding-left: 0;
-}
-
-[dir="rtl"] .show-hide-btn {
-  padding-right: 0;
-}
-
-[dir="ltr"] .show-hide-btn {
-  padding-right: 0;
-}
-
-[dir="rtl"] .show-hide-btn {
-  padding-left: 0;
 }
 
 .show-hide-btn {
-  margin-top: var(--sp2);
-  margin-bottom: 0;
-  padding-top: 0;
-  padding-bottom: 0;
+  margin-block-start: var(--sp2);
+  margin-block-end: 0;
+  margin-inline-start: var(--sp3);
+  margin-inline-end: 0;
+  padding-block: 0;
+  padding-inline-start: 0;
+  padding-inline-end: 0;
   cursor: pointer;
   color: var(--color-text-neutral-medium);
   border: 0;
@@ -403,20 +260,16 @@
 }
 
 .show-hide-btn[aria-expanded="true"]:after {
-    content: "\0020 -";
-  }
+  content: "\0020 -";
+}
 
 .show-hide-btn[aria-expanded="false"]:after {
-    content: "\0020 +";
-  }
+  content: "\0020 +";
+}
 
 @media (min-width: 43.75rem) {
 
-[dir="ltr"] .show-hide-btn {
-    margin-left: 0;
-  }
-
-[dir="rtl"] .show-hide-btn {
-    margin-right: 0;
-  }
+  .show-hide-btn {
+    margin-inline-start: 0;
   }
+}
diff --git a/core/themes/olivero/css/components/container-inline.module.css b/core/themes/olivero/css/components/container-inline.module.css
index b88a797f7e..6bc96ebc34 100644
--- a/core/themes/olivero/css/components/container-inline.module.css
+++ b/core/themes/olivero/css/components/container-inline.module.css
@@ -16,12 +16,10 @@
 }
 
 .form-items-inline {
-  margin-top: -0.125em;
-  margin-bottom: -0.125em; /* 2px */
+  margin-block: -0.125em; /* 2px */
 }
 
 .form-items-inline > .form-item {
   display: inline-block;
-  margin-top: 0.125em;
-  margin-bottom: 0.125em;
+  margin-block: 0.125em;
 }
diff --git a/core/themes/olivero/css/components/content-moderation.css b/core/themes/olivero/css/components/content-moderation.css
index b6fde852a5..26f310b55d 100644
--- a/core/themes/olivero/css/components/content-moderation.css
+++ b/core/themes/olivero/css/components/content-moderation.css
@@ -23,133 +23,91 @@
 
 /* Width of the entire grid maxes out. */
 
-[dir="ltr"] .entity-moderation-form {
-  padding-left: var(--sp);
-}
-
-[dir="rtl"] .entity-moderation-form {
-  padding-right: var(--sp);
-}
-
-[dir="ltr"] .entity-moderation-form {
-  padding-right: var(--sp);
-}
-
-[dir="rtl"] .entity-moderation-form {
-  padding-left: var(--sp);
-}
-
 .entity-moderation-form {
   flex-direction: column;
+  padding-inline-start: var(--sp);
+  padding-inline-end: var(--sp);
   border: 1px solid var(--color--gray-95);
   background-color: var(--color--gray-100);
 }
 
 .entity-moderation-form select,
-  .entity-moderation-form input:not([type="submit"]) {
-    background-color: var(--color--white);
-  }
+.entity-moderation-form input:not([type="submit"]) {
+  background-color: var(--color--white);
+}
 
 @media (min-width: 43.75rem) {
 
-.entity-moderation-form {
+  .entity-moderation-form {
     flex-direction: row;
-}
   }
-
-[dir="ltr"] .entity-moderation-form__item {
-  margin-right: var(--sp);
-}
-
-[dir="rtl"] .entity-moderation-form__item {
-  margin-left: var(--sp);
 }
 
 .entity-moderation-form__item {
   flex-basis: 0;
-}
-
-[dir="ltr"] .entity-moderation-form__item:last-child {
-    margin-right: 0;
-}
-
-[dir="rtl"] .entity-moderation-form__item:last-child {
-    margin-left: 0;
+  margin-inline-end: var(--sp);
 }
 
 .entity-moderation-form__item:last-child {
-    align-self: flex-start;
-  }
+  align-self: flex-start;
+  margin-inline-end: 0;
+}
 
 @media (min-width: 43.75rem) {
 
-.entity-moderation-form__item:last-child {
-      align-self: flex-end;
+  .entity-moderation-form__item:last-child {
+    align-self: flex-end;
   }
-    }
-
-[dir="ltr"] .layout--content-narrow .entity-moderation-form,[dir="ltr"]  .layout--pass--content-narrow > * .entity-moderation-form,[dir="ltr"]  .layout--content-medium .entity-moderation-form,[dir="ltr"]  .layout--pass--content-medium > * .entity-moderation-form {
-    margin-left: 0;
 }
 
-[dir="rtl"] .layout--content-narrow .entity-moderation-form,[dir="rtl"]  .layout--pass--content-narrow > * .entity-moderation-form,[dir="rtl"]  .layout--content-medium .entity-moderation-form,[dir="rtl"]  .layout--pass--content-medium > * .entity-moderation-form {
-    margin-right: 0;
+.layout--content-narrow .entity-moderation-form,
+.layout--pass--content-narrow > * .entity-moderation-form,
+.layout--content-medium .entity-moderation-form,
+.layout--pass--content-medium > * .entity-moderation-form {
+  width: 100%;
+  margin-inline-start: 0;
 }
 
-.layout--content-narrow .entity-moderation-form, .layout--pass--content-narrow > * .entity-moderation-form, .layout--content-medium .entity-moderation-form, .layout--pass--content-medium > * .entity-moderation-form {
-    width: 100%;
-  }
-
 @supports (width: max-content) {
 
-.layout--content-narrow .entity-moderation-form, .layout--pass--content-narrow > * .entity-moderation-form, .layout--content-medium .entity-moderation-form, .layout--pass--content-medium > * .entity-moderation-form {
-      width: max-content;
+  .layout--content-narrow .entity-moderation-form,
+  .layout--pass--content-narrow > * .entity-moderation-form,
+  .layout--content-medium .entity-moderation-form,
+  .layout--pass--content-medium > * .entity-moderation-form {
+    width: max-content;
   }
-    }
+}
 
 @media (min-width: 43.75rem) {
 
-[dir="ltr"] .layout--content-narrow .entity-moderation-form,[dir="ltr"]  .layout--pass--content-narrow > * .entity-moderation-form,[dir="ltr"]  .layout--content-medium .entity-moderation-form,[dir="ltr"]  .layout--pass--content-medium > * .entity-moderation-form {
-      margin-left: calc(-2 * (var(--grid-col-width) + var(--grid-gap)));
+  .layout--content-narrow .entity-moderation-form,
+  .layout--pass--content-narrow > * .entity-moderation-form,
+  .layout--content-medium .entity-moderation-form,
+  .layout--pass--content-medium > * .entity-moderation-form {
+    width: calc(var(--grid-col-count) * var(--grid-col-width) + var(--grid-gap-count) * var(--grid-gap));
+    margin-block: var(--sp2) var(--sp4);
+    margin-inline-start: calc(-2 * (var(--grid-col-width) + var(--grid-gap)));
   }
-
-[dir="rtl"] .layout--content-narrow .entity-moderation-form,[dir="rtl"]  .layout--pass--content-narrow > * .entity-moderation-form,[dir="rtl"]  .layout--content-medium .entity-moderation-form,[dir="rtl"]  .layout--pass--content-medium > * .entity-moderation-form {
-      margin-right: calc(-2 * (var(--grid-col-width) + var(--grid-gap)));
-  }
-
-.layout--content-narrow .entity-moderation-form, .layout--pass--content-narrow > * .entity-moderation-form, .layout--content-medium .entity-moderation-form, .layout--pass--content-medium > * .entity-moderation-form {
-      width: calc(var(--grid-col-count) * var(--grid-col-width) + var(--grid-gap-count) * var(--grid-gap));
-      margin-top: var(--sp2);
-      margin-bottom: var(--sp4);
-  }
-    }
+}
 
 @media (min-width: 62.5rem) {
 
-[dir="ltr"] .layout--content-narrow .entity-moderation-form,[dir="ltr"]  .layout--pass--content-narrow > * .entity-moderation-form,[dir="ltr"]  .layout--content-medium .entity-moderation-form,[dir="ltr"]  .layout--pass--content-medium > * .entity-moderation-form {
-      margin-left: calc(-1 * (var(--grid-col-width) + var(--grid-gap)));
+  .layout--content-narrow .entity-moderation-form,
+  .layout--pass--content-narrow > * .entity-moderation-form,
+  .layout--content-medium .entity-moderation-form,
+  .layout--pass--content-medium > * .entity-moderation-form {
+    width: calc(12 * var(--grid-col-width) + 11 * var(--grid-gap));
+    margin-inline-start: calc(-1 * (var(--grid-col-width) + var(--grid-gap)));
   }
-
-[dir="rtl"] .layout--content-narrow .entity-moderation-form,[dir="rtl"]  .layout--pass--content-narrow > * .entity-moderation-form,[dir="rtl"]  .layout--content-medium .entity-moderation-form,[dir="rtl"]  .layout--pass--content-medium > * .entity-moderation-form {
-      margin-right: calc(-1 * (var(--grid-col-width) + var(--grid-gap)));
-  }
-
-.layout--content-narrow .entity-moderation-form, .layout--pass--content-narrow > * .entity-moderation-form, .layout--content-medium .entity-moderation-form, .layout--pass--content-medium > * .entity-moderation-form {
-      width: calc(12 * var(--grid-col-width) + 11 * var(--grid-gap));
-  }
-    }
+}
 
 @media (min-width: 90rem) {
 
-[dir="ltr"] .layout--content-narrow .entity-moderation-form,[dir="ltr"]  .layout--pass--content-narrow > * .entity-moderation-form,[dir="ltr"]  .layout--content-medium .entity-moderation-form,[dir="ltr"]  .layout--pass--content-medium > * .entity-moderation-form {
-      margin-left: 0;
+  .layout--content-narrow .entity-moderation-form,
+  .layout--pass--content-narrow > * .entity-moderation-form,
+  .layout--content-medium .entity-moderation-form,
+  .layout--pass--content-medium > * .entity-moderation-form {
+    width: calc(10 * var(--grid-col-width) + 11 * var(--grid-gap));
+    margin-inline-start: 0;
   }
-
-[dir="rtl"] .layout--content-narrow .entity-moderation-form,[dir="rtl"]  .layout--pass--content-narrow > * .entity-moderation-form,[dir="rtl"]  .layout--content-medium .entity-moderation-form,[dir="rtl"]  .layout--pass--content-medium > * .entity-moderation-form {
-      margin-right: 0;
-  }
-
-.layout--content-narrow .entity-moderation-form, .layout--pass--content-narrow > * .entity-moderation-form, .layout--content-medium .entity-moderation-form, .layout--pass--content-medium > * .entity-moderation-form {
-      width: calc(10 * var(--grid-col-width) + 11 * var(--grid-gap));
-  }
-    }
+}
diff --git a/core/themes/olivero/css/components/details.css b/core/themes/olivero/css/components/details.css
index 6d3a625c1c..798dd669a1 100644
--- a/core/themes/olivero/css/components/details.css
+++ b/core/themes/olivero/css/components/details.css
@@ -30,8 +30,7 @@
 
 .olivero-details {
   display: block;
-  margin-top: var(--sp1);
-  margin-bottom: var(--sp1);
+  margin-block: var(--sp1);
   color: inherit;
   border: var(--details-border-width) solid var(--color--gray-95);
   border-radius: var(--border-radius);
@@ -40,26 +39,11 @@
 
 /* Details summary styles */
 
-[dir="ltr"] .olivero-details__summary {
-  padding-left: var(--sp2);
-}
-
-[dir="rtl"] .olivero-details__summary {
-  padding-right: var(--sp2);
-}
-
-[dir="ltr"] .olivero-details__summary {
-  padding-right: var(--sp1);
-}
-
-[dir="rtl"] .olivero-details__summary {
-  padding-left: var(--sp1);
-}
-
 .olivero-details__summary {
   position: relative;
-  padding-top: var(--sp1);
-  padding-bottom: var(--sp1);
+  padding-block: var(--sp1);
+  padding-inline-start: var(--sp2);
+  padding-inline-end: var(--sp1);
   list-style: none;
   cursor: pointer;
   transition: var(--details-summary-transition);
@@ -75,17 +59,10 @@
 
 /* Arrow icon */
 
-[dir="ltr"] .olivero-details__summary:before {
-  left: var(--sp0-75);
-}
-
-[dir="rtl"] .olivero-details__summary:before {
-  right: var(--sp0-75);
-}
-
 .olivero-details__summary:before {
   position: absolute;
-  top: 50%;
+  inset-block-start: 50%;
+  inset-inline-start: var(--sp0-75);
   display: block;
   width: 0.625rem;
   height: 0.625rem;
@@ -103,10 +80,7 @@
 
 .olivero-details__summary:after {
   position: absolute;
-  top: calc(var(--details-border-width) * -1);
-  right: calc(var(--details-border-width) * -1);
-  bottom: calc(var(--details-border-width) * -1);
-  left: calc(var(--details-border-width) * -1);
+  inset: calc(var(--details-border-width) * -1);
   content: "";
   pointer-events: none;
   opacity: 0;
@@ -143,7 +117,7 @@
 /* Rotate arrow icon of the details summary, when details expanded */
 
 .olivero-details[open] > .olivero-details__summary::before {
-  margin-top: -2px;
+  margin-block-start: -2px;
   transform: translateY(-50%) rotate(135deg);
 }
 
@@ -155,32 +129,18 @@
 
 @media (min-width: 62.5rem) {
 
-[dir="ltr"] .olivero-details__wrapper {
-    margin-left: var(--sp2);
-  }
-
-[dir="rtl"] .olivero-details__wrapper {
-    margin-right: var(--sp2);
-  }
-
-[dir="ltr"] .olivero-details__wrapper {
-    margin-right: var(--sp2);
+  .olivero-details__wrapper {
+    margin-block-start: var(--sp1-5);
+    margin-block-end: var(--sp1-5);
+    margin-inline-start: var(--sp2);
+    margin-inline-end: var(--sp2);
   }
-
-[dir="rtl"] .olivero-details__wrapper {
-    margin-left: var(--sp2);
-  }
-
-.olivero-details__wrapper {
-    margin-top: var(--sp1-5);
-    margin-bottom: var(--sp1-5);
 }
-  }
 
 /* Description */
 
 .olivero-details__description {
-  margin-bottom: var(--sp1);
+  margin-block-end: var(--sp1);
   color: var(--color-text-neutral-medium);
   font-size: var(--font-size-xs);
   line-height: var(--line-height-s);
diff --git a/core/themes/olivero/css/components/dropbutton.css b/core/themes/olivero/css/components/dropbutton.css
index 9737357c28..e4503ef8c4 100644
--- a/core/themes/olivero/css/components/dropbutton.css
+++ b/core/themes/olivero/css/components/dropbutton.css
@@ -22,75 +22,42 @@
 }
 
 .dropbutton-wrapper.open {
-    position: relative;
-    z-index: 100; /* Ensure this appears above all other dropbuttons. */
-    filter: drop-shadow(0 2px 2px var(--dropbutton--active-bg-color));
-  }
-
-[dir="ltr"] .dropbutton-widget {
-  padding-right: var(--dropbutton--height);
-}
-
-[dir="rtl"] .dropbutton-widget {
-  padding-left: var(--dropbutton--height);
+  position: relative;
+  z-index: 100; /* Ensure this appears above all other dropbuttons. */
+  filter: drop-shadow(0 2px 2px var(--dropbutton--active-bg-color));
 }
 
 .dropbutton-widget {
   position: relative;
   width: max-content;
   height: var(--dropbutton--height);
+  padding-inline-end: var(--dropbutton--height);
   border-radius: var(--dropbutton--border-radius);
 }
 
-[dir="ltr"] .dropbutton-single .dropbutton-widget {
-    padding-right: 0;
-}
-
-[dir="rtl"] .dropbutton-single .dropbutton-widget {
-    padding-left: 0;
+.dropbutton-single .dropbutton-widget {
+  padding-inline-end: 0;
 }
 
 .dropbutton-wrapper.open .dropbutton-widget {
-    border-radius: var(--dropbutton--border-radius) var(--dropbutton--border-radius) 0 0;
-}
-
-[dir="ltr"] .dropbutton {
-  margin-left: 0;
-}
-
-[dir="rtl"] .dropbutton {
-  margin-right: 0;
-}
-
-[dir="ltr"] .dropbutton {
-  padding-left: 0;
-}
-
-[dir="rtl"] .dropbutton {
-  padding-right: 0;
+  border-radius: var(--dropbutton--border-radius) var(--dropbutton--border-radius) 0 0;
 }
 
 .dropbutton {
   height: var(--dropbutton--height);
-  margin-top: 0;
-  margin-bottom: 0;
+  margin-block: 0;
+  margin-inline-start: 0;
+  padding-inline-start: 0;
   list-style: none;
   font-size: var(--dropbutton--font-size);
 }
 
 /* This is the button that expands/collapses the secondary options. */
 
-[dir="ltr"] .dropbutton-toggle button {
-  right: 0;
-}
-
-[dir="rtl"] .dropbutton-toggle button {
-  left: 0;
-}
-
 .dropbutton-toggle button {
   position: absolute;
   top: 0;
+  inset-inline-end: 0;
   display: flex;
   align-items: center;
   justify-content: center;
@@ -104,82 +71,75 @@
 }
 
 .dropbutton-toggle button:focus {
-    outline: solid 2px var(--dropbutton--outline-color);
-    outline-offset: -2px;
-  }
+  outline: solid 2px var(--dropbutton--outline-color);
+  outline-offset: -2px;
+}
 
 .dropbutton-toggle button:before {
-    display: block;
-    width: var(--sp0-5);
-    height: var(--sp0-5);
-    content: "";
-    transform: translateY(-25%) rotate(45deg);
-    border-right: solid 2px var(--dropbutton--outline-color);
-    border-bottom: solid 2px var(--dropbutton--outline-color);
-  }
+  display: block;
+  width: var(--sp0-5);
+  height: var(--sp0-5);
+  content: "";
+  transform: translateY(-25%) rotate(45deg);
+  border-right: solid 2px var(--dropbutton--outline-color);
+  border-bottom: solid 2px var(--dropbutton--outline-color);
+}
 
 .dropbutton-wrapper.open :is(.dropbutton-toggle button:before) {
-      transform: translateY(25%) rotate(225deg);
-  }
+  transform: translateY(25%) rotate(225deg);
+}
 
 [dir="rtl"] .dropbutton-toggle button {
-    border-radius: var(--dropbutton--border-radius) 0 0 var(--dropbutton--border-radius);
-  }
+  border-radius: var(--dropbutton--border-radius) 0 0 var(--dropbutton--border-radius);
+}
 
 /* This is the first <li> element in the list of actions. */
 
-[dir="ltr"] .dropbutton-action:first-child {
-    margin-right: 2px;
+.dropbutton-action:first-child {
+  margin-inline-end: 2px;
+  border: solid 1px transparent;
+  border-radius: var(--dropbutton--border-radius) 0 0 var(--dropbutton--border-radius); /* LTR */
+  background: var(--dropbutton--active-bg-color);
 }
 
 [dir="rtl"] .dropbutton-action:first-child {
-    margin-left: 2px;
+  border: solid 1px transparent;
+  border-radius: 0 var(--dropbutton--border-radius) var(--dropbutton--border-radius) 0;
 }
 
-.dropbutton-action:first-child {
-    border: solid 1px transparent;
-    border-radius: var(--dropbutton--border-radius) 0 0 var(--dropbutton--border-radius); /* LTR */
-    background: var(--dropbutton--active-bg-color);
-  }
-
-[dir="rtl"] .dropbutton-action:first-child {
-      border: solid 1px transparent;
-      border-radius: 0 var(--dropbutton--border-radius) var(--dropbutton--border-radius) 0;
-    }
-
 .dropbutton-action a {
-    display: flex;
-    align-items: center;
-    margin-bottom: -2px; /* Account for borders. */
-    padding: 0 0.5625rem;
-    text-decoration: none;
-    color: var(--dropbutton--text-color);
-    font-weight: 600;
-  }
+  display: flex;
+  align-items: center;
+  margin-bottom: -2px; /* Account for borders. */
+  padding: 0 0.5625rem;
+  text-decoration: none;
+  color: var(--dropbutton--text-color);
+  font-weight: 600;
+}
 
 .dropbutton-action a:hover {
-      color: inherit;
-    }
+  color: inherit;
+}
 
 .dropbutton-action a:focus {
-      outline: solid 2px var(--dropbutton--outline-color);
-      outline-offset: -1px; /* Overlap parent container by 1px. */
-    }
+  outline: solid 2px var(--dropbutton--outline-color);
+  outline-offset: -1px; /* Overlap parent container by 1px. */
+}
 
 /* Special rules if there is only one action. */
 
 .dropbutton-single .dropbutton-action:first-child {
-      border-right: solid 1px transparent; /* LTR */
-      border-radius: var(--dropbutton--border-radius);
-    }
+  border-right: solid 1px transparent; /* LTR */
+  border-radius: var(--dropbutton--border-radius);
+}
 
 [dir="rtl"] .dropbutton-single .dropbutton-action:first-child {
-        border: solid 1px transparent;
-      }
+  border: solid 1px transparent;
+}
 
 .dropbutton-single .dropbutton-action a {
-      justify-content: center;
-    }
+  justify-content: center;
+}
 
 /* These are the <li> elements other than the first. */
 
@@ -192,13 +152,13 @@
 }
 
 .secondary-action:last-child {
-    border-bottom: 1px solid var(--dropbutton--active-bg-color);
-  }
+  border-bottom: 1px solid var(--dropbutton--active-bg-color);
+}
 
 .secondary-action a:hover {
-    color: var(--dropbutton--text-hover-color);
-  }
+  color: var(--dropbutton--text-hover-color);
+}
 
 .dropbutton-wrapper.open .secondary-action {
-    visibility: visible;
+  visibility: visible;
 }
diff --git a/core/themes/olivero/css/components/embedded-media.css b/core/themes/olivero/css/components/embedded-media.css
index 0d339ca840..9abf9acb66 100644
--- a/core/themes/olivero/css/components/embedded-media.css
+++ b/core/themes/olivero/css/components/embedded-media.css
@@ -27,25 +27,10 @@ figure {
   background: var(--color--gray-100);
 }
 
-[dir="ltr"] figcaption {
-  padding-left: var(--sp0-5);
-}
-
-[dir="rtl"] figcaption {
-  padding-right: var(--sp0-5);
-}
-
-[dir="ltr"] figcaption {
-  padding-right: var(--sp0-5);
-}
-
-[dir="rtl"] figcaption {
-  padding-left: var(--sp0-5);
-}
-
 figcaption {
-  padding-top: var(--sp0-5);
-  padding-bottom: var(--sp0-5);
+  padding-block: var(--sp0-5);
+  padding-inline-start: var(--sp0-5);
+  padding-inline-end: var(--sp0-5);
   color: var(--color-text-neutral-medium);
   background: var(--color--gray-100);
   font-family: var(--font-serif);
@@ -56,83 +41,44 @@ figcaption {
 
 @media (min-width: 31.25rem) {
 
-[dir="ltr"] figcaption {
-    padding-left: var(--sp);
+  figcaption {
+    padding-block: var(--sp);
+    padding-inline-start: var(--sp);
+    padding-inline-end: var(--sp);
   }
-
-[dir="rtl"] figcaption {
-    padding-right: var(--sp);
-  }
-
-[dir="ltr"] figcaption {
-    padding-right: var(--sp);
-  }
-
-[dir="rtl"] figcaption {
-    padding-left: var(--sp);
-  }
-
-figcaption {
-    padding-top: var(--sp);
-    padding-bottom: var(--sp);
-}
-  }
-
-[dir="ltr"] .align-right {
-  margin-left: 0;
-}
-
-[dir="rtl"] .align-right {
-  margin-right: 0;
-}
-
-[dir="ltr"] .align-right {
-  margin-right: 0;
-}
-
-[dir="rtl"] .align-right {
-  margin-left: 0;
 }
 
 .align-right {
   float: none; /* Override core's align.module.css. */
   max-width: 100%;
-  margin-top: var(--sp3);
-  margin-bottom: var(--sp3);
+  margin-block: var(--sp3);
+  margin-inline-start: 0;
+  margin-inline-end: 0;
 }
 
 @media (min-width: 43.75rem) {
 
-[dir="ltr"] .align-right {
-    float: right;
-  }
-
-[dir="rtl"] .align-right {
+  .align-right {
+    float: right; /* LTR */
+    max-width: 50%;
+    margin-block-start: var(--sp);
+    margin-block-end: var(--sp);
+    margin-inline-start: var(--sp);
+    margin-inline-end: 0;
+
+    /**
+     * Chromium and Webkit do not yet support flow relative logical properties,
+     * such as float: inline-end. However, PostCSS Logical does not compile this
+     * value, so we accommodate by not using these.
+     *
+     * @see https://caniuse.com/mdn-css_properties_clear_flow_relative_values
+     * @see https://github.com/csstools/postcss-plugins/issues/632
+     */
+  }
+  [dir="rtl"] .align-right {
     float: left;
   }
-
-[dir="ltr"] .align-right {
-    margin-left: var(--sp);
-  }
-
-[dir="rtl"] .align-right {
-    margin-right: var(--sp);
-  }
-
-[dir="ltr"] .align-right {
-    margin-right: 0;
-  }
-
-[dir="rtl"] .align-right {
-    margin-left: 0;
-  }
-
-.align-right {
-    max-width: 50%;
-    margin-top: var(--sp);
-    margin-bottom: var(--sp);
 }
-  }
 
 /* Pull out of grid if nested in content narrow layout. */
 
@@ -140,132 +86,83 @@ figcaption {
 
 @media (min-width: 43.75rem) {
 
-[dir="ltr"] .layout--content-narrow .align-right,[dir="ltr"] 
-.layout--pass--content-narrow > * .align-right {
-    margin-right: calc(-1 * ((var(--grid-col-width) + var(--grid-gap))));
-  }
-
-[dir="rtl"] .layout--content-narrow .align-right,[dir="rtl"] 
-.layout--pass--content-narrow > * .align-right {
-    margin-left: calc(-1 * ((var(--grid-col-width) + var(--grid-gap))));
-  }
+  .layout--content-narrow .align-right,
+  .layout--pass--content-narrow > * .align-right {
+    margin-inline-end: calc(-1 * ((var(--grid-col-width) + var(--grid-gap))));
   }
+}
 
 @media (min-width: 62.5rem) {
 
-[dir="ltr"] .layout--content-narrow .align-right,[dir="ltr"] 
-.layout--pass--content-narrow > * .align-right {
-    margin-right: calc(-2 * ((var(--grid-col-width) + var(--grid-gap))));
-  }
-
-[dir="rtl"] .layout--content-narrow .align-right,[dir="rtl"] 
-.layout--pass--content-narrow > * .align-right {
-    margin-left: calc(-2 * ((var(--grid-col-width) + var(--grid-gap))));
-  }
+  .layout--content-narrow .align-right,
+  .layout--pass--content-narrow > * .align-right {
+    margin-inline-end: calc(-2 * ((var(--grid-col-width) + var(--grid-gap))));
   }
+}
 
 @media (min-width: 75rem) {
 
-[dir="ltr"] .layout--content-narrow .align-right,[dir="ltr"] 
-.layout--pass--content-narrow > * .align-right {
-    margin-right: calc(-3 * ((var(--grid-col-width) + var(--grid-gap))));
-  }
-
-[dir="rtl"] .layout--content-narrow .align-right,[dir="rtl"] 
-.layout--pass--content-narrow > * .align-right {
-    margin-left: calc(-3 * ((var(--grid-col-width) + var(--grid-gap))));
-  }
+  .layout--content-narrow .align-right,
+  .layout--pass--content-narrow > * .align-right {
+    margin-inline-end: calc(-3 * ((var(--grid-col-width) + var(--grid-gap))));
   }
+}
 
 @media (min-width: 90rem) {
 
-[dir="ltr"] .layout--content-narrow .align-right,[dir="ltr"] 
-.layout--pass--content-narrow > * .align-right {
-    margin-right: calc(-3 * ((var(--grid-col-width) + var(--grid-gap))));
+  .layout--content-narrow .align-right,
+  .layout--pass--content-narrow > * .align-right {
+    margin-inline-end: calc(-3 * ((var(--grid-col-width) + var(--grid-gap))));
   }
-
-[dir="rtl"] .layout--content-narrow .align-right,[dir="rtl"] 
-.layout--pass--content-narrow > * .align-right {
-    margin-left: calc(-3 * ((var(--grid-col-width) + var(--grid-gap))));
-  }
-  }
-
-[dir="ltr"] .align-left {
-  margin-left: 0;
-}
-
-[dir="rtl"] .align-left {
-  margin-right: 0;
-}
-
-[dir="ltr"] .align-left {
-  margin-right: 0;
-}
-
-[dir="rtl"] .align-left {
-  margin-left: 0;
 }
 
 .align-left {
   float: none; /* Override core's align.module.css. */
   max-width: 100%;
-  margin-top: var(--sp3);
-  margin-bottom: var(--sp3);
+  margin-block-start: var(--sp3);
+  margin-block-end: var(--sp3);
+  margin-inline-start: 0;
+  margin-inline-end: 0;
 }
 
 @media (min-width: 43.75rem) {
 
-[dir="ltr"] .align-left {
-    float: left;
-  }
-
-[dir="rtl"] .align-left {
+  .align-left {
+    float: left; /* LTR */
+    max-width: 50%;
+    margin-block-start: var(--sp);
+    margin-block-end: var(--sp);
+    margin-inline-start: 0;
+    margin-inline-end: var(--sp2); /* Extra right margins in case of aligning next to lists. */
+
+    /**
+     * Chromium and Webkit do not yet support flow relative logical properties,
+     * such as float: inline-end. However, PostCSS Logical does not compile this
+     * value, so we accommodate by not using these.
+     *
+     * @see https://caniuse.com/mdn-css_properties_clear_flow_relative_values
+     * @see https://github.com/csstools/postcss-plugins/issues/632
+     */
+  }
+  [dir="rtl"] .align-left {
     float: right;
   }
-
-[dir="ltr"] .align-left {
-    margin-left: 0;
-  }
-
-[dir="rtl"] .align-left {
-    margin-right: 0;
-  }
-
-[dir="ltr"] .align-left {
-    margin-right: var(--sp2);
-  }
-
-[dir="rtl"] .align-left {
-    margin-left: var(--sp2);
-  }
-
-.align-left {
-    max-width: 50%;
-    margin-top: var(--sp);
-    margin-bottom: var(--sp); /* Extra right margins in case of aligning next to lists. */
 }
-  }
 
 /* Pull out of grid if nested in content narrow layout. */
 
 @media (min-width: 43.75rem) {
 
-[dir="ltr"] .layout--content-narrow .align-left,[dir="ltr"] 
-.layout--pass--content-narrow > * .align-left {
-    margin-left: calc(-1 * ((var(--grid-col-width) + var(--grid-gap))));
-  }
-
-[dir="rtl"] .layout--content-narrow .align-left,[dir="rtl"] 
-.layout--pass--content-narrow > * .align-left {
-    margin-right: calc(-1 * ((var(--grid-col-width) + var(--grid-gap))));
-  }
+  .layout--content-narrow .align-left,
+  .layout--pass--content-narrow > * .align-left {
+    margin-inline-start: calc(-1 * ((var(--grid-col-width) + var(--grid-gap))));
   }
+}
 
 .align-center img,
 .align-center video,
 .align-center audio {
-  margin-left: auto;
-  margin-right: auto;
+  margin-inline: auto;
 }
 
 .media-oembed-content {
diff --git a/core/themes/olivero/css/components/embedded-media.pcss.css b/core/themes/olivero/css/components/embedded-media.pcss.css
index f8b67b3d7c..b6f52a884a 100644
--- a/core/themes/olivero/css/components/embedded-media.pcss.css
+++ b/core/themes/olivero/css/components/embedded-media.pcss.css
@@ -35,12 +35,24 @@ figcaption {
   margin-inline-end: 0;
 
   @media (--grid-md) {
-    float: inline-end;
+    float: right; /* LTR */
     max-width: 50%;
     margin-block-start: var(--sp);
     margin-block-end: var(--sp);
     margin-inline-start: var(--sp);
     margin-inline-end: 0;
+
+    /**
+     * Chromium and Webkit do not yet support flow relative logical properties,
+     * such as float: inline-end. However, PostCSS Logical does not compile this
+     * value, so we accommodate by not using these.
+     *
+     * @see https://caniuse.com/mdn-css_properties_clear_flow_relative_values
+     * @see https://github.com/csstools/postcss-plugins/issues/632
+     */
+    &:dir(rtl) {
+      float: left;
+    }
   }
 }
 
@@ -74,12 +86,24 @@ figcaption {
   margin-inline-end: 0;
 
   @media (--grid-md) {
-    float: inline-start;
+    float: left; /* LTR */
     max-width: 50%;
     margin-block-start: var(--sp);
     margin-block-end: var(--sp);
     margin-inline-start: 0;
     margin-inline-end: var(--sp2); /* Extra right margins in case of aligning next to lists. */
+
+    /**
+     * Chromium and Webkit do not yet support flow relative logical properties,
+     * such as float: inline-end. However, PostCSS Logical does not compile this
+     * value, so we accommodate by not using these.
+     *
+     * @see https://caniuse.com/mdn-css_properties_clear_flow_relative_values
+     * @see https://github.com/csstools/postcss-plugins/issues/632
+     */
+    &:dir(rtl) {
+      float: right;
+    }
   }
 }
 
diff --git a/core/themes/olivero/css/components/feed.css b/core/themes/olivero/css/components/feed.css
index 00ff21e6a1..013c1070e6 100644
--- a/core/themes/olivero/css/components/feed.css
+++ b/core/themes/olivero/css/components/feed.css
@@ -31,8 +31,8 @@
 }
 
 .feed-icon:hover {
-    color: var(--color--primary-50);
-  }
+  color: var(--color--primary-50);
+}
 
 .feed-icon__label {
   flex-shrink: 0;
@@ -41,14 +41,6 @@
   font-weight: 600;
 }
 
-[dir="ltr"] .feed-icon__icon {
-  margin-left: var(--sp0-5);
-}
-
-[dir="rtl"] .feed-icon__icon {
-  margin-right: var(--sp0-5);
-}
-
 .feed-icon__icon {
   display: flex;
   flex-shrink: 0;
@@ -56,11 +48,12 @@
   justify-content: center;
   width: var(--sp1-5);
   height: var(--sp1-5);
+  margin-inline-start: var(--sp0-5);
   color: var(--color--white);
   background-color: var(--color--primary-50);
 }
 
 .feed-icon__icon svg {
-    vertical-align: top;
-    fill: currentColor;
-  }
+  vertical-align: top;
+  fill: currentColor;
+}
diff --git a/core/themes/olivero/css/components/field.css b/core/themes/olivero/css/components/field.css
index f71f06f926..71cc1cb9fc 100644
--- a/core/themes/olivero/css/components/field.css
+++ b/core/themes/olivero/css/components/field.css
@@ -24,48 +24,51 @@
 /* Width of the entire grid maxes out. */
 
 .field:not(:last-child) {
-  margin-bottom: var(--sp2);
+  margin-block-end: var(--sp2);
 }
 
 .node--view-mode-teaser .field {
-  margin-bottom: var(--sp);
+  margin-block-end: var(--sp);
 }
 
 .node--view-mode-teaser .field:last-child {
-    margin-bottom: 0;
-  }
+  margin-block-end: 0;
+}
 
 @media (min-width: 62.5rem) {
 
-.node--view-mode-teaser .field {
-    margin-bottom: var(--sp2);
-}
+  .node--view-mode-teaser .field {
+    margin-block-end: var(--sp2);
   }
+}
 
 .field__label {
   font-weight: bold;
 }
 
-[dir="ltr"] .field--label-inline .field__label,[dir="ltr"] 
+.field--label-inline .field__label,
 .field--label-inline .field__items {
-  float: left;
+  float: left; /* LTR */
+
+  /**
+   * Chromium and Webkit do not yet support flow relative logical properties,
+   * such as float: inline-end. However, PostCSS Logical does not compile this
+   * value, so we accommodate by not using these.
+   *
+   * @see https://caniuse.com/mdn-css_properties_clear_flow_relative_values
+   * @see https://github.com/csstools/postcss-plugins/issues/632
+   */
 }
 
-[dir="rtl"] .field--label-inline .field__label,[dir="rtl"] 
-.field--label-inline .field__items {
+[dir="rtl"] .field--label-inline .field__label,
+[dir="rtl"] .field--label-inline .field__items {
   float: right;
 }
 
-[dir="ltr"] .field--label-inline .field__label,[dir="ltr"] 
-.field--label-inline > .field__item,[dir="ltr"] 
-.field--label-inline .field__items {
-  padding-right: 0.5em;
-}
-
-[dir="rtl"] .field--label-inline .field__label,[dir="rtl"] 
-.field--label-inline > .field__item,[dir="rtl"] 
+.field--label-inline .field__label,
+.field--label-inline > .field__item,
 .field--label-inline .field__items {
-  padding-left: 0.5em;
+  padding-inline-end: 0.5em;
 }
 
 .field--label-inline .field__label::after {
diff --git a/core/themes/olivero/css/components/field.pcss.css b/core/themes/olivero/css/components/field.pcss.css
index f1733b7aee..7c08eaf127 100644
--- a/core/themes/olivero/css/components/field.pcss.css
+++ b/core/themes/olivero/css/components/field.pcss.css
@@ -27,7 +27,19 @@
 
 .field--label-inline .field__label,
 .field--label-inline .field__items {
-  float: inline-start;
+  float: left; /* LTR */
+
+  /**
+   * Chromium and Webkit do not yet support flow relative logical properties,
+   * such as float: inline-end. However, PostCSS Logical does not compile this
+   * value, so we accommodate by not using these.
+   *
+   * @see https://caniuse.com/mdn-css_properties_clear_flow_relative_values
+   * @see https://github.com/csstools/postcss-plugins/issues/632
+   */
+  &:dir(rtl) {
+    float: right;
+  }
 }
 
 .field--label-inline .field__label,
diff --git a/core/themes/olivero/css/components/fieldset.css b/core/themes/olivero/css/components/fieldset.css
index 2d61b4ced8..3cf7854d46 100644
--- a/core/themes/olivero/css/components/fieldset.css
+++ b/core/themes/olivero/css/components/fieldset.css
@@ -23,44 +23,14 @@
 
 /* Width of the entire grid maxes out. */
 
-[dir="ltr"] .fieldset {
-  margin-left: 0;
-}
-
-[dir="rtl"] .fieldset {
-  margin-right: 0;
-}
-
-[dir="ltr"] .fieldset {
-  margin-right: 0;
-}
-
-[dir="rtl"] .fieldset {
-  margin-left: 0;
-}
-
-[dir="ltr"] .fieldset {
-  padding-left: 0;
-}
-
-[dir="rtl"] .fieldset {
-  padding-right: 0;
-}
-
-[dir="ltr"] .fieldset {
-  padding-right: 0;
-}
-
-[dir="rtl"] .fieldset {
-  padding-left: 0;
-}
-
 .fieldset {
   min-width: 0;
-  margin-top: var(--sp1);
-  margin-bottom: var(--sp1);
-  padding-top: 0;
-  padding-bottom: 0;
+  margin-block: var(--sp1);
+  margin-inline-start: 0;
+  margin-inline-end: 0;
+  padding-block: 0;
+  padding-inline-start: 0;
+  padding-inline-end: 0;
   color: inherit;
   border: solid 2px var(--color--gray-45);
   border-radius: var(--border-radius);
@@ -98,15 +68,15 @@ _:-ms-fullscreen,
 }
 
 .fieldset__legend + * {
-    clear: left;
-  }
+  clear: left;
+}
 
 .fieldset__legend .fieldset__label.form-required:after {
-        background-image: url("data:image/svg+xml,%3Csvg height='16' width='16' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m0 7.562 1.114-3.438c2.565.906 4.43 1.688 5.59 2.35-.306-2.921-.467-4.93-.484-6.027h3.511c-.05 1.597-.234 3.6-.558 6.003 1.664-.838 3.566-1.613 5.714-2.325l1.113 3.437c-2.05.678-4.06 1.131-6.028 1.356.984.856 2.372 2.381 4.166 4.575l-2.906 2.059c-.935-1.274-2.041-3.009-3.316-5.206-1.194 2.275-2.244 4.013-3.147 5.206l-2.856-2.059c1.872-2.307 3.211-3.832 4.017-4.575-2.081-.402-4.058-.856-5.93-1.356' fill='%23ffffff'/%3E%3C/svg%3E%0A");
-      }
+  background-image: url("data:image/svg+xml,%3Csvg height='16' width='16' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m0 7.562 1.114-3.438c2.565.906 4.43 1.688 5.59 2.35-.306-2.921-.467-4.93-.484-6.027h3.511c-.05 1.597-.234 3.6-.558 6.003 1.664-.838 3.566-1.613 5.714-2.325l1.113 3.437c-2.05.678-4.06 1.131-6.028 1.356.984.856 2.372 2.381 4.166 4.575l-2.906 2.059c-.935-1.274-2.041-3.009-3.316-5.206-1.194 2.275-2.244 4.013-3.147 5.206l-2.856-2.059c1.872-2.307 3.211-3.832 4.017-4.575-2.081-.402-4.058-.856-5.93-1.356' fill='%23ffffff'/%3E%3C/svg%3E%0A");
+}
 
 .fieldset__legend--composite {
-  margin-top: 2px;
+  margin-block-start: 2px;
   color: inherit;
 }
 
@@ -118,26 +88,11 @@ _:-ms-fullscreen,
   color: inherit;
 }
 
-[dir="ltr"] .fieldset__label {
-  padding-left: var(--sp1);
-}
-
-[dir="rtl"] .fieldset__label {
-  padding-right: var(--sp1);
-}
-
-[dir="ltr"] .fieldset__label {
-  padding-right: var(--sp1);
-}
-
-[dir="rtl"] .fieldset__label {
-  padding-left: var(--sp1);
-}
-
 .fieldset__label {
   display: block;
-  padding-top: var(--sp0-5);
-  padding-bottom: var(--sp0-5);
+  padding-block: var(--sp0-5);
+  padding-inline-start: var(--sp1);
+  padding-inline-end: var(--sp1);
   color: var(--color--white);
   line-height: var(--line-height-s);
 }
@@ -147,8 +102,7 @@ _:-ms-fullscreen,
 }
 
 .fieldset__description {
-  margin-top: var(--sp0-5);
-  margin-bottom: var(--sp0-5);
+  margin-block: var(--sp0-5);
   font-size: var(--font-size-xs);
   line-height: var(--line-height-s);
 }
@@ -157,17 +111,9 @@ _:-ms-fullscreen,
   color: var(--input--disabled-fg-color);
 }
 
-[dir="ltr"] .fieldset__error-message {
-  padding-left: var(--sp1-5);
-}
-
-[dir="rtl"] .fieldset__error-message {
-  padding-right: var(--sp1-5);
-}
-
 .fieldset__error-message {
-  margin-top: var(--sp0-5);
-  margin-bottom: var(--sp0-5);
+  margin-block: var(--sp0-5);
+  padding-inline-start: var(--sp1-5);
   color: var(--color--red);
   background-image: url("data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23E33F1E' d='M9 0C4.03125 0 0 4.03125 0 9C0 13.9688 4.03125 18 9 18C13.9687 18 18 13.9688 18 9C18 4.03125 13.9687 0 9 0ZM10.5 14.6133C10.5 14.8242 10.3359 15 10.1367 15H7.88672C7.67578 15 7.5 14.8242 7.5 14.6133V12.3867C7.5 12.1758 7.67578 12 7.88672 12H10.1367C10.3359 12 10.5 12.1758 10.5 12.3867V14.6133ZM10.4766 10.582C10.4648 10.7461 10.2891 10.875 10.0781 10.875H7.91016C7.6875 10.875 7.51172 10.7461 7.51172 10.582L7.3125 3.30469C7.3125 3.22266 7.34766 3.14063 7.42969 3.09375C7.5 3.03516 7.60547 3 7.71094 3H10.2891C10.3945 3 10.5 3.03516 10.5703 3.09375C10.6523 3.14063 10.6875 3.22266 10.6875 3.30469L10.4766 10.582Z'/%3E%3C/svg%3E");
   background-repeat: no-repeat;
@@ -179,10 +125,10 @@ _:-ms-fullscreen,
 
 @media screen and (-ms-high-contrast: active) {
 
-.fieldset__error-message {
+  .fieldset__error-message {
     background-image: url("data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23ffffff' d='M9 0C4.03125 0 0 4.03125 0 9C0 13.9688 4.03125 18 9 18C13.9687 18 18 13.9688 18 9C18 4.03125 13.9687 0 9 0ZM10.5 14.6133C10.5 14.8242 10.3359 15 10.1367 15H7.88672C7.67578 15 7.5 14.8242 7.5 14.6133V12.3867C7.5 12.1758 7.67578 12 7.88672 12H10.1367C10.3359 12 10.5 12.1758 10.5 12.3867V14.6133ZM10.4766 10.582C10.4648 10.7461 10.2891 10.875 10.0781 10.875H7.91016C7.6875 10.875 7.51172 10.7461 7.51172 10.582L7.3125 3.30469C7.3125 3.22266 7.34766 3.14063 7.42969 3.09375C7.5 3.03516 7.60547 3 7.71094 3H10.2891C10.3945 3 10.5 3.03516 10.5703 3.09375C10.6523 3.14063 10.6875 3.22266 10.6875 3.30469L10.4766 10.582Z'/%3E%3C/svg%3E");
-}
   }
+}
 
 [dir="rtl"] .fieldset__error-message {
   background-position: left top;
@@ -193,7 +139,7 @@ _:-ms-fullscreen,
 }
 
 .fieldset__legend--invisible ~ .fieldset__wrapper {
-  margin-top: 0;
+  margin-block-start: 0;
   padding: 0;
 }
 
@@ -203,44 +149,14 @@ _:-ms-fullscreen,
   border-bottom-left-radius: var(--border-radius);
 }
 
-[dir="ltr"] .fieldset__wrapper--group {
-  margin-left: 0;
-}
-
-[dir="rtl"] .fieldset__wrapper--group {
-  margin-right: 0;
-}
-
-[dir="ltr"] .fieldset__wrapper--group {
-  margin-right: 0;
-}
-
-[dir="rtl"] .fieldset__wrapper--group {
-  margin-left: 0;
-}
-
 .fieldset__wrapper--group {
-  margin-top: 0;
-  margin-bottom: 0;
-}
-
-[dir="ltr"] .fieldset__wrapper > .container-inline {
-  padding-left: 0;
-}
-
-[dir="rtl"] .fieldset__wrapper > .container-inline {
-  padding-right: 0;
-}
-
-[dir="ltr"] .fieldset__wrapper > .container-inline {
-  padding-right: 0;
-}
-
-[dir="rtl"] .fieldset__wrapper > .container-inline {
-  padding-left: 0;
+  margin-block: 0;
+  margin-inline-start: 0;
+  margin-inline-end: 0;
 }
 
 .fieldset__wrapper > .container-inline {
-  padding-top: 0;
-  padding-bottom: 0;
+  padding-block: 0;
+  padding-inline-start: 0;
+  padding-inline-end: 0;
 }
diff --git a/core/themes/olivero/css/components/footer.css b/core/themes/olivero/css/components/footer.css
index cbc131e8c1..c14c18e96e 100644
--- a/core/themes/olivero/css/components/footer.css
+++ b/core/themes/olivero/css/components/footer.css
@@ -29,43 +29,29 @@
   background: linear-gradient(180deg, var(--color--gray-5) 0%, var(--color--gray-10) 100%);
 }
 
-[dir="ltr"] .site-footer .menu {
-    margin-left: 0;
-}
-
-[dir="rtl"] .site-footer .menu {
-    margin-right: 0;
-}
-
 .site-footer .menu {
-    list-style: none;
-  }
-
-[dir="ltr"] .site-footer .menu ul {
-      margin-left: var(--sp);
+  margin-inline-start: 0;
+  list-style: none;
 }
 
-[dir="rtl"] .site-footer .menu ul {
-      margin-right: var(--sp);
+.site-footer .menu ul {
+  margin-inline-start: var(--sp);
 }
 
 .site-footer .menu li {
-      margin-bottom: var(--sp0-5);
-    }
+  margin-block-end: var(--sp0-5);
+}
 
 .site-footer a {
-    color: inherit;
-  }
+  color: inherit;
+}
 
 .site-footer a:hover {
-      text-decoration: none;
-    }
+  text-decoration: none;
+}
 
 @media (min-width: 75rem) {
-  [dir="ltr"] body:not(.is-always-mobile-nav) .site-footer {
-    border-left: solid var(--content-left) var(--color--black);
-  }
-  [dir="rtl"] body:not(.is-always-mobile-nav) .site-footer {
-    border-right: solid var(--content-left) var(--color--black);
+  body:not(.is-always-mobile-nav) .site-footer {
+    border-inline-start: solid var(--content-left) var(--color--black);
   }
 }
diff --git a/core/themes/olivero/css/components/form-boolean.css b/core/themes/olivero/css/components/form-boolean.css
index 283b73c150..82530dbf67 100644
--- a/core/themes/olivero/css/components/form-boolean.css
+++ b/core/themes/olivero/css/components/form-boolean.css
@@ -40,94 +40,97 @@ input[type="radio"] {
   appearance: none;
 }
 
-input[type="checkbox"]:focus, input[type="radio"]:focus {
-    border: solid 2px var(--color--primary-50);
-    outline: solid 2px var(--color--primary-50);
-  }
+input[type="checkbox"]:focus,
+input[type="radio"]:focus {
+  border: solid 2px var(--color--primary-50);
+  outline: solid 2px var(--color--primary-50);
+}
 
 @supports (outline-style: double) {
 
-input[type="checkbox"]:focus, input[type="radio"]:focus {
-      border-width: 1px;
-      outline-width: 6px;
-      outline-style: double;
-      outline-offset: -1px;
+  input[type="checkbox"]:focus,
+  input[type="radio"]:focus {
+    border-width: 1px;
+    outline-width: 6px;
+    outline-style: double;
+    outline-offset: -1px;
   }
-    }
+}
 
-input[type="checkbox"]:hover, input[type="radio"]:hover {
-    border-color: var(--color--primary-60);
-  }
+input[type="checkbox"]:hover,
+input[type="radio"]:hover {
+  border-color: var(--color--primary-60);
+}
 
-input[type="checkbox"][disabled], input[type="radio"][disabled] {
-    background-color: var(--color--gray-100);
-  }
+input[type="checkbox"][disabled],
+input[type="radio"][disabled] {
+  background-color: var(--color--gray-100);
+}
 
-input[type="checkbox"][disabled]:hover, input[type="radio"][disabled]:hover {
-      border-color: var(--color--gray-60);
-    }
+input[type="checkbox"][disabled]:hover,
+input[type="radio"][disabled]:hover {
+  border-color: var(--color--gray-60);
+}
 
-input[type="checkbox"][disabled]:checked, input[type="radio"][disabled]:checked {
-      border-width: 1px;
-    }
+input[type="checkbox"][disabled]:checked,
+input[type="radio"][disabled]:checked {
+  border-width: 1px;
+}
 
-input[type="checkbox"]:checked, input[type="radio"]:checked {
-    border-width: 2px;
-  }
+input[type="checkbox"]:checked,
+input[type="radio"]:checked {
+  border-width: 2px;
+}
 
-input.error[type="checkbox"], input.error[type="radio"] {
-    border: solid 2px var(--color--red);
-  }
+input.error[type="checkbox"],
+input.error[type="radio"] {
+  border: solid 2px var(--color--red);
+}
 
-input.error[type="checkbox"]:focus, input.error[type="radio"]:focus {
-      outline-color: var(--color--red);
-      outline-offset: -2px;
-    }
+input.error[type="checkbox"]:focus,
+input.error[type="radio"]:focus {
+  outline-color: var(--color--red);
+  outline-offset: -2px;
+}
 
 /* Specific pseudo-element to apply red borders for IE11 bool elements in case of error */
 
-input.error[type="checkbox"]::-ms-check, input.error[type="radio"]::-ms-check {
-    border: 1px solid var(--color--red);
-  }
-
-[dir="ltr"] input[type="checkbox"] + label,[dir="ltr"]  input[type="radio"] + label {
-    padding-left: var(--sp0-5);
+input.error[type="checkbox"]::-ms-check,
+input.error[type="radio"]::-ms-check {
+  border: 1px solid var(--color--red);
 }
 
-[dir="rtl"] input[type="checkbox"] + label,[dir="rtl"]  input[type="radio"] + label {
-    padding-right: var(--sp0-5);
+input[type="checkbox"] + label,
+input[type="radio"] + label {
+  display: inline-block;
+  padding-inline-start: var(--sp0-5);
 }
 
-input[type="checkbox"] + label, input[type="radio"] + label {
-    display: inline-block;
-  }
-
 input[type="checkbox"]:checked {
-    background-image: url("data:image/svg+xml,%3Csvg width='17px' height='13px' viewBox='0 0 17 13' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cpath d='M14.8232,0.176777 C14.9209,0.0791457 15.0791,0.0791455 15.1768,0.176777 L16.9445,1.94454 C17.0422,2.04217 17.0422,2.20047 16.9445,2.2981 L6.23744,13.0052 C6.13981,13.1028 5.98151,13.1028 5.88388,13.0052 L0.176777,7.2981 C0.0791456,7.20047 0.0791456,7.04218 0.176777,6.94454 L1.94454,5.17678 C2.04217,5.07915 2.20047,5.07915 2.2981,5.17678 L5.88388,8.76256 C5.98151,8.86019 6.13981,8.86019 6.23744,8.76256 L14.8232,0.176777 Z' id='Path' fill='%232494DB' fill-rule='nonzero'%3E%3C/path%3E%3C/svg%3E");
-  }
+  background-image: url("data:image/svg+xml,%3Csvg width='17px' height='13px' viewBox='0 0 17 13' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cpath d='M14.8232,0.176777 C14.9209,0.0791457 15.0791,0.0791455 15.1768,0.176777 L16.9445,1.94454 C17.0422,2.04217 17.0422,2.20047 16.9445,2.2981 L6.23744,13.0052 C6.13981,13.1028 5.98151,13.1028 5.88388,13.0052 L0.176777,7.2981 C0.0791456,7.20047 0.0791456,7.04218 0.176777,6.94454 L1.94454,5.17678 C2.04217,5.07915 2.20047,5.07915 2.2981,5.17678 L5.88388,8.76256 C5.98151,8.86019 6.13981,8.86019 6.23744,8.76256 L14.8232,0.176777 Z' id='Path' fill='%232494DB' fill-rule='nonzero'%3E%3C/path%3E%3C/svg%3E");
+}
 
 input[type="radio"] {
   border-radius: 50%;
 }
 
 input[type="radio"]:checked {
-    background-image: url("data:image/svg+xml,%3Csvg width='17' height='17' viewBox='0 0 17 17' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='8.5' cy='8.5' r='8.5' fill='%232494DB'/%3E%3C/svg%3E%0A");
-    background-size: 1.0625rem;
-  }
+  background-image: url("data:image/svg+xml,%3Csvg width='17' height='17' viewBox='0 0 17 17' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='8.5' cy='8.5' r='8.5' fill='%232494DB'/%3E%3C/svg%3E%0A");
+  background-size: 1.0625rem;
+}
 
 input[type="radio"]:focus {
-    border-width: 2px;
-    border-color: var(--color--primary-50);
-    outline-color: transparent;
-    box-shadow: 0 0 0 2px white, 0 0 0 4px var(--color--primary-50);
-  }
+  border-width: 2px;
+  border-color: var(--color--primary-50);
+  outline-color: transparent;
+  box-shadow: 0 0 0 2px white, 0 0 0 4px var(--color--primary-50);
+}
 
 input.error[type="radio"]:focus {
-    outline-color: transparent;
-    box-shadow: 0 0 0 2px white, 0 0 0 4px var(--color--red);
-  }
+  outline-color: transparent;
+  box-shadow: 0 0 0 2px white, 0 0 0 4px var(--color--red);
+}
 
 .form-type-boolean {
-  margin-top: var(--sp1);
-  margin-bottom: var(--sp1);
+  margin-block: var(--sp1);
 }
diff --git a/core/themes/olivero/css/components/form-select.css b/core/themes/olivero/css/components/form-select.css
index 55880c6fdf..ff10f47663 100644
--- a/core/themes/olivero/css/components/form-select.css
+++ b/core/themes/olivero/css/components/form-select.css
@@ -27,27 +27,12 @@
   --form-element-select-icon: url("data:image/svg+xml,%3csvg width='18' height='11' viewBox='0 0 18 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M18 1.49699C18 1.35271 17.9279 1.19038 17.8196 1.08216L16.9178 0.18036C16.8096 0.0721439 16.6473 0 16.503 0C16.3587 0 16.1964 0.0721439 16.0882 0.18036L9 7.26854L1.91182 0.18036C1.80361 0.0721439 1.64128 0 1.49699 0C1.33467 0 1.19038 0.0721439 1.08216 0.18036L0.180361 1.08216C0.0721442 1.19038 0 1.35271 0 1.49699C0 1.64128 0.0721442 1.80361 0.180361 1.91182L8.58517 10.3166C8.69339 10.4248 8.85571 10.497 9 10.497C9.14429 10.497 9.30661 10.4248 9.41483 10.3166L17.8196 1.91182C17.9279 1.80361 18 1.64128 18 1.49699Z' fill='%235D7585'/%3e%3c/svg%3e");
 }
 
-[dir="ltr"] select {
-  padding-left: var(--sp);
-}
-
-[dir="rtl"] select {
-  padding-right: var(--sp);
-}
-
-[dir="ltr"] select {
-  padding-right: var(--sp3);
-}
-
-[dir="rtl"] select {
-  padding-left: var(--sp3);
-}
-
 select {
   max-width: 100%;
   height: var(--sp3);
-  padding-top: 0;
-  padding-bottom: 0;
+  padding-block: 0;
+  padding-inline-start: var(--sp);
+  padding-inline-end: var(--sp3);
   color: var(--color-text-neutral-loud);
   border: 1px solid var(--color--gray-60);
   border-radius: var(--border-radius);
@@ -62,102 +47,89 @@ select {
 }
 
 select:focus {
-    border: solid 2px var(--color--primary-50);
-    outline: solid 2px var(--color--primary-50);
-  }
+  border: solid 2px var(--color--primary-50);
+  outline: solid 2px var(--color--primary-50);
+}
 
 @supports (outline-style: double) {
 
-select:focus {
-      border-width: 1px;
-      outline-width: 6px;
-      outline-style: double;
-      outline-offset: -1px;
+  select:focus {
+    border-width: 1px;
+    outline-width: 6px;
+    outline-style: double;
+    outline-offset: -1px;
   }
-    }
+}
 
 /* Hides default chevron within Internet Explorer. */
 
 select::-ms-expand {
-    display: none;
-  }
+  display: none;
+}
 
 select[disabled] {
-    color: var(--color--gray-60);
-    background-color: var(--color--gray-100);
-  }
+  color: var(--color--gray-60);
+  background-color: var(--color--gray-100);
+}
 
 select.error {
-    border: solid 2px var(--color--red);
-  }
+  border: solid 2px var(--color--red);
+}
 
 select.error:focus {
-      outline-color: var(--color--red);
-    }
+  outline-color: var(--color--red);
+}
 
 select[multiple] {
-    height: auto;
-    padding: var(--sp0-5);
-    background-image: none;
-    line-height: 1; /* Needed by non-Chromium based MS Edge browsers. */
-  }
+  height: auto;
+  padding: var(--sp0-5);
+  background-image: none;
+  line-height: 1; /* Needed by non-Chromium based MS Edge browsers. */
+}
 
 select[multiple] option {
-      padding: var(--sp0-5);
-    }
+  padding: var(--sp0-5);
+}
 
 select.form-element--small {
-    height: var(--sp2-5);
-  }
+  height: var(--sp2-5);
+}
 
 /* Necessary to show chevron in forced colors mode in modern browsers. */
 
 @media (forced-colors: active) {
 
-[dir="ltr"] select {
-    padding-right: var(--sp);
-  }
-
-[dir="rtl"] select {
-    padding-left: var(--sp);
-  }
-
-select {
+  select {
+    padding-inline-end: var(--sp);
     background-image: none;
     -webkit-appearance: listbox;
     appearance: listbox; /* Default <select> appearance value for modern browsers. */
 
     /* Lets browser set <select> appearance to whatever the browser's default is. */
-}
-    @supports ((-webkit-appearance: revert) or (appearance: revert)) {
+  }
 
-select {
+  @supports ((-webkit-appearance: revert) or (appearance: revert)) {
+
+    select {
       -webkit-appearance: revert;
       appearance: revert;
-}
     }
   }
+}
 
 /* Necessary for Internet Explorer to show chevron. */
 
 @media screen and (-ms-high-contrast: active) {
 
-[dir="ltr"] select {
-    padding-right: 0;
-  }
-
-[dir="rtl"] select {
-    padding-left: 0;
-  }
-
-select {
+  select {
+    padding-inline-end: 0;
 
     /* Re-enable default chevron for Internet Explorer. */
-}
-    select::-ms-expand {
-      display: block;
-    }
   }
+  select::-ms-expand {
+    display: block;
+  }
+}
 
 [dir="rtl"] select {
   background-position: left var(--sp) center;
diff --git a/core/themes/olivero/css/components/form-text.css b/core/themes/olivero/css/components/form-text.css
index 20d31b7d7d..2da014cc3f 100644
--- a/core/themes/olivero/css/components/form-text.css
+++ b/core/themes/olivero/css/components/form-text.css
@@ -53,94 +53,78 @@ textarea {
 }
 
 :is([type="color"],[type="date"],[type="datetime-local"],[type="email"],[type="file"],[type="month"],[type="number"],[type="password"],[type="search"],[type="tel"],[type="text"],[type="time"],[type="url"],[type="week"],textarea):focus {
-    border: solid 2px var(--color--primary-50);
-    outline: solid 2px var(--color--primary-50);
-  }
+  border: solid 2px var(--color--primary-50);
+  outline: solid 2px var(--color--primary-50);
+}
 
 @supports (outline-style: double) {
 
-:is([type="color"],[type="date"],[type="datetime-local"],[type="email"],[type="file"],[type="month"],[type="number"],[type="password"],[type="search"],[type="tel"],[type="text"],[type="time"],[type="url"],[type="week"],textarea):focus {
-      border-width: 1px;
-      outline-width: 6px;
-      outline-style: double;
-      outline-offset: -1px;
+  :is([type="color"],[type="date"],[type="datetime-local"],[type="email"],[type="file"],[type="month"],[type="number"],[type="password"],[type="search"],[type="tel"],[type="text"],[type="time"],[type="url"],[type="week"],textarea):focus {
+    border-width: 1px;
+    outline-width: 6px;
+    outline-style: double;
+    outline-offset: -1px;
   }
-    }
+}
 
 :is([type="color"],[type="date"],[type="datetime-local"],[type="email"],[type="file"],[type="month"],[type="number"],[type="password"],[type="search"],[type="tel"],[type="text"],[type="time"],[type="url"],[type="week"],textarea)::-ms-clear {
-    display: none;
-  }
+  display: none;
+}
 
 [disabled]:is([type="color"],[type="date"],[type="datetime-local"],[type="email"],[type="file"],[type="month"],[type="number"],[type="password"],[type="search"],[type="tel"],[type="text"],[type="time"],[type="url"],[type="week"],textarea) {
-    color: var(--color--gray-60);
-    background-color: var(--color--gray-100);
-  }
+  color: var(--color--gray-60);
+  background-color: var(--color--gray-100);
+}
 
 .error:is([type="color"],[type="date"],[type="datetime-local"],[type="email"],[type="file"],[type="month"],[type="number"],[type="password"],[type="search"],[type="tel"],[type="text"],[type="time"],[type="url"],[type="week"],textarea) {
-    border: solid 2px var(--color--red);
-  }
+  border: solid 2px var(--color--red);
+}
 
 .error:is([type="color"],[type="date"],[type="datetime-local"],[type="email"],[type="file"],[type="month"],[type="number"],[type="password"],[type="search"],[type="tel"],[type="text"],[type="time"],[type="url"],[type="week"],textarea):focus {
-      outline-color: var(--color--red);
-      outline-offset: -2px;
-    }
+  outline-color: var(--color--red);
+  outline-offset: -2px;
+}
 
 .error:is([type="color"],[type="date"],[type="datetime-local"],[type="email"],[type="file"],[type="month"],[type="number"],[type="password"],[type="search"],[type="tel"],[type="text"],[type="time"],[type="url"],[type="week"],textarea) + .ck-editor > .ck-editor__main {
-      border: solid 2px var(--color--red);
-    }
+  border: solid 2px var(--color--red);
+}
 
 .form-element--small:is([type="color"],[type="date"],[type="datetime-local"],[type="email"],[type="file"],[type="month"],[type="number"],[type="password"],[type="search"],[type="tel"],[type="text"],[type="time"],[type="url"],[type="week"],textarea) {
-    min-height: var(--sp2-5);
-  }
+  min-height: var(--sp2-5);
+}
 
 @media (min-width: 31.25rem) {
 
-[type="color"],
-[type="date"],
-[type="datetime-local"],
-[type="email"],
-[type="file"],
-[type="month"],
-[type="number"],
-[type="password"],
-[type="search"],
-[type="tel"],
-[type="text"],
-[type="time"],
-[type="url"],
-[type="week"],
-textarea {
+  [type="color"],
+  [type="date"],
+  [type="datetime-local"],
+  [type="email"],
+  [type="file"],
+  [type="month"],
+  [type="number"],
+  [type="password"],
+  [type="search"],
+  [type="tel"],
+  [type="text"],
+  [type="time"],
+  [type="url"],
+  [type="week"],
+  textarea {
     width: auto;
-}
   }
-
-/* Ensure that date field isn't larger than other fields. */
-
-[dir="ltr"] [type="date"]::-webkit-datetime-edit-fields-wrapper {
-    padding-left: 0;
-}
-
-[dir="rtl"] [type="date"]::-webkit-datetime-edit-fields-wrapper {
-    padding-right: 0;
-}
-
-[dir="ltr"] [type="date"]::-webkit-datetime-edit-fields-wrapper {
-    padding-right: 0;
 }
 
-[dir="rtl"] [type="date"]::-webkit-datetime-edit-fields-wrapper {
-    padding-left: 0;
-}
+/* Ensure that date field isn't larger than other fields. */
 
 [type="date"]::-webkit-datetime-edit-fields-wrapper {
-    padding-top: 0;
-    padding-bottom: 0;
-  }
+  padding-block: 0;
+  padding-inline-start: 0;
+  padding-inline-end: 0;
+}
 
 [type="file"] {
   height: auto;
-  padding-top: var(--sp0-75);
-  padding-bottom: var(--sp0-75);
+  padding-block: var(--sp0-75);
 }
 
 [type="color"] {
diff --git a/core/themes/olivero/css/components/form.css b/core/themes/olivero/css/components/form.css
index a39b8c837d..432b287ee3 100644
--- a/core/themes/olivero/css/components/form.css
+++ b/core/themes/olivero/css/components/form.css
@@ -32,13 +32,11 @@
  */
 
 .form-item {
-  margin-top: var(--sp1);
-  margin-bottom: var(--sp1);
+  margin-block: var(--sp1);
 }
 
 .form-item__label--multiple-value-form {
-  margin-top: 0;
-  margin-bottom: 0;
+  margin-block: 0;
   font-size: inherit;
   font-weight: inherit;
   line-height: inherit;
@@ -52,8 +50,7 @@
 
 tr .form-item,
 .container-inline .form-item {
-  margin-top: var(--sp0-5);
-  margin-bottom: var(--sp0-5);
+  margin-block: var(--sp0-5);
 }
 
 /**
@@ -62,21 +59,15 @@ tr .form-item,
 
 .form-item__label {
   display: block;
-  margin-top: var(--sp0-5);
-  margin-bottom: var(--sp0-5);
-}
-
-[dir="ltr"] .container-inline .form-item__label {
-  margin-right: 1em;
+  margin-block: var(--sp0-5);
 }
 
-[dir="rtl"] .container-inline .form-item__label {
-  margin-left: 1em;
+.container-inline .form-item__label {
+  margin-inline-end: 1em;
 }
 
 .form-item__label--multiple-value-form {
-  margin-top: 0;
-  margin-bottom: 0;
+  margin-block: 0;
   font-size: inherit;
   font-weight: inherit;
   line-height: inherit;
@@ -106,8 +97,7 @@ tr .form-item,
   display: inline-block;
   width: 0.5rem;
   height: 0.5rem;
-  margin-left: 0.3em;
-  margin-right: 0.3em;
+  margin-inline: 0.3em;
   content: "";
   vertical-align: text-top;
   /* Use a background image to prevent screen readers from announcing the text. */
@@ -118,44 +108,35 @@ tr .form-item,
 
 @media screen and (-ms-high-contrast: active) {
 
-.form-item__label.form-required::after,
-.fieldset__label.form-required::after,
-.required-mark::after {
+  .form-item__label.form-required::after,
+  .fieldset__label.form-required::after,
+  .required-mark::after {
     background-image: url("data:image/svg+xml,%3Csvg height='16' width='16' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m0 7.562 1.114-3.438c2.565.906 4.43 1.688 5.59 2.35-.306-2.921-.467-4.93-.484-6.027h3.511c-.05 1.597-.234 3.6-.558 6.003 1.664-.838 3.566-1.613 5.714-2.325l1.113 3.437c-2.05.678-4.06 1.131-6.028 1.356.984.856 2.372 2.381 4.166 4.575l-2.906 2.059c-.935-1.274-2.041-3.009-3.316-5.206-1.194 2.275-2.244 4.013-3.147 5.206l-2.856-2.059c1.872-2.307 3.211-3.832 4.017-4.575-2.081-.402-4.058-.856-5.93-1.356' fill='%23ffffff'/%3E%3C/svg%3E%0A");
-}
   }
+}
 
 /**
  * Form item description.
  */
 
 .form-item__description {
-  margin-top: var(--sp0-5);
-  margin-bottom: var(--sp0-5);
+  margin-block: var(--sp0-5);
   max-width: 60ch;
   font-size: var(--font-size-s);
   line-height: var(--line-height-s);
 }
 
 .field-multiple-table + .form-item__description {
-  margin-top: 0;
+  margin-block-start: 0;
 }
 
 /**
  * Error message (Inline form errors).
  */
 
-[dir="ltr"] .form-item--error-message {
-  padding-left: var(--sp1-5);
-}
-
-[dir="rtl"] .form-item--error-message {
-  padding-right: var(--sp1-5);
-}
-
 .form-item--error-message {
-  margin-top: var(--sp0-5);
-  margin-bottom: var(--sp0-5);
+  margin-block: var(--sp0-5);
+  padding-inline-start: var(--sp1-5);
   color: var(--color--red);
   background-image: url("data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23E33F1E' d='M9 0C4.03125 0 0 4.03125 0 9C0 13.9688 4.03125 18 9 18C13.9687 18 18 13.9688 18 9C18 4.03125 13.9687 0 9 0ZM10.5 14.6133C10.5 14.8242 10.3359 15 10.1367 15H7.88672C7.67578 15 7.5 14.8242 7.5 14.6133V12.3867C7.5 12.1758 7.67578 12 7.88672 12H10.1367C10.3359 12 10.5 12.1758 10.5 12.3867V14.6133ZM10.4766 10.582C10.4648 10.7461 10.2891 10.875 10.0781 10.875H7.91016C7.6875 10.875 7.51172 10.7461 7.51172 10.582L7.3125 3.30469C7.3125 3.22266 7.34766 3.14063 7.42969 3.09375C7.5 3.03516 7.60547 3 7.71094 3H10.2891C10.3945 3 10.5 3.03516 10.5703 3.09375C10.6523 3.14063 10.6875 3.22266 10.6875 3.30469L10.4766 10.582Z'/%3E%3C/svg%3E");
   background-repeat: no-repeat;
@@ -167,10 +148,10 @@ tr .form-item,
 
 @media screen and (-ms-high-contrast: active) {
 
-.form-item--error-message {
+  .form-item--error-message {
     background-image: url("data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23ffffff' d='M9 0C4.03125 0 0 4.03125 0 9C0 13.9688 4.03125 18 9 18C13.9687 18 18 13.9688 18 9C18 4.03125 13.9687 0 9 0ZM10.5 14.6133C10.5 14.8242 10.3359 15 10.1367 15H7.88672C7.67578 15 7.5 14.8242 7.5 14.6133V12.3867C7.5 12.1758 7.67578 12 7.88672 12H10.1367C10.3359 12 10.5 12.1758 10.5 12.3867V14.6133ZM10.4766 10.582C10.4648 10.7461 10.2891 10.875 10.0781 10.875H7.91016C7.6875 10.875 7.51172 10.7461 7.51172 10.582L7.3125 3.30469C7.3125 3.22266 7.34766 3.14063 7.42969 3.09375C7.5 3.03516 7.60547 3 7.71094 3H10.2891C10.3945 3 10.5 3.03516 10.5703 3.09375C10.6523 3.14063 10.6875 3.22266 10.6875 3.30469L10.4766 10.582Z'/%3E%3C/svg%3E");
-}
   }
+}
 
 [dir="rtl"] .form-item--error-message {
   background-position: right top;
@@ -184,14 +165,12 @@ tr .form-item,
   display: flex;
   flex-wrap: wrap;
   align-items: flex-start;
-  margin-top: var(--sp0-5);
-  margin-bottom: var(--sp0-5);
+  margin-block: var(--sp0-5);
 }
 
 .form-actions .button,
 .form-actions .action-link {
-  margin-top: var(--sp0-5);
-  margin-bottom: var(--sp0-5);
+  margin-block: var(--sp0-5);
 }
 
 .form-actions .ajax-progress--throbber {
@@ -216,16 +195,10 @@ tr .form-item,
   min-width: 1px;
 }
 
-[dir="ltr"] .form-item--editor-format .form-item__label,[dir="ltr"] 
-.form-item--editor-format .form-item__prefix,[dir="ltr"] 
-.form-item--editor-format .form-item__suffix {
-  margin-right: var(--sp0-5);
-}
-
-[dir="rtl"] .form-item--editor-format .form-item__label,[dir="rtl"] 
-.form-item--editor-format .form-item__prefix,[dir="rtl"] 
+.form-item--editor-format .form-item__label,
+.form-item--editor-format .form-item__prefix,
 .form-item--editor-format .form-item__suffix {
-  margin-left: var(--sp0-5);
+  margin-inline-end: var(--sp0-5);
 }
 
 .form-item--editor-format .form-item__description,
@@ -239,16 +212,16 @@ tr .form-item,
  */
 
 .form--inline > * {
-    display: inline-block;
-    margin-top: var(--sp0-5);
-    margin-bottom: 0;
-    vertical-align: top; /* Ensure proper alignment if description is present. */
-  }
+  display: inline-block;
+  margin-top: var(--sp0-5);
+  margin-bottom: 0;
+  vertical-align: top; /* Ensure proper alignment if description is present. */
+}
 
 .form--inline .form-item__label {
-    margin: 0;
-  }
+  margin: 0;
+}
 
 .form--inline .form-actions {
-    margin-top: var(--sp1-5);
-  }
+  margin-top: var(--sp1-5);
+}
diff --git a/core/themes/olivero/css/components/forum.css b/core/themes/olivero/css/components/forum.css
index 7e109d77bf..eb388c836c 100644
--- a/core/themes/olivero/css/components/forum.css
+++ b/core/themes/olivero/css/components/forum.css
@@ -24,8 +24,8 @@
 /* Width of the entire grid maxes out. */
 
 .forum table {
-    width: 100%;
-  }
+  width: 100%;
+}
 
 .forum__name--link,
 .forum__last-reply a,
diff --git a/core/themes/olivero/css/components/header-buttons-mobile.css b/core/themes/olivero/css/components/header-buttons-mobile.css
index 0d35d56774..1a4cf63565 100644
--- a/core/themes/olivero/css/components/header-buttons-mobile.css
+++ b/core/themes/olivero/css/components/header-buttons-mobile.css
@@ -23,38 +23,31 @@
 
 /* Width of the entire grid maxes out. */
 
-[dir="ltr"] .mobile-buttons {
-  margin-left: auto;
-}
-
-[dir="rtl"] .mobile-buttons {
-  margin-right: auto;
-}
-
 .mobile-buttons {
-  margin-top: var(--sp0-5);
+  margin-block-start: var(--sp0-5);
+  margin-inline-start: auto;
 }
 
 @media (min-width: 31.25rem) {
 
-.mobile-buttons {
-    margin-top: var(--sp2);
-}
+  .mobile-buttons {
+    margin-block-start: var(--sp2);
   }
+}
 
 @media (min-width: 43.75rem) {
 
-.mobile-buttons {
-    margin-top: var(--sp4);
-}
+  .mobile-buttons {
+    margin-block-start: var(--sp4);
   }
+}
 
 @media (min-width: 75rem) {
 
-.mobile-buttons {
-    margin-top: var(--sp6);
-}
+  .mobile-buttons {
+    margin-block-start: var(--sp6);
   }
+}
 
 @media (min-width: 75rem) {
   body:not(.is-always-mobile-nav) .mobile-buttons {
diff --git a/core/themes/olivero/css/components/header-navigation.css b/core/themes/olivero/css/components/header-navigation.css
index 578115024b..a0fe51fb08 100644
--- a/core/themes/olivero/css/components/header-navigation.css
+++ b/core/themes/olivero/css/components/header-navigation.css
@@ -23,34 +23,11 @@
 
 /* Width of the entire grid maxes out. */
 
-[dir="ltr"] .header-nav {
-  left: 100%;
-}
-
-[dir="rtl"] .header-nav {
-  right: 100%;
-}
-
-[dir="ltr"] .header-nav {
-  padding-left: var(--sp);
-}
-
-[dir="rtl"] .header-nav {
-  padding-right: var(--sp);
-}
-
-[dir="ltr"] .header-nav {
-  padding-right: var(--sp);
-}
-
-[dir="rtl"] .header-nav {
-  padding-left: var(--sp);
-}
-
 .header-nav {
   position: fixed;
   z-index: 501; /* Appear above overlay and contextual links in header. */
-  top: 0;
+  inset-block-start: 0;
+  inset-inline-start: 100%;
   visibility: hidden;
   overflow: auto;
   /* Ensure that header nav not use additional space and force system branding
@@ -59,55 +36,49 @@
   width: 100%;
   max-width: var(--mobile-nav-width);
   height: 100%;
-  padding-top: 0;
-  padding-bottom: var(--sp);
+  padding-block: 0 var(--sp);
+  padding-inline-start: var(--sp);
+  padding-inline-end: var(--sp);
   /* Create room for the "close" button. We cannot use margin because the
    * mobile navigation needs to slide beneath the button, but we also cannot
    * use padding because that would enable the button to scroll out of the
    * viewport on short screens. */
-  border-top: solid var(--color--white) calc(var(--sp3) + var(--drupal-displace-offset-top, 0px));
+  border-block-start: solid var(--color--white) calc(var(--sp3) + var(--drupal-displace-offset-top, 0px));
   background-color: var(--color--white);
   box-shadow: 0 0 72px rgba(0, 0, 0, 0.1);
 }
 
 .header-nav.is-active {
-    visibility: visible;
-    transform: translateX(-100%); /* LTR */
-  }
+  visibility: visible;
+  transform: translateX(-100%); /* LTR */
+}
 
 [dir="rtl"] .header-nav.is-active {
-      transform: translateX(100%);
-    }
+  transform: translateX(100%);
+}
 
 @media (min-width: 31.25rem) {
 
-.header-nav {
+  .header-nav {
     border-top-width: calc(var(--sp5) + var(--drupal-displace-offset-top, 0px));
-}
   }
+}
 
 @media (min-width: 43.75rem) {
 
-[dir="ltr"] .header-nav {
-    padding-left: var(--sp3);
-  }
-
-[dir="rtl"] .header-nav {
-    padding-right: var(--sp3);
-  }
-
-.header-nav {
-    padding-bottom: var(--sp3);
+  .header-nav {
+    padding-block-end: var(--sp3);
+    padding-inline-start: var(--sp3);
     border-top-width: calc(var(--sp7) + var(--drupal-displace-offset-top, 0px));
-}
   }
+}
 
 @media (min-width: 62.5rem) {
 
-.header-nav {
+  .header-nav {
     grid-column: 5 / 14;
-}
   }
+}
 
 /*
    * Ensure top border has the same color as the background when in forced colors.
@@ -115,10 +86,10 @@
 
 @media (forced-colors: active) {
 
-.header-nav {
+  .header-nav {
     border-top-color: canvas;
-}
   }
+}
 
 /*
  * Only apply transition styles when JS is loaded. This
@@ -131,23 +102,7 @@ html.js .header-nav {
 
 @media (min-width: 75rem) {
 
-[dir="ltr"] body:not(.is-always-mobile-nav) .header-nav {
-    padding-left: 0;
-  }
-
-[dir="rtl"] body:not(.is-always-mobile-nav) .header-nav {
-    padding-right: 0;
-  }
-
-[dir="ltr"] body:not(.is-always-mobile-nav) .header-nav {
-    padding-right: 0;
-  }
-
-[dir="rtl"] body:not(.is-always-mobile-nav) .header-nav {
-    padding-left: 0;
-  }
-
-body:not(.is-always-mobile-nav) .header-nav {
+  body:not(.is-always-mobile-nav) .header-nav {
     position: static;
     display: flex;
     visibility: visible;
@@ -157,61 +112,41 @@ body:not(.is-always-mobile-nav) .header-nav {
     justify-content: flex-end;
     max-width: none;
     height: var(--header-height-wide-when-fixed);
-    margin-top: auto;
-    padding-top: 0;
-    padding-bottom: 0;
+    margin-block-start: auto;
+    padding-block: 0;
+    padding-inline-start: 0;
+    padding-inline-end: 0;
     transition: transform 0.2s;
     transform: none;
-    border-top: 0;
+    border-block-start: 0;
     box-shadow: none;
-}
   }
+}
 
 @media (min-width: 75rem) {
 
-[dir="ltr"] body.is-always-mobile-nav .header-nav {
-      padding-right: var(--sp);
-  }
-
-[dir="rtl"] body.is-always-mobile-nav .header-nav {
-      padding-left: var(--sp);
-  }
-
-body.is-always-mobile-nav .header-nav {
-      overflow: auto;
-      max-width: calc((7 * (var(--grid-col-width) + var(--grid-gap))));
-      transition: transform 0.2s, visibility 0.2s;
-      border-top-width: calc(var(--drupal-displace-offset-top, 0px) + var(--sp11));
+  body.is-always-mobile-nav .header-nav {
+    overflow: auto;
+    max-width: calc((7 * (var(--grid-col-width) + var(--grid-gap))));
+    padding-inline-end: var(--sp);
+    transition: transform 0.2s, visibility 0.2s;
+    border-top-width: calc(var(--drupal-displace-offset-top, 0px) + var(--sp11));
   }
-    }
+}
 
 @media (min-width: 90rem) {
 
-[dir="ltr"] body.is-always-mobile-nav .header-nav {
-      padding-right: calc(100vw - (var(--max-width) + var(--content-left) - var(--sp)));
-  }
-
-[dir="rtl"] body.is-always-mobile-nav .header-nav {
-      padding-left: calc(100vw - (var(--max-width) + var(--content-left) - var(--sp)));
-  }
-
-body.is-always-mobile-nav .header-nav {
-      max-width: calc(100vw - (var(--max-width) + var(--content-left)) + ((7 * (var(--grid-col-width) + var(--grid-gap)))));
+  body.is-always-mobile-nav .header-nav {
+    max-width: calc(100vw - (var(--max-width) + var(--content-left)) + ((7 * (var(--grid-col-width) + var(--grid-gap)))));
+    padding-inline-end: calc(100vw - (var(--max-width) + var(--content-left) - var(--sp)));
   }
-    }
-
-[dir="ltr"] .header-nav-overlay {
-  left: 0;
-}
-
-[dir="rtl"] .header-nav-overlay {
-  right: 0;
 }
 
 .header-nav-overlay {
   position: fixed;
   z-index: 101;
-  top: 0;
+  inset-block-start: 0;
+  inset-inline-start: 0;
   display: none;
   width: 100%;
   height: 100vh;
@@ -221,11 +156,11 @@ body.is-always-mobile-nav .header-nav {
 
 @media (forced-colors: active) {
 
-.header-nav-overlay {
+  .header-nav-overlay {
     background: canvastext;
-}
   }
+}
 
 .is-overlay-active .header-nav-overlay {
-    display: block;
+  display: block;
 }
diff --git a/core/themes/olivero/css/components/header-search-narrow.css b/core/themes/olivero/css/components/header-search-narrow.css
index ab1b1d4b19..45076a15a1 100644
--- a/core/themes/olivero/css/components/header-search-narrow.css
+++ b/core/themes/olivero/css/components/header-search-narrow.css
@@ -24,289 +24,204 @@
 /* Width of the entire grid maxes out. */
 
 .block-search-narrow {
-  margin-left: calc(-1 * var(--sp));
-  margin-right: calc(-1 * var(--sp));
-  margin-bottom: var(--sp2);
+  margin-inline: calc(-1 * var(--sp));
+  margin-block-end: var(--sp2);
   background: var(--color--black);
 }
 
 .block-search-narrow .search-block-form {
-    display: flex;
-  }
-
-.block-search-narrow .form-item {
-    flex-grow: 1;
-    margin: 0;
-  }
-
-.block-search-narrow .form-actions {
-    margin: 0;
-  }
-
-[dir="ltr"] .block-search-narrow input[type="search"] {
-    padding-left: var(--sp);
-}
-
-[dir="rtl"] .block-search-narrow input[type="search"] {
-    padding-right: var(--sp);
+  display: flex;
 }
 
-[dir="ltr"] .block-search-narrow input[type="search"] {
-    padding-right: var(--sp);
+.block-search-narrow .form-item {
+  flex-grow: 1;
+  margin: 0;
 }
 
-[dir="rtl"] .block-search-narrow input[type="search"] {
-    padding-left: var(--sp);
+.block-search-narrow .form-actions {
+  margin: 0;
 }
 
 .block-search-narrow input[type="search"] {
-    width: calc(100% + var(--sp2));
-    height: calc(3 * var(--sp));
-    padding-top: 0;
-    padding-bottom: 0;
-    transition: background-size 0.4s;
-    color: var(--color--white);
-    border: solid 1px transparent;
-    background-color: transparent;
-    background-image: linear-gradient(var(--color--primary-50), var(--color--primary-50)); /* Two values are needed for IE11 support. */
-    background-repeat: no-repeat;
-    background-position: bottom left; /* LTR */
-    background-size: 0% 0.3125rem;
-    box-shadow: none;
-    font-family: var(--font-serif);
-    font-size: 1rem;
-    -webkit-appearance: none;
-  }
+  width: calc(100% + var(--sp2));
+  height: calc(3 * var(--sp));
+  padding-block: 0;
+  padding-inline-start: var(--sp);
+  padding-inline-end: var(--sp);
+  transition: background-size 0.4s;
+  color: var(--color--white);
+  border: solid 1px transparent;
+  background-color: transparent;
+  background-image: linear-gradient(var(--color--primary-50), var(--color--primary-50)); /* Two values are needed for IE11 support. */
+  background-repeat: no-repeat;
+  background-position: bottom left; /* LTR */
+  background-size: 0% 0.3125rem;
+  box-shadow: none;
+  font-family: var(--font-serif);
+  font-size: 1rem;
+  -webkit-appearance: none;
+}
 
 .block-search-narrow input[type="search"]::-ms-clear {
-      width: 2.5rem;
-      opacity: 0.5;
-    }
+  width: 2.5rem;
+  opacity: 0.5;
+}
 
 .block-search-narrow input[type="search"]:focus {
-      outline: solid 4px transparent;
-      outline-offset: -4px;
-      background-size: 100% 0.3125rem;
+  outline: solid 4px transparent;
+  outline-offset: -4px;
+  background-size: 100% 0.3125rem;
 
-      /*
+  /*
         We normally indicate focus by animating background-image width. This isn't
         available in IE11 when in Windows high contrast mode.
       */
-    }
+}
 
 @media screen and (-ms-high-contrast: active) {
 
-.block-search-narrow input[type="search"]:focus {
-        border-bottom-width: 5px;
-    }
-      }
-
-@media (min-width: 43.75rem) {
-
-[dir="ltr"] .block-search-narrow input[type="search"] {
-      padding-left: var(--sp2);
+  .block-search-narrow input[type="search"]:focus {
+    border-bottom-width: 5px;
   }
-
-[dir="rtl"] .block-search-narrow input[type="search"] {
-      padding-right: var(--sp2);
-  }
-
-[dir="ltr"] .block-search-narrow input[type="search"] {
-      padding-right: var(--sp2);
-  }
-
-[dir="rtl"] .block-search-narrow input[type="search"] {
-      padding-left: var(--sp2);
-  }
-
-.block-search-narrow input[type="search"] {
-      height: calc(4 * var(--sp));
-  }
-    }
-
-[dir="ltr"] .block-search-narrow .search-form__submit {
-    margin-left: 0;
-}
-
-[dir="rtl"] .block-search-narrow .search-form__submit {
-    margin-right: 0;
-}
-
-[dir="ltr"] .block-search-narrow .search-form__submit {
-    margin-right: 0;
-}
-
-[dir="rtl"] .block-search-narrow .search-form__submit {
-    margin-left: 0;
-}
-
-[dir="ltr"] .block-search-narrow .search-form__submit {
-    padding-left: 0;
-}
-
-[dir="rtl"] .block-search-narrow .search-form__submit {
-    padding-right: 0;
 }
 
-[dir="ltr"] .block-search-narrow .search-form__submit {
-    padding-right: 0;
-}
+@media (min-width: 43.75rem) {
 
-[dir="rtl"] .block-search-narrow .search-form__submit {
-    padding-left: 0;
+  .block-search-narrow input[type="search"] {
+    height: calc(4 * var(--sp));
+    padding-inline-start: var(--sp2);
+    padding-inline-end: var(--sp2);
+  }
 }
 
 .block-search-narrow .search-form__submit {
-    position: relative;
-    overflow: hidden;
-    align-self: stretch;
-    width: var(--sp3);
-    height: auto;
-    margin-top: 0;
-    margin-bottom: 0;
-    padding-top: 0;
-    padding-bottom: 0;
-    cursor: pointer;
-    border-color: transparent;
-    background-color: transparent;
-
-    /*
+  position: relative;
+  overflow: hidden;
+  align-self: stretch;
+  width: var(--sp3);
+  height: auto;
+  margin-block: 0;
+  margin-inline-start: 0;
+  margin-inline-end: 0;
+  padding-block: 0;
+  padding-inline-start: 0;
+  padding-inline-end: 0;
+  cursor: pointer;
+  border-color: transparent;
+  background-color: transparent;
+
+  /*
       When in Windows high contrast mode, FF will not output either background
       images or SVGs that are nested directly within a <button> element, so we add a <span>.
     */
-  }
-
-[dir="ltr"] .block-search-narrow .search-form__submit .icon--search {
-      left: 0;
-}
-
-[dir="rtl"] .block-search-narrow .search-form__submit .icon--search {
-      right: 0;
 }
 
 .block-search-narrow .search-form__submit .icon--search {
-      position: absolute;
-      top: 0;
-      display: block;
-      width: 100%; /* Width of the SVG background image. */
-      height: 100%;
-      pointer-events: none;
-      background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='26' height='27.2' viewBox='0 0 26 27.2'%3e  %3cpath fill='%23fff' d='M25.8,25.5l-5.3-5.3c2.1-2.1,3.4-5.1,3.4-8.3C23.9,5.3,18.5,0,11.9,0C5.3,0,0,5.3,0,11.9c0,6.6,5.3,11.9,11.9,11.9c2.6,0,5.1-0.9,7-2.3l5.4,5.4c0.4,0.4,1,0.4,1.4,0C26.1,26.6,26.1,25.9,25.8,25.5z M11.9,21.9c-5.5,0-9.9-4.4-9.9-9.9S6.4,2,11.9,2c5.5,0,9.9,4.4,9.9,9.9S17.4,21.9,11.9,21.9z'/%3e%3c/svg%3e");
-      background-repeat: no-repeat;
-      background-position: center;
-      background-size: auto;
-    }
-
-[dir="ltr"] .block-search-narrow .search-form__submit .icon--search:after {
-        left: 0;
-}
-
-[dir="rtl"] .block-search-narrow .search-form__submit .icon--search:after {
-        right: 0;
+  position: absolute;
+  inset-block-start: 0;
+  inset-inline-start: 0;
+  display: block;
+  width: 100%; /* Width of the SVG background image. */
+  height: 100%;
+  pointer-events: none;
+  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='26' height='27.2' viewBox='0 0 26 27.2'%3e  %3cpath fill='%23fff' d='M25.8,25.5l-5.3-5.3c2.1-2.1,3.4-5.1,3.4-8.3C23.9,5.3,18.5,0,11.9,0C5.3,0,0,5.3,0,11.9c0,6.6,5.3,11.9,11.9,11.9c2.6,0,5.1-0.9,7-2.3l5.4,5.4c0.4,0.4,1,0.4,1.4,0C26.1,26.6,26.1,25.9,25.8,25.5z M11.9,21.9c-5.5,0-9.9-4.4-9.9-9.9S6.4,2,11.9,2c5.5,0,9.9,4.4,9.9,9.9S17.4,21.9,11.9,21.9z'/%3e%3c/svg%3e");
+  background-repeat: no-repeat;
+  background-position: center;
+  background-size: auto;
 }
 
 .block-search-narrow .search-form__submit .icon--search:after {
-        position: absolute;
-        bottom: 0;
-        width: 100%;
-        height: 0;
-        content: "";
-        transition: transform 0.2s;
-        transform: scaleX(0);
-        transform-origin: left; /* LTR */
-        border-top: solid 0.3125rem var(--color--primary-50);
-      }
+  position: absolute;
+  inset-block-end: 0;
+  inset-inline-start: 0;
+  width: 100%;
+  height: 0;
+  content: "";
+  transition: transform 0.2s;
+  transform: scaleX(0);
+  transform-origin: left; /* LTR */
+  border-block-start: solid 0.3125rem var(--color--primary-50);
+}
 
 @media (forced-colors: active) {
 
-.block-search-narrow .search-form__submit .icon--search {
-        background: buttontext;
-        -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='26' height='27.2' viewBox='0 0 26 27.2'%3e  %3cpath fill='%23fff' d='M25.8,25.5l-5.3-5.3c2.1-2.1,3.4-5.1,3.4-8.3C23.9,5.3,18.5,0,11.9,0C5.3,0,0,5.3,0,11.9c0,6.6,5.3,11.9,11.9,11.9c2.6,0,5.1-0.9,7-2.3l5.4,5.4c0.4,0.4,1,0.4,1.4,0C26.1,26.6,26.1,25.9,25.8,25.5z M11.9,21.9c-5.5,0-9.9-4.4-9.9-9.9S6.4,2,11.9,2c5.5,0,9.9,4.4,9.9,9.9S17.4,21.9,11.9,21.9z'/%3e%3c/svg%3e");
-        mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='26' height='27.2' viewBox='0 0 26 27.2'%3e  %3cpath fill='%23fff' d='M25.8,25.5l-5.3-5.3c2.1-2.1,3.4-5.1,3.4-8.3C23.9,5.3,18.5,0,11.9,0C5.3,0,0,5.3,0,11.9c0,6.6,5.3,11.9,11.9,11.9c2.6,0,5.1-0.9,7-2.3l5.4,5.4c0.4,0.4,1,0.4,1.4,0C26.1,26.6,26.1,25.9,25.8,25.5z M11.9,21.9c-5.5,0-9.9-4.4-9.9-9.9S6.4,2,11.9,2c5.5,0,9.9,4.4,9.9,9.9S17.4,21.9,11.9,21.9z'/%3e%3c/svg%3e");
-        -webkit-mask-repeat: no-repeat;
-        mask-repeat: no-repeat;
-        -webkit-mask-position: center;
-        mask-position: center;
-    }
-      }
+  .block-search-narrow .search-form__submit .icon--search {
+    background: buttontext;
+    -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='26' height='27.2' viewBox='0 0 26 27.2'%3e  %3cpath fill='%23fff' d='M25.8,25.5l-5.3-5.3c2.1-2.1,3.4-5.1,3.4-8.3C23.9,5.3,18.5,0,11.9,0C5.3,0,0,5.3,0,11.9c0,6.6,5.3,11.9,11.9,11.9c2.6,0,5.1-0.9,7-2.3l5.4,5.4c0.4,0.4,1,0.4,1.4,0C26.1,26.6,26.1,25.9,25.8,25.5z M11.9,21.9c-5.5,0-9.9-4.4-9.9-9.9S6.4,2,11.9,2c5.5,0,9.9,4.4,9.9,9.9S17.4,21.9,11.9,21.9z'/%3e%3c/svg%3e");
+    mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='26' height='27.2' viewBox='0 0 26 27.2'%3e  %3cpath fill='%23fff' d='M25.8,25.5l-5.3-5.3c2.1-2.1,3.4-5.1,3.4-8.3C23.9,5.3,18.5,0,11.9,0C5.3,0,0,5.3,0,11.9c0,6.6,5.3,11.9,11.9,11.9c2.6,0,5.1-0.9,7-2.3l5.4,5.4c0.4,0.4,1,0.4,1.4,0C26.1,26.6,26.1,25.9,25.8,25.5z M11.9,21.9c-5.5,0-9.9-4.4-9.9-9.9S6.4,2,11.9,2c5.5,0,9.9,4.4,9.9,9.9S17.4,21.9,11.9,21.9z'/%3e%3c/svg%3e");
+    -webkit-mask-repeat: no-repeat;
+    mask-repeat: no-repeat;
+    -webkit-mask-position: center;
+    mask-position: center;
+  }
+}
 
 .block-search-narrow .search-form__submit:focus {
-      outline: solid 4px transparent;
-      outline-offset: -4px;
-      box-shadow: none;
-    }
+  outline: solid 4px transparent;
+  outline-offset: -4px;
+  box-shadow: none;
+}
 
 .block-search-narrow .search-form__submit:focus span:after {
-        transform: scaleX(1);
-      }
+  transform: scaleX(1);
+}
 
 @media screen and (-ms-high-contrast: active) {
 
-.block-search-narrow .search-form__submit:focus {
-        border-bottom-width: var(--sp0-5);
-    }
+  .block-search-narrow .search-form__submit:focus {
+    border-bottom-width: var(--sp0-5);
+  }
 
-        .block-search-narrow .search-form__submit:focus span:after {
-          content: none;
-        }
-      }
+  .block-search-narrow .search-form__submit:focus span:after {
+    content: none;
+  }
+}
 
 @media (min-width: 43.75rem) {
 
-.block-search-narrow .search-form__submit {
-      width: 5rem;
+  .block-search-narrow .search-form__submit {
+    width: 5rem;
   }
-    }
+}
 
 @media screen and (-ms-high-contrast: active) {
-      /* IE11's high contrast show will not show the background image, so we show the text. */
-      .block-search-narrow .search-form__submit .visually-hidden {
-        position: static;
-        overflow: visible;
-        clip: auto;
-        width: auto;
-        height: auto;
-        text-align: center;
-      }
-
-      /* Edge's high contrast does show the background image, so we hide it. */
-      .block-search-narrow .search-form__submit .icon--search {
-        display: none;
-      }
-    }
-
-/* 500px is the width of the primary nav at mobile. */
-
-@media (min-width: 31.25rem) {
-
-[dir="ltr"] .block-search-narrow {
-    margin-left: 0;
+  /* IE11's high contrast show will not show the background image, so we show the text. */
+  .block-search-narrow .search-form__submit .visually-hidden {
+    position: static;
+    overflow: visible;
+    clip: auto;
+    width: auto;
+    height: auto;
+    text-align: center;
   }
 
-[dir="rtl"] .block-search-narrow {
-    margin-right: 0;
+  /* Edge's high contrast does show the background image, so we hide it. */
+  .block-search-narrow .search-form__submit .icon--search {
+    display: none;
   }
+}
 
-[dir="ltr"] .block-search-narrow {
-    margin-right: 0;
-  }
+/* 500px is the width of the primary nav at mobile. */
 
-[dir="rtl"] .block-search-narrow {
-    margin-left: 0;
-  }
+@media (min-width: 31.25rem) {
+
+  .block-search-narrow {
+    margin-inline-start: 0;
+    margin-inline-end: 0;
   }
+}
 
 @media (min-width: 75rem) {
 
-body:not(.is-always-mobile-nav) .block-search-narrow {
+  body:not(.is-always-mobile-nav) .block-search-narrow {
     display: none;
-}
   }
+}
 
 [dir="rtl"] .block-search-narrow input[type="search"] {
-    background-position: bottom right;
-  }
+  background-position: bottom right;
+}
 
 [dir="rtl"] .block-search-narrow .search-form__submit .icon--search:after {
-    transform-origin: right;
-  }
+  transform-origin: right;
+}
diff --git a/core/themes/olivero/css/components/header-search-wide.css b/core/themes/olivero/css/components/header-search-wide.css
index 3000fe9583..2eeb6a646c 100644
--- a/core/themes/olivero/css/components/header-search-wide.css
+++ b/core/themes/olivero/css/components/header-search-wide.css
@@ -29,58 +29,11 @@
   position: static;
 }
 
-[dir="ltr"] .block-search-wide__wrapper {
-  left: 0;
-}
-
-[dir="rtl"] .block-search-wide__wrapper {
-  right: 0;
-}
-
-[dir="ltr"] .block-search-wide__wrapper {
-  margin-left: 0;
-}
-
-[dir="rtl"] .block-search-wide__wrapper {
-  margin-right: 0;
-}
-
-[dir="ltr"] .block-search-wide__wrapper {
-  margin-right: 0;
-}
-
-[dir="rtl"] .block-search-wide__wrapper {
-  margin-left: 0;
-}
-
-[dir="ltr"] .block-search-wide__wrapper {
-  padding-left: 0;
-}
-
-[dir="rtl"] .block-search-wide__wrapper {
-  padding-right: 0;
-}
-
-[dir="ltr"] .block-search-wide__wrapper {
-  padding-right: 0;
-}
-
-[dir="rtl"] .block-search-wide__wrapper {
-  padding-left: 0;
-}
-
-[dir="ltr"] .block-search-wide__wrapper {
-  border-left: solid var(--content-left) var(--color--gray-20);
-}
-
-[dir="rtl"] .block-search-wide__wrapper {
-  border-right: solid var(--content-left) var(--color--gray-20);
-}
-
 .block-search-wide__wrapper {
   position: absolute;
   z-index: 1; /* Ensure left border shows above social region in IE11. */
-  top: 100%;
+  inset-block-start: 100%;
+  inset-inline-start: 0;
   display: none;
   visibility: hidden;
   overflow: hidden;
@@ -88,227 +41,164 @@
   max-width: var(--max-bg-color);
   height: var(--sp8);
   max-height: 0;
-  margin-top: 0;
-  margin-bottom: 0;
-  padding-top: 0;
-  padding-bottom: 0;
+  margin-block: 0;
+  margin-inline-start: 0;
+  margin-inline-end: 0;
+  padding-block: 0;
+  padding-inline-start: 0;
+  padding-inline-end: 0;
   transition: all 0.2s;
+  border-inline-start: solid var(--content-left) var(--color--gray-20);
   background: var(--color--black);
 }
 
 .block-search-wide__wrapper.is-active {
-    visibility: visible;
-    max-height: var(--sp8);
-  }
-
-.block-search-wide__wrapper form {
-    display: flex;
-    grid-column: 1 / 14;
-  }
-
-[dir="ltr"] .block-search-wide__wrapper input[type="search"] {
-    padding-left: var(--sp12);
-}
-
-[dir="rtl"] .block-search-wide__wrapper input[type="search"] {
-    padding-right: var(--sp12);
-}
-
-[dir="ltr"] .block-search-wide__wrapper input[type="search"] {
-    padding-right: 0;
+  visibility: visible;
+  max-height: var(--sp8);
 }
 
-[dir="rtl"] .block-search-wide__wrapper input[type="search"] {
-    padding-left: 0;
+.block-search-wide__wrapper form {
+  display: flex;
+  grid-column: 1 / 14;
 }
 
 .block-search-wide__wrapper input[type="search"] {
-    width: calc(100% + var(--sp2));
-    height: var(--sp8);
-    padding-top: 0;
-    padding-bottom: 0;
-    transition: background-size 0.4s;
-    color: var(--color--white);
-    border: solid 1px transparent;
-    box-shadow: none;
-    font-family: var(--font-serif);
-    font-size: 2rem;
-    -webkit-appearance: none;
-  }
+  width: calc(100% + var(--sp2));
+  height: var(--sp8);
+  padding-block: 0;
+  padding-inline-start: var(--sp12);
+  padding-inline-end: 0;
+  transition: background-size 0.4s;
+  color: var(--color--white);
+  border: solid 1px transparent;
+  box-shadow: none;
+  font-family: var(--font-serif);
+  font-size: 2rem;
+  -webkit-appearance: none;
+}
 
 .block-search-wide__wrapper input[type="search"]::-ms-clear {
-      width: 2.5rem;
-      opacity: 0.5;
-    }
+  width: 2.5rem;
+  opacity: 0.5;
+}
 
 .block-search-wide__wrapper input[type="search"]:focus {
-      outline: solid 4px transparent;
-      outline-offset: -4px;
+  outline: solid 4px transparent;
+  outline-offset: -4px;
 
-      /*
+  /*
         We normally indicate focus by animating background-image width. This isn't
         available in IE11 when in Windows high contrast mode.
       */
-    }
+}
 
 @media screen and (-ms-high-contrast: active) {
 
-.block-search-wide__wrapper input[type="search"]:focus {
-        border-bottom-width: var(--sp0-5);
-    }
-      }
-
-.block-search-wide__wrapper .form-item-keys {
-    flex-grow: 1;
-    margin: 0;
-  }
-
-.block-search-wide__wrapper .form-actions {
-    display: flex;
-    margin: 0;
+  .block-search-wide__wrapper input[type="search"]:focus {
+    border-bottom-width: var(--sp0-5);
   }
-
-[dir="ltr"] .block-search-wide__wrapper .search-form__submit {
-    margin-left: 0;
-}
-
-[dir="rtl"] .block-search-wide__wrapper .search-form__submit {
-    margin-right: 0;
-}
-
-[dir="ltr"] .block-search-wide__wrapper .search-form__submit {
-    margin-right: 0;
-}
-
-[dir="rtl"] .block-search-wide__wrapper .search-form__submit {
-    margin-left: 0;
 }
 
-[dir="ltr"] .block-search-wide__wrapper .search-form__submit {
-    padding-left: 0;
-}
-
-[dir="rtl"] .block-search-wide__wrapper .search-form__submit {
-    padding-right: 0;
-}
-
-[dir="ltr"] .block-search-wide__wrapper .search-form__submit {
-    padding-right: 0;
+.block-search-wide__wrapper .form-item-keys {
+  flex-grow: 1;
+  margin: 0;
 }
 
-[dir="rtl"] .block-search-wide__wrapper .search-form__submit {
-    padding-left: 0;
+.block-search-wide__wrapper .form-actions {
+  display: flex;
+  margin: 0;
 }
 
 .block-search-wide__wrapper .search-form__submit {
-    position: relative;
-    overflow: hidden;
-    align-self: stretch;
-    width: 6.25rem;
-    height: auto;
-    margin-top: 0;
-    margin-bottom: 0;
-    padding-top: 0;
-    padding-bottom: 0;
-    cursor: pointer;
-    border-color: transparent;
-    background-color: transparent;
-
-    /*
+  position: relative;
+  overflow: hidden;
+  align-self: stretch;
+  width: 6.25rem;
+  height: auto;
+  margin-block: 0;
+  margin-inline-start: 0;
+  margin-inline-end: 0;
+  padding-block: 0;
+  padding-inline-start: 0;
+  padding-inline-end: 0;
+  cursor: pointer;
+  border-color: transparent;
+  background-color: transparent;
+
+  /*
       When in Windows high contrast mode, FF will not output either background
       images or SVGs that are nested directly within a <button> element, so we add a <span>.
     */
-  }
-
-[dir="ltr"] .block-search-wide__wrapper .search-form__submit .icon--search {
-      right: 0;
-}
-
-[dir="rtl"] .block-search-wide__wrapper .search-form__submit .icon--search {
-      left: 0;
 }
 
 .block-search-wide__wrapper .search-form__submit .icon--search {
-      position: absolute;
-      top: 0;
-      display: block;
-      width: 1.5rem; /* Width of the SVG background image. */
-      height: 100%;
-      pointer-events: none;
-      background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='26' height='27.2' viewBox='0 0 26 27.2'%3e  %3cpath fill='%23fff' d='M25.8,25.5l-5.3-5.3c2.1-2.1,3.4-5.1,3.4-8.3C23.9,5.3,18.5,0,11.9,0C5.3,0,0,5.3,0,11.9c0,6.6,5.3,11.9,11.9,11.9c2.6,0,5.1-0.9,7-2.3l5.4,5.4c0.4,0.4,1,0.4,1.4,0C26.1,26.6,26.1,25.9,25.8,25.5z M11.9,21.9c-5.5,0-9.9-4.4-9.9-9.9S6.4,2,11.9,2c5.5,0,9.9,4.4,9.9,9.9S17.4,21.9,11.9,21.9z'/%3e%3c/svg%3e");
-      background-repeat: no-repeat;
-      background-position: center;
-      background-size: contain;
-    }
-
-[dir="ltr"] .block-search-wide__wrapper .search-form__submit .icon--search:after {
-        left: 0;
-}
-
-[dir="rtl"] .block-search-wide__wrapper .search-form__submit .icon--search:after {
-        right: 0;
+  position: absolute;
+  inset-block-start: 0;
+  inset-inline-end: 0;
+  display: block;
+  width: 1.5rem; /* Width of the SVG background image. */
+  height: 100%;
+  pointer-events: none;
+  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='26' height='27.2' viewBox='0 0 26 27.2'%3e  %3cpath fill='%23fff' d='M25.8,25.5l-5.3-5.3c2.1-2.1,3.4-5.1,3.4-8.3C23.9,5.3,18.5,0,11.9,0C5.3,0,0,5.3,0,11.9c0,6.6,5.3,11.9,11.9,11.9c2.6,0,5.1-0.9,7-2.3l5.4,5.4c0.4,0.4,1,0.4,1.4,0C26.1,26.6,26.1,25.9,25.8,25.5z M11.9,21.9c-5.5,0-9.9-4.4-9.9-9.9S6.4,2,11.9,2c5.5,0,9.9,4.4,9.9,9.9S17.4,21.9,11.9,21.9z'/%3e%3c/svg%3e");
+  background-repeat: no-repeat;
+  background-position: center;
+  background-size: contain;
 }
 
 .block-search-wide__wrapper .search-form__submit .icon--search:after {
-        position: absolute;
-        bottom: 0;
-        width: 100%;
-        height: 0;
-        content: "";
-        transition: transform 0.2s;
-        transform: scaleX(0);
-        transform-origin: left;
-        border-top: solid var(--sp0-5) var(--color--primary-50);
-      }
+  position: absolute;
+  inset-block-end: 0;
+  inset-inline-start: 0;
+  width: 100%;
+  height: 0;
+  content: "";
+  transition: transform 0.2s;
+  transform: scaleX(0);
+  transform-origin: left;
+  border-block-start: solid var(--sp0-5) var(--color--primary-50);
+}
 
 .block-search-wide__wrapper .search-form__submit:focus {
-      outline: solid 4px transparent;
-      outline-offset: -4px;
-      box-shadow: none;
-    }
+  outline: solid 4px transparent;
+  outline-offset: -4px;
+  box-shadow: none;
+}
 
 .block-search-wide__wrapper .search-form__submit:focus span:after {
-        transform: scaleX(1);
-      }
+  transform: scaleX(1);
+}
 
 @media screen and (-ms-high-contrast: active) {
 
-.block-search-wide__wrapper .search-form__submit:focus {
-        border-bottom-width: var(--sp0-5);
-    }
+  .block-search-wide__wrapper .search-form__submit:focus {
+    border-bottom-width: var(--sp0-5);
+  }
 
-        .block-search-wide__wrapper .search-form__submit:focus span:after {
-          content: none;
-        }
-      }
+  .block-search-wide__wrapper .search-form__submit:focus span:after {
+    content: none;
+  }
+}
 
 @media screen and (-ms-high-contrast: active) {
-      /* IE11's high contrast show will not show the background image, so we show the text. */
-      .block-search-wide__wrapper .search-form__submit .visually-hidden {
-        position: static;
-        overflow: visible;
-        clip: auto;
-        width: auto;
-        height: auto;
-        text-align: center;
-      }
-
-      /* Edge's high contrast does show the background image, so we hide it. */
-      .block-search-wide__wrapper .search-form__submit .icon--search {
-        display: none;
-      }
-    }
-
-[dir="ltr"] .block-search-wide__container {
-  padding-right: var(--sp2);
-}
+  /* IE11's high contrast show will not show the background image, so we show the text. */
+  .block-search-wide__wrapper .search-form__submit .visually-hidden {
+    position: static;
+    overflow: visible;
+    clip: auto;
+    width: auto;
+    height: auto;
+    text-align: center;
+  }
 
-[dir="rtl"] .block-search-wide__container {
-  padding-left: var(--sp2);
+  /* Edge's high contrast does show the background image, so we hide it. */
+  .block-search-wide__wrapper .search-form__submit .icon--search {
+    display: none;
+  }
 }
 
 .block-search-wide__container {
   max-width: var(--max-width);
+  padding-inline-end: var(--sp2);
 }
 
 .block-search-wide__grid {
@@ -320,12 +210,12 @@
 /* Override specificity from container-inline.module.css */
 
 .container-inline .block-search-wide__container {
-    display: block;
-  }
+  display: block;
+}
 
 .container-inline .block-search-wide__grid {
-    display: grid;
-  }
+  display: grid;
+}
 
 .block-search-wide__button {
   position: relative;
@@ -340,79 +230,68 @@
 }
 
 .block-search-wide__button:focus {
-    position: relative;
-    outline: 0;
-  }
+  position: relative;
+  outline: 0;
+}
 
 .block-search-wide__button:focus:after {
-      position: absolute;
-      top: 50%;
-      left: 50%;
-      width: 80%;
-      height: var(--sp3);
-      content: "";
-      transform: translate(-50%, -50%);
-      border: solid 2px var(--color--primary-50);
-      border-radius: 0.25rem;
-    }
+  position: absolute;
+  top: 50%;
+  left: 50%;
+  width: 80%;
+  height: var(--sp3);
+  content: "";
+  transform: translate(-50%, -50%);
+  border: solid 2px var(--color--primary-50);
+  border-radius: 0.25rem;
+}
 
 .block-search-wide__button[aria-expanded="true"] {
-    background: var(--color--black);
-  }
+  background: var(--color--black);
+}
 
 .block-search-wide__button[aria-expanded="true"]:focus:after {
-      border-color: var(--color--white);
-    }
+  border-color: var(--color--white);
+}
 
 .block-search-wide__button[aria-expanded="true"] .block-search-wide__button-close:before,
-      .block-search-wide__button[aria-expanded="true"] .block-search-wide__button-close:after {
-        position: absolute;
-        top: 50%;
-        left: 50%;
-        width: var(--sp1-5);
-        height: 0;
-        content: "";
-        border-top: solid 2px var(--color--white);
-      }
-
-.block-search-wide__button[aria-expanded="true"] .block-search-wide__button-close:before {
-        transform: translate(-50%, -50%) rotate(-45deg);
-      }
-
 .block-search-wide__button[aria-expanded="true"] .block-search-wide__button-close:after {
-        transform: translate(-50%, -50%) rotate(45deg);
-      }
-
-.block-search-wide__button[aria-expanded="true"] svg {
-      display: none;
-    }
+  position: absolute;
+  top: 50%;
+  left: 50%;
+  width: var(--sp1-5);
+  height: 0;
+  content: "";
+  border-block-start: solid 2px var(--color--white);
+}
 
-[dir="ltr"] .block-search-wide__button svg {
-    margin-left: auto;
+.block-search-wide__button[aria-expanded="true"] .block-search-wide__button-close:before {
+  transform: translate(-50%, -50%) rotate(-45deg);
 }
 
-[dir="rtl"] .block-search-wide__button svg {
-    margin-right: auto;
+.block-search-wide__button[aria-expanded="true"] .block-search-wide__button-close:after {
+  transform: translate(-50%, -50%) rotate(45deg);
 }
 
-[dir="ltr"] .block-search-wide__button svg {
-    margin-right: auto;
+.block-search-wide__button[aria-expanded="true"] svg {
+  display: none;
 }
 
-[dir="rtl"] .block-search-wide__button svg {
-    margin-left: auto;
+.block-search-wide__button svg {
+  margin-inline-start: auto;
+  margin-inline-end: auto;
 }
 
 @media (forced-colors: active) {
 
-.block-search-wide__button {
+  .block-search-wide__button {
     background: ButtonFace;
-}
+  }
 
-    .block-search-wide__button path {
-      fill: ButtonText;
-    }
+  .block-search-wide__button path {
+    fill: ButtonText;
   }
+}
 
 /* Provide rudimentary access to site search if JS is disabled. */
 
@@ -432,21 +311,21 @@ html:not(.js) .search-block-form:focus-within .block-search-wide__wrapper {
 }
 
 [dir] .block-search-wide__wrapper input[type="search"]:focus {
-    background-size: 100% var(--sp0-5);
-  }
+  background-size: 100% var(--sp0-5);
+}
 
 [dir="rtl"] .block-search-wide__wrapper input[type="search"] {
-    background-position: bottom right;
-  }
+  background-position: bottom right;
+}
 
 [dir="rtl"] .block-search-wide__wrapper .search-form__submit .icon--search:after {
-    transform-origin: right;
-  }
+  transform-origin: right;
+}
 
 @media (min-width: 75rem) {
 
-body:not(.is-always-mobile-nav) .block-search-wide__wrapper,
+  body:not(.is-always-mobile-nav) .block-search-wide__wrapper,
   body:not(.is-always-mobile-nav) .block-search-wide__button {
-      display: block;
+    display: block;
   }
-    }
+}
diff --git a/core/themes/olivero/css/components/header-site-branding.css b/core/themes/olivero/css/components/header-site-branding.css
index e87024f87d..82b092357a 100644
--- a/core/themes/olivero/css/components/header-site-branding.css
+++ b/core/themes/olivero/css/components/header-site-branding.css
@@ -23,82 +23,50 @@
 
 /* Width of the entire grid maxes out. */
 
-[dir="ltr"] .site-branding {
-  margin-left: calc(-1 * var(--container-padding));
-  margin-right: var(--sp);
-}
-
-[dir="rtl"] .site-branding {
-  margin-right: calc(-1 * var(--container-padding));
-  margin-left: var(--sp);
-}
-
-[dir="ltr"] .site-branding {
-  padding-left: var(--container-padding);
-}
-
-[dir="rtl"] .site-branding {
-  padding-right: var(--container-padding);
-}
-
-[dir="ltr"] .site-branding {
-  padding-right: var(--container-padding);
-}
-
-[dir="rtl"] .site-branding {
-  padding-left: var(--container-padding);
-}
-
 .site-branding {
   display: flex;
   flex-shrink: 1;
   align-items: flex-end;
   min-width: calc((2 * var(--grid-col-width)) + (2 * var(--grid-gap)) + var(--container-padding)); /* Span minimum of 2 column widths. */
-  min-height: var(--sp3); /* Negative margin to break out of .container element. */
-  padding-top: 0;
-  padding-bottom: var(--sp0-5);
+  min-height: var(--sp3);
+  margin-inline: calc(-1 * var(--container-padding)) var(--sp); /* Negative margin to break out of .container element. */
+  padding-block: 0 var(--sp0-5);
+  padding-inline-start: var(--container-padding);
+  padding-inline-end: var(--container-padding);
   background-image: linear-gradient(160deg, var(--color--primary-50) 0%, var(--color--primary-40) 78.66%);
 }
 
 @media (min-width: 31.25rem) {
 
-.site-branding {
+  .site-branding {
     min-height: var(--sp4);
-}
   }
+}
 
 @media (min-width: 43.75rem) {
 
-.site-branding {
+  .site-branding {
     min-width: calc((4 * var(--grid-col-width)) + (4 * var(--grid-gap)) + var(--container-padding)); /* Span minimum of 4 column widths. */
     min-height: var(--sp6);
-    padding-bottom: var(--sp);
-}
+    padding-block-end: var(--sp);
   }
+}
 
 @media (min-width: 62.5rem) {
 
-.site-branding {
+  .site-branding {
     min-width: calc((2 * var(--grid-col-width)) + (2 * var(--grid-gap)) + var(--container-padding)); /* Span minimum of 2 column widths. */
-}
   }
+}
 
 @media (min-width: 75rem) {
 
-[dir="ltr"] .site-branding {
-    margin-left: calc(-1 * var(--container-padding));
-  }
-
-[dir="rtl"] .site-branding {
-    margin-right: calc(-1 * var(--container-padding));
-  }
-
-.site-branding {
+  .site-branding {
     min-height: var(--site-header-height-wide);
-    padding-top: 0;
-    padding-bottom: 0;
-}
+    margin-inline-start: calc(-1 * var(--container-padding));
+    padding-block: 0;
   }
+}
 
 [dir="rtl"] .site-branding {
   background-image: linear-gradient(-160deg, var(--color--primary-50) 0%, #0d7ab8 78.66%);
@@ -118,33 +86,18 @@
 }
 
 .site-branding__inner a {
-    text-decoration: none;
-  }
+  text-decoration: none;
+}
 
 @media (min-width: 75rem) {
 
-[dir="ltr"] .site-branding__inner {
-    padding-left: 0;
-  }
-
-[dir="rtl"] .site-branding__inner {
-    padding-right: 0;
-  }
-
-[dir="ltr"] .site-branding__inner {
-    padding-right: 0;
-  }
-
-[dir="rtl"] .site-branding__inner {
-    padding-left: 0;
-  }
-
-.site-branding__inner {
+  .site-branding__inner {
     height: var(--header-height-wide-when-fixed);
-    padding-top: var(--sp0-5);
-    padding-bottom: var(--sp0-5);
-}
+    padding-block: var(--sp0-5);
+    padding-inline-start: 0;
+    padding-inline-end: 0;
   }
+}
 
 .site-branding__logo {
   flex-shrink: 0;
@@ -152,31 +105,31 @@
 }
 
 .site-branding__logo img {
-    width: auto;
-    max-width: 100%;
-    max-height: var(--sp2);
-  }
+  width: auto;
+  max-width: 100%;
+  max-height: var(--sp2);
+}
 
 @media (min-width: 31.25rem) {
 
-.site-branding__logo img {
-      max-height: var(--sp3);
+  .site-branding__logo img {
+    max-height: var(--sp3);
   }
-    }
+}
 
 @media (min-width: 43.75rem) {
 
-.site-branding__logo img {
-      max-height: var(--sp4);
+  .site-branding__logo img {
+    max-height: var(--sp4);
   }
-    }
+}
 
 @media (min-width: 75rem) {
 
-.site-branding__logo img {
-      max-height: calc(var(--header-height-wide-when-fixed) - var(--sp));
+  .site-branding__logo img {
+    max-height: calc(var(--header-height-wide-when-fixed) - var(--sp));
   }
-    }
+}
 
 .site-branding__text {
   color: var(--color--white);
@@ -185,35 +138,31 @@
 }
 
 .site-branding__text a {
-    color: inherit;
-  }
+  color: inherit;
+}
 
 @media (min-width: 43.75rem) {
 
-.site-branding__text {
+  .site-branding__text {
     font-size: 1.75rem;
     line-height: 1.75rem;
-}
   }
+}
 
 @media (min-width: 75rem) {
 
-.site-branding__text {
+  .site-branding__text {
     letter-spacing: 0.02em;
     font-size: 2rem;
     line-height: var(--sp2);
-}
   }
+}
 
 .site-branding--bg-gray .site-branding__text,
 .site-branding--bg-white .site-branding__text {
   color: var(--color--primary-50);
 }
 
-[dir="ltr"] .site-branding__logo + .site-branding__text {
-  margin-left: 0.75rem;
-}
-
-[dir="rtl"] .site-branding__logo + .site-branding__text {
-  margin-right: 0.75rem;
+.site-branding__logo + .site-branding__text {
+  margin-inline-start: 0.75rem;
 }
diff --git a/core/themes/olivero/css/components/header-sticky-toggle.css b/core/themes/olivero/css/components/header-sticky-toggle.css
index 9901633dfb..2babfb0274 100644
--- a/core/themes/olivero/css/components/header-sticky-toggle.css
+++ b/core/themes/olivero/css/components/header-sticky-toggle.css
@@ -32,7 +32,7 @@
 
 @media (min-width: 75rem) {
 
-.sticky-header-toggle {
+  .sticky-header-toggle {
     display: flex;
     flex-shrink: 0;
     align-items: center;
@@ -44,30 +44,30 @@
     border: 0;
     outline: 0;
     background-color: var(--color--primary-50);
-}
+  }
 
-    .sticky-header-toggle:focus {
-      cursor: pointer;
-      pointer-events: auto;
-      opacity: 1;
-      outline: solid 2px var(--color--white);
-      outline-offset: -4px;
-    }
+  .sticky-header-toggle:focus {
+    cursor: pointer;
+    pointer-events: auto;
+    opacity: 1;
+    outline: solid 2px var(--color--white);
+    outline-offset: -4px;
   }
+}
 
 @media (min-width: 75rem) {
 
-body:not(.is-always-mobile-nav) .is-fixed .sticky-header-toggle {
+  body:not(.is-always-mobile-nav) .is-fixed .sticky-header-toggle {
     visibility: visible;
-}
   }
+}
 
 @media (min-width: 75rem) {
 
-body.is-always-mobile-nav .sticky-header-toggle {
+  body.is-always-mobile-nav .sticky-header-toggle {
     visibility: hidden;
-}
   }
+}
 
 .sticky-header-toggle__icon {
   position: relative;
@@ -79,63 +79,41 @@ body.is-always-mobile-nav .sticky-header-toggle {
 }
 
 .sticky-header-toggle__icon > span {
-    display: block;
-    height: 0;
-    /* Intentionally not using CSS logical properties. */
-    border-top: solid 3px var(--color--white);
-  }
-
-[dir="ltr"] .sticky-header-toggle__icon > span:nth-child(1) {
-      left: 0;
-}
-
-[dir="rtl"] .sticky-header-toggle__icon > span:nth-child(1) {
-      right: 0;
+  display: block;
+  height: 0;
+  /* Intentionally not using CSS logical properties. */
+  border-top: solid 3px var(--color--white);
 }
 
 .sticky-header-toggle__icon > span:nth-child(1) {
-      position: absolute;
-      top: 0;
-      width: 100%;
-      height: 0;
-      transition: transform 0.2s;
-      background-color: var(--color--white);
-    }
-
-[dir="ltr"] .sticky-header-toggle__icon > span:nth-child(2) {
-      left: 0;
-}
-
-[dir="rtl"] .sticky-header-toggle__icon > span:nth-child(2) {
-      right: 0;
+  position: absolute;
+  inset-block-start: 0;
+  inset-inline-start: 0;
+  width: 100%;
+  height: 0;
+  transition: transform 0.2s;
+  background-color: var(--color--white);
 }
 
 .sticky-header-toggle__icon > span:nth-child(2) {
-      position: absolute;
-      top: 0.5625rem;
-      width: 100%;
-      height: 0;
-      transition: opacity 0.2s;
-      background-color: var(--color--white);
-    }
-
-[dir="ltr"] .sticky-header-toggle__icon > span:nth-child(3) {
-      left: 0;
-}
-
-[dir="rtl"] .sticky-header-toggle__icon > span:nth-child(3) {
-      right: 0;
+  position: absolute;
+  inset-block-start: 0.5625rem;
+  inset-inline-start: 0;
+  width: 100%;
+  height: 0;
+  transition: opacity 0.2s;
+  background-color: var(--color--white);
 }
 
 .sticky-header-toggle__icon > span:nth-child(3) {
-      position: absolute;
-      top: auto;
-      bottom: 0;
-      width: 100%;
-      height: 0;
-      transition: transform 0.2s;
-      background-color: var(--color--white);
-    }
+  position: absolute;
+  inset-block: auto 0;
+  inset-inline-start: 0;
+  width: 100%;
+  height: 0;
+  transition: transform 0.2s;
+  background-color: var(--color--white);
+}
 
 .is-fixed .sticky-header-toggle {
   cursor: pointer;
@@ -144,15 +122,15 @@ body.is-always-mobile-nav .sticky-header-toggle {
 }
 
 [aria-checked="true"] .sticky-header-toggle__icon > span:nth-child(1) {
-    top: 0.5625rem;
-    transform: rotate(-45deg);
-  }
+  inset-block-start: 0.5625rem;
+  transform: rotate(-45deg);
+}
 
 [aria-checked="true"] .sticky-header-toggle__icon > span:nth-child(2) {
-    opacity: 0;
-  }
+  opacity: 0;
+}
 
 [aria-checked="true"] .sticky-header-toggle__icon > span:nth-child(3) {
-    top: 0.5625rem;
-    transform: rotate(45deg);
-  }
+  inset-block-start: 0.5625rem;
+  transform: rotate(45deg);
+}
diff --git a/core/themes/olivero/css/components/hero.css b/core/themes/olivero/css/components/hero.css
index ca4ed3daa2..885f5f6ef7 100644
--- a/core/themes/olivero/css/components/hero.css
+++ b/core/themes/olivero/css/components/hero.css
@@ -29,48 +29,48 @@
 
 @media (min-width: 43.75rem) {
 
-.hero__content { /* 700px */
+  .hero__content { /* 700px */
     grid-column: 3 / 13;
-}
   }
+}
 
 @media (min-width: 62.5rem) {
 
-.hero__content {
+  .hero__content {
     grid-column: 3 / 11;
-}
   }
+}
 
 .hero__img {
   grid-column: 1 / 7;
-  margin-top: var(--sp2);
-  margin-bottom: var(--sp2);
+  margin-block-start: var(--sp2);
+  margin-block-end: var(--sp2);
 }
 
 .hero__img img {
-    width: 100%;
-  }
+  width: 100%;
+}
 
 @media (min-width: 31.25rem) {
 
-.hero__img {
-    margin-top: var(--sp3);
-    margin-bottom: var(--sp3);
-}
+  .hero__img {
+    margin-block-start: var(--sp3);
+    margin-block-end: var(--sp3);
   }
+}
 
 @media (min-width: 43.75rem) {
 
-.hero__img {
+  .hero__img {
     grid-column: 1 / 15;
-    margin-top: var(--sp4);
-    margin-bottom: var(--sp4);
-}
+    margin-block-start: var(--sp4);
+    margin-block-end: var(--sp4);
   }
+}
 
 @media (min-width: 62.5rem) {
 
-.hero__img {
+  .hero__img {
     grid-column: 2 / 14;
-}
   }
+}
diff --git a/core/themes/olivero/css/components/links.css b/core/themes/olivero/css/components/links.css
index 30d4efd84f..7b724bcdc9 100644
--- a/core/themes/olivero/css/components/links.css
+++ b/core/themes/olivero/css/components/links.css
@@ -23,55 +23,25 @@
 
 /* Width of the entire grid maxes out. */
 
-[dir="ltr"] .links.inline {
-  margin-left: 0;
-}
-
-[dir="rtl"] .links.inline {
-  margin-right: 0;
-}
-
-[dir="ltr"] .links.inline {
-  padding-left: 0;
-}
-
-[dir="rtl"] .links.inline {
-  padding-right: 0;
-}
-
-[dir="ltr"] .links.inline {
-  padding-right: 0;
-}
-
-[dir="rtl"] .links.inline {
-  padding-left: 0;
-}
-
 .links.inline {
-  padding-top: 0;
-  padding-bottom: 0;
+  margin-inline-start: 0;
+  padding-block: 0;
+  padding-inline-start: 0;
+  padding-inline-end: 0;
   list-style: none;
 }
 
 .links.inline > * {
-    display: inline;
-  }
-
-[dir="ltr"] .links.inline > *:not(:last-child) {
-      padding-right: 1em;
+  display: inline;
 }
 
-[dir="rtl"] .links.inline > *:not(:last-child) {
-      padding-left: 1em;
+.links.inline > *:not(:last-child) {
+  padding-inline-end: 1em;
 }
 
 @media (min-width: 43.75rem) {
 
-[dir="ltr"] .node--type-book .links.inline {
-    text-align: right;
-  }
-
-[dir="rtl"] .node--type-book .links.inline {
-    text-align: left;
-  }
+  .node--type-book .links.inline {
+    text-align: end;
   }
+}
diff --git a/core/themes/olivero/css/components/maintenance-page.css b/core/themes/olivero/css/components/maintenance-page.css
index fa385f38fd..2ab8bb07c6 100644
--- a/core/themes/olivero/css/components/maintenance-page.css
+++ b/core/themes/olivero/css/components/maintenance-page.css
@@ -25,22 +25,21 @@
 
 @media (min-width: 75rem) {
 
-.maintenance-page .site-header__initial {
-      flex-shrink: 0;
-      width: var(--content-left);
+  .maintenance-page .site-header__initial {
+    flex-shrink: 0;
+    width: var(--content-left);
   }
-    }
+}
 
 .maintenance-page .main-content {
-    min-height: 80vh;
-  }
+  min-height: 80vh;
+}
 
 .maintenance-page-icon {
   display: block;
-  margin-top: var(--sp3);
-  margin-bottom: var(--sp3);
+  margin-block: var(--sp3);
 }
 
 .maintenance-page-icon path {
-    fill: var(--color--primary-50);
-  }
+  fill: var(--color--primary-50);
+}
diff --git a/core/themes/olivero/css/components/messages.css b/core/themes/olivero/css/components/messages.css
index e5b24f83bd..047ae11bc2 100644
--- a/core/themes/olivero/css/components/messages.css
+++ b/core/themes/olivero/css/components/messages.css
@@ -27,178 +27,84 @@
   --messages-icon-size: 2rem;
 }
 
-[dir="ltr"] .messages-list {
-  padding-left: 0;
-}
-
-[dir="rtl"] .messages-list {
-  padding-right: 0;
-}
-
-[dir="ltr"] .messages-list {
-  padding-right: 0;
-}
-
-[dir="rtl"] .messages-list {
-  padding-left: 0;
-}
-
 .messages-list {
-  margin-top: var(--sp1);
-  margin-bottom: var(--sp1);
-  padding-top: 0;
-  padding-bottom: 0;
+  margin-block: var(--sp1);
+  padding-block: 0;
+  padding-inline-start: 0;
+  padding-inline-end: 0;
   list-style: none;
 }
 
-[dir="ltr"] .messages {
-  padding-left: var(--sp1-5);
-}
-
-[dir="rtl"] .messages {
-  padding-right: var(--sp1-5);
-}
-
-[dir="ltr"] .messages {
-  padding-right: var(--sp1-5);
-}
-
-[dir="rtl"] .messages {
-  padding-left: var(--sp1-5);
-}
-
 .messages {
   min-height: calc(var(--messages-icon-size) + 2 * var(--sp1));
-  padding-top: var(--sp1);
-  padding-bottom: var(--sp1);
+  padding-block: var(--sp1);
+  padding-inline-start: var(--sp1-5);
+  padding-inline-end: var(--sp1-5);
   color: var(--color--white);
   outline: solid 1px transparent;
   background-color: var(--color--gray-5);
 }
 
 .messages * {
-    color: inherit;
-  }
+  color: inherit;
+}
 
 /* Additional specificity to override contrib modules. */
 
 .messages.messages-list__item {
-    background-image: none;
-  }
-
-[dir="ltr"] .messages__list {
-  margin-left: 0;
-}
-
-[dir="rtl"] .messages__list {
-  margin-right: 0;
-}
-
-[dir="ltr"] .messages__list {
-  margin-right: 0;
-}
-
-[dir="rtl"] .messages__list {
-  margin-left: 0;
-}
-
-[dir="ltr"] .messages__list {
-  padding-left: 0;
-}
-
-[dir="rtl"] .messages__list {
-  padding-right: 0;
-}
-
-[dir="ltr"] .messages__list {
-  padding-right: 0;
-}
-
-[dir="rtl"] .messages__list {
-  padding-left: 0;
+  background-image: none;
 }
 
 .messages__list {
-  margin-top: 0;
-  margin-bottom: 0;
-  padding-top: 0;
-  padding-bottom: 0;
+  margin-block: 0;
+  margin-inline-start: 0;
+  margin-inline-end: 0;
+  padding-block: 0;
+  padding-inline-start: 0;
+  padding-inline-end: 0;
   list-style: none;
 }
 
 .messages:not(.hidden) ~ .messages {
-  margin-top: var(--sp1);
+  margin-block-start: var(--sp1);
 }
 
 .messages__item + .messages__item {
-  margin-top: var(--sp0-5);
+  margin-block-start: var(--sp0-5);
 }
 
 .messages__container {
   display: flex;
 }
 
-[dir="ltr"] .messages__header {
-  margin-right: var(--sp1);
-}
-
-[dir="rtl"] .messages__header {
-  margin-left: var(--sp1);
-}
-
 .messages__header {
   flex-shrink: 0;
+  margin-inline-end: var(--sp1);
 }
 
-[dir="ltr"] .messages__header.no-icon {
-    margin-right: 0;
-}
-
-[dir="rtl"] .messages__header.no-icon {
-    margin-left: 0;
+.messages__header.no-icon {
+  margin-inline-end: 0;
 }
 
 .messages__content {
   overflow: auto; /* Ensure large code blocks can be scrolled to. */
   flex: 1;
-  padding-top: 0.1875rem;
-}
-
-[dir="ltr"] .messages__button {
-  margin-left: var(--sp1);
-}
-
-[dir="rtl"] .messages__button {
-  margin-right: var(--sp1);
+  padding-block-start: 0.1875rem;
 }
 
 .messages__button {
   flex-shrink: 0;
-  padding-top: 0.1875rem;
-}
-
-[dir="ltr"] .messages__close {
-  padding-left: 0;
-}
-
-[dir="rtl"] .messages__close {
-  padding-right: 0;
-}
-
-[dir="ltr"] .messages__close {
-  padding-right: 0;
-}
-
-[dir="rtl"] .messages__close {
-  padding-left: 0;
+  margin-inline-start: var(--sp1);
+  padding-block-start: 0.1875rem;
 }
 
 .messages__close {
   position: relative;
   width: 1.5625rem;
   height: 1.5625rem;
-  padding-top: 0;
-  padding-bottom: 0;
+  padding-block: 0;
+  padding-inline-start: 0;
+  padding-inline-end: 0;
   cursor: pointer;
   vertical-align: top;
   border: 0;
@@ -208,34 +114,34 @@
 }
 
 .messages__close:before,
-  .messages__close:after {
-    position: absolute;
-    top: 50%;
-    left: 50%;
-    display: block;
-    width: 2.0625rem;
-    height: 0;
-    content: "";
-    border-top: solid 2px var(--color--gray-60);
-  }
+.messages__close:after {
+  position: absolute;
+  top: 50%;
+  left: 50%;
+  display: block;
+  width: 2.0625rem;
+  height: 0;
+  content: "";
+  border-top: solid 2px var(--color--gray-60);
+}
 
 .messages__close:before {
-    transform: translate(-50%, -50%) rotate(45deg);
-  }
+  transform: translate(-50%, -50%) rotate(45deg);
+}
 
 .messages__close:after {
-    transform: translate(-50%, -50%) rotate(-45deg);
-  }
+  transform: translate(-50%, -50%) rotate(-45deg);
+}
 
 .messages__close:hover::before,
-    .messages__close:hover::after {
-      border-color: var(--color--white);
-    }
+.messages__close:hover::after {
+  border-color: var(--color--white);
+}
 
 .messages__close:focus {
-    outline: 2px solid var(--color--primary-60);
-    outline-offset: 2px;
-  }
+  outline: 2px solid var(--color--primary-60);
+  outline-offset: 2px;
+}
 
 .messages__icon svg {
   vertical-align: top;
@@ -265,14 +171,7 @@
   margin: 0;
 }
 
-[dir="ltr"] .js-form-managed-file .messages {
-  border-left: solid 0.375rem var(--color--red);
-}
-
-[dir="rtl"] .js-form-managed-file .messages {
-  border-right: solid 0.375rem var(--color--red);
-}
-
 .js-form-managed-file .messages {
-  margin-bottom: var(--sp1);
+  margin-block-end: var(--sp1);
+  border-inline-start: solid 0.375rem var(--color--red);
 }
diff --git a/core/themes/olivero/css/components/navigation/menu-sidebar.css b/core/themes/olivero/css/components/navigation/menu-sidebar.css
index 6611024408..231412a9fc 100644
--- a/core/themes/olivero/css/components/navigation/menu-sidebar.css
+++ b/core/themes/olivero/css/components/navigation/menu-sidebar.css
@@ -28,69 +28,47 @@
 }
 
 .menu--sidebar .menu {
-    list-style: none;
-  }
-
-.menu--sidebar .menu--level-1 {
-    margin: 0;
-  }
-
-[dir="ltr"] .menu--sidebar .menu__link {
-    padding-left: 0;
-}
-
-[dir="rtl"] .menu--sidebar .menu__link {
-    padding-right: 0;
-}
-
-[dir="ltr"] .menu--sidebar .menu__link {
-    padding-right: 0;
+  list-style: none;
 }
 
-[dir="rtl"] .menu--sidebar .menu__link {
-    padding-left: 0;
+.menu--sidebar .menu--level-1 {
+  margin: 0;
 }
 
 .menu--sidebar .menu__link {
-    position: relative;
-    display: block;
-    padding-top: var(--sp0-75);
-    padding-bottom: var(--sp0-75);
-    font-family: var(--font-serif);
-    font-size: 1.125rem;
-
-    /* Bottom divider line. */
-  }
-
-[dir="ltr"] .menu--sidebar .menu__link:after {
-      left: 0;
-}
-
-[dir="rtl"] .menu--sidebar .menu__link:after {
-      right: 0;
+  position: relative;
+  display: block;
+  padding-block: var(--sp0-75);
+  padding-inline-start: 0;
+  padding-inline-end: 0;
+  font-family: var(--font-serif);
+  font-size: 1.125rem;
+
+  /* Bottom divider line. */
 }
 
 .menu--sidebar .menu__link:after {
-      position: absolute;
-      bottom: 0;
-      width: var(--sp4);
-      height: 0;
-      content: "";
-      border-top: solid 2px var(--color--gray-95);
-    }
+  position: absolute;
+  inset-block-end: 0;
+  inset-inline-start: 0;
+  width: var(--sp4);
+  height: 0;
+  content: "";
+  border-block-start: solid 2px var(--color--gray-95);
+}
 
 .menu--sidebar .menu__link--link {
-    text-decoration: none;
-    color: var(--color-text-neutral-loud);
-    font-weight: 600;
-  }
+  text-decoration: none;
+  color: var(--color-text-neutral-loud);
+  font-weight: 600;
+}
 
 .menu--sidebar .menu__link--link:hover {
-      color: var(--color--primary-50);
-    }
+  color: var(--color--primary-50);
+}
 
 /* No bottom divider line for last menu item. */
 
 :is(.menu--sidebar .menu__item--level-1:last-child > .menu__link:last-child,.menu--sidebar .menu__item--level-1:last-child > .menu__item--level-2:last-child > .menu__link:last-child):after {
-      content: none;
-    }
+  content: none;
+}
diff --git a/core/themes/olivero/css/components/navigation/nav-button-mobile.css b/core/themes/olivero/css/components/navigation/nav-button-mobile.css
index 9171144c07..97499f5928 100644
--- a/core/themes/olivero/css/components/navigation/nav-button-mobile.css
+++ b/core/themes/olivero/css/components/navigation/nav-button-mobile.css
@@ -23,38 +23,6 @@
 
 /* Width of the entire grid maxes out. */
 
-[dir="ltr"] .mobile-nav-button {
-  margin-left: auto;
-}
-
-[dir="rtl"] .mobile-nav-button {
-  margin-right: auto;
-}
-
-[dir="ltr"] .mobile-nav-button {
-  margin-right: -0.375rem;
-}
-
-[dir="rtl"] .mobile-nav-button {
-  margin-left: -0.375rem;
-}
-
-[dir="ltr"] .mobile-nav-button {
-  padding-left: 0.375rem;
-}
-
-[dir="rtl"] .mobile-nav-button {
-  padding-right: 0.375rem;
-}
-
-[dir="ltr"] .mobile-nav-button {
-  padding-right: 0.375rem;
-}
-
-[dir="rtl"] .mobile-nav-button {
-  padding-left: 0.375rem;
-}
-
 .mobile-nav-button {
   position: relative;
   z-index: 505; /* Appear above mobile nav. */
@@ -63,8 +31,11 @@
   align-self: center;
   width: var(--sp2);
   height: var(--sp2);
-  padding-top: 0;
-  padding-bottom: 0;
+  margin-inline-start: auto;
+  margin-inline-end: -0.375rem;
+  padding-block: 0;
+  padding-inline-start: 0.375rem;
+  padding-inline-end: 0.375rem;
   cursor: pointer;
   border: none;
   background: transparent;
@@ -73,28 +44,21 @@
 }
 
 .mobile-nav-button:focus {
-    outline: solid 2px var(--color--primary-40);
-  }
+  outline: solid 2px var(--color--primary-40);
+}
 
 .mobile-nav-button:active {
-    color: inherit; /* Override Safari's default UA styles. */
-  }
+  color: inherit; /* Override Safari's default UA styles. */
+}
 
 @media (min-width: 31.25rem) {
 
-[dir="ltr"] .mobile-nav-button {
-    padding-left: var(--sp);
-  }
-
-[dir="rtl"] .mobile-nav-button {
-    padding-right: var(--sp);
-  }
-
-.mobile-nav-button {
+  .mobile-nav-button {
     display: inline-flex;
     width: auto;
-}
+    padding-inline-start: var(--sp);
   }
+}
 
 /* Text that says "menu". */
 
@@ -110,25 +74,18 @@
 
 @media (min-width: 31.25rem) {
 
-[dir="ltr"] .mobile-nav-button__label {
-    margin-right: 0.75rem;
-  }
-
-[dir="rtl"] .mobile-nav-button__label {
-    margin-left: 0.75rem;
-  }
-
-.mobile-nav-button__label {
+  .mobile-nav-button__label {
     position: static;
     overflow: visible;
     clip: auto;
     width: auto;
     height: auto;
+    margin-inline-end: 0.75rem;
     letter-spacing: 0.05em;
     font-size: 0.875rem;
     font-weight: 600;
-}
   }
+}
 
 .mobile-nav-button__icon {
   position: relative;
@@ -138,53 +95,38 @@
   border-top: solid 3px var(--color--primary-50);
 }
 
-[dir="ltr"] .mobile-nav-button__icon:before {
-    left: 0;
-}
-
-[dir="rtl"] .mobile-nav-button__icon:before {
-    right: 0;
-}
-
 .mobile-nav-button__icon:before {
-    position: absolute;
-    top: -0.6875rem;
-    width: 100%;
-    height: 0;
-    content: "";
-    transition: all 0.2s;
-    border-top: solid 3px var(--color--primary-50);
-  }
-
-[dir="ltr"] .mobile-nav-button__icon:after {
-    left: 0;
-}
-
-[dir="rtl"] .mobile-nav-button__icon:after {
-    right: 0;
+  position: absolute;
+  inset-block-start: -0.6875rem;
+  inset-inline-start: 0;
+  width: 100%;
+  height: 0;
+  content: "";
+  transition: all 0.2s;
+  border-top: solid 3px var(--color--primary-50);
 }
 
 .mobile-nav-button__icon:after {
-    position: absolute;
-    top: auto;
-    bottom: -0.5rem;
-    width: 100%;
-    height: 0;
-    content: "";
-    transition: all 0.2s;
-    border-top: solid 3px var(--color--primary-50);
-  }
+  position: absolute;
+  inset-block: auto -0.5rem;
+  inset-inline-start: 0;
+  width: 100%;
+  height: 0;
+  content: "";
+  transition: all 0.2s;
+  border-top: solid 3px var(--color--primary-50);
+}
 
 .mobile-nav-button[aria-expanded="true"] .mobile-nav-button__icon {
   border-top: 0;
 }
 
 .mobile-nav-button[aria-expanded="true"] .mobile-nav-button__icon:before {
-    top: 0;
-    transform: rotate(-45deg);
-  }
+  inset-block-start: 0;
+  transform: rotate(-45deg);
+}
 
 .mobile-nav-button[aria-expanded="true"] .mobile-nav-button__icon:after {
-    top: 0;
-    transform: rotate(45deg);
-  }
+  inset-block-start: 0;
+  transform: rotate(45deg);
+}
diff --git a/core/themes/olivero/css/components/navigation/nav-primary-button.css b/core/themes/olivero/css/components/navigation/nav-primary-button.css
index c62a138b44..ca4be3275a 100644
--- a/core/themes/olivero/css/components/navigation/nav-primary-button.css
+++ b/core/themes/olivero/css/components/navigation/nav-primary-button.css
@@ -23,30 +23,15 @@
 
 /* Width of the entire grid maxes out. */
 
-[dir="ltr"] .primary-nav__button-toggle {
-  padding-left: 0;
-}
-
-[dir="rtl"] .primary-nav__button-toggle {
-  padding-right: 0;
-}
-
-[dir="ltr"] .primary-nav__button-toggle {
-  padding-right: 0;
-}
-
-[dir="rtl"] .primary-nav__button-toggle {
-  padding-left: 0;
-}
-
 .primary-nav__button-toggle {
   position: relative;
   overflow: hidden;
   width: var(--sp2);
   height: var(--sp2);
-  margin-top: var(--sp0-5); /* Visually align button with menu link text. */
-  padding-top: 0;
-  padding-bottom: 0;
+  margin-block-start: var(--sp0-5); /* Visually align button with menu link text. */
+  padding-block: 0;
+  padding-inline-start: 0;
+  padding-inline-end: 0;
   cursor: pointer;
   text-indent: -62.4375rem;
   border: 0;
@@ -55,121 +40,109 @@
 }
 
 .primary-nav__button-toggle:focus {
-    outline: auto 2px var(--color--primary-50);
-    outline-offset: 2px;
-  }
+  outline: auto 2px var(--color--primary-50);
+  outline-offset: 2px;
+}
 
 .primary-nav__button-toggle .icon--menu-toggle {
-    position: absolute;
-    /* stylelint-disable csstools/use-logical */
-    top: 50%;
-    left: 50%;
-    /* stylelint-enable csstools/use-logical */
-    width: 1rem;
-    height: 1rem;
-    transition: background-color 0.2s;
-    transform: translate(-50%, -50%);
-    border-radius: 2px;
-  }
+  position: absolute;
+  /* stylelint-disable csstools/use-logical */
+  top: 50%;
+  left: 50%;
+  /* stylelint-enable csstools/use-logical */
+  width: 1rem;
+  height: 1rem;
+  transition: background-color 0.2s;
+  transform: translate(-50%, -50%);
+  border-radius: 2px;
+}
 
 .primary-nav__button-toggle .icon--menu-toggle:before,
-    .primary-nav__button-toggle .icon--menu-toggle:after {
-      position: absolute;
-      /* stylelint-disable csstools/use-logical */
-      top: 50%;
-      left: 50%;
-      /* stylelint-enable csstools/use-logical */
-      width: var(--sp);
-      height: 0;
-      content: "";
-      transform: translate(-50%, -50%);
-      /* Intentionally not using CSS logical properties. */
-      border-top: solid 3px var(--color--primary-50);
-    }
+.primary-nav__button-toggle .icon--menu-toggle:after {
+  position: absolute;
+  /* stylelint-disable csstools/use-logical */
+  top: 50%;
+  left: 50%;
+  /* stylelint-enable csstools/use-logical */
+  width: var(--sp);
+  height: 0;
+  content: "";
+  transform: translate(-50%, -50%);
+  /* Intentionally not using CSS logical properties. */
+  border-top: solid 3px var(--color--primary-50);
+}
 
 .primary-nav__button-toggle .icon--menu-toggle:after {
-      transition: opacity 0.2s;
-      transform: translate(-50%, -50%) rotate(90deg);
-    }
+  transition: opacity 0.2s;
+  transform: translate(-50%, -50%) rotate(90deg);
+}
 
 .primary-nav__button-toggle[aria-expanded="true"] .icon--menu-toggle:after {
-    opacity: 0;
-  }
+  opacity: 0;
+}
 
 /* aria-hidden attribute is removed by JS. Button is non-functional
      until JS is enabled.
   */
 
 .primary-nav__button-toggle[aria-hidden="true"] {
-    pointer-events: none;
-  }
+  pointer-events: none;
+}
 
 @media (min-width: 75rem) {
-    [dir="ltr"] body:not(.is-always-mobile-nav) .primary-nav__button-toggle {
-      margin-right: calc(-1 * var(--sp2));
+  body:not(.is-always-mobile-nav) .primary-nav__button-toggle {
+    flex-shrink: 0;
+    align-self: stretch;
+    width: calc(var(--sp2) + 0.5rem);
+    height: auto;
+    margin-block-start: 0;
+    margin-inline-end: calc(-1 * var(--sp2));
+  }
+
+  body:not(.is-always-mobile-nav) .primary-nav__button-toggle:focus {
+    border: 0;
+    outline: 0;
+  }
+
+  body:not(.is-always-mobile-nav) .primary-nav__button-toggle:focus .icon--menu-toggle {
+    border: solid 2px var(--color--primary-40);
+  }
+
+  body:not(.is-always-mobile-nav) .primary-nav__button-toggle:active {
+    /* Necessary for Safari. */
+    color: currentColor;
   }
-    [dir="rtl"] body:not(.is-always-mobile-nav) .primary-nav__button-toggle {
-      margin-left: calc(-1 * var(--sp2));
+
+  body:not(.is-always-mobile-nav) .primary-nav__button-toggle[aria-expanded="true"] .icon--menu-toggle:after {
+    opacity: 0.8;
   }
-    body:not(.is-always-mobile-nav) .primary-nav__button-toggle {
-      flex-shrink: 0;
-      align-self: stretch;
-      width: calc(var(--sp2) + 0.5rem);
-      height: auto;
-      margin-top: 0;
-    }
-
-      body:not(.is-always-mobile-nav) .primary-nav__button-toggle:focus {
-        border: 0;
-        outline: 0;
-      }
-
-        body:not(.is-always-mobile-nav) .primary-nav__button-toggle:focus .icon--menu-toggle {
-          border: solid 2px var(--color--primary-40);
-        }
-
-      body:not(.is-always-mobile-nav) .primary-nav__button-toggle:active {
-        /* Necessary for Safari. */
-        color: currentColor;
-      }
-
-      body:not(.is-always-mobile-nav) .primary-nav__button-toggle[aria-expanded="true"] .icon--menu-toggle:after {
-        opacity: 0.8;
-      }
-
-      [dir="ltr"] body:not(.is-always-mobile-nav) .primary-nav__button-toggle .icon--menu-toggle {
-        left: 0.1875rem;
+
+  body:not(.is-always-mobile-nav) .primary-nav__button-toggle .icon--menu-toggle {
+    inset-inline-start: 0.1875rem;
+    width: 1.125rem;
+    transform: translateY(-50%);
+    border-radius: 0.25rem;
+    background-color: var(--color--white);
   }
 
-      [dir="rtl"] body:not(.is-always-mobile-nav) .primary-nav__button-toggle .icon--menu-toggle {
-        right: 0.1875rem;
+  body:not(.is-always-mobile-nav) .primary-nav__button-toggle .icon--menu-toggle:before {
+    content: none;
   }
 
-      body:not(.is-always-mobile-nav) .primary-nav__button-toggle .icon--menu-toggle {
-        width: 1.125rem;
-        transform: translateY(-50%);
-        border-radius: 0.25rem;
-        background-color: var(--color--white);
-      }
-
-        body:not(.is-always-mobile-nav) .primary-nav__button-toggle .icon--menu-toggle:before {
-          content: none;
-        }
-
-        body:not(.is-always-mobile-nav) .primary-nav__button-toggle .icon--menu-toggle:after {
-          /* stylelint-disable csstools/use-logical */
-          top: calc(50% - 2px);
-          left: 0.1875rem;
-          /* stylelint-enable csstools/use-logical */
-          width: 0.5rem;
-          height: 0.5rem;
-          content: "";
-          transform: translateY(-50%) rotate(45deg);
-          opacity: 0.8;
-          /* Intentionally not using CSS logical properties. */
-          border-top: none;
-          border-right: solid 2px currentColor;
-          border-bottom: solid 2px currentColor;
-          background: transparent;
-        }
+  body:not(.is-always-mobile-nav) .primary-nav__button-toggle .icon--menu-toggle:after {
+    /* stylelint-disable csstools/use-logical */
+    top: calc(50% - 2px);
+    left: 0.1875rem;
+    /* stylelint-enable csstools/use-logical */
+    width: 0.5rem;
+    height: 0.5rem;
+    content: "";
+    transform: translateY(-50%) rotate(45deg);
+    opacity: 0.8;
+    /* Intentionally not using CSS logical properties. */
+    border-top: none;
+    border-right: solid 2px currentColor;
+    border-bottom: solid 2px currentColor;
+    background: transparent;
   }
+}
diff --git a/core/themes/olivero/css/components/navigation/nav-primary-no-js.css b/core/themes/olivero/css/components/navigation/nav-primary-no-js.css
index 7ad38c9cd3..248f1186e3 100644
--- a/core/themes/olivero/css/components/navigation/nav-primary-no-js.css
+++ b/core/themes/olivero/css/components/navigation/nav-primary-no-js.css
@@ -33,197 +33,129 @@
    */
 
 @media (max-width: 75rem) {
-    html:not(.js) .primary-nav__menu--level-1 {
-      column-width: var(--no-js-nav-column-width);
-      column-gap: var(--no-js-nav-column-gap);
-    }
-
-    html:not(.js) .primary-nav__menu-item {
-      page-break-inside: avoid;
-      break-inside: avoid;
-    }
-
-    html:not(.js) .site-header__inner__container {
-      flex-wrap: wrap;
-    }
-
-    html:not(.js) .mobile-buttons {
-      display: none;
-    }
-
-    html[dir="ltr"]:not(.js) .header-nav {
-      margin-left: var(--sp2);
+  html:not(.js) .primary-nav__menu--level-1 {
+    column-width: var(--no-js-nav-column-width);
+    column-gap: var(--no-js-nav-column-gap);
   }
 
-    html[dir="rtl"]:not(.js) .header-nav {
-      margin-right: var(--sp2);
+  html:not(.js) .primary-nav__menu-item {
+    page-break-inside: avoid;
+    break-inside: avoid;
   }
 
-    html[dir="ltr"]:not(.js) .header-nav {
-      margin-right: var(--sp2);
+  html:not(.js) .site-header__inner__container {
+    flex-wrap: wrap;
   }
 
-    html[dir="rtl"]:not(.js) .header-nav {
-      margin-left: var(--sp2);
+  html:not(.js) .mobile-buttons {
+    display: none;
   }
 
-    html[dir="ltr"]:not(.js) .header-nav {
-      padding-left: var(--sp2);
+  html:not(.js) .header-nav {
+    border: solid 1px var(--color--gray-95) !important;
   }
 
-    html[dir="rtl"]:not(.js) .header-nav {
-      padding-right: var(--sp2);
+  html:not(.js) .header-nav {
+    position: static;
+    visibility: visible;
+    flex-basis: 100%;
+    width: 100%;
+    max-width: none;
+    margin-block: var(--sp2) 0;
+    margin-inline-start: var(--sp2);
+    margin-inline-end: var(--sp2);
+    padding-block: var(--sp2) 0;
+    padding-inline-start: var(--sp2);
+    padding-inline-end: var(--sp2);
+    transform: none;
+    box-shadow: 0 0 36px var(--color--gray-90);
   }
 
-    html[dir="ltr"]:not(.js) .header-nav {
-      padding-right: var(--sp2);
+  html:not(.js) .primary-nav__menu--level-2 {
+    border-inline-start: 0;
   }
 
-    html[dir="rtl"]:not(.js) .header-nav {
-      padding-left: var(--sp2);
+  html:not(.js) .primary-nav__button-toggle {
+    display: none;
   }
-
-    html:not(.js) .header-nav {
-      border: solid 1px var(--color--gray-95) !important;
-    }
-
-    html:not(.js) .header-nav {
-      position: static;
-      visibility: visible;
-      flex-basis: 100%;
-      width: 100%;
-      max-width: none;
-      margin-top: var(--sp2);
-      margin-bottom: 0;
-      padding-top: var(--sp2);
-      padding-bottom: 0;
-      transform: none;
-      box-shadow: 0 0 36px var(--color--gray-90);
-    }
-
-    html[dir="ltr"]:not(.js) .primary-nav__menu--level-2 {
-      border-left: 0;
-  }
-
-    html[dir="rtl"]:not(.js) .primary-nav__menu--level-2 {
-      border-right: 0;
-  }
-
-    html:not(.js) .primary-nav__button-toggle {
-      display: none;
-    }
-      html:not(.js) .primary-nav__menu-link--button.primary-nav__menu-link--has-children:before,
-      html:not(.js) .primary-nav__menu-link--button.primary-nav__menu-link--has-children:after {
-        content: none;
-      }
+  html:not(.js) .primary-nav__menu-link--button.primary-nav__menu-link--has-children:before,
+  html:not(.js) .primary-nav__menu-link--button.primary-nav__menu-link--has-children:after {
+    content: none;
   }
+}
 
 @media (min-width: 75rem) {
-    /**
+  /**
      * Styles for 'always on mobile navigation' when JS is disabled.
      */
-      html:not(.js) body.is-always-mobile-nav .primary-nav__menu--level-1 {
-        column-width: var(--no-js-nav-column-width);
-        column-gap: var(--no-js-nav-column-gap);
-      }
-
-      html:not(.js) body.is-always-mobile-nav .primary-nav__menu-item {
-        page-break-inside: avoid;
-        break-inside: avoid;
-      }
-
-      html:not(.js) body.is-always-mobile-nav .site-header__inner__container {
-        flex-wrap: wrap;
-      }
-
-      html:not(.js) body.is-always-mobile-nav .mobile-buttons {
-        display: none;
-      }
-
-      html[dir="ltr"]:not(.js) body.is-always-mobile-nav .header-nav {
-        margin-left: var(--sp2);
+  html:not(.js) body.is-always-mobile-nav .primary-nav__menu--level-1 {
+    column-width: var(--no-js-nav-column-width);
+    column-gap: var(--no-js-nav-column-gap);
   }
 
-      html[dir="rtl"]:not(.js) body.is-always-mobile-nav .header-nav {
-        margin-right: var(--sp2);
+  html:not(.js) body.is-always-mobile-nav .primary-nav__menu-item {
+    page-break-inside: avoid;
+    break-inside: avoid;
   }
 
-      html[dir="ltr"]:not(.js) body.is-always-mobile-nav .header-nav {
-        margin-right: var(--sp2);
+  html:not(.js) body.is-always-mobile-nav .site-header__inner__container {
+    flex-wrap: wrap;
   }
 
-      html[dir="rtl"]:not(.js) body.is-always-mobile-nav .header-nav {
-        margin-left: var(--sp2);
+  html:not(.js) body.is-always-mobile-nav .mobile-buttons {
+    display: none;
   }
 
-      html[dir="ltr"]:not(.js) body.is-always-mobile-nav .header-nav {
-        padding-left: var(--sp2);
+  html:not(.js) body.is-always-mobile-nav .header-nav {
+    border: solid 1px var(--color--gray-95) !important;
   }
 
-      html[dir="rtl"]:not(.js) body.is-always-mobile-nav .header-nav {
-        padding-right: var(--sp2);
+  html:not(.js) body.is-always-mobile-nav .header-nav {
+    position: static;
+    visibility: visible;
+    flex-basis: 100%;
+    width: 100%;
+    max-width: none;
+    margin-block: var(--sp2) 0;
+    margin-inline-start: var(--sp2);
+    margin-inline-end: var(--sp2);
+    padding-block: var(--sp2) 0;
+    padding-inline-start: var(--sp2);
+    padding-inline-end: var(--sp2);
+    transform: none;
+    box-shadow: 0 0 36px var(--color--gray-90);
   }
 
-      html[dir="ltr"]:not(.js) body.is-always-mobile-nav .header-nav {
-        padding-right: var(--sp2);
+  html:not(.js) body.is-always-mobile-nav .primary-nav__menu--level-2 {
+    border-inline-start: 0;
   }
 
-      html[dir="rtl"]:not(.js) body.is-always-mobile-nav .header-nav {
-        padding-left: var(--sp2);
-  }
-
-      html:not(.js) body.is-always-mobile-nav .header-nav {
-        border: solid 1px var(--color--gray-95) !important;
-      }
-
-      html:not(.js) body.is-always-mobile-nav .header-nav {
-        position: static;
-        visibility: visible;
-        flex-basis: 100%;
-        width: 100%;
-        max-width: none;
-        margin-top: var(--sp2);
-        margin-bottom: 0;
-        padding-top: var(--sp2);
-        padding-bottom: 0;
-        transform: none;
-        box-shadow: 0 0 36px var(--color--gray-90);
-      }
-
-      html[dir="ltr"]:not(.js) body.is-always-mobile-nav .primary-nav__menu--level-2 {
-        border-left: 0;
+  html:not(.js) body.is-always-mobile-nav .primary-nav__button-toggle {
+    display: none;
   }
-
-      html[dir="rtl"]:not(.js) body.is-always-mobile-nav .primary-nav__menu--level-2 {
-        border-right: 0;
+  html:not(.js) body.is-always-mobile-nav .primary-nav__menu-link--button.primary-nav__menu-link--has-children:before,
+  html:not(.js) body.is-always-mobile-nav .primary-nav__menu-link--button.primary-nav__menu-link--has-children:after {
+    content: none;
   }
 
-      html:not(.js) body.is-always-mobile-nav .primary-nav__button-toggle {
-        display: none;
-      }
-        html:not(.js) body.is-always-mobile-nav .primary-nav__menu-link--button.primary-nav__menu-link--has-children:before,
-        html:not(.js) body.is-always-mobile-nav .primary-nav__menu-link--button.primary-nav__menu-link--has-children:after {
-          content: none;
-        }
-
-    /**
+  /**
      * Styles for traditional dropdown primary navigation when JS is disabled.
      */
-        html:not(.js) body:not(.is-always-mobile-nav) .primary-nav__menu-item--level-1:hover .primary-nav__menu--level-2,
-        html:not(.js) body:not(.is-always-mobile-nav) .primary-nav__menu-item--level-1:hover .primary-nav__menu-🥕 {
-          visibility: visible;
-          transform: translate(-50%, 0);
-          opacity: 1;
-        }
-
-      /*
+  html:not(.js) body:not(.is-always-mobile-nav) .primary-nav__menu-item--level-1:hover .primary-nav__menu--level-2,
+  html:not(.js) body:not(.is-always-mobile-nav) .primary-nav__menu-item--level-1:hover .primary-nav__menu-🥕 {
+    visibility: visible;
+    transform: translate(-50%, 0);
+    opacity: 1;
+  }
+
+  /*
        * Cannot combine the focus-within pseudo selector with other selectors,
        * because it will break IE11 and earlier versions of MS Edge.
        */
-        html:not(.js) body:not(.is-always-mobile-nav) .primary-nav__menu-item--level-1:focus-within .primary-nav__menu--level-2,
-        html:not(.js) body:not(.is-always-mobile-nav) .primary-nav__menu-item--level-1:focus-within .primary-nav__menu-🥕 {
-          visibility: visible;
-          transform: translate(-50%, 0);
-          opacity: 1;
-        }
+  html:not(.js) body:not(.is-always-mobile-nav) .primary-nav__menu-item--level-1:focus-within .primary-nav__menu--level-2,
+  html:not(.js) body:not(.is-always-mobile-nav) .primary-nav__menu-item--level-1:focus-within .primary-nav__menu-🥕 {
+    visibility: visible;
+    transform: translate(-50%, 0);
+    opacity: 1;
   }
+}
diff --git a/core/themes/olivero/css/components/navigation/nav-primary-wide.css b/core/themes/olivero/css/components/navigation/nav-primary-wide.css
index 11bc11bbf2..b4dc9355bb 100644
--- a/core/themes/olivero/css/components/navigation/nav-primary-wide.css
+++ b/core/themes/olivero/css/components/navigation/nav-primary-wide.css
@@ -24,290 +24,202 @@
 /* Width of the entire grid maxes out. */
 
 @media (min-width: 75rem) {
-    body:not(.is-always-mobile-nav) .primary-nav__menu-item {
-      flex-wrap: nowrap; /* Ensure that sub navigation toggle button doesn't wrap underneath link. */
-    }
-        body:not(.is-always-mobile-nav) .primary-nav__menu-item.primary-nav__menu-item--has-children .primary-nav__menu-link--link,
-        body:not(.is-always-mobile-nav) .primary-nav__menu-item.primary-nav__menu-item--has-children .primary-nav__menu-link--nolink {
-          flex-basis: auto;
-        }
-
-        /* Remove hover state if submenu exists. */
-        body:not(.is-always-mobile-nav) .primary-nav__menu-item.primary-nav__menu-item--has-children .primary-nav__menu-link--level-1 .primary-nav__menu-link-inner:after {
-          content: none;
-        }
-
-    body:not(.is-always-mobile-nav) .primary-nav__menu-link {
-      letter-spacing: 0.02em;
-      font-size: 1rem;
-      line-height: var(--sp1-5);
-    }
-
-      body:not(.is-always-mobile-nav) .primary-nav__menu-link:focus {
-        position: relative;
-        outline: 0;
-      }
-
-        body:not(.is-always-mobile-nav) .primary-nav__menu-link:focus:before {
-          position: absolute;
-          top: 50%;
-          left: 50%;
-          width: calc(100% + var(--sp));
-          height: var(--sp3);
-          content: "";
-          transform: translate(-50%, -50%);
-          border: solid 2px var(--color--primary-50);
-          border-radius: 0.25rem;
-        }
-      [dir="ltr"] body:not(.is-always-mobile-nav) .primary-nav__menu-link--button.primary-nav__menu-link--has-children {
-        padding-right: 0.5625rem;
-    }
-      [dir="rtl"] body:not(.is-always-mobile-nav) .primary-nav__menu-link--button.primary-nav__menu-link--has-children {
-        padding-left: 0.5625rem;
-    }
-      body:not(.is-always-mobile-nav) .primary-nav__menu-link--button.primary-nav__menu-link--has-children {
-        overflow: visible; /* Necessary to view icon in IE11 */
-      }
-
-        body:not(.is-always-mobile-nav) .primary-nav__menu-link--button.primary-nav__menu-link--has-children:focus:before {
-          width: calc(100% + var(--sp1-5));
-          content: "";
-        }
-
-        body:not(.is-always-mobile-nav) .primary-nav__menu-link--button.primary-nav__menu-link--has-children:before {
-          content: none;
-        }
-
-        /* Chevron icon for desktop navigation. */
-        [dir="ltr"] body:not(.is-always-mobile-nav) .primary-nav__menu-link--button.primary-nav__menu-link--has-children:after {
-          left: calc(100% - 0.1875rem);
-    }
-        [dir="rtl"] body:not(.is-always-mobile-nav) .primary-nav__menu-link--button.primary-nav__menu-link--has-children:after {
-          right: calc(100% - 0.1875rem);
-    }
-        body:not(.is-always-mobile-nav) .primary-nav__menu-link--button.primary-nav__menu-link--has-children:after {
-          position: absolute;
-          top: 50%;
-          width: 0.5rem;
-          height: 0.5rem;
-          margin-top: -2px;
-          transform: translateY(-50%) rotate(45deg);
-          /* Intentionally not using CSS logical properties. */
-          border-top: 0;
-          border-right: solid 2px currentColor;
-          border-bottom: solid 2px currentColor;
-        }
-
-        body:not(.is-always-mobile-nav) .primary-nav__menu-link--button.primary-nav__menu-link--has-children[aria-expanded="true"]:after {
-          opacity: 1;
-        }
-
-    [dir="ltr"] body:not(.is-always-mobile-nav) .primary-nav__menu-link-inner {
-      padding-left: 0;
-    }
-
-    [dir="rtl"] body:not(.is-always-mobile-nav) .primary-nav__menu-link-inner {
-      padding-right: 0;
-    }
-
-    [dir="ltr"] body:not(.is-always-mobile-nav) .primary-nav__menu-link-inner {
-      padding-right: 0;
-    }
-
-    [dir="rtl"] body:not(.is-always-mobile-nav) .primary-nav__menu-link-inner {
-      padding-left: 0;
-    }
-
-    body:not(.is-always-mobile-nav) .primary-nav__menu-link-inner {
-      padding-top: var(--sp2);
-      padding-bottom: var(--sp2);
-    }
-
-      body:not(.is-always-mobile-nav) .primary-nav__menu-link-inner:after {
-        transform-origin: center;
-        border-top-width: var(--sp0-5);
-      }
-
-    [dir="ltr"] body:not(.is-always-mobile-nav) .primary-nav__menu--level-1 {
-      margin-right: var(--sp);
-    }
-
-    [dir="rtl"] body:not(.is-always-mobile-nav) .primary-nav__menu--level-1 {
-      margin-left: var(--sp);
-    }
-
-    body:not(.is-always-mobile-nav) .primary-nav__menu--level-1 {
-      display: flex;
-      align-items: stretch;
-    }
-
-    [dir="ltr"] body:not(.is-always-mobile-nav) .primary-nav__menu-item--level-1 {
-      margin-left: 0;
-    }
-
-    [dir="rtl"] body:not(.is-always-mobile-nav) .primary-nav__menu-item--level-1 {
-      margin-right: 0;
-    }
-
-    [dir="ltr"] body:not(.is-always-mobile-nav) .primary-nav__menu-item--level-1 {
-      margin-right: 0;
-    }
-
-    [dir="rtl"] body:not(.is-always-mobile-nav) .primary-nav__menu-item--level-1 {
-      margin-left: 0;
-    }
-
-    body:not(.is-always-mobile-nav) .primary-nav__menu-item--level-1 {
-      position: relative; /* Anchor secondary menu */
-      display: flex;
-      align-items: center;
-      width: max-content;
-      max-width: 12.5rem;
-      margin-top: 0;
-      margin-bottom: 0;
-    }
-
-      [dir="ltr"] body:not(.is-always-mobile-nav) .primary-nav__menu-item--level-1:not(:last-child) {
-        margin-right: var(--sp2);
-    }
-
-      [dir="rtl"] body:not(.is-always-mobile-nav) .primary-nav__menu-item--level-1:not(:last-child) {
-        margin-left: var(--sp2);
-    }
-
-    [dir="ltr"] body:not(.is-always-mobile-nav) .primary-nav__menu--level-2 {
-      margin-left: 0;
-    }
-
-    [dir="rtl"] body:not(.is-always-mobile-nav) .primary-nav__menu--level-2 {
-      margin-right: 0;
-    }
-
-    [dir="ltr"] body:not(.is-always-mobile-nav) .primary-nav__menu--level-2 {
-      padding-left: var(--sp2);
-    }
-
-    [dir="rtl"] body:not(.is-always-mobile-nav) .primary-nav__menu--level-2 {
-      padding-right: var(--sp2);
-    }
-
-    [dir="ltr"] body:not(.is-always-mobile-nav) .primary-nav__menu--level-2 {
-      padding-right: var(--sp2);
-    }
-
-    [dir="rtl"] body:not(.is-always-mobile-nav) .primary-nav__menu--level-2 {
-      padding-left: var(--sp2);
-    }
-
-    body:not(.is-always-mobile-nav) .primary-nav__menu--level-2 {
-      position: absolute;
-      z-index: 105; /* Appear above search container. */
-      top: calc(100% - (0.5 * var(--sp)));
-      left: 50%;
-      visibility: hidden;
-      overflow: auto;
-      width: 15.625rem;
-      /* Ensure that long level-2 menus will never overflow viewport (focused
+  body:not(.is-always-mobile-nav) .primary-nav__menu-item {
+    flex-wrap: nowrap; /* Ensure that sub navigation toggle button doesn't wrap underneath link. */
+  }
+  body:not(.is-always-mobile-nav) .primary-nav__menu-item.primary-nav__menu-item--has-children .primary-nav__menu-link--link,
+  body:not(.is-always-mobile-nav) .primary-nav__menu-item.primary-nav__menu-item--has-children .primary-nav__menu-link--nolink {
+    flex-basis: auto;
+  }
+
+  /* Remove hover state if submenu exists. */
+  body:not(.is-always-mobile-nav) .primary-nav__menu-item.primary-nav__menu-item--has-children .primary-nav__menu-link--level-1 .primary-nav__menu-link-inner:after {
+    content: none;
+  }
+
+  body:not(.is-always-mobile-nav) .primary-nav__menu-link {
+    letter-spacing: 0.02em;
+    font-size: 1rem;
+    line-height: var(--sp1-5);
+  }
+
+  body:not(.is-always-mobile-nav) .primary-nav__menu-link:focus {
+    position: relative;
+    outline: 0;
+  }
+
+  body:not(.is-always-mobile-nav) .primary-nav__menu-link:focus:before {
+    position: absolute;
+    top: 50%;
+    left: 50%;
+    width: calc(100% + var(--sp));
+    height: var(--sp3);
+    content: "";
+    transform: translate(-50%, -50%);
+    border: solid 2px var(--color--primary-50);
+    border-radius: 0.25rem;
+  }
+  body:not(.is-always-mobile-nav) .primary-nav__menu-link--button.primary-nav__menu-link--has-children {
+    overflow: visible; /* Necessary to view icon in IE11 */
+    padding-inline-end: 0.5625rem;
+  }
+
+  body:not(.is-always-mobile-nav) .primary-nav__menu-link--button.primary-nav__menu-link--has-children:focus:before {
+    width: calc(100% + var(--sp1-5));
+    content: "";
+  }
+
+  body:not(.is-always-mobile-nav) .primary-nav__menu-link--button.primary-nav__menu-link--has-children:before {
+    content: none;
+  }
+
+  /* Chevron icon for desktop navigation. */
+  body:not(.is-always-mobile-nav) .primary-nav__menu-link--button.primary-nav__menu-link--has-children:after {
+    position: absolute;
+    inset-block-start: 50%;
+    inset-inline-start: calc(100% - 0.1875rem);
+    width: 0.5rem;
+    height: 0.5rem;
+    margin-block-start: -2px;
+    transform: translateY(-50%) rotate(45deg);
+    /* Intentionally not using CSS logical properties. */
+    border-top: 0;
+    border-right: solid 2px currentColor;
+    border-bottom: solid 2px currentColor;
+  }
+
+  body:not(.is-always-mobile-nav) .primary-nav__menu-link--button.primary-nav__menu-link--has-children[aria-expanded="true"]:after {
+    opacity: 1;
+  }
+
+  body:not(.is-always-mobile-nav) .primary-nav__menu-link-inner {
+    padding-block: var(--sp2);
+    padding-inline-start: 0;
+    padding-inline-end: 0;
+  }
+
+  body:not(.is-always-mobile-nav) .primary-nav__menu-link-inner:after {
+    transform-origin: center;
+    border-top-width: var(--sp0-5);
+  }
+
+  body:not(.is-always-mobile-nav) .primary-nav__menu--level-1 {
+    display: flex;
+    align-items: stretch;
+    margin-inline-end: var(--sp);
+  }
+
+  body:not(.is-always-mobile-nav) .primary-nav__menu-item--level-1 {
+    position: relative; /* Anchor secondary menu */
+    display: flex;
+    align-items: center;
+    width: max-content;
+    max-width: 12.5rem;
+    margin-block: 0;
+    margin-inline-start: 0;
+    margin-inline-end: 0;
+  }
+
+  body:not(.is-always-mobile-nav) .primary-nav__menu-item--level-1:not(:last-child) {
+    margin-inline-end: var(--sp2);
+  }
+
+  body:not(.is-always-mobile-nav) .primary-nav__menu--level-2 {
+    position: absolute;
+    z-index: 105; /* Appear above search container. */
+    top: calc(100% - (0.5 * var(--sp)));
+    left: 50%;
+    visibility: hidden;
+    overflow: auto;
+    width: 15.625rem;
+    /* Ensure that long level-2 menus will never overflow viewport (focused
        * elements should always be in viewport per accessibility guidelines). */
-      max-height: calc(100vh - var(--site-header-height-wide) - var(--drupal-displace-offset-top, 0px) - var(--drupal-displace-offset-bottom, 0px) - var(--sp));
-      margin-top: 0;
-      padding-top: calc(3 * var(--sp));
-      padding-bottom: calc(3 * var(--sp));
-      transition: none;
-      transform: translate(-50%, -1.25rem);
-      opacity: 0;
-      /* Intentionally not using CSS logical properties. */
-      border-top: solid var(--color--primary-50) var(--sp0-5);
-      border-right: solid 1px transparent; /* Transparent borders useful for Windows High Contrast mode. */
-      border-bottom: solid 1px transparent;
-      border-left: solid 1px transparent;
-      border-radius: 0 0 2px 2px;
-      background: var(--color--white);
-      box-shadow: 0 1px 36px rgba(0, 0, 0, 0.08);
-    }
-
-      body:not(.is-always-mobile-nav) .primary-nav__menu--level-2.is-active-menu-parent {
-        visibility: visible;
-        margin-top: 0;
-        transform: translate(-50%, 0);
-        opacity: 1;
-      }
-
-    body:not(.is-always-mobile-nav) .primary-nav__menu-link--level-2 {
-      display: block;
-    }
-
-      body:not(.is-always-mobile-nav) .primary-nav__menu-link--level-2:focus:before {
-        top: 0;
-        left: calc(var(--sp0-5) * -1);
-        height: 100%;
-        transform: none;
-      }
-
-      [dir="ltr"] body:not(.is-always-mobile-nav) .primary-nav__menu-link--level-2 .primary-nav__menu-link-inner {
-        padding-left: 0;
-    }
-
-      [dir="rtl"] body:not(.is-always-mobile-nav) .primary-nav__menu-link--level-2 .primary-nav__menu-link-inner {
-        padding-right: 0;
-    }
-
-      [dir="ltr"] body:not(.is-always-mobile-nav) .primary-nav__menu-link--level-2 .primary-nav__menu-link-inner {
-        padding-right: 0;
-    }
-
-      [dir="rtl"] body:not(.is-always-mobile-nav) .primary-nav__menu-link--level-2 .primary-nav__menu-link-inner {
-        padding-left: 0;
-    }
-
-      body:not(.is-always-mobile-nav) .primary-nav__menu-link--level-2 .primary-nav__menu-link-inner {
-        padding-top: var(--sp0-5);
-        padding-bottom: var(--sp0-5);
-      }
-
-        body:not(.is-always-mobile-nav) .primary-nav__menu-link--level-2 .primary-nav__menu-link-inner:after {
-          transform-origin: left; /* LTR */
-          border-top-width: 3px;
-        }
-
-          [dir="rtl"] body:not(.is-always-mobile-nav) .primary-nav__menu-link--level-2 .primary-nav__menu-link-inner:after {
-            transform-origin: right;
-          }
-
-    /**
+    max-height: calc(100vh - var(--site-header-height-wide) - var(--drupal-displace-offset-top, 0px) - var(--drupal-displace-offset-bottom, 0px) - var(--sp));
+    margin-block-start: 0;
+    margin-inline-start: 0;
+    padding-block: calc(3 * var(--sp));
+    padding-inline-start: var(--sp2);
+    padding-inline-end: var(--sp2);
+    transition: none;
+    transform: translate(-50%, -1.25rem);
+    opacity: 0;
+    /* Intentionally not using CSS logical properties. */
+    border-top: solid var(--color--primary-50) var(--sp0-5);
+    border-right: solid 1px transparent; /* Transparent borders useful for Windows High Contrast mode. */
+    border-bottom: solid 1px transparent;
+    border-left: solid 1px transparent;
+    border-radius: 0 0 2px 2px;
+    background: var(--color--white);
+    box-shadow: 0 1px 36px rgba(0, 0, 0, 0.08);
+  }
+
+  body:not(.is-always-mobile-nav) .primary-nav__menu--level-2.is-active-menu-parent {
+    visibility: visible;
+    margin-block-start: 0;
+    transform: translate(-50%, 0);
+    opacity: 1;
+  }
+
+  body:not(.is-always-mobile-nav) .primary-nav__menu-link--level-2 {
+    display: block;
+  }
+
+  body:not(.is-always-mobile-nav) .primary-nav__menu-link--level-2:focus:before {
+    top: 0;
+    left: calc(var(--sp0-5) * -1);
+    height: 100%;
+    transform: none;
+  }
+
+  body:not(.is-always-mobile-nav) .primary-nav__menu-link--level-2 .primary-nav__menu-link-inner {
+    padding-block: var(--sp0-5);
+    padding-inline-start: 0;
+    padding-inline-end: 0;
+  }
+
+  body:not(.is-always-mobile-nav) .primary-nav__menu-link--level-2 .primary-nav__menu-link-inner:after {
+    transform-origin: left; /* LTR */
+    border-top-width: 3px;
+  }
+
+  [dir="rtl"] body:not(.is-always-mobile-nav) .primary-nav__menu-link--level-2 .primary-nav__menu-link-inner:after {
+    transform-origin: right;
+  }
+
+  /**
      * Arrow is placed outside of submenu because the submenu has the
      * `overflow: hidden` CSS rule applied.
      */
-    body:not(.is-always-mobile-nav) .primary-nav__menu-🥕 {
-      position: absolute;
-      z-index: 105; /* Match level 2 menus. */
-      top: calc(100% - var(--sp));
-      left: 50%;
-      visibility: hidden;
-      width: 0;
-      height: 0;
-      transform: translate(-50%, -1.25rem);
-      opacity: 0;
-      /* Intentionally not using CSS logical properties. */
-      border-right: solid 10px transparent;
-      border-bottom: solid 10px var(--color--primary-50);
-      border-left: solid 10px transparent;
-    }
-
-      body:not(.is-always-mobile-nav) .primary-nav__menu-🥕.is-active-menu-parent {
-        visibility: visible;
-        transform: translate(-50%, 0);
-        opacity: 1;
-      }
-
-    /**
+  body:not(.is-always-mobile-nav) .primary-nav__menu-🥕 {
+    position: absolute;
+    z-index: 105; /* Match level 2 menus. */
+    top: calc(100% - var(--sp));
+    left: 50%;
+    visibility: hidden;
+    width: 0;
+    height: 0;
+    transform: translate(-50%, -1.25rem);
+    opacity: 0;
+    /* Intentionally not using CSS logical properties. */
+    border-right: solid 10px transparent;
+    border-bottom: solid 10px var(--color--primary-50);
+    border-left: solid 10px transparent;
+  }
+
+  body:not(.is-always-mobile-nav) .primary-nav__menu-🥕.is-active-menu-parent {
+    visibility: visible;
+    transform: translate(-50%, 0);
+    opacity: 1;
+  }
+
+  /**
      * When ensuring that long menus don't overflow viewport, we can give a
      * little extra room when the toolbar is fixed (and is shorter).
      */
-    body:not(.is-always-mobile-nav) .is-fixed .primary-nav__menu--level-2 {
-      max-height: calc(100vh - var(--site-header-height-wide) - var(--drupal-displace-offset-top, 0px) - var(--drupal-displace-offset-bottom, 0px) - var(--sp) + var(--sp4));
-    }
+  body:not(.is-always-mobile-nav) .is-fixed .primary-nav__menu--level-2 {
+    max-height: calc(100vh - var(--site-header-height-wide) - var(--drupal-displace-offset-top, 0px) - var(--drupal-displace-offset-bottom, 0px) - var(--sp) + var(--sp4));
   }
+}
 
 /*
  * Only apply transition styles to menu when JS is loaded. This
@@ -315,8 +227,8 @@
  */
 
 @media (min-width: 75rem) {
-    html.js body:not(.is-always-mobile-nav) .primary-nav__menu--level-2,
-    html.js body:not(.is-always-mobile-nav) .primary-nav__menu-🥕 {
-      transition: visibility 0.2s, transform 0.2s, opacity 0.2s;
-    }
+  html.js body:not(.is-always-mobile-nav) .primary-nav__menu--level-2,
+  html.js body:not(.is-always-mobile-nav) .primary-nav__menu-🥕 {
+    transition: visibility 0.2s, transform 0.2s, opacity 0.2s;
   }
+}
diff --git a/core/themes/olivero/css/components/navigation/nav-primary.css b/core/themes/olivero/css/components/navigation/nav-primary.css
index 1b5b88b2df..92c7ee6e10 100644
--- a/core/themes/olivero/css/components/navigation/nav-primary.css
+++ b/core/themes/olivero/css/components/navigation/nav-primary.css
@@ -29,24 +29,24 @@
 }
 
 .primary-nav__menu-item {
-  margin-bottom: var(--sp0-5);
+  margin-block-end: var(--sp0-5);
 }
 
 .primary-nav__menu-item:last-child {
-    margin-bottom: 0;
-  }
+  margin-block-end: 0;
+}
 
 .primary-nav__menu-item.primary-nav__menu-item--has-children {
-    display: flex;
-    flex-wrap: wrap;
-    justify-content: space-between;
-  }
+  display: flex;
+  flex-wrap: wrap;
+  justify-content: space-between;
+}
 
 .primary-nav__menu-item.primary-nav__menu-item--has-children .primary-nav__menu-link--link,
-    .primary-nav__menu-item.primary-nav__menu-item--has-children .primary-nav__menu-link--nolink {
-      /* Ensure that long text doesn't make the mobile expand button wrap. */
-      flex-basis: calc(100% - var(--sp3));
-    }
+.primary-nav__menu-item.primary-nav__menu-item--has-children .primary-nav__menu-link--nolink {
+  /* Ensure that long text doesn't make the mobile expand button wrap. */
+  flex-basis: calc(100% - var(--sp3));
+}
 
 .primary-nav__menu-link {
   flex-grow: 1;
@@ -58,203 +58,98 @@
 }
 
 .primary-nav__menu-link:hover {
-    color: inherit;
-  }
-
-.primary-nav__menu-link:focus {
-    outline: auto 2px var(--color--primary-50);
-    outline-offset: 2px;
-  }
-
-[dir="ltr"] .primary-nav__menu-link--nolink {
-  padding-left: 0;
+  color: inherit;
 }
 
-[dir="rtl"] .primary-nav__menu-link--nolink {
-  padding-right: 0;
-}
-
-[dir="ltr"] .primary-nav__menu-link--nolink {
-  padding-right: 0;
-}
-
-[dir="rtl"] .primary-nav__menu-link--nolink {
-  padding-left: 0;
+.primary-nav__menu-link:focus {
+  outline: auto 2px var(--color--primary-50);
+  outline-offset: 2px;
 }
 
 .primary-nav__menu-link--nolink {
-  padding-top: var(--sp0-5);
-  padding-bottom: var(--sp0-5);
+  padding-block: var(--sp0-5);
+  padding-inline-start: 0;
+  padding-inline-end: 0;
   color: var(--color-text-neutral-soft);
   font-weight: normal;
 }
 
-[dir="ltr"] .primary-nav__menu-link--button {
-  padding-left: 0;
-}
-
-[dir="rtl"] .primary-nav__menu-link--button {
-  padding-right: 0;
-}
-
-[dir="ltr"] .primary-nav__menu-link--button {
-  padding-right: 0;
-}
-
-[dir="rtl"] .primary-nav__menu-link--button {
-  padding-left: 0;
-}
-
-[dir="ltr"] .primary-nav__menu-link--button {
-  text-align: left;
-}
-
-[dir="rtl"] .primary-nav__menu-link--button {
-  text-align: right;
-}
-
 .primary-nav__menu-link--button {
   position: relative;
-  padding-top: 0;
-  padding-bottom: 0;
+  padding-block: 0;
+  padding-inline-start: 0;
+  padding-inline-end: 0;
   cursor: pointer;
+  text-align: start;
   border: 0;
   background: transparent;
 
   /* Plus icon for mobile navigation. */
 }
 
-[dir="ltr"] .primary-nav__menu-link--button.primary-nav__menu-link--has-children {
-    padding-right: var(--sp3);
-}
-
-[dir="rtl"] .primary-nav__menu-link--button.primary-nav__menu-link--has-children {
-    padding-left: var(--sp3);
-}
-
-.primary-nav__menu-link--button.primary-nav__menu-link--has-children { /* Ensure text does not overlap icon. */
-  }
-
-[dir="ltr"] .primary-nav__menu-link--button.primary-nav__menu-link--has-children:before,[dir="ltr"] 
-    .primary-nav__menu-link--button.primary-nav__menu-link--has-children:after {
-      right: 0.5625rem;
-}
-
-[dir="rtl"] .primary-nav__menu-link--button.primary-nav__menu-link--has-children:before,[dir="rtl"] 
-    .primary-nav__menu-link--button.primary-nav__menu-link--has-children:after {
-      left: 0.5625rem;
+.primary-nav__menu-link--button.primary-nav__menu-link--has-children {
+  padding-inline-end: var(--sp3); /* Ensure text does not overlap icon. */
 }
 
 .primary-nav__menu-link--button.primary-nav__menu-link--has-children:before,
-    .primary-nav__menu-link--button.primary-nav__menu-link--has-children:after {
-      position: absolute;
-      top: calc(var(--sp0-5) + 1.0625rem); /* Visually align button with menu link text. */
-      width: 1.125rem;
-      height: 0;
-      content: "";
-      /* Intentionally not using CSS logical properties. */
-      border-top: solid 3px var(--color--primary-50);
-    }
-
 .primary-nav__menu-link--button.primary-nav__menu-link--has-children:after {
-      transition: opacity 0.2s;
-      transform: rotate(90deg);
-    }
-
-.primary-nav__menu-link--button.primary-nav__menu-link--has-children[aria-expanded="true"]:after {
-      opacity: 0;
-    }
-
-[dir="ltr"] .primary-nav__menu-link-inner {
-  padding-left: 0;
-}
-
-[dir="rtl"] .primary-nav__menu-link-inner {
-  padding-right: 0;
+  position: absolute;
+  inset-inline-end: 0.5625rem;
+  inset-block-start: calc(var(--sp0-5) + 1.0625rem); /* Visually align button with menu link text. */
+  width: 1.125rem;
+  height: 0;
+  content: "";
+  /* Intentionally not using CSS logical properties. */
+  border-top: solid 3px var(--color--primary-50);
 }
 
-[dir="ltr"] .primary-nav__menu-link-inner {
-  padding-right: 0;
+.primary-nav__menu-link--button.primary-nav__menu-link--has-children:after {
+  transition: opacity 0.2s;
+  transform: rotate(90deg);
 }
 
-[dir="rtl"] .primary-nav__menu-link-inner {
-  padding-left: 0;
+.primary-nav__menu-link--button.primary-nav__menu-link--has-children[aria-expanded="true"]:after {
+  opacity: 0;
 }
 
 .primary-nav__menu-link-inner {
   position: relative;
   display: inline-flex;
   align-items: center;
-  padding-top: var(--sp0-5);
-  padding-bottom: var(--sp0-5);
-}
-
-[dir="ltr"] .primary-nav__menu-link-inner:after {
-    left: 0;
-}
-
-[dir="rtl"] .primary-nav__menu-link-inner:after {
-    right: 0;
+  padding-block: var(--sp0-5);
+  padding-inline-start: 0;
+  padding-inline-end: 0;
 }
 
 .primary-nav__menu-link-inner:after {
-    position: absolute;
-    bottom: 0;
-    width: 100%;
-    height: 0;
-    content: "";
-    transition: transform 0.2s;
-    transform: scaleX(0);
-    transform-origin: left;
-    /* Intentionally not using CSS logical properties. */
-    border-top: solid 5px var(--color--primary-50);
-  }
+  position: absolute;
+  inset-block-end: 0;
+  inset-inline-start: 0;
+  width: 100%;
+  height: 0;
+  content: "";
+  transition: transform 0.2s;
+  transform: scaleX(0);
+  transform-origin: left;
+  /* Intentionally not using CSS logical properties. */
+  border-top: solid 5px var(--color--primary-50);
+}
 
 .primary-nav__menu-link:hover .primary-nav__menu-link-inner:after {
-      transform: scaleX(1);
-  }
+  transform: scaleX(1);
+}
 
 /*
   Top level specific styles.
 */
 
-[dir="ltr"] .primary-nav__menu--level-1 {
-  margin-left: 0;
-}
-
-[dir="rtl"] .primary-nav__menu--level-1 {
-  margin-right: 0;
-}
-
-[dir="ltr"] .primary-nav__menu--level-1 {
-  margin-right: 0;
-}
-
-[dir="rtl"] .primary-nav__menu--level-1 {
-  margin-left: 0;
-}
-
-[dir="ltr"] .primary-nav__menu--level-1 {
-  padding-left: 0;
-}
-
-[dir="rtl"] .primary-nav__menu--level-1 {
-  padding-right: 0;
-}
-
-[dir="ltr"] .primary-nav__menu--level-1 {
-  padding-right: 0;
-}
-
-[dir="rtl"] .primary-nav__menu--level-1 {
-  padding-left: 0;
-}
-
 .primary-nav__menu--level-1 {
-  margin-top: 0;
-  margin-bottom: 0;
-  padding-top: 0;
-  padding-bottom: 0;
+  margin-block: 0;
+  margin-inline-start: 0;
+  margin-inline-end: 0;
+  padding-block: 0;
+  padding-inline-start: 0;
+  padding-inline-end: 0;
 }
 
 .primary-nav__menu-link--level-1 {
@@ -267,66 +162,33 @@
   Secondary menu specific styles.
 */
 
-[dir="ltr"] .primary-nav__menu--level-2 {
-  margin-left: calc(-1 * var(--sp));
-}
-
-[dir="rtl"] .primary-nav__menu--level-2 {
-  margin-right: calc(-1 * var(--sp));
-}
-
-[dir="ltr"] .primary-nav__menu--level-2 {
-  padding-left: var(--sp2-5);
-}
-
-[dir="rtl"] .primary-nav__menu--level-2 {
-  padding-right: var(--sp2-5);
-}
-
-[dir="ltr"] .primary-nav__menu--level-2 {
-  border-left: solid var(--sp) var(--color--primary-50);
-}
-
-[dir="rtl"] .primary-nav__menu--level-2 {
-  border-right: solid var(--sp) var(--color--primary-50);
-}
-
 .primary-nav__menu--level-2 {
   visibility: hidden;
   overflow: hidden;
   flex-basis: 100%;
   max-height: 0;
-  margin-top: 0;
-  margin-bottom: 0;
+  margin-block: 0;
+  margin-inline-start: calc(-1 * var(--sp));
+  padding-inline-start: var(--sp2-5);
   transition: opacity 0.2s, visibility 0.2s, max-height 0.2s;
   opacity: 0;
+  border-inline-start: solid var(--sp) var(--color--primary-50);
 }
 
 .primary-nav__menu--level-2.is-active-menu-parent {
-    visibility: visible;
-    max-height: none;
-    margin-top: var(--sp1-5);
-    opacity: 1;
-  }
+  visibility: visible;
+  max-height: none;
+  margin-block-start: var(--sp1-5);
+  opacity: 1;
+}
 
 @media (min-width: 43.75rem) {
 
-[dir="ltr"] .primary-nav__menu--level-2 {
-    margin-left: calc(-1 * var(--sp3));
-  }
-
-[dir="rtl"] .primary-nav__menu--level-2 {
-    margin-right: calc(-1 * var(--sp3));
-  }
-
-[dir="ltr"] .primary-nav__menu--level-2 {
-    padding-left: var(--sp3);
-  }
-
-[dir="rtl"] .primary-nav__menu--level-2 {
-    padding-right: var(--sp3);
-  }
+  .primary-nav__menu--level-2 {
+    margin-inline-start: calc(-1 * var(--sp3));
+    padding-inline-start: var(--sp3);
   }
+}
 
 /*
  * Olivero doesn't officially support nested tertiary submenus, but this
@@ -346,11 +208,11 @@
 }
 
 html:not(.js) .primary-nav__menu--level-2 {
-    visibility: visible;
-    max-height: none;
-    opacity: 1;
-  }
+  visibility: visible;
+  max-height: none;
+  opacity: 1;
+}
 
 [dir="rtl"] .primary-nav__menu-link-inner:after {
-      transform-origin: right;
-    }
+  transform-origin: right;
+}
diff --git a/core/themes/olivero/css/components/navigation/nav-secondary.css b/core/themes/olivero/css/components/navigation/nav-secondary.css
index 89f88a1924..a1962e25f1 100644
--- a/core/themes/olivero/css/components/navigation/nav-secondary.css
+++ b/core/themes/olivero/css/components/navigation/nav-secondary.css
@@ -29,45 +29,15 @@
   font-weight: 600;
 }
 
-[dir="ltr"] .secondary-nav__menu {
-  margin-left: 0;
-}
-
-[dir="rtl"] .secondary-nav__menu {
-  margin-right: 0;
-}
-
-[dir="ltr"] .secondary-nav__menu {
-  margin-right: 0;
-}
-
-[dir="rtl"] .secondary-nav__menu {
-  margin-left: 0;
-}
-
-[dir="ltr"] .secondary-nav__menu {
-  padding-left: 0;
-}
-
-[dir="rtl"] .secondary-nav__menu {
-  padding-right: 0;
-}
-
-[dir="ltr"] .secondary-nav__menu {
-  padding-right: 0;
-}
-
-[dir="rtl"] .secondary-nav__menu {
-  padding-left: 0;
-}
-
 .secondary-nav__menu {
   display: flex;
   align-items: center;
-  margin-top: 0;
-  margin-bottom: 0;
-  padding-top: 0;
-  padding-bottom: 0;
+  margin-block: 0;
+  margin-inline-start: 0;
+  margin-inline-end: 0;
+  padding-block: 0;
+  padding-inline-start: 0;
+  padding-inline-end: 0;
   list-style: none;
 }
 
@@ -82,12 +52,8 @@
   max-width: 12.5rem;
 }
 
-[dir="ltr"] .secondary-nav__menu-item:not(:last-child) {
-    margin-right: var(--sp1-5);
-}
-
-[dir="rtl"] .secondary-nav__menu-item:not(:last-child) {
-    margin-left: var(--sp1-5);
+.secondary-nav__menu-item:not(:last-child) {
+  margin-inline-end: var(--sp1-5);
 }
 
 .secondary-nav__menu-link {
@@ -100,81 +66,60 @@
 }
 
 .secondary-nav__menu-link:after {
-    position: absolute;
-    bottom: 0;
-    left: 0;
-    width: 100%;
-    height: 0;
-    content: "";
-    transition: opacity 0.2s, transform 0.2s;
-    transform: translateY(0.3125rem);
-    opacity: 0;
-    /* Intentionally not using CSS logical properties. */
-    border-top: solid 2px currentColor;
-  }
+  position: absolute;
+  bottom: 0;
+  left: 0;
+  width: 100%;
+  height: 0;
+  content: "";
+  transition: opacity 0.2s, transform 0.2s;
+  transform: translateY(0.3125rem);
+  opacity: 0;
+  /* Intentionally not using CSS logical properties. */
+  border-top: solid 2px currentColor;
+}
 
 .secondary-nav__menu-link:hover:after {
-      transform: translateY(0);
-      opacity: 0.8;
-    }
+  transform: translateY(0);
+  opacity: 0.8;
+}
 
 @media (min-width: 75rem) {
-    [dir="ltr"] body:not(.is-always-mobile-nav) .secondary-nav {
-      margin-left: var(--sp);
-  }
-    [dir="rtl"] body:not(.is-always-mobile-nav) .secondary-nav {
-      margin-right: var(--sp);
-  }
-    [dir="ltr"] body:not(.is-always-mobile-nav) .secondary-nav {
-      padding-left: var(--sp2);
+  body:not(.is-always-mobile-nav) .secondary-nav {
+    position: relative;
+    display: flex;
+    margin-inline-start: var(--sp);
+    padding-inline-start: var(--sp2);
   }
-    [dir="rtl"] body:not(.is-always-mobile-nav) .secondary-nav {
-      padding-right: var(--sp2);
-  }
-    body:not(.is-always-mobile-nav) .secondary-nav {
-      position: relative;
-      display: flex;
-    }
 
-      [dir="ltr"] body:not(.is-always-mobile-nav) .secondary-nav:before {
-        left: 0;
+  body:not(.is-always-mobile-nav) .secondary-nav:before {
+    position: absolute;
+    inset-block-start: 50%;
+    inset-inline-start: 0;
+    width: 2px;
+    height: var(--sp2);
+    content: "";
+    transform: translateY(-50%);
+    background-color: var(--color--gray-90);
   }
 
-      [dir="rtl"] body:not(.is-always-mobile-nav) .secondary-nav:before {
-        right: 0;
+  body:not(.is-always-mobile-nav) .secondary-nav__menu-item:not(:last-child) {
+    margin-inline-end: var(--sp2);
   }
-
-      body:not(.is-always-mobile-nav) .secondary-nav:before {
-        position: absolute;
-        top: 50%;
-        width: 2px;
-        height: var(--sp2);
-        content: "";
-        transform: translateY(-50%);
-        background-color: var(--color--gray-90);
-      }
-
-    [dir="ltr"] body:not(.is-always-mobile-nav) .secondary-nav__menu-item:not(:last-child) {
-      margin-right: var(--sp2);
+  body:not(.is-always-mobile-nav) .secondary-nav__menu-link:focus {
+    position: relative;
+    outline: 0;
   }
 
-    [dir="rtl"] body:not(.is-always-mobile-nav) .secondary-nav__menu-item:not(:last-child) {
-      margin-left: var(--sp2);
-  }
-      body:not(.is-always-mobile-nav) .secondary-nav__menu-link:focus {
-        position: relative;
-        outline: 0;
-      }
-
-        body:not(.is-always-mobile-nav) .secondary-nav__menu-link:focus:before {
-          position: absolute;
-          top: 50%;
-          left: 50%;
-          width: calc(100% + var(--sp));
-          height: var(--sp3);
-          content: "";
-          transform: translate(-50%, -50%);
-          border: solid 2px var(--color--primary-50);
-          border-radius: 0.25rem;
-        }
+  body:not(.is-always-mobile-nav) .secondary-nav__menu-link:focus:before {
+    position: absolute;
+    top: 50%;
+    left: 50%;
+    width: calc(100% + var(--sp));
+    height: var(--sp3);
+    content: "";
+    transform: translate(-50%, -50%);
+    border: solid 2px var(--color--primary-50);
+    border-radius: 0.25rem;
   }
+}
diff --git a/core/themes/olivero/css/components/navigation/wide-nav-expand.css b/core/themes/olivero/css/components/navigation/wide-nav-expand.css
index 00003e20bf..c131af07ef 100644
--- a/core/themes/olivero/css/components/navigation/wide-nav-expand.css
+++ b/core/themes/olivero/css/components/navigation/wide-nav-expand.css
@@ -29,7 +29,7 @@
 
 @media (min-width: 75rem) {
 
-.wide-nav-expand {
+  .wide-nav-expand {
     display: flex;
     visibility: hidden;
     flex-shrink: 0;
@@ -42,27 +42,27 @@
     color: var(--color--white);
     border: 0;
     background-color: var(--color--primary-50);
-}
+  }
 
-    .wide-nav-expand:focus {
-      outline: solid 2px currentColor;
-      outline-offset: -4px;
-    }
+  .wide-nav-expand:focus {
+    outline: solid 2px currentColor;
+    outline-offset: -4px;
   }
+}
 
 @media (min-width: 75rem) {
 
-body:not(.is-always-mobile-nav) .is-fixed .wide-nav-expand {
+  body:not(.is-always-mobile-nav) .is-fixed .wide-nav-expand {
     visibility: visible;
-}
   }
+}
 
 @media (min-width: 75rem) {
 
-body.is-always-mobile-nav .wide-nav-expand {
+  body.is-always-mobile-nav .wide-nav-expand {
     visibility: hidden;
-}
   }
+}
 
 .wide-nav-expand__icon {
   position: relative;
@@ -75,78 +75,56 @@ body.is-always-mobile-nav .wide-nav-expand {
 }
 
 .wide-nav-expand__icon > span {
-    display: block;
-    height: 0;
-    /* Intentionally not using CSS logical properties. */
-    border-top: solid 3px currentColor;
-  }
-
-[dir="ltr"] .wide-nav-expand__icon > span:nth-child(1) {
-      left: 0;
-}
-
-[dir="rtl"] .wide-nav-expand__icon > span:nth-child(1) {
-      right: 0;
+  display: block;
+  height: 0;
+  /* Intentionally not using CSS logical properties. */
+  border-top: solid 3px currentColor;
 }
 
 .wide-nav-expand__icon > span:nth-child(1) {
-      position: absolute;
-      top: 0;
-      width: 100%;
-      height: 0;
-      transition: transform 0.2s;
-      background-color: currentColor;
-    }
-
-[dir="ltr"] .wide-nav-expand__icon > span:nth-child(2) {
-      left: 0;
-}
-
-[dir="rtl"] .wide-nav-expand__icon > span:nth-child(2) {
-      right: 0;
+  position: absolute;
+  inset-block-start: 0;
+  inset-inline-start: 0;
+  width: 100%;
+  height: 0;
+  transition: transform 0.2s;
+  background-color: currentColor;
 }
 
 .wide-nav-expand__icon > span:nth-child(2) {
-      position: absolute;
-      top: 0.5625rem;
-      width: 100%;
-      height: 0;
-      transition: opacity 0.2s;
-      background-color: currentColor;
-    }
-
-[dir="ltr"] .wide-nav-expand__icon > span:nth-child(3) {
-      left: 0;
-}
-
-[dir="rtl"] .wide-nav-expand__icon > span:nth-child(3) {
-      right: 0;
+  position: absolute;
+  inset-block-start: 0.5625rem;
+  inset-inline-start: 0;
+  width: 100%;
+  height: 0;
+  transition: opacity 0.2s;
+  background-color: currentColor;
 }
 
 .wide-nav-expand__icon > span:nth-child(3) {
-      position: absolute;
-      top: auto;
-      bottom: 0;
-      width: 100%;
-      height: 0;
-      transition: transform 0.2s;
-      background-color: currentColor;
-    }
+  position: absolute;
+  inset-block: auto 0;
+  inset-inline-start: 0;
+  width: 100%;
+  height: 0;
+  transition: transform 0.2s;
+  background-color: currentColor;
+}
 
 .is-fixed .wide-nav-expand__icon {
   opacity: 1;
 }
 
 [aria-expanded="true"] .wide-nav-expand__icon > span:nth-child(1) {
-    top: 0.5625rem;
-    transform: rotate(-45deg);
-  }
+  inset-block-start: 0.5625rem;
+  transform: rotate(-45deg);
+}
 
 [aria-expanded="true"] .wide-nav-expand__icon > span:nth-child(2) {
-    opacity: 0;
-  }
+  opacity: 0;
+}
 
 [aria-expanded="true"] .wide-nav-expand__icon > span:nth-child(3) {
-    top: 0.5625rem;
-    transform: rotate(45deg);
-  }
+  inset-block-start: 0.5625rem;
+  transform: rotate(45deg);
+}
diff --git a/core/themes/olivero/css/components/node-preview-container.css b/core/themes/olivero/css/components/node-preview-container.css
index ccc947bc03..38961fef70 100644
--- a/core/themes/olivero/css/components/node-preview-container.css
+++ b/core/themes/olivero/css/components/node-preview-container.css
@@ -23,25 +23,10 @@
 
 /* Width of the entire grid maxes out. */
 
-[dir="ltr"] .node-preview-container {
-  padding-left: var(--sp0-5);
-}
-
-[dir="rtl"] .node-preview-container {
-  padding-right: var(--sp0-5);
-}
-
-[dir="ltr"] .node-preview-container {
-  padding-right: var(--sp0-5);
-}
-
-[dir="rtl"] .node-preview-container {
-  padding-left: var(--sp0-5);
-}
-
 .node-preview-container {
-  padding-top: 0;
-  padding-bottom: 0;
+  padding-block: 0;
+  padding-inline-start: var(--sp0-5);
+  padding-inline-end: var(--sp0-5);
   background: var(--color--white);
   box-shadow: -36px 1px 36px rgba(0, 0, 0, 0.08); /* LTR */
 }
@@ -60,23 +45,8 @@ body.toolbar-vertical.toolbar-tray-open .node-preview-container {
   align-items: center;
 }
 
-[dir="ltr"] .node-preview-backlink {
-  margin-left: 0;
-}
-
-[dir="rtl"] .node-preview-backlink {
-  margin-right: 0;
-}
-
-[dir="ltr"] .node-preview-backlink {
-  margin-right: auto;
-}
-
-[dir="rtl"] .node-preview-backlink {
-  margin-left: auto;
-}
-
 .node-preview-backlink {
-  margin-top: var(--sp0-5);
-  margin-bottom: var(--sp0-5);
+  margin-block: var(--sp0-5);
+  margin-inline-start: 0;
+  margin-inline-end: auto;
 }
diff --git a/core/themes/olivero/css/components/node-teaser.css b/core/themes/olivero/css/components/node-teaser.css
index 52b69e3e3a..f553414f1c 100644
--- a/core/themes/olivero/css/components/node-teaser.css
+++ b/core/themes/olivero/css/components/node-teaser.css
@@ -25,175 +25,132 @@
 
 .node--view-mode-teaser {
   position: relative; /* Anchor after pseudo-element. */
-  margin-bottom: var(--sp1-5);
+  margin-block-end: var(--sp1-5);
 }
 
 .node--view-mode-teaser:after {
-    position: absolute;
-    bottom: 0;
-    width: var(--sp3);
-    height: 0;
-    content: "";
-    /* Intentionally not using CSS logical properties. */
-    border-top: solid 2px var(--color--gray-95);
-  }
+  position: absolute;
+  inset-block-end: 0;
+  width: var(--sp3);
+  height: 0;
+  content: "";
+  /* Intentionally not using CSS logical properties. */
+  border-top: solid 2px var(--color--gray-95);
+}
 
 .node--view-mode-teaser .node__meta {
-    margin-bottom: var(--sp);
-  }
+  margin-block-end: var(--sp);
+}
 
 .node--view-mode-teaser .node__meta a {
-      color: var(--color-text-primary-medium);
-      font-weight: bold;
-    }
+  color: var(--color-text-primary-medium);
+  font-weight: bold;
+}
 
 .node--view-mode-teaser .node__top-wrapper {
-    display: flex;
-    flex-wrap: wrap;
-    align-items: center;
-    margin: 0;
-  }
+  display: flex;
+  flex-wrap: wrap;
+  align-items: center;
+  margin: 0;
+}
 
 @media (min-width: 62.5rem) {
 
-.node--view-mode-teaser .node__top-wrapper {
-      position: relative; /* Anchor the image */
+  .node--view-mode-teaser .node__top-wrapper {
+    position: relative; /* Anchor the image */
   }
-    }
-
-[dir="ltr"] .node--view-mode-teaser .primary-image {
-    margin-right: var(--sp1);
-}
-
-[dir="rtl"] .node--view-mode-teaser .primary-image {
-    margin-left: var(--sp1);
 }
 
 .node--view-mode-teaser .primary-image {
-    flex-shrink: 0;
-    margin: 0;
-    margin-bottom: var(--sp1);
+  flex-shrink: 0;
+  margin: 0;
+  margin-block-end: var(--sp1);
+  margin-inline-end: var(--sp1);
 
-    /* Ensure title does not wrap under image until necessary. */
-  }
+  /* Ensure title does not wrap under image until necessary. */
+}
 
 :is(.node--view-mode-teaser .primary-image) + .node__title {
-      flex-basis: calc(100% - calc(4.5 * var(--sp)));
-    }
+  flex-basis: calc(100% - calc(4.5 * var(--sp)));
+}
 
 @media (min-width: 62.5rem) {
 
-:is(.node--view-mode-teaser .primary-image) + .node__title {
-        flex-basis: auto;
-    }
-      }
+  :is(.node--view-mode-teaser .primary-image) + .node__title {
+    flex-basis: auto;
+  }
+}
 
 .node--view-mode-teaser .primary-image a {
-      display: block;
-    }
-
-.node--view-mode-teaser .primary-image img {
-      width: calc(3.5 * var(--sp));
-      height: calc(3.5 * var(--sp));
-      object-fit: cover;
-      border-radius: 50%;
-    }
-
-@media (min-width: 62.5rem) {
+  display: block;
+}
 
 .node--view-mode-teaser .primary-image img {
-        width: var(--grid-col-width);
-        height: var(--grid-col-width);
-    }
-      }
+  width: calc(3.5 * var(--sp));
+  height: calc(3.5 * var(--sp));
+  object-fit: cover;
+  border-radius: 50%;
+}
 
 @media (min-width: 62.5rem) {
 
-[dir="ltr"] .node--view-mode-teaser .primary-image {
-      left: calc(-1 * ((var(--grid-col-width) + var(--grid-gap))));
-  }
-
-[dir="rtl"] .node--view-mode-teaser .primary-image {
-      right: calc(-1 * ((var(--grid-col-width) + var(--grid-gap))));
-  }
-
-.node--view-mode-teaser .primary-image {
-      position: absolute;
-      top: 0;
-      margin: 0;
-  }
-    }
-
-.node--view-mode-teaser .node__title {
-    margin: 0;
-    margin-bottom: var(--sp1);
-    color: var(--color-text-neutral-loud);
-    font-size: 1.5rem;
-    line-height: var(--line-height-base);
+  .node--view-mode-teaser .primary-image img {
+    width: var(--grid-col-width);
+    height: var(--grid-col-width);
   }
+}
 
 @media (min-width: 62.5rem) {
 
-.node--view-mode-teaser .node__title {
-      font-size: var(--sp2);
-      line-height: var(--sp3);
+  .node--view-mode-teaser .primary-image {
+    position: absolute;
+    inset-block-start: 0;
+    inset-inline-start: calc(-1 * ((var(--grid-col-width) + var(--grid-gap))));
+    margin: 0;
   }
-    }
-
-[dir="ltr"] .node--view-mode-teaser .field--tag-ref {
-    margin-left: 0;
-}
-
-[dir="rtl"] .node--view-mode-teaser .field--tag-ref {
-    margin-right: 0;
 }
 
-[dir="ltr"] .node--view-mode-teaser .field--tag-ref {
-    margin-right: 0;
-}
-
-[dir="rtl"] .node--view-mode-teaser .field--tag-ref {
-    margin-left: 0;
-}
-
-[dir="ltr"] .node--view-mode-teaser .field--tag-ref {
-    padding-left: 0;
-}
-
-[dir="rtl"] .node--view-mode-teaser .field--tag-ref {
-    padding-right: 0;
+.node--view-mode-teaser .node__title {
+  margin: 0;
+  margin-block-end: var(--sp1);
+  color: var(--color-text-neutral-loud);
+  font-size: 1.5rem;
+  line-height: var(--line-height-base);
 }
 
-[dir="ltr"] .node--view-mode-teaser .field--tag-ref {
-    padding-right: 0;
-}
+@media (min-width: 62.5rem) {
 
-[dir="rtl"] .node--view-mode-teaser .field--tag-ref {
-    padding-left: 0;
+  .node--view-mode-teaser .node__title {
+    font-size: var(--sp2);
+    line-height: var(--sp3);
+  }
 }
 
 .node--view-mode-teaser .field--tag-ref {
-    margin-top: var(--sp1);
-    margin-bottom: 0;
-    padding-top: 0;
-    padding-bottom: 0;
-    background-color: transparent;
-  }
+  margin-block-start: var(--sp1);
+  margin-block-end: 0;
+  margin-inline-start: 0;
+  margin-inline-end: 0;
+  padding-block: 0;
+  padding-inline-start: 0;
+  padding-inline-end: 0;
+  background-color: transparent;
+}
 
 @media (min-width: 62.5rem) {
 
-.node--view-mode-teaser .field--tag-ref {
-      margin-top: var(--sp2);
+  .node--view-mode-teaser .field--tag-ref {
+    margin-block-start: var(--sp2);
   }
-    }
+}
 
 @media (min-width: 62.5rem) {
 
-.node--view-mode-teaser {
-    margin-bottom: var(--sp3);
-}
+  .node--view-mode-teaser {
+    margin-block-end: var(--sp3);
   }
+}
 
 .views-row:last-child .node--view-mode-teaser {
-  margin-bottom: 0;
+  margin-block-end: 0;
 }
diff --git a/core/themes/olivero/css/components/node.css b/core/themes/olivero/css/components/node.css
index 93acf6b393..13fb0a098a 100644
--- a/core/themes/olivero/css/components/node.css
+++ b/core/themes/olivero/css/components/node.css
@@ -26,69 +26,62 @@
 .node__meta {
   display: flex;
   align-items: center;
-  margin-bottom: var(--sp1);
+  margin-block-end: var(--sp1);
   color: var(--color-text-neutral-soft);
   font-size: 0.875rem;
   line-height: var(--sp);
 }
 
 .node__meta a {
-    font-weight: bold;
-  }
+  font-weight: bold;
+}
 
 @media (min-width: 31.25rem) {
 
-.node__meta {
-    margin-bottom: var(--sp2);
-}
+  .node__meta {
+    margin-block-end: var(--sp2);
   }
-
-[dir="ltr"] .node__author-image img {
-  margin-right: var(--sp0-5);
-}
-
-[dir="rtl"] .node__author-image img {
-  margin-left: var(--sp0-5);
 }
 
 .node__author-image img {
   width: var(--sp2-5);
   height: var(--sp2-5);
+  margin-inline-end: var(--sp0-5);
   object-fit: cover;
   border-radius: 50%;
 }
 
 .node__title a {
-    padding-bottom: 0.1875rem;
-    transition: background-size 0.2s, color 0.2s;
-    text-decoration: none;
-    color: var(--color-text-neutral-loud);
-    background-color: transparent;
-    background-image: linear-gradient(var(--color--primary-50), var(--color--primary-50)); /* Two values are needed for IE11 support. */
-    background-repeat: no-repeat;
-    background-position: bottom left; /* LTR */
-    background-size: 0 0.1875rem;
-  }
+  padding-block-end: 0.1875rem;
+  transition: background-size 0.2s, color 0.2s;
+  text-decoration: none;
+  color: var(--color-text-neutral-loud);
+  background-color: transparent;
+  background-image: linear-gradient(var(--color--primary-50), var(--color--primary-50)); /* Two values are needed for IE11 support. */
+  background-repeat: no-repeat;
+  background-position: bottom left; /* LTR */
+  background-size: 0 0.1875rem;
+}
 
 .node__title a:hover,
-    .node__title a:focus {
-      color: var(--color-text-primary-medium);
-    }
+.node__title a:focus {
+  color: var(--color-text-primary-medium);
+}
 
 [dir="rtl"] .node__title {
   background-position: bottom right;
 }
 
 .node__content {
-  padding-bottom: var(--sp1-5);
+  padding-block-end: var(--sp1-5);
 }
 
 @media (min-width: 62.5rem) {
 
-.node__content {
-    padding-bottom: var(--sp3);
-}
+  .node__content {
+    padding-block-end: var(--sp3);
   }
+}
 
 .node--unpublished {
   /* There is no variable for the color - #fff4f4. */
diff --git a/core/themes/olivero/css/components/pager.css b/core/themes/olivero/css/components/pager.css
index ba92996478..bdad7b0532 100644
--- a/core/themes/olivero/css/components/pager.css
+++ b/core/themes/olivero/css/components/pager.css
@@ -23,38 +23,15 @@
 
 /* Width of the entire grid maxes out. */
 
-[dir="ltr"] .pager__items {
-  margin-left: 0;
-}
-
-[dir="rtl"] .pager__items {
-  margin-right: 0;
-}
-
-[dir="ltr"] .pager__items {
-  padding-left: 0;
-}
-
-[dir="rtl"] .pager__items {
-  padding-right: 0;
-}
-
-[dir="ltr"] .pager__items {
-  padding-right: 0;
-}
-
-[dir="rtl"] .pager__items {
-  padding-left: 0;
-}
-
 .pager__items {
   display: flex;
   flex-wrap: wrap;
   align-items: flex-end;
-  margin-top: 0;
-  margin-bottom: 0;
-  padding-top: 0;
-  padding-bottom: 0;
+  margin-block: 0;
+  margin-inline-start: 0;
+  padding-block: 0;
+  padding-inline-start: 0;
+  padding-inline-end: 0;
   list-style: none;
   font-weight: bold;
 }
@@ -72,11 +49,11 @@
 
 @media (min-width: 31.25rem) {
 
-.pager__item {
+  .pager__item {
     width: var(--sp3);
     height: var(--sp3);
-}
   }
+}
 
 [dir="rtl"] .pager__item--control {
   transform: scaleX(-1);
@@ -88,10 +65,10 @@
 }
 
 @media (forced-colors: active) {
-    .pager__item--control path {
-      fill: linktext;
-    }
+  .pager__item--control path {
+    fill: linktext;
   }
+}
 
 .pager__link {
   display: flex;
diff --git a/core/themes/olivero/css/components/powered-by-block.css b/core/themes/olivero/css/components/powered-by-block.css
index d480cc3cba..a4589810df 100644
--- a/core/themes/olivero/css/components/powered-by-block.css
+++ b/core/themes/olivero/css/components/powered-by-block.css
@@ -30,41 +30,34 @@
 }
 
 .block-system-powered-by-block a {
-    text-decoration: underline;
-  }
-
-.block-system-powered-by-block a:hover,
-    .block-system-powered-by-block a:focus {
-      text-decoration: none;
-    }
-
-[dir="ltr"] .block-system-powered-by-block .drupal-logo {
-    margin-left: calc(var(--sp) / 4);
+  text-decoration: underline;
 }
 
-[dir="rtl"] .block-system-powered-by-block .drupal-logo {
-    margin-right: calc(var(--sp) / 4);
+.block-system-powered-by-block a:hover,
+.block-system-powered-by-block a:focus {
+  text-decoration: none;
 }
 
 .block-system-powered-by-block .drupal-logo {
-    display: inline-block;
-    margin-top: calc(-1 * var(--sp) / 4);
-  }
+  display: inline-block;
+  margin-block-start: calc(-1 * var(--sp) / 4);
+  margin-inline-start: calc(var(--sp) / 4);
+}
 
 .block-system-powered-by-block svg {
-    width: 0.875rem; /* 14 */
-    height: 1.1875rem; /* 19 */
-    vertical-align: top;
-  }
+  width: 0.875rem; /* 14 */
+  height: 1.1875rem; /* 19 */
+  vertical-align: top;
+}
 
 .block-system-powered-by-block svg path {
-      fill: currentColor;
-    }
+  fill: currentColor;
+}
 
 .site-footer .block-system-powered-by-block a {
-    color: var(--color--white);
-  }
+  color: var(--color--white);
+}
 
 .site-footer .block-system-powered-by-block svg path {
-    fill: var(--color--white);
-  }
+  fill: var(--color--white);
+}
diff --git a/core/themes/olivero/css/components/progress.css b/core/themes/olivero/css/components/progress.css
index 3719bf22ba..3c1b43f523 100644
--- a/core/themes/olivero/css/components/progress.css
+++ b/core/themes/olivero/css/components/progress.css
@@ -35,10 +35,6 @@
   background-color: var(--color--primary-40);
 }
 
-[dir="ltr"] .progress__percentage {
-  margin-left: 1rem;
-}
-
-[dir="rtl"] .progress__percentage {
-  margin-right: 1rem;
+.progress__percentage {
+  margin-inline-start: 1rem;
 }
diff --git a/core/themes/olivero/css/components/search-results.css b/core/themes/olivero/css/components/search-results.css
index 553922c9cd..2aa9d8181f 100644
--- a/core/themes/olivero/css/components/search-results.css
+++ b/core/themes/olivero/css/components/search-results.css
@@ -23,135 +23,105 @@
 
 /* Width of the entire grid maxes out. */
 
-[dir="ltr"] .search-results {
-  padding-left: 0;
-}
-
-[dir="rtl"] .search-results {
-  padding-right: 0;
-}
-
-[dir="ltr"] .search-results {
-  padding-right: 0;
-}
-
-[dir="rtl"] .search-results {
-  padding-left: 0;
-}
-
 .search-results {
-  margin-bottom: var(--sp2);
-  padding-top: 0;
-  padding-bottom: 0;
+  margin-block-end: var(--sp2);
+  padding-block: 0;
+  padding-inline-start: 0;
+  padding-inline-end: 0;
   list-style: none;
 }
 
 @media (min-width: 43.75rem) {
 
-.search-results {
-    margin-bottom: var(--sp3);
-}
+  .search-results {
+    margin-block-end: var(--sp3);
   }
-
-[dir="ltr"] .search-result__title {
-  margin-left: 0;
-}
-
-[dir="rtl"] .search-result__title {
-  margin-right: 0;
-}
-
-[dir="ltr"] .search-result__title {
-  margin-right: 0;
-}
-
-[dir="rtl"] .search-result__title {
-  margin-left: 0;
 }
 
 .search-result__title {
-  margin-top: 0;
-  margin-bottom: 0;
+  margin-block: 0;
+  margin-inline-start: 0;
+  margin-inline-end: 0;
   color: var(--color-text-neutral-loud);
   font-size: 1.25rem;
   line-height: var(--line-height-base);
 }
 
 .search-result__title a {
-    padding-bottom: 0.1875rem;
-    transition: background-size 0.2s, color 0.2s;
-    text-decoration: none;
-    background-color: transparent;
-    background-image: linear-gradient(var(--color--primary-50), var(--color--primary-50)); /* Two values are needed for IE11 support. */
-    background-repeat: no-repeat;
-    background-position: bottom left; /* LTR */
-    background-size: 0 0.1875rem;
-  }
+  padding-block-end: 0.1875rem;
+  transition: background-size 0.2s, color 0.2s;
+  text-decoration: none;
+  background-color: transparent;
+  background-image: linear-gradient(var(--color--primary-50), var(--color--primary-50)); /* Two values are needed for IE11 support. */
+  background-repeat: no-repeat;
+  background-position: bottom left; /* LTR */
+  background-size: 0 0.1875rem;
+}
 
 .search-result__title a:hover {
-      color: var(--color-text-primary-medium);
-    }
+  color: var(--color-text-primary-medium);
+}
 
 @media (min-width: 62.5rem) {
 
-.search-result__title {
-    margin-bottom: var(--sp1);
+  .search-result__title {
+    margin-block-end: var(--sp1);
     font-size: 1.875rem;
     line-height: var(--sp3);
-}
   }
+}
 
 [dir="rtl"] .search-result__title a {
   background-position: bottom right;
 }
 
 .search-result__snippet {
-  padding-bottom: calc(var(--sp1-5) - 2px);
+  padding-block-end: calc(var(--sp1-5) - 2px);
 }
 
 @media (min-width: 62.5rem) {
 
-.search-result__snippet {
-    padding-bottom: var(--sp3);
-}
+  .search-result__snippet {
+    padding-block-end: var(--sp3);
   }
+}
 
 .search-result__meta {
   display: flex;
   align-items: center;
-  margin-bottom: var(--sp1);
+  margin-block-end: var(--sp1);
   color: var(--color-text-neutral-soft);
   font-size: 0.875rem;
   line-height: var(--sp);
 }
 
 .search-result__meta a {
-    color: var(--color-text-primary-medium);
-    font-weight: bold;
-  }
+  color: var(--color-text-primary-medium);
+  font-weight: bold;
+}
 
 .search-results__item {
   position: relative; /* Anchor after pseudo-element. */
-  margin-bottom: var(--sp1-5);
+  margin-block-end: var(--sp1-5);
 }
 
 .search-results__item:after {
-    position: absolute;
-    bottom: 0;
-    width: var(--sp3);
-    height: 0;
-    content: "";
-    /* Intentionally not using CSS logical properties. */
-    border-top: solid 2px var(--color--gray-95);
-  }
+  position: absolute;
+  inset-block-end: 0;
+  width: var(--sp3);
+  height: 0;
+  content: "";
+  /* Intentionally not using CSS logical properties. */
+  border-top: solid 2px var(--color--gray-95);
+}
 
 .search-results__item:last-child {
-    margin-bottom: 0;
-  }
+  margin-block-end: 0;
+}
 
 @media (min-width: 62.5rem) {
 
-.search-results__item {
-    margin-bottom: var(--sp3);
-}
+  .search-results__item {
+    margin-block-end: var(--sp3);
   }
+}
diff --git a/core/themes/olivero/css/components/site-header.css b/core/themes/olivero/css/components/site-header.css
index aa79fa0e6e..8f8f0daeca 100644
--- a/core/themes/olivero/css/components/site-header.css
+++ b/core/themes/olivero/css/components/site-header.css
@@ -34,12 +34,12 @@
 
 @media (min-width: 75rem) {
 
-.site-header {
+  .site-header {
     /* Necessary to keep the content from jumping up when header transitions to fixed. */
     min-height: var(--site-header-height-wide);
-    border-bottom: solid 1px transparent; /* Will show in Windows high contrast mode. */
-}
+    border-block-end: solid 1px transparent; /* Will show in Windows high contrast mode. */
   }
+}
 
 .site-header__initial {
   position: relative;
@@ -57,18 +57,18 @@
 }
 
 @media (min-width: 75rem) {
-      .site-header__fixable.is-fixed:not(.is-expanded) {
-        pointer-events: none;
-      }
-    }
+  .site-header__fixable.is-fixed:not(.is-expanded) {
+    pointer-events: none;
+  }
+}
 
 @media (min-width: 75rem) {
-    body:not(.is-always-mobile-nav) .site-header__fixable.is-fixed {
-      position: fixed;
-      z-index: 102; /* Appear above body content that is position: relative */
-      top: calc(var(--drupal-displace-offset-top, 0px) - var(--sp4));
-      max-width: var(--max-bg-color);
-    }
+  body:not(.is-always-mobile-nav) .site-header__fixable.is-fixed {
+    position: fixed;
+    z-index: 102; /* Appear above body content that is position: relative */
+    inset-block-start: calc(var(--drupal-displace-offset-top, 0px) - var(--sp4));
+    max-width: var(--max-bg-color);
+  }
 }
 
 .site-header__inner {
@@ -85,41 +85,41 @@
 
 @media (min-width: 75rem) {
 
-html.js body:not(.is-always-mobile-nav) .site-header__inner {
+  html.js body:not(.is-always-mobile-nav) .site-header__inner {
     transition: opacity 0.3s, transform 0.3s, box-shadow 0.3s;
-}
   }
+}
 
 @media (min-width: 75rem) {
 
-.site-header__fixable.is-expanded .site-header__inner {
+  .site-header__fixable.is-expanded .site-header__inner {
     box-shadow: -36px 1px 36px rgba(0, 0, 0, 0.08); /* LTR */
-}
   }
+}
 
 @media (min-width: 75rem) {
 
-[dir="rtl"] .site-header__fixable.is-expanded .site-header__inner {
+  [dir="rtl"] .site-header__fixable.is-expanded .site-header__inner {
     box-shadow: 36px 1px 36px rgba(0, 0, 0, 0.08);
-}
   }
+}
 
 /* Hide the desktop nav when it's fixed and not active. */
 
 @media (min-width: 75rem) {
 
-body:not(.is-always-mobile-nav) .site-header__fixable.is-fixed:not(.is-expanded) .site-header__inner {
+  body:not(.is-always-mobile-nav) .site-header__fixable.is-fixed:not(.is-expanded) .site-header__inner {
     transform: translateX(-101%); /* LTR */
     opacity: 0;
-}
   }
+}
 
 @media (min-width: 75rem) {
 
-[dir="rtl"] body:not(.is-always-mobile-nav) .site-header__fixable.is-fixed:not(.is-expanded) .site-header__inner {
+  [dir="rtl"] body:not(.is-always-mobile-nav) .site-header__fixable.is-fixed:not(.is-expanded) .site-header__inner {
     transform: translateX(101%);
-}
   }
+}
 
 .site-header__inner__container {
   display: flex;
diff --git a/core/themes/olivero/css/components/skip-link.css b/core/themes/olivero/css/components/skip-link.css
index d897083018..41fb1c9827 100644
--- a/core/themes/olivero/css/components/skip-link.css
+++ b/core/themes/olivero/css/components/skip-link.css
@@ -25,28 +25,13 @@
 
 /* Width of the entire grid maxes out. */
 
-[dir="ltr"] .skip-link {
-  padding-left: var(--sp);
-}
-
-[dir="rtl"] .skip-link {
-  padding-right: var(--sp);
-}
-
-[dir="ltr"] .skip-link {
-  padding-right: var(--sp);
-}
-
-[dir="rtl"] .skip-link {
-  padding-left: var(--sp);
-}
-
 .skip-link {
   display: block;
   width: 100%;
   max-width: var(--max-bg-color);
-  padding-top: var(--sp0-5);
-  padding-bottom: var(--sp0-5);
+  padding-block: var(--sp0-5);
+  padding-inline-start: var(--sp);
+  padding-inline-end: var(--sp);
   text-decoration: none;
   color: var(--color--white);
   outline: 0;
@@ -54,13 +39,13 @@
 }
 
 .skip-link:hover {
-    text-decoration: underline;
-    color: var(--color--white);
-  }
+  text-decoration: underline;
+  color: var(--color--white);
+}
 
 .skip-link:after {
-    content: "\0020	➔";
-  }
+  content: "\0020	➔";
+}
 
 .skip-link.focusable:focus {
   position: absolute !important;
diff --git a/core/themes/olivero/css/components/table.css b/core/themes/olivero/css/components/table.css
index 31e06ae21d..3c6dc514f9 100644
--- a/core/themes/olivero/css/components/table.css
+++ b/core/themes/olivero/css/components/table.css
@@ -27,8 +27,8 @@
 .text-content table,
 .views-table,
 .draggable-table {
-  margin-top: var(--sp2);
-  margin-bottom: var(--sp2);
+  margin-block-start: var(--sp2);
+  margin-block-end: var(--sp2);
   border-spacing: 0;
   color: var(--color-text-neutral-medium);
   border: 0;
@@ -38,94 +38,50 @@
   line-height: var(--sp1-5);
 }
 
-[dir="ltr"] :is(.forum table,.text-content table,.views-table,.draggable-table) caption {
-    text-align: left;
-}
-
-[dir="rtl"] :is(.forum table,.text-content table,.views-table,.draggable-table) caption {
-    text-align: right;
-}
-
 :is(.forum table,.text-content table,.views-table,.draggable-table) caption {
-    margin-bottom: var(--sp1);
-    color: var(--color-text-neutral-medium);
-    font-family: var(--font-serif);
-    font-size: 0.875rem;
-    font-style: italic;
-    line-height: var(--sp);
-  }
-
-:is(.forum table,.text-content table,.views-table,.draggable-table) tr:last-child td {
-        border-bottom: 0;
-      }
-
-[dir="ltr"] :is(.forum table,.text-content table,.views-table,.draggable-table) td,[dir="ltr"] :is(.forum table,.text-content table,.views-table,.draggable-table) th {
-    padding-left: 0;
-}
-
-[dir="rtl"] :is(.forum table,.text-content table,.views-table,.draggable-table) td,[dir="rtl"] :is(.forum table,.text-content table,.views-table,.draggable-table) th {
-    padding-right: 0;
-}
-
-[dir="ltr"] :is(.forum table,.text-content table,.views-table,.draggable-table) td,[dir="ltr"] :is(.forum table,.text-content table,.views-table,.draggable-table) th {
-    padding-right: var(--sp1);
+  margin-block-end: var(--sp1);
+  text-align: start;
+  color: var(--color-text-neutral-medium);
+  font-family: var(--font-serif);
+  font-size: 0.875rem;
+  font-style: italic;
+  line-height: var(--sp);
 }
 
-[dir="rtl"] :is(.forum table,.text-content table,.views-table,.draggable-table) td,[dir="rtl"] :is(.forum table,.text-content table,.views-table,.draggable-table) th {
-    padding-left: var(--sp1);
+:is(.forum table,.text-content table,.views-table,.draggable-table) tr:last-child td {
+  border-block-end: 0;
 }
 
 :is(.forum table,.text-content table,.views-table,.draggable-table) td,
-  :is(.forum table,.text-content table,.views-table,.draggable-table) th {
-    padding-top: var(--sp1);
-    padding-bottom: var(--sp1);
-    vertical-align: top;
-  }
-
-[dir="ltr"] :is(.forum table,.text-content table,.views-table,.draggable-table) th {
-    margin-left: 0;
-}
-
-[dir="rtl"] :is(.forum table,.text-content table,.views-table,.draggable-table) th {
-    margin-right: 0;
-}
-
-[dir="ltr"] :is(.forum table,.text-content table,.views-table,.draggable-table) th {
-    margin-right: 0;
-}
-
-[dir="rtl"] :is(.forum table,.text-content table,.views-table,.draggable-table) th {
-    margin-left: 0;
-}
-
-[dir="ltr"] :is(.forum table,.text-content table,.views-table,.draggable-table) th {
-    text-align: left;
-}
-
-[dir="rtl"] :is(.forum table,.text-content table,.views-table,.draggable-table) th {
-    text-align: right;
+:is(.forum table,.text-content table,.views-table,.draggable-table) th {
+  padding-block: var(--sp1);
+  padding-inline-start: 0;
+  padding-inline-end: var(--sp1);
+  vertical-align: top;
 }
 
 :is(.forum table,.text-content table,.views-table,.draggable-table) th {
-    margin-top: 0;
-    margin-bottom: 0;
-    letter-spacing: 0.02em;
-    color: var(--color-text-neutral-loud);
-    border-bottom: 2px solid var(--color--primary-50);
-    font-family: var(--font-sans);
-    font-size: 0.875rem;
-    line-height: var(--sp);
-  }
+  margin-block: 0;
+  margin-inline-start: 0;
+  margin-inline-end: 0;
+  text-align: start;
+  letter-spacing: 0.02em;
+  color: var(--color-text-neutral-loud);
+  border-block-end: 2px solid var(--color--primary-50);
+  font-family: var(--font-sans);
+  font-size: 0.875rem;
+  line-height: var(--sp);
+}
 
 :is(.forum table,.text-content table,.views-table,.draggable-table) td {
-    white-space: normal;
-    border-bottom: 2px solid var(--color--gray-65);
-  }
+  white-space: normal;
+  border-block-end: 2px solid var(--color--gray-65);
+}
 
 :is(.forum table,.text-content table,.views-table,.draggable-table) th.checkbox,
-  :is(.forum table,.text-content table,.views-table,.draggable-table) td.checkbox {
-    text-align: center;
-  }
+:is(.forum table,.text-content table,.views-table,.draggable-table) td.checkbox {
+  text-align: center;
+}
 
 .draggable-table {
   width: 100%;
@@ -142,7 +98,7 @@
 .sticky-header {
   z-index: 0;
   margin: 0;
-  border-bottom: 0.25rem solid var(--color--primary-50);
+  border-block-end: 0.25rem solid var(--color--primary-50);
 }
 
 /* Properly align VBO checkboxes. */
diff --git a/core/themes/olivero/css/components/tabledrag.css b/core/themes/olivero/css/components/tabledrag.css
index c41780a736..363cbfe05a 100644
--- a/core/themes/olivero/css/components/tabledrag.css
+++ b/core/themes/olivero/css/components/tabledrag.css
@@ -45,12 +45,8 @@ a.tabledrag-handle,
   height: 2.25rem;
 }
 
-[dir="ltr"] .draggable a.tabledrag-handle {
-  margin-left: 0;
-}
-
-[dir="rtl"] .draggable a.tabledrag-handle {
-  margin-right: 0;
+.draggable a.tabledrag-handle {
+  margin-inline-start: 0;
 }
 
 a.tabledrag-handle .handle {
@@ -65,25 +61,10 @@ a.tabledrag-handle .handle {
   background-position: 50% 5px;
 }
 
-[dir="ltr"] .touchevents .draggable td {
-  padding-left: 0;
-}
-
-[dir="rtl"] .touchevents .draggable td {
-  padding-right: 0;
-}
-
-[dir="ltr"] .touchevents .draggable td {
-  padding-right: var(--sp0-5);
-}
-
-[dir="rtl"] .touchevents .draggable td {
-  padding-left: var(--sp0-5);
-}
-
 .touchevents .draggable td {
-  padding-top: var(--sp0-5);
-  padding-bottom: var(--sp0-5);
+  padding-block: var(--sp0-5);
+  padding-inline-start: 0;
+  padding-inline-end: var(--sp0-5);
 }
 
 .touchevents .draggable .menu-item__link {
diff --git a/core/themes/olivero/css/components/tabs.css b/core/themes/olivero/css/components/tabs.css
index ae09700fcf..a2610b313a 100644
--- a/core/themes/olivero/css/components/tabs.css
+++ b/core/themes/olivero/css/components/tabs.css
@@ -20,14 +20,6 @@
 
 /* Breakpoint where tabs switch between vertical and horizontal layouts. */
 
-[dir="ltr"] .tabs {
-  margin-left: 0;
-}
-
-[dir="rtl"] .tabs {
-  margin-right: 0;
-}
-
 .tabs {
   --tabs-height: var(--sp3);
   --tabs-padding-inline: var(--sp1-5);
@@ -46,79 +38,71 @@
   display: flex;
   flex-direction: column;
   width: 100%;
-  margin: 0; /* Override [dir] attribute in base <ul> in compiled CSS. */
+  margin: 0;
+  margin-inline-start: 0; /* Override [dir] attribute in base <ul> in compiled CSS. */
   padding: 0;
   list-style: none;
 }
 
 @media (min-width: 43.75rem) {
 
-.tabs {
+  .tabs {
     flex-direction: row;
     flex-wrap: wrap;
-}
   }
+}
 
 .tabs__tab {
   display: none;
   margin: 0;
-  margin-bottom: calc(-1 * var(--tabs-border-width));
+  margin-block-end: calc(-1 * var(--tabs-border-width));
 }
 
 .tabs__tab.is-active {
-    display: flex;
-  }
+  display: flex;
+}
 
 @media (min-width: 43.75rem) {
 
-[dir="ltr"] .tabs__tab {
-    margin-left: calc(-1 * var(--tabs-border-width));
-  }
-
-[dir="rtl"] .tabs__tab {
-    margin-right: calc(-1 * var(--tabs-border-width));
-  }
-
-.tabs__tab {
+  .tabs__tab {
     display: flex;
-    margin-bottom: 0;
-}
+    margin-block-end: 0;
+    margin-inline-start: calc(-1 * var(--tabs-border-width));
   }
+}
 
 /* Show tabs when JavaScript disabled. */
 
 html:not(.js) .tabs__tab {
-    display: flex;
+  display: flex;
 }
 
 /* Show tabs when tabs-expanded class is present. */
 
 .tabs.is-expanded .tabs__tab {
-    display: flex;
+  display: flex;
 }
 
 /* Secondary tabs will always be expanded. */
 
 .tabs--secondary .tabs__tab {
-    display: block;
+  display: block;
 }
 
 @media (min-width: 43.75rem) {
 
-.tabs--secondary .tabs__tab {
-      display: flex;
+  .tabs--secondary .tabs__tab {
+    display: flex;
+  }
 }
-    }
 
 .tabs__link {
   display: flex;
   flex-grow: 1;
   align-items: center;
   height: var(--tabs-height);
-  padding-top: 0;
-  padding-bottom: 0;
-  padding-left: var(--tabs-padding-inline);
-  padding-right: var(--tabs-padding-inline);
+  padding-block: 0;
+  padding-inline: var(--tabs-padding-inline);
   transition: background-color var(--tabs-transition-duration);
   text-decoration: none;
   letter-spacing: var(--tabs-letter-spacing);
@@ -129,172 +113,133 @@ html:not(.js) .tabs__tab {
 }
 
 .tabs__link:hover {
-    color: var(--tabs-text-color-active);
-    background-color: var(--tabs-background-color-hover);
-  }
+  color: var(--tabs-text-color-active);
+  background-color: var(--tabs-background-color-hover);
+}
 
 .tabs__link:focus {
-    position: relative;
-    outline: solid 3px var(--tabs-highlight-color);
-    outline-offset: -3px;
-  }
+  position: relative;
+  outline: solid 3px var(--tabs-highlight-color);
+  outline-offset: -3px;
+}
 
 .tabs__link.is-active {
-    position: relative; /* Anchor :after pseudo-element. */
-    color: var(--tabs-text-color-active);
-    font-weight: 600;
+  position: relative; /* Anchor :after pseudo-element. */
+  color: var(--tabs-text-color-active);
+  font-weight: 600;
 
-    /*
+  /*
      * We use :after pseudo-element in place of border so edges do not appear
      * diagonally cut off due to other edges with transparent borders.
      */
-  }
-
-[dir="ltr"] .tabs__link.is-active:after {
-      left: calc(-1 * var(--tabs-border-width));
-}
-
-[dir="rtl"] .tabs__link.is-active:after {
-      right: calc(-1 * var(--tabs-border-width));
-}
-
-[dir="ltr"] .tabs__link.is-active:after {
-      border-left: var(--tabs-active-border-size) solid var(--tabs-highlight-color);
-}
-
-[dir="rtl"] .tabs__link.is-active:after {
-      border-right: var(--tabs-active-border-size) solid var(--tabs-highlight-color);
 }
 
 .tabs__link.is-active:after {
-      position: absolute;
-      top: calc(-1 * var(--tabs-border-width));
-      height: calc(100% + var(--tabs-border-width) * 2);
-      content: "";
-    }
+  position: absolute;
+  inset-block-start: calc(-1 * var(--tabs-border-width));
+  inset-inline-start: calc(-1 * var(--tabs-border-width));
+  height: calc(100% + var(--tabs-border-width) * 2);
+  content: "";
+  border-inline-start: var(--tabs-active-border-size) solid var(--tabs-highlight-color);
+}
 
 @media (min-width: 43.75rem) {
 
-[dir="ltr"] .tabs__link.is-active:after {
-        border-left: 0;
-  }
-
-[dir="rtl"] .tabs__link.is-active:after {
-        border-right: 0;
+  .tabs__link.is-active:after {
+    inset-block: auto calc(-1 * var(--tabs-border-width));
+    width: calc(100% + 2 * var(--tabs-border-width));
+    height: 0;
+    border-block-start: var(--tabs-active-border-size) solid var(--tabs-highlight-color);
+    border-inline-start: 0;
   }
-
-.tabs__link.is-active:after {
-        top: auto;
-        bottom: calc(-1 * var(--tabs-border-width));
-        width: calc(100% + 2 * var(--tabs-border-width));
-        height: 0;
-        border-top: var(--tabs-active-border-size) solid var(--tabs-highlight-color);
-    }
-      }
+}
 
 /* No regular borders or background color for secondary tab links. */
 
 @media (min-width: 43.75rem) {
 
-.tabs--secondary .tabs__link {
-      border-color: transparent;
-      background-color: transparent;
+  .tabs--secondary .tabs__link {
+    border-color: transparent;
+    background-color: transparent;
+  }
 }
-    }
 
 /* Button that opens and closes primary tabs at narrow viewports. */
 
-[dir="ltr"] .tabs__trigger {
-  margin-left: calc(-1 * var(--tabs-border-width));
-  margin-right: 0;
-}
-
-[dir="rtl"] .tabs__trigger {
-  margin-right: calc(-1 * var(--tabs-border-width));
-  margin-left: 0;
-}
-
 .tabs__trigger {
   display: flex;
   align-items: center;
   justify-content: center;
   width: var(--tabs-height);
-  margin-top: 0;
-  margin-bottom: 0;
+  margin-block: 0;
+  margin-inline: calc(-1 * var(--tabs-border-width)) 0;
   cursor: pointer;
   border: solid var(--tabs-border-width) var(--tabs-border-color);
   background-color: var(--tabs-background-color);
 }
 
 .tabs__trigger:hover {
-    background-color: var(--tabs-background-color-hover);
-  }
+  background-color: var(--tabs-background-color-hover);
+}
 
 .tabs__trigger:focus {
-    position: relative;
-    border-color: var(--tabs-highlight-color);
-    outline: none;
-  }
+  position: relative;
+  border-color: var(--tabs-highlight-color);
+  outline: none;
+}
 
 /* Button will not work when JavaScript is disabled, so we hide it. */
 
 html:not(.js) .tabs__trigger {
-    display: none;
+  display: none;
 }
 
 @media (min-width: 43.75rem) {
 
-.tabs__trigger {
+  .tabs__trigger {
     display: none;
-}
   }
+}
 
 .tabs__trigger-icon {
   position: relative;
   display: block;
   width: var(--sp);
   height: 0.625rem;
-  margin-top: calc(-2 * var(--tabs-border-width));
-}
-
-[dir="ltr"] .tabs__trigger-icon > span {
-    left: 0;
-}
-
-[dir="rtl"] .tabs__trigger-icon > span {
-    right: 0;
+  margin-block-start: calc(-2 * var(--tabs-border-width));
 }
 
 .tabs__trigger-icon > span {
-    position: absolute;
-    display: block;
-    width: 100%;
-    transition: transform var(--tabs-transition-duration), opacity var(--tabs-transition-duration), top var(--tabs-transition-duration);
-    border-top: solid 2px var(--tabs-highlight-color);
-  }
+  position: absolute;
+  inset-inline-start: 0;
+  display: block;
+  width: 100%;
+  transition: transform var(--tabs-transition-duration), opacity var(--tabs-transition-duration), top var(--tabs-transition-duration);
+  border-block-start: solid 2px var(--tabs-highlight-color);
+}
 
 .tabs__trigger-icon > span:nth-child(1) {
-      top: 0;
-    }
+  inset-block-start: 0;
+}
 
 .tabs__trigger[aria-expanded="true"] :is(.tabs__trigger-icon > span:nth-child(1)) {
-        top: calc(50% + 1px);
-        transform: rotate(45deg);
-    }
+  inset-block-start: calc(50% + 1px);
+  transform: rotate(45deg);
+}
 
 .tabs__trigger-icon > span:nth-child(2) {
-      top: calc(50% + 1px);
-    }
+  inset-block-start: calc(50% + 1px);
+}
 
 .tabs__trigger[aria-expanded="true"] :is(.tabs__trigger-icon > span:nth-child(2)) {
-        opacity: 0;
-    }
+  opacity: 0;
+}
 
 .tabs__trigger-icon > span:nth-child(3) {
-      top: calc(100% + 2px);
-    }
+  inset-block-start: calc(100% + 2px);
+}
 
 .tabs__trigger[aria-expanded="true"] :is(.tabs__trigger-icon > span:nth-child(3)) {
-        top: calc(50% + 1px);
-        transform: rotate(-45deg);
-    }
+  inset-block-start: calc(50% + 1px);
+  transform: rotate(-45deg);
+}
diff --git a/core/themes/olivero/css/components/tags.css b/core/themes/olivero/css/components/tags.css
index 83b1694b41..ae6d2e9884 100644
--- a/core/themes/olivero/css/components/tags.css
+++ b/core/themes/olivero/css/components/tags.css
@@ -28,16 +28,9 @@
   font-family: var(--font-sans);
 }
 
-[dir="ltr"] .field--tags__label {
-  margin-right: calc(var(--sp1-5) - (var(--sp0-5) / 2));
-}
-
-[dir="rtl"] .field--tags__label {
-  margin-left: calc(var(--sp1-5) - (var(--sp0-5) / 2));
-}
-
 .field--tags__label {
   margin: 0;
+  margin-inline-end: calc(var(--sp1-5) - (var(--sp0-5) / 2));
   letter-spacing: 0.02em;
   color: var(--color-text-neutral-soft);
   font-size: var(--font-size-s);
@@ -46,99 +39,39 @@
 }
 
 .field--tags__label:after {
-    content: ":";
-  }
+  content: ":";
+}
 
 @media (min-width: 43.75rem) {
 
-.field--tags__label {
+  .field--tags__label {
     line-height: 2;
-}
   }
-
-[dir="ltr"] .field--label-inline .field--tags__label {
-  padding-left: 0;
-}
-
-[dir="rtl"] .field--label-inline .field--tags__label {
-  padding-right: 0;
-}
-
-[dir="ltr"] .field--label-inline .field--tags__label {
-  padding-right: 0;
-}
-
-[dir="rtl"] .field--label-inline .field--tags__label {
-  padding-left: 0;
 }
 
 .field--label-inline .field--tags__label {
-  padding-top: 0;
-  padding-bottom: 0;
-}
-
-[dir="ltr"] .field--tags__items {
-  margin-left: calc((var(--sp0-5) / 2) * -1);
-}
-
-[dir="rtl"] .field--tags__items {
-  margin-right: calc((var(--sp0-5) / 2) * -1);
-}
-
-[dir="ltr"] .field--tags__items {
-  margin-right: calc((var(--sp0-5) / 2) * -1);
-}
-
-[dir="rtl"] .field--tags__items {
-  margin-left: calc((var(--sp0-5) / 2) * -1);
-}
-
-[dir="ltr"] .field--tags__items {
-  padding-left: 0;
-}
-
-[dir="rtl"] .field--tags__items {
-  padding-right: 0;
-}
-
-[dir="ltr"] .field--tags__items {
-  padding-right: 0;
-}
-
-[dir="rtl"] .field--tags__items {
-  padding-left: 0;
+  padding-block: 0;
+  padding-inline-start: 0;
+  padding-inline-end: 0;
 }
 
 .field--tags__items {
   display: flex;
   flex-wrap: wrap;
-  margin-top: calc((var(--sp0-5) / 2) * -1);
-  margin-bottom: calc((var(--sp0-5) / 2) * -1);
-  padding-top: 0;
-  padding-bottom: 0;
+  margin-block: calc((var(--sp0-5) / 2) * -1);
+  margin-inline-start: calc((var(--sp0-5) / 2) * -1);
+  margin-inline-end: calc((var(--sp0-5) / 2) * -1);
+  padding-block: 0;
+  padding-inline-start: 0;
+  padding-inline-end: 0;
   list-style: none;
 }
 
-[dir="ltr"] .field--tags__item {
-  margin-left: calc(var(--sp0-5) / 2);
-}
-
-[dir="rtl"] .field--tags__item {
-  margin-right: calc(var(--sp0-5) / 2);
-}
-
-[dir="ltr"] .field--tags__item {
-  margin-right: calc(var(--sp0-5) / 2);
-}
-
-[dir="rtl"] .field--tags__item {
-  margin-left: calc(var(--sp0-5) / 2);
-}
-
 .field--tags__item {
   display: flex;
-  margin-top: calc(var(--sp0-5) / 2);
-  margin-bottom: calc(var(--sp0-5) / 2);
+  margin-block: calc(var(--sp0-5) / 2);
+  margin-inline-start: calc(var(--sp0-5) / 2);
+  margin-inline-end: calc(var(--sp0-5) / 2);
 }
 
 .field--tags__item:nth-last-child(n+2):after {
@@ -159,26 +92,11 @@
   line-height: 1.5;
 }
 
-[dir="ltr"] .node--view-mode-full .field--tags {
-    padding-left: var(--sp2);
-}
-
-[dir="rtl"] .node--view-mode-full .field--tags {
-    padding-right: var(--sp2);
-}
-
-[dir="ltr"] .node--view-mode-full .field--tags {
-    padding-right: var(--sp2);
-}
-
-[dir="rtl"] .node--view-mode-full .field--tags {
-    padding-left: var(--sp2);
-}
-
 .node--view-mode-full .field--tags {
-    margin-top: var(--sp4);
-    margin-bottom: var(--sp4);
-    padding-top: var(--sp1-5);
-    padding-bottom: var(--sp1-5);
-    background-color: var(--color--gray-100);
-  }
+  margin-block-start: var(--sp4);
+  margin-block-end: var(--sp4);
+  padding-block: var(--sp1-5);
+  padding-inline-start: var(--sp2);
+  padding-inline-end: var(--sp2);
+  background-color: var(--color--gray-100);
+}
diff --git a/core/themes/olivero/css/components/text-content.css b/core/themes/olivero/css/components/text-content.css
index adf6ea1372..e45a2540f5 100644
--- a/core/themes/olivero/css/components/text-content.css
+++ b/core/themes/olivero/css/components/text-content.css
@@ -39,181 +39,135 @@
   */
 }
 
-.text-content a:where(:not(.button)), .cke_editable a:where(:not(.button)) {
-    color: var(--color-text-primary-medium);
-    -webkit-text-decoration-color: currentColor;
-    text-decoration-color: currentColor;
-    text-decoration-thickness: 2px;
-    overflow-wrap: break-word;
-  }
+.text-content a:where(:not(.button)),
+.cke_editable a:where(:not(.button)) {
+  color: var(--color-text-primary-medium);
+  -webkit-text-decoration-color: currentColor;
+  text-decoration-color: currentColor;
+  text-decoration-thickness: 2px;
+  overflow-wrap: break-word;
+}
 
 @supports (box-shadow: none) {
 
-.text-content a:where(:not(.button)), .cke_editable a:where(:not(.button)) {
-      transition: box-shadow 0.3s cubic-bezier(0.55, 0.085, 0, 0.99);
-      text-decoration: none;
-      box-shadow: inset 0 -2px 0 0 var(--color--primary-50);
-  }
-
-      .text-content a:where(:not(.button)):hover, .cke_editable a:where(:not(.button)):hover {
-        text-decoration: underline;
-        color: var(--color--black);
-
-        /* @todo - #d9ecfa isn't currently a variable. */
-        box-shadow: inset 0 -2em 0 0 #d9ecfa;
-        -webkit-text-decoration-color: #d9ecfa;
-        text-decoration-color: #d9ecfa;
-      }
-    }
-
-.text-content p, .cke_editable p {
-    margin-top: var(--sp);
-    margin-bottom: var(--sp);
-  }
-
-.text-content p:first-child, .cke_editable p:first-child {
-      margin-top: 0;
-    }
-
-.text-content p:last-child, .cke_editable p:last-child {
-      margin-bottom: 0;
-    }
-
-@media (min-width: 43.75rem) {
-
-.text-content p, .cke_editable p {
-      margin-top: var(--sp2);
-      margin-bottom: var(--sp2);
+  .text-content a:where(:not(.button)),
+  .cke_editable a:where(:not(.button)) {
+    transition: box-shadow 0.3s cubic-bezier(0.55, 0.085, 0, 0.99);
+    text-decoration: none;
+    box-shadow: inset 0 -2px 0 0 var(--color--primary-50);
   }
-    }
 
-.text-content code, .cke_editable code {
-    background-color: var(--color--gray-100);
-  }
-
-[dir="ltr"] .text-content pre code,[dir="ltr"]  .cke_editable pre code {
-    padding-left: var(--sp);
-}
-
-[dir="rtl"] .text-content pre code,[dir="rtl"]  .cke_editable pre code {
-    padding-right: var(--sp);
-}
-
-[dir="ltr"] .text-content pre code,[dir="ltr"]  .cke_editable pre code {
-    padding-right: var(--sp);
-}
-
-[dir="rtl"] .text-content pre code,[dir="rtl"]  .cke_editable pre code {
-    padding-left: var(--sp);
-}
-
-.text-content pre code, .cke_editable pre code {
-    display: block;
-    overflow: auto;
-    padding-top: var(--sp);
-    padding-bottom: var(--sp);
-    color: var(--color-text-neutral-soft);
+  .text-content a:where(:not(.button)):hover,
+  .cke_editable a:where(:not(.button)):hover {
+    text-decoration: underline;
+    color: var(--color--black);
+    box-shadow: inset 0 -2em 0 0 var(--color--primary-80);
+    -webkit-text-decoration-color: var(--color--primary-80);
+    text-decoration-color: var(--color--primary-80);
   }
-
-[dir="ltr"] .text-content blockquote,[dir="ltr"]  .cke_editable blockquote {
-    margin-left: 0;
 }
 
-[dir="rtl"] .text-content blockquote,[dir="rtl"]  .cke_editable blockquote {
-    margin-right: 0;
+.text-content p,
+.cke_editable p {
+  margin-block-start: var(--sp);
+  margin-block-end: var(--sp);
 }
 
-[dir="ltr"] .text-content blockquote,[dir="ltr"]  .cke_editable blockquote {
-    margin-right: 0;
+.text-content p:first-child,
+.cke_editable p:first-child {
+  margin-block-start: 0;
 }
 
-[dir="rtl"] .text-content blockquote,[dir="rtl"]  .cke_editable blockquote {
-    margin-left: 0;
+.text-content p:last-child,
+.cke_editable p:last-child {
+  margin-block-end: 0;
 }
 
-[dir="ltr"] .text-content blockquote,[dir="ltr"]  .cke_editable blockquote {
-    padding-left: var(--sp2);
-}
-
-[dir="rtl"] .text-content blockquote,[dir="rtl"]  .cke_editable blockquote {
-    padding-right: var(--sp2);
-}
+@media (min-width: 43.75rem) {
 
-.text-content blockquote, .cke_editable blockquote {
-    position: relative;
-    margin-top: var(--sp2);
-    margin-bottom: var(--sp2);
-    letter-spacing: -0.01em;
-    font-family: var(--font-serif);
-    font-size: 1.3125rem;
-    line-height: var(--sp2);
+  .text-content p,
+  .cke_editable p {
+    margin-block-start: var(--sp2);
+    margin-block-end: var(--sp2);
   }
-
-[dir="ltr"] .text-content blockquote:before,[dir="ltr"]  .cke_editable blockquote:before {
-      left: 0;
 }
 
-[dir="rtl"] .text-content blockquote:before,[dir="rtl"]  .cke_editable blockquote:before {
-      right: 0;
+.text-content code,
+.cke_editable code {
+  background-color: var(--color--gray-100);
 }
 
-.text-content blockquote:before, .cke_editable blockquote:before {
-      position: absolute;
-      top: 0;
-      content: "“";
-      color: var(--color--primary-60);
-      font-size: 3.375rem;
-    }
-
-[dir="ltr"] .text-content blockquote:after,[dir="ltr"]  .cke_editable blockquote:after {
-      left: 0;
+.text-content pre code,
+.cke_editable pre code {
+  display: block;
+  overflow: auto;
+  padding-block: var(--sp);
+  padding-inline-start: var(--sp);
+  padding-inline-end: var(--sp);
+  color: var(--color-text-neutral-soft);
 }
 
-[dir="rtl"] .text-content blockquote:after,[dir="rtl"]  .cke_editable blockquote:after {
-      right: 0;
+.text-content blockquote,
+.cke_editable blockquote {
+  position: relative;
+  margin-block: var(--sp2);
+  margin-inline-start: 0;
+  margin-inline-end: 0;
+  padding-inline-start: var(--sp2);
+  letter-spacing: -0.01em;
+  font-family: var(--font-serif);
+  font-size: 1.3125rem;
+  line-height: var(--sp2);
 }
 
-[dir="ltr"] .text-content blockquote:after,[dir="ltr"]  .cke_editable blockquote:after {
-      margin-left: 0.25rem;
+.text-content blockquote:before,
+.cke_editable blockquote:before {
+  position: absolute;
+  inset-block-start: 0;
+  inset-inline-start: 0;
+  content: "\201C";
+  color: var(--color--primary-60);
+  font-size: 3.375rem;
 }
 
-[dir="rtl"] .text-content blockquote:after,[dir="rtl"]  .cke_editable blockquote:after {
-      margin-right: 0.25rem;
+.text-content blockquote:after,
+.cke_editable blockquote:after {
+  position: absolute;
+  inset-block-end: 0;
+  inset-inline-start: 0;
+  width: var(--sp0-5);
+  height: calc(100% - 1.875rem);
+  margin-inline-start: 0.25rem;
+  content: "";
+  background: var(--color--gray-100);
 }
 
-.text-content blockquote:after, .cke_editable blockquote:after {
-      position: absolute;
-      bottom: 0;
-      width: var(--sp0-5);
-      height: calc(100% - 1.875rem);
-      content: "";
-      background: var(--color--gray-100);
-    }
-
 @media (min-width: 43.75rem) {
 
-.text-content blockquote, .cke_editable blockquote {
-      font-size: 2rem;
-      line-height: var(--sp3);
+  .text-content blockquote,
+  .cke_editable blockquote {
+    font-size: 2rem;
+    line-height: var(--sp3);
   }
-    }
+}
 
 @media (min-width: 62.5rem) {
 
-.text-content blockquote, .cke_editable blockquote {
-      font-size: 2.5rem;
-      line-height: calc(3.5 * var(--sp));
+  .text-content blockquote,
+  .cke_editable blockquote {
+    font-size: 2.5rem;
+    line-height: calc(3.5 * var(--sp));
   }
-    }
+}
 
 @media (min-width: 43.75rem) {
 
-.text-content,
-.cke_editable {
+  .text-content,
+  .cke_editable {
     font-size: 1.125rem;
     line-height: var(--sp2);
-}
   }
+}
 
 /**
  * Special colors for footer that has a dark background.
@@ -224,20 +178,20 @@
 }
 
 .site-footer .text-content * {
-    color: inherit;
-  }
+  color: inherit;
+}
 
 .site-footer .text-content a {
-    text-decoration: underline;
-    color: var(--color--white);
-    box-shadow: none;
-  }
+  text-decoration: underline;
+  color: var(--color--white);
+  box-shadow: none;
+}
 
 .site-footer .text-content a:hover {
-      text-decoration: none;
-      color: var(--color--white);
-      box-shadow: none;
-    }
+  text-decoration: none;
+  color: var(--color--white);
+  box-shadow: none;
+}
 
 /**
  * Decrease font-size for blockquote placed in sidebar region.
@@ -245,8 +199,8 @@
 
 @media (min-width: 62.5rem) {
 
-.region--sidebar .text-content blockquote {
+  .region--sidebar .text-content blockquote {
     font-size: 1.5rem;
     line-height: var(--sp2);
-}
   }
+}
diff --git a/core/themes/olivero/css/components/text-content.pcss.css b/core/themes/olivero/css/components/text-content.pcss.css
index 140caa5107..aa9021abb9 100644
--- a/core/themes/olivero/css/components/text-content.pcss.css
+++ b/core/themes/olivero/css/components/text-content.pcss.css
@@ -34,10 +34,8 @@
       &:hover {
         text-decoration: underline;
         color: var(--color--black);
-
-        /* @todo - #d9ecfa isn't currently a variable. */
-        box-shadow: inset 0 -2em 0 0 #d9ecfa;
-        text-decoration-color: #d9ecfa;
+        box-shadow: inset 0 -2em 0 0 var(--color--primary-80);
+        text-decoration-color: var(--color--primary-80);
       }
     }
   }
@@ -88,7 +86,7 @@
       position: absolute;
       inset-block-start: 0;
       inset-inline-start: 0;
-      content: "“";
+      content: "\201C";
       color: var(--color--primary-60);
       font-size: 54px;
     }
diff --git a/core/themes/olivero/css/components/vertical-tabs.css b/core/themes/olivero/css/components/vertical-tabs.css
index dbf7407866..600b01a59b 100644
--- a/core/themes/olivero/css/components/vertical-tabs.css
+++ b/core/themes/olivero/css/components/vertical-tabs.css
@@ -30,31 +30,17 @@
 
 @media (min-width: 62.5rem) {
 
-.vertical-tabs {
+  .vertical-tabs {
     display: flex;
-}
   }
-
-[dir="ltr"] .vertical-tabs__menu {
-  margin-left: 0;
-}
-
-[dir="rtl"] .vertical-tabs__menu {
-  margin-right: 0;
-}
-
-[dir="ltr"] .vertical-tabs__menu {
-  margin-right: 0;
-}
-
-[dir="rtl"] .vertical-tabs__menu {
-  margin-left: 0;
 }
 
 .vertical-tabs__menu {
   position: relative;
   align-self: flex-start;
   margin: 0;
+  margin-inline-start: 0;
+  margin-inline-end: 0;
   list-style: none;
   border-width: var(--vertical-tabs-menu-border-width);
   border-style: solid;
@@ -63,30 +49,30 @@
 
 @media (min-width: 62.5rem) {
 
-.vertical-tabs__menu {
+  .vertical-tabs__menu {
     width: var(--vertical-tabs-menu-width);
     border-width: var(--vertical-tabs-menu-border-width) 0 var(--vertical-tabs-menu-border-width) var(--vertical-tabs-menu-border-width);
-}
   }
+}
 
 .vertical-tabs__panes {
-  margin-top: calc(var(--vertical-tabs-menu-border-width) * -1);
+  margin-block-start: calc(var(--vertical-tabs-menu-border-width) * -1);
 }
 
 @media (min-width: 62.5rem) {
 
-.vertical-tabs__panes {
+  .vertical-tabs__panes {
     width: calc(100% - var(--vertical-tabs-menu-width));
-    margin-top: 0;
-}
+    margin-block-start: 0;
   }
+}
 
 @media (min-width: 62.5rem) {
 
-.vertical-tabs__pane {
+  .vertical-tabs__pane {
     min-height: 100%;
-}
   }
+}
 
 .vertical-tabs__pane.olivero-details {
   margin: 0;
@@ -99,39 +85,24 @@
 }
 
 .vertical-tabs__menu-item:nth-child(n+2) {
-  border-top: var(--vertical-tabs-menu-border-width) solid var(--color--gray-95);
-}
-
-[dir="ltr"] .vertical-tabs__menu-item a {
-  padding-left: var(--sp0-75);
-}
-
-[dir="rtl"] .vertical-tabs__menu-item a {
-  padding-right: var(--sp0-75);
-}
-
-[dir="ltr"] .vertical-tabs__menu-item a {
-  padding-right: var(--sp0-75);
-}
-
-[dir="rtl"] .vertical-tabs__menu-item a {
-  padding-left: var(--sp0-75);
+  border-block-start: var(--vertical-tabs-menu-border-width) solid var(--color--gray-95);
 }
 
 .vertical-tabs__menu-item a {
   display: block;
-  padding-top: var(--sp0-5);
-  padding-bottom: var(--sp0-5);
+  padding-block: var(--sp0-5);
+  padding-inline-start: var(--sp0-75);
+  padding-inline-end: var(--sp0-75);
   text-decoration: none;
   color: var(--color-text-primary-loud);
   background-color: var(--color--gray-95);
 }
 
 .vertical-tabs__menu-item a:focus,
-  .vertical-tabs__menu-item a:hover,
-  .vertical-tabs__menu-item a:active {
-    background-color: var(--color--gray-100);
-  }
+.vertical-tabs__menu-item a:hover,
+.vertical-tabs__menu-item a:active {
+  background-color: var(--color--gray-100);
+}
 
 .vertical-tabs__menu-item.is-selected {
   background-color: var(--color--white);
@@ -139,22 +110,11 @@
 
 @media (min-width: 62.5rem) {
 
-[dir="ltr"] .vertical-tabs__menu-item.is-selected {
-    margin-right: calc(var(--vertical-tabs-menu-border-width) * -1);
-  }
-
-[dir="rtl"] .vertical-tabs__menu-item.is-selected {
-    margin-left: calc(var(--vertical-tabs-menu-border-width) * -1);
-  }
-
-[dir="ltr"] .vertical-tabs__menu-item.is-selected {
-    padding-right: var(--vertical-tabs-menu-border-width);
-  }
-
-[dir="rtl"] .vertical-tabs__menu-item.is-selected {
-    padding-left: var(--vertical-tabs-menu-border-width);
-  }
+  .vertical-tabs__menu-item.is-selected {
+    margin-inline-end: calc(var(--vertical-tabs-menu-border-width) * -1);
+    padding-inline-end: var(--vertical-tabs-menu-border-width);
   }
+}
 
 .vertical-tabs__menu-item.is-selected a {
   background-color: transparent;
diff --git a/core/themes/olivero/css/components/wide-image.css b/core/themes/olivero/css/components/wide-image.css
index f13c1b94ce..8cf9268fae 100644
--- a/core/themes/olivero/css/components/wide-image.css
+++ b/core/themes/olivero/css/components/wide-image.css
@@ -23,93 +23,50 @@
 
 /* Width of the entire grid maxes out. */
 
-[dir="ltr"] .wide-image {
-  margin-left: 0;
-}
-
-[dir="rtl"] .wide-image {
-  margin-right: 0;
-}
-
-[dir="ltr"] .wide-image {
-  margin-right: 0;
-}
-
-[dir="rtl"] .wide-image {
-  margin-left: 0;
-}
-
 .wide-image {
-  margin-top: var(--sp0-5);
-  margin-bottom: var(--sp2);
+  margin-block-start: var(--sp0-5);
+  margin-block-end: var(--sp2);
+  margin-inline-start: 0;
+  margin-inline-end: 0;
 }
 
 @media (min-width: 43.75rem) {
 
-[dir="ltr"] .wide-image {
-    margin-left: calc(-1 * ((var(--grid-col-width) + var(--grid-gap))));
-  }
-
-[dir="rtl"] .wide-image {
-    margin-right: calc(-1 * ((var(--grid-col-width) + var(--grid-gap))));
-  }
-
-.wide-image {
+  .wide-image {
     width: calc(var(--grid-col-count) * var(--grid-col-width) + var(--grid-gap-count) * var(--grid-gap));
-    margin-top: var(--sp2);
-    margin-bottom: var(--sp4);
-}
+    margin-block: var(--sp2) var(--sp4);
+    margin-inline-start: calc(-1 * ((var(--grid-col-width) + var(--grid-gap))));
   }
+}
 
 @media (min-width: 62.5rem) {
 
-[dir="ltr"] .wide-image {
-    margin-left: calc(-1 * (var(--grid-col-width) + var(--grid-gap)));
-  }
-
-[dir="rtl"] .wide-image {
-    margin-right: calc(-1 * (var(--grid-col-width) + var(--grid-gap)));
-  }
-
-.wide-image {
+  .wide-image {
     width: calc(12 * var(--grid-col-width) + 11 * var(--grid-gap));
-}
+    margin-inline-start: calc(-1 * (var(--grid-col-width) + var(--grid-gap)));
   }
+}
 
 /* Ensure that image doesn't overlap sidebar. */
 
 @media (min-width: 62.5rem) {
 
-.sidebar-grid .wide-image {
+  .sidebar-grid .wide-image {
     width: calc(9 * var(--grid-col-width) + 8 * var(--grid-gap));
-}
   }
+}
 
 @media (min-width: 81.25rem) {
 
-.sidebar-grid .wide-image {
+  .sidebar-grid .wide-image {
     width: calc(10 * var(--grid-col-width) + 9 * var(--grid-gap));
-}
   }
-
-/* Ensure that image doesn't overlap layout builder sections when editing layouts. */
-
-[dir="ltr"] .layout-builder .wide-image {
-  margin-left: 0;
-}
-
-[dir="rtl"] .layout-builder .wide-image {
-  margin-right: 0;
 }
 
-[dir="ltr"] .layout-builder .wide-image {
-  margin-right: 0;
-}
-
-[dir="rtl"] .layout-builder .wide-image {
-  margin-left: 0;
-}
+/* Ensure that image doesn't overlap layout builder sections when editing layouts. */
 
 .layout-builder .wide-image {
   max-width: 100%;
+  margin-inline-start: 0;
+  margin-inline-end: 0;
 }
diff --git a/core/themes/olivero/css/layout/grid.css b/core/themes/olivero/css/layout/grid.css
index 97ba828c56..db96f6d718 100644
--- a/core/themes/olivero/css/layout/grid.css
+++ b/core/themes/olivero/css/layout/grid.css
@@ -33,8 +33,8 @@
 }
 
 .grid-full .grid-full .grid-full {
-    display: block;
-  }
+  display: block;
+}
 
 /*
   If the .grid-full is nested within the following, apply the appropriate number of columns.
@@ -44,19 +44,19 @@
 
 @media (min-width: 43.75rem) {
 
-.layout--content-narrow .grid-full,
-.layout--pass--content-narrow > * .grid-full {
+  .layout--content-narrow .grid-full,
+  .layout--pass--content-narrow > * .grid-full {
     grid-template-columns: repeat(calc(var(--grid-col-count) - 2), minmax(0, 1fr));
-}
   }
+}
 
 @media (min-width: 62.5rem) {
 
-.layout--content-narrow .grid-full,
-.layout--pass--content-narrow > * .grid-full {
+  .layout--content-narrow .grid-full,
+  .layout--pass--content-narrow > * .grid-full {
     grid-template-columns: repeat(calc(var(--grid-col-count) - 6), minmax(0, 1fr));
-}
   }
+}
 
 /*
   If the .grid-full is nested within the following, apply the appropriate number of columns.
@@ -66,16 +66,16 @@
 
 @media (min-width: 43.75rem) {
 
-.layout--content-medium .grid-full,
-.layout--pass--content-medium > * .grid-full {
+  .layout--content-medium .grid-full,
+  .layout--pass--content-medium > * .grid-full {
     grid-template-columns: repeat(calc(var(--grid-col-count) - 2), minmax(0, 1fr));
-}
   }
+}
 
 @media (min-width: 62.5rem) {
 
-.layout--content-medium .grid-full,
-.layout--pass--content-medium > * .grid-full {
+  .layout--content-medium .grid-full,
+  .layout--pass--content-medium > * .grid-full {
     grid-template-columns: repeat(calc(var(--grid-col-count) - 4), minmax(0, 1fr));
-}
   }
+}
diff --git a/core/themes/olivero/css/layout/layout-builder-fourcol-section.css b/core/themes/olivero/css/layout/layout-builder-fourcol-section.css
index 008fea1358..5a20a6614b 100644
--- a/core/themes/olivero/css/layout/layout-builder-fourcol-section.css
+++ b/core/themes/olivero/css/layout/layout-builder-fourcol-section.css
@@ -29,80 +29,61 @@
 }
 
 .layout--fourcol-section > .layout__region {
-    flex: 1 0 100%;
-    margin-bottom: var(--grid-gap);
-  }
+  flex: 1 0 100%;
+  margin-block-end: var(--grid-gap);
+}
 
 @media (min-width: 43.75rem) {
 
-.layout--fourcol-section > .layout__region {
-      flex-basis: calc(50% - (var(--grid-gap) * 0.5));
-      flex-grow: 0;
-      flex-shrink: 0;
-      margin-bottom: 0;
+  .layout--fourcol-section > .layout__region {
+    flex-basis: calc(50% - (var(--grid-gap) * 0.5));
+    flex-grow: 0;
+    flex-shrink: 0;
+    margin-block-end: 0;
   }
-    }
+}
 
 /* Two column layout. */
 
 @media (min-width: 43.75rem) {
-    .layout--fourcol-section > .layout__region--first,
-    .layout--fourcol-section > .layout__region--second {
-      margin-bottom: var(--grid-gap);
-    }
-
-    [dir="ltr"] .layout--fourcol-section > .layout__region--first,[dir="ltr"] 
-    .layout--fourcol-section > .layout__region--third {
-      margin-right: calc(var(--grid-gap) * 0.5);
+  .layout--fourcol-section > .layout__region--first,
+  .layout--fourcol-section > .layout__region--second {
+    margin-block-end: var(--grid-gap);
   }
 
-    [dir="rtl"] .layout--fourcol-section > .layout__region--first,[dir="rtl"] 
-    .layout--fourcol-section > .layout__region--third {
-      margin-left: calc(var(--grid-gap) * 0.5);
+  .layout--fourcol-section > .layout__region--first,
+  .layout--fourcol-section > .layout__region--third {
+    margin-inline-end: calc(var(--grid-gap) * 0.5);
   }
 
-    [dir="ltr"] .layout--fourcol-section > .layout__region--second,[dir="ltr"] 
-    .layout--fourcol-section > .layout__region--fourth {
-      margin-left: calc(var(--grid-gap) * 0.5);
-  }
-
-    [dir="rtl"] .layout--fourcol-section > .layout__region--second,[dir="rtl"] 
-    .layout--fourcol-section > .layout__region--fourth {
-      margin-right: calc(var(--grid-gap) * 0.5);
-  }
+  .layout--fourcol-section > .layout__region--second,
+  .layout--fourcol-section > .layout__region--fourth {
+    margin-inline-start: calc(var(--grid-gap) * 0.5);
   }
+}
 
 /* Four column layout. */
 
 @media (min-width: 62.5rem) {
-    .layout--fourcol-section > .layout__region {
-      flex-basis: calc(25% - (var(--grid-gap) * 0.75));
-    }
-
-    .layout--fourcol-section > .layout__region--first,
-    .layout--fourcol-section > .layout__region--second {
-      margin-bottom: 0;
-    }
-
-    [dir="ltr"] .layout--fourcol-section > .layout__region--first {
-      margin-right: calc(var(--grid-gap) * 0.5);
+  .layout--fourcol-section > .layout__region {
+    flex-basis: calc(25% - (var(--grid-gap) * 0.75));
   }
 
-    [dir="rtl"] .layout--fourcol-section > .layout__region--first {
-      margin-left: calc(var(--grid-gap) * 0.5);
+  .layout--fourcol-section > .layout__region--first,
+  .layout--fourcol-section > .layout__region--second {
+    margin-block-end: 0;
   }
 
-    .layout--fourcol-section > .layout__region--second,
-    .layout--fourcol-section > .layout__region--third {
-      margin-left: calc(var(--grid-gap) * 0.5);
-      margin-right: calc(var(--grid-gap) * 0.5);
-    }
-
-    [dir="ltr"] .layout--fourcol-section > .layout__region--fourth {
-      margin-left: calc(var(--grid-gap) * 0.5);
+  .layout--fourcol-section > .layout__region--first {
+    margin-inline-end: calc(var(--grid-gap) * 0.5);
   }
 
-    [dir="rtl"] .layout--fourcol-section > .layout__region--fourth {
-      margin-right: calc(var(--grid-gap) * 0.5);
+  .layout--fourcol-section > .layout__region--second,
+  .layout--fourcol-section > .layout__region--third {
+    margin-inline: calc(var(--grid-gap) * 0.5);
   }
+
+  .layout--fourcol-section > .layout__region--fourth {
+    margin-inline-start: calc(var(--grid-gap) * 0.5);
   }
+}
diff --git a/core/themes/olivero/css/layout/layout-builder-threecol-section.css b/core/themes/olivero/css/layout/layout-builder-threecol-section.css
index c8a3b229ba..47bc9188ab 100644
--- a/core/themes/olivero/css/layout/layout-builder-threecol-section.css
+++ b/core/themes/olivero/css/layout/layout-builder-threecol-section.css
@@ -29,66 +29,58 @@
 }
 
 .layout--threecol-section > .layout__region {
-    flex: 1 0 100%;
-    margin-bottom: var(--grid-gap);
-  }
+  flex: 1 0 100%;
+  margin-block-end: var(--grid-gap);
+}
 
 @media (min-width: 62.5rem) {
 
-.layout--threecol-section > .layout__region {
-      flex-grow: 0;
-      flex-shrink: 0;
-      margin-bottom: 0;
+  .layout--threecol-section > .layout__region {
+    flex-grow: 0;
+    flex-shrink: 0;
+    margin-block-end: 0;
   }
-    }
+}
 
 @media (min-width: 62.5rem) {
-    [dir="ltr"] .layout--threecol-section > .layout__region--first {
-      margin-right: calc(var(--grid-gap) * 0.5);
+  .layout--threecol-section > .layout__region--first {
+    margin-inline-end: calc(var(--grid-gap) * 0.5);
+  }
+
+  .layout--threecol-section > .layout__region--second {
+    margin-inline: calc(var(--grid-gap) * 0.5);
   }
-    [dir="rtl"] .layout--threecol-section > .layout__region--first {
-      margin-left: calc(var(--grid-gap) * 0.5);
+
+  .layout--threecol-section > .layout__region--third {
+    margin-inline-start: calc(var(--grid-gap) * 0.5);
+  }
+  .layout--threecol-section--25-50-25 > .layout__region--first,
+  .layout--threecol-section--25-50-25 > .layout__region--third {
+    flex-basis: calc(25% - (var(--grid-gap) * 0.5));
   }
 
-    .layout--threecol-section > .layout__region--second {
-      margin-left: calc(var(--grid-gap) * 0.5);
-      margin-right: calc(var(--grid-gap) * 0.5);
-    }
+  .layout--threecol-section--25-50-25 > .layout__region--second {
+    flex-basis: calc(50% - var(--grid-gap));
+  }
+  .layout--threecol-section--25-25-50 > .layout__region--first,
+  .layout--threecol-section--25-25-50 > .layout__region--second {
+    flex-basis: calc(25% - (var(--grid-gap) * 0.5));
+  }
 
-    [dir="ltr"] .layout--threecol-section > .layout__region--third {
-      margin-left: calc(var(--grid-gap) * 0.5);
+  .layout--threecol-section--25-25-50 > .layout__region--third {
+    flex-basis: calc(50% - var(--grid-gap));
+  }
+  .layout--threecol-section--50-25-25 > .layout__region--first {
+    flex-basis: calc(50% - var(--grid-gap));
   }
 
-    [dir="rtl"] .layout--threecol-section > .layout__region--third {
-      margin-right: calc(var(--grid-gap) * 0.5);
+  .layout--threecol-section--50-25-25 > .layout__region--second,
+  .layout--threecol-section--50-25-25 > .layout__region--third {
+    flex-basis: calc(25% - (var(--grid-gap) * 0.5));
+  }
+  .layout--threecol-section--33-34-33 > .layout__region--first,
+  .layout--threecol-section--33-34-33 > .layout__region--second,
+  .layout--threecol-section--33-34-33 > .layout__region--third {
+    flex-basis: calc(33.33% - (var(--grid-gap) * 0.667));
   }
-    .layout--threecol-section--25-50-25 > .layout__region--first,
-    .layout--threecol-section--25-50-25 > .layout__region--third {
-      flex-basis: calc(25% - (var(--grid-gap) * 0.5));
-    }
-
-    .layout--threecol-section--25-50-25 > .layout__region--second {
-      flex-basis: calc(50% - var(--grid-gap));
-    }
-    .layout--threecol-section--25-25-50 > .layout__region--first,
-    .layout--threecol-section--25-25-50 > .layout__region--second {
-      flex-basis: calc(25% - (var(--grid-gap) * 0.5));
-    }
-
-    .layout--threecol-section--25-25-50 > .layout__region--third {
-      flex-basis: calc(50% - var(--grid-gap));
-    }
-    .layout--threecol-section--50-25-25 > .layout__region--first {
-      flex-basis: calc(50% - var(--grid-gap));
-    }
-
-    .layout--threecol-section--50-25-25 > .layout__region--second,
-    .layout--threecol-section--50-25-25 > .layout__region--third {
-      flex-basis: calc(25% - (var(--grid-gap) * 0.5));
-    }
-    .layout--threecol-section--33-34-33 > .layout__region--first,
-    .layout--threecol-section--33-34-33 > .layout__region--second,
-    .layout--threecol-section--33-34-33 > .layout__region--third {
-      flex-basis: calc(33.33% - (var(--grid-gap) * 0.667));
-    }
 }
diff --git a/core/themes/olivero/css/layout/layout-builder-twocol-section.css b/core/themes/olivero/css/layout/layout-builder-twocol-section.css
index efebd15417..3bbfab8055 100644
--- a/core/themes/olivero/css/layout/layout-builder-twocol-section.css
+++ b/core/themes/olivero/css/layout/layout-builder-twocol-section.css
@@ -29,123 +29,63 @@
 }
 
 .layout--twocol-section > .layout__region {
-    flex: 1 0 100%;
-    margin-bottom: var(--grid-gap);
-  }
+  flex: 1 0 100%;
+  margin-block-end: var(--grid-gap);
+}
 
 @media (min-width: 43.75rem) {
 
-.layout--twocol-section > .layout__region {
-      flex-grow: 0;
-      flex-shrink: 0;
-      margin-bottom: 0;
+  .layout--twocol-section > .layout__region {
+    flex-grow: 0;
+    flex-shrink: 0;
+    margin-block-end: 0;
   }
-    }
+}
 
 @media (min-width: 43.75rem) {
-    [dir="ltr"] .layout--twocol-section--50-50 > .layout__region--first {
-      margin-right: calc(var(--grid-gap) * 0.5);
-  }
-    [dir="rtl"] .layout--twocol-section--50-50 > .layout__region--first {
-      margin-left: calc(var(--grid-gap) * 0.5);
-  }
-    .layout--twocol-section--50-50 > .layout__region--first {
-      flex-basis: calc(50% - (var(--grid-gap) * 0.5));
-    }
-
-    [dir="ltr"] .layout--twocol-section--50-50 > .layout__region--second {
-      margin-left: calc(var(--grid-gap) * 0.5);
-  }
-
-    [dir="rtl"] .layout--twocol-section--50-50 > .layout__region--second {
-      margin-right: calc(var(--grid-gap) * 0.5);
-  }
-
-    .layout--twocol-section--50-50 > .layout__region--second {
-      flex-basis: calc(50% - (var(--grid-gap) * 0.5));
-    }
-    [dir="ltr"] .layout--twocol-section--33-67 > .layout__region--first {
-      margin-right: calc(var(--grid-gap) * 0.3333);
-  }
-    [dir="rtl"] .layout--twocol-section--33-67 > .layout__region--first {
-      margin-left: calc(var(--grid-gap) * 0.3333);
+  .layout--twocol-section--50-50 > .layout__region--first {
+    flex-basis: calc(50% - (var(--grid-gap) * 0.5));
+    margin-inline-end: calc(var(--grid-gap) * 0.5);
   }
-    .layout--twocol-section--33-67 > .layout__region--first {
-      flex-basis: calc(33.33% - (var(--grid-gap) * 0.3333));
-    }
 
-    [dir="ltr"] .layout--twocol-section--33-67 > .layout__region--second {
-      margin-left: calc(var(--grid-gap) * 0.6666);
+  .layout--twocol-section--50-50 > .layout__region--second {
+    flex-basis: calc(50% - (var(--grid-gap) * 0.5));
+    margin-inline-start: calc(var(--grid-gap) * 0.5);
   }
-
-    [dir="rtl"] .layout--twocol-section--33-67 > .layout__region--second {
-      margin-right: calc(var(--grid-gap) * 0.6666);
-  }
-
-    .layout--twocol-section--33-67 > .layout__region--second {
-      flex-basis: calc(66.66% - (var(--grid-gap) * 0.6666));
-    }
-    [dir="ltr"] .layout--twocol-section--67-33 > .layout__region--first {
-      margin-right: calc(var(--grid-gap) * 0.6666);
-  }
-    [dir="rtl"] .layout--twocol-section--67-33 > .layout__region--first {
-      margin-left: calc(var(--grid-gap) * 0.6666);
-  }
-    .layout--twocol-section--67-33 > .layout__region--first {
-      flex-basis: calc(66.66% - (var(--grid-gap) * 0.6666));
-    }
-
-    [dir="ltr"] .layout--twocol-section--67-33 > .layout__region--second {
-      margin-left: calc(var(--grid-gap) * 0.3333);
+  .layout--twocol-section--33-67 > .layout__region--first {
+    flex-basis: calc(33.33% - (var(--grid-gap) * 0.3333));
+    margin-inline-end: calc(var(--grid-gap) * 0.3333);
   }
 
-    [dir="rtl"] .layout--twocol-section--67-33 > .layout__region--second {
-      margin-right: calc(var(--grid-gap) * 0.3333);
+  .layout--twocol-section--33-67 > .layout__region--second {
+    flex-basis: calc(66.66% - (var(--grid-gap) * 0.6666));
+    margin-inline-start: calc(var(--grid-gap) * 0.6666);
   }
-
-    .layout--twocol-section--67-33 > .layout__region--second {
-      flex-basis: calc(33.33% - (var(--grid-gap) * 0.3333));
-    }
-    [dir="ltr"] .layout--twocol-section--25-75 > .layout__region--first {
-      margin-right: calc(var(--grid-gap) * 0.25);
-  }
-    [dir="rtl"] .layout--twocol-section--25-75 > .layout__region--first {
-      margin-left: calc(var(--grid-gap) * 0.25);
+  .layout--twocol-section--67-33 > .layout__region--first {
+    flex-basis: calc(66.66% - (var(--grid-gap) * 0.6666));
+    margin-inline-end: calc(var(--grid-gap) * 0.6666);
   }
-    .layout--twocol-section--25-75 > .layout__region--first {
-      flex-basis: calc(25% - (var(--grid-gap) * 0.25));
-    }
 
-    [dir="ltr"] .layout--twocol-section--25-75 > .layout__region--second {
-      margin-left: calc(var(--grid-gap) * 0.75);
+  .layout--twocol-section--67-33 > .layout__region--second {
+    flex-basis: calc(33.33% - (var(--grid-gap) * 0.3333));
+    margin-inline-start: calc(var(--grid-gap) * 0.3333);
   }
-
-    [dir="rtl"] .layout--twocol-section--25-75 > .layout__region--second {
-      margin-right: calc(var(--grid-gap) * 0.75);
+  .layout--twocol-section--25-75 > .layout__region--first {
+    flex-basis: calc(25% - (var(--grid-gap) * 0.25));
+    margin-inline-end: calc(var(--grid-gap) * 0.25);
   }
 
-    .layout--twocol-section--25-75 > .layout__region--second {
-      flex-basis: calc(75% - (var(--grid-gap) * 0.75));
-    }
-    [dir="ltr"] .layout--twocol-section--75-25 > .layout__region--first {
-      margin-right: calc(var(--grid-gap) * 0.75);
+  .layout--twocol-section--25-75 > .layout__region--second {
+    flex-basis: calc(75% - (var(--grid-gap) * 0.75));
+    margin-inline-start: calc(var(--grid-gap) * 0.75);
   }
-    [dir="rtl"] .layout--twocol-section--75-25 > .layout__region--first {
-      margin-left: calc(var(--grid-gap) * 0.75);
+  .layout--twocol-section--75-25 > .layout__region--first {
+    flex-basis: calc(75% - (var(--grid-gap) * 0.75));
+    margin-inline-end: calc(var(--grid-gap) * 0.75);
   }
-    .layout--twocol-section--75-25 > .layout__region--first {
-      flex-basis: calc(75% - (var(--grid-gap) * 0.75));
-    }
 
-    [dir="ltr"] .layout--twocol-section--75-25 > .layout__region--second {
-      margin-left: calc(var(--grid-gap) * 0.25);
+  .layout--twocol-section--75-25 > .layout__region--second {
+    flex-basis: calc(25% - (var(--grid-gap) * 0.25));
+    margin-inline-start: calc(var(--grid-gap) * 0.25);
   }
-
-    [dir="rtl"] .layout--twocol-section--75-25 > .layout__region--second {
-      margin-right: calc(var(--grid-gap) * 0.25);
-  }
-
-    .layout--twocol-section--75-25 > .layout__region--second {
-      flex-basis: calc(25% - (var(--grid-gap) * 0.25));
-    }
 }
diff --git a/core/themes/olivero/css/layout/layout-content-medium.css b/core/themes/olivero/css/layout/layout-content-medium.css
index 346f75b8dc..8999b77cd0 100644
--- a/core/themes/olivero/css/layout/layout-content-medium.css
+++ b/core/themes/olivero/css/layout/layout-content-medium.css
@@ -31,19 +31,19 @@
 
 @media (min-width: 43.75rem) {
 
-.layout--content-medium,
-.layout--pass--content-medium > * {
+  .layout--content-medium,
+  .layout--pass--content-medium > * {
     grid-column: 2 / 14;
-}
   }
+}
 
 @media (min-width: 62.5rem) {
 
-.layout--content-medium,
-.layout--pass--content-medium > * {
+  .layout--content-medium,
+  .layout--pass--content-medium > * {
     grid-column: 3 / 13;
-}
   }
+}
 
 /*
   If .layout--content-medium is nested within itself, or an element that's inheriting the
@@ -53,20 +53,20 @@
 
 @media (min-width: 43.75rem) {
 
-.layout--pass--content-medium > * .layout--content-medium,
+  .layout--pass--content-medium > * .layout--content-medium,
   .layout--content-medium .layout--content-medium,
   .layout--pass--content-medium > * .layout--pass--content-medium > *,
   .layout--content-medium .layout--pass--content-medium > * {
-      grid-column: 1 / 13;
+    grid-column: 1 / 13;
   }
-    }
+}
 
 @media (min-width: 62.5rem) {
 
-.layout--pass--content-medium > * .layout--content-medium,
+  .layout--pass--content-medium > * .layout--content-medium,
   .layout--content-medium .layout--content-medium,
   .layout--pass--content-medium > * .layout--pass--content-medium > *,
   .layout--content-medium .layout--pass--content-medium > * {
-      grid-column: 1 / 11;
+    grid-column: 1 / 11;
   }
-    }
+}
diff --git a/core/themes/olivero/css/layout/layout-content-narrow.css b/core/themes/olivero/css/layout/layout-content-narrow.css
index 68f0dadeb3..a0d88c49b5 100644
--- a/core/themes/olivero/css/layout/layout-content-narrow.css
+++ b/core/themes/olivero/css/layout/layout-content-narrow.css
@@ -31,19 +31,19 @@
 
 @media (min-width: 43.75rem) {
 
-.layout--content-narrow,
-.layout--pass--content-narrow > * {
+  .layout--content-narrow,
+  .layout--pass--content-narrow > * {
     grid-column: 2 / 14;
-}
   }
+}
 
 @media (min-width: 62.5rem) {
 
-.layout--content-narrow,
-.layout--pass--content-narrow > * {
+  .layout--content-narrow,
+  .layout--pass--content-narrow > * {
     grid-column: 3 / 11;
-}
   }
+}
 
 /*
   If .layout--content-narrow is nested within any of the following, allocate the appropriate
@@ -56,7 +56,7 @@
 
 @media (min-width: 43.75rem) {
 
-.layout--content-narrow .layout--content-narrow,
+  .layout--content-narrow .layout--content-narrow,
   .layout--pass--content-narrow > * .layout--content-narrow,
   .layout--content-medium .layout--content-narrow,
   .layout--pass--content-medium > * .layout--content-narrow,
@@ -64,13 +64,13 @@
   .layout--pass--content-narrow > * .layout--pass--content-narrow > *,
   .layout--content-medium .layout--pass--content-narrow > *,
   .layout--pass--content-medium > * .layout--pass--content-narrow > * {
-      grid-column: 1 / 13;
+    grid-column: 1 / 13;
   }
-    }
+}
 
 @media (min-width: 62.5rem) {
 
-.layout--content-narrow .layout--content-narrow,
+  .layout--content-narrow .layout--content-narrow,
   .layout--pass--content-narrow > * .layout--content-narrow,
   .layout--content-medium .layout--content-narrow,
   .layout--pass--content-medium > * .layout--content-narrow,
@@ -78,9 +78,9 @@
   .layout--pass--content-narrow > * .layout--pass--content-narrow > *,
   .layout--content-medium .layout--pass--content-narrow > *,
   .layout--pass--content-medium > * .layout--pass--content-narrow > * {
-      grid-column: 1 / 9;
+    grid-column: 1 / 9;
   }
-    }
+}
 
 /*
   Special grid-breaking treatment for text-content elements that
@@ -89,78 +89,59 @@
 
 @media (min-width: 43.75rem) {
 
-[dir="ltr"] .layout--content-narrow.text-content blockquote:before,[dir="ltr"]  .layout--pass--content-narrow > *.text-content blockquote:before,[dir="ltr"]  .layout--content-narrow .text-content blockquote:before,[dir="ltr"]  .layout--pass--content-narrow > * .text-content blockquote:before {
-          left: calc(-1 * (var(--grid-col-width) + var(--grid-gap)));
-  }
-
-[dir="rtl"] .layout--content-narrow.text-content blockquote:before,[dir="rtl"]  .layout--pass--content-narrow > *.text-content blockquote:before,[dir="rtl"]  .layout--content-narrow .text-content blockquote:before,[dir="rtl"]  .layout--pass--content-narrow > * .text-content blockquote:before {
-          right: calc(-1 * (var(--grid-col-width) + var(--grid-gap)));
+  .layout--content-narrow.text-content blockquote:before,
+  .layout--pass--content-narrow > *.text-content blockquote:before,
+  .layout--content-narrow .text-content blockquote:before,
+  .layout--pass--content-narrow > * .text-content blockquote:before {
+    inset-inline-start: calc(-1 * (var(--grid-col-width) + var(--grid-gap)));
   }
-        }
+}
 
 @media (min-width: 43.75rem) {
 
-[dir="ltr"] .layout--content-narrow.text-content blockquote:after,[dir="ltr"]  .layout--pass--content-narrow > *.text-content blockquote:after,[dir="ltr"]  .layout--content-narrow .text-content blockquote:after,[dir="ltr"]  .layout--pass--content-narrow > * .text-content blockquote:after {
-          left: calc(-1 * (var(--grid-col-width) + var(--grid-gap)));
-  }
-
-[dir="rtl"] .layout--content-narrow.text-content blockquote:after,[dir="rtl"]  .layout--pass--content-narrow > *.text-content blockquote:after,[dir="rtl"]  .layout--content-narrow .text-content blockquote:after,[dir="rtl"]  .layout--pass--content-narrow > * .text-content blockquote:after {
-          right: calc(-1 * (var(--grid-col-width) + var(--grid-gap)));
-  }
-
-[dir="ltr"] .layout--content-narrow.text-content blockquote:after,[dir="ltr"]  .layout--pass--content-narrow > *.text-content blockquote:after,[dir="ltr"]  .layout--content-narrow .text-content blockquote:after,[dir="ltr"]  .layout--pass--content-narrow > * .text-content blockquote:after {
-          margin-left: 2px;
-  }
-
-[dir="rtl"] .layout--content-narrow.text-content blockquote:after,[dir="rtl"]  .layout--pass--content-narrow > *.text-content blockquote:after,[dir="rtl"]  .layout--content-narrow .text-content blockquote:after,[dir="rtl"]  .layout--pass--content-narrow > * .text-content blockquote:after {
-          margin-right: 2px;
+  .layout--content-narrow.text-content blockquote:after,
+  .layout--pass--content-narrow > *.text-content blockquote:after,
+  .layout--content-narrow .text-content blockquote:after,
+  .layout--pass--content-narrow > * .text-content blockquote:after {
+    inset-inline-start: calc(-1 * (var(--grid-col-width) + var(--grid-gap)));
+    width: var(--sp);
+    height: calc(100% - 2.8125rem);
+    margin-inline-start: 2px;
   }
-
-.layout--content-narrow.text-content blockquote:after, .layout--pass--content-narrow > *.text-content blockquote:after, .layout--content-narrow .text-content blockquote:after, .layout--pass--content-narrow > * .text-content blockquote:after {
-          width: var(--sp);
-          height: calc(100% - 2.8125rem);
-      }
-        }
+}
 
 @media (min-width: 43.75rem) {
 
-[dir="ltr"] .layout--content-narrow.text-content blockquote,[dir="ltr"]  .layout--pass--content-narrow > *.text-content blockquote,[dir="ltr"]  .layout--content-narrow .text-content blockquote,[dir="ltr"]  .layout--pass--content-narrow > * .text-content blockquote {
-        padding-left: 0;
-  }
-
-[dir="rtl"] .layout--content-narrow.text-content blockquote,[dir="rtl"]  .layout--pass--content-narrow > *.text-content blockquote,[dir="rtl"]  .layout--content-narrow .text-content blockquote,[dir="rtl"]  .layout--pass--content-narrow > * .text-content blockquote {
-        padding-right: 0;
+  .layout--content-narrow.text-content blockquote,
+  .layout--pass--content-narrow > *.text-content blockquote,
+  .layout--content-narrow .text-content blockquote,
+  .layout--pass--content-narrow > * .text-content blockquote {
+    width: calc(10 * var(--grid-col-width) + 9 * var(--grid-gap));
+    margin-block: var(--sp3);
+    padding-inline-start: 0;
   }
-
-.layout--content-narrow.text-content blockquote, .layout--pass--content-narrow > *.text-content blockquote, .layout--content-narrow .text-content blockquote, .layout--pass--content-narrow > * .text-content blockquote {
-        width: calc(10 * var(--grid-col-width) + 9 * var(--grid-gap));
-        margin-top: var(--sp3);
-        margin-bottom: var(--sp3);
-    }
-      }
+}
 
 @media (min-width: 43.75rem) {
 
-.layout--content-narrow.text-content pre, .layout--pass--content-narrow > *.text-content pre, .layout--content-narrow .text-content pre, .layout--pass--content-narrow > * .text-content pre {
-        margin-top: var(--sp3);
-        margin-bottom: var(--sp3);
-    }
-      }
+  .layout--content-narrow.text-content pre,
+  .layout--pass--content-narrow > *.text-content pre,
+  .layout--content-narrow .text-content pre,
+  .layout--pass--content-narrow > * .text-content pre {
+    margin-block: var(--sp3);
+  }
+}
 
 @media (min-width: 62.5rem) {
 
-[dir="ltr"] .layout--content-narrow.text-content pre,[dir="ltr"]  .layout--pass--content-narrow > *.text-content pre,[dir="ltr"]  .layout--content-narrow .text-content pre,[dir="ltr"]  .layout--pass--content-narrow > * .text-content pre {
-        margin-left: calc(-1 * (var(--grid-col-width) + var(--grid-gap)));
-  }
-
-[dir="rtl"] .layout--content-narrow.text-content pre,[dir="rtl"]  .layout--pass--content-narrow > *.text-content pre,[dir="rtl"]  .layout--content-narrow .text-content pre,[dir="rtl"]  .layout--pass--content-narrow > * .text-content pre {
-        margin-right: calc(-1 * (var(--grid-col-width) + var(--grid-gap)));
+  .layout--content-narrow.text-content pre,
+  .layout--pass--content-narrow > *.text-content pre,
+  .layout--content-narrow .text-content pre,
+  .layout--pass--content-narrow > * .text-content pre {
+    width: calc(12 * var(--grid-col-width) + 11 * var(--grid-gap));
+    margin-inline-start: calc(-1 * (var(--grid-col-width) + var(--grid-gap)));
   }
-
-.layout--content-narrow.text-content pre, .layout--pass--content-narrow > *.text-content pre, .layout--content-narrow .text-content pre, .layout--pass--content-narrow > * .text-content pre {
-        width: calc(12 * var(--grid-col-width) + 11 * var(--grid-gap));
-    }
-      }
+}
 
 /**
  * <pre> and <blockquote> elements should not break containers and overflow
@@ -168,12 +149,12 @@
  */
 
 .sidebar-grid .layout--content-narrow.text-content blockquote,
-      .sidebar-grid .layout--pass--content-narrow > *.text-content blockquote,
-      .sidebar-grid .layout--content-narrow .text-content blockquote,
-      .sidebar-grid .layout--pass--content-narrow > * .text-content blockquote,
-      .sidebar-grid .layout--content-narrow.text-content pre,
-      .sidebar-grid .layout--pass--content-narrow > *.text-content pre,
-      .sidebar-grid .layout--content-narrow .text-content pre,
-      .sidebar-grid .layout--pass--content-narrow > * .text-content pre {
-        width: auto;
-      }
+.sidebar-grid .layout--pass--content-narrow > *.text-content blockquote,
+.sidebar-grid .layout--content-narrow .text-content blockquote,
+.sidebar-grid .layout--pass--content-narrow > * .text-content blockquote,
+.sidebar-grid .layout--content-narrow.text-content pre,
+.sidebar-grid .layout--pass--content-narrow > *.text-content pre,
+.sidebar-grid .layout--content-narrow .text-content pre,
+.sidebar-grid .layout--pass--content-narrow > * .text-content pre {
+  width: auto;
+}
diff --git a/core/themes/olivero/css/layout/layout-discovery-section-layout.css b/core/themes/olivero/css/layout/layout-discovery-section-layout.css
index 43450fbfd4..08946c0130 100644
--- a/core/themes/olivero/css/layout/layout-discovery-section-layout.css
+++ b/core/themes/olivero/css/layout/layout-discovery-section-layout.css
@@ -24,19 +24,19 @@
 /* Width of the entire grid maxes out. */
 
 .layout {
-  margin-bottom: var(--sp);
+  margin-block-end: var(--sp);
 }
 
 @media (min-width: 43.75rem) {
 
-.layout {
-    margin-bottom: var(--sp2);
-}
+  .layout {
+    margin-block-end: var(--sp2);
   }
+}
 
 @media (min-width: 62.5rem) {
 
-.layout {
-    margin-bottom: var(--sp3);
-}
+  .layout {
+    margin-block-end: var(--sp3);
   }
+}
diff --git a/core/themes/olivero/css/layout/layout-footer.css b/core/themes/olivero/css/layout/layout-footer.css
index 4cc41086ad..1d3d9a03fe 100644
--- a/core/themes/olivero/css/layout/layout-footer.css
+++ b/core/themes/olivero/css/layout/layout-footer.css
@@ -34,43 +34,40 @@
 }
 
 .site-footer__inner {
-  padding-top: var(--sp2);
-  padding-bottom: var(--sp2);
+  padding-block: var(--sp2);
 }
 
 @media (min-width: 75rem) {
 
-.site-footer__inner {
-    padding-top: var(--sp4);
-    padding-bottom: calc(13 * var(--sp));
-}
+  .site-footer__inner {
+    padding-block: var(--sp4) calc(13 * var(--sp));
   }
+}
 
-.region--footer_top__inner > *, .region--footer_bottom__inner > * {
-    margin-bottom: var(--sp2);
-  }
+.region--footer_top__inner > *,
+.region--footer_bottom__inner > * {
+  margin-block-end: var(--sp2);
+}
 
 @media (min-width: 43.75rem) {
 
-.region--footer_top__inner > *, .region--footer_bottom__inner > * {
-      flex: 1;
-      margin-bottom: 0;
+  .region--footer_top__inner > *,
+  .region--footer_bottom__inner > * {
+    flex: 1;
+    margin-block-end: 0;
   }
 
-      [dir="ltr"] .region--footer_top__inner > *:not(:last-child),[dir="ltr"]  .region--footer_bottom__inner > *:not(:last-child) {
-        margin-right: var(--sp2);
+  .region--footer_top__inner > *:not(:last-child),
+  .region--footer_bottom__inner > *:not(:last-child) {
+    margin-inline-end: var(--sp2);
   }
-
-      [dir="rtl"] .region--footer_top__inner > *:not(:last-child),[dir="rtl"]  .region--footer_bottom__inner > *:not(:last-child) {
-        margin-left: var(--sp2);
-  }
-    }
+}
 
 @media (min-width: 43.75rem) {
 
-.region--footer_top__inner,
-.region--footer_bottom__inner {
+  .region--footer_top__inner,
+  .region--footer_bottom__inner {
     display: flex;
     flex-wrap: wrap;
-}
   }
+}
diff --git a/core/themes/olivero/css/layout/layout-sidebar.css b/core/themes/olivero/css/layout/layout-sidebar.css
index fbcd474aa9..ae39174256 100644
--- a/core/themes/olivero/css/layout/layout-sidebar.css
+++ b/core/themes/olivero/css/layout/layout-sidebar.css
@@ -24,56 +24,56 @@
 /* Width of the entire grid maxes out. */
 
 .sidebar-grid > .site-main {
-    grid-column: 1 / 7;
-    align-self: flex-start;
-    -ms-grid-row-align: start;
-  }
+  grid-column: 1 / 7;
+  align-self: flex-start;
+  -ms-grid-row-align: start;
+}
 
 @media (min-width: 43.75rem) {
 
-.sidebar-grid > .site-main {
-      grid-column: 1 / 15;
+  .sidebar-grid > .site-main {
+    grid-column: 1 / 15;
   }
-    }
+}
 
 @media (min-width: 62.5rem) {
 
-.sidebar-grid > .site-main {
-      display: grid;
-      grid-template-columns: repeat(8, minmax(0, 1fr));
-      grid-column: 3 / 11;
+  .sidebar-grid > .site-main {
+    display: grid;
+    grid-template-columns: repeat(8, minmax(0, 1fr));
+    grid-column: 3 / 11;
   }
 
-      .sidebar-grid > .site-main > .region--content-above,
-      .sidebar-grid > .site-main > .region--content {
-        grid-template-columns: repeat(8, minmax(0, 1fr));
-        grid-column: 1 / 9;
-      }
+  .sidebar-grid > .site-main > .region--content-above,
+  .sidebar-grid > .site-main > .region--content {
+    grid-template-columns: repeat(8, minmax(0, 1fr));
+    grid-column: 1 / 9;
+  }
 
-      .sidebar-grid > .site-main .layout--content-narrow,
-      .sidebar-grid > .site-main .layout--pass--content-narrow > *,
-      .sidebar-grid > .site-main .layout--content-medium,
-      .sidebar-grid > .site-main .layout--pass--content-medium > * {
-        grid-column: 1 / 9;
-      }
-    }
+  .sidebar-grid > .site-main .layout--content-narrow,
+  .sidebar-grid > .site-main .layout--pass--content-narrow > *,
+  .sidebar-grid > .site-main .layout--content-medium,
+  .sidebar-grid > .site-main .layout--pass--content-medium > * {
+    grid-column: 1 / 9;
+  }
+}
 
 .sidebar-grid .region--sidebar {
-    -ms-grid-row: 2;
-    grid-column: 1 / 7;
-  }
+  -ms-grid-row: 2;
+  grid-column: 1 / 7;
+}
 
 @media (min-width: 43.75rem) {
 
-.sidebar-grid .region--sidebar {
-      grid-column: 3 / 13;
+  .sidebar-grid .region--sidebar {
+    grid-column: 3 / 13;
   }
-    }
+}
 
 @media (min-width: 62.5rem) {
 
-.sidebar-grid .region--sidebar {
-      -ms-grid-row: 1;
-      grid-column: 12 / 15;
+  .sidebar-grid .region--sidebar {
+    -ms-grid-row: 1;
+    grid-column: 12 / 15;
   }
-    }
+}
diff --git a/core/themes/olivero/css/layout/layout-views-grid.css b/core/themes/olivero/css/layout/layout-views-grid.css
index a580524055..0c9a753fcc 100644
--- a/core/themes/olivero/css/layout/layout-views-grid.css
+++ b/core/themes/olivero/css/layout/layout-views-grid.css
@@ -47,14 +47,14 @@
 }
 
 .views-view-grid--vertical {
-  margin-bottom: calc(-1 * var(--views-grid--layout-gap)); /* Offset the bottom row's padding. */
+  margin-block-end: calc(-1 * var(--views-grid--layout-gap)); /* Offset the bottom row's padding. */
   column-width: var(--views-grid-item--min-width);
   column-count: var(--views-grid--column-count);
   column-gap: var(--views-grid--layout-gap);
 }
 
 .views-view-grid--vertical .views-view-grid__item > * {
-      padding-bottom: var(--views-grid--layout-gap);
-      page-break-inside: avoid;
-      break-inside: avoid;
-    }
+  padding-block-end: var(--views-grid--layout-gap);
+  page-break-inside: avoid;
+  break-inside: avoid;
+}
diff --git a/core/themes/olivero/css/layout/layout.css b/core/themes/olivero/css/layout/layout.css
index 58ce897d3f..ca782664e8 100644
--- a/core/themes/olivero/css/layout/layout.css
+++ b/core/themes/olivero/css/layout/layout.css
@@ -26,8 +26,7 @@
 .container {
   width: 100%;
   max-width: var(--max-width);
-  padding-left: var(--container-padding);
-  padding-right: var(--container-padding);
+  padding-inline: var(--container-padding);
 
   /* This fixes an issue where if the toolbar is open in vertical mode, and
    * the mobile navigation is open, the "close" button gets pushed outside of
@@ -35,7 +34,7 @@
 }
 
 body.is-fixed .container {
-    width: calc(100% - var(--drupal-displace-offset-left, 0px) - var(--drupal-displace-offset-right, 0px));
+  width: calc(100% - var(--drupal-displace-offset-left, 0px) - var(--drupal-displace-offset-right, 0px));
 }
 
 .page-wrapper {
@@ -57,35 +56,28 @@ body.is-fixed .container {
 
 @media (min-width: 75rem) {
 
-.layout-main {
+  .layout-main {
     display: flex;
     flex-direction: row-reverse;
     flex-wrap: wrap;
-}
   }
+}
 
 @media (min-width: 75rem) {
 
-[dir="ltr"] .main-content {
-    margin-right: auto;
-  }
-
-[dir="rtl"] .main-content {
-    margin-left: auto;
-  }
-
-.main-content {
+  .main-content {
     width: calc(100% - var(--content-left));
-}
+    margin-inline-end: auto;
   }
+}
 
 .main-content__container {
-  padding-top: var(--sp3);
+  padding-block-start: var(--sp3);
 }
 
 @media (min-width: 43.75rem) {
 
-.main-content__container {
-    padding-top: var(--sp5);
-}
+  .main-content__container {
+    padding-block-start: var(--sp5);
   }
+}
diff --git a/core/themes/olivero/css/layout/region-content-below.css b/core/themes/olivero/css/layout/region-content-below.css
index 67dfb3e378..3d8ca118f8 100644
--- a/core/themes/olivero/css/layout/region-content-below.css
+++ b/core/themes/olivero/css/layout/region-content-below.css
@@ -25,58 +25,36 @@
 
 @media (min-width: 43.75rem) {
 
-.region--content-below {
+  .region--content-below {
     display: flex;
     flex-wrap: wrap;
-}
-
-    [dir="ltr"] .region--content-below > * {
-      margin-right: var(--grid-gap);
-}
-
-    [dir="rtl"] .region--content-below > * {
-      margin-left: var(--grid-gap);
-}
-
-    .region--content-below > * {
-      flex-basis: calc(50% - (var(--grid-gap) / 2));
-      flex-grow: 1;
-      flex-shrink: 0;
-    }
-
-      [dir="ltr"] .region--content-below > *:nth-child(2n),[dir="ltr"] 
-      .region--content-below > *:last-child {
-        margin-right: 0;
-}
-
-      [dir="rtl"] .region--content-below > *:nth-child(2n),[dir="rtl"] 
-      .region--content-below > *:last-child {
-        margin-left: 0;
-}
   }
 
-@media (min-width: 43.75rem) {
-    .region--content-below > * {
-      flex-basis: calc(33.33% - (var(--grid-gap) * 0.667));
-    }
+  .region--content-below > * {
+    flex-basis: calc(50% - (var(--grid-gap) / 2));
+    flex-grow: 1;
+    flex-shrink: 0;
+    margin-inline-end: var(--grid-gap);
+  }
 
-      [dir="ltr"] .region--content-below > *:nth-child(2n),[dir="ltr"] 
-      .region--content-below > *:last-child {
-        margin-right: var(--grid-gap);
+  .region--content-below > *:nth-child(2n),
+  .region--content-below > *:last-child {
+    margin-inline-end: 0;
+  }
 }
 
-      [dir="rtl"] .region--content-below > *:nth-child(2n),[dir="rtl"] 
-      .region--content-below > *:last-child {
-        margin-left: var(--grid-gap);
-}
+@media (min-width: 43.75rem) {
+  .region--content-below > * {
+    flex-basis: calc(33.33% - (var(--grid-gap) * 0.667));
+  }
 
-      [dir="ltr"] .region--content-below > *:nth-child(3n),[dir="ltr"] 
-      .region--content-below > *:last-child {
-        margin-right: 0;
-}
+  .region--content-below > *:nth-child(2n),
+  .region--content-below > *:last-child {
+    margin-inline-end: var(--grid-gap);
+  }
 
-      [dir="rtl"] .region--content-below > *:nth-child(3n),[dir="rtl"] 
-      .region--content-below > *:last-child {
-        margin-left: 0;
-}
+  .region--content-below > *:nth-child(3n),
+  .region--content-below > *:last-child {
+    margin-inline-end: 0;
   }
+}
diff --git a/core/themes/olivero/css/layout/region-content.css b/core/themes/olivero/css/layout/region-content.css
index 6765571f63..6944de2057 100644
--- a/core/themes/olivero/css/layout/region-content.css
+++ b/core/themes/olivero/css/layout/region-content.css
@@ -24,19 +24,19 @@
 /* Width of the entire grid maxes out. */
 
 .region--content {
-  margin-bottom: var(--sp);
+  margin-block-end: var(--sp);
 }
 
 @media (min-width: 43.75rem) {
 
-.region--content {
-    margin-bottom: var(--sp2);
-}
+  .region--content {
+    margin-block-end: var(--sp2);
   }
+}
 
 @media (min-width: 62.5rem) {
 
-.region--content {
-    margin-bottom: var(--sp3);
-}
+  .region--content {
+    margin-block-end: var(--sp3);
   }
+}
diff --git a/core/themes/olivero/css/layout/region-hero.css b/core/themes/olivero/css/layout/region-hero.css
index 86b1c6866d..64c731f43c 100644
--- a/core/themes/olivero/css/layout/region-hero.css
+++ b/core/themes/olivero/css/layout/region-hero.css
@@ -24,5 +24,5 @@
 /* Width of the entire grid maxes out. */
 
 .region--hero > *:last-child {
-    margin-bottom: 0;
-  }
+  margin-block-end: 0;
+}
diff --git a/core/themes/olivero/css/layout/region-secondary-menu.css b/core/themes/olivero/css/layout/region-secondary-menu.css
index 1a89f5a8d3..ec18a6abae 100644
--- a/core/themes/olivero/css/layout/region-secondary-menu.css
+++ b/core/themes/olivero/css/layout/region-secondary-menu.css
@@ -25,22 +25,22 @@
 
 .region--secondary-menu {
   display: flex;
-  margin-top: var(--sp2);
-  margin-bottom: var(--sp2);
+  margin-block-start: var(--sp2);
+  margin-block-end: var(--sp2);
 }
 
 .region--secondary-menu > * {
-    margin-bottom: 0;
-  }
+  margin-block-end: 0;
+}
 
 @media (min-width: 75rem) {
-    body:not(.is-always-mobile-nav) .region--secondary-menu {
-      justify-content: flex-end;
-      margin: 0;
-
-      /* If the secondary nav is the first item within the header, it does not need left separator. */
-    }
-      body:not(.is-always-mobile-nav) .region--secondary-menu:first-child .secondary-nav:before {
-        content: none;
-      }
+  body:not(.is-always-mobile-nav) .region--secondary-menu {
+    justify-content: flex-end;
+    margin: 0;
+
+    /* If the secondary nav is the first item within the header, it does not need left separator. */
   }
+  body:not(.is-always-mobile-nav) .region--secondary-menu:first-child .secondary-nav:before {
+    content: none;
+  }
+}
diff --git a/core/themes/olivero/css/layout/region.css b/core/themes/olivero/css/layout/region.css
index 55138d93f1..0352e1445b 100644
--- a/core/themes/olivero/css/layout/region.css
+++ b/core/themes/olivero/css/layout/region.css
@@ -24,19 +24,19 @@
 /* Width of the entire grid maxes out. */
 
 .region > * {
-  margin-bottom: var(--sp);
+  margin-block-end: var(--sp);
 }
 
 @media (min-width: 43.75rem) {
 
-.region > * {
-    margin-bottom: var(--sp2);
-}
+  .region > * {
+    margin-block-end: var(--sp2);
   }
+}
 
 @media (min-width: 62.5rem) {
 
-.region > * {
-    margin-bottom: var(--sp3);
-}
+  .region > * {
+    margin-block-end: var(--sp3);
   }
+}
diff --git a/core/themes/olivero/css/layout/social-bar.css b/core/themes/olivero/css/layout/social-bar.css
index 71687b4ec7..9952407260 100644
--- a/core/themes/olivero/css/layout/social-bar.css
+++ b/core/themes/olivero/css/layout/social-bar.css
@@ -26,157 +26,108 @@
 
 @media (min-width: 75rem) {
 
-.social-bar {
+  .social-bar {
     flex-shrink: 0;
     width: var(--content-left);
     background-color: var(--color--gray-100);
-}
   }
-
-[dir="ltr"] .social-bar__inner {
-  padding-left: var(--sp);
-}
-
-[dir="rtl"] .social-bar__inner {
-  padding-right: var(--sp);
-}
-
-[dir="ltr"] .social-bar__inner {
-  padding-right: var(--sp);
-}
-
-[dir="rtl"] .social-bar__inner {
-  padding-left: var(--sp);
 }
 
 .social-bar__inner {
   position: relative;
-  padding-top: var(--sp0-5);
-  padding-bottom: var(--sp0-5);
+  padding-block: var(--sp0-5);
+  padding-inline-start: var(--sp);
+  padding-inline-end: var(--sp);
 }
 
 @media (min-width: 75rem) {
 
-[dir="ltr"] .social-bar__inner {
-    padding-left: 0;
-}
-
-[dir="rtl"] .social-bar__inner {
-    padding-right: 0;
-}
-
-[dir="ltr"] .social-bar__inner {
-    padding-right: 0;
-}
-
-[dir="rtl"] .social-bar__inner {
-    padding-left: 0;
-}
-
-.social-bar__inner {
+  .social-bar__inner {
     position: relative;
     width: var(--content-left);
-    padding-top: calc(5 * var(--sp));
-    padding-bottom: calc(5 * var(--sp));
-}
-
-    [dir="ltr"] .social-bar__inner.is-fixed {
-      left: 0;
-}
-
-    [dir="rtl"] .social-bar__inner.is-fixed {
-      right: 0;
-}
+    padding-block: calc(5 * var(--sp));
+    padding-inline-start: 0;
+    padding-inline-end: 0;
+  }
 
-    .social-bar__inner.is-fixed {
-      position: fixed;
-      top: var(--sp6);
-      height: calc(100vh - 6 * var(--sp));
-    }
+  .social-bar__inner.is-fixed {
+    position: fixed;
+    inset-block-start: var(--sp6);
+    inset-inline-start: 0;
+    height: calc(100vh - 6 * var(--sp));
   }
+}
 
 .rotate > * {
-    margin-bottom: var(--sp2);
-  }
+  margin-block-end: var(--sp2);
+}
 
 @media (min-width: 75rem) {
 
-.rotate > * {
-      display: flex;
-      align-items: center;
-      margin-bottom: 0;
+  .rotate > * {
+    display: flex;
+    align-items: center;
+    margin-block-end: 0;
   }
 
-      [dir="ltr"] .rotate > *:not(:first-child) {
-        margin-right: var(--sp2);
-}
-
-      [dir="rtl"] .rotate > *:not(:first-child) {
-        margin-left: var(--sp2);
+  .rotate > *:not(:first-child) {
+    margin-inline-end: var(--sp2);
+  }
 }
-    }
 
 @media (min-width: 75rem) {
 
-[dir="ltr"] .rotate .contextual {
-      left: 100%;
-      right: auto;
-}
-
-[dir="rtl"] .rotate .contextual {
-      right: 100%;
-      left: auto;
-}
-
-.rotate .contextual {
-      transform: rotate(90deg); /* LTR */
-      transform-origin: top left; /* LTR */
+  .rotate .contextual {
+    inset-inline: 100% auto;
+    transform: rotate(90deg); /* LTR */
+    transform-origin: top left; /* LTR */
   }
 
-      [dir="ltr"] .rotate .contextual .trigger {
-        float: left;
-}
-
-      [dir="rtl"] .rotate .contextual .trigger {
-        float: right;
+  .rotate .contextual .trigger {
+    float: left; /* LTR */
+
+    /**
+         * Chromium and Webkit do not yet support flow relative logical properties,
+         * such as float: inline-end. However, PostCSS Logical does not compile this
+         * value, so we accommodate by not using these.
+         *
+         * @see https://caniuse.com/mdn-css_properties_clear_flow_relative_values
+         * @see https://github.com/csstools/postcss-plugins/issues/632
+         */
+  }
+  [dir="rtl"] .rotate .contextual .trigger {
+    float: right;
+  }
 }
-    }
 
 @media (min-width: 75rem) {
 
-[dir="ltr"] .rotate {
-    left: 50%;
-}
-
-[dir="rtl"] .rotate {
-    right: 50%;
-}
-
-.rotate {
+  .rotate {
     position: absolute;
+    inset-inline-start: 50%;
     display: flex;
     flex-direction: row-reverse;
     width: 100vh;
     transform: rotate(-90deg) translateX(-100%); /* LTR */
     transform-origin: left; /* LTR */
-}
+  }
 
-    @supports (width: max-content) {
+  @supports (width: max-content) {
 
-.rotate {
+    .rotate {
       width: max-content;
-}
     }
   }
+}
 
 @media (min-width: 75rem) {
-    [dir="rtl"] .rotate {
-      transform: rotate(90deg) translateX(100%);
-      transform-origin: right;
-    }
+  [dir="rtl"] .rotate {
+    transform: rotate(90deg) translateX(100%);
+    transform-origin: right;
+  }
 
-      [dir="rtl"] .rotate .contextual {
-        transform: rotate(-90deg);
-        transform-origin: top right;
-      }
+  [dir="rtl"] .rotate .contextual {
+    transform: rotate(-90deg);
+    transform-origin: top right;
   }
+}
diff --git a/core/themes/olivero/css/layout/social-bar.pcss.css b/core/themes/olivero/css/layout/social-bar.pcss.css
index 2372e72bc1..4116e35600 100644
--- a/core/themes/olivero/css/layout/social-bar.pcss.css
+++ b/core/themes/olivero/css/layout/social-bar.pcss.css
@@ -58,7 +58,19 @@
       transform-origin: top left; /* LTR */
 
       & .trigger {
-        float: inline-start;
+        float: left; /* LTR */
+
+        /**
+         * Chromium and Webkit do not yet support flow relative logical properties,
+         * such as float: inline-end. However, PostCSS Logical does not compile this
+         * value, so we accommodate by not using these.
+         *
+         * @see https://caniuse.com/mdn-css_properties_clear_flow_relative_values
+         * @see https://github.com/csstools/postcss-plugins/issues/632
+         */
+        &:dir(rtl) {
+          float: right;
+        }
       }
     }
   }
diff --git a/core/themes/olivero/css/layout/views.css b/core/themes/olivero/css/layout/views.css
index 135d635753..b89d808e21 100644
--- a/core/themes/olivero/css/layout/views.css
+++ b/core/themes/olivero/css/layout/views.css
@@ -24,16 +24,16 @@
 /* Width of the entire grid maxes out. */
 
 .view > * {
-    margin-bottom: var(--sp2);
-  }
+  margin-block-end: var(--sp2);
+}
 
 .view > *:last-child {
-      margin-bottom: 0;
-    }
+  margin-block-end: 0;
+}
 
 @media (min-width: 43.75rem) {
 
-.view > * {
-      margin-bottom: var(--sp3);
+  .view > * {
+    margin-block-end: var(--sp3);
   }
-    }
+}
diff --git a/core/themes/olivero/css/theme/filter.theme.css b/core/themes/olivero/css/theme/filter.theme.css
index c7987c7756..8d66520993 100644
--- a/core/themes/olivero/css/theme/filter.theme.css
+++ b/core/themes/olivero/css/theme/filter.theme.css
@@ -28,7 +28,7 @@
  */
 
 .text-full > .form-item {
-  margin-bottom: 0;
+  margin-block-end: 0;
 }
 
 .form-element--editor-format {
@@ -36,28 +36,32 @@
 }
 
 .filter-wrapper {
-  margin-top: var(--sp1);
-  margin-bottom: var(--sp0-5);
+  margin-block: var(--sp1) var(--sp0-5);
 }
 
 .filter-wrapper .form-item {
   margin: 0;
 }
 
-[dir="ltr"] .filter-help {
-  float: right;
+.filter-help {
+  float: right; /* LTR */
+  padding-block: var(--sp0-5);
+  font-size: var(--font-size-xxs);
+
+  /**
+   * Chromium and Webkit do not yet support flow relative logical properties,
+   * such as float: inline-end. However, PostCSS Logical does not compile this
+   * value, so we accommodate by not using these.
+   *
+   * @see https://caniuse.com/mdn-css_properties_clear_flow_relative_values
+   * @see https://github.com/csstools/postcss-plugins/issues/632
+   */
 }
 
 [dir="rtl"] .filter-help {
   float: left;
 }
 
-.filter-help {
-  padding-top: var(--sp0-5);
-  padding-bottom: var(--sp0-5);
-  font-size: var(--font-size-xxs);
-}
-
 /**
  * Compose tips.
  *
@@ -65,8 +69,7 @@
  */
 
 .compose-tips__item {
-  margin-top: var(--sp1-5);
-  margin-bottom: var(--sp1-5);
+  margin-block: var(--sp1-5);
 }
 
 /**
@@ -74,14 +77,13 @@
  */
 
 .filter-guidelines__item {
-  margin-top: var(--sp1);
+  margin-block-start: var(--sp1);
   font-size: var(--font-size-s);
   line-height: var(--line-height-s);
 }
 
 .filter-guidelines p {
-  margin-top: var(--sp0-25);
-  margin-bottom: 0;
+  margin-block: var(--sp0-25) 0;
 }
 
 /**
@@ -92,16 +94,14 @@
  */
 
 .filter-tips--long {
-  margin-bottom: var(--sp1-5);
+  margin-block-end: var(--sp1-5);
 }
 
 .filter-tips__item,
 .filter-tips--long p {
-  margin-top: var(--sp0-75);
-  margin-bottom: var(--sp0-75);
+  margin-block: var(--sp0-75);
 }
 
 .filter-tips__item--short {
-  margin-top: var(--sp0-25);
-  margin-bottom: 0;
+  margin-block: var(--sp0-25) 0;
 }
diff --git a/core/themes/olivero/css/theme/filter.theme.pcss.css b/core/themes/olivero/css/theme/filter.theme.pcss.css
index 3bc0aa2dfd..29ea34cf40 100644
--- a/core/themes/olivero/css/theme/filter.theme.pcss.css
+++ b/core/themes/olivero/css/theme/filter.theme.pcss.css
@@ -24,9 +24,21 @@
 }
 
 .filter-help {
-  float: inline-end;
+  float: right; /* LTR */
   padding-block: var(--sp0-5);
   font-size: var(--font-size-xxs);
+
+  /**
+   * Chromium and Webkit do not yet support flow relative logical properties,
+   * such as float: inline-end. However, PostCSS Logical does not compile this
+   * value, so we accommodate by not using these.
+   *
+   * @see https://caniuse.com/mdn-css_properties_clear_flow_relative_values
+   * @see https://github.com/csstools/postcss-plugins/issues/632
+   */
+  &:dir(rtl) {
+    float: left;
+  }
 }
 
 /**
diff --git a/core/themes/olivero/js/navigation-utils.js b/core/themes/olivero/js/navigation-utils.js
index 4530c9a03b..c3ce385f8d 100644
--- a/core/themes/olivero/js/navigation-utils.js
+++ b/core/themes/olivero/js/navigation-utils.js
@@ -79,12 +79,7 @@
    */
   function toggleStickyHeaderState(pinnedState) {
     if (isDesktopNav()) {
-      if (pinnedState === true) {
-        siteHeaderFixable.classList.add('is-expanded');
-      } else {
-        siteHeaderFixable.classList.remove('is-expanded');
-      }
-
+      siteHeaderFixable.classList.toggle('is-expanded', pinnedState);
       stickyHeaderToggleButton.setAttribute('aria-checked', pinnedState);
       setStickyHeaderStorage(pinnedState);
     }
@@ -133,11 +128,9 @@
       entries.forEach((entry) => {
         // Firefox doesn't seem to support entry.isIntersecting properly,
         // so we check the intersectionRatio.
-        if (entry.intersectionRatio < 1) {
-          fixableElements.forEach((el) => el.classList.add('is-fixed'));
-        } else {
-          fixableElements.forEach((el) => el.classList.remove('is-fixed'));
-        }
+        fixableElements.forEach((el) =>
+          el.classList.toggle('is-fixed', entry.intersectionRatio < 1),
+        );
       });
     }
 
diff --git a/core/themes/olivero/js/navigation.js b/core/themes/olivero/js/navigation.js
index f24e6c901f..641f8c28e7 100644
--- a/core/themes/olivero/js/navigation.js
+++ b/core/themes/olivero/js/navigation.js
@@ -28,16 +28,9 @@
   function toggleNav(props, state) {
     const value = !!state;
     props.navButton.setAttribute('aria-expanded', value);
-
-    if (value) {
-      props.body.classList.add('is-overlay-active');
-      props.body.classList.add('is-fixed');
-      props.navWrapper.classList.add('is-active');
-    } else {
-      props.body.classList.remove('is-overlay-active');
-      props.body.classList.remove('is-fixed');
-      props.navWrapper.classList.remove('is-active');
-    }
+    props.body.classList.toggle('is-overlay-active', value);
+    props.body.classList.toggle('is-fixed', value);
+    props.navWrapper.classList.toggle('is-active', value);
   }
 
   /**
diff --git a/core/themes/olivero/js/search.js b/core/themes/olivero/js/search.js
index 7626fd07f1..4c4ead979f 100644
--- a/core/themes/olivero/js/search.js
+++ b/core/themes/olivero/js/search.js
@@ -99,13 +99,13 @@
    */
   function toggleSearchVisibility(visibility) {
     searchWideButton.setAttribute('aria-expanded', visibility === true);
+    searchWideWrapper.classList.toggle('is-active', visibility === true);
     searchWideWrapper.addEventListener('transitionend', handleFocus, {
       once: true,
     });
 
     if (visibility === true) {
       Drupal.olivero.closeAllSubNav();
-      searchWideWrapper.classList.add('is-active');
 
       document.addEventListener('click', watchForClickOut, { capture: true });
       document.addEventListener('focusout', watchForFocusOut, {
@@ -113,8 +113,6 @@
       });
       document.addEventListener('keyup', watchForEscapeOut, { capture: true });
     } else {
-      searchWideWrapper.classList.remove('is-active');
-
       document.removeEventListener('click', watchForClickOut, {
         capture: true,
       });
diff --git a/core/themes/olivero/js/second-level-navigation.js b/core/themes/olivero/js/second-level-navigation.js
index f8f9a98c5c..76a35ec4ee 100644
--- a/core/themes/olivero/js/second-level-navigation.js
+++ b/core/themes/olivero/js/second-level-navigation.js
@@ -42,23 +42,17 @@
           ).classList.remove('is-active-menu-parent');
         });
       }
-      button.setAttribute('aria-expanded', 'true');
-      topLevelMenuItem
-        .querySelector('[data-drupal-selector="primary-nav-menu--level-2"]')
-        .classList.add('is-active-menu-parent');
-      topLevelMenuItem
-        .querySelector('[data-drupal-selector="primary-nav-menu-🥕"]')
-        .classList.add('is-active-menu-parent');
     } else {
-      button.setAttribute('aria-expanded', 'false');
       topLevelMenuItem.classList.remove('is-touch-event');
-      topLevelMenuItem
-        .querySelector('[data-drupal-selector="primary-nav-menu--level-2"]')
-        .classList.remove('is-active-menu-parent');
-      topLevelMenuItem
-        .querySelector('[data-drupal-selector="primary-nav-menu-🥕"]')
-        .classList.remove('is-active-menu-parent');
     }
+
+    button.setAttribute('aria-expanded', state);
+    topLevelMenuItem
+      .querySelector('[data-drupal-selector="primary-nav-menu--level-2"]')
+      .classList.toggle('is-active-menu-parent', state);
+    topLevelMenuItem
+      .querySelector('[data-drupal-selector="primary-nav-menu-🥕"]')
+      .classList.toggle('is-active-menu-parent', state);
   }
 
   Drupal.olivero.toggleSubNav = toggleSubNav;
diff --git a/core/themes/olivero/js/tabs.js b/core/themes/olivero/js/tabs.js
index c5d3e0d528..ecc3165385 100644
--- a/core/themes/olivero/js/tabs.js
+++ b/core/themes/olivero/js/tabs.js
@@ -32,13 +32,11 @@
      *   The event object.
      */
     function handleTriggerClick(e) {
-      if (!tabs.classList.contains(expandedClass)) {
-        e.currentTarget.setAttribute('aria-expanded', 'true');
-        tabs.classList.add(expandedClass);
-      } else {
-        e.currentTarget.setAttribute('aria-expanded', 'false');
-        tabs.classList.remove(expandedClass);
-      }
+      e.currentTarget.setAttribute(
+        'aria-expanded',
+        !tabs.classList.contains(expandedClass),
+      );
+      tabs.classList.toggle(expandedClass);
     }
 
     if (isTabsMobileLayout() && !activeTab.matches('.tabs__tab:first-child')) {
diff --git a/core/themes/olivero/templates/block/block--page-title-block.html.twig b/core/themes/olivero/templates/block/block--page-title-block.html.twig
index 6436170168..1cf7bcb0e9 100644
--- a/core/themes/olivero/templates/block/block--page-title-block.html.twig
+++ b/core/themes/olivero/templates/block/block--page-title-block.html.twig
@@ -12,6 +12,7 @@
  *   - label_display: The display settings for the label.
  *   - provider: The module or other provider that provided this block plugin.
  *   - Block plugin specific settings will also be stored here.
+ * - in_preview: Whether the plugin is being rendered in preview mode.
  * - content: The content of this block.
  * - attributes: array of HTML attributes populated by modules, intended to
  *   be added to the main container tag of this template.
diff --git a/core/themes/olivero/templates/block/block--primary-menu--plugin-id--search-form-block.html.twig b/core/themes/olivero/templates/block/block--primary-menu--plugin-id--search-form-block.html.twig
index f6bb1414d7..529b857ec9 100644
--- a/core/themes/olivero/templates/block/block--primary-menu--plugin-id--search-form-block.html.twig
+++ b/core/themes/olivero/templates/block/block--primary-menu--plugin-id--search-form-block.html.twig
@@ -11,6 +11,7 @@
  *   - label_display: The display settings for the label.
  *   - provider: The module or other provider that provided this block plugin.
  *   - Block plugin specific settings will also be stored here.
+ * - in_preview: Whether the plugin is being rendered in preview mode.
  * - content: The content of this block.
  * - content_attributes: A list of HTML attributes applied to the main content
  * - attributes: A list HTML attributes populated by modules, intended to
diff --git a/core/themes/olivero/templates/block/block--secondary-menu.html.twig b/core/themes/olivero/templates/block/block--secondary-menu.html.twig
index 6c6c77a9b0..3c03dace1b 100644
--- a/core/themes/olivero/templates/block/block--secondary-menu.html.twig
+++ b/core/themes/olivero/templates/block/block--secondary-menu.html.twig
@@ -11,6 +11,7 @@
  *   - label_display: The display settings for the label.
  *   - provider: The module or other provider that provided this block plugin.
  *   - Block plugin specific settings will also be stored here.
+ * - in_preview: Whether the plugin is being rendered in preview mode.
  * - content: The content of this block.
  * - attributes: HTML attributes for the containing element.
  *   - id: A valid HTML ID and guaranteed unique.
diff --git a/core/themes/olivero/templates/block/block--system-menu-block.html.twig b/core/themes/olivero/templates/block/block--system-menu-block.html.twig
index 1b56b155d0..9e9c25df6a 100644
--- a/core/themes/olivero/templates/block/block--system-menu-block.html.twig
+++ b/core/themes/olivero/templates/block/block--system-menu-block.html.twig
@@ -11,6 +11,7 @@
  *   - label_display: The display settings for the label.
  *   - provider: The module or other provider that provided this block plugin.
  *   - Block plugin specific settings will also be stored here.
+ * - in_preview: Whether the plugin is being rendered in preview mode.
  * - content: The content of this block.
  * - attributes: HTML attributes for the containing element.
  *   - id: A valid HTML ID and guaranteed unique.
diff --git a/core/themes/olivero/templates/block/block.html.twig b/core/themes/olivero/templates/block/block.html.twig
index 647fb4e1f7..6681e1ea85 100644
--- a/core/themes/olivero/templates/block/block.html.twig
+++ b/core/themes/olivero/templates/block/block.html.twig
@@ -12,6 +12,7 @@
  *   - label_display: The display settings for the label.
  *   - provider: The module or other provider that provided this block plugin.
  *   - Block plugin specific settings will also be stored here.
+ * - in_preview: Whether the plugin is being rendered in preview mode.
  * - content: The content of this block.
  * - attributes: array of HTML attributes populated by modules, intended to
  *   be added to the main container tag of this template.
diff --git a/core/themes/stable9/css/toolbar/toolbar.theme.css b/core/themes/stable9/css/toolbar/toolbar.theme.css
index 0416c056ad..bdc6c3f183 100644
--- a/core/themes/stable9/css/toolbar/toolbar.theme.css
+++ b/core/themes/stable9/css/toolbar/toolbar.theme.css
@@ -85,7 +85,8 @@
 .toolbar .toolbar-tray-horizontal .toolbar-tray {
   background-color: #f5f5f5;
 }
-.toolbar-tray a {
+.toolbar-tray a,
+.toolbar-tray a:visited {
   padding: 1em 1.3333em;
   cursor: pointer;
   text-decoration: none;
diff --git a/core/themes/stable9/layouts/layout_builder/fourcol_section/layout--fourcol-section.html.twig b/core/themes/stable9/layouts/layout_builder/fourcol_section/layout--fourcol-section.html.twig
index e610278c45..0dd0820a7d 100644
--- a/core/themes/stable9/layouts/layout_builder/fourcol_section/layout--fourcol-section.html.twig
+++ b/core/themes/stable9/layouts/layout_builder/fourcol_section/layout--fourcol-section.html.twig
@@ -4,6 +4,7 @@
  * Theme override for a four-column 25%-25%-25%-25% layout.
  *
  * Available variables:
+ * - in_preview: Whether the plugin is being rendered in preview mode.
  * - content: The content for this layout.
  * - attributes: HTML attributes for the layout <div>.
  */
diff --git a/core/themes/stable9/layouts/layout_builder/threecol_section/layout--threecol-section.html.twig b/core/themes/stable9/layouts/layout_builder/threecol_section/layout--threecol-section.html.twig
index 123acfec3e..a85b90c127 100644
--- a/core/themes/stable9/layouts/layout_builder/threecol_section/layout--threecol-section.html.twig
+++ b/core/themes/stable9/layouts/layout_builder/threecol_section/layout--threecol-section.html.twig
@@ -4,6 +4,7 @@
  * Theme override for a three-column layout.
  *
  * Available variables:
+ * - in_preview: Whether the plugin is being rendered in preview mode.
  * - content: The content for this layout.
  * - attributes: HTML attributes for the layout <div>.
  */
diff --git a/core/themes/stable9/layouts/layout_builder/twocol_section/layout--twocol-section.html.twig b/core/themes/stable9/layouts/layout_builder/twocol_section/layout--twocol-section.html.twig
index d047debe53..dc9ee5ccdc 100644
--- a/core/themes/stable9/layouts/layout_builder/twocol_section/layout--twocol-section.html.twig
+++ b/core/themes/stable9/layouts/layout_builder/twocol_section/layout--twocol-section.html.twig
@@ -4,6 +4,7 @@
  * Theme override to display a two-column layout.
  *
  * Available variables:
+ * - in_preview: Whether the plugin is being rendered in preview mode.
  * - content: The content for this layout.
  * - attributes: HTML attributes for the layout <div>.
  */
diff --git a/core/themes/stable9/layouts/layout_discovery/onecol/layout--onecol.html.twig b/core/themes/stable9/layouts/layout_discovery/onecol/layout--onecol.html.twig
index 7fe5b121ca..f3bda9290c 100644
--- a/core/themes/stable9/layouts/layout_discovery/onecol/layout--onecol.html.twig
+++ b/core/themes/stable9/layouts/layout_discovery/onecol/layout--onecol.html.twig
@@ -4,6 +4,7 @@
  * Theme override to display a one-column layout.
  *
  * Available variables:
+ * - in_preview: Whether the plugin is being rendered in preview mode.
  * - content: The content for this layout.
  * - attributes: HTML attributes for the layout <div>.
  */
diff --git a/core/themes/stable9/layouts/layout_discovery/threecol_25_50_25/layout--threecol-25-50-25.html.twig b/core/themes/stable9/layouts/layout_discovery/threecol_25_50_25/layout--threecol-25-50-25.html.twig
index 715470bd06..6829a6e6fe 100644
--- a/core/themes/stable9/layouts/layout_discovery/threecol_25_50_25/layout--threecol-25-50-25.html.twig
+++ b/core/themes/stable9/layouts/layout_discovery/threecol_25_50_25/layout--threecol-25-50-25.html.twig
@@ -7,6 +7,7 @@
  * additional areas for the top and the bottom.
  *
  * Available variables:
+ * - in_preview: Whether the plugin is being rendered in preview mode.
  * - content: The content for this layout.
  * - attributes: HTML attributes for the layout <div>.
  */
diff --git a/core/themes/stable9/layouts/layout_discovery/threecol_33_34_33/layout--threecol-33-34-33.html.twig b/core/themes/stable9/layouts/layout_discovery/threecol_33_34_33/layout--threecol-33-34-33.html.twig
index f0a541d495..43bfe20157 100644
--- a/core/themes/stable9/layouts/layout_discovery/threecol_33_34_33/layout--threecol-33-34-33.html.twig
+++ b/core/themes/stable9/layouts/layout_discovery/threecol_33_34_33/layout--threecol-33-34-33.html.twig
@@ -7,6 +7,7 @@
  * additional areas for the top and the bottom.
  *
  * Available variables:
+ * - in_preview: Whether the plugin is being rendered in preview mode.
  * - content: The content for this layout.
  * - attributes: HTML attributes for the layout <div>.
  */
diff --git a/core/themes/stable9/layouts/layout_discovery/twocol/layout--twocol.html.twig b/core/themes/stable9/layouts/layout_discovery/twocol/layout--twocol.html.twig
index 4de66f0489..c56c36c66b 100644
--- a/core/themes/stable9/layouts/layout_discovery/twocol/layout--twocol.html.twig
+++ b/core/themes/stable9/layouts/layout_discovery/twocol/layout--twocol.html.twig
@@ -4,6 +4,7 @@
  * Theme override to display a two-column layout.
  *
  * Available variables:
+ * - in_preview: Whether the plugin is being rendered in preview mode.
  * - content: The content for this layout.
  * - attributes: HTML attributes for the layout <div>.
  */
diff --git a/core/themes/stable9/layouts/layout_discovery/twocol_bricks/layout--twocol-bricks.html.twig b/core/themes/stable9/layouts/layout_discovery/twocol_bricks/layout--twocol-bricks.html.twig
index 08a0b47920..0069dd132e 100644
--- a/core/themes/stable9/layouts/layout_discovery/twocol_bricks/layout--twocol-bricks.html.twig
+++ b/core/themes/stable9/layouts/layout_discovery/twocol_bricks/layout--twocol-bricks.html.twig
@@ -7,6 +7,7 @@
  * the top, bottom and in the middle.
  *
  * Available variables:
+ * - in_preview: Whether the plugin is being rendered in preview mode.
  * - content: The content for this layout.
  * - attributes: HTML attributes for the layout <div>.
  */
diff --git a/core/themes/stable9/templates/block/block--system-menu-block.html.twig b/core/themes/stable9/templates/block/block--system-menu-block.html.twig
index e78e1de7f6..937c1865ed 100644
--- a/core/themes/stable9/templates/block/block--system-menu-block.html.twig
+++ b/core/themes/stable9/templates/block/block--system-menu-block.html.twig
@@ -11,6 +11,7 @@
  *   - label_display: The display settings for the label.
  *   - provider: The module or other provider that provided this block plugin.
  *   - Block plugin specific settings will also be stored here.
+ * - in_preview: Whether the plugin is being rendered in preview mode.
  * - content: The content of this block.
  * - attributes: HTML attributes for the containing element.
  *   - id: A valid HTML ID and guaranteed unique.
diff --git a/core/themes/stable9/templates/block/block.html.twig b/core/themes/stable9/templates/block/block.html.twig
index dca6f48fb3..e842e40457 100644
--- a/core/themes/stable9/templates/block/block.html.twig
+++ b/core/themes/stable9/templates/block/block.html.twig
@@ -11,6 +11,7 @@
  *   - label_display: The display settings for the label.
  *   - provider: The module or other provider that provided this block plugin.
  *   - Block plugin specific settings will also be stored here.
+ * - in_preview: Whether the plugin is being rendered in preview mode.
  * - content: The content of this block.
  * - attributes: array of HTML attributes populated by modules, intended to
  *   be added to the main container tag of this template.
diff --git a/core/themes/stark/stark.breakpoints.yml b/core/themes/stark/stark.breakpoints.yml
index d1cdd9b4ee..ceda77e76f 100644
--- a/core/themes/stark/stark.breakpoints.yml
+++ b/core/themes/stark/stark.breakpoints.yml
@@ -3,7 +3,7 @@ stark.mobile:
   mediaQuery: '(min-width: 0px)'
   weight: 0
   multipliers:
-   - 1x
+    - 1x
 stark.narrow:
   label: narrow
   mediaQuery: 'all and (min-width: 480px) and (max-width: 959px)'
diff --git a/core/themes/starterkit_theme/templates/block/block--search-form-block.html.twig b/core/themes/starterkit_theme/templates/block/block--search-form-block.html.twig
index 667202fb6b..d1cda724ba 100644
--- a/core/themes/starterkit_theme/templates/block/block--search-form-block.html.twig
+++ b/core/themes/starterkit_theme/templates/block/block--search-form-block.html.twig
@@ -11,6 +11,7 @@
  *   - label_display: The display settings for the label.
  *   - provider: The module or other provider that provided this block plugin.
  *   - Block plugin specific settings will also be stored here.
+ * - in_preview: Whether the plugin is being rendered in preview mode.
  * - content: The content of this block.
  * - attributes: A list HTML attributes populated by modules, intended to
  *   be added to the main container tag of this template. Includes:
diff --git a/core/themes/starterkit_theme/templates/block/block--system-menu-block.html.twig b/core/themes/starterkit_theme/templates/block/block--system-menu-block.html.twig
index 407f8403fd..db3f9f8088 100644
--- a/core/themes/starterkit_theme/templates/block/block--system-menu-block.html.twig
+++ b/core/themes/starterkit_theme/templates/block/block--system-menu-block.html.twig
@@ -11,6 +11,7 @@
  *   - label_display: The display settings for the label.
  *   - provider: The module or other provider that provided this block plugin.
  *   - Block plugin specific settings will also be stored here.
+ * - in_preview: Whether the plugin is being rendered in preview mode.
  * - content: The content of this block.
  * - attributes: HTML attributes for the containing element.
  *   - id: A valid HTML ID and guaranteed unique.
diff --git a/core/themes/starterkit_theme/templates/block/block.html.twig b/core/themes/starterkit_theme/templates/block/block.html.twig
index fd3311be95..114d7c4de4 100644
--- a/core/themes/starterkit_theme/templates/block/block.html.twig
+++ b/core/themes/starterkit_theme/templates/block/block.html.twig
@@ -11,6 +11,7 @@
  *   - label_display: The display settings for the label.
  *   - provider: The module or other provider that provided this block plugin.
  *   - Block plugin specific settings will also be stored here.
+ * - in_preview: Whether the plugin is being rendered in preview mode.
  * - content: The content of this block.
  * - attributes: array of HTML attributes populated by modules, intended to
  *   be added to the main container tag of this template.
diff --git a/core/yarn.lock b/core/yarn.lock
index ed0d03c15f..4c18c59799 100644
--- a/core/yarn.lock
+++ b/core/yarn.lock
@@ -23,281 +23,281 @@
     chalk "^2.0.0"
     js-tokens "^4.0.0"
 
-"@ckeditor/ckeditor5-alignment@~35.1.0":
-  version "35.1.0"
-  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-alignment/-/ckeditor5-alignment-35.1.0.tgz#3cf68f4c3a04e1bf9e356c7bfed4fcbc331b58f1"
-  integrity sha512-fz7bvP/ma02MYhA0/k4qhHne6zoxNGEUiLpuxw8gbUw1ls+U09EcpumE+6uXta1NfymxKCNm/RDUVrgXfFJ9qg==
+"@ckeditor/ckeditor5-alignment@~35.2.0":
+  version "35.2.1"
+  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-alignment/-/ckeditor5-alignment-35.2.1.tgz#05e66614a97fbea4b72410def51f9fc2cedefbb1"
+  integrity sha512-0wfEb6femCLyCrjn0napDq+pB3xqhYtJTExTAsyWqZrdZ5AQCqTWnMZFLUUjvHQWbCAUyd56XuXac6EZ6ZWD5Q==
   dependencies:
-    ckeditor5 "^35.1.0"
+    ckeditor5 "^35.2.1"
 
-"@ckeditor/ckeditor5-basic-styles@~35.1.0":
-  version "35.1.0"
-  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-basic-styles/-/ckeditor5-basic-styles-35.1.0.tgz#4646ef84a46b72b11260c96d213c131aca818aff"
-  integrity sha512-tqqJoXEqd/sLEwLeO4RfYlGyys9JlXPLQa3s7fQGeqD6iA5WLjBA5GFBoJLFkeSBhSq7OaKmEM5O5i6RjwVkkg==
+"@ckeditor/ckeditor5-basic-styles@~35.2.0":
+  version "35.2.1"
+  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-basic-styles/-/ckeditor5-basic-styles-35.2.1.tgz#77f0e78df233348b89ed4fae58beb892a12be3b8"
+  integrity sha512-Z2qeofjPWTV44fsTcAxXGFA2u0tH0f6NtVasBaU/WvsQgc37v8mnwGviyqaPL+LQ7DRorii0jTPzccj8ep8ICQ==
   dependencies:
-    ckeditor5 "^35.1.0"
+    ckeditor5 "^35.2.1"
 
-"@ckeditor/ckeditor5-block-quote@~35.1.0":
-  version "35.1.0"
-  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-block-quote/-/ckeditor5-block-quote-35.1.0.tgz#048fdad12d4d59d49e570353d7ab178f3be72e2b"
-  integrity sha512-6bMsajOYtw7nFAa/wyFPuAwfCmtKtMkkPOh0F1q8mxniaR+vn92mBZO9yP0cjNUWIcE4jSrPF/K0O1euSBpMbQ==
+"@ckeditor/ckeditor5-block-quote@~35.2.0":
+  version "35.2.1"
+  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-block-quote/-/ckeditor5-block-quote-35.2.1.tgz#4040ffbc101eae1b910d361354008e233e0d1652"
+  integrity sha512-iKIytERhUaHdQ0zLuPk0q9BgZ0RJlTnRhHEAz5dfkZuiJ9uBnPkC/wAYundVcB9vRicJqUxkemJAWm8bTgKaow==
   dependencies:
-    ckeditor5 "^35.1.0"
+    ckeditor5 "^35.2.1"
 
-"@ckeditor/ckeditor5-clipboard@^35.1.0":
-  version "35.1.0"
-  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-clipboard/-/ckeditor5-clipboard-35.1.0.tgz#9b7c3d259a7245249fb9a70694752b92eb8deeae"
-  integrity sha512-LfHDOI7gfQzIKbSgDi429SI75p4Scw+YK6zISTRN2IiNlAfsozjeYltm8O3ab7FFfBI8+TalnEx0gI41TXog0Q==
+"@ckeditor/ckeditor5-clipboard@^35.2.1":
+  version "35.2.1"
+  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-clipboard/-/ckeditor5-clipboard-35.2.1.tgz#c5a184f7bfc1d11604ad4e4d2aae36233b844253"
+  integrity sha512-oHtU4ViXAPwvDKw4QoeQY0v4sdPLvJ4IjCS0MEkGQdspV/osvqPIyxUP2aqISbBPMRA7vz6VTeUqqeVZGH2Hrg==
   dependencies:
-    "@ckeditor/ckeditor5-core" "^35.1.0"
-    "@ckeditor/ckeditor5-engine" "^35.1.0"
-    "@ckeditor/ckeditor5-utils" "^35.1.0"
-    "@ckeditor/ckeditor5-widget" "^35.1.0"
+    "@ckeditor/ckeditor5-core" "^35.2.1"
+    "@ckeditor/ckeditor5-engine" "^35.2.1"
+    "@ckeditor/ckeditor5-utils" "^35.2.1"
+    "@ckeditor/ckeditor5-widget" "^35.2.1"
     lodash-es "^4.17.11"
 
-"@ckeditor/ckeditor5-code-block@~35.1.0":
-  version "35.1.0"
-  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-code-block/-/ckeditor5-code-block-35.1.0.tgz#d577cd0f50c350d2fcc18a28ab54c0fa53286624"
-  integrity sha512-I0xxuNsFfoQzg4HU8DVuyOYMz5iKF9iEpMykN55GuIvJy12RAx5p7TIrFcvwZSk0nrdq+ZVOCa7U9YGoELDngA==
+"@ckeditor/ckeditor5-code-block@~35.2.0":
+  version "35.2.1"
+  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-code-block/-/ckeditor5-code-block-35.2.1.tgz#6ca75afee83c9b75b5071c31d3ba565bac84eea7"
+  integrity sha512-MCjwUVJANE47QxXE3JZN4hVxNASk8rWiCreKnqDe1aS0LRUFKvC3orEBV+qh3AnbtTe+5PfDFgFN6BnV+oBzzg==
   dependencies:
-    ckeditor5 "^35.1.0"
+    ckeditor5 "^35.2.1"
 
-"@ckeditor/ckeditor5-core@^35.1.0":
-  version "35.1.0"
-  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-core/-/ckeditor5-core-35.1.0.tgz#f6b0906b98a260324d45e2366ca0377cdfdaf5ae"
-  integrity sha512-yqPP7tEOT/rsxtDf6qvL5Yszmf2MZJJDK426SQryJiKpAEysX+337FEeLpK1silIL+UMejh5Y2/oNr4L+wTRXw==
+"@ckeditor/ckeditor5-core@^35.2.1":
+  version "35.2.1"
+  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-core/-/ckeditor5-core-35.2.1.tgz#10f22ae64a82d63e29b3c364f6691d155a44d18f"
+  integrity sha512-52A/rS3DamiWGPVB3Jd6Z14Hv9yCwcTGdLNWStDyrMjybjXOc7O6xrEiB8v1ySzTaleD4wfZ7vGlq1ZKF2dqDg==
   dependencies:
-    "@ckeditor/ckeditor5-engine" "^35.1.0"
-    "@ckeditor/ckeditor5-ui" "^35.1.0"
-    "@ckeditor/ckeditor5-utils" "^35.1.0"
+    "@ckeditor/ckeditor5-engine" "^35.2.1"
+    "@ckeditor/ckeditor5-ui" "^35.2.1"
+    "@ckeditor/ckeditor5-utils" "^35.2.1"
     lodash-es "^4.17.15"
 
-"@ckeditor/ckeditor5-editor-classic@~35.1.0":
-  version "35.1.0"
-  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-editor-classic/-/ckeditor5-editor-classic-35.1.0.tgz#430c5e893bd2bb80b837b879e7b57481b093a6af"
-  integrity sha512-cuu0/cxJgReHbnMPdMOw7YWOogS2WwLo6S/WAP5OjHdXRb/oQOGcr+vi4+guRdSMz5YmXjr4lvskYgU4B4dF6A==
+"@ckeditor/ckeditor5-editor-classic@~35.2.0":
+  version "35.2.1"
+  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-editor-classic/-/ckeditor5-editor-classic-35.2.1.tgz#efa9dd3dcb87eb5bfe720f1c65003cb785d7c3c7"
+  integrity sha512-K1X5dNamkeEBia+luXMWeuweB7G09AVYSgp+yVUfyn/fV1RUu75OhQQ2f2G5e6WCgkWCk8uQV3ChH8eXAykcTA==
   dependencies:
-    ckeditor5 "^35.1.0"
+    ckeditor5 "^35.2.1"
     lodash-es "^4.17.15"
 
-"@ckeditor/ckeditor5-editor-decoupled@~35.1.0":
-  version "35.1.0"
-  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-editor-decoupled/-/ckeditor5-editor-decoupled-35.1.0.tgz#1aa25d28b660d05a524bc75142f3f93b1450013c"
-  integrity sha512-AoPxejFvkz9JigP6rcjuPkDbbdZQc+IR3gcTPG4QXtylGIbYSGlTE8vZcInEO6km3Nsq02dLYjVr7FKpKgJzfw==
+"@ckeditor/ckeditor5-editor-decoupled@~35.2.0":
+  version "35.2.1"
+  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-editor-decoupled/-/ckeditor5-editor-decoupled-35.2.1.tgz#d247bd8e87b55b30d385951f46960f4d9bdbdfe1"
+  integrity sha512-i2TlqW27U1ZKNbDl6KAbBq97B+O1VnBkLzkTTJzmoDrEyfsni4Ad2FNP+KCIovxHeoNDUcmgLy0WyGT0whRFoA==
   dependencies:
-    ckeditor5 "^35.1.0"
+    ckeditor5 "^35.2.1"
     lodash-es "^4.17.15"
 
-"@ckeditor/ckeditor5-engine@^35.1.0":
-  version "35.1.0"
-  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-engine/-/ckeditor5-engine-35.1.0.tgz#82de6316e9b0c45b40c6928497313597a142a3fa"
-  integrity sha512-1xyzPkN2N0xzdeVpT53Eqj4Awfbwl6lN3JIpgntBmCOdiZejRZipdPFkbS0ZkhG14aLAV1blbk/ZMJSsOmaTWg==
+"@ckeditor/ckeditor5-engine@^35.2.1":
+  version "35.2.1"
+  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-engine/-/ckeditor5-engine-35.2.1.tgz#f1374717ab6d01ca5f2b16d3b8be93cce05323fb"
+  integrity sha512-7cVYYNBm3VJ2jhwgbSnzHBn1tDeRiTQ4X/TI3S7/C+hOCVxsB8bns8GV/AOTuAromrbwpME4QXTY+Z6okcHyLA==
   dependencies:
-    "@ckeditor/ckeditor5-utils" "^35.1.0"
+    "@ckeditor/ckeditor5-utils" "^35.2.1"
     lodash-es "^4.17.15"
 
-"@ckeditor/ckeditor5-enter@^35.1.0":
-  version "35.1.0"
-  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-enter/-/ckeditor5-enter-35.1.0.tgz#4e61b67c446da5512403656ccaab086b973e1ecd"
-  integrity sha512-H+6vscBZqzU/Q4/N8so/UJzH2tiGN5cDa/5qbXGr/WwyWDez2Nl2y9bAl7ASB4vhzqr2/1WJ4ckBMGke5zR6pg==
+"@ckeditor/ckeditor5-enter@^35.2.1":
+  version "35.2.1"
+  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-enter/-/ckeditor5-enter-35.2.1.tgz#60fd1f54064221d9d2871158f21a91e0afeeeada"
+  integrity sha512-B336nVuVhG0HO8cymCuJd45yo9W3CZfsAtuaEshAdx9HAHrDMpQZ3FGPH08vhJ3qTjsO9nwXUTmlPpsMnDZSdA==
   dependencies:
-    "@ckeditor/ckeditor5-core" "^35.1.0"
-    "@ckeditor/ckeditor5-engine" "^35.1.0"
-    "@ckeditor/ckeditor5-utils" "^35.1.0"
+    "@ckeditor/ckeditor5-core" "^35.2.1"
+    "@ckeditor/ckeditor5-engine" "^35.2.1"
+    "@ckeditor/ckeditor5-utils" "^35.2.1"
 
-"@ckeditor/ckeditor5-essentials@~35.1.0":
-  version "35.1.0"
-  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-essentials/-/ckeditor5-essentials-35.1.0.tgz#42d32a23dc21accd270537f86f7916eb75f55cfc"
-  integrity sha512-qk09lYvIpWxRfDTdu/W36481PsvumiW3jTLC6Y41KOzjN5QQbC2uXNjaDKSYTWeQJB0xfeCDFl102DF//v4kxA==
+"@ckeditor/ckeditor5-essentials@~35.2.0":
+  version "35.2.1"
+  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-essentials/-/ckeditor5-essentials-35.2.1.tgz#d68bf01877331cbe2f2dbcc2e1245e85dd8451a8"
+  integrity sha512-qU/vVqBuTp+mY/86s31a0Ay2xmMH+GSkzRdeUVfyGDiQZznCjkaKfAwMXtauorgx/C6YXGF/6xYG4C6C7R99Fw==
   dependencies:
-    ckeditor5 "^35.1.0"
+    ckeditor5 "^35.2.1"
 
-"@ckeditor/ckeditor5-heading@~35.1.0":
-  version "35.1.0"
-  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-heading/-/ckeditor5-heading-35.1.0.tgz#a40b5418e2e6e72961e148b605a1f83f524c48d8"
-  integrity sha512-dempsgWmcD9lLr7OlgsoRxC+GAVafRbweXO0J4RHRFFL+f5lh43Z+sUfuiXM5cGB03YvonSitt3Bizhj2hIxoQ==
+"@ckeditor/ckeditor5-heading@~35.2.0":
+  version "35.2.1"
+  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-heading/-/ckeditor5-heading-35.2.1.tgz#bf0b02139d251e3e6c583245b5d839b29c04e4fc"
+  integrity sha512-OkF8mXb62BIcP06uEYs+jBqbMkDU/pRPRfV0jpvwAQslu7mS2FukM1Bknlr7BXldDlWznxISyVP+l1rgcUVCNg==
   dependencies:
-    ckeditor5 "^35.1.0"
+    ckeditor5 "^35.2.1"
 
-"@ckeditor/ckeditor5-horizontal-line@~35.1.0":
-  version "35.1.0"
-  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-horizontal-line/-/ckeditor5-horizontal-line-35.1.0.tgz#fb7a62e1b20595f03f564ba167917b8aa4970b6b"
-  integrity sha512-uOFLCmfKvQnS6yUQAhg060Fwvj/VVR9Z9UFrvOxN6ZT3o8GBwfeTkV9ZKkTyaMoHWt/BQgz1amBg7xx83KnDRQ==
+"@ckeditor/ckeditor5-horizontal-line@~35.2.0":
+  version "35.2.1"
+  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-horizontal-line/-/ckeditor5-horizontal-line-35.2.1.tgz#263d06921dbb3b7522e12218f35d38ed2141a32c"
+  integrity sha512-zB/M0wF/gd8w1ZVyTXifnCSH164dOI05gjZ3coKbKmyX4xcheZcZoqLH/FacNQE8OZCJ06VSMrTlba49ipUPbA==
   dependencies:
-    ckeditor5 "^35.1.0"
+    ckeditor5 "^35.2.1"
 
-"@ckeditor/ckeditor5-html-support@~35.1.0":
-  version "35.1.0"
-  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-html-support/-/ckeditor5-html-support-35.1.0.tgz#2d2842a198b47e836d6d0170383af4ed37bbb66c"
-  integrity sha512-rNvyGAFAepQIiZ3SSzZ6FDT1mAifllN6VTjllDceJ49uPoDGYRGHIWCw2BU8964Kq7di+m8pwyXZV5hha1Z2Lw==
+"@ckeditor/ckeditor5-html-support@~35.2.0":
+  version "35.2.1"
+  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-html-support/-/ckeditor5-html-support-35.2.1.tgz#c7d4f7537c967adef6291bd4c193a890ac86ed1e"
+  integrity sha512-AxVm+LDQYGK1vEfRPwoUq7ov3q/Ev9A2/Wi3d2FGe2BbwRqOzRWxog4exWi9qByED3+ltcxhNq7cY2OHYBzFnw==
   dependencies:
-    ckeditor5 "^35.1.0"
+    ckeditor5 "^35.2.1"
     lodash-es "^4.17.15"
 
-"@ckeditor/ckeditor5-image@~35.1.0":
-  version "35.1.0"
-  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-image/-/ckeditor5-image-35.1.0.tgz#93bf632a9d57a84591a2da6e027651f484eed4eb"
-  integrity sha512-7qqccl2dYX3dl7rnBuRHF1Mxpns6zG9Ink1rlpPMEcuA7NdA9VDglMDCvWYOLSGVObVOM7ecceHYeYhzNSeyrw==
+"@ckeditor/ckeditor5-image@~35.2.0":
+  version "35.2.1"
+  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-image/-/ckeditor5-image-35.2.1.tgz#f41a386759da64f671e0d7385b7d3b59f99e08df"
+  integrity sha512-8SaB6yhpLHEtn1Kdkh33Dg4HCYsM0Gyj8ptBKXv+QXOPMilU+atrdecbUAiPGLBDLRkfrK62HTWm737ziZ+HIQ==
   dependencies:
-    "@ckeditor/ckeditor5-ui" "^35.1.0"
-    ckeditor5 "^35.1.0"
+    "@ckeditor/ckeditor5-ui" "^35.2.1"
+    ckeditor5 "^35.2.1"
     lodash-es "^4.17.15"
 
-"@ckeditor/ckeditor5-indent@~35.1.0":
-  version "35.1.0"
-  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-indent/-/ckeditor5-indent-35.1.0.tgz#02154e9750d5d9fda6c263798c9962399fe5fca1"
-  integrity sha512-yYgSBzHlln273S4H1aWfzqoMcb+Fn1yZ976Pj2ouM7bP22d+01ptNGSe6fiEqtmDiUu2gCj9W0tOwI0Oowb6fg==
+"@ckeditor/ckeditor5-indent@~35.2.0":
+  version "35.2.1"
+  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-indent/-/ckeditor5-indent-35.2.1.tgz#bc7041f5ec35d2babf14875ffbced2fe19f2228e"
+  integrity sha512-SOj5AJf0GoIaLMIP5YermhvxLyhtqehxGYqJ59AzBzLhVQgfH2tHfpgpRKaZguDkN4NgpALTQFe53GIuBnGCMQ==
   dependencies:
-    ckeditor5 "^35.1.0"
+    ckeditor5 "^35.2.1"
 
-"@ckeditor/ckeditor5-language@~35.1.0":
-  version "35.1.0"
-  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-language/-/ckeditor5-language-35.1.0.tgz#f6b099dfec789ffaa1e2129f1196a2eb80bcf3f7"
-  integrity sha512-wpI378uNAiwy65iFM2zCNaOpBs64MS2W3pWaIZS9Y8OUFW6tRNx6RHr31f/KsElfHVfnxaZ4+36XAUN0Bz3LmA==
+"@ckeditor/ckeditor5-language@~35.2.0":
+  version "35.2.1"
+  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-language/-/ckeditor5-language-35.2.1.tgz#c43096e7d6e55b7d644ba3dda19d476f6aa5e661"
+  integrity sha512-u12lUK3FhE1IGZMpQRBGPLRqd9GoOrXkJ1+65g8/WuM0xWx0/dcEXiUdsQZNFI1N5lhMStb0xTGlVZfYlTsuoQ==
   dependencies:
-    ckeditor5 "^35.1.0"
+    ckeditor5 "^35.2.1"
 
-"@ckeditor/ckeditor5-link@~35.1.0":
-  version "35.1.0"
-  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-link/-/ckeditor5-link-35.1.0.tgz#2c67ccf73d993d76c6377c69b8c4f5104c5c0942"
-  integrity sha512-eoCE96mfW8pAFpP3wE0E83mrg7SVSTnut0szLyWmQSiU63N0KJMKOZy6faImrMEgkdFppfJ966+lgBh4fB+Taw==
+"@ckeditor/ckeditor5-link@~35.2.0":
+  version "35.2.1"
+  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-link/-/ckeditor5-link-35.2.1.tgz#f908a0040280f7ac7d59c742dfb30f1e88145a08"
+  integrity sha512-eie6C8pYttBeTpXVNSrRUE8LQ091CJVWUOESo0bgjFG9+/1H6lXWcfGy/ZyQiWpEDzaQ+qJrOrWhkiU6TAmxaA==
   dependencies:
-    "@ckeditor/ckeditor5-ui" "^35.1.0"
-    ckeditor5 "^35.1.0"
+    "@ckeditor/ckeditor5-ui" "^35.2.1"
+    ckeditor5 "^35.2.1"
     lodash-es "^4.17.15"
 
-"@ckeditor/ckeditor5-list@~35.1.0":
-  version "35.1.0"
-  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-list/-/ckeditor5-list-35.1.0.tgz#6247f7d98eb63fcbf512e555c0b95ae723d5f5f8"
-  integrity sha512-NsGNRhYDI9xNm0wac3sE640LzpUSxQAzi60f2ap8p2pSL2RXpPJ3YA8Z+xmYP4xpJpu1eEcbOUnZDXjsKoct1Q==
+"@ckeditor/ckeditor5-list@~35.2.0":
+  version "35.2.1"
+  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-list/-/ckeditor5-list-35.2.1.tgz#46b51bd8e860dd28955efc43b3a082a8d3a97543"
+  integrity sha512-PtrPItlPwjlqwkH+jC6/Fen1EHzl1HZbs7SKSyZhBlSTX4vMtBSAjz+tzNfYk/6CVtFpNY1vXc3MGXL9fFnXJw==
   dependencies:
-    "@ckeditor/ckeditor5-ui" "^35.1.0"
-    ckeditor5 "^35.1.0"
+    "@ckeditor/ckeditor5-ui" "^35.2.1"
+    ckeditor5 "^35.2.1"
 
-"@ckeditor/ckeditor5-paragraph@^35.1.0":
-  version "35.1.0"
-  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-paragraph/-/ckeditor5-paragraph-35.1.0.tgz#49cb14e713c8e1ad8599e2af33429d0e6a3567c1"
-  integrity sha512-sgeEoOfaHbskbkYXfeGkakHJ0nfEoXvvhJeCQZn+o4FfJze/H5pvK14KNeiBsLqoLkKVcSMsHhYbEoeu9JNmKA==
+"@ckeditor/ckeditor5-paragraph@^35.2.1":
+  version "35.2.1"
+  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-paragraph/-/ckeditor5-paragraph-35.2.1.tgz#7dcd314be57a0a995faffdbbf509acceaf6a6829"
+  integrity sha512-8p1dkwGnrPC/7H6uNmiH8l8KU9GV2DyFA9wR3Sur9/QFupdXJ6ovuchqo00aWb431a6W/PZpOhCYr01KT7/0EA==
   dependencies:
-    "@ckeditor/ckeditor5-core" "^35.1.0"
-    "@ckeditor/ckeditor5-ui" "^35.1.0"
-    "@ckeditor/ckeditor5-utils" "^35.1.0"
+    "@ckeditor/ckeditor5-core" "^35.2.1"
+    "@ckeditor/ckeditor5-ui" "^35.2.1"
+    "@ckeditor/ckeditor5-utils" "^35.2.1"
 
-"@ckeditor/ckeditor5-paste-from-office@~35.1.0":
-  version "35.1.0"
-  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-paste-from-office/-/ckeditor5-paste-from-office-35.1.0.tgz#64694b9c646d7dfde00ec7b91de4186a0bcbc07b"
-  integrity sha512-/eu9w3A1XxO2xiMw9bYxf1MGvJwKaxU3G3sm3YpLJA7sWAm27d+PlNoUcfzetJWlD7hjfpt9Yu4+S4Oq8zILYw==
+"@ckeditor/ckeditor5-paste-from-office@~35.2.0":
+  version "35.2.1"
+  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-paste-from-office/-/ckeditor5-paste-from-office-35.2.1.tgz#58d7a83b730cfb5ab40a4164ada0325787d740f9"
+  integrity sha512-cpcHNpnm3Pd9eIK8omMPg/u5a0Xq8HWMAwjf7oMC0VvrGAFZ5gOkWBduN31O7lfxMvtollDxt6wM1+cpMCA1sg==
   dependencies:
-    ckeditor5 "^35.1.0"
+    ckeditor5 "^35.2.1"
 
-"@ckeditor/ckeditor5-remove-format@~35.1.0":
-  version "35.1.0"
-  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-remove-format/-/ckeditor5-remove-format-35.1.0.tgz#6ec7554457a7fbffce6d3b019e446f9c17aa4dab"
-  integrity sha512-EZ48pcihnbjQSXHdgq2csi4R0dSLdkGIaGluOcclU27GRpEksdxhag6/SGpw1Sy6q8VnUTMsNicVQALhS6ylyw==
+"@ckeditor/ckeditor5-remove-format@~35.2.0":
+  version "35.2.1"
+  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-remove-format/-/ckeditor5-remove-format-35.2.1.tgz#039caec305873d6c89b3e776315ea6a4a5797d43"
+  integrity sha512-/FPKN5RrSYGumAIumKa9hipdQN1cu+IE05POQzzvIbb6q59FINi4LHNrZdbXQouZh+3a4bgeUpUGdBJGkk3XgA==
   dependencies:
-    ckeditor5 "^35.1.0"
+    ckeditor5 "^35.2.1"
 
-"@ckeditor/ckeditor5-select-all@^35.1.0":
-  version "35.1.0"
-  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-select-all/-/ckeditor5-select-all-35.1.0.tgz#71faf944319215b11f586f391e31bc7926c12fc7"
-  integrity sha512-xGYRBiSOfnk2/Ob55CckKdyZ9E1b+e8qIQN6YkQd9Yj3tuyGAKJ9XelOxayqhlVvpD3ctpD/cRomUjSRilz2Pw==
+"@ckeditor/ckeditor5-select-all@^35.2.1":
+  version "35.2.1"
+  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-select-all/-/ckeditor5-select-all-35.2.1.tgz#28183da6540df51578f42724d181c5fc865c76b7"
+  integrity sha512-kPiNjFlzqtWUAU27urs1t9PH27evUWz19bUvmvtOUuz/Gb5jIpriacUmcA9YpFyPdX1UWkdhthzvqEx9Poui5A==
   dependencies:
-    "@ckeditor/ckeditor5-core" "^35.1.0"
-    "@ckeditor/ckeditor5-ui" "^35.1.0"
-    "@ckeditor/ckeditor5-utils" "^35.1.0"
+    "@ckeditor/ckeditor5-core" "^35.2.1"
+    "@ckeditor/ckeditor5-ui" "^35.2.1"
+    "@ckeditor/ckeditor5-utils" "^35.2.1"
 
-"@ckeditor/ckeditor5-source-editing@~35.1.0":
-  version "35.1.0"
-  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-source-editing/-/ckeditor5-source-editing-35.1.0.tgz#3f4a3a9f29ba795faa962854aee279e5aa52a9d5"
-  integrity sha512-lK5vIlplzXDKO8wflEwv9CAXpXGTiAehhkpY2MfcRU53maqvMIH+jA5be/m/TEXDaw0cwAwkIi9XqIy3On3gAg==
+"@ckeditor/ckeditor5-source-editing@~35.2.0":
+  version "35.2.1"
+  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-source-editing/-/ckeditor5-source-editing-35.2.1.tgz#996b4f35b6087696c7329f02fba2f2bb7e93bce7"
+  integrity sha512-2hfJAXH9ZiMiP9Tae9CXJddJHWs6U8c3fJJgDx6gJc09Zypvn+TH/g58RSu8Yl3XOiisezVTDF1UyZChn1rg5Q==
   dependencies:
-    "@ckeditor/ckeditor5-theme-lark" "^35.1.0"
-    ckeditor5 "^35.1.0"
+    "@ckeditor/ckeditor5-theme-lark" "^35.2.1"
+    ckeditor5 "^35.2.1"
 
-"@ckeditor/ckeditor5-special-characters@~35.1.0":
-  version "35.1.0"
-  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-special-characters/-/ckeditor5-special-characters-35.1.0.tgz#2f0d85daa4aa998d342758e296deb99bcd504e69"
-  integrity sha512-Bgn1mC9I5ekTXfKlqkh4ybJFa2ht0NhC1yw3qXf33zj0C+pGyEc8VKRtRhjsyxfo5/ZCysWV6p7ziP5MWhHWpA==
+"@ckeditor/ckeditor5-special-characters@~35.2.0":
+  version "35.2.1"
+  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-special-characters/-/ckeditor5-special-characters-35.2.1.tgz#3e311f1ef1baacc54f1423133bffbfe69684b59a"
+  integrity sha512-Q8+IFiSIJ/FgmZtEASvicKUAwZyFOgCcrtS+ku/nisgDAuqJWyZSBYZjWEPghGRI5X9qFvIR3cX7hh9jQ33T1A==
   dependencies:
-    ckeditor5 "^35.1.0"
+    ckeditor5 "^35.2.1"
 
-"@ckeditor/ckeditor5-style@~35.1.0":
-  version "35.1.0"
-  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-style/-/ckeditor5-style-35.1.0.tgz#d6fdfb8d79ebda2b0783a94365a4a6ce619e45f6"
-  integrity sha512-lTj0//4iWCs/IXGmQNJSZw1ZAaiMfAdUyrRFz7Q99cwqTmrqoVcohj96YoVWu2OAuYC2O4OjKKt1364s82CypA==
+"@ckeditor/ckeditor5-style@~35.2.0":
+  version "35.2.1"
+  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-style/-/ckeditor5-style-35.2.1.tgz#3e5d066048534aed34f0ffd09fc407392fd00255"
+  integrity sha512-j8jOKzlCBJBUszw+ZyrcKGPS1QfpHtekCc3qVL+uNCwEKVj8Ke5zTE9HvWro7aSmTEO4yPjOtjgc5knhoIERzQ==
   dependencies:
-    ckeditor5 "^35.1.0"
+    ckeditor5 "^35.2.1"
 
-"@ckeditor/ckeditor5-table@~35.1.0":
-  version "35.1.0"
-  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-table/-/ckeditor5-table-35.1.0.tgz#15b897882f3b074452fa9b063e7e65be21a57922"
-  integrity sha512-wwreqkavUiGW+k31itgdRrzBUgZVO3IFHvwxITGqPHsRfEPmDaqasowYrZBqHXK5JPcOmkMq8viAfThnVHltqg==
+"@ckeditor/ckeditor5-table@~35.2.0":
+  version "35.2.1"
+  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-table/-/ckeditor5-table-35.2.1.tgz#bed88fa36d3de0e3aa0218ed48bafd3cd4cd6b8e"
+  integrity sha512-JqpGqRS42CcZz/5nxqR3zk6tK3zhiyax+/J9PeHAi9vlb6T4RTTvxxZh+KFioC/mikxhvYseVhzMYz17Jn/vVQ==
   dependencies:
-    ckeditor5 "^35.1.0"
+    ckeditor5 "^35.2.1"
     lodash-es "^4.17.15"
 
-"@ckeditor/ckeditor5-theme-lark@^35.1.0":
-  version "35.1.0"
-  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-theme-lark/-/ckeditor5-theme-lark-35.1.0.tgz#30fcfbbbe0f05702a61aac8a5735f13ac08f6b26"
-  integrity sha512-O5bsW+a2Zq3flHZhKDeTwnuD/2c0Oqw38Xk0FTMb+wksof7da591ls2iCxRyEcP/jnTxTmNQeZJePm682SaZQA==
+"@ckeditor/ckeditor5-theme-lark@^35.2.1":
+  version "35.2.1"
+  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-theme-lark/-/ckeditor5-theme-lark-35.2.1.tgz#f1a32697751102364cce3809fca7ccf7a4ab9cb5"
+  integrity sha512-W24mTOlY7wmwMf6n9p3cC3ME+xi24nWMImicgwOPXF2cMxUzrNQcQp5jIXEUKZ9F7Ts59Rfg38iBZzk2UX/TpA==
   dependencies:
-    "@ckeditor/ckeditor5-ui" "^35.1.0"
+    "@ckeditor/ckeditor5-ui" "^35.2.1"
 
-"@ckeditor/ckeditor5-typing@^35.1.0":
-  version "35.1.0"
-  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-typing/-/ckeditor5-typing-35.1.0.tgz#f3d5f83e6362fb9f74ab7e8c5e3cea5f507a6632"
-  integrity sha512-GiOK8MlsfsVRze4+qbNnT3t4FRvnFge6F+l/knxpM07DIf8qdtf1xVvFRL2OfBBGXbBpcQ6W4aqZhWtSUrPJ5Q==
+"@ckeditor/ckeditor5-typing@^35.2.1":
+  version "35.2.1"
+  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-typing/-/ckeditor5-typing-35.2.1.tgz#0b41e19a9b112f1828f183fd8c100c5ce5e55ab5"
+  integrity sha512-PYzBj9F5f8HpGJEuUxxy9WVsMOZnFi/z9wDF/bJ9aoZw+SkXqKQC1HKz94u70imcPiOIzFKc1HI9VX5yQ77TaA==
   dependencies:
-    "@ckeditor/ckeditor5-core" "^35.1.0"
-    "@ckeditor/ckeditor5-engine" "^35.1.0"
-    "@ckeditor/ckeditor5-utils" "^35.1.0"
+    "@ckeditor/ckeditor5-core" "^35.2.1"
+    "@ckeditor/ckeditor5-engine" "^35.2.1"
+    "@ckeditor/ckeditor5-utils" "^35.2.1"
     lodash-es "^4.17.15"
 
-"@ckeditor/ckeditor5-ui@^35.1.0":
-  version "35.1.0"
-  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-ui/-/ckeditor5-ui-35.1.0.tgz#fed659a65c5b9383f0decd8b13c1f3c4de53514d"
-  integrity sha512-nHi8Y9VBXhtva166PxvtOir+PKigmvpqzq8NPZwwZBsi+REPNy9gg6tWb9UCkwQXpGR1LOX4nEhKa3e1LKJbig==
+"@ckeditor/ckeditor5-ui@^35.2.1":
+  version "35.2.1"
+  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-ui/-/ckeditor5-ui-35.2.1.tgz#9ac5b87dc5e78a5e1a9b66a33b208fac0aa92387"
+  integrity sha512-D1M8Us0Ss97yc1MbjvqjjuOY4v2u7eYXZbqxCwvAp4/RM0uVQWUQR2UbRLyidP2Ea9JWp7VuMTZ8NvpX9UnXUg==
   dependencies:
-    "@ckeditor/ckeditor5-core" "^35.1.0"
-    "@ckeditor/ckeditor5-utils" "^35.1.0"
+    "@ckeditor/ckeditor5-core" "^35.2.1"
+    "@ckeditor/ckeditor5-utils" "^35.2.1"
     lodash-es "^4.17.15"
 
-"@ckeditor/ckeditor5-undo@^35.1.0":
-  version "35.1.0"
-  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-undo/-/ckeditor5-undo-35.1.0.tgz#776e225130dc1a533afc25e7721e1c9dca1d1e25"
-  integrity sha512-Fe9Iji6odYL0HVM/xzFH4D7Z12K+Qcep6PGsRNks6y3ai11uukTV89WLKSdfzT5jwOq5AKhFdN+mSKPy1qfB/g==
+"@ckeditor/ckeditor5-undo@^35.2.1":
+  version "35.2.1"
+  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-undo/-/ckeditor5-undo-35.2.1.tgz#03b871e28d894496984e3686d033622cb3b8e85a"
+  integrity sha512-6nw3BXZU7XcBdeCWK5SI35AwMWu1OI5fGvIQbzuCcuMmicna4DJIwzcCBjY0hODMhxfU3BDLOj9FxSmk4Mju5g==
   dependencies:
-    "@ckeditor/ckeditor5-core" "^35.1.0"
-    "@ckeditor/ckeditor5-engine" "^35.1.0"
-    "@ckeditor/ckeditor5-ui" "^35.1.0"
+    "@ckeditor/ckeditor5-core" "^35.2.1"
+    "@ckeditor/ckeditor5-engine" "^35.2.1"
+    "@ckeditor/ckeditor5-ui" "^35.2.1"
 
-"@ckeditor/ckeditor5-upload@^35.1.0":
-  version "35.1.0"
-  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-upload/-/ckeditor5-upload-35.1.0.tgz#b95158f120084d0eb8e7be9fb87437bcaa5d210f"
-  integrity sha512-EDa56I4v+MH9EpDavcCrZA+3l9e3bYqPY43GCwy5KP9N6rbar05OaUCMqPXA0ky2eupkae2tjp8MtCUxs/W+Vg==
+"@ckeditor/ckeditor5-upload@^35.2.1":
+  version "35.2.1"
+  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-upload/-/ckeditor5-upload-35.2.1.tgz#57f11daf399e64cb788e9cb5ff9ee52c8bd6f604"
+  integrity sha512-FR3yioqHCV/WmRzNnf01bPa28H8O+dfd4ZBZnAEHWNAMK8wBxf3UY2TwMeamTaaGfFoqUBz6004opqXeOUCcng==
   dependencies:
-    "@ckeditor/ckeditor5-core" "^35.1.0"
-    "@ckeditor/ckeditor5-ui" "^35.1.0"
-    "@ckeditor/ckeditor5-utils" "^35.1.0"
+    "@ckeditor/ckeditor5-core" "^35.2.1"
+    "@ckeditor/ckeditor5-ui" "^35.2.1"
+    "@ckeditor/ckeditor5-utils" "^35.2.1"
 
-"@ckeditor/ckeditor5-utils@^35.1.0":
-  version "35.1.0"
-  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-utils/-/ckeditor5-utils-35.1.0.tgz#5c56e701de5a38f317d654dc7871095a8aebbe05"
-  integrity sha512-a13oY43cHzS0uwLB/m6JKXhNNWftcNsUrI2/+UGsUElmFEnJ7aG24iHkdmh62kHY/X5SxowW9hBQR+yb6sKC4w==
+"@ckeditor/ckeditor5-utils@^35.2.1":
+  version "35.2.1"
+  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-utils/-/ckeditor5-utils-35.2.1.tgz#15b17d5c71c673c33754c0597107d3ac88d6d633"
+  integrity sha512-6sseGcA+am4bfuWybTVsLi1R2DRJE3lyKfAv5+UgSWpZwVWHRE/ZOCGkRrkWjA+0Rfwxx8XdU8KC+l7iq73iwQ==
   dependencies:
     lodash-es "^4.17.15"
 
-"@ckeditor/ckeditor5-widget@^35.1.0":
-  version "35.1.0"
-  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-widget/-/ckeditor5-widget-35.1.0.tgz#ecf12655ef91e64c148bac50879cc7ae2fba3160"
-  integrity sha512-Gi7zWRmcxkGWjx6pbn2HUqUUftVzCMfRX22SmOQOl9GKQmJAQaKtdM/sBnv0kY5DLsWLrI9HAED9TJhT0zuN9w==
-  dependencies:
-    "@ckeditor/ckeditor5-core" "^35.1.0"
-    "@ckeditor/ckeditor5-engine" "^35.1.0"
-    "@ckeditor/ckeditor5-enter" "^35.1.0"
-    "@ckeditor/ckeditor5-typing" "^35.1.0"
-    "@ckeditor/ckeditor5-ui" "^35.1.0"
-    "@ckeditor/ckeditor5-utils" "^35.1.0"
+"@ckeditor/ckeditor5-widget@^35.2.1":
+  version "35.2.1"
+  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-widget/-/ckeditor5-widget-35.2.1.tgz#f9284d7dba3fa37a2476fcdd5eaaf41d7680c1c1"
+  integrity sha512-DdEr13R7wFZKnSwDDOvdaeU4zjV3BSggx79ApgWh2UH1zZuZeDIEAOoBd59OXGUg3mElAgIe/QH8brA5au+Owg==
+  dependencies:
+    "@ckeditor/ckeditor5-core" "^35.2.1"
+    "@ckeditor/ckeditor5-engine" "^35.2.1"
+    "@ckeditor/ckeditor5-enter" "^35.2.1"
+    "@ckeditor/ckeditor5-typing" "^35.2.1"
+    "@ckeditor/ckeditor5-ui" "^35.2.1"
+    "@ckeditor/ckeditor5-utils" "^35.2.1"
     lodash-es "^4.17.15"
 
 "@cspell/cspell-bundled-dicts@^6.8.1":
@@ -1376,15 +1376,10 @@ camelcase@^6.0.0, camelcase@^6.2.0:
   resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a"
   integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
 
-caniuse-lite@^1.0.30001370:
-  version "1.0.30001390"
-  resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001390.tgz#158a43011e7068ef7fc73590e9fd91a7cece5e7f"
-  integrity sha512-sS4CaUM+/+vqQUlCvCJ2WtDlV81aWtHhqeEVkLokVJJa3ViN4zDxAGfq9R8i1m90uGHxo99cy10Od+lvn3hf0g==
-
-caniuse-lite@^1.0.30001394:
-  version "1.0.30001397"
-  resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001397.tgz#010d9d56e3b8abcd8df261d0a94b22426271a15f"
-  integrity sha512-SW9N2TbCdLf0eiNDRrrQXx2sOkaakNZbCjgNpPyMJJbiOrU5QzMIrXOVMRM1myBXTD5iTkdrtU/EguCrBocHlA==
+caniuse-lite@^1.0.30001370, caniuse-lite@^1.0.30001394:
+  version "1.0.30001412"
+  resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001412.tgz"
+  integrity sha512-+TeEIee1gS5bYOiuf+PS/kp2mrXic37Hl66VY6EAfxasIk5fELTktK2oOezYed12H8w7jt3s512PpulQidPjwA==
 
 chai-nightwatch@0.5.3:
   version "0.5.3"
@@ -1453,23 +1448,23 @@ ci-info@3.3.0:
   resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.0.tgz#b4ed1fb6818dea4803a55c623041f9165d2066b2"
   integrity sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==
 
-ckeditor5@^35.1.0, ckeditor5@~35.1.0:
-  version "35.1.0"
-  resolved "https://registry.yarnpkg.com/ckeditor5/-/ckeditor5-35.1.0.tgz#4fe60a90d5da69b6e59a97bb8358c536665ee4c4"
-  integrity sha512-Mk8qPXT1OW1BxwVbDnphJmNww8kodKv48HUqSWBCI5i+hOZ/zXNdBoD48NCYqJ5Lr2rJCvlfZ93t3cc//20hwg==
-  dependencies:
-    "@ckeditor/ckeditor5-clipboard" "^35.1.0"
-    "@ckeditor/ckeditor5-core" "^35.1.0"
-    "@ckeditor/ckeditor5-engine" "^35.1.0"
-    "@ckeditor/ckeditor5-enter" "^35.1.0"
-    "@ckeditor/ckeditor5-paragraph" "^35.1.0"
-    "@ckeditor/ckeditor5-select-all" "^35.1.0"
-    "@ckeditor/ckeditor5-typing" "^35.1.0"
-    "@ckeditor/ckeditor5-ui" "^35.1.0"
-    "@ckeditor/ckeditor5-undo" "^35.1.0"
-    "@ckeditor/ckeditor5-upload" "^35.1.0"
-    "@ckeditor/ckeditor5-utils" "^35.1.0"
-    "@ckeditor/ckeditor5-widget" "^35.1.0"
+ckeditor5@^35.2.1, ckeditor5@~35.2.0:
+  version "35.2.1"
+  resolved "https://registry.yarnpkg.com/ckeditor5/-/ckeditor5-35.2.1.tgz#38f9169f9bd871cf15d99983aaf62d7213ee77dc"
+  integrity sha512-AoYaw5ud6M+mDkyu4RYo0YkhJt92hQtyWe9j0ByrLr2XslDDIgzf5x3XZK0FE3ouJQpk5fm6y7qN4kfeaFEJwg==
+  dependencies:
+    "@ckeditor/ckeditor5-clipboard" "^35.2.1"
+    "@ckeditor/ckeditor5-core" "^35.2.1"
+    "@ckeditor/ckeditor5-engine" "^35.2.1"
+    "@ckeditor/ckeditor5-enter" "^35.2.1"
+    "@ckeditor/ckeditor5-paragraph" "^35.2.1"
+    "@ckeditor/ckeditor5-select-all" "^35.2.1"
+    "@ckeditor/ckeditor5-typing" "^35.2.1"
+    "@ckeditor/ckeditor5-ui" "^35.2.1"
+    "@ckeditor/ckeditor5-undo" "^35.2.1"
+    "@ckeditor/ckeditor5-upload" "^35.2.1"
+    "@ckeditor/ckeditor5-utils" "^35.2.1"
+    "@ckeditor/ckeditor5-widget" "^35.2.1"
 
 clean-stack@^2.0.0:
   version "2.2.0"
